diff --git a/.gitignore b/.gitignore index 0d87fe42..d2d07241 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ tags build/ *.bak .DS_Store +!converter/*/binary/*.hex +!keyboard/*/binary/*.hex diff --git a/README.md b/README.md index 49992fcc..68e92b46 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ The latest source code is available here: Updates ------- +#### 2016/06/26 +Keymap framework was updated. `fn_actions[]` should be defined as `action_t` instead of `uint16_t`. And default code for keymap handling is now included in core you just need define `uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]` and `action_t fn_actions[]`. + + #### 2016/06/22 Some projects were moved from `converter` and `keyboard` to `orphan` directory. Those might be removed in some future but you will be able to access them with `orphans` tag. See diff --git a/converter/adb_usb/Makefile b/converter/adb_usb/Makefile index 76e10950..14fc181b 100644 --- a/converter/adb_usb/Makefile +++ b/converter/adb_usb/Makefile @@ -1,64 +1,17 @@ -#---------------------------------------------------------------------------- -# 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". -#---------------------------------------------------------------------------- - # Target file name (without extension). -TARGET = adb_usb_lufa +TARGET ?= adb_usb # Directory common source filess exist -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC ?= matrix.c \ led.c \ adb.c -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) -else - SRC := keymap_plain.c $(SRC) -endif - CONFIG_H = config.h @@ -66,7 +19,7 @@ CONFIG_H = config.h # atmega32u4 Teensy2.0 # atemga32u4 TMK Converter rev.1 # atemga32u2 TMK Converter rev.2 -MCU = atmega32u2 +MCU ?= atmega32u2 # Processor frequency. # This will define a symbol, F_CPU, in all source code files equal to the @@ -79,14 +32,14 @@ MCU = atmega32u2 # 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 +F_CPU ?= 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +ARCH ?= AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ -99,7 +52,7 @@ ARCH = AVR8 # # 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) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task(+60) OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT @@ -125,6 +78,9 @@ COMMAND_ENABLE = yes # Commands for debug and configuration #SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend #NKRO_ENABLE = yes # USB Nkey Rollover ADB_MOUSE_ENABLE = yes +#UNIMAP_ENABLE = yes +#ACTIONMAP_ENABLE = yes # Use 16bit actionmap instead of 8bit keymap +#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor # ADB Mice need acceleration for todays much bigger screens. OPT_DEFS += -DADB_MOUSE_MAXACC=8 @@ -133,6 +89,26 @@ OPT_DEFS += -DADB_MOUSE_MAXACC=8 # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax + +# +# Keymap file +# +ifdef UNIMAP_ENABLE + KEYMAP_FILE = unimap +else + ifdef ACTIONMAP_ENABLE + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif +ifdef KEYMAP + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) +else + SRC := $(KEYMAP_FILE)_plain.c $(SRC) +endif + + # Search Path VPATH += $(TARGET_DIR) VPATH += $(TMK_DIR) diff --git a/converter/adb_usb/Makefile.rev1 b/converter/adb_usb/Makefile.rev1 index 1cd539b6..caddb607 100644 --- a/converter/adb_usb/Makefile.rev1 +++ b/converter/adb_usb/Makefile.rev1 @@ -1,143 +1,3 @@ -#---------------------------------------------------------------------------- -# 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". -#---------------------------------------------------------------------------- - -# Target file name (without extension). -TARGET = adb_usb_lufa - -# Directory common source filess exist -TMK_DIR = ../../tmk_core - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# project specific files -SRC = keymap_common.c \ - matrix.c \ - led.c \ - adb.c - -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) -else - SRC := keymap_ansi.c $(SRC) -endif - -CONFIG_H = config.h - - -# MCU name -# atmega32u4 Teensy2.0 -# atemga32u4 TMK Converter rev.1 -# atemga32u2 TMK Converter rev.2 +TARGET = adb_usb_rev1 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 for TMK Converter rev.1/rev.2 -# 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 = yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover -ADB_MOUSE_ENABLE = yes - -# ADB Mice need acceleration for todays much bigger screens. -OPT_DEFS += -DADB_MOUSE_MAXACC=8 - - -# Optimize size but this may cause error "relocation truncated to fit" -#EXTRALDFLAGS = -Wl,--relax - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TMK_DIR) - -include $(TMK_DIR)/protocol/lufa.mk -include $(TMK_DIR)/protocol.mk -include $(TMK_DIR)/common.mk -include $(TMK_DIR)/rules.mk +include Makefile diff --git a/converter/adb_usb/Makefile.teensy b/converter/adb_usb/Makefile.teensy index d97f0eb3..604e3642 100644 --- a/converter/adb_usb/Makefile.teensy +++ b/converter/adb_usb/Makefile.teensy @@ -1,143 +1,3 @@ -#---------------------------------------------------------------------------- -# 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". -#---------------------------------------------------------------------------- - -# Target file name (without extension). -TARGET = adb_usb_lufa - -# Directory common source filess exist -TMK_DIR = ../../tmk_core - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# project specific files -SRC = keymap_common.c \ - matrix.c \ - led.c \ - adb.c - -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) -else - SRC := keymap_ansi.c $(SRC) -endif - -CONFIG_H = config.h - - -# MCU name -# atmega32u4 Teensy2.0 -# atemga32u4 TMK Converter rev.1 -# atemga32u2 TMK Converter rev.2 +TARGET = adb_usb_teensy 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 for TMK Converter rev.1/rev.2 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=512 - - -# Build Options -# comment out to disable the options. -# -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover -ADB_MOUSE_ENABLE = yes - -# ADB Mice need acceleration for todays much bigger screens. -OPT_DEFS += -DADB_MOUSE_MAXACC=8 - - -# Optimize size but this may cause error "relocation truncated to fit" -#EXTRALDFLAGS = -Wl,--relax - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TMK_DIR) - -include $(TMK_DIR)/protocol/lufa.mk -include $(TMK_DIR)/protocol.mk -include $(TMK_DIR)/common.mk -include $(TMK_DIR)/rules.mk +include Makefile diff --git a/converter/adb_usb/Makefile.unimap.rev1 b/converter/adb_usb/Makefile.unimap.rev1 new file mode 100644 index 00000000..41ec16e6 --- /dev/null +++ b/converter/adb_usb/Makefile.unimap.rev1 @@ -0,0 +1,5 @@ +TARGET = adb_usb_rev1_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +MCU = atmega32u4 +include Makefile diff --git a/converter/adb_usb/Makefile.unimap.rev2 b/converter/adb_usb/Makefile.unimap.rev2 new file mode 100644 index 00000000..3e46eeeb --- /dev/null +++ b/converter/adb_usb/Makefile.unimap.rev2 @@ -0,0 +1,5 @@ +TARGET = adb_usb_rev2_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +MCU = atmega32u2 +include Makefile diff --git a/converter/adb_usb/README.md b/converter/adb_usb/README.md index 034540c9..2240d023 100644 --- a/converter/adb_usb/README.md +++ b/converter/adb_usb/README.md @@ -1,10 +1,10 @@ ADB to USB keyboard converter ============================= -This firmware converts Apple ADB keyboard protocol to USB. You can use TMK Converter, PJRC Teensy2.0 and other USB AVR MCU(ATMega32U4, AT90USB64/128 or etc) for this. But binary size is probably more than 10KB and it won't fit into 8K flash. +This firmware converts Apple ADB keyboard protocol to USB, you can use it to plug old ADB keyboard into modern computer. It works on TMK ADB-USB Converter, PJRC Teensy2.0 and other USB AVR MCU(ATMega32U4, AT90USB64/128 or etc) and needs more than 10KB flash at least. -Discuss: http://geekhack.org/showwiki.php?title=Island:14290 +Discuss here: http://geekhack.org/showwiki.php?title=Island:14290 -TMK Converter: https://geekhack.org/index.php?topic=72052.0 +You can buy a TMK converter here: https://geekhack.org/index.php?topic=72052.0 diff --git a/converter/adb_usb/binary/adb_usb_rev1_unimap.hex b/converter/adb_usb/binary/adb_usb_rev1_unimap.hex new file mode 100644 index 00000000..7b4626b6 --- /dev/null +++ b/converter/adb_usb/binary/adb_usb_rev1_unimap.hex @@ -0,0 +1,1286 @@ +:100000000C945B050C94A2050C94A2050C94A2051B +:100010000C94A2050C94A2050C94A2050C94A205C4 +:100020000C94A2050C94A2050C94AB0F0C947D10BB +:100030000C942B1E0C94A2050C94A2050C94A20502 +:100040000C94A2050C94A2050C94A2050C94A20594 +:100050000C94A2050C949F1E0C94A2050C94A2056E +:100060000C94A2050C94A2050C94A2050C94A20574 +:100070000C94A2050C94A2050C94A2050C94A20564 +:100080000C94A2050C94A2050C94A2050C94A20554 +:100090000C94A2050C94A2050C94A2050C94A20544 +:1000A0000C94A2050C94A2050C94A205EA100C1164 +:1000B000FA110C11FA1151117411FA11C911DC1154 +:1000C0001A151A1547154715A215DE15D617D61796 +:1000D000F615D617F116F116AC17D617D617C217A4 +:1000E000041607090B0A1D1B06196405141A0815C6 +:1000F0001C171E1F202123222E26242D25273012D7 +:10010000182F0C13280F0D340E33313638111037D9 +:100110002B2C352A5829787B79397A504F515272D5 +:100120006C63685680668053020103555880576D92 +:100130006E5462595A5B5C5D5E5F6F606174756698 +:100140003E3F403C4142774476466B47804365459D +:100150008048494A4B4C3D4D3B4E3A7D7E7C7F73F7 +:100160000A0025303862003A2000253032580072EB +:100170002F632030313233343536370A0061646200 +:100180005F686F73745F6B62645F726563763A2059 +:100190004552524F52282564290A000A002530345E +:1001A00058006164625F686F73745F6B62645F7252 +:1001B0006563763A20004552524F523A206D65648D +:1001C0006961206B6579300A004552524F523A20DE +:1001D0006D65646961206B6579310A005D0A0025EF +:1001E000640020002564007C002530325800200087 +:1001F00025303258006164625F6D6F7573652072DF +:1002000061773A205B000A00253031366200616474 +:10021000625F686F73745F6D6F7573655F7265633E +:10022000763A2000646562756720656E61626C6570 +:10023000642E0A005363616E3A20616464723A2549 +:10024000642C20726567333A253034580A004166C1 +:1002500074657220696E69743A0A00466F756E643F +:100260003A206D65646961206B6579730A00536398 +:10027000616E3A20616464723A25642C207265676D +:10028000333A253034580A004265666F726520693A +:100290006E69743A0A005B735D004B6579626F6149 +:1002A00072642073746172742E0A00555342206385 +:1002B0006F6E666967757265642E0A005B575D0034 +:1002C0005B535D005B525D005B445D005B435D0022 +:1002D0002E0341004400420020006B0065007900BD +:1002E00062006F00610072006400200063006F0014 +:1002F0006E007600650072007400650072000000F8 +:100300000E0374002E006D002E006B002E00000006 +:100310000403090409027400040100A03209040066 +:100320000001030101000921110100012240000721 +:1003300005810308000A0904010001030102000904 +:100340002111010001224D000705820308000A095E +:1003500004020001030000000921110100012236FE +:10036000000705830308000A0904030002030000D4 +:100370000009211101000122220007058403200049 +:10038000010705040320000112011001000000080C +:10039000EDFEDB0A0101010200010631FF0974A133 +:1003A000010975150026FF00952075088102097660 +:1003B000150026FF00952075089102C005010980EF +:1003C000A101850216810026B7001A81002AB70014 +:1003D000751095018100C0050C0901A10185031666 +:1003E0000100269C021A01002A9C027510950181C9 +:1003F00000C005010902A1010901A10005091901B7 +:1004000029051500250195057501810295017503E2 +:1004100081010501093009311581257F9502750893 +:10042000810609381581257F950175088106050C1F +:100430000A38021581257F950175088106C0C0051F +:10044000010906A101050719E029E7150025019515 +:1004500008750181029501750881010508190129B6 +:10046000059505750191029501750391010507191F +:100470000029FF150026FF00950675088100C00AB7 +:10048000002530325820006B6579626F6172645FBD +:100490007265706F72743A20004C45443A202530E2 +:1004A00032580A00290A002575002F002575005DC5 +:1004B0002800256400200025640020002564002019 +:1004C000002564007C0025303258006D6F7573651F +:1004D0006B6579205B62746E7C7820792076206869 +:1004E0005D287265702F61636C293A205B006D6B2B +:1004F0005F776865656C5F74696D655F746F5F6D6C +:100500006178203D2025640A006D6B5F7768656522 +:100510006C5F6D61785F7370656564203D20256454 +:100520000A006D6B5F74696D655F746F5F6D6178F4 +:10053000203D2025640A006D6B5F6D61785F7370EC +:10054000656564203D2025640A006D6B5F696E74EB +:10055000657276616C203D2025640A006D6B5F64D6 +:10056000656C6179203D2025640A006D6B5F7768BA +:1005700065656C5F74696D655F746F5F6D61782030 +:100580003D2025640A006D6B5F776865656C5F6D63 +:1005900061785F7370656564203D2025640A006D95 +:1005A0006B5F74696D655F746F5F6D6178203D206E +:1005B00025640A006D6B5F6D61785F7370656564BB +:1005C000203D2025640A006D6B5F696E746572764C +:1005D000616C203D2025640A006D6B5F64656C6171 +:1005E00079203D2025640A000A00257500363A204E +:1005F000776865656C5F74696D655F746F5F6D6169 +:10060000783A20000A00257500353A20776865653C +:100610006C5F6D61785F73706565643A20000A00F5 +:10062000257500343A2074696D655F746F5F6D6184 +:10063000783A20000A00257500333A206D61785F12 +:1006400073706565643A20000A00257500323A200F +:10065000696E74657276616C286D73293A20000AA0 +:1006600000257500313A2064656C6179282A3130A3 +:100670006D73293A20000A092D2056616C75657347 +:10068000202D0A004D3E004D25643E20003F0073A2 +:1006900065742064656661756C740A00433E2000D1 +:1006A00077686572652064656C74613A2063757261 +:1006B000736F723D25642C20776865656C3D2564F9 +:1006C0000A53656520687474703A2F2F656E2E7713 +:1006D000696B6970656469612E6F72672F77696BEA +:1006E000692F4D6F7573655F6B6579730A000A0931 +:1006F0002D204D6F7573656B6579202D0A45534329 +:100700002F713A09717569740A313A0964656C612F +:1007100079282A31306D73290A323A09696E746575 +:100720007276616C286D73290A333A096D61785FBE +:1007300073706565640A343A0974696D655F746F36 +:100740005F6D61780A353A09776865656C5F6D6140 +:10075000785F73706565640A363A09776865656C19 +:100760005F74696D655F746F5F6D61780A0A703AD6 +:10077000097072696E742076616C7565730A643AEB +:10078000097365742064656661756C74730A7570AD +:100790003A092B310A646F776E3A092D310A706776 +:1007A00075703A092B31300A7067646F776E3A09B9 +:1007B0002D31300A0A7370656564203D2064656CD4 +:1007C0007461202A206D61785F7370656564202AEA +:1007D0002028726570656174202F2074696D655FD3 +:1007E000746F5F6D6178290A003F004D3E20004321 +:1007F0003E20004C25640A000A092D20436F6E73C9 +:100800006F6C65202D0A4553432F713A0971756944 +:10081000740A6D3A096D6F7573656B65790A000A24 +:10082000092D204D61676963202D0A643A096465CA +:100830006275670A783A096465627567206D61744C +:100840007269780A6B3A096465627567206B65792D +:10085000626F6172640A6D3A096465627567206D42 +:100860006F7573650A763A0976657273696F6E0AF9 +:10087000733A097374617475730A633A09636F6E2E +:10088000736F6C65206D6F64650A302D343A096CA6 +:1008900061796572302D34284631302D4634290A6D +:1008A000506175733A09626F6F746C6F6164657241 +:1008B0000A003F0074696D65725F7265616433326E +:1008C00028293A202530346C580A006B6579626F0C +:1008D0006172645F69646C653A2025580A006B6533 +:1008E00079626F6172645F70726F746F636F6C3A7C +:1008F0002025580A00686F73745F6B6579626F61B9 +:1009000072645F6C65647328293A2025580A000ACE +:10091000092D20537461747573202D0A00474343D9 +:100920003A20342E392E32204156522D4C49424322 +:100930003A20312E382E3073766E204156525F4168 +:100940005243483A20617672350A004F5054494F5D +:100950004E533A204C554641204D4F5553454B453B +:10096000592045585452414B455920434F4E534FFF +:100970004C4520434F4D4D414E44204B45594D4130 +:10098000505F53454354494F4E20343039360A00A6 +:100990004255494C443A20383535333461372D645B +:1009A00069727479202831323A32343A333920531B +:1009B00065702031322032303136290A00564944E0 +:1009C0003A2030784645454428742E6D2E6B2E29EA +:1009D000205049443A203078304144422841444232 +:1009E000206B6579626F61726420636F6E766572E9 +:1009F00074657229205645523A20307830313031B2 +:100A00000A00444553433A20636F6E766572742042 +:100A1000414442206B6579626F61726420746F207B +:100A20005553420A000A092D2056657273696F6E8C +:100A3000202D0A000A6D6F7573653A206F66660A8D +:100A4000000A6D6F7573653A206F6E0A000A6B6558 +:100A500079626F6172643A206F66660A000A6B659C +:100A600079626F6172643A206F6E0A000A6D617478 +:100A70007269783A206F66660A000A6D617472695D +:100A8000783A206F6E0A000A64656275673A206FD3 +:100A90006E0A000A64656275673A206F66660A002E +:100AA0000A0A626F6F746C6F616465722E2E2E205D +:100AB00000433E20000011241FBECFEFDAE0DEBF6E +:100AC000CDBF04B603FE27C08091DC019091DD010B +:100AD000A091DE01B091DF018730904BA740B04B71 +:100AE000D1F41092DC011092DD011092DE0110921F +:100AF000DF0114BE84B7877F84BF0FB6F894A89532 +:100B000080916000886180936000109260000FBE49 +:100B1000E0E0F8E3099511E0A0E0B1E0E0E1FEE4F7 +:100B200002C005900D92A433B107D9F721E0A4E3E8 +:100B3000B1E001C01D92AC3DB207E1F70E94DA0CB2 +:100B40000C9406270C940000FF93EF93E09134017E +:100B5000F0913501309709F00995EF91FF910895D3 +:100B6000FC018591803011F0EFDFFBCF0895FF2766 +:100B7000E0E230E247FF0CC0419597FF09C0EDE28B +:100B80006095709580959095611D711D811D911DD9 +:100B900027FF02C0219530E350E2AA27660F771F96 +:100BA000881F991FAA1FA41710F0A41B63955A95BC +:100BB000A9F7AA3008F0A95FA05DAF93F39561157E +:100BC00071058105910541F7ED3211F4EF93F3952D +:100BD000F21718F43F93F395FBCF8F91B5DFFA9599 +:100BE000E1F70895E991F9918591803021F08532FE +:100BF00019F0AADFF9CF089520E0E8945591553215 +:100C0000C1F3503311F4689455915A3348F450535A +:100C100090F3220F022E220F220F200D250FF4CF6A +:100C20000EF4219589919991533619F3533729F18F +:100C3000533559F1BC0188279927E8945C3621F493 +:100C40008991999168945591543639F446EF7EF024 +:100C500077FF0DC08FEF9FEF0AC055374AE039F09C +:100C6000583540E121F0523642E009F00895FF93F3 +:100C7000EF937DDFEF91FF91B7CFFF93EF93FC01EF +:100C800081918030B9F360DFFBCFFF93EF9368DF92 +:100C9000F1CFDF93CF93CDB7DEB72596A3DFCF910A +:100CA000DF910895282F2770E82FE695E695E695C1 +:100CB000EF70F0E0E95CFE4F87FF0AC081E090E052 +:100CC00001C0880F2A95EAF780959081892308C092 +:100CD00081E090E001C0880F2A95EAF79081892B86 +:100CE000808381E080934C0108950F931F93CF93ED +:100CF000DF93569A5E9A0E94BE092FEF87EA91E62B +:100D0000215080409040E1F700C0000088E892E068 +:100D10009F938F930E9449060F900F90C1E0D0E0FF +:100D20000EE612E063E08C2F0E94C209009771F07A +:100D30009F938F93DF93CF931F930F930E94490646 +:100D40000F900F900F900F900F900F909FEF29EF43 +:100D500080E0915020408040E1F700C000002196E3 +:100D6000C031D105F9F663E082E00E94C209813109 +:100D7000910511F170F487309105F1F020F404979A +:100D80000297F0F419C089309105B1F00D97C1F4C4 +:100D900013C08D31910581F030F48431910561F0FB +:100DA000499771F409C0843C910531F0873C910565 +:100DB00019F0813C910521F481E080934D0102C03E +:100DC00010924D0163E087E00E94C20991E08230F9 +:100DD00009F090E090934E01992341F08BE592E069 +:100DE0009F938F930E9449060F900F9023E042E05B +:100DF00063E082E00E94420A8EE492E09F938F9328 +:100E00000E9449060F900F90C1E0D0E004E312E089 +:100E100063E08C2F0E94C209009771F09F938F931B +:100E2000DF93CF931F930F930E9449060F900F906B +:100E30000F900F900F900F908FEF99EF20E081505F +:100E400090402040E1F700C000002196C031D1055C +:100E5000F9F6E7E3F1E080E18E0F11928E13FDCFFA +:100E60008091BE0181608093BE0184E292E00E9485 +:100E7000B005569A5E98DF91CF911F910F9108951A +:100E8000CF93DF938FE79BEB0197F1F700C0000052 +:100E90000E943E0AEC01009711F481E0C3C097FD67 +:100EA00005C080914701816080934701D7FF05C04D +:100EB000809147018E7F809347012D2F33272F7319 +:100EC0003327BE016F737727C6FF02C060547109D4 +:100ED000D6FF02C02054310940913601042E000C87 +:100EE000550B649FC001659F900D749F900D112458 +:100EF00081386FEF960714F481E89FEF9195819503 +:100F0000910981386FEF960714F481E89FEF81957E +:100F100080934801249FC001259F900D349F900D20 +:100F2000112481382FEF920714F481E89FEF9195F7 +:100F30008195910981386FEF960714F481E89FEF4E +:100F40008195809349018091BE0183FF60C08EE04E +:100F500092E00E94B005DF93CF9388E092E09F93E8 +:100F60008F930E94490686E092E00E94B00585EFCB +:100F700091E00E94B00580913601282F082E000CC8 +:100F8000330B3F938F9380EF91E09F938F930E9459 +:100F900049068EEE91E00E94B005809147011F92B4 +:100FA0008F9389EE91E09F938F930E94490687EE7D +:100FB00091E00E94B00580914801282F082E000C76 +:100FC000330B3F938F9384EE91E09F938F930E9416 +:100FD000490682EE91E00E94B00580914901282FD8 +:100FE000082E000C330B3F938F938FED91E09F936E +:100FF0008F930E9449068CED91E00E94B0058DB759 +:101000009EB744960FB6F8949EBF0FBE8DBF87E47F +:1010100091E00E946C128091360191E088300CF0D2 +:1010200090E0890F80933601DF91CF9108951F934F +:10103000CF93DF9310924C01C0910001D091010138 +:101040008FEF9FEF9093010180930001CF3F8FEFCF +:10105000D80709F06AC08FE79BEB0197F1F700C052 +:10106000000082E00E943B0AEC01892B09F05DC080 +:1010700080914E01882309F458C087E00E943B0A02 +:10108000009709F452C09C012F7733272230310595 +:10109000A1F048F42115310569F02130310599F4AA +:1010A00080788A641AC02330310551F02F3731051A +:1010B000A1F009C08078826410C0807889640DC076 +:1010C000807888640AC089EC91E09F938F930E9496 +:1010D00049060F900F9081E18FC0292F33272F777A +:1010E00033272130310579F050F02230310579F085 +:1010F0002330310581F4EC01D078D86416C0EC01BE +:10110000D078D26412C0EC01D078DA640EC0EC0161 +:10111000D078D9640AC086EB91E09F938F930E94A8 +:1011200049060F900F9080E167C08091BE0181FF5A +:1011300018C0209709F45DC082EA91E00E94B005D2 +:10114000DF93CF938DE991E09F938F930E9449069F +:101150008BE991E00E94B0050F900F900F900F90D7 +:1011600003C0209709F445C0CF379FE7D90711F492 +:101170008FE705C0CF3F8FEFD80721F48FEF0E9494 +:10118000520639C02D2F3327822F1C2F2F3F3105B8 +:1011900081F4DF93CF938DE791E09F938F930E942B +:1011A00049060E9475060F900F900F900F908C2F9C +:1011B00023C090914D01992381F0A9014F775527C4 +:1011C0004233510521F42078822F8A6006C04A30CC +:1011D000510519F42078822F82630E9452061F3F26 +:1011E00051F0DC2FCC27CF6FD0930101C0930001C9 +:1011F00002C080E001C081E0DF91CF911F9108958E +:10120000E82FF0E0E95CFE4F2081822F90E021E0A2 +:1012100030E002C0220F331F6A95E2F728233923FA +:1012200081E0232B09F480E00895E82FF0E0E95CE9 +:10123000FE4F80810895CF92DF92EF92FF920F933D +:101240001F93CF93DF938091BE0181FF35C08FE65E +:1012500091E00E94B00587E3E82E81E0F82EC0E01F +:10126000D0E09AE6C92E91E0D92E02E611E0DF9394 +:10127000CF93DF92CF920E94490687E691E00E94C9 +:10128000B005F70181917F010E94C01D1F928F93CD +:101290001F930F930E94490680E691E00E94B005DB +:1012A00021968DB79EB708960FB6F8949EBF0FBED5 +:1012B0008DBFC031D105D9F6DF91CF911F910F912C +:1012C000FF90EF90DF90CF900895682F609582E0B7 +:1012D0000C947C0A509A83E091E00197F1F700C0EA +:1012E000000050989AEB9A95F1F700C00895509A33 +:1012F0008AEB8A95F1F700C0509883E091E001975E +:10130000F1F700C000000895EF92FF920F931F9332 +:10131000CF93DF93C0E0D0E090E8E92EF12C082FC6 +:1013200010E0C7010C2E02C0959587950A94E2F74C +:1013300080239123892B19F00E94770902C00E9413 +:101340006A092196C830D10561F7DF91CF911F91CD +:101350000F91FF90EF900895489B06C023E02A95D7 +:10136000F1F700000197C1F70895489906C023E0FE +:101370002A95F1F700000197C1F708955898509801 +:1013800008950895CF92DF92EF92FF920F931F93EB +:10139000CF93DF931F92CDB7DEB7182FF894509AF2 +:1013A00083EF9BE00197F1F700C0000069830E9482 +:1013B000770969816C6020E1129FC0011124862B9E +:1013C0000E9484090E946A0984EF91E00E94B50995 +:1013D000892B21F4789482EE9FEF43C084EF91E053 +:1013E0000E94AC09009711F478943BC011E1C12C24 +:1013F000D12C02E882E890E00E94B5097C018823A4 +:1014000051F199270E94AC09882329F1CC0CDD1CED +:10141000902F9E19E81A9E1518F46894C0F806C01B +:10142000113121F478948CEE9FEF1BC0115011F70D +:101430008FE591E00E94B509892B21F478948BEE19 +:101440009FEF0FC08BE590E00E94AC09892BB1F7AC +:101450007894C60106C07894812F90E0919581958B +:1014600091090F90DF91CF911F910F91FF90EF9015 +:10147000DF90CF90089560E00C94C20960E083E0B3 +:101480000C94C2091F93CF93DF9300D01F92CDB766 +:10149000DEB7182FF894509A83EF9BE00197F1F78D +:1014A00000C000002B834A8369830E947709698109 +:1014B000686030E1139FC0011124862B0E948409CB +:1014C0000E946A098FE193E00197F1F700C00000E4 +:1014D0000E9477094A81842F0E9484092B81822FE0 +:1014E0000E9484090E946A0978940F900F900F90CF +:1014F000DF91CF911F910895262F277040E062E081 +:101500000C94420A80915A0108959FB7F894109262 +:1015100051019FBF9091D301943009F057C0909131 +:10152000E9009F703091EC00232F217030FD20E8FE +:10153000922B24E02093E9002091EB0020FF43C090 +:101540002091EE0027FF3FC020914F01222321F080 +:101550002091E80025FF37C010924F0126E030911E +:10156000E80035FD15C03091D301343061F530917C +:10157000EB0035FD28C0215021F481E080934F011C +:1015800022C0EFE9FFE03197F1F700C00000E7CF9C +:101590008093F1008091E80085FD0AC08091E80009 +:1015A00080FFFCCF8091E8008E778093E80006C032 +:1015B0008FB7F89421E0209351018FBF9F709093D3 +:1015C000E90080E008959F709093E9008FEF0895FF +:1015D000CF93DF9300D01F92CDB7DEB79C018091EF +:1015E000D301843019F593E099833B832A83909348 +:1015F000E9008FEF9091E800815095FD06C095EDD0 +:101600009A95F1F700008111F5CF8091E80085FFF0 +:101610000DC040E050E063E070E0CE0101960E9412 +:101620009B0D8091E8008E778093E8000F900F90DB +:101630000F90DF91CF910895CF93DF9300D01F9249 +:10164000CDB7DEB72091D301243021F522E02983E4 +:101650009B838A8383E08093E9008FEF9091E80079 +:10166000815095FD06C095ED9A95F1F70000811126 +:10167000F5CF8091E80085FF0DC040E050E063E0C9 +:1016800070E0CE0101960E949B0D8091E8008E775C +:101690008093E8000F900F900F90DF91CF91089505 +:1016A0002091D3012430F1F422E02093E9002FEFC0 +:1016B0003091E800215035FD06C035ED3A95F1F73F +:1016C00000002111F5CF2091E80025FF0BC040E07C +:1016D00050E065E070E00E949B0D8091E8008E77FD +:1016E0008093E8000895CF93DF932091D3012430B5 +:1016F00039F521E02093E9002FEF3091E8002150E7 +:1017000035FD06C035ED3A95F1F700002111F5CF12 +:101710002091E80025FF14C0EC0140E050E068E0B3 +:1017200070E00E949B0D8091E8008E778093E80026 +:1017300088E0FE01A2E5B1E001900D928A95E1F703 +:10174000DF91CF9108958CEC92E00E94B0058091DA +:10175000D201811109C00E94300F0E948D0F80912B +:10176000E20084608093E200089588EC92E00E9499 +:10177000B0051092D201089584EC92E00C94B0056B +:10178000209150012F5F822F62E30E94CC26992383 +:1017900019F0209350010895109250018091510149 +:1017A000882371F18091D301843041F58091E90063 +:1017B0008F702091EC00922F917020FD90E8892B82 +:1017C00094E09093E9009091EB0090FF14C0909109 +:1017D000EE0097FF10C09091E80095FF03C01092B3 +:1017E000F100F9CF9091E80090FF05C09091E800DA +:1017F0009E779093E8008F708093E90010925101DA +:10180000089542E061EC81E00E94AA0E42E061ECA2 +:1018100082E00E94AA0E42E061EC83E00E94AA0EE0 +:1018200042E261EC84E00C94AA0E8091D5018330F1 +:1018300009F453C030F4813071F0823009F48CC067 +:1018400008958A3009F478C08B3009F45EC089307D +:1018500009F09AC020C08091D401813A09F094C067 +:101860008091E800877F8093E8008091D801909173 +:10187000D901892B21F468E082E591E003C060E0A2 +:1018800080E090E070E00E94E60D8091E8008B77A8 +:101890008093E80008958091D401813209F074C0EA +:1018A0008091D8019091D901892B09F06DC0809168 +:1018B000E800877F8093E8008091E80082FD05C002 +:1018C0008091D3018111F8CF5FC08091F1008093A6 +:1018D0005A018091E8008B7753C08091D401813AFE +:1018E00009F052C08091D8019091D901892B09F05B +:1018F0004BC08091E800877F8093E8008091E800EA +:1019000080FFFCCF80910C0136C08091D4018132E0 +:10191000D9F58091D8019091D901892BA9F58091B1 +:10192000E800877F8093E8000E94DF0E8091D60157 +:1019300080930C010C94F7178091D401813221F52A +:101940008091E800877F8093E8000E94DF0E8091FD +:10195000D70180935B0108958091D401813AA1F46D +:101960008091E800877F8093E8008091E80080FF05 +:10197000FCCF80915B018093F1008091E8008E772D +:101980008093E8000C94DF0E08950895089508955B +:1019900080EC92E00E94B0050C94C70C0E94EA1DF6 +:1019A0008091D101882329F00E94151E81110C9489 +:1019B000850D089584B7877F84BF0FB6F894A895E6 +:1019C00080916000886180936000109260000FBE7B +:1019D00090E080E80FB6F8948093610090936100E6 +:1019E0000FBE0E94C50C0E94A4120E94300F0E94DC +:1019F0008D0F8091E20084608093E20085E89AE098 +:101A00000E94BB1D78948091D3018430E1F78BEA6A +:101A100092E00E94B0050E94A61282E091E00E942E +:101A200012128AE992E00E94B0050E94C60C8091D1 +:101A3000D301853039F486E992E00E94B0050E9416 +:101A4000CE0CF5CF0E94AC12F2CF0C94291E8CEB79 +:101A500092E00E94B0050C94250D292F33272330E6 +:101A60003105C9F064F42130310581F022303105AF +:101A700009F043C084E790E024E133E042C0213222 +:101A80003105F1F02232310541F137C082E190E0B9 +:101A900028E833E036C099278130910541F0823043 +:101AA000910541F0892B49F5E0E1F3E005C0E0E064 +:101AB000F3E002C0E0EDF2E0849190E09F0121C0EC +:101AC0006430D8F4E62FF0E0EE0FFF1FEF5DFE4F1D +:101AD0002081318189E090E014C0643070F470E0BE +:101AE000FB01EE0FFF1FE75EFE4F20813181FB01FE +:101AF000EB5EFE4F808190E004C080E090E020E04B +:101B000030E0FA0131832083089580E189BD82E1CC +:101B100089BD09B400FEFDCF8091D8008F7D8093F0 +:101B2000D8008091E00082608093E0008091E00026 +:101B300081FDFCCF0895CF92DF92EF92FF920F9339 +:101B40001F93CF93DF93EC018B016A010E94FE0E7D +:101B5000811133C0C114D10439F0F6018081918123 +:101B6000081B190BC80FD91FE12CF12C0115110509 +:101B700019F18091E80085FD16C08091E8008E770C +:101B80008093E800C114D10449F0F601808191816D +:101B9000E80EF91EF182E08285E00FC00E94FE0E81 +:101BA000882321F30AC089918093F1000150110923 +:101BB000FFEFEF1AFF0ADACF80E0DF91CF911F919C +:101BC0000F91FF90EF90DF90CF9008952091DA0170 +:101BD0003091DB012617370748F06115710539F49C +:101BE0002091E8002E772093E80001C0B90140E081 +:101BF00061157105A9F12091D301222309F443C095 +:101C0000253009F442C02091E80023FD40C0209116 +:101C1000E80022FD32C02091E80020FFE9CF40918A +:101C2000F3002091F20030E0342BFC01CF0161156C +:101C3000710559F02830310540F481918093F1000D +:101C4000615071092F5F3F4FF1CF41E028303105DE +:101C500009F040E02091E8002E772093E800C8CFFB +:101C60004111C9CF0AC08091D301882361F085302A +:101C700061F08091E80083FD0AC08091E80082FF56 +:101C8000F2CF80E0089582E0089583E0089581E036 +:101C900008952091DA013091DB012617370748F0CB +:101CA0006115710539F42091E8002E772093E80042 +:101CB00001C0B901FC0120E06115710591F180912D +:101CC000D301882309F440C0853009F43FC08091D6 +:101CD000E80083FD3DC08091E80082FD2FC0809127 +:101CE000E80080FFE9CF2091F3008091F20090E0BE +:101CF000922B6115710559F08830910540F42491BB +:101D00002093F1003196615071090196F2CF21E0E4 +:101D1000089709F020E08091E8008E778093E80032 +:101D2000CBCF2111CCCF0AC08091D301882361F0A1 +:101D3000853061F08091E80083FD0AC08091E80061 +:101D400082FFF2CF80E0089582E0089583E0089555 +:101D500081E00895982F973058F59093E9009817EF +:101D600039F07091EC002091ED005091F00003C02B +:101D7000242F762F50E021FF19C03091EB003E7FD9 +:101D80003093EB003091ED003D7F3093ED003091CA +:101D9000EB0031603093EB007093EC002093ED008A +:101DA0005093F0002091EE0027FF07C09F5FD3CF34 +:101DB0008F708093E90081E0089580E0089580911C +:101DC000D40187FF11C08091E80082FD05C0809199 +:101DD000D3018111F8CF11C08091E8008B770BC03F +:101DE0008091D301882349F08091E80080FFF8CFEB +:101DF0008091E8008E778093E80008952091E400B8 +:101E00003091E50095E64091EC00842F817040FF11 +:101E100022C08091E80080FD1CC08091D3018823FE +:101E200091F0853091F08091EB0085FD10C04091DC +:101E3000E4005091E5004217530729F39A019150AD +:101E400011F784E0089582E0089583E0089581E029 +:101E5000089580E008954091E80042FFDECF0895A4 +:101E60000E949E0F0E94A60FE0EEF0E0808181604C +:101E70008083E8EDF0E080818F77808319BCA7ED47 +:101E8000B0E08C918E7F8C9380818F7E80831092C6 +:101E9000D20108950F931F93CF93DF930E949E0F5B +:101EA0000E94A60FC8EDD0E088818F778883888153 +:101EB0008068888388818F7D888319BC1092D301C4 +:101EC0001092CF011092D1011092D00100EE10E0DB +:101ED000F80180818B7F808388818160888342E0E4 +:101EE00060E080E00E94AA0EE1EEF0E080818E7F4B +:101EF0008083E2EEF0E08081816080838081886071 +:101F00008083F80180818E7F8083888180618883CF +:101F1000DF91CF911F910F910895E8EDF0E080815E +:101F20008F7E8083E7EDF0E080818160808384E0B4 +:101F300082BF81E08093D2010C944A0FE8EDF0E07B +:101F400080818E7F80831092E20008951092DA00E3 +:101F50001092E10008951F920F920FB60F92112474 +:101F60002F933F934F935F936F937F938F939F93A1 +:101F7000AF93BF93EF93FF938091E10082FF0BC07B +:101F80008091E20082FF07C08091E1008B7F809307 +:101F9000E1000E94C00B8091DA0080FF1FC0809199 +:101FA000D80080FF1BC08091DA008E7F8093DA001A +:101FB0008091D90080FF0DC080E189BD82E189BD9B +:101FC00009B400FEFDCF81E08093D3010E94A30BF2 +:101FD00005C019BC1092D3010E94B50B8091E1009D +:101FE00080FF19C08091E20080FF15C08091E2005F +:101FF0008E7F8093E2008091E20080618093E20016 +:102000008091D80080628093D80019BC85E08093CD +:10201000D3010E94C80C8091E10084FF30C0809100 +:10202000E20084FF2CC080E189BD82E189BD09B452 +:1020300000FEFDCF8091D8008F7D8093D8008091E5 +:10204000E1008F7E8093E1008091E2008F7E80939B +:10205000E2008091E20081608093E2008091CF01F4 +:10206000882311F084E007C08091E30087FD02C05F +:1020700081E001C083E08093D3010E94270D80910D +:10208000E10083FF29C08091E20083FF25C0809199 +:10209000E100877F8093E10082E08093D30110927A +:1020A000CF018091E1008E7F8093E1008091E2007A +:1020B0008E7F8093E2008091E20080618093E20055 +:1020C00042E060E080E00E94AA0E8091F00088600B +:1020D0008093F0000E94BC0BFF91EF91BF91AF91F4 +:1020E0009F918F917F916F915F914F913F912F9130 +:1020F0000F900FBE0F901F9018951F920F920FB662 +:102100000F9211242F933F934F935F936F937F937D +:102110008F939F93AF93BF93CF93DF93EF93FF93EF +:10212000C091E900CF708091EC00D82FD17080FD74 +:10213000D0E81092E9008091F000877F8093F00052 +:1021400078940E94C1101092E9008091F00088609C +:102150008093F000CD2BCF70C093E900FF91EF91F9 +:10216000DF91CF91BF91AF919F918F917F916F91AF +:102170005F914F913F912F910F900FBE0F901F9045 +:1021800018951F93CF93DF93CDB7DEB7AA970FB6FD +:10219000F894DEBF0FBECDBFE4EDF1E088E08E0F16 +:1021A0009091F10091938E13FBCF0E94150C8091BA +:1021B000E80083FF1FC18091D4019091D501492F80 +:1021C00050E04A30510508F015C1FA01EA5AFF4FB4 +:1021D0000C94EC26803881F0823809F00BC1809194 +:1021E000D8018F708093E9008091EB0085FB8827F0 +:1021F00080F91092E90006C08091D0019091D10140 +:10220000911182609091E800977F9093E80080930D +:10221000F1001092F100C8C0282F2D7F09F0EAC00C +:10222000882319F0823061F0E5C08091D6018130B9 +:1022300009F0E0C0933009F080E08093D1012BC019 +:102240008091D601811127C08091D8018F7009F447 +:10225000D1C08093E9002091EB0020FF1CC0933097 +:1022600021F48091EB00806214C09091EB009061AA +:102270009093EB0021E030E0A90102C0440F551F0C +:102280008A95E2F74093EA001092EA008091EB0011 +:1022900088608093EB001092E9008091E800877FCE +:1022A00086C08111A7C01091D6011F778091E300ED +:1022B0008078812B8093E3008091E800877F809372 +:1022C000E8000E94DF0E8091E80080FFFCCF809143 +:1022D000E30080688093E300111102C082E001C036 +:1022E00083E08093D30186C08058823008F082C09A +:1022F0008091D6019091D7018C3D53E0950779F5F7 +:1023000083E08A838AE289834FB7F894DE011396CB +:1023100020E03EE051E2E32FF0E050935700E491DB +:1023200020FF03C0E295EF703F5FEF708E2F90E0CB +:10233000EA3010F0C79601C0C0968D939D932F5F31 +:10234000243149F74FBF8091E800877F8093E800F0 +:102350006AE270E0CE0101960E94E60D14C0AE0163 +:102360004F5F5F4F6091D8010E942D0DBC01892BFA +:1023700009F440C09091E800977F9093E80089812C +:102380009A810E94490E8091E8008B778093E80043 +:1023900031C0803879F58091E800877F8093E8002C +:1023A0008091CF018093F1008091E8008E77809337 +:1023B000E8000E94DF0E1EC081111CC09091D60162 +:1023C0009230C0F48091E800877F8093E80090937A +:1023D000CF010E94DF0E8091CF01811106C0809154 +:1023E000E30087FD02C081E001C084E08093D30157 +:1023F0000E94010C8091E80083FF0AC08091E800F0 +:10240000877F8093E8008091EB0080628093EB00EF +:10241000AA960FB6F894DEBF0FBECDBFDF91CF9165 +:102420001F91089590936101809360010895E09158 +:102430006001F0916101309721F00190F081E02D71 +:10244000099480E00895EF92FF920F931F93CF932A +:10245000DF93E0916001F09161013097B1F18C015F +:102460000280F381E02D09958091BE0182FF2DC08D +:1024700080FF04C087E894E00E94B005E80118E0FE +:1024800081E8E82E84E0F82E8091BE0180FF0BC029 +:1024900088811F928F93FF92EF920E9449060F90BE +:1024A0000F900F900F90115021961111EDCF809148 +:1024B000BE0180FF0AC08FE794E0DF91CF911F91AA +:1024C0000F91FF90EF900C94B005DF91CF911F9189 +:1024D0000F91FF90EF900895E0916001F0916101FC +:1024E000309721F00480F581E02D09940895209122 +:1024F0005E0130915F018217930771F090935F0145 +:1025000080935E01E0916001F0916101309721F0CC +:102510000680F781E02D0994089520915C013091A7 +:102520005D018217930771F090935D0180935C01C8 +:10253000E0916001F0916101309721F00084F18514 +:10254000E02D0994089508950C94A3120E94541E3E +:102550000E9475060C94C109CF92DF92EF92FF9210 +:102560000F931F93CF93DF9300D000D000D0CDB74F +:10257000DEB70E94170883E6C82E81E0D82E00E05F +:1025800010E0E02E802F0E941509F60141916F01A5 +:10259000F42EF826B1F40F5F1F4F0031110589F7B3 +:1025A0008FEF89838A831B820E945D1E8160782F52 +:1025B0009D838C8349815A816B818D810E946D132B +:1025C00047C09091BE0191FF04C08E830E941B09F9 +:1025D0008E8120E030E04F2D50E0922FBA01022E84 +:1025E00002C0759567950A94E2F760FF2BC02983B6 +:1025F000EA8221E030E0690102C0CC0CDD1C9A9532 +:10260000E2F790E08C219D21892B09F420E02B83B7 +:102610000E945D1E8160782F9D838C8349815A8141 +:102620006B818D810E946D1349815A816B817C8100 +:102630008D810E94D71DF801ED59FE4F8081C8267B +:10264000C08206C02F5F3F4F2830310531F6A3CF3F +:102650000E94D61D0E941E210E9440071091620117 +:102660000E941712181741F10E94171280936201FD +:102670009091BE0192FF0EC090FF0CC01F928F93ED +:1026800089E994E09F938F930E9449060F900F90E1 +:102690000F900F908091620126960FB6F894DEBFDE +:1026A0000FBECDBFDF91CF911F910F91FF90EF90A3 +:1026B000DF90CF900C94E81D26960FB6F894DEBFFD +:1026C0000FBECDBFDF91CF911F910F91FF90EF9083 +:1026D000DF90CF9008950C946509CF93DF93CDB729 +:1026E000DEB72B970FB6F894DEBF0FBECDBF942F89 +:1026F0004F83252F588769877A878B874A855B8523 +:10270000452B21F02F3F09F59F3FF9F4DE0111968B +:1027100086E0FD0111928A95E9F785E0FE01379682 +:1027200001900D928A95E1F749815A816B817C81F4 +:102730008D819E810E94911A2B960FB6F894DEBF70 +:102740000FBECDBFDF91CF9108954F815885698528 +:102750007A858B850E94D71DD9CFCF93882309F422 +:10276000CDC0C82F823859F40E94171281FDC6C00F +:1027700089E30E941C1D0E94951D89E30CC08338CB +:1027800079F40E94171280FDB9C083E50E941C1DD8 +:102790000E94951D83E50E94391DCF910C94951DD3 +:1027A000843859F40E94171282FDA8C087E40E9461 +:1027B0001C1D0E94951D87E4EECF8CEF8C0F813A93 +:1027C00048F48C2F0E944824811198C08C2F0E94BD +:1027D0001C1DE3CF80E28C0F883048F4C77081E085 +:1027E00001C0880FCA95EAF70E945B1DD6CF8BE522 +:1027F0008C0F833078F4C53A29F0C63A31F083E87B +:1028000090E005C081E890E002C082E890E0CF91BE +:102810000C94771288E58C0F853108F06FC0C83AA8 +:1028200061F1C93A69F1CA3A71F1CB3A79F1CC3A1E +:1028300081F1CD3A89F1CE3A91F1CF3A99F1C13B8C +:10284000A1F1C03BA9F1C23BB1F1C33BB9F1C43B1B +:10285000C1F1C53BC9F1C63BD1F1C73BD9F1C83B7A +:10286000E1F1C93BE9F1CA3BF1F1CB3BF9F1CC3BDA +:1028700009F43FC080E090E03EC082EE90E03BC0B3 +:1028800089EE90E038C08AEE90E035C085EB90E0AC +:1028900032C086EB90E02FC083EB90E02CC084EB3D +:1028A00090E029C087EB90E026C08CEC90E023C03C +:1028B0008DEC90E020C083E891E01DC08AE891E0B3 +:1028C0001AC082E991E017C084E991E014C081E266 +:1028D00092E011C083E292E00EC084E292E00BC06D +:1028E00085E292E008C086E292E005C087E292E0CD +:1028F00002C08AE292E0CF910C948D12CF9108959C +:10290000882309F44BC0823859F40E94171281FFC2 +:1029100045C089E30E941C1D0E94951D89E30CC0DF +:10292000833871F40E94171280FF38C083E50E943B +:102930001C1D0E94951D83E50E94391D0C94951D58 +:10294000843859F40E94171282FF28C087E40E943D +:102950001C1D0E94951D87E4EFCF9CEF980F913AC4 +:1029600058F390E2980F983050F4877091E001C0CE +:10297000990F8A95EAF7892F0E94611DDFCF9BE5A9 +:10298000980F933020F480E090E00C947712885AEE +:10299000853120F480E090E00C948D120895882316 +:1029A00021F00E945B1D0C94951D0895882321F051 +:1029B0000E94611D0C94951D0895CF92DF92EF92B5 +:1029C000FF920F931F93CF93DF9300D000D000D0DE +:1029D000CDB7DEB725E0FC01DE01119601900D9226 +:1029E0002A95E1F7FC0140813181F2802581229511 +:1029F0002F7063817481672B09F4D8C23F3F19F4AB +:102A00004F3F09F4D3C26C0149833A8389819A818B +:102A10002E830E94DB1C182F092F0E94DA1C0E94B3 +:102A2000EA1BE02FE295EF70F0E0E05AFF4F2E81B5 +:102A30000C94EC26802F807F902F9F70092F882385 +:102A400011F00295007FFF2049F0002309F45FC2D6 +:102A5000802F0E946E1D0E94951D59C2812F0E94D9 +:102A60008014002309F4A2C2802F0E94741D2696B0 +:102A70000FB6F894DEBF0FBECDBFDF91CF911F918F +:102A80000F91FF90EF90DF90CF900C94951D802FC9 +:102A9000807F902F9F70092F803211F00295007F68 +:102AA000112319F0113001F129C0FF20A9F0802F66 +:102AB000222349F1213039F526960FB6F894DEBF6E +:102AC0000FBECDBFDF91CF911F910F91FF90EF907F +:102AD000DF90CF900C947E1D222319F0213009F451 +:102AE00065C20E94811D2CC0FF20E9F0263008F04D +:102AF0005DC20E94581D802329F022C0FF20F1F002 +:102B0000211115C0802F26960FB6F894DEBF0FBE98 +:102B1000CDBFDF91CF911F910F91FF90EF90DF908C +:102B2000CF900C94CF14253008F040C209C0F601B4 +:102B3000858180FFECC18F708583E4CF2111FBC1BB +:102B4000802F69C1202F26952695237030E021150E +:102B5000310521F021303105C9F028C2FF2021F0D4 +:102B6000812F902F937002C080E090E026960FB6E0 +:102B7000F894DEBF0FBECDBFDF91CF911F910F91B3 +:102B8000FF90EF90DF90CF900C947712FF2021F010 +:102B9000812F902F937002C080E090E026960FB6B0 +:102BA000F894DEBF0FBECDBFDF91CF911F910F9183 +:102BB000FF90EF90DF90CF900C948D12812FFF202B +:102BC00019F00E94A41F02C00E940C2026960FB686 +:102BD000F894DEBF0FBECDBFDF91CF911F910F9153 +:102BE000FF90EF90DF90CF900C949120802F837016 +:102BF00009F078C0F110DAC1812F8295869587702F +:102C0000880F880F912F9F70C92ED12CE12CF12CA9 +:102C1000082E04C0CC0CDD1CEE1CFF1C0A94D2F75D +:102C200014FF12C04FE050E060E070E004C0440FB9 +:102C3000551F661F771F8A95D2F7CB01BA016095A1 +:102C400070958095909503C060E070E0CB01202FD7 +:102C5000269526952370422F50E042305105D1F041 +:102C60004330510559F16C297D298E299F29413026 +:102C7000510541F126960FB6F894DEBF0FBECDBFC9 +:102C8000DF91CF911F910F91FF90EF90DF90CF9048 +:102C90000C94FF1B6C297D298E299F2926960FB63F +:102CA000F894DEBF0FBECDBFDF91CF911F910F9182 +:102CB000FF90EF90DF90CF900C94111C0E94FF1BAF +:102CC000C701B60126960FB6F894DEBF0FBECDBF82 +:102CD000DF91CF911F910F91FF90EF90DF90CF90F8 +:102CE0000C94ED1BFF2019F0802F817001C0869598 +:102CF000882309F45BC1812F829586958770880FA0 +:102D0000880F912F9F70C92ED12CE12CF12C082E09 +:102D100004C0CC0CDD1CEE1CFF1C0A94D2F714FF7F +:102D200012C04FE050E060E070E004C0440F551F57 +:102D3000661F771F8A95D2F7CB01BA01609570950F +:102D40008095909503C060E070E0CB01202F269520 +:102D500026952370422F50E042305105D1F0433088 +:102D6000510559F16C297D298E299F294130510542 +:102D700041F126960FB6F894DEBF0FBECDBFDF91AE +:102D8000CF911F910F91FF90EF90DF90CF900C9417 +:102D9000B61C6C297D298E299F2926960FB6F8949A +:102DA000DEBF0FBECDBFDF91CF911F910F91FF907E +:102DB000EF90DF90CF900C94C81C0E94B61CC70106 +:102DC000B60126960FB6F894DEBF0FBECDBFDF91D9 +:102DD000CF911F910F91FF90EF90DF90CF900C94C7 +:102DE000A41C103F41F118F4103E48F48BC0123F70 +:102DF00009F450C0D8F1133F09F460C083C01F70BC +:102E0000802F8F71FF2021F00E943D1C812F7BCEEF +:102E10000E945E1C812F26960FB6F894DEBF0FBE6F +:102E2000CDBFDF91CF911F910F91FF90EF90DF9079 +:102E3000CF900C94D614FF20A9F0253008F0B6C02E +:102E4000802F8F7126960FB6F894DEBF0FBECDBFD0 +:102E5000DF91CF911F910F91FF90EF90DF90CF9076 +:102E60000C94831C263008F0A1C0EACFFF20A1F00B +:102E7000802F8F7126960FB6F894DEBF0FBECDBFA0 +:102E8000DF91CF911F910F91FF90EF90DF90CF9046 +:102E90000C943D1CFF2061F3802F8F7126960FB696 +:102EA000F894DEBF0FBECDBFDF91CF911F910F9180 +:102EB000FF90EF90DF90CF900C945E1CFF2091F07C +:102EC000802F8F7126960FB6F894DEBF0FBECDBF50 +:102ED000DF91CF911F910F91FF90EF90DF90CF90F6 +:102EE0000C94281C26960FB6F894DEBF0FBECDBFFB +:102EF000DF91CF911F910F91FF90EF90DF90CF90D6 +:102F00000C94231CFF20A1F0222309F4B1CF812FC0 +:102F100026960FB6F894DEBF0FBECDBFDF91CF91DE +:102F20001F910F91FF90EF90DF90CF900C94AD1315 +:102F3000222309F4B1CF812F26960FB6F894DEBF75 +:102F40000FBECDBFDF91CF911F910F91FF90EF90FA +:102F5000DF90CF900C948014402F4F70612FC601EA +:102F60000E941E1F26960FB6F894DEBF0FBECDBF7F +:102F7000DF91CF911F910F91FF90EF90DF90CF9055 +:102F80000C94351B402F4F70612FC60126960FB64B +:102F9000F894DEBF0FBECDBFDF91CF911F910F918F +:102FA000FF90EF90DF90CF900C94211F26960FB6E4 +:102FB000F894DEBF0FBECDBFDF91CF911F910F916F +:102FC000FF90EF90DF90CF9008950E947B1D0E94AC +:102FD0004A1D0E94951D0E94C3210E94912080E0FD +:102FE00090E00E94771280E090E00C948D120E9495 +:102FF0006B1D0C94E5170E94DB1C292F22952F7066 +:1030000030E02C3031054CF42A3031056CF422507C +:1030100031092230310588F407C02C30310549F0E0 +:103020002F30310531F009C0803E48F0803F29F44F +:1030300006C093FB882780F9089580E0089581E019 +:103040000895CF93DF9300D000D01F92CDB7DEB7A5 +:103050000F900F900F900F900F90DF91CF910895E8 +:10306000CF93DF9300D000D000D0CDB7DEB7269647 +:103070000FB6F894DEBF0FBECDBFDF91CF9108959C +:103080001F93CF93DF93C091730116E08091740179 +:10309000C81799F0D0E01C9FF0011D9FF00D11247E +:1030A000EB58FE4F4081518162817381848195810B +:1030B0000E9430182196C770E9CFDF91CF911F9100 +:1030C00008954091A5015091A6016091A7017091CA +:1030D000A8018091A9019091AA010C9430188091C7 +:1030E000AA0182958F7009F054C08091A7018823AE +:1030F00009F44FC080917301A09174016091A50102 +:103100007091A6014091A8015091A901B6E08A17DB +:1031100009F43FC090E041155105C1F17F3F11F422 +:103120006F3FA1F1B89FF001B99FF00D1124EB584A +:10313000FE4F218172132AC02081621327C0228191 +:10314000211124C0238134812417350710F4215024 +:103150003109241B350B283C3105C0F42091AA010C +:103160002F7020612093AA0126E0289FF001299F5B +:10317000F00D1124E658FE4F80818F7080618083AE +:1031800085EA91E00E94DD140C9440180196877046 +:10319000BECF0895CF92DF92EF92FF920F931F93CD +:1031A000CF93DF93CDB7DEB762970FB6F894DEBF4B +:1031B0000FBECDBF8C0185E0F801DE011D960190A8 +:1031C0000D928A95E1F7D8014C9111965C91119777 +:1031D00012966C9112971396CD90DC9014973091C3 +:1031E000A5017091A6018091A8019091A901009775 +:1031F00009F46BC17F3F19F43F3F09F466C1E090C9 +:10320000A701EE2009F4C0C02091AA01C816D90672 +:1032100028F0F601E81BF90BCF0104C080959095CA +:103220008C0D9D1DFF24F394883C910578F0F12CC2 +:10323000207F09F0C6C07C2DD98AC88A89890E945E +:10324000211885EA91E00E94DD14B1C0822F807FB1 +:1032500009F046C0751314C0341312C0611110C0B8 +:103260002F7020612093AA010E94611885EA91E0E5 +:103270000E94DD148091AA01D80115968C932EC06E +:10328000CD2819F15F3F11F44F3FF9F0F62E61118F +:103290001CC0809173012091740136E0821709F4FB +:1032A0005AC090E0389FF001399FF00D1124EB587F +:1032B000FE4F7181571306C07081471303C072819E +:1032C000711103C001968770E9CFF62E662309F4C9 +:1032D00018C18091AA0181608093AA01F12C11C1CB +:1032E000751308C0341306C0611104C08091AA018F +:1032F000D801C3C04D875E878D859E856A8B0E94ED +:10330000FB176A898823E1F16623D1F12091AA0194 +:10331000822F82958F7090E0029774F08091A501C2 +:103320009091A60198878F831986DB86CA862C87A1 +:10333000CE0107960E94DD1486E0F801A5EAB1E00F +:1033400001900D928A95E1F70E946F180E94611812 +:10335000FF24F394D6C04D875E878D859E850E949D +:10336000DB1C292F22952F7030E0223031050CF024 +:10337000BCC09F7009F0B6C0805E883008F4C1C040 +:10338000C8010E94DD14E4CFC816D90608F453C062 +:10339000F601E81BF90BCF01883C910508F450C0F9 +:1033A000F12C7C2DD98AC88A89890E942118E5EAE6 +:1033B000F1E086E0DF011D928A95E9F70E9461182D +:1033C000A0C0751314C0341312C0611110C08091D5 +:1033D000AA01F8018583C8010E94DD1486E0E5EAB0 +:1033E000F1E0DF011D928A95E9F7FE2C8AC04D8736 +:1033F0005E878D859E856A8B0E94FB176A8988236C +:1034000009F4BECF662309F4BBCF2091AA01822F15 +:1034100082958F7090E002970CF48ECF8091A50179 +:103420009091A6019A8389831B82DD82CC822E83B0 +:10343000CE0101967FCF809590958C0D9D1DACCFD0 +:10344000F62E662309F49CCF75132EC034132CC0BE +:103450002091AA0120FD1FC0822F82958F70D9F084 +:10346000D80115962C9315978F3049F08F5F982FC0 +:103470009295907F822F8F70892B15968C93C8011F +:103480000E94DD1486E0F801A5EAB1E001900D92FA +:103490008A95E1F793CF86E0F801A5EAB1E00190C3 +:1034A0000D928A95E1F72DC04D875E878D859E85AB +:1034B0000E94FB17811140CF8091AA018160809307 +:1034C000AA01C8010E94DD141CC0662309F458CF6C +:1034D0004D875E878D859E850E94FB17882309F4A2 +:1034E0004FCF2ACF811148CF0CC0243031050CF0CA +:1034F00047CF9F7009F440CFF8019581907F09F084 +:103500003BCF8F2D62960FB6F894DEBF0FBECDBFB6 +:10351000DF91CF911F910F91FF90EF90DF90CF90AF +:1035200008951F93CF93DF93CDB7DEB72C970FB6D7 +:10353000F894DEBF0FBECDBF4F83588769877A8767 +:103540008B879C87CE0107960E94CA18882369F052 +:103550008F8198852A853B85232BF1F19F3F09F0C8 +:1035600063C08F3F09F060C037C086E0FE01379628 +:10357000DE01119601900D928A95E1F76F817885B1 +:10358000EA85FB85309741F17F3F11F46F3F21F1D0 +:103590002091740130E0C90101968770992740910C +:1035A000730150E08417950709F447C069837A8353 +:1035B000FD83EC8396E0929FD001939FB00D112480 +:1035C000AB58BE4FFE01319601900D929A95E1F7EE +:1035D000809374010E94401816E0809173019091CD +:1035E00074018917C1F1189FC00111248B589E4F97 +:1035F0000E94CA18882379F1E09173011E9FF0019F +:103600001124EB58FE4F4081518162817381848186 +:1036100095810E9430188091730190E00196877027 +:10362000992780937301D9CF4F81588569857A8511 +:103630008B859C850E943018CFCF0E94F71710927F +:10364000740110927301E5EAF1E086E0DF011D925A +:103650008A95E9F7C1CF2C960FB6F894DEBF0FBE5E +:10366000CDBFDF91CF911F910895DF92EF92FF922E +:103670000F931F93CF93DF93FC01892B09F48AC02A +:10368000E12CF12CDD24D394EF0121968491853730 +:1036900009F461C058F4843708F04EC0843008F053 +:1036A0006AC08130D1F0823071F174C0883709F47A +:1036B0005DC050F4863709F455C0873709F06AC0F9 +:1036C0008E2D0E94681D54C09CE7980F903708F01B +:1036D00061C08F770E94801450C08F010E5F1F4F12 +:1036E000FE01849190E2980F983050F48770FD2D80 +:1036F00001C0FF0F8A95EAF78F2F0E946E1D14C03C +:103700000E94AD1313C08F010E5F1F4FFE01C491C5 +:1037100080E28C0F883060F4C7708D2D01C0880F57 +:10372000CA95EAF70E94741D0E94951DE80125C004 +:103730008C2F0E948014FACF9F012E5F3F4FFE0115 +:10374000C491CC2369F08FE99FE00197F1F700C0A5 +:103750000000C150F6CF9F012E5F3F4FFE01F49055 +:10376000E9010BC00E94581DE82E07C00E946B1D86 +:103770000E94951D02C00E94AD138F2D882341F039 +:10378000EFE9FFE03197F1F700C000008150F6CF7C +:10379000FE017ACFDF91CF911F910F91FF90EF90B3 +:1037A000DF9008956093AF017093B0018093B101F1 +:1037B0009093B2010E94E61D0C94E5176093AB0153 +:1037C0007093AC018093AD019093AE010E94E71D10 +:1037D0000C94E51708950C94D21B0F931F9300913E +:1037E000AF011091B0012091B1013091B201602B75 +:1037F000712B822B932B1F910F910C94D21B0F9343 +:103800001F930091AF011091B0012091B10130914F +:10381000B20160237123822393231F910F910C9493 +:10382000D21B0F931F930091AF011091B001209113 +:10383000B1013091B20160277127822793271F9130 +:103840000F910C94D21B60E070E0CB010C94DE1B56 +:103850000F931F9341E050E060E070E08A019B010C +:1038600004C0000F111F221F331F8A95D2F7C90110 +:10387000B8011F910F910C94DE1B0F931F9341E031 +:1038800050E060E070E004C0440F551F661F771FD2 +:103890008A95D2F78091AB019091AC01A091AD01D6 +:1038A000B091AE018A019B01082B192B2A2B3B2BCF +:1038B000C901B8011F910F910C94DE1B0F931F9348 +:1038C00041E050E060E070E004C0440F551F661F07 +:1038D000771F8A95D2F740955095609570958091A5 +:1038E000AB019091AC01A091AD01B091AE018A0104 +:1038F0009B01082319232A233B23C901B8011F91E7 +:103900000F910C94DE1B0F931F9341E050E060E099 +:1039100070E004C0440F551F661F771F8A95D2F7C9 +:103920008091AB019091AC01A091AD01B091AE013D +:103930008A019B01082719272A273B27C901B801BB +:103940001F910F910C94DE1B0F931F930091AB01FD +:103950001091AC012091AD013091AE01602B712B23 +:10396000822B932B1F910F910C94DE1B0F931F93AF +:103970000091AB011091AC012091AD013091AE01ED +:1039800060237123822393231F910F910C94DE1BDC +:103990000F931F930091AB011091AC012091AD01E9 +:1039A0003091AE0160277127822793271F910F91D5 +:1039B0000C94DE1B0895CF92DF92EF92FF920F934B +:1039C0001F93CF93DF938C01C090AF01D090B001D3 +:1039D000E090B101F090B2014091AB015091AC0187 +:1039E0006091AD017091AE01C42AD52AE62AF72A6A +:1039F000CFE1D0E0D701C6010C2E04C0B695A79543 +:103A0000979587950A94D2F780FF07C0B8018C2F4D +:103A10000E94F41E8130910531F4219758F7B801C6 +:103A200080E00E94F41EDF91CF911F910F91FF90D3 +:103A3000EF90DF90CF90089520910D0130910E010D +:103A4000F90132969FEF40E05191581789F09F3F5E +:103A500019F4511101C0942F4F5F4630A9F79F3FD1 +:103A600039F0F901E90FF11D97FDFA958283089568 +:103A7000089520910D0130910E01F9013296285FD1 +:103A80003F4F9081981301C010823196E217F307DF +:103A9000C1F7089581E090E0E0910D01F0910E01F1 +:103AA000E80FF91F1082019688309105A9F7089553 +:103AB0008091BD0108959091BD01892B8093BD0136 +:103AC000089580959091BD0189238093BD0108954B +:103AD0008093BD0108951092BD0108959091BC019D +:103AE000892B8093BC01089580959091BC01892316 +:103AF0008093BC0108951092BC0108958093B30196 +:103B000008951092B301089580910D0190910E01D6 +:103B1000FC0131969C01285F3F4F80E0919191110B +:103B20008F5FE217F307D1F70895E0910D01F0914F +:103B30000E018091BD018083E0910D01F0910E0195 +:103B400090818091BC01892B80838091B30188236F +:103B500061F0E0910D01F0910E019081892B80833D +:103B60000E94841D81111092B30180910D019091EA +:103B70000E010C9423129093350180933401089523 +:103B80008295982F9C7C392F36953695282F237354 +:103B900044E0249FC0011124932F982B292F2A7AC7 +:103BA0002695892F8575880F822B08950895CF93C8 +:103BB000DF9300D000D01F92CDB7DEB70F900F90EB +:103BC0000F900F900F90DF91CF9108950895089571 +:103BD0000C946B138091D301843021F11092BF01BA +:103BE00020E488E190E00FB6F894A89580936000F7 +:103BF0000FBE2093600083B7817F846083BF83B74B +:103C0000816083BF7894889583B78E7F83BF0FB61A +:103C1000F894A8958091600088618093600010926C +:103C200060000FBE089508950895CF930E94131E5B +:103C30000E9417080E94141EC0E08C2F0E941509D4 +:103C4000811104C0CF5FC031C1F701C081E0CF91C5 +:103C500008950C94F7171F920F920FB60F9211242C +:103C60008F939F93AF93BF938091BF01811113C036 +:103C70008091C0019091C101A091C201B091C30196 +:103C80004196A11DB11D8093C0019093C101A093E5 +:103C9000C201B093C301BF91AF919F918F910F90DB +:103CA0000FBE0F901F90189582E084BD93E095BDE4 +:103CB0009AEF97BD80936E0008952FB7F894809186 +:103CC000C0019091C101A091C201B091C3012FBF69 +:103CD00008952FB7F8946091C0017091C10180914F +:103CE000C2019091C3012FBF0895CF92DF92EF924E +:103CF000FF920F931F932FB7F8944091C0015091FA +:103D0000C1016091C2017091C3012FBF6A017B01A3 +:103D1000EE24FF248C0120E030E0C016D106E2063C +:103D2000F30610F4415051099A01281B390BC901BF +:103D30001F910F91FF90EF90DF90CF9008951F9209 +:103D40000F920FB60F9211248F939F93AF93BF934F +:103D50008091C0019091C101A091C201B091C301B5 +:103D60000196A11DB11D8093C0019093C101A09344 +:103D7000C201B093C301BF91AF919F918F910F90FA +:103D80000FBE0F901F9018950E94300FF8942FEFE0 +:103D900087EA91E6215080409040E1F700C00000A2 +:103DA00087E090EBDC018093DC019093DD01A09330 +:103DB000DE01B093DF019CE088E10FB6F894A8958E +:103DC000809360000FBE90936000FFCF28E0929F29 +:103DD000F0011124E80FF11DE052FF4F9491892F5B +:103DE0008F7092959F700895CF93C82FCB010E943A +:103DF000E61E282F30E080E1989FA0011124422B7D +:103E0000532B4038510519F480E090E015C09770AD +:103E1000E92FF0E088E0C89FE00DF11D112484E057 +:103E2000EE0FFF1F8A95E1F7E20FF31FEE0FFF1F62 +:103E3000E050F84985919491CF91089580E090E009 +:103E4000089508958091C60180FF0BC06091120112 +:103E500085E0689FB0011124759567957595679504 +:103E60002BC081FF09C06091120185E0689FB001FD +:103E700011247595679520C082FF07C060911201DB +:103E800085E0689FB001112417C09091C701992364 +:103E9000D1F060911101961788F72091120185E009 +:103EA000289F90011124929FA001939F500D1124EF +:103EB00070E0CA010E94D8266038710540F461158F +:103EC000710539F002C065E070E0862F08958FE734 +:103ED000089581E008958091C60180FF08C0609137 +:103EE000100170E0759567957595679521C081FF04 +:103EF00006C06091100170E07595679519C082FF4A +:103F000004C06091100170E010C09091C701992326 +:103F1000C1F060910F019617A0F780911001899F61 +:103F2000C001112470E00E94D8266038710528F481 +:103F30006115710521F0862F08958FE7089581E0BE +:103F4000089561E070E0F4CF803F21F40E94221FC9 +:103F5000819504C0813F29F40E94221F8093CA01E9 +:103F60000895823F21F40E94221F819504C0833F5F +:103F700029F40E94221F8093C9010895893F19F4F2 +:103F80000E946B1F05C08A3F31F40E946B1F819510 +:103F90008093CB0108958B3F21F40E946B1F819584 +:103FA00004C08C3F29F40E946B1F8093CC010895BC +:103FB000843F21F48091C801816017C0853F21F4BE +:103FC0008091C801826011C0863F21F48091C801B0 +:103FD00084600BC0873F21F48091C801886005C0D0 +:103FE000883F31F48091C80180618093C8010895B1 +:103FF0008D3F21F48091C60181600BC08E3F21F47A +:104000008091C601826005C08F3F29F48091C6016E +:1040100084608093C6010895803F39F48091CA017D +:1040200087FF6CC01092CA0169C0813F29F480915A +:10403000CA011816BCF362C09091C901823F29F4ED +:1040400097FF5CC01092C90159C0833F19F419163B +:10405000CCF354C0893F41F48091CB0118160CF089 +:104060004DC01092CB014AC08A3F29F48091CB0108 +:1040700087FF44C0F6CF8B3F39F48091CC0187FF96 +:104080003DC01092CC013AC08C3F29F48091CC0104 +:104090001816BCF333C0843F21F48091C8018E7F91 +:1040A00017C0853F21F48091C8018D7F11C0863FE4 +:1040B00021F48091C8018B7F0BC0873F21F4809150 +:1040C000C801877F05C0883F31F48091C8018F7E89 +:1040D0008093C80113C08D3F21F48091C6018E7F6B +:1040E0000BC08E3F21F48091C6018D7F05C08F3FAC +:1040F00029F48091C6018B7F8093C6018091C9010C +:1041000081110EC08091CA0181110AC08091CB013A +:10411000811106C08091CC01811102C01092C701AB +:1041200008958091BE0183FF7EC08BEC94E00E94D5 +:10413000B0058091C8011F928F9386EC94E09F9305 +:104140008F930E94490684EC94E00E94B005809110 +:10415000C901282F082E000C330B3F938F9381EC5D +:1041600094E09F938F930E9449068FEB94E00E9406 +:10417000B0058091CA01282F082E000C330B3F9305 +:104180008F938CEB94E09F938F930E9449068AEB68 +:1041900094E00E94B0058091CB01282F082E000CDE +:1041A000330B3F938F9387EB94E09F938F930E9401 +:1041B000490685EB94E00E94B0058091CC01282F40 +:1041C000082E000C330B3F938F9382EB94E09F9368 +:1041D0008F930E9449068FEA94E00E94B005809177 +:1041E000C7011F928F938CEA94E09F938F930E9454 +:1041F00049068AEA94E00E94B0058091C6011F92A8 +:104200008F9387EA94E09F938F930E94490684EAF4 +:1042100094E00E94B0058DB79EB74C960FB6F89407 +:104220009EBF0FBE8DBF88EC91E00E946C120E9471 +:104230005D1E9093C5018093C40108951F93CF9391 +:10424000DF938091C4019091C5010E94751EAC015D +:104250009091C701992321F02091130130E006C00D +:10426000209114018AE0289F9001112442175307DE +:1042700008F485C08091C901C091CA01D091CB01D9 +:104280001091CC01811107C0C11175C0D11173C04B +:10429000111171C074C09F3F19F09F5F9093C701C7 +:1042A000181624F40E94221F8093C9018091C9012D +:1042B00087FF05C00E94221F81958093C9011C16AB +:1042C00024F40E94221F8093CA018091CA0187FFB3 +:1042D00005C00E94221F81958093CA016091C90187 +:1042E000662331F1C091CA01CC2311F1062E000CD6 +:1042F000770B880B990B0E94D32523E333E343E329 +:104300005FE30E9437260E949B256093C9016C2FB2 +:10431000CC0F770B880B990B0E94D32523E333E353 +:1043200043E35FE30E9437260E949B256093CA0106 +:104330001D1624F40E946B1F8093CB018091CB014A +:1043400087FF05C00E946B1F81958093CB011116DA +:1043500024F40E946B1F8093CC018091CC0187FFD5 +:1043600005C00E946B1F81958093CC01DF91CF9196 +:104370001F910C9491209F3F09F08FCF97CFDF9131 +:10438000CF911F910895E8ECF1E085E0DF011D92E7 +:104390008A95E9F71092C7011092C60108958EEE32 +:1043A00096E00E94B0051F9281E08F931F9285E0F6 +:1043B0008F9380EA96E09F938F930E9449060F9017 +:1043C0000F900F900F900F900F9008958330E9F1A8 +:1043D00028F4813061F0823009F10895853009F4C4 +:1043E00062C008F449C0863009F474C00895809111 +:1043F0001401262F30E0280F311D2F3F310524F402 +:10440000680F6093140103C08FEF809314018091B3 +:1044100014011F928F9389ED95E072C08091130172 +:10442000262F30E0280F311D2F3F310524F4680F6F +:104430006093130103C08FEF8093130180911301E8 +:104440001F928F9387EC95E05BC080911201262F1D +:1044500030E0280F311D2F3F310524F4680F6093A1 +:10446000120103C08FEF80931201809112011F92FD +:104470008F9384EB95E044C080911101262F30E0AA +:10448000280F311D2F3F310524F4680F609311016F +:1044900003C08FEF80931101809111011F928F93C0 +:1044A0008FE995E02DC080911001262F30E0280F74 +:1044B000311D2F3F310524F4680F6093100103C0B4 +:1044C0008FEF80931001809110011F928F9386E8E7 +:1044D00095E016C080910F01262F30E0280F311D86 +:1044E0002F3F310524F4680F60930F0103C08FEF55 +:1044F00080930F0180910F011F928F938BE695E0BF +:104500009F938F930E9449060F900F900F900F90EA +:104510000895833081F128F4813059F08230D1F050 +:104520000895853009F449C0B8F1863009F456C0C1 +:10453000089580911401681720F4861B809314015C +:1045400002C010921401809114011F928F938CE588 +:1045500095E054C080911301681720F4861B809366 +:10456000130102C010921301809113011F928F93C7 +:104570008AE495E043C080911201681720F4861BFD +:104580008093120102C010921201809112011F92B9 +:104590008F9387E395E032C080911101681720F472 +:1045A000861B8093110102C01092110180911101AC +:1045B0001F928F9382E295E021C0809110016817CD +:1045C00020F4861B8093100102C01092100180918C +:1045D00010011F928F9389E095E010C080910F0128 +:1045E000681720F4861B80930F0102C010920F0100 +:1045F00080910F011F928F938EEE94E09F938F9383 +:104600000E9449060F900F900F900F900895CF933E +:10461000C82F1F928F9383EF97E09F938F930E94F1 +:10462000490681E090E0A0E0B0E0BC01CD0104C00B +:10463000660F771F881F991FCA95D2F70E94EB1B40 +:104640000F900F900F900F90CF910C94F717CF937E +:10465000873288F58E3108F00BC18E3009F487C09F +:10466000D8F4873009F460C08B3009F44FC086302D +:1046700009F002C18091BE01817F8E7F8093BE01CF +:1046800088EF97E00E94B00581EB9AE00E94B005A8 +:1046900081E08093CE0146C0863109F4B0C020F499 +:1046A000803109F47AC0E8C0893109F491C08B31B6 +:1046B00009F449C0E1C0883349F150F4893209F462 +:1046C000D5C0853309F4D2C0873209F0D5C0CEC039 +:1046D000833409F4CBC028F48A3308F4CDC089535D +:1046E000C8C0883409F0C8C00E94F71780EA9AE071 +:1046F0000E94B0052FEF83ED90E321508040904061 +:10470000E1F700C000000E94C41E0CC08FE198E0D9 +:1047100041C087E89AE00E94B0058091BE018160A7 +:104720008093BE01C1E0ADC08091BE01C82FC170B1 +:1047300080FFEFCF83E99AE00E94B0058091BE012F +:10474000817F8E7F3FC09091BE0191FBCC27C0F945 +:1047500081E0C827892FC0FB81F98093BE01CC235B +:1047600019F08AE79AE029C08CE69AE013C090918C +:10477000BE0192FBCC27C0F981E0C827892FC0FB7E +:1047800082F98093BE01CC2319F08DE59AE015C023 +:104790008DE49AE00E94B005C5CF9091BE0193FBD5 +:1047A000CC27C0F981E0C827892FC0FB83F980930B +:1047B000BE01CC2351F081E49AE00E94B0058091C3 +:1047C000BE0181608093BE015CC084E39AE0E2CFC9 +:1047D00085E29AE00E94B00582E09AE00E94B0056E +:1047E0008DEB99E00E94B00580E999E00E94B00548 +:1047F0008BE499E00E94B0058DE199E0CBCF8FE08A +:1048000099E00E94B0050E9417121F928F9385EFC6 +:1048100098E09F938F930E94490680910C011F920C +:104820008F938EED98E09F938F930E94490680911D +:104830005B011F928F938BEC98E09F938F930E9464 +:1048400049060E94691E9F938F937F936F9384EB19 +:1048500098E09F938F930E9449068DB79EB742962A +:104860000FB6F8949EBF0FBE8DBF5CCF80E001C035 +:104870008D510E94072356CF82EB98E00E94B0052D +:10488000C0E08C2FCF91089580E0089580E00895D6 +:10489000CF93C82F8091CE01813069F020F0823013 +:1048A00009F449C040C167E08FE00E9400098823F5 +:1048B00009F43FC106C067E08FE00E940009882329 +:1048C00061F08C2F0E944424811104C08C2F0E941F +:1048D00027232FC081E090E02CC08C2F0E9446241B +:1048E000811126C0C431E1F070F4CB3081F0C031C9 +:1048F000D1F40E94CF218BEE97E00E94B00582E0B8 +:104900008093CE0115C0C93259F0C83361F488EFE5 +:1049100097E00E94B0058FEE97E00E94B00508C0B6 +:104920001092CE0104C189EE97E00E94B005FFC04D +:1049300081E08170FEC0C43228F5CE3108F0C1C0DC +:10494000CB30A1F1D0F4C73009F0D3C08EE1809311 +:10495000140182E3809313018AE08093120184E1C1 +:104960008093110188E08093100188E280930F0109 +:104970008FE896E00E94B005BFC0C33149F1C43151 +:10498000C1F0B7C0CB3409F4A9C028F4C93289F00A +:10499000C83361F0AEC0C13509F49EC0C23509F418 +:1049A00099C0CE3409F0A5C06AE09EC00E94CF2114 +:1049B000A3C08091CD01882319F01092CD019CC035 +:1049C0008CE996E00E94B00581E08093CE01B1C0F1 +:1049D00086E796E00E94B00584E696E00E94B00566 +:1049E000809114011F928F9381E696E09F938F939D +:1049F0000E9449068FE596E00E94B0058DE496E09E +:104A00000E94B005809113011F928F938AE496E073 +:104A10009F938F930E94490688E496E00E94B00518 +:104A200089E396E00E94B005809112011F928F9356 +:104A300086E396E09F938F930E94490684E396E075 +:104A40000E94B00583E296E00E94B00580911101BA +:104A50001F928F9380E296E09F938F930E94490666 +:104A60008EE196E00E94B00589E096E00E94B005D4 +:104A7000809110011F928F9386E096E09F938F9311 +:104A80000E94490684E096E00E94B0058DEE95E014 +:104A90000E94B00580910F011F928F938AEE95E0DE +:104AA0009F938F930E94490688EE95E00E94B0057F +:104AB0008DB79EB748960FB6F8949EBF0FBE8DBFB8 +:104AC0001BC0CE51EC2FF0E0E75DFE4F808180935C +:104AD000CD0112C061E003C061E006C06AE08091D0 +:104AE000CD010E94E62108C08091CD010E9489225B +:104AF00003C08DE896E013C08091CD01882369F052 +:104B00001F928F9387E896E09F938F930E944906A8 +:104B10000F900F900F900F9004C084E896E00E94D1 +:104B2000B00581E006C01092CE0180E002C080E0B6 +:104B300000CFCF9108950E94A2256894B1110C94E2 +:104B4000312608950E94162688F09F5798F0B92FB5 +:104B50009927B751B0F0E1F0660F771F881F991FB2 +:104B60001AF0BA95C9F714C0B13091F00E943026FE +:104B7000B1E008950C943026672F782F8827B85F0E +:104B800039F0B93FCCF3869577956795B395D9F70A +:104B90003EF490958095709561957F4F8F4F9F4F14 +:104BA0000895E89409C097FB3EF490958095709520 +:104BB00061957F4F8F4F9F4F9923A9F0F92F96E969 +:104BC000BB279395F695879577956795B795F111DE +:104BD000F8CFFAF4BB0F11F460FF1BC06F5F7F4F7B +:104BE0008F4F9F4F16C0882311F096E911C077238D +:104BF00021F09EE8872F762F05C0662371F096E896 +:104C0000862F70E060E02AF09A95660F771F881F64 +:104C1000DAF7880F9695879597F9089557FD90587C +:104C2000440F551F59F05F3F71F04795880F97FB70 +:104C3000991F61F09F3F79F087950895121613062A +:104C40001406551FF2CF4695F1DF08C01616170659 +:104C50001806991FF1CF869571056105089408958E +:104C6000E894BB2766277727CB0197F908950E9420 +:104C70004A260C94BB260E94AD2638F00E94B4262A +:104C800020F0952311F00C94A4260C94AA2611244C +:104C90000C9431260E940E2670F3959FC1F3950F58 +:104CA00050E0551F629FF001729FBB27F00DB11DB0 +:104CB000639FAA27F00DB11DAA1F649F6627B00D40 +:104CC000A11D661F829F2227B00DA11D621F739F29 +:104CD000B00DA11D621F839FA00D611D221F749F37 +:104CE0003327A00D611D231F849F600D211D822F7E +:104CF000762F6A2F11249F5750409AF0F1F08823A5 +:104D00004AF0EE0FFF1FBB1F661F771F881F9150D1 +:104D10005040A9F79E3F510580F00C94A4260C94B6 +:104D200031265F3FE4F3983ED4F3869577956795F7 +:104D3000B795F795E7959F5FC1F7FE2B880F911DFB +:104D40009695879597F9089597F99F6780E870E0A1 +:104D500060E008959FEF80EC089500240A941616F1 +:104D6000170618060906089500240A941216130659 +:104D7000140605060895092E0394000C11F48823E7 +:104D800052F0BB0F40F4BF2B11F460FF04C06F5F03 +:104D90007F4F8F4F9F4F0895991B79E004C0991F53 +:104DA000961708F0961B881F7A95C9F78095089585 +:104DB00097FB072E16F4009407D077FD09D00E94C8 +:104DC000F22607FC05D03EF4909581959F4F0895FB +:104DD000709561957F4F0895EE0FFF1F0590F49138 +:104DE000E02D0994AA1BBB1B51E107C0AA1FBB1FE2 +:104DF000A617B70710F0A61BB70B881F991F5A9567 +:104E0000A9F780959095BC01CD010895F894FFCF46 +:104E1000FFFF820A730B500B1C0BE80A01B4012838 +:104E200008140A321E404D36223F04F203BC039A96 +:104E30000326033F03580371030102030405060719 +:044E4000080900005D +:106800000000EA44E944E2440400050006000700F1 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:10686000300031A132003300340035A1360037004A +:10687000380082003A003B003C003D003E003F00F3 +:1068800040004100420043004400450046004700EC +:10689000480049004A004B004C004D004E004F009C +:1068A000500051005200530067005400550056003C +:1068B000580059005A005B005C005D005E005F00FC +:1068C0006000610062006300640000005700000087 +:1068D000CD440000000000000000000000000000A7 +:1068E00000000000000081400000000000000000E7 +:1068F000E000E100E200E300E400E500E600E7007C +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010001004C00010001004400450052000C +:1069600049000100010050004F0001004D004E00A1 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E000010001000100010001000100010001009F +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/adb_usb/binary/adb_usb_rev2_unimap.hex b/converter/adb_usb/binary/adb_usb_rev2_unimap.hex new file mode 100644 index 00000000..ea309ebc --- /dev/null +++ b/converter/adb_usb/binary/adb_usb_rev2_unimap.hex @@ -0,0 +1,1277 @@ +:100000000C943B050C9482050C9482050C9482059B +:100010000C9482050C9482050C9482050C94820544 +:100020000C9482050C9482050C9482050C944D0F5F +:100030000C94FC0F0C94B91D0C9482050C94820551 +:100040000C9482050C9482050C9482050C942D1E50 +:100050000C9482050C9482050C9482050C94820504 +:100060000C9482050C9482050C9482050C948205F4 +:100070000C94820569108B1079118B107911D010B6 +:10008000F310791148115B1199149914C614C61410 +:1000900021155D15551755177515551770167016DE +:1000A0002B17551755174117041607090B0A1D1B67 +:1000B00006196405141A08151C171E1F2021232277 +:1000C0002E26242D25273012182F0C13280F0D341F +:1000D0000E333136381110372B2C352A5829787BBE +:1000E00079397A504F5152726C63685680668053EA +:1000F000020103555880576D6E5462595A5B5C5D1E +:100100005E5F6F60617475663E3F403C414277447C +:1001100076466B47804365458048494A4B4C3D4D88 +:100120003B4E3A7D7E7C7F730A0025303862003A70 +:1001300020002530325800722F63203031323334A2 +:100140003536370A006164625F686F73745F6B6293 +:10015000645F726563763A204552524F5228256497 +:10016000290A000A0025303458006164625F686F14 +:1001700073745F6B62645F726563763A2000455208 +:10018000524F523A206D65646961206B6579300A7F +:10019000004552524F523A206D65646961206B658B +:1001A00079310A005D0A0025640020002564007C86 +:1001B000002530325800200025303258006164623A +:1001C0005F6D6F757365207261773A205B000A007E +:1001D0002530313662006164625F686F73745F6DF1 +:1001E0006F7573655F726563763A2000646562754A +:1001F0006720656E61626C65642E0A005363616EF0 +:100200003A20616464723A25642C20726567333A3F +:10021000253034580A00416674657220696E69742D +:100220003A0A00466F756E643A206D656469612014 +:100230006B6579730A005363616E3A20616464727E +:100240003A25642C20726567333A253034580A0009 +:100250004265666F726520696E69743A0A005B7365 +:100260005D004B6579626F617264207374617274B2 +:100270002E0A0055534220636F6E6669677572657A +:10028000642E0A005B575D005B535D005B525D00AE +:100290002E0341004400420020006B0065007900FD +:1002A00062006F00610072006400200063006F0054 +:1002B0006E00760065007200740065007200000038 +:1002C0000E0374002E006D002E006B002E00000047 +:1002D0000403090409027400040100A032090400A7 +:1002E0000001030101000921110100012240000762 +:1002F00005810308000A0904010001030102000945 +:100300002111010001224D000705820308000A099E +:10031000040200010300000009211101000122363E +:10032000000705830308000A090403000203000014 +:100330000009211101000122220007058403200089 +:10034000010705040320000112011001000000084C +:10035000EDFEDB0A0101010200010631FF0974A173 +:10036000010975150026FF009520750881020976A0 +:10037000150026FF00952075089102C0050109802F +:10038000A101850216810026B7001A81002AB70054 +:10039000751095018100C0050C0901A101850316A6 +:1003A0000100269C021A01002A9C02751095018109 +:1003B00000C005010902A1010901A10005091901F7 +:1003C0002905150025019505750181029501750323 +:1003D00081010501093009311581257F95027508D4 +:1003E000810609381581257F950175088106050C60 +:1003F0000A38021581257F950175088106C0C00560 +:10040000010906A101050719E029E7150025019555 +:1004100008750181029501750881010508190129F6 +:10042000059505750191029501750391010507195F +:100430000029FF150026FF00950675088100C00AF7 +:10044000002530325820006B6579626F6172645FFD +:100450007265706F72743A20004C45443A20253022 +:1004600032580A00290A002575002F002575005D05 +:100470002800256400200025640020002564002059 +:10048000002564007C0025303258006D6F7573655F +:100490006B6579205B62746E7C78207920762068A9 +:1004A0005D287265702F61636C293A205B006D6B6B +:1004B0005F776865656C5F74696D655F746F5F6DAC +:1004C0006178203D2025640A006D6B5F7768656563 +:1004D0006C5F6D61785F7370656564203D20256495 +:1004E0000A006D6B5F74696D655F746F5F6D617835 +:1004F000203D2025640A006D6B5F6D61785F73702D +:10050000656564203D2025640A006D6B5F696E742B +:10051000657276616C203D2025640A006D6B5F6416 +:10052000656C6179203D2025640A006D6B5F7768FA +:1005300065656C5F74696D655F746F5F6D61782070 +:100540003D2025640A006D6B5F776865656C5F6DA3 +:1005500061785F7370656564203D2025640A006DD5 +:100560006B5F74696D655F746F5F6D6178203D20AE +:1005700025640A006D6B5F6D61785F7370656564FB +:10058000203D2025640A006D6B5F696E746572768C +:10059000616C203D2025640A006D6B5F64656C61B1 +:1005A00079203D2025640A000A00257500363A208E +:1005B000776865656C5F74696D655F746F5F6D61A9 +:1005C000783A20000A00257500353A20776865657D +:1005D0006C5F6D61785F73706565643A20000A0036 +:1005E000257500343A2074696D655F746F5F6D61C5 +:1005F000783A20000A00257500333A206D61785F53 +:1006000073706565643A20000A00257500323A204F +:10061000696E74657276616C286D73293A20000AE0 +:1006200000257500313A2064656C6179282A3130E3 +:100630006D73293A20000A092D2056616C75657387 +:10064000202D0A004D3E004D25643E20003F0073E2 +:1006500065742064656661756C740A00433E200011 +:1006600077686572652064656C74613A20637572A1 +:10067000736F723D25642C20776865656C3D256439 +:100680000A53656520687474703A2F2F656E2E7753 +:10069000696B6970656469612E6F72672F77696B2A +:1006A000692F4D6F7573655F6B6579730A000A0971 +:1006B0002D204D6F7573656B6579202D0A45534369 +:1006C0002F713A09717569740A313A0964656C6170 +:1006D00079282A31306D73290A323A09696E7465B6 +:1006E0007276616C286D73290A333A096D61785FFF +:1006F00073706565640A343A0974696D655F746F77 +:100700005F6D61780A353A09776865656C5F6D6180 +:10071000785F73706565640A363A09776865656C59 +:100720005F74696D655F746F5F6D61780A0A703A16 +:10073000097072696E742076616C7565730A643A2B +:10074000097365742064656661756C74730A7570ED +:100750003A092B310A646F776E3A092D310A7067B6 +:1007600075703A092B31300A7067646F776E3A09F9 +:100770002D31300A0A7370656564203D2064656C14 +:100780007461202A206D61785F7370656564202A2A +:100790002028726570656174202F2074696D655F13 +:1007A000746F5F6D6178290A003F004D3E20004361 +:1007B0003E20004C25640A000A092D20436F6E7309 +:1007C0006F6C65202D0A4553432F713A0971756985 +:1007D000740A6D3A096D6F7573656B65790A000A65 +:1007E000092D204D61676963202D0A643A0964650B +:1007F0006275670A783A096465627567206D61748D +:100800007269780A6B3A096465627567206B65796D +:10081000626F6172640A6D3A096465627567206D82 +:100820006F7573650A763A0976657273696F6E0A39 +:10083000733A097374617475730A633A09636F6E6E +:10084000736F6C65206D6F64650A302D343A096CE6 +:1008500061796572302D34284631302D4634290AAD +:10086000506175733A09626F6F746C6F6164657281 +:100870000A003F0074696D65725F726561643332AE +:1008800028293A202530346C580A006B6579626F4C +:100890006172645F69646C653A2025580A006B6573 +:1008A00079626F6172645F70726F746F636F6C3ABC +:1008B0002025580A00686F73745F6B6579626F61F9 +:1008C00072645F6C65647328293A2025580A000A0F +:1008D000092D20537461747573202D0A004743431A +:1008E0003A20342E392E32204156522D4C49424363 +:1008F0003A20312E382E3073766E204156525F41A9 +:100900005243483A2061767233350A004F505449B9 +:100910004F4E533A204C554641204D4F5553454B71 +:1009200045592045585452414B455920434F4E5349 +:100930004F4C4520434F4D4D414E44204B45594D62 +:1009400041505F53454354494F4E20343039360AA5 +:10095000004255494C443A20383535333461372DFF +:100960006469727479202831323A32303A33342053 +:100970005365702031322032303136290A00564911 +:10098000443A2030784645454428742E6D2E6B2E0F +:1009900029205049443A203078304144422841448B +:1009A00042206B6579626F61726420636F6E766559 +:1009B0007274657229205645523A203078303130B1 +:1009C000310A00444553433A20636F6E7665727472 +:1009D00020414442206B6579626F61726420746FBC +:1009E000205553420A000A092D2056657273696F1B +:1009F0006E202D0A000A6D6F7573653A206F66666A +:100A00000A000A6D6F7573653A206F6E0A000A6BF3 +:100A10006579626F6172643A206F66660A000A6BDC +:100A20006579626F6172643A206F6E0A000A6D61C7 +:100A3000747269783A206F66660A000A6D61747292 +:100A400069783A206F6E0A000A64656275673A2019 +:100A50006F6E0A000A64656275673A206F66660AFF +:100A6000000A0A626F6F746C6F616465722E2E2EBD +:100A70002000433E200011241FBECFEFD4E0DEBF94 +:100A8000CDBF04B603FE27C08091DC019091DD014B +:100A9000A091DE01B091DF018730904BA740B04BB1 +:100AA000D1F41092DC011092DD011092DE0110925F +:100AB000DF0114BE84B7877F84BF0FB6F894A89572 +:100AC00080916000886180936000109260000FBE8A +:100AD000E0E0F8E3099511E0A0E0B1E0EAE7FDE429 +:100AE00002C005900D92A433B107D9F721E0A4E329 +:100AF000B1E001C01D92AC3DB207E1F70E949A0C33 +:100B00000C94BB260C940000FF93EF93E09134010A +:100B1000F0913501309709F00995EF91FF91089513 +:100B2000FC018591803011F0EFDFFBCF0895FF27A6 +:100B3000E0E230E247FF0CC0419597FF09C0EDE2CB +:100B40006095709580959095611D711D811D911D19 +:100B500027FF02C0219530E350E2AA27660F771FD6 +:100B6000881F991FAA1FA41710F0A41B63955A95FC +:100B7000A9F7AA3008F0A95FA05DAF93F3956115BE +:100B800071058105910541F7ED3211F4EF93F3956D +:100B9000F21718F43F93F395FBCF8F91B5DFFA95D9 +:100BA000E1F70895E991F9918591803021F085323E +:100BB00019F0AADFF9CF089520E0E8945591553255 +:100BC000C1F3503311F4689455915A3348F450539B +:100BD00090F3220F022E220F220F200D250FF4CFAB +:100BE0000EF4219589919991533619F3533729F1D0 +:100BF000533559F1BC0188279927E8945C3621F4D4 +:100C00008991999168945591543639F446EF7EF064 +:100C100077FF0DC08FEF9FEF0AC055374AE039F0DC +:100C2000583540E121F0523642E009F00895FF9333 +:100C3000EF937DDFEF91FF91B7CFFF93EF93FC012F +:100C400081918030B9F360DFFBCFFF93EF9368DFD2 +:100C5000F1CFDF93CF93CDB7DEB72596A3DFCF914A +:100C6000DF910895282F2770E82FE695E695E69501 +:100C7000EF70F0E0E95CFE4F87FF0AC081E090E092 +:100C800001C0880F2A95EAF780959081892308C0D2 +:100C900081E090E001C0880F2A95EAF79081892BC6 +:100CA000808381E080934C0108950F931F93CF932D +:100CB000DF93569A5E9A0E9498092FEF87EA91E691 +:100CC000215080409040E1F700C0000080E592E0B4 +:100CD0009F938F930E9429060F900F90C1E0D0E060 +:100CE00006E312E063E08C2F0E949C09009771F0EC +:100CF0009F938F93DF93CF931F930F930E942906A7 +:100D00000F900F900F900F900F900F909FEF29EF83 +:100D100080E0915020408040E1F700C00000219623 +:100D2000C031D105F9F663E082E00E949C0981316F +:100D3000910511F170F487309105F1F020F40497DA +:100D40000297F0F419C089309105B1F00D97C1F404 +:100D500013C08D31910581F030F48431910561F03B +:100D6000499771F409C0843C910531F0873C9105A5 +:100D700019F0813C910521F481E080934D0102C07E +:100D800010924D0163E087E00E949C0991E082305F +:100D900009F090E090934E01992341F083E292E0B4 +:100DA0009F938F930E9429060F900F9023E042E0BB +:100DB00063E082E00E941C0A86E192E09F938F9399 +:100DC0000E9429060F900F90C1E0D0E00CEF11E0D7 +:100DD00063E08C2F0E949C09009771F09F938F9382 +:100DE000DF93CF931F930F930E9429060F900F90CC +:100DF0000F900F900F900F908FEF99EF20E08150A0 +:100E000090402040E1F700C000002196C031D1059C +:100E1000F9F6E7E3F1E080E18E0F11928E13FDCF3A +:100E20008091BE0181608093BE018CEE91E00E94B2 +:100E30009005569A5E98DF91CF911F910F9108957A +:100E4000CF93DF938FE79BEB0197F1F700C0000092 +:100E50000E94180AEC01009711F481E0BDC097FDD3 +:100E600005C080914701816080934701D7FF05C08D +:100E7000809147018E7F80934701ED2FFF27EF730D +:100E8000FF27CE018F739927C6FF02C080549109B6 +:100E9000D6FF02C0E054F109A09136010A2E000CE1 +:100EA000BB0BBD010E94702681382FEF920714F40E +:100EB00081E89FEF22273327281B390B21388FEF3A +:100EC000380714F421E83FEF219520934801CF0122 +:100ED000BD010E94702681382FEF920714F481E83B +:100EE0009FEF91958195910981382FEF920714F426 +:100EF00081E89FEF8195809349018091BE0183FF36 +:100F000060C086ED91E00E949005DF93CF9380ED65 +:100F100091E09F938F930E9429068EEC91E00E94AE +:100F200090058DEB91E00E94900580913601282F6D +:100F3000082E000C330B3F938F9388EB91E09F9327 +:100F40008F930E94290686EB91E00E949005809184 +:100F500047011F928F9381EB91E09F938F930E94A3 +:100F600029068FEA91E00E94900580914801282F80 +:100F7000082E000C330B3F938F938CEA91E09F93E4 +:100F80008F930E9429068AEA91E00E949005809141 +:100F90004901282F082E000C330B3F938F9387EACB +:100FA00091E09F938F930E94290684EA91E00E942A +:100FB00090058DB79EB744960FB6F8949EBF0FBEAE +:100FC0008DBF87E491E00E94EB118091360191E0A2 +:100FD00088300CF090E0890F80933601DF91CF913B +:100FE00008951F93CF93DF9310924C01C09100019D +:100FF000D09101018FEF9FEF909301018093000149 +:10100000CF3F8FEFD80709F06AC08FE79BEB0197BE +:10101000F1F700C0000082E00E94150AEC01892B64 +:1010200009F05DC080914E01882309F458C087E023 +:101030000E94150A009709F452C09C012F773327AC +:1010400022303105A1F048F42115310569F0213035 +:10105000310599F480788A641AC02330310551F043 +:101060002F373105A1F009C08078826410C08078E4 +:1010700089640DC0807888640AC081E991E09F93FB +:101080008F930E9429060F900F9081E18FC0292F26 +:1010900033272F7733272130310579F050F0223074 +:1010A000310579F02330310581F4EC01D078D86432 +:1010B00016C0EC01D078D26412C0EC01D078DA64AA +:1010C0000EC0EC01D078D9640AC08EE791E09F93FE +:1010D0008F930E9429060F900F9080E167C0809146 +:1010E000BE0181FF18C0209709F45DC08AE691E037 +:1010F0000E949005DF93CF9385E691E09F938F93B5 +:101100000E94290683E691E00E9490050F900F90BF +:101110000F900F9003C0209709F445C0CF379FE789 +:10112000D90711F48FE705C0CF3F8FEFD80721F41F +:101130008FEF0E94320639C02D2F3327822F1C2FAC +:101140002F3F310581F4DF93CF9385E491E09F93A6 +:101150008F930E9429060E9455060F900F900F90C2 +:101160000F908C2F23C090914D01992381F0A901FC +:101170004F7755274233510521F42078822F8A601A +:1011800006C04A30510519F42078822F82630E94EC +:1011900032061F3F51F0DC2FCC27CF6FD0930101D7 +:1011A000C093000102C080E001C081E0DF91CF91D7 +:1011B0001F910895E82FF0E0E95CFE4F2081822F17 +:1011C00090E021E030E002C0220F331F6A95E2F781 +:1011D0002823392381E0232B09F480E00895E82FA8 +:1011E000F0E0E95CFE4F80810895CF92DF92EF92AC +:1011F000FF920F931F93CF93DF938091BE0181FFE6 +:1012000035C087E391E00E94900587E3E82E81E0F6 +:10121000F82EC0E0D0E092E3C92E91E0D92E0AE288 +:1012200011E0DF93CF93DF92CF920E9429068FE2E5 +:1012300091E00E949005F70181917F010E94521D6B +:101240001F928F931F930F930E94290688E291E0CB +:101250000E94900521968DB79EB708960FB6F89418 +:101260009EBF0FBE8DBFC031D105D9F6DF91CF91A2 +:101270001F910F91FF90EF90DF90CF900895682F0E +:10128000609582E00C94550A509A83E091E00197B2 +:10129000F1F700C0000050989AEB9A95F1F700C062 +:1012A0000895509A8AEB8A95F1F700C0509883E030 +:1012B00091E00197F1F700C000000895EF92FF92CE +:1012C0000F931F93CF93DF93C0E0D0E090E8E92E17 +:1012D000F12C082F10E0C7010C2E02C095958795C0 +:1012E0000A94E2F780239123892B19F00E94510977 +:1012F00002C00E9444092196C830D10561F7DF91F0 +:10130000CF911F910F91FF90EF900895489B06C0D9 +:1013100023E02A95F1F700000197C1F70895489955 +:1013200006C023E02A95F1F700000197C1F7089560 +:101330005898509808950895CF92DF92EF92FF92B7 +:101340000F931F93CF93DF9300D0CDB7DEB7F89400 +:10135000509AE3EFFBE03197F1F700C000006A8399 +:1013600089830E9451096A816C6089818295807F9E +:10137000862B0E945E090E94440984EF91E00E943E +:101380008F09892B21F4789482EE9FEF43C084EF7C +:1013900091E00E948609009711F478943BC011E116 +:1013A000C12CD12C02E882E890E00E948F097C01D8 +:1013B000882351F199270E948609882329F1CC0CB2 +:1013C000DD1C902F9E19E81A9E1518F46894C0F839 +:1013D00006C0113121F478948CEE9FEF1BC01150A0 +:1013E00011F78FE591E00E948F09892B21F4789401 +:1013F0008BEE9FEF0FC08BE590E00E948609892B52 +:10140000B1F77894C60106C07894812F90E0919549 +:10141000819591090F900F90DF91CF911F910F91BE +:10142000FF90EF90DF90CF90089560E00C949C09BE +:1014300060E083E00C949C091F93CF93DF9300D06E +:101440001F92CDB7DEB7182FF894509A83EF9BE028 +:101450000197F1F700C000002B834A8369830E9443 +:1014600051096981862F88601295107F812B0E9417 +:101470005E090E9444098FE193E00197F1F700C0F3 +:1014800000000E9451094A81842F0E945E092B812D +:10149000822F0E945E090E94440978940F900F9059 +:1014A0000F90DF91CF911F910895262F277040E074 +:1014B00062E00C941C0A80915A0108959FB7F89439 +:1014C000109251019FBF9091D301943009F057C001 +:1014D0009091E9009F703091EC00232F217030FD36 +:1014E00020E8922B24E02093E9002091EB0020FFDC +:1014F00043C02091EE0027FF3FC020914F012223DF +:1015000021F02091E80025FF37C010924F0126E01E +:101510003091E80035FD15C03091D301343061F5CC +:101520003091EB0035FD28C0215021F481E08093FB +:101530004F0122C0EFE9FFE03197F1F700C0000052 +:10154000E7CF8093F1008091E80085FD0AC080918B +:10155000E80080FFFCCF8091E8008E778093E80060 +:1015600006C08FB7F89421E0209351018FBF9F7080 +:101570009093E90080E008959F709093E9008FEFC9 +:101580000895CF93DF9300D01F92CDB7DEB79C01B3 +:101590008091D301843019F593E099833B832A83AA +:1015A0009093E9008FEF9091E800815095FD06C07F +:1015B00095ED9A95F1F700008111F5CF8091E80043 +:1015C00085FF0DC040E050E063E070E0CE01019681 +:1015D0000E945B0D8091E8008E778093E8000F9069 +:1015E0000F900F90DF91CF910895CF93DF9300D0AC +:1015F0001F92CDB7DEB72091D301243021F522E030 +:1016000029839B838A8383E08093E9008FEF909105 +:10161000E800815095FD06C095ED9A95F1F7000020 +:101620008111F5CF8091E80085FF0DC040E050E0CA +:1016300063E070E0CE0101960E945B0D8091E800AE +:101640008E778093E8000F900F900F90DF91CF91ED +:1016500008952091D3012430F1F422E02093E90091 +:101660002FEF3091E800215035FD06C035ED3A9559 +:10167000F1F700002111F5CF2091E80025FF0BC004 +:1016800040E050E065E070E00E945B0D8091E80072 +:101690008E778093E8000895CF93DF932091D30154 +:1016A000243039F521E02093E9002FEF3091E80054 +:1016B000215035FD06C035ED3A95F1F700002111B6 +:1016C000F5CF2091E80025FF14C0EC0140E050E088 +:1016D00068E070E00E945B0D8091E8008E77809357 +:1016E000E80088E0FE01A2E5B1E001900D928A9544 +:1016F000E1F7DF91CF9108958CE892E00C9490058A +:10170000209150012F5F822F62E30E94812699234E +:1017100019F02093500108951092500180915101C9 +:10172000882371F18091D301843041F58091E900E3 +:101730008F702091EC00922F917020FD90E8892B02 +:1017400094E09093E9009091EB0090FF14C0909189 +:10175000EE0097FF10C09091E80095FF03C0109233 +:10176000F100F9CF9091E80090FF05C09091E8005A +:101770009E779093E8008F708093E900109251015A +:10178000089542E061EC81E00E94640E42E061EC69 +:1017900082E00E94640E42E061EC83E00E94640EED +:1017A00042E261EC84E00C94640E8091D5018330B8 +:1017B00009F453C030F4813071F0823009F48CC0E8 +:1017C00008958A3009F478C08B3009F45EC08930FE +:1017D00009F09AC020C08091D401813A09F094C0E8 +:1017E0008091E800877F8093E8008091D8019091F4 +:1017F000D901892B21F468E082E591E003C060E023 +:1018000080E090E070E00E94A60D8091E8008B7768 +:101810008093E80008958091D401813209F074C06A +:101820008091D8019091D901892B09F06DC08091E8 +:10183000E800877F8093E8008091E80082FD05C082 +:101840008091D3018111F8CF5FC08091F100809326 +:101850005A018091E8008B7753C08091D401813A7E +:1018600009F052C08091D8019091D901892B09F0DB +:101870004BC08091E800877F8093E8008091E8006A +:1018800080FFFCCF80910C0136C08091D401813261 +:10189000D9F58091D8019091D901892BA9F5809132 +:1018A000E800877F8093E8000E94990E8091D6011E +:1018B00080930C010C9476178091D401813221F52C +:1018C0008091E800877F8093E8000E94990E8091C4 +:1018D000D70180935B0108958091D401813AA1F4EE +:1018E0008091E800877F8093E8008091E80080FF86 +:1018F000FCCF80915B018093F1008091E8008E77AE +:101900008093E8000C94990E089508950895089521 +:1019100088E892E00E9490050C94870C0E94781D44 +:101920008091D101882329F00E94A31D81110C947C +:10193000450D089584B7877F84BF0FB6F894A895A6 +:1019400080916000886180936000109260000FBEFB +:1019500090E080E80FB6F894809361009093610066 +:101960000FBE0E94850C0E9423120E94EA0E0E9464 +:101970003D0F8091E20084608093E2008EE59AE062 +:101980000E944D1D78948091D3018430E1F783E764 +:1019900092E00E9490050E94251282E091E00E9450 +:1019A000911182E692E00E9490050E94860C80913F +:1019B000D301853039F48EE592E00E9490050E94B3 +:1019C0008E0CF5CF0E942B12F2CF0C94B71D84E839 +:1019D00092E00E9490050C94E50C292F33272330C8 +:1019E0003105C9F064F42130310581F02230310530 +:1019F00009F043C084E790E024ED32E042C0213298 +:101A00003105F1F02232310541F137C082E190E039 +:101A100028E433E036C099278130910541F08230C7 +:101A2000910541F0892B49F5E0EDF2E005C0E0ECCD +:101A3000F2E002C0E0E9F2E0849190E09F0121C071 +:101A40006430D8F4E62FF0E0EE0FFF1FEF5DFE4F9D +:101A50002081318189E090E014C0643070F470E03E +:101A6000FB01EE0FFF1FE75EFE4F20813181FB017E +:101A7000EB5EFE4F808190E004C080E090E020E0CB +:101A800030E0FA0131832083089584E089BD86E047 +:101A900089BD09B400FEFDCF8091D8008F7D809371 +:101AA000D8008091E00082608093E0008091E000A7 +:101AB00081FDFCCF0895CF92DF92EF92FF920F93BA +:101AC0001F93CF93DF93EC018B016A010E94B80E44 +:101AD000811133C0C114D10439F0F60180819181A4 +:101AE000081B190BC80FD91FE12CF12C011511058A +:101AF00019F18091E80085FD16C08091E8008E778D +:101B00008093E800C114D10449F0F60180819181ED +:101B1000E80EF91EF182E08285E00FC00E94B80E47 +:101B2000882321F30AC089918093F10001501109A3 +:101B3000FFEFEF1AFF0ADACF80E0DF91CF911F911C +:101B40000F91FF90EF90DF90CF9008952091DA01F0 +:101B50003091DB012617370748F06115710539F41C +:101B60002091E8002E772093E80001C0B90140E001 +:101B70006115710591F12091D301222309F440C030 +:101B8000253009F43FC02091E80023FD3DC020919D +:101B9000E80022FD2FC02091E80020FFE9CF20912E +:101BA000F20030E0FC01CF016115710559F02830D9 +:101BB000310540F481918093F100615071092F5FEC +:101BC0003F4FF1CF41E02830310509F040E020914E +:101BD000E8002E772093E800CBCF4111CCCF0AC08C +:101BE0008091D301882361F0853061F08091E80015 +:101BF00083FD0AC08091E80082FFF2CF80E0089563 +:101C000082E0089583E0089581E008952091DA014B +:101C10003091DB012617370748F06115710539F45B +:101C20002091E8002E772093E80001C0B901FC0163 +:101C300020E06115710579F18091D301882309F4C1 +:101C40003DC0853009F43CC08091E80083FD3AC076 +:101C50008091E80082FD2CC08091E80080FFE9CFF0 +:101C60008091F20090E06115710559F0883091057E +:101C700040F424912093F10031966150710901964E +:101C8000F2CF21E0089709F020E08091E8008E77FC +:101C90008093E800CECF2111CFCF0AC08091D3012D +:101CA000882361F0853061F08091E80083FD0AC0EF +:101CB0008091E80082FFF2CF80E0089582E00895ED +:101CC00083E0089581E00895982F953058F590931A +:101CD000E900981739F07091EC002091ED005091D7 +:101CE000F00003C0242F762F50E021FF19C030915F +:101CF000EB003E7F3093EB003091ED003D7F309361 +:101D0000ED003091EB0031603093EB007093EC000C +:101D10002093ED005093F0002091EE0027FF07C0C4 +:101D20009F5FD3CF8F708093E90081E0089580E0BA +:101D300008958091D40187FF11C08091E80082FD51 +:101D400005C08091D3018111F8CF11C08091E800C6 +:101D50008B770BC08091D301882349F08091E800F4 +:101D600080FFF8CF8091E8008E778093E800089597 +:101D70002091E4003091E50095E64091EC00842F3D +:101D8000817040FF22C08091E80080FD1CC08091DE +:101D9000D301882391F0853091F08091EB0085FD8F +:101DA00010C04091E4005091E5004217530729F319 +:101DB0009A01915011F784E0089582E0089583E03C +:101DC000089581E0089580E008954091E80042FF81 +:101DD000DECF08950E94470F0E944A0FE0EEF0E028 +:101DE000808181608083E8EDF0E080818F7780835F +:101DF00019BCE3E6F0E08081816080831092D2011B +:101E000008950E94470F0E944A0F8091D8008F7753 +:101E10008093D8008091D80080688093D80080910A +:101E2000D8008F7D8093D80084E089BD86E089BD8D +:101E300009B400FEFDCF1092D3011092CF01109291 +:101E4000D1011092D00142E060E080E00E94640E77 +:101E50008091E1008E7F8093E1008091E2008160BB +:101E60008093E2008091E20088608093E20080919C +:101E7000E0008E7F8093E0000895E3E6F0E080814B +:101E80008E7F808381E08093D2010C94010F1092A9 +:101E9000E20008951092E10008951F920F920FB68C +:101EA0000F9211242F933F934F935F936F937F93E0 +:101EB0008F939F93AF93BF93EF93FF938091E10034 +:101EC00082FF0BC08091E20082FF07C08091E10099 +:101ED0008B7F8093E1000E94800B8091E10080FF66 +:101EE00019C08091E20080FF15C08091E2008E7FD2 +:101EF0008093E2008091E20080618093E200809113 +:101F0000D80080628093D80019BC85E08093D3010B +:101F10000E94880C8091E10084FF30C08091E20033 +:101F200084FF2CC084E089BD86E089BD09B400FE31 +:101F3000FDCF8091D8008F7D8093D8008091E10003 +:101F40008F7E8093E1008091E2008F7E8093E2009B +:101F50008091E20081608093E2008091CF0188232C +:101F600011F084E007C08091E30087FD02C081E0AA +:101F700001C083E08093D3010E94E70C8091E100CF +:101F800083FF29C08091E20083FF25C08091E1009A +:101F9000877F8093E10082E08093D3011092CF018C +:101FA0008091E1008E7F8093E1008091E2008E7F3E +:101FB0008093E2008091E20080618093E20042E041 +:101FC00060E080E00E94640E8091F0008860809361 +:101FD000F0000E947C0BFF91EF91BF91AF919F9118 +:101FE0008F917F916F915F914F913F912F910F90C2 +:101FF0000FBE0F901F9018951F920F920FB60F9261 +:1020000011242F933F934F935F936F937F938F93FD +:102010009F93AF93BF93CF93DF93EF93FF93C091C1 +:10202000E900CF708091EC00D82FD17080FDD0E80E +:102030001092E9008091F000877F8093F0007894FF +:102040000E9440101092E9008091F0008860809317 +:10205000F000CD2BCF70C093E900FF91EF91DF919D +:10206000CF91BF91AF919F918F917F916F915F9130 +:102070004F913F912F910F900FBE0F901F90189589 +:102080001F93CF93DF93CDB7DEB7AA970FB6F8941F +:10209000DEBF0FBECDBFE4EDF1E088E08E0F909182 +:1020A000F10091938E13FBCF0E94D50B8091E80035 +:1020B00083FF1FC18091D4019091D501492F50E039 +:1020C0004A30510508F015C1FA01E65CFF4F0C9447 +:1020D000A126803881F0823809F00BC18091D801A7 +:1020E0008F708093E9008091EB0085FB882780F951 +:1020F0001092E90006C08091D0019091D101911118 +:1021000082609091E800977F9093E8008093F100BF +:102110001092F100C8C0282F2D7F09F0EAC0882353 +:1021200019F0823061F0E5C08091D601813009F06C +:10213000E0C0933009F080E08093D1012BC0809102 +:10214000D601811127C08091D8018F7009F4D1C0C8 +:102150008093E9002091EB0020FF1CC0933021F414 +:102160008091EB00806214C09091EB00906190939D +:10217000EB0021E030E0A90102C0440F551F8A9511 +:10218000E2F74093EA001092EA008091EB00886049 +:102190008093EB001092E9008091E800877F86C071 +:1021A0008111A7C01091D6011F778091E30080783C +:1021B000812B8093E3008091E800877F8093E80083 +:1021C0000E94990E8091E80080FFFCCF8091E3008F +:1021D00080688093E300111102C082E001C083E0B7 +:1021E0008093D30186C08058823008F082C08091ED +:1021F000D6019091D7018C3D53E0950779F583E0A6 +:102200008A838AE289834FB7F894DE01139620E02F +:102210003EE051E2E32FF0E050935700E49120FFBD +:1022200003C0E295EF703F5FEF708E2F90E0EA30D1 +:1022300010F0C79601C0C0968D939D932F5F2431F7 +:1022400049F74FBF8091E800877F8093E8006AE2FA +:1022500070E0CE0101960E94A60D14C0AE014F5F42 +:102260005F4F6091D8010E94ED0CBC01892B09F4ED +:1022700040C09091E800977F9093E80089819A810F +:102280000E94060E8091E8008B778093E80031C0B1 +:10229000803879F58091E800877F8093E80080910D +:1022A000CF018093F1008091E8008E778093E80061 +:1022B0000E94990E1EC081111CC09091D6019230CF +:1022C000C0F48091E800877F8093E8009093CF016D +:1022D0000E94990E8091CF01811106C08091E30088 +:1022E00087FD02C081E001C084E08093D3010E9499 +:1022F000C10B8091E80083FF0AC08091E800877FCE +:102300008093E8008091EB0080628093EB00AA96B6 +:102310000FB6F894DEBF0FBECDBFDF91CF911F91F6 +:10232000089590936101809360010895E0916001A8 +:10233000F0916101309721F00190F081E02D099436 +:1023400080E00895EF92FF920F931F93CF93DF9356 +:10235000E0916001F09161013097B1F18C01028050 +:10236000F381E02D09958091BE0182FF2DC080FF91 +:1023700004C087E494E00E949005E80118E081E43D +:10238000E82E84E0F82E8091BE0180FF0BC088818A +:102390001F928F93FF92EF920E9429060F900F9049 +:1023A0000F900F90115021961111EDCF8091BE0129 +:1023B00080FF0AC08FE394E0DF91CF911F910F91CE +:1023C000FF90EF900C949005DF91CF911F910F91AA +:1023D000FF90EF900895E0916001F09161013097D6 +:1023E00021F00480F581E02D0994089520915E018B +:1023F00030915F018217930771F090935F01809392 +:102400005E01E0916001F0916101309721F006805A +:10241000F781E02D0994089520915C0130915D01D0 +:102420008217930771F090935D0180935C01E091B6 +:102430006001F0916101309721F00084F185E02D79 +:102440000994089508950C9422120E94E21D0E949E +:1024500055060C949B09CF92DF92EF92FF920F9357 +:102460001F93CF93DF9300D000D000D0CDB7DEB75D +:102470000E94F10783E6C82E81E0D82E00E010E02C +:10248000E02E802F0E94EF08F60141916F01F42E9B +:10249000F826B1F40F5F1F4F0031110589F78FEF58 +:1024A00089838A831B820E94EB1D8160782F9D8324 +:1024B0008C8349815A816B818D810E94EC1247C0C7 +:1024C0009091BE0191FF04C08E830E94F5088E8119 +:1024D00020E030E04F2D50E0922FBA01022E02C0D2 +:1024E000759567950A94E2F760FF2BC02983EA820D +:1024F00021E030E0690102C0CC0CDD1C9A95E2F7C6 +:1025000090E08C219D21892B09F420E02B830E94EF +:10251000EB1D8160782F9D838C8349815A816B816B +:102520008D810E94EC1249815A816B817C818D8161 +:102530000E94651DF801ED59FE4F8081C826C082BA +:1025400006C02F5F3F4F2830310531F6A3CF0E94E0 +:10255000641D0E94B8200E942007109162010E9411 +:102560009611181741F10E94961180936201909183 +:10257000BE0192FF0EC090FF0CC01F928F9389E5A1 +:1025800094E09F938F930E9429060F900F900F90D5 +:102590000F908091620126960FB6F894DEBF0FBEB1 +:1025A000CDBFDF91CF911F910F91FF90EF90DF9002 +:1025B000CF900C94761D26960FB6F894DEBF0FBE12 +:1025C000CDBFDF91CF911F910F91FF90EF90DF90E2 +:1025D000CF9008950C943F09CF93DF93CDB7DEB72A +:1025E0002B970FB6F894DEBF0FBECDBF942F4F834D +:1025F000252F588769877A878B874A855B85452B86 +:1026000021F02F3F09F59F3FF9F4DE01119686E096 +:10261000FD0111928A95E9F785E0FE013796019058 +:102620000D928A95E1F749815A816B817C818D8178 +:102630009E810E941F1A2B960FB6F894DEBF0FBE24 +:10264000CDBFDF91CF9108954F81588569857A85F7 +:102650008B850E94651DD9CFCF93882309F4CDC007 +:10266000C82F823859F40E94961181FDC6C089E3B3 +:102670000E94AE1C0E94271D89E30CC0833879F4A8 +:102680000E94961180FDB9C083E50E94AE1C0E9495 +:10269000271D83E50E94CB1CCF910C94271D843805 +:1026A00059F40E94961182FDA8C087E40E94AE1CD6 +:1026B0000E94271D87E4EECF8CEF8C0F813A48F4FF +:1026C0008C2F0E94E423811198C08C2F0E94AE1C95 +:1026D000E3CF80E28C0F883048F4C77081E001C0FE +:1026E000880FCA95EAF70E94ED1CD6CF8BE58C0FB8 +:1026F000833078F4C53A29F0C63A31F083E890E0A7 +:1027000005C081E890E002C082E890E0CF910C948F +:10271000F61188E58C0F853108F06FC0C83A61F179 +:10272000C93A69F1CA3A71F1CB3A79F1CC3A81F1FF +:10273000CD3A89F1CE3A91F1CF3A99F1C13BA1F16D +:10274000C03BA9F1C23BB1F1C33BB9F1C43BC1F1FC +:10275000C53BC9F1C63BD1F1C73BD9F1C83BE1F15B +:10276000C93BE9F1CA3BF1F1CB3BF9F1CC3B09F4B0 +:102770003FC080E090E03EC082EE90E03BC089EE3A +:1027800090E038C08AEE90E035C085EB90E032C032 +:1027900086EB90E02FC083EB90E02CC084EB90E0C0 +:1027A00029C087EB90E026C08CEC90E023C08DEC34 +:1027B00090E020C083E891E01DC08AE891E01AC053 +:1027C00082E991E017C084E991E014C081E292E0CF +:1027D00011C083E292E00EC084E292E00BC085E279 +:1027E00092E008C086E292E005C087E292E002C073 +:1027F0008AE292E0CF910C940C12CF910895882335 +:1028000009F44BC0823859F40E94961181FF45C0EB +:1028100089E30E94AE1C0E94271D89E30CC0833807 +:1028200071F40E94961180FF38C083E50E94AE1CAF +:102830000E94271D83E50E94CB1C0C94271D843821 +:1028400059F40E94961182FF28C087E40E94AE1CB2 +:102850000E94271D87E4EFCF9CEF980F913A58F321 +:1028600090E2980F983050F4877091E001C0990F72 +:102870008A95EAF7892F0E94F31CDFCF9BE5980F1A +:10288000933020F480E090E00C94F611885A853162 +:1028900020F480E090E00C940C120895882321F03D +:1028A0000E94ED1C0C94271D0895882321F00E949E +:1028B000F31C0C94271D0895CF92DF92EF92FF92A4 +:1028C0000F931F93CF93DF9300D000D000D0CDB7EC +:1028D000DEB725E0FC01DE01119601900D922A95EC +:1028E000E1F7FC0140813181F280258122952F7032 +:1028F00063817481672B09F4D8C23F3F19F44F3FBD +:1029000009F4D3C26C0149833A8389819A812E8369 +:102910000E946D1C182F092F0E946C1C0E947C1BAA +:10292000E02FE295EF70F0E0EC5BFF4F2E810C940E +:10293000A126802F807F902F9F70092F882311F070 +:102940000295007FFF2049F0002309F45FC2802F29 +:102950000E94001D0E94271D59C2812F0E94FF1353 +:10296000002309F4A2C2802F0E94061D26960FB6EE +:10297000F894DEBF0FBECDBFDF91CF911F910F91B5 +:10298000FF90EF90DF90CF900C94271D802F807FD9 +:10299000902F9F70092F803211F00295007F112334 +:1029A00019F0113001F129C0FF20A9F0802F222356 +:1029B00049F1213039F526960FB6F894DEBF0FBEE7 +:1029C000CDBFDF91CF911F910F91FF90EF90DF90DE +:1029D000CF900C94101D222319F0213009F465C208 +:1029E0000E94131D2CC0FF20E9F0263008F05DC2C4 +:1029F0000E94EA1C802329F022C0FF20F1F021115F +:102A000015C0802F26960FB6F894DEBF0FBECDBF3F +:102A1000DF91CF911F910F91FF90EF90DF90CF90BA +:102A20000C944E14253008F040C209C0F60185818F +:102A300080FFECC18F708583E4CF2111FBC1802F13 +:102A400069C1202F26952695237030E02115310588 +:102A500021F021303105C9F028C2FF2021F0812F5B +:102A6000902F937002C080E090E026960FB6F89405 +:102A7000DEBF0FBECDBFDF91CF911F910F91FF90B1 +:102A8000EF90DF90CF900C94F611FF2021F0812F72 +:102A9000902F937002C080E090E026960FB6F894D5 +:102AA000DEBF0FBECDBFDF91CF911F910F91FF9081 +:102AB000EF90DF90CF900C940C12812FFF2019F033 +:102AC0000E943E1F02C00E94A61F26960FB6F894D1 +:102AD000DEBF0FBECDBFDF91CF911F910F91FF9051 +:102AE000EF90DF90CF900C942B20802F837009F013 +:102AF00078C0F110DAC1812F829586958770880F92 +:102B0000880F912F9F70C92ED12CE12CF12C082E0B +:102B100004C0CC0CDD1CEE1CFF1C0A94D2F714FF81 +:102B200012C04FE050E060E070E004C0440F551F59 +:102B3000661F771F8A95D2F7CB01BA016095709511 +:102B40008095909503C060E070E0CB01202F269522 +:102B500026952370422F50E042305105D1F043308A +:102B6000510559F16C297D298E299F294130510544 +:102B700041F126960FB6F894DEBF0FBECDBFDF91B0 +:102B8000CF911F910F91FF90EF90DF90CF900C9419 +:102B9000911B6C297D298E299F2926960FB6F894C2 +:102BA000DEBF0FBECDBFDF91CF911F910F91FF9080 +:102BB000EF90DF90CF900C94A31B0E94911BC70154 +:102BC000B60126960FB6F894DEBF0FBECDBFDF91DB +:102BD000CF911F910F91FF90EF90DF90CF900C94C9 +:102BE0007F1BFF2019F0802F817001C086958823FC +:102BF00009F45BC1812F829586958770880F880FB5 +:102C0000912F9F70C92ED12CE12CF12C082E04C0DD +:102C1000CC0CDD1CEE1CFF1C0A94D2F714FF12C072 +:102C20004FE050E060E070E004C0440F551F661FA5 +:102C3000771F8A95D2F7CB01BA0160957095809580 +:102C4000909503C060E070E0CB01202F269526957B +:102C50002370422F50E042305105D1F043305105EE +:102C600059F16C297D298E299F294130510541F167 +:102C700026960FB6F894DEBF0FBECDBFDF91CF9181 +:102C80001F910F91FF90EF90DF90CF900C94481C14 +:102C90006C297D298E299F2926960FB6F894DEBFD0 +:102CA0000FBECDBFDF91CF911F910F91FF90EF909D +:102CB000DF90CF900C945A1C0E94481CC701B601AB +:102CC00026960FB6F894DEBF0FBECDBFDF91CF9131 +:102CD0001F910F91FF90EF90DF90CF900C94361CD6 +:102CE000103F41F118F4103E48F48BC0123F09F434 +:102CF00050C0D8F1133F09F460C083C01F70802F0B +:102D00008F71FF2021F00E94CF1B812F7BCE0E946C +:102D1000F01B812F26960FB6F894DEBF0FBECDBFF5 +:102D2000DF91CF911F910F91FF90EF90DF90CF90A7 +:102D30000C945514FF20A9F0253008F0B6C0802F60 +:102D40008F7126960FB6F894DEBF0FBECDBFDF9110 +:102D5000CF911F910F91FF90EF90DF90CF900C9447 +:102D6000151C263008F0A1C0EACFFF20A1F0802F6B +:102D70008F7126960FB6F894DEBF0FBECDBFDF91E0 +:102D8000CF911F910F91FF90EF90DF90CF900C9417 +:102D9000CF1BFF2061F3802F8F7126960FB6F8941A +:102DA000DEBF0FBECDBFDF91CF911F910F91FF907E +:102DB000EF90DF90CF900C94F01BFF2091F0802FCC +:102DC0008F7126960FB6F894DEBF0FBECDBFDF9190 +:102DD000CF911F910F91FF90EF90DF90CF900C94C7 +:102DE000BA1B26960FB6F894DEBF0FBECDBFDF919B +:102DF000CF911F910F91FF90EF90DF90CF900C94A7 +:102E0000B51BFF20A1F0222309F4B1CF812F269614 +:102E10000FB6F894DEBF0FBECDBFDF91CF911F91EB +:102E20000F91FF90EF90DF90CF900C942C13222302 +:102E300009F4B1CF812F26960FB6F894DEBF0FBEEE +:102E4000CDBFDF91CF911F910F91FF90EF90DF9059 +:102E5000CF900C94FF13402F4F70612FC6010E943A +:102E6000B41E26960FB6F894DEBF0FBECDBFDF911D +:102E7000CF911F910F91FF90EF90DF90CF900C9426 +:102E8000C71A402F4F70612FC60126960FB6F894CF +:102E9000DEBF0FBECDBFDF91CF911F910F91FF908D +:102EA000EF90DF90CF900C94B71E26960FB6F89453 +:102EB000DEBF0FBECDBFDF91CF911F910F91FF906D +:102EC000EF90DF90CF9008950E940D1D0E94DC1CB2 +:102ED0000E94271D0E945F210E942B2080E090E02D +:102EE0000E94F61180E090E00C940C120E94FD1CF0 +:102EF0000C9464170E946D1C292F22952F7030E0CE +:102F00002C3031054CF42A3031056CF42250310953 +:102F10002230310588F407C02C30310549F02F30BC +:102F2000310531F009C0803E48F0803F29F406C0E9 +:102F300093FB882780F9089580E0089581E0089543 +:102F4000CF93DF9300D000D01F92CDB7DEB70F90A4 +:102F50000F900F900F900F90DF91CF910895CF9326 +:102F6000DF9300D000D000D0CDB7DEB726960FB6E5 +:102F7000F894DEBF0FBECDBFDF91CF910895CF9300 +:102F8000DF93C091730180917401C817A1F0D0E064 +:102F9000CE0166E070E00E947026FC01EB58FE4F07 +:102FA0004081518162817381848195810E94AF1734 +:102FB0002196C770E8CFDF91CF9108954091A50188 +:102FC0005091A6016091A7017091A8018091A9017B +:102FD0009091AA010C94AF17CF93DF938091AA012F +:102FE00082958F7009F05CC08091A701882309F455 +:102FF00057C020917301D09174014091A501C091F7 +:10300000A601E091A801F091A9012D1709F448C08B +:1030100030E0309709F440C0CF3F11F44F3FE1F169 +:10302000C90166E070E00E947026DC01AB58BE4F1B +:1030300011968C911197C8132FC08C9148132CC0F6 +:1030400012968C911297811127C013968D919C91A5 +:1030500014978E179F0708F401978E1B9F0B883CCF +:103060009105D0F48091AA018F7080618093AA01AC +:10307000C90166E070E00E947026FC01E658FE4F30 +:1030800090819F709061908385EA91E00E945C142A +:10309000DF91CF910C94BF172F5F3F4F2770B5CFB3 +:1030A000DF91CF910895BF92CF92DF92EF92FF927E +:1030B0000F931F93CF93DF93CDB7DEB761970FB612 +:1030C000F894DEBF0FBECDBF8C0185E0F801DE01B4 +:1030D0001D9601900D928A95E1F7D8014C911196B9 +:1030E0002C9111971296EC9012971396CD90DC903C +:1030F00014975091A5016091A6018091A80190912B +:10310000A901009709F46EC16F3F19F45F3F09F4FC +:1031100069C1B090A701BB2009F4C3C03091AA01D6 +:10312000C816D90628F0F601E81BF90BCF0104C038 +:10313000809590958C0D9D1DFF24F394883C9105FE +:1031400088F0F12C307F09F0CBC07C2DD98AC88A59 +:10315000522F6E2D89890E94A01785EA91E00E9466 +:103160005C14B4C0832F807F09F049C0621314C07F +:10317000541312C0E11010C03F7030613093AA01A7 +:103180000E94DE1785EA91E00E945C148091AA01FA +:10319000D80115968C9331C0CD2831F12F3F11F411 +:1031A0004F3F11F1FE2CE1101FC0E09173013091EF +:1031B0007401E31709F45CC0F0E0CF0166E070E051 +:1031C0000E947026DC01AB58BE4F11968C9111976E +:1031D000281307C08C91481304C012968C9181115A +:1031E00003C03196E770E5CFFE2CEE2009F416C13E +:1031F0008091AA0181608093AA01F12C0FC1621312 +:1032000008C0541306C0E11004C08091AA01D8017F +:10321000C1C04D872E878D859E850E947A17882391 +:10322000E1F1EE20D1F12091AA01822F82958F70D9 +:1032300090E0029774F08091A5019091A601988783 +:103240008F831986DB86CA862C87CE0107960E945B +:103250005C1486E0F801A5EAB1E001900D928A9530 +:10326000E1F70E94EC170E94DE17FF24F394D6C00A +:103270004D872E878D859E850E946D1C292F229556 +:103280002F7030E0223031050CF0BCC09F7009F087 +:10329000B6C0805E883008F4C1C0C8010E945C14CA +:1032A000E4CFC816D90608F453C0F601E81BF90BA1 +:1032B000CF01883C910508F450C0F12C7C2DD98AAF +:1032C000C88A522F6E2D89890E94A017E5EAF1E085 +:1032D00086E0DF011D928A95E9F70E94DE179EC005 +:1032E000621314C0541312C0E11010C08091AA01DF +:1032F000F8018583C8010E945C1486E0E5EAF1E0EC +:10330000DF011D928A95E9F7FB2C88C04D872E8737 +:103310008D859E850E947A17882309F4BECFEE2002 +:1033200009F4BBCF2091AA01822F82958F7090E083 +:1033300002970CF48ECF8091A5019091A6019A83FB +:1033400089831B82DD82CC822E83CE0101967FCFC2 +:10335000809590958C0D9D1DACCFFE2CEE2009F430 +:103360009CCF62132EC054132CC02091AA0120FDC3 +:103370001FC0822F82958F70D9F0D80115962C939B +:1033800015978F3049F08F5F982F9295907F822FFD +:103390008F70892B15968C93C8010E945C1486E06F +:1033A000F801A5EAB1E001900D928A95E1F795CF79 +:1033B00086E0F801A5EAB1E001900D928A95E1F767 +:1033C0002DC04D872E878D859E850E947A1781118D +:1033D00040CF8091AA0181608093AA01C8010E9418 +:1033E0005C141CC0EE2009F458CF4D872E878D85C4 +:1033F0009E850E947A17882309F44FCF2ACF811126 +:1034000048CF0CC0243031050CF047CF9F7009F431 +:1034100040CFF8019581907F09F03BCF8F2D6196C9 +:103420000FB6F894DEBF0FBECDBFDF91CF911F91D5 +:103430000F91FF90EF90DF90CF90BF900895CF93C2 +:10344000DF93CDB7DEB72C970FB6F894DEBF0FBE73 +:10345000CDBF4F83588769877A878B879C87CE013A +:1034600007960E945318882371F08F8198852A85CA +:103470003B85232B09F43FC09F3F09F068C08F3F75 +:1034800009F065C038C086E0FE013796DE0111966E +:1034900001900D928A95E1F76F817885EA85FB8529 +:1034A000309749F17F3F11F46F3F29F1809174010A +:1034B00090E09C012F5F3F4F2770332740917301AD +:1034C00050E02417350709F44BC069837A83FD83E4 +:1034D000EC8366E070E00E947026DC01AB58BE4FC2 +:1034E00096E0FE01319601900D929A95E1F72093B6 +:1034F00074010E94BF178091730190917401891724 +:10350000E9F190E066E070E00E9470268B589E4FD3 +:103510000E945318882391F18091730190E066E036 +:1035200070E00E947026FC01EB58FE4F40815181F3 +:1035300062817381848195810E94AF1780917301AC +:1035400090E001968770992780937301D4CF4F81C3 +:10355000588569857A858B859C850E94AF17CBCF6E +:103560000E9476171092740110927301E5EAF1E05F +:1035700086E0DF011D928A95E9F7BDCF2C960FB644 +:10358000F894DEBF0FBECDBFDF91CF910895DF92DB +:10359000EF92FF920F931F93CF93DF93FC01892B40 +:1035A00009F48AC0E12CF12CDD24D394EF0121969B +:1035B0008491853709F461C058F4843708F04EC00F +:1035C000843008F06AC08130D1F0823071F174C06B +:1035D000883709F45DC050F4863709F455C0873741 +:1035E00009F06AC08E2D0E94FA1C54C09CE7980F07 +:1035F000903708F061C08F770E94FF1350C08F0191 +:103600000E5F1F4FFE01849190E2980F983050F4A6 +:103610008770FD2D01C0FF0F8A95EAF78F2F0E945A +:10362000001D14C00E942C1313C08F010E5F1F4F8A +:10363000FE01C49180E28C0F883060F4C7708D2D3C +:1036400001C0880FCA95EAF70E94061D0E94271D37 +:10365000E80125C08C2F0E94FF13FACF9F012E5F37 +:103660003F4FFE01C491CC2369F08FE99FE00197A1 +:10367000F1F700C00000C150F6CF9F012E5F3F4F11 +:10368000FE01F490E9010BC00E94EA1CE82E07C07D +:103690000E94FD1C0E94271D02C00E942C138F2D2A +:1036A000882341F0EFE9FFE03197F1F700C0000017 +:1036B0008150F6CFFE017ACFDF91CF911F910F910C +:1036C000FF90EF90DF9008956093AF017093B00189 +:1036D0008093B1019093B2010E94741D0C94641701 +:1036E0006093AB017093AC018093AD019093AE01F8 +:1036F0000E94751D0C94641708950C94641B0F931D +:103700001F930091AF011091B0012091B101309150 +:10371000B201602B712B822B932B1F910F910C9474 +:10372000641B0F931F930091AF011091B001209182 +:10373000B1013091B20160237123822393231F9141 +:103740000F910C94641B0F931F930091AF01109184 +:10375000B0012091B1013091B20160277127822719 +:1037600093271F910F910C94641B60E070E0CB01D4 +:103770000C94701B0F931F9341E050E060E070E0E9 +:103780008A019B0104C0000F111F221F331F8A955D +:10379000D2F7C901B8011F910F910C94701B0F93C0 +:1037A0001F9341E050E060E070E004C0440F551FFB +:1037B000661F771F8A95D2F78091AB019091AC017B +:1037C000A091AD01B091AE018A019B01082B192B8C +:1037D0002A2B3B2BC901B8011F910F910C94701B30 +:1037E0000F931F9341E050E060E070E004C0440F8D +:1037F000551F661F771F8A95D2F7409550956095A3 +:1038000070958091AB019091AC01A091AD01B09108 +:10381000AE018A019B01082319232A233B23C901F6 +:10382000B8011F910F910C94701B0F931F9341E0EF +:1038300050E060E070E004C0440F551F661F771F22 +:103840008A95D2F78091AB019091AC01A091AD0126 +:10385000B091AE018A019B01082719272A273B272F +:10386000C901B8011F910F910C94701B0F931F9306 +:103870000091AB011091AC012091AD013091AE01EE +:10388000602B712B822B932B1F910F910C94701B2B +:103890000F931F930091AB011091AC012091AD01EA +:1038A0003091AE0160237123822393231F910F91E6 +:1038B0000C94701B0F931F930091AB011091AC01FE +:1038C0002091AD013091AE016027712782279327A7 +:1038D0001F910F910C94701B0895CF92DF92EF927D +:1038E000FF920F931F93CF93DF938C01C090AF0192 +:1038F000D090B001E090B101F090B2014091AB01E5 +:103900005091AC016091AD017091AE01C42AD52AED +:10391000E62AF72ACFE1D0E0D701C6010C2E04C079 +:10392000B695A795979587950A94D2F780FF07C01B +:10393000B8018C2F0E94851E8130910531F42197AA +:1039400058F7B80180E00E94851EDF91CF911F914A +:103950000F91FF90EF90DF90CF90089520910D018F +:1039600030910E01F90132969FEF40E051915817C6 +:1039700089F09F3F19F4511101C0942F4F5F4630D9 +:10398000A9F79F3F39F0F901E90FF11D97FDFA956D +:1039900082830895089520910D0130910E01F9015F +:1039A0003296285F3F4F9081981301C01082319664 +:1039B000E217F307C1F7089581E090E0E0910D016F +:1039C000F0910E01E80FF91F1082019688309105E1 +:1039D000A9F708958091BD0108959091BD01892BAB +:1039E0008093BD01089580959091BD0189238093B6 +:1039F000BD0108958093BD0108951092BD01089501 +:103A00009091BC01892B8093BC0108958095909181 +:103A1000BC0189238093BC0108951092BC010895D4 +:103A20008093B30108951092B301089580910D0120 +:103A300090910E01FC0131969C01285F3F4F80E080 +:103A4000919191118F5FE217F307D1F70895E091FB +:103A50000D01F0910E018091BD018083E0910D0177 +:103A6000F0910E0190818091BC01892B808380911F +:103A7000B301882361F0E0910D01F0910E01908176 +:103A8000892B80830E94161D81111092B3018091B1 +:103A90000D0190910E010C94A21190933501809329 +:103AA000340108958295982F9C7C292F2695269580 +:103AB000982F9373990F990F922B892F8A7A869555 +:103AC0009575990F892B08950895CF93DF9300D0B2 +:103AD00000D01F92CDB7DEB70F900F900F900F90D0 +:103AE0000F90DF91CF910895089508950C94EA12F4 +:103AF0008091D301843021F11092BF0120E488E14C +:103B000090E00FB6F894A895809360000FBE2093C4 +:103B1000600083B7817F846083BF83B7816083BF88 +:103B20007894889583B78E7F83BF0FB6F894A89555 +:103B300080916000886180936000109260000FBEE9 +:103B4000089508950895CF930E94A11D0E94F10742 +:103B50000E94A21DC0E08C2F0E94EF08811104C0BA +:103B6000CF5FC031C1F701C081E0CF9108950C94BF +:103B700076171F920F920FB60F9211248F939F9377 +:103B8000AF93BF938091BF01811113C08091C00199 +:103B90009091C101A091C201B091C3014196A11DB4 +:103BA000B11D8093C0019093C101A093C201B09355 +:103BB000C301BF91AF919F918F910F900FBE0F9056 +:103BC0001F90189582E084BD93E095BD9AEF97BD54 +:103BD00080936E0008952FB7F8948091C001909162 +:103BE000C101A091C201B091C3012FBF08952FB7A9 +:103BF000F8946091C0017091C1018091C2019091CF +:103C0000C3012FBF0895CF92DF92EF92FF920F93DF +:103C10001F932FB7F8944091C0015091C10160915A +:103C2000C2017091C3012FBF6A017B01EE24FF2402 +:103C30008C0120E030E0C016D106E206F30610F455 +:103C4000415051099A01281B390BC9011F910F914D +:103C5000FF90EF90DF90CF9008951F920F920FB6D4 +:103C60000F9211248F939F93AF93BF938091C001C4 +:103C70009091C101A091C201B091C3010196A11D13 +:103C8000B11D8093C0019093C101A093C201B09374 +:103C9000C301BF91AF919F918F910F900FBE0F9075 +:103CA0001F9018950E94EA0EF8942FEF87EA91E68C +:103CB000215080409040E1F700C0000087E090EB89 +:103CC000DC018093DC019093DD01A093DE01B093D1 +:103CD000DF019CE088E10FB6F894A895809360001E +:103CE0000FBE90936000FFCFE92FF0E093E0EE0F5E +:103CF000FF1F9A95E1F7E80FF11DE855FF4F9491EA +:103D0000892F8F7092959F700895CF93C82FCB0104 +:103D10000E94741E492F90E0242F30E054E0220FBF +:103D2000331F5A95E1F7282B392B2038310519F428 +:103D300080E090E017C0EC2FF0E023E0EE0FFF1FD3 +:103D40002A95E1F74770E40FF11D34E0EE0FFF1FF5 +:103D50003A95E1F7E80FF91FEE0FFF1FE050F84921 +:103D600085919491CF91089580E090E00895089511 +:103D70008091C60180FF0CC08091120190E065E047 +:103D800070E00E94702695958795959587952EC031 +:103D900081FF0AC08091120190E065E070E00E940E +:103DA00070269595879522C082FF08C080911201E8 +:103DB00090E065E070E00E94702618C02091C70175 +:103DC0002223D1F030911101231780F78091120145 +:103DD00090E065E070E00E947026622F70E00E9423 +:103DE0007026632F70E00E948D26CB0180389105EC +:103DF00030F4009731F0089585E090E008958FE762 +:103E0000089581E008958091C60180FF08C0609107 +:103E1000100170E0759567957595679523C081FFD2 +:103E200006C06091100170E0759567951BC082FF18 +:103E300004C06091100170E012C06091C701662358 +:103E4000D1F020910F016217A0F78091100170E06E +:103E500090E00E947026622F70E00E948D266038EC +:103E6000710528F46115710521F0862F08958FE7FB +:103E7000089581E0089561E070E0F4CF803F21F47F +:103E80000E94B81E819504C0813F29F40E94B81E8B +:103E90008093CA010895823F21F40E94B81E819543 +:103EA00004C0833F29F40E94B81E8093C90108957D +:103EB000893F19F40E94031F05C08A3F31F40E9414 +:103EC000031F81958093CB0108958B3F21F40E94BD +:103ED000031F819504C08C3F29F40E94031F809327 +:103EE000CC010895843F21F48091C801816017C0FE +:103EF000853F21F48091C801826011C0863F21F482 +:103F00008091C80184600BC0873F21F48091C80173 +:103F1000886005C0883F31F48091C801806180933A +:103F2000C80108958D3F21F48091C60181600BC0C6 +:103F30008E3F21F48091C601826005C08F3F29F435 +:103F40008091C60184608093C6010895803F39F452 +:103F50008091CA0187FF6CC01092CA0169C0813F7D +:103F600029F48091CA011816BCF362C09091C9016E +:103F7000823F29F497FF5CC01092C90159C0833F6A +:103F800019F41916CCF354C0893F41F48091CB0148 +:103F900018160CF04DC01092CB014AC08A3F29F48C +:103FA0008091CB0187FF44C0F6CF8B3F39F48091DD +:103FB000CC0187FF3DC01092CC013AC08C3F29F460 +:103FC0008091CC011816BCF333C0843F21F480915A +:103FD000C8018E7F17C0853F21F48091C8018D7F75 +:103FE00011C0863F21F48091C8018B7F0BC0873FB1 +:103FF00021F48091C801877F05C0883F31F480910A +:10400000C8018F7E8093C80113C08D3F21F4809139 +:10401000C6018E7F0BC08E3F21F48091C6018D7F3B +:1040200005C08F3F29F48091C6018B7F8093C60124 +:104030008091C90181110EC08091CA0181110AC00D +:104040008091CB01811106C08091CC01811102C009 +:104050001092C70108958091BE0183FF7EC08BE856 +:1040600094E00E9490058091C8011F928F9386E88A +:1040700094E09F938F930E94290684E894E00E9425 +:1040800090058091C901282F082E000C330B3F9317 +:104090008F9381E894E09F938F930E9429068FE786 +:1040A00094E00E9490058091CA01282F082E000CF0 +:1040B000330B3F938F938CE794E09F938F930E94F1 +:1040C00029068AE794E00E9490058091CB01282F71 +:1040D000082E000C330B3F938F9387E794E09F9358 +:1040E0008F930E94290685E794E00E9490058091B5 +:1040F000CC01282F082E000C330B3F938F9382E7BF +:1041000094E09F938F930E9429068FE694E00E948B +:1041100090058091C7011F928F938CE694E09F9346 +:104120008F930E9429068AE694E00E949005809170 +:10413000C6011F928F9387E694E09F938F930E940E +:10414000290684E694E00E9490058DB79EB74C96B0 +:104150000FB6F8949EBF0FBE8DBF88EC91E00E9411 +:10416000EB110E94EB1D9093C5018093C40108954B +:104170001F93CF93DF938091C4019091C5010E945A +:10418000031EFC012091C701222329F09091130105 +:10419000892F90E007C08091140190E06AE070E000 +:1041A0000E947026E817F90708F485C08091C901BC +:1041B000C091CA01D091CB011091CC01811107C0EF +:1041C000C11175C0D11173C0111171C074C02F3FDE +:1041D00019F02F5F2093C701181624F40E94B81E0F +:1041E0008093C9018091C90187FF05C00E94B81E54 +:1041F00081958093C9011C1624F40E94B81E8093F7 +:10420000CA018091CA0187FF05C00E94B81E81952E +:104210008093CA016091C901662331F1C091CA013E +:10422000CC2311F1062E000C770B880B990B0E9402 +:104230006F2523E333E343E35FE30E94D3250E942A +:1042400037256093C9016C2FCC0F770B880B990B26 +:104250000E946F2523E333E343E35FE30E94D3250A +:104260000E9437256093CA011D1624F40E94031F83 +:104270008093CB018091CB0187FF05C00E94031F73 +:1042800081958093CB01111624F40E94031F809323 +:10429000CC018091CC0187FF05C00E94031F81954E +:1042A0008093CC01DF91CF911F910C942B202F3F55 +:1042B00009F08FCF97CFDF91CF911F910895E8EC50 +:1042C000F1E085E0DF011D928A95E9F71092C701C0 +:1042D0001092C60108958EEA96E00E9490051F9202 +:1042E00081E08F931F9285E08F9380E696E09F9305 +:1042F0008F930E9429060F900F900F900F900F90B0 +:104300000F9008958330E9F128F4813061F0823014 +:1043100009F10895853009F462C008F449C0863077 +:1043200009F474C0089580911401262F30E0280FFD +:10433000311D2F3F310524F4680F6093140103C031 +:104340008FEF80931401809114011F928F9389E95C +:1043500095E072C080911301262F30E0280F311DA7 +:104360002F3F310524F4680F6093130103C08FEFD2 +:1043700080931301809113011F928F9387E895E03A +:104380005BC080911201262F30E0280F311D2F3F96 +:10439000310524F4680F6093120103C08FEF8093FE +:1043A0001201809112011F928F9384E795E044C01F +:1043B00080911101262F30E0280F311D2F3F31054C +:1043C00024F4680F6093110103C08FEF80931101F3 +:1043D000809111011F928F938FE595E02DC0809100 +:1043E0001001262F30E0280F311D2F3F310524F416 +:1043F000680F6093100103C08FEF809310018091CC +:1044000010011F928F9386E495E016C080910F01F2 +:10441000262F30E0280F311D2F3F310524F4680F7F +:1044200060930F0103C08FEF80930F0180910F0104 +:104430001F928F938BE295E09F938F930E942906A2 +:104440000F900F900F900F900895833081F128F412 +:10445000813059F08230D1F00895853009F449C097 +:10446000B8F1863009F456C0089580911401681798 +:1044700020F4861B8093140102C0109214018091D5 +:1044800014011F928F938CE195E054C08091130129 +:10449000681720F4861B8093130102C01092130149 +:1044A000809113011F928F938AE095E043C0809121 +:1044B0001201681720F4861B8093120102C010922B +:1044C0001201809112011F928F9387EF94E032C006 +:1044D00080911101681720F4861B8093110102C09E +:1044E00010921101809111011F928F9382EE94E03E +:1044F00021C080911001681720F4861B8093100161 +:1045000002C010921001809110011F928F9389ECCC +:1045100094E010C080910F01681720F4861B8093EF +:104520000F0102C010920F0180910F011F928F9313 +:104530008EEA94E09F938F930E9429060F900F902C +:104540000F900F900895CF93C82F1F928F9383EBF6 +:1045500097E09F938F930E94290681E090E0A0E06E +:10456000B0E0BC01CD0104C0660F771F881F991F02 +:10457000CA95D2F70E947D1B0F900F900F900F905D +:10458000CF910C947617CF93873288F58E3108F04F +:104590000BC18E3009F487C0D8F4873009F460C0AD +:1045A0008B3009F44FC0863009F002C18091BE0102 +:1045B000817F8E7F8093BE0188EB97E00E949005FB +:1045C00082E79AE00E94900581E08093CE0146C088 +:1045D000863109F4B0C020F4803109F47AC0E8C013 +:1045E000893109F491C08B3109F449C0E1C08833A5 +:1045F00049F150F4893209F4D5C0853309F4D2C0A9 +:10460000873209F0D5C0CEC0833409F4CBC028F47A +:104610008A3308F4CDC08953C8C0883409F0C8C0B3 +:104620000E94761781E69AE00E9490052FEF83EDB5 +:1046300090E3215080409040E1F700C000000E94CC +:10464000521E0CC08FED97E041C088E49AE00E94B2 +:1046500090058091BE0181608093BE01C1E0ADC034 +:104660008091BE01C82FC17080FFEFCF84E59AE032 +:104670000E9490058091BE01817F8E7F3FC0909106 +:10468000BE0191FBCC27C0F981E0C827892FC0FB70 +:1046900081F98093BE01CC2319F08BE39AE029C005 +:1046A0008DE29AE013C09091BE0192FBCC27C0F935 +:1046B00081E0C827892FC0FB82F98093BE01CC23FB +:1046C00019F08EE19AE015C08EE09AE00E94900504 +:1046D000C5CF9091BE0193FBCC27C0F981E0C827DC +:1046E000892FC0FB83F98093BE01CC2351F082E077 +:1046F0009AE00E9490058091BE0181608093BE0186 +:104700005CC085EF99E0E2CF86EE99E00E949005CB +:1047100083EC99E00E9490058EE799E00E94900555 +:1047200081E599E00E9490058CE099E00E94900557 +:104730008DED98E0CBCF8FEC98E00E9490050E9421 +:1047400096111F928F9385EB98E09F938F930E9411 +:10475000290680910C011F928F938EE998E09F9318 +:104760008F930E94290680915B011F928F938BE8A3 +:1047700098E09F938F930E9429060E94F71D9F93B4 +:104780008F937F936F9384E798E09F938F930E941A +:1047900029068DB79EB742960FB6F8949EBF0FBEFE +:1047A0008DBF5CCF80E001C08D510E94A32256CF07 +:1047B00082E798E00E949005C0E08C2FCF91089589 +:1047C00080E0089580E00895CF93C82F8091CE01B6 +:1047D000813069F020F0823009F449C040C167E0BF +:1047E0008FE00E94DA08882309F43FC106C067E021 +:1047F0008FE00E94DA08882361F08C2F0E94E0236A +:10480000811104C08C2F0E94C3222FC081E090E050 +:104810002CC08C2F0E94E223811126C0C431E1F00C +:1048200070F4CB3081F0C031D1F40E946B218BEA5F +:1048300097E00E94900582E08093CE0115C0C932B6 +:1048400059F0C83361F488EB97E00E9490058FEA35 +:1048500097E00E94900508C01092CE0104C189EA39 +:1048600097E00E949005FFC081E08170FEC0C432D5 +:1048700028F5CE3108F0C1C0CB30A1F1D0F4C7305B +:1048800009F0D3C08EE18093140182E38093130179 +:104890008AE08093120184E18093110188E0809383 +:1048A000100188E280930F018FE496E00E9490054A +:1048B000BFC0C33149F1C431C1F0B7C0CB3409F432 +:1048C000A9C028F4C93289F0C83361F0AEC0C1353F +:1048D00009F49EC0C23509F499C0CE3409F0A5C0D0 +:1048E0006AE09EC00E946B21A3C08091CD01882305 +:1048F00019F01092CD019CC08CE596E00E949005C5 +:1049000081E08093CE01B1C086E396E00E949005DD +:1049100084E296E00E949005809114011F928F938B +:1049200081E296E09F938F930E9429068FE196E0A3 +:104930000E9490058DE096E00E9490058091130101 +:104940001F928F938AE096E09F938F930E9429068F +:1049500088E096E00E94900589EF95E00E9490051E +:10496000809112011F928F9386EF95E09F938F9312 +:104970000E94290684EF95E00E94900583EE95E061 +:104980000E949005809111011F928F9380EE95E017 +:104990009F938F930E9429068EED95E00E949005CB +:1049A00089EC95E00E949005809110011F928F93F1 +:1049B00086EC95E09F938F930E94290684EC95E006 +:1049C0000E9490058DEA95E00E94900580910F016C +:1049D0001F928F938AEA95E09F938F930E942906F6 +:1049E00088EA95E00E9490058DB79EB748960FB66D +:1049F000F8949EBF0FBE8DBF1BC0CE51EC2FF0E0D0 +:104A0000E75DFE4F80818093CD0112C061E003C05D +:104A100061E006C06AE08091CD010E94822108C059 +:104A20008091CD010E94252203C08DE496E013C041 +:104A30008091CD01882369F01F928F9387E496E0DF +:104A40009F938F930E9429060F900F900F900F90C5 +:104A500004C084E496E00E94900581E006C01092B4 +:104A6000CE0180E002C080E000CFCF9108950E9487 +:104A70003E256894B1110C94CD2508950E94B2256D +:104A800088F09F5798F0B92F9927B751B0F0E1F00F +:104A9000660F771F881F991F1AF0BA95C9F714C0BF +:104AA000B13091F00E94CC25B1E008950C94CC2552 +:104AB000672F782F8827B85F39F0B93FCCF38695F8 +:104AC00077956795B395D9F73EF490958095709555 +:104AD00061957F4F8F4F9F4F0895E89409C097FBD2 +:104AE0003EF490958095709561957F4F8F4F9F4FC5 +:104AF0009923A9F0F92F96E9BB279395F695879509 +:104B000077956795B795F111F8CFFAF4BB0F11F4CB +:104B100060FF1BC06F5F7F4F8F4F9F4F16C0882372 +:104B200011F096E911C0772321F09EE8872F762FA8 +:104B300005C0662371F096E8862F70E060E02AF0E9 +:104B40009A95660F771F881FDAF7880F96958795D5 +:104B500097F9089557FD9058440F551F59F05F3F3E +:104B600071F04795880F97FB991F61F09F3F79F08F +:104B700087950895121613061406551FF2CF469511 +:104B8000F1DF08C0161617061806991FF1CF869593 +:104B90007105610508940895E894BB276627772777 +:104BA000CB0197F908950E94E5250C945F260E9499 +:104BB000512638F00E94582620F0952311F00C94CD +:104BC00048260C944E260C94CD250E94AA2578F3F5 +:104BD0009923C9F35523B9F3950F50E0551FAA2720 +:104BE000EE27FF27BB2700240894679520F4E20FE7 +:104BF000F31FB41F0A1E220F331F441FAA1F6695FE +:104C0000A9F7779530F4F30FB41F0A1E121E08F4AB +:104C10006395330F441FAA1F221F769599F7879536 +:104C200020F4B40F0A1E121E631F440FAA1F221F76 +:104C3000331F8695A9F7862F712D602D11249F575C +:104C400050409AF0F1F088234AF0EE0FFF1FBB1F8F +:104C5000661F771F881F91505040A9F79E3F51054E +:104C600080F00C9448260C94CD255F3FE4F3983EE9 +:104C7000D4F3869577956795B795F795E7959F5FF8 +:104C8000C1F7FE2B880F911D9695879597F908958A +:104C900097F99F6780E870E060E008959FEF80ECEF +:104CA000089500240A941616170618060906089592 +:104CB00000240A9412161306140605060895092EF8 +:104CC0000394000C11F4882352F0BB0F40F4BF2B67 +:104CD00011F460FF04C06F5F7F4F8F4F9F4F0895A7 +:104CE0000024552704C0080E591F880F991F0097EC +:104CF00029F076956795B8F37105B9F7802D952F52 +:104D00000895991B79E004C0991F961708F0961B27 +:104D1000881F7A95C9F78095089597FB072E16F49A +:104D2000009407D077FD09D00E94A72607FC05D084 +:104D30003EF4909581959F4F0895709561957F4FB2 +:104D40000895EE0FFF1F0590F491E02D0994AA1B22 +:104D5000BB1B51E107C0AA1FBB1FA617B70710F066 +:104D6000A61BB70B881F991F5A95A9F78095909598 +:0A4D7000BC01CD010895F894FFCFB7 +:104D7A00FFFF5B0A4C0B290BF50AC10A01B4012893 +:104D8A0008140A321E404D3622FF03B2037C035A2E +:104D9A0003E602FF021803310301020304050607B2 +:044DAA0008090000F4 +:106800000000EA44E944E2440400050006000700F1 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:10686000300031A132003300340035A1360037004A +:10687000380082003A003B003C003D003E003F00F3 +:1068800040004100420043004400450046004700EC +:10689000480049004A004B004C004D004E004F009C +:1068A000500051005200530067005400550056003C +:1068B000580059005A005B005C005D005E005F00FC +:1068C0006000610062006300640000005700000087 +:1068D000CD440000000000000000000000000000A7 +:1068E00000000000000081400000000000000000E7 +:1068F000E000E100E200E300E400E500E600E7007C +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010001004C00010001004400450052000C +:1069600049000100010050004F0001004D004E00A1 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E000010001000100010001000100010001009F +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/adb_usb/config.h b/converter/adb_usb/config.h index 5ce5c221..3500188d 100644 --- a/converter/adb_usb/config.h +++ b/converter/adb_usb/config.h @@ -40,10 +40,6 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE -/* legacy keymap support */ -#define USE_LEGACY_KEYMAP - - /* ADB port setting */ #define ADB_PORT PORTD #define ADB_PIN PIND diff --git a/converter/adb_usb/keymap_ansi.c b/converter/adb_usb/keymap_ansi.c index aa993192..8d69ec5b 100644 --- a/converter/adb_usb/keymap_ansi.c +++ b/converter/adb_usb/keymap_ansi.c @@ -12,5 +12,5 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/adb_usb/keymap_common.c b/converter/adb_usb/keymap_common.c deleted file mode 100644 index 55a13793..00000000 --- a/converter/adb_usb/keymap_common.c +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2011,2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/adb_usb/keymap_common.h b/converter/adb_usb/keymap_common.h index cb643c8f..49581d79 100644 --- a/converter/adb_usb/keymap_common.h +++ b/converter/adb_usb/keymap_common.h @@ -19,7 +19,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" @@ -29,10 +28,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* Common layout: ANSI+ISO * ,---. .---------------. ,---------------. ,---------------. ,-----------. ,---------------. * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| diff --git a/converter/adb_usb/keymap_hasu.c b/converter/adb_usb/keymap_hasu.c index a0b3f1fc..14701160 100644 --- a/converter/adb_usb/keymap_hasu.c +++ b/converter/adb_usb/keymap_hasu.c @@ -53,6 +53,6 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(1, KC_BSLS), }; diff --git a/converter/adb_usb/keymap_iso.c b/converter/adb_usb/keymap_iso.c index 1ccb17e2..ffb7f431 100644 --- a/converter/adb_usb/keymap_iso.c +++ b/converter/adb_usb/keymap_iso.c @@ -12,5 +12,5 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/adb_usb/keymap_plain.c b/converter/adb_usb/keymap_plain.c index 2f11f86a..b7a80f57 100644 --- a/converter/adb_usb/keymap_plain.c +++ b/converter/adb_usb/keymap_plain.c @@ -36,7 +36,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(1, KC_GRV), [1] = ACTION_LAYER_TAP_KEY(1, KC_BSLS), }; diff --git a/converter/adb_usb/unimap_common.h b/converter/adb_usb/unimap_common.h new file mode 100644 index 00000000..96f8a872 --- /dev/null +++ b/converter/adb_usb/unimap_common.h @@ -0,0 +1,213 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#ifndef UNIMAP_COMMON_H +#define UNIMAP_COMMON_H + +#include +#include +#include "unimap.h" + + +/* Apple Extended Keyboard Common layout: ANSI+ISO + * ,---. .---------------. ,---------------. ,---------------. ,-----------. ,---------------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|F24| + * `---' `---------------' `---------------' `---------------' `-----------' `---------------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| -| + * |-----------------------------------------------------------| `-----------' |---------------| + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| +| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shif|\ | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------|Ent| + * |Ctrl |Alt |Gui | Space |Gui |Alt |Ctrl | |Lef|Dow|Rig| | 0| .| | + * `-----------------------------------------------------------' `-----------' `---------------' + * Command = Gui + * Option = Alt + * Power key = F24 + * Mic = F13(Adjustable keyboard) + */ +// http://lxr.free-electrons.com/source/drivers/macintosh/adbhid.c +// http://opensource.apple.com//source/IOHIDFamily/IOHIDFamily-701.20.10/IOHIDFamily/Cosmo_USB2ADB.c +// http://m0115.web.fc2.com/m0115.jpg +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + // Position(unimap) ADB scan code(matrix) + // --------------------------------------------- + { + UNIMAP_A, // 0x00 + UNIMAP_S, // 0x01 + UNIMAP_D, // 0x02 + UNIMAP_F, // 0x03 + UNIMAP_H, // 0x04 + UNIMAP_G, // 0x05 + UNIMAP_Z, // 0x06 + UNIMAP_X, // 0x07 + }, + { + UNIMAP_C, // 0x08 + UNIMAP_V, // 0x09 + UNIMAP_NONUS_BSLASH, // 0x0A + UNIMAP_B, // 0x0B + UNIMAP_Q, // 0x0C + UNIMAP_W, // 0x0D + UNIMAP_E, // 0x0E + UNIMAP_R, // 0x0F + }, + { + UNIMAP_Y, // 0x10 + UNIMAP_T, // 0x11 + UNIMAP_1, // 0x12 + UNIMAP_2, // 0x13 + UNIMAP_3, // 0x14 + UNIMAP_4, // 0x15 + UNIMAP_6, // 0x16 + UNIMAP_5, // 0x17 + }, + { + UNIMAP_EQUAL, // 0x18 + UNIMAP_9, // 0x19 + UNIMAP_7, // 0x1A + UNIMAP_MINUS, // 0x1B + UNIMAP_8, // 0x1C + UNIMAP_0, // 0x1D + UNIMAP_RBRACKET, // 0x1E + UNIMAP_O, // 0x1F + }, + { + UNIMAP_U, // 0x20 + UNIMAP_LBRACKET, // 0x21 + UNIMAP_I, // 0x22 + UNIMAP_P, // 0x23 + UNIMAP_ENTER, // 0x24 + UNIMAP_L, // 0x25 + UNIMAP_J, // 0x26 + UNIMAP_QUOTE, // 0x27 + }, + { + UNIMAP_K, // 0x28 + UNIMAP_SCOLON, // 0x29 + UNIMAP_BSLASH, // 0x2A + UNIMAP_COMMA, // 0x2B + UNIMAP_SLASH, // 0x2C + UNIMAP_N, // 0x2D + UNIMAP_M, // 0x2E + UNIMAP_DOT, // 0x2F + }, + { + UNIMAP_TAB, // 0x30 + UNIMAP_SPACE, // 0x31 + UNIMAP_GRAVE, // 0x32 + UNIMAP_BSPACE, // 0x33 + UNIMAP_KP_ENTER, // 0x34 + UNIMAP_ESCAPE, // 0x35 + UNIMAP_LCTRL, // 0x36 + UNIMAP_LGUI, // 0x37 + }, + { + UNIMAP_LSHIFT, // 0x38 + UNIMAP_CAPSLOCK, // 0x39 + UNIMAP_LALT, // 0x3A + UNIMAP_LEFT, // 0x3B + UNIMAP_RIGHT, // 0x3C + UNIMAP_DOWN, // 0x3D + UNIMAP_UP, // 0x3E + UNIMAP_F23, // 0x3F FN? + }, + { + UNIMAP_F17, // 0x40 + UNIMAP_KP_DOT, // 0x41 + UNIMAP_F13, // 0x42 Mic(Adjustable keyboard) + UNIMAP_KP_MINUS, // 0x43 ADB keypad asterisk(top right) + UNIMAP_NO, // 0x44 + UNIMAP_KP_COMMA, // 0x45 ADB keypad plus + UNIMAP_NO, // 0x46 + UNIMAP_NUMLOCK, // 0x47 + }, + { + UNIMAP_VOLUME_UP, // 0x48 Vol Up(Adjustable keyboard) + UNIMAP_VOLUME_DOWN, // 0x49 Vol Down(Adjustable keyboard) + UNIMAP_VOLUME_MUTE, // 0x4A Vol Mute(Adjustable keyboard) + UNIMAP_KP_ASTERISK, // 0x4B ADB keypad slash(between equal and asterisk) + UNIMAP_KP_ENTER, // 0x4C + UNIMAP_NO, // 0x4D + UNIMAP_KP_PLUS, // 0x4E ADB keypad minus + UNIMAP_F18, // 0x4F + }, + { + UNIMAP_F19, // 0x50 + UNIMAP_KP_SLASH, // 0x51 ADB keypad equal(next to clear/numlock) + UNIMAP_KP_0, // 0x52 + UNIMAP_KP_1, // 0x53 + UNIMAP_KP_2, // 0x54 + UNIMAP_KP_3, // 0x55 + UNIMAP_KP_4, // 0x56 + UNIMAP_KP_5, // 0x57 + }, + { + UNIMAP_KP_6, // 0x58 + UNIMAP_KP_7, // 0x59 + UNIMAP_F20, // 0x5A + UNIMAP_KP_8, // 0x5B + UNIMAP_KP_9, // 0x5C + UNIMAP_JYEN, // 0x5D + UNIMAP_RO, // 0x5E + UNIMAP_KP_COMMA, // 0x5F + }, + { + UNIMAP_F5, // 0x60 + UNIMAP_F6, // 0x61 + UNIMAP_F7, // 0x62 + UNIMAP_F3, // 0x63 + UNIMAP_F8, // 0x64 + UNIMAP_F9, // 0x65 + UNIMAP_MHEN, // 0x66 + UNIMAP_F11, // 0x67 + }, + { + UNIMAP_HENK, // 0x68 + UNIMAP_PSCREEN, // 0x69 + UNIMAP_F16, // 0x6A + UNIMAP_SCROLLLOCK, // 0x6B + UNIMAP_NO, // 0x6C + UNIMAP_F10, // 0x6D + UNIMAP_APPLICATION, // 0x6E compose + UNIMAP_F12, // 0x6F + }, + { + UNIMAP_NO, // 0x70 + UNIMAP_PAUSE, // 0x71 + UNIMAP_INSERT, // 0x72 + UNIMAP_HOME, // 0x73 + UNIMAP_PGUP, // 0x74 + UNIMAP_DELETE, // 0x75 + UNIMAP_F4, // 0x76 + UNIMAP_END, // 0x77 + }, + { + UNIMAP_F2, // 0x78 + UNIMAP_PGDOWN, // 0x79 + UNIMAP_F1, // 0x7A + UNIMAP_RSHIFT, // 0x7B + UNIMAP_RALT, // 0x7C + UNIMAP_RCTRL, // 0x7D + UNIMAP_RGUI, // 0x7E + UNIMAP_F24, // 0x7F power key + } +}; + +#endif diff --git a/converter/adb_usb/unimap_plain.c b/converter/adb_usb/unimap_plain.c new file mode 100644 index 00000000..be59a293 --- /dev/null +++ b/converter/adb_usb/unimap_plain.c @@ -0,0 +1,46 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_common.h" + + +#define AC_FN0 ACTION_LAYER_TAP_KEY(1, KC_GRV) +#define AC_FN1 ACTION_LAYER_TAP_KEY(1, KC_BSLS) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + MPLY,NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, PWR, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, VOLD,VOLU,MUTE, + FN0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PEQL,PSLS,PAST, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, FN1, DEL, END, PGDN, P7, P8, P9, PMNS, + LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PPLS, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, UP, P1, P2, P3, NO, + LCTL,LGUI,LALT,NO, SPC, NO, NO, RALT,RGUI,NO, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + TRNS,F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,LEFT,RGHT, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +}; diff --git a/converter/ibm4704_usb/Makefile b/converter/ibm4704_usb/Makefile index 79f17ec0..c73bcfd5 100644 --- a/converter/ibm4704_usb/Makefile +++ b/converter/ibm4704_usb/Makefile @@ -8,8 +8,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c \ protocol/ibm4704.c diff --git a/converter/ibm4704_usb/keymap_50key.c b/converter/ibm4704_usb/keymap_50key.c index 97294fb4..c589ce05 100644 --- a/converter/ibm4704_usb/keymap_50key.c +++ b/converter/ibm4704_usb/keymap_50key.c @@ -11,7 +11,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/ibm4704_usb/keymap_alps102key.c b/converter/ibm4704_usb/keymap_alps102key.c index f3dda718..aac8a423 100644 --- a/converter/ibm4704_usb/keymap_alps102key.c +++ b/converter/ibm4704_usb/keymap_alps102key.c @@ -45,6 +45,6 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/converter/ibm4704_usb/keymap_common.c b/converter/ibm4704_usb/keymap_common.c deleted file mode 100644 index 55a13793..00000000 --- a/converter/ibm4704_usb/keymap_common.c +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2011,2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/ibm4704_usb/keymap_common.h b/converter/ibm4704_usb/keymap_common.h index 9cb23b0b..ea0ec942 100644 --- a/converter/ibm4704_usb/keymap_common.h +++ b/converter/ibm4704_usb/keymap_common.h @@ -19,7 +19,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" @@ -29,11 +28,6 @@ along with this program. If not, see . #include "keymap.h" -// 32*8(256) byte array which converts PS/2 code into USB code -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* 107-key */ #define KEYMAP( \ K46,K64, K00,K18,K19,K1A,K10,K11,K12,K08,K09,K0A,K0F,K1F,K0D,K0C,K0E, K6A,K6B,K6C, K47,K48,K49,K4A, \ diff --git a/converter/ibm4704_usb/keymap_hasu.c b/converter/ibm4704_usb/keymap_hasu.c index 14c17117..e235ce80 100644 --- a/converter/ibm4704_usb/keymap_hasu.c +++ b/converter/ibm4704_usb/keymap_hasu.c @@ -60,7 +60,7 @@ enum macro_id { ALT_TAB, }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_LAYER_TAP_KEY(2, KC_SCLN), [2] = ACTION_LAYER_TAP_KEY(3, KC_SLASH), diff --git a/converter/ibm4704_usb/keymap_plain.c b/converter/ibm4704_usb/keymap_plain.c index 4aed684e..9e78b021 100644 --- a/converter/ibm4704_usb/keymap_plain.c +++ b/converter/ibm4704_usb/keymap_plain.c @@ -45,6 +45,6 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/converter/m0110_usb/Makefile b/converter/m0110_usb/Makefile index e8364563..f9fe025d 100644 --- a/converter/m0110_usb/Makefile +++ b/converter/m0110_usb/Makefile @@ -1,32 +1,41 @@ # Target file name (without extension). -TARGET = m0110_lufa +TARGET ?= m0110_usb # Directory common source filess exist -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . # keyboard dependent files -SRC = matrix.c \ +SRC ?= matrix.c \ led.c \ - keymap_common.c \ m0110.c -# To use own keymap file run make like: make keymap=hasu -ifdef KEYMAP - SRC += keymap_$(KEYMAP).c +# +# Keymap file +# +ifdef UNIMAP_ENABLE + KEYMAP_FILE = unimap else - SRC += keymap_default.c + ifdef ACTIONMAP_ENABLE + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif +ifdef KEYMAP + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) +else + SRC := $(KEYMAP_FILE).c $(SRC) endif -CONFIG_H = config.h +CONFIG_H ?= config.h # MCU name, you MUST set this to match the board you are using # type "make clean" after changing this, so all files will be rebuilt -MCU = atmega32u2 # TMK converter rev2 -#MCU = atmega32u4 # TMK converter rev1 +MCU ?= atmega32u2 # Processor frequency. @@ -34,14 +43,14 @@ MCU = atmega32u2 # TMK converter rev2 # so your program will run at the correct speed. You should also set this # variable to same clock speed. The _delay_ms() macro uses this, and many # examples use this variable to calculate timings. Do not add a "UL" here. -F_CPU = 16000000 +F_CPU ?= 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +ARCH ?= AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ -54,7 +63,7 @@ ARCH = AVR8 # # 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) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT @@ -70,19 +79,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # *Comment out* to disable the options. # -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor +#BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +#SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +#NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA +#KEYMAP_SECTION_ENABLE ?= yes # fixed address keymap for keymap editor #---------------- Programming Options -------------------------- -PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex +PROGRAM_CMD ?= teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex # Search Path diff --git a/converter/m0110_usb/Makefile.rev1 b/converter/m0110_usb/Makefile.rev1 new file mode 100644 index 00000000..54eae183 --- /dev/null +++ b/converter/m0110_usb/Makefile.rev1 @@ -0,0 +1,3 @@ +TARGET = m0110_usb_rev1 +MCU = atmega32u4 +include Makefile diff --git a/converter/m0110_usb/Makefile.rev2 b/converter/m0110_usb/Makefile.rev2 new file mode 100644 index 00000000..0897c711 --- /dev/null +++ b/converter/m0110_usb/Makefile.rev2 @@ -0,0 +1,3 @@ +TARGET = m0110_usb_rev2 +MCU = atmega32u2 +include Makefile diff --git a/converter/m0110_usb/Makefile.teensy b/converter/m0110_usb/Makefile.teensy deleted file mode 100644 index 394b6605..00000000 --- a/converter/m0110_usb/Makefile.teensy +++ /dev/null @@ -1,98 +0,0 @@ -# Target file name (without extension). -TARGET = m0110_lufa - -# Directory common source filess exist -TMK_DIR = ../../tmk_core - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# keyboard dependent files -SRC = matrix.c \ - led.c \ - keymap_common.c \ - m0110.c - -# To use own keymap file run make like: make keymap=hasu -ifdef KEYMAP - SRC += keymap_$(KEYMAP).c -else - SRC += keymap_default.c -endif - -CONFIG_H = config.h - - -# MCU name, you MUST set this to match the board you are using -# type "make clean" after changing this, so all files will be rebuilt -#MCU = at90usb162 # Teensy 1.0 -MCU = atmega32u4 # Teensy 2.0 -#MCU = at90usb646 # Teensy++ 1.0 -#MCU = at90usb1286 # Teensy++ 2.0 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -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 -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in bytes -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -OPT_DEFS += -DBOOTLOADER_SIZE=512 - - -# Build Options -# *Comment out* to disable the options. -# -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor - - - -#---------------- Programming Options -------------------------- -PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TMK_DIR) - - -include $(TMK_DIR)/protocol/lufa.mk -include $(TMK_DIR)/protocol.mk -include $(TMK_DIR)/common.mk -include $(TMK_DIR)/rules.mk diff --git a/converter/m0110_usb/Makefile.tmk_rev1 b/converter/m0110_usb/Makefile.tmk_rev1 deleted file mode 100644 index f36fcc4b..00000000 --- a/converter/m0110_usb/Makefile.tmk_rev1 +++ /dev/null @@ -1,96 +0,0 @@ -# Target file name (without extension). -TARGET = m0110_lufa - -# Directory common source filess exist -TMK_DIR = ../../tmk_core - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# keyboard dependent files -SRC = matrix.c \ - led.c \ - keymap_common.c \ - m0110.c - -# To use own keymap file run make like: make keymap=hasu -ifdef KEYMAP - SRC += keymap_$(KEYMAP).c -else - SRC += keymap_default.c -endif - -CONFIG_H = config.h - - -# MCU name, you MUST set this to match the board you are using -# type "make clean" after changing this, so all files will be rebuilt -#MCU = atmega32u2 # TMK converter rev2 -MCU = atmega32u4 # TMK converter rev1 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -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 -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in bytes -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - -# Build Options -# *Comment out* to disable the options. -# -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor - - - -#---------------- Programming Options -------------------------- -PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TMK_DIR) - - -include $(TMK_DIR)/protocol/lufa.mk -include $(TMK_DIR)/protocol.mk -include $(TMK_DIR)/common.mk -include $(TMK_DIR)/rules.mk diff --git a/converter/m0110_usb/Makefile.tmk_rev2 b/converter/m0110_usb/Makefile.tmk_rev2 deleted file mode 100644 index e8364563..00000000 --- a/converter/m0110_usb/Makefile.tmk_rev2 +++ /dev/null @@ -1,96 +0,0 @@ -# Target file name (without extension). -TARGET = m0110_lufa - -# Directory common source filess exist -TMK_DIR = ../../tmk_core - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# keyboard dependent files -SRC = matrix.c \ - led.c \ - keymap_common.c \ - m0110.c - -# To use own keymap file run make like: make keymap=hasu -ifdef KEYMAP - SRC += keymap_$(KEYMAP).c -else - SRC += keymap_default.c -endif - -CONFIG_H = config.h - - -# MCU name, you MUST set this to match the board you are using -# type "make clean" after changing this, so all files will be rebuilt -MCU = atmega32u2 # TMK converter rev2 -#MCU = atmega32u4 # TMK converter rev1 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -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 -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in bytes -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - -# Build Options -# *Comment out* to disable the options. -# -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor - - - -#---------------- Programming Options -------------------------- -PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TMK_DIR) - - -include $(TMK_DIR)/protocol/lufa.mk -include $(TMK_DIR)/protocol.mk -include $(TMK_DIR)/common.mk -include $(TMK_DIR)/rules.mk diff --git a/converter/m0110_usb/Makefile.unimap.rev1 b/converter/m0110_usb/Makefile.unimap.rev1 new file mode 100644 index 00000000..b1cd9678 --- /dev/null +++ b/converter/m0110_usb/Makefile.unimap.rev1 @@ -0,0 +1,6 @@ +TARGET = m0110_usb_rev1_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +MCU = atmega32u4 +#OPT_DEFS = -DM0110_INTL +include Makefile diff --git a/converter/m0110_usb/Makefile.unimap.rev2 b/converter/m0110_usb/Makefile.unimap.rev2 new file mode 100644 index 00000000..1416155c --- /dev/null +++ b/converter/m0110_usb/Makefile.unimap.rev2 @@ -0,0 +1,6 @@ +TARGET = m0110_usb_rev2_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +MCU = atmega32u2 +#OPT_DEFS = -DM0110_INTL +include Makefile diff --git a/converter/m0110_usb/README.md b/converter/m0110_usb/README.md index bfd3261d..668c8526 100644 --- a/converter/m0110_usb/README.md +++ b/converter/m0110_usb/README.md @@ -4,7 +4,7 @@ This firmware converts the protocol of Apple Macintosh keyboard **M0110**, **M01 Read README of top directory too. -Pictures of **M0110 + M0120** and **M0110A**. +Pictures of **M0110 + M0120** and **M0110A** with [TMK converter]. ![M0110+M0120](http://i.imgur.com/dyvXb2Tm.jpg) ![M0110A](http://i.imgur.com/HuHOEoHm.jpg) @@ -21,25 +21,25 @@ Update - 2013/09: Change port again, it uses inversely `PD0` for data and `PD1` for clock line now. - 2014/06: Change keymaps - 2015/03: Add support for "International"(ISO) keyboard(keymap_intl.c) +- 2016/09: Unimap support - keymap editor on web browser -Building Hardware ------------------ -You need [TMK converter] or AVR dev board like PJRC [Teensy]. Port of the MCU `PD1` is assigned to `CLOCK` line and `PD0` to `DATA` by default, you can change pin configuration with editing `config.h`. +Hardware +-------- +You can buy preassembled [TMK converter] or make yourown with AVR dev board like PJRC [Teensy]. -[![M0110 Converter](http://i.imgur.com/4G2ZOegm.jpg)](http://i.imgur.com/4G2ZOeg.jpg) +Port of the MCU `PD1` is assigned to `CLOCK` line and `PD0` to `DATA` by default, you can change pin configuration with editing `config.h`. + +[![M0110 Converter](http://i.imgur.com/yEp2eRim.jpg)](http://i.imgur.com/yEp2eRi.jpg) ### 4P4C phone handset cable Note that original cable used with Mac is **straight** while phone handset cable is **crossover**. -Close-up picture of handset cable. You can see one end of plug has reverse color codes against the other. Click to enlarge. -[![4P4C cable](http://i.imgur.com/3S9P1mYm.jpg?1)](http://i.imgur.com/3S9P1mY.jpg?1) - [Teensy]: http://www.pjrc.com/teensy/ -[TMK converter]: https://github.com/tmk/keyboard_converter +[TMK converter]: https://geekhack.org/index.php?topic=72052.0 ### Socket Pinout @@ -60,16 +60,19 @@ To compile firmware you need AVR GCC. You can edit *Makefile* and *config.h* to $ git clone git://github.com/tmk/tmk_keyboard.git (or download source) $ cd m0110_usb $ make -f Makefile.rev2 clean - $ make -f Makefile.rev2 [KEYMAP={default|intl|spacefn|hasu}] + $ make -f Makefile.rev2 [KEYMAP={intl|spacefn}] -Use `Maefile.tmk_rev1` for TMK converter Rev.1, `Makefile.teensy` for Teensy instead. +Use `Maefile.rev1` for TMK converter rev.1 and Teensy(ATMega32u4), instead. Keymap ------ -To create your own keymap copy existent keymap file to `keymap_name.c` and edit it. +To create your own keymap copy existent keymap file to `keymap_.c` and edit it. You can build with `make -f Makefile.rev2 KEYMAP=`. +Or you can edit keymap on web browser and download firmware. + +http://www.tmk-kbd.com/tmk_keyboard/editor/ Debug diff --git a/converter/m0110_usb/binary/m0110_usb_rev1_unimap.hex b/converter/m0110_usb/binary/m0110_usb_rev1_unimap.hex new file mode 100644 index 00000000..722f02ae --- /dev/null +++ b/converter/m0110_usb/binary/m0110_usb_rev1_unimap.hex @@ -0,0 +1,1223 @@ +:100000000C94F5040C943C050C943C050C943C05B4 +:100010000C943C050C943C050C943C050C943C055C +:100020000C943C050C943C050C94AE0D0C94800E85 +:100030000C942A1C0C943C050C943C050C943C0537 +:100040000C943C050C943C050C943C050C943C052C +:100050000C943C050C949E1C0C943C050C943C05A3 +:100060000C943C050C943C050C943C050C943C050C +:100070000C943C050C943C050C943C050C943C05FC +:100080000C943C050C943C050C943C050C943C05EC +:100090000C943C050C943C050C943C050C943C05DC +:1000A0000C943C050C943C050C943C05ED0E0F0F94 +:1000B000FD0F0F0FFD0F540F770FFD0FCC0FDF0F4C +:1000C0001913191346134613A113DD13D515D515AE +:1000D000F513D515F014F014AB15D515D515C115BC +:1000E000041607090B0A1D1B06198005141A0815AA +:1000F0001C171E1F202123222E26242D25273012D7 +:10010000182F0C13280F0D340E33313638111037D9 +:100110002B2C352A7F80807B79397A808080808083 +:1001200080634F8080805053518080805852578028 +:10013000808062595A5B5C5D5E5F80606180808018 +:10014000808056808080668054808080805580804A +:100150000A0025303862003A200025303258000A63 +:10016000722F632030313233343536370A005D0A5E +:100170000025303258005B0020002530325800281E +:1001800031290A002832290A002833290A00283494 +:10019000290A000A0025303258006D303131305FB5 +:1001A00072656376206572723A20000A002530324B +:1001B00058006D303131305F73656E642065727246 +:1001C0003A20005B735D004B6579626F6172642059 +:1001D00073746172742E0A0055534220636F6E6609 +:1001E0006967757265642E0A005B575D005B535D3D +:1001F000005B525D005B445D005B435D0032034D7C +:1002000000300031003100300020006B00650079C3 +:100210000062006F00610072006400200063006FE4 +:10022000006E0076006500720074006500720000C8 +:10023000000E0374002E006D002E006B002E0000D7 +:10024000000403090409027400040100A032090437 +:1002500000000103010100092111010001224000F9 +:100260000705810308000A090401000103010200D7 +:10027000092111010001224D000705820308000A2F +:1002800009040200010300000009211101000122FC +:1002900036000705830308000A090403000203006F +:1002A000000009211101000122220007058403201A +:1002B00000010705040320000112011001000000E5 +:1002C00008EDFE10010101010200010631FF097471 +:1002D000A1010975150026FF009520750881020906 +:1002E00076150026FF00952075089102C0050109CA +:1002F00080A101850216810026B7001A81002AB765 +:1003000000751095018100C0050C0901A10185034C +:10031000160100269C021A01002A9C027510950104 +:100320008100C005010902A1010901A10005091907 +:1003300001290515002501950575018102950175B5 +:100340000381010501093009311581257F95027569 +:1003500008810609381581257F95017508810605F4 +:100360000C0A38021581257F950175088106C0C0E9 +:1003700005010906A101050719E029E71500250176 +:10038000950875018102950175088101050819011B +:1003900029059505750191029501750391010507E0 +:1003A000190029FF150026FF00950675088100C079 +:1003B0000A002530325820006B6579626F617264E3 +:1003C0005F7265706F72743A20004C45443A202584 +:1003D0003032580A00290A002575002F00257500C3 +:1003E0005D280025640020002564002000256400AD +:1003F00020002564007C0025303258006D6F757335 +:10040000656B6579205B62746E7C7820792076203C +:10041000685D287265702F61636C293A205B006DFE +:100420006B5F776865656C5F74696D655F746F5F3E +:100430006D6178203D2025640A006D6B5F776865EB +:10044000656C5F6D61785F7370656564203D202524 +:10045000640A006D6B5F74696D655F746F5F6D61D9 +:1004600078203D2025640A006D6B5F6D61785F73B5 +:1004700070656564203D2025640A006D6B5F696EC0 +:1004800074657276616C203D2025640A006D6B5F97 +:1004900064656C6179203D2025640A006D6B5F778F +:1004A0006865656C5F74696D655F746F5F6D6178B9 +:1004B000203D2025640A006D6B5F776865656C5F81 +:1004C0006D61785F7370656564203D2025640A0066 +:1004D0006D6B5F74696D655F746F5F6D6178203DF2 +:1004E0002025640A006D6B5F6D61785F73706565D0 +:1004F00064203D2025640A006D6B5F696E7465722F +:1005000076616C203D2025640A006D6B5F64656C2C +:100510006179203D2025640A000A00257500363ADD +:1005200020776865656C5F74696D655F746F5F6D7A +:1005300061783A20000A00257500353A2077686511 +:10054000656C5F6D61785F73706565643A20000A61 +:1005500000257500343A2074696D655F746F5F6DB6 +:1005600061783A20000A00257500333A206D6178E1 +:100570005F73706565643A20000A00257500323AA1 +:1005800020696E74657276616C286D73293A20005B +:100590000A00257500313A2064656C6179282A319A +:1005A000306D73293A20000A092D2056616C75655B +:1005B00073202D0A004D3E004D25643E20003F0073 +:1005C0007365742064656661756C740A00433E202F +:1005D0000077686572652064656C74613A206375A4 +:1005E00072736F723D25642C20776865656C3D25BC +:1005F000640A53656520687474703A2F2F656E2EF7 +:1006000077696B6970656469612E6F72672F7769AE +:100610006B692F4D6F7573655F6B6579730A000A9F +:10062000092D204D6F7573656B6579202D0A455333 +:10063000432F713A09717569740A313A0964656C1E +:100640006179282A31306D73290A323A09696E744A +:10065000657276616C286D73290A333A096D617889 +:100660005F73706565640A343A0974696D655F7417 +:100670006F5F6D61780A353A09776865656C5F6D03 +:1006800061785F73706565640A363A0977686565F5 +:100690006C5F74696D655F746F5F6D61780A0A7075 +:1006A0003A097072696E742076616C7565730A64BC +:1006B0003A097365742064656661756C74730A75B4 +:1006C000703A092B310A646F776E3A092D310A703E +:1006D0006775703A092B31300A7067646F776E3A2C +:1006E000092D31300A0A7370656564203D20646508 +:1006F0006C7461202A206D61785F73706565642079 +:100700002A2028726570656174202F2074696D65D8 +:100710005F746F5F6D6178290A003F004D3E2000D5 +:10072000433E20004C25640A000A092D20436F6EC9 +:10073000736F6C65202D0A4553432F713A0971750B +:1007400069740A6D3A096D6F7573656B65790A0096 +:100750000A092D204D61676963202D0A643A0964F6 +:10076000656275670A783A096465627567206D612C +:10077000747269780A6B3A096465627567206B6503 +:1007800079626F6172640A6D3A0964656275672007 +:100790006D6F7573650A763A0976657273696F6E67 +:1007A0000A733A097374617475730A633A09636F63 +:1007B0006E736F6C65206D6F64650A302D343A0975 +:1007C0006C61796572302D34284631302D463429DC +:1007D0000A506175733A09626F6F746C6F6164657A +:1007E000720A003F0074696D65725F7265616433FF +:1007F0003228293A202530346C580A006B6579621A +:100800006F6172645F69646C653A2025580A006BF9 +:100810006579626F6172645F70726F746F636F6C21 +:100820003A2025580A00686F73745F6B6579626FB0 +:100830006172645F6C65647328293A2025580A0048 +:100840000A092D20537461747573202D0A004743E3 +:10085000433A20342E392E32204156522D4C4942F3 +:10086000433A20312E382E3073766E204156525F37 +:10087000415243483A20617672350A004F5054493C +:100880004F4E533A204C554641204D4F5553454B02 +:1008900045592045585452414B455920434F4E53DA +:1008A0004F4C4520434F4D4D414E44204B45594DF3 +:1008B00041505F53454354494F4E20343039360A36 +:1008C000004255494C443A20633766643566632DCF +:1008D0006469727479202830343A31393A353120DC +:1008E0005365702031332032303136290A005649A1 +:1008F000443A2030784645454428742E6D2E6B2EA0 +:1009000029205049443A20307830313130284D3058 +:10091000313130206B6579626F61726420636F6E74 +:1009200076657274657229205645523A20307830C7 +:100930003130310A00444553433A20636F6E766587 +:100940007274204D30313130206B6579626F617285 +:100950006420746F205553420A000A092D20566501 +:100960007273696F6E202D0A000A6D6F7573653A98 +:10097000206F66660A000A6D6F7573653A206F6EA8 +:100980000A000A6B6579626F6172643A206F66666D +:100990000A000A6B6579626F6172643A206F6E0AB1 +:1009A000000A6D61747269783A206F66660A000AFF +:1009B0006D61747269783A206F6E0A000A6465622C +:1009C00075673A206F6E0A000A64656275673A209F +:1009D0006F66660A000A0A626F6F746C6F61646505 +:1009E000722E2E2E2000433E200011241FBECFEF7A +:1009F000DAE0DEBFCDBF04B603FE27C08091D4018C +:100A00009091D501A091D601B091D7018730904B3C +:100A1000A740B04BD1F41092D4011092D50110929E +:100A2000D6011092D70114BE84B7877F84BF0FB65A +:100A3000F894A8958091600088618093600010927E +:100A400060000FBEE0E0F8E3099511E0A0E0B1E03E +:100A5000EAE1FAE402C005900D92A233B107D9F79A +:100A600021E0A2E3B1E001C01D92A43DB207E1F78D +:100A70000E94DD0A0C940B250C940000FF93EF9369 +:100A8000E0913201F0913301309709F00995EF912F +:100A9000FF910895FC018591803011F0EFDFFBCFCD +:100AA0000895FF27E0E230E247FF0CC0419597FF31 +:100AB00009C0EDE26095709580959095611D711D5E +:100AC000811D911D27FF02C0219530E350E2AA2726 +:100AD000660F771F881F991FAA1FA41710F0A41B69 +:100AE00063955A95A9F7AA3008F0A95FA05DAF9366 +:100AF000F395611571058105910541F7ED3211F40A +:100B0000EF93F395F21718F43F93F395FBCF8F9182 +:100B1000B5DFFA95E1F70895E991F9918591803073 +:100B200021F0853219F0AADFF9CF089520E0E8948A +:100B300055915532C1F3503311F4689455915A339D +:100B400048F4505390F3220F022E220F220F200D53 +:100B5000250FF4CF0EF4219589919991533619F30D +:100B6000533729F1533559F1BC0188279927E89467 +:100B70005C3621F48991999168945591543639F4F1 +:100B800046EF7EF077FF0DC08FEF9FEF0AC055371D +:100B90004AE039F0583540E121F0523642E009F0A0 +:100BA0000895FF93EF937DDFEF91FF91B7CFFF9310 +:100BB000EF93FC0181918030B9F360DFFBCFFF93AD +:100BC000EF9368DFF1CFDF93CF93CDB7DEB72596F4 +:100BD000A3DFCF91DF9108950E94E106E4E3F1E005 +:100BE0008EE08E0F11928E13FDCF84E391E09093EF +:100BF000430180934201569A5E9A2FEF89E698E16D +:100C0000215080409040E1F700C00000569A5E9865 +:100C10000895CF93109244010E94FB07C82F8B3791 +:100C200009F444C08F3F09F441C081E0809344013E +:100C30008C2F869586958695E0914201F09143012F +:100C40004C2F4770C7FF0EC08F70E80FF11D21E0D9 +:100C500030E001C0220F4A95EAF7209580812823D1 +:100C600020830BC0E80FF11D81E090E001C0880FE8 +:100C70004A95EAF79081892B80838091B60180FFA5 +:100C800017C086E791E00E944A051F92CF9381E743 +:100C900091E09F938F930E94E3058EE691E00E947E +:100CA0004A050F900F900F900F9002C080E001C096 +:100CB00081E0CF9108952091420130914301F901E3 +:100CC000E80FF11D80810895EF92FF920F931F931B +:100CD000CF93DF938FE591E00E944A05C0E0D0E01A +:100CE0008AE5E82E81E0F82E02E511E0DF93CF934C +:100CF000FF92EF920E94E30587E591E00E944A058A +:100D0000E0914201F0914301EC0FFD1F80810E94B0 +:100D1000BF1B1F928F931F930F930E94E30580E5E3 +:100D200091E00E944A0521968DB79EB708960FB6AE +:100D3000F8949EBF0FBE8DBFCE30D105B9F6DF91BE +:100D4000CF911F910F91FF90EF900895569A81FFD8 +:100D500002C05E9A08955E9808955198599A089530 +:100D60005898509A08955098589A08955198599AB9 +:100D700085E08A95F1F7000089B186958170089524 +:100D8000CF93DF93EC010E94B606882341F02097B1 +:100D900031F085E08A95F1F700002197F4CFCE017C +:100DA000DF91CF9108958B3741F08F3F41F0982F1D +:100DB0009F7796958078892B08958BE708958FEF1C +:100DC00008950E94AD060E94B3062FEF83ED90E3D5 +:100DD000215080409040E1F700C000000895EF925C +:100DE000FF920F931F93CF93DF93E82E1092480149 +:100DF0000E94AD060E94B006CAEFD0E088EE93E0F4 +:100E00000E94C006892B21F42197C1F781E036C0EA +:100E100008E010E080E8F82E8AEF90E00E94C0061B +:100E2000892B11F483E02AC08F2D8E2129F00E9496 +:100E3000B306C8ECD0E00AC00E94B006FACF2097F3 +:100E400059F025E02A95F1F7000021970E94B60697 +:100E50008823A9F3CD2B11F484E010C0F69401503F +:100E60001109D1F68FE891E00197F1F700C0000079 +:100E70000E94AD060E94B30681E026C0809348011F +:100E800082EB91E00E944A05809148011F928F9366 +:100E90008DEA91E09F938F930E94E3058BEA91E0A6 +:100EA0000E944A059FEF29E688E19150204080404A +:100EB000E1F700C000000E94AD060E94B3060F904B +:100EC0000F900F900F9080E0DF91CF911F910F91C5 +:100ED000FF90EF9008950F931F93CF93DF9310929D +:100EE0004801CAEFD0E088EE93E00E94C006892B4B +:100EF00021F42197C1F781E02FC0D8E0C0E0CC0FEA +:100F000088EC90E00E94C006892B11F482E024C096 +:100F100008EC10E00E94B60681110AC00115110507 +:100F200049F025E02A95F1F7000001501109F2CFB0 +:100F3000012B11F483E010C05098589A85E08A95EF +:100F4000F1F700004899C160D150C9F60E94AD0682 +:100F50000E94B3068C2F26C0809348018AE991E055 +:100F60000E944A05809148011F928F9385E991E084 +:100F70009F938F930E94E30583E991E00E944A05C5 +:100F80009FEF29E688E1915020408040E1F700C0C2 +:100F900000000E94AD060E94B3060F900F900F90C4 +:100FA0000F908FEFDF91CF911F910F910895CF9305 +:100FB00084E10E94EF060E946B07C82F8B37C1F0B7 +:100FC0008091B60180FF0CC01F92CF938AE791E019 +:100FD0009F938F930E94E3050F900F900F900F90B7 +:100FE0008091B60180FF04C088E791E00E944A0525 +:100FF0008C2FCF910895CF93DF9380914701882361 +:1010000019F0109247017EC080914601882319F0A3 +:101010001092460177C0C0914501CC2319F010927F +:10102000450103C00E94D707C82F8C2F8F778137C7 +:10103000B1F0893709F061C00E94D707982F9F77D8 +:101040009D3041F018F4953039F404C0913111F01D +:101050009B3111F487FD37C00E94D3063AC00E942D +:10106000D707982F9F77913719F0993721F041C012 +:101070008093450142C00E94D707D82F8F778D30CB +:1010800041F018F4853081F504C0813111F08B31C5 +:1010900059F5C7FF11C0D7FF0AC08EE891E00E9442 +:1010A0004A058C2F0E94D306809346010BC089E825 +:1010B00091E00E944A0521C0D7FF0DC084E891E06D +:1010C0000E944A058D2F0E94D306982F9066909318 +:1010D0004701806417C08FE791E00E944A058D2F79 +:1010E0000E94D30680660EC08D2F0E94D3068064B6 +:1010F00002C00E94D306809347018C2FDF91CF91CD +:101100000C94D306DF91CF910895809154010895F6 +:101110009FB7F89410924B019FBF9091CB019430F0 +:1011200009F057C09091E9009F703091EC00232F97 +:10113000217030FD20E8922B24E02093E9002091DB +:10114000EB0020FF43C02091EE0027FF3FC020911D +:101150004901222321F02091E80025FF37C0109299 +:10116000490126E03091E80035FD15C03091CB01F2 +:10117000343061F53091EB0035FD28C0215021F469 +:1011800081E08093490122C0EFE9FFE03197F1F758 +:1011900000C00000E7CF8093F1008091E80085FD5A +:1011A0000AC08091E80080FFFCCF8091E8008E7734 +:1011B0008093E80006C08FB7F89421E020934B019C +:1011C0008FBF9F709093E90080E008959F70909387 +:1011D000E9008FEF0895CF93DF9300D01F92CDB732 +:1011E000DEB79C018091CB01843019F593E099839F +:1011F0003B832A839093E9008FEF9091E800815020 +:1012000095FD06C095ED9A95F1F700008111F5CF97 +:101210008091E80085FF0DC040E050E063E070E0A1 +:10122000CE0101960E949E0B8091E8008E778093FC +:10123000E8000F900F900F90DF91CF910895CF931A +:10124000DF9300D01F92CDB7DEB72091CB012430C1 +:1012500021F522E029839B838A8383E08093E90040 +:101260008FEF9091E800815095FD06C095ED9A951D +:10127000F1F700008111F5CF8091E80085FF0DC0E6 +:1012800040E050E063E070E0CE0101960E949E0BCA +:101290008091E8008E778093E8000F900F900F9078 +:1012A000DF91CF9108952091CB012430F1F422E019 +:1012B0002093E9002FEF3091E800215035FD06C062 +:1012C00035ED3A95F1F700002111F5CF2091E800B6 +:1012D00025FF0BC040E050E065E070E00E949E0BEF +:1012E0008091E8008E778093E8000895CF93DF9394 +:1012F0002091CB01243039F521E02093E9002FEF34 +:101300003091E800215035FD06C035ED3A95F1F7F2 +:1013100000002111F5CF2091E80025FF14C0EC0159 +:1013200040E050E068E070E00E949E0B8091E80091 +:101330008E778093E80088E0FE01ACE4B1E0019094 +:101340000D928A95E1F7DF91CF91089589EF91E0B1 +:101350000E944A058091CA01811109C00E94330D83 +:101360000E94900D8091E20084608093E2000895D5 +:1013700085EF91E00E944A051092CA01089581EF1D +:1013800091E00C944A0520914A012F5F822F62E37D +:101390000E94D124992319F020934A0108951092B4 +:1013A0004A0180914B01882371F18091CB018430F7 +:1013B00041F58091E9008F702091EC00922F91709F +:1013C00020FD90E8892B94E09093E9009091EB0048 +:1013D00090FF14C09091EE0097FF10C09091E8002C +:1013E00095FF03C01092F100F9CF9091E80090FFB3 +:1013F00005C09091E8009E779093E8008F708093ED +:10140000E90010924B01089542E061EC81E00E94F6 +:10141000AD0C42E061EC82E00E94AD0C42E061EC78 +:1014200083E00E94AD0C42E261EC84E00C94AD0CD0 +:101430008091CD01833009F453C030F4813071F0D4 +:10144000823009F48CC008958A3009F478C08B305A +:1014500009F45EC0893009F09AC020C08091CC01A7 +:10146000813A09F094C08091E800877F8093E8007A +:101470008091D0019091D101892B21F468E08CE416 +:1014800091E003C060E080E090E070E00E94E90B32 +:101490008091E8008B778093E80008958091CC01DB +:1014A000813209F074C08091D0019091D101892BD3 +:1014B00009F06DC08091E800877F8093E8008091FB +:1014C000E80082FD05C08091CB018111F8CF5FC09B +:1014D0008091F100809354018091E8008B7753C094 +:1014E0008091CC01813A09F052C08091D001909155 +:1014F000D101892B09F04BC08091E800877F809350 +:10150000E8008091E80080FFFCCF80910A0136C09E +:101510008091CC018132D9F58091D0019091D10197 +:10152000892BA9F58091E800877F8093E8000E94CD +:10153000E20C8091CE0180930A010C94F615809103 +:10154000CC01813221F58091E800877F8093E8000B +:101550000E94E20C8091CF01809355010895809103 +:10156000CC01813AA1F48091E800877F8093E80064 +:101570008091E80080FFFCCF809155018093F100BD +:101580008091E8008E778093E8000C94E20C089537 +:101590000895089508958DEE91E00E944A050C94F7 +:1015A000CA0A0E94E91B8091C901882329F00E9480 +:1015B000141C81110C94880B089584B7877F84BF15 +:1015C0000FB6F894A89580916000886180936000C0 +:1015D000109260000FBE90E080E80FB6F894809300 +:1015E0006100909361000FBE0E94C80A0E94A7107C +:1015F0000E94330D0E94900D8091E20084608093E0 +:10160000E20088E898E00E94BA1B78948091CB01B0 +:101610008430E1F788ED91E00E944A050E94A9100C +:1016200080E091E00E94151087EC91E00E944A054D +:101630000E94C90A8091CB01853039F483EC91E096 +:101640000E944A050E94D10AF5CF0E94AD10F2CF48 +:101650000C94281C89EE91E00E944A050C94280BFA +:10166000292F332723303105C9F064F421303105A7 +:1016700081F02230310509F043C084E790E025E491 +:1016800032E042C021323105F1F02232310541F120 +:1016900037C082E190E029EB32E036C099278130F3 +:1016A000910541F08230910541F0892B49F5E1E443 +:1016B000F2E005C0E1E3F2E002C0EDEFF1E0849179 +:1016C00090E09F0121C06430D8F4E62FF0E0EE0FE7 +:1016D000FF1FE15EFE4F2081318189E090E014C060 +:1016E000643070F470E0FB01EE0FFF1FE95EFE4F07 +:1016F00020813181FB01ED5EFE4F808190E004C0CE +:1017000080E090E020E030E0FA013183208308950A +:1017100080E189BD82E189BD09B400FEFDCF8091E1 +:10172000D8008F7D8093D8008091E0008260809304 +:10173000E0008091E00081FDFCCF0895CF92DF9220 +:10174000EF92FF920F931F93CF93DF93EC018B01E6 +:101750006A010E94010D811133C0C114D10439F016 +:10176000F60180819181081B190BC80FD91FE12C4C +:10177000F12C0115110519F18091E80085FD16C0C5 +:101780008091E8008E778093E800C114D10449F07D +:10179000F60180819181E80EF91EF182E08285E0F8 +:1017A0000FC00E94010D882321F30AC08991809304 +:1017B000F10001501109FFEFEF1AFF0ADACF80E0C4 +:1017C000DF91CF911F910F91FF90EF90DF90CF901D +:1017D00008952091D2013091D3012617370748F0A0 +:1017E0006115710539F42091E8002E772093E80007 +:1017F00001C0B90140E061157105A9F12091CB014B +:10180000222309F443C0253009F442C02091E800A6 +:1018100023FD40C02091E80022FD32C02091E80065 +:1018200020FFE9CF4091F3002091F20030E0342B0B +:10183000FC01CF016115710559F02830310540F4E4 +:1018400081918093F100615071092F5F3F4FF1CF7B +:1018500041E02830310509F040E02091E8002E7782 +:101860002093E800C8CF4111C9CF0AC08091CB01B5 +:10187000882361F0853061F08091E80083FD0AC023 +:101880008091E80082FFF2CF80E0089582E0089521 +:1018900083E0089581E008952091D2013091D30131 +:1018A0002617370748F06115710539F42091E800D3 +:1018B0002E772093E80001C0B901FC0120E06115FA +:1018C000710591F18091CB01882309F440C08530E6 +:1018D00009F43FC08091E80083FD3DC08091E8009D +:1018E00082FD2FC08091E80080FFE9CF2091F300B6 +:1018F0008091F20090E0922B6115710559F08830CB +:10190000910540F424912093F100319661507109C2 +:101910000196F2CF21E0089709F020E08091E800DD +:101920008E778093E800CBCF2111CCCF0AC0809175 +:10193000CB01882361F0853061F08091E80083FD60 +:101940000AC08091E80082FFF2CF80E0089582E033 +:10195000089583E0089581E00895982F973058F511 +:101960009093E900981739F07091EC002091ED0008 +:101970005091F00003C0242F762F50E021FF19C0B2 +:101980003091EB003E7F3093EB003091ED003D7FD6 +:101990003093ED003091EB0031603093EB007093A9 +:1019A000EC002093ED005093F0002091EE0027FF13 +:1019B00007C09F5FD3CF8F708093E90081E00895C7 +:1019C00080E008958091CC0187FF11C08091E800EC +:1019D00082FD05C08091CB018111F8CF11C08091AB +:1019E000E8008B770BC08091CB01882349F0809170 +:1019F000E80080FFF8CF8091E8008E778093E800C0 +:101A000008952091E4003091E50095E64091EC00C6 +:101A1000842F817040FF22C08091E80080FD1CC0AF +:101A20008091CB01882391F0853091F08091EB007B +:101A300085FD10C04091E4005091E5004217530726 +:101A400029F39A01915011F784E0089582E00895F6 +:101A500083E0089581E0089580E008954091E800D2 +:101A600042FFDECF08950E94A10D0E94A90DE0EE75 +:101A7000F0E0808181608083E8EDF0E080818F7705 +:101A8000808319BCA7EDB0E08C918E7F8C93808110 +:101A90008F7E80831092CA0108950F931F93CF9376 +:101AA000DF930E94A10D0E94A90DC8EDD0E08881AE +:101AB0008F77888388818068888388818F7D8883F9 +:101AC00019BC1092CB011092C7011092C90110925B +:101AD000C80100EE10E0F80180818B7F808388814F +:101AE0008160888342E060E080E00E94AD0CE1EE1E +:101AF000F0E080818E7F8083E2EEF0E08081816083 +:101B00008083808188608083F80180818E7F8083DC +:101B1000888180618883DF91CF911F910F91089513 +:101B2000E8EDF0E080818F7E8083E7EDF0E080815A +:101B30008160808384E082BF81E08093CA010C943D +:101B40004D0DE8EDF0E080818E7F80831092E20001 +:101B500008951092DA001092E10008951F920F92FA +:101B60000FB60F9211242F933F934F935F936F9370 +:101B70007F938F939F93AF93BF93EF93FF93809146 +:101B8000E10082FF0BC08091E20082FF07C08091DC +:101B9000E1008B7F8093E1000E94C3098091DA000D +:101BA00080FF1FC08091D80080FF1BC08091DA00A9 +:101BB0008E7F8093DA008091D90080FF0DC080E194 +:101BC00089BD82E189BD09B400FEFDCF81E080932B +:101BD000CB010E94A60905C019BC1092CB010E943E +:101BE000B8098091E10080FF19C08091E20080FF78 +:101BF00015C08091E2008E7F8093E2008091E20028 +:101C000080618093E2008091D80080628093D80048 +:101C100019BC85E08093CB010E94CB0A8091E10042 +:101C200084FF30C08091E20084FF2CC080E189BD38 +:101C300082E189BD09B400FEFDCF8091D8008F7D7F +:101C40008093D8008091E1008F7E8093E1008091A5 +:101C5000E2008F7E8093E2008091E20081608093B9 +:101C6000E2008091C701882311F084E007C08091D1 +:101C7000E30087FD02C081E001C083E08093CB01D7 +:101C80000E942A0B8091E10083FF29C08091E2002D +:101C900083FF25C08091E100877F8093E10082E08F +:101CA0008093CB011092C7018091E1008E7F8093D9 +:101CB000E1008091E2008E7F8093E2008091E2005B +:101CC00080618093E20042E060E080E00E94AD0C21 +:101CD0008091F00088608093F0000E94BF09FF911E +:101CE000EF91BF91AF919F918F917F916F915F9194 +:101CF0004F913F912F910F900FBE0F901F9018950D +:101D00001F920F920FB60F9211242F933F934F9370 +:101D10005F936F937F938F939F93AF93BF93CF9373 +:101D2000DF93EF93FF93C091E900CF708091EC00B7 +:101D3000D82FD17080FDD0E81092E9008091F0009A +:101D4000877F8093F00078940E94C40E1092E9007F +:101D50008091F00088608093F000CD2BCF70C0930D +:101D6000E900FF91EF91DF91CF91BF91AF919F91EA +:101D70008F917F916F915F914F913F912F910F9034 +:101D80000FBE0F901F9018951F93CF93DF93CDB781 +:101D9000DEB7AA970FB6F894DEBF0FBECDBFECEC4E +:101DA000F1E088E08E0F9091F10091938E13FBCFBC +:101DB0000E94180A8091E80083FF1FC18091CC0126 +:101DC0009091CD01492F50E04A30510508F015C1DE +:101DD000FA01EA5AFF4F0C94F124803881F08238DE +:101DE00009F00BC18091D0018F708093E900809140 +:101DF000EB0085FB882780F91092E90006C08091EE +:101E0000C8019091C901911182609091E800977F7B +:101E10009093E8008093F1001092F100C8C0282F41 +:101E20002D7F09F0EAC0882319F0823061F0E5C007 +:101E30008091CE01813009F0E0C0933009F080E05C +:101E40008093C9012BC08091CE01811127C0809160 +:101E5000D0018F7009F4D1C08093E9002091EB008C +:101E600020FF1CC0933021F48091EB00806214C0ED +:101E70009091EB0090619093EB0021E030E0A9019C +:101E800002C0440F551F8A95E2F74093EA00109272 +:101E9000EA008091EB0088608093EB001092E900EB +:101EA0008091E800877F86C08111A7C01091CE0184 +:101EB0001F778091E3008078812B8093E3008091ED +:101EC000E800877F8093E8000E94E20C8091E800A0 +:101ED00080FFFCCF8091E30080688093E3001111C4 +:101EE00002C082E001C083E08093CB0186C08058AD +:101EF000823008F082C08091CE019091CF018C3D5C +:101F000053E0950779F583E08A838AE289834FB7A6 +:101F1000F894DE01139620E03EE051E2E32FF0E07A +:101F200050935700E49120FF03C0E295EF703F5FAC +:101F3000EF708E2F90E0EA3010F0C79601C0C09687 +:101F40008D939D932F5F243149F74FBF8091E80017 +:101F5000877F8093E8006AE270E0CE0101960E94DC +:101F6000E90B14C0AE014F5F5F4F6091D0010E943A +:101F7000300BBC01892B09F440C09091E800977F99 +:101F80009093E80089819A810E944C0C8091E8002E +:101F90008B778093E80031C0803879F58091E80034 +:101FA000877F8093E8008091C7018093F100809142 +:101FB000E8008E778093E8000E94E20C1EC0811139 +:101FC0001CC09091CE019230C0F48091E800877FD0 +:101FD0008093E8009093C7010E94E20C8091C701B2 +:101FE000811106C08091E30087FD02C081E001C03D +:101FF00084E08093CB010E94040A8091E80083FF73 +:102000000AC08091E800877F8093E8008091EB0010 +:1020100080628093EB00AA960FB6F894DEBF0FBEE5 +:10202000CDBFDF91CF911F91089590935B01809375 +:102030005A010895E0915A01F0915B01309721F027 +:102040000190F081E02D099480E00895EF92FF92D5 +:102050000F931F93CF93DF93E0915A01F0915B01AF +:102060003097B1F18C010280F381E02D09958091C8 +:10207000B60182FF2DC080FF04C088EB93E00E9470 +:102080004A05E80118E082EBE82E83E0F82E809103 +:10209000B60180FF0BC088811F928F93FF92EF9251 +:1020A0000E94E3050F900F900F900F901150219612 +:1020B0001111EDCF8091B60180FF0AC080EB93E053 +:1020C000DF91CF911F910F91FF90EF900C944A05F3 +:1020D000DF91CF911F910F91FF90EF900895E091C4 +:1020E0005A01F0915B01309721F00480F581E02DD9 +:1020F000099408952091580130915901821793074E +:1021000071F09093590180935801E0915A01F09138 +:102110005B01309721F00680F781E02D0994089546 +:1021200020915601309157018217930771F09093D7 +:10213000570180935601E0915A01F0915B0130976D +:1021400021F00084F185E02D0994089508950C9400 +:10215000A6100E94531C0C94EC05CF92DF92EF92D4 +:10216000FF920F931F93CF93DF9300D000D000D046 +:10217000CDB7DEB70E9409068DE5C82E81E0D82EC6 +:1021800000E010E0E02E802F0E945B06F6014191F6 +:102190006F01F42EF826B1F40F5F1F4F0E301105BA +:1021A00089F78FEF89838A831B820E945C1C816080 +:1021B000782F9D838C8349815A816B818D810E9408 +:1021C0006C1147C09091B60191FF04C08E830E94AC +:1021D00064068E8120E030E04F2D50E0922FBA014E +:1021E000022E02C0759567950A94E2F760FF2BC036 +:1021F0002983EA8221E030E0690102C0CC0CDD1CB9 +:102200009A95E2F790E08C219D21892B09F420E03A +:102210002B830E945C1C8160782F9D838C83498175 +:102220005A816B818D810E946C1149815A816B8129 +:102230007C818D810E94D61BF801E35AFE4F80817C +:10224000C826C08206C02F5F3F4F2830310531F6C7 +:10225000A3CF0E94D51B0E941D1F10915C010E94FC +:102260001A10181741F10E941A1080935C01909186 +:10227000B60192FF0EC090FF0CC01F928F938AECA4 +:1022800093E09F938F930E94E3050F900F900F9020 +:102290000F9080915C0126960FB6F894DEBF0FBEBA +:1022A000CDBFDF91CF911F910F91FF90EF90DF9005 +:1022B000CF900C94E71B26960FB6F894DEBF0FBEA6 +:1022C000CDBFDF91CF911F910F91FF90EF90DF90E5 +:1022D000CF9008950C94A606CF93DF93CDB7DEB7C9 +:1022E0002B970FB6F894DEBF0FBECDBF942F4F8350 +:1022F000252F588769877A878B874A855B85452B89 +:1023000021F02F3F09F59F3FF9F4DE01119686E099 +:10231000FD0111928A95E9F785E0FE01379601905B +:102320000D928A95E1F749815A816B817C818D817B +:102330009E810E9490182B960FB6F894DEBF0FBEB8 +:10234000CDBFDF91CF9108954F81588569857A85FA +:102350008B850E94D61BD9CFCF93882309F4CDC09B +:10236000C82F823859F40E941A1081FDC6C089E333 +:102370000E941B1B0E94941B89E30CC0833879F4D4 +:102380000E941A1080FDB9C083E50E941B1B0E94A9 +:10239000941B83E50E94381BCF910C94941B8438C6 +:1023A00059F40E941A1082FDA8C087E40E941B1BEA +:1023B0000E94941B87E4EECF8CEF8C0F813A48F497 +:1023C0008C2F0E944722811198C08C2F0E941B1BCA +:1023D000E3CF80E28C0F883048F4C77081E001C001 +:1023E000880FCA95EAF70E945A1BD6CF8BE58C0F4F +:1023F000833078F4C53A29F0C63A31F083E890E0AA +:1024000005C081E890E002C082E890E0CF910C9492 +:102410007A1088E58C0F853108F06FC0C83A61F1F9 +:10242000C93A69F1CA3A71F1CB3A79F1CC3A81F102 +:10243000CD3A89F1CE3A91F1CF3A99F1C13BA1F170 +:10244000C03BA9F1C23BB1F1C33BB9F1C43BC1F1FF +:10245000C53BC9F1C63BD1F1C73BD9F1C83BE1F15E +:10246000C93BE9F1CA3BF1F1CB3BF9F1CC3B09F4B3 +:102470003FC080E090E03EC082EE90E03BC089EE3D +:1024800090E038C08AEE90E035C085EB90E032C035 +:1024900086EB90E02FC083EB90E02CC084EB90E0C3 +:1024A00029C087EB90E026C08CEC90E023C08DEC37 +:1024B00090E020C083E891E01DC08AE891E01AC056 +:1024C00082E991E017C084E991E014C081E292E0D2 +:1024D00011C083E292E00EC084E292E00BC085E27C +:1024E00092E008C086E292E005C087E292E002C076 +:1024F0008AE292E0CF910C949010CF9108958823B6 +:1025000009F44BC0823859F40E941A1081FF45C06B +:1025100089E30E941B1B0E94941B89E30CC0833833 +:1025200071F40E941A1080FF38C083E50E941B1BC3 +:102530000E94941B83E50E94381B0C94941B8438E2 +:1025400059F40E941A1082FF28C087E40E941B1BC6 +:102550000E94941B87E4EFCF9CEF980F913A58F3B9 +:1025600090E2980F983050F4877091E001C0990F75 +:102570008A95EAF7892F0E94601BDFCF9BE5980FB1 +:10258000933020F480E090E00C947A10885A8531E2 +:1025900020F480E090E00C9490100895882321F0BE +:1025A0000E945A1B0C94941B0895882321F00E94CA +:1025B000601B0C94941B0895CF92DF92EF92FF92D0 +:1025C0000F931F93CF93DF9300D000D000D0CDB7EF +:1025D000DEB725E0FC01DE01119601900D922A95EF +:1025E000E1F7FC0140813181F280258122952F7035 +:1025F00063817481672B09F4D8C23F3F19F44F3FC0 +:1026000009F4D3C26C0149833A8389819A812E836C +:102610000E94DA1A182F092F0E94D91A0E94E9196C +:10262000E02FE295EF70F0E0E05AFF4F2E810C941E +:10263000F124802F807F902F9F70092F882311F025 +:102640000295007FFF2049F0002309F45FC2802F2C +:102650000E946D1B0E94941B59C2812F0E947F1201 +:10266000002309F4A2C2802F0E94731B26960FB686 +:10267000F894DEBF0FBECDBFDF91CF911F910F91B8 +:10268000FF90EF90DF90CF900C94941B802F807F71 +:10269000902F9F70092F803211F00295007F112337 +:1026A00019F0113001F129C0FF20A9F0802F222359 +:1026B00049F1213039F526960FB6F894DEBF0FBEEA +:1026C000CDBFDF91CF911F910F91FF90EF90DF90E1 +:1026D000CF900C947D1B222319F0213009F465C2A0 +:1026E0000E94801B2CC0FF20E9F0263008F05DC25C +:1026F0000E94571B802329F022C0FF20F1F02111F6 +:1027000015C0802F26960FB6F894DEBF0FBECDBF42 +:10271000DF91CF911F910F91FF90EF90DF90CF90BD +:102720000C94CE12253008F040C209C0F601858114 +:1027300080FFECC18F708583E4CF2111FBC1802F16 +:1027400069C1202F26952695237030E0211531058B +:1027500021F021303105C9F028C2FF2021F0812F5E +:10276000902F937002C080E090E026960FB6F89408 +:10277000DEBF0FBECDBFDF91CF911F910F91FF90B4 +:10278000EF90DF90CF900C947A10FF2021F0812FF2 +:10279000902F937002C080E090E026960FB6F894D8 +:1027A000DEBF0FBECDBFDF91CF911F910F91FF9084 +:1027B000EF90DF90CF900C949010812FFF2019F0B4 +:1027C0000E94A31D02C00E940B1E26960FB6F8940D +:1027D000DEBF0FBECDBFDF91CF911F910F91FF9054 +:1027E000EF90DF90CF900C94901E802F837009F0B3 +:1027F00078C0F110DAC1812F829586958770880F95 +:10280000880F912F9F70C92ED12CE12CF12C082E0E +:1028100004C0CC0CDD1CEE1CFF1C0A94D2F714FF84 +:1028200012C04FE050E060E070E004C0440F551F5C +:10283000661F771F8A95D2F7CB01BA016095709514 +:102840008095909503C060E070E0CB01202F269525 +:1028500026952370422F50E042305105D1F043308D +:10286000510559F16C297D298E299F294130510547 +:1028700041F126960FB6F894DEBF0FBECDBFDF91B3 +:10288000CF911F910F91FF90EF90DF90CF900C941C +:10289000FE196C297D298E299F2926960FB6F8945A +:1028A000DEBF0FBECDBFDF91CF911F910F91FF9083 +:1028B000EF90DF90CF900C94101A0E94FE19C70180 +:1028C000B60126960FB6F894DEBF0FBECDBFDF91DE +:1028D000CF911F910F91FF90EF90DF90CF900C94CC +:1028E000EC19FF2019F0802F817001C08695882394 +:1028F00009F45BC1812F829586958770880F880FB8 +:10290000912F9F70C92ED12CE12CF12C082E04C0E0 +:10291000CC0CDD1CEE1CFF1C0A94D2F714FF12C075 +:102920004FE050E060E070E004C0440F551F661FA8 +:10293000771F8A95D2F7CB01BA0160957095809583 +:10294000909503C060E070E0CB01202F269526957E +:102950002370422F50E042305105D1F043305105F1 +:1029600059F16C297D298E299F294130510541F16A +:1029700026960FB6F894DEBF0FBECDBFDF91CF9184 +:102980001F910F91FF90EF90DF90CF900C94B51AAC +:102990006C297D298E299F2926960FB6F894DEBFD3 +:1029A0000FBECDBFDF91CF911F910F91FF90EF90A0 +:1029B000DF90CF900C94C71A0E94B51AC701B601D8 +:1029C00026960FB6F894DEBF0FBECDBFDF91CF9134 +:1029D0001F910F91FF90EF90DF90CF900C94A31A6E +:1029E000103F41F118F4103E48F48BC0123F09F437 +:1029F00050C0D8F1133F09F460C083C01F70802F0E +:102A00008F71FF2021F00E943C1A812F7BCE0E9403 +:102A10005D1A812F26960FB6F894DEBF0FBECDBF8C +:102A2000DF91CF911F910F91FF90EF90DF90CF90AA +:102A30000C94D512FF20A9F0253008F0B6C0802FE5 +:102A40008F7126960FB6F894DEBF0FBECDBFDF9113 +:102A5000CF911F910F91FF90EF90DF90CF900C944A +:102A6000821A263008F0A1C0EACFFF20A1F0802F03 +:102A70008F7126960FB6F894DEBF0FBECDBFDF91E3 +:102A8000CF911F910F91FF90EF90DF90CF900C941A +:102A90003C1AFF2061F3802F8F7126960FB6F894B1 +:102AA000DEBF0FBECDBFDF91CF911F910F91FF9081 +:102AB000EF90DF90CF900C945D1AFF2091F0802F63 +:102AC0008F7126960FB6F894DEBF0FBECDBFDF9193 +:102AD000CF911F910F91FF90EF90DF90CF900C94CA +:102AE000271A26960FB6F894DEBF0FBECDBFDF9132 +:102AF000CF911F910F91FF90EF90DF90CF900C94AA +:102B0000221AFF20A1F0222309F4B1CF812F2696AB +:102B10000FB6F894DEBF0FBECDBFDF91CF911F91EE +:102B20000F91FF90EF90DF90CF900C94AC11222387 +:102B300009F4B1CF812F26960FB6F894DEBF0FBEF1 +:102B4000CDBFDF91CF911F910F91FF90EF90DF905C +:102B5000CF900C947F12402F4F70612FC6010E94BE +:102B60001D1D26960FB6F894DEBF0FBECDBFDF91B8 +:102B7000CF911F910F91FF90EF90DF90CF900C9429 +:102B80003419402F4F70612FC60126960FB6F89466 +:102B9000DEBF0FBECDBFDF91CF911F910F91FF9090 +:102BA000EF90DF90CF900C94201D26960FB6F894EE +:102BB000DEBF0FBECDBFDF91CF911F910F91FF9070 +:102BC000EF90DF90CF9008950E947A1B0E94491BDE +:102BD0000E94941B0E94C21F0E94901E80E090E001 +:102BE0000E947A1080E090E00C9490100E946A1B82 +:102BF0000C94E4150E94DA1A292F22952F7030E0E8 +:102C00002C3031054CF42A3031056CF42250310956 +:102C10002230310588F407C02C30310549F02F30BF +:102C2000310531F009C0803E48F0803F29F406C0EC +:102C300093FB882780F9089580E0089581E0089546 +:102C4000CF93DF9300D000D01F92CDB7DEB70F90A7 +:102C50000F900F900F900F90DF91CF910895CF9329 +:102C6000DF9300D000D000D0CDB7DEB726960FB6E8 +:102C7000F894DEBF0FBECDBFDF91CF9108951F93B3 +:102C8000CF93DF93C0916B0116E080916C01C81760 +:102C900099F0D0E01C9FF0011D9FF00D1124E35925 +:102CA000FE4F4081518162817381848195810E94B0 +:102CB0002F162196C770E9CFDF91CF911F9108950C +:102CC00040919D0150919E0160919F017091A001E2 +:102CD0008091A1019091A2010C942F168091A201E4 +:102CE00082958F7009F054C080919F01882309F468 +:102CF0004FC080916B01A0916C0160919D0170911A +:102D00009E014091A0015091A101B6E08A1709F4FB +:102D10003FC090E041155105C1F17F3F11F46F3F75 +:102D2000A1F1B89FF001B99FF00D1124E359FE4FB6 +:102D3000218172132AC02081621327C022812111B0 +:102D400024C0238134812417350710F42150310920 +:102D5000241B350B283C3105C0F42091A2012F70B3 +:102D600020612093A20126E0289FF001299FF00D09 +:102D70001124EE58FE4F80818F70806180838DE931 +:102D800091E00E94DC120C943F1601968770BECF32 +:102D90000895CF92DF92EF92FF920F931F93CF93FC +:102DA000DF93CDB7DEB762970FB6F894DEBF0FBEE4 +:102DB000CDBF8C0185E0F801DE011D9601900D92DA +:102DC0008A95E1F7D8014C9111965C911197129672 +:102DD0006C9112971396CD90DC90149730919D01D1 +:102DE00070919E018091A0019091A101009709F43A +:102DF0006BC17F3F19F43F3F09F466C1E0909F012A +:102E0000EE2009F4C0C02091A201C816D90628F00E +:102E1000F601E81BF90BCF0104C0809590958C0D4D +:102E20009D1DFF24F394883C910578F0F12C207FC0 +:102E300009F0C6C07C2DD98AC88A89890E942016CB +:102E40008DE991E00E94DC12B1C0822F807F09F0F1 +:102E500046C0751314C0341312C0611110C02F7016 +:102E600020612093A2010E9460168DE991E00E94EA +:102E7000DC128091A201D80115968C932EC0CD282A +:102E800019F15F3F11F44F3FF9F0F62E61111CC0AC +:102E900080916B0120916C0136E0821709F45AC0D1 +:102EA00090E0389FF001399FF00D1124E359FE4F57 +:102EB0007181571306C07081471303C0728171116D +:102EC00003C001968770E9CFF62E662309F418C176 +:102ED0008091A20181608093A201F12C11C1751330 +:102EE00008C0341306C0611104C08091A201D8014A +:102EF000C3C04D875E878D859E856A8B0E94FA15BB +:102F00006A898823E1F16623D1F12091A201822F01 +:102F100082958F7090E0029774F080919D0190915E +:102F20009E0198878F831986DB86CA862C87CE01FF +:102F300007960E94DC1286E0F801ADE9B1E001904D +:102F40000D928A95E1F70E946E160E946016FF248A +:102F5000F394D6C04D875E878D859E850E94DA1AD0 +:102F6000292F22952F7030E0223031050CF0BCC0A3 +:102F70009F7009F0B6C0805E883008F4C1C0C801F7 +:102F80000E94DC12E4CFC816D90608F453C0F6013B +:102F9000E81BF90BCF01883C910508F450C0F12CD7 +:102FA0007C2DD98AC88A89890E942016EDE9F1E032 +:102FB00086E0DF011D928A95E9F70E946016A0C0A5 +:102FC000751314C0341312C0611110C08091A20196 +:102FD000F8018583C8010E94DC1286E0EDE9F1E08A +:102FE000DF011D928A95E9F7FE2C8AC04D875E8726 +:102FF0008D859E856A8B0E94FA156A89882309F45B +:10300000BECF662309F4BBCF2091A201822F829507 +:103010008F7090E002970CF48ECF80919D0190917B +:103020009E019A8389831B82DD82CC822E83CE010E +:1030300001967FCF809590958C0D9D1DACCFF62E7F +:10304000662309F49CCF75132EC034132CC0209135 +:10305000A20120FD1FC0822F82958F70D9F0D80168 +:1030600015962C9315978F3049F08F5F982F929576 +:10307000907F822F8F70892B15968C93C8010E94A8 +:10308000DC1286E0F801ADE9B1E001900D928A957D +:10309000E1F793CF86E0F801ADE9B1E001900D9240 +:1030A0008A95E1F72DC04D875E878D859E850E94AC +:1030B000FA15811140CF8091A20181608093A20115 +:1030C000C8010E94DC121CC0662309F458CF4D874A +:1030D0005E878D859E850E94FA15882309F44FCF5F +:1030E0002ACF811148CF0CC0243031050CF047CFD6 +:1030F0009F7009F440CFF8019581907F09F03BCF94 +:103100008F2D62960FB6F894DEBF0FBECDBFDF9154 +:10311000CF911F910F91FF90EF90DF90CF90089586 +:103120001F93CF93DF93CDB7DEB72C970FB6F894EC +:10313000DEBF0FBECDBF4F83588769877A878B87E5 +:103140009C87CE0107960E94C916882369F08F815B +:1031500098852A853B85232BF1F19F3F09F063C0B9 +:103160008F3F09F060C037C086E0FE013796DE0170 +:10317000119601900D928A95E1F76F817885EA8525 +:10318000FB85309741F17F3F11F46F3F21F1209192 +:103190006C0130E0C90101968770992740916B015D +:1031A00050E08417950709F447C069837A83FD834B +:1031B000EC8396E0929FD001939FB00D1124A35908 +:1031C000BE4FFE01319601900D929A95E1F78093E2 +:1031D0006C010E943F1616E080916B0190916C018A +:1031E0008917C1F1189FC001112483599E4F0E9475 +:1031F000C916882379F1E0916B011E9FF00111241B +:10320000E359FE4F408151816281738184819581B0 +:103210000E942F1680916B0190E00196877099278C +:1032200080936B01D9CF4F81588569857A858B85CD +:103230009C850E942F16CFCF0E94F61510926C012C +:1032400010926B01EDE9F1E086E0DF011D928A95B5 +:10325000E9F7C1CF2C960FB6F894DEBF0FBECDBFF5 +:10326000DF91CF911F910895DF92EF92FF920F931C +:103270001F93CF93DF93FC01892B09F48AC0E12CC3 +:10328000F12CDD24D394EF0121968491853709F444 +:1032900061C058F4843708F04EC0843008F06AC02A +:1032A0008130D1F0823071F174C0883709F45DC08B +:1032B00050F4863709F455C0873709F06AC08E2D5F +:1032C0000E94671B54C09CE7980F903708F061C0BC +:1032D0008F770E947F1250C08F010E5F1F4FFE013B +:1032E000849190E2980F983050F48770FD2D01C0C2 +:1032F000FF0F8A95EAF78F2F0E946D1B14C00E9462 +:10330000AC1113C08F010E5F1F4FFE01C49180E20C +:103310008C0F883060F4C7708D2D01C0880FCA955E +:10332000EAF70E94731B0E94941BE80125C08C2FB2 +:103330000E947F12FACF9F012E5F3F4FFE01C49182 +:10334000CC2369F08FE99FE00197F1F700C00000FE +:10335000C150F6CF9F012E5F3F4FFE01F490E9016F +:103360000BC00E94571BE82E07C00E946A1B0E94D8 +:10337000941B02C00E94AC118F2D882341F0EFE90D +:10338000FFE03197F1F700C000008150F6CFFE0159 +:103390007ACFDF91CF911F910F91FF90EF90DF9047 +:1033A00008956093A7017093A8018093A901909359 +:1033B000AA010E94E51B0C94E4156093A30170938D +:1033C000A4018093A5019093A6010E94E61B0C9492 +:1033D000E41508950C94D1190F931F930091A70140 +:1033E0001091A8012091A9013091AA01602B712BA5 +:1033F000822B932B1F910F910C94D1190F931F9334 +:103400000091A7011091A8012091A9013091AA0172 +:1034100060237123822393231F910F910C94D11960 +:103420000F931F930091A7011091A8012091A9016A +:103430003091AA0160277127822793271F910F914E +:103440000C94D11960E070E0CB010C94DD190F935E +:103450001F9341E050E060E070E08A019B0104C0EE +:10346000000F111F221F331F8A95D2F7C901B8011F +:103470001F910F910C94DD190F931F9341E050E0C1 +:1034800060E070E004C0440F551F661F771F8A95E7 +:10349000D2F78091A3019091A401A091A501B091D0 +:1034A000A6018A019B01082B192B2A2B3B2BC90152 +:1034B000B8011F910F910C94DD190F931F9341E0F8 +:1034C00050E060E070E004C0440F551F661F771F96 +:1034D0008A95D2F740955095609570958091A3019B +:1034E0009091A401A091A501B091A6018A019B0130 +:1034F000082319232A233B23C901B8011F910F91E7 +:103500000C94DD190F931F9341E050E060E070E0F0 +:1035100004C0440F551F661F771F8A95D2F780910C +:10352000A3019091A401A091A501B091A6018A01E7 +:103530009B01082719272A273B27C901B8011F919A +:103540000F910C94DD190F931F930091A30110911B +:10355000A4012091A5013091A601602B712B822B33 +:10356000932B1F910F910C94DD190F931F930091D2 +:10357000A3011091A4012091A5013091A60160231F +:103580007123822393231F910F910C94DD190F93C4 +:103590001F930091A3011091A4012091A5013091E6 +:1035A000A60160277127822793271F910F910C9402 +:1035B000DD190895CF92DF92EF92FF920F931F9340 +:1035C000CF93DF938C01C090A701D090A801E09029 +:1035D000A901F090AA014091A3015091A40160912A +:1035E000A5017091A601C42AD52AE62AF72ACFE1BF +:1035F000D0E0D701C6010C2E04C0B695A7959795CB +:1036000087950A94D2F780FF07C0B8018C2F0E94DB +:10361000F31C8130910531F4219758F7B80180E00F +:103620000E94F31CDF91CF911F910F91FF90EF90BB +:10363000DF90CF90089520910B0130910C01F9019A +:1036400032969FEF40E05191581789F09F3F19F44F +:10365000511101C0942F4F5F4630A9F79F3F39F0B9 +:10366000F901E90FF11D97FDFA95828308950895F8 +:1036700020910B0130910C01F9013296285F3F4FE8 +:103680009081981301C010823196E217F307C1F7B9 +:10369000089581E090E0E0910B01F0910C01E80FBA +:1036A000F91F1082019688309105A9F7089580913D +:1036B000B50108959091B501892B8093B5010895C6 +:1036C00080959091B50189238093B50108958093E9 +:1036D000B50108951092B50108959091B401892B18 +:1036E0008093B401089580959091B40189238093CB +:1036F000B40108951092B40108958093AB01089528 +:103700001092AB01089580910B0190910C01FC0186 +:1037100031969C01285F3F4F80E0919191118F5F1E +:10372000E217F307D1F70895E0910B01F0910C0136 +:103730008091B5018083E0910B01F0910C019081A3 +:103740008091B401892B80838091AB01882361F043 +:10375000E0910B01F0910C019081892B80830E94F4 +:10376000831B81111092AB0180910B0190910C0190 +:103770000C94261090933301809332010895829522 +:10378000982F9C7C392F36953695282F237344E04B +:10379000249FC0011124932F982B292F2A7A269534 +:1037A000892F8575880F822B08950895CF93DF9315 +:1037B00000D000D01F92CDB7DEB70F900F900F90C2 +:1037C0000F900F90DF91CF910895089508950C9474 +:1037D0006A118091CB01843021F11092B70120E46D +:1037E00088E190E00FB6F894A895809360000FBE32 +:1037F0002093600083B7817F846083BF83B781603B +:1038000083BF7894889583B78E7F83BF0FB6F89473 +:10381000A89580916000886180936000109260009C +:103820000FBE089508950895CF930E94121C0E9420 +:1038300009060E94131CC0E08C2F0E945B068111B8 +:1038400004C0CF5FCE30C1F701C081E0CF910895B1 +:103850000C94F6151F920F920FB60F9211248F93AE +:103860009F93AF93BF938091B701811113C0809153 +:10387000B8019091B901A091BA01B091BB014196F4 +:10388000A11DB11D8093B8019093B901A093BA0115 +:10389000B093BB01BF91AF919F918F910F900FBEDD +:1038A0000F901F90189582E084BD93E095BD9AEF2C +:1038B00097BD80936E0008952FB7F8948091B8015A +:1038C0009091B901A091BA01B091BB012FBF0895A9 +:1038D0002FB7F8946091B8017091B9018091BA0145 +:1038E0009091BB012FBF0895CF92DF92EF92FF928C +:1038F0000F931F932FB7F8944091B8015091B901DD +:103900006091BA017091BB012FBF6A017B01EE2467 +:10391000FF248C0120E030E0C016D106E206F30659 +:1039200010F4415051099A01281B390BC9011F910C +:103930000F91FF90EF90DF90CF9008951F920F921C +:103940000FB60F9211248F939F93AF93BF938091E3 +:10395000B8019091B901A091BA01B091BB01019653 +:10396000A11DB11D8093B8019093B901A093BA0134 +:10397000B093BB01BF91AF919F918F910F900FBEFC +:103980000F901F9018950E94330DF8942FEF87EA3F +:1039900091E6215080409040E1F700C0000087E0B0 +:1039A00090EBDC018093D4019093D501A093D601D4 +:1039B000B093D7019CE088E10FB6F894A895809366 +:1039C00060000FBE90936000FFCF28E0929FF0014F +:1039D0001124E80FF11DE052FF4F9491892F8F7051 +:1039E00092959F700895CF93C82FCB010E94E51C3C +:1039F000282F30E080E1989FA0011124422B532B07 +:103A00004038510519F480E090E015C09770E92F17 +:103A1000F0E088E0C89FE00DF11D112484E0EE0F76 +:103A2000FF1F8A95E1F7E20FF31FEE0FFF1FE05033 +:103A3000F84985919491CF91089580E090E00895A0 +:103A400008958091BE0180FF0BC06091100185E058 +:103A5000689FB001112475956795759567952BC082 +:103A600081FF09C06091100185E0689FB0011124B9 +:103A70007595679520C082FF07C06091100185E0B1 +:103A8000689FB001112417C09091BF019923D1F014 +:103A900060910F01961788F72091100185E0289F0B +:103AA00090011124929FA001939F500D112470E06A +:103AB000CA010E94DD246038710540F4611571056A +:103AC00039F002C065E070E0862F08958FE7089511 +:103AD00081E008958091BE0180FF08C060910E01D1 +:103AE00070E0759567957595679521C081FF06C053 +:103AF00060910E0170E07595679519C082FF04C052 +:103B000060910E0170E010C09091BF019923C1F047 +:103B100060910D019617A0F780910E01899FC00159 +:103B2000112470E00E94DD246038710528F46115CD +:103B3000710521F0862F08958FE7089581E008959B +:103B400061E070E0F4CF803F21F40E94211D819557 +:103B500004C0813F29F40E94211D8093C201089571 +:103B6000823F21F40E94211D819504C0833F29F4E6 +:103B70000E94211D8093C1010895893F19F40E947C +:103B80006A1D05C08A3F31F40E946A1D81958093A9 +:103B9000C30108958B3F21F40E946A1D819504C0E2 +:103BA0008C3F29F40E946A1D8093C4010895843FCC +:103BB00021F48091C001816017C0853F21F480917C +:103BC000C001826011C0863F21F48091C0018460F1 +:103BD0000BC0873F21F48091C001886005C0883FF9 +:103BE00031F48091C00180618093C00108958D3FC0 +:103BF00021F48091BE0181600BC08E3F21F4809141 +:103C0000BE01826005C08F3F29F48091BE018460AF +:103C10008093BE010895803F39F48091C20187FFEF +:103C20006CC01092C20169C0813F29F48091C20129 +:103C30001816BCF362C09091C101823F29F497FF2E +:103C40005CC01092C10159C0833F19F41916CCF31E +:103C500054C0893F41F48091C30118160CF04DC047 +:103C60001092C3014AC08A3F29F48091C30187FFA3 +:103C700044C0F6CF8B3F39F48091C40187FF3DC02B +:103C80001092C4013AC08C3F29F48091C4011816E7 +:103C9000BCF333C0843F21F48091C0018E7F17C0F4 +:103CA000853F21F48091C0018D7F11C0863F21F4B2 +:103CB0008091C0018B7F0BC0873F21F48091C001B0 +:103CC000877F05C0883F31F48091C0018F7E80934B +:103CD000C00113C08D3F21F48091BE018E7F0BC0C7 +:103CE0008E3F21F48091BE018D7F05C08F3F29F466 +:103CF0008091BE018B7F8093BE018091C1018111B3 +:103D00000EC08091C20181110AC08091C30181114E +:103D100006C08091C401811102C01092BF010895B4 +:103D20008091B60183FF7EC08CEF93E00E944A052C +:103D30008091C0011F928F9387EF93E09F938F93A1 +:103D40000E94E30585EF93E00E944A058091C1013E +:103D5000282F082E000C330B3F938F9382EF93E0B4 +:103D60009F938F930E94E30580EF93E00E944A05A2 +:103D70008091C201282F082E000C330B3F938F93A4 +:103D80008DEE93E09F938F930E94E3058BEE93E07B +:103D90000E944A058091C301282F082E000C330B86 +:103DA0003F938F9388EE93E09F938F930E94E30558 +:103DB00086EE93E00E944A058091C401282F082EC8 +:103DC000000C330B3F938F9383EE93E09F938F937D +:103DD0000E94E30580EE93E00E944A058091BF01B6 +:103DE0001F928F938DED93E09F938F930E94E30535 +:103DF0008BED93E00E944A058091BE011F928F9344 +:103E000088ED93E09F938F930E94E30585ED93E007 +:103E10000E944A058DB79EB74C960FB6F8949EBF88 +:103E20000FBE8DBF80EC91E00E946F100E945C1C61 +:103E30009093BD018093BC0108951F93CF93DF93AE +:103E40008091BC019091BD010E94741CAC019091C5 +:103E5000BF01992321F02091110130E006C020918B +:103E600012018AE0289F900111244217530708F499 +:103E700085C08091C101C091C201D091C301109150 +:103E8000C401811107C0C11175C0D11173C01111D6 +:103E900071C074C09F3F19F09F5F9093BF011816C7 +:103EA00024F40E94211D8093C1018091C10187FFEC +:103EB00005C00E94211D81958093C1011C1624F428 +:103EC0000E94211D8093C2018091C20187FF05C01D +:103ED0000E94211D81958093C2016091C1016623DA +:103EE00031F1C091C201CC2311F1062E000C770BE9 +:103EF000880B990B0E94D82323E333E343E35FE36A +:103F00000E943C240E94A0236093C1016C2FCC0F1F +:103F1000770B880B990B0E94D82323E333E343E309 +:103F20005FE30E943C240E94A0236093C2011D16FF +:103F300024F40E946A1D8093C3018091C30187FF0E +:103F400005C00E946A1D81958093C301111624F457 +:103F50000E946A1D8093C4018091C40187FF05C03F +:103F60000E946A1D81958093C401DF91CF911F91BA +:103F70000C94901E9F3F09F08FCF97CFDF91CF9188 +:103F80001F910895E0ECF1E085E0DF011D928A9534 +:103F9000E9F71092BF011092BE0108958FE196E0FB +:103FA0000E944A051F9281E08F931F9285E08F93B4 +:103FB00081ED95E09F938F930E94E3050F900F9002 +:103FC0000F900F900F900F9008958330E9F128F42F +:103FD000813061F0823009F10895853009F462C0C2 +:103FE00008F449C0863009F474C008958091120124 +:103FF000262F30E0280F311D2F3F310524F4680FA4 +:104000006093120103C08FEF80931201809112011F +:104010001F928F938AE095E072C080911101262F44 +:1040200030E0280F311D2F3F310524F4680F6093D5 +:10403000110103C08FEF80931101809111011F9234 +:104040008F9388EF94E05BC080911001262F30E0C1 +:10405000280F311D2F3F310524F4680F60931001A4 +:1040600003C08FEF80931001809110011F928F93F6 +:1040700085EE94E044C080910F01262F30E0280F98 +:10408000311D2F3F310524F4680F60930F0103C0E9 +:104090008FEF80930F0180910F011F928F9380ED1E +:1040A00094E02DC080910E01262F30E0280F311DA5 +:1040B0002F3F310524F4680F60930E0103C08FEF8A +:1040C00080930E0180910E011F928F9387EB94E0F5 +:1040D00016C080910D01262F30E0280F311D2F3F93 +:1040E000310524F4680F60930D0103C08FEF8093B6 +:1040F0000D0180910D011F928F938CE994E09F93A5 +:104100008F930E94E3050F900F900F900F900895EA +:10411000833081F128F4813059F08230D1F0089554 +:10412000853009F449C0B8F1863009F456C00895C5 +:1041300080911201681720F4861B8093120102C03F +:1041400010921201809112011F928F938DE894E0DA +:1041500054C080911101681720F4861B80931101CF +:1041600002C010921101809111011F928F938BE771 +:1041700094E043C080911001681720F4861B80935F +:10418000100102C010921001809110011F928F93B4 +:1041900088E694E032C080910F01681720F4861BF6 +:1041A00080930F0102C010920F0180910F011F92A6 +:1041B0008F9383E594E021C080910E01681720F46D +:1041C000861B80930E0102C010920E0180910E0199 +:1041D0001F928F938AE394E010C080910D016817BD +:1041E00020F4861B80930D0102C010920D01809176 +:1041F0000D011F928F938FE194E09F938F930E9404 +:10420000E3050F900F900F900F900895CF93C82F54 +:104210001F928F9384E297E09F938F930E94E30510 +:1042200081E090E0A0E0B0E0BC01CD0104C0660FE9 +:10423000771F881F991FCA95D2F70E94EA190F901D +:104240000F900F900F90CF910C94F615CF9387326B +:1042500088F58E3108F00BC18E3009F487C0D8F490 +:10426000873009F460C08B3009F44FC0863009F004 +:1042700002C18091B601817F8E7F8093B60189E271 +:1042800097E00E944A0586EE99E00E944A0581E087 +:104290008093C60146C0863109F4B0C020F4803155 +:1042A00009F47AC0E8C0893109F491C08B3109F46E +:1042B00049C0E1C0883349F150F4893209F4D5C0CE +:1042C000853309F4D2C0873209F0D5C0CEC083341B +:1042D00009F4CBC028F48A3308F4CDC08953C8C090 +:1042E000883409F0C8C00E94F61585ED99E00E9457 +:1042F0004A052FEF83ED90E3215080409040E1F795 +:1043000000C000000E94C31C0CC080E597E041C0C3 +:104310008CEB99E00E944A058091B6018160809300 +:10432000B601C1E0ADC08091B601C82FC17080FF59 +:10433000EFCF88EC99E00E944A058091B601817F19 +:104340008E7F3FC09091B60191FBCC27C0F981E0F0 +:10435000C827892FC0FB81F98093B601CC2319F0BF +:104360008FEA99E029C081EA99E013C09091B601E3 +:1043700092FBCC27C0F981E0C827892FC0FB82F9C6 +:104380008093B601CC2319F082E999E015C082E848 +:1043900099E00E944A05C5CF9091B60193FBCC27C6 +:1043A000C0F981E0C827892FC0FB83F98093B6014B +:1043B000CC2351F086E799E00E944A058091B6012E +:1043C00081608093B6015CC089E699E0E2CF8AE51E +:1043D00099E00E944A0585E399E00E944A058EEE25 +:1043E00098E00E944A0581EC98E00E944A058CE71B +:1043F00098E00E944A058EE498E0CBCF80E498E0F4 +:104400000E944A050E941A101F928F9386E298E03C +:104410009F938F930E94E30580910A011F928F93CF +:104420008FE098E09F938F930E94E3058091550160 +:104430001F928F938CEF97E09F938F930E94E305D9 +:104440000E94681C9F938F937F936F9385EE97E0F4 +:104450009F938F930E94E3058DB79EB742960FB648 +:10446000F8949EBF0FBE8DBF5CCF80E001C08D5120 +:104470000E94062156CF83EE97E00E944A05C0E0D5 +:104480008C2FCF91089580E0089580E00895CF9318 +:10449000C82F8091C601813081F020F0823009F46C +:1044A0004FC046C1E0910B01F0910C0180818E302C +:1044B00069F0873009F03EC109C0E0910B01F0912D +:1044C0000C0180818E3011F0873061F48C2F0E94B6 +:1044D0004322811104C08C2F0E9426212FC081E02D +:1044E00090E02CC08C2F0E944522811126C0C4313F +:1044F000E1F070F4CB3081F0C031D1F40E94CE1FD6 +:104500008CE197E00E944A0582E08093C60115C0C5 +:10451000C93259F0C83361F489E297E00E944A0534 +:1045200080E297E00E944A0508C01092C60104C1CB +:104530008AE197E00E944A05FFC081E08170FEC0D9 +:10454000C43228F5CE3108F0C1C0CB30A1F1D0F48F +:10455000C73009F0D3C08EE18093120182E38093CB +:1045600011018AE08093100184E180930F0188E0BB +:1045700080930E0188E280930D0180EC95E00E940B +:104580004A05BFC0C33149F1C431C1F0B7C0CB3413 +:1045900009F4A9C028F4C93289F0C83361F0AEC06B +:1045A000C13509F49EC0C23509F499C0CE3409F072 +:1045B000A5C06AE09EC00E94CE1FA3C08091C50125 +:1045C000882319F01092C5019CC08DEC95E00E94E3 +:1045D0004A0581E08093C601B1C087EA95E00E9458 +:1045E0004A0585E995E00E944A05809112011F92D3 +:1045F0008F9382E995E09F938F930E94E30580E972 +:1046000095E00E944A058EE795E00E944A05809158 +:1046100011011F928F938BE795E09F938F930E94D8 +:10462000E30589E795E00E944A058AE695E00E9445 +:104630004A05809110011F928F9387E695E09F9322 +:104640008F930E94E30585E695E00E944A0584E584 +:1046500095E00E944A0580910F011F928F9381E59A +:1046600095E09F938F930E94E3058FE495E00E946D +:104670004A058AE395E00E944A0580910E011F9247 +:104680008F9387E395E09F938F930E94E30585E3E3 +:1046900095E00E944A058EE195E00E944A058091CE +:1046A0000D011F928F938BE195E09F938F930E9452 +:1046B000E30589E195E00E944A058DB79EB74896CB +:1046C0000FB6F8949EBF0FBE8DBF1BC0CE51EC2F0E +:1046D000F0E0E95DFE4F80818093C50112C061E08A +:1046E00003C061E006C06AE08091C5010E94E51F39 +:1046F00008C08091C5010E94882003C08EEB95E020 +:1047000013C08091C501882369F01F928F9388EBB5 +:1047100095E09F938F930E94E3050F900F900F9069 +:104720000F9004C085EB95E00E944A0581E006C029 +:104730001092C60180E002C080E000CFCF910895C2 +:104740000E94A7236894B1110C94362408950E9406 +:104750001B2488F09F5798F0B92F9927B751B0F0D4 +:10476000E1F0660F771F881F991F1AF0BA95C9F7F5 +:1047700014C0B13091F00E943524B1E008950C943A +:104780003524672F782F8827B85F39F0B93FCCF3ED +:10479000869577956795B395D9F73EF49095809572 +:1047A000709561957F4F8F4F9F4F0895E89409C092 +:1047B00097FB3EF490958095709561957F4F8F4F54 +:1047C0009F4F9923A9F0F92F96E9BB279395F6956A +:1047D000879577956795B795F111F8CFFAF4BB0FE8 +:1047E00011F460FF1BC06F5F7F4F8F4F9F4F16C04C +:1047F000882311F096E911C0772321F09EE8872FD6 +:10480000762F05C0662371F096E8862F70E060E091 +:104810002AF09A95660F771F881FDAF7880F96950A +:10482000879597F9089557FD9058440F551F59F0F3 +:104830005F3F71F04795880F97FB991F61F09F3F8D +:1048400079F087950895121613061406551FF2CFB6 +:104850004695F1DF08C0161617061806991FF1CF06 +:1048600086957105610508940895E894BB2766272D +:104870007727CB0197F908950E944F240C94C02408 +:104880000E94B22438F00E94B92420F0952311F040 +:104890000C94A9240C94AF2411240C9436240E9467 +:1048A000132470F3959FC1F3950F50E0551F629F3D +:1048B000F001729FBB27F00DB11D639FAA27F00D79 +:1048C000B11DAA1F649F6627B00DA11D661F829FA0 +:1048D0002227B00DA11D621F739FB00DA11D621F85 +:1048E000839FA00D611D221F749F3327A00D611DA2 +:1048F000231F849F600D211D822F762F6A2F112484 +:104900009F5750409AF0F1F088234AF0EE0FFF1FB6 +:10491000BB1F661F771F881F91505040A9F79E3F0D +:10492000510580F00C94A9240C9436245F3FE4F3E5 +:10493000983ED4F3869577956795B795F795E79563 +:104940009F5FC1F7FE2B880F911D9695879597F96C +:10495000089597F99F6780E870E060E008959FEF01 +:1049600080EC089500240A94161617061806090606 +:10497000089500240A9412161306140605060895D5 +:10498000092E0394000C11F4882352F0BB0F40F45D +:10499000BF2B11F460FF04C06F5F7F4F8F4F9F4F9D +:1049A0000895991B79E004C0991F961708F0961B8B +:1049B000881F7A95C9F78095089597FB072E16F4FE +:1049C000009407D077FD09D00E94F72407FC05D09A +:1049D0003EF4909581959F4F0895709561957F4F16 +:1049E0000895EE0FFF1F0590F491E02D0994AA1B86 +:1049F000BB1B51E107C0AA1FBB1FA617B70710F0CA +:104A0000A61BB70B881F991F5A95A9F780959095FB +:0A4A1000BC01CD010895F894FFCF1A +:104A1A008508760953091F09EB0801AC0128081417 +:104A2A000A321E404D362270032303ED02CB025791 +:104A3A000270028902A2020102030405060708099C +:024A4A0000006A +:106800000000000000000000040005000600070072 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280000002A002B002C002D002E002F0005 +:10686000300031A1320033003400350036003700EB +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000004F00A9 +:1068A000500051005200530067005400550056003C +:1068B000580059005A005B005C005D005E005F00FC +:1068C0006000610062006300640000005700000087 +:1068D00000000000000000000000000000000000B8 +:1068E00000000000000000000000000000000000A8 +:1068F0000000E100E200E300000000000000F1A160 +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010000004C00010001004400450052000D +:1069600049000100010050004F0029004D004E0079 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E000010001000100010001000100010001009F +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/m0110_usb/binary/m0110_usb_rev2_unimap.hex b/converter/m0110_usb/binary/m0110_usb_rev2_unimap.hex new file mode 100644 index 00000000..fd7f83f2 --- /dev/null +++ b/converter/m0110_usb/binary/m0110_usb_rev2_unimap.hex @@ -0,0 +1,1215 @@ +:100000000C94D6040C941D050C941D050C941D0530 +:100010000C941D050C941D050C941D050C941D05D8 +:100020000C941D050C941D050C941D050C94580D85 +:100030000C94070E0C94C01B0C941D050C941D050C +:100040000C941D050C941D050C941D050C94341C7A +:100050000C941D050C941D050C941D050C941D0598 +:100060000C941D050C941D050C941D050C941D0588 +:100070000C941D05740E960E840F960E840FDB0EE5 +:10008000FE0E840F530F660FA012A012CD12CD12D8 +:10009000281364135C155C157C135C1577147714B6 +:1000A00032155C155C154815041607090B0A1D1B53 +:1000B00006198005141A08151C171E1F202123225B +:1000C0002E26242D25273012182F0C13280F0D341F +:1000D0000E333136381110372B2C352A7F80807B38 +:1000E00079397A808080808080634F80808050530F +:1000F0005180808058525780808062595A5B5C5D85 +:100100005E5F8060618080808080568080806680B5 +:1001100054808080805580800A0025303862003A03 +:10012000200025303258000A722F632030313233DC +:10013000343536370A005D0A0025303258005B003E +:10014000200025303258002831290A002832290A97 +:10015000002833290A002834290A000A00253032F1 +:1001600058006D303131305F726563762065727290 +:100170003A20000A0025303258006D303131305FAE +:1001800073656E64206572723A20005B735D004B8C +:100190006579626F6172642073746172742E0A00F3 +:1001A00055534220636F6E666967757265642E0AE7 +:1001B000005B575D005B535D005B525D0032034D99 +:1001C00000300031003100300020006B0065007904 +:1001D0000062006F00610072006400200063006F25 +:1001E000006E007600650072007400650072000009 +:1001F000000E0374002E006D002E006B002E000018 +:10020000000403090409027400040100A032090477 +:100210000000010301010009211101000122400039 +:100220000705810308000A09040100010301020017 +:10023000092111010001224D000705820308000A6F +:10024000090402000103000000092111010001223C +:1002500036000705830308000A09040300020300AF +:10026000000009211101000122220007058403205A +:100270000001070504032000011201100100000025 +:1002800008EDFE10010101010200010631FF0974B1 +:10029000A1010975150026FF009520750881020946 +:1002A00076150026FF00952075089102C00501090A +:1002B00080A101850216810026B7001A81002AB7A5 +:1002C00000751095018100C0050C0901A10185038D +:1002D000160100269C021A01002A9C027510950145 +:1002E0008100C005010902A1010901A10005091948 +:1002F00001290515002501950575018102950175F6 +:100300000381010501093009311581257F950275A9 +:1003100008810609381581257F9501750881060534 +:100320000C0A38021581257F950175088106C0C029 +:1003300005010906A101050719E029E715002501B6 +:10034000950875018102950175088101050819015B +:100350002905950575019102950175039101050720 +:10036000190029FF150026FF00950675088100C0B9 +:100370000A002530325820006B6579626F61726423 +:100380005F7265706F72743A20004C45443A2025C4 +:100390003032580A00290A002575002F0025750003 +:1003A0005D280025640020002564002000256400ED +:1003B00020002564007C0025303258006D6F757375 +:1003C000656B6579205B62746E7C7820792076207D +:1003D000685D287265702F61636C293A205B006D3F +:1003E0006B5F776865656C5F74696D655F746F5F7F +:1003F0006D6178203D2025640A006D6B5F7768652C +:10040000656C5F6D61785F7370656564203D202564 +:10041000640A006D6B5F74696D655F746F5F6D6119 +:1004200078203D2025640A006D6B5F6D61785F73F5 +:1004300070656564203D2025640A006D6B5F696E00 +:1004400074657276616C203D2025640A006D6B5FD7 +:1004500064656C6179203D2025640A006D6B5F77CF +:100460006865656C5F74696D655F746F5F6D6178F9 +:10047000203D2025640A006D6B5F776865656C5FC1 +:100480006D61785F7370656564203D2025640A00A6 +:100490006D6B5F74696D655F746F5F6D6178203D32 +:1004A0002025640A006D6B5F6D61785F7370656510 +:1004B00064203D2025640A006D6B5F696E7465726F +:1004C00076616C203D2025640A006D6B5F64656C6D +:1004D0006179203D2025640A000A00257500363A1E +:1004E00020776865656C5F74696D655F746F5F6DBB +:1004F00061783A20000A00257500353A2077686552 +:10050000656C5F6D61785F73706565643A20000AA1 +:1005100000257500343A2074696D655F746F5F6DF6 +:1005200061783A20000A00257500333A206D617821 +:100530005F73706565643A20000A00257500323AE1 +:1005400020696E74657276616C286D73293A20009B +:100550000A00257500313A2064656C6179282A31DA +:10056000306D73293A20000A092D2056616C75659B +:1005700073202D0A004D3E004D25643E20003F00B3 +:100580007365742064656661756C740A00433E206F +:100590000077686572652064656C74613A206375E4 +:1005A00072736F723D25642C20776865656C3D25FC +:1005B000640A53656520687474703A2F2F656E2E37 +:1005C00077696B6970656469612E6F72672F7769EF +:1005D0006B692F4D6F7573655F6B6579730A000AE0 +:1005E000092D204D6F7573656B6579202D0A455374 +:1005F000432F713A09717569740A313A0964656C5F +:100600006179282A31306D73290A323A09696E748A +:10061000657276616C286D73290A333A096D6178C9 +:100620005F73706565640A343A0974696D655F7457 +:100630006F5F6D61780A353A09776865656C5F6D43 +:1006400061785F73706565640A363A097768656535 +:100650006C5F74696D655F746F5F6D61780A0A70B5 +:100660003A097072696E742076616C7565730A64FC +:100670003A097365742064656661756C74730A75F4 +:10068000703A092B310A646F776E3A092D310A707E +:100690006775703A092B31300A7067646F776E3A6C +:1006A000092D31300A0A7370656564203D20646548 +:1006B0006C7461202A206D61785F737065656420B9 +:1006C0002A2028726570656174202F2074696D6519 +:1006D0005F746F5F6D6178290A003F004D3E200016 +:1006E000433E20004C25640A000A092D20436F6E0A +:1006F000736F6C65202D0A4553432F713A0971754C +:1007000069740A6D3A096D6F7573656B65790A00D6 +:100710000A092D204D61676963202D0A643A096436 +:10072000656275670A783A096465627567206D616C +:10073000747269780A6B3A096465627567206B6543 +:1007400079626F6172640A6D3A0964656275672047 +:100750006D6F7573650A763A0976657273696F6EA7 +:100760000A733A097374617475730A633A09636FA3 +:100770006E736F6C65206D6F64650A302D343A09B5 +:100780006C61796572302D34284631302D4634291C +:100790000A506175733A09626F6F746C6F616465BA +:1007A000720A003F0074696D65725F72656164333F +:1007B0003228293A202530346C580A006B6579625A +:1007C0006F6172645F69646C653A2025580A006B3A +:1007D0006579626F6172645F70726F746F636F6C62 +:1007E0003A2025580A00686F73745F6B6579626FF1 +:1007F0006172645F6C65647328293A2025580A0089 +:100800000A092D20537461747573202D0A00474323 +:10081000433A20342E392E32204156522D4C494233 +:10082000433A20312E382E3073766E204156525F77 +:10083000415243483A2061767233350A004F505492 +:10084000494F4E533A204C554641204D4F55534544 +:100850004B45592045585452414B455920434F4E22 +:10086000534F4C4520434F4D4D414E44204B45592D +:100870004D41505F53454354494F4E203430393633 +:100880000A004255494C443A206337666435666332 +:100890002D6469727479202830343A31393A31390B +:1008A000205365702031332032303136290A00560A +:1008B00049443A2030784645454428742E6D2E6BC5 +:1008C0002E29205049443A20307830313130284D9B +:1008D00030313130206B6579626F61726420636FF3 +:1008E0006E76657274657229205645523A203078CA +:1008F000303130310A00444553433A20636F6E76FD +:10090000657274204D30313130206B6579626F61D2 +:10091000726420746F205553420A000A092D205634 +:10092000657273696F6E202D0A000A6D6F757365AD +:100930003A206F66660A000A6D6F7573653A206F1C +:100940006E0A000A6B6579626F6172643A206F66A5 +:10095000660A000A6B6579626F6172643A206F6E95 +:100960000A000A6D61747269783A206F66660A003F +:100970000A6D61747269783A206F6E0A000A6465C4 +:100980006275673A206F6E0A000A64656275673A9D +:10099000206F66660A000A0A626F6F746C6F61648A +:1009A00065722E2E2E2000433E20000011241FBE13 +:1009B000CFEFD4E0DEBFCDBF04B603FE27C08091E9 +:1009C000D4019091D501A091D601B091D701873083 +:1009D000904BA740B04BD1F41092D4011092D501A6 +:1009E0001092D6011092D70114BE84B7877F84BFBE +:1009F0000FB6F894A895809160008861809360009C +:100A0000109260000FBEE0E0F8E3099511E0A0E06D +:100A1000B1E0E4E9F9E402C005900D92A233B10718 +:100A2000D9F721E0A2E3B1E001C01D92A43DB207D5 +:100A3000E1F70E94A50A0C94C8240C940000FF93CF +:100A4000EF93E0913201F0913301309709F009956D +:100A5000EF91FF910895FC018591803011F0EFDF57 +:100A6000FBCF0895FF27E0E230E247FF0CC041953D +:100A700097FF09C0EDE26095709580959095611D96 +:100A8000711D811D911D27FF02C0219530E350E2A9 +:100A9000AA27660F771F881F991FAA1FA41710F097 +:100AA000A41B63955A95A9F7AA3008F0A95FA05D29 +:100AB000AF93F395611571058105910541F7ED320D +:100AC00011F4EF93F395F21718F43F93F395FBCFDE +:100AD0008F91B5DFFA95E1F70895E991F991859144 +:100AE000803021F0853219F0AADFF9CF089520E097 +:100AF000E89455915532C1F3503311F468945591EF +:100B00005A3348F4505390F3220F022E220F220F33 +:100B1000200D250FF4CF0EF421958991999153362C +:100B200019F3533729F1533559F1BC018827992717 +:100B3000E8945C3621F489919991689455915436E2 +:100B400039F446EF7EF077FF0DC08FEF9FEF0AC0BC +:100B500055374AE039F0583540E121F0523642E04D +:100B600009F00895FF93EF937DDFEF91FF91B7CFE9 +:100B7000FF93EF93FC0181918030B9F360DFFBCFED +:100B8000FF93EF9368DFF1CFDF93CF93CDB7DEB75D +:100B90002596A3DFCF91DF9108950E94C206E4E37A +:100BA000F1E08EE08E0F11928E13FDCF84E391E081 +:100BB0009093430180934201569A5E9A2FEF89E603 +:100BC00098E1215080409040E1F700C00000569A23 +:100BD0005E980895CF93109244010E94DC07C82FBD +:100BE0008B3709F444C08F3F09F441C081E0809302 +:100BF00044018C2F869586958695E0914201F0916F +:100C000043014C2F4770C7FF0EC08F70E80FF11DD6 +:100C100021E030E001C0220F4A95EAF7209580815B +:100C2000282320830BC0E80FF11D81E090E001C074 +:100C3000880F4A95EAF79081892B80838091B601CD +:100C400080FF17C08EE391E00E942B051F92CF9387 +:100C500089E391E09F938F930E94C40586E391E01E +:100C60000E942B050F900F900F900F9002C080E014 +:100C700001C081E0CF91089520914201309143015C +:100C8000F901E80FF11D80810895EF92FF920F9313 +:100C90001F93CF93DF9387E291E00E942B05C0E082 +:100CA000D0E082E2E82E81E0F82E0AE111E0DF9345 +:100CB000CF93FF92EF920E94C4058FE191E00E94D2 +:100CC0002B05E0914201F0914301EC0FFD1F808163 +:100CD0000E94591B1F928F931F930F930E94C4056C +:100CE00088E191E00E942B0521968DB79EB708966A +:100CF0000FB6F8949EBF0FBE8DBFCE30D105B9F6AA +:100D0000DF91CF911F910F91FF90EF900895569A28 +:100D100081FF02C05E9A08955E9808955198599A8D +:100D200008955898509A08955098589A089551984F +:100D3000599A85E08A95F1F7000089B1869581700E +:100D40000895CF93DF93EC010E949706882341F02A +:100D5000209731F085E08A95F1F700002197F4CFD4 +:100D6000CE01DF91CF9108958B3741F08F3F41F055 +:100D7000982F9F7796958078892B08958BE7089513 +:100D80008FEF08950E948E060E9494062FEF83ED48 +:100D900090E3215080409040E1F700C000000895AA +:100DA000EF92FF920F931F93CF93DF93E82E109251 +:100DB00048010E948E060E949106CAEFD0E088EE9C +:100DC00093E00E94A106892B21F42197C1F781E0CD +:100DD00036C008E010E080E8F82E8AEF90E00E942C +:100DE000A106892B11F483E02AC08F2D8E2129F0D2 +:100DF0000E949406C8ECD0E00AC00E949106FACF87 +:100E0000209759F025E02A95F1F7000021970E94DC +:100E100097068823A9F3CD2B11F484E010C0F69433 +:100E200001501109D1F68FE891E00197F1F700C068 +:100E300000000E948E060E94940681E026C08093E6 +:100E400048018AE791E00E942B05809148011F929A +:100E50008F9385E791E09F938F930E94C40583E76A +:100E600091E00E942B059FEF29E688E191502040F8 +:100E70008040E1F700C000000E948E060E949406A8 +:100E80000F900F900F900F9080E0DF91CF911F9106 +:100E90000F91FF90EF9008950F931F93CF93DF93DF +:100EA00010924801CAEFD0E088EE93E00E94A106BC +:100EB000892B21F42197C1F781E02FC0D8E0C0E051 +:100EC000CC0F88EC90E00E94A106892B11F482E0FF +:100ED00024C008EC10E00E94970681110AC0011599 +:100EE000110549F025E02A95F1F70000015011099C +:100EF000F2CF012B11F483E010C05098589A85E08E +:100F00008A95F1F700004899C160D150C9F60E9456 +:100F10008E060E9494068C2F26C08093480182E69C +:100F200091E00E942B05809148011F928F938DE5DF +:100F300091E09F938F930E94C4058BE591E00E94FE +:100F40002B059FEF29E688E1915020408040E1F792 +:100F500000C000000E948E060E9494060F900F9021 +:100F60000F900F908FEFDF91CF911F910F91089508 +:100F7000CF9384E10E94D0060E944C07C82F8B3784 +:100F8000C1F08091B60180FF0CC01F92CF9382E424 +:100F900091E09F938F930E94C4050F900F900F9044 +:100FA0000F908091B60180FF04C080E491E00E9420 +:100FB0002B058C2FCF910895CF93DF93809147011C +:100FC000882319F0109247017EC080914601882342 +:100FD00019F01092460177C0C0914501CC2319F059 +:100FE0001092450103C00E94B807C82F8C2F8F773D +:100FF0008137B1F0893709F061C00E94B807982F96 +:101000009F779D3041F018F4953039F404C0913148 +:1010100011F09B3111F487FD37C00E94B4063AC02D +:101020000E94B807982F9F77913719F0993721F0D0 +:1010300041C08093450142C00E94B807D82F8F77E6 +:101040008D3041F018F4853081F504C0813111F004 +:101050008B3159F5C7FF11C0D7FF0AC086E591E073 +:101060000E942B058C2F0E94B406809346010BC072 +:1010700081E591E00E942B0521C0D7FF0DC08CE4D3 +:1010800091E00E942B058D2F0E94B406982F906648 +:1010900090934701806417C087E491E00E942B057C +:1010A0008D2F0E94B40680660EC08D2F0E94B4065C +:1010B000806402C00E94B406809347018C2FDF91A8 +:1010C000CF910C94B406DF91CF9108958091540193 +:1010D00008959FB7F89410924B019FBF9091CB0158 +:1010E000943009F057C09091E9009F703091EC0066 +:1010F000232F217030FD20E8922B24E02093E9007B +:101100002091EB0020FF43C02091EE0027FF3FC05D +:1011100020914901222321F02091E80025FF37C0CA +:101120001092490126E03091E80035FD15C030915C +:10113000CB01343061F53091EB0035FD28C02150F2 +:1011400021F481E08093490122C0EFE9FFE031976B +:10115000F1F700C00000E7CF8093F1008091E80034 +:1011600085FD0AC08091E80080FFFCCF8091E800F7 +:101170008E778093E80006C08FB7F89421E0209323 +:101180004B018FBF9F709093E90080E008959F709E +:101190009093E9008FEF0895CF93DF9300D01F92D3 +:1011A000CDB7DEB79C018091CB01843019F593E077 +:1011B00099833B832A839093E9008FEF9091E80015 +:1011C000815095FD06C095ED9A95F1F700008111CB +:1011D000F5CF8091E80085FF0DC040E050E063E06E +:1011E00070E0CE0101960E94660B8091E8008E7738 +:1011F0008093E8000F900F900F90DF91CF910895AA +:10120000CF93DF9300D01F92CDB7DEB72091CB01F3 +:10121000243021F522E029839B838A8383E0809315 +:10122000E9008FEF9091E800815095FD06C095EDA3 +:101230009A95F1F700008111F5CF8091E80085FFC4 +:101240000DC040E050E063E070E0CE0101960E94E6 +:10125000660B8091E8008E778093E8000F900F90E6 +:101260000F90DF91CF9108952091CB012430F1F4BC +:1012700022E02093E9002FEF3091E800215035FD66 +:1012800006C035ED3A95F1F700002111F5CF209118 +:10129000E80025FF0BC040E050E065E070E00E94F0 +:1012A000660B8091E8008E778093E8000895CF93D5 +:1012B000DF932091CB01243039F521E02093E90020 +:1012C0002FEF3091E800215035FD06C035ED3A95FD +:1012D000F1F700002111F5CF2091E80025FF14C09F +:1012E000EC0140E050E068E070E00E94660B809105 +:1012F000E8008E778093E80088E0FE01ACE4B1E07E +:1013000001900D928A95E1F7DF91CF91089589EBD5 +:1013100091E00C942B0520914A012F5F822F62E30C +:101320000E948E24992319F020934A010895109267 +:101330004A0180914B01882371F18091CB01843067 +:1013400041F58091E9008F702091EC00922F91700F +:1013500020FD90E8892B94E09093E9009091EB00B8 +:1013600090FF14C09091EE0097FF10C09091E8009C +:1013700095FF03C01092F100F9CF9091E80090FF23 +:1013800005C09091E8009E779093E8008F7080935D +:10139000E90010924B01089542E061EC81E00E9467 +:1013A0006F0C42E061EC82E00E946F0C42E061EC65 +:1013B00083E00E946F0C42E261EC84E00C946F0CBD +:1013C0008091CD01833009F453C030F4813071F045 +:1013D000823009F48CC008958A3009F478C08B30CB +:1013E00009F45EC0893009F09AC020C08091CC0118 +:1013F000813A09F094C08091E800877F8093E800EB +:101400008091D0019091D101892B21F468E08CE486 +:1014100091E003C060E080E090E070E00E94B10BDA +:101420008091E8008B778093E80008958091CC014B +:10143000813209F074C08091D0019091D101892B43 +:1014400009F06DC08091E800877F8093E80080916B +:10145000E80082FD05C08091CB018111F8CF5FC00B +:101460008091F100809354018091E8008B7753C004 +:101470008091CC01813A09F052C08091D0019091C5 +:10148000D101892B09F04BC08091E800877F8093C0 +:10149000E8008091E80080FFFCCF80910A0136C00F +:1014A0008091CC018132D9F58091D0019091D10108 +:1014B000892BA9F58091E800877F8093E8000E943E +:1014C000A40C8091CE0180930A010C947D1580912B +:1014D000CC01813221F58091E800877F8093E8007C +:1014E0000E94A40C8091CF018093550108958091B2 +:1014F000CC01813AA1F48091E800877F8093E800D5 +:101500008091E80080FFFCCF809155018093F1002D +:101510008091E8008E778093E8000C94A40C0895E5 +:1015200008950895089585EB91E00E942B050C9491 +:10153000920A0E947F1B8091C901882329F00E9492 +:10154000AA1B81110C94500B089584B7877F84BF28 +:101550000FB6F894A8958091600088618093600030 +:10156000109260000FBE90E080E80FB6F894809370 +:101570006100909361000FBE0E94900A0E942E109D +:101580000E94F50C0E94480D8091E20084608093D7 +:10159000E20089E698E00E94541B78948091CB0188 +:1015A0008430E1F780EA91E00E942B050E94301020 +:1015B00080E091E00E949C0F8FE891E00E942B0553 +:1015C0000E94910A8091CB01853039F48BE891E03B +:1015D0000E942B050E94990AF5CF0E943410F2CF89 +:1015E0000C94BE1B81EB91E00E942B050C94F00A39 +:1015F000292F332723303105C9F064F42130310518 +:1016000081F02230310509F043C084E790E025E005 +:1016100032E042C021323105F1F02232310541F190 +:1016200037C082E190E029E732E036C09927813067 +:10163000910541F08230910541F0892B49F5E1E0B7 +:10164000F2E005C0E1EFF1E002C0EDEBF1E08491E2 +:1016500090E09F0121C06430D8F4E62FF0E0EE0F57 +:10166000FF1FE15EFE4F2081318189E090E014C0D0 +:10167000643070F470E0FB01EE0FFF1FE95EFE4F77 +:1016800020813181FB01ED5EFE4F808190E004C03E +:1016900080E090E020E030E0FA013183208308957B +:1016A00084E089BD86E089BD09B400FEFDCF80914C +:1016B000D8008F7D8093D8008091E0008260809375 +:1016C000E0008091E00081FDFCCF0895CF92DF9291 +:1016D000EF92FF920F931F93CF93DF93EC018B0157 +:1016E0006A010E94C30C811133C0C114D10439F0C6 +:1016F000F60180819181081B190BC80FD91FE12CBD +:10170000F12C0115110519F18091E80085FD16C035 +:101710008091E8008E778093E800C114D10449F0ED +:10172000F60180819181E80EF91EF182E08285E068 +:101730000FC00E94C30C882321F30AC089918093B3 +:10174000F10001501109FFEFEF1AFF0ADACF80E034 +:10175000DF91CF911F910F91FF90EF90DF90CF908D +:1017600008952091D2013091D3012617370748F010 +:101770006115710539F42091E8002E772093E80077 +:1017800001C0B90140E06115710591F12091CB01D3 +:10179000222309F440C0253009F43FC02091E8001D +:1017A00023FD3DC02091E80022FD2FC02091E800DC +:1017B00020FFE9CF2091F20030E0FC01CF0161155C +:1017C000710559F02830310540F481918093F10082 +:1017D000615071092F5F3F4FF1CF41E02830310553 +:1017E00009F040E02091E8002E772093E800CBCF6D +:1017F0004111CCCF0AC08091CB01882361F08530A4 +:1018000061F08091E80083FD0AC08091E80082FFCA +:10181000F2CF80E0089582E0089583E0089581E0AA +:1018200008952091D2013091D3012617370748F04F +:101830006115710539F42091E8002E772093E800B6 +:1018400001C0B901FC0120E06115710579F18091B9 +:10185000CB01882309F43DC0853009F43CC0809158 +:10186000E80083FD3AC08091E80082FD2CC08091A1 +:10187000E80080FFE9CF8091F20090E061157105EA +:1018800059F08830910540F424912093F10031966D +:10189000615071090196F2CF21E0089709F020E02C +:1018A0008091E8008E778093E800CECF2111CFCFD2 +:1018B0000AC08091CB01882361F0853061F080916E +:1018C000E80083FD0AC08091E80082FFF2CF80E04B +:1018D000089582E0089583E0089581E00895982FA7 +:1018E000953058F59093E900981739F07091EC0015 +:1018F0002091ED005091F00003C0242F762F50E08E +:1019000021FF19C03091EB003E7F3093EB00309106 +:10191000ED003D7F3093ED003091EB00316030936E +:10192000EB007093EC002093ED005093F0002091B9 +:10193000EE0027FF07C09F5FD3CF8F708093E90031 +:1019400081E0089580E008958091CC0187FF11C067 +:101950008091E80082FD05C08091CB018111F8CF14 +:1019600011C08091E8008B770BC08091CB01882358 +:1019700049F08091E80080FFF8CF8091E8008E77F1 +:101980008093E80008952091E4003091E50095E609 +:101990004091EC00842F817040FF22C08091E800CC +:1019A00080FD1CC08091CB01882391F0853091F09F +:1019B0008091EB0085FD10C04091E4005091E5005E +:1019C0004217530729F39A01915011F784E00895C3 +:1019D00082E0089583E0089581E0089580E008950D +:1019E0004091E80042FFDECF08950E94520D0E9410 +:1019F000550DE0EEF0E0808181608083E8EDF0E05D +:101A000080818F77808319BCE3E6F0E0808181607C +:101A100080831092CA0108950E94520D0E94550DB4 +:101A20008091D8008F778093D8008091D80080680B +:101A30008093D8008091D8008F7D8093D80084E077 +:101A400089BD86E089BD09B400FEFDCF1092CB01AF +:101A50001092C7011092C9011092C80142E060E0E3 +:101A600080E00E946F0C8091E1008E7F8093E10006 +:101A70008091E20081608093E2008091E2008860C2 +:101A80008093E2008091E0008E7F8093E0000895D3 +:101A9000E3E6F0E080818E7F808381E08093CA015D +:101AA0000C940C0D1092E20008951092E10008953C +:101AB0001F920F920FB60F9211242F933F934F93C3 +:101AC0005F936F937F938F939F93AF93BF93EF93A6 +:101AD000FF938091E10082FF0BC08091E20082FFC2 +:101AE00007C08091E1008B7F8093E1000E948B0909 +:101AF0008091E10080FF19C08091E20080FF15C055 +:101B00008091E2008E7F8093E2008091E20080610C +:101B10008093E2008091D80080628093D80019BC45 +:101B200085E08093CB010E94930A8091E10084FFBD +:101B300030C08091E20084FF2CC084E089BD86E043 +:101B400089BD09B400FEFDCF8091D8008F7D8093C0 +:101B5000D8008091E1008F7E8093E1008091E200C7 +:101B60008F7E8093E2008091E20081608093E200AA +:101B70008091C701882311F084E007C08091E300C1 +:101B800087FD02C081E001C083E08093CB010E9409 +:101B9000F20A8091E10083FF29C08091E20083FF77 +:101BA00025C08091E100877F8093E10082E08093EF +:101BB000CB011092C7018091E1008E7F8093E100FC +:101BC0008091E2008E7F8093E2008091E20080614C +:101BD0008093E20042E060E080E00E946F0C809120 +:101BE000F00088608093F0000E948709FF91EF91D8 +:101BF000BF91AF919F918F917F916F915F914F9125 +:101C00003F912F910F900FBE0F901F9018951F922C +:101C10000F920FB60F9211242F933F934F935F9320 +:101C20006F937F938F939F93AF93BF93CF93DF93E4 +:101C3000EF93FF93C091E900CF708091EC00D82F13 +:101C4000D17080FDD0E81092E9008091F000877F8C +:101C50008093F00078940E944B0E1092E9008091DE +:101C6000F00088608093F000CD2BCF70C093E90026 +:101C7000FF91EF91DF91CF91BF91AF919F918F91A4 +:101C80007F916F915F914F913F912F910F900FBE78 +:101C90000F901F9018951F93CF93DF93CDB7DEB7AA +:101CA000AA970FB6F894DEBF0FBECDBFECECF1E003 +:101CB00088E08E0F9091F10091938E13FBCF0E94DC +:101CC000E0098091E80083FF1FC18091CC019091D1 +:101CD000CD01492F50E04A30510508F015C1FA01F5 +:101CE000E65CFF4F0C94AE24803881F0823809F016 +:101CF0000BC18091D0018F708093E9008091EB003F +:101D000085FB882780F91092E90006C08091C80100 +:101D10009091C901911182609091E800977F909312 +:101D2000E8008093F1001092F100C8C0282F2D7FA9 +:101D300009F0EAC0882319F0823061F0E5C0809193 +:101D4000CE01813009F0E0C0933009F080E080934B +:101D5000C9012BC08091CE01811127C08091D00193 +:101D60008F7009F4D1C08093E9002091EB0020FF2F +:101D70001CC0933021F48091EB00806214C09091DC +:101D8000EB0090619093EB0021E030E0A90102C0EC +:101D9000440F551F8A95E2F74093EA001092EA003B +:101DA0008091EB0088608093EB001092E9008091B5 +:101DB000E800877F86C08111A7C01091CE011F77F0 +:101DC0008091E3008078812B8093E3008091E8008C +:101DD000877F8093E8000E94A40C8091E80080FF38 +:101DE000FCCF8091E30080688093E300111102C072 +:101DF00082E001C083E08093CB0186C080588230AE +:101E000008F082C08091CE019091CF018C3D53E0CB +:101E1000950779F583E08A838AE289834FB7F8943E +:101E2000DE01139620E03EE051E2E32FF0E0509314 +:101E30005700E49120FF03C0E295EF703F5FEF7021 +:101E40008E2F90E0EA3010F0C79601C0C0968D93B7 +:101E50009D932F5F243149F74FBF8091E800877F22 +:101E60008093E8006AE270E0CE0101960E94B10B17 +:101E700014C0AE014F5F5F4F6091D0010E94F80A1D +:101E8000BC01892B09F440C09091E800977F9093A2 +:101E9000E80089819A810E94110C8091E8008B777B +:101EA0008093E80031C0803879F58091E800877F21 +:101EB0008093E8008091C7018093F1008091E80051 +:101EC0008E778093E8000E94A40C1EC081111CC074 +:101ED0009091CE019230C0F48091E800877F80938A +:101EE000E8009093C7010E94A40C8091C701811162 +:101EF00006C08091E30087FD02C081E001C084E05C +:101F00008093CB010E94CC098091E80083FF0AC036 +:101F10008091E800877F8093E8008091EB008062E9 +:101F20008093EB00AA960FB6F894DEBF0FBECDBF2C +:101F3000DF91CF911F91089590935B0180935A0197 +:101F40000895E0915A01F0915B01309721F00190E2 +:101F5000F081E02D099480E00895EF92FF920F93B5 +:101F60001F93CF93DF93E0915A01F0915B0130977B +:101F7000B1F18C010280F381E02D09958091B601C9 +:101F800082FF2DC080FF04C088E793E00E942B05EC +:101F9000E80118E082E7E82E83E0F82E8091B60190 +:101FA00080FF0BC088811F928F93FF92EF920E9457 +:101FB000C4050F900F900F900F90115021961111A2 +:101FC000EDCF8091B60180FF0AC080E793E0DF91FA +:101FD000CF911F910F91FF90EF900C942B05DF9103 +:101FE000CF911F910F91FF90EF900895E0915A01CA +:101FF000F0915B01309721F00480F581E02D099488 +:10200000089520915801309159018217930771F07A +:102010009093590180935801E0915A01F0915B012E +:10202000309721F00680F781E02D099408952091E2 +:102030005601309157018217930771F09093570121 +:1020400080935601E0915A01F0915B01309721F0A5 +:102050000084F185E02D0994089508950C942D10C5 +:102060000E94E91B0C94CD05CF92DF92EF92FF9274 +:102070000F931F93CF93DF9300D000D000D0CDB744 +:10208000DEB70E94EA058DE5C82E81E0D82E00E07B +:1020900010E0E02E802F0E943C06F60141916F0176 +:1020A000F42EF826B1F40F5F1F4F0E30110589F79B +:1020B0008FEF89838A831B820E94F21B8160782FB5 +:1020C0009D838C8349815A816B818D810E94F3109D +:1020D00047C09091B60191FF04C08E830E944506CF +:1020E0008E8120E030E04F2D50E0922FBA01022E79 +:1020F00002C0759567950A94E2F760FF2BC02983AB +:10210000EA8221E030E0690102C0CC0CDD1C9A9526 +:10211000E2F790E08C219D21892B09F420E02B83AC +:102120000E94F21B8160782F9D838C8349815A81A4 +:102130006B818D810E94F31049815A816B817C8172 +:102140008D810E946C1BF801E35AFE4F8081C826E6 +:10215000C08206C02F5F3F4F2830310531F6A3CF34 +:102160000E946B1B0E94BF1E10915C010E94A10F78 +:10217000181741F10E94A10F80935C019091B60164 +:1021800092FF0EC090FF0CC01F928F938AE893E0DD +:102190009F938F930E94C4050F900F900F900F9004 +:1021A00080915C0126960FB6F894DEBF0FBECDBFBE +:1021B000DF91CF911F910F91FF90EF90DF90CF9023 +:1021C0000C947D1B26960FB6F894DEBF0FBECDBFD4 +:1021D000DF91CF911F910F91FF90EF90DF90CF9003 +:1021E00008950C948706CF93DF93CDB7DEB72B9776 +:1021F0000FB6F894DEBF0FBECDBF942F4F83252FAF +:10220000588769877A878B874A855B85452B21F0BC +:102210002F3F09F59F3FF9F4DE01119686E0FD019D +:1022200011928A95E9F785E0FE01379601900D92AB +:102230008A95E1F749815A816B817C818D819E81EC +:102240000E9426182B960FB6F894DEBF0FBECDBFA6 +:10225000DF91CF9108954F81588569857A858B8567 +:102260000E946C1BD9CFCF93882309F4CDC0C82F0F +:10227000823859F40E94A10F81FDC6C089E30E94F3 +:10228000B51A0E942E1B89E30CC0833879F40E9492 +:10229000A10F80FDB9C083E50E94B51A0E942E1BD4 +:1022A00083E50E94D21ACF910C942E1B843859F4E6 +:1022B0000E94A10F82FDA8C087E40E94B51A0E9467 +:1022C0002E1B87E4EECF8CEF8C0F813A48F48C2FD5 +:1022D0000E94EB21811198C08C2F0E94B51AE3CF88 +:1022E00080E28C0F883048F4C77081E001C0880F0D +:1022F000CA95EAF70E94F41AD6CF8BE58C0F83308B +:1023000078F4C53A29F0C63A31F083E890E005C088 +:1023100081E890E002C082E890E0CF910C94011037 +:1023200088E58C0F853108F06FC0C83A61F1C93A71 +:1023300069F1CA3A71F1CB3A79F1CC3A81F1CD3AEF +:1023400089F1CE3A91F1CF3A99F1C13BA1F1C03B6D +:10235000A9F1C23BB1F1C33BB9F1C43BC1F1C53BEB +:10236000C9F1C63BD1F1C73BD9F1C83BE1F1C93B4B +:10237000E9F1CA3BF1F1CB3BF9F1CC3B09F43FC0A9 +:1023800080E090E03EC082EE90E03BC089EE90E0BD +:1023900038C08AEE90E035C085EB90E032C086EB25 +:1023A00090E02FC083EB90E02CC084EB90E029C03C +:1023B00087EB90E026C08CEC90E023C08DEC90E0A1 +:1023C00020C083E891E01DC08AE891E01AC082E94C +:1023D00091E017C084E991E014C081E292E011C05D +:1023E00083E292E00EC084E292E00BC085E292E0CC +:1023F00008C086E292E005C087E292E002C08AE26D +:1024000092E0CF910C941710CF910895882309F48E +:102410004BC0823859F40E94A10F81FF45C089E367 +:102420000E94B51A0E942E1B89E30CC0833871F4F8 +:102430000E94A10F80FF38C083E50E94B51A0E9458 +:102440002E1B83E50E94D21A0C942E1B843859F45B +:102450000E94A10F82FF28C087E40E94B51A0E9443 +:102460002E1B87E4EFCF9CEF980F913A58F390E240 +:10247000980F983050F4877091E001C0990F8A95B9 +:10248000EAF7892F0E94FA1ADFCF9BE5980F933065 +:1024900020F480E090E00C940110885A853120F4FB +:1024A00080E090E00C9417100895882321F00E949A +:1024B000F41A0C942E1B0895882321F00E94FA1A16 +:1024C0000C942E1B0895CF92DF92EF92FF920F9300 +:1024D0001F93CF93DF9300D000D000D0CDB7DEB7ED +:1024E00025E0FC01DE01119601900D922A95E1F79D +:1024F000FC0140813181F280258122952F7063811A +:102500007481672B09F4D8C23F3F19F44F3F09F497 +:10251000D3C26C0149833A8389819A812E830E94B8 +:10252000741A182F092F0E94731A0E948319E02F22 +:10253000E295EF70F0E0EC5BFF4F2E810C94AE243F +:10254000802F807F902F9F70092F882311F0029594 +:10255000007FFF2049F0002309F45FC2802F0E9412 +:10256000071B0E942E1B59C2812F0E9406120023B6 +:1025700009F4A2C2802F0E940D1B26960FB6F89474 +:10258000DEBF0FBECDBFDF91CF911F910F91FF90A6 +:10259000EF90DF90CF900C942E1B802F807F902F98 +:1025A0009F70092F803211F00295007F112319F0DE +:1025B000113001F129C0FF20A9F0802F222349F119 +:1025C000213039F526960FB6F894DEBF0FBECDBF89 +:1025D000DF91CF911F910F91FF90EF90DF90CF90FF +:1025E0000C94171B222319F0213009F465C20E94B4 +:1025F0001A1B2CC0FF20E9F0263008F05DC20E94B3 +:10260000F11A802329F022C0FF20F1F0211115C01A +:10261000802F26960FB6F894DEBF0FBECDBFDF9198 +:10262000CF911F910F91FF90EF90DF90CF900C947E +:102630005512253008F040C209C0F601858180FF9F +:10264000ECC18F708583E4CF2111FBC1802F69C15C +:10265000202F26952695237030E02115310521F095 +:1026600021303105C9F028C2FF2021F0812F902FA1 +:10267000937002C080E090E026960FB6F894DEBF1B +:102680000FBECDBFDF91CF911F910F91FF90EF90C3 +:10269000DF90CF900C940110FF2021F0812F902F1C +:1026A000937002C080E090E026960FB6F894DEBFEB +:1026B0000FBECDBFDF91CF911F910F91FF90EF9093 +:1026C000DF90CF900C941710812FFF2019F00E94FB +:1026D000451D02C00E94AD1D26960FB6F894DEBFC0 +:1026E0000FBECDBFDF91CF911F910F91FF90EF9063 +:1026F000DF90CF900C94321E802F837009F078C049 +:10270000F110DAC1812F829586958770880F880F26 +:10271000912F9F70C92ED12CE12CF12C082E04C0D2 +:10272000CC0CDD1CEE1CFF1C0A94D2F714FF12C067 +:102730004FE050E060E070E004C0440F551F661F9A +:10274000771F8A95D2F7CB01BA0160957095809575 +:10275000909503C060E070E0CB01202F2695269570 +:102760002370422F50E042305105D1F043305105E3 +:1027700059F16C297D298E299F294130510541F15C +:1027800026960FB6F894DEBF0FBECDBFDF91CF9176 +:102790001F910F91FF90EF90DF90CF900C949819BC +:1027A0006C297D298E299F2926960FB6F894DEBFC5 +:1027B0000FBECDBFDF91CF911F910F91FF90EF9092 +:1027C000DF90CF900C94AA190E949819C701B60106 +:1027D00026960FB6F894DEBF0FBECDBFDF91CF9126 +:1027E0001F910F91FF90EF90DF90CF900C9486197E +:1027F000FF2019F0802F817001C08695882309F48D +:102800005BC1812F829586958770880F880F912FE5 +:102810009F70C92ED12CE12CF12C082E04C0CC0CB9 +:10282000DD1CEE1CFF1C0A94D2F714FF12C04FE00F +:1028300050E060E070E004C0440F551F661F771F32 +:102840008A95D2F7CB01BA016095709580959095E5 +:1028500003C060E070E0CB01202F26952695237001 +:10286000422F50E042305105D1F04330510559F12B +:102870006C297D298E299F294130510541F12696E9 +:102880000FB6F894DEBF0FBECDBFDF91CF911F9181 +:102890000F91FF90EF90DF90CF900C944F1A6C291E +:1028A0007D298E299F2926960FB6F894DEBF0FBE8C +:1028B000CDBFDF91CF911F910F91FF90EF90DF90EF +:1028C000CF900C94611A0E944F1AC701B601269648 +:1028D0000FB6F894DEBF0FBECDBFDF91CF911F9131 +:1028E0000F91FF90EF90DF90CF900C943D1A103F26 +:1028F00041F118F4103E48F48BC0123F09F450C067 +:10290000D8F1133F09F460C083C01F70802F8F710E +:10291000FF2021F00E94D619812F7BCE0E94F7194B +:10292000812F26960FB6F894DEBF0FBECDBFDF9184 +:10293000CF911F910F91FF90EF90DF90CF900C946B +:102940005C12FF20A9F0253008F0B6C0802F8F71EF +:1029500026960FB6F894DEBF0FBECDBFDF91CF91A4 +:102960001F910F91FF90EF90DF90CF900C941C1A65 +:10297000263008F0A1C0EACFFF20A1F0802F8F7190 +:1029800026960FB6F894DEBF0FBECDBFDF91CF9174 +:102990001F910F91FF90EF90DF90CF900C94D6197C +:1029A000FF2061F3802F8F7126960FB6F894DEBF5B +:1029B0000FBECDBFDF91CF911F910F91FF90EF9090 +:1029C000DF90CF900C94F719FF2091F0802F8F713A +:1029D00026960FB6F894DEBF0FBECDBFDF91CF9124 +:1029E0001F910F91FF90EF90DF90CF900C94C11941 +:1029F00026960FB6F894DEBF0FBECDBFDF91CF9104 +:102A00001F910F91FF90EF90DF90CF900C94BC1925 +:102A1000FF20A1F0222309F4B1CF812F26960FB613 +:102A2000F894DEBF0FBECDBFDF91CF911F910F9104 +:102A3000FF90EF90DF90CF900C943311222309F494 +:102A4000B1CF812F26960FB6F894DEBF0FBECDBF53 +:102A5000DF91CF911F910F91FF90EF90DF90CF907A +:102A60000C940612402F4F70612FC6010E94BB1CB0 +:102A700026960FB6F894DEBF0FBECDBFDF91CF9183 +:102A80001F910F91FF90EF90DF90CF900C94CE1894 +:102A9000402F4F70612FC60126960FB6F894DEBF07 +:102AA0000FBECDBFDF91CF911F910F91FF90EF909F +:102AB000DF90CF900C94BE1C26960FB6F894DEBF24 +:102AC0000FBECDBFDF91CF911F910F91FF90EF907F +:102AD000DF90CF9008950E94141B0E94E31A0E9479 +:102AE0002E1B0E94661F0E94321E80E090E00E9412 +:102AF000011080E090E00C9417100E94041B0C94CD +:102B00006B150E94741A292F22952F7030E02C30FB +:102B100031054CF42A3031056CF422503109223051 +:102B2000310588F407C02C30310549F02F303105CC +:102B300031F009C0803E48F0803F29F406C093FB85 +:102B4000882780F9089580E0089581E00895CF9363 +:102B5000DF9300D000D01F92CDB7DEB70F900F905B +:102B60000F900F900F90DF91CF910895CF93DF9347 +:102B700000D000D000D0CDB7DEB726960FB6F894BF +:102B8000DEBF0FBECDBFDF91CF910895CF93DF930E +:102B9000C0916B0180916C01C817A1F0D0E0CE010B +:102BA00066E070E00E947D24FC01E359FE4F408105 +:102BB000518162817381848195810E94B61521962D +:102BC000C770E8CFDF91CF91089540919D0150915A +:102BD0009E0160919F017091A0018091A10190914F +:102BE000A2010C94B615CF93DF938091A201829538 +:102BF0008F7009F05CC080919F01882309F457C051 +:102C000020916B01D0916C0140919D01C0919E017A +:102C1000E091A001F091A1012D1709F448C030E026 +:102C2000309709F440C0CF3F11F44F3FE1F1C901A3 +:102C300066E070E00E947D24DC01A359BE4F11962E +:102C40008C911197C8132FC08C9148132CC01296E9 +:102C50008C911297811127C013968D919C91149796 +:102C60008E179F0708F401978E1B9F0B883C9105D8 +:102C7000D0F48091A2018F7080618093A201C9017C +:102C800066E070E00E947D24FC01EE58FE4F9081CA +:102C90009F70906190838DE991E00E946312DF91B3 +:102CA000CF910C94C6152F5F3F4F2770B5CFDF91A2 +:102CB000CF910895BF92CF92DF92EF92FF920F9340 +:102CC0001F93CF93DF93CDB7DEB761970FB6F8941C +:102CD000DEBF0FBECDBF8C0185E0F801DE011D9681 +:102CE00001900D928A95E1F7D8014C9111962C91A3 +:102CF00011971296EC9012971396CD90DC90149742 +:102D000050919D0160919E018091A0019091A1013F +:102D1000009709F46EC16F3F19F45F3F09F469C170 +:102D2000B0909F01BB2009F4C3C03091A201C81626 +:102D3000D90628F0F601E81BF90BCF0104C08095F5 +:102D400090958C0D9D1DFF24F394883C910588F08F +:102D5000F12C307F09F0CBC07C2DD98AC88A522F44 +:102D60006E2D89890E94A7158DE991E00E9463125A +:102D7000B4C0832F807F09F049C0621314C054137C +:102D800012C0E11010C03F7030613093A2010E9468 +:102D9000E5158DE991E00E9463128091A201D801AE +:102DA00015968C9331C0CD2831F12F3F11F44F3F50 +:102DB00011F1FE2CE1101FC0E0916B0130916C010C +:102DC000E31709F45CC0F0E0CF0166E070E00E9418 +:102DD0007D24DC01A359BE4F11968C9111972813C5 +:102DE00007C08C91481304C012968C91811103C0C6 +:102DF0003196E770E5CFFE2CEE2009F416C18091E4 +:102E0000A20181608093A201F12C0FC1621308C05E +:102E1000541306C0E11004C08091A201D801C1C0C2 +:102E20004D872E878D859E850E9481158823E1F12F +:102E3000EE20D1F12091A201822F82958F7090E037 +:102E4000029774F080919D0190919E0198878F83E5 +:102E50001986DB86CA862C87CE0107960E946312EC +:102E600086E0F801ADE9B1E001900D928A95E1F7B5 +:102E70000E94F3150E94E515FF24F394D6C04D87F8 +:102E80002E878D859E850E94741A292F22952F707A +:102E900030E0223031050CF0BCC09F7009F0B6C0A4 +:102EA000805E883008F4C1C0C8010E946312E4CF7C +:102EB000C816D90608F453C0F601E81BF90BCF0178 +:102EC000883C910508F450C0F12C7C2DD98AC88A21 +:102ED000522F6E2D89890E94A715EDE9F1E086E059 +:102EE000DF011D928A95E9F70E94E5159EC06213E5 +:102EF00014C0541312C0E11010C08091A201F80157 +:102F00008583C8010E94631286E0EDE9F1E0DF01EC +:102F10001D928A95E9F7FB2C88C04D872E878D85F9 +:102F20009E850E948115882309F4BECFEE2009F406 +:102F3000BBCF2091A201822F82958F7090E00297E3 +:102F40000CF48ECF80919D0190919E019A8389838C +:102F50001B82DD82CC822E83CE0101967FCF8095AD +:102F600090958C0D9D1DACCFFE2CEE2009F49CCFCE +:102F700062132EC054132CC02091A20120FD1FC04B +:102F8000822F82958F70D9F0D80115962C931597C2 +:102F90008F3049F08F5F982F9295907F822F8F709E +:102FA000892B15968C93C8010E94631286E0F80164 +:102FB000ADE9B1E001900D928A95E1F795CF86E0F9 +:102FC000F801ADE9B1E001900D928A95E1F72DC0CD +:102FD0004D872E878D859E850E948115811140CF5A +:102FE0008091A20181608093A201C8010E946312B6 +:102FF0001CC0EE2009F458CF4D872E878D859E8505 +:103000000E948115882309F44FCF2ACF811148CF20 +:103010000CC0243031050CF047CF9F7009F440CF2D +:10302000F8019581907F09F03BCF8F2D61960FB607 +:10303000F894DEBF0FBECDBFDF91CF911F910F91EE +:10304000FF90EF90DF90CF90BF900895CF93DF93E4 +:10305000CDB7DEB72C970FB6F894DEBF0FBECDBF4D +:103060004F83588769877A878B879C87CE0107961D +:103070000E945A16882371F08F8198852A853B8596 +:10308000232B09F43FC09F3F09F068C08F3F09F030 +:1030900065C038C086E0FE013796DE0111960190CA +:1030A0000D928A95E1F76F817885EA85FB853097E7 +:1030B00049F17F3F11F46F3F29F180916C0190E05D +:1030C0009C012F5F3F4F2770332740916B0150E0E9 +:1030D0002417350709F44BC069837A83FD83EC8399 +:1030E00066E070E00E947D24DC01A359BE4F96E0AB +:1030F000FE01319601900D929A95E1F720936C01B3 +:103100000E94C61580916B0190916C018917E9F1BD +:1031100090E066E070E00E947D2483599E4F0E94FB +:103120005A16882391F180916B0190E066E070E07F +:103130000E947D24FC01E359FE4F40815181628150 +:103140007381848195810E94B61580916B0190E016 +:1031500001968770992780936B01D4CF4F81588552 +:1031600069857A858B859C850E94B615CBCF0E9498 +:103170007D1510926C0110926B01EDE9F1E086E093 +:10318000DF011D928A95E9F7BDCF2C960FB6F89412 +:10319000DEBF0FBECDBFDF91CF910895DF92EF92DA +:1031A000FF920F931F93CF93DF93FC01892B09F4B8 +:1031B0008AC0E12CF12CDD24D394EF012196849177 +:1031C000853709F461C058F4843708F04EC0843064 +:1031D00008F06AC08130D1F0823071F174C0883754 +:1031E00009F45DC050F4863709F455C0873709F0FB +:1031F0006AC08E2D0E94011B54C09CE7980F903727 +:1032000008F061C08F770E94061250C08F010E5FD8 +:103210001F4FFE01849190E2980F983050F4877010 +:10322000FD2D01C0FF0F8A95EAF78F2F0E94071B23 +:1032300014C00E94331113C08F010E5F1F4FFE0197 +:10324000C49180E28C0F883060F4C7708D2D01C06E +:10325000880FCA95EAF70E940D1B0E942E1BE801F9 +:1032600025C08C2F0E940612FACF9F012E5F3F4F80 +:10327000FE01C491CC2369F08FE99FE00197F1F73B +:1032800000C00000C150F6CF9F012E5F3F4FFE01EE +:10329000F490E9010BC00E94F11AE82E07C00E94C9 +:1032A000041B0E942E1B02C00E9433118F2D882305 +:1032B00041F0EFE9FFE03197F1F700C000008150E5 +:1032C000F6CFFE017ACFDF91CF911F910F91FF9042 +:1032D000EF90DF9008956093A7017093A801809309 +:1032E000A9019093AA010E947B1B0C946B1560931B +:1032F000A3017093A4018093A5019093A6010E945D +:103300007C1B0C946B1508950C946B190F931F93F1 +:103310000091A7011091A8012091A9013091AA0163 +:10332000602B712B822B932B1F910F910C946B1997 +:103330000F931F930091A7011091A8012091A9015B +:103340003091AA0160237123822393231F910F914F +:103350000C946B190F931F930091A7011091A80172 +:103360002091A9013091AA01602771278227932714 +:103370001F910F910C946B1960E070E0CB010C94DD +:1033800077190F931F9341E050E060E070E08A01ED +:103390009B0104C0000F111F221F331F8A95D2F713 +:1033A000C901B8011F910F910C9477190F931F93C6 +:1033B00041E050E060E070E004C0440F551F661F1C +:1033C000771F8A95D2F78091A3019091A401A091D3 +:1033D000A501B091A6018A019B01082B192B2A2B6C +:1033E0003B2BC901B8011F910F910C9477190F93D2 +:1033F0001F9341E050E060E070E004C0440F551FAF +:10340000661F771F8A95D2F7409550956095709505 +:103410008091A3019091A401A091A501B091A60172 +:103420008A019B01082319232A233B23C901B801E0 +:103430001F910F910C9477190F931F9341E050E067 +:1034400060E070E004C0440F551F661F771F8A9527 +:10345000D2F78091A3019091A401A091A501B09110 +:10346000A6018A019B01082719272A273B27C901A2 +:10347000B8011F910F910C9477190F931F9300912E +:10348000A3011091A4012091A5013091A601602B08 +:10349000712B822B932B1F910F910C9477190F9303 +:1034A0001F930091A3011091A4012091A5013091D7 +:1034B000A60160237123822393231F910F910C9403 +:1034C00077190F931F930091A3011091A4012091EC +:1034D000A5013091A60160277127822793271F91AC +:1034E0000F910C9477190895CF92DF92EF92FF928B +:1034F0000F931F93CF93DF938C01C090A701D090BF +:10350000A801E090A901F090AA014091A301509177 +:10351000A4016091A5017091A601C42AD52AE62ACA +:10352000F72ACFE1D0E0D701C6010C2E04C0B69532 +:10353000A795979587950A94D2F780FF07C0B801A1 +:103540008C2F0E948C1C8130910531F4219758F703 +:10355000B80180E00E948C1CDF91CF911F910F91E8 +:10356000FF90EF90DF90CF90089520910B01309164 +:103570000C01F90132969FEF40E05191581789F004 +:103580009F3F19F4511101C0942F4F5F4630A9F7A6 +:103590009F3F39F0F901E90FF11D97FDFA958283FC +:1035A0000895089520910B0130910C01F901329694 +:1035B000285F3F4F9081981301C010823196E21727 +:1035C000F307C1F7089581E090E0E0910B01F091DD +:1035D0000C01E80FF91F1082019688309105A9F7B8 +:1035E00008958091B50108959091B501892B80933C +:1035F000B501089580959091B50189238093B50117 +:1036000008958093B50108951092B50108959091A1 +:10361000B401892B8093B401089580959091B401F1 +:1036200089238093B40108951092B4010895809382 +:10363000AB0108951092AB01089580910B01909118 +:103640000C01FC0131969C01285F3F4F80E0919175 +:1036500091118F5FE217F307D1F70895E0910B0105 +:10366000F0910C018091B5018083E0910B01F09104 +:103670000C0190818091B401892B80838091AB01F2 +:10368000882361F0E0910B01F0910C019081892B6E +:1036900080830E941D1B81111092AB0180910B0150 +:1036A00090910C010C94AD0F9093330180933201F3 +:1036B00008958295982F9C7C292F26952695982FE2 +:1036C0009373990F990F922B892F8A7A8695957506 +:1036D000990F892B08950895CF93DF9300D000D0E0 +:1036E0001F92CDB7DEB70F900F900F900F900F90F5 +:1036F000DF91CF910895089508950C94F110809171 +:10370000CB01843021F11092B70120E488E190E0F0 +:103710000FB6F894A895809360000FBE20936000C8 +:1037200083B7817F846083BF83B7816083BF7894D0 +:10373000889583B78E7F83BF0FB6F894A895809144 +:103740006000886180936000109260000FBE089551 +:1037500008950895CF930E94A81B0E94EA050E9435 +:10376000A91BC0E08C2F0E943C06811104C0CF5FD2 +:10377000CE30C1F701C081E0CF9108950C947D1542 +:103780001F920F920FB60F9211248F939F93AF93B6 +:10379000BF938091B701811113C08091B8019091BE +:1037A000B901A091BA01B091BB014196A11DB11D13 +:1037B0008093B8019093B901A093BA01B093BB0173 +:1037C000BF91AF919F918F910F900FBE0F901F905F +:1037D000189582E084BD93E095BD9AEF97BD8093E4 +:1037E0006E0008952FB7F8948091B8019091B901B7 +:1037F000A091BA01B091BB012FBF08952FB7F894E3 +:103800006091B8017091B9018091BA019091BB01AA +:103810002FBF0895CF92DF92EF92FF920F931F93E5 +:103820002FB7F8944091B8015091B9016091BA0155 +:103830007091BB012FBF6A017B01EE24FF248C0134 +:1038400020E030E0C016D106E206F30610F4415045 +:1038500051099A01281B390BC9011F910F91FF9043 +:10386000EF90DF90CF9008951F920F920FB60F92B6 +:1038700011248F939F93AF93BF938091B801909140 +:10388000B901A091BA01B091BB010196A11DB11D72 +:103890008093B8019093B901A093BA01B093BB0192 +:1038A000BF91AF919F918F910F900FBE0F901F907E +:1038B00018950E94F50CF8942FEF87EA91E62150B5 +:1038C00080409040E1F700C0000087E090EBDC0111 +:1038D0008093D4019093D501A093D601B093D701E2 +:1038E0009CE088E10FB6F894A895809360000FBE25 +:1038F00090936000FFCFE92FF0E093E0EE0FFF1F01 +:103900009A95E1F7E80FF11DE855FF4F9491892F43 +:103910008F7092959F700895CF93C82FCB010E940E +:103920007B1C492F90E0242F30E054E0220F331FFE +:103930005A95E1F7282B392B2038310519F480E00E +:1039400090E017C0EC2FF0E023E0EE0FFF1F2A9568 +:10395000E1F74770E40FF11D34E0EE0FFF1F3A95D9 +:10396000E1F7E80FF91FEE0FFF1FE050F8498591CE +:103970009491CF91089580E090E00895089580910A +:10398000BE0180FF0CC08091100190E065E070E006 +:103990000E947D2495958795959587952EC081FFEA +:1039A0000AC08091100190E065E070E00E947D24E3 +:1039B0009595879522C082FF08C08091100190E004 +:1039C00065E070E00E947D2418C02091BF01222391 +:1039D000D1F030910F01231780F78091100190E012 +:1039E00065E070E00E947D24622F70E00E947D24DB +:1039F000632F70E00E949A24CB018038910530F447 +:103A0000009731F0089585E090E008958FE70895DC +:103A100081E008958091BE0180FF08C060910E0191 +:103A200070E0759567957595679523C081FF06C011 +:103A300060910E0170E0759567951BC082FF04C010 +:103A400060910E0170E012C06091BF016623D1F059 +:103A500020910D016217A0F780910E0170E090E0B7 +:103A60000E947D24622F70E00E949A2460387105C4 +:103A700028F46115710521F0862F08958FE70895C8 +:103A800081E0089561E070E0F4CF803F21F40E946E +:103A9000BF1C819504C0813F29F40E94BF1C809304 +:103AA000C2010895823F21F40E94BF1C819504C089 +:103AB000833F29F40E94BF1C8093C1010895893F70 +:103AC00019F40E940A1D05C08A3F31F40E940A1DA4 +:103AD00081958093C30108958B3F21F40E940A1DB4 +:103AE000819504C08C3F29F40E940A1D8093C40173 +:103AF0000895843F21F48091C001816017C0853F03 +:103B000021F48091C001826011C0863F21F4809130 +:103B1000C00184600BC0873F21F48091C0018860A0 +:103B200005C0883F31F48091C00180618093C0015D +:103B300008958D3F21F48091BE0181600BC08E3FBE +:103B400021F48091BE01826005C08F3F29F48091ED +:103B5000BE0184608093BE010895803F39F4809156 +:103B6000C20187FF6CC01092C20169C0813F29F475 +:103B70008091C2011816BCF362C09091C101823FCE +:103B800029F497FF5CC01092C10159C0833F19F41A +:103B90001916CCF354C0893F41F48091C301181623 +:103BA0000CF04DC01092C3014AC08A3F29F48091A5 +:103BB000C30187FF44C0F6CF8B3F39F48091C40125 +:103BC00087FF3DC01092C4013AC08C3F29F4809118 +:103BD000C4011816BCF333C0843F21F48091C001A6 +:103BE0008E7F17C0853F21F48091C0018D7F11C069 +:103BF000863F21F48091C0018B7F0BC0873F21F469 +:103C00008091C001877F05C0883F31F48091C00159 +:103C10008F7E8093C00113C08D3F21F48091BE013F +:103C20008E7F0BC08E3F21F48091BE018D7F05C039 +:103C30008F3F29F48091BE018B7F8093BE018091DC +:103C4000C10181110EC08091C20181110AC0809111 +:103C5000C301811106C08091C401811102C010927C +:103C6000BF0108958091B60183FF7EC08CEB93E085 +:103C70000E942B058091C0011F928F9387EB93E0E8 +:103C80009F938F930E94C40585EB93E00E942B05C0 +:103C90008091C101282F082E000C330B3F938F9386 +:103CA00082EB93E09F938F930E94C40580EB93E097 +:103CB0000E942B058091C201282F082E000C330B87 +:103CC0003F938F938DEA93E09F938F930E94C40557 +:103CD0008BEA93E00E942B058091C301282F082EC8 +:103CE000000C330B3F938F9388EA93E09F938F935D +:103CF0000E94C40586EA93E00E942B058091C401CE +:103D0000282F082E000C330B3F938F9383EA93E008 +:103D10009F938F930E94C40580EA93E00E942B0535 +:103D20008091BF011F928F938DE993E09F938F93B2 +:103D30000E94C4058BE993E00E942B058091BE018F +:103D40001F928F9388E993E09F938F930E94C405FD +:103D500085E993E00E942B058DB79EB74C960FB670 +:103D6000F8949EBF0FBE8DBF80EC91E00E94F60FCD +:103D70000E94F21B9093BD018093BC0108951F9394 +:103D8000CF93DF938091BC019091BD010E940A1CEA +:103D9000FC012091BF01222329F090911101892F6C +:103DA00090E007C08091120190E06AE070E00E940C +:103DB0007D24E817F90708F485C08091C101C091FE +:103DC000C201D091C3011091C401811107C0C1117A +:103DD00075C0D11173C0111171C074C02F3F19F09B +:103DE0002F5F2093BF01181624F40E94BF1C8093FC +:103DF000C1018091C10187FF05C00E94BF1C819550 +:103E00008093C1011C1624F40E94BF1C8093C20140 +:103E10008091C20187FF05C00E94BF1C81958093DD +:103E2000C2016091C101662331F1C091C201CC236E +:103E300011F1062E000C770B880B990B0E947C2346 +:103E400023E333E343E35FE30E94E0230E94442340 +:103E50006093C1016C2FCC0F770B880B990B0E94DC +:103E60007C2323E333E343E35FE30E94E0230E94E8 +:103E700044236093C2011D1624F40E940A1D8093FE +:103E8000C3018091C30187FF05C00E940A1D81956F +:103E90008093C301111624F40E940A1D8093C4016B +:103EA0008091C40187FF05C00E940A1D81958093FF +:103EB000C401DF91CF911F910C94321E2F3F09F066 +:103EC0008FCF97CFDF91CF911F910895E0ECF1E074 +:103ED00085E0DF011D928A95E9F71092BF011092EB +:103EE000BE0108958FED95E00E942B051F9281E0A1 +:103EF0008F931F9285E08F9381E995E09F938F9335 +:103F00000E94C4050F900F900F900F900F900F908C +:103F100008958330E9F128F4813061F0823009F1AD +:103F20000895853009F462C008F449C0863009F468 +:103F300074C0089580911201262F30E0280F311DA2 +:103F40002F3F310524F4680F6093120103C08FEFF7 +:103F500080931201809112011F928F938AEC94E05A +:103F600072C080911101262F30E0280F311D2F3FA4 +:103F7000310524F4680F6093110103C08FEF809323 +:103F80001101809111011F928F9388EB94E05BC027 +:103F900080911001262F30E0280F311D2F3F310571 +:103FA00024F4680F6093100103C08FEF8093100119 +:103FB000809110011F928F9385EA94E044C0809114 +:103FC0000F01262F30E0280F311D2F3F310524F43B +:103FD000680F60930F0103C08FEF80930F018091F2 +:103FE0000F011F928F9380E994E02DC080910E0104 +:103FF000262F30E0280F311D2F3F310524F4680FA4 +:1040000060930E0103C08FEF80930E0180910E012B +:104010001F928F9387E794E016C080910D01262FA1 +:1040200030E0280F311D2F3F310524F4680F6093D5 +:104030000D0103C08FEF80930D0180910D011F9240 +:104040008F938CE594E09F938F930E94C4050F900B +:104050000F900F900F900895833081F128F48130F4 +:1040600059F08230D1F00895853009F449C0B8F193 +:10407000863009F456C0089580911201681720F423 +:10408000861B8093120102C01092120180911201CE +:104090001F928F938DE494E054C0809111016817B2 +:1040A00020F4861B8093110102C0109211018091AF +:1040B00011011F928F938BE394E043C08091100114 +:1040C000681720F4861B8093100102C01092100123 +:1040D000809110011F928F9388E294E032C080910A +:1040E0000F01681720F4861B80930F0102C0109205 +:1040F0000F0180910F011F928F9383E194E021C003 +:1041000080910E01681720F4861B80930E0102C077 +:1041100010920E0180910E011F928F938AEF93E00F +:1041200010C080910D01681720F4861B80930D014B +:1041300002C010920D0180910D011F928F938FED9F +:1041400093E09F938F930E94C4050F900F900F9060 +:104150000F900895CF93C82F1F928F9384EE96E00F +:104160009F938F930E94C40581E090E0A0E0B0E0AF +:10417000BC01CD0104C0660F771F881F991FCA9527 +:10418000D2F70E9484190F900F900F900F90CF914B +:104190000C947D15CF93873288F58E3108F00BC1D2 +:1041A0008E3009F487C0D8F4873009F460C08B30B2 +:1041B00009F44FC0863009F002C18091B601817FB9 +:1041C0008E7F8093B60189EE96E00E942B0587EAE8 +:1041D00099E00E942B0581E08093C60146C086319C +:1041E00009F4B0C020F4803109F47AC0E8C0893104 +:1041F00009F491C08B3109F449C0E1C0883349F119 +:1042000050F4893209F4D5C0853309F4D2C087321D +:1042100009F0D5C0CEC0833409F4CBC028F48A336A +:1042200008F4CDC08953C8C0883409F0C8C00E94C2 +:104230007D1586E999E00E942B052FEF83ED90E331 +:10424000215080409040E1F700C000000E94591CBE +:104250000CC080E197E041C08DE799E00E942B05FA +:104260008091B60181608093B601C1E0ADC08091BC +:10427000B601C82FC17080FFEFCF89E899E00E9496 +:104280002B058091B601817F8E7F3FC09091B60152 +:1042900091FBCC27C0F981E0C827892FC0FB81F9A9 +:1042A0008093B601CC2319F080E799E029C082E61B +:1042B00099E013C09091B60192FBCC27C0F981E040 +:1042C000C827892FC0FB82F98093B601CC2319F04F +:1042D00083E599E015C083E499E00E942B05C5CFE2 +:1042E0009091B60193FBCC27C0F981E0C827892FB4 +:1042F000C0FB83F98093B601CC2351F087E399E0AA +:104300000E942B058091B60181608093B6015CC04C +:104310008AE299E0E2CF8BE199E00E942B0586EFDB +:1043200098E00E942B058FEA98E00E942B0582E816 +:1043300098E00E942B058DE398E00E942B058EE00B +:1043400098E0CBCF80E098E00E942B050E94A10F5F +:104350001F928F9386EE97E09F938F930E94C405E0 +:1043600080910A011F928F938FEC97E09F938F9318 +:104370000E94C405809155011F928F938CEB97E0AA +:104380009F938F930E94C4050E94FE1B9F938F935F +:104390007F936F9385EA97E09F938F930E94C40564 +:1043A0008DB79EB742960FB6F8949EBF0FBE8DBFD5 +:1043B0005CCF80E001C08D510E94AA2056CF83EAD5 +:1043C00097E00E942B05C0E08C2FCF91089580E0EC +:1043D000089580E00895CF93C82F8091C601813061 +:1043E00081F020F0823009F44FC046C1E0910B010A +:1043F000F0910C0180818E3069F0873009F03EC168 +:1044000009C0E0910B01F0910C0180818E3011F018 +:10441000873061F48C2F0E94E721811104C08C2F1A +:104420000E94CA202FC081E090E02CC08C2F0E94F7 +:10443000E921811126C0C431E1F070F4CB3081F064 +:10444000C031D1F40E94721F8CED96E00E942B05C2 +:1044500082E08093C60115C0C93259F0C83361F4B7 +:1044600089EE96E00E942B0580EE96E00E942B05D7 +:1044700008C01092C60104C18AED96E00E942B0587 +:10448000FFC081E08170FEC0C43228F5CE3108F053 +:10449000C1C0CB30A1F1D0F4C73009F0D3C08EE158 +:1044A0008093120182E3809311018AE080931001CE +:1044B00084E180930F0188E080930E0188E280936D +:1044C0000D0180E895E00E942B05BFC0C33149F182 +:1044D000C431C1F0B7C0CB3409F4A9C028F4C93243 +:1044E00089F0C83361F0AEC0C13509F49EC0C23551 +:1044F00009F499C0CE3409F0A5C06AE09EC00E94BC +:10450000721FA3C08091C501882319F01092C501C4 +:104510009CC08DE895E00E942B0581E08093C60148 +:10452000B1C087E695E00E942B0585E595E00E94E5 +:104530002B05809112011F928F9382E595E09F9346 +:104540008F930E94C40580E595E00E942B058EE3C1 +:1045500095E00E942B05809111011F928F938BE3B0 +:1045600095E09F938F930E94C40589E395E00E9494 +:104570002B058AE295E00E942B05809110011F9285 +:104580008F9387E295E09F938F930E94C40585E205 +:1045900095E00E942B0584E195E00E942B05809117 +:1045A0000F011F928F9381E195E09F938F930E945B +:1045B000C4058FE095E00E942B058AEF94E00E94ED +:1045C0002B0580910E011F928F9387EF94E09F93AC +:1045D0008F930E94C40585EF94E00E942B058EED19 +:1045E00094E00E942B0580910D011F928F938BED1B +:1045F00094E09F938F930E94C40589ED94E00E94FC +:104600002B058DB79EB748960FB6F8949EBF0FBE88 +:104610008DBF1BC0CE51EC2FF0E0E95DFE4F8081D5 +:104620008093C50112C061E003C061E006C06AE08A +:104630008091C5010E94891F08C08091C5010E9418 +:104640002C2003C08EE795E013C08091C50188231C +:1046500069F01F928F9388E795E09F938F930E9454 +:10466000C4050F900F900F900F9004C085E795E060 +:104670000E942B0581E006C01092C60180E002C0B6 +:1046800080E000CFCF9108950E944B236894B11130 +:104690000C94DA2308950E94BF2388F09F5798F066 +:1046A000B92F9927B751B0F0E1F0660F771F881F37 +:1046B000991F1AF0BA95C9F714C0B13091F00E9451 +:1046C000D923B1E008950C94D923672F782F882738 +:1046D000B85F39F0B93FCCF3869577956795B39578 +:1046E000D9F73EF490958095709561957F4F8F4FE7 +:1046F0009F4F0895E89409C097FB3EF490958095EC +:10470000709561957F4F8F4F9F4F9923A9F0F92F97 +:1047100096E9BB279395F695879577956795B79515 +:10472000F111F8CFFAF4BB0F11F460FF1BC06F5FFB +:104730007F4F8F4F9F4F16C0882311F096E911C00D +:10474000772321F09EE8872F762F05C0662371F02E +:1047500096E8862F70E060E02AF09A95660F771F42 +:10476000881FDAF7880F9695879597F9089557FD72 +:104770009058440F551F59F05F3F71F04795880FCF +:1047800097FB991F61F09F3F79F087950895121666 +:1047900013061406551FF2CF4695F1DF08C0161612 +:1047A00017061806991FF1CF8695710561050894C3 +:1047B0000895E894BB2766277727CB0197F90895DA +:1047C0000E94F2230C946C240E945E2438F00E9414 +:1047D000652420F0952311F00C9455240C945B244F +:1047E0000C94DA230E94B72378F39923C9F3552355 +:1047F000B9F3950F50E0551FAA27EE27FF27BB27D7 +:1048000000240894679520F4E20FF31FB41F0A1EDA +:10481000220F331F441FAA1F6695A9F7779530F41E +:10482000F30FB41F0A1E121E08F46395330F441FC2 +:10483000AA1F221F769599F7879520F4B40F0A1EB8 +:10484000121E631F440FAA1F221F331F8695A9F74C +:10485000862F712D602D11249F5750409AF0F1F052 +:1048600088234AF0EE0FFF1FBB1F661F771F881FAC +:1048700091505040A9F79E3F510580F00C9455246B +:104880000C94DA235F3FE4F3983ED4F38695779552 +:104890006795B795F795E7959F5FC1F7FE2B880F52 +:1048A000911D9695879597F9089597F99F6780E8E8 +:1048B00070E060E008959FEF80EC089500240A9472 +:1048C0001616170618060906089500240A941216EB +:1048D0001306140605060895092E0394000C11F41E +:1048E000882352F0BB0F40F4BF2B11F460FF04C0CB +:1048F0006F5F7F4F8F4F9F4F08950024552704C04F +:10490000080E591F880F991F009729F07695679513 +:10491000B8F37105B9F7802D952F0895991B79E0AB +:1049200004C0991F961708F0961B881F7A95C9F73F +:104930008095089597FB072E16F4009407D077FD15 +:1049400009D00E94B42407FC05D03EF490958195CF +:104950009F4F0895709561957F4F0895EE0FFF1F4B +:104960000590F491E02D0994AA1BBB1B51E107C0EF +:10497000AA1FBB1FA617B70710F0A61BB70B881FEF +:10498000991F5A95A9F780959095BC01CD0108957E +:04499000F894FFCFC9 +:104994006608570934090009CC0801AC0128081439 +:1049A4000A321E404D36223003E302AD028B021759 +:1049B40002300249026202010203040506070809E3 +:0249C4000000F1 +:106800000000000000000000040005000600070072 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280000002A002B002C002D002E002F0005 +:10686000300031A1320033003400350036003700EB +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000004F00A9 +:1068A000500051005200530067005400550056003C +:1068B000580059005A005B005C005D005E005F00FC +:1068C0006000610062006300640000005700000087 +:1068D00000000000000000000000000000000000B8 +:1068E00000000000000000000000000000000000A8 +:1068F0000000E100E200E300000000000000F1A160 +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010000004C00010001004400450052000D +:1069600049000100010050004F0029004D004E0079 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E000010001000100010001000100010001009F +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/m0110_usb/keymap_default.c b/converter/m0110_usb/keymap.c similarity index 98% rename from converter/m0110_usb/keymap_default.c rename to converter/m0110_usb/keymap.c index 0f9b8d27..bfe8727d 100644 --- a/converter/m0110_usb/keymap_default.c +++ b/converter/m0110_usb/keymap.c @@ -98,9 +98,9 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { * Fn action definition */ #ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +const action_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { #else -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { #endif [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_LAYER_MOMENTARY(2), diff --git a/converter/m0110_usb/keymap_common.c b/converter/m0110_usb/keymap_common.c deleted file mode 100644 index 4ac2d717..00000000 --- a/converter/m0110_usb/keymap_common.c +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2011,2012,2014 Jun Wako - -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 . -*/ -#include -#include -#include "action.h" -#include "keycode.h" -#include "keymap.h" -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn index to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - action_t action; - action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]); - return action; -} diff --git a/converter/m0110_usb/keymap_common.h b/converter/m0110_usb/keymap_common.h index 925556d9..4a7e7a16 100644 --- a/converter/m0110_usb/keymap_common.h +++ b/converter/m0110_usb/keymap_common.h @@ -15,15 +15,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include -#include #include "keycode.h" #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* Common layout for M0110 and M0110A * This keymap works with both keyboards. As you can see, the M0110A is * a superset of M0110 keyboard, only one exception is 'Enter'(34) of M0110 @@ -45,7 +40,7 @@ extern const uint16_t fn_actions[]; * ,---------------------------------------------------------. ,---------------. * | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62| * |---------------------------------------------------------| |---------------| - * | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| | | 59| 5B| 5C| 4E| + * | 30| 0C| 0D| 0E| 0F| 11| 10| 20| 22| 1F| 23| 21| 1E| | | 59| 5B| 5C| 4E| * |-----------------------------------------------------' | |---------------| * | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | 56| 57| 58| 66| * |---------------------------------------------------------| |---------------| @@ -58,7 +53,7 @@ extern const uint16_t fn_actions[]; * ,---------------------------------------------------------. ,---------------. * | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62| * |---------------------------------------------------------| |---------------| - * | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E| + * | 30| 0C| 0D| 0E| 0F| 11| 10| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E| * |---------------------------------------------------------| |---------------| * | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | 56| 57| 58| 66| * |---------------------------------------------------------| |---------------| @@ -99,7 +94,7 @@ extern const uint16_t fn_actions[]; * ,---------------------------------------------------------. ,---------------. * | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62| * |---------------------------------------------------------| |---------------| - * | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E| + * | 30| 0C| 0D| 0E| 0F| 11| 10| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E| * |------------------------------------------------------, | |---------------| * | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | | 56| 57| 58| 66| * |---------------------------------------------------------| |---------------| diff --git a/converter/m0110_usb/keymap_hasu.c b/converter/m0110_usb/keymap_hasu.c deleted file mode 100644 index 11f1a4f3..00000000 --- a/converter/m0110_usb/keymap_hasu.c +++ /dev/null @@ -1,87 +0,0 @@ -/* -Copyright 2014 Jun Wako - -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 . -*/ -#include -#include "keycode.h" -#include "keymap_common.h" - - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Default: - * M0110 - * ,---------------------------------------------------------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| - * |---------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |---------------------------------------------------------| - * |Ctrl | A| S| D| F| G| H| J| K| L| Fn| '|Return| - * |---------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| ,| Fn|Shift | - * `---------------------------------------------------------' - * |Fn |alt | Fn |Gui |Fn | - * `-----------------------------------------------' - */ - [0] = KEYMAP( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,EQL, PSLS,PAST, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, P7, P8, P9, PMNS, - LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT, ENT, P4, P5, P6, PPLS, - LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN1, UP, P1, P2, P3, PENT, - FN0, LALT, FN2, LGUI,BSLS,LEFT,RGHT,DOWN, P0, PDOT - ), - // IJKL cursor - [1] = KEYMAP( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, - CAPS,NO, NO, NO, NO, NO, HOME,PGDN,UP, PGUP,END, NO, NO, P7, P8, P9, PMNS, - LCTL,VOLD,VOLU,MUTE,NO, NO, HOME,LEFT,DOWN,RGHT,END, NO, ENT, P4, P5, P6, PPLS, - LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, NO, PGUP, P1, P2, P3, PENT, - TRNS,LALT, SPC, LGUI,BSLS,HOME,END, PGDN, P0, PDOT - ), - // HJKL cursor - [2] = KEYMAP( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, - CAPS,NO, NO, NO, NO, NO, HOME,PGDN,UP, PGUP,END, NO, NO, P7, P8, P9, PMNS, - LCTL,VOLD,VOLU,MUTE,NO, NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, P4, P5, P6, PPLS, - LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, TRNS, PGUP, P1, P2, P3, PENT, - TRNS,LALT, SPC, LGUI,BSLS,HOME,END, PGDN, P0, PDOT - ), - // Mousekey - [3] = KEYMAP( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, - CAPS,Q, W, E, R, T, WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD, P7, P8, P9, PMNS, - LCTL,VOLD,VOLU,MUTE,NO, NO, BTN2,MS_L,MS_D,MS_R,BTN1,NO, ENT, P4, P5, P6, PPLS, - LSFT,Z, X, C, V, B, BTN2,BTN1,BTN4,BTN5,NO, PGUP, P1, P2, P3, PENT, - NO, LALT, TRNS, LGUI,BSLS,HOME,END, PGDN, P0, PDOT - ), - // Mousekey - [4] = KEYMAP( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST, - CAPS,Q, W, E, R, T, WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD, P7, P8, P9, PMNS, - LCTL,VOLD,VOLU,MUTE,NO, NO, BTN2,MS_L,MS_D,MS_R,TRNS,NO, ENT, P4, P5, P6, PPLS, - LSFT,Z, X, C, V, B, BTN2,BTN1,BTN4,BTN5,NO, PGUP, P1, P2, P3, PENT, - NO, LALT, BTN1, LGUI,BSLS,HOME,END, PGDN, P0, PDOT - ), -}; - - -/* - * Fn action definition - */ -const uint16_t fn_actions[] PROGMEM = { - [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), - [2] = ACTION_LAYER_TAP_KEY(3, KC_SPACE), - [3] = ACTION_LAYER_TAP_KEY(4, KC_SCOLON), -}; diff --git a/converter/m0110_usb/keymap_intl.c b/converter/m0110_usb/keymap_intl.c index 6cc251a2..547bebca 100644 --- a/converter/m0110_usb/keymap_intl.c +++ b/converter/m0110_usb/keymap_intl.c @@ -68,6 +68,6 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { /* * Fn action definition */ -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/converter/m0110_usb/keymap_spacefn.c b/converter/m0110_usb/keymap_spacefn.c index 5017861a..d941ea8f 100644 --- a/converter/m0110_usb/keymap_spacefn.c +++ b/converter/m0110_usb/keymap_spacefn.c @@ -65,7 +65,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde }; diff --git a/converter/m0110_usb/unimap.c b/converter/m0110_usb/unimap.c new file mode 100644 index 00000000..54c856c2 --- /dev/null +++ b/converter/m0110_usb/unimap.c @@ -0,0 +1,48 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_trans.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) +#define AC_FN1 ACTION_LAYER_TAP_KEY(1, KC_BSLS) + + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, NO, NO, NO, NLCK,PEQL,PSLS,PAST, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, FN1, NO, NO, NO, P7, P8, P9, PMNS, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PPLS, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, NO, UP, P1, P2, P3, NO, + NO, LGUI,LALT,NO, SPC, NO, NO, NO, FN0, NO, NO, LEFT,DOWN,RGHT, P0, PDOT,PENT + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + NO, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,LEFT,RGHT, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +}; + diff --git a/converter/m0110_usb/unimap_trans.h b/converter/m0110_usb/unimap_trans.h new file mode 100644 index 00000000..cd6682a9 --- /dev/null +++ b/converter/m0110_usb/unimap_trans.h @@ -0,0 +1,244 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#ifndef UNIMAP_COMMON_H +#define UNIMAP_COMMON_H + +#include +#include +#include "unimap.h" + + +/* M0110A scan codes + * ,---------------------------------------------------------. ,---------------. + * | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62| + * |---------------------------------------------------------| |---------------| + * | 30| 0C| 0D| 0E| 0F| 11| 10| 20| 22| 1F| 23| 21| 1E| | | 59| 5B| 5C| 4E| + * |-----------------------------------------------------' | |---------------| + * | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | 56| 57| 58| 66| + * |---------------------------------------------------------| |---------------| + * | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 38| 4D| | 53| 54| 55| | + * `---------------------------------------------------------' |-----------| 4C| + * | 3A| 37| 31 | 2A| 46| 42| 48| | 52| 41| | + * `---------------------------------------------------------' `---------------' + * + * M0110 + M0120 scan codes + * ,---------------------------------------------------------. ,---------------. + * | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62| + * |---------------------------------------------------------| |---------------| + * | 30| 0C| 0D| 0E| 0F| 11| 10| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E| + * |---------------------------------------------------------| |---------------| + * | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | 56| 57| 58| 66| + * |---------------------------------------------------------| |---------------| + * | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 38| | 53| 54| 55| | + * `---------------------------------------------------------' |-----------| 4C| + * | 3A| 37| 31 | 34| 3A| | 52| 41| | + * `------------------------------------------------' `---------------' + * + * International M0110 + * https://en.wikipedia.org/wiki/File:Apple_Macintosh_Plus_Keyboard.jpg + * Probably International keyboard layout of M0110A doesn't exist. + * ,---------------------------------------------------------. + * | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| + * |---------------------------------------------------------| + * | 30| 0C| 0D| 0E| 0F| 11| 10| 20| 22| 1F| 23| 21| 1E| 2A| + * |------------------------------------------------------, | + * | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | + * |---------------------------------------------------------| + * | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 0A| 38| + * `---------------------------------------------------------' + * | 3A| 37| 34 | 31| 3A| + * `------------------------------------------------' + */ +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + // Position(unimap) scan code(matrix) + // --------------------------------------------- + { + UNIMAP_A, // 0x00 + UNIMAP_S, // 0x01 + UNIMAP_D, // 0x02 + UNIMAP_F, // 0x03 + UNIMAP_H, // 0x04 + UNIMAP_G, // 0x05 +#ifdef M0110_INTL + UNIMAP_NONUS_BSLASH, // 0x06 + UNIMAP_Z, // 0x07 + }, + { + UNIMAP_X, // 0x08 + UNIMAP_C, // 0x09 + UNIMAP_SLASH, // 0x0A + UNIMAP_V, // 0x0B +#else + UNIMAP_Z, // 0x06 + UNIMAP_X, // 0x07 + }, + { + UNIMAP_C, // 0x08 + UNIMAP_V, // 0x09 + UNIMAP_NO, // 0x0A + UNIMAP_B, // 0x0B +#endif + UNIMAP_Q, // 0x0C + UNIMAP_W, // 0x0D + UNIMAP_E, // 0x0E + UNIMAP_R, // 0x0F + }, + { + UNIMAP_Y, // 0x10 + UNIMAP_T, // 0x11 + UNIMAP_1, // 0x12 + UNIMAP_2, // 0x13 + UNIMAP_3, // 0x14 + UNIMAP_4, // 0x15 + UNIMAP_6, // 0x16 + UNIMAP_5, // 0x17 + }, + { + UNIMAP_EQUAL, // 0x18 + UNIMAP_9, // 0x19 + UNIMAP_7, // 0x1A + UNIMAP_MINUS, // 0x1B + UNIMAP_8, // 0x1C + UNIMAP_0, // 0x1D + UNIMAP_RBRACKET, // 0x1E + UNIMAP_O, // 0x1F + }, + { + UNIMAP_U, // 0x20 + UNIMAP_LBRACKET, // 0x21 + UNIMAP_I, // 0x22 + UNIMAP_P, // 0x23 +#ifdef M0110_INTL + UNIMAP_NONUS_HASH, // 0x24 +#else + UNIMAP_ENTER, // 0x24 +#endif + UNIMAP_L, // 0x25 + UNIMAP_J, // 0x26 + UNIMAP_QUOTE, // 0x27 + }, + { + UNIMAP_K, // 0x28 + UNIMAP_SCOLON, // 0x29 +#ifdef M0110_INTL + UNIMAP_ENTER, // 0x2A + UNIMAP_M, // 0x2B + UNIMAP_DOT, // 0x2C + UNIMAP_B, // 0x2D + UNIMAP_N, // 0x2E + UNIMAP_COMMA, // 0x2F +#else + UNIMAP_BSLASH, // 0x2A + UNIMAP_COMMA, // 0x2B + UNIMAP_SLASH, // 0x2C + UNIMAP_N, // 0x2D + UNIMAP_M, // 0x2E + UNIMAP_DOT, // 0x2F +#endif + }, + { + UNIMAP_TAB, // 0x30 +#ifdef M0110_INTL + UNIMAP_RGUI, // 0x31 +#else + UNIMAP_SPACE, // 0x31 +#endif + UNIMAP_GRAVE, // 0x32 + UNIMAP_BSPACE, // 0x33 +#ifdef M0110_INTL + UNIMAP_SPACE, // 0x34 +#else + UNIMAP_RGUI, // 0x34 +#endif + UNIMAP_NO, // 0x35 + UNIMAP_NO, // 0x36 + UNIMAP_LGUI, // 0x37 + }, + { + UNIMAP_LSHIFT, // 0x38 + UNIMAP_CAPSLOCK, // 0x39 + UNIMAP_LALT, // 0x3A + UNIMAP_NO, // 0x3B + UNIMAP_NO, // 0x3C + UNIMAP_NO, // 0x3D + UNIMAP_NO, // 0x3E + UNIMAP_NO, // 0x3F + }, + { + UNIMAP_NO, // 0x40 + UNIMAP_KP_DOT, // 0x41 + UNIMAP_RIGHT, // 0x42 + UNIMAP_NO, // 0x43 + UNIMAP_NO, // 0x44 + UNIMAP_NO, // 0x45 + UNIMAP_LEFT, // 0x46 + UNIMAP_NUMLOCK, // 0x47 + }, + { + UNIMAP_DOWN, // 0x48 + UNIMAP_NO, // 0x49 + UNIMAP_NO, // 0x4A + UNIMAP_NO, // 0x4B + UNIMAP_KP_ENTER, // 0x4C + UNIMAP_UP, // 0x4D + UNIMAP_KP_PLUS, // 0x4E keypad minus + UNIMAP_NO, // 0x4F + }, + { + UNIMAP_NO, // 0x50 + UNIMAP_NO, // 0x51 + UNIMAP_KP_0, // 0x52 + UNIMAP_KP_1, // 0x53 + UNIMAP_KP_2, // 0x54 + UNIMAP_KP_3, // 0x55 + UNIMAP_KP_4, // 0x56 + UNIMAP_KP_5, // 0x57 + }, + { + UNIMAP_KP_6, // 0x58 + UNIMAP_KP_7, // 0x59 + UNIMAP_NO, // 0x5A + UNIMAP_KP_8, // 0x5B + UNIMAP_KP_9, // 0x5C + UNIMAP_NO, // 0x5D + UNIMAP_NO, // 0x5E + UNIMAP_NO, // 0x5F + }, + { + UNIMAP_NO, // 0x60 + UNIMAP_NO, // 0x61 + UNIMAP_KP_MINUS, // 0x62 keypad asterisk + UNIMAP_NO, // 0x63 + UNIMAP_NO, // 0x64 + UNIMAP_NO, // 0x65 + UNIMAP_KP_COMMA, // 0x66 + UNIMAP_NO, // 0x67 + }, + { + UNIMAP_KP_SLASH, // 0x68 keypad equal + UNIMAP_NO, // 0x69 + UNIMAP_NO, // 0x6A + UNIMAP_NO, // 0x6B + UNIMAP_NO, // 0x6C + UNIMAP_KP_ASTERISK, // 0x6D keypad slash + UNIMAP_NO, // 0x6E compose + UNIMAP_NO, // 0x6F + }, +}; + +#endif + diff --git a/converter/news_usb/keymap.c b/converter/news_usb/keymap.c index 058f2914..5e6c2b5d 100644 --- a/converter/news_usb/keymap.c +++ b/converter/news_usb/keymap.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "util.h" #include "keymap.h" @@ -56,7 +55,7 @@ along with this program. If not, see . // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. -static const uint8_t PROGMEM fn_layer[] = { +const uint8_t PROGMEM fn_layer[] = { 0, // Fn0 0, // Fn1 0, // Fn2 @@ -69,7 +68,7 @@ static const uint8_t PROGMEM fn_layer[] = { // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. // See layer.c for details. -static const uint8_t PROGMEM fn_keycode[] = { +const uint8_t PROGMEM fn_keycode[] = { KC_NO, // Fn0 KC_NO, // Fn1 KC_NO, // Fn2 @@ -81,7 +80,7 @@ static const uint8_t PROGMEM fn_keycode[] = { }; -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: default * ,---. ,------------------------, ,------------------------. ,---------. * |Pow| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| ,-----------. @@ -107,19 +106,3 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LALT,CAPS,LALT, SPC, ERAS, RALT,RGUI,RCTL, PGDN, TAB, LEFT,DOWN,RGHT ), }; - - -uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) -{ - return pgm_read_byte(&keymaps[(layer)][(row)][(col)]); -} - -uint8_t keymap_fn_layer(uint8_t index) -{ - return pgm_read_byte(&fn_layer[index]); -} - -uint8_t keymap_fn_keycode(uint8_t index) -{ - return pgm_read_byte(&fn_keycode[index]); -} diff --git a/converter/next_usb/Makefile b/converter/next_usb/Makefile index 7190f1ea..f3143c25 100644 --- a/converter/next_usb/Makefile +++ b/converter/next_usb/Makefile @@ -1,18 +1,36 @@ # Target file name (without extension). -TARGET = next_usb +TARGET ?= next_usb # Directory common source filess exist -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . # keyboard dependent files -SRC = keymap.c \ - matrix.c \ +SRC ?= matrix.c \ led.c -CONFIG_H = config.h +CONFIG_H ?= config.h + +# +# Keymap file +# +ifeq (yes,$(strip $(UNIMAP_ENABLE))) + KEYMAP_FILE = unimap +else + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif +ifdef KEYMAP + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) +else + SRC := $(KEYMAP_FILE).c $(SRC) +endif + # MCU name, you MUST set this to match the board you are using # type "make clean" after changing this, so all files will be rebuilt @@ -20,7 +38,7 @@ CONFIG_H = config.h #MCU = atmega32u4 # Teensy 2.0 #MCU = at90usb646 # Teensy++ 1.0 #MCU = at90usb1286 # Teensy++ 2.0 -MCU = atmega32u2 # TMK converter +MCU ?= atmega32u2 # TMK converter # Processor frequency. @@ -28,14 +46,14 @@ MCU = atmega32u2 # TMK converter # so your program will run at the correct speed. You should also set this # variable to same clock speed. The _delay_ms() macro uses this, and many # examples use this variable to calculate timings. Do not add a "UL" here. -F_CPU = 16000000 +F_CPU ?= 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +ARCH ?= AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ -48,7 +66,7 @@ ARCH = AVR8 # # 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) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task(+60) #OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT @@ -67,11 +85,11 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # *Comment out* to disable the options. # #BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -#NKRO_ENABLE = yes # USB Nkey Rollover +MOUSEKEY_ENABLE ?= yes # Mouse keys +EXTRAKEY_ENABLE ?= yes # Audio control and System control +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +#NKRO_ENABLE ?= yes # USB Nkey Rollover SRC += next_kbd.c diff --git a/converter/next_usb/Makefile.unimap b/converter/next_usb/Makefile.unimap new file mode 100644 index 00000000..8452c108 --- /dev/null +++ b/converter/next_usb/Makefile.unimap @@ -0,0 +1,4 @@ +TARGET = next_usb_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile diff --git a/converter/next_usb/binary/next_usb_unimap.hex b/converter/next_usb/binary/next_usb_unimap.hex new file mode 100644 index 00000000..efe944a6 --- /dev/null +++ b/converter/next_usb/binary/next_usb_unimap.hex @@ -0,0 +1,1217 @@ +:100000000C941D050C9464050C9464050C94640513 +:100010000C9464050C9464050C9464050C946405BC +:100020000C9464050C9464050C9464050C94FD0D0B +:100030000C9464050C94D21B0C9464050C94640518 +:100040000C9464050C9464050C9464050C94461C93 +:100050000C9464050C9464050C9464050C9464057C +:100060000C9464050C9464050C9464050C9464056C +:100070000C946405CF0EF10EDF0FF10EDF0F360F7B +:10008000590FDF0FAE0FC10FC612C612F312F312D3 +:100090004E138A1382158215A21382159D149D1486 +:1000A0005815821582156E15804E4C31302F0C126A +:1000B00013508062635880514F595C5E5B66525AA0 +:1000C0005D4B492A2E2D2526275F606157565354D4 +:1000D00055802834330F3637381D1B06190510118B +:1000E0002C041607090A0E0D0B2B141A0815181CE0 +:1000F00017351E1F20212423227C78657B7D7939CA +:100100004A808080808080805B20723D2530346C06 +:1001100058206B6579636F64653D253032582070D7 +:100120007265737365643D2558204354524C3D25D8 +:10013000582053484946545F4C4546543D25582065 +:1001400053484946545F524748543D255820434D33 +:10015000445F4C4546543D255820434D445F52472B +:1001600048543D255820414C545F4C4546543D254C +:100170005820414C545F524748543D2558205D0A51 +:1001800000506F77657220737461746520300A00C7 +:10019000506F77657220737461746520310A005B5B +:1001A000204E655854206B6579626F6172642069D6 +:1001B0006E697469616C697A6564205D0A00496ED4 +:1001C000697469616C20706F7765722062757474F0 +:1001D0006F6E2073746174653A2025620A005B209B +:1001E000496E7469616C697A696E67204E6558540E +:1001F000206B6579626F617264205D0A005B735DDC +:10020000004B6579626F6172642073746172742E41 +:100210000A0055534220636F6E66696775726564A4 +:100220002E0A005B525D005B445D005B435D003E57 +:10023000034E0065005800540020004B0065007913 +:100240000062006F00610072006400200074006FA3 +:10025000002000550053004200200063006F006E34 +:100260000076006500720074006500720000000EE8 +:100270000374002E006D002E006B002E00000004A1 +:1002800003090409027400040100A03209040000FB +:1002900001030101000921110100012240000705AD +:1002A000810308000A090401000103010200092179 +:1002B00011010001224D000705820308000A09040C +:1002C0000200010300000009211101000122360093 +:1002D0000705830308000A09040300020300000065 +:1002E00009211101000122220007058403200001D9 +:1002F000070504032000011201100100000008EDB1 +:10030000FEBCBC0005010200010631FF0974A10119 +:100310000975150026FF00952075088102097615DC +:100320000026FF00952075089102C005010980A1F3 +:1003300001850216810026B7001A81002AB70075D0 +:100340001095018100C0050C0901A101850316016A +:1003500000269C021A01002A9C027510950181005A +:10036000C005010902A1010901A10005091901291E +:10037000051500250195057501810295017503811B +:10038000010501093009311581257F950275088124 +:100390000609381581257F950175088106050C0A27 +:1003A00038021581257F950175088106C0C00501B9 +:1003B0000906A101050719E029E71500250195089F +:1003C000750181029501750881010508190129054A +:1003D00095057501910295017503910105071900B5 +:1003E00029FF150026FF00950675088100C00A0048 +:1003F0002530325820006B6579626F6172645F72DC +:1004000065706F72743A20004C45443A20253032B2 +:10041000580A00290A002575002F002575005D285F +:1004200000256400200025640020002564002000D1 +:100430002564007C0025303258006D6F7573656B44 +:100440006579205B62746E7C782079207620685D07 +:10045000287265702F61636C293A205B006D6B5FB9 +:10046000776865656C5F74696D655F746F5F6D61FA +:1004700078203D2025640A006D6B5F776865656CA8 +:100480005F6D61785F7370656564203D2025640A47 +:10049000006D6B5F74696D655F746F5F6D6178206F +:1004A0003D2025640A006D6B5F6D61785F73706538 +:1004B0006564203D2025640A006D6B5F696E74657C +:1004C0007276616C203D2025640A006D6B5F646567 +:1004D0006C6179203D2025640A006D6B5F7768654B +:1004E000656C5F74696D655F746F5F6D6178203DE9 +:1004F0002025640A006D6B5F776865656C5F6D61D0 +:10050000785F7370656564203D2025640A006D6B1B +:100510005F74696D655F746F5F6D6178203D202544 +:10052000640A006D6B5F6D61785F73706565642050 +:100530003D2025640A006D6B5F696E74657276619B +:100540006C203D2025640A006D6B5F64656C6179E9 +:10055000203D2025640A000A00257500363A2077E0 +:100560006865656C5F74696D655F746F5F6D6178F8 +:100570003A20000A00257500353A20776865656CD9 +:100580005F6D61785F73706565643A20000A0025CD +:100590007500343A2074696D655F746F5F6D6178C2 +:1005A0003A20000A00257500333A206D61785F73A8 +:1005B000706565643A20000A00257500323A2069AA +:1005C0006E74657276616C286D73293A20000A009A +:1005D000257500313A2064656C6179282A31306DC7 +:1005E00073293A20000A092D2056616C7565732025 +:1005F0002D0A004D3E004D25643E20003F007365EE +:10060000742064656661756C740A00433E2000774F +:10061000686572652064656C74613A2063757273F5 +:100620006F723D25642C20776865656C3D25640AF2 +:1006300053656520687474703A2F2F656E2E776944 +:100640006B6970656469612E6F72672F77696B697A +:100650002F4D6F7573655F6B6579730A000A092DFD +:10066000204D6F7573656B6579202D0A4553432FB7 +:10067000713A09717569740A313A0964656C617976 +:10068000282A31306D73290A323A09696E7465720D +:1006900076616C286D73290A333A096D61785F734E +:1006A000706565640A343A0974696D655F746F5FDB +:1006B0006D61780A353A09776865656C5F6D6178B8 +:1006C0005F73706565640A363A09776865656C5FC3 +:1006D00074696D655F746F5F6D61780A0A703A09BD +:1006E0007072696E742076616C7565730A643A097C +:1006F0007365742064656661756C74730A75703A0D +:10070000092B310A646F776E3A092D310A706775CB +:10071000703A092B31300A7067646F776E3A092D91 +:1007200031300A0A7370656564203D2064656C741D +:1007300061202A206D61785F7370656564202A20CE +:1007400028726570656174202F2074696D655F740F +:100750006F5F6D6178290A003F004D3E2000433EE7 +:1007600020004C25640A000A092D20436F6E736F28 +:100770006C65202D0A4553432F713A0971756974D0 +:100780000A6D3A096D6F7573656B65790A000A0920 +:100790002D204D61676963202D0A643A0964656202 +:1007A00075670A783A096465627567206D617472CD +:1007B00069780A6B3A096465627567206B657962CE +:1007C0006F6172640A6D3A096465627567206D6FC6 +:1007D0007573650A763A0976657273696F6E0A7386 +:1007E0003A097374617475730A633A09636F6E73BF +:1007F0006F6C65206D6F64650A302D343A096C6149 +:10080000796572302D34284631302D4634290A500E +:100810006175733A09626F6F746C6F616465720A17 +:10082000003F0074696D65725F72656164333228E0 +:10083000293A202530346C580A006B6579626F6163 +:1008400072645F69646C653A2025580A006B6579AB +:10085000626F6172645F70726F746F636F6C3A2065 +:1008600025580A00686F73745F6B6579626F6172F7 +:10087000645F6C65647328293A2025580A000A09C8 +:100880002D20537461747573202D0A004743433A39 +:1008900020342E392E32204156522D4C4942433AB3 +:1008A00020312E382E3073766E204156525F4152E1 +:1008B00043483A2061767233350A004F5054494F0D +:1008C0004E533A204C554641204D4F5553454B45CC +:1008D000592045585452414B455920434F4E534F90 +:1008E0004C4520434F4D4D414E44204B45594D41C1 +:1008F000505F53454354494F4E20343039360A0037 +:100900004255494C443A20626436386337312D648D +:1009100069727479202831313A32303A31342053B7 +:1009200065702020392032303136290A005649447A +:100930003A2030784645454428742E6D2E6B2E297A +:10094000205049443A20307842434243284E65586B +:1009500054204B6579626F61726420746F20555327 +:100960004220636F6E766572746572292056455217 +:100970003A203078303530300A00444553433A202D +:1009800055534220636F6E76657274657220666F90 +:1009900072204E655854206E6F6E2D414442204B9C +:1009A0006579626F6172640A000A092D20566572CA +:1009B00073696F6E202D0A000A6D6F7573653A209A +:1009C0006F66660A000A6D6F7573653A206F6E0A6E +:1009D000000A6B6579626F6172643A206F66660A1D +:1009E000000A6B6579626F6172643A206F6E0A006B +:1009F0000A6D61747269783A206F66660A000A6D42 +:100A000061747269783A206F6E0A000A64656275D3 +:100A1000673A206F6E0A000A64656275673A206F54 +:100A200066660A000A0A626F6F746C6F61646572B1 +:100A30002E2E2E2000433E20000011241FBECFEF9B +:100A4000D4E0DEBFCDBF04B603FE27C08091CB014A +:100A50009091CC01A091CD01B091CE018730904B07 +:100A6000A740B04BD1F41092CB011092CC01109260 +:100A7000CD011092CE0114BE84B7877F84BF0FB61C +:100A8000F894A8958091600088618093600010922E +:100A900060000FBEE0E0F8E3099511E0A0E0B1E0EE +:100AA000E0ECF9E402C005900D92A233B107D9F74A +:100AB00021E0A2E3B1E001C01D92AB3CB207E1F737 +:100AC0000E944B0B0C94DE240C940000FF93EF93D8 +:100AD000E0913201F0913301309709F00995EF91DF +:100AE000FF910895FC018591803011F0EFDFFBCF7D +:100AF0000895FF27E0E230E247FF0CC0419597FFE1 +:100B000009C0EDE26095709580959095611D711D0D +:100B1000811D911D27FF02C0219530E350E2AA27D5 +:100B2000660F771F881F991FAA1FA41710F0A41B18 +:100B300063955A95A9F7AA3008F0A95FA05DAF9315 +:100B4000F395611571058105910541F7ED3211F4B9 +:100B5000EF93F395F21718F43F93F395FBCF8F9132 +:100B6000B5DFFA95E1F70895E991F9918591803023 +:100B700021F0853219F0AADFF9CF089520E0E8943A +:100B800055915532C1F3503311F4689455915A334D +:100B900048F4505390F3220F022E220F220F200D03 +:100BA000250FF4CF0EF4219589919991533619F3BD +:100BB000533729F1533559F1BC0188279927E89417 +:100BC0005C3621F48991999168945591543639F4A1 +:100BD00046EF7EF077FF0DC08FEF9FEF0AC05537CD +:100BE0004AE039F0583540E121F0523642E009F050 +:100BF0000895FF93EF937DDFEF91FF91B7CFFF93C0 +:100C0000EF93FC0181918030B9F360DFFBCFFF935C +:100C1000EF9368DFF1CFDF93CF93CDB7DEB72596A3 +:100C2000A3DFCF91DF910895E82FE695E695E6954D +:100C3000EF70F0E0EA5CFE4F4081282F277081E0E2 +:100C400090E002C0880F991F2A95E2F7242F30E028 +:100C500028233923232B29F4842B808381E080935C +:100C600035010895E82FE695E695E695EF70F0E0FA +:100C7000EA5CFE4F2081382F377081E090E002C09F +:100C8000880F991F3A95E2F7422F50E048235923E5 +:100C9000452B31F080958223808381E0809335015C +:100CA00008958091AD0181608093AD012FEF84E3C1 +:100CB0009CE0215080409040E1F700C0000080910E +:100CC000AD0180FF08C08EED91E09F938F930E944D +:100CD0000B060F900F90569A5E9A54984C9A89B1D1 +:100CE00084FB992790F981E08927809334019091C2 +:100CF000AD0190FF0CC01F928F938EEB91E09F93FC +:100D00008F930E940B060F900F900F900F900E94F0 +:100D10002508E6E3F1E08CE08E0F11928E13FDCFF3 +:100D20008091AD0180FF08C08FE991E09F938F9380 +:100D30000E940B060F900F9008954F925F926F9252 +:100D40007F928F929F92AF92BF92CF92DF92EF925B +:100D5000FF928FE19EE40197F1F700C000005E98DA +:100D60001092350188E54C9910C00E94140681E06C +:100D700080933401809135018823D9F08091AD01B1 +:100D800080FF17C080E991E00EC00E9432061092E9 +:100D9000340180913501882361F08091AD0180FF9D +:100DA00008C081E891E09F938F930E940B060F90FB +:100DB0000F900E949E086B017C01672B682B692BAA +:100DC00009F4DBC0C11496E0D90690E3E906F1040A +:100DD00009F4D3C05E9A8091AD0126013701442405 +:100DE0009FE0592266247724460157019924AA24BA +:100DF000BB2480FF77C0D701C60142E1B695A79515 +:100E0000979587954A95D1F7817099279F938F93EE +:100E1000D701C60151E1B695A795979587955A9543 +:100E2000D1F7817099279F938F93C701817099277C +:100E30009F938F93D701C6016FE0B695A7959795BD +:100E400087956A95D1F7817099279F938F93D701E2 +:100E5000C6017EE0B695A795979587957A95D1F7C7 +:100E6000817099279F938F93D701C601EDE0B695C6 +:100E7000A79597958795EA95D1F7817099279F93C4 +:100E80008F93D701C601FCE0B695A79597958795F6 +:100E9000FA95D1F7817099279F938F9381E0411440 +:100EA00094E059066104710409F080E01F928F9369 +:100EB000D501C401B695A795979587959F938F9374 +:100EC000FF92EF92DF92CF9288E091E09F938F9311 +:100ED0000E940B068DB79EB748960FB6F8949EBF3A +:100EE0000FBE8DBF81E5E2FE03C00E94140602C062 +:100EF0000E94320682E5E1FE03C00E94140602C091 +:100F00000E94320683E5E0FE03C00E94140602C080 +:100F10000E94320684E5D7FE03C00E94140602C078 +:100F20000E94320685E5D6FE03C00E94140602C068 +:100F30000E94320686E5D5FE03C00E94140602C058 +:100F40000E94320687E5D4FE03C00E94140602C048 +:100F50000E943206D501C401B695A795979587954D +:100F6000411494E059066104710419F40E941406B6 +:100F700002C00E94320681E001C080E0FF90EF9045 +:100F8000DF90CF90BF90AF909F908F907F906F90A9 +:100F90005F904F900895E82FF0E0EA5CFE4F80816B +:100FA0000895089581FF03C061E081E002C060E020 +:100FB00080E00C944A085998519A08955198599A8A +:100FC00008950E94DB078BEF93E00197F1F700C0D3 +:100FD00000000E94DE078BEC90E00197F1F700C063 +:100FE00000000E94DB0783E692E00197F1F700C062 +:100FF00000000C94DE070E94DB078BEC90E0019769 +:10100000F1F700C000000E94DE078FE293E0019735 +:10101000F1F700C000000E94DB078BEC90E0019725 +:10102000F1F700C000000E94DE0787EC94E0019712 +:10103000F1F700C000000E94DB0787EF97E00197FF +:10104000F1F700C000000C94DE070E94DE07509804 +:10105000589A0E94E1078BEF93E00197F1F700C0E7 +:1010600000000E94FB078FE596E00197F1F700C0B2 +:1010700000000E94E1078BEF93E00197F1F700C0B9 +:1010800000000E94FB078FE596E00197F1F700C092 +:10109000000008951F93CF93DF931F92CDB7DEB763 +:1010A000162FF89489830E94DB07EBE2F7E0319773 +:1010B000F1F700C000000E94DE07E3E6F2E031979E +:1010C000F1F700C000000E94DB07EBECF0E0319785 +:1010D000F1F700C000008981882339F00E94DE0703 +:1010E0008BEC90E00197F1F706C00E94DB07EBEC78 +:1010F000F0E03197F1F700C00000112339F00E94B1 +:10110000DE078BEC90E00197F1F706C00E94DB0749 +:10111000EBECF0E03197F1F700C000000E94DB0734 +:1011200083E995E00197F1F700C000000E94DE0717 +:1011300078940F90DF91CF911F910895CF92DF9215 +:10114000EF92FF920F931F93489B13C00E94E107F9 +:10115000F89480E593EC489B08C0009741F025E0A7 +:101160002A95F1F700000197F6CF892B41F40E94F0 +:10117000FB07789430E020E080E090E032C085E822 +:101180008A95F1F7000040E050E0BA0180E001E00C +:1011900010E020E030E0489B17C068017901082E7C +:1011A00004C0CC0CDD1CEE1CFF1C0A94D2F74C29A9 +:1011B0005D296E297F298A3039F44899FECFE5E808 +:1011C000EA95F1F700008BE0E7ECF0E03197F1F7FA +:1011D00000C000008F5F8631F0F27894342F252F05 +:1011E000CB01632F722F1F910F91FF90EF90DF9033 +:1011F000CF90089580914D0108959FB7F894109273 +:1012000044019FBF9091C201943009F057C0909162 +:10121000E9009F703091EC00232F217030FD20E811 +:10122000922B24E02093E9002091EB0020FF43C0A3 +:101230002091EE0027FF3FC020914201222321F0A0 +:101240002091E80025FF37C01092420126E030913E +:10125000E80035FD15C03091C201343061F53091A0 +:10126000EB0035FD28C0215021F481E0809342013C +:1012700022C0EFE9FFE03197F1F700C00000E7CFAF +:101280008093F1008091E80085FD0AC08091E8001C +:1012900080FFFCCF8091E8008E778093E80006C045 +:1012A0008FB7F89421E0209344018FBF9F709093F3 +:1012B000E90080E008959F709093E9008FEF089512 +:1012C000CF93DF9300D01F92CDB7DEB79C01809102 +:1012D000C201843019F593E099833B832A8390936C +:1012E000E9008FEF9091E800815095FD06C095EDE3 +:1012F0009A95F1F700008111F5CF8091E80085FF04 +:101300000DC040E050E063E070E0CE0101960E9425 +:10131000090C8091E8008E778093E8000F900F9081 +:101320000F90DF91CF910895CF93DF9300D01F925C +:10133000CDB7DEB72091C201243021F522E0298308 +:101340009B838A8383E08093E9008FEF9091E8008C +:10135000815095FD06C095ED9A95F1F70000811139 +:10136000F5CF8091E80085FF0DC040E050E063E0DC +:1013700070E0CE0101960E94090C8091E8008E7702 +:101380008093E8000F900F900F90DF91CF91089518 +:101390002091C2012430F1F422E02093E9002FEFE4 +:1013A0003091E800215035FD06C035ED3A95F1F752 +:1013B00000002111F5CF2091E80025FF0BC040E08F +:1013C00050E065E070E00E94090C8091E8008E77A3 +:1013D0008093E8000895CF93DF932091C2012430D9 +:1013E00039F521E02093E9002FEF3091E8002150FA +:1013F00035FD06C035ED3A95F1F700002111F5CF26 +:101400002091E80025FF14C0EC0140E050E068E0C6 +:1014100070E00E94090C8091E8008E778093E800CC +:1014200088E0FE01A5E4B1E001900D928A95E1F714 +:10143000DF91CF9108958BE292E00E947205809136 +:10144000C101811109C00E949A0D0E94ED0D809189 +:10145000E20084608093E200089587E292E00E94B7 +:1014600072051092C101089583E292E00C94720516 +:10147000209143012F5F822F62E30E94A4249923CD +:1014800019F0209343010895109243018091440183 +:10149000882371F18091C201843041F58091E90087 +:1014A0008F702091EC00922F917020FD90E8892B95 +:1014B00094E09093E9009091EB0090FF14C090911C +:1014C000EE0097FF10C09091E80095FF03C01092C6 +:1014D000F100F9CF9091E80090FF05C09091E800ED +:1014E0009E779093E8008F708093E90010924401FA +:1014F000089542E061EC81E00E94140D42E061EC4D +:1015000082E00E94140D42E061EC83E00E94140D21 +:1015100042E261EC84E00C94140D8091C4018330AC +:1015200009F453C030F4813071F0823009F48CC07A +:1015300008958A3009F478C08B3009F45EC0893090 +:1015400009F09AC020C08091C301813A09F094C08B +:101550008091E800877F8093E8008091C701909197 +:10156000C801892B21F468E085E491E003C060E0C4 +:1015700080E090E070E00E94560C8091E8008B774C +:101580008093E80008958091C301813209F074C00E +:101590008091C7019091C801892B09F06DC080919D +:1015A000E800877F8093E8008091E80082FD05C015 +:1015B0008091C2018111F8CF5FC08091F1008093CA +:1015C0004D018091E8008B7753C08091C301813A2F +:1015D00009F052C08091C7019091C801892B09F090 +:1015E0004BC08091E800877F8093E8008091E800FD +:1015F00080FFFCCF80910A0136C08091C301813207 +:10160000D9F58091C7019091C801892BA9F58091E6 +:10161000E800877F8093E8000E94490D8091C50112 +:1016200080930A010C94A3158091C301813221F5A6 +:101630008091E800877F8093E8000E94490D8091A7 +:10164000C60180934E0108958091C301813AA1F4AF +:101650008091E800877F8093E8008091E80080FF18 +:10166000FCCF80914E018093F1008091E8008E774D +:101670008093E8000C94490D0895089508950E9400 +:10168000931B8091C001882329F00E94BE1B811109 +:101690000C94F30B089584B7877F84BF0FB6F8943A +:1016A000A89580916000886180936000109260002E +:1016B0000FBE90E080E80FB6F8948093610090939D +:1016C00061000FBE0E943D0B0E94A4100E949A0D63 +:1016D0000E94ED0D8091E20084608093E2008DEF26 +:1016E00098E00E947A1B78948091C201843019F0AE +:1016F0000E94F70FF9CF82E192E00E9472050E94EA +:10170000A61080E091E00E94121081E092E00E9419 +:1017100072050E943E0B8091C201853039F48DEF35 +:1017200091E00E9472050E943F0BF5CF0E94AA1023 +:101730000E94F70FF0CF292F332723303105C9F04E +:1017400064F42130310581F02230310509F043C0C5 +:1017500084E790E023E832E042C021323105F1F025 +:101760002232310541F137C082E190E027EF32E0CB +:1017700036C099278130910541F08230910541F0C2 +:10178000892B49F5EFE7F2E005C0EFE6F2E002C091 +:10179000EFE2F2E0849190E09F0121C06430D8F440 +:1017A000E62FF0E0EE0FFF1FE15EFE4F208131815A +:1017B00089E090E014C0643070F470E0FB01EE0F3B +:1017C000FF1FE95EFE4F20813181FB01ED5EFE4F80 +:1017D000808190E004C080E090E020E030E0FA01F9 +:1017E00031832083089584E089BD86E089BD09B4F2 +:1017F00000FEFDCF8091D8008F7D8093D80080912E +:10180000E00082608093E0008091E00081FDFCCFE9 +:101810000895CF92DF92EF92FF920F931F93CF9391 +:10182000DF93EC018B017A010E94680D811135C0B4 +:10183000E114F10439F0F70180819181081B190B43 +:10184000C80FD91FC12CD12C0115110529F1809188 +:10185000E80085FD18C08091E8008E778093E8004D +:101860000E94F70FE114F10449F0F70180819181A2 +:10187000C80ED91ED182C08285E00FC00E94680DBB +:10188000882311F30AC089918093F1000150110956 +:10189000FFEFCF1ADF0AD8CF80E0DF91CF911F9101 +:1018A0000F91FF90EF90DF90CF9008952091C901A4 +:1018B0003091CA012617370748F06115710539F4D0 +:1018C0002091E8002E772093E80001C0B90140E0A4 +:1018D0006115710591F12091C201222309F440C0E4 +:1018E000253009F43FC02091E80023FD3DC0209140 +:1018F000E80022FD2FC02091E80020FFE9CF2091D1 +:10190000F20030E0FC01CF016115710559F028307B +:10191000310540F481918093F100615071092F5F8E +:101920003F4FF1CF41E02830310509F040E02091F0 +:10193000E8002E772093E800CBCF4111CCCF0AC02E +:101940008091C201882361F0853061F08091E800C8 +:1019500083FD0AC08091E80082FFF2CF80E0089505 +:1019600082E0089583E0089581E008952091C901FF +:101970003091CA012617370748F06115710539F40F +:101980002091E8002E772093E80001C0B901FC0106 +:1019900020E06115710579F18091C201882309F475 +:1019A0003DC0853009F43CC08091E80083FD3AC019 +:1019B0008091E80082FD2CC08091E80080FFE9CF93 +:1019C0008091F20090E06115710559F08830910521 +:1019D00040F424912093F1003196615071090196F1 +:1019E000F2CF21E0089709F020E08091E8008E779F +:1019F0008093E800CECF2111CFCF0AC08091C201E1 +:101A0000882361F0853061F08091E80083FD0AC091 +:101A10008091E80082FFF2CF80E0089582E008958F +:101A200083E0089581E00895982F953058F59093BC +:101A3000E900981739F07091EC002091ED00509179 +:101A4000F00003C0242F762F50E021FF19C0309101 +:101A5000EB003E7F3093EB003091ED003D7F309303 +:101A6000ED003091EB0031603093EB007093EC00AF +:101A70002093ED005093F0002091EE0027FF07C067 +:101A80009F5FD3CF8F708093E90081E0089580E05D +:101A900008958091C30187FF11C08091E80082FD05 +:101AA00005C08091C2018111F8CF11C08091E8007A +:101AB0008B770BC08091C201882349F08091E800A8 +:101AC00080FFF8CF8091E8008E778093E80008953A +:101AD0002091E4003091E50095E64091EC00842FE0 +:101AE000817040FF22C08091E80080FD1CC0809181 +:101AF000C201882391F0853091F08091EB0085FD43 +:101B000010C04091E4005091E5004217530729F3BB +:101B10009A01915011F784E0089582E0089583E0DE +:101B2000089581E0089580E008954091E80042FF23 +:101B3000DECF08950E94F70D0E94FA0DE0EEF0E06E +:101B4000808181608083E8EDF0E080818F77808301 +:101B500019BCE3E6F0E08081816080831092C101CE +:101B600008950E94F70D0E94FA0D8091D8008F779A +:101B70008093D8008091D80080688093D8008091AD +:101B8000D8008F7D8093D80084E089BD86E089BD30 +:101B900009B400FEFDCF1092C2011092BE01109256 +:101BA000C0011092BF0142E060E080E00E94140D8D +:101BB0008091E1008E7F8093E1008091E20081605E +:101BC0008093E2008091E20088608093E20080913F +:101BD000E0008E7F8093E0000895E3E6F0E08081EE +:101BE0008E7F808381E08093C1010C94B10D1092AF +:101BF000E20008951092E10008951F920F920FB62F +:101C00000F9211242F933F934F935F936F937F9382 +:101C10008F939F93AF93BF93EF93FF938091E100D6 +:101C200082FF0BC08091E20082FF07C08091E1003B +:101C30008B7F8093E1000E94380A8091E10080FF51 +:101C400018C08091E20080FF14C08091E2008E7F76 +:101C50008093E2008091E20080618093E2008091B5 +:101C6000D80080628093D80019BC1092C2010E94F3 +:101C70002D0A8091E10084FF30C08091E20084FF52 +:101C80002CC084E089BD86E089BD09B400FEFDCF8B +:101C90008091D8008F7D8093D8008091E1008F7E65 +:101CA0008093E1008091E2008F7E8093E20080913A +:101CB000E20081608093E2008091BE01882311F0F0 +:101CC00084E007C08091E30087FD02C081E001C08D +:101CD00083E08093C2010E941B0A8091E10083FF90 +:101CE00024C08091E20083FF20C08091E100877FC3 +:101CF0008093E10082E08093C2011092BE01809146 +:101D0000E1008E7F8093E1008091E2008E7F8093DE +:101D1000E2008091E20080618093E20042E060E0B6 +:101D200080E00E94140D0E94340AFF91EF91BF9150 +:101D3000AF919F918F917F916F915F914F913F9163 +:101D40002F910F900FBE0F901F9018951F93CF9358 +:101D5000DF93CDB7DEB7AA970FB6F894DEBF0FBEFC +:101D6000CDBFE3ECF1E088E08E0F9091F10091930C +:101D70008E13FBCF0E948D0A8091E80083FF1FC164 +:101D80008091C3019091C401492F50E04A30510520 +:101D900008F015C1FA01E65CFF4F0C94C4248038AA +:101DA00081F0823809F00BC18091C7018F70809358 +:101DB000E9008091EB0085FB882780F91092E9000B +:101DC00006C08091BF019091C001911182609091F5 +:101DD000E800977F9093E8008093F1001092F10063 +:101DE000C8C0282F2D7F09F0EAC0882319F082305F +:101DF00061F0E5C08091C501813009F0E0C0933009 +:101E000009F080E08093C0012BC08091C501811151 +:101E100027C08091C7018F7009F4D1C08093E90079 +:101E20002091EB0020FF1CC0933021F48091EB0047 +:101E3000806214C09091EB0090619093EB0021E0E0 +:101E400030E0A90102C0440F551F8A95E2F7409384 +:101E5000EA001092EA008091EB0088608093EB002A +:101E60001092E9008091E800877F86C08111A7C0A9 +:101E70001091C5011F778091E3008078812B8093BA +:101E8000E3008091E800877F8093E8000E94490D7D +:101E90008091E80080FFFCCF8091E3008068809310 +:101EA000E300111102C082E001C083E08093C2010F +:101EB00086C08058823008F082C08091C501909120 +:101EC000C6018C3D53E0950779F583E08A838AE269 +:101ED00089834FB7F894DE01139620E03EE051E28B +:101EE000E32FF0E050935700E49120FF03C0E29508 +:101EF000EF703F5FEF708E2F90E0EA3010F0C796E2 +:101F000001C0C0968D939D932F5F243149F74FBF39 +:101F10008091E800877F8093E8006AE270E0CE015C +:101F200001960E94560C14C0AE014F5F5F4F609146 +:101F3000C7010E949B0BBC01892B09F440C0909102 +:101F4000E800977F9093E80089819A810E94B60CFF +:101F50008091E8008B778093E80031C0803879F574 +:101F60008091E800877F8093E8008091BE01809394 +:101F7000F1008091E8008E778093E8000E94490D7F +:101F80001EC081111CC09091C5019230C0F4809197 +:101F9000E800877F8093E8009093BE010E94490D7E +:101FA0008091BE01811106C08091E30087FD02C0CF +:101FB00081E001C084E08093C2010E94790A80918F +:101FC000E80083FF0AC08091E800877F8093E800E3 +:101FD0008091EB0080628093EB00AA960FB6F89494 +:101FE000DEBF0FBECDBFDF91CF911F910895CF937C +:101FF0008091C2018823A1F0C091E900CF70909137 +:10200000EC00892F817090FD80E8C82B1092E900C8 +:102010008091E80083FD0E94A60ECF70C093E90076 +:10202000CF91089590935401809353010895E091C6 +:102030005301F0915401309721F00190F081E02D8F +:10204000099480E00895EF92FF920F931F93CF932E +:10205000DF93E0915301F09154013097B1F18C017D +:102060000280F381E02D09958091AD0182FF2DC0A2 +:1020700080FF04C086EF93E00E947205E80118E03B +:1020800080EFE82E83E0F82E8091AD0180FF0BC039 +:1020900088811F928F93FF92EF920E940B060F9000 +:1020A0000F900F900F90115021961111EDCF80914C +:1020B000AD0180FF0AC08EEE93E0DF91CF911F91BA +:1020C0000F91FF90EF900C947205DF91CF911F91CB +:1020D0000F91FF90EF900895E0915301F09154011A +:1020E000309721F00480F581E02D09940895209126 +:1020F0005101309152018217930771F09093520170 +:1021000080935101E0915301F0915401309721F0F7 +:102110000680F781E02D0994089520914F013091B8 +:1021200050018217930771F09093500180934F01F3 +:10213000E0915301F0915401309721F00084F18532 +:10214000E02D0994089508950C94A3100E94FB1BA0 +:102150000C945106CF92DF92EF92FF920F931F9350 +:10216000CF93DF9300D000D000D0CDB7DEB70E9470 +:102170009D0686E5C82E81E0D82E00E010E0E02E16 +:10218000802F0E94CB07F60141916F01F42EF826B3 +:10219000B1F40F5F1F4F0C30110589F78FEF898362 +:1021A0008A831B820E94041C8160782F9D838C830C +:1021B00049815A816B818D810E94691147C090913C +:1021C000AD0191FF04C08E830E94D1078E8120E073 +:1021D00030E04F2D50E0922FBA01022E02C07595CB +:1021E00067950A94E2F760FF2BC02983EA8221E019 +:1021F00030E0690102C0CC0CDD1C9A95E2F790E05A +:102200008C219D21892B09F420E02B830E94041C42 +:102210008160782F9D838C8349815A816B818D8168 +:102220000E94691149815A816B817C818D810E9454 +:10223000801BF801EA5AFE4F8081C826C08206C082 +:102240002F5F3F4F2830310531F6A3CF0E947F1B0F +:102250000E94D11E109155010E941710181741F1CC +:102260000E941710809355019091AD0192FF0EC00E +:1022700090FF0CC01F928F9388E094E09F938F9300 +:102280000E940B060F900F900F900F9080915501B8 +:1022900026960FB6F894DEBF0FBECDBFDF91CF916B +:1022A0001F910F91FF90EF90DF90CF900C94911BB6 +:1022B00026960FB6F894DEBF0FBECDBFDF91CF914B +:1022C0001F910F91FF90EF90DF90CF9008950C94A5 +:1022D000D207CF93DF93CDB7DEB72B970FB6F89425 +:1022E000DEBF0FBECDBF942F4F83252F5887698740 +:1022F0007A878B874A855B85452B21F02F3F09F52F +:102300009F3FF9F4DE01119686E0FD0111928A9556 +:10231000E9F785E0FE01379601900D928A95E1F785 +:1023200049815A816B817C818D819E810E944C18EC +:102330002B960FB6F894DEBF0FBECDBFDF91CF91C5 +:1023400008954F81588569857A858B850E94801B09 +:10235000D9CFCF93882309F4A4C0C82F8CEF8C0F5A +:10236000813A48F48C2F0E94FD2181119AC08C2F54 +:102370000E94DB1A0CC080E28C0F883058F4C770C2 +:1023800081E001C0880FCA95EAF70E941A1BCF911D +:102390000C94541B8BE58C0F833078F4C53A29F0EC +:1023A000C63A31F083E890E005C081E890E002C0D1 +:1023B00082E890E0CF910C94771088E58C0F8531FE +:1023C00008F06FC0C83A61F1C93A69F1CA3A71F1CF +:1023D000CB3A79F1CC3A81F1CD3A89F1CE3A91F10B +:1023E000CF3A99F1C13BA1F1C03BA9F1C23BB1F198 +:1023F000C33BB9F1C43BC1F1C53BC9F1C63BD1F107 +:10240000C73BD9F1C83BE1F1C93BE9F1CA3BF1F166 +:10241000CB3BF9F1CC3B09F43FC080E090E03EC0FB +:1024200082EE90E03BC089EE90E038C08AEE90E00A +:1024300035C085EB90E032C086EB90E02FC083EB97 +:1024400090E02CC084EB90E029C087EB90E026C0A0 +:102450008CEC90E023C08DEC90E020C083E891E00C +:102460001DC08AE891E01AC082E991E017C084E9B2 +:1024700091E014C081E292E011C083E292E00EC0CC +:1024800084E292E00BC085E292E008C086E292E02E +:1024900005C087E292E002C08AE292E0CF910C94FC +:1024A0008D10CF910895882329F19CEF980F913AD0 +:1024B00018F40E94F81A0DC090E2980F983058F462 +:1024C000877091E001C0990F8A95EAF7892F0E94E1 +:1024D000201B0C94541B9BE5980F933020F480E054 +:1024E00090E00C947710885A853120F480E090E0D9 +:1024F0000C948D100895882321F00E941A1B0C94CF +:10250000541B0895882321F00E94201B0C94541B17 +:102510000895CF92DF92EF92FF920F931F93CF9384 +:10252000DF9300D000D000D0CDB7DEB725E0FC01AE +:10253000DE01119601900D922A95E1F7FC01408190 +:102540003181F280258122952F7063817481672B00 +:1025500009F4D8C23F3F19F44F3F09F4D3C26C01CC +:1025600049833A8389819A812E830E949A1A182F6F +:10257000092F0E94991A0E94A919E02FE295EF7085 +:10258000F0E0EC5BFF4F2E810C94C424802F807F01 +:10259000902F9F70092F882311F00295007FFF2054 +:1025A00049F0002309F45FC2802F0E942D1B0E9476 +:1025B000541B59C2812F0E945312002309F4A2C256 +:1025C000802F0E94331B26960FB6F894DEBF0FBEF5 +:1025D000CDBFDF91CF911F910F91FF90EF90DF90D2 +:1025E000CF900C94541B802F807F902F9F70092FC9 +:1025F000803211F00295007F112319F0113001F1A2 +:1026000029C0FF20A9F0802F222349F1213039F57C +:1026100026960FB6F894DEBF0FBECDBFDF91CF91E7 +:102620001F910F91FF90EF90DF90CF900C943D1B86 +:10263000222319F0213009F465C20E94401B2CC0EE +:10264000FF20E9F0263008F05DC20E94171B8023AE +:1026500029F022C0FF20F1F0211115C0802F26960D +:102660000FB6F894DEBF0FBECDBFDF91CF911F91A3 +:102670000F91FF90EF90DF90CF900C947B1225305C +:1026800008F040C209C0F601858180FFECC18F705F +:102690008583E4CF2111FBC1802F69C1202F2695AE +:1026A0002695237030E02115310521F021303105C8 +:1026B000C9F028C2FF2021F0812F902F937002C013 +:1026C00080E090E026960FB6F894DEBF0FBECDBF37 +:1026D000DF91CF911F910F91FF90EF90DF90CF90FE +:1026E0000C947710FF2021F0812F902F937002C05F +:1026F00080E090E026960FB6F894DEBF0FBECDBF07 +:10270000DF91CF911F910F91FF90EF90DF90CF90CD +:102710000C948D10812FFF2019F00E94571D02C0CC +:102720000E94BF1D26960FB6F894DEBF0FBECDBF28 +:10273000DF91CF911F910F91FF90EF90DF90CF909D +:102740000C94441E802F837009F078C0F110DAC118 +:10275000812F829586958770880F880F912F9F70A3 +:10276000C92ED12CE12CF12C082E04C0CC0CDD1C80 +:10277000EE1CFF1C0A94D2F714FF12C04FE050E089 +:1027800060E070E004C0440F551F661F771F8A95F4 +:10279000D2F7CB01BA01609570958095909503C0F2 +:1027A00060E070E0CB01202F269526952370422F04 +:1027B00050E042305105D1F04330510559F16C29B8 +:1027C0007D298E299F294130510541F126960FB66A +:1027D000F894DEBF0FBECDBFDF91CF911F910F9157 +:1027E000FF90EF90DF90CF900C94BE196C297D295B +:1027F0008E299F2926960FB6F894DEBF0FBECDBF57 +:10280000DF91CF911F910F91FF90EF90DF90CF90CC +:102810000C94D0190E94BE19C701B60126960FB6B6 +:10282000F894DEBF0FBECDBFDF91CF911F910F9106 +:10283000FF90EF90DF90CF900C94AC19FF2019F02F +:10284000802F817001C08695882309F45BC1812F98 +:10285000829586958770880F880F912F9F70C92E5B +:10286000D12CE12CF12C082E04C0CC0CDD1CEE1C6C +:10287000FF1C0A94D2F714FF12C04FE050E060E052 +:1028800070E004C0440F551F661F771F8A95D2F76A +:10289000CB01BA01609570958095909503C060E07A +:1028A00070E0CB01202F269526952370422F50E013 +:1028B00042305105D1F04330510559F16C297D2941 +:1028C0008E299F294130510541F126960FB6F89483 +:1028D000DEBF0FBECDBFDF91CF911F910F91FF9053 +:1028E000EF90DF90CF900C94751A6C297D298E297A +:1028F0009F2926960FB6F894DEBF0FBECDBFDF919D +:10290000CF911F910F91FF90EF90DF90CF900C949B +:10291000871A0E94751AC701B60126960FB6F89459 +:10292000DEBF0FBECDBFDF91CF911F910F91FF9002 +:10293000EF90DF90CF900C94631A103F41F118F4A0 +:10294000103E48F48BC0123F09F450C0D8F1133F39 +:1029500009F460C083C01F70802F8F71FF2021F0A9 +:102960000E94FC19812F7BCE0E941D1A812F269672 +:102970000FB6F894DEBF0FBECDBFDF91CF911F9190 +:102980000F91FF90EF90DF90CF900C948212FF2078 +:10299000A9F0253008F0B6C0802F8F7126960FB6AB +:1029A000F894DEBF0FBECDBFDF91CF911F910F9185 +:1029B000FF90EF90DF90CF900C94421A263008F0F1 +:1029C000A1C0EACFFF20A1F0802F8F7126960FB60D +:1029D000F894DEBF0FBECDBFDF91CF911F910F9155 +:1029E000FF90EF90DF90CF900C94FC19FF2061F3E3 +:1029F000802F8F7126960FB6F894DEBF0FBECDBF25 +:102A0000DF91CF911F910F91FF90EF90DF90CF90CA +:102A10000C941D1AFF2091F0802F8F7126960FB60F +:102A2000F894DEBF0FBECDBFDF91CF911F910F9104 +:102A3000FF90EF90DF90CF900C94E71926960FB699 +:102A4000F894DEBF0FBECDBFDF91CF911F910F91E4 +:102A5000FF90EF90DF90CF900C94E219FF20A1F04F +:102A6000222309F4B1CF812F26960FB6F894DEBF4A +:102A70000FBECDBFDF91CF911F910F91FF90EF90CF +:102A8000DF90CF900C94A911222309F4B1CF812FAC +:102A900026960FB6F894DEBF0FBECDBFDF91CF9163 +:102AA0001F910F91FF90EF90DF90CF900C945312F5 +:102AB000402F4F70612FC6010E94CD1C26960FB685 +:102AC000F894DEBF0FBECDBFDF91CF911F910F9164 +:102AD000FF90EF90DF90CF900C94F418402F4F7040 +:102AE000612FC60126960FB6F894DEBF0FBECDBF8C +:102AF000DF91CF911F910F91FF90EF90DF90CF90DA +:102B00000C94D01C26960FB6F894DEBF0FBECDBF36 +:102B1000DF91CF911F910F91FF90EF90DF90CF90B9 +:102B200008950E943A1B0E94091B0E94541B0E9498 +:102B3000781F0E94441E80E090E00E94771080E0A1 +:102B400090E00C948D100E942A1B0C9491150E9409 +:102B50009A1A292F22952F7030E02C3031054CF431 +:102B60002A3031056CF4225031092230310588F4C5 +:102B700007C02C30310549F02F30310531F009C044 +:102B8000803E48F0803F29F406C093FB882780F9F7 +:102B9000089580E0089581E00895CF93DF9300D0F9 +:102BA00000D01F92CDB7DEB70F900F900F900F900F +:102BB0000F90DF91CF910895CF93DF9300D000D095 +:102BC00000D0CDB7DEB726960FB6F894DEBF0FBEA5 +:102BD000CDBFDF91CF910895CF93DF93C091620174 +:102BE00080916301C817A1F0D0E0CE0166E070E0EB +:102BF0000E949324FC01EC59FE4F40815181628177 +:102C00007381848195810E94DC152196C770E8CF7D +:102C1000DF91CF9108954091940150919501609179 +:102C200096017091970180919801909199010C946F +:102C3000DC15CF93DF938091990182958F7009F015 +:102C40005CC080919601882309F457C020916201ED +:102C5000D091630140919401C0919501E091970159 +:102C6000F09198012D1709F448C030E0309709F42D +:102C700040C0CF3F11F44F3FE1F1C90166E070E081 +:102C80000E949324DC01AC59BE4F11968C91119790 +:102C9000C8132FC08C9148132CC012968C91129798 +:102CA000811127C013968D919C9114978E179F07C1 +:102CB00008F401978E1B9F0B883C9105D0F48091FE +:102CC00099018F70806180939901C90166E070E07D +:102CD0000E949324FC01E759FE4F90819F70906100 +:102CE000908384E991E00E948912DF91CF910C9446 +:102CF000EC152F5F3F4F2770B5CFDF91CF9108952F +:102D0000BF92CF92DF92EF92FF920F931F93CF93D8 +:102D1000DF93CDB7DEB761970FB6F894DEBF0FBE75 +:102D2000CDBF8C0185E0F801DE011D9601900D926A +:102D30008A95E1F7D8014C9111962C911197129632 +:102D4000EC9012971396CD90DC90149750919401CB +:102D5000609195018091970190919801009709F4F5 +:102D60006EC16F3F19F45F3F09F469C1B0909601DD +:102D7000BB2009F4C3C030919901C816D90628F0C8 +:102D8000F601E81BF90BCF0104C0809590958C0DDE +:102D90009D1DFF24F394883C910588F0F12C307F31 +:102DA00009F0CBC07C2DD98AC88A522F6E2D898913 +:102DB0000E94CD1584E991E00E948912B4C0832F4E +:102DC000807F09F049C0621314C0541312C0E1108F +:102DD00010C03F703061309399010E940B1684E956 +:102DE00091E00E94891280919901D80115968C93E7 +:102DF00031C0CD2831F12F3F11F44F3F11F1FE2C9E +:102E0000E1101FC0E091620130916301E31709F402 +:102E10005CC0F0E0CF0166E070E00E949324DC012A +:102E2000AC59BE4F11968C911197281307C08C9105 +:102E3000481304C012968C91811103C03196E7703B +:102E4000E5CFFE2CEE2009F416C180919901816036 +:102E500080939901F12C0FC1621308C0541306C06E +:102E6000E11004C080919901D801C1C04D872E871F +:102E70008D859E850E94A7158823E1F1EE20D1F172 +:102E800020919901822F82958F7090E0029774F0C3 +:102E9000809194019091950198878F831986DB86A4 +:102EA000CA862C87CE0107960E94891286E0F80117 +:102EB000A4E9B1E001900D928A95E1F70E941916FC +:102EC0000E940B16FF24F394D6C04D872E878D8564 +:102ED0009E850E949A1A292F22952F7030E0223069 +:102EE00031050CF0BCC09F7009F0B6C0805E883020 +:102EF00008F4C1C0C8010E948912E4CFC816D906DF +:102F000008F453C0F601E81BF90BCF01883C91058A +:102F100008F450C0F12C7C2DD98AC88A522F6E2D0E +:102F200089890E94CD15E4E9F1E086E0DF011D9278 +:102F30008A95E9F70E940B169EC0621314C05413C1 +:102F400012C0E11010C080919901F8018583C80179 +:102F50000E94891286E0E4E9F1E0DF011D928A9582 +:102F6000E9F7FB2C88C04D872E878D859E850E94B2 +:102F7000A715882309F4BECFEE2009F4BBCF20911A +:102F80009901822F82958F7090E002970CF48ECF7A +:102F900080919401909195019A8389831B82DD82AF +:102FA000CC822E83CE0101967FCF809590958C0D9B +:102FB0009D1DACCFFE2CEE2009F49CCF62132EC0D9 +:102FC00054132CC02091990120FD1FC0822F82959F +:102FD0008F70D9F0D80115962C9315978F3049F042 +:102FE0008F5F982F9295907F822F8F70892B1596E7 +:102FF0008C93C8010E94891286E0F801A4E9B1E02F +:1030000001900D928A95E1F795CF86E0F801A4E949 +:10301000B1E001900D928A95E1F72DC04D872E8782 +:103020008D859E850E94A715811140CF80919901C1 +:10303000816080939901C8010E9489121CC0EE2012 +:1030400009F458CF4D872E878D859E850E94A71540 +:10305000882309F44FCF2ACF811148CF0CC02430E8 +:1030600031050CF047CF9F7009F440CFF8019581EE +:10307000907F09F03BCF8F2D61960FB6F894DEBF9D +:103080000FBECDBFDF91CF911F910F91FF90EF90B9 +:10309000DF90CF90BF900895CF93DF93CDB7DEB789 +:1030A0002C970FB6F894DEBF0FBECDBF4F83588765 +:1030B00069877A878B879C87CE0107960E94801646 +:1030C000882371F08F8198852A853B85232B09F40D +:1030D0003FC09F3F09F068C08F3F09F065C038C00E +:1030E00086E0FE013796DE01119601900D928A95D9 +:1030F000E1F76F817885EA85FB85309749F17F3F5D +:1031000011F46F3F29F18091630190E09C012F5FE2 +:103110003F4F277033274091620150E02417350755 +:1031200009F44BC069837A83FD83EC8366E070E029 +:103130000E949324DC01AC59BE4F96E0FE0131960B +:1031400001900D929A95E1F7209363010E94EC158E +:1031500080916201909163018917E9F190E066E046 +:1031600070E00E9493248C599E4F0E948016882301 +:1031700091F18091620190E066E070E00E949324FA +:10318000FC01EC59FE4F4081518162817381848141 +:1031900095810E94DC158091620190E00196877014 +:1031A000992780936201D4CF4F81588569857A85AC +:1031B0008B859C850E94DC15CBCF0E94A3151092B5 +:1031C000630110926201E4E9F1E086E0DF011D9203 +:1031D0008A95E9F7BDCF2C960FB6F894DEBF0FBEE7 +:1031E000CDBFDF91CF910895DF92EF92FF920F93C1 +:1031F0001F93CF93DF93FC01892B09F48AC0E12C44 +:10320000F12CDD24D394EF0121968491853709F4C4 +:1032100061C058F4843708F04EC0843008F06AC0AA +:103220008130D1F0823071F174C0883709F45DC00B +:1032300050F4863709F455C0873709F06AC08E2DDF +:103240000E94271B54C09CE7980F903708F061C07C +:103250008F770E94531250C08F010E5F1F4FFE01E7 +:10326000849190E2980F983050F48770FD2D01C042 +:10327000FF0F8A95EAF78F2F0E942D1B14C00E9422 +:10328000A91113C08F010E5F1F4FFE01C49180E290 +:103290008C0F883060F4C7708D2D01C0880FCA95DF +:1032A000EAF70E94331B0E94541BE80125C08C2FB3 +:1032B0000E945312FACF9F012E5F3F4FFE01C4912F +:1032C000CC2369F08FE99FE00197F1F700C000007F +:1032D000C150F6CF9F012E5F3F4FFE01F490E901F0 +:1032E0000BC00E94171BE82E07C00E942A1B0E94D9 +:1032F000541B02C00E94A9118F2D882341F0EFE9D1 +:10330000FFE03197F1F700C000008150F6CFFE01D9 +:103310007ACFDF91CF911F910F91FF90EF90DF90C7 +:10332000089560939E0170939F018093A0019093F4 +:10333000A1010E948F1B0C94911560939A017093C8 +:103340009B0180939C0190939D010E94901B0C9483 +:10335000911508950C9491190F931F9300919E015C +:1033600010919F012091A0013091A101602B712B40 +:10337000822B932B1F910F910C9491190F931F93F4 +:1033800000919E0110919F012091A0013091A10117 +:1033900060237123822393231F910F910C94911921 +:1033A0000F931F9300919E0110919F012091A00106 +:1033B0003091A10160277127822793271F910F91D8 +:1033C0000C94911960E070E0CB010C949D190F935F +:1033D0001F9341E050E060E070E08A019B0104C06F +:1033E000000F111F221F331F8A95D2F7C901B801A0 +:1033F0001F910F910C949D190F931F9341E050E082 +:1034000060E070E004C0440F551F661F771F8A9567 +:10341000D2F780919A0190919B01A0919C01B0916B +:103420009D018A019B01082B192B2A2B3B2BC901DB +:10343000B8011F910F910C949D190F931F9341E0B8 +:1034400050E060E070E004C0440F551F661F771F16 +:103450008A95D2F7409550956095709580919A0124 +:1034600090919B01A0919C01B0919D018A019B01CB +:10347000082319232A233B23C901B8011F910F9167 +:103480000C949D190F931F9341E050E060E070E0B1 +:1034900004C0440F551F661F771F8A95D2F780918D +:1034A0009A0190919B01A0919C01B0919D018A018C +:1034B0009B01082719272A273B27C901B8011F911B +:1034C0000F910C949D190F931F9300919A011091E5 +:1034D0009B0120919C0130919D01602B712B822BCF +:1034E000932B1F910F910C949D190F931F93009193 +:1034F0009A0110919B0120919C0130919D016023C4 +:103500007123822393231F910F910C949D190F9384 +:103510001F9300919A0110919B0120919C01309181 +:103520009D0160277127822793271F910F910C948B +:103530009D190895CF92DF92EF92FF920F931F9300 +:10354000CF93DF938C01C0909E01D0909F01E090BB +:10355000A001F090A10140919A0150919B016091CE +:103560009C0170919D01C42AD52AE62AF72ACFE151 +:10357000D0E0D701C6010C2E04C0B695A79597954B +:1035800087950A94D2F780FF07C0B8018C2F0E945C +:103590009E1C8130910531F4219758F7B80180E0E5 +:1035A0000E949E1CDF91CF911F910F91FF90EF9091 +:1035B000DF90CF90089520910B0130910C01F9011B +:1035C00032969FEF40E05191581789F09F3F19F4D0 +:1035D000511101C0942F4F5F4630A9F79F3F39F03A +:1035E000F901E90FF11D97FDFA9582830895089579 +:1035F00020910B0130910C01F9013296285F3F4F69 +:103600009081981301C010823196E217F307C1F739 +:10361000089581E090E0E0910B01F0910C01E80F3A +:10362000F91F1082019688309105A9F708958091BD +:10363000AC0108959091AC01892B8093AC01089561 +:1036400080959091AC0189238093AC01089580937B +:10365000AC0108951092AC0108959091AB01892BB3 +:103660008093AB01089580959091AB01892380935D +:10367000AB0108951092AB0108958093A2010895C3 +:103680001092A201089580910B0190910C01FC0110 +:1036900031969C01285F3F4F80E0919191118F5F9F +:1036A000E217F307D1F70895E0910B01F0910C01B7 +:1036B0008091AC018083E0910B01F0910C0190812D +:1036C0008091AB01892B80838091A201882361F0D6 +:1036D000E0910B01F0910C019081892B80830E9475 +:1036E000431B81111092A20180910B0190910C015A +:1036F0000C94231090933301809332010895089520 +:10370000CF93DF9300D000D01F92CDB7DEB70F90DC +:103710000F900F900F900F90DF91CF910895089523 +:1037200008950C9467118091C201843021F11092A8 +:10373000AE0120E488E190E00FB6F894A89580935C +:1037400060000FBE2093600083B7817F846083BFD9 +:1037500083B7816083BF7894889583B78E7F83BF5A +:103760000FB6F894A89580916000886180936000FE +:10377000109260000FBE089508950895CF930E949F +:10378000BC1B0E949D060E94BD1BC0E08C2F0E94A6 +:10379000CB07811104C0CF5FCC30C1F701C081E0FD +:1037A000CF9108951F920F920FB60F9211248F930D +:1037B0009F93AF93BF938091AE01811113C080910D +:1037C000AF019091B001A091B101B091B2014196C9 +:1037D000A11DB11D8093AF019093B001A093B101E1 +:1037E000B093B201BF91AF919F918F910F900FBE97 +:1037F0000F901F90189582E084BD93E095BD9AEFDD +:1038000097BD80936E0008952FB7F8948091AF0113 +:103810009091B001A091B101B091B2012FBF089574 +:103820002FB7F8946091AF017091B0018091B10110 +:103830009091B2012FBF0895CF92DF92EF92FF9245 +:103840000F931F932FB7F8944091AF015091B0019F +:103850006091B1017091B2012FBF6A017B01EE242A +:10386000FF248C0120E030E0C016D106E206F3060A +:1038700010F4415051099A01281B390BC9011F91BD +:103880000F91FF90EF90DF90CF9008951F920F92CD +:103890000FB60F9211248F939F93AF93BF93809194 +:1038A000AF019091B001A091B101B091B201019628 +:1038B000A11DB11D8093AF019093B001A093B10100 +:1038C000B093B201BF91AF919F918F910F900FBEB6 +:1038D0000F901F9018950E949A0DF8942FEF87EA89 +:1038E00091E6215080409040E1F700C0000087E061 +:1038F00090EBDC018093CB019093CC01A093CD01A0 +:10390000B093CE019CE088E10FB6F894A89580931F +:1039100060000FBE90936000FFCFE92FF0E093E0CE +:10392000EE0FFF1F9A95E1F7E80FF11DE855FF4FE5 +:103930009491892F8F7092959F700895CF93C82F7F +:10394000CB010E948D1C492F90E0242F30E054E0E1 +:10395000220F331F5A95E1F7282B392B20383105D8 +:1039600019F480E090E017C0EC2FF0E023E0EE0FB8 +:10397000FF1F2A95E1F74770E40FF11D34E0EE0FC9 +:10398000FF1F3A95E1F7E80FF91FEE0FFF1FE05018 +:10399000F84985919491CF91089580E090E0089541 +:1039A00008958091B50180FF0CC08091100190E0D6 +:1039B00065E070E00E94932495958795959587958D +:1039C0002EC081FF0AC08091100190E065E070E098 +:1039D0000E9493249595879522C082FF08C080910C +:1039E000100190E065E070E00E94932418C02091DF +:1039F000B6012223D1F030910F01231780F7809177 +:103A0000100190E065E070E00E949324622F70E066 +:103A10000E949324632F70E00E94B024CB01803871 +:103A2000910530F4009731F0089585E090E0089515 +:103A30008FE7089581E008958091B50180FF08C067 +:103A400060910E0170E0759567957595679523C037 +:103A500081FF06C060910E0170E0759567951BC0EF +:103A600082FF04C060910E0170E012C06091B60147 +:103A70006623D1F020910D016217A0F780910E010D +:103A800070E090E00E949324622F70E00E94B024C6 +:103A90006038710528F46115710521F0862F0895AD +:103AA0008FE7089581E0089561E070E0F4CF803FF2 +:103AB00021F40E94D11C819504C0813F29F40E9409 +:103AC000D11C8093B9010895823F21F40E94D11C3A +:103AD000819504C0833F29F40E94D11C8093B801D2 +:103AE0000895893F19F40E941C1D05C08A3F31F4D6 +:103AF0000E941C1D81958093BA0108958B3F21F48B +:103B00000E941C1D819504C08C3F29F40E941C1D3D +:103B10008093BB010895843F21F48091B7018160B7 +:103B200017C0853F21F48091B701826011C0863FA4 +:103B300021F48091B70184600BC0873F21F480910C +:103B4000B701886005C0883F31F48091B70180617A +:103B50008093B70108958D3F21F48091B501816074 +:103B60000BC08E3F21F48091B501826005C08F3F6C +:103B700029F48091B50184608093B5010895803F58 +:103B800039F48091B90187FF6CC01092B90169C006 +:103B9000813F29F48091B9011816BCF362C090915D +:103BA000B801823F29F497FF5CC01092B80159C058 +:103BB000833F19F41916CCF354C0893F41F4809126 +:103BC000BA0118160CF04DC01092BA014AC08A3FD3 +:103BD00029F48091BA0187FF44C0F6CF8B3F39F4B6 +:103BE0008091BB0187FF3DC01092BB013AC08C3F62 +:103BF00029F48091BB011816BCF333C0843F21F433 +:103C00008091B7018E7F17C0853F21F48091B70165 +:103C10008D7F11C0863F21F48091B7018B7F0BC04F +:103C2000873F21F48091B701877F05C0883F31F439 +:103C30008091B7018F7E8093B70113C08D3F21F42F +:103C40008091B5018E7F0BC08E3F21F48091B5012C +:103C50008D7F05C08F3F29F48091B5018B7F8093C4 +:103C6000B5018091B80181110EC08091B901811117 +:103C70000AC08091BA01811106C08091BB018111F7 +:103C800002C01092B60108958091AD0183FF7EC0FD +:103C90008AE394E00E9472058091B7011F928F938E +:103CA00085E394E09F938F930E940B0683E394E057 +:103CB0000E9472058091B801282F082E000C330B4A +:103CC0003F938F9380E394E09F938F930E940B0622 +:103CD0008EE294E00E9472058091B901282F082E8F +:103CE000000C330B3F938F938BE294E09F938F9361 +:103CF0000E940B0689E294E00E9472058091BA014D +:103D0000282F082E000C330B3F938F9386E294E00C +:103D10009F938F930E940B0684E294E00E947205A9 +:103D20008091BB01282F082E000C330B3F938F93FB +:103D300081E294E09F938F930E940B068EE194E0C2 +:103D40000E9472058091B6011F928F938BE194E0DF +:103D50009F938F930E940B0689E194E00E94720565 +:103D60008091B5011F928F9386E194E09F938F938A +:103D70000E940B0683E194E00E9472058DB79EB706 +:103D80004C960FB6F8949EBF0FBE8DBF87EB91E0A7 +:103D90000E946C100E94041C9093B4018093B301A4 +:103DA00008951F93CF93DF938091B3019091B40155 +:103DB0000E941C1CFC012091B601222329F0909145 +:103DC0001101892F90E007C08091120190E06AE014 +:103DD00070E00E949324E817F90708F485C08091E9 +:103DE000B801C091B901D091BA011091BB01811104 +:103DF00007C0C11175C0D11173C0111171C074C059 +:103E00002F3F19F02F5F2093B601181624F40E945B +:103E1000D11C8093B8018091B80187FF05C00E9432 +:103E2000D11C81958093B8011C1624F40E94D11CEA +:103E30008093B9018091B90187FF05C00E94D11C10 +:103E400081958093B9016091B801662331F1C091E9 +:103E5000B901CC2311F1062E000C770B880B990BBE +:103E60000E94922323E333E343E35FE30E94F623BC +:103E70000E945A236093B8016C2FCC0F770B880BEC +:103E8000990B0E94922323E333E343E35FE30E9411 +:103E9000F6230E945A236093B9011D1624F40E9450 +:103EA0001C1D8093BA018091BA0187FF05C00E9452 +:103EB0001C1D81958093BA01111624F40E941C1DCB +:103EC0008093BB018091BB0187FF05C00E941C1D30 +:103ED00081958093BB01DF91CF911F910C94441E7B +:103EE0002F3F09F08FCF97CFDF91CF911F9108958A +:103EF000E7EBF1E085E0DF011D928A95E9F710928A +:103F0000B6011092B50108958DE596E00E94720504 +:103F10001F9281E08F931F9285E08F938FE096E050 +:103F20009F938F930E940B060F900F900F900F900E +:103F30000F900F9008958330E9F128F4813061F0FB +:103F4000823009F10895853009F462C008F449C04F +:103F5000863009F474C0089580911201262F30E054 +:103F6000280F311D2F3F310524F4680F6093120193 +:103F700003C08FEF80931201809112011F928F93E3 +:103F800088E495E072C080911101262F30E0280F5F +:103F9000311D2F3F310524F4680F6093110103C0D8 +:103FA0008FEF80931101809111011F928F9386E30F +:103FB00095E05BC080911001262F30E0280F311D65 +:103FC0002F3F310524F4680F6093100103C08FEF79 +:103FD00080931001809110011F928F9383E295E0EE +:103FE00044C080910F01262F30E0280F311D2F3F54 +:103FF000310524F4680F60930F0103C08FEF8093A5 +:104000000F0180910F011F928F938EE095E02DC0DC +:1040100080910E01262F30E0280F311D2F3F3105F2 +:1040200024F4680F60930E0103C08FEF80930E019C +:1040300080910E011F928F9385EF94E016C08091BE +:104040000D01262F30E0280F311D2F3F310524F4BC +:10405000680F60930D0103C08FEF80930D01809175 +:104060000D011F928F938AED94E09F938F930E948E +:104070000B060F900F900F900F900895833081F1F1 +:1040800028F4813059F08230D1F00895853009F458 +:1040900049C0B8F1863009F456C0089580911201E4 +:1040A000681720F4861B8093120102C0109212013F +:1040B000809112011F928F938BEC94E054C08091F9 +:1040C0001101681720F4861B8093110102C0109221 +:1040D0001101809111011F928F9389EB94E043C0ED +:1040E00080911001681720F4861B8093100102C094 +:1040F00010921001809110011F928F9386EA94E034 +:1041000032C080910F01681720F4861B80930F0145 +:1041100002C010920F0180910F011F928F9381E9CD +:1041200094E021C080910E01681720F4861B8093D3 +:104130000E0102C010920E0180910E011F928F930A +:1041400088E794E010C080910D01681720F4861B69 +:1041500080930D0102C010920D0180910D011F92FC +:104160008F938DE594E09F938F930E940B060F90A1 +:104170000F900F900F900895CF93C82F1F928F9399 +:1041800082E697E09F938F930E940B0681E090E078 +:10419000A0E0B0E0BC01CD0104C0660F771F881F0E +:1041A000991FCA95D2F70E94AA190F900F900F90ED +:1041B0000F90CF910C94A315CF93873288F58E3151 +:1041C00008F00BC18E3009F487C0D8F4873009F4A9 +:1041D00060C08B3009F44FC0863009F002C1809175 +:1041E000AD01817F8E7F8093AD0187E697E00E94CD +:1041F000720585E39AE00E94720581E08093BD011B +:1042000046C0863109F4B0C020F4803109F47AC088 +:10421000E8C0893109F491C08B3109F449C0E1C08B +:10422000883349F150F4893209F4D5C0853309F453 +:10423000D2C0873209F0D5C0CEC0833409F4CBC0D8 +:1042400028F48A3308F4CDC08953C8C0883409F0F3 +:10425000C8C00E94A31584E29AE00E9472052FEF65 +:1042600083ED90E3215080409040E1F700C00000D2 +:104270000E946B1C0CC08EE897E041C08BE09AE076 +:104280000E9472058091AD0181608093AD01C1E013 +:10429000ADC08091AD01C82FC17080FFEFCF87E125 +:1042A0009AE00E9472058091AD01817F8E7F3FC0B0 +:1042B0009091AD0191FBCC27C0F981E0C827892FEF +:1042C000C0FB81F98093AD01CC2319F08EEF99E00A +:1042D00029C080EF99E013C09091AD0192FBCC27EB +:1042E000C0F981E0C827892FC0FB82F98093AD0116 +:1042F000CC2319F081EE99E015C081ED99E00E9480 +:104300007205C5CF9091AD0193FBCC27C0F981E038 +:10431000C827892FC0FB83F98093AD01CC2351F0CE +:1043200085EC99E00E9472058091AD0181608093D7 +:10433000AD015CC088EB99E0E2CF89EA99E00E9488 +:1043400072058AE799E00E9472058DE299E00E9469 +:10435000720580E099E00E9472058BEB98E00E9464 +:1043600072058CE898E0CBCF8EE798E00E9472054A +:104370000E9417101F928F9384E698E09F938F936B +:104380000E940B0680910A011F928F938DE498E0A2 +:104390009F938F930E940B0680914E011F928F93E3 +:1043A0008AE398E09F938F930E940B060E94101C53 +:1043B0009F938F937F936F9383E298E09F938F9364 +:1043C0000E940B068DB79EB742960FB6F8949EBF1B +:1043D0000FBE8DBF5CCF80E001C08D510E94BC201C +:1043E00056CF81E298E00E947205C0E08C2FCF91F9 +:1043F000089580E0089580E00895CF93C82F8091BC +:10440000BD01813091F020F0823009F453C04AC1DF +:10441000E0910B01F0910C018081823289F08034AF +:1044200079F0803809F040C10BC0E0910B01F091A8 +:104430000C018081823221F0803411F0803861F4E7 +:104440008C2F0E94F921811104C08C2F0E94DC2046 +:104450002FC081E090E02CC08C2F0E94FB218111A5 +:1044600026C0C431E1F070F4CB3081F0C031D1F41A +:104470000E94841F8AE597E00E94720582E0809383 +:10448000BD0115C0C93259F0C83361F487E697E021 +:104490000E9472058EE597E00E94720508C0109296 +:1044A000BD0104C188E597E00E947205FFC081E06C +:1044B0008170FEC0C43228F5CE3108F0C1C0CB30C7 +:1044C000A1F1D0F4C73009F0D3C08EE1809312017E +:1044D00082E3809311018AE08093100184E180934C +:1044E0000F0188E080930E0188E280930D018EEF2A +:1044F00095E00E947205BFC0C33149F1C431C1F0DB +:10450000B7C0CB3409F4A9C028F4C93289F0C83344 +:1045100061F0AEC0C13509F49EC0C23509F499C03E +:10452000CE3409F0A5C06AE09EC00E94841FA3C0DB +:104530008091BC01882319F01092BC019CC08BE0D3 +:1045400096E00E94720581E08093BD01B1C085EEC6 +:1045500095E00E94720583ED95E00E9472058091BE +:1045600012011F928F9380ED95E09F938F930E948D +:104570000B068EEC95E00E9472058CEB95E00E9494 +:104580007205809111011F928F9389EB95E09F93A3 +:104590008F930E940B0687EB95E00E94720588EAD4 +:1045A00095E00E947205809110011F928F9385EA19 +:1045B00095E09F938F930E940B0683EA95E00E94FB +:1045C000720582E995E00E94720580910F011F92A9 +:1045D0008F938FE895E09F938F930E940B068DE851 +:1045E00095E00E94720588E795E00E94720580912F +:1045F0000E011F928F9385E795E09F938F930E9402 +:104600000B0683E795E00E9472058CE595E00E9419 +:10461000720580910D011F928F9389E595E09F931C +:104620008F930E940B0687E595E00E9472058DB777 +:104630009EB748960FB6F8949EBF0FBE8DBF1BC0A5 +:10464000CE51EC2FF0E0E95DFE4F80818093BC01FC +:1046500012C061E003C061E006C06AE08091BC0165 +:104660000E949B1F08C08091BC010E943E2003C095 +:104670008CEF95E013C08091BC01882369F01F92F4 +:104680008F9386EF95E09F938F930E940B060F9078 +:104690000F900F900F9004C083EF95E00E94720579 +:1046A00081E006C01092BD0180E002C080E000CF32 +:1046B000CF9108950E9461236894B1110C94F02366 +:1046C00008950E94D52388F09F5798F0B92F992715 +:1046D000B751B0F0E1F0660F771F881F991F1AF0ED +:1046E000BA95C9F714C0B13091F00E94EF23B1E040 +:1046F00008950C94EF23672F782F8827B85F39F03F +:10470000B93FCCF3869577956795B395D9F73EF485 +:1047100090958095709561957F4F8F4F9F4F08952D +:10472000E89409C097FB3EF490958095709561954B +:104730007F4F8F4F9F4F9923A9F0F92F96E9BB2701 +:104740009395F695879577956795B795F111F8CF7D +:10475000FAF4BB0F11F460FF1BC06F5F7F4F8F4FE8 +:104760009F4F16C0882311F096E911C0772321F0DE +:104770009EE8872F762F05C0662371F096E8862F76 +:1047800070E060E02AF09A95660F771F881FDAF7CD +:10479000880F9695879597F9089557FD9058440F7F +:1047A000551F59F05F3F71F04795880F97FB991F90 +:1047B00061F09F3F79F0879508951216130614064D +:1047C000551FF2CF4695F1DF08C0161617061806DA +:1047D000991FF1CF86957105610508940895E894B5 +:1047E000BB2766277727CB0197F908950E940824F5 +:1047F0000C9482240E94742438F00E947B2420F0C0 +:10480000952311F00C946B240C9471240C94F023D8 +:104810000E94CD2378F39923C9F35523B9F3950F5B +:1048200050E0551FAA27EE27FF27BB270024089436 +:10483000679520F4E20FF31FB41F0A1E220F331FE7 +:10484000441FAA1F6695A9F7779530F4F30FB41F9C +:104850000A1E121E08F46395330F441FAA1F221F5D +:10486000769599F7879520F4B40F0A1E121E631FE0 +:10487000440FAA1F221F331F8695A9F7862F712D7B +:10488000602D11249F5750409AF0F1F088234AF090 +:10489000EE0FFF1FBB1F661F771F881F91505040F0 +:1048A000A9F79E3F510580F00C946B240C94F023E3 +:1048B0005F3FE4F3983ED4F3869577956795B79577 +:1048C000F795E7959F5FC1F7FE2B880F911D969591 +:1048D000879597F9089597F99F6780E870E060E001 +:1048E00008959FEF80EC089500240A941616170689 +:1048F00018060906089500240A94121613061406D1 +:1049000005060895092E0394000C11F4882352F033 +:10491000BB0F40F4BF2B11F460FF04C06F5F7F4FEB +:104920008F4F9F4F08950024552704C0080E591F2C +:10493000880F991F009729F076956795B8F3710550 +:10494000B9F7802D952F0895991B79E004C0991F20 +:10495000961708F0961B881F7A95C9F780950895D9 +:1049600097FB072E16F4009407D077FD09D00E941C +:10497000CA2407FC05D03EF4909581959F4F089579 +:10498000709561957F4F0895EE0FFF1F0590F4918C +:10499000E02D0994AA1BBB1B51E107C0AA1FBB1F36 +:1049A000A617B70710F0A61BB70B881F991F5A95BB +:1049B000A9F780959095BC01CD010895F894FFCF9B +:1049C000FA08EB09C8099409600901A30128081431 +:1049D0000A321E404D3622AE0361032B03090395B4 +:1049E00002AE02C702E0020102030405060708093D +:0249F0000000C5 +:106800000000000000000000040005000600070072 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280000002A002B002C002D002E002F0005 +:1068600030003100000033003400290036003700CA +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:106890000000E944E2444B00EA4400004E004F008F +:1068A0005000510052003500310054005500560090 +:1068B000580059005A005B005C005D005E005F00FC +:1068C00060006100620063000000F1A15700000059 +:1068D00000000000000000000000000000000000B8 +:1068E00000000000000000000000000000000000A8 +:1068F000E200E1000000E300E600E5000000000027 +:106900000100010001000100EA4401000601E24427 +:106910000100010001005500460054004A004B00F0 +:10692000560057004700480031000100E9440100CB +:106930000100190101001B0101001D013A003B008B +:106940003C003D003E003F0040004100420043004B +:10695000010001004C0039000100440045005200D4 +:1069600049000100010050004F0035004D004E006D +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0053000100010001000100AD +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E000010001000100010001000100010001009F +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/next_usb/keymap.c b/converter/next_usb/keymap.c index 0041df54..e68b2f3f 100644 --- a/converter/next_usb/keymap.c +++ b/converter/next_usb/keymap.c @@ -50,7 +50,6 @@ POSSIBILITY OF SUCH DAMAGE. #include #include -#include #include "keycode.h" #include "print.h" #include "debug.h" @@ -59,7 +58,7 @@ POSSIBILITY OF SUCH DAMAGE. #include "keycode.h" // 32*8(256) byte array which converts PS/2 code into USB code -static const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { ACTION_LAYER_MOMENTARY(1), // FN0 - left command key ACTION_LAYER_MOMENTARY(1), // FN1 - right command key ACTION_KEY(KC_BSLS), // FN2 - number pad slash & backslash @@ -116,62 +115,50 @@ static const uint16_t PROGMEM fn_actions[] = { } -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layer 0: default * ,-----------------------------------------------------------. ,-----------. ,---------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS | |Ins|Ref|Hom| |` | =| /| *| + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS | |VoU|Mut|PgU| | `| \| /| *| * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |Del| |End| | 7| 8| 9| -| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |VoD| |PgD| | 7| 8| 9| -| * |-----------------------------------------------------' | `---' `---' |-----------|---| * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| +| * |-----------------------------------------------------------| ,---. |---------------| * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | |Up | | 1| 2| 3| | * |-----------------------------------------------------------| ,-----------. |-----------|Ent| - * |Fn0 |Alt | Space |LGui |Fn1 | |Lef|Dow|Rig| | 0| .| | + * |LAlt |LGui | Space |FN0 |RAlt | |Lef|Dow|Rig| | 0| .| | * `-----------------------------------------------------------' `-----------' `---------------' */ KEYMAP( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, WREF,HOME, GRV, FN3, FN2, PAST, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,NO, DEL, END, P7, P8, P9, PMNS, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, VOLU,MUTE,PGUP, GRV, BSLS,PSLS,PAST, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, VOLD, PGDN, P7, P8, P9, PMNS, LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS, LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3, - FN0, LALT, SPC, LGUI,FN1, LEFT,DOWN,RGHT, P0, PDOT,PENT + LALT,LGUI, SPC, FN0, RALT, LEFT,DOWN,RGHT, P0, PDOT,PENT ), - /* Layer 1: extra keys + /* Layer 1: HHKB like * ,-----------------------------------------------------------. ,-----------. ,---------------. - * |Grv| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| BS | |VUp|VMu|PgU| |` | =| /| *| + * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Del | | | | | |Num| | | | * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab |Pau| W| E| R| T| Y| U| I| O|PSc| \| ]| | |VDn| |PgD| | 7| 8| 9| -| + * |Caps | \| | | | | | |Psc|Slk|Pau|Up |Ins| | | | | | | | | | | * |-----------------------------------------------------' | `---' `---' |-----------|---| - * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| +| + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | | | | | | * |-----------------------------------------------------------| ,---. |---------------| - * |Shift |UND|CUT|COP|PST| B| N| M| ,| .| /|Shift | |Up | | 1| 2| 3| | - * |-----------------------------------------------------------| ,-----------. |-----------|Ent| - * |Fn0 |Alt | Space |RGui |Fn1 | |Lef|Dow|Rig| | 0| .| | + * | |UND|CUT|COP|PST| | +| -|End|PgD|Dow| | |PgU| | | | | | + * |-----------------------------------------------------------| ,-----------. |-----------| | + * | | | | | | |Hom|PgD|End| | | | | * `-----------------------------------------------------------' `-----------' `---------------' */ KEYMAP( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, VOLU,MUTE,PGUP, TRNS,TRNS,TRNS,TRNS, - TRNS,PAUS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,FN3, BSLS,TRNS, VOLD, PGDN, BTN1,MS_U,BTN2,WH_U, - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, MS_L,MS_D,MS_R,WH_D, - TRNS, FN4, FN5, FN6, FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS,TRNS,TRNS, - TRNS,TRNS, TRNS, TRNS,TRNS, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, TRNS,TRNS,TRNS, NLCK,TRNS,TRNS,TRNS, + CAPS,BSLS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, TRNS, TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS, FN4, FN5, FN6, FN7, TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS, PGUP, TRNS,TRNS,TRNS, + TRNS,TRNS, TRNS, TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS ) }; - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/next_usb/unimap.c b/converter/next_usb/unimap.c new file mode 100644 index 00000000..f3cfcd4a --- /dev/null +++ b/converter/next_usb/unimap.c @@ -0,0 +1,50 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_trans.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) +// Undo, Cut, Copy and Paste +#define AC__UND ACTION_MODS_KEY(MOD_LCTL, KC_Z) +#define AC__CUT ACTION_MODS_KEY(MOD_LCTL, KC_X) +#define AC__CPY ACTION_MODS_KEY(MOD_LCTL, KC_C) +#define AC__PST ACTION_MODS_KEY(MOD_LCTL, KC_V) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, VOLU,MUTE,PGUP, GRV, BSLS,PSLS,PAST, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, VOLD,NO, PGDN, P7, P8, P9, PMNS, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NO, ENT, P4, P5, P6, PPLS, + LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, UP, P1, P2, P3, NO, + LALT,LGUI,NO, NO, SPC, NO, NO, NO, NO, FN0, RALT, LEFT,DOWN,RGHT, P0, PDOT,PENT + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, TRNS,TRNS,TRNS, NLCK,TRNS,TRNS,TRNS, + CAPS,BSLS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,_UND,_CUT,_CPY,_PST,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +}; diff --git a/converter/next_usb/unimap_trans.h b/converter/next_usb/unimap_trans.h new file mode 100644 index 00000000..9a5faf5d --- /dev/null +++ b/converter/next_usb/unimap_trans.h @@ -0,0 +1,86 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#ifndef UNIMAP_COMMON_H +#define UNIMAP_COMMON_H + +#include +#include +#include "unimap.h" + + +/* Mapping to Universal keyboard layout + * + * Universal keyboard layout + * ,-----------------------------------------------. + * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| + * ,---. |-----------------------------------------------| ,-----------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut| + * `---' `-----------------------------------------------' `-----------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| + * |-----------------------------------------------------------| `-----------' |---------------| + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Retn| | 4| 5| 6|KP,| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|KP=| + * |-----------------------------------------------------------| ,-----------. |---------------| + * |Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| + * `-----------------------------------------------------------' `-----------' `---------------' + * + * NeXT Matrix(Scan code) + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | 49| 4A| 4B| 4C| 4D| 50| 4F| 4E| 1E| 1F| 20| 1D| 1C| 1B | | 1A| 58| 19| | 26| 27| 28| 25| + * |-----------------------------------------------------------| |-----------| |---------------| + * | 41 | 42| 43| 44| 45| 48| 47| 46| 06| 07| 08| 05| 04| 03 | | 02| | 01| | 21| 22| 23| 24| + * |-----------------------------------------------------------| `---' `---' |-----------|---| + * | 57 | 39| 3A| 3B| 3C| 3D| 40| 3F| 3E| 2D| 2C| 2B| 2A | | 12| 18| 13| 15| + * |-----------------------------------------------------------| ,---. |---------------| + * | 56 | 31| 32| 33| 34| 35| 37| 36| 2E| 2F| 30| 55 | | 16| | 11| 17| 14| | + * |-----------------------------------------------------------| ,-----------. |-----------| | + * | 52 | 54 | 38 | 53 | 51 | | 09| 0F| 10| |0B | 0C| 0D| + * `-----------------------------------------------------------' `-----------' `---------------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BSpc | |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del| |PgD| | 7| 8| 9| +| + * |-----------------------------------------------------------| `---' `---' |---------------| + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6|KP,| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------| | + * |LCtl |Gui | Space | App | RCtl| |Lef|Dow|Rig| | 0 | .|Ent| + * `-----------------------------------------------------------' `-----------' `---------------' + */ + +// Matrix 12 * 8 +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_NO, UNIMAP_PGDN, UNIMAP_DEL, UNIMAP_BSLS, UNIMAP_RBRC, UNIMAP_LBRC, UNIMAP_I, UNIMAP_O }, // 0x00-07 + { UNIMAP_P, UNIMAP_LEFT, UNIMAP_NO, UNIMAP_P0, UNIMAP_PDOT, UNIMAP_PENT, UNIMAP_NO, UNIMAP_DOWN }, // 0x08-0F + { UNIMAP_RGHT, UNIMAP_P1, UNIMAP_P4, UNIMAP_P6, UNIMAP_P3, UNIMAP_PCMM, UNIMAP_UP, UNIMAP_P2 }, // 0x10-17 + { UNIMAP_P5, UNIMAP_PGUP, UNIMAP_INS, UNIMAP_BSPC, UNIMAP_EQL, UNIMAP_MINS, UNIMAP_8, UNIMAP_9 }, // 0x18-1f + { UNIMAP_0, UNIMAP_P7, UNIMAP_P8, UNIMAP_P9, UNIMAP_PPLS, UNIMAP_PMNS, UNIMAP_NLCK, UNIMAP_PSLS }, // 0x20-27 + { UNIMAP_PAST, UNIMAP_NO, UNIMAP_ENT, UNIMAP_QUOT, UNIMAP_SCLN, UNIMAP_L, UNIMAP_COMM, UNIMAP_DOT }, // 0x28-2f + { UNIMAP_SLSH, UNIMAP_Z, UNIMAP_X, UNIMAP_C, UNIMAP_V, UNIMAP_B, UNIMAP_M, UNIMAP_N }, // 0x30-37 + { UNIMAP_SPC, UNIMAP_A, UNIMAP_S, UNIMAP_D, UNIMAP_F, UNIMAP_G, UNIMAP_K, UNIMAP_J }, // 0x38-3f + { UNIMAP_H, UNIMAP_TAB, UNIMAP_Q, UNIMAP_W, UNIMAP_E, UNIMAP_R, UNIMAP_U, UNIMAP_Y }, // 0x40-47 + { UNIMAP_T, UNIMAP_GRV, UNIMAP_1, UNIMAP_2, UNIMAP_3, UNIMAP_4, UNIMAP_7, UNIMAP_6 }, // 0x48-4f + { UNIMAP_5, UNIMAP_RCTL, UNIMAP_LCTL, UNIMAP_APP, UNIMAP_LGUI, UNIMAP_RSFT, UNIMAP_LSFT, UNIMAP_CAPS }, // 0x50-57 + { UNIMAP_HOME, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO } // 0x58-5f +}; + +#endif diff --git a/converter/pc98_usb/keymap.c b/converter/pc98_usb/keymap.c index 8922ea7b..e56a72f1 100644 --- a/converter/pc98_usb/keymap.c +++ b/converter/pc98_usb/keymap.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" @@ -72,7 +71,7 @@ along with this program. If not, see . -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* ,---------------------------------------------------------------. | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E| @@ -114,7 +113,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT ), }; -static const uint8_t PROGMEM overlays[][MATRIX_ROWS][MATRIX_COLS] = {}; /* * Macro definition @@ -163,7 +161,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) /* * Fn actions */ -static const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { ACTION_LAYER_TAP_TOGGLE(0), // FN0 ACTION_LAYER_TAP_KEY(1, KC_SLASH), // FN1 ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN2 @@ -172,37 +170,3 @@ static const uint16_t PROGMEM fn_actions[] = { ACTION_MACRO(RBRACKET), // FN5 ACTION_MACRO(DUMMY), // FN6 }; - - - - - - -/* - * No need to edit. - */ -#define KEYMAPS_SIZE (sizeof(keymaps) / sizeof(keymaps[0])) -#define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - if (layer < KEYMAPS_SIZE) { - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); - } else { - // fall back to layer 0 - return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]); - } -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - action_t action; - if (FN_INDEX(keycode) < FN_ACTIONS_SIZE) { - action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]); - } else { - action.code = ACTION_NO; - } - return action; -} diff --git a/converter/ps2_usb/Makefile b/converter/ps2_usb/Makefile index 51b22256..dd034264 100644 --- a/converter/ps2_usb/Makefile +++ b/converter/ps2_usb/Makefile @@ -11,8 +11,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/converter/ps2_usb/Makefile.mbed b/converter/ps2_usb/Makefile.mbed index bbd9bd45..9ca9f5fa 100644 --- a/converter/ps2_usb/Makefile.mbed +++ b/converter/ps2_usb/Makefile.mbed @@ -10,7 +10,6 @@ OBJDIR = ./build OBJECTS = \ $(OBJDIR)/protocol/ps2_busywait.o \ $(OBJDIR)/protocol/ps2_io_mbed.o \ - $(OBJDIR)/./keymap_common.o \ $(OBJDIR)/./matrix.o \ $(OBJDIR)/./led.o \ $(OBJDIR)/./main.o diff --git a/converter/ps2_usb/Makefile.pjrc b/converter/ps2_usb/Makefile.pjrc index 64319aca..88ee387d 100644 --- a/converter/ps2_usb/Makefile.pjrc +++ b/converter/ps2_usb/Makefile.pjrc @@ -8,8 +8,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # keyboard dependent files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/converter/ps2_usb/Makefile.tmk_rev1 b/converter/ps2_usb/Makefile.tmk_rev1 index 6aaef499..644845f9 100644 --- a/converter/ps2_usb/Makefile.tmk_rev1 +++ b/converter/ps2_usb/Makefile.tmk_rev1 @@ -12,8 +12,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/converter/ps2_usb/Makefile.tmk_rev2 b/converter/ps2_usb/Makefile.tmk_rev2 index 5049a227..83243280 100644 --- a/converter/ps2_usb/Makefile.tmk_rev2 +++ b/converter/ps2_usb/Makefile.tmk_rev2 @@ -12,8 +12,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/converter/ps2_usb/Makefile.vusb b/converter/ps2_usb/Makefile.vusb index 1f2c209a..79c11639 100644 --- a/converter/ps2_usb/Makefile.vusb +++ b/converter/ps2_usb/Makefile.vusb @@ -8,8 +8,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # keyboard dependent files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/converter/ps2_usb/keymap_common.c b/converter/ps2_usb/keymap_common.c deleted file mode 100644 index e344fb41..00000000 --- a/converter/ps2_usb/keymap_common.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2011,2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" -#include "progmem.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/ps2_usb/keymap_common.h b/converter/ps2_usb/keymap_common.h index d783e01d..6e612e60 100644 --- a/converter/ps2_usb/keymap_common.h +++ b/converter/ps2_usb/keymap_common.h @@ -28,11 +28,6 @@ along with this program. If not, see . #include "keymap.h" -// 32*8(256) byte array which converts PS/2 code into USB code -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* All keys */ #define KEYMAP_ALL( \ K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ diff --git a/converter/ps2_usb/keymap_jis.c b/converter/ps2_usb/keymap_jis.c index 02585150..b430b907 100644 --- a/converter/ps2_usb/keymap_jis.c +++ b/converter/ps2_usb/keymap_jis.c @@ -30,5 +30,5 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/ps2_usb/keymap_plain.c b/converter/ps2_usb/keymap_plain.c index 51b2fddb..ecb13d7d 100644 --- a/converter/ps2_usb/keymap_plain.c +++ b/converter/ps2_usb/keymap_plain.c @@ -28,5 +28,5 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/ps2_usb/keymap_spacefn.c b/converter/ps2_usb/keymap_spacefn.c index bffd2bc6..8f087a85 100644 --- a/converter/ps2_usb/keymap_spacefn.c +++ b/converter/ps2_usb/keymap_spacefn.c @@ -54,7 +54,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde }; diff --git a/converter/sun_usb/keymap.c b/converter/sun_usb/keymap.c index 3d724a52..f94fe5c7 100644 --- a/converter/sun_usb/keymap.c +++ b/converter/sun_usb/keymap.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "util.h" #include "keymap.h" @@ -87,7 +86,7 @@ along with this program. If not, see . // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. -static const uint8_t PROGMEM fn_layer[] = { +const uint8_t PROGMEM fn_layer[] = { 2, // Fn0 3, // Fn1 4, // Fn2 @@ -100,7 +99,7 @@ static const uint8_t PROGMEM fn_layer[] = { // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. // See layer.c for details. -static const uint8_t PROGMEM fn_keycode[] = { +const uint8_t PROGMEM fn_keycode[] = { KC_NO, // Fn0 KC_SCLN, // Fn1 KC_SLSH, // Fn2 @@ -112,7 +111,7 @@ static const uint8_t PROGMEM fn_keycode[] = { }; -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* KEYMAP( HELP, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10,F11,F12, PSCR,SLCK,PAUS, MUTE,VOLD,VOLU,PWR, @@ -174,19 +173,3 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CAPS,LALT,LGUI, BTN1, RGUI,RALT,NO, LEFT,DOWN,RGHT ), }; - - -uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) -{ - return pgm_read_byte(&keymaps[(layer)][(row)][(col)]); -} - -uint8_t keymap_fn_layer(uint8_t index) -{ - return pgm_read_byte(&fn_layer[index]); -} - -uint8_t keymap_fn_keycode(uint8_t index) -{ - return pgm_read_byte(&fn_keycode[index]); -} diff --git a/converter/sun_usb/keymap_sun3.c b/converter/sun_usb/keymap_sun3.c index 273cd944..217aa79a 100644 --- a/converter/sun_usb/keymap_sun3.c +++ b/converter/sun_usb/keymap_sun3.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "util.h" #include "keymap.h" @@ -155,19 +154,3 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), */ }; - - -uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) -{ - return pgm_read_byte(&keymaps[(layer)][(row)][(col)]); -} - -uint8_t keymap_fn_layer(uint8_t index) -{ - return pgm_read_byte(&fn_layer[index]); -} - -uint8_t keymap_fn_keycode(uint8_t index) -{ - return pgm_read_byte(&fn_keycode[index]); -} diff --git a/converter/terminal_usb/keymap.c b/converter/terminal_usb/keymap.c index 8ca66b5e..5a3ee6ff 100644 --- a/converter/terminal_usb/keymap.c +++ b/converter/terminal_usb/keymap.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "print.h" #include "debug.h" @@ -102,7 +101,7 @@ along with this program. If not, see . } // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. -static const uint8_t PROGMEM fn_layer[] = { +const uint8_t PROGMEM fn_layer[] = { 0, // Fn0 0, // Fn1 0, // Fn2 @@ -115,7 +114,7 @@ static const uint8_t PROGMEM fn_layer[] = { // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. // See layer.c for details. -static const uint8_t PROGMEM fn_keycode[] = { +const uint8_t PROGMEM fn_keycode[] = { KC_NO, // Fn0 KC_NO, // Fn1 KC_NO, // Fn2 @@ -127,7 +126,7 @@ static const uint8_t PROGMEM fn_keycode[] = { }; -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: default * ,---. ,---------------. ,---------------. ,---------------. ,-----------. * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| @@ -198,19 +197,3 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), */ }; - - -uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) -{ - return pgm_read_byte(&keymaps[(layer)][(row)][(col)]); -} - -uint8_t keymap_fn_layer(uint8_t index) -{ - return pgm_read_byte(&fn_layer[index]); -} - -uint8_t keymap_fn_keycode(uint8_t index) -{ - return pgm_read_byte(&fn_keycode[index]); -} diff --git a/converter/usb_usb/Makefile b/converter/usb_usb/Makefile index 5abb49d7..1f09f87a 100644 --- a/converter/usb_usb/Makefile +++ b/converter/usb_usb/Makefile @@ -39,15 +39,15 @@ #---------------------------------------------------------------------------- # Target file name (without extension). -TARGET = usb_usb +TARGET ?= usb_usb -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . # MCU name -MCU = atmega32u4 +MCU ?= atmega32u4 # Processor frequency. @@ -61,7 +61,7 @@ MCU = atmega32u4 # 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 +F_CPU ?= 16000000 @@ -69,7 +69,7 @@ F_CPU = 16000000 # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +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 @@ -81,7 +81,7 @@ ARCH = AVR8 # # 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) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT @@ -90,11 +90,11 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Build Options # comment out to disable the options. # -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Media control and System control -CONSOLE_ENABLE = yes # Console for debug -#COMMAND_ENABLE = yes # Commands for debug and configuration -#NKRO_ENABLE = yes # USB Nkey Rollover +MOUSEKEY_ENABLE ?= yes # Mouse keys +EXTRAKEY_ENABLE ?= yes # Media control and System control +CONSOLE_ENABLE ?= yes # Console for debug +#COMMAND_ENABLE ?= yes # Commands for debug and configuration +#NKRO_ENABLE ?= yes # USB Nkey Rollover # Boot Section Size in bytes # Teensy halfKay 512 @@ -108,18 +108,28 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 #OPT_DEFS += -DNO_ACTION_LAYER #OPT_DEFS += -DNO_ACTION_MACRO -SRC = \ - keymap_common.c \ - usb_usb.cpp \ +SRC ?= usb_usb.cpp \ main.cpp -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) +# +# Keymap file +# +ifeq (yes,$(strip $(UNIMAP_ENABLE))) + KEYMAP_FILE = unimap else - SRC := keymap.c $(SRC) + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif +ifdef KEYMAP + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) +else + SRC := $(KEYMAP_FILE).c $(SRC) endif -CONFIG_H = config.h +CONFIG_H ?= config.h diff --git a/converter/usb_usb/Makefile.unimap b/converter/usb_usb/Makefile.unimap new file mode 100644 index 00000000..1d60e253 --- /dev/null +++ b/converter/usb_usb/Makefile.unimap @@ -0,0 +1,4 @@ +TARGET = usb_usb_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile diff --git a/converter/usb_usb/README b/converter/usb_usb/README index 30d5deb1..164d2b2c 100644 --- a/converter/usb_usb/README +++ b/converter/usb_usb/README @@ -1,21 +1,31 @@ USB to USB keyboard protocol converter ====================================== +See for detail and discussion. +https://geekhack.org/index.php?topic=69169.0 + Hardware requirement -------------------- -Arduino Leonardo - http://arduino.cc/en/Main/ArduinoBoardLeonardo +There are two options. -Circuit@Home USB Host Shield 2.0 +### TMK USB-USB Converter +You can buy a fully assembled converter from me here. + + https://geekhack.org/index.php?topic=69169.0 + +### Arduino Leonardo + Circuit@Home USB Host Shield 2.0 +Buying Arduino Leonardo and USB Host Shield 2.0(from Circuit@home) will be better, you won't need even soldering iron. + + http://arduino.cc/en/Main/ArduinoBoardLeonardo https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino-assembled/ -Buying Arduino Leonardo and USB Host Shield 2.0(from Circuit@home) will be the easiest way, you won't need even soldering iron. -Arduino's Shield will also work well but I think Sparkfun's needs to be modified. +Other compatible boards like Arduino's Shield will also work well but I think Sparkfun's needs to be modified. http://arduino.cc/en/Main/ArduinoUSBHostShield https://www.sparkfun.com/products/9947 Also Pro Micro 3.3V(not Mini) or Teensy with mini host shield will work with some fixes on signal/power routing. + https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-for-arduino-pro-mini https://www.sparkfun.com/products/12587 https://www.pjrc.com/teensy/td_libs_USBHostShield.html @@ -24,6 +34,8 @@ Also Pro Micro 3.3V(not Mini) or Teensy with mini host shield will work with som Build firmware -------------- +Build. + $ git clone git://github.com/tmk/tmk_keyboard.git $ cd tmk_keyboard $ git submodule init @@ -31,7 +43,12 @@ Build firmware $ cd converter/usb_usb $ make -Program converter. Push reset button on Leonardo before run this command. Serial port name(COM17) depends your system. On Linux I got /dev/ttyACM0. +And Program converter. Push button on TMK converter and just run this. + + $ make dfu + + +In case of Leonardo push reset button then run command. Serial port name(COM17) depends your system. On Linux I got /dev/ttyACM0. $ DEV=COM17 make program or @@ -44,13 +61,22 @@ Limitation Only supports 'HID Boot protocol'. Not support keyboard LED yet. -Note that the converter can host only USB "boot protocol" keyboard(6KRO) and not NKRO, it is possible to support NKRO keyboard but you will need to write HID report parser for that. Every NKRO keyboard can have different HID report and it is difficult to support all kind of NKRO keyboards in the market. +Note that the converter can host only USB "boot protocol" keyboard(6KRO), not NKRO, it is possible to support NKRO keyboard but you will need to write HID report parser for that. Every NKRO keyboard can have different HID report and it is difficult to support all kind of NKRO keyboards in the market. + + + +Keymap editor +------------- +You can editor keymap and download firmware with web brwoser. + +- http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb Update ------ 2014/12/11 Added Hub support(confirmed with HHKB pro2) +2016/09/10 Unimap editor support diff --git a/converter/usb_usb/binary/usb_usb_unimap.hex b/converter/usb_usb/binary/usb_usb_unimap.hex new file mode 100644 index 00000000..d94d61ce --- /dev/null +++ b/converter/usb_usb/binary/usb_usb_unimap.hex @@ -0,0 +1,1615 @@ +:100000000C944F020C94A1020C94A1020C94A10236 +:100010000C94A1020C94A1020C94A1020C94A102D4 +:100020000C94A1020C94A1020C946E1E0C94401F1F +:100030000C94792C0C94A1020C94A1020C94A102B2 +:100040000C94A1020C94A1020C94A1020C94A102A4 +:100050000C94A1020C942E0B0C94A1020C94A102FE +:100060000C94A1020C94A1020C94A1020C94A10284 +:100070000C94A1020C94A1020C94A1020C94A10274 +:100080000C94A1020C94A1020C94A1020C94A10264 +:100090000C94A1020C94A1020C94A1020C94A10254 +:1000A0000C94A1020C94A1020C94A102AD1FCF1FCD +:1000B000BD20CF1FBD2014203720BD208C209F20C5 +:1000C0008F238F23BC23BC23172453244B264B267A +:1000D0006B244B266625662521264B264B26372684 +:1000E000000102030405060708090A0B0C0D0E0F98 +:1000F000101112131415161718191A1B1C1D1E1F88 +:10010000202122232425262728292A2B2C2D2E2F77 +:10011000303132333435363738393A3B3C3D3E3F67 +:10012000404142434445464748494A4B4C4D4E4F57 +:10013000505152535455565758595A5B5C5D5E5F47 +:10014000606162636465666768696A6B6C6D6E6F37 +:1001500070717273808080808080808080808080D9 +:1001600080808080808080758074767780808080B9 +:10017000808080808080808080808080808080807F +:10018000808080808080808080808080808080806F +:10019000808080808080808080808080808080805F +:1001A000808080808080808080808080808080804F +:1001B000808080808080808080808080808080803F +:1001C00078797A7B7C7D7E7F808080808080808053 +:1001D000808080808080808080808080808080801F +:1001E0000A00253031366200253032643A20000A98 +:1001F000722F63203031323334353637383941424B +:10020000434445460A00686F73742E5461736B3A19 +:100210002025640A000D0A0020253032580073742E +:100220006174653A2020253032582025303258003C +:10023000696E69743A20646F6E650A000D0A0020C9 +:100240002530325800696E7075742025643A20207C +:10025000253032582025303258005B575D005B5303 +:100260005D005B525D005B445D005B435D003C03F1 +:10027000550053004200200074006F00200055001C +:100280005300420020006B006500790062006F009F +:10029000610072006400200063006F006E00760051 +:1002A0006500720074006500720000000E037400A7 +:1002B0002E006D002E006B002E00000004030904C8 +:1002C00009027400040100A03209040000010301C6 +:1002D00001000921110100012240000705810308E6 +:1002E000000A0904010001030102000921110100B3 +:1002F00001224D000705820308000A0904020001DB +:1003000003000000092111010001223600070583C6 +:100310000308000A09040300020300000009211178 +:1003200001000122220007058403200001070504C3 +:10033000032000011201100100000008EDFE5B0027 +:100340001408010200010631FF0974A101097515A5 +:100350000026FF009520750881020976150026FF0A +:1003600000952075089102C005010980A101850250 +:1003700016010026B7001A01002AB7007510950172 +:100380008100C0050C0901A1018503160100269C0E +:10039000021A01002A9C02751095018100C0050116 +:1003A0000902A1010901A10005091901290515008A +:1003B00025019505750181029501750381010501EE +:1003C000093009311581257F9502750881060938A4 +:1003D0001581257F950175088106050C0A380215DF +:1003E00081257F950175088106C0C005010906A118 +:1003F00001050719E029E715002501950875018118 +:1004000002950175088101050819012905950575F1 +:100410000191029501750391010507190029FF1546 +:100420000026FF00950675088100C00A00253032BD +:100430005820006B6579626F6172645F7265706FDE +:1004400072743A20004C45443A20253032580A0054 +:10045000290A002575002F002575005D28002564F8 +:100460000020002564002000256400200025640091 +:100470007C0025303258006D6F7573656B6579208F +:100480005B62746E7C782079207620685D287265C6 +:10049000702F61636C293A205B008309820A112462 +:1004A0001FBECFEFDAE0DEBFCDBF04B603FE27C02C +:1004B0008091810390918203A0918303B091840382 +:1004C0008730904BA740B04BD1F41092810310922B +:1004D0008203109283031092840314BE84B7877F33 +:1004E00084BF0FB6F894A8958091600088618093CE +:1004F0006000109260000FBEE0E0F8E3099511E0A3 +:10050000A0E0B1E0E0E5F2E602C005900D92A0396E +:10051000B107D9F723E0A0E9B1E001C01D92A138ED +:10052000B207E1F712E0CFE4D2E004C02197FE0168 +:100530000E940C31CD34D107C9F70E94BE090C943A +:1005400026310C940000FF93EF93E0919001F0911D +:100550009101309709F00995EF91FF910895FC0101 +:100560008591803011F0EFDFFBCF0895FF27E0E2A7 +:1005700030E247FF0CC0419597FF09C0EDE260955E +:10058000709580959095611D711D811D911D27FFAE +:1005900002C0219530E350E2AA27660F771F881F1B +:1005A000991FAA1FA41710F0A41B63955A95A9F7C9 +:1005B000AA3008F0A95FA05DAF93F39561157105AE +:1005C0008105910541F7ED3211F4EF93F395F217A0 +:1005D00018F43F93F395FBCF8F91B5DFFA95E1F7D0 +:1005E0000895E991F9918591803021F0853219F0D3 +:1005F000AADFF9CF089520E0E89455915532C1F370 +:10060000503311F4689455915A3348F4505390F391 +:10061000220F022E220F220F200D250FF4CF0EF4F1 +:10062000219589919991533619F3533729F153350F +:1006300059F1BC0188279927E8945C3621F4899107 +:10064000999168945591543639F446EF7EF077FFCE +:100650000DC08FEF9FEF0AC055374AE039F058358B +:1006600040E121F0523642E009F00895FF93EF9304 +:100670007DDFEF91FF91B7CFFF93EF93FC01819165 +:100680008030B9F360DFFBCFFF93EF9368DFF1CFEA +:10069000DF93CF93CDB7DEB72596A3DFCF91DF9160 +:1006A000089580E00895089580E0089581E0089518 +:1006B000CF93DF93CDB7DEB728970FB6F894DEBFA0 +:1006C0000FBECDBF29833A834B835C836D837E83CA +:1006D0008F8398878091C902282B2093C902FE013D +:1006E0003396AE01475F5F4F2191243088F080E060 +:1006F00090E0DC01A753BD4F12963C911297311147 +:1007000003C012962C9304C001968630910589F798 +:10071000E417F50749F728960FB6F894DEBF0FBE29 +:10072000CDBFDF91CF910895860F911D860F911D4A +:10073000FC015687458781E00895CF93DF93EC0154 +:100740008C819D81DC01ED91FC910480F581E02D8F +:100750006E8109951F86188A81E08A8B1E821B8A0A +:100760001C8A1D8A1E8A1F8A80E0DF91CF9108951E +:10077000FC018681089581E0633009F080E00895EE +:1007800081E0613009F080E00895860F911D860FA9 +:10079000911DFC01858596850895FC018789089542 +:1007A000EF92FF92CF93DF93DC01E70152968C9199 +:1007B0005297823049F11F966C931F9750964C9335 +:1007C00050979B8193709330F9F49A8197FF1CC0E6 +:1007D0009E8158962C915897291718F458969C93F7 +:1007E0005897E82FF0E09F01220F331FE20FF31F0D +:1007F000EA0FFB1F9A819F7097839C81908794E0FA +:1008000091878F5F52968C93DF91CF91FF90EF90FD +:100810000895EF92FF920F9302970E94D0030F91D9 +:10082000FF90EF9008950895DF92EF92FF920F935B +:100830001F93CF93DF93CDB7DEB762970FB6F894CF +:10084000DEBF0FBECDBFDC0157962C91222381F075 +:100850007C010E94930AF70103891489258936894E +:10086000DC01CB01801B910BA20BB30BB7FF02C0C5 +:10087000D12C39C0838590E09A8B898B8E010F5FD4 +:100880001F4F9E012F5E3F4F428566818481958177 +:100890000E949513D82E811118C029893A892330D6 +:1008A000310598F0D7011D968D919C911E97009768 +:1008B00061F0DC01ED91FC910190F081E02D8E0161 +:1008C0000F5F1F4F40E0B70109950E94930AF7019F +:1008D000208DDC01CB01820F911DA11DB11D838BE9 +:1008E000948BA58BB68B8D2D62960FB6F894DEBFD8 +:1008F0000FBECDBFDF91CF911F910F91FF90EF9071 +:10090000DF9008953F924F925F926F927F928F9205 +:100910009F92AF92BF92CF92DF92EF92FF920F938E +:100920001F93CF93DF93CDB7DEB7EC970FB6F89454 +:10093000DEBF0FBECDBFDC0114968D909C90159745 +:1009400016963C91311139C1522E342E462E5C013F +:10095000FC01108ED401ED91FC910190F081E02D0D +:1009600060E0C40109957C01009711F486ED2AC16D +:10097000FC01608071806114710409F420C165017B +:10098000F7E0CF0ED11CDC011196DC92CE921496CA +:100990005C928E01065D1F4F28E030E040E060E091 +:1009A000F501848195810E9458118CAF8111F8C0A6 +:1009B0001AA5D7016D927C92D401ED91FC91028031 +:1009C000F381E02D232D40E0642DC4010995F5014C +:1009D0008683882309F4F5C099A99087282F40E0E1 +:1009E00060E0848195810E9403128CAFD401ED9167 +:1009F000FC91D70114961C92882359F00480F5814C +:100A0000E02DD50116966C91C4010995F501168269 +:100A1000D2C00190F081E02DD50116966C91C401F1 +:100A20000995FC01892B09F4A1CF912F133108F00E +:100A300092E15482992369F0292F30E08E01065DFE +:100A40001F4F40E0F5016681848195810E94581115 +:100A50008CAF8CAD8111A7C0EBACF12C47E1642EBB +:100A600041E0742E2501F2E04F0E511C4E0181E150 +:100A7000880E911CFE1449F17A8269825C824B8255 +:100A80001E86188A1F8619A21AA21BA219A69F8267 +:100A90008E82998688868D818B878A879D868C86B3 +:100AA0008E010F5F1F4F2F2D40E0D50116966C91E0 +:100AB000169714968D919C9115970E94A611F50199 +:100AC0008289823011F0F394D5CFD50152968C9162 +:100AD000823019F081ED8CAF66C0960142E0F501DD +:100AE0006681848195810E94920C8CAF68EE73E0E0 +:100AF00080E090E00E94950AD5011F962C911F97E7 +:100B000040E016966C91169714968D919C911597CE +:100B10000E9470138CAF811146C068EE73E080E0D4 +:100B200090E00E94950A40E060E0C5010E946615D1 +:100B30008CAF811138C020E040E060E0C5010E9428 +:100B40003C158CAF8DE191E09A838983AE014F5FB4 +:100B50005F4F60E070E0C5010E94CB1480E28CAF73 +:100B60008CAD8823C1F090E0959587958CAFFE0100 +:100B7000FC966F01EE24E394F12C00E022E040E0CB +:100B800060E0C5010E940E1569E170E080E090E030 +:100B90000E94950AE5CF91E0D50157969C9312C02B +:100BA000F70171826082D501ED91FC910480F5819D +:100BB000E02DC50109958CAD05C089ED03C087ED19 +:100BC00001C084EDEC960FB6F894DEBF0FBECDBF2A +:100BD000DF91CF911F910F91FF90EF90DF90CF9019 +:100BE000BF90AF909F908F907F906F905F904F904D +:100BF0003F9008950F931F93CF93DF936091C901A6 +:100C00007091CA01E0919801F09199014091BD0164 +:100C10005091BE012091B1013091B2018091A501A6 +:100C20009091A6016E177F07B1F4E0919601F091C3 +:100C300097014E175F0779F4E0919401F0919501C7 +:100C40002E173F0741F4E0919201F09193018E1726 +:100C50009F0709F49DC07093990160939801509388 +:100C600097014093960130939501209394019093BE +:100C7000930180939201E9ECF2E088E0DF011D929C +:100C80008A95E9F72091C1013091C2014091C301D9 +:100C90005091C4016091C5017091C6018091C70156 +:100CA0009091C8010E9458032091B5013091B6017E +:100CB0004091B7015091B8016091B9017091BA01AA +:100CC0008091BB019091BC010E9458032091A90121 +:100CD0003091AA014091AB015091AC016091AD01FE +:100CE0007091AE018091AF019091B0010E945803C4 +:100CF00020919D0130919E0140919F015091A00152 +:100D00006091A1017091A2018091A3019091A40131 +:100D10000E94580381E08093C8028091690380FF9C +:100D200014C08091CA021F928F938091C9021F92B2 +:100D30008F938EE192E09F938F930E9448030F90D0 +:100D40000F900F900F900F900F90C0E0D0E008E14F +:100D500012E08091690380FF0EC0FE01E753FD4F52 +:100D600082811F928F931F930F930E9448030F90CD +:100D70000F900F900F902196C630D10551F78091BA +:100D8000690380FF07C085E192E00E94AF0202C0C4 +:100D90001092C8020E94EC0AEC0181E592E00E94E8 +:100DA000CC13CE010E94040B8536910580F0209172 +:100DB000690320FF0CC09F938F9386E092E09F937E +:100DC0008F930E9448030F900F900F900F9081E037 +:100DD000DF91CF911F910F910895482F50E0CA01E4 +:100DE00024E0880F991F2A95E1F7805E9109089702 +:100DF00030F48091C902882311F090E002C080E0B5 +:100E000090E0EBECF2E0A1E0B0E036E03E0F2191A3 +:100E1000243080F0622F62956F7070E0461757079C +:100E200049F42F70BD0102C0660F771F2A95E2F7C3 +:100E3000862B972B3E13EBCF0895EF92FF920F93E3 +:100E40001F93CF93DF938FEE91E00E94AF02C0E03B +:100E5000D0E088EEE82E81E0F82E02EE11E0DF937C +:100E6000CF93FF92EF920E9448038C2F0E94ED06D1 +:100E70000E94492C9F938F931F930F930E944803C6 +:100E800080EE91E00E94AF0221968DB79EB7089642 +:100E90000FB6F8949EBF0FBE8DBFC031D105F9F6D5 +:100EA000DF91CF911F910F91FF90EF900895CF9216 +:100EB000DF92EF92FF920F93CF93DF931F92CDB704 +:100EC000DEB78983CE0101966C01EE24E394F12C08 +:100ED00000E022E040E060E086E192E00E940E1532 +:100EE00022E040E060E08DEF91E00E940E1522E0EC +:100EF00040E060E084EE91E00E940E1522E040E0C8 +:100F000060E08BEC91E00E940E150F90DF91CF9185 +:100F10000F91FF90EF90DF90CF900895FC017583C3 +:100F2000648383E291E09183808381E491E0938301 +:100F30008283138A148A158A168A178A178288E090 +:100F400080878CE381871286138684E0848781E022 +:100F5000828B118A17861686158661157105B1F088 +:100F6000DB01AA5ABF4F80E090E02D913D91232BE9 +:100F700049F48B96880F991FDB01A80FB91FED93D9 +:100F8000FC93089501968031910579F708952E9A82 +:100F900008952E988EBD0DB407FEFDCF1EBC0DB476 +:100FA00007FEFDCF0E94C7078EB508952E98826078 +:100FB0008EBD0DB407FEFDCF6EBD0DB407FEFDCF97 +:100FC0000C94C70788EF0E94C907807C8034A1F089 +:100FD00018F4882301F10895803819F0803CB9F0A5 +:100FE000089588ED0E94C90781FD0BC069EC88ED6A +:100FF0000E94D60782E00CC088ED0E94C90781FDDF +:10100000F5CF6BEC88ED0E94D60783E001C081E04C +:1010100080939A01089561ED88ED0E94D6071092A1 +:101020009A0108950F931F93CF93DF938C01269A13 +:101030000E94C707219A229A2398209A80E58CBDA6 +:1010400081E08DBD259868E188E80E94D60760E2BE +:1010500088E70E94D60760E088E70E94D607C1E0D3 +:10106000D0E0209799F088E60E94C907219680FF7A +:10107000F8CF61EC88ED0E94D60760E680ED0E9413 +:10108000D60764E088EE0E94D60702C08FEF11C039 +:1010900088EE0E94C90782FFFBCFC8010E94E207C9 +:1010A00060E288EC0E94D60761E080E80E94D607E3 +:1010B00080E0DF91CF911F910F91089581E592E03B +:1010C0000E9412088FEB91E09093240280932302F8 +:1010D00083EB91E090930B0280930A0287EA91E000 +:1010E0009093F2018093F1018BE991E09093D90103 +:1010F0008093D8010895EF92FF920F931F93CF939F +:10110000DF93EC017B018A0188A1823029F128F468 +:10111000882341F0813081F0C9C0833019F18430D7 +:10112000D9F1C4C082E08C832D813E8138872F8322 +:101130008A87898781E088A3A801B701CE01079635 +:101140000E945819811102C080E0B1C0ED81FE817A +:10115000808189A381818AA3CE0142969E838D835B +:1011600083E088A38AA1843059F018F4823049F0D2 +:101170000AC0853039F0813231F489A1825002C031 +:101180001BA287E08C838D819E8198878F838C81C1 +:101190008A87898784E088A38AA1843081F085309A +:1011A00091F1823009F050C0A801B701CE01079635 +:1011B0000E945819882341F28D898CA372C0A8011E +:1011C000B701CE0107960E945819882309F4BCCFB5 +:1011D0008D89833009F065C08E89813009F061C046 +:1011E00098A58F89992321F0882309F45AC003C058 +:1011F000813009F056C091E09BA39A899EA39B89F8 +:101200009FA38DA34EC0A801B701CE0107960E94EF +:101210005819882309F498CF8BA1882309F441C079 +:101220008A819B810097E9F1DC01ED91FC910190AD +:10123000F081E02D7E01B0E1EB0EF11C0DA12FA19C +:101240004EA16CA109952DC089A19D85992319F006 +:101250009130E9F021C090E002979F878E8781E06E +:101260008D8715C0F80120813181232BA9F00197CA +:101270009F878E87F701808191810196918380837A +:10128000D8018D919C91119701978D939C938E8598 +:101290009F85009739F71D868E859F85892B09F0DC +:1012A00053CFCE0140969E838D8318A281E0DF91BB +:1012B000CF911F910F91FF90EF9008950F931F937F +:1012C000CF93DF9300D000D0CDB7DEB78C017C8305 +:1012D0006B835A8349832B813C81232B59F0AE01C8 +:1012E0004D5F5F4FBE016F5F7F4FC8010E947B085B +:1012F0008111F1CF0F900F900F900F90DF91CF9150 +:101300001F910F91089581E592E00E943D0C61E5E7 +:1013100072E080E492E00E94EB1761E572E08FE2F8 +:1013200092E00E94EB1761E572E086E192E00E9494 +:101330008E0761E572E08DEF91E00E948E0761E516 +:1013400072E084EE91E00E948E0761E572E08BEC22 +:1013500091E00E948E0787E491E09093C001809312 +:10136000BF019093B4018093B3019093A80180933F +:10137000A70190939C0180939B010895569A5E9AD1 +:1013800080916903816084608093690380E091E0CB +:101390000E94D5200E94662184B7877F84BF0FB644 +:1013A000F894A89580916000886180936000109205 +:1013B00060000FBE90E080E80FB6F8948093610063 +:1013C000909361000FBE0E94F31D0E94501E8091F9 +:1013D000E20084608093E20087EB99E10E942E2C6A +:1013E0007894809178038430E1F78091690380FFDD +:1013F00009C02FEF83ED90E3215080409040E1F74A +:1014000000C000008091690380FF04C080E392E087 +:101410000E94AF020E946A21FDCFEF92FF920F93CC +:101420001F93CF93DF93EC017B01DC01129688E0E0 +:10143000F80101900D928A95E1F70E94930A7B874B +:101440006A878091690380FF1EC00B811A81D701D2 +:10145000ED91FC910084F185E02DC70109951F9263 +:101460000F931F921F931F928F9385E492E09F9397 +:101470008F930E9448038DB79EB708960FB6F894D5 +:101480009EBF0FBE8DBF249616E08FE3E82E82E04C +:10149000F82E8091690380FF0BC088811F928F9383 +:1014A000FF92EF920E9448030F900F900F900F90C1 +:1014B000115021961111EDCF8091690380FF0AC070 +:1014C0008CE392E0DF91CF911F910F91FF90EF900D +:1014D0000C94AF02DF91CF911F910F91FF90EF908D +:1014E0000895089580E090E008958FEF9FEF0895AC +:1014F0008FEF9FEF08950895862F0E94B71981E01E +:1015000090E00895E1EDF2E01382128288EE93E01C +:10151000A0E0B0E084839583A683B7838DE491E057 +:101520009183808308950C94F80A8F929F92AF92D2 +:10153000BF92CF92DF92EF92FF920E94C82F4B0191 +:101540005C0120E030E04AE755E40E947F306B0107 +:101550007C0120E030E040E85FE30E948D2F87FDB2 +:1015600024C020E03FEF4FE757E4C701B6010E94D7 +:101570007A301816ACF420E030E040E251E4C501C6 +:10158000B4010E947F300E94992F20E931E061155B +:10159000710581F0C9010197F1F761507109F7CF29 +:1015A000C701B6010E94992F02C061E070E0CB0133 +:1015B0000197F1F7FF90EF90DF90CF90BF90AF9041 +:1015C0009F908F90089582E084BD93E095BD9AEF3F +:1015D00097BD80936E0008952FB7F8948091DF0235 +:1015E0009091E002A091E102B091E2022FBF089534 +:1015F0002FB7F8946091DF027091E0028091E102D0 +:101600009091E2022FBF0895CF92DF92EF92FF9266 +:101610000F931F932FB7F8944091DF025091E0028F +:101620006091E1027091E2022FBF6A017B01EE241A +:10163000FF248C0120E030E0C016D106E206F3065C +:1016400010F4415051099A01281B390BC9011F910F +:101650000F91FF90EF90DF90CF9008951F920F921F +:101660000FB60F9211248F939F93AF93BF938091E6 +:10167000DF029091E002A091E102B091E2020196B6 +:10168000A11DB11D8093DF029093E002A093E102BF +:10169000B093E202BF91AF919F918F910F900FBED7 +:1016A0000F901F901895CF93DF93FC01862F8078C1 +:1016B00009F051C0283008F04FC0442321F0958133 +:1016C000973009F449C0EF012D96A0E0B0E01196E3 +:1016D0009881911103C0662331F021C02596AF3067 +:1016E000B105A9F739C085E08A9FE0018B9FD00D35 +:1016F0001124CE0FDF1F442331F081E488878581D8 +:101700008F5F858302C081E0888725E02A9FC00122 +:101710002B9F900D1124E80FF91F80851DC0677065 +:10172000660F660F660F442341F0606485818F5F0A +:1017300085838770687F682B03C02770687B622B66 +:1017400025E02A9FC0012B9F900D1124E80FF91F5F +:101750006087862F01C080E0DF91CF910895DF92EE +:10176000EF92FF920F931F93CF93DF93EC01E62E3E +:10177000F12C85E0689FB0011124FE01E60FF71FF0 +:101780008085182F177086FF21C001E085E0D82ED4 +:101790008FEF800F8F3008F001E0FE01D09EE00D4A +:1017A000F11D112480858695869586958770811315 +:1017B00005C0602FCE010E94AF0BEACF0F5F003152 +:1017C00061F78D81811302C011501D8385E08E9DCC +:1017D000F0018F9DF00D1124EC0FFD1F108681E0AC +:1017E000818712862296D783C683DF91CF911F917E +:1017F0000F91FF90EF90DF900895611102C006965F +:101800000895FC013D9621E03081361307C035E094 +:10181000239F800D911D1124069608952F5F359604 +:10182000203191F780E090E00895FC016134C1F42B +:101830003F969C01265A3F4F61E0AC014E5F5F4FDF +:10184000DF0112971C9211966C93108213974D939F +:101850005C933596E217F30799F7FC01158208951A +:101860003D9621E03081361303C0622F0C94AF0BFC +:101870002F5F35962031B1F70895CF93DF93FC01A8 +:101880008FE591E0918380831582108681E08187C6 +:101890001286CF01029697838683128228E02383E3 +:1018A0002CE32483DF011F969F01265A3F4F41E01E +:1018B000ED0122971882219648831C9223979983E1 +:1018C00088831596A217B30799F7EA58FF4F10823D +:1018D00081E18093E702DF91CF910895CF93DF9369 +:1018E0001F92CDB7DEB749830E94FD0B4981009757 +:1018F00089F0DC01ED91FC911197309759F0139626 +:101900009C9180E0891731F02081241731F03396C3 +:101910008F5FF8CF80E090E001C0CF010F90DF91A2 +:10192000CF9108950F931F93CF93DF932115310526 +:1019300071F0E901042F162F0E94FD0BFC01892B89 +:1019400041F01283D183C083038380E003C088ED1C +:1019500001C086EDDF91CF911F910F910895CF9235 +:10196000DF92FF920F931F93CF93DF93662381F152 +:10197000F62E8C016C0186E5C80ED11CC0E0D0E0CB +:10198000D6018D919D916D010097F1F0DC01ED91F3 +:10199000FC910084F185E02D09958F1115C0AB965F +:1019A000CC0FDD1FC00FD11F88819981DC01ED9123 +:1019B000FC910480F581E02DDF91CF911F910F9173 +:1019C000FF90DF90CF9009942196C031D105C1F6E8 +:1019D00080E0DF91CF911F910F91FF90DF90CF902A +:1019E00008952E980895CF93DF931F92CDB7DEB759 +:1019F00089830E94F10C89818EBD0DB407FEFDCF55 +:101A00001EBC0DB407FEFDCF0E94C7078EB50F9018 +:101A1000DF91CF910895CF93DF9300D0CDB7DEB79C +:101A20006A8389830E94F10C898182608EBD6A81FC +:101A30000DB407FEFDCF6EBD0DB407FEFDCF0F90B8 +:101A40000F90DF91CF910C94C7078F929F92AF9226 +:101A5000BF92DF92EF92FF920F931F93CF93DF938A +:101A60001F92CDB7DEB74C01D62E590149830E9493 +:101A7000FD0B7C014981009709F440C0FC01808185 +:101A80009181892BE9F16D2DC4010E946E0CF50145 +:101A9000918380830097B1F1FC01228126952695E0 +:101AA00030E02031310514F02FE030E081E090E0AB +:101AB000A0E0B0E004C0880F991FAA1FBB1F2A95A1 +:101AC000D2F70197F801918380836D2D80EE0E94FB +:101AD0000B0D88ED0E94F30C682FF7018481882399 +:101AE00039F0F401EA58FF4F80818260682B01C011 +:101AF000697F88ED0E940B0D80E005C086ED03C074 +:101B000087ED01C08BED0F90DF91CF911F910F9169 +:101B1000FF90EF90DF90BF90AF909F908F900895CF +:101B20008F929F92AF92BF92CF92DF92EF92FF92ED +:101B30000F931F93CF93DF93862E942E59010E940B +:101B4000930A6B017C0128E8C20E23E1D21EE11C3E +:101B5000F11C00E010E0D0E0C0E098280E94930A59 +:101B6000DC01CB018C199D09AE09BF09B7FF2DC05F +:101B7000692D80EF0E940B0D0E94930ADC01CB01BE +:101B80008C199D09AE09BF09B7FF09C088EC0E94F6 +:101B9000F30C87FFF1CF60E888EC0E940B0D88EF13 +:101BA0000E94F30CC82FCF70C43019F0CE3051F022 +:101BB0000CC00F5F1F4FA114B10481F20A151B0561 +:101BC00069F603C0DF5FD33049F68C2FDF91CF91E8 +:101BD0001F910F91FF90EF90DF90CF90BF90AF904B +:101BE0009F908F9008959F92AF92BF92CF92DF9275 +:101BF000EF92FF920F931F93CF93DF937C01C42F3B +:101C0000122F992493946C01C60ED11CC60ED11CC0 +:101C100086E5C80ED11CA42EB12CABE2AA0EB11CD5 +:101C2000AA0CBB1CAE0CBF1CF60180819181DC01AB +:101C3000ED91FC910280F381E02D202F412F6C2F3C +:101C40000995803EC9F4C1110BC061E088EE0E9485 +:101C50000B0D66E670E080E090E00E94950A16C0E9 +:101C6000F50180819181DC01ED91FC910284F38585 +:101C7000E02D612F09950AC08D3031F49FEF990D49 +:101C8000933008F040C016C081113DC0F60180813C +:101C90009181DC01ED91FC910190F081E02D202FEC +:101CA000412F6C2F0995D82F8D3061F48FEF890D5E +:101CB000833050F464E670E080E090E00E94950A82 +:101CC0009394B2CF8823F1F0C1110BC061E088EE8C +:101CD0000E940B0D66E670E080E090E00E94950A9D +:101CE00011C0EC2FF0E0BB96EE0FFF1FEE0DFF1DB5 +:101CF00080819181DC01ED91FC910284F385E02DDE +:101D0000612F09958D2FDF91CF911F910F91FF903A +:101D1000EF90DF90CF90BF90AF909F9008950F937A +:101D20001F93CF93DF9300D0CDB7DEB78A016A83CC +:101D300089830E94F10C898182608EBDF8016A81DD +:101D4000862F882339F00DB407FEFDCF91919EBDFB +:101D50008150F7CF060F111D0DB407FEFDCF0E9475 +:101D6000C707C8010F900F90DF91CF911F910F917E +:101D700008952F923F924F925F926F927F928F922F +:101D80009F92AF92BF92CF92DF92EF92FF920F930A +:101D90001F93CF93DF9300D000D01F92CDB7DEB753 +:101DA0007D836C835A016901FB0121808FEF820DD5 +:101DB000803408F075C00E94930A2B013C01F8E8BA +:101DC0004F0EF3E15F1E611C711CEC81FD8182816D +:101DD00080FD02C060E401C060E888EE0E940B0D47 +:101DE00020E0312CC114D10409F44AC076012C142E +:101DF0003D0408F47101EA82A8016E2D80E10E9481 +:101E00008F0E6E2D88E30E940B0DEC81FD816081A9 +:101E1000606280EF0E940B0D88EC0E94F30C87FF3C +:101E2000FBCF60E888EC0E940B0D88EF0E94F30C5A +:101E3000282F2F70812C912C1982222361F02B8363 +:101E40000E94930ADC01CB0184199509A609B70900 +:101E50002B81B7FD05C0CE18DF080E0D1F1DC2CFA8 +:101E6000263001F12E3009F456C0243049F4FFEF3A +:101E70008F1A9F0AA114B10459F18A149B0441F5E9 +:101E800088EF2B830E94F30C85FB882780F9EC8177 +:101E9000FD81928180FB90F992832B81822F41C03A +:101EA0008AED3FC088EF0E94F30C85FB882780F9FC +:101EB00091E08927EC81FD81928180FB90F99283EA +:101EC00090FD02C060E401C060E888EE0E940B0D46 +:101ED00060E088E30E940B0DF801608180E10E94C0 +:101EE0000B0D6A8188E30E940B0DEC81FD816081FE +:101EF000606280EF0E940B0D88EC0E94F30C87FF5C +:101F0000FBCF60E888EC0E940B0D88EF0E94F30C79 +:101F1000282F2F7092CF89818F5F89838330C1F6FC +:101F2000AFCF0F900F900F900F900F90DF91CF9148 +:101F30001F910F91FF90EF90DF90CF90BF90AF90E7 +:101F40009F908F907F906F905F904F903F902F90D9 +:101F500008952F923F924F925F926F927F928F924D +:101F60009F92AF92BF92CF92DF92EF92FF920F9328 +:101F70001F93CF93DF9300D000D01F92CDB7DEB771 +:101F80005C017D836C834A017901F901C080D180B5 +:101F9000FB014180F90111821082FB01828181FDE8 +:101FA00002C060E101C060E288EE0E940B0D3C2C93 +:101FB0009401EC81FD81408160E0C5010E94900D9B +:101FC000582EF6E08F1316C088EF0E94F30C82950E +:101FD000817091E08927EC81FD81928180FB91F9EC +:101FE000928391FD02C060E101C060E288EE0E9430 +:101FF0000B0DDECF81115BC088EC0E94F30C82FFD9 +:1020000054C080E30E94F30C282E282F30E0C21623 +:10201000D30608F4232CF70120813181622C712C26 +:10202000A601421B530B57FF02C040E050E0930152 +:10203000461557050CF49A0129833A832B830E9495 +:10204000F10CF8E0FEBD8B813A8129810DB407FEC9 +:10205000FDCFF801882341F01EBC81500DB407FE6E +:10206000FDCF4EB54193F6CF020F131F0E94C70755 +:1020700064E088EC0E940B0DF70120813181620E33 +:10208000731E71826082241420F06C147D0408F4A5 +:102090008FCF88EF0E94F30C82958170EC81FD81D7 +:1020A000928180FB91F9928302C080EF582E852D9A +:1020B0000F900F900F900F900F90DF91CF911F9185 +:1020C0000F91FF90EF90DF90CF90BF90AF909F90D7 +:1020D0008F907F906F905F904F903F902F900895DA +:1020E0002F923F924F925F926F927F928F929F9228 +:1020F000AF92BF92CF92DF92EF92FF920F931F9316 +:10210000CF93DF93CDB7DEB762970FB6F894DEBFFB +:102110000FBECDBF3C01542ED22E402E5E2D2FA0DF +:1021200038A4E9A4FAA4188A1F861E861D868E018B +:10213000035F1F4F9E01215F3F4F598B0E94250D6A +:10214000598981119CC0D9824A825B83CC82BE822C +:10215000AD8298868F82AE014F5F5F4F68E080E26C +:102160000E948F0E2D853E85452D60E1C3010E94A2 +:10217000900D182F81117FC0BD2CBB1CBB24BB1C34 +:10218000E114F10409F46AC0EF85F8898281BB206B +:1021900009F455C0826082836401AA24A394C11407 +:1021A000D10409F449C03C862B864D855E856F8538 +:1021B000788987019E01255F3F4FC3010E94A90FC7 +:1021C000182F8630B1F42F85388988EF298B3A8B08 +:1021D0000E94F30C85FB882780F98A2529893A8992 +:1021E000D90112969C91129780FB91F912969C93BB +:1021F000D6CF811140C0EBA5FCA53097A1F001908E +:10220000F081E02D0190F081E02DC4018C199D0931 +:102210009A8789876B857C859E01275F3F4FA70141 +:102220008BA59CA509958B859C85C81AD90A821512 +:10223000930508F0B4CF12C011111DC014C0816005 +:1022400082834D855E8587019101BF01C3010E9494 +:10225000B90E811114C02D853E850FC02D853E8598 +:10226000B11003C00AC02D853E8560EA452DC3012B +:102270000E94900D04C0812F02C060E8F7CF6296E3 +:102280000FB6F894DEBF0FBECDBFDF91CF911F9187 +:102290000F91FF90EF90DF90CF90BF90AF909F9005 +:1022A0008F907F906F905F904F903F902F90089508 +:1022B0008F929F92AF92BF92CF92EF920F931F9304 +:1022C0001F921F921F930F933F932F934901A12CAD +:1022D000B12CCC24C394E12C06E020E80E947010BD +:1022E0000F900F900F900F900F900F901F910F91E4 +:1022F000EF90CF90BF90AF909F908F9008958F9266 +:102300009F92AF92BF92CF92EF92FF920F931F9244 +:102310001F92FF92EF923F932F934901A12CB12C72 +:1023200022E0C22EE02E06E020E80E9470100F90FE +:102330000F900F900F900F900F900F91FF90EF90D4 +:10234000CF90BF90AF909F908F9008954F925F92E3 +:102350006F927F928F929F92AF92BF92CF92DF92B5 +:10236000EF92FF920F931F93CF93DF93CDB7DEB71A +:10237000C054D1090FB6F894DEBF0FBECDBF3C01EB +:10238000D62E542E422EC02ECE0101965C017C0129 +:10239000022F29E030E0C3010E947F1181111BC090 +:1023A0008B809C801F93CF92BF92AF921F9280E44C +:1023B0008F93A12CB12C82E0C82EE42C06E020E8FB +:1023C000452D6D2DC3010E9470100F900F900F903E +:1023D0000F900F900F90C05CDF4F0FB6F894DEBFE8 +:1023E0000FBECDBFDF91CF911F910F91FF90EF9066 +:1023F000DF90CF90BF90AF909F908F907F906F9025 +:102400005F904F9008958F929F92AF92BF92CF921C +:10241000EF920F93CF931F921F921F921F921F92C2 +:102420001F92812C912CA12CB12CC12CE22E05E005 +:1024300020E00E947010C82F6CE271E080E090E014 +:102440000E94950A0F900F900F900F900F900F9091 +:102450008C2FCF910F91EF90CF90BF90AF909F9026 +:102460008F9008950F931F93CF93DF938A3F3FEF91 +:10247000930711F486ED2DC0DC011696ED91FC91C9 +:102480001797EF2B09F1122F242FEC011A8740E048 +:102490000E94530B082F8823C9F0682FCE010E9499 +:1024A000FD0B009739F3FC011483202F40E060E01E +:1024B000CE010E940312182F882351F0602FCE0105 +:1024C0000E94150C812F05C087ED03C084ED01C06B +:1024D00080E0DF91CF911F910F9108952F923F924D +:1024E0004F925F926F927F928F929F92AF92BF9224 +:1024F000CF92DF92EF92FF920F931F93CF93DF93D0 +:10250000CDB7DEB766970FB6F894DEBF0FBECDBF6E +:102510001B8A38E03C8B3CE33D8B8A3F3FEF9307BF +:1025200009F4ADC0B22E342EA62E7C01DC01169625 +:10253000CD90DC901797CE01439617969C938E937F +:1025400016971A962C938E010F5F1F4F22E130E0F1 +:1025500040E060E0C7010E945811F701D782C682AF +:102560008111A5C069847A844B845C843D813E8B53 +:102570002E80670186E5C80ED11C460110E0D4010B +:102580008D919C91009789F1DC01ED91FC91008483 +:10259000F185E02D0995811128C0F4018081918198 +:1025A000DC01ED91FC910088F189E02D622D099507 +:1025B0008823D9F0F40180819181DC01ED91FC91B7 +:1025C0000484F585E02DA201B3010995811159C05C +:1025D000F40180819181DC01ED91FC910684F78505 +:1025E000E02D6E89099581114CC01F5FB2E08B0E02 +:1025F000911C103121F610E0F60180819181009745 +:1026000089F1DC01ED91FC910084F185E02D0995C3 +:10261000811128C0F60180819181DC01ED91FC914E +:102620000088F189E02D622D09958823A9F1F60132 +:1026300080819181DC01ED91FC910484F585E02D90 +:10264000A201B301099581110DC0F601808191812C +:10265000DC01ED91FC910684F785E02D6E890995EA +:102660008823D1F01F5FB2E0CB0ED11C103121F6D0 +:102670002B2D432D6A2DC7010E94321218C086ED02 +:1026800016C00B2D232D4A2D612FC7010E94F30D7B +:10269000813D09F4AACF0BC00B2D232D4A2D612FAC +:1026A000C7010E94F30D982F977F913DD9F266964E +:1026B0000FB6F894DEBF0FBECDBFDF91CF911F9153 +:1026C0000F91FF90EF90DF90CF90BF90AF909F90D1 +:1026D0008F907F906F905F904F903F902F900895D4 +:1026E0008F929F92AF92BF92CF92EF920F931F92D1 +:1026F0001F921F921F921F921F92812C912CA12C2E +:10270000B12CC12CE22E09E020E00E9470100F9045 +:102710000F900F900F900F900F900F91EF90CF9020 +:10272000BF90AF909F908F900895AF92BF92CF923D +:10273000DF92EF92FF920F931F93CF93DF9300D01E +:1027400000D0CDB7DEB77C01690158011C821B8225 +:102750001A8219828E010F5F1F4F9E012D5F3F4F1E +:102760000E94250D811109C049815A816B817C81AC +:1027700085019601C7010E94A90F0F900F900F903D +:102780000F90DF91CF911F910F91FF90EF90DF900D +:10279000CF90BF90AF900895AF92BF92CF92DF924B +:1027A000EF92FF920F931F93CF938C011D990EC050 +:1027B00088EC0E94F30C85FF05C0C8010E94E20767 +:1027C00060E201C060E088EC0E940B0D80919A01EC +:1027D000813039F040F0823079F0833039F5C1E052 +:1027E0000CC083E106C08091E702807F8031F1F068 +:1027F00081E18093E7021AC0C0E08091E702807F08 +:102800008031A9F40E94930ADC01CB0188539F4FC9 +:10281000AF4FBF4F8093E3029093E402A093E50291 +:10282000B093E60280E28093E70201C0C0E0780145 +:1028300086E5E80EF11C6801A6E7CA0ED11C570117 +:10284000F501819191915F01009739F0DC01ED91E3 +:10285000FC910680F781E02D0995AC14BD0481F749 +:102860009091E702903409F43FC050F4903221F186 +:102870009033A1F1913109F084C0F60110820AC0B1 +:10288000913509F458C0903809F46AC0903509F0C0 +:1028900078C039C0D7018D919D917D01009739F0A5 +:1028A000DC01ED91FC910480F581E02D0995EC149B +:1028B000FD0481F782E163C00E94930A0091E30264 +:1028C0001091E4022091E5023091E602DC01CB0197 +:1028D000801B910BA20BB30BB7FD53C061E088EED8 +:1028E0000E940B0D80E44BC088EE0E94F30C80FD2B +:1028F00048C088ED0E94F30C682F686088ED0E9444 +:102900000B0D80E53CC088EC0E94F30C86FF39C0BB +:1029100081E58093E7020E94930ADC01CB01449693 +:10292000A11DB11D8093E3029093E402A093E50200 +:10293000B093E60226C00E94930AC090E302D090B2 +:10294000E402E090E502F090E602DC01CB018C1994 +:102950009D09AE09BF09B7FD14C080E88093E70266 +:102960002C2F40E060E0C8010E946E12882331F0F5 +:10297000823D39F08093E80280EA01C080E98093CB +:10298000E702CF911F910F91FF90EF90DF90CF90D2 +:10299000BF90AF9008958F929F92AF92BF92CF92C7 +:1029A000EF920F93CF93DF93CDB7DEB7C054D10929 +:1029B0000FB6F894DEBF0FBECDBF5F934F939E015D +:1029C0002F5F3F4F3F932F931F9220E42F9320E8D8 +:1029D000822E912C5B0132E2C32EE12C06E021E82D +:1029E00040E0FC016681848195810E9470100F9007 +:1029F0000F900F900F900F900F90C05CDF4F0FB6AD +:102A0000F894DEBF0FBECDBFDF91CF910F91EF9055 +:102A1000CF90BF90AF909F908F9008958F929F928C +:102A2000AF92BF92CF92DF92EF92FF920F938E2CD4 +:102A3000A42EB12C1F921F92DF92CF92FF92EF92A1 +:102A40009F2CC22EE02E09E021E2462FFC01668178 +:102A5000848195810E9470100F900F900F900F90BD +:102A60000F900F900F91FF90EF90DF90CF90BF905D +:102A7000AF909F908F9008958F929F92AF92BF9248 +:102A8000CF92EF920F93A62EB12C1F921F921F92FE +:102A90001F921F921F92812C912CC22EE42E0AE0CD +:102AA00021E240E0FC016681848195810E947010E2 +:102AB0000F900F900F900F900F900F900F91EF903D +:102AC000CF90BF90AF909F908F9008958F929F92DC +:102AD000AF92BF92CF92EF920F93A62EB12C1F927E +:102AE0001F921F921F921F921F92812C912CC12C1A +:102AF000E42E0BE021E240E0FC01668184819581B7 +:102B00000E9470100F900F900F900F900F900F90E9 +:102B10000F91EF90CF90BF90AF909F908F900895BE +:102B2000FC018285089581E0693009F080E0089514 +:102B3000CF93DF93EC018A819B81DC01ED91FC91C5 +:102B40000480F581E02D6A8509958A85813439F400 +:102B5000EA81FB81EA58FF4F8081846080831A8676 +:102B60001B861C861D861E861F86188A80E0DF91C4 +:102B7000CF9108958F929F92AF92BF92CF92EF9292 +:102B80000F93A42EB12CB22A1F921F921F921F9254 +:102B90001F921F92812C912CC12CE62E01E023E282 +:102BA00040E0FC016285828193810E9470100F9049 +:102BB0000F900F900F900F900F900F91EF90CF907C +:102BC000BF90AF909F908F9008958F929F92AF92F9 +:102BD000BF92CF92EF920F93A62EB12C1F921F920D +:102BE0003F932F935F934F934A01C12CE12C00E058 +:102BF00023EA40E0FC016285828193810E9470108B +:102C00000F900F900F900F900F900F900F91EF90EB +:102C1000CF90BF90AF909F908F9008958F929F928A +:102C2000AF92BF92CF92EF920F93A42EB12CB22A03 +:102C30001F921F921F921F921F921F92812C912C04 +:102C4000C12CE62E03E023E240E0FC016285828194 +:102C500093810E9470100F900F900F900F900F9023 +:102C60000F900F91EF90CF90BF90AF909F908F906B +:102C700008952F923F924F925F926F927F928F9220 +:102C80009F92AF92BF92CF92DF92EF92FF920F93FB +:102C90001F93CF93DF93CDB7DEB7E8970FB6F894C5 +:102CA000DEBF0FBECDBFDC011296ED90FC901397F6 +:102CB0001A963C91311104C1122F242E362E3C015C +:102CC000D701ED91FC910190F081E02D60E0C7010A +:102CD00009956C01009709F4F5C0FC01A080B18052 +:102CE000A114B10409F4F0C04301F4E08F0E911C6B +:102CF000DC0111969C928E9214961C93FE013196E3 +:102D00002F018F0128E030E040E060E0D30112960F +:102D10008D919C9113970E945811F6011482811194 +:102D2000D9C009818D81893009F0D0C0D701ED91DA +:102D3000FC910280F381E02D222D41E0632DC7013B +:102D40000995F3018287882309F4C2C09885958389 +:102D5000282F40E060E0828193810E940312182FA7 +:102D6000882389F0D601AD92BC92D701ED91FC91F8 +:102D70000480F581E02DD3011A966C91C701099565 +:102D8000F3011286ABC0202F013208F020E2D601F9 +:102D9000AD92BC9221110BC0940142E0F301628517 +:102DA000828193810E94920C811197C010C030E003 +:102DB000820140E0D3011A966C911A9712968D9178 +:102DC0009C9113970E945811811187C0E5CF1F92E3 +:102DD0001F925F924F921F9288E08F9388E0882E17 +:102DE000912CA12CB12C99E2C92EE12C06E020EA0D +:102DF00040E0F3016285828193810E947010182F58 +:102E00000F900F900F900F900F900F90811166C050 +:102E10008B81D3011B968C931B97720100E028E0F5 +:102E200030E040E01A966C911A9712968D919C9121 +:102E300013970E947F11811150C02B813C8140E08B +:102E4000F3016285828193810E947F11811145C0C7 +:102E5000298130E0CE0181967C0140E0D3011A96B1 +:102E60006C911A9712968D919C9113970E947F11E5 +:102E7000811133C02E8140E0F3016285828193810C +:102E80000E947013811129C001E0D3011B968C911F +:102E90001B97801740F020E0402F68E0C3010E949C +:102EA0000E160F5FF2CF1296ED91FC911397EA5830 +:102EB000FF4F80818460808381E050968C930EC0A8 +:102EC00019ED0CC016ED0AC017ED08C011ED06C0D3 +:102ED00014ED04C0F601B182A082182F812FE8966C +:102EE0000FB6F894DEBF0FBECDBFDF91CF911F911B +:102EF0000F91FF90EF90DF90CF90BF90AF909F9099 +:102F00008F907F906F905F904F903F902F9008959B +:102F1000CF92DF92FF920F931F93CF93DF9300D056 +:102F200000D0CDB7DEB78C01F62E19821A821B8233 +:102F30001C8220E0462F61E10E94BA1520E04F2D4F +:102F400060E1C8010E94BA1520E04F2D64E0C8017D +:102F50000E940E1683E0C82ED12C9E012F5F3F4F9A +:102F600044E050E06F2DC8010E94E5158823F1F080 +:102F700020E04F2D64E1C8010E94BA1520E04F2DDA +:102F800060E1C8010E94BA1564E170E080E090E061 +:102F90000E94950A0F900F900F900F90DF91CF91A4 +:102FA0001F910F91FF90DF90CF90089589819A81B2 +:102FB000AB81BC819D7F83309140A041B105C1F2BE +:102FC00064E670E080E090E00E94950A81E0C81A13 +:102FD000D10819F6CDCFFC0189E691E09183808379 +:102FE0007383628312861386148615861686178667 +:102FF000108A148288E085839CE3968391E097830E +:10300000808784E0818761157105B1F0DB01AA5AE0 +:10301000BF4F80E090E02D913D91232B49F48B969A +:10302000880F991FDB01A80FB91FED93FC9308953A +:1030300001968031910579F70895EF92FF920F93F1 +:103040001F93CF938C01C62F7A01FA018081918161 +:10305000A281B3818130F3E09F07F1E0AF07B105B2 +:10306000D1F060F48115E1E09E07AE07B10571F182 +:1030700081309140A140B10571F064C0833021E0FE +:10308000920720E1A207B105E1F183309340A0410E +:10309000B105B9F157C08091E902811153C020E018 +:1030A0004C2F61E1C8010E94BA1520E04C2F60E16D +:1030B000C8010E94BA1520E04C2F64E0C8010E94AC +:1030C0000E1681E08093E90281EB3DC020E0462F9F +:1030D00061E1C8010E94BA1520E04C2F60E1C801EF +:1030E0000E94BA151092E902F80162856770C770F4 +:1030F000660F660F660F6C2B828193810E94AF0C66 +:1031000021C020E04C2F64E1C8010E94BA1520E0E4 +:103110004C2F60E1C8010E94BA1564E170E080E0C4 +:1031200090E00E94950AF8016285F70121812695B9 +:10313000217067704C2FF801828193810E946E127A +:103140001092E90280E0CF911F910F91FF90EF90D4 +:103150000895EF92FF920F931F93CF93DF93CDB714 +:10316000DEB72E970FB6F894DEBF0FBECDBF7C0141 +:1031700081E090E09E878D878E010F5F1F4F9E013B +:10318000235F3F4F41E0F7016285828193810E9476 +:103190009513811151C002E011E089818023D1F0A3 +:1031A00019861A861B861C869E01275F3F4F44E0C6 +:1031B00050E0612FC7010E94E51581110BC0AE01DF +:1031C000475F5F4F612FC7010E941D18813B99F136 +:1031D000811132C0000F1F5F1830F9F611E0F701BE +:1031E0008385811740F119861A861B861C869E01ED +:1031F000275F3F4F44E050E0612FC7010E94E51573 +:10320000811117C089859A858770917081309140AE +:1032100081F48B859C8581609C878B87AE01475F9D +:103220005F4F612FC7010E941D18813B21F0811162 +:1032300003C01F5FD4CF80E02E960FB6F894DEBF98 +:103240000FBECDBFDF91CF911F910F91FF90EF90F7 +:1032500008950F931F93CF93DF93FC0120892111D1 +:1032600002C080E020C0EC010E94930A0C851D85FD +:103270002E853F85DC01CB01801B910BA20BB30B8C +:10328000B7FDEFCFCE010E94A918182F0E94930A14 +:10329000DC01CB018C599F4FAF4FBF4F8C879D876F +:1032A000AE87BF87812FDF91CF911F910F91089536 +:1032B000CF93DF93FC01EA0180819181892B19F57D +:1032C00080E027C028813981232BD1F3DB012D91A8 +:1032D0003C91D9019C91A381B0E0A81BB109208148 +:1032E0003181A20FB31F9C93828181508283888198 +:1032F0009981019799838883DB018D919C91119726 +:1033000001968D939C9382818111DCCF838182838E +:1033100081E0DF91CF910895CF92DF92EF92FF92FB +:103320000F931F93CF93DF936C01EB017B01E40EAE +:10333000F51E00E010E0CE15DF0561F06991D601C1 +:10334000ED91FC910190F081E02DC6010995080FE7 +:10335000191FF1CFC801DF91CF911F910F91FF90FD +:10336000EF90DF90CF9008958091F50208959FB778 +:10337000F8941092EC029FBF90917803943009F07A +:1033800057C09091E9009F703091EC00232F21707D +:1033900030FD20E8922B24E02093E9002091EB00FF +:1033A00020FF43C02091EE0027FF3FC02091EA029A +:1033B000222321F02091E80025FF37C01092EA0275 +:1033C00026E03091E80035FD15C0309178033430A7 +:1033D00061F53091EB0035FD28C0215021F481E0EA +:1033E0008093EA0222C0EFE9FFE03197F1F700C0D5 +:1033F0000000E7CF8093F1008091E80085FD0AC0CE +:103400008091E80080FFFCCF8091E8008E77809368 +:10341000E80006C08FB7F89421E02093EC028FBF3C +:103420009F709093E90080E008959F709093E90069 +:103430008FEF0895CF93DF9300D01F92CDB7DEB703 +:103440009C0180917803843019F593E099833B8344 +:103450002A839093E9008FEF9091E800815095FDC9 +:1034600006C095ED9A95F1F700008111F5CF809196 +:10347000E80085FF0DC040E050E063E070E0CE0161 +:1034800001960E945E1C8091E8008E778093E80090 +:103490000F900F900F90DF91CF910895CF93DF930E +:1034A00000D01F92CDB7DEB720917803243021F5EC +:1034B00022E029839B838A8383E08093E9008FEF56 +:1034C0009091E800815095FD06C095ED9A95F1F731 +:1034D00000008111F5CF8091E80085FF0DC040E02C +:1034E00050E063E070E0CE0101960E945E1C809186 +:1034F000E8008E778093E8000F900F900F90DF9197 +:10350000CF910895209178032430F1F422E02093A4 +:10351000E9002FEF3091E800215035FD06C035ED70 +:103520003A95F1F700002111F5CF2091E80025FF31 +:103530000BC040E050E065E070E00E945E1C8091AE +:10354000E8008E778093E8000895CF93DF93209171 +:103550007803243039F521E02093E9002FEF3091F2 +:10356000E800215035FD06C035ED3A95F1F7000031 +:103570002111F5CF2091E80025FF14C0EC0140E0B7 +:1035800050E068E070E00E945E1C8091E8008E7759 +:103590008093E80088E0FE01ADEEB2E001900D926C +:1035A0008A95E1F7DF91CF9108958AE692E00E9433 +:1035B000AF0280917703811109C00E94F31D0E9420 +:1035C000501E8091E20084608093E200089586E6B8 +:1035D00092E00E94AF0210927703089582E692E093 +:1035E0000C94AF022091EB022F5F822F62E30E94C6 +:1035F000EC30992319F02093EB0208951092EB021E +:103600008091EC02882371F180917803843041F538 +:103610008091E9008F702091EC00922F917020FD35 +:1036200090E8892B94E09093E9009091EB0090FF53 +:1036300014C09091EE0097FF10C09091E80095FFA4 +:1036400003C01092F100F9CF9091E80090FF05C0FF +:103650009091E8009E779093E8008F708093E90046 +:103660001092EC02089542E061EC81E00E946D1D31 +:1036700042E061EC82E00E946D1D42E061EC83E07B +:103680000E946D1D42E261EC84E00C946D1D8091FE +:103690007A03833009F453C030F4813071F0823002 +:1036A00009F48CC008958A3009F478C08B3009F48D +:1036B0005EC0893009F09AC020C080917903813AB8 +:1036C00009F094C08091E800877F8093E8008091A2 +:1036D0007D0390917E03892B21F468E08DEE92E0CA +:1036E00003C060E080E090E070E00E94A91C80913F +:1036F000E8008B778093E800089580917903813208 +:1037000009F074C080917D0390917E03892B09F0AC +:103710006DC08091E800877F8093E8008091E80089 +:1037200082FD05C0809178038111F8CF5FC0809140 +:10373000F1008093F5028091E8008B7753C080916F +:103740007903813A09F052C080917D0390917E0304 +:10375000892B09F04BC08091E800877F8093E800B7 +:103760008091E80080FFFCCF80910A0136C08091F3 +:1037700079038132D9F580917D0390917E03892B65 +:10378000A9F58091E800877F8093E8000E94A21D40 +:1037900080917B0380930A010C946C2680917903BD +:1037A000813221F58091E800877F8093E8000E94B4 +:1037B000A21D80917C038093F60208958091790385 +:1037C000813AA1F48091E800877F8093E80080919E +:1037D000E80080FFFCCF8091F6028093F100809199 +:1037E000E8008E778093E8000C94A21D0895089558 +:1037F0008EE592E00E94AF020C94F71B0C94772C9C +:103800008AE592E00E94AF020C94FE1B292F332719 +:1038100023303105C9F064F42130310581F02230C4 +:10382000310509F043C084E790E020EC32E042C06B +:1038300021323105F1F02232310541F137C082E108 +:1038400090E024E333E036C099278130910541F0C0 +:103850008230910541F0892B49F5ECEBF2E005C08F +:10386000ECEAF2E002C0EEE6F2E0849190E09F0123 +:1038700021C06430D8F4E62FF0E0EE0FFF1FE957C7 +:10388000FE4F2081318189E090E014C0643070F4F3 +:1038900070E0FB01EE0FFF1FE158FE4F20813181E8 +:1038A000FB01E558FE4F808190E004C080E090E08D +:1038B00020E030E0FA01318320830895CF92DF9237 +:1038C000EF92FF920F931F93CF93DF93EC018B0145 +:1038D0006A010E94C11D811133C0C114D10439F0A5 +:1038E000F60180819181081B190BC80FD91FE12CAB +:1038F000F12C0115110519F18091E80085FD16C024 +:103900008091E8008E778093E800C114D10449F0DB +:10391000F60180819181E80EF91EF182E08285E056 +:103920000FC00E94C11D882321F30AC08991809392 +:10393000F10001501109FFEFEF1AFF0ADACF80E022 +:10394000DF91CF911F910F91FF90EF90DF90CF907B +:10395000089520917F03309180032617370748F0A0 +:103960006115710539F42091E8002E772093E80065 +:1039700001C0B90140E061157105A9F120917803FA +:10398000222309F443C0253009F442C02091E80005 +:1039900023FD40C02091E80022FD32C02091E800C4 +:1039A00020FFE9CF4091F3002091F20030E0342B6A +:1039B000FC01CF016115710559F02830310540F443 +:1039C00081918093F100615071092F5F3F4FF1CFDA +:1039D00041E02830310509F040E02091E8002E77E1 +:1039E0002093E800C8CF4111C9CF0AC08091780365 +:1039F000882361F0853061F08091E80083FD0AC082 +:103A00008091E80082FFF2CF80E0089582E008957F +:103A100083E0089581E0089520917F033091800331 +:103A20002617370748F06115710539F42091E80031 +:103A30002E772093E80001C0B901FC0120E0611558 +:103A4000710591F180917803882309F440C0853095 +:103A500009F43FC08091E80083FD3DC08091E800FB +:103A600082FD2FC08091E80080FFE9CF2091F30014 +:103A70008091F20090E0922B6115710559F0883029 +:103A8000910540F424912093F10031966150710921 +:103A90000196F2CF21E0089709F020E08091E8003C +:103AA0008E778093E800CBCF2111CCCF0AC08091D4 +:103AB0007803882361F0853061F08091E80083FD10 +:103AC0000AC08091E80082FFF2CF80E0089582E092 +:103AD000089583E0089581E00895982F973058F570 +:103AE0009093E900981739F07091EC002091ED0067 +:103AF0005091F00003C0242F762F50E021FF19C011 +:103B00003091EB003E7F3093EB003091ED003D7F34 +:103B10003093ED003091EB0031603093EB00709307 +:103B2000EC002093ED005093F0002091EE0027FF71 +:103B300007C09F5FD3CF8F708093E90081E0089525 +:103B400080E008958091790387FF11C08091E8009B +:103B500082FD05C0809178038111F8CF11C080915A +:103B6000E8008B770BC080917803882349F080911F +:103B7000E80080FFF8CF8091E8008E778093E8001E +:103B800008952091E4003091E50095E64091EC0025 +:103B9000842F817040FF22C08091E80080FD1CC00E +:103BA00080917803882391F0853091F08091EB002B +:103BB00085FD10C04091E4005091E5004217530785 +:103BC00029F39A01915011F784E0089582E0089555 +:103BD00083E0089581E0089580E008954091E80031 +:103BE00042FFDECF08950E94611E0E94691EE0EE32 +:103BF000F0E0808181608083E8EDF0E080818F7764 +:103C0000808319BCA7EDB0E08C918E7F8C9380816E +:103C10008F7E80831092770308950F931F93CF9325 +:103C2000DF930E94611E0E94691EC8EDD0E088816A +:103C30008F77888388818068888388818F7D888357 +:103C400019BC1092780310927403109276031092AC +:103C5000750300EE10E0F80180818B7F80838881FE +:103C60008160888342E060E080E00E946D1DE1EEAB +:103C7000F0E080818E7F8083E2EEF0E080818160E1 +:103C80008083808188608083F80180818E7F80833B +:103C9000888180618883DF91CF911F910F91089572 +:103CA000E8EDF0E080818F7E8083E7EDF0E08081B9 +:103CB0008160808384E082BF81E0809377030C94ED +:103CC0000D1EE8EDF0E080818E7F80831092E2008F +:103CD00008951092DA001092E10008951F920F9259 +:103CE0000FB60F9211242F933F934F935F936F93CF +:103CF0007F938F939F93AF93BF93EF93FF938091A5 +:103D0000E10082FF0BC08091E20082FF07C080913A +:103D1000E1008B7F8093E1000E94F21A8091DA002B +:103D200080FF1FC08091D80080FF1BC08091DA0007 +:103D30008E7F8093DA008091D90080FF0DC080E1F2 +:103D400089BD82E189BD09B400FEFDCF81E0809389 +:103D500078030E94D51A05C019BC109278030E94FE +:103D6000E71A8091E10080FF19C08091E20080FF96 +:103D700015C08091E2008E7F8093E2008091E20086 +:103D800080618093E2008091D80080628093D800A7 +:103D900019BC85E0809378030E94F81B8091E100B4 +:103DA00084FF30C08091E20084FF2CC080E189BD97 +:103DB00082E189BD09B400FEFDCF8091D8008F7DDE +:103DC0008093D8008091E1008F7E8093E100809104 +:103DD000E2008F7E8093E2008091E2008160809318 +:103DE000E20080917403882311F084E007C0809181 +:103DF000E30087FD02C081E001C083E08093780387 +:103E00000E94001C8091E10083FF29C08091E200A4 +:103E100083FF25C08091E100877F8093E10082E0ED +:103E200080937803109274038091E1008E7F8093D9 +:103E3000E1008091E2008E7F8093E2008091E200B9 +:103E400080618093E20042E060E080E00E946D1DAE +:103E50008091F00088608093F0000E94EE1AFF913C +:103E6000EF91BF91AF919F918F917F916F915F91F2 +:103E70004F913F912F910F900FBE0F901F9018956B +:103E80001F920F920FB60F9211242F933F934F93CF +:103E90005F936F937F938F939F93AF93BF93CF93D2 +:103EA000DF93EF93FF93C091E900CF708091EC0016 +:103EB000D82FD17080FDD0E81092E9008091F000F9 +:103EC000877F8093F00078940E94841F1092E9000D +:103ED0008091F00088608093F000CD2BCF70C0936C +:103EE000E900FF91EF91DF91CF91BF91AF919F9149 +:103EF0008F917F916F915F914F913F912F910F9093 +:103F00000FBE0F901F9018951F93CF93DF93CDB7DF +:103F1000DEB7AA970FB6F894DEBF0FBECDBFE9E7B4 +:103F2000F3E088E08E0F9091F10091938E13FBCF18 +:103F30000E94471B8091E80083FF1FC18091790395 +:103F400090917A03492F50E04A30510508F015C18D +:103F5000FA01EA5AFF4F0C940C31803881F0823814 +:103F600009F00BC180917D038F708093E9008091EF +:103F7000EB0085FB882780F91092E90006C080914C +:103F8000750390917603911182609091E800977F7C +:103F90009093E8008093F1001092F100C8C0282FA0 +:103FA0002D7F09F0EAC0882319F0823061F0E5C066 +:103FB00080917B03813009F0E0C0933009F080E00C +:103FC000809376032BC080917B03811127C0809161 +:103FD0007D038F7009F4D1C08093E9002091EB003C +:103FE00020FF1CC0933021F48091EB00806214C04C +:103FF0009091EB0090619093EB0021E030E0A901FB +:1040000002C0440F551F8A95E2F74093EA001092D0 +:10401000EA008091EB0088608093EB001092E90049 +:104020008091E800877F86C08111A7C010917B0333 +:104030001F778091E3008078812B8093E30080914B +:10404000E800877F8093E8000E94A21D8091E8002D +:1040500080FFFCCF8091E30080688093E300111122 +:1040600002C082E001C083E08093780386C080585C +:10407000823008F082C080917B0390917C038C3D5C +:1040800053E0950779F583E08A838AE289834FB705 +:10409000F894DE01139620E03EE051E2E32FF0E0D9 +:1040A00050935700E49120FF03C0E295EF703F5F0B +:1040B000EF708E2F90E0EA3010F0C79601C0C096E6 +:1040C0008D939D932F5F243149F74FBF8091E80076 +:1040D000877F8093E8006AE270E0CE0101960E943B +:1040E000A91C14C0AE014F5F5F4F60917D030E9419 +:1040F000061CBC01892B09F440C09091E800977F11 +:104100009093E80089819A810E940C1D8091E800BB +:104110008B778093E80031C0803879F58091E80092 +:10412000877F8093E800809174038093F1008091F1 +:10413000E8008E778093E8000E94A21D1EC08111C6 +:104140001CC090917B039230C0F48091E800877F7F +:104150008093E800909374030E94A21D80917403E1 +:10416000811106C08091E30087FD02C081E001C09B +:1041700084E0809378030E94331B8091E80083FFE2 +:104180000AC08091E800877F8093E8008091EB006F +:1041900080628093EB00AA960FB6F894DEBF0FBE44 +:1041A000CDBFDF91CF911F9108959093FC02809332 +:1041B000FB020895E091FB02F091FC02309721F0A0 +:1041C0000190F081E02D099480E00895EF92FF9234 +:1041D0000F931F93CF93DF93E091FB02F091FC02CA +:1041E0003097B1F18C010280F381E02D0995809127 +:1041F000690382FF2DC080FF04C083E394E00E9426 +:10420000AF02E80118E08DE2E82E84E0F82E8091FC +:10421000690380FF0BC088811F928F93FF92EF92FA +:104220000E9448030F900F900F900F90115021960D +:104230001111EDCF8091690380FF0AC08BE294E0F9 +:10424000DF91CF911F910F91FF90EF900C94AF02EF +:10425000DF91CF911F910F91FF90EF900895E09122 +:10426000FB02F091FC02309721F00480F581E02DF3 +:10427000099408952091F9023091FA028217930768 +:1042800071F09093FA028093F902E091FB02F091B1 +:10429000FC02309721F00680F781E02D0994089503 +:1042A0002091F7023091F8028217930771F09093F2 +:1042B000F8028093F702E091FB02F091FC02309744 +:1042C00021F00084F185E02D099408950E94E30A0D +:1042D0000C945E084F925F927F928F929F92AF9262 +:1042E000BF92CF92DF92EF92FF920F931F93CF93E3 +:1042F000DF9300D000D01F92CDB7DEB70E94FA0541 +:104300009EEFC92E92E0D92E00E010E0AA24A394DB +:10431000B12C702E802F0E94ED064C01F6014190C9 +:1043200051906F014826592641145104B1F40F5F92 +:104330001F4F0031110569F78FEF89838A831B8234 +:104340000E94EC0A8160782F9D838C8349815A8179 +:104350006B818D810E943D2241C08091690381FD66 +:104360000E941D0720E030E07501022E02C0EE0C15 +:10437000FF1C0A94E2F7C70184219521892B41F1A2 +:1043800029837A828E209F2091E0892809F490E089 +:104390009B830E94EC0A8160782F9D838C834981E6 +:1043A0005A816B818D810E943D2249815A816B81A6 +:1043B0007C818D810E94642C000F111FF801E25056 +:1043C000FD4F80819181E826F926F182E08206C0C6 +:1043D0002F5F3F4F2031310539F6A9CF0E94632C62 +:1043E0000E94DC2E1091FD020E94DA20181771F154 +:1043F0000E94DA208093FD029091690392FF0EC023 +:1044000090FF0CC01F928F9385E494E09F938F934D +:104410000E9448030F900F900F900F908091FD0223 +:104420000F900F900F900F900F90DF91CF911F91F1 +:104430000F91FF90EF90DF90CF90BF90AF909F9043 +:104440008F907F905F904F900C94752C0F900F90F1 +:104450000F900F900F90DF91CF911F910F91FF90D0 +:10446000EF90DF90CF90BF90AF909F908F907F9014 +:104470005F904F9008950C945707CF93DF93CDB77B +:10448000DEB72B970FB6F894DEBF0FBECDBF942FCB +:104490004F83252F588769877A878B874A855B8565 +:1044A000452B21F02F3F09F59F3FF9F4DE011196CE +:1044B00086E0FD0111928A95E9F785E0FE013796C5 +:1044C00001900D928A95E1F749815A816B817C8137 +:1044D0008D819E810E9406292B960FB6F894DEBF2F +:1044E0000FBECDBFDF91CF9108954F81588569856B +:1044F0007A858B850E94642CD9CF882309F49BC0D0 +:104500009CEF980F913A18F40E948F2B0DC090E207 +:10451000980F983058F4877091E001C0990F8A95F0 +:10452000EAF7892F0E94CE2B0C94082C9BE5980F5C +:10453000933070F4853A29F0863A31F083E890E0C0 +:1045400005C081E890E002C082E890E00C943A2136 +:1045500098E5980F953108F06EC0883A61F1893A74 +:1045600069F18A3A71F18B3A79F18C3A81F18D3A9D +:1045700089F18E3A91F18F3A99F1813BA1F1803B1B +:10458000A9F1823BB1F1833BB9F1843BC1F1853B99 +:10459000C9F1863BD1F1873BD9F1883BE1F1893BF9 +:1045A000E9F18A3BF1F18B3BF9F18C3B09F43FC017 +:1045B00080E090E03EC082EE90E03BC089EE90E06B +:1045C00038C08AEE90E035C085EB90E032C086EBD3 +:1045D00090E02FC083EB90E02CC084EB90E029C0EA +:1045E00087EB90E026C08CEC90E023C08DEC90E04F +:1045F00020C083E891E01DC08AE891E01AC082E9FA +:1046000091E017C084E991E014C081E292E011C00A +:1046100083E292E00EC084E292E00BC085E292E079 +:1046200008C086E292E005C087E292E002C08AE21A +:1046300092E00C9450210895882329F19CEF980F63 +:10464000913A18F40E94AC2B0DC090E2980F98306C +:1046500058F4877091E001C0990F8A95EAF7892F85 +:104660000E94D42B0C94082C9BE5980F933020F4D7 +:1046700080E090E00C943A21885A853120F480E063 +:1046800090E00C9450210895882321F00E94CE2BB5 +:104690000C94082C0895882321F00E94D42B0C94AC +:1046A000082C0895CF92DF92EF92FF920F931F9301 +:1046B000CF93DF9300D000D000D0CDB7DEB725E098 +:1046C000FC01DE01119601900D922A95E1F7FC01A3 +:1046D00040813181F280258122952F706381748120 +:1046E000672B09F4D8C23F3F19F44F3F09F4D3C2F6 +:1046F0006C0149833A8389819A812E830E944E2BD3 +:10470000182F092F0E944D2B0E945F2AE02FE2955F +:10471000EF70F0E0E05AFF4F2E810C940C31802FA7 +:10472000807F902F9F70092F882311F00295007FC2 +:10473000FF2049F0002309F45FC2802F0E94E12B83 +:104740000E94082C59C2812F0E941C23002309F4C7 +:10475000A2C2802F0E94E72B26960FB6F894DEBFE8 +:104760000FBECDBFDF91CF911F910F91FF90EF90C2 +:10477000DF90CF900C94082C802F807F902F9F701B +:10478000092F803211F00295007F112319F01130AA +:1047900001F129C0FF20A9F0802F222349F1213007 +:1047A00039F526960FB6F894DEBF0FBECDBFDF9168 +:1047B000CF911F910F91FF90EF90DF90CF900C94CD +:1047C000F12B222319F0213009F465C20E94F42B49 +:1047D0002CC0FF20E9F0263008F05DC20E94CB2BF0 +:1047E000802329F022C0FF20F1F0211115C0802F75 +:1047F00026960FB6F894DEBF0FBECDBFDF91CF91E6 +:104800001F910F91FF90EF90DF90CF900C94442375 +:10481000253008F040C209C0F601858180FFECC157 +:104820008F708583E4CF2111FBC1802F69C1202FB8 +:1048300026952695237030E02115310521F0213091 +:104840003105C9F028C2FF2021F0812F902F9370ED +:1048500002C080E090E026960FB6F894DEBF0FBE4F +:10486000CDBFDF91CF911F910F91FF90EF90DF901F +:10487000CF900C943A21FF2021F0812F902F93703C +:1048800002C080E090E026960FB6F894DEBF0FBE1F +:10489000CDBFDF91CF911F910F91FF90EF90DF90EF +:1048A000CF900C945021812FFF2019F00E94622D8F +:1048B00002C00E94CA2D26960FB6F894DEBF0FBE26 +:1048C000CDBFDF91CF911F910F91FF90EF90DF90BF +:1048D000CF900C944F2E802F837009F078C0F11088 +:1048E000DAC1812F829586958770880F880F912F66 +:1048F0009F70C92ED12CE12CF12C082E04C0CC0CB9 +:10490000DD1CEE1CFF1C0A94D2F714FF12C04FE00E +:1049100050E060E070E004C0440F551F661F771F31 +:104920008A95D2F7CB01BA016095709580959095E4 +:1049300003C060E070E0CB01202F26952695237000 +:10494000422F50E042305105D1F04330510559F12A +:104950006C297D298E299F294130510541F12696E8 +:104960000FB6F894DEBF0FBECDBFDF91CF911F9180 +:104970000F91FF90EF90DF90CF900C94722A6C29EA +:104980007D298E299F2926960FB6F894DEBF0FBE8B +:10499000CDBFDF91CF911F910F91FF90EF90DF90EE +:1049A000CF900C94842A0E94722AC701B6012696E1 +:1049B0000FB6F894DEBF0FBECDBFDF91CF911F9130 +:1049C0000F91FF90EF90DF90CF900C94602AFF2022 +:1049D00019F0802F817001C08695882309F45BC18E +:1049E000812F829586958770880F880F912F9F70F1 +:1049F000C92ED12CE12CF12C082E04C0CC0CDD1CCE +:104A0000EE1CFF1C0A94D2F714FF12C04FE050E0D6 +:104A100060E070E004C0440F551F661F771F8A9541 +:104A2000D2F7CB01BA01609570958095909503C03F +:104A300060E070E0CB01202F269526952370422F51 +:104A400050E042305105D1F04330510559F16C2905 +:104A50007D298E299F294130510541F126960FB6B7 +:104A6000F894DEBF0FBECDBFDF91CF911F910F91A4 +:104A7000FF90EF90DF90CF900C94292B6C297D292B +:104A80008E299F2926960FB6F894DEBF0FBECDBFA4 +:104A9000DF91CF911F910F91FF90EF90DF90CF901A +:104AA0000C943B2B0E94292BC701B60126960FB60A +:104AB000F894DEBF0FBECDBFDF91CF911F910F9154 +:104AC000FF90EF90DF90CF900C94172B103F41F1A7 +:104AD00018F4103E48F48BC0123F09F450C0D8F1CE +:104AE000133F09F460C083C01F70802F8F71FF20B7 +:104AF00021F00E94B02A812F7BCE0E94D12A812FE3 +:104B000026960FB6F894DEBF0FBECDBFDF91CF91D2 +:104B10001F910F91FF90EF90DF90CF900C944B235B +:104B2000FF20A9F0253008F0B6C0802F8F7126969F +:104B30000FB6F894DEBF0FBECDBFDF91CF911F91AE +:104B40000F91FF90EF90DF90CF900C94F62A2630D3 +:104B500008F0A1C0EACFFF20A1F0802F8F71269628 +:104B60000FB6F894DEBF0FBECDBFDF91CF911F917E +:104B70000F91FF90EF90DF90CF900C94B02AFF2020 +:104B800061F3802F8F7126960FB6F894DEBF0FBEAB +:104B9000CDBFDF91CF911F910F91FF90EF90DF90EC +:104BA000CF900C94D12AFF2091F0802F8F71269600 +:104BB0000FB6F894DEBF0FBECDBFDF91CF911F912E +:104BC0000F91FF90EF90DF90CF900C949B2A269648 +:104BD0000FB6F894DEBF0FBECDBFDF91CF911F910E +:104BE0000F91FF90EF90DF90CF900C94962AFF20CA +:104BF000A1F0222309F4B1CF812F26960FB6F894A5 +:104C0000DEBF0FBECDBFDF91CF911F910F91FF90FF +:104C1000EF90DF90CF900C947D22222309F4B1CF46 +:104C2000812F26960FB6F894DEBF0FBECDBFDF9161 +:104C3000CF911F910F91FF90EF90DF90CF900C9448 +:104C40001C23402F4F70612FC6010E94DC2C26963A +:104C50000FB6F894DEBF0FBECDBFDF91CF911F918D +:104C60000F91FF90EF90DF90CF900C94AA29402FE6 +:104C70004F70612FC60126960FB6F894DEBF0FBEA7 +:104C8000CDBFDF91CF911F910F91FF90EF90DF90FB +:104C9000CF900C94DF2C26960FB6F894DEBF0FBE93 +:104CA000CDBFDF91CF911F910F91FF90EF90DF90DB +:104CB000CF9008950E94EE2B0E94BD2B0E94082CDD +:104CC0000E94812F0E944F2E80E090E00E943A21A6 +:104CD00080E090E00C9450210E94DE2B0C945A2628 +:104CE0000E944E2B292F22952F7030E02C30310559 +:104CF0004CF42A3031056CF4225031092230310550 +:104D000088F407C02C30310549F02F30310531F0DF +:104D100009C0803E48F0803F29F406C093FB8827F5 +:104D200080F9089580E0089581E00895CF93DF939E +:104D300000D000D01F92CDB7DEB70F900F900F902C +:104D40000F900F90DF91CF910895CF93DF9300D014 +:104D500000D000D0CDB7DEB726960FB6F894DEBFF0 +:104D60000FBECDBFDF91CF9108951F93CF93DF93F7 +:104D7000C0911E0316E080911F03C81799F0D0E080 +:104D80001C9FF0011D9FF00D1124E05EFC4F40813F +:104D9000518162817381848195810E94A52621962B +:104DA000C770E9CFDF91CF911F91089540915003D3 +:104DB00050915103609152037091530380915403B9 +:104DC000909155030C94A5268091550382958F7080 +:104DD00009F054C080915203882309F44FC0809198 +:104DE0001E03A0911F0360915003709151034091E5 +:104DF000530350915403B6E08A1709F43FC090E082 +:104E000041155105C1F17F3F11F46F3FA1F1B89FEA +:104E1000F001B99FF00D1124E05EFC4F2181721367 +:104E20002AC02081621327C02281211124C023813E +:104E300034812417350710F421503109241B350B18 +:104E4000283C3105C0F4209155032F702061209338 +:104E5000550326E0289FF001299FF00D1124EB5DFA +:104E6000FC4F80818F708061808380E593E00E9499 +:104E700052230C94B52601968770BECF0895CF9229 +:104E8000DF92EF92FF920F931F93CF93DF93CDB7F3 +:104E9000DEB762970FB6F894DEBF0FBECDBF8C01B0 +:104EA00085E0F801DE011D9601900D928A95E1F7EB +:104EB000D8014C9111965C91119712966C911297B2 +:104EC0001396CD90DC90149730915003709151035C +:104ED0008091530390915403009709F46BC17F3F75 +:104EE00019F43F3F09F466C1E0905203EE2009F443 +:104EF000C0C020915503C816D90628F0F601E81B5A +:104F0000F90BCF0104C0809590958C0D9D1DFF2459 +:104F1000F394883C910578F0F12C207F09F0C6C00D +:104F20007C2DD98AC88A89890E94962680E593E0DB +:104F30000E945223B1C0822F807F09F046C07513B2 +:104F400014C0341312C0611110C02F70206120935F +:104F500055030E94D62680E593E00E94522380915B +:104F60005503D80115968C932EC0CD2819F15F3FBB +:104F700011F44F3FF9F0F62E61111CC080911E0311 +:104F800020911F0336E0821709F45AC090E0389F41 +:104F9000F001399FF00D1124E05EFC4F7181571331 +:104FA00006C07081471303C07281711103C001965E +:104FB0008770E9CFF62E662309F418C18091550356 +:104FC000816080935503F12C11C1751308C034130F +:104FD00006C0611104C080915503D801C3C04D873C +:104FE0005E878D859E856A8B0E9470266A898823DC +:104FF000E1F16623D1F120915503822F82958F70C4 +:1050000090E0029774F0809150039091510398873B +:105010008F831986DB86CA862C87CE0107960E946D +:10502000522386E0F801A0E5B3E001900D928A9545 +:10503000E1F70E94E4260E94D626FF24F394D6C00E +:105040004D875E878D859E850E944E2B292F229548 +:105050002F7030E0223031050CF0BCC09F7009F099 +:10506000B6C0805E883008F4C1C0C8010E945223D7 +:10507000E4CFC816D90608F453C0F601E81BF90BB3 +:10508000CF01883C910508F450C0F12C7C2DD98AC1 +:10509000C88A89890E949626E0E5F3E086E0DF0170 +:1050A0001D928A95E9F70E94D626A0C0751314C0F8 +:1050B000341312C0611110C080915503F80185832B +:1050C000C8010E94522386E0E0E5F3E0DF011D9273 +:1050D0008A95E9F7FE2C8AC04D875E878D859E856F +:1050E0006A8B0E9470266A89882309F4BECF6623E2 +:1050F00009F4BBCF20915503822F82958F7090E0E9 +:1051000002970CF48ECF80915003909151039A83B3 +:1051100089831B82DD82CC822E83CE0101967FCFD4 +:10512000809590958C0D9D1DACCFF62E662309F4CD +:105130009CCF75132EC034132CC02091550320FD35 +:105140001FC0822F82958F70D9F0D80115962C93AD +:1051500015978F3049F08F5F982F9295907F822F0F +:105160008F70892B15968C93C8010E94522386E07C +:10517000F801A0E5B3E001900D928A95E1F793CF95 +:1051800086E0F801A0E5B3E001900D928A95E1F781 +:105190002DC04D875E878D859E850E94702681116A +:1051A00040CF80915503816080935503C8010E94D0 +:1051B00052231CC0662309F458CF4D875E878D8526 +:1051C0009E850E947026882309F44FCF2ACF811133 +:1051D00048CF0CC0243031050CF047CF9F7009F444 +:1051E00040CFF8019581907F09F03BCF8F2D6296DB +:1051F0000FB6F894DEBF0FBECDBFDF91CF911F91E8 +:105200000F91FF90EF90DF90CF9008951F93CF9371 +:10521000DF93CDB7DEB72C970FB6F894DEBF0FBE85 +:10522000CDBF4F83588769877A878B879C87CE014C +:1052300007960E943F27882369F08F8198852A85E9 +:105240003B85232BF1F19F3F09F063C08F3F09F0AD +:1052500060C037C086E0FE013796DE0111960190EE +:105260000D928A95E1F76F817885EA85FB85309705 +:1052700041F17F3F11F46F3F21F120911F0330E096 +:10528000C90101968770992740911E0350E0841749 +:10529000950709F447C069837A83FD83EC8396E020 +:1052A000929FD001939FB00D1124A05EBC4FFE01D0 +:1052B000319601900D929A95E1F780931F030E9419 +:1052C000B52616E080911E0390911F038917C1F146 +:1052D000189FC0011124805E9C4F0E943F278823A5 +:1052E00079F1E0911E031E9FF0011124E05EFC4F56 +:1052F0004081518162817381848195810E94A526BC +:1053000080911E0390E001968770992780931E0379 +:10531000D9CF4F81588569857A858B859C850E9478 +:10532000A526CFCF0E946C2610921F0310921E0359 +:10533000E0E5F3E086E0DF011D928A95E9F7C1CF51 +:105340002C960FB6F894DEBF0FBECDBFDF91CF9184 +:105350001F910895DF92EF92FF920F931F93CF93C7 +:10536000DF93FC01892B09F48AC0E12CF12CDD24A8 +:10537000D394EF0121968491853709F461C058F4E4 +:10538000843708F04EC0843008F06AC08130D1F014 +:10539000823071F174C0883709F45DC050F48637EB +:1053A00009F455C0873709F06AC08E2D0E94DB2BA7 +:1053B00054C09CE7980F903708F061C08F770E9427 +:1053C0001C2350C08F010E5F1F4FFE01849190E29D +:1053D000980F983050F48770FD2D01C0FF0F8A950B +:1053E000EAF78F2F0E94E12B14C00E947D2213C088 +:1053F0008F010E5F1F4FFE01C49180E28C0F883039 +:1054000060F4C7708D2D01C0880FCA95EAF70E941D +:10541000E72B0E94082CE80125C08C2F0E941C233A +:10542000FACF9F012E5F3F4FFE01C491CC2369F05C +:105430008FE99FE00197F1F700C00000C150F6CF5F +:105440009F012E5F3F4FFE01F490E9010BC00E94C7 +:10545000CB2BE82E07C00E94DE2B0E94082C02C036 +:105460000E947D228F2D882341F0EFE9FFE03197E4 +:10547000F1F700C000008150F6CFFE017ACFDF9136 +:10548000CF911F910F91FF90EF90DF90089560935F +:105490005A0370935B0380935C0390935D030E94B7 +:1054A000732C0C945A266093560370935703809381 +:1054B0005803909359030E94742C0C945A26089513 +:1054C0000F931F9300915A0310915B0320915C038B +:1054D00030915D03602B712B822B932B1F910F91C9 +:1054E0000C94472A0F931F9300915A0310915B036A +:1054F00020915C0330915D03602371238223932309 +:105500001F910F910C94472A0F931F9300915A03F8 +:1055100010915B0320915C0330915D03602771273C +:10552000822793271F910F910C94472A60E070E027 +:10553000CB010C94532A0F931F9341E050E060E09D +:1055400070E08A019B0104C0000F111F221F331F4E +:105550008A95D2F7C901B8011F910F910C94532A73 +:105560000F931F9341E050E060E070E004C0440FEF +:10557000551F661F771F8A95D2F780915603909129 +:105580005703A0915803B09159038A019B01082B3E +:10559000192B2A2B3B2BC901B8011F910F910C9499 +:1055A000532A0F931F9341E050E060E070E004C085 +:1055B000440F551F661F771F8A95D2F74095509567 +:1055C000609570958091560390915703A091580370 +:1055D000B09159038A019B01082319232A233B23F5 +:1055E000C901B8011F910F910C94532A0F931F9377 +:1055F00041E050E060E070E004C0440F551F661FBA +:10560000771F8A95D2F78091560390915703A09106 +:105610005803B09159038A019B01082719272A27AB +:105620003B27C901B8011F910F910C94532A0F9386 +:105630001F93009156031091570320915803309106 +:105640005903602B712B822B932B1F910F910C947C +:10565000532A0F931F9300915603109157032091E3 +:1056600058033091590360237123822393231F91A0 +:105670000F910C94532A0F931F930091560310918E +:1056800057032091580330915903602771278227CF +:1056900093271F910F910C94532A0895CF92DF9274 +:1056A000EF92FF920F931F93CF93DF938C01C090E3 +:1056B0005A03D0905B03E0905C03F0905D0340914F +:1056C0005603509157036091580370915903C42AAF +:1056D000D52AE62AF72ACFE1D0E0D701C6010C2E61 +:1056E00004C0B695A795979587950A94D2F780FF41 +:1056F00007C0B8018C2F0E94B12C8130910531F484 +:10570000219758F7B80180E00E94B12CDF91CF912A +:105710001F910F91FF90EF90DF90CF90089520910F +:105720000B0130910C01F90132969FEF40E051914D +:10573000581789F09F3F19F4511101C0942F4F5F02 +:105740004630A9F79F3F39F0F901E90FF11D97FDA8 +:10575000FA9582830895089520910B0130910C01F0 +:10576000F9013296285F3F4F9081981301C0108253 +:105770003196E217F307C1F7089581E090E0E091D8 +:105780000B01F0910C01E80FF91F1082019688308F +:105790009105A9F708958091680308959091680391 +:1057A000892B8093680308958095909168038923DD +:1057B00080936803089580936803089510926803A6 +:1057C000089590916703892B8093670308958095CE +:1057D000909167038923809367030895109267036C +:1057E000089580935E03089510925E03089580915A +:1057F0000B0190910C01FC0131969C01285F3F4FF9 +:1058000080E0919191118F5FE217F307D1F708952E +:10581000E0910B01F0910C01809168038083E0918D +:105820000B01F0910C01908180916703892B80839B +:1058300080915E03882361F0E0910B01F0910C01EF +:105840009081892B80830E94F72B811110925E0337 +:1058500080910B0190910C010C94E62090939101A2 +:105860008093900108958295982F9C7C392F3695CE +:105870003695282F237344E0249FC0011124932FD1 +:10588000982B292F2A7A2695892F8575880F822BA8 +:1058900008951F93CF93DF931F92CDB7DEB79983FF +:1058A0000E94332C182F9981892F0E94332C212F8D +:1058B00030E0322F2227A901482BCA010F90DF9137 +:1058C000CF911F9108950895CF93DF9300D000D01A +:1058D0001F92CDB7DEB70F900F900F900F900F90E3 +:1058E000DF91CF910895089508950C943B220C9474 +:1058F0006C261F920F920FB60F9211248F939F93D5 +:10590000AF93BF9380916A03811113C08091DF022E +:105910009091E002A091E102B091E2024196A11DB6 +:10592000B11D8093DF029093E002A093E102B09357 +:10593000E202BF91AF919F918F910F900FBE0F9098 +:105940001F90189520E1929FF0011124E80FF11D9E +:10595000E052FF4F8491982F90778F7092959F70AF +:105960000895CF93C82FCB010E94A22C292F30E09D +:10597000E82FF0E0A90164E0440F551F6A95E1F7B4 +:105980004E2B5F2B4038510519F480E090E012C097 +:1059900088E0C89F200D311D112484E0220F331FA1 +:1059A0008A95E1F7E20FF31FEE0FFF1FE050F84971 +:1059B00085919491CF91089580E090E008950895A5 +:1059C00080916D0380FF0BC06091100185E0689F9E +:1059D000B001112475956795759567952BC081FF6A +:1059E00009C06091100185E0689FB0011124759590 +:1059F000679520C082FF07C06091100185E0689F15 +:105A0000B001112417C090916E039923D1F06091D9 +:105A10000F01961788F72091100185E0289F9001CB +:105A20001124929FA001939F500D112470E0CA0190 +:105A30000E94F8306038710540F46115710539F045 +:105A400002C065E070E0862F08958FE7089581E039 +:105A5000089580916D0380FF08C060910E0170E091 +:105A6000759567957595679521C081FF06C0609112 +:105A70000E0170E07595679519C082FF04C06091B2 +:105A80000E0170E010C090916E039923C1F06091F7 +:105A90000D019617A0F780910E01899FC001112476 +:105AA00070E00E94F8306038710528F461157105C6 +:105AB00021F0862F08958FE7089581E0089561E031 +:105AC00070E0F4CF803F21F40E94E02C819504C067 +:105AD000813F29F40E94E02C809371030895823F56 +:105AE00021F40E94E02C819504C0833F29F40E9498 +:105AF000E02C809370030895893F19F40E94292DAA +:105B000005C08A3F31F40E94292D8195809372034C +:105B100008958B3F21F40E94292D819504C08C3F6C +:105B200029F40E94292D809373030895843F21F462 +:105B300080916F03816017C0853F21F480916F03CE +:105B4000826011C0863F21F480916F0384600BC096 +:105B5000873F21F480916F03886005C0883F31F44E +:105B600080916F03806180936F0308958D3F21F4CE +:105B700080916D0381600BC08E3F21F480916D0395 +:105B8000826005C08F3F29F480916D03846080930B +:105B90006D030895803F39F48091710387FF6CC0D5 +:105BA0001092710369C0813F29F480917103181626 +:105BB000BCF362C090917003823F29F497FF5CC0F0 +:105BC0001092700359C0833F19F41916CCF354C0D6 +:105BD000893F41F48091720318160CF04DC0109269 +:105BE00072034AC08A3F29F48091720387FF44C040 +:105BF000F6CF8B3F39F48091730387FF3DC010923D +:105C000073033AC08C3F29F4809173031816BCF3D8 +:105C100033C0843F21F480916F038E7F17C0853F8E +:105C200021F480916F038D7F11C0863F21F4809114 +:105C30006F038B7F0BC0873F21F480916F03877FB9 +:105C400005C0883F31F480916F038F7E80936F038E +:105C500013C08D3F21F480916D038E7F0BC08E3F6A +:105C600021F480916D038D7F05C08F3F29F48091D1 +:105C70006D038B7F80936D038091700381110EC043 +:105C80008091710381110AC080917203811106C055 +:105C900080917303811102C010926E030895809168 +:105CA000690383FF7EC087E794E00E94AF02809182 +:105CB0006F031F928F9382E794E09F938F930E94CC +:105CC000480380E794E00E94AF0280917003282F80 +:105CD000082E000C330B3F938F938DE694E09F9337 +:105CE0008F930E9448038BE694E00E94AF0280915C +:105CF0007103282F082E000C330B3F938F9388E6F7 +:105D000094E09F938F930E94480386E694E00E945C +:105D1000AF0280917203282F082E000C330B3F93A3 +:105D20008F9383E694E09F938F930E94480381E6CC +:105D300094E00E94AF0280917303282F082E000C7C +:105D4000330B3F938F938EE594E09F938F930E9444 +:105D500048038BE594E00E94AF0280916E031F928E +:105D60008F9388E594E09F938F930E94480386E584 +:105D700094E00E94AF0280916D031F928F9383E5A0 +:105D800094E09F938F930E94480380E594E00E94E3 +:105D9000AF028DB79EB74C960FB6F8949EBF0FBE5C +:105DA0008DBF8FE693E00E942F210E94EC0A909312 +:105DB0006C0380936B0308951F93CF93DF938091BF +:105DC0006B0390916C030E94040BAC0190916E03E5 +:105DD000992321F02091110130E006C02091120199 +:105DE0008AE0289F900111244217530708F485C0C8 +:105DF00080917003C0917103D0917203109173036D +:105E0000811107C0C11175C0D11173C0111171C0CA +:105E100074C09F3F19F09F5F90936E03181624F48F +:105E20000E94E02C809370038091700387FF05C06F +:105E30000E94E02C8195809370031C1624F40E942C +:105E4000E02C809371038091710387FF05C00E944D +:105E5000E02C81958093710360917003662331F18A +:105E6000C0917103CC2311F1062E000C770B880B27 +:105E7000990B0E94CA2F23E333E343E35FE30E94BD +:105E80007F300E94922F609370036C2FCC0F770BA2 +:105E9000880B990B0E94CA2F23E333E343E35FE3AC +:105EA0000E947F300E94922F609371031D1624F48C +:105EB0000E94292D809372038091720387FF05C091 +:105EC0000E94292D819580937203111624F40E945B +:105ED000292D809373038091730387FF05C00E946F +:105EE000292D819580937303DF91CF911F910C949D +:105EF0004F2E9F3F09F08FCF97CFDF91CF911F910A +:105F00000895EFE6F3E085E0DF011D928A95E9F759 +:105F100010926E0310926D0308950E94053008F4EC +:105F200081E008950E94992F6894B1110C94743007 +:105F300008950E94593088F09F5798F0B92F9927FB +:105F4000B751B0F0E1F0660F771F881F991F1AF064 +:105F5000BA95C9F714C0B13091F00E947330B1E026 +:105F600008950C947330672F782F8827B85F39F025 +:105F7000B93FCCF3869577956795B395D9F73EF4FD +:105F800090958095709561957F4F8F4F9F4F0895A5 +:105F9000E89409C097FB3EF49095809570956195C3 +:105FA0007F4F8F4F9F4F9923A9F0F92F96E9BB2779 +:105FB0009395F695879577956795B795F111F8CFF5 +:105FC000FAF4BB0F11F460FF1BC06F5F7F4F8F4F60 +:105FD0009F4F16C0882311F096E911C0772321F056 +:105FE0009EE8872F762F05C0662371F096E8862FEE +:105FF00070E060E02AF09A95660F771F881FDAF745 +:10600000880F9695879597F90895990F0008550F71 +:10601000AA0BE0E8FEEF16161706E807F907C0F02E +:1060200012161306E407F50798F0621B730B840B36 +:10603000950B39F40A2661F0232B242B252B21F410 +:1060400008950A2609F4A140A6958FEF811D811DB0 +:10605000089597F99F6780E870E060E008959FEFEA +:1060600080EC089500240A941616170618060906EF +:10607000089500240A9412161306140605060895BE +:10608000092E0394000C11F4882352F0BB0F40F446 +:10609000BF2B11F460FF04C06F5F7F4F8F4F9F4F86 +:1060A000089557FD9058440F551F59F05F3F71F008 +:1060B0004795880F97FB991F61F09F3F79F087956F +:1060C0000895121613061406551FF2CF4695F1DFF8 +:1060D00008C0161617061806991FF1CF8695710588 +:1060E000610508940895E894BB2766277727CB01BC +:1060F00097F908950E94053008F48FEF08950E94E3 +:1061000092300C9440300E94323038F00E94393086 +:1061100020F0952311F00C9429300C942F30112489 +:106120000C9474300E94513070F3959FC1F3950F19 +:1061300050E0551F629FF001729FBB27F00DB11D0B +:10614000639FAA27F00DB11DAA1F649F6627B00D9B +:10615000A11D661F829F2227B00DA11D621F739F84 +:10616000B00DA11D621F839FA00D611D221F749F92 +:106170003327A00D611D231F849F600D211D822FD9 +:10618000762F6A2F11249F5750409AF0F1F0882300 +:106190004AF0EE0FFF1FBB1F661F771F881F91502D +:1061A0005040A9F79E3F510580F00C9429300C9483 +:1061B00074305F3FE4F3983ED4F386957795679506 +:1061C000B795F795E7959F5FC1F7FE2B880F911D57 +:1061D0009695879597F90895991B79E004C0991FC2 +:1061E000961708F0961B881F7A95C9F78095089531 +:1061F00097FB072E16F4009407D077FD09D00E9474 +:10620000123107FC05D03EF4909581959F4F08957B +:10621000709561957F4F0895EE0FFF1F0590F491E3 +:10622000E02D0994AA1BBB1B51E107C0AA1FBB1F8D +:10623000A617B70710F0A61BB70B881F991F5A9512 +:10624000A9F780959095BC01CD010895F894FFCFF2 +:10625000B419A51A821A4E1A1A1A015F03280814D3 +:106260000A321E000000005E090000000013040056 +:10627000000000820451039D031404B80353035427 +:1062800003BB03C003C5039403CD03D003FEFF008B +:10629000000904000000000D0A000000007C0A8CC8 +:1062A00019720A780A750A7B0A710A00000000FD5B +:1062B0000B530B150C0000000039165103981529DB +:1062C0001990158817540393155603404D3622EB49 +:1062D000039E0368034603D202EB0204031D03007E +:106800008800EA44E944E244040005000600070069 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:10686000300031003200330034003500360037008C +:10687000380039003A003B003C003D003E003F003C +:1068800040004100420043004400450046004700EC +:10689000480049004A004B004C004D004E004F009C +:1068A000500051005200530054005500560057004C +:1068B000580059005A005B005C005D005E005F00FC +:1068C00060006100620063006400F1A18500670060 +:1068D000680069006A006B006C006D006E006F005C +:1068E0007000710072007300890087008A008B00BD +:1068F000E000E100E200E300E400E500E600E7007C +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010035004C0001000100440045005200D8 +:1069600049000100010050004F0029004D004E0079 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/usb_usb/keymap.c b/converter/usb_usb/keymap.c index f1211147..bafaee82 100644 --- a/converter/usb_usb/keymap.c +++ b/converter/usb_usb/keymap.c @@ -46,8 +46,91 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PEQL, EXEC,PSTE, LCTL,LGUI,LALT,MHEN,HANJ, SPC, HAEN,HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT, FIND,CUT ), +}; +const action_t fn_actions[] PROGMEM = {}; + + + +/* + * Keymap samples + */ #if 0 + /* ANSI layout + * ,---. ,---------------. ,---------------. ,---------------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| + * `---' `---------------' `---------------' `---------------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| + * |-----------------------------------------------------------| `-----------' |-----------| | + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| | + * |-----------------------------------------------------------| ,---. |---------------| + * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------| | + * |Ctl|Gui|Alt| Space |Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0| .|Ent| + * `-----------------------------------------------------------' `-----------' `---------------' + */ + KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS, + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3, + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT + ), + + /* ISO layout + * ,---. ,---------------. ,---------------. ,---------------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| + * `---' `---------------' `---------------' `---------------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| ^| Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Retn| |Del|End|PgD| | 7| 8| 9| +| + * |------------------------------------------------------` | `-----------' |-----------| | + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #| | | 4| 5| 6| | + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft|\ | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3|Ent| + * |-----------------------------------------------------------| ,-----------. |-----------| | + * |Ctl|Gui|Alt| Space |HNK|KNA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0| .| | + * `-----------------------------------------------------------' `-----------' `---------------' + */ + KEYMAP_ISO( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,ENT, DEL, END, PGDN, P7, P8, P9, PPLS, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NUHS, P4, P5, P6, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3, PENT, + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT + ), + + /* JIS layout + * ,---. ,---------------. ,---------------. ,---------------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| + * `---' `---------------' `---------------' `---------------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| ^|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| @| [| Retn| |Del|End|PgD| | 7| 8| 9| +| + * |------------------------------------------------------` | `-----------' |-----------| | + * |CapsL | A| S| D| F| G| H| J| K| L| ;| :| ]| | | 4| 5| 6| | + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft | Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|Ent| + * |-----------------------------------------------------------| ,-----------. |-----------| | + * |Ctl|Gui|Alt|MHEN| Space |HENK|KNA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0| .| | + * `-----------------------------------------------------------' `-----------' `---------------' + */ + KEYMAP_JIS( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JPY, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, ENT, DEL, END, PGDN, P7, P8, P9, PPLS, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NUHS, P4, P5, P6, + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PENT, + LCTL,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT + ), + /* Colemak http://colemak.com * ,-----------------------------------------------------------. * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| @@ -116,7 +199,68 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { LSFT,NUBS,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PEQL, EXEC,PSTE, LCTL,LGUI,LALT,MHEN,HANJ, SPC, HAEN,HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT, FIND,CUT ), -#endif + + +/* + * SpaceFN layout + * http://geekhack.org/index.php?topic=51069.0 + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: plain Qwerty + * ,---------------. ,---------------. ,---------------. + * |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24| + * ,---. |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| | Help | + * `---' `---------------' `---------------' `---------------' `-----------' `---------------' `-------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. ,-------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| |Stp|Agn| + * |-----------------------------------------------------------| |-----------| |---------------| |-------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| |Mnu|Und| + * |-----------------------------------------------------------| `-----------' |---------------| |-------| + * |LCtrl | A| S| D| F| G| H| J| K| L| ;| :| #|Retn| | 4| 5| 6|KP,| |Sel|Cpy| + * |-----------------------------------------------------------| ,---. |---------------| |-------| + * |Shft| <| Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|KP=| |Exe|Pst| + * |-----------------------------------------------------------| ,-----------. |---------------| |-------| + * |Ctl|Gui|Alt|MHEN|HNJ| Space |H/E|HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| |Fnd|Cut| + * `-----------------------------------------------------------' `-----------' `---------------' `-------' + */ + [0] = KEYMAP_ALL( + F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, VOLD,VOLU,MUTE,PWR, HELP, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, STOP,AGIN, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, MENU,UNDO, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PCMM, SLCT,COPY, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PEQL, EXEC,PSTE, + LCTL,LGUI,LALT,MHEN,HANJ, FN0, HAEN,HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT, FIND,CUT + ), + + /* 1: SpaceFN + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * |Caps | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | | | | | | |PgU|Lef|Dow|Rig| | | | + * |-----------------------------------------------------------| + * | | | | | |Spc|PgD|` |~ | |Men| | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + [1] = KEYMAP_ALL( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS, + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, + CAPS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS, INS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,APP, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS, TRNS,TRNS + ), }; -const uint16_t fn_actions[] PROGMEM = {}; +const action_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), + [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde +}; + +#endif diff --git a/converter/usb_usb/keymap_common.c b/converter/usb_usb/keymap_common.c deleted file mode 100644 index 8ab5ba92..00000000 --- a/converter/usb_usb/keymap_common.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2014 Jun Wako - -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 . -*/ -#include "keymap_common.h" -#include "progmem.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/usb_usb/keymap_common.h b/converter/usb_usb/keymap_common.h index ee1c7c4d..3284264f 100644 --- a/converter/usb_usb/keymap_common.h +++ b/converter/usb_usb/keymap_common.h @@ -28,10 +28,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* ,---------------. ,---------------. ,---------------. * |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24| * ,---. |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------. diff --git a/converter/usb_usb/keymap_editor.c b/converter/usb_usb/keymap_editor.c deleted file mode 100644 index bd63ea23..00000000 --- a/converter/usb_usb/keymap_editor.c +++ /dev/null @@ -1,88 +0,0 @@ -/* -Copyright 2016 Jun Wako - -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 . -*/ - -#include "keymap_common.h" - - -#ifndef KEYMAP_SECTION_ENABLE - #error "KEYMAP_SECTION_ENABLE is not defined." -#endif - -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { - /* 0: plain Qwerty without layer switching - * ,---------------. ,---------------. ,---------------. - * |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24| - * ,---. |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| | Help | - * `---' `---------------' `---------------' `---------------' `-----------' `---------------' `-------' - * ,-----------------------------------------------------------. ,-----------. ,---------------. ,-------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| |Stp|Agn| - * |-----------------------------------------------------------| |-----------| |---------------| |-------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| |Mnu|Und| - * |-----------------------------------------------------------| `-----------' |---------------| |-------| - * |CapsL | A| S| D| F| G| H| J| K| L| ;| :| #|Retn| | 4| 5| 6|KP,| |Sel|Cpy| - * |-----------------------------------------------------------| ,---. |---------------| |-------| - * |Shft| <| Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|KP=| |Exe|Pst| - * |-----------------------------------------------------------| ,-----------. |---------------| |-------| - * |Ctl|Gui|Alt|MHEN|HNJ| Space |H/E|HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| |Fnd|Cut| - * `-----------------------------------------------------------' `-----------' `---------------' `-------' - */ - KEYMAP_ALL( - F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, VOLD,VOLU,MUTE,PWR, HELP, - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, STOP,AGIN, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, MENU,UNDO, - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PCMM, SLCT,COPY, - LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PEQL, EXEC,PSTE, - LCTL,LGUI,LALT,MHEN,HANJ, SPC, HAEN,HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT, FIND,CUT - ), -}; - -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { - [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_LAYER_MOMENTARY(2), - [2] = ACTION_LAYER_MOMENTARY(3), - [3] = ACTION_LAYER_MOMENTARY(4), - [4] = ACTION_LAYER_MOMENTARY(5), - [5] = ACTION_LAYER_MOMENTARY(6), - [6] = ACTION_LAYER_MOMENTARY(7), - [7] = ACTION_LAYER_TOGGLE(1), - [8] = ACTION_LAYER_TOGGLE(2), - [9] = ACTION_LAYER_TOGGLE(3), - [10] = ACTION_LAYER_TAP_TOGGLE(1), - [11] = ACTION_LAYER_TAP_TOGGLE(2), - [12] = ACTION_LAYER_TAP_TOGGLE(3), - [13] = ACTION_LAYER_TAP_KEY(1, KC_BSLASH), - [14] = ACTION_LAYER_TAP_KEY(2, KC_TAB), - [15] = ACTION_LAYER_TAP_KEY(3, KC_ENTER), - [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE), - [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON), - [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE), - [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH), - [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE), - [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE), - [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE), - [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER), - [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC), - [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE), - [26] = ACTION_MODS_ONESHOT(MOD_LCTL), - [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC), - [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE), - [29] = ACTION_MODS_ONESHOT(MOD_LSFT), - [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRAVE), - [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSLASH), -}; diff --git a/converter/usb_usb/keymap_hasu.c b/converter/usb_usb/keymap_hasu.c deleted file mode 100644 index de19e230..00000000 --- a/converter/usb_usb/keymap_hasu.c +++ /dev/null @@ -1,158 +0,0 @@ -#include "keymap_common.h" - -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Fn6 | - * |-----------------------------------------------------------| - * |Fn7 | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1| - * `-----------------------------------------------------------' - * |Gui|Alt | Fn4 |Fn5 |Gui| - * `-------------------------------------------' - */ - [0] = \ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9, - LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT, FN6, P4, P5, P6, PPLS, - FN7, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT, UP, P1, P2, P3, - LCTL,LGUI,LALT, FN4, RALT,FN5, FN5, FN1, LEFT,DOWN,RGHT, P0, PDOT,PENT - ), - - /* Layer 1: HHKB mode[HHKB Fn] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * |Shift | | | | | | +| -|End|PgD|Dow|Shift | | - * `-----------------------------------------------------------' - * |Gui|Alt | Space |Alt |Gui| - * `-------------------------------------------' - */ - [1] = \ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSLS, DEL, END, PGDN, P7, P8, P9, - LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT, ENT, P4, P5, P6, PPLS, - LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN, RSFT, UP, P1, P2, P3, - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, TRNS, LEFT,DOWN,RGHT, P0, PDOT,PENT - ), - - /* Layer 2: Vi mode[Slash] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | - * `-----------------------------------------------------------' - * |Gui|Alt | Space |Alt |Gui| - * `-------------------------------------------' - */ - [2] = \ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSLS, DEL, END, PGDN, P7, P8, P9, - LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, P4, P5, P6, PPLS, - LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, TRNS, RSFT, UP, P1, P2, P3, - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT - ), - - /* Layer 3: Mouse mode(IJKL)[Semicolon] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Fn |Fn | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel8 - */ - [3] = \ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, FN8, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD,FN8, DEL, END, PGDN, P7, P8, P9, - LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, ENT, P4, P5, P6, PPLS, - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, RSFT, UP, P1, P2, P3, - LCTL,LGUI,LALT, BTN1, RALT,TRNS,TRNS,RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT - ), - - /* Layer 5: Mouse mode(IJKL)[Space] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Fn |Fn | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel8 - */ - [4] = \ - KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, FN8, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD,FN8, DEL, END, PGDN, P7, P8, P9, - LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, P4, P5, P6, PPLS, - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, RSFT, UP, P1, P2, P3, - LCTL,LGUI,LALT, TRNS, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT - ), -}; - - -/* - * Macro definition - */ -enum macro_id { - ALT_TAB, -}; -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch (id) { - case ALT_TAB: - return (record->event.pressed ? - MACRO( D(LALT), D(TAB), END ) : - MACRO( U(TAB), END )); - } - return MACRO_NONE; -} - - -/* - * Fn action definition - */ -#ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { -#else -const uint16_t fn_actions[] PROGMEM = { -#endif - [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used) - [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps) - [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* - [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon* - [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space - [5] = ACTION_LAYER_MOMENTARY(3), // Mousekey layer - [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter - [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift - [8] = ACTION_MACRO(ALT_TAB), // Application switching -}; diff --git a/converter/usb_usb/keymap_iso.c b/converter/usb_usb/keymap_iso.c deleted file mode 100644 index f22a8405..00000000 --- a/converter/usb_usb/keymap_iso.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "keymap_common.h" - -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { - /* Layer 0: Default Layer - * ,---. ,---------------. ,---------------. ,---------------. ,-----------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| - * `---' `---------------' `---------------' `---------------' `-----------' - * ,-----------------------------------------------------------. ,-----------. ,---------------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| ^| Bsp| |Ins|Hom|PgU| |NmL| /| *| -| - * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Retn| |Del|End|PgD| | 7| 8| 9| +| - * |------------------------------------------------------` | `-----------' |-----------| | - * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #| | | 4| 5| 6| | - * |-----------------------------------------------------------| ,---. |---------------| - * |Shft|\ | Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|Ent| - * |-----------------------------------------------------------| ,-----------. |-----------| | - * |Ctl|Gui|Alt| Space |HNK|KNA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0| .| | - * `-----------------------------------------------------------' `-----------' `---------------' - */ - [0] = \ - KEYMAP_ISO( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,ENT, DEL, END, PGDN, P7, P8, P9, PPLS, - LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NUHS, P4, P5, P6, - LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3, PENT, - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT - ), -}; - - -/* - * Fn action definition - */ -const uint16_t fn_actions[] PROGMEM = { -}; diff --git a/converter/usb_usb/keymap_jis.c b/converter/usb_usb/keymap_jis.c deleted file mode 100644 index d164dcec..00000000 --- a/converter/usb_usb/keymap_jis.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "keymap_common.h" - -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { - /* Layer 0: Default Layer - * ,---. ,---------------. ,---------------. ,---------------. ,-----------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| - * `---' `---------------' `---------------' `---------------' `-----------' - * ,-----------------------------------------------------------. ,-----------. ,---------------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| ^|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| - * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| @| [| Retn| |Del|End|PgD| | 7| 8| 9| +| - * |------------------------------------------------------` | `-----------' |-----------| | - * |CapsL | A| S| D| F| G| H| J| K| L| ;| :| ]| | | 4| 5| 6| | - * |-----------------------------------------------------------| ,---. |---------------| - * |Shft | Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|Ent| - * |-----------------------------------------------------------| ,-----------. |-----------| | - * |Ctl|Gui|Alt|MHEN| Space |HENK|KNA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0| .| | - * `-----------------------------------------------------------' `-----------' `---------------' - */ - [0] = \ - KEYMAP_JIS( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JPY, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, ENT, DEL, END, PGDN, P7, P8, P9, PPLS, - LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NUHS, P4, P5, P6, - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PENT, - LCTL,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT - ), -}; - - -/* - * Fn action definition - */ -const uint16_t fn_actions[] PROGMEM = { -}; diff --git a/converter/usb_usb/keymap_spacefn.c b/converter/usb_usb/keymap_spacefn.c deleted file mode 100644 index 69f8693e..00000000 --- a/converter/usb_usb/keymap_spacefn.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * SpaceFN layout - * http://geekhack.org/index.php?topic=51069.0 - */ -#include "keymap_common.h" - - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: plain Qwerty - * ,---------------. ,---------------. ,---------------. - * |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24| - * ,---. |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| | Help | - * `---' `---------------' `---------------' `---------------' `-----------' `---------------' `-------' - * ,-----------------------------------------------------------. ,-----------. ,---------------. ,-------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| |Stp|Agn| - * |-----------------------------------------------------------| |-----------| |---------------| |-------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| |Mnu|Und| - * |-----------------------------------------------------------| `-----------' |---------------| |-------| - * |LCtrl | A| S| D| F| G| H| J| K| L| ;| :| #|Retn| | 4| 5| 6|KP,| |Sel|Cpy| - * |-----------------------------------------------------------| ,---. |---------------| |-------| - * |Shft| <| Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|KP=| |Exe|Pst| - * |-----------------------------------------------------------| ,-----------. |---------------| |-------| - * |Ctl|Gui|Alt|MHEN|HNJ| Space |H/E|HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| |Fnd|Cut| - * `-----------------------------------------------------------' `-----------' `---------------' `-------' - */ - KEYMAP_ALL( - F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, VOLD,VOLU,MUTE,PWR, HELP, - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, STOP,AGIN, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, MENU,UNDO, - LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PCMM, SLCT,COPY, - LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PEQL, EXEC,PSTE, - LCTL,LGUI,LALT,MHEN,HANJ, FN0, HAEN,HENK,KANA,RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT, FIND,CUT - ), - - /* 1: SpaceFN - * ,-----------------------------------------------------------. - * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | - * |-----------------------------------------------------------| - * |Caps | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins | - * |-----------------------------------------------------------| - * | | | | | | |PgU|Lef|Dow|Rig| | | | - * |-----------------------------------------------------------| - * | | | | | |Spc|PgD|` |~ | |Men| | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - */ - KEYMAP_ALL( - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, - TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS, - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, - CAPS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS, INS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,APP, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, - TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS, TRNS,TRNS - ), -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), - [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde -}; - diff --git a/converter/usb_usb/unimap.c b/converter/usb_usb/unimap.c new file mode 100644 index 00000000..2c123806 --- /dev/null +++ b/converter/usb_usb/unimap.c @@ -0,0 +1,45 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_trans.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, VOLD,VOLU,MUTE, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PCMM, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PEQL, + LCTL,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,RGUI,FN0, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,LEFT,RGHT, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +}; diff --git a/converter/usb_usb/unimap_trans.h b/converter/usb_usb/unimap_trans.h new file mode 100644 index 00000000..e4e59d36 --- /dev/null +++ b/converter/usb_usb/unimap_trans.h @@ -0,0 +1,80 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#ifndef UNIMAP_COMMON_H +#define UNIMAP_COMMON_H + +#include +#include +#include "unimap.h" + + +/* Mapping to Universal keyboard layout + * + * Universal keyboard layout + * ,-----------------------------------------------. + * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| + * ,---. |-----------------------------------------------| ,-----------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut| + * `---' `-----------------------------------------------' `-----------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| + * |-----------------------------------------------------------| `-----------' |---------------| + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Retn| | 4| 5| 6|KP,| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|KP=| + * |-----------------------------------------------------------| ,-----------. |---------------| + * |Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| + * `-----------------------------------------------------------' `-----------' `---------------' + */ +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_KANA, UNIMAP_VOLUME_DOWN, UNIMAP_VOLUME_UP, UNIMAP_VOLUME_MUTE, UNIMAP_A, UNIMAP_B, UNIMAP_C, UNIMAP_D, + UNIMAP_E, UNIMAP_F, UNIMAP_G, UNIMAP_H, UNIMAP_I, UNIMAP_J, UNIMAP_K, UNIMAP_L }, + { UNIMAP_M, UNIMAP_N, UNIMAP_O, UNIMAP_P, UNIMAP_Q, UNIMAP_R, UNIMAP_S, UNIMAP_T, + UNIMAP_U, UNIMAP_V, UNIMAP_W, UNIMAP_X, UNIMAP_Y, UNIMAP_Z, UNIMAP_1, UNIMAP_2 }, + { UNIMAP_3, UNIMAP_4, UNIMAP_5, UNIMAP_6, UNIMAP_7, UNIMAP_8, UNIMAP_9, UNIMAP_0, + UNIMAP_ENTER, UNIMAP_ESCAPE,UNIMAP_BSPACE,UNIMAP_TAB, UNIMAP_SPACE, UNIMAP_MINUS, UNIMAP_EQUAL, UNIMAP_LBRACKET }, + { UNIMAP_RBRACKET,UNIMAP_BSLASH,UNIMAP_NONUS_HASH, UNIMAP_SCOLON, UNIMAP_QUOTE, UNIMAP_GRAVE, UNIMAP_COMMA, UNIMAP_DOT, + UNIMAP_SLASH, UNIMAP_CAPSLOCK,UNIMAP_F1, UNIMAP_F2, UNIMAP_F3, UNIMAP_F4, UNIMAP_F5, UNIMAP_F6 }, + { UNIMAP_F7, UNIMAP_F8, UNIMAP_F9, UNIMAP_F10, UNIMAP_F11, UNIMAP_F12, UNIMAP_PSCREEN,UNIMAP_SCROLLLOCK, + UNIMAP_PAUSE, UNIMAP_INSERT,UNIMAP_HOME, UNIMAP_PGUP, UNIMAP_DELETE,UNIMAP_END, UNIMAP_PGDOWN, UNIMAP_RIGHT }, + { UNIMAP_LEFT, UNIMAP_DOWN, UNIMAP_UP, UNIMAP_NUMLOCK, UNIMAP_KP_SLASH, UNIMAP_KP_ASTERISK, UNIMAP_KP_MINUS, UNIMAP_KP_PLUS, + UNIMAP_KP_ENTER,UNIMAP_KP_1,UNIMAP_KP_2, UNIMAP_KP_3, UNIMAP_KP_4, UNIMAP_KP_5, UNIMAP_KP_6, UNIMAP_KP_7 }, + { UNIMAP_KP_8, UNIMAP_KP_9, UNIMAP_KP_0, UNIMAP_KP_DOT,UNIMAP_NONUS_BSLASH,UNIMAP_APPLICATION,UNIMAP_KP_COMMA,UNIMAP_KP_EQUAL, + UNIMAP_F13, UNIMAP_F14, UNIMAP_F15, UNIMAP_F16, UNIMAP_F17, UNIMAP_F18, UNIMAP_F19, UNIMAP_F20 }, + { UNIMAP_F21, UNIMAP_F22, UNIMAP_F23, UNIMAP_F24, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* 78-7F */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_RO, /* 80-87 */ \ + UNIMAP_NO, UNIMAP_JYEN, UNIMAP_HENK, UNIMAP_MHEN, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* 88-8F */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, /* 90-97 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* 98-9F */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, /* A0-A7 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* A8-AF */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, /* B0-B7 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* B8-BF */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, /* C0-C7 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* C8-CF */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, /* D0-D7 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* D8-DF */ \ + { UNIMAP_LCTRL, UNIMAP_LSHIFT,UNIMAP_LALT, UNIMAP_LGUI, UNIMAP_RCTRL, UNIMAP_RSHIFT,UNIMAP_RALT, UNIMAP_RGUI, /* E0-E7 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* E8-EF */ \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, /* F0-F7 */ \ + UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* F8-FF */ \ +}; + +#endif diff --git a/converter/x68k_usb/keymap.c b/converter/x68k_usb/keymap.c index 836752bf..4d6a1261 100644 --- a/converter/x68k_usb/keymap.c +++ b/converter/x68k_usb/keymap.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "util.h" @@ -72,7 +71,7 @@ along with this program. If not, see . } -static const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { [0] = ACTION_FUNCTION(0), // toggle all LEDs }; @@ -92,7 +91,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) } -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* X68000 Keyboard Scan codes ,---. ,---. ,-------------------, ,-------------------. ,-----------. ,---------------. | 61| | 62| | 63| 64| 65| 66| 67| | 68| 69| 6A| 6B| 6C| | 5A| 5B| 5C| | 5D| 52| 53| 54| @@ -128,16 +127,3 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LGUI,LALT,MHEN, SPC, HENK,KANA,APP, ZKHK, F14, F15, P0, PCMM,PDOT ), }; - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/xt_usb/Makefile b/converter/xt_usb/Makefile index cd8230cb..6fc29cbf 100644 --- a/converter/xt_usb/Makefile +++ b/converter/xt_usb/Makefile @@ -11,8 +11,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/converter/xt_usb/keymap_common.c b/converter/xt_usb/keymap_common.c deleted file mode 100644 index e344fb41..00000000 --- a/converter/xt_usb/keymap_common.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2011,2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" -#include "progmem.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/converter/xt_usb/keymap_common.h b/converter/xt_usb/keymap_common.h index b9de6a86..9953c938 100644 --- a/converter/xt_usb/keymap_common.h +++ b/converter/xt_usb/keymap_common.h @@ -28,10 +28,6 @@ along with this program. If not, see . #include "keymap.h" -// 32*8(256) byte array which converts PS/2 code into USB code -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - /* All keys */ #define KEYMAP_ALL( \ K00, K02,K03,K04,K05,K06,K07,K08,K09,K0A,K0B,K0C,K0D, K0E,K0F,K0G, \ diff --git a/converter/xt_usb/keymap_jis.c b/converter/xt_usb/keymap_jis.c index 02585150..b430b907 100644 --- a/converter/xt_usb/keymap_jis.c +++ b/converter/xt_usb/keymap_jis.c @@ -30,5 +30,5 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/xt_usb/keymap_plain.c b/converter/xt_usb/keymap_plain.c index 51b2fddb..ecb13d7d 100644 --- a/converter/xt_usb/keymap_plain.c +++ b/converter/xt_usb/keymap_plain.c @@ -28,5 +28,5 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { }; diff --git a/converter/xt_usb/keymap_spacefn.c b/converter/xt_usb/keymap_spacefn.c index bffd2bc6..8f087a85 100644 --- a/converter/xt_usb/keymap_spacefn.c +++ b/converter/xt_usb/keymap_spacefn.c @@ -54,7 +54,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde }; diff --git a/keyboard/alps64/Makefile b/keyboard/alps64/Makefile index c82c126b..97d23ae0 100644 --- a/keyboard/alps64/Makefile +++ b/keyboard/alps64/Makefile @@ -120,7 +120,6 @@ ifdef ACTIONMAP_ENABLE KEYMAP_FILE = actionmap else KEYMAP_FILE = keymap - SRC := keymap_common.c $(SRC) endif ifdef KEYMAP SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) diff --git a/keyboard/alps64/actionmap_hasu.c b/keyboard/alps64/actionmap_hasu.c index e5aee15d..5eb43421 100644 --- a/keyboard/alps64/actionmap_hasu.c +++ b/keyboard/alps64/actionmap_hasu.c @@ -1,4 +1,3 @@ -#include #include "actionmap.h" #include "action_code.h" #include "actionmap_common.h" @@ -37,7 +36,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } -const uint16_t PROGMEM actionmaps[][MATRIX_ROWS][MATRIX_COLS] = { +const action_t PROGMEM actionmaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Default Layer * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | diff --git a/keyboard/alps64/actionmap_plain.c b/keyboard/alps64/actionmap_plain.c index 4a78b7a1..58ffbaaa 100644 --- a/keyboard/alps64/actionmap_plain.c +++ b/keyboard/alps64/actionmap_plain.c @@ -1,4 +1,3 @@ -#include #include "actionmap.h" #include "action_code.h" #include "actionmap_common.h" @@ -10,7 +9,7 @@ #define AC_LM1 ACTION_LAYER_MOMENTARY(1) // HHKB layer -const uint16_t PROGMEM actionmaps[][MATRIX_ROWS][MATRIX_COLS] = { +const action_t PROGMEM actionmaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Default Layer * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|BSpc | diff --git a/keyboard/alps64/keymap_common.c b/keyboard/alps64/keymap_common.c deleted file mode 100644 index fdb1769e..00000000 --- a/keyboard/alps64/keymap_common.c +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/keyboard/alps64/keymap_common.h b/keyboard/alps64/keymap_common.h index 957db579..17418783 100644 --- a/keyboard/alps64/keymap_common.h +++ b/keyboard/alps64/keymap_common.h @@ -19,7 +19,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" @@ -30,10 +29,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* Alps64 keymap definition macro */ #define KEYMAP( \ K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \ diff --git a/keyboard/alps64/keymap_editor.c b/keyboard/alps64/keymap_editor.c index 68c629f0..7abf6feb 100644 --- a/keyboard/alps64/keymap_editor.c +++ b/keyboard/alps64/keymap_editor.c @@ -27,9 +27,9 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { }; #ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +const action_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { #else -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { #endif [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_LAYER_MOMENTARY(2), diff --git a/keyboard/alps64/keymap_hasu.c b/keyboard/alps64/keymap_hasu.c index d297d72f..17e3ac6a 100644 --- a/keyboard/alps64/keymap_hasu.c +++ b/keyboard/alps64/keymap_hasu.c @@ -121,7 +121,7 @@ enum macro_id { /* * Fn action definition */ -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), // HHKB layer [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER), // HHKB layer [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* diff --git a/keyboard/alps64/keymap_plain.c b/keyboard/alps64/keymap_plain.c index 11a43d59..034b8076 100644 --- a/keyboard/alps64/keymap_plain.c +++ b/keyboard/alps64/keymap_plain.c @@ -28,6 +28,6 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), }; -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/keyboard/gh60/Makefile b/keyboard/gh60/Makefile index 083b87c3..b72019b1 100644 --- a/keyboard/gh60/Makefile +++ b/keyboard/gh60/Makefile @@ -48,8 +48,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/keyboard/gh60/keymap_common.c b/keyboard/gh60/keymap_common.c deleted file mode 100644 index fdb1769e..00000000 --- a/keyboard/gh60/keymap_common.c +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/keyboard/gh60/keymap_common.h b/keyboard/gh60/keymap_common.h index 896badd7..7dbdf4b9 100644 --- a/keyboard/gh60/keymap_common.h +++ b/keyboard/gh60/keymap_common.h @@ -19,7 +19,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" @@ -30,10 +29,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - /* GH60 keymap definition macro * K2C, K31 and K3C are extra keys for ISO */ diff --git a/keyboard/gh60/keymap_hasu.c b/keyboard/gh60/keymap_hasu.c index e6af2858..cdeefb26 100644 --- a/keyboard/gh60/keymap_hasu.c +++ b/keyboard/gh60/keymap_hasu.c @@ -131,7 +131,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(4), [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymap_hhkb.c index ce1b816e..4253c385 100644 --- a/keyboard/gh60/keymap_hhkb.c +++ b/keyboard/gh60/keymap_hhkb.c @@ -47,6 +47,6 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/keyboard/gh60/keymap_plain.c b/keyboard/gh60/keymap_plain.c index 3138c180..1cd52139 100644 --- a/keyboard/gh60/keymap_plain.c +++ b/keyboard/gh60/keymap_plain.c @@ -8,4 +8,4 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, \ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL), }; -const uint16_t PROGMEM fn_actions[] = {}; +const action_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/gh60/keymap_poker.c b/keyboard/gh60/keymap_poker.c index 7a612ee4..5e94184f 100644 --- a/keyboard/gh60/keymap_poker.c +++ b/keyboard/gh60/keymap_poker.c @@ -90,7 +90,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { /* Poker Layout */ [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay diff --git a/keyboard/gh60/keymap_poker_bit.c b/keyboard/gh60/keymap_poker_bit.c index b8870fdd..f6045644 100644 --- a/keyboard/gh60/keymap_poker_bit.c +++ b/keyboard/gh60/keymap_poker_bit.c @@ -40,7 +40,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \ TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { /* Poker Layout */ [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc) [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle diff --git a/keyboard/gh60/keymap_poker_set.c b/keyboard/gh60/keymap_poker_set.c index aaa31fc5..ec17605d 100644 --- a/keyboard/gh60/keymap_poker_set.c +++ b/keyboard/gh60/keymap_poker_set.c @@ -65,7 +65,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { /* Poker Layout */ [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press diff --git a/keyboard/gh60/keymap_spacefn.c b/keyboard/gh60/keymap_spacefn.c index 8077dcee..8724b56d 100644 --- a/keyboard/gh60/keymap_spacefn.c +++ b/keyboard/gh60/keymap_spacefn.c @@ -49,7 +49,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde }; diff --git a/keyboard/hhkb/Makefile b/keyboard/hhkb/Makefile index 5a179bd2..2ba1786c 100644 --- a/keyboard/hhkb/Makefile +++ b/keyboard/hhkb/Makefile @@ -39,28 +39,28 @@ #---------------------------------------------------------------------------- # Target file name (without extension). -TARGET = hhkb_lufa +TARGET ?= hhkb # Directory common source filess exist -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . # List C source files here. (C dependencies are automatically generated.) -SRC += keymap_common.c \ - matrix.c \ +SRC ?= matrix.c \ led.c -CONFIG_H = config.h +ifeq (yes,$(strip $(RN42_ENABLE))) +CONFIG_H ?= config_rn42.h +else +CONFIG_H ?= config.h +endif # MCU name -# PJRC Teensy++ 2.0 -#MCU = at90usb1286 -# TMK Alt Controller or PJRC Teensy 2.0 -MCU = atmega32u4 +MCU ?= atmega32u4 # Processor frequency. # This will define a symbol, F_CPU, in all source code files equal to the @@ -73,14 +73,14 @@ MCU = atmega32u4 # 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 +F_CPU ?= 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +ARCH ?= AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ -93,7 +93,7 @@ ARCH = AVR8 # # 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) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task #OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT @@ -111,14 +111,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor -#HHKB_JP = yes # HHKB JP support +#BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE ?= yes # Mouse keys +EXTRAKEY_ENABLE ?= yes # Audio control and System control +CONSOLE_ENABLE ?= yes # Console for debug +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover +#HHKB_JP ?= yes # HHKB JP support +#UNIMAP_ENABLE ?= yes # Universal keymap +#ACTIONMAP_ENABLE ?= yes # Use 16bit actionmap instead of 8bit keymap +#KEYMAP_SECTION_ENABLE ?= yes # fixed address keymap for keymap editor #OPT_DEFS += -DNO_ACTION_TAPPING #OPT_DEFS += -DNO_ACTION_LAYER @@ -128,13 +130,22 @@ NKRO_ENABLE = yes # USB Nkey Rollover # # Keymap file # -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) +ifeq (yes,$(strip $(UNIMAP_ENABLE))) + KEYMAP_FILE = unimap else - ifdef HHKB_JP - SRC := keymap_jp.c $(SRC) + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif +ifdef KEYMAP + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) +else + ifeq (yes,$(strip $(HHKB_JP))) + SRC := $(KEYMAP_FILE)_jp.c $(SRC) else - SRC := keymap_hhkb.c $(SRC) + SRC := $(KEYMAP_FILE)_hhkb.c $(SRC) endif endif @@ -148,6 +159,10 @@ endif VPATH += $(TARGET_DIR) VPATH += $(TMK_DIR) +ifeq (yes,$(strip $(RN42_ENABLE))) +include rn42.mk +include $(TMK_DIR)/protocol.mk +endif include $(TMK_DIR)/protocol/lufa.mk include $(TMK_DIR)/common.mk include $(TMK_DIR)/rules.mk diff --git a/converter/usb_usb/Makefile.keymap_editor b/keyboard/hhkb/Makefile.editor similarity index 85% rename from converter/usb_usb/Makefile.keymap_editor rename to keyboard/hhkb/Makefile.editor index 08293d5d..ae8e12ff 100644 --- a/converter/usb_usb/Makefile.keymap_editor +++ b/keyboard/hhkb/Makefile.editor @@ -1,5 +1,5 @@ # build firmware for keymap editor # +TARGET = hhkb_editor KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor -KEYMAP = editor include Makefile diff --git a/keyboard/hhkb/Makefile.rn42.keymap_editor b/keyboard/hhkb/Makefile.editor.rn42 similarity index 83% rename from keyboard/hhkb/Makefile.rn42.keymap_editor rename to keyboard/hhkb/Makefile.editor.rn42 index 6e55f694..a081dcd0 100644 --- a/keyboard/hhkb/Makefile.rn42.keymap_editor +++ b/keyboard/hhkb/Makefile.editor.rn42 @@ -1,5 +1,5 @@ # build firmware for keymap editor # +TARGET = hhkb_rn42_editor KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor include Makefile.rn42 - diff --git a/keyboard/hhkb/Makefile.jp b/keyboard/hhkb/Makefile.jp index e04dbb24..778e92b1 100644 --- a/keyboard/hhkb/Makefile.jp +++ b/keyboard/hhkb/Makefile.jp @@ -1,2 +1,3 @@ +TARGET = hhkb_jp HHKB_JP = yes include Makefile diff --git a/keyboard/hhkb/Makefile.keymap_editor b/keyboard/hhkb/Makefile.keymap_editor deleted file mode 100644 index 77a13e68..00000000 --- a/keyboard/hhkb/Makefile.keymap_editor +++ /dev/null @@ -1,5 +0,0 @@ -# build firmware for keymap editor -# -KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor -include Makefile - diff --git a/keyboard/hhkb/Makefile.rn42 b/keyboard/hhkb/Makefile.rn42 index 8cb44352..c6945078 100644 --- a/keyboard/hhkb/Makefile.rn42 +++ b/keyboard/hhkb/Makefile.rn42 @@ -1,155 +1,5 @@ -#---------------------------------------------------------------------------- -# 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". -#---------------------------------------------------------------------------- - -# Target file name (without extension). -TARGET = hhkb_rn42 - -# Directory common source filess exist -TMK_DIR = ../../tmk_core - -# Directory keyboard dependent files exist -TARGET_DIR = . - - -# List C source files here. (C dependencies are automatically generated.) -SRC += keymap_common.c \ - matrix.c \ - led.c - -CONFIG_H = config_rn42.h - - -# MCU name -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 -#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 (TMK Alt Controller) -# 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 -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor -#HHKB_JP = yes # HHKB JP support - - -# -# Keymap file -# -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) -else - ifdef HHKB_JP - SRC := keymap_jp.c $(SRC) - else - SRC := keymap_hhkb.c $(SRC) - endif -endif - - -ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) - OPT_DEFS += -DHHKB_JP -endif - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TMK_DIR) - -include rn42.mk -include $(TMK_DIR)/protocol.mk -include $(TMK_DIR)/protocol/lufa.mk -include $(TMK_DIR)/common.mk -include $(TMK_DIR)/rules.mk - -debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION -debug-on: all - -debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT -debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) -debug-off: all +TARGET ?= hhkb_rn42 +CONFIG_H ?= config_rn42.h +RN42_ENABLE ?= yes +NKRO_ENABLE ?= no +include Makefile diff --git a/keyboard/hhkb/Makefile.rn42.jp b/keyboard/hhkb/Makefile.rn42.jp index a3494e96..9cb11a3a 100644 --- a/keyboard/hhkb/Makefile.rn42.jp +++ b/keyboard/hhkb/Makefile.rn42.jp @@ -1,3 +1,2 @@ HHKB_JP = yes include Makefile.rn42 - diff --git a/keyboard/hhkb/Makefile.unimap b/keyboard/hhkb/Makefile.unimap new file mode 100644 index 00000000..6e402c00 --- /dev/null +++ b/keyboard/hhkb/Makefile.unimap @@ -0,0 +1,4 @@ +TARGET = hhkb_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile diff --git a/keyboard/hhkb/Makefile.unimap.jp b/keyboard/hhkb/Makefile.unimap.jp new file mode 100644 index 00000000..e7d01ba8 --- /dev/null +++ b/keyboard/hhkb/Makefile.unimap.jp @@ -0,0 +1,5 @@ +TARGET = hhkb_jp_unimap +HHKB_JP = yes +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile diff --git a/keyboard/hhkb/Makefile.unimap.rn42 b/keyboard/hhkb/Makefile.unimap.rn42 new file mode 100644 index 00000000..aafb04bd --- /dev/null +++ b/keyboard/hhkb/Makefile.unimap.rn42 @@ -0,0 +1,4 @@ +TARGET = hhkb_rn42_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile.rn42 diff --git a/keyboard/hhkb/Makefile.unimap.rn42.jp b/keyboard/hhkb/Makefile.unimap.rn42.jp new file mode 100644 index 00000000..8f8707ac --- /dev/null +++ b/keyboard/hhkb/Makefile.unimap.rn42.jp @@ -0,0 +1,5 @@ +TARGET = hhkb_jp_rn42_unimap +HHKB_JP = yes +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile.rn42 diff --git a/keyboard/hhkb/binary/hhkb_jp_rn42_unimap.hex b/keyboard/hhkb/binary/hhkb_jp_rn42_unimap.hex new file mode 100644 index 00000000..84eedc41 --- /dev/null +++ b/keyboard/hhkb/binary/hhkb_jp_rn42_unimap.hex @@ -0,0 +1,1489 @@ +:100000000C946F060C94B6060C94B6060C94B606C7 +:100010000C94B6060C94B6060C94B6060C94B60670 +:100020000C94B6060C94B6060C94C4150C94B60643 +:100030000C9404240C94B6060C94B6060C94B606E4 +:100040000C94B6060C94B6060C94B6060C94B60640 +:100050000C94B6060C94A4240C94B6060C94B60624 +:100060000C94B6060C943E090C94B6060C94B60695 +:100070000C94B6060C94B6060C94B6060C94B60610 +:100080000C94B6060C94B6060C94B6060C94B60600 +:100090000C94B6060C94B6060C94B6060C94B606F0 +:1000A0000C94B6060C94B6060C94B606670E6B0E4E +:1000B0006F0E730E770E7B0E7F0E830E870E8B0EE8 +:1000C0008F0E930E970E9B0E9F0EA30EA70EAB0ED8 +:1000D000AF0EB30EB70EBB0EBF0EC30EC70ECB0EC8 +:1000E000CF0ED30ED70EDB0EDF0EE30EE70EEB0EB8 +:1000F000EF0EF30E330F650EF70EF90EFB0EFD0E2D +:10010000010F050F090F0D0F120F170F1B0F1F0FF8 +:10011000230F270F2B0F310F310F310F310F310FFD +:10012000310F310F310F310F310F310F310F310FCF +:10013000310F310F310F310F310F310F2F0FBA1631 +:10014000DC16CA17DC16CA1721174417CA179917E5 +:10015000AC17B31AB31AE01AE01A3B1B771B6F1DDA +:100160006F1D8F1B6F1D8A1C8A1C451D6F1D6F1D07 +:100170005B1D8080352B7879398080802108770657 +:1001800007808080201A7A1B168080801E8029803C +:10019000808080808080808080808080221580198F +:1001A000098080801F147B1D0480808023172C050C +:1001B0000A808080260C00360E80808025187610FC +:1001C0000D808080241C80110B80808027127E3758 +:1001D0000F8080802A804F7D28808080743051522B +:1001E000328080802D137C38338080802E2F507594 +:1001F0003480253032583A20253038620A000A729D +:100200002F632030313233343536370A00522C31E7 +:100210000D0A0053592C464646340D0A0053482C0B +:10022000303033430D0A00537E2C360D0A005357ED +:100230002C383030300D0A00534D2C340D0A005349 +:10024000532C4B6579626F6172642F4D6F757365C6 +:100250000D0A00532D2C546D6B42540D0A00534669 +:100260002C310D0A002D2D2D0D0A00457869746979 +:100270006E6720636F6E666967206D6F6465202E00 +:100280002E2E0A002B0D0A00760D0A0024242400CD +:10029000456E746572696E6720636F6E666967206C +:1002A0006D6F6465202E2E2E0A0025630025730DC8 +:1002B0000A00522C310D0A0053522C5A0D0A0055D7 +:1002C0005342206D6F64650A004175746F206D6F35 +:1002D00064650A00253032750A00253032753A000F +:1002E000253032753A004241543A2025756D560941 +:1002F00000757074696D653A20253032752025309F +:1003000032753A253032753A253032750A00564238 +:1003100055533A2025580A0052656D6F7465576130 +:100320006B657570456E61626C65643A2025580A8C +:10033000000A003F004C4F570044495343484700D0 +:1003400043484152470046554C4C00626174746505 +:1003500072793A20005553422053746174653A20F3 +:1003600025730A00636F6E6669675F6D6F64653A37 +:100370002025580A00726E34325F6175746F636FA6 +:100380006E6E656374696E6728293A2025580A00E5 +:10039000726E34323A2025730A00666F7263655FAD +:1003A0007573623A2025580A0070726F746F636F1C +:1003B0006C3A2025730A000A2D2D2D2D2D20524E2A +:1003C0002D343220696E666F202D2D2D2D2D0A00C3 +:1003D000753A20202020202020746F67676C6520EC +:1003E000466F72636520555342206D6F64650A0045 +:1003F000703A2020202020202070616972696E6789 +:100400000A00536C636B3A20202020524E2D343268 +:1004100020696E697469616C697A650A0044656C6B +:100420003A2020202020656E7465722F65786974EB +:1004300020524E2D343220636F6E666967206D6FD7 +:1004400064650A00623A2020202020202062617426 +:100450007465727920766F6C746167650A00693A19 +:1004600020202020202020524E2D343220696E661C +:100470006F0A000A0A2D2D2D2D2D20426C756574F2 +:100480006F6F746820524E2D34322048656C702096 +:100490002D2D2D2D2D0A00253032753A253032753F +:1004A0003A253032750925756D560A004C454420B1 +:1004B0007374617475733A20253032580A00202510 +:1004C000303258002563005B735D004B6579626FC5 +:1004D0006172642073746172740A00524E2D34325A +:1004E00020696E69740A000A55534220696E697466 +:1004F0000A005B575D005B535D005B525D005B442F +:100500005D005B435D001203480048004B00420061 +:1005100020006D006F00640000000E0374002E00C8 +:100520006D002E006B002E00000004030904090278 +:100530007400040100A0320904000001030101005D +:100540000921110100012240000705810308000A6A +:100550000904010001030102000921110100012227 +:100560004D000705820308000A0904020001030088 +:10057000000009211101000122360007058303084C +:10058000000A090403000203000000092111010010 +:10059000012222000705840320000107050403202F +:1005A00000011201100100000008EDFE42420401AA +:1005B000010200010631FF0974A101097515002629 +:1005C000FF009520750881020976150026FF009529 +:1005D0002075089102C005010980A101850216015C +:1005E0000026B7001A01002AB70075109501810096 +:1005F000C0050C0901A1018503160100269C021A01 +:1006000001002A9C02751095018100C005010902B4 +:10061000A1010901A10005091901290515002501FC +:100620009505750181029501750381010501093068 +:1006300009311581257F95027508810609381581D4 +:10064000257F950175088106050C0A38021581255C +:100650007F950175088106C0C005010906A1010545 +:100660000719E029E7150025019508750181029514 +:100670000175088101050819012905950575019184 +:10068000029501750391010507190029FF15002640 +:10069000FF00950675088100C00A002530325820F9 +:1006A000006B6579626F6172645F7265706F7274FE +:1006B0003A20004C45443A20253032580A004F6E0B +:1006C0006573686F743A2074696D656F75740A009C +:1006D000290A002575002F002575005D2800256476 +:1006E000002000256400200025640020002564000F +:1006F0007C0025303258006D6F7573656B6579200D +:100700005B62746E7C782079207620685D28726543 +:10071000702F61636C293A205B006D6B5F776865B1 +:10072000656C5F74696D655F746F5F6D6178203DA6 +:100730002025640A006D6B5F776865656C5F6D618D +:10074000785F7370656564203D2025640A006D6BD9 +:100750005F74696D655F746F5F6D6178203D202502 +:10076000640A006D6B5F6D61785F7370656564200E +:100770003D2025640A006D6B5F696E746572766159 +:100780006C203D2025640A006D6B5F64656C6179A7 +:10079000203D2025640A006D6B5F776865656C5F9E +:1007A00074696D655F746F5F6D6178203D202564AD +:1007B0000A006D6B5F776865656C5F6D61785F736C +:1007C00070656564203D2025640A006D6B5F746967 +:1007D0006D655F746F5F6D6178203D2025640A0050 +:1007E0006D6B5F6D61785F7370656564203D20257A +:1007F000640A006D6B5F696E74657276616C203D92 +:100800002025640A006D6B5F64656C6179203D2072 +:1008100025640A000A00257500363A207768656568 +:100820006C5F74696D655F746F5F6D61783A20000D +:100830000A00257500353A20776865656C5F6D6143 +:10084000785F73706565643A20000A00257500348E +:100850003A2074696D655F746F5F6D61783A20004E +:100860000A00257500333A206D61785F7370656505 +:10087000643A20000A00257500323A20696E7465DA +:100880007276616C286D73293A20000A0025750084 +:10089000313A2064656C6179282A31306D73293AC8 +:1008A00020000A092D2056616C756573202D0A0001 +:1008B0004D3E004D25643E20003F0073657420646A +:1008C000656661756C740A00433E20007768657246 +:1008D000652064656C74613A20637572736F723D54 +:1008E00025642C20776865656C3D25640A53656531 +:1008F00020687474703A2F2F656E2E77696B69705B +:10090000656469612E6F72672F77696B692F4D6F10 +:100910007573655F6B6579730A000A092D204D6F49 +:100920007573656B6579202D0A4553432F713A091C +:10093000717569740A313A0964656C6179282A31E4 +:10094000306D73290A323A09696E74657276616C8A +:10095000286D73290A333A096D61785F7370656594 +:10096000640A343A0974696D655F746F5F6D61780C +:100970000A353A09776865656C5F6D61785F7370F9 +:100980006565640A363A09776865656C5F74696DF8 +:10099000655F746F5F6D61780A0A703A09707269F9 +:1009A0006E742076616C7565730A643A09736574B8 +:1009B0002064656661756C74730A75703A092B3131 +:1009C0000A646F776E3A092D310A706775703A09BB +:1009D0002B31300A7067646F776E3A092D31300A17 +:1009E0000A7370656564203D2064656C7461202A1B +:1009F000206D61785F7370656564202A20287265B8 +:100A000070656174202F2074696D655F746F5F6D10 +:100A10006178290A003F004D3E2000433E20004CF3 +:100A200025640A000A092D20436F6E736F6C6520E0 +:100A30002D0A4553432F713A09717569740A6D3A4D +:100A4000096D6F7573656B65790A000A092D204D74 +:100A500061676963202D0A643A0964656275670AF3 +:100A6000783A096465627567206D61747269780A05 +:100A70006B3A096465627567206B6579626F6172B4 +:100A8000640A6D3A096465627567206D6F757365F8 +:100A90000A763A0976657273696F6E0A733A09735A +:100AA00074617475730A633A09636F6E736F6C6572 +:100AB000206D6F64650A302D343A096C6179657276 +:100AC000302D34284631302D4634290A5061757353 +:100AD0003A09626F6F746C6F616465720A003F005F +:100AE00074696D65725F72656164333228293A20DA +:100AF0002530346C580A006B6579626F6172645FEF +:100B000069646C653A2025580A006B6579626F61EB +:100B100072645F70726F746F636F6C3A2025580A4D +:100B200000686F73745F6B6579626F6172645F6C8C +:100B300065647328293A2025580A000A092D205394 +:100B40007461747573202D0A004743433A20342E94 +:100B5000392E32204156522D4C4942433A20312EF3 +:100B6000382E3073766E204156525F415243483AD8 +:100B700020617672350A004F5054494F4E533A2047 +:100B80004C554641204D4F5553454B4559204558EE +:100B90005452414B455920434F4E534F4C452043EF +:100BA0004F4D4D414E44204B45594D41505F5345AB +:100BB0004354494F4E20343039360A004255494C8F +:100BC000443A20353166353966642D64697274792A +:100BD000202831353A35303A30342041756720339A +:100BE000312032303136290A005649443A203078D3 +:100BF0004645454428742E6D2E6B2E2920504944BD +:100C00003A203078343234322848484B42206D6FD5 +:100C10006429205645523A203078303130340A0069 +:100C2000444553433A20742E6D2E6B2E206B65790C +:100C3000626F617264206669726D776172652066A9 +:100C40006F722048484B42206D6F640A000A092DDC +:100C50002056657273696F6E202D0A000A6D6F75DC +:100C600073653A206F66660A000A6D6F7573653AA0 +:100C7000206F6E0A000A6B6579626F6172643A20B8 +:100C80006F66660A000A6B6579626F6172643A206A +:100C90006F6E0A000A6D61747269783A206F666639 +:100CA0000A000A6D61747269783A206F6E0A000A50 +:100CB00064656275673A206F6E0A000A6465627542 +:100CC000673A206F66660A000A0A626F6F746C6F7B +:100CD000616465722E2E2E2000433E2000001124F8 +:100CE0001FBECFEFDAE0DEBFCDBF04B603FE27C0E4 +:100CF0008091760390917703A0917803B091790366 +:100D00008730904BA740B04BD1F4109276031092ED +:100D10007703109278031092790314BE84B7877F0B +:100D200084BF0FB6F894A895809160008861809385 +:100D30006000109260000FBEE0E0F8E3099511E05A +:100D4000A0E0B1E0EEE5FAE502C005900D92AA3907 +:100D5000B107D9F723E0AAE9B1E001C01D92A63797 +:100D6000B207E1F70E946E100C942D2D0C94000038 +:100D70000FB680959AE0F8947BE27A95F1F708F047 +:100D8000589A08F4589886959A95B1F70FBE089529 +:100D90000FB680E8F894499BFECF4999FECF96E1C3 +:100DA0009A95F1F79CE29A95F1F7869549998068B2 +:100DB000C8F70FBE08950FB680E8F89496E19A95AB +:100DC000F1F79CE29A95F1F7869549998068C8F702 +:100DD00096E19A95F1F7499BFECF0FBE0895FF93D8 +:100DE000EF93E0919A01F0919B01309709F00995FA +:100DF000EF91FF910895FC018591803011F0EFDFB4 +:100E0000FBCF0895FF27E0E230E247FF0CC0419599 +:100E100097FF09C0EDE26095709580959095611DF2 +:100E2000711D811D911D27FF02C0219530E350E205 +:100E3000AA27660F771F881F991FAA1FA41710F0F3 +:100E4000A41B63955A95A9F7AA3008F0A95FA05D85 +:100E5000AF93F395611571058105910541F7ED3269 +:100E600011F4EF93F395F21718F43F93F395FBCF3A +:100E70008F91B5DFFA95E1F70895E991F9918591A0 +:100E8000803021F0853219F0AADFF9CF089520E0F3 +:100E9000E89455915532C1F3503311F4689455914B +:100EA0005A3348F4505390F3220F022E220F220F90 +:100EB000200D250FF4CF0EF4219589919991533689 +:100EC00019F3533729F1533559F1BC018827992774 +:100ED000E8945C3621F4899199916894559154363F +:100EE00039F446EF7EF077FF0DC08FEF9FEF0AC019 +:100EF00055374AE039F0583540E121F0523642E0AA +:100F000009F00895FF93EF937DDFEF91FF91B7CF45 +:100F1000FF93EF93FC0181918030B9F360DFFBCF49 +:100F2000FF93EF9368DFF1CFDF93CF93CDB7DEB7B9 +:100F30002596A3DFCF91DF91089514B88FEF85B97F +:100F4000549A5C9808958FEF84B980E485B9549AD7 +:100F50005C9A8FE19EE40197F1F700C000000895CC +:100F60008FEF84B980E485B957985F9A87B1806C18 +:100F700087B988B1806C88B92E9A2F980E949D07F6 +:100F8000ECEAF1E080E18E0F11928E13FDCFECE9D7 +:100F9000F1E080E18E0F11928E13FDCF8CEA91E08B +:100FA0009093BF018093BE018CE991E09093BD01C5 +:100FB0008093BC010895EF92FF920F931F93CF93FC +:100FC000DF938091BC019091BD012091BE013091D1 +:100FD000BF013093BD012093BC019093BF0180936A +:100FE000BE015C9B0E94A307C0E0D0E001E010E0DE +:100FF00080E090E0FC2FF770EC2FE87025B1207CAA +:101000002F2BAC0133E0440F551F3A95E1F7242B09 +:1010100025B928B12F73EE2311F0206401C0206898 +:1010200028B92AE12A95F1F700C0A091BC01B0913E +:10103000BD01AC0FBD1F2C9130E0082E02C03595CC +:1010400027950A94E2F720FD2F9AA5E3AA95F1F7D8 +:101050000000F6B42E98BAE1BA95F1F700C04091BD +:10106000BE015091BF01BA016C0F7D1F4F9B0BC099 +:101070009801082E01C0220F0A94EAF72095DB019F +:101080003C91232309C0DB01EC909801082E01C09C +:10109000220F0A94EAF72E292C9326B56F2D70E0C3 +:1010A0002F1518F026B530E004C026B530E02150E9 +:1010B0003F4F261B370B2630310558F0A091BC015D +:1010C000B091BD01AC0FBD1F2C91DA01AC0FBD1F5B +:1010D0002C93BAE1BA95F1F700C02F982E9A20EA26 +:1010E0002A95F1F701968830910509F087CFA091F4 +:1010F000BE01B091BF01AC0FBD1FE091BC01F091EA +:10110000BD01EC0FFD1F9C918081981751F00E944A +:1011100042246093C0017093C1018093C2019093F7 +:10112000C3012196C031D10509F062CF5C9B1BC081 +:1011300080916D03853021F080916D03811113C082 +:101140006091C0017091C1018091C2019091C30171 +:101150000E947824613177428105910520F00E9438 +:101160009D070E94C52381E0DF91CF911F910F91D0 +:10117000FF90EF9008952091BE013091BF01F901D9 +:10118000E80FF11D808108950F931F93CF93DF9394 +:101190008EEF91E00E94FB06C0E0D0E002EF11E08C +:1011A000E091BE01F091BF01EC0FFD1F80810E9414 +:1011B0009B231F928F93DF93CF931F930F930E94D4 +:1011C000940721960F900F900F900F900F900F9013 +:1011D000C031D10529F7DF91CF911F910F9108956B +:1011E0000C94A3070C949D07569A81FF02C05E9A47 +:1011F00008955E98089588E08093CC001092CD0009 +:10120000E9ECF0E080818069808380818860808360 +:10121000EAECF0E080818083EBECF0E08081808379 +:10122000559A5D98789408959091C5012091C401D4 +:101230009217D1F030E0F901EA53FE4F80812F5F21 +:101240003F4F33272093C401492F50E0921718F4E1 +:10125000241B350B03C0241B350B3395233031057C +:101260000CF05D9890E008958FEF9FEF08959091B6 +:10127000C80095FFFCCF8093CE0008951F920F9277 +:101280000FB60F9211242F933F934F935F938F9339 +:101290009F93EF93FF938091C50190E0AC014F5F66 +:1012A0005F4F2091C401241741F03091CE00FC0122 +:1012B000EA53FE4F30834093C5013091C501822F20 +:1012C00090E0432F50E0841B950B321708F0939564 +:1012D00003970CF45D9AFF91EF919F918F915F912D +:1012E0004F913F912F910F900FBE0F901F90189527 +:1012F0008091DE02089508958091DE020895089598 +:10130000089508950895CF93DF938D3C9105B9F129 +:10131000B8F4853B9105A9F148F4833B9105D1F1DF +:10132000843B9105D1F5D0E0C0E23BC0873B9105FD +:1013300071F150F18C3C910581F5D0E0C8E031C0ED +:101340008A3E9105C1F040F4823E9105B1F0893E9C +:10135000910519F5D0E124C0813222E0920749F0CD +:10136000833222E09207D9F08A389140B1F4D2E07A +:1013700017C0D4E015C0D0E213C0D0E411C0D0E84B +:101380000FC0D0E0C1E00DC0D0E0C2E00AC0D0E0A4 +:10139000C4E007C0D0E0C0E104C0D0E001C0D1E0AB +:1013A000C0E08DEF0E94370983E00E94370983E097 +:1013B0000E9437098D2F0E9437098C2FDF91CF9122 +:1013C0000C943709CF93DF93EC018DEF0E9437091E +:1013D00085E00E94370982E00E94370988810E94D7 +:1013E000370989810E9437098A810E9437098B81D8 +:1013F000DF91CF910C943709CF93DF93EC018DEF00 +:101400000E94370989E00E94370981E00E9437096C +:1014100088810E94370980E00E9437098A810E94F2 +:1014200037098B810E9437098C810E9437098D8191 +:101430000E9437098E810E9437098F81DF91CF91F9 +:101440000C9437090C941409EF92FF920F931F9399 +:10145000CF938C010E9436247C01C0E0C7010E941A +:101460004E248017910798F40E9414099C012F3F85 +:101470008FEF380751F02D3041F02A3041F0EC2F3A +:10148000F0E0EA53FD4F2083CF5FC73138F3EC2FF4 +:10149000F0E0EA53FD4F108286EC92E0CF911F916D +:1014A0000F91FF90EF9008950C94370981B3881F36 +:1014B0008827881F0895879A8F9A089585B780682E +:1014C00085BF85B7806885BF0E945B0A86988E9A23 +:1014D00081988998559A5D980C94FB08879A8F9803 +:1014E00008958FB18695817008958FB186FB882706 +:1014F00080F908958093DE020895CF93DF93CAEABE +:10150000D2E00E94220A8F3F2FEF920759F09F935B +:101510008F93DF93CF930E9494070F900F900F90BB +:101520000F90EFCFDF91CF910895CF93DF93FC0120 +:101530008491EF012196882321F00E94540AFE0134 +:10154000F7CF2FEF89E698E1215080409040E1F7F6 +:1015500000C0000084E690E00E94240A8093DF022D +:101560009093E0029F938F938DEA92E09F938F93E5 +:101570000E9494070E947D0A0F900F900F900F9089 +:101580008091DF029091E002DF91CF9108950E9457 +:10159000021890931501809314010E94901D80E021 +:1015A00091E00E94FD170E946E0A0E94750A811147 +:1015B000FCCF80E992E00E94FB062FEF85EB95E3DC +:1015C000215080409040E1F700C000008CE892E09C +:1015D0000E94950AEFEFFBE42DE1E150F04020403E +:1015E000E1F700C000000E947D0A88E892E00E94B6 +:1015F000950AFC018081863721F084E892E00C9402 +:10160000950A08958BE692E00E94FB0685E692E03B +:101610000E94950A0E945B0A0E94901D809114010D +:10162000909115010C94FD170C94AA0F8F929F9224 +:10163000AF92BF92CF92DF92EF92FF920F931F93E0 +:10164000CF93DF9392E0B92E0EEB14E024ECE22E60 +:1016500024E0F22EAA24A39433E0932E4CEAC42E65 +:1016600044E0D42E0E94220AEC01019609F441C004 +:101670008091E3028130F9F028F0823009F1833063 +:1016800021F134C0CE3FD10519F4A092E302EACF94 +:10169000C038D10528F4DF93CF93FF92EF9204C0B6 +:1016A000DF93CF931F930F930E9494070F900F9097 +:1016B0000F900F90D7CF2297C9F4B092E302D2CF08 +:1016C0002197A1F49092E302CDCF8091580380FF3F +:1016D0000AC0DF93CF93DF92CF920E9494070F90BE +:1016E0000F900F900F908C2F0E947A0A1092E302B5 +:1016F000B9CF8091E502811121C08091E40281116E +:101700001DC00E94710A81110AC00E9402188A50ED +:10171000914029F00E94901D8AE091E00DC00E9446 +:10172000710A882359F00E9402188651914031F0C5 +:101730000E94901D86E191E00E94FD178091E102D8 +:101740009091E2020E944E24893E23E0920708F421 +:1017500061C028EE33E0B9010E94DD2C629FC00118 +:10176000639F900D729F900D11242091E1023091A2 +:10177000E202820F931F9093E2028093E1020E94A3 +:101780004810833011F481E001C080E00E94990F7D +:101790000E94422428EE33E040E050E00E94052DF4 +:1017A00049015A018CE3C82ED12CE12CF12CCA013D +:1017B000B901A70196010E94052D672B682B692BA3 +:1017C00049F50E9411102091580320FF23C09F93D8 +:1017D0008F931F921F92C501B40120E13EE040E0CB +:1017E00050E00E94052DC22FA70196010E94052DF1 +:1017F0003F932F931F92CF9387E994E09F938F930A +:101800000E9494078DB79EB70A960FB6F8949EBFB4 +:101810000FBE8DBF0E94710A811107C00E94750A18 +:10182000882319F06E9A769802C06E9A769ADF91A4 +:10183000CF911F910F91FF90EF90DF90CF90BF90CD +:10184000AF909F908F9008958F929F92AF92BF928A +:10185000CF92DF92EF92FF921F93CF93DF9300D04E +:1018600000D0CDB7DEB7833109F48CC008F05BC07F +:101870008B3009F466C08C3009F48FC0853009F0D4 +:10188000FBC10E94422428EE33E040E050E00E9479 +:10189000052D49015A010E9411109F938F9386EEE6 +:1018A00092E09F938F930E949407C501B40120E1B9 +:1018B0003EE040E050E00E94052D5F934F933F9340 +:1018C0002F9320EE32E03F932F9369837A838B83AB +:1018D0009C830E9494078CE3C82ED12CE12CF12C20 +:1018E00069817A818B819C81A70196010E94052DD7 +:1018F0005F934F933F932F938AED92E09F938F9343 +:101900000E949407C501B401A70196010E94052D0C +:101910009F938F937F936F9384ED92E09F938F9328 +:101920000E94940740C1883361F020F4883109F4A3 +:1019300040C1A2C1873409F46DC18C3409F456C189 +:101940009BC183E794E00E94FB068EE594E00E9431 +:10195000FB0684E494E00E94FB068DE194E00E9483 +:10196000FB0682E094E00E94FB0680EF93E00E9479 +:10197000FB061091E50211117DC180ED93E00E94FC +:10198000FB067EC10E94C70A88EB92E00E94950A7E +:1019900082EB92E00E94950A6BC187EB93E00E9474 +:1019A000FB060E9402188A50914019F08FE291E0E4 +:1019B00002C089E291E09F938F9389EA93E09F931D +:1019C0008F930E9494078091E4021F928F938AE97B +:1019D00093E09F938F930E9494070E94710A0FB621 +:1019E000F894DEBF0FBECDBF811107C00E94750AFB +:1019F000811106C088E391E005C084E391E002C054 +:101A00008BE391E09F938F9380E993E09F938F9373 +:101A10000E9494070E94560A1F928F9385E793E0D5 +:101A20009F938F930E9494078091E5021F928F935A +:101A300084E693E09F938F930E94940780916D03B7 +:101A40000FB6F894DEBF0FBECDBF8823B9F08091EA +:101A50006D038130B1F080916D038230A9F08091E7 +:101A60006D038330A1F080916D03843099F08091F3 +:101A70006D03853091F080E791E011C088E491E03A +:101A80000EC080E491E00BC083E591E008C08BE5D7 +:101A900091E005C085E691E002C082E791E09F9366 +:101AA0008F9385E593E09F938F930E9494078BE437 +:101AB00093E09F938F930E9494070E9448100F9089 +:101AC0000F900F900F900F900F90813059F038F0D9 +:101AD000823059F0833061F485E393E00BC086E4F3 +:101AE00093E008C080E493E005C089E393E002C07E +:101AF00083E393E09F938F930E9494070F900F903E +:101B000081E393E09F938F930E94940780916B03EE +:101B10001F928F9388E193E09F938F930E94940785 +:101B20008091D90081701F928F938EE093E09F93F4 +:101B30008F930E9494070E94422428EE33E040E0F5 +:101B400050E00E94052D69017A019CE3892E912CB9 +:101B5000A12CB12CCA01B901A50194010E94052D47 +:101B60007F936F93C701B60120E13EE040E050E073 +:101B70000E94052D122FA50194010E94052D3F936F +:101B80002F931F921F93C701B60120E831E541E072 +:101B900050E00E94052D3F932F9381EF92E09F9399 +:101BA0008F930E9494070FB6F894DEBF0FBECDBF8F +:101BB00061C08091E502811162C01091E40211239D +:101BC00039F089EC92E00E94FB061092E40258C0C2 +:101BD0008FEB92E00E94FB0681E08093E4020E947A +:101BE000901D86E191E00E94FD1744C00E94560AB4 +:101BF000182F882341F00E94C70A81E08093680370 +:101C00008093E5023DC00E94020B1092680310927F +:101C1000E50230C08091E502811102C00E94C70A2E +:101C20008EE592E00E94950A83E592E00E94950A73 +:101C30008FE392E00E94950A88E392E00E94950A61 +:101C40008EE292E00E94950A87E292E00E94950A55 +:101C50008DE192E00E94950A83E192E00E94950A4C +:101C60008DE092E00E94950A8091E502811102C008 +:101C70000E94020B11E004C01091E50201C010E0C7 +:101C8000812F0F900F900F900F90DF91CF911F91A8 +:101C9000FF90EF90DF90CF90BF90AF909F908F908C +:101CA0000895CF93C82F0E94FA22827291E009F41E +:101CB00090E04C2F50E0FA013497E934F10508F038 +:101CC000D0C0EA5AFF4F0C94272D8BE12DC1911102 +:101CD000CCC081E629C19111CAC082E625C191110B +:101CE000C8C083E621C19111C6C084E61DC191110F +:101CF000C4C085E619C19111C2C086E615C1911113 +:101D0000C0C087E611C19111BEC088E60DC1911116 +:101D1000BCC089E609C19111BAC08AE605C191111A +:101D2000B8C08BE601C19111B6C08CE6FDC091111F +:101D3000B4C08DE6F9C09111B2C08EE6F5C0911124 +:101D4000B0C08FE6F1C09111AEC080E7EDC0911137 +:101D5000ACC081E7E9C09111AAC082E7E5C091114A +:101D6000A8C083E7E1C09111A6C084E7DDC091114E +:101D7000A4C085E7D9C09111A2C086E7D5C0911152 +:101D8000A0C087E7D1C091119EC088E7CDC0911156 +:101D90009CC089E7C9C091119AC08AE7C5C091115A +:101DA00098C081E3C1C0911196C082E3BDC091117A +:101DB00094C083E3B9C0911192C084E3B5C091117E +:101DC00090C085E3B1C091118EC086E3ADC0911182 +:101DD0008CC087E3A9C091118AC088E3A5C0911186 +:101DE00088C089E3A1C0911186C080E39DC088E0CE +:101DF0009BC089E099C080E297C091117EC08DE2BE +:101E000093C091117CC08DE38FC091117AC08BE596 +:101E10008BC0911178C08DE587C0992309F475C0F6 +:101E20008CE782C0992309F472C08CE77DC09111C0 +:101E300070C08BE379C091116EC087E275C09111BB +:101E40006CC080E671C091116AC08CE26DC09111C6 +:101E500068C08EE269C0911166C08FE265C080E003 +:101E600063C080E261C08AE05FC081E45DC082E45B +:101E70005BC083E459C084E457C085E455C086E460 +:101E800053C087E451C088E44FC089E44DC08AE460 +:101E90004BC08BE449C08CE447C08DE445C08EE460 +:101EA00043C08FE441C080E53FC081E53DC082E58D +:101EB0003BC083E539C084E537C085E535C086E59C +:101EC00033C087E531C088E52FC089E52DC08AE59C +:101ED0002BC081E229C080E427C083E225C084E2D0 +:101EE00023C085E221C08EE51FC086E21DC08AE2C4 +:101EF0001BC088E219C089E217C08FE515C08BE2CC +:101F000013C08BE711C08DE70FC08CE50DC08CE5C9 +:101F10000BC08AE309C082E207C08EE705C08CE3EC +:101F200003C08EE301C08FE30E94540A81E0CF9189 +:101F30000895833019F4859A7D9A0895813011F4BB +:101F4000859A06C0823019F4859A8D9A08958598ED +:101F50008D98089581E00E94990F2FEF89E698E10E +:101F6000215080409040E1F700C0000082E00E94D4 +:101F7000990F2FEF89E698E1215080409040E1F7DA +:101F800000C0000081E00E94990F2FEF89E698E1E0 +:101F9000215080409040E1F700C0000082E00E94A4 +:101FA000990F2FEF89E698E1215080409040E1F7AA +:101FB00000C0000080E00E94990F80EC80937C00BC +:101FC00087E080937A0081E980937E0081E08093AE +:101FD0007F008BE380937D00849A8C980895809194 +:101FE000D90080FF1CC090B331B385988D9AEFE97A +:101FF000FFE03197F1F700C000008FB185FB882723 +:1020000080F920B390722F7D292B20BB91B3232F11 +:1020100020729F7D922B91BB91E08927089580E0EB +:102020000895CF93DF9300D0CDB7DEB7849A8C9A12 +:1020300080917A00806880937A008FE99FE0019711 +:10204000F1F700C0000080917A00806480937A00EC +:1020500080917A0086FDFCCF809178009091790084 +:102060009A83898380917A008F7780937A00849A0B +:102070008C9829813A8145E0429FC001439F900D91 +:102080001124805591090F900F90DF91CF91089501 +:102090008091D90080FD0C94EF0F0E9411108C3AB2 +:1020A0002DE0920720F481E08093E60205C0853799 +:1020B0009E4010F01092E6028091E602811102C06B +:1020C00082E0089583E00895CF93C82F0E94B80658 +:1020D0008C2F0E94F51080E0CF910895CF9384B7A4 +:1020E000877F84BF0FB6F894A895809160008861BF +:1020F00080936000109260000FBE90E080E80FB601 +:10210000F89480936100909361000FBE0E9449157E +:102110000E94A6158091E20084608093E20084E62C +:1021200090E10E949623509A589A5198599A78941F +:10213000CFEF80916D03843051F08FE79EE30197DC +:10214000F1F700C000000E94E217C15091F787EE3E +:1021500094E00E94FB060E945E0A0E94140B8BED25 +:1021600094E00E94FB060E9493180E94710A81115C +:1021700003C08AE091E002C086E191E00E94FD1771 +:102180008BEC94E00E94FB060E94710A882319F1EF +:1021900080916D038530F9F487EC94E00E94FB0692 +:1021A0000E94F2080E94C5230E94C5230E94C523F5 +:1021B0000E94C5230E94C5230E94C5230E94C523F7 +:1021C00080916B03882301F30E94EE238823E1F2C0 +:1021D0000E949C13D9CF0E9497180E94E2170E9478 +:1021E000160BD2CF8091F20208959FB7F894109207 +:1021F000E9029FBF90916D03943009F057C0909110 +:10220000E9009F703091EC00232F217030FD20E811 +:10221000922B24E02093E9002091EB0020FF43C0A3 +:102220002091EE0027FF3FC02091E702222321F0FA +:102230002091E80025FF37C01092E70226E0309198 +:10224000E80035FD15C030916D03343061F53091F3 +:10225000EB0035FD28C0215021F481E08093E70296 +:1022600022C0EFE9FFE03197F1F700C00000E7CFAF +:102270008093F1008091E80085FD0AC08091E8001C +:1022800080FFFCCF8091E8008E778093E80006C045 +:102290008FB7F89421E02093E9028FBF9F7090934D +:1022A000E90080E008959F709093E9008FEF089512 +:1022B000CF93DF9300D01F92CDB7DEB79C01809102 +:1022C0006D03843019F593E099833B832A839093BF +:1022D000E9008FEF9091E800815095FD06C095EDE3 +:1022E0009A95F1F700008111F5CF8091E80085FF04 +:1022F0000DC040E050E063E070E0CE0101960E9426 +:10230000B2138091E8008E778093E8000F900F90D1 +:102310000F90DF91CF910895CF93DF9300D01F925C +:10232000CDB7DEB720916D03243021F522E029835B +:102330009B838A8383E08093E9008FEF9091E8008C +:10234000815095FD06C095ED9A95F1F70000811139 +:10235000F5CF8091E80085FF0DC040E050E063E0DC +:1023600070E0CE0101960E94B2138091E8008E7752 +:102370008093E8000F900F900F90DF91CF91089518 +:1023800020916D032430F1F422E02093E9002FEF37 +:102390003091E800215035FD06C035ED3A95F1F752 +:1023A00000002111F5CF2091E80025FF0BC040E08F +:1023B00050E065E070E00E94B2138091E8008E77F3 +:1023C0008093E8000895CF93DF9320916D0324302C +:1023D00039F521E02093E9002FEF3091E8002150FA +:1023E00035FD06C035ED3A95F1F700002111F5CF26 +:1023F0002091E80025FF14C0EC0140E050E068E0C7 +:1024000070E00E94B2138091E8008E778093E8001C +:1024100088E0FE01AAEEB2E001900D928A95E1F704 +:10242000DF91CF91089582E095E00E94FB068091B4 +:102430006C03811109C00E9449150E94A615809164 +:10244000E20084608093E20008958EEF94E00E94A1 +:10245000FB0610926C0308958AEF94E00C94FB063F +:102460002091E8022F5F822F62E30E94D12C9923F2 +:1024700019F02093E80208951092E8028091E90291 +:10248000882371F180916D03843041F58091E900DA +:102490008F702091EC00922F917020FD90E8892B95 +:1024A00094E09093E9009091EB0090FF14C090911C +:1024B000EE0097FF10C09091E80095FF03C01092C6 +:1024C000F100F9CF9091E80090FF05C09091E800ED +:1024D0009E779093E8008F708093E9001092E90254 +:1024E000089542E061EC81E00E94C31442E061EC97 +:1024F00082E00E94C31442E061EC83E00E94C314B6 +:1025000042E261EC84E00C94C31480916F03833049 +:1025100009F453C030F4813071F0823009F48CC07A +:1025200008958A3009F478C08B3009F45EC0893090 +:1025300009F09AC020C080916E03813A09F094C0DE +:102540008091E800877F8093E800809172039091EA +:102550007303892B21F468E08AEE92E003C060E007 +:1025600080E090E070E00E94FF138091E8008B779C +:102570008093E800089580916E03813209F074C061 +:102580008091720390917303892B09F06DC0809143 +:10259000E800877F8093E8008091E80082FD05C015 +:1025A00080916D038111F8CF5FC08091F10080931D +:1025B000F2028091E8008B7753C080916E03813ADC +:1025C00009F052C08091720390917303892B09F036 +:1025D0004BC08091E800877F8093E8008091E800FD +:1025E00080FFFCCF8091200136C080916E03813244 +:1025F000D9F58091720390917303892BA9F580918D +:10260000E800877F8093E8000E94F81480917003AF +:10261000809320010C94901D80916E03813221F5EE +:102620008091E800877F8093E8000E94F8148091F1 +:1026300071038093F302089580916E03813AA1F4AF +:102640008091E800877F8093E8008091E80080FF18 +:10265000FCCF8091F3028093F1008091E8008E77A7 +:102660008093E8000C94F8140895089586EF94E0A0 +:102670000E94FB060C9435130C94022482EF94E024 +:102680000E94FB060C943C13292F3327233031057D +:10269000C9F064F42130310581F02230310509F0B0 +:1026A00043C084E790E02EE235E042C0213231059C +:1026B000F1F02232310541F137C082E190E022EAA7 +:1026C00035E036C099278130910541F0823091057F +:1026D00041F0892B49F5EAE2F5E005C0EAE1F5E0D1 +:1026E00002C0E6E0F5E0849190E09F0121C06430F3 +:1026F000D8F4E62FF0E0EE0FFF1FE857FE4F2081E1 +:10270000318189E090E014C0643070F470E0FB0126 +:10271000EE0FFF1FE058FE4F20813181FB01E4588E +:10272000FE4F808190E004C080E090E020E030E047 +:10273000FA0131832083089580E189BD82E189BD5A +:1027400009B400FEFDCF8091D8008F7D8093D80022 +:102750008091E00082608093E0008091E00081FD44 +:10276000FCCF0895CF92DF92EF92FF920F931F93C9 +:10277000CF93DF93EC018B017A010E941715811131 +:1027800035C0E114F10439F0F70180819181081B13 +:10279000190BC80FD91FC12CD12C0115110529F116 +:1027A0008091E80085FD18C08091E8008E778093C5 +:1027B000E8000E94E217E114F10449F0F70180817A +:1027C0009181C80ED91ED182C08285E00FC00E94BF +:1027D0001715882311F30AC089918093F1000150E5 +:1027E0001109FFEFCF1ADF0AD8CF80E0DF91CF9138 +:1027F0001F910F91FF90EF90DF90CF90089520915F +:102800007403309175032617370748F06115710579 +:1028100039F42091E8002E772093E80001C0B90137 +:1028200040E061157105A9F120916D03222309F49F +:1028300043C0253009F442C02091E80023FD40C088 +:102840002091E80022FD32C02091E80020FFE9CF6E +:102850004091F3002091F20030E0342BFC01CF01D5 +:102860006115710559F02830310540F4819180934C +:10287000F100615071092F5F3F4FF1CF41E02830E7 +:10288000310509F040E02091E8002E772093E80020 +:10289000C8CF4111C9CF0AC080916D03882361F070 +:1028A000853061F08091E80083FD0AC08091E800E6 +:1028B00082FFF2CF80E0089582E0089583E00895DA +:1028C00081E008952091740330917503261737072E +:1028D00048F06115710539F42091E8002E772093B6 +:1028E000E80001C0B901FC0120E06115710591F11A +:1028F00080916D03882309F440C0853009F43FC0FE +:102900008091E80083FD3DC08091E80082FD2FC0EA +:102910008091E80080FFE9CF2091F3008091F200E0 +:1029200090E0922B6115710559F08830910540F4C3 +:1029300024912093F1003196615071090196F2CFF4 +:1029400021E0089709F020E08091E8008E778093DD +:10295000E800CBCF2111CCCF0AC080916D03882332 +:1029600061F0853061F08091E80083FD0AC08091BC +:10297000E80082FFF2CF80E0089582E0089583E0CE +:10298000089581E00895982F973058F59093E900C5 +:10299000981739F07091EC002091ED005091F00003 +:1029A00003C0242F762F50E021FF19C03091EB0097 +:1029B0003E7F3093EB003091ED003D7F3093ED0092 +:1029C0003091EB0031603093EB007093EC0020937A +:1029D000ED005093F0002091EE0027FF07C09F5FAD +:1029E000D3CF8F708093E90081E0089580E008954F +:1029F00080916E0387FF11C08091E80082FD05C0C1 +:102A000080916D038111F8CF11C08091E8008B7720 +:102A10000BC080916D03882349F08091E80080FF0E +:102A2000F8CF8091E8008E778093E8000895209198 +:102A3000E4003091E50095E64091EC00842F817030 +:102A400040FF22C08091E80080FD1CC080916D0392 +:102A5000882391F0853091F08091EB0085FD10C0C6 +:102A60004091E4005091E5004217530729F39A0181 +:102A7000915011F784E0089582E0089583E008956D +:102A800081E0089580E008954091E80042FFDECFA4 +:102A900008950E94B7150E94BF15E0EEF0E0808116 +:102AA00081608083E8EDF0E080818F77808319BCBE +:102AB000A7EDB0E08C918E7F8C9380818F7E808398 +:102AC00010926C0308950F931F93CF93DF930E948E +:102AD000B7150E94BF15C8EDD0E088818F77888335 +:102AE00088818068888388818F7D888319BC109253 +:102AF0006D031092690310926B0310926A0300EE4B +:102B000010E0F80180818B7F8083888181608883D9 +:102B100042E060E080E00E94C314E1EEF0E08081DA +:102B20008E7F8083E2EEF0E080818160808380810F +:102B300088608083F80180818E7F808388818061B6 +:102B40008883DF91CF911F910F910895E8EDF0E018 +:102B500080818F7E8083E7EDF0E0808181608083DB +:102B600084E082BF81E080936C030C946315E8EDF0 +:102B7000F0E080818E7F80831092E20008951092B1 +:102B8000DA001092E10008951F920F920FB60F9293 +:102B900011242F933F934F935F936F937F938F9362 +:102BA0009F93AF93BF93EF93FF938091E10082FFD8 +:102BB0000BC08091E20082FF07C08091E1008B7F13 +:102BC0008093E1000E9430128091DA0080FF1FC0E4 +:102BD0008091D80080FF1BC08091DA008E7F8093A7 +:102BE000DA008091D90080FF0DC080E189BD82E1CB +:102BF00089BD09B400FEFDCF81E080936D030E9482 +:102C0000131205C019BC10926D030E942512809109 +:102C1000E10080FF19C08091E20080FF15C0809123 +:102C2000E2008E7F8093E2008091E20080618093D9 +:102C3000E2008091D80080628093D80019BC85E0C2 +:102C400080936D030E9436138091E10084FF30C0B1 +:102C50008091E20084FF2CC080E189BD82E189BDC2 +:102C600009B400FEFDCF8091D8008F7D8093D800FD +:102C70008091E1008F7E8093E1008091E2008F7E61 +:102C80008093E2008091E20081608093E200809175 +:102C90006903882311F084E007C08091E30087FD79 +:102CA00002C081E001C083E080936D030E943E1367 +:102CB0008091E10083FF24C08091E20083FF20C067 +:102CC0008091E100877F8093E10082E080936D0333 +:102CD000109269038091E1008E7F8093E1008091E2 +:102CE000E2008E7F8093E2008091E2008061809319 +:102CF000E20042E060E080E00E94C3140E942C12D7 +:102D0000FF91EF91BF91AF919F918F917F916F91C3 +:102D10005F914F913F912F910F900FBE0F901F9099 +:102D200018951F93CF93DF93CDB7DEB7AA970FB651 +:102D3000F894DEBF0FBECDBFEEE6F3E088E08E0F65 +:102D40009091F10091938E13FBCF0E948512809198 +:102D5000E80083FF1FC180916E0390916F03492F9C +:102D600050E04A30510508F015C1FA01E156FF4F15 +:102D70000C94272D803881F0823809F00BC18091A6 +:102D800072038F708093E9008091EB0085FB8827A8 +:102D900080F91092E90006C080916A0390916B035C +:102DA000911182609091E800977F9093E800809362 +:102DB000F1001092F100C8C0282F2D7F09F0EAC061 +:102DC000882319F0823061F0E5C080917003813072 +:102DD00009F0E0C0933009F080E080936B032BC0D2 +:102DE00080917003811127C0809172038F7009F464 +:102DF000D1C08093E9002091EB0020FF1CC09330EC +:102E000021F48091EB00806214C09091EB009061FE +:102E10009093EB0021E030E0A90102C0440F551F60 +:102E20008A95E2F74093EA001092EA008091EB0065 +:102E300088608093EB001092E9008091E800877F22 +:102E400086C08111A7C0109170031F778091E300A5 +:102E50008078812B8093E3008091E800877F8093C6 +:102E6000E8000E94F8148091E80080FFFCCF809178 +:102E7000E30080688093E300111102C082E001C08A +:102E800083E080936D0386C08058823008F082C052 +:102E900080917003909171038C3D53E0950779F513 +:102EA00083E08A838AE289834FB7F894DE01139620 +:102EB00020E03EE051E2E32FF0E050935700E49130 +:102EC00020FF03C0E295EF703F5FEF708E2F90E020 +:102ED000EA3010F0C79601C0C0968D939D932F5F86 +:102EE000243149F74FBF8091E800877F8093E80045 +:102EF0006AE270E0CE0101960E94FF1314C0AE0199 +:102F00004F5F5F4F609172030E944413BC01892B95 +:102F100009F440C09091E800977F9093E800898180 +:102F20009A810E9462148091E8008B778093E80078 +:102F300031C0803879F58091E800877F8093E80080 +:102F4000809169038093F1008091E8008E778093EF +:102F5000E8000E94F8141EC081111CC090917003FB +:102F60009230C0F48091E800877F8093E8009093CE +:102F700069030E94F81480916903811106C0809151 +:102F8000E30087FD02C081E001C084E080936D030F +:102F90000E9471128091E80083FF0AC08091E800CE +:102FA000877F8093E8008091EB0080628093EB0044 +:102FB000AA960FB6F894DEBF0FBECDBFDF91CF91BA +:102FC0001F910895CF9380916D038823A1F0C09144 +:102FD000E900CF709091EC00892F817090FD80E81E +:102FE000C82B1092E9008091E80083FD0E949116A1 +:102FF000CF70C093E900CF9108959093F902809328 +:10300000F80208958091F8029091F9020895E091F4 +:10301000F802F091F902309721F00190F081E02D53 +:10302000099480E00895EF92FF920F931F93CF933E +:10303000DF93E091F802F091F9023097B1F18C0141 +:103040000280F381E02D09958091580382FF2DC005 +:1030500080FF04C081EA96E00E94FB06E80118E0C8 +:103060008BE9E82E86E0F82E8091580380FF0BC094 +:1030700088811F928F93FF92EF920E9494070F9086 +:103080000F900F900F90115021961111EDCF80915C +:10309000580380FF0AC089E996E0DF91CF911F9124 +:1030A0000F91FF90EF900C94FB06DF91CF911F9151 +:1030B0000F91FF90EF900895E091F802F091F902DE +:1030C000309721F00480F581E02D09940895209136 +:1030D000F6023091F7028217930771F09093F7028E +:1030E0008093F602E091F802F091F902309721F016 +:1030F0000680F781E02D099408952091F402309123 +:10310000F5028217930771F09093F5028093F40211 +:10311000E091F802F091F902309721F00084F185F6 +:10312000E02D099408950E942D240C94B007CF92AD +:10313000DF92EF92FF920F931F93CF93DF9300D014 +:1031400000D000D0CDB7DEB70E94DB078BEFC82ED2 +:1031500082E0D82E00E010E0E02E802F0E94BB0815 +:10316000F60141916F01F42EF826B1F40F5F1F4F65 +:103170000031110589F78FEF89838A831B820E94B2 +:1031800036248160782F9D838C8349815A816B819D +:103190008D810E94561947C09091580391FF04C039 +:1031A0008E830E94C4088E8120E030E04F2D50E0D5 +:1031B000922FBA01022E02C0759567950A94E2F724 +:1031C00060FF2BC02983EA8221E030E0690102C060 +:1031D000CC0CDD1C9A95E2F790E08C219D21892B87 +:1031E00009F420E02B830E9436248160782F9D8390 +:1031F0008C8349815A816B818D810E945619498146 +:103200005A816B817C818D810E94B223F801E55047 +:10321000FD4F8081C826C08206C02F5F3F4F2830F7 +:10322000310531F6A3CF0E94B1230E9425271091CA +:10323000FA020E940718181741F10E94071880939C +:10324000FA029091580392FF0EC090FF0CC01F929B +:103250008F9383EB96E09F938F930E9494070F9038 +:103260000F900F900F908091FA0226960FB6F89467 +:10327000DEBF0FBECDBFDF91CF911F910F91FF90A9 +:10328000EF90DF90CF900C94C32326960FB6F8945E +:10329000DEBF0FBECDBFDF91CF911F910F91FF9089 +:1032A000EF90DF90CF9008950C94F408CF93DF93C4 +:1032B000CDB7DEB72B970FB6F894DEBF0FBECDBFEC +:1032C000942F4F83252F588769877A878B874A8564 +:1032D0005B85452B21F02F3F09F59F3FF9F4DE0177 +:1032E000119686E0FD0111928A95E9F785E0FE01CD +:1032F000379601900D928A95E1F749815A816B8149 +:103300007C818D819E810E9433202B960FB6F8948C +:10331000DEBF0FBECDBFDF91CF9108954F8158859D +:1033200069857A858B850E94B223D9CFCF93882374 +:1033300009F4A4C0C82F8CEF8C0F813A48F48C2F6D +:103340000E944B2A81119AC08C2F0E94BE220CC071 +:1033500080E28C0F883058F4C77081E001C0880F7C +:10336000CA95EAF70E94FD22CF910C9441238BE588 +:103370008C0F833078F4C53A29F0C63A31F083E8EF +:1033800090E005C081E890E002C082E890E0CF9133 +:103390000C94671888E58C0F853108F06FC0C83A27 +:1033A00061F1C93A69F1CA3A71F1CB3A79F1CC3A93 +:1033B00081F1CD3A89F1CE3A91F1CF3A99F1C13B01 +:1033C000A1F1C03BA9F1C23BB1F1C33BB9F1C43B90 +:1033D000C1F1C53BC9F1C63BD1F1C73BD9F1C83BEF +:1033E000E1F1C93BE9F1CA3BF1F1CB3BF9F1CC3B4F +:1033F00009F43FC080E090E03EC082EE90E03BC028 +:1034000089EE90E038C08AEE90E035C085EB90E020 +:1034100032C086EB90E02FC083EB90E02CC084EBB1 +:1034200090E029C087EB90E026C08CEC90E023C0B0 +:103430008DEC90E020C083E891E01DC08AE891E027 +:103440001AC082E991E017C084E991E014C081E2DA +:1034500092E011C083E292E00EC084E292E00BC0E1 +:1034600085E292E008C086E292E005C087E292E041 +:1034700002C08AE292E0CF910C947D18CF9108951A +:10348000882329F19CEF980F913A18F40E94DB22CF +:103490000DC090E2980F983058F4877091E001C009 +:1034A000990F8A95EAF7892F0E9403230C944123F0 +:1034B0009BE5980F933020F480E090E00C9467181F +:1034C000885A853120F480E090E00C947D180895AE +:1034D000882321F00E94FD220C9441230895882323 +:1034E00021F00E9403230C9441230895CF92DF9290 +:1034F000EF92FF920F931F93CF93DF9300D000D0F2 +:1035000000D0CDB7DEB725E0FC01DE0111960190B9 +:103510000D922A95E1F7FC0140813181F2802581ED +:1035200022952F7063817481672B09F4D8C23F3FC5 +:1035300019F44F3F09F4D3C26C0149833A8389815E +:103540009A812E830E947D22182F092F0E947C22AF +:103550000E948C21E02FE295EF70F0E0E755FF4FDD +:103560002E810C94272D802F807F902F9F70092F04 +:10357000882311F00295007FFF2049F0002309F411 +:103580005FC2802F0E9410230E94412359C2812FC5 +:103590000E94401A002309F4A2C2802F0E94162321 +:1035A00026960FB6F894DEBF0FBECDBFDF91CF9148 +:1035B0001F910F91FF90EF90DF90CF900C944123DB +:1035C000802F807F902F9F70092F803211F00295FD +:1035D000007F112319F0113001F129C0FF20A9F05B +:1035E000802F222349F1213039F526960FB6F89421 +:1035F000DEBF0FBECDBFDF91CF911F910F91FF9026 +:10360000EF90DF90CF900C942023222319F02130EB +:1036100009F465C20E9429232CC0FF20E9F026305E +:1036200008F05DC20E94FA22802329F022C0FF2008 +:10363000F1F0211115C0802F26960FB6F894DEBF49 +:103640000FBECDBFDF91CF911F910F91FF90EF90F3 +:10365000DF90CF900C94681A253008F040C209C062 +:10366000F601858180FFECC18F708583E4CF211145 +:10367000FBC1802F69C1202F26952695237030E04D +:103680002115310521F021303105C9F028C2FF2074 +:1036900021F0812F902F937002C080E090E0269659 +:1036A0000FB6F894DEBF0FBECDBFDF91CF911F9153 +:1036B0000F91FF90EF90DF90CF900C946718FF2050 +:1036C00021F0812F902F937002C080E090E0269629 +:1036D0000FB6F894DEBF0FBECDBFDF91CF911F9123 +:1036E0000F91FF90EF90DF90CF900C947D18812F79 +:1036F000FF2019F00E94AB2502C00E9413262696D7 +:103700000FB6F894DEBF0FBECDBFDF91CF911F91F2 +:103710000F91FF90EF90DF90CF900C949826802F20 +:10372000837009F078C0F110DAC1812F82958695F7 +:103730008770880F880F912F9F70C92ED12CE12C94 +:10374000F12C082E04C0CC0CDD1CEE1CFF1C0A94CE +:10375000D2F714FF12C04FE050E060E070E004C008 +:10376000440F551F661F771F8A95D2F7CB01BA0108 +:10377000609570958095909503C060E070E0CB01F6 +:10378000202F269526952370422F50E04230510578 +:10379000D1F04330510559F16C297D298E299F299B +:1037A0004130510541F126960FB6F894DEBF0FBEA9 +:1037B000CDBFDF91CF911F910F91FF90EF90DF90E0 +:1037C000CF900C94A1216C297D298E299F292696C2 +:1037D0000FB6F894DEBF0FBECDBFDF91CF911F9122 +:1037E0000F91FF90EF90DF90CF900C94B3210E9447 +:1037F000A121C701B60126960FB6F894DEBF0FBE11 +:10380000CDBFDF91CF911F910F91FF90EF90DF908F +:10381000CF900C948F21FF2019F0802F817001C070 +:103820008695882309F45BC1812F829586958770E0 +:10383000880F880F912F9F70C92ED12CE12CF12C6D +:10384000082E04C0CC0CDD1CEE1CFF1C0A94D2F721 +:1038500014FF12C04FE050E060E070E004C0440F7D +:10386000551F661F771F8A95D2F7CB01BA01609565 +:1038700070958095909503C060E070E0CB01202F9B +:10388000269526952370422F50E042305105D1F005 +:103890004330510559F16C297D298E299F294130EA +:1038A000510541F126960FB6F894DEBF0FBECDBF8D +:1038B000DF91CF911F910F91FF90EF90DF90CF900C +:1038C0000C9458226C297D298E299F2926960FB6A3 +:1038D000F894DEBF0FBECDBFDF91CF911F910F9146 +:1038E000FF90EF90DF90CF900C946A220E945822B4 +:1038F000C701B60126960FB6F894DEBF0FBECDBF46 +:10390000DF91CF911F910F91FF90EF90DF90CF90BB +:103910000C944622103F41F118F4103E48F48BC03D +:10392000123F09F450C0D8F1133F09F460C083C0BE +:103930001F70802F8F71FF2021F00E94DF21812FC7 +:103940007BCE0E940022812F26960FB6F894DEBF10 +:103950000FBECDBFDF91CF911F910F91FF90EF90E0 +:10396000DF90CF900C946F1AFF20A9F0253008F05B +:10397000B6C0802F8F7126960FB6F894DEBF0FBEAB +:10398000CDBFDF91CF911F910F91FF90EF90DF900E +:10399000CF900C942522263008F0A1C0EACFFF205A +:1039A000A1F0802F8F7126960FB6F894DEBF0FBE60 +:1039B000CDBFDF91CF911F910F91FF90EF90DF90DE +:1039C000CF900C94DF21FF2061F3802F8F7126961A +:1039D0000FB6F894DEBF0FBECDBFDF91CF911F9120 +:1039E0000F91FF90EF90DF90CF900C940022FF207A +:1039F00091F0802F8F7126960FB6F894DEBF0FBE20 +:103A0000CDBFDF91CF911F910F91FF90EF90DF908D +:103A1000CF900C94CA2126960FB6F894DEBF0FBE45 +:103A2000CDBFDF91CF911F910F91FF90EF90DF906D +:103A3000CF900C94C521FF20A1F0222309F4B1CF2F +:103A4000812F26960FB6F894DEBF0FBECDBFDF9153 +:103A5000CF911F910F91FF90EF90DF90CF900C943A +:103A60009619222309F4B1CF812F26960FB6F89428 +:103A7000DEBF0FBECDBFDF91CF911F910F91FF90A1 +:103A8000EF90DF90CF900C94401A402F4F70612F31 +:103A9000C6010E94252526960FB6F894DEBF0FBEFC +:103AA000CDBFDF91CF911F910F91FF90EF90DF90ED +:103AB000CF900C94D720402F4F70612FC6012696CF +:103AC0000FB6F894DEBF0FBECDBFDF91CF911F912F +:103AD0000F91FF90EF90DF90CF900C9428252696C1 +:103AE0000FB6F894DEBF0FBECDBFDF91CF911F910F +:103AF0000F91FF90EF90DF90CF9008950E941D23CB +:103B00000E94EC220E9441230E94CA270E9498260C +:103B100080E090E00E94671880E090E00C947D18AF +:103B20000E940D230C947E1D0E947D22292F229538 +:103B30002F7030E02C3031054CF42A3031056CF414 +:103B4000225031092230310588F407C02C3031056C +:103B500049F02F30310531F009C0803E48F0803FF8 +:103B600029F406C093FB882780F9089580E0089522 +:103B700081E00895CF93DF9300D000D01F92CDB79E +:103B8000DEB70F900F900F900F900F90DF91CF91B5 +:103B90000895CF93DF9300D000D000D0CDB7DEB72B +:103BA00026960FB6F894DEBF0FBECDBFDF91CF9142 +:103BB00008951F93CF93DF93C0910B0316E080917C +:103BC0000C03C81799F0D0E01C9FF0011D9FF00D69 +:103BD0001124E35FFC4F40815181628173818481B4 +:103BE00095810E94C91D2196C770E9CFDF91CF91C1 +:103BF0001F91089540913D0350913E0360913F0312 +:103C00007091400380914103909142030C94C91D2F +:103C10008091420382958F7009F054C080913F03D8 +:103C2000882309F44FC080910B03A0910C0360918D +:103C30003D0370913E034091400350914103B6E033 +:103C40008A1709F43FC090E041155105C1F17F3F4B +:103C500011F46F3FA1F1B89FF001B99FF00D11244D +:103C6000E35FFC4F218172132AC02081621327C0B9 +:103C70002281211124C0238134812417350710F4B7 +:103C800021503109241B350B2C323140C0F42091D6 +:103C900042032F7020612093420326E0289FF00109 +:103CA000299FF00D1124EE5EFC4F80818F708061A2 +:103CB00080838DE393E00E94761A0C94D91D0196BF +:103CC0008770BECF0895CF92DF92EF92FF920F934D +:103CD0001F93CF93DF93CDB7DEB762970FB6F894FB +:103CE000DEBF0FBECDBF8C0185E0F801DE011D9661 +:103CF00001900D928A95E1F7D8014C9111965C9153 +:103D0000119712966C9112971396CD90DC901497A0 +:103D100030913D0370913E038091400390914103A7 +:103D2000009709F473C17F3F19F43F3F09F46EC156 +:103D3000E0903F03EE2009F4C5C020914203C8166D +:103D4000D90650F0F601E81BF90BCF01FF24F394DC +:103D50008C329140C8F009C0809590958C0D9D1DC6 +:103D6000FF24F3948C32914078F0F12C207F09F0FD +:103D7000C6C07C2DD98AC88A89890E94BA1D8DE364 +:103D800093E00E94761AB1C0822F807F09F045C06F +:103D9000751313C0341311C061110FC02F7020614F +:103DA000209342030E94FA1D8DE393E00E94761A4D +:103DB00080914203F80185832EC0CD2819F15F3F21 +:103DC00011F44F3FF9F0F62E61111CC080910B03E6 +:103DD00020910C0336E0821709F45BC090E0389F15 +:103DE000F001399FF00D1124E35FFC4F71815713EF +:103DF00006C07081471303C07281711103C0019620 +:103E00008770E9CFF62E662309F41DC18091420325 +:103E1000816080934203F12C16C1751309C03413DD +:103E200007C0611105C080914203F8018583C8C0B5 +:103E30004D875E878D859E856A8B0E94941D6A8959 +:103E40008823E1F16623D1F120914203822F8295EC +:103E50008F7090E0029774F080913D0390913E0343 +:103E600098878F831986DB86CA862C87CE010796B2 +:103E70000E94761A86E0F801ADE3B3E001900D925E +:103E80008A95E1F70E94081E0E94FA1DFF24F39410 +:103E9000DAC04D875E878D859E850E947D22292F01 +:103EA00022952F7030E0223031050CF0BFC09F709A +:103EB00009F0B9C0805E883008F4C5C0C8010E940E +:103EC000761AE4CFC816D90608F453C0F601E81BE9 +:103ED000F90BCF018C32914008F453C0F12C7C2DAA +:103EE000D98AC88A89890E94BA1DEDE3F3E086E089 +:103EF000DF011D928A95E9F70E94FA1DA4C075138F +:103F000014C0341312C0611110C080914203F80133 +:103F10008583C8010E94761A86E0EDE3F3E0DF01B5 +:103F20001D928A95E9F7FE2C8EC04D875E878D85A0 +:103F30009E856A8B0E94941D6A89882309F4BECFEE +:103F4000662309F4BBCF20914203822F82958F70A4 +:103F500090E002970CF48ECF80913D0390913E0348 +:103F60009A8389831B82DD82CC822E83CE010196C7 +:103F70007FCF809590958C0D9D1D8C32914008F0DF +:103F8000ADCFF62E662309F499CF75132EC03413E6 +:103F90002CC02091420320FD1FC0822F82958F707C +:103FA000D9F0D80115962C9315978F3049F08F5F73 +:103FB000982F9295907F822F8F70892B15968C93D6 +:103FC000C8010E94761A86E0F801ADE3B3E00190E3 +:103FD0000D928A95E1F790CF86E0F801ADE3B3E06A +:103FE00001900D928A95E1F72EC04D875E878D85F1 +:103FF0009E850E94941D81113DCF80914203816076 +:1040000080934203C8010E94761A1DC0662309F4FA +:1040100055CF4D875E878D859E850E94941D882390 +:1040200009F44CCF27CF811145CF0DC02430310585 +:104030000CF044CF9F7009F43DCFD80115969C91A8 +:10404000907F09F037CF8F2D62960FB6F894DEBFC0 +:104050000FBECDBFDF91CF911F910F91FF90EF90D9 +:10406000DF90CF9008951F93CF93DF93CDB7DEB746 +:104070002C970FB6F894DEBF0FBECDBF4F83588785 +:1040800069877A878B879C87CE0107960E94631E7B +:10409000882369F08F8198852A853B85232BF1F150 +:1040A0009F3F09F063C08F3F09F060C037C086E0D2 +:1040B000FE013796DE01119601900D928A95E1F787 +:1040C0006F817885EA85FB85309741F17F3F11F458 +:1040D0006F3F21F120910C0330E0C90101968770F8 +:1040E000992740910B0350E08417950709F447C0C6 +:1040F00069837A83FD83EC8396E0929FD001939F3E +:10410000B00D1124A35FBC4FFE01319601900D92BA +:104110009A95E1F780930C030E94D91D16E08091D7 +:104120000B0390910C038917C1F1189FC001112452 +:10413000835F9C4F0E94631E882379F1E0910B03FB +:104140001E9FF0011124E35FFC4F40815181628189 +:104150007381848195810E94C91D80910B0390E039 +:1041600001968770992780930B03D9CF4F8158858B +:1041700069857A858B859C850E94C91DCFCF0E9459 +:10418000901D10920C0310920B03EDE3F3E086E018 +:10419000DF011D928A95E9F7C1CF2C960FB6F894EE +:1041A000DEBF0FBECDBFDF91CF911F910895DF928B +:1041B000EF92FF920F931F93CF93DF93FC01892B14 +:1041C00009F48AC0E12CF12CDD24D394EF0121966F +:1041D0008491853709F461C058F4843708F04EC0E3 +:1041E000843008F06AC08130D1F0823071F174C03F +:1041F000883709F45DC050F4863709F455C0873715 +:1042000009F06AC08E2D0E940A2354C09CE7980FC3 +:10421000903708F061C08F770E94401A50C08F011C +:104220000E5F1F4FFE01849190E2980F983050F47A +:104230008770FD2D01C0FF0F8A95EAF78F2F0E942E +:10424000102314C00E94961913C08F010E5F1F4FD8 +:10425000FE01C49180E28C0F883060F4C7708D2D10 +:1042600001C0880FCA95EAF70E9416230E944123D5 +:10427000E80125C08C2F0E94401AFACF9F012E5FC3 +:104280003F4FFE01C491CC2369F08FE99FE0019775 +:10429000F1F700C00000C150F6CF9F012E5F3F4FE5 +:1042A000FE01F490E9010BC00E94FA22E82E07C03B +:1042B0000E940D230E94412302C00E9496198F2D57 +:1042C000882341F0EFE9FFE03197F1F700C00000EB +:1042D0008150F6CFFE017ACFDF91CF911F910F91E0 +:1042E000FF90EF90DF900895609347037093480329 +:1042F0008093490390934A030E94C1230C947E1D2E +:104300006093430370934403809345039093460363 +:104310000E94C2230C947E1D08950C9474210F9367 +:104320001F93009147031091480320914903309156 +:104330004A03602B712B822B932B1F910F910C94AE +:1043400074210F931F93009147031091480320910C +:10435000490330914A0360237123822393231F91E1 +:104360000F910C9474210F931F93009147031091A8 +:1043700048032091490330914A036027712782271F +:1043800093271F910F910C94742160E070E0CB0192 +:104390000C9480210F931F9341E050E060E070E0A7 +:1043A0008A019B0104C0000F111F221F331F8A9531 +:1043B000D2F7C901B8011F910F910C9480210F937E +:1043C0001F9341E050E060E070E004C0440F551FCF +:1043D000661F771F8A95D2F780914303909144031B +:1043E000A0914503B09146038A019B01082B192B2C +:1043F0002A2B3B2BC901B8011F910F910C948021EE +:104400000F931F9341E050E060E070E004C0440F60 +:10441000551F661F771F8A95D2F740955095609576 +:1044200070958091430390914403A0914503B0910E +:1044300046038A019B01082319232A233B23C90130 +:10444000B8011F910F910C9480210F931F9341E0AD +:1044500050E060E070E004C0440F551F661F771FF6 +:104460008A95D2F78091430390914403A09145032C +:10447000B09146038A019B01082719272A273B2769 +:10448000C901B8011F910F910C9480210F931F93C4 +:10449000009143031091440320914503309146035A +:1044A000602B712B822B932B1F910F910C948021E9 +:1044B0000F931F93009143031091440320914503F0 +:1044C0003091460360237123822393231F910F9120 +:1044D0000C9480210F931F93009143031091440388 +:1044E0002091450330914603602771278227932747 +:1044F0001F910F910C9480210895CF92DF92EF923B +:10450000FF920F931F93CF93DF938C01C0904703CB +:10451000D0904803E0904903F0904A034091430350 +:10452000509144036091450370914603C42AD52AF3 +:10453000E62AF72ACFE1D0E0D701C6010C2E04C04D +:10454000B695A795979587950A94D2F780FF07C0EF +:10455000B8018C2F0E94FA248130910531F4219703 +:1045600058F7B80180E00E94FA24DF91CF911F91A3 +:104570000F91FF90EF90DF90CF900895209121014F +:1045800030912201F90132969FEF40E05191581786 +:1045900089F09F3F19F4511101C0942F4F5F4630AD +:1045A000A9F79F3F39F0F901E90FF11D97FDFA9541 +:1045B0008283089508952091210130912201F9010B +:1045C0003296285F3F4F9081981301C01082319638 +:1045D000E217F307C1F7089581E090E0E09121012F +:1045E000F0912201E80FF91F1082019688309105A1 +:1045F000A9F7089580915703089590915703892B47 +:104600008093570308958095909157038923809351 +:104610005703089580935703089510925703089500 +:1046200090915603892B809356030895809590911D +:1046300056038923809356030895109256030895D4 +:1046400080934D030E94362490934C0380934B0338 +:10465000089510924D0310924C0310924B0308954D +:104660008091210190912201FC0131969C01285FEB +:104670003F4F80E0919191118F5FE217F307D1F7DF +:104680000895E0912101F0912201809157038083E8 +:10469000E0912101F0912201908180915603892BB4 +:1046A000808380914D038823D9F10E943624209184 +:1046B0004B0330914C038217930748F00E94362435 +:1046C00020914B0330914C03821B930B0AC00E9434 +:1046D000362420914B0330914C0320953095820F66 +:1046E000931F8C32914070F08091580380FF08C076 +:1046F0008EEB96E09F938F930E9494070F900F90FC +:104700000E942923E0912101F09122019081809162 +:104710004D03892B80830E94302381110E9429231D +:1047200080912101909122010C94131890939B0188 +:1047300080939A0108958295982F9C7C392F369505 +:104740003695282F237344E0249FC0011124932F12 +:10475000982B292F2A7A2695892F8575880F822BE9 +:1047600008950895CF93DF9300D000D01F92CDB766 +:10477000DEB70F900F900F900F900F90DF91CF91B9 +:104780000895089508950C94541980916D03843010 +:1047900021F11092590320E488E190E00FB6F894DB +:1047A000A895809360000FBE2093600083B7817F3F +:1047B000846083BF83B7816083BF7894889583B713 +:1047C0008E7F83BF0FB6F894A895809160008861B2 +:1047D00080936000109260000FBE0895CF930E94F6 +:1047E000F0080E94DB070E94F208C0E08C2F0E94B4 +:1047F000BB08811104C0CF5FC031C1F701C081E0A7 +:10480000CF9108950C94901D1F920F920FB60F92A6 +:1048100011248F939F93AF93BF938091590381117C +:1048200013C080915A0390915B03A0915C03B091F7 +:104830005D034196A11DB11D80935A0390935B03C4 +:10484000A0935C03B0935D03BF91AF919F918F9153 +:104850000F900FBE0F901F90189582E084BD93E0DB +:1048600095BD9AEF97BD80936E0008952FB7F89489 +:1048700080915A0390915B03A0915C03B0915D031A +:104880002FBF08952FB7F89460915A0370915B037E +:1048900080915C0390915D032FBF0895CF92DF92CA +:1048A000EF92FF920F931F932FB7F89440915A0302 +:1048B00050915B0360915C0370915D032FBF6A01AF +:1048C0007B01EE24FF248C0120E030E0C016D106ED +:1048D000E206F30610F4415051099A01281B390BE6 +:1048E000C9011F910F91FF90EF90DF90CF90089535 +:1048F000CF92DF92EF92FF920F931F932FB7F8940E +:10490000C0905A03D0905B03E0905C03F0905D038D +:104910002FBF97018601061B170B280B390BC616F4 +:10492000D706E806F90618F0C901B80106C0C901A2 +:10493000B80161507109810991091F910F91FF9090 +:10494000EF90DF90CF9008951F920F920FB60F92C5 +:1049500011248F939F93AF93BF9380915A039091AB +:104960005B03A0915C03B0915D030196A11DB11D95 +:1049700080935A0390935B03A0935C03B0935D0311 +:10498000BF91AF919F918F910F900FBE0F901F908D +:1049900018950E944915F8942FEF87EA91E6215067 +:1049A00080409040E1F700C0000087E090EBDC0120 +:1049B0008093760390937703A0937803B093790361 +:1049C0009CE088E10FB6F894A895809360000FBE34 +:1049D00090936000FFCF28E0929FF0011124E80F30 +:1049E000F11DEE58FE4F8491982F90778F7092951D +:1049F0009F700895CF93C82FCB010E94EB24292FDD +:104A000030E0E82FF0E0A90164E0440F551F6A95FB +:104A1000E1F74E2B5F2B4038510519F480E090E010 +:104A200012C088E0C89F200D311D112484E0220FA0 +:104A3000331F8A95E1F7E20FF31FEE0FFF1FE050DF +:104A4000F84985919491CF91089580E090E0089580 +:104A500008958091600380FF0BC06091260185E07E +:104A6000689FB001112475956795759567952BC062 +:104A700081FF09C06091260185E0689FB001112483 +:104A80007595679520C082FF07C06091260185E07B +:104A9000689FB001112417C0909161039923D1F050 +:104AA00060912501961788F72091260185E0289FBF +:104AB00090011124929FA001939F500D112470E04A +:104AC000CA010E94F12C6038710540F4611571052E +:104AD00039F002C065E070E0862F08958FE70895F1 +:104AE00081E008958091600380FF08C060912401F7 +:104AF00070E0759567957595679521C081FF06C033 +:104B00006091240170E07595679519C082FF04C01B +:104B10006091240170E010C0909161039923C1F06D +:104B2000609123019617A0F780912401899FC0010D +:104B3000112470E00E94F12C6038710528F4611591 +:104B4000710521F0862F08958FE7089581E008957B +:104B500061E070E0F4CF803F21F40E942925819527 +:104B600004C0813F29F40E9429258093640308959D +:104B7000823F21F40E942925819504C0833F29F4B6 +:104B80000E942925809363030895893F19F40E94A8 +:104B9000722505C08A3F31F40E9472258195809369 +:104BA000650308958B3F21F40E947225819504C00E +:104BB0008C3F29F40E947225809366030895843FF8 +:104BC00021F480916203816017C0853F21F48091B8 +:104BD0006203826011C0863F21F480916203846089 +:104BE0000BC0873F21F480916203886005C0883F35 +:104BF00031F48091620380618093620308958D3F58 +:104C000021F48091600381600BC08E3F21F480917C +:104C10006003826005C08F3F29F480916003846047 +:104C2000809360030895803F39F48091640387FF87 +:104C30006CC01092640369C0813F29F480916403C1 +:104C40001816BCF362C090916303823F29F497FF6A +:104C50005CC01092630359C0833F19F41916CCF35A +:104C600054C0893F41F48091650318160CF04DC083 +:104C7000109265034AC08A3F29F48091650387FF3B +:104C800044C0F6CF8B3F39F48091660387FF3DC067 +:104C9000109266033AC08C3F29F48091660318167F +:104CA000BCF333C0843F21F4809162038E7F17C030 +:104CB000853F21F4809162038D7F11C0863F21F4EE +:104CC000809162038B7F0BC0873F21F48091620348 +:104CD000877F05C0883F31F4809162038F7E809387 +:104CE000620313C08D3F21F4809160038E7F0BC05F +:104CF0008E3F21F4809160038D7F05C08F3F29F4A2 +:104D0000809160038B7F80936003809163038111A6 +:104D10000EC08091640381110AC0809165038111E6 +:104D200006C080916603811102C01092610308954C +:104D30008091580383FF7EC087EF96E00E94FB06B8 +:104D4000809162031F928F9382EF96E09F938F93DF +:104D50000E94940780EF96E00E94FB068091630317 +:104D6000282F082E000C330B3F938F938DEE96E087 +:104D70009F938F930E9494078BEE96E00E94FB0610 +:104D800080916403282F082E000C330B3F938F93E0 +:104D900088EE96E09F938F930E94940786EE96E0AC +:104DA0000E94FB0680916503282F082E000C330B10 +:104DB0003F938F9383EE96E09F938F930E94940787 +:104DC00081EE96E00E94FB0680916603282F082E54 +:104DD000000C330B3F938F938EED96E09F938F9350 +:104DE0000E9494078BED96E00E94FB068091610380 +:104DF0001F928F9388ED96E09F938F930E94940764 +:104E000086ED96E00E94FB06809160031F928F93CF +:104E100083ED96E09F938F930E94940780ED96E038 +:104E20000E94FB068DB79EB74C960FB6F8949EBFB6 +:104E30000FBE8DBF82E693E00E945C180E9436246C +:104E400090935F0380935E0308951F93CF93DF9346 +:104E500080915E0390915F030E944E24AC0190917B +:104E60006103992321F02091270130E006C02091B1 +:104E700028018AE0289F900111244217530708F463 +:104E800085C080916303C0916403D0916503109144 +:104E90006603811107C0C11175C0D11173C0111112 +:104EA00071C074C09F3F19F09F5F90936103181603 +:104EB00024F40E942925809363038091630387FF74 +:104EC00005C00E9429258195809363031C1624F454 +:104ED0000E942925809364038091640387FF05C0A5 +:104EE0000E94292581958093640360916303662362 +:104EF00031F1C0916403CC2311F1062E000C770B25 +:104F0000880B990B0E94D82B23E333E343E35FE341 +:104F10000E943C2C0E94A02B609363036C2FCC0F4B +:104F2000770B880B990B0E94D82B23E333E343E3E1 +:104F30005FE30E943C2C0E94A02B609364031D162B +:104F400024F40E947225809365038091650387FF96 +:104F500005C00E947225819580936503111624F483 +:104F60000E947225809366038091660387FF05C0C7 +:104F70000E947225819580936603DF91CF911F91E6 +:104F80000C9498269F3F09F08FCF97CFDF91CF9158 +:104F90001F910895E2E6F3E085E0DF011D928A9516 +:104FA000E9F7109261031092600308958AE199E095 +:104FB0000E94FB061F9281E08F931F9285E08F93E2 +:104FC0008CEC98E09F938F930E9494070F900F9022 +:104FD0000F900F900F900F9008958330E9F128F40F +:104FE000813061F0823009F10895853009F462C0A2 +:104FF00008F449C0863009F474C0089580912801EE +:10500000262F30E0280F311D2F3F310524F4680F83 +:105010006093280103C08FEF8093280180912801BD +:105020001F928F9385E098E072C080912701262F10 +:1050300030E0280F311D2F3F310524F4680F6093B5 +:10504000270103C08FEF80932701809127011F92D2 +:105050008F9383EF97E05BC080912601262F30E08D +:10506000280F311D2F3F310524F4680F609326016E +:1050700003C08FEF80932601809126011F928F93AA +:1050800080EE97E044C080912501262F30E0280F64 +:10509000311D2F3F310524F4680F6093250103C0B3 +:1050A0008FEF80932501809125011F928F938BECC8 +:1050B00097E02DC080912401262F30E0280F311D6C +:1050C0002F3F310524F4680F6093240103C08FEF54 +:1050D00080932401809124011F928F9382EB97E0AB +:1050E00016C080912301262F30E0280F311D2F3F5D +:1050F000310524F4680F6093230103C08FEF809380 +:105100002301809123011F928F9387E997E09F935A +:105110008F930E9494070F900F900F900F90089517 +:10512000833081F128F4813059F08230D1F0089534 +:10513000853009F449C0B8F1863009F456C00895A5 +:1051400080912801681720F4861B8093280102C0F3 +:1051500010922801809128011F928F9388E897E090 +:1051600054C080912701681720F4861B8093270183 +:1051700002C010922701809127011F928F9386E72A +:1051800097E043C080912601681720F4861B809326 +:10519000260102C010922601809126011F928F9352 +:1051A00083E697E032C080912501681720F4861BC2 +:1051B0008093250102C010922501809125011F9244 +:1051C0008F938EE497E021C080912401681720F42A +:1051D000861B8093240102C0109224018091240137 +:1051E0001F928F9385E397E010C080912301681789 +:1051F00020F4861B8093230102C01092230180912A +:1052000023011F928F938AE197E09F938F930E94CF +:1052100094070F900F900F900F900895CF93C82F81 +:105220001F928F938FE19AE09F938F930E94940730 +:1052300081E090E0A0E0B0E0BC01CD0104C0660FC9 +:10524000771F881F991FCA95D2F70E948D210F9052 +:105250000F900F900F90CF910C94901DCF938732A9 +:1052600088F58E3108F00BC18E3009F487C0D8F470 +:10527000873009F460C08B3009F44FC0863009F0E4 +:1052800002C180915803817F8E7F8093580384E20E +:105290009AE00E94FB0689ED9CE00E94FB0681E0FB +:1052A0008093680346C0863109F4B0C020F4803191 +:1052B00009F47AC0E8C0893109F491C08B3109F44E +:1052C00049C0E1C0883349F150F4893209F4D5C0AE +:1052D000853309F4D2C0873209F0D5C0CEC08334FB +:1052E00009F4CBC028F48A3308F4CDC08953C8C070 +:1052F000883409F0C8C00E94901D88EC9CE00E9490 +:10530000FB062FEF83ED90E3215080409040E1F7C2 +:1053100000C000000E94C9240CC08BE49AE041C088 +:105320008FEA9CE00E94FB06809158038160809385 +:105330005803C1E0ADC080915803C82FC17080FFF1 +:10534000EFCF8BEB9CE00E94FB0680915803817F9E +:105350008E7F3FC09091580391FBCC27C0F981E02C +:10536000C827892FC0FB81F980935803CC2319F0FB +:1053700082EA9CE029C084E99CE013C09091580324 +:1053800092FBCC27C0F981E0C827892FC0FB82F9A6 +:1053900080935803CC2319F085E89CE015C085E77D +:1053A0009CE00E94FB06C5CF9091580393FBCC274D +:1053B000C0F981E0C827892FC0FB83F98093580387 +:1053C000CC2351F089E69CE00E94FB0680915803B3 +:1053D0008160809358035CC08CE59CE0E2CF8DE453 +:1053E0009CE00E94FB0680E29CE00E94FB0689EEA6 +:1053F0009BE00E94FB068CEB9BE00E94FB0687E78C +:105400009BE00E94FB0689E49BE0CBCF8BE39BE013 +:105410000E94FB060E9407181F928F9381E29BE077 +:105420009F938F930E949407809120011F928F93E6 +:105430008AE09BE09F938F930E9494078091F302F0 +:105440001F928F9387EF9AE09F938F930E94940708 +:105450000E9442249F938F937F936F9380EE9AE0F4 +:105460009F938F930E9494078DB79EB742960FB675 +:10547000F8949EBF0FBE8DBF5CCF80E001C08D5100 +:105480000E940E2956CF8EED9AE00E94FB06C0E0E6 +:105490008C2FCF910895CF93C82F809168038130CE +:1054A00071F020F0823009F44BC042C1E09121013B +:1054B000F09122018081823209F03CC107C0E09165 +:1054C0002101F09122018081823261F48C2F0E94AF +:1054D000240C811104C08C2F0E942E292FC081E042 +:1054E00090E02CC08C2F0E94510E811126C0C43137 +:1054F000E1F070F4CB3081F0C031D1F40E94D627B6 +:1055000087E19AE00E94FB0682E08093680315C061 +:10551000C93259F0C83361F484E29AE00E94FB0674 +:105520008BE19AE00E94FB0608C01092680304C158 +:1055300085E19AE00E94FB06FFC081E08170FEC019 +:10554000C43228F5CE3108F0C1C0CB30A1F1D0F47F +:10555000C73009F0D3C08EE18093280182E38093A5 +:1055600027018AE08093260184E18093250188E069 +:105570008093240188E2809323018BEB98E00E94C2 +:10558000FB06BFC0C33149F1C431C1F0B7C0CB3451 +:1055900009F4A9C028F4C93289F0C83361F0AEC05B +:1055A000C13509F49EC0C23509F499C0CE3409F062 +:1055B000A5C06AE09EC00E94D627A3C08091670361 +:1055C000882319F0109267039CC088EC98E00E9431 +:1055D000FB0681E080936803B1C082EA98E00E94F4 +:1055E000FB0680E998E00E94FB06809128011F924B +:1055F0008F938DE898E09F938F930E9494078BE898 +:1056000098E00E94FB0689E798E00E94FB068091E3 +:1056100027011F928F9386E798E09F938F930E94B4 +:10562000940784E798E00E94FB0685E698E00E94D4 +:10563000FB06809126011F928F9382E698E09F934C +:105640008F930E94940780E698E00E94FB068FE407 +:1056500098E00E94FB06809125011F928F938CE4B5 +:1056600098E09F938F930E9494078AE498E00E94A9 +:10567000FB0685E398E00E94FB06809124011F92BF +:105680008F9382E398E09F938F930E94940780E327 +:1056900098E00E94FB0689E198E00E94FB06809159 +:1056A00023011F928F9386E198E09F938F930E942E +:1056B000940784E198E00E94FB068DB79EB7489658 +:1056C0000FB6F8949EBF0FBE8DBF1BC0CE51EC2FFE +:1056D000F0E0E057FE4F80818093670312C061E0E5 +:1056E00003C061E006C06AE0809167030E94ED2775 +:1056F00008C0809167030E94902803C089EB98E05E +:1057000013C080916703882369F01F928F9383EB06 +:1057100098E09F938F930E9494070F900F900F90A3 +:105720000F9004C080EB98E00E94FB0681E006C069 +:105730001092680380E002C080E000CFCF9108950E +:105740000E94A72B6894B1110C94362C08950E94E6 +:105750001B2C88F09F5798F0B92F9927B751B0F0BC +:10576000E1F0660F771F881F991F1AF0BA95C9F7E5 +:1057700014C0B13091F00E94352CB1E008950C9422 +:10578000352C672F782F8827B85F39F0B93FCCF3D5 +:10579000869577956795B395D9F73EF49095809562 +:1057A000709561957F4F8F4F9F4F0895E89409C082 +:1057B00097FB3EF490958095709561957F4F8F4F44 +:1057C0009F4F9923A9F0F92F96E9BB279395F6955A +:1057D000879577956795B795F111F8CFFAF4BB0FD8 +:1057E00011F460FF1BC06F5F7F4F8F4F9F4F16C03C +:1057F000882311F096E911C0772321F09EE8872FC6 +:10580000762F05C0662371F096E8862F70E060E081 +:105810002AF09A95660F771F881FDAF7880F9695FA +:10582000879597F9089557FD9058440F551F59F0E3 +:105830005F3F71F04795880F97FB991F61F09F3F7D +:1058400079F087950895121613061406551FF2CFA6 +:105850004695F1DF08C0161617061806991FF1CFF6 +:1058600086957105610508940895E894BB2766271D +:105870007727CB0197F908950E944F2C0C94C02CE8 +:105880000E94B22C38F00E94B92C20F0952311F020 +:105890000C94A92C0C94AF2C11240C94362C0E943F +:1058A000132C70F3959FC1F3950F50E0551F629F25 +:1058B000F001729FBB27F00DB11D639FAA27F00D69 +:1058C000B11DAA1F649F6627B00DA11D661F829F90 +:1058D0002227B00DA11D621F739FB00DA11D621F75 +:1058E000839FA00D611D221F749F3327A00D611D92 +:1058F000231F849F600D211D822F762F6A2F112474 +:105900009F5750409AF0F1F088234AF0EE0FFF1FA6 +:10591000BB1F661F771F881F91505040A9F79E3FFD +:10592000510580F00C94A92C0C94362C5F3FE4F3C5 +:10593000983ED4F3869577956795B795F795E79553 +:105940009F5FC1F7FE2B880F911D9695879597F95C +:10595000089597F99F6780E870E060E008959FEFF1 +:1059600080EC089500240A941616170618060906F6 +:10597000089500240A9412161306140605060895C5 +:10598000092E0394000C11F4882352F0BB0F40F44D +:10599000BF2B11F460FF04C06F5F7F4F8F4F9F4F8D +:1059A0000895991B79E004C0991F961708F0961B7B +:1059B000881F7A95C9F780950895AA1BBB1B51E1F2 +:1059C00007C0AA1FBB1FA617B70710F0A61BB70B6F +:1059D000881F991F5A95A9F780959095BC01CD0114 +:1059E000089597FB072E16F4009407D077FD09D091 +:1059F0000E94DD2C07FC05D03EF4909581959F4FC9 +:105A00000895709561957F4F0895A1E21A2EAA1B03 +:105A1000BB1BFD010DC0AA1FBB1FEE1FFF1FA2175E +:105A2000B307E407F50720F0A21BB30BE40BF50B5B +:105A3000661F771F881F991F1A9469F760957095E4 +:105A4000809590959B01AC01BD01CF010895EE0FAB +:0E5A5000FF1F0590F491E02D0994F894FFCF0C +:105A5E007C097F098009810982097809FC09E2091C +:105A6E007B0983090A01F210E311C0118C11581140 +:105A7E00014E032808140A321E524E2D3432004CA9 +:105A8E00554641004F4646004F4E00434F4E4E0086 +:105A9E00506F776572656400556E617474616368EA +:105AAE0065640044656661756C740041646472657A +:105ABE007373656400436F6E666967757265640023 +:105ACE003F0053757370656E64656400404D3622F9 +:105ADE0059060C06D605B4054005590572058B0509 +:0A5AEE000102030405060708090081 +:1068000088000000000000000400050006000700EA +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280035002A002B002C002D002E002F00D0 +:1068600030000000320033003400290036003700C9 +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000004F00A9 +:1068A00050005100520000000000000000000000F5 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E0000000000000000000890087008A008B0083 +:1068F000F1A1E100E200E300F1A1E500E600000003 +:106900000100010001000100EA4401000100E2442D +:106910000100010001005500460054004A004B00F0 +:10692000560057004700480001000100E9440100FB +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000580001004C00390001004400450052007D +:1069600001000100010050004F0081404D004E0029 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/keyboard/hhkb/binary/hhkb_jp_unimap.hex b/keyboard/hhkb/binary/hhkb_jp_unimap.hex new file mode 100644 index 00000000..841675e5 --- /dev/null +++ b/keyboard/hhkb/binary/hhkb_jp_unimap.hex @@ -0,0 +1,1207 @@ +:100000000C9425050C946C050C946C050C946C05F3 +:100010000C946C050C946C050C946C050C946C059C +:100020000C946C050C946C050C94B50C0C946C053C +:100030000C945F1B0C946C050C946C050C946C0573 +:100040000C946C050C946C050C946C050C946C056C +:100050000C946C050C94FF1B0C946C050C946C05B3 +:100060000C946C050C946C050C946C050C946C054C +:100070000C946C050C946C050C946C050C946C053C +:100080000C946C050C946C050C946C050C946C052C +:100090000C946C050C946C050C946C050C946C051C +:1000A0000C946C050C946C050C946C05AB0DCD0D8B +:1000B000BB0ECD0DBB0E120E350EBB0E8A0E9D0E65 +:1000C000A211A211CF11CF112A1266125E145E1472 +:1000D0007E125E147913791334145E145E144A147C +:1000E0008080352B787939808080210877060780D9 +:1000F0008080201A7A1B168080801E802980808054 +:100100008080808080808080808022158019098096 +:1001100080801F147B1D0480808023172C050A809B +:100120008080260C00360E808080251876100D8089 +:100130008080241C80110B80808027127E370F80E6 +:1001400080802A804F7D2880808074305152328098 +:1001500080802D137C38338080802E2F5075348022 +:10016000253032583A20253038620A000A722F634F +:100170002030313233343536370A005B735D004B43 +:100180006579626F6172642073746172742E0A0003 +:1001900055534220636F6E666967757265642E0AF7 +:1001A000005B575D005B535D005B525D005B445D2F +:1001B000005B435D001203480048004B00420020F2 +:1001C000006D006F00640000000E0374002E006DCF +:1001D000002E006B002E0000000403090409028DAC +:1001E00000050100A032090400000103010100091B +:1001F00021110100012240000705810308000A09BE +:100200000401000103010200092111010001224D36 +:10021000000705820308000A090402000103000028 +:10022000000921110100012236000705830308009F +:100230000A09040300020300000009211101000162 +:100240002222000705840320000107050403200083 +:10025000010904040001030000000921110100014B +:10026000223900070585032000011201100100005A +:100270000008EDFEFECA04010102000105010906A5 +:10028000A101050719E029E7150025019508750169 +:10029000810205081901290595057501910295014D +:1002A000750391010507190029F71500250195F837 +:1002B00075018102C00631FF0974A101097515009D +:1002C00026FF009520750881020976150026FF009B +:1002D000952075089102C005010980A101850216CB +:1002E000010026B7001A01002AB700751095018198 +:1002F00000C0050C0901A1018503160100269C021E +:100300001A01002A9C02751095018100C00501099F +:1003100002A1010901A100050919012905150025FE +:10032000019505750181029501750381010501099A +:100330003009311581257F95027508810609381528 +:1003400081257F950175088106050C0A3802158103 +:10035000257F950175088106C0C005010906A10128 +:10036000050719E029E715002501950875018102A7 +:100370009501750881010508190129059505750183 +:1003800091029501750391010507190029FF1500D8 +:1003900026FF00950675088100C00A0025303258F6 +:1003A00020006B6579626F6172645F7265706F7255 +:1003B000743A20004C45443A20253032580A0064F3 +:1003C000656C5F6B65795F6269743A2063616E2763 +:1003D000742064656C3A20253032580A00616464E8 +:1003E0005F6B65795F6269743A2063616E27742080 +:1003F0006164643A20253032580A004F6E65736894 +:100400006F743A2074696D656F75740A00290A006B +:100410002575002F002575005D280025640020004B +:10042000256400200025640020002564007C002550 +:10043000303258006D6F7573656B6579205B62743F +:100440006E7C782079207620685D287265702F6137 +:10045000636C293A205B006D6B5F776865656C5F44 +:1004600074696D655F746F5F6D6178203D202564F0 +:100470000A006D6B5F776865656C5F6D61785F73AF +:1004800070656564203D2025640A006D6B5F7469AA +:100490006D655F746F5F6D6178203D2025640A0093 +:1004A0006D6B5F6D61785F7370656564203D2025BD +:1004B000640A006D6B5F696E74657276616C203DD5 +:1004C0002025640A006D6B5F64656C6179203D20B6 +:1004D00025640A006D6B5F776865656C5F74696D94 +:1004E000655F746F5F6D6178203D2025640A006D43 +:1004F0006B5F776865656C5F6D61785F737065656C +:1005000064203D2025640A006D6B5F74696D655F32 +:10051000746F5F6D6178203D2025640A006D6B5F0C +:100520006D61785F7370656564203D2025640A0005 +:100530006D6B5F696E74657276616C203D20256419 +:100540000A006D6B5F64656C6179203D2025640A4B +:10055000000A00257500363A20776865656C5F747F +:10056000696D655F746F5F6D61783A20000A0025E0 +:100570007500353A20776865656C5F6D61785F73EB +:10058000706565643A20000A00257500343A2074CD +:10059000696D655F746F5F6D61783A20000A0025B0 +:1005A0007500333A206D61785F73706565643A2039 +:1005B000000A00257500323A20696E746572766112 +:1005C0006C286D73293A20000A00257500313A2005 +:1005D00064656C6179282A31306D73293A20000AEC +:1005E000092D2056616C756573202D0A004D3E0063 +:1005F0004D25643E20003F0073657420646566618C +:10060000756C740A00433E2000776865726520644B +:10061000656C74613A20637572736F723D25642C4A +:1006200020776865656C3D25640A536565206874AC +:1006300074703A2F2F656E2E77696B6970656469E7 +:10064000612E6F72672F77696B692F4D6F757365B8 +:100650005F6B6579730A000A092D204D6F7573650C +:100660006B6579202D0A4553432F713A09717569DD +:10067000740A313A0964656C6179282A31306D73E6 +:10068000290A323A09696E74657276616C286D7355 +:10069000290A333A096D61785F73706565640A34BD +:1006A0003A0974696D655F746F5F6D61780A353AF8 +:1006B00009776865656C5F6D61785F737065656407 +:1006C0000A363A09776865656C5F74696D655F74B1 +:1006D0006F5F6D61780A0A703A097072696E7420F2 +:1006E00076616C7565730A643A0973657420646594 +:1006F0006661756C74730A75703A092B310A646F00 +:10070000776E3A092D310A706775703A092B3130CE +:100710000A7067646F776E3A092D31300A0A737078 +:10072000656564203D2064656C7461202A206D61DC +:10073000785F7370656564202A2028726570656132 +:1007400074202F2074696D655F746F5F6D61782907 +:100750000A003F004D3E2000433E20004C25640A25 +:10076000000A092D20436F6E736F6C65202D0A45BA +:1007700053432F713A09717569740A6D3A096D6FA7 +:100780007573656B65790A000A092D204D616769EB +:1007900063202D0A643A0964656275670A783A092C +:1007A0006465627567206D61747269780A6B3A09D5 +:1007B0006465627567206B6579626F6172640A6D4A +:1007C0003A096465627567206D6F7573650A763ADC +:1007D0000976657273696F6E0A733A09737461748E +:1007E00075730A633A09636F6E736F6C65206D6F82 +:1007F00064650A302D343A096C61796572302D34A4 +:10080000284631302D4634290A506175733A096201 +:100810006F6F746C6F616465720A6E3A094E4B5269 +:100820004F0A003F004E4B524F3A206F66660A0057 +:100830004E4B524F3A206F6E0A0074696D65725FBD +:1008400072656164333228293A202530346C580AA5 +:10085000006B6579626F6172645F6E6B726F3A20D4 +:1008600025580A006B6579626F6172645F69646C18 +:10087000653A2025580A006B6579626F6172645F82 +:1008800070726F746F636F6C3A2025580A00686F3E +:1008900073745F6B6579626F6172645F6C656473BA +:1008A00028293A2025580A000A092D20537461741A +:1008B0007573202D0A004743433A20342E392E32D7 +:1008C000204156522D4C4942433A20312E382E3089 +:1008D00073766E204156525F415243483A2061760A +:1008E00072350A004F5054494F4E533A204C5546EA +:1008F00041204D4F5553454B455920455854524181 +:100900004B455920434F4E534F4C4520434F4D4D7F +:10091000414E44204E4B524F204B45594D41505F64 +:1009200053454354494F4E20343039360A0042551E +:10093000494C443A203038646361313220283039E0 +:100940003A35303A34302053657020203720323029 +:100950003136290A005649443A2030784645454404 +:1009600028742E6D2E6B2E29205049443A20307861 +:10097000434146452848484B42206D6F6429205624 +:1009800045523A203078303130340A0044455343E0 +:100990003A20742E6D2E6B2E206B6579626F61721A +:1009A00064206669726D7761726520666F72204897 +:1009B000484B42206D6F640A000A092D205665726B +:1009C00073696F6E202D0A000A6D6F7573653A208A +:1009D0006F66660A000A6D6F7573653A206F6E0A5E +:1009E000000A6B6579626F6172643A206F66660A0D +:1009F000000A6B6579626F6172643A206F6E0A005B +:100A00000A6D61747269783A206F66660A000A6D31 +:100A100061747269783A206F6E0A000A64656275C3 +:100A2000673A206F6E0A000A64656275673A206F44 +:100A300066660A000A0A626F6F746C6F61646572A1 +:100A40002E2E2E2000433E20000011241FBECFEF8B +:100A5000DAE0DEBFCDBF04B603FE27C080912102DD +:100A600090912202A0912302B09124028730904BF2 +:100A7000A740B04BD1F410922102109222021092A2 +:100A800023021092240214BE84B7877F84BF0FB65E +:100A9000F894A8958091600088618093600010921E +:100AA00060000FBEE0E0F8E3099511E0A0E0B1E0DE +:100AB000E8E1F9E402C005900D92A833B107D9F737 +:100AC00022E0A8E3B1E001C01D92A132B207E1F734 +:100AD0000E94DD090C948A240C940000FF93EF938C +:100AE000E0913801F0913901309709F00995EF91C3 +:100AF000FF910895FC018591803011F0EFDFFBCF6D +:100B00000895FF27E0E230E247FF0CC0419597FFD0 +:100B100009C0EDE26095709580959095611D711DFD +:100B2000811D911D27FF02C0219530E350E2AA27C5 +:100B3000660F771F881F991FAA1FA41710F0A41B08 +:100B400063955A95A9F7AA3008F0A95FA05DAF9305 +:100B5000F395611571058105910541F7ED3211F4A9 +:100B6000EF93F395F21718F43F93F395FBCF8F9122 +:100B7000B5DFFA95E1F70895E991F9918591803013 +:100B800021F0853219F0AADFF9CF089520E0E8942A +:100B900055915532C1F3503311F4689455915A333D +:100BA00048F4505390F3220F022E220F220F200DF3 +:100BB000250FF4CF0EF4219589919991533619F3AD +:100BC000533729F1533559F1BC0188279927E89407 +:100BD0005C3621F48991999168945591543639F491 +:100BE00046EF7EF077FF0DC08FEF9FEF0AC05537BD +:100BF0004AE039F0583540E121F0523642E009F040 +:100C00000895FF93EF937DDFEF91FF91B7CFFF93AF +:100C1000EF93FC0181918030B9F360DFFBCFFF934C +:100C2000EF9368DFF1CFDF93CF93CDB7DEB7259693 +:100C3000A3DFCF91DF9108958FEF84B980E485B968 +:100C400057985F9A87B1806C87B988B1806C88B9F2 +:100C50002E9A2F98EAE4F1E080E18E0F11928E1324 +:100C6000FDCFEAE3F1E080E18E0F11928E13FDCF0C +:100C70008AE491E090935D0180935C018AE391E0C6 +:100C800090935B0180935A010895EF92FF920F9326 +:100C90001F93CF93DF9380915A0190915B01209134 +:100CA0005C0130915D0130935B0120935A01909378 +:100CB0005D0180935C01C0E0D0E001E010E080E0E5 +:100CC00090E0FC2FF770EC2FE87025B1207C2F2BE3 +:100CD000AC0133E0440F551F3A95E1F7242B25B9B9 +:100CE00028B12F73EE2311F0206401C0206828B9C9 +:100CF0002AE12A95F1F700C0A0915A01B0915B0159 +:100D0000AC0FBD1F2C9130E0082E02C03595279501 +:100D10000A94E2F720FD2F9AA5E3AA95F1F70000C7 +:100D2000F6B42E98BAE1BA95F1F700C040915C0193 +:100D300050915D01BA016C0F7D1F4F9B0BC0980154 +:100D4000082E01C0220F0A94EAF72095DB013C919E +:100D5000232309C0DB01EC909801082E01C0220F6B +:100D60000A94EAF72E292C9326B56F2D70E02F15E3 +:100D700018F026B530E004C026B530E021503F4FD2 +:100D8000261B370B2630310558F0A0915A01B0913F +:100D90005B01AC0FBD1F2C91DA01AC0FBD1F2C9372 +:100DA000BAE1BA95F1F700C02F982E9A20EA2A9559 +:100DB000F1F701968830910509F087CFA0915C0189 +:100DC000B0915D01AC0FBD1FE0915A01F0915B0144 +:100DD000EC0FFD1F9C918081981751F00E949D1B84 +:100DE00060935E0170935F01809360019093610155 +:100DF0002196C031D10509F062CF8091180285306B +:100E000021F080911802811111C060915E017091F2 +:100E10005F0180916001909161010E94D31B61315B +:100E200077428105910510F00E94201B81E0DF913F +:100E3000CF911F910F91FF90EF90089520915C0149 +:100E400030915D01F901E80FF11D808108950F9344 +:100E50001F93CF93DF938CE691E00E947A05C0E068 +:100E6000D0E000E611E0E0915C01F0915D01EC0F53 +:100E7000FD1F80810E94F61A1F928F93DF93CF93FC +:100E80001F930F930E94130621960F900F900F90BF +:100E90000F900F900F90C031D10529F7DF91CF91BE +:100EA0001F910F91089508950895569A81FF02C0E9 +:100EB0005E9A08955E9808958091850108959FB780 +:100EC000F894109264019FBF90911802943009F039 +:100ED00057C09091E9009F703091EC00232F217052 +:100EE00030FD20E8922B24E02093E9002091EB00D4 +:100EF00020FF43C02091EE0027FF3FC020916201F8 +:100F0000222321F02091E80025FF37C010926201D2 +:100F100026E03091E80035FD15C0309118023430DC +:100F200061F53091EB0035FD28C0215021F481E0BE +:100F30008093620122C0EFE9FFE03197F1F700C032 +:100F40000000E7CF8093F1008091E80085FD0AC0A2 +:100F50008091E80080FFFCCF8091E8008E7780933D +:100F6000E80006C08FB7F89421E0209364018FBF9A +:100F70009F709093E90080E008959F709093E9003E +:100F80008FEF0895CF93DF9300D01F92CDB7DEB7D8 +:100F90009C0180911802843019F593E099833B837A +:100FA0002A839093E9008FEF9091E800815095FD9E +:100FB00006C095ED9A95F1F700008111F5CF80916B +:100FC000E80085FF0DC040E050E063E070E0CE0136 +:100FD00001960E94A30A8091E8008E778093E80032 +:100FE0000F900F900F90DF91CF910895CF93DF93E3 +:100FF00000D01F92CDB7DEB720911802243021F522 +:1010000022E029839B838A8383E08093E9008FEF2A +:101010009091E800815095FD06C095ED9A95F1F705 +:1010200000008111F5CF8091E80085FF0DC040E000 +:1010300050E063E070E0CE0101960E94A30A809127 +:10104000E8008E778093E8000F900F900F90DF916B +:10105000CF910895209118022430F1F422E02093DA +:10106000E9002FEF3091E800215035FD06C035ED45 +:101070003A95F1F700002111F5CF2091E80025FF06 +:101080000BC040E050E065E070E00E94A30A809150 +:10109000E8008E778093E8000895CF93DF93209146 +:1010A0001802243009F048C0EC0180910A0188231D +:1010B000E1F080910B018823C1F085E08093E90085 +:1010C0008FEF9091E800815095FD06C095E19A95CB +:1010D000F1F700008111F5CF8091E80085FF2CC069 +:1010E00040E050E060E270E017C081E08093E900EA +:1010F0008FEF9091E800815095FD06C095ED9A958F +:10110000F1F700008111F5CF8091E80085FF14C050 +:1011100040E050E068E070E0CE010E94A30A8091B8 +:10112000E8008E778093E80080E2FE01A5E6B1E05A +:1011300001900D928A95E1F7DF91CF91089581EBAF +:1011400091E00E947A0580911702811109C00E94E6 +:101150003A0C0E94970C8091E20084608093E20038 +:1011600008958DEA91E00E947A0510921702089581 +:1011700089EA91E00C947A05209163012F5F822F18 +:1011800062E30E945024992319F02093630108958B +:101190001092630180916401882371F1809118029B +:1011A000843041F58091E9008F702091EC00922FFE +:1011B000917020FD90E8892B94E09093E900909144 +:1011C000EB0090FF14C09091EE0097FF10C090913B +:1011D000E80095FF03C01092F100F9CF9091E8006C +:1011E00090FF05C09091E8009E779093E8008F7083 +:1011F0008093E90010926401089542E061EC81E07F +:101200000E94B40B42E061EC82E00E94B40B42E029 +:1012100061EC83E00E94B40B42E261EC84E00E9446 +:10122000B40B42E261EC85E00C94B40B80911A029D +:10123000833009F455C030F4813071F0823009F404 +:101240008EC008958A3009F47AC08B3009F460C0EA +:10125000893009F09CC020C080911902813A09F0C0 +:1012600096C08091E800877F8093E80080911D02FE +:1012700090911E02892B21F460E285E691E003C083 +:1012800060E080E090E070E00E94F00A8091E80069 +:101290008B778093E800089580911902813209F0DC +:1012A00076C080911D0290911E02009719F004975C +:1012B00009F06DC08091E800877F8093E8008091FD +:1012C000E80082FD05C0809118028111F8CF5FC04F +:1012D0008091F100809385018091E8008B7753C065 +:1012E00080911902813A09F052C080911D029091BB +:1012F0001E02892B09F04BC08091E800877F809304 +:10130000E8008091E80080FFFCCF80910A0136C0A0 +:10131000809119028132D9F580911D0290911E02AF +:10132000892BA9F58091E800877F8093E8000E94CF +:10133000E90B80911B0280930A010C947F14809129 +:101340001902813221F58091E800877F8093E800BF +:101350000E94E90B80911C02809386010895809180 +:101360001902813AA1F48091E800877F8093E80018 +:101370008091E80080FFFCCF809186018093F1008E +:101380008091E8008E778093E8000C94E90B089533 +:1013900008950895089585EA91E00E947A050C94D5 +:1013A000CA090E94201B80911602882329F00E94FE +:1013B000491B81110C948D0A089584B7877F84BFDF +:1013C0000FB6F894A89580916000886180936000C2 +:1013D000109260000FBE90E080E80FB6F894809302 +:1013E0006100909361000FBE0E94C8090E94800FA7 +:1013F0000E943A0C0E94970C8091E20084608093D6 +:10140000E2008FE597E00E94F11A7894809118022B +:10141000843019F00E94D30EF9CF80E991E00E9448 +:101420007A050E94820F80E091E00E94EE0E8FE725 +:1014300091E00E947A050E94C909809118028530C6 +:1014400039F48BE791E00E947A050E94D109F5CF2B +:101450000E94860F0E94D30EF0CF0C945D1B81EA90 +:1014600091E00E947A050C942D0A292F332723300E +:101470003105C9F064F42130310581F022303105A5 +:1014800009F043C08DE890E02DED31E042C02132FB +:101490003105F1F02232310541F137C082E190E0AF +:1014A0002AE632E036C099278130910541F082303A +:1014B000910541F0892B49F5E9EDF1E005C0E9EC32 +:1014C000F1E002C0E5EBF1E0849190E09F0121C0E2 +:1014D0006530D8F4E62FF0E0EE0FFF1FED5DFE4F14 +:1014E0002081318189E090E014C0653070F470E0B3 +:1014F000FB01EE0FFF1FE75EFE4F20813181FB01F4 +:10150000EC5EFE4F808190E004C080E090E020E03F +:1015100030E0FA0131832083089580E189BD82E1C2 +:1015200089BD09B400FEFDCF8091D8008F7D8093E6 +:10153000D8008091E00082608093E0008091E0001C +:1015400081FDFCCF0895CF92DF92EF92FF920F932F +:101550001F93CF93DF93EC018B017A010E94080C5B +:10156000811135C0E114F10439F0F70180819181D6 +:10157000081B190BC80FD91FC12CD12C011511053F +:1015800029F18091E80085FD18C08091E8008E77F0 +:101590008093E8000E94D30EE114F10449F0F701B2 +:1015A00080819181C80ED91ED182C08285E00FC092 +:1015B0000E94080C882311F30AC089918093F100DE +:1015C00001501109FFEFCF1ADF0AD8CF80E0DF9179 +:1015D000CF911F910F91FF90EF90DF90CF900895E2 +:1015E00020911F02309120022617370748F061151D +:1015F000710539F42091E8002E772093E80001C0AE +:10160000B90140E061157105A9F12091180222236A +:1016100009F443C0253009F442C02091E80023FDBD +:1016200040C02091E80022FD32C02091E80020FF58 +:10163000E9CF4091F3002091F20030E0342BFC011F +:10164000CF016115710559F02830310540F48191C1 +:101650008093F100615071092F5F3F4FF1CF41E05E +:101660002830310509F040E02091E8002E772093E2 +:10167000E800C8CF4111C9CF0AC080911802882361 +:1016800061F0853061F08091E80083FD0AC08091AF +:10169000E80082FFF2CF80E0089582E0089583E0C1 +:1016A000089581E0089520911F02309120022617AD +:1016B000370748F06115710539F42091E8002E775D +:1016C0002093E80001C0B901FC0120E0611571051B +:1016D00091F180911802882309F440C0853009F403 +:1016E0003FC08091E80083FD3DC08091E80082FD0D +:1016F0002FC08091E80080FFE9CF2091F300809116 +:10170000F20090E0922B6115710559F08830910537 +:1017100040F424912093F1003196615071090196B3 +:10172000F2CF21E0089709F020E08091E8008E7761 +:101730008093E800CBCF2111CCCF0AC08091180252 +:10174000882361F0853061F08091E80083FD0AC054 +:101750008091E80082FFF2CF80E0089582E0089552 +:1017600083E0089581E00895982F973058F590937D +:10177000E900981739F07091EC002091ED0050913C +:10178000F00003C0242F762F50E021FF19C03091C4 +:10179000EB003E7F3093EB003091ED003D7F3093C6 +:1017A000ED003091EB0031603093EB007093EC0072 +:1017B0002093ED005093F0002091EE0027FF07C02A +:1017C0009F5FD3CF8F708093E90081E0089580E020 +:1017D00008958091190287FF11C08091E80082FD71 +:1017E00005C0809118028111F8CF11C08091E800E6 +:1017F0008B770BC080911802882349F08091E80014 +:1018000080FFF8CF8091E8008E778093E8000895FC +:101810002091E4003091E50095E64091EC00842FA2 +:10182000817040FF22C08091E80080FD1CC0809143 +:101830001802882391F0853091F08091EB0085FDAE +:1018400010C04091E4005091E5004217530729F37E +:101850009A01915011F784E0089582E0089583E0A1 +:10186000089581E0089580E008954091E80042FFE6 +:10187000DECF08950E94A80C0E94B00CE0EEF0E0CC +:10188000808181608083E8EDF0E080818F778083C4 +:1018900019BCA7EDB0E08C918E7F8C9380818F7EF8 +:1018A00080831092170208950F931F93CF93DF93B5 +:1018B0000E94A80C0E94B00CC8EDD0E088818F7700 +:1018C000888388818068888388818F7D888319BC1C +:1018D0001092180210921402109216021092150221 +:1018E00000EE10E0F80180818B7F80838881816029 +:1018F000888342E060E080E00E94B40BE1EEF0E01B +:1019000080818E7F8083E2EEF0E080818160808341 +:10191000808188608083F80180818E7F80838881C8 +:1019200080618883DF91CF911F910F910895E8ED39 +:10193000F0E080818F7E8083E7EDF0E08081816040 +:10194000808384E082BF81E0809317020C94540C62 +:10195000E8EDF0E080818E7F80831092E2000895B0 +:101960001092DA001092E10008951F920F920FB6C4 +:101970000F9211242F933F934F935F936F937F9315 +:101980008F939F93AF93BF93EF93FF938091E10069 +:1019900082FF0BC08091E20082FF07C08091E100CE +:1019A0008B7F8093E1000E94BC088091DA0080FF69 +:1019B0001FC08091D80080FF1BC08091DA008E7F0D +:1019C0008093DA008091D90080FF0DC080E189BD4D +:1019D00082E189BD09B400FEFDCF81E08093180249 +:1019E0000E949F0805C019BC109218020E94B108FD +:1019F0008091E10080FF19C08091E20080FF15C056 +:101A00008091E2008E7F8093E2008091E20080610D +:101A10008093E2008091D80080628093D80019BC46 +:101A200085E0809318020E94CB098091E10084FF39 +:101A300030C08091E20084FF2CC080E189BD82E14A +:101A400089BD09B400FEFDCF8091D8008F7D8093C1 +:101A5000D8008091E1008F7E8093E1008091E200C8 +:101A60008F7E8093E2008091E20081608093E200AB +:101A700080911402882311F084E007C08091E30074 +:101A800087FD02C081E001C083E0809318020E94BC +:101A90002F0A8091E10083FF24C08091E20083FF40 +:101AA00020C08091E100877F8093E10082E08093F5 +:101AB0001802109214028091E1008E7F8093E10061 +:101AC0008091E2008E7F8093E2008091E20080614D +:101AD0008093E20042E060E080E00E94B40B0E944C +:101AE000B808FF91EF91BF91AF919F918F917F9136 +:101AF0006F915F914F913F912F910F900FBE0F907B +:101B00001F9018951F93CF93DF93CDB7DEB7AA9799 +:101B10000FB6F894DEBF0FBECDBFE9E1F2E088E07A +:101B20008E0F9091F10091938E13FBCF0E941609B6 +:101B30008091E80083FF1FC18091190290911A02E1 +:101B4000492F50E04A30510508F015C1FA01EA5A10 +:101B5000FF4F0C947024803881F0823809F00BC15B +:101B600080911D028F708093E9008091EB0085FBCE +:101B7000882780F91092E90006C0809115029091A3 +:101B80001602911182609091E800977F9093E8008F +:101B90008093F1001092F100C8C0282F2D7F09F02A +:101BA000EAC0882319F0823061F0E5C080911B0201 +:101BB000813009F0E0C0933009F080E08093160294 +:101BC0002BC080911B02811127C080911D028F7054 +:101BD00009F4D1C08093E9002091EB0020FF1CC0E4 +:101BE000933021F48091EB00806214C09091EB005F +:101BF00090619093EB0021E030E0A90102C0440F16 +:101C0000551F8A95E2F74093EA001092EA0080910E +:101C1000EB0088608093EB001092E9008091E8006F +:101C2000877F86C08111A7C010911B021F7780910A +:101C3000E3008078812B8093E3008091E800877F28 +:101C40008093E8000E94E90B8091E80080FFFCCFC0 +:101C50008091E30080688093E300111102C082E06C +:101C600001C083E08093180286C08058823008F05B +:101C700082C080911B0290911C028C3D53E095071D +:101C800079F583E08A838AE289834FB7F894DE018D +:101C9000139620E03EE051E2E32FF0E0509357002E +:101CA000E49120FF03C0E295EF703F5FEF708E2F4D +:101CB00090E0EA3010F0C79601C0C0968D939D93D6 +:101CC0002F5F243149F74FBF8091E800877F8093D1 +:101CD000E8006AE270E0CE0101960E94F00A14C0AA +:101CE000AE014F5F5F4F60911D020E94350ABC013B +:101CF000892B09F440C09091E800977F9093E80009 +:101D000089819A810E94530B8091E8008B778093A0 +:101D1000E80031C0803879F58091E800877F8093B2 +:101D2000E800809114028093F1008091E8008E77A2 +:101D30008093E8000E94E90B1EC081111CC09091A5 +:101D40001B029230C0F48091E800877F8093E80006 +:101D5000909314020E94E90B80911402811106C035 +:101D60008091E30087FD02C081E001C084E08093A0 +:101D700018020E94FD088091E80083FF0AC080914C +:101D8000E800877F8093E8008091EB008062809379 +:101D9000EB00AA960FB6F894DEBF0FBECDBFDF9161 +:101DA000CF911F910895CF93809118028823A1F0BD +:101DB000C091E900CF709091EC00892F817090FD67 +:101DC00080E8C82B1092E9008091E80083FD0E9412 +:101DD000820DCF70C093E900CF91089590938C014C +:101DE00080938B010895E0918B01F0918C013097E5 +:101DF00021F00190F081E02D099480E00895EF92A8 +:101E0000FF920F931F93CF93DF93E0918B01F0919B +:101E10008C013097B1F18C010280F381E02D09959E +:101E20008091030282FF2DC080FF04C082EA93E00C +:101E30000E947A05E80110E28CE9E82E83E0F82E92 +:101E40008091030280FF0BC088811F928F93FF92C5 +:101E5000EF920E9413060F900F900F900F90115069 +:101E600021961111EDCF8091030280FF0AC08AE90B +:101E700093E0DF91CF911F910F91FF90EF900C9421 +:101E80007A05DF91CF911F910F91FF90EF90089508 +:101E9000E0918B01F0918C01309721F00480F58165 +:101EA000E02D099408952091890130918A018217CB +:101EB000930771F090938A0180938901E0918B01DF +:101EC000F0918C01309721F00680F781E02D099484 +:101ED000089520918701309188018217930771F04E +:101EE0009093880180938701E0918B01F0918C01A0 +:101EF000309721F00084F185E02D0994089508952C +:101F00000C947F0F0E94881B0C941C06CF92DF92CA +:101F1000EF92FF920F931F93CF93DF9300D000D0E7 +:101F200000D0CDB7DEB70E9445068EE8C82E81E00E +:101F3000D82E00E010E0E02E802F0E941E07F60150 +:101F400041916F01F42EF826B1F40F5F1F4F00315D +:101F5000110589F78FEF89838A831B820E94911B69 +:101F60008160782F9D838C8349815A816B818D811B +:101F70000E94451047C09091030291FF04C08E83D8 +:101F80000E9427078E8120E030E04F2D50E0922FF5 +:101F9000BA01022E02C0759567950A94E2F760FFB8 +:101FA0002BC02983EA8221E030E0690102C0CC0C19 +:101FB000DD1C9A95E2F790E08C219D21892B09F494 +:101FC00020E02B830E94911B8160782F9D838C835E +:101FD00049815A816B818D810E94451049815A81C6 +:101FE0006B817C818D810E940D1BF801E257FE4FB1 +:101FF0008081C826C08206C02F5F3F4F2830310540 +:1020000031F6A3CF0E940C1B0E94801E10918D01FF +:102010000E94F30E181741F10E94F30E80938D0178 +:102020009091030292FF0EC090FF0CC01F928F93FD +:1020300084EB93E09F938F930E9413060F900F9071 +:102040000F900F9080918D0126960FB6F894DEBF09 +:102050000FBECDBFDF91CF911F910F91FF90EF90F9 +:10206000DF90CF900C941E1B26960FB6F894DEBF1F +:102070000FBECDBFDF91CF911F910F91FF90EF90D9 +:10208000DF90CF9008950C945507CF93DF93CDB791 +:10209000DEB72B970FB6F894DEBF0FBECDBF942FDF +:1020A0004F83252F588769877A878B874A855B8579 +:1020B000452B21F02F3F09F59F3FF9F4DE011196E2 +:1020C00086E0FD0111928A95E9F785E0FE013796D9 +:1020D00001900D928A95E1F749815A816B817C814B +:1020E0008D819E810E9422172B960FB6F894DEBF39 +:1020F0000FBECDBFDF91CF9108954F81588569857F +:102100007A858B850E940D1BD9CFCF93882309F444 +:10211000A4C0C82F8CEF8C0F813A48F48C2F0E94FA +:10212000CA2181119AC08C2F0E94AD190CC080E287 +:102130008C0F883058F4C77081E001C0880FCA95B1 +:10214000EAF70E94581ACF910C949C1A8BE58C0FD9 +:10215000833078F4C53A29F0C63A31F083E890E04C +:1021600005C081E890E002C082E890E0CF910C9435 +:10217000530F88E58C0F853108F06FC0C83A61F1C4 +:10218000C93A69F1CA3A71F1CB3A79F1CC3A81F1A5 +:10219000CD3A89F1CE3A91F1CF3A99F1C13BA1F113 +:1021A000C03BA9F1C23BB1F1C33BB9F1C43BC1F1A2 +:1021B000C53BC9F1C63BD1F1C73BD9F1C83BE1F101 +:1021C000C93BE9F1CA3BF1F1CB3BF9F1CC3B09F456 +:1021D0003FC080E090E03EC082EE90E03BC089EEE0 +:1021E00090E038C08AEE90E035C085EB90E032C0D8 +:1021F00086EB90E02FC083EB90E02CC084EB90E066 +:1022000029C087EB90E026C08CEC90E023C08DECD9 +:1022100090E020C083E891E01DC08AE891E01AC0F8 +:1022200082E991E017C084E991E014C081E292E074 +:1022300011C083E292E00EC084E292E00BC085E21E +:1022400092E008C086E292E005C087E292E002C018 +:102250008AE292E0CF910C94690FCF910895882380 +:1022600029F19CEF980F913A18F40E94001A0DC0C2 +:1022700090E2980F983058F4877091E001C0990F60 +:102280008A95EAF7892F0E945E1A0C949C1A9BE5A6 +:10229000980F933020F480E090E00C94530F885A0C +:1022A000853120F480E090E00C94690F0895882334 +:1022B00021F00E94581A0C949C1A0895882321F04A +:1022C0000E945E1A0C949C1A0895CF92DF92EF92AE +:1022D000FF920F931F93CF93DF9300D000D000D0D5 +:1022E000CDB7DEB725E0FC01DE01119601900D921D +:1022F0002A95E1F7FC0140813181F2802581229508 +:102300002F7063817481672B09F4D8C23F3F19F4A1 +:102310004F3F09F4D3C26C0149833A8389819A8182 +:102320002E830E946C19182F092F0E946B190E948E +:102330007B18E02FE295EF70F0E0E05AFF4F2E811E +:102340000C947024802F807F902F9F70092F8823FA +:1023500011F00295007FFF2049F0002309F45FC2CD +:10236000802F0E946B1A0E949C1A59C2812F0E94D2 +:102370002F11002309F4A2C2802F0E94711A269601 +:102380000FB6F894DEBF0FBECDBFDF91CF911F9186 +:102390000F91FF90EF90DF90CF900C949C1A802FBC +:1023A000807F902F9F70092F803211F00295007F5F +:1023B000112319F0113001F129C0FF20A9F0802F5D +:1023C000222349F1213039F526960FB6F894DEBF65 +:1023D0000FBECDBFDF91CF911F910F91FF90EF9076 +:1023E000DF90CF900C947B1A222319F0213009F44E +:1023F00065C20E94841A2CC0FF20E9F0263008F044 +:102400005DC20E94551A802329F022C0FF20F1F0FE +:10241000211115C0802F26960FB6F894DEBF0FBE8F +:10242000CDBFDF91CF911F910F91FF90EF90DF9083 +:10243000CF900C945711253008F040C209C0F60126 +:10244000858180FFECC18F708583E4CF2111FBC1B2 +:10245000802F69C1202F26952695237030E0211505 +:10246000310521F021303105C9F028C2FF2021F0CB +:10247000812F902F937002C080E090E026960FB6D7 +:10248000F894DEBF0FBECDBFDF91CF911F910F91AA +:10249000FF90EF90DF90CF900C94530FFF2021F02E +:1024A000812F902F937002C080E090E026960FB6A7 +:1024B000F894DEBF0FBECDBFDF91CF911F910F917A +:1024C000FF90EF90DF90CF900C94690F812FFF2049 +:1024D00019F00E94061D02C00E946E1D26960FB6BE +:1024E000F894DEBF0FBECDBFDF91CF911F910F914A +:1024F000FF90EF90DF90CF900C94F31D802F8370AE +:1025000009F078C0F110DAC1812F82958695877025 +:10251000880F880F912F9F70C92ED12CE12CF12CA0 +:10252000082E04C0CC0CDD1CEE1CFF1C0A94D2F754 +:1025300014FF12C04FE050E060E070E004C0440FB0 +:10254000551F661F771F8A95D2F7CB01BA01609598 +:1025500070958095909503C060E070E0CB01202FCE +:10256000269526952370422F50E042305105D1F038 +:102570004330510559F16C297D298E299F2941301D +:10258000510541F126960FB6F894DEBF0FBECDBFC0 +:10259000DF91CF911F910F91FF90EF90DF90CF903F +:1025A0000C9490186C297D298E299F2926960FB6A8 +:1025B000F894DEBF0FBECDBFDF91CF911F910F9179 +:1025C000FF90EF90DF90CF900C94A2180E9490188B +:1025D000C701B60126960FB6F894DEBF0FBECDBF79 +:1025E000DF91CF911F910F91FF90EF90DF90CF90EF +:1025F0000C947E18FF2019F0802F817001C0869501 +:10260000882309F45BC1812F829586958770880F96 +:10261000880F912F9F70C92ED12CE12CF12C082E00 +:1026200004C0CC0CDD1CEE1CFF1C0A94D2F714FF76 +:1026300012C04FE050E060E070E004C0440F551F4E +:10264000661F771F8A95D2F7CB01BA016095709506 +:102650008095909503C060E070E0CB01202F269517 +:1026600026952370422F50E042305105D1F043307F +:10267000510559F16C297D298E299F294130510539 +:1026800041F126960FB6F894DEBF0FBECDBFDF91A5 +:10269000CF911F910F91FF90EF90DF90CF900C940E +:1026A00047196C297D298E299F2926960FB6F89403 +:1026B000DEBF0FBECDBFDF91CF911F910F91FF9075 +:1026C000EF90DF90CF900C9459190E944719C701E1 +:1026D000B60126960FB6F894DEBF0FBECDBFDF91D0 +:1026E000CF911F910F91FF90EF90DF90CF900C94BE +:1026F0003519103F41F118F4103E48F48BC0123FD9 +:1027000009F450C0D8F1133F09F460C083C01F70B2 +:10271000802F8F71FF2021F00E94CE18812F7BCE59 +:102720000E94EF18812F26960FB6F894DEBF0FBED9 +:10273000CDBFDF91CF911F910F91FF90EF90DF9070 +:10274000CF900C945E11FF20A9F0253008F0B6C0A0 +:10275000802F8F7126960FB6F894DEBF0FBECDBFC7 +:10276000DF91CF911F910F91FF90EF90DF90CF906D +:102770000C941419263008F0A1C0EACFFF20A1F074 +:10278000802F8F7126960FB6F894DEBF0FBECDBF97 +:10279000DF91CF911F910F91FF90EF90DF90CF903D +:1027A0000C94CE18FF2061F3802F8F7126960FB600 +:1027B000F894DEBF0FBECDBFDF91CF911F910F9177 +:1027C000FF90EF90DF90CF900C94EF18FF2091F0E6 +:1027D000802F8F7126960FB6F894DEBF0FBECDBF47 +:1027E000DF91CF911F910F91FF90EF90DF90CF90ED +:1027F0000C94B91826960FB6F894DEBF0FBECDBF65 +:10280000DF91CF911F910F91FF90EF90DF90CF90CC +:102810000C94B418FF20A1F0222309F4B1CF812F2A +:1028200026960FB6F894DEBF0FBECDBFDF91CF91D5 +:102830001F910F91FF90EF90DF90CF900C94851037 +:10284000222309F4B1CF812F26960FB6F894DEBF6C +:102850000FBECDBFDF91CF911F910F91FF90EF90F1 +:10286000DF90CF900C942F11402F4F70612FC60135 +:102870000E94801C26960FB6F894DEBF0FBECDBF17 +:10288000DF91CF911F910F91FF90EF90DF90CF904C +:102890000C94C617402F4F70612FC60126960FB6B5 +:1028A000F894DEBF0FBECDBFDF91CF911F910F9186 +:1028B000FF90EF90DF90CF900C94831C26960FB67C +:1028C000F894DEBF0FBECDBFDF91CF911F910F9166 +:1028D000FF90EF90DF90CF9008950E94781A0E94A9 +:1028E000471A0E949C1A0E94251F0E94F31D80E037 +:1028F00090E00E94530F80E090E00C94690F0E94DA +:10290000681A0C946D140E946C19292F22952F704F +:1029100030E02C3031054CF42A3031056CF4225073 +:1029200031092230310588F407C02C30310549F0D7 +:102930002F30310531F009C0803E48F0803F29F446 +:1029400006C093FB882780F9089580E0089581E010 +:102950000895CF93DF9300D000D01F92CDB7DEB79C +:102960000F900F900F900F900F90DF91CF910895DF +:10297000CF93DF9300D000D000D0CDB7DEB726963E +:102980000FB6F894DEBF0FBECDBFDF91CF91089593 +:102990001F93CF93DF93C0919E0116E080919F011A +:1029A000C81799F0D0E01C9FF0011D9FF00D112475 +:1029B000E056FE4F4081518162817381848195810F +:1029C0000E94B8142196C770E9CFDF91CF911F9173 +:1029D00008954091D0015091D1016091D201709140 +:1029E000D3018091D4019091D5010C94B8148091B9 +:1029F000D50182958F7009F054C08091D20188234F +:102A000009F44FC080919E01A0919F016091D00177 +:102A10007091D1014091D3015091D401B6E08A1751 +:102A200009F43FC090E041155105C1F17F3F11F419 +:102A30006F3FA1F1B89FF001B99FF00D1124E0564E +:102A4000FE4F218172132AC02081621327C0228188 +:102A5000211124C0238134812417350710F421501B +:102A60003109241B350B2C323140C0F42091D501A3 +:102A70002F7020612093D50126E0289FF001299F27 +:102A8000F00D1124EB55FE4F80818F7080618083A3 +:102A900080ED91E00E9465110C94C8140196877036 +:102AA000BECF0895CF92DF92EF92FF920F931F93C4 +:102AB000CF93DF93CDB7DEB762970FB6F894DEBF42 +:102AC0000FBECDBF8C0185E0F801DE011D9601909F +:102AD0000D928A95E1F7D8014C9111965C9111976E +:102AE00012966C9112971396CD90DC9014973091BA +:102AF000D0017091D1018091D3019091D4010097C0 +:102B000009F473C17F3F19F43F3F09F46EC1E090AF +:102B1000D201EE2009F4C5C02091D501C816D9060E +:102B200050F0F601E81BF90BCF01FF24F3948C322F +:102B30009140C8F009C0809590958C0D9D1DFF2493 +:102B4000F3948C32914078F0F12C207F09F0C6C0CC +:102B50007C2DD98AC88A89890E94A91480ED91E0C8 +:102B60000E946511B1C0822F807F09F045C07513A6 +:102B700013C0341311C061110FC02F702061209356 +:102B8000D5010E94E91480ED91E00E9465118091C9 +:102B9000D501F80185832EC0CD2819F15F3F11F4CE +:102BA0004F3FF9F0F62E61111CC080919E012091DB +:102BB0009F0136E0821709F45BC090E0389FF00176 +:102BC000399FF00D1124E056FE4F7181571306C056 +:102BD0007081471303C07281711103C00196877021 +:102BE000E9CFF62E662309F41DC18091D5018160DD +:102BF0008093D501F12C16C1751309C0341307C099 +:102C0000611105C08091D501F8018583C8C04D8749 +:102C10005E878D859E856A8B0E9483146A898823CE +:102C2000E1F16623D1F12091D501822F82958F7039 +:102C300090E0029774F08091D0019091D101988733 +:102C40008F831986DB86CA862C87CE0107960E9461 +:102C5000651186E0F801A0EDB1E001900D928A9532 +:102C6000E1F70E94F7140E94E914FF24F394DAC0FC +:102C70004D875E878D859E850E946C19292F229530 +:102C80002F7030E0223031050CF0BFC09F7009F08A +:102C9000B9C0805E883008F4C5C0C8010E946511C3 +:102CA000E4CFC816D90608F453C0F601E81BF90BA7 +:102CB000CF018C32914008F453C0F12C7C2DD98A7D +:102CC000C88A89890E94A914E0EDF1E086E0DF015D +:102CD0001D928A95E9F70E94E914A4C0751314C0E7 +:102CE000341312C0611110C08091D501F8018583A1 +:102CF000C8010E94651186E0E0EDF1E0DF011D9260 +:102D00008A95E9F7FE2C8EC04D875E878D859E855E +:102D10006A8B0E9483146A89882309F4BECF6623D4 +:102D200009F4BBCF2091D501822F82958F7090E05E +:102D300002970CF48ECF8091D0019091D1019A83AB +:102D400089831B82DD82CC822E83CE0101967FCFC8 +:102D5000809590958C0D9D1D8C32914008F0ADCFE3 +:102D6000F62E662309F499CF75132EC034132CC0A8 +:102D70002091D50120FD1FC0822F82958F70D9F040 +:102D8000D80115962C9315978F3049F08F5F982FA7 +:102D90009295907F822F8F70892B15968C93C80106 +:102DA0000E94651186E0F801A0EDB1E001900D925E +:102DB0008A95E1F790CF86E0F801A0EDB1E00190AF +:102DC0000D928A95E1F72EC04D875E878D859E8591 +:102DD0000E94831481113DCF8091D5018160809341 +:102DE000D501C8010E9465111DC0662309F455CFA5 +:102DF0004D875E878D859E850E948314882309F404 +:102E00004CCF27CF811145CF0DC0243031050CF0B8 +:102E100044CF9F7009F43DCFD80115969C91907FC7 +:102E200009F037CF8F2D62960FB6F894DEBF0FBE34 +:102E3000CDBFDF91CF911F910F91FF90EF90DF9069 +:102E4000CF9008951F93CF93DF93CDB7DEB72C9724 +:102E50000FB6F894DEBF0FBECDBF4F83588769878A +:102E60007A878B879C87CE0107960E94521588230C +:102E700069F08F8198852A853B85232BF1F19F3F4F +:102E800009F063C08F3F09F060C037C086E0FE01E3 +:102E90003796DE01119601900D928A95E1F76F81C8 +:102EA0007885EA85FB85309741F17F3F11F46F3FCC +:102EB00021F120919F0130E0C90101968770992787 +:102EC00040919E0150E08417950709F447C069833B +:102ED0007A83FD83EC8396E0929FD001939FB00D9F +:102EE0001124A056BE4FFE01319601900D929A9585 +:102EF000E1F780939F010E94C81416E080919E0123 +:102F000090919F018917C1F1189FC001112480562B +:102F10009E4F0E945215882379F1E0919E011E9FD9 +:102F2000F0011124E056FE4F40815181628173818E +:102F3000848195810E94B81480919E0190E0019651 +:102F40008770992780939E01D9CF4F8158856985D5 +:102F50007A858B859C850E94B814CFCF0E947F1400 +:102F600010929F0110929E01E0EDF1E086E0DF01FA +:102F70001D928A95E9F7C1CF2C960FB6F894DEBF63 +:102F80000FBECDBFDF91CF911F910895DF92EF92D9 +:102F9000FF920F931F93CF93DF93FC01892B09F4CA +:102FA0008AC0E12CF12CDD24D394EF012196849189 +:102FB000853709F461C058F4843708F04EC0843076 +:102FC00008F06AC08130D1F0823071F174C0883766 +:102FD00009F45DC050F4863709F455C0873709F00D +:102FE0006AC08E2D0E94651A54C09CE7980F9037D6 +:102FF00008F061C08F770E942F1150C08F010E5FC3 +:103000001F4FFE01849190E2980F983050F4877022 +:10301000FD2D01C0FF0F8A95EAF78F2F0E946B1AD2 +:1030200014C00E94851013C08F010E5F1F4FFE0158 +:10303000C49180E28C0F883060F4C7708D2D01C080 +:10304000880FCA95EAF70E94711A0E949C1AE8013B +:1030500025C08C2F0E942F11FACF9F012E5F3F4F6A +:10306000FE01C491CC2369F08FE99FE00197F1F74D +:1030700000C00000C150F6CF9F012E5F3F4FFE0100 +:10308000F490E9010BC00E94551AE82E07C00E9477 +:10309000681A0E949C1A02C00E9485108F2D8823F6 +:1030A00041F0EFE9FFE03197F1F700C000008150F7 +:1030B000F6CFFE017ACFDF91CF911F910F91FF9054 +:1030C000EF90DF9008956093DA017093DB018093B5 +:1030D000DC019093DD010E941C1B0C946D14609325 +:1030E000D6017093D7018093D8019093D9010E94A3 +:1030F0001D1B0C946D1408950C9463180F931F936B +:103100000091DA011091DB012091DC013091DD01A9 +:10311000602B712B822B932B1F910F910C946318B2 +:103120000F931F930091DA011091DB012091DC01D4 +:103130003091DD0160237123822393231F910F912E +:103140000C9463180F931F930091DA011091DB0127 +:103150002091DC013091DD016027712782279327C0 +:103160001F910F910C94631860E070E0CB010C94F8 +:103170006F180F931F9341E050E060E070E08A0108 +:103180009B0104C0000F111F221F331F8A95D2F725 +:10319000C901B8011F910F910C946F180F931F93E1 +:1031A00041E050E060E070E004C0440F551F661F2E +:1031B000771F8A95D2F78091D6019091D701A0917F +:1031C000D801B091D9018A019B01082B192B2A2B18 +:1031D0003B2BC901B8011F910F910C946F180F93ED +:1031E0001F9341E050E060E070E004C0440F551FC1 +:1031F000661F771F8A95D2F7409550956095709518 +:103200008091D6019091D701A091D801B091D901B8 +:103210008A019B01082319232A233B23C901B801F2 +:103220001F910F910C946F180F931F9341E050E082 +:1032300060E070E004C0440F551F661F771F8A9539 +:10324000D2F78091D6019091D701A091D801B09189 +:10325000D9018A019B01082719272A273B27C90181 +:10326000B8011F910F910C946F180F931F93009149 +:10327000D6011091D7012091D8013091D901602B4E +:10328000712B822B932B1F910F910C946F180F931E +:103290001F930091D6011091D7012091D801309150 +:1032A000D90160237123822393231F910F910C94E2 +:1032B0006F180F931F930091D6011091D7012091A1 +:1032C000D8013091D90160277127822793271F9158 +:1032D0000F910C946F180895CF92DF92EF92FF92A6 +:1032E0000F931F93CF93DF938C01C090DA01D0909E +:1032F000DB01E090DC01F090DD014091D6015091BE +:10330000D7016091D8017091D901C42AD52AE62A43 +:10331000F72ACFE1D0E0D701C6010C2E04C0B69544 +:10332000A795979587950A94D2F780FF07C0B801B3 +:103330008C2F0E94551C8130910531F4219758F74C +:10334000B80180E00E94551CDF91CF911F910F9131 +:10335000FF90EF90DF90CF90089590910A0199230C +:1033600021F090910B01911109C020910C01309135 +:103370000D01F90132969FEF40E030C0982F9695ED +:10338000969596959F31A0F4E0910C01F0910D0176 +:10339000E90FF11D877021E030E0A90102C0440F60 +:1033A000551F8A95E2F7CA019181892B818308957F +:1033B0009091030290FF23C01F928F938DED93E0B5 +:1033C0009F938F930E9413060F900F900F900F9072 +:1033D00008959F3F39F04F5F4E3141F0519158139E +:1033E000F8CF0DC05111F7CF942FF5CF9F3F39F093 +:1033F000F901E90FF11D97FDFA958283089508956B +:1034000090910A01992321F090910B01911109C02B +:1034100020910C0130910D01F9013296205E3F4F51 +:1034200030C0982F9695969596959F31A8F4E09187 +:103430000C01F0910D01E90FF11D877021E030E0E2 +:10344000A90102C0440F551F8A95E2F7CA01809571 +:1034500091818923818308959091030290FF16C082 +:103460001F928F938FEB93E09F938F930E9413068D +:103470000F900F900F900F9008953196E217F30779 +:1034800029F090819813F9CF1082F7CF089581E049 +:1034900090E0E0910C01F0910D01E80FF91F10820E +:1034A000019680329105A9F708958091020208954E +:1034B00090910202892B8093020208958095909149 +:1034C00002028923809302020895809302020895E4 +:1034D00010920202089590910102892B80930102BB +:1034E00008958095909101028923809301020895A7 +:1034F0001092010208958093E0010E94911B909325 +:10350000DF018093DE0108951092E0011092DF0147 +:103510001092DE01089580910C0190910D01FC0143 +:1035200031969C01205E3F4F80E0919191118F5F19 +:10353000E217F307D1F70895E0910C01F0910D0126 +:10354000809102028083E0910C01F0910D01908145 +:1035500080910102892B80838091E0018823D9F139 +:103560000E94911B2091DE013091DF0182179307A9 +:1035700048F00E94911B2091DE013091DF01821BF7 +:10358000930B0AC00E94911B2091DE013091DF0154 +:1035900020953095820F931F8C32914070F080916E +:1035A000030280FF08C08BEF93E09F938F930E94EC +:1035B00013060F900F900E94841AE0910C01F09175 +:1035C0000D0190818091E001892B80830E948B1AEC +:1035D00081110E94841A80910C0190910D010C942C +:1035E000FF0E909339018093380108958295982FAA +:1035F0009C7C392F36953695282F237344E0249FE1 +:10360000C0011124932F982B292F2A7A2695892FD0 +:103610008575880F822B08950895CF93DF9300D08E +:1036200000D01F92CDB7DEB70F900F900F900F9084 +:103630000F90DF91CF910895089508950C94431051 +:1036400080911802843021F11092040220E488E174 +:1036500090E00FB6F894A895809360000FBE209379 +:10366000600083B7817F846083BF83B7816083BF3D +:103670007894889583B78E7F83BF0FB6F894A8950A +:1036800080916000886180936000109260000FBE9E +:103690000895CF930E9453070E9445060E94540745 +:1036A000C0E08C2F0E941E07811104C0CF5FC03183 +:1036B000C1F701C081E0CF9108950C947F141F924F +:1036C0000F920FB60F9211248F939F93AF93BF93D6 +:1036D00080910402811113C080910502909106022D +:1036E000A0910702B09108024196A11DB11D8093DF +:1036F000050290930602A0930702B0930802BF91BF +:10370000AF919F918F910F900FBE0F901F901895C2 +:1037100082E084BD93E095BD9AEF97BD80936E00E3 +:1037200008952FB7F8948091050290910602A09118 +:103730000702B09108022FBF08952FB7F894609147 +:1037400005027091060280910702909108022FBF36 +:103750000895CF92DF92EF92FF920F931F932FB7AE +:10376000F894409105025091060260910702709111 +:1037700008022FBF6A017B01EE24FF248C0120E0A8 +:1037800030E0C016D106E206F30610F441505109AC +:103790009A01281B390BC9011F910F91FF90EF90DF +:1037A000DF90CF900895CF92DF92EF92FF920F9328 +:1037B0001F932FB7F894C0900502D0900602E090B6 +:1037C0000702F09008022FBF97018601061B170B16 +:1037D000280B390BC616D706E806F90618F0C901FA +:1037E000B80106C0C901B801615071098109910988 +:1037F0001F910F91FF90EF90DF90CF9008951F924F +:103800000F920FB60F9211248F939F93AF93BF9394 +:103810008091050290910602A0910702B0910802E2 +:103820000196A11DB11D8093050290930602A093FD +:103830000702B0930802BF91AF919F918F910F90B3 +:103840000FBE0F901F9018950E943A0CF8942FEF1E +:1038500087EA91E6215080409040E1F700C00000E7 +:1038600087E090EBDC018093210290932202A093E9 +:103870002302B09324029CE088E10FB6F894A89547 +:10388000809360000FBE90936000FFCF28E0929F6E +:10389000F0011124E80FF11DE052FF4F8491982FA1 +:1038A00090778F7092959F700895CF93C82FCB011A +:1038B0000E94461C292F30E0E82FF0E0A90164E0C7 +:1038C000440F551F6A95E1F74E2B5F2B4038510589 +:1038D00019F480E090E012C088E0C89F200D311DEF +:1038E000112484E0220F331F8A95E1F7E20FF31FC2 +:1038F000EE0FFF1FE050F84985919491CF91089504 +:1039000080E090E00895089580910B0280FF0BC045 +:103910006091110185E0689FB0011124759567954C +:10392000759567952BC081FF09C06091110185E0F5 +:10393000689FB00111247595679520C082FF07C06C +:103940006091110185E0689FB001112417C090912A +:103950000C029923D1F060911001961788F72091FD +:10396000110185E0289F90011124929FA001939F4F +:10397000500D112470E0CA010E945C24603871056A +:1039800040F46115710539F002C065E070E0862FE2 +:1039900008958FE7089581E0089580910B0280FFDC +:1039A00008C060910F0170E07595679575956795F2 +:1039B00021C081FF06C060910F0170E07595679589 +:1039C00019C082FF04C060910F0170E010C0909197 +:1039D0000C029923C1F060910E019617A0F7809117 +:1039E0000F01899FC001112470E00E945C2460389F +:1039F000710528F46115710521F0862F08958FE770 +:103A0000089581E0089561E070E0F4CF803F21F4F3 +:103A10000E94841C819504C0813F29F40E94841C6B +:103A200080930F020895823F21F40E94841C8195A7 +:103A300004C0833F29F40E94841C80930E020895E1 +:103A4000893F19F40E94CD1C05C08A3F31F40E94C1 +:103A5000CD1C81958093100208958B3F21F40E9424 +:103A6000CD1C819504C08C3F29F40E94CD1C80930D +:103A700011020895843F21F480910D02816017C0E6 +:103A8000853F21F480910D02826011C0863F21F4B0 +:103A900080910D0284600BC0873F21F480910D025C +:103AA000886005C0883F31F480910D028061809369 +:103AB0000D0208958D3F21F480910B0281600BC0AF +:103AC0008E3F21F480910B02826005C08F3F29F464 +:103AD00080910B02846080930B020895803F39F43B +:103AE00080910F0287FF6CC010920F0269C0813F66 +:103AF00029F480910F021816BCF362C090910E0257 +:103B0000823F29F497FF5CC010920E0259C0833F98 +:103B100019F41916CCF354C0893F41F48091100276 +:103B200018160CF04DC0109210024AC08A3F29F4BA +:103B30008091100287FF44C0F6CF8B3F39F480910B +:103B4000110287FF3DC0109211023AC08C3F29F448 +:103B5000809111021816BCF333C0843F21F4809188 +:103B60000D028E7F17C0853F21F480910D028D7F5D +:103B700011C0863F21F480910D028B7F0BC0873FDF +:103B800021F480910D02877F05C0883F31F4809138 +:103B90000D028F7E80930D0213C08D3F21F4809122 +:103BA0000B028E7F0BC08E3F21F480910B028D7F24 +:103BB00005C08F3F29F480910B028B7F80930B020D +:103BC00080910E0281110EC080910F0281110AC0F6 +:103BD00080911002811106C080911102811102C0F2 +:103BE00010920C0208958091030283FF7EC084E34B +:103BF00094E00E947A0580910D021F928F938FE2CC +:103C000094E09F938F930E9413068DE294E00E94AC +:103C10007A0580910E02282F082E000C330B3F935B +:103C20008F938AE294E09F938F930E94130688E219 +:103C300094E00E947A0580910F02282F082E000C34 +:103C4000330B3F938F9385E294E09F938F930E9471 +:103C5000130683E294E00E947A0580911002282FD7 +:103C6000082E000C330B3F938F9380E294E09F93D8 +:103C70008F930E9413068EE194E00E947A05809152 +:103C80001102282F082E000C330B3F938F938BE1EA +:103C900094E09F938F930E94130688E194E00E9422 +:103CA0007A0580910C021F928F9385E194E09F9397 +:103CB0008F930E94130683E194E00E947A0580911D +:103CC0000B021F928F9380E194E09F938F930E9449 +:103CD00013068DE094E00E947A058DB79EB74C964E +:103CE0000FB6F8949EBF0FBE8DBF8DE092E00E948C +:103CF000480F0E94911B90930A0280930902089535 +:103D00001F93CF93DF938091090290910A020E9442 +:103D1000A91BAC0190910C02992321F02091120172 +:103D200030E006C0209113018AE0289F9001112401 +:103D30004217530708F485C080910E02C0910F020C +:103D4000D091100210911102811107C0C11175C0EC +:103D5000D11173C0111171C074C09F3F19F09F5FE2 +:103D600090930C02181624F40E94841C80930E0277 +:103D700080910E0287FF05C00E94841C819580936C +:103D80000E021C1624F40E94841C80930F02809162 +:103D90000F0287FF05C00E94841C819580930F024B +:103DA00060910E02662331F1C0910F02CC2311F114 +:103DB000062E000C770B880B990B0E94572323E3E8 +:103DC00033E343E35FE30E94BB230E941F2360931E +:103DD0000E026C2FCC0F770B880B990B0E94572388 +:103DE00023E333E343E35FE30E94BB230E941F23EB +:103DF00060930F021D1624F40E94CD1C80931002C4 +:103E00008091100287FF05C00E94CD1C8195809390 +:103E10001002111624F40E94CD1C8093110280918F +:103E2000110287FF05C00E94CD1C8195809311026D +:103E3000DF91CF911F910C94F31D9F3F09F08FCF1D +:103E400097CFDF91CF911F910895EDE0F2E085E0EB +:103E5000DF011D928A95E9F710920C0210920B0275 +:103E6000089587E596E00E947A051F9281E08F937E +:103E70001F9285E08F9389E096E09F938F930E9435 +:103E800013060F900F900F900F900F900F900895C2 +:103E90008330E9F128F4813061F0823009F108952E +:103EA000853009F462C008F449C0863009F474C052 +:103EB000089580911301262F30E0280F311D2F3FE8 +:103EC000310524F4680F6093130103C08FEF8093D2 +:103ED0001301809113011F928F9382E495E072C0C9 +:103EE00080911201262F30E0280F311D2F3F310520 +:103EF00024F4680F6093120103C08FEF80931201C6 +:103F0000809112011F928F9380E395E05BC08091B6 +:103F10001101262F30E0280F311D2F3F310524F4E9 +:103F2000680F6093110103C08FEF8093110180919E +:103F300011011F928F938DE195E044C08091100193 +:103F4000262F30E0280F311D2F3F310524F4680F54 +:103F50006093100103C08FEF8093100180911001D6 +:103F60001F928F9388E095E02DC080910F01262F3E +:103F700030E0280F311D2F3F310524F4680F609386 +:103F80000F0103C08FEF80930F0180910F011F92EB +:103F90008F938FEE94E016C080910E01262F30E0B3 +:103FA000280F311D2F3F310524F4680F60930E0157 +:103FB00003C08FEF80930E0180910E011F928F93AB +:103FC00084ED94E09F938F930E9413060F900F90BF +:103FD0000F900F900895833081F128F4813059F0CB +:103FE0008230D1F00895853009F449C0B8F18630A7 +:103FF00009F456C0089580911301681720F4861BB8 +:104000008093130102C010921301809113011F923B +:104010008F9385EC94E054C080911201681720F4CE +:10402000861B8093120102C010921201809112012E +:104030001F928F9383EB94E043C080911101681726 +:1040400020F4861B8093110102C01092110180910F +:1040500011011F928F9380EA94E032C08091100189 +:10406000681720F4861B8093100102C01092100183 +:10407000809110011F928F938BE894E021C0809172 +:104080000F01681720F4861B80930F0102C0109265 +:104090000F0180910F011F928F9382E794E010C06F +:1040A00080910E01681720F4861B80930E0102C0D8 +:1040B00010920E0180910E011F928F9387E594E07C +:1040C0009F938F930E9413060F900F900F900F9065 +:1040D0000895CF93C82F1F928F938CE597E09F93FD +:1040E0008F930E94130681E090E0A0E0B0E0BC0155 +:1040F000CD0104C0660F771F881F991FCA95D2F79C +:104100000E947C180F900F900F900F90CF910C94FD +:104110007F14CF938732A8F58E3108F02BC1803100 +:1041200009F49FC0F8F4873009F464C0A8F486301D +:1041300009F024C180910302817F8E7F8093030266 +:1041400081E697E00E947A0585E49AE00E947A056C +:1041500081E0809313024CC08B30F1F18E3009F472 +:104160006CC00CC1863109F4B0C020F4813109F46F +:10417000EDC004C1893109F491C08B3109F449C003 +:10418000FDC0883349F150F4893209F4F1C0853318 +:1041900009F4EEC0873209F0F1C0EAC0833409F4B3 +:1041A000E7C028F48A3308F4E9C08953E4C08834AE +:1041B00009F0E4C00E947F1484E39AE00E947A052B +:1041C0002FEF83ED90E3215080409040E1F700C055 +:1041D00000000E94241C0CC088E897E05CC08BE1C2 +:1041E0009AE00E947A058091030281608093030225 +:1041F000C1E0C9C080910302C82FC17080FFEFCF1A +:1042000087E29AE00E947A0580910302817F8E7F87 +:104210003DC09091030291FBCC27C0F981E0C827F3 +:10422000892FC0FB81F980930302CC2319F08EE023 +:104230009AE027C080E09AE02EC09091030292FBA2 +:10424000CC27C0F981E0C827892FC0FB82F9809371 +:104250000302CC2319F081EF99E013C081EE99E0BD +:104260001AC09091030293FBCC27C0F981E0C827C4 +:10427000892FC0FB83F980930302CC2351F085ED95 +:1042800099E00E947A058091030281608093030285 +:104290007AC088EC99E00E947A05AACF89EB99E070 +:1042A0000E947A058CE899E00E947A0585E599E0FC +:1042B0000E947A058EE299E00E947A0584EE98E0E9 +:1042C0000E947A0586EB98E0E6CF88EA98E00E94A3 +:1042D0007A050E94F30E1F928F938EE898E09F93C9 +:1042E0008F930E94130680910A011F928F9387E794 +:1042F00098E09F938F930E941306809186011F92EE +:104300008F9384E698E09F938F930E941306809189 +:104310000B011F928F9381E598E09F938F930E94EA +:1043200013060E949D1B9F938F937F936F938AE345 +:1043300098E09F938F930E9413068DB79EB7469681 +:104340000FB6F8949EBF0FBE8DBF52CF0E947F1450 +:10435000C0910B0181E0C827C0930B01CC2329F049 +:1043600080E398E00E947A050EC085E298E093CF42 +:1043700080E001C08D510E9469203ACF83E298E02D +:104380000E947A05C0E08C2FCF91089580E00895B7 +:1043900080E00895CF93C82F80911302813071F08F +:1043A00020F0823009F44BC042C1E0910C01F09141 +:1043B0000D018081823209F03CC107C0E0910C01FF +:1043C000F0910D018081823261F48C2F0E94C62110 +:1043D000811104C08C2F0E9489202FC081E090E0C1 +:1043E0002CC08C2F0E94C821811126C0C431E1F05D +:1043F00070F4CB3081F0C031D1F40E94311F84E5DC +:1044000097E00E947A0582E08093130215C0C932BA +:1044100059F0C83361F481E697E00E947A0588E597 +:1044200097E00E947A0508C01092130204C182E549 +:1044300097E00E947A05FFC081E08170FEC0C4321F +:1044400028F5CE3108F0C1C0CB30A1F1D0F4C7308F +:1044500009F0D3C08EE18093130182E380931201AF +:104460008AE08093110184E18093100188E08093B9 +:104470000F0188E280930E0188EF95E00E947A0593 +:10448000BFC0C33149F1C431C1F0B7C0CB3409F466 +:10449000A9C028F4C93289F0C83361F0AEC0C13573 +:1044A00009F49EC0C23509F499C0CE3409F0A5C004 +:1044B0006AE09EC00E94311FA3C08091120288232F +:1044C00019F0109212029CC085E096E00E947A05D5 +:1044D00081E080931302B1C08FED95E00E947A05D0 +:1044E0008DEC95E00E947A05809113011F928F93C5 +:1044F0008AEC95E09F938F930E94130688EC95E0D9 +:104500000E947A0586EB95E00E947A05809112015F +:104510001F928F9383EB95E09F938F930E941306D6 +:1045200081EB95E00E947A0582EA95E00E947A0587 +:10453000809111011F928F938FE995E09F938F9344 +:104540000E9413068DE995E00E947A058CE895E0BB +:104550000E947A05809110011F928F9389E895E05F +:104560009F938F930E94130687E895E00E947A0537 +:1045700082E795E00E947A0580910F011F928F9348 +:104580008FE695E09F938F930E9413068DE695E04A +:104590000E947A0586E595E00E947A0580910E01D9 +:1045A0001F928F9383E595E09F938F930E9413064C +:1045B00081E595E00E947A058DB79EB748960FB6C3 +:1045C000F8949EBF0FBE8DBF1BC0CE51EC2FF0E004 +:1045D000E35DFE4F80818093120212C061E003C050 +:1045E00061E006C06AE0809112020E94481F08C084 +:1045F000809112020E94EB1F03C086EF95E013C06A +:1046000080911202882369F01F928F9380EF95E0CA +:104610009F938F930E9413060F900F900F900F900F +:1046200004C08DEE95E00E947A0581E006C01092EC +:10463000130280E002C080E000CFCF9108950E9475 +:1046400026236894B1110C94B52308950E949A23EF +:1046500088F09F5798F0B92F9927B751B0F0E1F043 +:10466000660F771F881F991F1AF0BA95C9F714C0F3 +:10467000B13091F00E94B423B1E008950C94B423BA +:10468000672F782F8827B85F39F0B93FCCF386952C +:1046900077956795B395D9F73EF490958095709589 +:1046A00061957F4F8F4F9F4F0895E89409C097FB06 +:1046B0003EF490958095709561957F4F8F4F9F4FF9 +:1046C0009923A9F0F92F96E9BB279395F69587953D +:1046D00077956795B795F111F8CFFAF4BB0F11F400 +:1046E00060FF1BC06F5F7F4F8F4F9F4F16C08823A7 +:1046F00011F096E911C0772321F09EE8872F762FDD +:1047000005C0662371F096E8862F70E060E02AF01D +:104710009A95660F771F881FDAF7880F9695879509 +:1047200097F9089557FD9058440F551F59F05F3F72 +:1047300071F04795880F97FB991F61F09F3F79F0C3 +:1047400087950895121613061406551FF2CF469545 +:10475000F1DF08C0161617061806991FF1CF8695C7 +:104760007105610508940895E894BB2766277727AB +:10477000CB0197F908950E94CE230C943F240E9408 +:10478000312438F00E94382420F0952311F00C9445 +:1047900028240C942E2411240C94B5230E949223D7 +:1047A00070F3959FC1F3950F50E0551F629FF00184 +:1047B000729FBB27F00DB11D639FAA27F00DB11D9D +:1047C000AA1F649F6627B00DA11D661F829F222726 +:1047D000B00DA11D621F739FB00DA11D621F839FAD +:1047E000A00D611D221F749F3327A00D611D231F83 +:1047F000849F600D211D822F762F6A2F11249F57D1 +:1048000050409AF0F1F088234AF0EE0FFF1FBB1FD3 +:10481000661F771F881F91505040A9F79E3F510592 +:1048200080F00C9428240C94B5235F3FE4F3983E69 +:10483000D4F3869577956795B795F795E7959F5F3C +:10484000C1F7FE2B880F911D9695879597F90895CE +:1048500097F99F6780E870E060E008959FEF80EC33 +:10486000089500240A9416161706180609060895D6 +:1048700000240A9412161306140605060895092E3C +:104880000394000C11F4882352F0BB0F40F4BF2BAB +:1048900011F460FF04C06F5F7F4F8F4F9F4F0895EB +:1048A000991B79E004C0991F961708F0961B881F82 +:1048B0007A95C9F78095089597FB072E16F4009412 +:1048C00007D077FD09D00E94762407FC05D03EF47E +:1048D000909581959F4F0895709561957F4F0895AC +:1048E000EE0FFF1F0590F491E02D0994AA1BBB1B4E +:1048F00051E107C0AA1FBB1FA617B70710F0A61BE0 +:10490000B70B881F991F5A95A9F780959095BC0100 +:08491000CD010895F894FFCFDA +:104918005C074D082A08F607C2070101E1012808CB +:10492800140A321E404D3622395A030D03D702B5F8 +:10493800027C02EF01080221023A025A0201020334 +:08494800040506070809000040 +:1068000088000000000000000400050006000700EA +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280035002A002B002C002D002E002F00D0 +:1068600030000000320033003400290036003700C9 +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000004F00A9 +:1068A00050005100520000000000000000000000F5 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E0000000000000000000890087008A008B0083 +:1068F000F1A1E100E200E300F1A1E500E600000003 +:106900000100010001000100EA4401000100E2442D +:106910000100010001005500460054004A004B00F0 +:10692000560057004700480001000100E9440100FB +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000580001004C00390001004400450052007D +:1069600001000100010050004F0081404D004E0029 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/keyboard/hhkb/binary/hhkb_rn42_unimap.hex b/keyboard/hhkb/binary/hhkb_rn42_unimap.hex new file mode 100644 index 00000000..5f74ab15 --- /dev/null +++ b/keyboard/hhkb/binary/hhkb_rn42_unimap.hex @@ -0,0 +1,1483 @@ +:100000000C944F060C9496060C9496060C94960647 +:100010000C9496060C9496060C9496060C949606F0 +:100020000C9496060C9496060C948F150C949606D8 +:100030000C94CF230C9496060C9496060C9496067A +:100040000C9496060C9496060C9496060C949606C0 +:100050000C9496060C946F240C9496060C949606B9 +:100060000C9496060C9409090C9496060C9496062A +:100070000C9496060C9496060C9496060C94960690 +:100080000C9496060C9496060C9496060C94960680 +:100090000C9496060C9496060C9496060C94960670 +:1000A0000C9496060C9496060C949606320E360E18 +:1000B0003A0E3E0E420E460E4A0E4E0E520E560E90 +:1000C0005A0E5E0E620E660E6A0E6E0E720E760E80 +:1000D0007A0E7E0E820E860E8A0E8E0E920E960E70 +:1000E0009A0E9E0EA20EA60EAA0EAE0EB20EB60E60 +:1000F000BA0EBE0EFE0E300EC20EC40EC60EC80ED6 +:10010000CC0ED00ED40ED80EDD0EE20EE60EEA0EA8 +:10011000EE0EF20EF60EFC0EFC0EFC0EFC0EFC0EAD +:10012000FC0EFC0EFC0EFC0EFC0EFC0EFC0EFC0E7F +:10013000FC0EFC0EFC0EFC0EFC0EFC0EFA0E8516E0 +:10014000A7169517A7169517EC160F17951764178E +:1001500077177E1A7E1AAB1AAB1A061B421B3A1D82 +:100160003A1D5A1B3A1D551C551C101D3A1D3A1DAF +:10017000261D1F141A16041D1B0620211508070929 +:10018000190522231C170A0B11801E352B39797B88 +:100190007A2C2425180C0E0D1080742A31287C7DB1 +:1001A0007F7E26271213330F36802D2E302F3438C2 +:1001B0003780253032583A20253038620A000A72DA +:1001C0002F632030313233343536370A00522C3128 +:1001D0000D0A0053592C464646340D0A0053482C4C +:1001E000303033430D0A00537E2C360D0A0053572E +:1001F0002C383030300D0A00534D2C340D0A00538A +:10020000532C4B6579626F6172642F4D6F75736506 +:100210000D0A00532D2C546D6B42540D0A005346A9 +:100220002C310D0A002D2D2D0D0A004578697469B9 +:100230006E6720636F6E666967206D6F6465202E40 +:100240002E2E0A002B0D0A00760D0A00242424000D +:10025000456E746572696E6720636F6E66696720AC +:100260006D6F6465202E2E2E0A0025630025730D08 +:100270000A00522C310D0A0053522C5A0D0A005517 +:100280005342206D6F64650A004175746F206D6F75 +:1002900064650A00253032750A00253032753A004F +:1002A000253032753A004241543A2025756D560981 +:1002B00000757074696D653A2025303275202530DF +:1002C00032753A253032753A253032750A00564279 +:1002D00055533A2025580A0052656D6F7465576171 +:1002E0006B657570456E61626C65643A2025580ACD +:1002F000000A003F004C4F57004449534348470011 +:1003000043484152470046554C4C00626174746545 +:1003100072793A20005553422053746174653A2033 +:1003200025730A00636F6E6669675F6D6F64653A77 +:100330002025580A00726E34325F6175746F636FE6 +:100340006E6E656374696E6728293A2025580A0025 +:10035000726E34323A2025730A00666F7263655FED +:100360007573623A2025580A0070726F746F636F5C +:100370006C3A2025730A000A2D2D2D2D2D20524E6A +:100380002D343220696E666F202D2D2D2D2D0A0003 +:10039000753A20202020202020746F67676C65202C +:1003A000466F72636520555342206D6F64650A0085 +:1003B000703A2020202020202070616972696E67C9 +:1003C0000A00536C636B3A20202020524E2D3432A9 +:1003D00020696E697469616C697A650A0044656CAC +:1003E0003A2020202020656E7465722F657869742C +:1003F00020524E2D343220636F6E666967206D6F18 +:1004000064650A00623A2020202020202062617466 +:100410007465727920766F6C746167650A00693A59 +:1004200020202020202020524E2D343220696E665C +:100430006F0A000A0A2D2D2D2D2D20426C75657432 +:100440006F6F746820524E2D34322048656C7020D6 +:100450002D2D2D2D2D0A00253032753A253032757F +:100460003A253032750925756D560A004C454420F1 +:100470007374617475733A20253032580A00202550 +:10048000303258002563005B735D004B6579626F05 +:100490006172642073746172740A00524E2D34329A +:1004A00020696E69740A000A55534220696E6974A6 +:1004B0000A005B575D005B535D005B525D005B446F +:1004C0005D005B435D001203480048004B004200A2 +:1004D00020006D006F00640000000E0374002E0009 +:1004E0006D002E006B002E000000040309040902B9 +:1004F0007400040100A0320904000001030101009E +:100500000921110100012240000705810308000AAA +:100510000904010001030102000921110100012267 +:100520004D000705820308000A09040200010300C8 +:10053000000009211101000122360007058303088C +:10054000000A090403000203000000092111010050 +:10055000012222000705840320000107050403206F +:1005600000011201100100000008EDFE42420401EA +:10057000010200010631FF0974A101097515002669 +:10058000FF009520750881020976150026FF009569 +:100590002075089102C005010980A101850216019C +:1005A0000026B7001A01002AB700751095018100D6 +:1005B000C0050C0901A1018503160100269C021A41 +:1005C00001002A9C02751095018100C005010902F5 +:1005D000A1010901A100050919012905150025013D +:1005E00095057501810295017503810105010930A9 +:1005F00009311581257F9502750881060938158115 +:10060000257F950175088106050C0A38021581259C +:100610007F950175088106C0C005010906A1010585 +:100620000719E029E7150025019508750181029554 +:1006300001750881010508190129059505750191C4 +:10064000029501750391010507190029FF15002680 +:10065000FF00950675088100C00A00253032582039 +:10066000006B6579626F6172645F7265706F72743E +:100670003A20004C45443A20253032580A004F6E4B +:100680006573686F743A2074696D656F75740A00DC +:10069000290A002575002F002575005D28002564B6 +:1006A000002000256400200025640020002564004F +:1006B0007C0025303258006D6F7573656B6579204D +:1006C0005B62746E7C782079207620685D28726584 +:1006D000702F61636C293A205B006D6B5F776865F2 +:1006E000656C5F74696D655F746F5F6D6178203DE7 +:1006F0002025640A006D6B5F776865656C5F6D61CE +:10070000785F7370656564203D2025640A006D6B19 +:100710005F74696D655F746F5F6D6178203D202542 +:10072000640A006D6B5F6D61785F7370656564204E +:100730003D2025640A006D6B5F696E746572766199 +:100740006C203D2025640A006D6B5F64656C6179E7 +:10075000203D2025640A006D6B5F776865656C5FDE +:1007600074696D655F746F5F6D6178203D202564ED +:100770000A006D6B5F776865656C5F6D61785F73AC +:1007800070656564203D2025640A006D6B5F7469A7 +:100790006D655F746F5F6D6178203D2025640A0090 +:1007A0006D6B5F6D61785F7370656564203D2025BA +:1007B000640A006D6B5F696E74657276616C203DD2 +:1007C0002025640A006D6B5F64656C6179203D20B3 +:1007D00025640A000A00257500363A2077686565A9 +:1007E0006C5F74696D655F746F5F6D61783A20004E +:1007F0000A00257500353A20776865656C5F6D6184 +:10080000785F73706565643A20000A0025750034CE +:100810003A2074696D655F746F5F6D61783A20008E +:100820000A00257500333A206D61785F7370656545 +:10083000643A20000A00257500323A20696E74651A +:100840007276616C286D73293A20000A00257500C4 +:10085000313A2064656C6179282A31306D73293A08 +:1008600020000A092D2056616C756573202D0A0041 +:100870004D3E004D25643E20003F007365742064AA +:10088000656661756C740A00433E20007768657286 +:10089000652064656C74613A20637572736F723D94 +:1008A00025642C20776865656C3D25640A53656571 +:1008B00020687474703A2F2F656E2E77696B69709B +:1008C000656469612E6F72672F77696B692F4D6F51 +:1008D0007573655F6B6579730A000A092D204D6F8A +:1008E0007573656B6579202D0A4553432F713A095D +:1008F000717569740A313A0964656C6179282A3125 +:10090000306D73290A323A09696E74657276616CCA +:10091000286D73290A333A096D61785F73706565D4 +:10092000640A343A0974696D655F746F5F6D61784C +:100930000A353A09776865656C5F6D61785F737039 +:100940006565640A363A09776865656C5F74696D38 +:10095000655F746F5F6D61780A0A703A0970726939 +:100960006E742076616C7565730A643A09736574F8 +:100970002064656661756C74730A75703A092B3171 +:100980000A646F776E3A092D310A706775703A09FB +:100990002B31300A7067646F776E3A092D31300A57 +:1009A0000A7370656564203D2064656C7461202A5B +:1009B000206D61785F7370656564202A20287265F8 +:1009C00070656174202F2074696D655F746F5F6D51 +:1009D0006178290A003F004D3E2000433E20004C34 +:1009E00025640A000A092D20436F6E736F6C652021 +:1009F0002D0A4553432F713A09717569740A6D3A8E +:100A0000096D6F7573656B65790A000A092D204DB4 +:100A100061676963202D0A643A0964656275670A33 +:100A2000783A096465627567206D61747269780A45 +:100A30006B3A096465627567206B6579626F6172F4 +:100A4000640A6D3A096465627567206D6F75736538 +:100A50000A763A0976657273696F6E0A733A09739A +:100A600074617475730A633A09636F6E736F6C65B2 +:100A7000206D6F64650A302D343A096C61796572B6 +:100A8000302D34284631302D4634290A5061757393 +:100A90003A09626F6F746C6F616465720A003F009F +:100AA00074696D65725F72656164333228293A201A +:100AB0002530346C580A006B6579626F6172645F2F +:100AC00069646C653A2025580A006B6579626F612C +:100AD00072645F70726F746F636F6C3A2025580A8E +:100AE00000686F73745F6B6579626F6172645F6CCD +:100AF00065647328293A2025580A000A092D2053D5 +:100B00007461747573202D0A004743433A20342ED4 +:100B1000392E32204156522D4C4942433A20312E33 +:100B2000382E3073766E204156525F415243483A18 +:100B300020617672350A004F5054494F4E533A2087 +:100B40004C554641204D4F5553454B45592045582E +:100B50005452414B455920434F4E534F4C4520432F +:100B60004F4D4D414E44204B45594D41505F5345EB +:100B70004354494F4E20343039360A004255494CCF +:100B8000443A20366263376261622D646972747917 +:100B9000202831333A30363A3431204175672033DA +:100BA000312032303136290A005649443A20307813 +:100BB0004645454428742E6D2E6B2E2920504944FD +:100BC0003A203078343234322848484B42206D6F16 +:100BD0006429205645523A203078303130340A00AA +:100BE000444553433A20742E6D2E6B2E206B65794D +:100BF000626F617264206669726D776172652066EA +:100C00006F722048484B42206D6F640A000A092D1C +:100C10002056657273696F6E202D0A000A6D6F751C +:100C200073653A206F66660A000A6D6F7573653AE0 +:100C3000206F6E0A000A6B6579626F6172643A20F8 +:100C40006F66660A000A6B6579626F6172643A20AA +:100C50006F6E0A000A6D61747269783A206F666679 +:100C60000A000A6D61747269783A206F6E0A000A90 +:100C700064656275673A206F6E0A000A6465627582 +:100C8000673A206F66660A000A0A626F6F746C6FBB +:100C9000616465722E2E2E2000433E200000112438 +:100CA0001FBECFEFDAE0DEBFCDBF04B603FE27C024 +:100CB00080915E0390915F03A0916003B091610306 +:100CC0008730904BA740B04BD1F410925E03109246 +:100CD0005F03109260031092610314BE84B7877F94 +:100CE00084BF0FB6F894A8958091600088618093C6 +:100CF0006000109260000FBEE0E0F8E3099511E09B +:100D0000A0E0B1E0E4EFF9E502C005900D92AA3948 +:100D1000B107D9F723E0AAE9B1E001C01D92AE35D1 +:100D2000B207E1F70E9439100C94F82C0C940000E3 +:100D30000FB680959AE0F8947BE27A95F1F708F087 +:100D4000589A08F4589886959A95B1F70FBE089569 +:100D50000FB680E8F894499BFECF4999FECF96E103 +:100D60009A95F1F79CE29A95F1F7869549998068F2 +:100D7000C8F70FBE08950FB680E8F89496E19A95EB +:100D8000F1F79CE29A95F1F7869549998068C8F742 +:100D900096E19A95F1F7499BFECF0FBE0895FF9318 +:100DA000EF93E0919A01F0919B01309709F009953A +:100DB000EF91FF910895FC018591803011F0EFDFF4 +:100DC000FBCF0895FF27E0E230E247FF0CC04195DA +:100DD00097FF09C0EDE26095709580959095611D33 +:100DE000711D811D911D27FF02C0219530E350E246 +:100DF000AA27660F771F881F991FAA1FA41710F034 +:100E0000A41B63955A95A9F7AA3008F0A95FA05DC5 +:100E1000AF93F395611571058105910541F7ED32A9 +:100E200011F4EF93F395F21718F43F93F395FBCF7A +:100E30008F91B5DFFA95E1F70895E991F9918591E0 +:100E4000803021F0853219F0AADFF9CF089520E033 +:100E5000E89455915532C1F3503311F4689455918B +:100E60005A3348F4505390F3220F022E220F220FD0 +:100E7000200D250FF4CF0EF42195899199915336C9 +:100E800019F3533729F1533559F1BC0188279927B4 +:100E9000E8945C3621F4899199916894559154367F +:100EA00039F446EF7EF077FF0DC08FEF9FEF0AC059 +:100EB00055374AE039F0583540E121F0523642E0EA +:100EC00009F00895FF93EF937DDFEF91FF91B7CF86 +:100ED000FF93EF93FC0181918030B9F360DFFBCF8A +:100EE000FF93EF9368DFF1CFDF93CF93CDB7DEB7FA +:100EF0002596A3DFCF91DF91089514B88FEF85B9C0 +:100F0000549A5C9808958FEF84B980E485B9549A17 +:100F10005C9A8FE19EE40197F1F700C0000008950C +:100F20008FEF84B980E485B957985F9A2E9A2F98ED +:100F30000E947D07E4EAF1E088E08E0F11928E13A3 +:100F4000FDCFECE9F1E088E08E0F11928E13FDCF1A +:100F500084EA91E09093AF018093AE018CE991E037 +:100F60009093AD018093AC0108950F931F93CF939D +:100F7000DF938091AC019091AD012091AE01309151 +:100F8000AF013093AD012093AC019093AF018093FA +:100F9000AE015C9B0E948307C0E0D0E001E010E05E +:100FA00080E090E025B1207C2C2BAC0133E0440F95 +:100FB000551F3A95E1F7242B25B9EAE1EA95F1F7B7 +:100FC00000C0E091AC01F091AD01EC0FFD1F20815C +:100FD00030E0082E02C0359527950A94E2F720FDEF +:100FE0002F9AF5E3FA95F1F70000E6B52E982AE17D +:100FF0002A95F1F700C04091AE015091AF01DA019E +:10100000AC0FBD1F4F9B0AC09801082E01C0220FD4 +:101010000A94EAF720953C91232308C06C9198012B +:10102000082E01C0220F0A94EAF7262B2C9326B52E +:101030006E2F70E02E1718F026B530E004C026B5EC +:1010400030E021503F4F261B370B2630310558F03A +:10105000E091AC01F091AD01EC0FFD1F2081FA0190 +:10106000EC0FFD1F20833AE13A95F1F700C02F986D +:101070002E9AEBE2F1E03197F1F700C00000019603 +:101080008830910509F08ECFA091AE01B091AF01EB +:10109000AC0FBD1FE091AC01F091AD01EC0FFD1F55 +:1010A0009C918081981751F00E940D246093B001AB +:1010B0007093B1018093B2019093B3012196C8302F +:1010C000D10509F06DCF5C9B1BC080915503853025 +:1010D00021F080915503811113C06091B00170918E +:1010E000B1018091B2019091B3010E94432461311A +:1010F00077428105910520F00E947D070E94902390 +:1011000081E0DF91CF911F910F9108952091AE0161 +:101110003091AF01F901E80FF11D808108950F931F +:101120001F93CF93DF938EEB91E00E94DB06C0E02C +:10113000D0E002EB11E0E091AE01F091AF01EC0FD5 +:10114000FD1F80810E9466231F928F93DF93CF93B0 +:101150001F930F930E94740721960F900F900F908A +:101160000F900F900F90C830D10529F7DF91CF91E4 +:101170001F910F9108950C9483070C947D07569A44 +:1011800081FF02C05E9A08955E98089588E080937A +:10119000CC001092CD00E9ECF0E080818069808382 +:1011A000808188608083EAECF0E080818083EBECD2 +:1011B000F0E080818083559A5D98789408959091AD +:1011C000B5012091B4019217D1F030E0F901EA5451 +:1011D000FE4F80812F5F3F4F33272093B401492F6B +:1011E00050E0921718F4241B350B03C0241B350B59 +:1011F0003395233031050CF05D9890E008958FEF22 +:101200009FEF08959091C80095FFFCCF8093CE008A +:1012100008951F920F920FB60F9211242F933F93B0 +:101220004F935F938F939F93EF93FF938091B501BB +:1012300090E0AC014F5F5F4F2091B401241741F063 +:101240003091CE00FC01EA54FE4F30834093B5014B +:101250003091B501822F90E0432F50E0841B950B15 +:10126000321708F0939503970CF45D9AFF91EF9174 +:101270009F918F915F914F913F912F910F900FBE52 +:101280000F901F9018958091CE0208950895809137 +:10129000CE0208950895089508950895CF93DF9399 +:1012A0008D3C9105B9F1B8F4853B9105A9F148F45D +:1012B000833B9105D1F1843B9105D1F5D0E0C0E2AB +:1012C0003BC0873B910571F150F18C3C910581F554 +:1012D000D0E0C8E031C08A3E9105C1F040F4823EC2 +:1012E0009105B1F0893E910519F5D0E124C0813214 +:1012F00022E0920749F0833222E09207D9F08A383F +:101300009140B1F4D2E017C0D4E015C0D0E213C0D0 +:10131000D0E411C0D0E80FC0D0E0C1E00DC0D0E0F3 +:10132000C2E00AC0D0E0C4E007C0D0E0C0E104C021 +:10133000D0E001C0D1E0C0E08DEF0E94020983E05F +:101340000E94020983E00E9402098D2F0E94020977 +:101350008C2FDF91CF910C940209CF93DF93EC0196 +:101360008DEF0E94020985E00E94020982E00E943E +:10137000020988810E94020989810E9402098A81EA +:101380000E9402098B81DF91CF910C940209CF93C7 +:10139000DF93EC018DEF0E94020989E00E940209AF +:1013A00081E00E94020988810E94020980E00E9477 +:1013B00002098A810E9402098B810E9402098C81A4 +:1013C0000E9402098D810E9402098E810E940209F9 +:1013D0008F81DF91CF910C9402090C94DF08EF927A +:1013E000FF920F931F93CF938C010E9401247C01E5 +:1013F000C0E0C7010E9419248017910798F40E9449 +:10140000DF089C012F3F8FEF380751F02D3041F05E +:101410002A3041F0EC2FF0E0EA54FD4F2083CF5FFB +:10142000C73138F3EC2FF0E0EA54FD4F108286EB21 +:1014300092E0CF911F910F91FF90EF9008950C943F +:10144000020981B3881F8827881F0895879A8F9A79 +:10145000089585B7806885BF85B7806885BF0E947D +:10146000260A86988E9A81988998559A5D980C9448 +:10147000C608879A8F9808958FB1869581700895D0 +:101480008FB186FB882780F908958093CE02089556 +:10149000CF93DF93CAE6D2E00E94ED098F3F2FEF92 +:1014A000920759F09F938F93DF93CF930E94740715 +:1014B0000F900F900F900F90EFCFDF91CF91089585 +:1014C000CF93DF93FC018491EF012196882321F0D3 +:1014D0000E941F0AFE01F7CF2FEF89E698E1215005 +:1014E00080409040E1F700C0000084E690E00E9458 +:1014F000EF098093CF029093D0029F938F938DE654 +:1015000092E09F938F930E9474070E94480A0F9065 +:101510000F900F900F908091CF029091D002DF91A9 +:10152000CF9108950E94CD179093150180931401D7 +:101530000E945B1D80E091E00E94C8170E94390A5A +:101540000E94400A8111FCCF80E592E00E94DB06F8 +:101550002FEF85EB95E3215080409040E1F700C0EC +:1015600000008CE492E00E94600AEFEFFBE42DE1C2 +:10157000E150F0402040E1F700C000000E94480A1E +:1015800088E492E00E94600AFC018081863721F0A5 +:1015900084E492E00C94600A08958BE292E00E9449 +:1015A000DB0685E292E00E94600A0E94260A0E9401 +:1015B0005B1D80911401909115010C94C8170C9437 +:1015C000750F8F929F92AF92BF92CF92DF92EF9260 +:1015D000FF920F931F93CF93DF9392E0B92E0EE704 +:1015E00014E024E8E22E24E0F22EAA24A39433E0AF +:1015F000932E4CE6C42E44E0D42E0E94ED09EC015B +:10160000019609F441C08091D3028130F9F028F0AD +:10161000823009F1833021F134C0CE3FD10519F475 +:10162000A092D302EACFC038D10528F4DF93CF933C +:10163000FF92EF9204C0DF93CF931F930F930E940A +:1016400074070F900F900F900F90D7CF2297C9F487 +:10165000B092D302D2CF2197A1F49092D302CDCFF2 +:101660008091400380FF0AC0DF93CF93DF92CF9237 +:101670000E9474070F900F900F900F908C2F0E9474 +:10168000450A1092D302B9CF8091D502811121C0B1 +:101690008091D40281111DC00E943C0A81110AC0B0 +:1016A0000E94CD178A50914029F00E945B1D8AE06C +:1016B00091E00DC00E943C0A882359F00E94CD178A +:1016C0008651914031F00E945B1D86E191E00E94BD +:1016D000C8178091D1029091D2020E941924893EAC +:1016E00023E0920708F461C028EE33E0B9010E94BC +:1016F000A82C629FC001639F900D729F900D1124D2 +:101700002091D1023091D202820F931F9093D20286 +:101710008093D1020E941310833011F481E001C044 +:1017200080E00E94640F0E940D2428EE33E040E028 +:1017300050E00E94D02C49015A018CE3C82ED12CD4 +:10174000E12CF12CCA01B901A70196010E94D02C0D +:10175000672B682B692B49F50E94DC0F2091400311 +:1017600020FF23C09F938F931F921F92C501B40146 +:1017700020E13EE040E050E00E94D02CC22FA701C3 +:1017800096010E94D02C3F932F931F92CF9387E511 +:1017900094E09F938F930E9474078DB79EB70A962B +:1017A0000FB6F8949EBF0FBE8DBF0E943C0A8111F8 +:1017B00007C00E94400A882319F06E9A769802C0EA +:1017C0006E9A769ADF91CF911F910F91FF90EF90D3 +:1017D000DF90CF90BF90AF909F908F9008958F92A1 +:1017E0009F92AF92BF92CF92DF92EF92FF921F93A0 +:1017F000CF93DF9300D000D0CDB7DEB7833109F4AB +:101800008CC008F05BC08B3009F466C08C3009F4E2 +:101810008FC0853009F0FBC10E940D2428EE33E013 +:1018200040E050E00E94D02C49015A010E94DC0F98 +:101830009F938F9386EA92E09F938F930E94740701 +:10184000C501B40120E13EE040E050E00E94D02C10 +:101850005F934F933F932F9320EA32E03F932F9370 +:1018600069837A838B839C830E9474078CE3C82EE0 +:10187000D12CE12CF12C69817A818B819C81A7018B +:1018800096010E94D02C5F934F933F932F938AE948 +:1018900092E09F938F930E947407C501B401A70142 +:1018A00096010E94D02C9F938F937F936F9384E92E +:1018B00092E09F938F930E94740740C1883361F038 +:1018C00020F4883109F440C1A2C1873409F46DC104 +:1018D0008C3409F456C19BC183E394E00E94DB067B +:1018E0008EE194E00E94DB0684E094E00E94DB0637 +:1018F0008DED93E00E94DB0682EC93E00E94DB0614 +:1019000080EB93E00E94DB061091D50211117DC19E +:1019100080E993E00E94DB067EC10E94920A88E77C +:1019200092E00E94600A82E792E00E94600A6BC126 +:1019300087E793E00E94DB060E94CD178A50914012 +:1019400019F08FE291E002C089E291E09F938F93BA +:1019500089E693E09F938F930E9474078091D4024D +:101960001F928F938AE593E09F938F930E94740751 +:101970000E943C0A0FB6F894DEBF0FBECDBF8111A6 +:1019800007C00E94400A811106C088E391E005C0AB +:1019900084E391E002C08BE391E09F938F9380E515 +:1019A00093E09F938F930E9474070E94210A1F92D5 +:1019B0008F9385E393E09F938F930E9474078091A8 +:1019C000D5021F928F9384E293E09F938F930E949E +:1019D0007407809155030FB6F894DEBF0FBECDBFDC +:1019E0008823B9F0809155038130B1F0809155037F +:1019F0008230A9F0809155038330A1F08091550386 +:101A0000843099F080915503853091F080E791E022 +:101A100011C088E491E00EC080E491E00BC083E542 +:101A200091E008C08BE591E005C085E691E002C039 +:101A300082E791E09F938F9385E193E09F938F934B +:101A40000E9474078BE093E09F938F930E9474072A +:101A50000E9413100F900F900F900F900F900F9007 +:101A6000813059F038F0823059F0833061F485EFDD +:101A700092E00BC086E093E008C080E093E005C0F0 +:101A800089EF92E002C083EF92E09F938F930E94D0 +:101A900074070F900F9081EF92E09F938F930E94B5 +:101AA0007407809153031F928F9388ED92E09F9368 +:101AB0008F930E9474078091D90081701F928F9339 +:101AC0008EEC92E09F938F930E9474070E940D24E6 +:101AD00028EE33E040E050E00E94D02C69017A010A +:101AE0009CE3892E912CA12CB12CCA01B901A5012E +:101AF00094010E94D02C7F936F93C701B60120E11F +:101B00003EE040E050E00E94D02C122FA50194014D +:101B10000E94D02C3F932F931F921F93C701B601B1 +:101B200020E831E541E050E00E94D02C3F932F9314 +:101B300081EB92E09F938F930E9474070FB6F89405 +:101B4000DEBF0FBECDBF61C08091D502811162C0E2 +:101B50001091D402112339F089E892E00E94DB064B +:101B60001092D40258C08FE792E00E94DB0681E019 +:101B70008093D4020E945B1D86E191E00E94C81709 +:101B800044C00E94210A182F882341F00E94920A23 +:101B900081E0809350038093D5023DC00E94CD0A1E +:101BA000109250031092D50230C08091D50281115D +:101BB00002C00E94920A8EE192E00E94600A83E1D4 +:101BC00092E00E94600A8FEF91E00E94600A88EF25 +:101BD00091E00E94600A8EEE91E00E94600A87EE1A +:101BE00091E00E94600A8DED91E00E94600A83ED11 +:101BF00091E00E94600A8DEC91E00E94600A809161 +:101C0000D502811102C00E94CD0A11E004C01091DA +:101C1000D50201C010E0812F0F900F900F900F9010 +:101C2000DF91CF911F91FF90EF90DF90CF90BF9009 +:101C3000AF909F908F900895CF93C82F0E94C52298 +:101C4000827291E009F490E04C2F50E0FA01349751 +:101C5000E934F10508F0D0C0EA5AFF4F0C94F22C99 +:101C60008BE12DC19111CCC081E629C19111CAC06F +:101C700082E625C19111C8C083E621C19111C6C079 +:101C800084E61DC19111C4C085E619C19111C2C07D +:101C900086E615C19111C0C087E611C19111BEC081 +:101CA00088E60DC19111BCC089E609C19111BAC085 +:101CB0008AE605C19111B8C08BE601C19111B6C089 +:101CC0008CE6FDC09111B4C08DE6F9C09111B2C08F +:101CD0008EE6F5C09111B0C08FE6F1C09111AEC093 +:101CE00080E7EDC09111ACC081E7E9C09111AAC0B5 +:101CF00082E7E5C09111A8C083E7E1C09111A6C0B9 +:101D000084E7DDC09111A4C085E7D9C09111A2C0BC +:101D100086E7D5C09111A0C087E7D1C091119EC0C0 +:101D200088E7CDC091119CC089E7C9C091119AC0C4 +:101D30008AE7C5C0911198C081E3C1C0911196C0D6 +:101D400082E3BDC0911194C083E3B9C0911192C0E8 +:101D500084E3B5C0911190C085E3B1C091118EC0EC +:101D600086E3ADC091118CC087E3A9C091118AC0F0 +:101D700088E3A5C0911188C089E3A1C0911186C0F4 +:101D800080E39DC088E09BC089E099C080E297C055 +:101D900091117EC08DE293C091117CC08DE38FC004 +:101DA00091117AC08BE58BC0911178C08DE587C009 +:101DB000992309F475C08CE782C0992309F472C095 +:101DC0008CE77DC0911170C08BE379C091116EC01A +:101DD00087E275C091116CC080E671C091116AC034 +:101DE0008CE26DC0911168C08EE269C0911166C02D +:101DF0008FE265C080E063C080E261C08AE05FC0BE +:101E000081E45DC082E45BC083E459C084E457C0D0 +:101E100085E455C086E453C087E451C088E44FC0D0 +:101E200089E44DC08AE44BC08BE449C08CE447C0D0 +:101E30008DE445C08EE443C08FE441C080E53FC0DF +:101E400081E53DC082E53BC083E539C084E537C00C +:101E500085E535C086E533C087E531C088E52FC00C +:101E600089E52DC08AE52BC081E229C080E427C026 +:101E700083E225C084E223C085E221C08EE51FC035 +:101E800086E21DC08AE21BC088E219C089E217C041 +:101E90008FE515C08BE213C08BE711C08DE70FC033 +:101EA0008CE50DC08CE50BC08AE309C082E207C057 +:101EB0008EE705C08CE303C08EE301C08FE30E9470 +:101EC0001F0A81E0CF910895833019F4859A7D9A95 +:101ED0000895813011F4859A06C0823019F4859AEC +:101EE0008D9A089585988D98089581E00E94640FD9 +:101EF0002FEF89E698E1215080409040E1F700C043 +:101F0000000082E00E94640F2FEF89E698E12150E3 +:101F100080409040E1F700C0000081E00E94640F23 +:101F20002FEF89E698E1215080409040E1F700C012 +:101F3000000082E00E94640F2FEF89E698E12150B3 +:101F400080409040E1F700C0000080E00E94640FF4 +:101F500080EC80937C0087E080937A0081E9809315 +:101F60007E0081E080937F008BE380937D00849AE4 +:101F70008C9808958091D90080FF1CC090B331B334 +:101F800085988D9AEFE9FFE03197F1F700C00000E6 +:101F90008FB185FB882780F920B390722F7D292B84 +:101FA00020BB91B3232F20729F7D922B91BB91E098 +:101FB0008927089580E00895CF93DF9300D0CDB7AF +:101FC000DEB7849A8C9A80917A00806880937A0038 +:101FD0008FE99FE00197F1F700C0000080917A003F +:101FE000806480937A0080917A0086FDFCCF809196 +:101FF0007800909179009A83898380917A008F7715 +:1020000080937A00849A8C9829813A8145E0429F96 +:10201000C001439F900D1124805591090F900F909E +:10202000DF91CF9108958091D90080FD0C94BA0F73 +:102030000E94DC0F8C3A2DE0920720F481E080931F +:10204000D60205C085379E4010F01092D6028091CE +:10205000D602811102C082E0089583E00895CF93F3 +:10206000C82F0E9498068C2F0E94C01080E0CF914C +:102070000895CF9384B7877F84BF0FB6F894A8954F +:1020800080916000886180936000109260000FBEB4 +:1020900090E080E80FB6F89480936100909361001F +:1020A0000FBE0E9414150E9471158091E200846099 +:1020B0008093E2008FE290E10E946123509A589A47 +:1020C0005198599A7894CFEF80915503843051F00C +:1020D0008FE79EE30197F1F700C000000E94AD1763 +:1020E000C15091F787EA94E00E94DB060E94290A1A +:1020F0000E94DF0A8BE994E00E94DB060E945E18D2 +:102100000E943C0A811103C08AE091E002C086E18E +:1021100091E00E94C8178BE894E00E94DB060E94C1 +:102120003C0A882319F1809155038530F9F487E83A +:1021300094E00E94DB060E94BD080E9490230E944A +:1021400090230E9490230E9490230E9490230E943B +:1021500090230E94902380915303882301F30E94CF +:10216000B9238823E1F20E946713D9CF0E94621835 +:102170000E94AD170E94E10AD2CF8091E202089539 +:102180009FB7F8941092D9029FBF90915503943055 +:1021900009F057C09091E9009F703091EC00232F17 +:1021A000217030FD20E8922B24E02093E90020915B +:1021B000EB0020FF43C02091EE0027FF3FC020919D +:1021C000D702222321F02091E80025FF37C010928A +:1021D000D70226E03091E80035FD15C03091550357 +:1021E000343061F53091EB0035FD28C0215021F4E9 +:1021F00081E08093D70222C0EFE9FFE03197F1F749 +:1022000000C00000E7CF8093F1008091E80085FDD9 +:102210000AC08091E80080FFFCCF8091E8008E77B3 +:102220008093E80006C08FB7F89421E02093D9028C +:102230008FBF9F709093E90080E008959F70909306 +:10224000E9008FEF0895CF93DF9300D01F92CDB7B1 +:10225000DEB79C0180915503843019F593E0998392 +:102260003B832A839093E9008FEF9091E80081509F +:1022700095FD06C095ED9A95F1F700008111F5CF17 +:102280008091E80085FF0DC040E050E063E070E021 +:10229000CE0101960E947D138091E8008E77809395 +:1022A000E8000F900F900F90DF91CF910895CF939A +:1022B000DF9300D01F92CDB7DEB7209155032430B5 +:1022C00021F522E029839B838A8383E08093E900C0 +:1022D0008FEF9091E800815095FD06C095ED9A959D +:1022E000F1F700008111F5CF8091E80085FF0DC066 +:1022F00040E050E063E070E0CE0101960E947D1363 +:102300008091E8008E778093E8000F900F900F90F7 +:10231000DF91CF910895209155032430F1F422E00C +:102320002093E9002FEF3091E800215035FD06C0E1 +:1023300035ED3A95F1F700002111F5CF2091E80035 +:1023400025FF0BC040E050E065E070E00E947D1387 +:102350008091E8008E778093E8000895CF93DF9313 +:1023600020915503243039F521E02093E9002FEF27 +:102370003091E800215035FD06C035ED3A95F1F772 +:1023800000002111F5CF2091E80025FF14C0EC01D9 +:1023900040E050E068E070E00E947D138091E8002A +:1023A0008E778093E80088E0FE01AAEDB2E001900C +:1023B0000D928A95E1F7DF91CF91089582EC94E038 +:1023C0000E94DB0680915403811109C00E941415FC +:1023D0000E9471158091E20084608093E20008956C +:1023E0008EEB94E00E94DB061092540308958AEB72 +:1023F00094E00C94DB062091D8022F5F822F62E3D9 +:102400000E949C2C992319F02093D80208951092D1 +:10241000D8028091D902882371F1809155038430CC +:1024200041F58091E9008F702091EC00922F91701E +:1024300020FD90E8892B94E09093E9009091EB00C7 +:1024400090FF14C09091EE0097FF10C09091E800AB +:1024500095FF03C01092F100F9CF9091E80090FF32 +:1024600005C09091E8009E779093E8008F7080936C +:10247000E9001092D902089542E061EC81E00E94E7 +:102480008E1442E061EC82E00E948E1442E061EC26 +:1024900083E00E948E1442E261EC84E00C948E147E +:1024A00080915703833009F453C030F4813071F0C8 +:1024B000823009F48CC008958A3009F478C08B30DA +:1024C00009F45EC0893009F09AC020C0809156039B +:1024D000813A09F094C08091E800877F8093E800FA +:1024E00080915A0390915B03892B21F468E08AED77 +:1024F00092E003C060E080E090E070E00E94CA13C8 +:102500008091E8008B778093E800089580915603CE +:10251000813209F074C080915A0390915B03892B3A +:1025200009F06DC08091E800877F8093E80080917A +:10253000E80082FD05C0809155038111F8CF5FC08E +:102540008091F1008093E2028091E8008B7753C084 +:1025500080915603813A09F052C080915A039091BC +:102560005B03892B09F04BC08091E800877F809343 +:10257000E8008091E80080FFFCCF8091200136C008 +:10258000809156038132D9F580915A0390915B0373 +:10259000892BA9F58091E800877F8093E8000E944D +:1025A000C31480915803809320010C945B1D80918B +:1025B0005603813221F58091E800877F8093E800FF +:1025C0000E94C314809159038093E302089580917F +:1025D0005603813AA1F48091E800877F8093E80058 +:1025E0008091E80080FFFCCF8091E3028093F100AE +:1025F0008091E8008E778093E8000C94C3140895CE +:10260000089586EB94E00E94DB060C9400130C9472 +:10261000CD2382EB94E00E94DB060C940713292F54 +:10262000332723303105C9F064F42130310581F0BE +:102630002230310509F043C084E790E02EEE34E00B +:1026400042C021323105F1F02232310541F137C06B +:1026500082E190E022E635E036C09927813091058D +:1026600041F08230910541F0892B49F5EAEEF4E022 +:1026700005C0EAEDF4E002C0E6ECF4E0849190E0FD +:102680009F0121C06430D8F4E62FF0E0EE0FFF1F69 +:10269000E857FE4F2081318189E090E014C064301A +:1026A00070F470E0FB01EE0FFF1FE058FE4F208139 +:1026B0003181FB01E458FE4F808190E004C080E04E +:1026C00090E020E030E0FA0131832083089580E13A +:1026D00089BD82E189BD09B400FEFDCF8091D8009B +:1026E0008F7D8093D8008091E00082608093E0002D +:1026F0008091E00081FDFCCF0895CF92DF92EF92B0 +:10270000FF920F931F93CF93DF93EC018B017A011C +:102710000E94E214811135C0E114F10439F0F7018F +:1027200080819181081B190BC80FD91FC12CD12C96 +:102730000115110529F18091E80085FD18C08091EF +:10274000E8008E778093E8000E94AD17E114F10451 +:1027500049F0F70180819181C80ED91ED182C082D3 +:1027600085E00FC00E94E214882311F30AC089910A +:102770008093F10001501109FFEFCF1ADF0AD8CF83 +:1027800080E0DF91CF911F910F91FF90EF90DF904C +:10279000CF90089520915C0330915D032617370791 +:1027A00048F06115710539F42091E8002E772093E7 +:1027B000E80001C0B90140E061157105A9F120915F +:1027C0005503222309F443C0253009F442C0209167 +:1027D000E80023FD40C02091E80022FD32C0209196 +:1027E000E80020FFE9CF4091F3002091F20030E0B3 +:1027F000342BFC01CF016115710559F028303105EA +:1028000040F481918093F100615071092F5F3F4F37 +:10281000F1CF41E02830310509F040E02091E80097 +:102820002E772093E800C8CF4111C9CF0AC080910C +:102830005503882361F0853061F08091E80083FDC5 +:102840000AC08091E80082FFF2CF80E0089582E024 +:10285000089583E0089581E0089520915C0330910C +:102860005D032617370748F06115710539F420918B +:10287000E8002E772093E80001C0B901FC0120E0B8 +:102880006115710591F180915503882309F440C0C9 +:10289000853009F43FC08091E80083FD3DC0809100 +:1028A000E80082FD2FC08091E80080FFE9CF2091F1 +:1028B000F3008091F20090E0922B6115710559F0C0 +:1028C0008830910540F424912093F10031966150B5 +:1028D00071090196F2CF21E0089709F020E080917C +:1028E000E8008E778093E800CBCF2111CCCF0AC0CF +:1028F00080915503882361F0853061F08091E80074 +:1029000083FD0AC08091E80082FFF2CF80E0089545 +:1029100082E0089583E0089581E00895982F97302C +:1029200058F59093E900981739F07091EC002091D8 +:10293000ED005091F00003C0242F762F50E021FFCE +:1029400019C03091EB003E7F3093EB003091ED00E9 +:102950003D7F3093ED003091EB0031603093EB0020 +:102960007093EC002093ED005093F0002091EE0066 +:1029700027FF07C09F5FD3CF8F708093E90081E06E +:10298000089580E008958091560387FF11C08091DB +:10299000E80082FD05C0809155038111F8CF11C078 +:1029A0008091E8008B770BC080915503882349F014 +:1029B0008091E80080FFF8CF8091E8008E778093C7 +:1029C000E80008952091E4003091E50095E64091FB +:1029D000EC00842F817040FF22C08091E80080FDD0 +:1029E0001CC080915503882391F0853091F080912F +:1029F000EB0085FD10C04091E4005091E5004217C6 +:102A0000530729F39A01915011F784E0089582E069 +:102A1000089583E0089581E0089580E0089540914D +:102A2000E80042FFDECF08950E9482150E948A15B9 +:102A3000E0EEF0E0808181608083E8EDF0E080816D +:102A40008F77808319BCA7EDB0E08C918E7F8C933B +:102A500080818F7E80831092540308950F931F937B +:102A6000CF93DF930E9482150E948A15C8EDD0E0B3 +:102A700088818F77888388818068888388818F7D2B +:102A8000888319BC1092550310925103109253037E +:102A90001092520300EE10E0F80180818B7F80835A +:102AA00088818160888342E060E080E00E948E142B +:102AB000E1EEF0E080818E7F8083E2EEF0E08081C5 +:102AC00081608083808188608083F80180818E7F2F +:102AD0008083888180618883DF91CF911F910F91DE +:102AE0000895E8EDF0E080818F7E8083E7EDF0E0EF +:102AF00080818160808384E082BF81E08093540381 +:102B00000C942E15E8EDF0E080818E7F808310928A +:102B1000E20008951092DA001092E10008951F92E9 +:102B20000F920FB60F9211242F933F934F935F9301 +:102B30006F937F938F939F93AF93BF93EF93FF9385 +:102B40008091E10082FF0BC08091E20082FF07C00C +:102B50008091E1008B7F8093E1000E94FB118091C6 +:102B6000DA0080FF1FC08091D80080FF1BC08091D9 +:102B7000DA008E7F8093DA008091D90080FF0DC04B +:102B800080E189BD82E189BD09B400FEFDCF81E00D +:102B9000809355030E94DE1105C019BC10925503A5 +:102BA0000E94F0118091E10080FF19C08091E20045 +:102BB00080FF15C08091E2008E7F8093E2008091BB +:102BC000E20080618093E2008091D800806280936F +:102BD000D80019BC85E0809355030E9401138091B1 +:102BE000E10084FF30C08091E20084FF2CC080E1CE +:102BF00089BD82E189BD09B400FEFDCF8091D80076 +:102C00008F7D8093D8008091E1008F7E8093E100DA +:102C10008091E2008F7E8093E2008091E2008160EB +:102C20008093E20080915103882311F084E007C073 +:102C30008091E30087FD02C081E001C083E08093C2 +:102C400055030E9409138091E10083FF24C0809105 +:102C5000E20083FF20C08091E100877F8093E10044 +:102C600082E080935503109251038091E1008E7FA2 +:102C70008093E1008091E2008E7F8093E20080915A +:102C8000E20080618093E20042E060E080E00E9428 +:102C90008E140E94F711FF91EF91BF91AF919F9118 +:102CA0008F917F916F915F914F913F912F910F90F5 +:102CB0000FBE0F901F9018951F93CF93DF93CDB742 +:102CC000DEB7AA970FB6F894DEBF0FBECDBFE6E51C +:102CD000F3E088E08E0F9091F10091938E13FBCF7B +:102CE0000E9450128091E80083FF1FC1809156031B +:102CF00090915703492F50E04A30510508F015C113 +:102D0000FA01E156FF4F0C94F22C803881F08238A2 +:102D100009F00BC180915A038F708093E900809174 +:102D2000EB0085FB882780F91092E90006C08091AE +:102D3000520390915303911182609091E800977F24 +:102D40009093E8008093F1001092F100C8C0282F02 +:102D50002D7F09F0EAC0882319F0823061F0E5C0C8 +:102D600080915803813009F0E0C0933009F080E091 +:102D7000809353032BC080915803811127C0809109 +:102D80005A038F7009F4D1C08093E9002091EB00C1 +:102D900020FF1CC0933021F48091EB00806214C0AE +:102DA0009091EB0090619093EB0021E030E0A9015D +:102DB00002C0440F551F8A95E2F74093EA00109233 +:102DC000EA008091EB0088608093EB001092E900AC +:102DD0008091E800877F86C08111A7C010915803B9 +:102DE0001F778091E3008078812B8093E3008091AE +:102DF000E800877F8093E8000E94C3148091E80078 +:102E000080FFFCCF8091E30080688093E300111184 +:102E100002C082E001C083E08093550386C08058E1 +:102E2000823008F082C080915803909159038C3D04 +:102E300053E0950779F583E08A838AE289834FB767 +:102E4000F894DE01139620E03EE051E2E32FF0E03B +:102E500050935700E49120FF03C0E295EF703F5F6D +:102E6000EF708E2F90E0EA3010F0C79601C0C09648 +:102E70008D939D932F5F243149F74FBF8091E800D8 +:102E8000877F8093E8006AE270E0CE0101960E949D +:102E9000CA1314C0AE014F5F5F4F60915A030E9486 +:102EA0000F13BC01892B09F440C09091E800977F73 +:102EB0009093E80089819A810E942D148091E80006 +:102EC0008B778093E80031C0803879F58091E800F5 +:102ED000877F8093E800809151038093F100809177 +:102EE000E8008E778093E8000E94C3141EC0811111 +:102EF0001CC0909158039230C0F48091E800877F05 +:102F00008093E800909351030E94C3148091510371 +:102F1000811106C08091E30087FD02C081E001C0FD +:102F200084E0809355030E943C128091E80083FF67 +:102F30000AC08091E800877F8093E8008091EB00D1 +:102F400080628093EB00AA960FB6F894DEBF0FBEA6 +:102F5000CDBFDF91CF911F910895CF9380915503FD +:102F60008823A1F0C091E900CF709091EC00892FE7 +:102F7000817090FD80E8C82B1092E9008091E800F4 +:102F800083FD0E945C16CF70C093E900CF91089535 +:102F90009093E9028093E80208958091E80290916D +:102FA000E9020895E091E802F091E902309721F0FA +:102FB0000190F081E02D099480E00895EF92FF9256 +:102FC0000F931F93CF93DF93E091E802F091E90212 +:102FD0003097B1F18C010280F381E02D0995809149 +:102FE000400382FF2DC080FF04C081E696E00E946E +:102FF000DB06E80118E08BE5E82E86E0F82E8091EC +:10300000400380FF0BC088811F928F93FF92EF9245 +:103010000E9474070F900F900F900F9011502196FF +:103020001111EDCF8091400380FF0AC089E596E041 +:10303000DF91CF911F910F91FF90EF900C94DB06E1 +:10304000DF91CF911F910F91FF90EF900895E09144 +:10305000E802F091E902309721F00480F581E02D3B +:10306000099408952091E6023091E70282179307B0 +:1030700071F09093E7028093E602E091E802F0910C +:10308000E902309721F00680F781E02D0994089538 +:103090002091E4023091E5028217930771F090933A +:1030A000E5028093E402E091E802F091E9023097B2 +:1030B00021F00084F185E02D099408950E94F82301 +:1030C0000C949007CF92DF92EF92FF920F931F9391 +:1030D000CF93DF9300D000D000D0CDB7DEB70E94F1 +:1030E000B5078BEEC82E82E0D82E00E010E0E02E6F +:1030F000802F0E948608F60141916F01F42EF82678 +:10310000B1F40F5F1F4F0830110589F78FEF8983E6 +:103110008A831B820E9401248160782F9D838C8387 +:1031200049815A816B818D810E94211947C09091FC +:10313000400391FF04C08E830E948F088E8120E09F +:1031400030E04F2D50E0922FBA01022E02C075954B +:1031500067950A94E2F760FF2BC02983EA8221E099 +:1031600030E0690102C0CC0CDD1C9A95E2F790E0DA +:103170008C219D21892B09F420E02B830E940124BE +:103180008160782F9D838C8349815A816B818D81E9 +:103190000E94211949815A816B817C818D810E9415 +:1031A0007D23F801E551FD4F8081C826C08206C00D +:1031B0002F5F3F4F2830310531F6A3CF0E947C238B +:1031C0000E94F0261091EA020E94D217181741F1CE +:1031D0000E94D2178093EA029091400392FF0EC0A2 +:1031E00090FF0CC01F928F9383E796E09F938F937D +:1031F0000E9474070F900F900F900F908091EA0239 +:1032000026960FB6F894DEBF0FBECDBFDF91CF91EB +:103210001F910F91FF90EF90DF90CF900C948E2331 +:1032200026960FB6F894DEBF0FBECDBFDF91CF91CB +:103230001F910F91FF90EF90DF90CF9008950C9425 +:10324000BF08CF93DF93CDB7DEB72B970FB6F894B7 +:10325000DEBF0FBECDBF942F4F83252F58876987C0 +:103260007A878B874A855B85452B21F02F3F09F5AF +:103270009F3FF9F4DE01119686E0FD0111928A95D7 +:10328000E9F785E0FE01379601900D928A95E1F706 +:1032900049815A816B817C818D819E810E94FE1FB4 +:1032A0002B960FB6F894DEBF0FBECDBFDF91CF9146 +:1032B00008954F81588569857A858B850E947D2385 +:1032C000D9CFCF93882309F4A4C0C82F8CEF8C0FDB +:1032D000813A48F48C2F0E94162A81119AC08C2FB3 +:1032E0000E9489220CC080E28C0F883058F4C7708D +:1032F00081E001C0880FCA95EAF70E94C822CF91E9 +:103300000C940C238BE58C0F833078F4C53A29F0AC +:10331000C63A31F083E890E005C081E890E002C051 +:1033200082E890E0CF910C94321888E58C0F8531BB +:1033300008F06FC0C83A61F1C93A69F1CA3A71F14F +:10334000CB3A79F1CC3A81F1CD3A89F1CE3A91F18B +:10335000CF3A99F1C13BA1F1C03BA9F1C23BB1F118 +:10336000C33BB9F1C43BC1F1C53BC9F1C63BD1F187 +:10337000C73BD9F1C83BE1F1C93BE9F1CA3BF1F1E7 +:10338000CB3BF9F1CC3B09F43FC080E090E03EC07C +:1033900082EE90E03BC089EE90E038C08AEE90E08B +:1033A00035C085EB90E032C086EB90E02FC083EB18 +:1033B00090E02CC084EB90E029C087EB90E026C021 +:1033C0008CEC90E023C08DEC90E020C083E891E08D +:1033D0001DC08AE891E01AC082E991E017C084E933 +:1033E00091E014C081E292E011C083E292E00EC04D +:1033F00084E292E00BC085E292E008C086E292E0AF +:1034000005C087E292E002C08AE292E0CF910C947C +:103410004818CF910895882329F19CEF980F913A8D +:1034200018F40E94A6220DC090E2980F983058F42C +:10343000877091E001C0990F8A95EAF7892F0E9461 +:10344000CE220C940C239BE5980F933020F480E05F +:1034500090E00C943218885A853120F480E090E096 +:103460000C9448180895882321F00E94C8220C94D7 +:103470000C230895882321F00E94CE220C940C2363 +:103480000895CF92DF92EF92FF920F931F93CF9305 +:10349000DF9300D000D000D0CDB7DEB725E0FC012F +:1034A000DE01119601900D922A95E1F7FC01408111 +:1034B0003181F280258122952F7063817481672B81 +:1034C00009F4D8C23F3F19F44F3F09F4D3C26C014D +:1034D00049833A8389819A812E830E944822182F3A +:1034E000092F0E9447220E945721E02FE295EF709A +:1034F000F0E0E755FF4F2E810C94F22C802F807F57 +:10350000902F9F70092F882311F00295007FFF20D4 +:1035100049F0002309F45FC2802F0E94DB220E9441 +:103520000C2359C2812F0E940B1A002309F4A2C256 +:10353000802F0E94E12226960FB6F894DEBF0FBEC0 +:10354000CDBFDF91CF911F910F91FF90EF90DF9052 +:10355000CF900C940C23802F807F902F9F70092F89 +:10356000803211F00295007F112319F0113001F122 +:1035700029C0FF20A9F0802F222349F1213039F5FD +:1035800026960FB6F894DEBF0FBECDBFDF91CF9168 +:103590001F910F91FF90EF90DF90CF900C94EB2252 +:1035A000222319F0213009F465C20E94F4222CC0B4 +:1035B000FF20E9F0263008F05DC20E94C52280237A +:1035C00029F022C0FF20F1F0211115C0802F26968E +:1035D0000FB6F894DEBF0FBECDBFDF91CF911F9124 +:1035E0000F91FF90EF90DF90CF900C94331A25301D +:1035F00008F040C209C0F601858180FFECC18F70E0 +:103600008583E4CF2111FBC1802F69C1202F26952E +:103610002695237030E02115310521F02130310548 +:10362000C9F028C2FF2021F0812F902F937002C093 +:1036300080E090E026960FB6F894DEBF0FBECDBFB7 +:10364000DF91CF911F910F91FF90EF90DF90CF907E +:103650000C943218FF2021F0812F902F937002C01C +:1036600080E090E026960FB6F894DEBF0FBECDBF87 +:10367000DF91CF911F910F91FF90EF90DF90CF904E +:103680000C944818812FFF2019F00E94762502C063 +:103690000E94DE2526960FB6F894DEBF0FBECDBF82 +:1036A000DF91CF911F910F91FF90EF90DF90CF901E +:1036B0000C946326802F837009F078C0F110DAC172 +:1036C000812F829586958770880F880F912F9F7024 +:1036D000C92ED12CE12CF12C082E04C0CC0CDD1C01 +:1036E000EE1CFF1C0A94D2F714FF12C04FE050E00A +:1036F00060E070E004C0440F551F661F771F8A9575 +:10370000D2F7CB01BA01609570958095909503C072 +:1037100060E070E0CB01202F269526952370422F84 +:1037200050E042305105D1F04330510559F16C2938 +:103730007D298E299F294130510541F126960FB6EA +:10374000F894DEBF0FBECDBFDF91CF911F910F91D7 +:10375000FF90EF90DF90CF900C946C216C297D2925 +:103760008E299F2926960FB6F894DEBF0FBECDBFD7 +:10377000DF91CF911F910F91FF90EF90DF90CF904D +:103780000C947E210E946C21C701B60126960FB6CB +:10379000F894DEBF0FBECDBFDF91CF911F910F9187 +:1037A000FF90EF90DF90CF900C945A21FF2019F0FA +:1037B000802F817001C08695882309F45BC1812F19 +:1037C000829586958770880F880F912F9F70C92EDC +:1037D000D12CE12CF12C082E04C0CC0CDD1CEE1CED +:1037E000FF1C0A94D2F714FF12C04FE050E060E0D3 +:1037F00070E004C0440F551F661F771F8A95D2F7EB +:10380000CB01BA01609570958095909503C060E0FA +:1038100070E0CB01202F269526952370422F50E093 +:1038200042305105D1F04330510559F16C297D29C1 +:103830008E299F294130510541F126960FB6F89403 +:10384000DEBF0FBECDBFDF91CF911F910F91FF90D3 +:10385000EF90DF90CF900C9423226C297D298E2944 +:103860009F2926960FB6F894DEBF0FBECDBFDF911D +:10387000CF911F910F91FF90EF90DF90CF900C941C +:1038800035220E942322C701B60126960FB6F8946E +:10389000DEBF0FBECDBFDF91CF911F910F91FF9083 +:1038A000EF90DF90CF900C941122103F41F118F46B +:1038B000103E48F48BC0123F09F450C0D8F1133FBA +:1038C00009F460C083C01F70802F8F71FF2021F02A +:1038D0000E94AA21812F7BCE0E94CB21812F269688 +:1038E0000FB6F894DEBF0FBECDBFDF91CF911F9111 +:1038F0000F91FF90EF90DF90CF900C943A1AFF2039 +:10390000A9F0253008F0B6C0802F8F7126960FB62B +:10391000F894DEBF0FBECDBFDF91CF911F910F9105 +:10392000FF90EF90DF90CF900C94F021263008F0BC +:10393000A1C0EACFFF20A1F0802F8F7126960FB68D +:10394000F894DEBF0FBECDBFDF91CF911F910F91D5 +:10395000FF90EF90DF90CF900C94AA21FF2061F3AD +:10396000802F8F7126960FB6F894DEBF0FBECDBFA5 +:10397000DF91CF911F910F91FF90EF90DF90CF904B +:103980000C94CB21FF2091F0802F8F7126960FB6DB +:10399000F894DEBF0FBECDBFDF91CF911F910F9185 +:1039A000FF90EF90DF90CF900C94952126960FB664 +:1039B000F894DEBF0FBECDBFDF91CF911F910F9165 +:1039C000FF90EF90DF90CF900C949021FF20A1F01A +:1039D000222309F4B1CF812F26960FB6F894DEBFCB +:1039E0000FBECDBFDF91CF911F910F91FF90EF9050 +:1039F000DF90CF900C946119222309F4B1CF812F6D +:103A000026960FB6F894DEBF0FBECDBFDF91CF91E3 +:103A10001F910F91FF90EF90DF90CF900C940B1AB5 +:103A2000402F4F70612FC6010E94F02426960FB6DA +:103A3000F894DEBF0FBECDBFDF91CF911F910F91E4 +:103A4000FF90EF90DF90CF900C94A220402F4F700A +:103A5000612FC60126960FB6F894DEBF0FBECDBF0C +:103A6000DF91CF911F910F91FF90EF90DF90CF905A +:103A70000C94F32426960FB6F894DEBF0FBECDBF8C +:103A8000DF91CF911F910F91FF90EF90DF90CF903A +:103A900008950E94E8220E94B7220E940C230E94EF +:103AA00095270E94632680E090E00E94321880E013 +:103AB00090E00C9448180E94D8220C94491D0E9452 +:103AC0004822292F22952F7030E02C3031054CF4FC +:103AD0002A3031056CF4225031092230310588F446 +:103AE00007C02C30310549F02F30310531F009C0C5 +:103AF000803E48F0803F29F406C093FB882780F978 +:103B0000089580E0089581E00895CF93DF9300D079 +:103B100000D01F92CDB7DEB70F900F900F900F908F +:103B20000F90DF91CF910895CF93DF9300D000D015 +:103B300000D0CDB7DEB726960FB6F894DEBF0FBE25 +:103B4000CDBFDF91CF9108951F93CF93DF93C091A5 +:103B5000F30216E08091F402C81799F0D0E01C9FA0 +:103B6000F0011D9FF00D1124EB50FD4F408151815C +:103B700062817381848195810E94941D2196C77012 +:103B8000E9CFDF91CF911F91089540912503509186 +:103B90002603609127037091280380912903909157 +:103BA0002A030C94941D80912A0382958F7009F04A +:103BB00054C080912703882309F44FC08091F302F9 +:103BC000A091F4026091250370912603409128038F +:103BD00050912903B6E08A1709F43FC090E04115DF +:103BE0005105C1F17F3F11F46F3FA1F1B89FF00182 +:103BF000B99FF00D1124EB50FD4F218172132AC0A3 +:103C00002081621327C02281211124C023813481A5 +:103C10002417350710F421503109241B350B2C32A1 +:103C20003140C0F420912A032F70206120932A0391 +:103C300026E0289FF001299FF00D1124E650FD4F4A +:103C400080818F708061808385E293E00E94411AB9 +:103C50000C94A41D01968770BECF0895CF92DF9279 +:103C6000EF92FF920F931F93CF93DF93CDB7DEB701 +:103C700062970FB6F894DEBF0FBECDBF8C0185E012 +:103C8000F801DE011D9601900D928A95E1F7D801A9 +:103C90004C9111965C91119712966C911297139614 +:103CA000CD90DC901497309125037091260380917C +:103CB000280390912903009709F473C17F3F19F4F9 +:103CC0003F3F09F46EC1E0902703EE2009F4C5C020 +:103CD00020912A03C816D90650F0F601E81BF90B0B +:103CE000CF01FF24F3948C329140C8F009C0809535 +:103CF00090958C0D9D1DFF24F3948C32914078F0AB +:103D0000F12C207F09F0C6C07C2DD98AC88A898908 +:103D10000E94851D85E293E00E94411AB1C0822F66 +:103D2000807F09F045C0751313C0341311C06111B1 +:103D30000FC02F70206120932A030E94C51D85E2C9 +:103D400093E00E94411A80912A03F80185832EC0D6 +:103D5000CD2819F15F3F11F44F3FF9F0F62E6111B4 +:103D60001CC08091F3022091F40236E0821709F41E +:103D70005BC090E0389FF001399FF00D1124EB50AB +:103D8000FD4F7181571306C07081471303C07281C4 +:103D9000711103C001968770E9CFF62E662309F4EE +:103DA0001DC180912A03816080932A03F12C16C1E2 +:103DB000751309C0341307C0611105C080912A032F +:103DC000F8018583C8C04D875E878D859E856A8B87 +:103DD0000E945F1D6A898823E1F16623D1F1209159 +:103DE0002A03822F82958F7090E0029774F0809161 +:103DF00025039091260398878F831986DB86CA86D0 +:103E00002C87CE0107960E94411A86E0F801A5E2B0 +:103E1000B3E001900D928A95E1F70E94D31D0E94B4 +:103E2000C51DFF24F394DAC04D875E878D859E857E +:103E30000E944822292F22952F7030E02230310530 +:103E40000CF0BFC09F7009F0B9C0805E883008F4E4 +:103E5000C5C0C8010E94411AE4CFC816D90608F4AB +:103E600053C0F601E81BF90BCF018C32914008F4E6 +:103E700053C0F12C7C2DD98AC88A89890E94851D5E +:103E8000E5E2F3E086E0DF011D928A95E9F70E9402 +:103E9000C51DA4C0751314C0341312C0611110C025 +:103EA00080912A03F8018583C8010E94411A86E0A7 +:103EB000E5E2F3E0DF011D928A95E9F7FE2C8EC062 +:103EC0004D875E878D859E856A8B0E945F1D6A89FE +:103ED000882309F4BECF662309F4BBCF20912A03BF +:103EE000822F82958F7090E002970CF48ECF809194 +:103EF0002503909126039A8389831B82DD82CC82DD +:103F00002E83CE0101967FCF809590958C0D9D1DBF +:103F10008C32914008F0ADCFF62E662309F499CF8C +:103F200075132EC034132CC020912A0320FD1FC00E +:103F3000822F82958F70D9F0D80115962C93159702 +:103F40008F3049F08F5F982F9295907F822F8F70DE +:103F5000892B15968C93C8010E94411A86E0F801BE +:103F6000A5E2B3E001900D928A95E1F790CF86E04B +:103F7000F801A5E2B3E001900D928A95E1F72EC019 +:103F80004D875E878D859E850E945F1D81113DCF87 +:103F900080912A03816080932A03C8010E94411AFC +:103FA0001DC0662309F455CF4D875E878D859E859C +:103FB0000E945F1D882309F44CCF27CF811145CF84 +:103FC0000DC0243031050CF044CF9F7009F43DCF73 +:103FD000D80115969C91907F09F037CF8F2D62966E +:103FE0000FB6F894DEBF0FBECDBFDF91CF911F910A +:103FF0000F91FF90EF90DF90CF9008951F93CF9394 +:10400000DF93CDB7DEB72C970FB6F894DEBF0FBEA7 +:10401000CDBF4F83588769877A878B879C87CE016E +:1040200007960E942E1E882369F08F8198852A8525 +:104030003B85232BF1F19F3F09F063C08F3F09F0CF +:1040400060C037C086E0FE013796DE011196019010 +:104050000D928A95E1F76F817885EA85FB85309727 +:1040600041F17F3F11F46F3F21F12091F40230E0E4 +:10407000C9010196877099274091F30250E0841797 +:10408000950709F447C069837A83FD83EC8396E042 +:10409000929FD001939FB00D1124AB50BD4FFE01F4 +:1040A000319601900D929A95E1F78093F4020E9467 +:1040B000A41D16E08091F3029091F4028917C1F1DA +:1040C000189FC00111248B509D4F0E942E1E8823E3 +:1040D00079F1E091F3021E9FF0011124EB50FD4FA6 +:1040E0004081518162817381848195810E94941DF8 +:1040F0008091F30290E00196877099278093F302F4 +:10410000D9CF4F81588569857A858B859C850E949A +:10411000941DCFCF0E945B1D1092F4021092F30207 +:10412000E5E2F3E086E0DF011D928A95E9F7C1CF71 +:104130002C960FB6F894DEBF0FBECDBFDF91CF91A6 +:104140001F910895DF92EF92FF920F931F93CF93E9 +:10415000DF93FC01892B09F48AC0E12CF12CDD24CA +:10416000D394EF0121968491853709F461C058F406 +:10417000843708F04EC0843008F06AC08130D1F036 +:10418000823071F174C0883709F45DC050F486370D +:1041900009F455C0873709F06AC08E2D0E94D522D8 +:1041A00054C09CE7980F903708F061C08F770E9449 +:1041B0000B1A50C08F010E5F1F4FFE01849190E2D9 +:1041C000980F983050F48770FD2D01C0FF0F8A952D +:1041D000EAF78F2F0E94DB2214C00E94611913C0DE +:1041E0008F010E5F1F4FFE01C49180E28C0F88305B +:1041F00060F4C7708D2D01C0880FCA95EAF70E9440 +:10420000E1220E940C23E80125C08C2F0E940B1A8A +:10421000FACF9F012E5F3F4FFE01C491CC2369F07E +:104220008FE99FE00197F1F700C00000C150F6CF81 +:104230009F012E5F3F4FFE01F490E9010BC00E94E9 +:10424000C522E82E07C00E94D8220E940C2302C07B +:104250000E9461198F2D882341F0EFE9FFE031972B +:10426000F1F700C000008150F6CFFE017ACFDF9158 +:10427000CF911F910F91FF90EF90DF900895609381 +:104280002F037093300380933103909332030E9485 +:104290008C230C94491D60932B0370932C03809303 +:1042A0002D0390932E030E948D230C94491D089595 +:1042B0000C943F210F931F9300912F031091300313 +:1042C0002091310330913203602B712B822B932B81 +:1042D0001F910F910C943F210F931F9300912F0377 +:1042E0001091300320913103309132036023712308 +:1042F000822393231F910F910C943F210F931F93BF +:1043000000912F031091300320913103309132033B +:1043100060277127822793271F910F910C943F21CB +:1043200060E070E0CB010C944B210F931F9341E0B0 +:1043300050E060E070E08A019B0104C0000F111F93 +:10434000221F331F8A95D2F7C901B8011F910F911F +:104350000C944B210F931F9341E050E060E070E01C +:1043600004C0440F551F661F771F8A95D2F78091AE +:104370002B0390912C03A0912D03B0912E038A0161 +:104380009B01082B192B2A2B3B2BC901B8011F912C +:104390000F910C944B210F931F9341E050E060E08C +:1043A00070E004C0440F551F661F771F8A95D2F72F +:1043B000409550956095709580912B0390912C03BA +:1043C000A0912D03B0912E038A019B01082319238C +:1043D0002A233B23C901B8011F910F910C944B2153 +:1043E0000F931F9341E050E060E070E004C0440F81 +:1043F000551F661F771F8A95D2F780912B039091E6 +:104400002C03A0912D03B0912E038A019B01082754 +:1044100019272A273B27C901B8011F910F910C9436 +:104420004B210F931F9300912B0310912C0320918C +:104430002D0330912E03602B712B822B932B1F9118 +:104440000F910C944B210F931F9300912B0310910C +:104450002C0320912D0330912E036023712382239E +:1044600093231F910F910C944B210F931F93009155 +:104470002B0310912C0320912D0330912E036027E4 +:104480007127822793271F910F910C944B21089538 +:10449000CF92DF92EF92FF920F931F93CF93DF9310 +:1044A0008C01C0902F03D0903003E0903103F09046 +:1044B000320340912B0350912C0360912D03709196 +:1044C0002E03C42AD52AE62AF72ACFE1D0E0D70165 +:1044D000C6010C2E04C0B695A795979587950A94AA +:1044E000D2F780FF07C0B8018C2F0E94C52481300D +:1044F000910531F4219758F7B80180E00E94C52456 +:10450000DF91CF911F910F91FF90EF90DF90CF90AF +:1045100008952091210130912201F90132969FEFF7 +:1045200040E05191581789F09F3F19F4511101C093 +:10453000942F4F5F4630A9F79F3F39F0F901E90FFB +:10454000F11D97FDFA958283089508952091210128 +:1045500030912201F9013296285F3F4F90819813E4 +:1045600001C010823196E217F307C1F7089581E088 +:1045700090E0E0912101F0912201E80FF91F1082F3 +:10458000019688309105A9F7089580913F03089519 +:1045900090913F03892B80933F03089580959091DC +:1045A0003F03892380933F03089580933F03089539 +:1045B00010923F03089590913E03892B80933E0310 +:1045C0000895809590913E03892380933E0308953A +:1045D00010923E030895809335030E940124909326 +:1045E00034038093330308951092350310923403FB +:1045F0001092330308958091210190912201FC01D2 +:1046000031969C01285F3F4F80E0919191118F5F1F +:10461000E217F307D1F70895E0912101F09122010B +:1046200080913F038083E0912101F09122019081EC +:1046300080913E03892B8083809135038823D9F1B3 +:104640000E94012420913303309134038217930791 +:1046500048F00E9401242091330330913403821BDF +:10466000930B0AC00E94012420913303309134033C +:1046700020953095820F931F8C32914070F080917D +:10468000400380FF08C08EE796E09F938F930E94BF +:1046900074070F900F900E94F422E0912101F09195 +:1046A0002201908180913503892B80830E94FB2217 +:1046B00081110E94F42280912101909122010C9499 +:1046C000DE1790939B0180939A0108958295982F0D +:1046D0009C7C392F36953695282F237344E0249FF0 +:1046E000C0011124932F982B292F2A7A2695892FE0 +:1046F0008575880F822B08950895CF93DF9300D09E +:1047000000D01F92CDB7DEB70F900F900F900F9093 +:104710000F90DF91CF910895089508950C941F197B +:1047200080915503843021F11092410320E488E107 +:1047300090E00FB6F894A895809360000FBE209388 +:10474000600083B7817F846083BF83B7816083BF4C +:104750007894889583B78E7F83BF0FB6F894A89519 +:1047600080916000886180936000109260000FBEAD +:104770000895CF930E94BB080E94B5070E94BD0810 +:10478000C0E08C2F0E948608811104C0CF5FC83022 +:10479000C1F701C081E0CF9108950C945B1D1F9279 +:1047A0000F920FB60F9211248F939F93AF93BF93E5 +:1047B00080914103811113C0809142039091430382 +:1047C000A0914403B09145034196A11DB11D809372 +:1047D000420390934303A0934403B0934503BF91D6 +:1047E000AF919F918F910F900FBE0F901F901895D2 +:1047F00082E084BD93E095BD9AEF97BD80936E00F3 +:1048000008952FB7F8948091420390914303A091AB +:104810004403B09145032FBF08952FB7F8946091DA +:1048200042037091430380914403909145032FBF4D +:104830000895CF92DF92EF92FF920F931F932FB7BD +:10484000F894409142035091430360914403709166 +:1048500045032FBF6A017B01EE24FF248C0120E079 +:1048600030E0C016D106E206F30610F441505109BB +:104870009A01281B390BC9011F910F91FF90EF90EE +:10488000DF90CF900895CF92DF92EF92FF920F9337 +:104890001F932FB7F894C0904203D0904303E09049 +:1048A0004403F09045032FBF97018601061B170BA9 +:1048B000280B390BC616D706E806F90618F0C90109 +:1048C000B80106C0C901B801615071098109910997 +:1048D0001F910F91FF90EF90DF90CF9008951F925E +:1048E0000F920FB60F9211248F939F93AF93BF93A4 +:1048F0008091420390914303A0914403B0914503FA +:104900000196A11DB11D8093420390934303A09390 +:104910004403B0934503BF91AF919F918F910F9046 +:104920000FBE0F901F9018950E941415F8942FEF4A +:1049300087EA91E6215080409040E1F700C00000F6 +:1049400087E090EBDC0180935E0390935F03A0937C +:104950006003B09361039CE088E10FB6F894A895DA +:10496000809360000FBE90936000FFCF28E0929F7D +:10497000F0011124E80FF11DEE58FE4F8491982F9D +:1049800090778F7092959F700895CF93C82FCB0129 +:104990000E94B624292F30E0E82FF0E0A90164E05E +:1049A000440F551F6A95E1F74E2B5F2B4038510598 +:1049B00019F480E090E012C088E0C89F200D311DFE +:1049C000112484E0220F331F8A95E1F7E20FF31FD1 +:1049D000EE0FFF1FE050F84985919491CF91089513 +:1049E00080E090E0089508958091480380FF0BC017 +:1049F0006091260185E0689FB00111247595679547 +:104A0000759567952BC081FF09C06091260185E0EF +:104A1000689FB00111247595679520C082FF07C07B +:104A20006091260185E0689FB001112417C0909124 +:104A300049039923D1F060912501961788F72091B9 +:104A4000260185E0289F90011124929FA001939F49 +:104A5000500D112470E0CA010E94BC2C6038710511 +:104A600040F46115710539F002C065E070E0862FF1 +:104A700008958FE7089581E008958091480380FFAD +:104A800008C06091240170E07595679575956795EC +:104A900021C081FF06C06091240170E07595679583 +:104AA00019C082FF04C06091240170E010C0909191 +:104AB00049039923C1F0609123019617A0F78091D3 +:104AC0002401899FC001112470E00E94BC2C603831 +:104AD000710528F46115710521F0862F08958FE77F +:104AE000089581E0089561E070E0F4CF803F21F403 +:104AF0000E94F424819504C0813F29F40E94F4248B +:104B000080934C030895823F21F40E94F424819500 +:104B100004C0833F29F40E94F42480934B0308953A +:104B2000893F19F40E943D2505C08A3F31F40E9457 +:104B30003D25819580934D0308958B3F21F40E947C +:104B40003D25819504C08C3F29F40E943D2580932A +:104B50004E030895843F21F480914A03816017C079 +:104B6000853F21F480914A03826011C0863F21F481 +:104B700080914A0384600BC0873F21F480914A03EF +:104B8000886005C0883F31F480914A03806180933A +:104B90004A0308958D3F21F48091480381600BC042 +:104BA0008E3F21F480914803826005C08F3F29F435 +:104BB000809148038460809348030895803F39F4CE +:104BC00080914C0387FF6CC010924C0369C0813FF9 +:104BD00029F480914C031816BCF362C090914B03EA +:104BE000823F29F497FF5CC010924B0359C0833F6A +:104BF00019F41916CCF354C0893F41F480914D0348 +:104C000018160CF04DC010924D034AC08A3F29F48B +:104C100080914D0387FF44C0F6CF8B3F39F48091DC +:104C20004E0387FF3DC010924E033AC08C3F29F4DB +:104C300080914E031816BCF333C0843F21F4809159 +:104C40004A038E7F17C0853F21F480914A038D7FF0 +:104C500011C0863F21F480914A038B7F0BC0873FB0 +:104C600021F480914A03877F05C0883F31F4809109 +:104C70004A038F7E80934A0313C08D3F21F48091B5 +:104C800048038E7F0BC08E3F21F4809148038D7FB7 +:104C900005C08F3F29F4809148038B7F80934803A0 +:104CA00080914B0381110EC080914C0381110AC089 +:104CB00080914D03811106C080914E03811102C085 +:104CC0001092490308958091400383FF7EC087EBD3 +:104CD00096E00E94DB0680914A031F928F9382EB3D +:104CE00096E09F938F930E94740780EB96E00E945A +:104CF000DB0680914B03282F082E000C330B3F93CB +:104D00008F938DEA96E09F938F930E9474078BEAAE +:104D100096E00E94DB0680914C03282F082E000CA1 +:104D2000330B3F938F9388EA96E09F938F930E9473 +:104D3000740786EA96E00E94DB0680914D03282FD7 +:104D4000082E000C330B3F938F9383EA96E09F93DA +:104D50008F930E94740781EA96E00E94DB0680919F +:104D60004E03282F082E000C330B3F938F938EE9B0 +:104D700096E09F938F930E9474078BE996E00E94C0 +:104D8000DB06809149031F928F9388E996E09F93F9 +:104D90008F930E94740786E996E00E94DB0680915B +:104DA00048031F928F9383E996E09F938F930E940D +:104DB000740780E996E00E94DB068DB79EB74C969B +:104DC0000FB6F8949EBF0FBE8DBF8AE493E00E9499 +:104DD00027180E9401249093470380934603089567 +:104DE0001F93CF93DF9380914603909147030E94D6 +:104DF0001924AC0190914903992321F020912701B6 +:104E000030E006C0209128018AE0289F90011124FB +:104E10004217530708F485C080914B03C0914C039F +:104E2000D0914D0310914E03811107C0C11175C07F +:104E3000D11173C0111171C074C09F3F19F09F5FF1 +:104E400090934903181624F40E94F42480934B0392 +:104E500080914B0387FF05C00E94F42481958093C5 +:104E60004B031C1624F40E94F42480934C0380917D +:104E70004C0387FF05C00E94F424819580934C0366 +:104E800060914B03662331F1C0914C03CC2311F1A7 +:104E9000062E000C770B880B990B0E94A32B23E3A3 +:104EA00033E343E35FE30E94072C0E946B2B609384 +:104EB0004B036C2FCC0F770B880B990B0E94A32B05 +:104EC00023E333E343E35FE30E94072C0E946B2B51 +:104ED00060934C031D1624F40E943D2580934D03DE +:104EE00080914D0387FF05C00E943D2581958093E9 +:104EF0004D03111624F40E943D2580934E038091AA +:104F00004E0387FF05C00E943D25819580934E0387 +:104F1000DF91CF911F910C9463269F3F09F08FCFB3 +:104F200097CFDF91CF911F910895EAE4F3E085E0F8 +:104F3000DF011D928A95E9F7109249031092480308 +:104F400008958AED98E00E94DB061F9281E08F931E +:104F50001F9285E08F938CE898E09F938F930E9437 +:104F600074070F900F900F900F900F900F9008956F +:104F70008330E9F128F4813061F0823009F108953D +:104F8000853009F462C008F449C0863009F474C061 +:104F9000089580912801262F30E0280F311D2F3FE2 +:104FA000310524F4680F6093280103C08FEF8093CC +:104FB0002801809128011F928F9385EC97E072C0A1 +:104FC00080912701262F30E0280F311D2F3F31051A +:104FD00024F4680F6093270103C08FEF80932701AB +:104FE000809127011F928F9383EB97E05BC08091A4 +:104FF0002601262F30E0280F311D2F3F310524F4E4 +:10500000680F6093260103C08FEF80932601809183 +:1050100026011F928F9380EA97E044C0809125017A +:10502000262F30E0280F311D2F3F310524F4680F63 +:105030006093250103C08FEF8093250180912501A6 +:105040001F928F938BE897E02DC080912401262F2B +:1050500030E0280F311D2F3F310524F4680F609395 +:10506000240103C08FEF80932401809124011F92BB +:105070008F9382E797E016C080912301262F30E0BE +:10508000280F311D2F3F310524F4680F6093230151 +:1050900003C08FEF80932301809123011F928F9390 +:1050A00087E597E09F938F930E9474070F900F906E +:1050B0000F900F900895833081F128F4813059F0DA +:1050C0008230D1F00895853009F449C0B8F18630B6 +:1050D00009F456C0089580912801681720F4861BB2 +:1050E0008093280102C010922801809128011F920C +:1050F0008F9388E497E054C080912701681720F4CB +:10510000861B8093270102C01092270180912701FE +:105110001F928F9386E397E043C080912601681722 +:1051200020F4861B8093260102C0109226018091F4 +:1051300026011F928F9383E297E032C08091250170 +:10514000681720F4861B8093250102C01092250168 +:10515000809125011F928F938EE097E021C080916E +:105160002401681720F4861B8093240102C010924A +:105170002401809124011F928F9385EF96E010C047 +:1051800080912301681720F4861B8093230102C0BD +:1051900010922301809123011F928F938AED96E054 +:1051A0009F938F930E9474070F900F900F900F9012 +:1051B0000895CF93C82F1F928F938FED99E09F93FF +:1051C0008F930E94740781E090E0A0E0B0E0BC0102 +:1051D000CD0104C0660F771F881F991FCA95D2F7AB +:1051E0000E9458210F900F900F900F90CF910C9428 +:1051F0005B1DCF93873288F58E3108F00BC18E305E +:1052000009F487C0D8F4873009F460C08B3009F402 +:105210004FC0863009F002C180914003817F8E7FAC +:105220008093400384EE99E00E94DB0689E99CE0CC +:105230000E94DB0681E08093500346C0863109F46A +:10524000B0C020F4803109F47AC0E8C0893109F493 +:1052500091C08B3109F449C0E1C0883349F150F461 +:10526000893209F4D5C0853309F4D2C0873209F0F8 +:10527000D5C0CEC0833409F4CBC028F48A3308F4F7 +:10528000CDC08953C8C0883409F0C8C00E945B1DD6 +:1052900088E89CE00E94DB062FEF83ED90E321502D +:1052A00080409040E1F700C000000E9494240CC0B0 +:1052B0008BE09AE041C08FE69CE00E94DB06809183 +:1052C0004003816080934003C1E0ADC08091400302 +:1052D000C82FC17080FFEFCF8BE79CE00E94DB06F8 +:1052E00080914003817F8E7F3FC09091400391FB6E +:1052F000CC27C0F981E0C827892FC0FB81F98093B2 +:105300004003CC2319F082E69CE029C084E59CE0B0 +:1053100013C09091400392FBCC27C0F981E0C827CD +:10532000892FC0FB82F980934003CC2319F085E4D8 +:105330009CE015C085E39CE00E94DB06C5CF909100 +:10534000400393FBCC27C0F981E0C827892FC0FB1D +:1053500083F980934003CC2351F089E29CE00E94C2 +:10536000DB06809140038160809340035CC08CE148 +:105370009CE0E2CF8DE09CE00E94DB0680EE9BE0AB +:105380000E94DB0689EA9BE00E94DB068CE79BE03B +:105390000E94DB0687E39BE00E94DB0689E09BE03E +:1053A000CBCF8BEF9AE00E94DB060E94D2171F92B0 +:1053B0008F9381EE9AE09F938F930E947407809160 +:1053C00020011F928F938AEC9AE09F938F930E9403 +:1053D00074078091E3021F928F9387EB9AE09F936B +:1053E0008F930E9474070E940D249F938F937F9345 +:1053F0006F9380EA9AE09F938F930E9474078DB712 +:105400009EB742960FB6F8949EBF0FBE8DBF5CCF7D +:1054100080E001C08D510E94D92856CF8EE99AE0D4 +:105420000E94DB06C0E08C2FCF910895CF93C82F48 +:1054300080915003813071F020F0823009F44BC02C +:1054400042C1E0912101F09122018081823209F074 +:105450003CC107C0E0912101F0912201808182329C +:1054600061F48C2F0E94EF0B811104C08C2F0E94DD +:10547000F9282FC081E090E02CC08C2F0E941C0ED8 +:10548000811126C0C431E1F070F4CB3081F0C0311D +:10549000D1F40E94A12787ED99E00E94DB0682E00B +:1054A0008093500315C0C93259F0C83361F484EEBB +:1054B00099E00E94DB068BED99E00E94DB0608C0B4 +:1054C0001092500304C185ED99E00E94DB06FFC0F5 +:1054D00081E08170FEC0C43228F5CE3108F0C1C031 +:1054E000CB30A1F1D0F4C73009F0D3C08EE1809366 +:1054F000280182E3809327018AE08093260184E1DA +:105500008093250188E08093240188E28093230121 +:105510008BE798E00E94DB06BFC0C33149F1C4317C +:10552000C1F0B7C0CB3409F4A9C028F4C93289F05E +:10553000C83361F0AEC0C13509F49EC0C23509F46C +:1055400099C0CE3409F0A5C06AE09EC00E94A12790 +:10555000A3C080914F03882319F010924F039CC081 +:1055600088E898E00E94DB0681E080935003B1C098 +:1055700082E698E00E94DB0680E598E00E94DB0668 +:10558000809128011F928F938DE498E09F938F93D1 +:105590000E9474078BE498E00E94DB0689E398E0A0 +:1055A0000E94DB06809127011F928F9386E398E08B +:1055B0009F938F930E94740784E398E00E94DB0618 +:1055C00085E298E00E94DB06809126011F928F936E +:1055D00082E298E09F938F930E94740780E298E0A4 +:1055E0000E94DB068FE098E00E94DB068091250197 +:1055F0001F928F938CE098E09F938F930E94740783 +:105600008AE098E00E94DB0685EF97E00E94DB06C7 +:10561000809124011F928F9382EF97E09F938F9345 +:105620000E94740780EF97E00E94DB0689ED97E007 +:105630000E94DB06809123011F928F9386ED97E0F5 +:105640009F938F930E94740784ED97E00E94DB067E +:105650008DB79EB748960FB6F8949EBF0FBE8DBF0C +:105660001BC0CE51EC2FF0E0E057FE4F80818093BD +:105670004F0312C061E003C061E006C06AE08091A0 +:105680004F030E94B82708C080914F030E945B28F7 +:1056900003C089E798E013C080914F03882369F025 +:1056A0001F928F9383E798E09F938F930E947407D4 +:1056B0000F900F900F900F9004C080E798E00E9429 +:1056C000DB0681E006C01092500380E002C080E05B +:1056D00000CFCF9108950E94722B6894B1110C9461 +:1056E000012C08950E94E62B88F09F5798F0B92F5F +:1056F0009927B751B0F0E1F0660F771F881F991F07 +:105700001AF0BA95C9F714C0B13091F00E94002C7C +:10571000B1E008950C94002C672F782F8827B85F8C +:1057200039F0B93FCCF3869577956795B395D9F75E +:105730003EF490958095709561957F4F8F4F9F4F68 +:105740000895E89409C097FB3EF490958095709574 +:1057500061957F4F8F4F9F4F9923A9F0F92F96E9BD +:10576000BB279395F695879577956795B795F11132 +:10577000F8CFFAF4BB0F11F460FF1BC06F5F7F4FCF +:105780008F4F9F4F16C0882311F096E911C07723E1 +:1057900021F09EE8872F762F05C0662371F096E8EA +:1057A000862F70E060E02AF09A95660F771F881FB9 +:1057B000DAF7880F9695879597F9089557FD9058D1 +:1057C000440F551F59F05F3F71F04795880F97FBC5 +:1057D000991F61F09F3F79F087950895121613067F +:1057E0001406551FF2CF4695F1DF08C016161706AE +:1057F0001806991FF1CF86957105610508940895E3 +:10580000E894BB2766277727CB0197F908950E9474 +:105810001A2C0C948B2C0E947D2C38F00E94842C26 +:1058200020F0952311F00C94742C0C947A2C1124F4 +:105830000C94012C0E94DE2B70F3959FC1F3950F01 +:1058400050E0551F629FF001729FBB27F00DB11D04 +:10585000639FAA27F00DB11DAA1F649F6627B00D94 +:10586000A11D661F829F2227B00DA11D621F739F7D +:10587000B00DA11D621F839FA00D611D221F749F8B +:105880003327A00D611D231F849F600D211D822FD2 +:10589000762F6A2F11249F5750409AF0F1F08823F9 +:1058A0004AF0EE0FFF1FBB1F661F771F881F915026 +:1058B0005040A9F79E3F510580F00C94742C0C9435 +:1058C000012C5F3FE4F3983ED4F386957795679576 +:1058D000B795F795E7959F5FC1F7FE2B880F911D50 +:1058E0009695879597F9089597F99F6780E870E0F6 +:1058F00060E008959FEF80EC089500240A94161646 +:10590000170618060906089500240A9412161306AD +:10591000140605060895092E0394000C11F488233B +:1059200052F0BB0F40F4BF2B11F460FF04C06F5F57 +:105930007F4F8F4F9F4F0895991B79E004C0991FA7 +:10594000961708F0961B881F7A95C9F780950895D9 +:10595000AA1BBB1B51E107C0AA1FBB1FA617B70795 +:1059600010F0A61BB70B881F991F5A95A9F78095B1 +:105970009095BC01CD01089597FB072E16F4009475 +:1059800007D077FD09D00E94A82C07FC05D03EF473 +:10599000909581959F4F0895709561957F4F0895DB +:1059A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F23 +:1059B000EE1FFF1FA217B307E407F50720F0A21B95 +:1059C000B30BE40BF50B661F771F881F991F1A9402 +:1059D00069F760957095809590959B01AC01BD012C +:1059E000CF010895EE0FFF1F0590F491E02D09946B +:0459F000F894FFCF59 +:1059F40047094A094B094C094D094309C709AD092F +:105A040046094E090A01BD10AE118B11571123111D +:105A14000136032808140A321E524E2D3432004C2B +:105A2400554641004F4646004F4E00434F4E4E00F0 +:105A3400506F776572656400556E61747461636854 +:105A440065640044656661756C74004164647265E4 +:105A54007373656400436F6E66696775726564008D +:105A64003F0053757370656E64656400404D362263 +:105A74001906CC05960574050005190532054B0574 +:0A5A840001020304050607080900EB +:10680000E70000000000000004000500060007008B +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:106850002800000035002B002C002D002E002F00FA +:1068600030002A00000033003400290036003700D1 +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000000000F8 +:1068A00000000000000000000000000000000000E8 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E0000000000000000000310000000000000077 +:1068F0000000E100E300E200F1A1E500E600000095 +:106900000100010001000100EA4401000100E2442D +:106910000100010001005500460054004A004B00F0 +:10692000560057004700480001000100E9440100FB +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000580001004C00390001004400450052007D +:1069600001000100010050004F0081404D004E0029 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001000100EF +:1069A00001000100010001000100010001000100DF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/keyboard/hhkb/binary/hhkb_unimap.hex b/keyboard/hhkb/binary/hhkb_unimap.hex new file mode 100644 index 00000000..ada8c20d --- /dev/null +++ b/keyboard/hhkb/binary/hhkb_unimap.hex @@ -0,0 +1,1200 @@ +:100000000C9408050C944F050C944F050C944F0567 +:100010000C944F050C944F050C944F050C944F0510 +:100020000C944F050C944F050C94830C0C944F05C5 +:100030000C942D1B0C944F050C944F050C944F05FC +:100040000C944F050C944F050C944F050C944F05E0 +:100050000C944F050C94CD1B0C944F050C944F053C +:100060000C944F050C944F050C944F050C944F05C0 +:100070000C944F050C944F050C944F050C944F05B0 +:100080000C944F050C944F050C944F050C944F05A0 +:100090000C944F050C944F050C944F050C944F0590 +:1000A0000C944F050C944F050C944F05790D9B0D46 +:1000B000890E9B0D890EE00D030E890E580E6B0EF6 +:1000C000701170119D119D11F81134122C142C1403 +:1000D0004C122C144713471302142C142C1418140C +:1000E0001F141A16041D1B062021150807091905DF +:1000F00022231C170A0B11801E352B39797A7B2C91 +:100100002425180C0E0D1080742A31287C7D7E7FEA +:1001100026271213330F36802D2E302F3438378098 +:10012000253032583A20253038620A000A722F638F +:100130002030313233343536370A005B735D004B83 +:100140006579626F6172642073746172742E0A0043 +:1001500055534220636F6E666967757265642E0A37 +:10016000005B575D005B535D005B525D005B445D6F +:10017000005B435D001203480048004B0042002032 +:10018000006D006F00640000000E0374002E006D0F +:10019000002E006B002E0000000403090409028DEC +:1001A00000050100A032090400000103010100095B +:1001B00021110100012240000705810308000A09FE +:1001C0000401000103010200092111010001224D77 +:1001D000000705820308000A090402000103000069 +:1001E00000092111010001223600070583030800E0 +:1001F0000A090403000203000000092111010001A3 +:1002000022220007058403200001070504032000C3 +:10021000010904040001030000000921110100018B +:10022000223900070585032000011201100100009A +:100230000008EDFEFECA04010102000105010906E5 +:10024000A101050719E029E71500250195087501A9 +:10025000810205081901290595057501910295018D +:10026000750391010507190029F71500250195F877 +:1002700075018102C00631FF0974A10109751500DD +:1002800026FF009520750881020976150026FF00DB +:10029000952075089102C005010980A1018502160B +:1002A000810026B7001A81002AB7007510950181D8 +:1002B00000C0050C0901A1018503160100269C025E +:1002C0001A01002A9C02751095018100C0050109E0 +:1002D00002A1010901A1000509190129051500253F +:1002E00001950575018102950175038101050109DB +:1002F0003009311581257F95027508810609381569 +:1003000081257F950175088106050C0A3802158143 +:10031000257F950175088106C0C005010906A10168 +:10032000050719E029E715002501950875018102E7 +:1003300095017508810105081901290595057501C3 +:1003400091029501750391010507190029FF150018 +:1003500026FF00950675088100C00A002530325836 +:1003600020006B6579626F6172645F7265706F7295 +:10037000743A20004C45443A20253032580A006433 +:10038000656C5F6B65795F6269743A2063616E27A3 +:10039000742064656C3A20253032580A0061646428 +:1003A0005F6B65795F6269743A2063616E277420C0 +:1003B0006164643A20253032580A004F6E657368D4 +:1003C0006F743A2074696D656F75740A00290A00AC +:1003D0002575002F002575005D280025640020008C +:1003E000256400200025640020002564007C002591 +:1003F000303258006D6F7573656B6579205B627480 +:100400006E7C782079207620685D287265702F6177 +:10041000636C293A205B006D6B5F776865656C5F84 +:1004200074696D655F746F5F6D6178203D20256430 +:100430000A006D6B5F776865656C5F6D61785F73EF +:1004400070656564203D2025640A006D6B5F7469EA +:100450006D655F746F5F6D6178203D2025640A00D3 +:100460006D6B5F6D61785F7370656564203D2025FD +:10047000640A006D6B5F696E74657276616C203D15 +:100480002025640A006D6B5F64656C6179203D20F6 +:1004900025640A006D6B5F776865656C5F74696DD4 +:1004A000655F746F5F6D6178203D2025640A006D83 +:1004B0006B5F776865656C5F6D61785F73706565AC +:1004C00064203D2025640A006D6B5F74696D655F73 +:1004D000746F5F6D6178203D2025640A006D6B5F4D +:1004E0006D61785F7370656564203D2025640A0046 +:1004F0006D6B5F696E74657276616C203D2025645A +:100500000A006D6B5F64656C6179203D2025640A8B +:10051000000A00257500363A20776865656C5F74BF +:10052000696D655F746F5F6D61783A20000A002520 +:100530007500353A20776865656C5F6D61785F732B +:10054000706565643A20000A00257500343A20740D +:10055000696D655F746F5F6D61783A20000A0025F0 +:100560007500333A206D61785F73706565643A2079 +:10057000000A00257500323A20696E746572766152 +:100580006C286D73293A20000A00257500313A2045 +:1005900064656C6179282A31306D73293A20000A2C +:1005A000092D2056616C756573202D0A004D3E00A3 +:1005B0004D25643E20003F007365742064656661CC +:1005C000756C740A00433E2000776865726520648C +:1005D000656C74613A20637572736F723D25642C8B +:1005E00020776865656C3D25640A536565206874ED +:1005F00074703A2F2F656E2E77696B697065646928 +:10060000612E6F72672F77696B692F4D6F757365F8 +:100610005F6B6579730A000A092D204D6F7573654C +:100620006B6579202D0A4553432F713A097175691D +:10063000740A313A0964656C6179282A31306D7326 +:10064000290A323A09696E74657276616C286D7395 +:10065000290A333A096D61785F73706565640A34FD +:100660003A0974696D655F746F5F6D61780A353A38 +:1006700009776865656C5F6D61785F737065656447 +:100680000A363A09776865656C5F74696D655F74F1 +:100690006F5F6D61780A0A703A097072696E742032 +:1006A00076616C7565730A643A09736574206465D4 +:1006B0006661756C74730A75703A092B310A646F40 +:1006C000776E3A092D310A706775703A092B31300F +:1006D0000A7067646F776E3A092D31300A0A7370B9 +:1006E000656564203D2064656C7461202A206D611D +:1006F000785F7370656564202A2028726570656173 +:1007000074202F2074696D655F746F5F6D61782947 +:100710000A003F004D3E2000433E20004C25640A65 +:10072000000A092D20436F6E736F6C65202D0A45FA +:1007300053432F713A09717569740A6D3A096D6FE7 +:100740007573656B65790A000A092D204D6167692B +:1007500063202D0A643A0964656275670A783A096C +:100760006465627567206D61747269780A6B3A0915 +:100770006465627567206B6579626F6172640A6D8A +:100780003A096465627567206D6F7573650A763A1C +:100790000976657273696F6E0A733A0973746174CE +:1007A00075730A633A09636F6E736F6C65206D6FC2 +:1007B00064650A302D343A096C61796572302D34E4 +:1007C000284631302D4634290A506175733A096242 +:1007D0006F6F746C6F616465720A6E3A094E4B52AA +:1007E0004F0A003F004E4B524F3A206F66660A0098 +:1007F0004E4B524F3A206F6E0A0074696D65725FFE +:1008000072656164333228293A202530346C580AE5 +:10081000006B6579626F6172645F6E6B726F3A2014 +:1008200025580A006B6579626F6172645F69646C58 +:10083000653A2025580A006B6579626F6172645FC2 +:1008400070726F746F636F6C3A2025580A00686F7E +:1008500073745F6B6579626F6172645F6C656473FA +:1008600028293A2025580A000A092D20537461745A +:100870007573202D0A004743433A20342E392E3217 +:10088000204156522D4C4942433A20312E382E30C9 +:1008900073766E204156525F415243483A2061764A +:1008A00072350A004F5054494F4E533A204C55462A +:1008B00041204D4F5553454B4559204558545241C1 +:1008C0004B455920434F4E534F4C4520434F4D4DC0 +:1008D000414E44204E4B524F204B45594D41505FA5 +:1008E00053454354494F4E20343039360A0042555F +:1008F000494C443A20653664313937352D64697284 +:100900007479202830303A34343A313020536570CD +:100910002020392032303136290A005649443A2005 +:1009200030784645454428742E6D2E6B2E29205074 +:1009300049443A203078434146452848484B4220B4 +:100940006D6F6429205645523A203078303130346A +:100950000A00444553433A20742E6D2E6B2E206BB3 +:100960006579626F617264206669726D7761726524 +:1009700020666F722048484B42206D6F640A000A5F +:10098000092D2056657273696F6E202D0A000A6D5D +:100990006F7573653A206F66660A000A6D6F75732E +:1009A000653A206F6E0A000A6B6579626F61726446 +:1009B0003A206F66660A000A6B6579626F6172643D +:1009C0003A206F6E0A000A6D61747269783A206F7E +:1009D00066660A000A6D61747269783A206F6E0A61 +:1009E000000A64656275673A206F6E0A000A6465E2 +:1009F0006275673A206F66660A000A0A626F6F7452 +:100A00006C6F616465722E2E2E2000433E20000024 +:100A100011241FBECFEFDAE0DEBFCDBF04B603FE68 +:100A200027C08091090290910A02A0910B02B09117 +:100A30000C028730904BA740B04BD1F410920902C2 +:100A400010920A0210920B0210920C0214BE84B78C +:100A5000877F84BF0FB6F894A89580916000886165 +:100A600080936000109260000FBEE0E0F8E309950B +:100A700011E0A0E0B1E0E0EBF8E402C005900D92D7 +:100A8000A833B107D9F722E0A8E3B1E001C01D9275 +:100A9000A930B207E1F70E94AB090C9456240C94DC +:100AA0000000FF93EF93E0913801F0913901309706 +:100AB00009F00995EF91FF910895FC01859180302F +:100AC00011F0EFDFFBCF0895FF27E0E230E247FFB0 +:100AD0000CC0419597FF09C0EDE260957095809537 +:100AE0009095611D711D811D911D27FF02C02195EB +:100AF00030E350E2AA27660F771F881F991FAA1FAD +:100B0000A41710F0A41B63955A95A9F7AA3008F012 +:100B1000A95FA05DAF93F3956115710581059105FE +:100B200041F7ED3211F4EF93F395F21718F43F9378 +:100B3000F395FBCF8F91B5DFFA95E1F70895E99131 +:100B4000F9918591803021F0853219F0AADFF9CF33 +:100B5000089520E0E89455915532C1F3503311F4D3 +:100B6000689455915A3348F4505390F3220F022E53 +:100B7000220F220F200D250FF4CF0EF4219589911D +:100B80009991533619F3533729F1533559F1BC0173 +:100B900088279927E8945C3621F489919991689483 +:100BA0005591543639F446EF7EF077FF0DC08FEF44 +:100BB0009FEF0AC055374AE039F0583540E121F03F +:100BC000523642E009F00895FF93EF937DDFEF91F5 +:100BD000FF91B7CFFF93EF93FC0181918030B9F380 +:100BE00060DFFBCFFF93EF9368DFF1CFDF93CF930D +:100BF000CDB7DEB72596A3DFCF91DF9108958FEFB4 +:100C000084B980E485B957985F9A2E9A2F98E2E4C8 +:100C1000F1E088E08E0F11928E13FDCFEAE3F1E050 +:100C200088E08E0F11928E13FDCF82E491E09093B5 +:100C30004D0180934C018AE391E090934B018093A6 +:100C40004A0108950F931F93CF93DF9380914A0138 +:100C500090914B0120914C0130914D0130934B010B +:100C600020934A0190934D0180934C01C0E0D0E065 +:100C700001E010E080E090E025B1207C2C2BAC015D +:100C800033E0440F551F3A95E1F7242B25B9EAE1EB +:100C9000EA95F1F700C0E0914A01F0914B01EC0FA9 +:100CA000FD1F208130E0082E02C0359527950A945B +:100CB000E2F720FD2F9AF5E3FA95F1F70000E6B58B +:100CC0002E982AE12A95F1F700C040914C015091ED +:100CD0004D01DA01AC0FBD1F4F9B0AC09801082ED1 +:100CE00001C0220F0A94EAF720953C91232308C003 +:100CF0006C919801082E01C0220F0A94EAF7262B66 +:100D00002C9326B56E2F70E02E1718F026B530E024 +:100D100004C026B530E021503F4F261B370B26304C +:100D2000310558F0E0914A01F0914B01EC0FFD1FA5 +:100D30002081FA01EC0FFD1F20833AE13A95F1F78B +:100D400000C02F982E9AEBE2F1E03197F1F700C046 +:100D5000000001968830910509F08ECFA0914C01DA +:100D6000B0914D01AC0FBD1FE0914A01F0914B01D4 +:100D7000EC0FFD1F9C918081981751F00E946B1B16 +:100D800060934E0170934F018093500190935101F5 +:100D90002196C830D10509F06DCF809100028530D1 +:100DA00021F080910002811111C060914E0170917B +:100DB0004F0180915001909151010E94A11B61311E +:100DC00077428105910510F00E94EE1A81E0DF91D3 +:100DD000CF911F910F91089520914C0130914D01B9 +:100DE000F901E80FF11D808108950F931F93CF93B0 +:100DF000DF938CE291E00E945D05C0E0D0E000E26C +:100E000011E0E0914C01F0914D01EC0FFD1F80814C +:100E10000E94C41A1F928F93DF93CF931F930F9357 +:100E20000E94F60521960F900F900F900F900F9053 +:100E30000F90C830D10529F7DF91CF911F910F9105 +:100E4000089508950895569A81FF02C05E9A089504 +:100E50005E9808958091750108959FB7F894109257 +:100E600054019FBF90910002943009F057C09091B7 +:100E7000E9009F703091EC00232F217030FD20E8B5 +:100E8000922B24E02093E9002091EB0020FF43C047 +:100E90002091EE0027FF3FC020915201222321F034 +:100EA0002091E80025FF37C01092520126E03091D2 +:100EB000E80035FD15C030910002343061F5309105 +:100EC000EB0035FD28C0215021F481E080935201D0 +:100ED00022C0EFE9FFE03197F1F700C00000E7CF53 +:100EE0008093F1008091E80085FD0AC08091E800C0 +:100EF00080FFFCCF8091E8008E778093E80006C0E9 +:100F00008FB7F89421E0209354018FBF9F70909386 +:100F1000E90080E008959F709093E9008FEF0895B5 +:100F2000CF93DF9300D01F92CDB7DEB79C018091A5 +:100F30000002843019F593E099833B832A839093D0 +:100F4000E9008FEF9091E800815095FD06C095ED86 +:100F50009A95F1F700008111F5CF8091E80085FFA7 +:100F60000DC040E050E063E070E0CE0101960E94C9 +:100F7000710A8091E8008E778093E8000F900F90BF +:100F80000F90DF91CF910895CF93DF9300D01F9200 +:100F9000CDB7DEB720910002243021F522E029836D +:100FA0009B838A8383E08093E9008FEF9091E80030 +:100FB000815095FD06C095ED9A95F1F700008111DD +:100FC000F5CF8091E80085FF0DC040E050E063E080 +:100FD00070E0CE0101960E94710A8091E8008E7740 +:100FE0008093E8000F900F900F90DF91CF910895BC +:100FF000209100022430F1F422E02093E9002FEF49 +:101000003091E800215035FD06C035ED3A95F1F7F5 +:1010100000002111F5CF2091E80025FF0BC040E032 +:1010200050E065E070E00E94710A8091E8008E77E0 +:101030008093E8000895CF93DF932091000224303D +:1010400009F048C0EC0180910A018823E1F0809109 +:101050000B018823C1F085E08093E9008FEF909128 +:10106000E800815095FD06C095E19A95F1F70000E2 +:101070008111F5CF8091E80085FF2CC040E050E061 +:1010800060E270E017C081E08093E9008FEF9091FB +:10109000E800815095FD06C095ED9A95F1F70000A6 +:1010A0008111F5CF8091E80085FF14C040E050E049 +:1010B00068E070E0CE010E94710A8091E8008E77AE +:1010C0008093E80080E2FE01A5E5B1E001900D9279 +:1010D0008A95E1F7DF91CF91089581E791E00E9431 +:1010E0005D058091FF01811109C00E94080C0E94DA +:1010F000650C8091E20084608093E20008958DE6A3 +:1011000091E00E945D051092FF01089589E691E04B +:101110000C945D05209153012F5F822F62E30E94A2 +:101120001C24992319F02093530108951092530120 +:1011300080915401882371F180910002843041F53F +:101140008091E9008F702091EC00922F917020FD2A +:1011500090E8892B94E09093E9009091EB0090FF48 +:1011600014C09091EE0097FF10C09091E80095FF99 +:1011700003C01092F100F9CF9091E80090FF05C0F4 +:101180009091E8009E779093E8008F708093E9003B +:1011900010925401089542E061EC81E00E94820BBC +:1011A00042E061EC82E00E94820B42E061EC83E06D +:1011B0000E94820B42E261EC84E00E94820B42E2D8 +:1011C00061EC85E00C94820B80910202833009F47B +:1011D00055C030F4813071F0823009F48EC008952A +:1011E0008A3009F47AC08B3009F460C0893009F084 +:1011F0009CC020C080910102813A09F096C0809184 +:10120000E800877F8093E8008091050290910602B4 +:10121000892B21F460E285E591E003C060E080E085 +:1012200090E070E00E94BE0A8091E8008B77809386 +:10123000E800089580910102813209F076C0809122 +:10124000050290910602009719F0049709F06DC00D +:101250008091E800877F8093E8008091E80082FD1C +:1012600005C0809100028111F8CF5FC08091F1002C +:10127000809375018091E8008B7753C080910102C3 +:10128000813A09F052C08091050290910602892BA3 +:1012900009F04BC08091E800877F8093E80080913F +:1012A000E80080FFFCCF80910A0136C080910102E6 +:1012B0008132D9F58091050290910602892BA9F51A +:1012C0008091E800877F8093E8000E94B70B8091AF +:1012D000030280930A010C944D1480910102813223 +:1012E00021F58091E800877F8093E8000E94B70B8A +:1012F0008091040280937601089580910102813AE1 +:10130000A1F48091E800877F8093E8008091E80055 +:1013100080FFFCCF809176018093F1008091E800FE +:101320008E778093E8000C94B70B08950895089584 +:10133000089585E691E00E945D050C9498090E944D +:10134000EE1A8091FE01882329F00E94171B81115B +:101350000C945B0A089584B7877F84BF0FB6F89416 +:10136000A895809160008861809360001092600071 +:101370000FBE90E080E80FB6F894809361009093E0 +:1013800061000FBE0E9496090E944E0F0E94080C39 +:101390000E94650C8091E20084608093E2008DE2FF +:1013A00097E00E94BF1A789480910002843019F06F +:1013B0000E94A10EF9CF80E591E00E945D050E9498 +:1013C000500F80E091E00E94BC0E8FE391E00E94FC +:1013D0005D050E94970980910002853039F48BE306 +:1013E00091E00E945D050E949F09F5CF0E94540F75 +:1013F0000E94A10EF0CF0C942B1B81E691E00E947D +:101400005D050C94FB09292F332723303105C9F0E2 +:1014100064F42130310581F02230310509F043C0F8 +:101420008DE890E02DE931E042C021323105F1F044 +:101430002232310541F137C082E190E02AE232E008 +:1014400036C099278130910541F08230910541F0F5 +:10145000892B49F5E9E9F1E005C0E9E8F1E002C0CE +:10146000E5E7F1E0849190E09F0121C06530D8F478 +:10147000E62FF0E0EE0FFF1FED5DFE4F2081318182 +:1014800089E090E014C0653070F470E0FB01EE0F6D +:10149000FF1FE75EFE4F20813181FB01EC5EFE4FB6 +:1014A000808190E004C080E090E020E030E0FA012C +:1014B00031832083089580E189BD82E189BD09B42B +:1014C00000FEFDCF8091D8008F7D8093D800809161 +:1014D000E00082608093E0008091E00081FDFCCF1D +:1014E0000895CF92DF92EF92FF920F931F93CF93C5 +:1014F000DF93EC018B017A010E94D60B811135C07C +:10150000E114F10439F0F70180819181081B190B76 +:10151000C80FD91FC12CD12C0115110529F18091BB +:10152000E80085FD18C08091E8008E778093E80080 +:101530000E94A10EE114F10449F0F701808191812C +:10154000C80ED91ED182C08285E00FC00E94D60B82 +:10155000882311F30AC089918093F1000150110989 +:10156000FFEFCF1ADF0AD8CF80E0DF91CF911F9134 +:101570000F91FF90EF90DF90CF9008952091070298 +:10158000309108022617370748F06115710539F4C4 +:101590002091E8002E772093E80001C0B90140E0D7 +:1015A00061157105A9F120910002222309F443C0BD +:1015B000253009F442C02091E80023FD40C020916D +:1015C000E80022FD32C02091E80020FFE9CF4091E1 +:1015D000F3002091F20030E0342BFC01CF016115C3 +:1015E000710559F02830310540F481918093F10064 +:1015F000615071092F5F3F4FF1CF41E02830310535 +:1016000009F040E02091E8002E772093E800C8CF51 +:101610004111C9CF0AC080910002882361F0853052 +:1016200061F08091E80083FD0AC08091E80082FFAC +:10163000F2CF80E0089582E0089583E0089581E08C +:10164000089520910702309108022617370748F0C5 +:101650006115710539F42091E8002E772093E80098 +:1016600001C0B901FC0120E06115710591F1809183 +:101670000002882309F440C0853009F43FC08091FE +:10168000E80083FD3DC08091E80082FD2FC080917D +:10169000E80080FFE9CF2091F3008091F20090E014 +:1016A000922B6115710559F08830910540F4249111 +:1016B0002093F1003196615071090196F2CF21E03B +:1016C000089709F020E08091E8008E778093E80089 +:1016D000CBCF2111CCCF0AC080910002882361F0CA +:1016E000853061F08091E80083FD0AC08091E800B8 +:1016F00082FFF2CF80E0089582E0089583E00895AC +:1017000081E00895982F973058F59093E900981745 +:1017100039F07091EC002091ED005091F00003C081 +:10172000242F762F50E021FF19C03091EB003E7F2F +:101730003093EB003091ED003D7F3093ED00309120 +:10174000EB0031603093EB007093EC002093ED00E0 +:101750005093F0002091EE0027FF07C09F5FD3CF8A +:101760008F708093E90081E0089580E00895809172 +:10177000010287FF11C08091E80082FD05C08091C1 +:1017800000028111F8CF11C08091E8008B770BC067 +:1017900080910002882349F08091E80080FFF8CF13 +:1017A0008091E8008E778093E80008952091E4000E +:1017B0003091E50095E64091EC00842F817040FF68 +:1017C00022C08091E80080FD1CC080910002882327 +:1017D00091F0853091F08091EB0085FD10C0409133 +:1017E000E4005091E5004217530729F39A01915004 +:1017F00011F784E0089582E0089583E0089581E080 +:10180000089580E008954091E80042FFDECF0895FA +:101810000E94760C0E947E0CE0EEF0E080818160F8 +:101820008083E8EDF0E080818F77808319BCA7ED9D +:10183000B0E08C918E7F8C9380818F7E808310921C +:10184000FF0108950F931F93CF93DF930E94760CAF +:101850000E947E0CC8EDD0E088818F7788838881D4 +:101860008068888388818F7D888319BC10920002EC +:101870001092FC011092FE011092FD0100EE10E0AA +:10188000F80180818B7F808388818160888342E03A +:1018900060E080E00E94820BE1EEF0E080818E7FCC +:1018A0008083E2EEF0E080818160808380818860C7 +:1018B0008083F80180818E7F808388818061888326 +:1018C000DF91CF911F910F910895E8EDF0E08081B5 +:1018D0008F7E8083E7EDF0E080818160808384E00B +:1018E00082BF81E08093FF010C94220CE8EDF0E0D0 +:1018F00080818E7F80831092E20008951092DA003A +:101900001092E10008951F920F920FB60F921124CA +:101910002F933F934F935F936F937F938F939F93F7 +:10192000AF93BF93EF93FF938091E10082FF0BC0D1 +:101930008091E20082FF07C08091E1008B7F80935D +:10194000E1000E948A088091DA0080FF1FC0809128 +:10195000D80080FF1BC08091DA008E7F8093DA0070 +:101960008091D90080FF0DC080E189BD82E189BDF1 +:1019700009B400FEFDCF81E0809300020E946D0853 +:1019800005C019BC109200020E947F088091E100FE +:1019900080FF19C08091E20080FF15C08091E200B5 +:1019A0008E7F8093E2008091E20080618093E2006C +:1019B0008091D80080628093D80019BC85E0809324 +:1019C00000020E9499098091E10084FF30C080915B +:1019D000E20084FF2CC080E189BD82E189BD09B4A9 +:1019E00000FEFDCF8091D8008F7D8093D80080913C +:1019F000E1008F7E8093E1008091E2008F7E8093F2 +:101A0000E2008091E20081608093E2008091FC011D +:101A1000882311F084E007C08091E30087FD02C0B5 +:101A200081E001C083E0809300020E94FD09809163 +:101A3000E10083FF24C08091E20083FF20C08091F9 +:101A4000E100877F8093E10082E0809300021092A2 +:101A5000FC018091E1008E7F8093E1008091E200A3 +:101A60008E7F8093E2008091E20080618093E200AB +:101A700042E060E080E00E94820B0E948608FF91B5 +:101A8000EF91BF91AF919F918F917F916F915F91F6 +:101A90004F913F912F910F900FBE0F901F9018956F +:101AA0001F93CF93DF93CDB7DEB7AA970FB6F89405 +:101AB000DEBF0FBECDBFE1E0F2E088E08E0F909177 +:101AC000F10091938E13FBCF0E94E4088091E8000F +:101AD00083FF1FC18091010290910202492F50E0C3 +:101AE0004A30510508F015C1FA01EA5AFF4F0C942B +:101AF0003C24803881F0823809F00BC180910502C6 +:101B00008F708093E9008091EB0085FB882780F936 +:101B10001092E90006C08091FD019091FE019111A3 +:101B200082609091E800977F9093E8008093F100A5 +:101B30001092F100C8C0282F2D7F09F0EAC0882339 +:101B400019F0823061F0E5C080910302813009F024 +:101B5000E0C0933009F080E08093FE012BC08091BB +:101B60000302811127C0809105028F7009F4D1C052 +:101B70008093E9002091EB0020FF1CC0933021F4FA +:101B80008091EB00806214C09091EB009061909383 +:101B9000EB0021E030E0A90102C0440F551F8A95F7 +:101BA000E2F74093EA001092EA008091EB0088602F +:101BB0008093EB001092E9008091E800877F86C057 +:101BC0008111A7C0109103021F778091E3008078F4 +:101BD000812B8093E3008091E800877F8093E80069 +:101BE0000E94B70B8091E80080FFFCCF8091E3005A +:101BF00080688093E300111102C082E001C083E09D +:101C00008093000286C08058823008F082C08091A4 +:101C10000302909104028C3D53E0950779F583E02F +:101C20008A838AE289834FB7F894DE01139620E015 +:101C30003EE051E2E32FF0E050935700E49120FFA3 +:101C400003C0E295EF703F5FEF708E2F90E0EA30B7 +:101C500010F0C79601C0C0968D939D932F5F2431DD +:101C600049F74FBF8091E800877F8093E8006AE2E0 +:101C700070E0CE0101960E94BE0A14C0AE014F5F13 +:101C80005F4F609105020E94030ABC01892B09F491 +:101C900040C09091E800977F9093E80089819A81F5 +:101CA0000E94210B8091E8008B778093E80031C07F +:101CB000803879F58091E800877F8093E8008091F3 +:101CC000FC018093F1008091E8008E778093E8001A +:101CD0000E94B70B1EC081111CC09091030292306C +:101CE000C0F48091E800877F8093E8009093FC0126 +:101CF0000E94B70B8091FC01811106C08091E30026 +:101D000087FD02C081E001C084E0809300020E9450 +:101D1000CB088091E80083FF0AC08091E800877FAC +:101D20008093E8008091EB0080628093EB00AA969C +:101D30000FB6F894DEBF0FBECDBFDF91CF911F91DC +:101D40000895CF93809100028823A1F0C091E9000B +:101D5000CF709091EC00892F817090FD80E8C82BA6 +:101D60001092E9008091E80083FD0E94500DCF7031 +:101D7000C093E900CF91089590937C0180937B01FB +:101D80000895E0917B01F0917C01309721F0019062 +:101D9000F081E02D099480E00895EF92FF920F9377 +:101DA0001F93CF93DF93E0917B01F0917C013097FB +:101DB000B1F18C010280F381E02D09958091EB0156 +:101DC00082FF2DC080FF04C082E693E00E945D0583 +:101DD000E80110E28CE5E82E83E0F82E8091EB011B +:101DE00080FF0BC088811F928F93FF92EF920E9419 +:101DF000F6050F900F900F900F9011502196111132 +:101E0000EDCF8091EB0180FF0AC08AE593E0DF917E +:101E1000CF911F910F91FF90EF900C945D05DF9192 +:101E2000CF911F910F91FF90EF900895E0917B016A +:101E3000F0917C01309721F00480F581E02D099428 +:101E400008952091790130917A018217930771F0FA +:101E500090937A0180937901E0917B01F0917C016C +:101E6000309721F00680F781E02D099408952091A4 +:101E70007701309178018217930771F09093780180 +:101E800080937701E0917B01F0917C01309721F004 +:101E90000084F185E02D0994089508950C944D0F68 +:101EA0000E94561B0C94FF05CF92DF92EF92FF9297 +:101EB0000F931F93CF93DF9300D000D000D0CDB706 +:101EC000DEB70E9422068EE7C82E81E0D82E00E001 +:101ED00010E0E02E802F0E94EC06F60141916F0188 +:101EE000F42EF826B1F40F5F1F4F0830110589F763 +:101EF0008FEF89838A831B820E945F1B8160782F0A +:101F00009D838C8349815A816B818D810E9413103E +:101F100047C09091EB0191FF04C08E830E94F506AB +:101F20008E8120E030E04F2D50E0922FBA01022E3A +:101F300002C0759567950A94E2F760FF2BC029836C +:101F4000EA8221E030E0690102C0CC0CDD1C9A95E8 +:101F5000E2F790E08C219D21892B09F420E02B836E +:101F60000E945F1B8160782F9D838C8349815A81F9 +:101F70006B818D810E94131049815A816B817C8114 +:101F80008D810E94DB1AF801E258FE4F8081C8263D +:101F9000C08206C02F5F3F4F2830310531F6A3CFF6 +:101FA0000E94DA1A0E944C1E10917D010E94C10EFF +:101FB000181741F10E94C10E80937D019091EB01B1 +:101FC00092FF0EC090FF0CC01F928F9384E793E0A6 +:101FD0009F938F930E94F6050F900F900F900F9094 +:101FE00080917D0126960FB6F894DEBF0FBECDBF5F +:101FF000DF91CF911F910F91FF90EF90DF90CF90E5 +:102000000C94EC1A26960FB6F894DEBF0FBECDBF27 +:10201000DF91CF911F910F91FF90EF90DF90CF90C4 +:1020200008950C942307CF93DF93CDB7DEB72B979A +:102030000FB6F894DEBF0FBECDBF942F4F83252F70 +:10204000588769877A878B874A855B85452B21F07E +:102050002F3F09F59F3FF9F4DE01119686E0FD015F +:1020600011928A95E9F785E0FE01379601900D926D +:102070008A95E1F749815A816B817C818D819E81AE +:102080000E94F0162B960FB6F894DEBF0FBECDBFA0 +:10209000DF91CF9108954F81588569857A858B8529 +:1020A0000E94DB1AD9CFCF93882309F4A4C0C82F8C +:1020B0008CEF8C0F813A48F48C2F0E94962181116D +:1020C0009AC08C2F0E947B190CC080E28C0F883044 +:1020D00058F4C77081E001C0880FCA95EAF70E94E2 +:1020E000261ACF910C946A1A8BE58C0F833078F402 +:1020F000C53A29F0C63A31F083E890E005C081E89E +:1021000090E002C082E890E0CF910C94210F88E526 +:102110008C0F853108F06FC0C83A61F1C93A69F196 +:10212000CA3A71F1CB3A79F1CC3A81F1CD3A89F1E1 +:10213000CE3A91F1CF3A99F1C13BA1F1C03BA9F15F +:10214000C23BB1F1C33BB9F1C43BC1F1C53BC9F1DD +:10215000C63BD1F1C73BD9F1C83BE1F1C93BE9F13D +:10216000CA3BF1F1CB3BF9F1CC3B09F43FC080E035 +:1021700090E03EC082EE90E03BC089EE90E038C037 +:102180008AEE90E035C085EB90E032C086EB90E0BF +:102190002FC083EB90E02CC084EB90E029C087EB4C +:1021A00090E026C08CEC90E023C08DEC90E020C045 +:1021B00083E891E01DC08AE891E01AC082E991E0CD +:1021C00017C084E991E014C081E292E011C083E27B +:1021D00092E00EC084E292E00BC085E292E008C07B +:1021E00086E292E005C087E292E002C08AE292E0D5 +:1021F000CF910C94370FCF910895882329F19CEF4C +:10220000980F913A18F40E94CE190DC090E2980FE1 +:10221000983058F4877091E001C0990F8A95EAF7D9 +:10222000892F0E942C1A0C946A1A9BE5980F933000 +:1022300020F480E090E00C94210F885A853120F43E +:1022400080E090E00C94370F0895882321F00E94DD +:10225000261A0C946A1A0895882321F00E942C1AD9 +:102260000C946A1A0895CF92DF92EF92FF920F9327 +:102270001F93CF93DF9300D000D000D0CDB7DEB74F +:1022800025E0FC01DE01119601900D922A95E1F7FF +:10229000FC0140813181F280258122952F7063817C +:1022A0007481672B09F4D8C23F3F19F44F3F09F4FA +:1022B000D3C26C0149833A8389819A812E830E941B +:1022C0003A19182F092F0E9439190E944918E02F36 +:1022D000E295EF70F0E0E05AFF4F2E810C943C2421 +:1022E000802F807F902F9F70092F882311F00295F7 +:1022F000007FFF2049F0002309F45FC2802F0E9475 +:10230000391A0E946A1A59C2812F0E94FD100023B7 +:1023100009F4A2C2802F0E943F1A26960FB6F894A5 +:10232000DEBF0FBECDBFDF91CF911F910F91FF9008 +:10233000EF90DF90CF900C946A1A802F807F902FBF +:102340009F70092F803211F00295007F112319F040 +:10235000113001F129C0FF20A9F0802F222349F17B +:10236000213039F526960FB6F894DEBF0FBECDBFEB +:10237000DF91CF911F910F91FF90EF90DF90CF9061 +:102380000C94491A222319F0213009F465C20E94E5 +:10239000521A2CC0FF20E9F0263008F05DC20E94DE +:1023A000231A802329F022C0FF20F1F0211115C04B +:1023B000802F26960FB6F894DEBF0FBECDBFDF91FB +:1023C000CF911F910F91FF90EF90DF90CF900C94E1 +:1023D0002511253008F040C209C0F601858180FF33 +:1023E000ECC18F708583E4CF2111FBC1802F69C1BF +:1023F000202F26952695237030E02115310521F0F8 +:1024000021303105C9F028C2FF2021F0812F902F03 +:10241000937002C080E090E026960FB6F894DEBF7D +:102420000FBECDBFDF91CF911F910F91FF90EF9025 +:10243000DF90CF900C94210FFF2021F0812F902F5F +:10244000937002C080E090E026960FB6F894DEBF4D +:102450000FBECDBFDF91CF911F910F91FF90EF90F5 +:10246000DF90CF900C94370F812FFF2019F00E943E +:10247000D21C02C00E943A1D26960FB6F894DEBF09 +:102480000FBECDBFDF91CF911F910F91FF90EF90C5 +:10249000DF90CF900C94BF1D802F837009F078C01F +:1024A000F110DAC1812F829586958770880F880F89 +:1024B000912F9F70C92ED12CE12CF12C082E04C035 +:1024C000CC0CDD1CEE1CFF1C0A94D2F714FF12C0CA +:1024D0004FE050E060E070E004C0440F551F661FFD +:1024E000771F8A95D2F7CB01BA01609570958095D8 +:1024F000909503C060E070E0CB01202F26952695D3 +:102500002370422F50E042305105D1F04330510545 +:1025100059F16C297D298E299F294130510541F1BE +:1025200026960FB6F894DEBF0FBECDBFDF91CF91D8 +:102530001F910F91FF90EF90DF90CF900C945E1859 +:102540006C297D298E299F2926960FB6F894DEBF27 +:102550000FBECDBFDF91CF911F910F91FF90EF90F4 +:10256000DF90CF900C9470180E945E18C701B601DE +:1025700026960FB6F894DEBF0FBECDBFDF91CF9188 +:102580001F910F91FF90EF90DF90CF900C944C181B +:10259000FF2019F0802F817001C08695882309F4EF +:1025A0005BC1812F829586958770880F880F912F48 +:1025B0009F70C92ED12CE12CF12C082E04C0CC0C1C +:1025C000DD1CEE1CFF1C0A94D2F714FF12C04FE072 +:1025D00050E060E070E004C0440F551F661F771F95 +:1025E0008A95D2F7CB01BA01609570958095909548 +:1025F00003C060E070E0CB01202F26952695237064 +:10260000422F50E042305105D1F04330510559F18D +:102610006C297D298E299F294130510541F126964B +:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3 +:102630000F91FF90EF90DF90CF900C9415196C29BB +:102640007D298E299F2926960FB6F894DEBF0FBEEE +:10265000CDBFDF91CF911F910F91FF90EF90DF9051 +:10266000CF900C9427190E941519C701B601269620 +:102670000FB6F894DEBF0FBECDBFDF91CF911F9193 +:102680000F91FF90EF90DF90CF900C940319103FC3 +:1026900041F118F4103E48F48BC0123F09F450C0C9 +:1026A000D8F1133F09F460C083C01F70802F8F7171 +:1026B000FF2021F00E949C18812F7BCE0E94BD1824 +:1026C000812F26960FB6F894DEBF0FBECDBFDF91E7 +:1026D000CF911F910F91FF90EF90DF90CF900C94CE +:1026E0002C11FF20A9F0253008F0B6C0802F8F7183 +:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107 +:102700001F910F91FF90EF90DF90CF900C94E21803 +:10271000263008F0A1C0EACFFF20A1F0802F8F71F2 +:1027200026960FB6F894DEBF0FBECDBFDF91CF91D6 +:102730001F910F91FF90EF90DF90CF900C949C1819 +:10274000FF2061F3802F8F7126960FB6F894DEBFBD +:102750000FBECDBFDF91CF911F910F91FF90EF90F2 +:10276000DF90CF900C94BD18FF2091F0802F8F71D7 +:1027700026960FB6F894DEBF0FBECDBFDF91CF9186 +:102780001F910F91FF90EF90DF90CF900C948718DE +:1027900026960FB6F894DEBF0FBECDBFDF91CF9166 +:1027A0001F910F91FF90EF90DF90CF900C948218C3 +:1027B000FF20A1F0222309F4B1CF812F26960FB676 +:1027C000F894DEBF0FBECDBFDF91CF911F910F9167 +:1027D000FF90EF90DF90CF900C945310222309F4D8 +:1027E000B1CF812F26960FB6F894DEBF0FBECDBFB6 +:1027F000DF91CF911F910F91FF90EF90DF90CF90DD +:102800000C94FD10402F4F70612FC6010E944C1C8C +:1028100026960FB6F894DEBF0FBECDBFDF91CF91E5 +:102820001F910F91FF90EF90DF90CF900C94941731 +:10283000402F4F70612FC60126960FB6F894DEBF69 +:102840000FBECDBFDF91CF911F910F91FF90EF9001 +:10285000DF90CF900C944F1C26960FB6F894DEBFF5 +:102860000FBECDBFDF91CF911F910F91FF90EF90E1 +:10287000DF90CF9008950E94461A0E94151A0E9478 +:102880006A1A0E94F11E0E94BF1D80E090E00E9423 +:10289000210F80E090E00C94370F0E94361A0C94C0 +:1028A0003B140E943A19292F22952F7030E02C30CA +:1028B00031054CF42A3031056CF4225031092230B4 +:1028C000310588F407C02C30310549F02F3031052F +:1028D00031F009C0803E48F0803F29F406C093FBE8 +:1028E000882780F9089580E0089581E00895CF93C6 +:1028F000DF9300D000D01F92CDB7DEB70F900F90BE +:102900000F900F900F90DF91CF910895CF93DF93A9 +:1029100000D000D000D0CDB7DEB726960FB6F89421 +:10292000DEBF0FBECDBFDF91CF9108951F93CF9330 +:10293000DF93C091860116E080918701C81799F056 +:10294000D0E01C9FF0011D9FF00D1124E857FE4FB1 +:102950004081518162817381848195810E948614B6 +:102960002196C770E9CFDF91CF911F9108954091D3 +:10297000B8015091B9016091BA017091BB01809189 +:10298000BC019091BD010C9486148091BD0182958B +:102990008F7009F054C08091BA01882309F44FC0A8 +:1029A00080918601A09187016091B8017091B90171 +:1029B0004091BB015091BC01B6E08A1709F43FC0B9 +:1029C00090E041155105C1F17F3F11F46F3FA1F136 +:1029D000B89FF001B99FF00D1124E857FE4F2181F7 +:1029E00072132AC02081621327C02281211124C0C2 +:1029F000238134812417350710F421503109241B19 +:102A0000350B2C323140C0F42091BD012F70206174 +:102A10002093BD0126E0289FF001299FF00D11248D +:102A2000E357FE4F80818F708061808388EB91E057 +:102A30000E9433110C94961401968770BECF0895AE +:102A4000CF92DF92EF92FF920F931F93CF93DF937A +:102A5000CDB7DEB762970FB6F894DEBF0FBECDBF1D +:102A60008C0185E0F801DE011D9601900D928A959A +:102A7000E1F7D8014C9111965C91119712966C91E7 +:102A800012971396CD90DC9014973091B801709105 +:102A9000B9018091BB019091BC01009709F473C109 +:102AA0007F3F19F43F3F09F46EC1E090BA01EE2078 +:102AB00009F4C5C02091BD01C816D90650F0F60131 +:102AC000E81BF90BCF01FF24F3948C329140C8F03E +:102AD00009C0809590958C0D9D1DFF24F3948C3238 +:102AE000914078F0F12C207F09F0C6C07C2DD98A66 +:102AF000C88A89890E94771488EB91E00E9433117B +:102B0000B1C0822F807F09F045C0751313C0341304 +:102B100011C061110FC02F7020612093BD010E9470 +:102B2000B71488EB91E00E9433118091BD01F80148 +:102B300085832EC0CD2819F15F3F11F44F3FF9F086 +:102B4000F62E61111CC0809186012091870136E02C +:102B5000821709F45BC090E0389FF001399FF00DB7 +:102B60001124E857FE4F7181571306C07081471337 +:102B700003C07281711103C001968770E9CFF62EF0 +:102B8000662309F41DC18091BD0181608093BD0160 +:102B9000F12C16C1751309C0341307C0611105C0AB +:102BA0008091BD01F8018583C8C04D875E878D8502 +:102BB0009E856A8B0E9451146A898823E1F16623FD +:102BC000D1F12091BD01822F82958F7090E0029704 +:102BD00074F08091B8019091B90198878F8319861C +:102BE000DB86CA862C87CE0107960E94331186E0C9 +:102BF000F801A8EBB1E001900D928A95E1F70E94EF +:102C0000C5140E94B714FF24F394DAC04D875E8781 +:102C10008D859E850E943A19292F22952F7030E0CC +:102C2000223031050CF0BFC09F7009F0B9C0805E42 +:102C3000883008F4C5C0C8010E943311E4CFC8161B +:102C4000D90608F453C0F601E81BF90BCF018C320A +:102C5000914008F453C0F12C7C2DD98AC88A898907 +:102C60000E947714E8EBF1E086E0DF011D928A957F +:102C7000E9F70E94B714A4C0751314C0341312C02E +:102C8000611110C08091BD01F8018583C8010E94C7 +:102C9000331186E0E8EBF1E0DF011D928A95E9F758 +:102CA000FE2C8EC04D875E878D859E856A8B0E9427 +:102CB00051146A89882309F4BECF662309F4BBCF77 +:102CC0002091BD01822F82958F7090E002970CF4C5 +:102CD0008ECF8091B8019091B9019A8389831B822C +:102CE000DD82CC822E83CE0101967FCF8095909598 +:102CF0008C0D9D1D8C32914008F0ADCFF62E6623D1 +:102D000009F499CF75132EC034132CC02091BD0146 +:102D100020FD1FC0822F82958F70D9F0D8011596A3 +:102D20002C9315978F3049F08F5F982F9295907F55 +:102D3000822F8F70892B15968C93C8010E943311B6 +:102D400086E0F801A8EBB1E001900D928A95E1F7D9 +:102D500090CF86E0F801A8EBB1E001900D928A9542 +:102D6000E1F72EC04D875E878D859E850E945114A8 +:102D700081113DCF8091BD0181608093BD01C8016B +:102D80000E9433111DC0662309F455CF4D875E871D +:102D90008D859E850E945114882309F44CCF27CF3E +:102DA000811145CF0DC0243031050CF044CF9F7008 +:102DB00009F43DCFD80115969C91907F09F037CF4B +:102DC0008F2D62960FB6F894DEBF0FBECDBFDF9198 +:102DD000CF911F910F91FF90EF90DF90CF900895CA +:102DE0001F93CF93DF93CDB7DEB72C970FB6F89430 +:102DF000DEBF0FBECDBF4F83588769877A878B8729 +:102E00009C87CE0107960E942015882369F08F8148 +:102E100098852A853B85232BF1F19F3F09F063C0FC +:102E20008F3F09F060C037C086E0FE013796DE01B3 +:102E3000119601900D928A95E1F76F817885EA8568 +:102E4000FB85309741F17F3F11F46F3F21F12091D5 +:102E5000870130E0C901019687709927409186016A +:102E600050E08417950709F447C069837A83FD838E +:102E7000EC8396E0929FD001939FB00D1124A85748 +:102E8000BE4FFE01319601900D929A95E1F7809325 +:102E900087010E94961416E0809186019091870127 +:102EA0008917C1F1189FC001112488579E4F0E94B5 +:102EB0002015882379F1E09186011E9FF0011124ED +:102EC000E857FE4F408151816281738184819581F1 +:102ED0000E9486148091860190E001968770992760 +:102EE00080938601D9CF4F81588569857A858B85F6 +:102EF0009C850E948614CFCF0E944D1410928701AA +:102F000010928601E8EBF1E086E0DF011D928A95E0 +:102F1000E9F7C1CF2C960FB6F894DEBF0FBECDBF38 +:102F2000DF91CF911F910895DF92EF92FF920F935F +:102F30001F93CF93DF93FC01892B09F48AC0E12C06 +:102F4000F12CDD24D394EF0121968491853709F487 +:102F500061C058F4843708F04EC0843008F06AC06D +:102F60008130D1F0823071F174C0883709F45DC0CE +:102F700050F4863709F455C0873709F06AC08E2DA2 +:102F80000E94331A54C09CE7980F903708F061C034 +:102F90008F770E94FD1050C08F010E5F1F4FFE0102 +:102FA000849190E2980F983050F48770FD2D01C005 +:102FB000FF0F8A95EAF78F2F0E94391A14C00E94DA +:102FC000531013C08F010E5F1F4FFE01C49180E2AA +:102FD0008C0F883060F4C7708D2D01C0880FCA95A2 +:102FE000EAF70E943F1A0E946A1AE80125C08C2F56 +:102FF0000E94FD10FACF9F012E5F3F4FFE01C4914A +:10300000CC2369F08FE99FE00197F1F700C0000041 +:10301000C150F6CF9F012E5F3F4FFE01F490E901B2 +:103020000BC00E94231AE82E07C00E94361A0E9485 +:103030006A1A02C00E9453108F2D882341F0EFE9D5 +:10304000FFE03197F1F700C000008150F6CFFE019C +:103050007ACFDF91CF911F910F91FF90EF90DF908A +:1030600008956093C2017093C3018093C40190934B +:10307000C5010E94EA1A0C943B146093BE01709340 +:10308000BF018093C0019093C1010E94EB1A0C9480 +:103090003B1408950C9431180F931F930091C201B3 +:1030A0001091C3012091C4013091C501602B712B97 +:1030B000822B932B1F910F910C9431180F931F9318 +:1030C0000091C2011091C3012091C4013091C5014A +:1030D00060237123822393231F910F910C94311845 +:1030E0000F931F930091C2011091C3012091C4015D +:1030F0003091C50160277127822793271F910F9177 +:103100000C94311860E070E0CB010C943D180F93E3 +:103110001F9341E050E060E070E08A019B0104C031 +:10312000000F111F221F331F8A95D2F7C901B80162 +:103130001F910F910C943D180F931F9341E050E0A5 +:1031400060E070E004C0440F551F661F771F8A952A +:10315000D2F78091BE019091BF01A091C001B091C2 +:10316000C1018A019B01082B192B2A2B3B2BC9017A +:10317000B8011F910F910C943D180F931F9341E0DC +:1031800050E060E070E004C0440F551F661F771FD9 +:103190008A95D2F740955095609570958091BE01C3 +:1031A0009091BF01A091C001B091C1018A019B0122 +:1031B000082319232A233B23C901B8011F910F912A +:1031C0000C943D180F931F9341E050E060E070E0D5 +:1031D00004C0440F551F661F771F8A95D2F7809150 +:1031E000BE019091BF01A091C001B091C1018A01BF +:1031F0009B01082719272A273B27C901B8011F91DE +:103200000F910C943D180F931F930091BE011091E4 +:10321000BF012091C0013091C101602B712B822B25 +:10322000932B1F910F910C943D180F931F930091B6 +:10323000BE011091BF012091C0013091C1016023F6 +:103240007123822393231F910F910C943D180F93A8 +:103250001F930091BE011091BF012091C0013091D8 +:10326000C10160277127822793271F910F910C942A +:103270003D180895CF92DF92EF92FF920F931F9324 +:10328000CF93DF938C01C090C201D090C301E09036 +:10329000C401F090C5014091BE015091BF01609101 +:1032A000C0017091C101C42AD52AE62AF72ACFE1CC +:1032B000D0E0D701C6010C2E04C0B695A79597950E +:1032C00087950A94D2F780FF07C0B8018C2F0E941F +:1032D000221C8130910531F4219758F7B80180E024 +:1032E0000E94221CDF91CF911F910F91FF90EF90D0 +:1032F000DF90CF90089590910A01992321F0909149 +:103300000B01911109C020910C0130910D01F901BF +:1033100032969FEF40E030C0982F969596959695FF +:103320009F31A0F4E0910C01F0910D01E90FF11D26 +:10333000877021E030E0A90102C0440F551F8A9533 +:10334000E2F7CA019181892B818308959091EB0165 +:1033500090FF23C01F928F938DE993E09F938F93EB +:103360000E94F6050F900F900F900F9008959F3FC9 +:1033700039F04F5F4E3141F051915813F8CF0DC0E5 +:103380005111F7CF942FF5CF9F3F39F0F901E90F95 +:10339000F11D97FDFA9582830895089590910A0191 +:1033A000992321F090910B01911109C020910C01FA +:1033B00030910D01F9013296205E3F4F30C0982FB9 +:1033C0009695969596959F31A8F4E0910C01F09111 +:1033D0000D01E90FF11D877021E030E0A90102C065 +:1033E000440F551F8A95E2F7CA0180959181892380 +:1033F000818308959091EB0190FF16C01F928F93E7 +:103400008FE793E09F938F930E94F6050F900F90A4 +:103410000F900F9008953196E217F30729F09081ED +:103420009813F9CF1082F7CF089581E090E0E091F2 +:103430000C01F0910D01E80FF91F10820196803206 +:103440009105A9F708958091EA0108959091EA0104 +:10345000892B8093EA01089580959091EA01892350 +:103460008093EA0108958093EA0108951092EA0199 +:1034700008959091E901892B8093E9010895809541 +:103480009091E90189238093E90108951092E9015F +:1034900008958093C8010E945F1B9093C701809399 +:1034A000C60108951092C8011092C7011092C6017A +:1034B000089580910C0190910D01FC0131969C01C1 +:1034C000205E3F4F80E0919191118F5FE217F307EB +:1034D000D1F70895E0910C01F0910D018091EA017E +:1034E0008083E0910C01F0910D0190818091E901C0 +:1034F000892B80838091C8018823D9F10E945F1BAA +:103500002091C6013091C7018217930748F00E94AD +:103510005F1B2091C6013091C701821B930B0AC02B +:103520000E945F1B2091C6013091C7012095309504 +:10353000820F931F8C32914070F08091EB0180FFDD +:1035400008C08BEB93E09F938F930E94F6050F903A +:103550000F900E94521AE0910C01F0910D019081A0 +:103560008091C801892B80830E94591A81110E9481 +:10357000521A80910C0190910D010C94CD0E9093F4 +:1035800039018093380108958295982F9C7C392FBA +:1035900036953695282F237344E0249FC0011124CB +:1035A000932F982B292F2A7A2695892F8575880F96 +:1035B000822B08950895CF93DF9300D000D01F92FF +:1035C000CDB7DEB70F900F900F900F900F90DF9157 +:1035D000CF910895089508950C94111080910002E0 +:1035E000843021F11092EC0120E488E190E00FB6E4 +:1035F000F894A895809360000FBE2093600083B775 +:10360000817F846083BF83B7816083BF789488950E +:1036100083B78E7F83BF0FB6F894A8958091600022 +:10362000886180936000109260000FBE0895CF9370 +:103630000E9421070E9422060E942207C0E08C2FD0 +:103640000E94EC06811104C0CF5FC830C1F701C0F1 +:1036500081E0CF9108950C944D141F920F920FB6F4 +:103660000F9211248F939F93AF93BF938091EC019E +:10367000811113C08091ED019091EE01A091EF01B5 +:10368000B091F0014196A11DB11D8093ED01909381 +:10369000EE01A093EF01B093F001BF91AF919F9124 +:1036A0008F910F900FBE0F901F90189582E084BDF0 +:1036B00093E095BD9AEF97BD80936E0008952FB764 +:1036C000F8948091ED019091EE01A091EF01B091FD +:1036D000F0012FBF08952FB7F8946091ED0170911C +:1036E000EE018091EF019091F0012FBF0895CF92EC +:1036F000DF92EF92FF920F931F932FB7F8944091B0 +:10370000ED015091EE016091EF017091F0012FBF3A +:103710006A017B01EE24FF248C0120E030E0C0161A +:10372000D106E206F30610F4415051099A01281B14 +:10373000390BC9011F910F91FF90EF90DF90CF904F +:103740000895CF92DF92EF92FF920F931F932FB7BE +:10375000F894C090ED01D090EE01E090EF01F09070 +:10376000F0012FBF97018601061B170B280B390BA1 +:10377000C616D706E806F90618F0C901B80106C052 +:10378000C901B80161507109810991091F910F9117 +:10379000FF90EF90DF90CF9008951F920F920FB699 +:1037A0000F9211248F939F93AF93BF938091ED015C +:1037B0009091EE01A091EF01B091F0010196A11D51 +:1037C000B11D8093ED019093EE01A093EF01B093B2 +:1037D000F001BF91AF919F918F910F900FBE0F900D +:1037E0001F9018950E94080CF8942FEF87EA91E635 +:1037F000215080409040E1F700C0000087E090EB4E +:10380000DC018093090290930A02A0930B02B0930B +:103810000C029CE088E10FB6F894A89580936000B4 +:103820000FBE90936000FFCF28E0929FF00111241B +:10383000E80FF11DE052FF4F9491892F8F70929500 +:103840009F700895CF93C82FCB010E94141C282F7E +:1038500030E080E1989FA0011124422B532B403887 +:10386000510519F480E090E015C09770E92FF0E061 +:1038700088E0C89FE00DF11D112484E0EE0FFF1FCA +:103880008A95E1F7E20FF31FEE0FFF1FE050F849B2 +:1038900085919491CF91089580E090E008950895E6 +:1038A0008091F30180FF0BC06091110185E0689F5A +:1038B000B001112475956795759567952BC081FFAB +:1038C00009C06091110185E0689FB00111247595D0 +:1038D000679520C082FF07C06091110185E0689F55 +:1038E000B001112417C09091F4019923D1F0609197 +:1038F0001001961788F72091110185E0289F90010B +:103900001124929FA001939F500D112470E0CA01D1 +:103910000E9428246038710540F46115710539F062 +:1039200002C065E070E0862F08958FE7089581E07A +:1039300008958091F30180FF08C060910F0170E04D +:10394000759567957595679521C081FF06C0609153 +:103950000F0170E07595679519C082FF04C06091F2 +:103960000F0170E010C09091F4019923C1F06091B3 +:103970000E019617A0F780910F01899FC0011124B5 +:1039800070E00E9428246038710528F461157105E3 +:1039900021F0862F08958FE7089581E0089561E072 +:1039A00070E0F4CF803F21F40E94501C819504C048 +:1039B000813F29F40E94501C8093F7010895823FB3 +:1039C00021F40E94501C819504C0833F29F40E9479 +:1039D000501C8093F6010895893F19F40E94991CA8 +:1039E00005C08A3F31F40E94991C81958093F801AB +:1039F00008958B3F21F40E94991C819504C08C3F4F +:103A000029F40E94991C8093F9010895843F21F4C0 +:103A10008091F501816017C0853F21F48091F50107 +:103A2000826011C0863F21F48091F50184600BC053 +:103A3000873F21F48091F501886005C0883F31F40B +:103A40008091F50180618093F50108958D3F21F407 +:103A50008091F30181600BC08E3F21F48091F301CE +:103A6000826005C08F3F29F48091F30184608093C8 +:103A7000F3010895803F39F48091F70187FF6CC00E +:103A80001092F70169C0813F29F48091F70118165F +:103A9000BCF362C09091F601823F29F497FF5CC0AD +:103AA0001092F60159C0833F19F41916CCF354C093 +:103AB000893F41F48091F80118160CF04DC0109226 +:103AC000F8014AC08A3F29F48091F80187FF44C079 +:103AD000F6CF8B3F39F48091F90187FF3DC01092FA +:103AE000F9013AC08C3F29F48091F9011816BCF312 +:103AF00033C0843F21F48091F5018E7F17C0853F4C +:103B000021F48091F5018D7F11C0863F21F48091D1 +:103B1000F5018B7F0BC0873F21F48091F501877FF2 +:103B200005C0883F31F48091F5018F7E8093F501C7 +:103B300013C08D3F21F48091F3018E7F0BC08E3F27 +:103B400021F48091F3018D7F05C08F3F29F480918E +:103B5000F3018B7F8093F3018091F60181110EC0F8 +:103B60008091F70181110AC08091F801811106C08E +:103B70008091F901811102C01092F40108958091A1 +:103B8000EB0183FF7EC084EF93E00E945D0580918E +:103B9000F5011F928F938FEE93E09F938F930E9476 +:103BA000F6058DEE93E00E945D058091F601282FC9 +:103BB000082E000C330B3F938F938AEE93E09F9374 +:103BC0008F930E94F60588EE93E00E945D05809138 +:103BD000F701282F082E000C330B3F938F9385EEAF +:103BE00093E09F938F930E94F60583EE93E00E94EB +:103BF0005D058091F801282F082E000C330B3F93B0 +:103C00008F9380EE93E09F938F930E94F6058EED45 +:103C100093E00E945D058091F901282F082E000C89 +:103C2000330B3F938F938BED93E09F938F930E9481 +:103C3000F60588ED93E00E945D058091F4011F92E6 +:103C40008F9385ED93E09F938F930E94F60583ED0C +:103C500093E00E945D058091F3011F928F9380EDA8 +:103C600093E09F938F930E94F6058DEC93E00E9462 +:103C70005D058DB79EB74C960FB6F8949EBF0FBEEC +:103C80008DBF85EF91E00E94160F0E945F1B9093FD +:103C9000F2018093F10108951F93CF93DF938091F8 +:103CA000F1019091F2010E94771BAC019091F40117 +:103CB000992321F02091120130E006C020911301D8 +:103CC0008AE0289F900111244217530708F485C009 +:103CD0008091F601C091F701D091F8011091F9019E +:103CE000811107C0C11175C0D11173C0111171C00C +:103CF00074C09F3F19F09F5F9093F401181624F44D +:103D00000E94501C8093F6018091F60187FF05C048 +:103D10000E94501C81958093F6011C1624F40E9489 +:103D2000501C8093F7018091F70187FF05C00E9426 +:103D3000501C81958093F7016091F601662331F163 +:103D4000C091F701CC2311F1062E000C770B880BE4 +:103D5000990B0E94232323E333E343E35FE30E94B1 +:103D600087230E94EB226093F6016C2FCC0F770B18 +:103D7000880B990B0E94232323E333E343E35FE3A0 +:103D80000E9487230E94EB226093F7011D1624F402 +:103D90000E94991C8093F8018091F80187FF05C06B +:103DA0000E94991C81958093F801111624F40E94B9 +:103DB000991C8093F9018091F90187FF05C00E9449 +:103DC000991C81958093F901DF91CF911F910C94FB +:103DD000BF1D9F3F09F08FCF97CFDF91CF911F91EC +:103DE0000895E5EFF1E085E0DF011D928A95E9F79E +:103DF0001092F4011092F301089587E196E00E9479 +:103E00005D051F9281E08F931F9285E08F9389EC6F +:103E100095E09F938F930E94F6050F900F900F905F +:103E20000F900F900F9008958330E9F128F48130BE +:103E300061F0823009F10895853009F462C008F418 +:103E400049C0863009F474C0089580911301262F6B +:103E500030E0280F311D2F3F310524F4680F6093A7 +:103E6000130103C08FEF80931301809113011F9200 +:103E70008F9382E095E072C080911201262F30E08E +:103E8000280F311D2F3F310524F4680F6093120174 +:103E900003C08FEF80931201809112011F928F93C4 +:103EA00080EF94E05BC080911101262F30E0280F55 +:103EB000311D2F3F310524F4680F6093110103C0B9 +:103EC0008FEF80931101809111011F928F938DEDDF +:103ED00094E044C080911001262F30E0280F311D5E +:103EE0002F3F310524F4680F6093100103C08FEF5A +:103EF00080931001809110011F928F9388EC94E0C1 +:103F00002DC080910F01262F30E0280F311D2F3F4B +:103F1000310524F4680F60930F0103C08FEF809385 +:103F20000F0180910F011F928F938FEA94E016C0CA +:103F300080910E01262F30E0280F311D2F3F3105D3 +:103F400024F4680F60930E0103C08FEF80930E017D +:103F500080910E011F928F9384E994E09F938F9339 +:103F60000E94F6050F900F900F900F9008958330E8 +:103F700081F128F4813059F08230D1F008958530F4 +:103F800009F449C0B8F1863009F456C0089580910B +:103F90001301681720F4861B8093130102C010924E +:103FA0001301809113011F928F9385E894E054C010 +:103FB00080911201681720F4861B8093120102C0C1 +:103FC00010921201809112011F928F9383E794E067 +:103FD00043C080911101681720F4861B8093110162 +:103FE00002C010921101809111011F928F9380E6FF +:103FF00094E032C080911001681720F4861B8093F2 +:10400000100102C010921001809110011F928F9335 +:104010008BE494E021C080910F01681720F4861B87 +:1040200080930F0102C010920F0180910F011F9227 +:104030008F9382E394E010C080910E01681720F402 +:10404000861B80930E0102C010920E0180910E011A +:104050001F928F9387E194E09F938F930E94F605C0 +:104060000F900F900F900F900895CF93C82F1F922D +:104070008F938CE197E09F938F930E94F60581E0E8 +:1040800090E0A0E0B0E0BC01CD0104C0660F771F56 +:10409000881F991FCA95D2F70E944A180F900F9057 +:1040A0000F900F90CF910C944D14CF938732A8F5B9 +:1040B0008E3108F02BC1803109F49FC0F8F48730AD +:1040C00009F464C0A8F4863009F024C18091EB01A2 +:1040D000817F8E7F8093EB0181E297E00E945D05F6 +:1040E0008BE09AE00E945D0581E08093FB014CC06B +:1040F0008B30F1F18E3009F46CC00CC1863109F4BB +:10410000B0C020F4813109F4EDC004C1893109F453 +:1041100091C08B3109F449C0FDC0883349F150F496 +:10412000893209F4F1C0853309F4EEC0873209F011 +:10413000F1C0EAC0833409F4E7C028F48A3308F4F4 +:10414000E9C08953E4C0883409F0E4C00E944D14EA +:104150008AEF99E00E945D052FEF83ED90E32150F7 +:1041600080409040E1F700C000000E94F21B0CC0AC +:1041700088E497E05CC081EE99E00E945D05809143 +:10418000EB0181608093EB01C1E0C9C08091EB013C +:10419000C82FC17080FFEFCF8DEE99E00E945D05C2 +:1041A0008091EB01817F8E7F3DC09091EB0191FB6F +:1041B000CC27C0F981E0C827892FC0FB81F9809303 +:1041C000EB01CC2319F084ED99E027C086EC99E04F +:1041D0002EC09091EB0192FBCC27C0F981E0C8275B +:1041E000892FC0FB82F98093EB01CC2319F087EB78 +:1041F00099E013C087EA99E01AC09091EB0193FB14 +:10420000CC27C0F981E0C827892FC0FB83F98093B0 +:10421000EB01CC2351F08BE999E00E945D05809180 +:10422000EB0181608093EB017AC08EE899E00E94F7 +:104230005D05AACF8FE799E00E945D0582E599E0D0 +:104240000E945D058BE199E00E945D058EEE98E08D +:104250000E945D0584EA98E00E945D0586E798E08B +:10426000E6CF88E698E00E945D050E94C10E1F928D +:104270008F938EE498E09F938F930E94F605809130 +:104280000A011F928F9387E398E09F938F930E9478 +:10429000F605809176011F928F9384E298E09F93B8 +:1042A0008F930E94F60580910B011F928F9381E1FD +:1042B00098E09F938F930E94F6050E946B1B9F933B +:1042C0008F937F936F938AEF97E09F938F930E94D2 +:1042D000F6058DB79EB746960FB6F8949EBF0FBEF3 +:1042E0008DBF52CF0E944D14C0910B0181E0C827B1 +:1042F000C0930B01CC2329F080EF97E00E945D056D +:104300000EC085EE97E093CF80E001C08D510E94F2 +:1043100035203ACF83EE97E00E945D05C0E08C2FF8 +:10432000CF91089580E0089580E00895CF93C82F3D +:104330008091FB01813071F020F0823009F44BC094 +:1043400042C1E0910C01F0910D018081823209F0AF +:104350003CC107C0E0910C01F0910D0180818232D7 +:1043600061F48C2F0E949221811104C08C2F0E9435 +:1043700055202FC081E090E02CC08C2F0E9494210A +:10438000811126C0C431E1F070F4CB3081F0C0312E +:10439000D1F40E94FD1E84E197E00E945D0582E059 +:1043A0008093FB0115C0C93259F0C83361F481E232 +:1043B00097E00E945D0588E197E00E945D0508C0D6 +:1043C0001092FB0104C182E197E00E945D05FFC0ED +:1043D00081E08170FEC0C43228F5CE3108F0C1C042 +:1043E000CB30A1F1D0F4C73009F0D3C08EE1809377 +:1043F000130182E3809312018AE08093110184E12A +:104400008093100188E080930F0188E280930E0171 +:1044100088EB95E00E945D05BFC0C33149F1C4310E +:10442000C1F0B7C0CB3409F4A9C028F4C93289F06F +:10443000C83361F0AEC0C13509F49EC0C23509F47D +:1044400099C0CE3409F0A5C06AE09EC00E94FD1E4E +:10445000A3C08091FA01882319F01092FA019CC040 +:1044600085EC95E00E945D0581E08093FB01B1C081 +:104470008FE995E00E945D058DE895E00E945D055D +:10448000809113011F928F938AE895E09F938F93F9 +:104490000E94F60588E895E00E945D0586E795E0B4 +:1044A0000E945D05809112011F928F9383E795E032 +:1044B0009F938F930E94F60581E795E00E945D052A +:1044C00082E695E00E945D05809111011F928F9315 +:1044D0008FE595E09F938F930E94F6058DE595E01B +:1044E0000E945D058CE495E00E945D0580911001BD +:1044F0001F928F9389E495E09F938F930E94F60516 +:1045000087E495E00E945D0582E395E00E945D05E9 +:1045100080910F011F928F938FE295E09F938F936D +:104520000E94F6058DE295E00E945D0586E195E02A +:104530000E945D0580910E011F928F9383E195E0AB +:104540009F938F930E94F60581E195E00E945D059F +:104550008DB79EB748960FB6F8949EBF0FBE8DBF1D +:104560001BC0CE51EC2FF0E0E35DFE4F80818093C5 +:10457000FA0112C061E003C061E006C06AE0809108 +:10458000FA010E94141F08C08091FA010E94B71F0F +:1045900003C086EB95E013C08091FA01882369F08F +:1045A0001F928F9380EB95E09F938F930E94F60567 +:1045B0000F900F900F900F9004C08DEA95E00E942D +:1045C0005D0581E006C01092FB0180E002C080E042 +:1045D00000CFCF9108950E94F2226894B1110C94FB +:1045E000812308950E94662388F09F5798F0B92F81 +:1045F0009927B751B0F0E1F0660F771F881F991F18 +:104600001AF0BA95C9F714C0B13091F00E94802316 +:10461000B1E008950C948023672F782F8827B85F26 +:1046200039F0B93FCCF3869577956795B395D9F76F +:104630003EF490958095709561957F4F8F4F9F4F79 +:104640000895E89409C097FB3EF490958095709585 +:1046500061957F4F8F4F9F4F9923A9F0F92F96E9CE +:10466000BB279395F695879577956795B795F11143 +:10467000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE0 +:104680008F4F9F4F16C0882311F096E911C07723F2 +:1046900021F09EE8872F762F05C0662371F096E8FB +:1046A000862F70E060E02AF09A95660F771F881FCA +:1046B000DAF7880F9695879597F9089557FD9058E2 +:1046C000440F551F59F05F3F71F04795880F97FBD6 +:1046D000991F61F09F3F79F0879508951216130690 +:1046E0001406551FF2CF4695F1DF08C016161706BF +:1046F0001806991FF1CF86957105610508940895F4 +:10470000E894BB2766277727CB0197F908950E9485 +:104710009A230C940B240E94FD2338F00E94042459 +:1047200020F0952311F00C94F4230C94FA23112417 +:104730000C9481230E945E2370F3959FC1F3950F23 +:1047400050E0551F629FF001729FBB27F00DB11D15 +:10475000639FAA27F00DB11DAA1F649F6627B00DA5 +:10476000A11D661F829F2227B00DA11D621F739F8E +:10477000B00DA11D621F839FA00D611D221F749F9C +:104780003327A00D611D231F849F600D211D822FE3 +:10479000762F6A2F11249F5750409AF0F1F088230A +:1047A0004AF0EE0FFF1FBB1F661F771F881F915037 +:1047B0005040A9F79E3F510580F00C94F4230C94CF +:1047C00081235F3FE4F3983ED4F386957795679510 +:1047D000B795F795E7959F5FC1F7FE2B880F911D61 +:1047E0009695879597F9089597F99F6780E870E007 +:1047F00060E008959FEF80EC089500240A94161657 +:10480000170618060906089500240A9412161306BE +:10481000140605060895092E0394000C11F488234C +:1048200052F0BB0F40F4BF2B11F460FF04C06F5F68 +:104830007F4F8F4F9F4F0895991B79E004C0991FB8 +:10484000961708F0961B881F7A95C9F780950895EA +:1048500097FB072E16F4009407D077FD09D00E942D +:10486000422407FC05D03EF4909581959F4F089512 +:10487000709561957F4F0895EE0FFF1F0590F4919D +:10488000E02D0994AA1BBB1B51E107C0AA1FBB1F47 +:10489000A617B70710F0A61BB70B881F991F5A95CC +:1048A000A9F780959095BC01CD010895F894FFCFAC +:1048B0002A071B08F807C40790070101C901280847 +:1048C000140A321E404D3622391A03CD0297027562 +:1048D000023C02AF01C801E101FA011A0201020320 +:0848E0000405060708090000A9 +:106800000000000000000000040005000600070072 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:106850002800000035002B002C002D002E002F00FA +:1068600030002A00000033003400290036003700D1 +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000000000F8 +:1068A00000000000000000000000000000000000E8 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E0000000000000000000310000000000000077 +:1068F0000000E100E200E300F1A1E500E600E700AE +:106900000100010001000100EA4401000100E2442D +:106910000100010001005500460054004A004B00F0 +:10692000560057004700480001000100E9440100FB +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000580001004C00390001004400450052007D +:1069600001000100010050004F0081404D004E0029 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001000100EF +:1069A00001000100010001000100010001000100DF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/keyboard/hhkb/keymap_common.c b/keyboard/hhkb/keymap_common.c deleted file mode 100644 index e938fb62..00000000 --- a/keyboard/hhkb/keymap_common.c +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ -#include -#include "action.h" -#include -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/keyboard/hhkb/keymap_common.h b/keyboard/hhkb/keymap_common.h index 3622665f..97e2e098 100644 --- a/keyboard/hhkb/keymap_common.h +++ b/keyboard/hhkb/keymap_common.h @@ -32,10 +32,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - #define KEYMAP( \ K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ K32, K01, K02, K13, K12, K23, K22, K42, K43, K62, K63, K73, K72, K52, \ diff --git a/keyboard/hhkb/keymap_hasu.c b/keyboard/hhkb/keymap_hasu.c index a5602ded..b63265c9 100644 --- a/keyboard/hhkb/keymap_hasu.c +++ b/keyboard/hhkb/keymap_hasu.c @@ -192,9 +192,9 @@ enum macro_id { * Fn action definition */ #ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +const action_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { #else -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { #endif [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used) [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps) diff --git a/keyboard/hhkb/keymap_hhkb.c b/keyboard/hhkb/keymap_hhkb.c index 7807f436..ae96e834 100644 --- a/keyboard/hhkb/keymap_hhkb.c +++ b/keyboard/hhkb/keymap_hhkb.c @@ -54,7 +54,7 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { * Fn action definition */ #ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +const action_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_LAYER_MOMENTARY(2), [2] = ACTION_LAYER_MOMENTARY(3), @@ -89,7 +89,7 @@ const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSLASH), }; #else -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { [0] = ACTION_LAYER_MOMENTARY(1), }; #endif diff --git a/keyboard/hhkb/keymap_jp.c b/keyboard/hhkb/keymap_jp.c index 48d0ee70..152674d0 100644 --- a/keyboard/hhkb/keymap_jp.c +++ b/keyboard/hhkb/keymap_jp.c @@ -42,9 +42,9 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { * Fn action definition */ #ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +const action_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { #else -const uint16_t fn_actions[] PROGMEM = { +const action_t fn_actions[] PROGMEM = { #endif [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/keyboard/hhkb/keymap_spacefn.c b/keyboard/hhkb/keymap_spacefn.c index deff920a..b5a8c8b4 100644 --- a/keyboard/hhkb/keymap_spacefn.c +++ b/keyboard/hhkb/keymap_spacefn.c @@ -108,7 +108,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) /* * Fn action definition */ -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde diff --git a/keyboard/hhkb/Makefile.pjrc b/keyboard/hhkb/not_supported/Makefile.pjrc similarity index 97% rename from keyboard/hhkb/Makefile.pjrc rename to keyboard/hhkb/not_supported/Makefile.pjrc index 7d0f8c3a..e2d3a570 100644 --- a/keyboard/hhkb/Makefile.pjrc +++ b/keyboard/hhkb/not_supported/Makefile.pjrc @@ -13,8 +13,7 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # keyboard dependent files -SRC = keymap_common.c \ - matrix.c \ +SRC = matrix.c \ led.c ifdef KEYMAP diff --git a/keyboard/hhkb/unimap_common.h b/keyboard/hhkb/unimap_common.h new file mode 100644 index 00000000..6589e4a1 --- /dev/null +++ b/keyboard/hhkb/unimap_common.h @@ -0,0 +1,132 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#ifndef UNIMAP_COMMON_H +#define UNIMAP_COMMON_H + +#include +#include +#include "unimap.h" + + +/* Mapping to Universal keyboard layout + * + * Universal keyboard layout + * ,-----------------------------------------------. + * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| + * ,---. |-----------------------------------------------| ,-----------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut| + * `---' `-----------------------------------------------' `-----------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| + * |-----------------------------------------------------------| `-----------' |---------------| + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Retn| | 4| 5| 6|KP,| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|KP=| + * |-----------------------------------------------------------| ,-----------. |---------------| + * |Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| + * `-----------------------------------------------------------' `-----------' `---------------' + */ + +#ifndef HHKB_JP +/* HHKB + * ,-----------------------------------------------------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|BS | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Ctl| + * `-----------------------------------------------------------' + * |Gui|Alt | Space |Alt |Gui| + * `-------------------------------------------' + * + * Matrix - row:8 x col:8 + * ,-----------------------------------------------------------. + * |31 |30 |00 |10 |11 |20 |21 |40 |41 |60 |61 |70 |71 |50 |51 | + * |-----------------------------------------------------------| + * |32 |01 |02 |13 |12 |23 |22 |42 |43 |62 |63 |73 |72 |52 | + * |-----------------------------------------------------------| + * |33 |04 |03 |14 |15 |24 |25 |45 |44 |65 |64 |74 | 53 | + * |-----------------------------------------------------------| + * |34 |05 |06 |07 |16 |17 |26 |46 |66 |76 |75 |55 |54 | + * `-----------------------------------------------------------' + * |35 |36 | 37 |57 |56 | + * `-------------------------------------------' + */ + +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_2, UNIMAP_Q, UNIMAP_W, UNIMAP_S, UNIMAP_A, UNIMAP_Z, UNIMAP_X, UNIMAP_C, }, + { UNIMAP_3, UNIMAP_4, UNIMAP_R, UNIMAP_E, UNIMAP_D, UNIMAP_F, UNIMAP_V, UNIMAP_B, }, + { UNIMAP_5, UNIMAP_6, UNIMAP_Y, UNIMAP_T, UNIMAP_G, UNIMAP_H, UNIMAP_N, UNIMAP_NO, }, + { UNIMAP_1, UNIMAP_GRAVE, UNIMAP_TAB, UNIMAP_CAPSLOCK, UNIMAP_LSHIFT, UNIMAP_LALT, UNIMAP_LGUI, UNIMAP_SPACE, }, + { UNIMAP_7, UNIMAP_8, UNIMAP_U, UNIMAP_I, UNIMAP_K, UNIMAP_J, UNIMAP_M, UNIMAP_NO, }, + { UNIMAP_JYEN, UNIMAP_BSPACE, UNIMAP_BSLASH, UNIMAP_ENTER, UNIMAP_RCTRL, UNIMAP_RSHIFT, UNIMAP_RALT, UNIMAP_RGUI, }, + { UNIMAP_9, UNIMAP_0, UNIMAP_O, UNIMAP_P, UNIMAP_SCOLON, UNIMAP_L, UNIMAP_COMMA, UNIMAP_NO, }, + { UNIMAP_MINUS, UNIMAP_EQUAL, UNIMAP_RBRACKET, UNIMAP_LBRACKET, UNIMAP_QUOTE, UNIMAP_SLASH, UNIMAP_DOT, UNIMAP_NO, }, +}; + +#else +/* HHKB JP + * ,-----------------------------------------------------------. + * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |JPY|BS | + * |-----------------------------------------------------------| + * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] | | + * |------------------------------------------------------` | + * |CapsL |A |S |D |F |G |H |J |K |L |; |' |# |Entr| + * |-----------------------------------------------------------| + * |Shift |Z |X |C |V |B |N |M |, |. |/ |RO |Up |Shi| + * |-----------------------------------------------------------| + * |Ctl||Esc|Gui|Alt|MHE| |HEN|KAN|Alt|Ctl||Lef|Dow|Rig| + * `-----------------------------------------------------------' + * + * Matrix - row:16 x col:8 + * ,-----------------------------------------------------------. + * |02 |32 |62 |22 |12 |52 |72 |A2 |92 |82 |B2 |E2 |F2 |D2 |C2 | + * |-----------------------------------------------------------| + * |03 |63 |23 |13 |53 |73 |A3 |93 |83 |B3 |E3 |F3 |D3 | | + * |------------------------------------------------------` | + * |06 |66 |26 |16 |56 |76 |A6 |96 |86 |B6 |E6 |F6 |D6 | C6 | + * |-----------------------------------------------------------| + * |05 |65 |25 |15 |55 |75 |A5 |95 |85 |B5 |E5 |F5 |D5 |C5 | + * |-----------------------------------------------------------| + * |04 ||34 |64 |24 |14 | 74 |94 |84 |B4 |E4 ||F4 |D4 |C4 | + * `-----------------------------------------------------------' + */ +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_NO, UNIMAP_NO, UNIMAP_GRAVE, UNIMAP_TAB, UNIMAP_LCTRL, UNIMAP_LSHIFT, UNIMAP_CAPSLOCK, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_4, UNIMAP_E, UNIMAP_MHEN, UNIMAP_C, UNIMAP_D, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_3, UNIMAP_W, UNIMAP_LALT, UNIMAP_X, UNIMAP_S, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_1, UNIMAP_NO, UNIMAP_ESCAPE, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_5, UNIMAP_R, UNIMAP_NO, UNIMAP_V, UNIMAP_F, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_2, UNIMAP_Q, UNIMAP_LGUI, UNIMAP_Z, UNIMAP_A, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_6, UNIMAP_T, UNIMAP_SPACE, UNIMAP_B, UNIMAP_G, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_9, UNIMAP_I, UNIMAP_KANA, UNIMAP_COMMA, UNIMAP_K, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_8, UNIMAP_U, UNIMAP_HENK, UNIMAP_M, UNIMAP_J, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_7, UNIMAP_Y, UNIMAP_NO, UNIMAP_N, UNIMAP_H, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_0, UNIMAP_O, UNIMAP_RALT, UNIMAP_DOT, UNIMAP_L, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_BSPACE, UNIMAP_NO, UNIMAP_RIGHT, UNIMAP_RSHIFT, UNIMAP_ENTER, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_JYEN, UNIMAP_RBRACKET, UNIMAP_DOWN, UNIMAP_UP, UNIMAP_NONUS_HASH, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_MINUS, UNIMAP_P, UNIMAP_RCTRL, UNIMAP_SLASH, UNIMAP_SCOLON, UNIMAP_NO, }, + { UNIMAP_NO, UNIMAP_NO, UNIMAP_EQUAL, UNIMAP_LBRACKET, UNIMAP_LEFT, UNIMAP_RO, UNIMAP_QUOTE, UNIMAP_NO, }, +}; +#endif + +#endif diff --git a/keyboard/hhkb/unimap_hhkb.c b/keyboard/hhkb/unimap_hhkb.c new file mode 100644 index 00000000..de3a672e --- /dev/null +++ b/keyboard/hhkb/unimap_hhkb.c @@ -0,0 +1,45 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_common.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, NO, NO, NO, NO, NO, NO, NO, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSPC, NO, NO, NO, NO, NO, NO, NO, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NO, ENT, NO, NO, NO, NO, + LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, NO, NO, NO, NO, NO, + NO, LGUI,LALT,NO, SPC, NO, NO, RALT,RGUI,NO, FN0, NO, NO, NO, NO, NO, NO + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS,PENT, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS + ), +}; diff --git a/keyboard/hhkb/unimap_jp.c b/keyboard/hhkb/unimap_jp.c new file mode 100644 index 00000000..7a5f0003 --- /dev/null +++ b/keyboard/hhkb/unimap_jp.c @@ -0,0 +1,45 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_common.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ZKHK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, NO, NO, NO, NO, NO, NO, NO, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, NO, NO, NO, NO, NO, NO, NO, NO, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, NO, NO, NO, NO, + LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, NO, NO, NO, NO, + FN0, LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,NO, NO, FN0, LEFT,DOWN,RGHT, NO, NO, NO + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS,PENT, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +}; diff --git a/keyboard/infinity/Makefile b/keyboard/infinity/Makefile index 052134c3..5b3c1fe6 100644 --- a/keyboard/infinity/Makefile +++ b/keyboard/infinity/Makefile @@ -9,7 +9,6 @@ OBJDIR = ./build OBJECTS = \ $(OBJDIR)/matrix.o \ - $(OBJDIR)/keymap_common.o \ $(OBJDIR)/led.o \ $(OBJDIR)/main.o diff --git a/keyboard/infinity/keymap.c b/keyboard/infinity/keymap.c index 4726cee6..c2845b18 100644 --- a/keyboard/infinity/keymap.c +++ b/keyboard/infinity/keymap.c @@ -42,7 +42,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/keyboard/infinity/keymap_common.c b/keyboard/infinity/keymap_common.c deleted file mode 100644 index fdb1769e..00000000 --- a/keyboard/infinity/keymap_common.c +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} diff --git a/keyboard/infinity/keymap_common.h b/keyboard/infinity/keymap_common.h index b0f765bf..412417a2 100644 --- a/keyboard/infinity/keymap_common.h +++ b/keyboard/infinity/keymap_common.h @@ -29,10 +29,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - #ifdef INFINITY_PROTOTYPE /* Infinity prototype */ diff --git a/keyboard/infinity_chibios/Makefile b/keyboard/infinity_chibios/Makefile index 9999451c..3873239a 100644 --- a/keyboard/infinity_chibios/Makefile +++ b/keyboard/infinity_chibios/Makefile @@ -9,7 +9,6 @@ TARGET_DIR = . # project specific files SRC = matrix.c \ - keymap_common.c \ led.c ifdef KEYMAP diff --git a/keyboard/infinity_chibios/keymap_common.c b/keyboard/infinity_chibios/keymap_common.c deleted file mode 100644 index 69b170ce..00000000 --- a/keyboard/infinity_chibios/keymap_common.c +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ -#include "keymap_common.h" - - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - return keymaps[(layer)][(key.row)][(key.col)]; -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - return (action_t){ .code = fn_actions[FN_INDEX(keycode)] }; -} diff --git a/keyboard/infinity_chibios/keymap_common.h b/keyboard/infinity_chibios/keymap_common.h index 260822fc..d958f30f 100644 --- a/keyboard/infinity_chibios/keymap_common.h +++ b/keyboard/infinity_chibios/keymap_common.h @@ -30,10 +30,6 @@ along with this program. If not, see . #include "keymap.h" -extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - - #ifdef INFINITY_PROTOTYPE /* Infinity prototype */ diff --git a/keyboard/infinity_chibios/keymap_hasu.c b/keyboard/infinity_chibios/keymap_hasu.c index 2d0635f0..538de746 100644 --- a/keyboard/infinity_chibios/keymap_hasu.c +++ b/keyboard/infinity_chibios/keymap_hasu.c @@ -119,7 +119,7 @@ enum macro_id { /* * Fn action definition */ -const uint16_t fn_actions[] = { +const action_t fn_actions[] = { [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used) [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps) [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* diff --git a/keyboard/infinity_chibios/keymap_plain.c b/keyboard/infinity_chibios/keymap_plain.c index 2673d6aa..0015a0b2 100644 --- a/keyboard/infinity_chibios/keymap_plain.c +++ b/keyboard/infinity_chibios/keymap_plain.c @@ -42,7 +42,7 @@ const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), }; -const uint16_t fn_actions[] = { +const action_t fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), }; diff --git a/keyboard/onekey/keymap.c b/keyboard/onekey/keymap.c index dce4e919..2a435634 100644 --- a/keyboard/onekey/keymap.c +++ b/keyboard/onekey/keymap.c @@ -16,7 +16,6 @@ along with this program. If not, see . */ #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" @@ -34,33 +33,5 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { }; - - - -#define KEYMAPS_SIZE (sizeof(keymaps) / sizeof(keymaps[0])) -#define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - if (layer < KEYMAPS_SIZE) { - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); - } else { - // fall back to layer 0 - return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]); - } -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - action_t action; - if (FN_INDEX(keycode) < FN_ACTIONS_SIZE) { - action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]); - } else { - action.code = ACTION_NO; - } - return action; -} diff --git a/keyboard/stm32_f072_onekey/keymap_plain.c b/keyboard/stm32_f072_onekey/keymap_plain.c index 8de1c027..88c56baa 100644 --- a/keyboard/stm32_f072_onekey/keymap_plain.c +++ b/keyboard/stm32_f072_onekey/keymap_plain.c @@ -18,6 +18,7 @@ along with this program. If not, see . #include "keycode.h" #include "action.h" #include "action_macro.h" +#include "action_code.h" #include "report.h" #include "host.h" #include "print.h" @@ -28,7 +29,7 @@ static const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {{KC_CAPS}}, // test with KC_CAPS, KC_A, KC_BTLD }; -static const uint16_t fn_actions[] = { +static const action_t fn_actions[] = { }; /* translates key to keycode */ @@ -40,5 +41,5 @@ uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) /* translates Fn keycode to action */ action_t keymap_fn_to_action(uint8_t keycode) { - return (action_t){ .code = fn_actions[FN_INDEX(keycode)] }; + return (action_t)fn_actions[FN_INDEX(keycode)]; } diff --git a/keyboard/stm32_f103_onekey/keymap_plain.c b/keyboard/stm32_f103_onekey/keymap_plain.c index 8de1c027..5aee2b7f 100644 --- a/keyboard/stm32_f103_onekey/keymap_plain.c +++ b/keyboard/stm32_f103_onekey/keymap_plain.c @@ -28,7 +28,7 @@ static const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {{KC_CAPS}}, // test with KC_CAPS, KC_A, KC_BTLD }; -static const uint16_t fn_actions[] = { +static const action_t fn_actions[] = { }; /* translates key to keycode */ @@ -40,5 +40,5 @@ uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) /* translates Fn keycode to action */ action_t keymap_fn_to_action(uint8_t keycode) { - return (action_t){ .code = fn_actions[FN_INDEX(keycode)] }; + return fn_actions[FN_INDEX(keycode)]; } diff --git a/keyboard/teensy_lc_onekey/keymap_plain.c b/keyboard/teensy_lc_onekey/keymap_plain.c index 922fa537..16b05a75 100644 --- a/keyboard/teensy_lc_onekey/keymap_plain.c +++ b/keyboard/teensy_lc_onekey/keymap_plain.c @@ -28,7 +28,7 @@ static const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {{KC_A}}, }; // to test: KC_CAPS, KT_BTLD, KC_A -static const uint16_t fn_actions[] = { +static const action_t fn_actions[] = { }; /* translates key to keycode */ @@ -40,5 +40,5 @@ uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) /* translates Fn keycode to action */ action_t keymap_fn_to_action(uint8_t keycode) { - return (action_t){ .code = fn_actions[FN_INDEX(keycode)] }; + return fn_actions[FN_INDEX(keycode)]; } diff --git a/orphan/ghost_squid/keymap_ansi.h b/orphan/ghost_squid/keymap_ansi.h index ed1088ba..e659d060 100644 --- a/orphan/ghost_squid/keymap_ansi.h +++ b/orphan/ghost_squid/keymap_ansi.h @@ -18,6 +18,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_COLS][MATRIX_ROWS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1) }; diff --git a/orphan/hid_liber/keymap_alaricljs.h b/orphan/hid_liber/keymap_alaricljs.h index 8903fc68..3d10913f 100644 --- a/orphan/hid_liber/keymap_alaricljs.h +++ b/orphan/hid_liber/keymap_alaricljs.h @@ -56,6 +56,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_MOMENTARY(1), // activate layer 1 when FN1 pressed }; diff --git a/orphan/hid_liber/keymap_ansi.h b/orphan/hid_liber/keymap_ansi.h index 8ce85a49..1e67ed21 100644 --- a/orphan/hid_liber/keymap_ansi.h +++ b/orphan/hid_liber/keymap_ansi.h @@ -29,4 +29,4 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -static const uint16_t PROGMEM fn_actions[] = {}; +static const action_t PROGMEM fn_actions[] = {}; diff --git a/orphan/hid_liber/keymap_custom.h b/orphan/hid_liber/keymap_custom.h index 03e1a1bf..db1d5c7b 100644 --- a/orphan/hid_liber/keymap_custom.h +++ b/orphan/hid_liber/keymap_custom.h @@ -59,6 +59,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_MOMENTARY(1), // activate layer 1 when FN1 pressed }; diff --git a/orphan/hid_liber/keymap_iso.h b/orphan/hid_liber/keymap_iso.h index c1845367..a3df0038 100644 --- a/orphan/hid_liber/keymap_iso.h +++ b/orphan/hid_liber/keymap_iso.h @@ -29,4 +29,4 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -static const uint16_t PROGMEM fn_actions[] = {}; +static const action_t PROGMEM fn_actions[] = {}; diff --git a/orphan/kitten_paw/keymap_ansi.h b/orphan/kitten_paw/keymap_ansi.h index ed1088ba..e659d060 100644 --- a/orphan/kitten_paw/keymap_ansi.h +++ b/orphan/kitten_paw/keymap_ansi.h @@ -18,6 +18,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_COLS][MATRIX_ROWS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1) }; diff --git a/orphan/kmac/keymap_winkey.h b/orphan/kmac/keymap_winkey.h index 3379789e..7ae1e881 100644 --- a/orphan/kmac/keymap_winkey.h +++ b/orphan/kmac/keymap_winkey.h @@ -17,7 +17,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, CAPS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_BACKLIGHT_STEP() }; diff --git a/orphan/kmac/keymap_winkeyless.h b/orphan/kmac/keymap_winkeyless.h index 939ee379..b6244c42 100644 --- a/orphan/kmac/keymap_winkeyless.h +++ b/orphan/kmac/keymap_winkeyless.h @@ -17,7 +17,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, CAPS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_BACKLIGHT_STEP() }; diff --git a/orphan/lightpad/keymap_lightpad.h b/orphan/lightpad/keymap_lightpad.h index 9333964e..febdc6c7 100644 --- a/orphan/lightpad/keymap_lightpad.h +++ b/orphan/lightpad/keymap_lightpad.h @@ -17,7 +17,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { FN7, NO, MSTP) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_FN1), [2] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_FN2), diff --git a/orphan/lightsaber/keymap_winkey.h b/orphan/lightsaber/keymap_winkey.h index 3e836708..99ceaa6f 100644 --- a/orphan/lightsaber/keymap_winkey.h +++ b/orphan/lightsaber/keymap_winkey.h @@ -17,7 +17,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS, TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_BACKLIGHT_TOGGLE(), [2] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_ALPHA), diff --git a/orphan/nerd/keymap_60_ansi150.c b/orphan/nerd/keymap_60_ansi150.c index f85836ab..e974625b 100644 --- a/orphan/nerd/keymap_60_ansi150.c +++ b/orphan/nerd/keymap_60_ansi150.c @@ -22,7 +22,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LEFT,DOWN,RGHT, TRNS, TRNS,TRNS,TRNS) }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(2), [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), [2] = ACTION_LAYER_TOGGLE(1), diff --git a/orphan/nerd/keymap_80_ansi150.c b/orphan/nerd/keymap_80_ansi150.c index 72a7d83c..79eb52b1 100644 --- a/orphan/nerd/keymap_80_ansi150.c +++ b/orphan/nerd/keymap_80_ansi150.c @@ -25,7 +25,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS), }; -const uint16_t PROGMEM fn_actions[] = { +const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(2), [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), [2] = ACTION_LAYER_TOGGLE(1), diff --git a/orphan/nerd/keymap_common.h b/orphan/nerd/keymap_common.h index e1166359..d342e4ba 100644 --- a/orphan/nerd/keymap_common.h +++ b/orphan/nerd/keymap_common.h @@ -30,7 +30,7 @@ along with this program. If not, see . #include "keymap.h" extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; +extern const action_t fn_actions[]; #define KEYMAP( \ K08, K09, K18, K19, K28, K29, K38, K39, K48, K49, K58, K59, K68, K69, K88, K89, \ diff --git a/orphan/phantom/keymap_7bit.h b/orphan/phantom/keymap_7bit.h index e6c4eabb..8ab81a14 100644 --- a/orphan/phantom/keymap_7bit.h +++ b/orphan/phantom/keymap_7bit.h @@ -35,7 +35,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1), [1] = ACTION_MODS_KEY(MOD_LSFT, KC_9), [2] = ACTION_MODS_KEY(MOD_LSFT, KC_0) diff --git a/orphan/phantom/keymap_ansi.h b/orphan/phantom/keymap_ansi.h index 96a4c9df..a39b0125 100644 --- a/orphan/phantom/keymap_ansi.h +++ b/orphan/phantom/keymap_ansi.h @@ -17,6 +17,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, CAPS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1) }; diff --git a/orphan/phantom/keymap_ansi_150.h b/orphan/phantom/keymap_ansi_150.h index 7fdb9eb1..7f18f95d 100644 --- a/orphan/phantom/keymap_ansi_150.h +++ b/orphan/phantom/keymap_ansi_150.h @@ -17,6 +17,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, CAPS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1) }; diff --git a/orphan/phantom/keymap_iso.h b/orphan/phantom/keymap_iso.h index 970f622e..80e50731 100644 --- a/orphan/phantom/keymap_iso.h +++ b/orphan/phantom/keymap_iso.h @@ -17,6 +17,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, CAPS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1) }; diff --git a/orphan/phantom/keymap_iso_150.h b/orphan/phantom/keymap_iso_150.h index ab9acda1..cf9ea787 100644 --- a/orphan/phantom/keymap_iso_150.h +++ b/orphan/phantom/keymap_iso_150.h @@ -17,6 +17,6 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,TRNS,CALC,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, CAPS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS) }; -static const uint16_t PROGMEM fn_actions[] = { +static const action_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(1) }; diff --git a/orphan/serialmouse_usb/keymap_common.h b/orphan/serialmouse_usb/keymap_common.h index 216a8dc0..59619097 100644 --- a/orphan/serialmouse_usb/keymap_common.h +++ b/orphan/serialmouse_usb/keymap_common.h @@ -31,7 +31,7 @@ along with this program. If not, see . // 32*8(256) byte array which converts PS/2 code into USB code extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; +extern const action_t fn_actions[]; /* All keys */ diff --git a/orphan/terminal_bluefruit/keymap.c b/orphan/terminal_bluefruit/keymap.c index 8acd8cfb..cb5e0cca 100644 --- a/orphan/terminal_bluefruit/keymap.c +++ b/orphan/terminal_bluefruit/keymap.c @@ -177,7 +177,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -static const uint16_t fn_actions[] PROGMEM = { +static const action_t fn_actions[] PROGMEM = { [0] = ACTION_DEFAULT_LAYER_SET(0), [1] = ACTION_LAYER_MOMENTARY(1), [2] = ACTION_LAYER_MOMENTARY(2), //ACTION_LAYER_ON(2, ON_RELEASE), diff --git a/tmk_core/README.md b/tmk_core/README.md index f460d0ed..c9c2eda4 100644 --- a/tmk_core/README.md +++ b/tmk_core/README.md @@ -7,6 +7,9 @@ Source code is available here: Updates ------- +#### 2016/06/26 +Keymap framework was updated. `fn_actions[]` should be defined as `action_t` instead of `uint16_t`. And default code for keymap handling is now included in core you just need define `uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]` and `action_t fn_actions[]`. + #### 2016/02/10 flabbergast's Chibios protocol was merged from . See [protocol/chibios/README.md](protocol/chibios/README.md). Chibios protocol supports Cortex-M such as STM32 and Kinetis. diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 9cfe6d5a..d91e6d6d 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -17,65 +17,70 @@ SRC += $(COMMON_DIR)/host.c \ # Option modules -ifdef ACTIONMAP_ENABLE - SRC += $(COMMON_DIR)/actionmap.c - OPT_DEFS += -DACTIONMAP_ENABLE +ifeq (yes,$(strip $(UNIMAP_ENABLE))) + SRC += $(COMMON_DIR)/unimap.c + OPT_DEFS += -DUNIMAP_ENABLE else - SRC += $(COMMON_DIR)/keymap.c + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) + SRC += $(COMMON_DIR)/actionmap.c + OPT_DEFS += -DACTIONMAP_ENABLE + else + SRC += $(COMMON_DIR)/keymap.c + endif endif -ifdef BOOTMAGIC_ENABLE +ifeq (yes,$(strip $(BOOTMAGIC_ENABLE))) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE endif -ifdef MOUSEKEY_ENABLE +ifeq (yes,$(strip $(MOUSEKEY_ENABLE))) SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE OPT_DEFS += -DMOUSE_ENABLE endif -ifdef EXTRAKEY_ENABLE +ifeq (yes,$(strip $(EXTRAKEY_ENABLE))) OPT_DEFS += -DEXTRAKEY_ENABLE endif -ifdef CONSOLE_ENABLE +ifeq (yes,$(strip $(CONSOLE_ENABLE))) OPT_DEFS += -DCONSOLE_ENABLE else OPT_DEFS += -DNO_PRINT OPT_DEFS += -DNO_DEBUG endif -ifdef COMMAND_ENABLE +ifeq (yes,$(strip $(COMMAND_ENABLE))) SRC += $(COMMON_DIR)/command.c OPT_DEFS += -DCOMMAND_ENABLE endif -ifdef NKRO_ENABLE +ifeq (yes,$(strip $(NKRO_ENABLE))) OPT_DEFS += -DNKRO_ENABLE endif -ifdef USB_6KRO_ENABLE +ifeq (yes,$(strip $(USB_6KRO_ENABLE))) OPT_DEFS += -DUSB_6KRO_ENABLE endif -ifdef KEYBOARD_LOCK_ENABLE +ifeq (yes, $(strip $(KEYBOARD_LOCK_ENABLE))) OPT_DEFS += -DKEYBOARD_LOCK_ENABLE endif -ifdef SLEEP_LED_ENABLE +ifeq (yes,$(strip $(SLEEP_LED_ENABLE))) SRC += $(COMMON_DIR)/avr/sleep_led.c OPT_DEFS += -DSLEEP_LED_ENABLE OPT_DEFS += -DNO_SUSPEND_POWER_DOWN endif -ifdef BACKLIGHT_ENABLE +ifeq (yes,$(strip $(BACKLIGHT_ENABLE))) SRC += $(COMMON_DIR)/backlight.c OPT_DEFS += -DBACKLIGHT_ENABLE endif -ifdef KEYMAP_SECTION_ENABLE +ifeq (yes,$(strip $(KEYMAP_SECTION_ENABLE))) OPT_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index b39c6441..8dad38b9 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -181,9 +181,9 @@ typedef union { /* action utility */ -#define ACTION_NO 0 -#define ACTION_TRANSPARENT 1 -#define ACTION(kind, param) ((kind)<<12 | (param)) +#define ACTION_NO { .code = 0 } +#define ACTION_TRANSPARENT { .code = 1 } +#define ACTION(kind, param) { .code = ((kind)<<12 | (param)) } /* diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index 95909cc2..6b5a7fd2 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c @@ -117,7 +117,7 @@ void layer_debug(void) action_t layer_switch_get_action(keypos_t key) { - action_t action = { .code = ACTION_TRANSPARENT }; + action_t action = ACTION_TRANSPARENT; #ifndef NO_ACTION_LAYER uint32_t layers = layer_state | default_layer_state; @@ -125,7 +125,7 @@ action_t layer_switch_get_action(keypos_t key) for (int8_t i = 31; i >= 0; i--) { if (layers & (1UL<. #include "action_code.h" #include "actionmap.h" + +/* Keymapping with 16bit action codes */ +extern const action_t actionmaps[][MATRIX_ROWS][MATRIX_COLS]; + + /* Converts key to action */ __attribute__ ((weak)) action_t action_for_key(uint8_t layer, keypos_t key) diff --git a/tmk_core/common/actionmap.h b/tmk_core/common/actionmap.h index cbbcfe93..5e00bb2e 100644 --- a/tmk_core/common/actionmap.h +++ b/tmk_core/common/actionmap.h @@ -24,10 +24,6 @@ along with this program. If not, see . #include "action.h" -/* Keymapping with 16bit action codes */ -extern const uint16_t actionmaps[][MATRIX_ROWS][MATRIX_COLS]; - - /* Modified key */ #define AC_c(kc) ACTION_MODS_KEY(MOD_LCTL, KC_##kc) #define AC_s(kc) ACTION_MODS_KEY(MOD_LSFT, KC_##kc) diff --git a/tmk_core/common/keymap.c b/tmk_core/common/keymap.c index 25161748..01c6e642 100644 --- a/tmk_core/common/keymap.c +++ b/tmk_core/common/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2013 Jun Wako +Copyright 2013,2016 Jun Wako 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 @@ -23,6 +23,9 @@ along with this program. If not, see . #include "wait.h" #include "debug.h" #include "bootloader.h" +#if defined(__AVR__) +#include +#endif #ifdef BOOTMAGIC_ENABLE extern keymap_config_t keymap_config; @@ -32,6 +35,7 @@ static action_t keycode_to_action(uint8_t keycode); /* converts key to action */ +__attribute__ ((weak)) action_t action_for_key(uint8_t layer, keypos_t key) { uint8_t keycode = keymap_key_to_keycode(layer, key); @@ -53,7 +57,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) case KC_LALT: if (keymap_config.swap_lalt_lgui) { if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); + return keycode_to_action(KC_NO); } return keycode_to_action(KC_LGUI); } @@ -63,13 +67,13 @@ action_t action_for_key(uint8_t layer, keypos_t key) return keycode_to_action(KC_LALT); } if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); + return keycode_to_action(KC_NO); } return keycode_to_action(KC_LGUI); case KC_RALT: if (keymap_config.swap_ralt_rgui) { if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); + return keycode_to_action(KC_NO); } return keycode_to_action(KC_RGUI); } @@ -79,7 +83,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) return keycode_to_action(KC_RALT); } if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); + return keycode_to_action(KC_NO); } return keycode_to_action(KC_RGUI); case KC_GRAVE: @@ -133,23 +137,22 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) /* translates keycode to action */ static action_t keycode_to_action(uint8_t keycode) { - action_t action = {}; switch (keycode) { case KC_A ... KC_EXSEL: case KC_LCTRL ... KC_RGUI: - action.code = ACTION_KEY(keycode); + return (action_t)ACTION_KEY(keycode); break; case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: - action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); + return (action_t)ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); break; case KC_AUDIO_MUTE ... KC_WWW_FAVORITES: - action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode)); + return (action_t)ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode)); break; case KC_MS_UP ... KC_MS_ACCEL2: - action.code = ACTION_MOUSEKEY(keycode); + return (action_t)ACTION_MOUSEKEY(keycode); break; case KC_TRNS: - action.code = ACTION_TRANSPARENT; + return (action_t)ACTION_TRANSPARENT; break; case KC_BOOTLOADER: clear_keyboard(); @@ -157,10 +160,10 @@ static action_t keycode_to_action(uint8_t keycode) bootloader_jump(); // not return break; default: - action.code = ACTION_NO; + return (action_t)ACTION_NO; break; } - return action; + return (action_t)ACTION_NO; } @@ -170,6 +173,28 @@ static action_t keycode_to_action(uint8_t keycode) * Legacy keymap support * Consider using new keymap API instead. */ +extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +extern const uint8_t fn_layer[]; +extern const uint8_t fn_keycode[]; + +__attribute__ ((weak)) +uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) +{ + return pgm_read_byte(&keymaps[(layer)][(row)][(col)]); +} + +__attribute__ ((weak)) +uint8_t keymap_fn_layer(uint8_t index) +{ + return pgm_read_byte(&fn_layer[index]); +} + +__attribute__ ((weak)) +uint8_t keymap_fn_keycode(uint8_t index) +{ + return pgm_read_byte(&fn_keycode[index]); +} + __attribute__ ((weak)) uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { @@ -181,21 +206,47 @@ uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) __attribute__ ((weak)) action_t keymap_fn_to_action(uint8_t keycode) { - action_t action = { .code = ACTION_NO }; switch (keycode) { case KC_FN0 ... KC_FN31: { uint8_t layer = keymap_fn_layer(FN_INDEX(keycode)); uint8_t key = keymap_fn_keycode(FN_INDEX(keycode)); if (key) { - action.code = ACTION_LAYER_TAP_KEY(layer, key); + return (action_t)ACTION_LAYER_TAP_KEY(layer, key); } else { - action.code = ACTION_LAYER_MOMENTARY(layer); + return (action_t)ACTION_LAYER_MOMENTARY(layer); } } - return action; + return (action_t)ACTION_NO; default: - return action; + return (action_t)ACTION_NO; } } + +#else + +/* user keymaps should be defined somewhere */ +extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +extern const action_t fn_actions[]; + +__attribute__ ((weak)) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) +{ +#if defined(__AVR__) + return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); +#else + return keymaps[(layer)][(key.row)][(key.col)]; +#endif +} + +__attribute__ ((weak)) +action_t keymap_fn_to_action(uint8_t keycode) +{ +#if defined(__AVR__) + return (action_t)pgm_read_word(&fn_actions[FN_INDEX(keycode)]); +#else + return fn_actions[FN_INDEX(keycode)]; +#endif +} + #endif diff --git a/tmk_core/common/unimap.c b/tmk_core/common/unimap.c new file mode 100644 index 00000000..84109b5a --- /dev/null +++ b/tmk_core/common/unimap.c @@ -0,0 +1,59 @@ +#include "keyboard.h" +#include "action.h" +#include "unimap.h" +#include "print.h" +#if defined(__AVR__) +# include +#endif + + +/* Keymapping with 16bit action codes */ +extern const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS]; + +// table translates matrix to universal keymap +extern const uint8_t unimap_trans[MATRIX_ROWS][MATRIX_COLS]; + + + +// translates raw matrix to universal map +keypos_t unimap_translate(keypos_t key) +{ + uint8_t unimap_pos = +#if defined(__AVR__) + pgm_read_byte(&unimap_trans[key.row][key.col]); +#else + unimap_trans[key.row][key.col]; +#endif + return (keypos_t) { + .row = ((unimap_pos & 0xf0) >> 4), + .col = (unimap_pos & 0x0f) + }; +} + +/* Converts key to action */ +__attribute__ ((weak)) +action_t action_for_key(uint8_t layer, keypos_t key) +{ + keypos_t uni = unimap_translate(key); + if ((uni.row << 4 | uni.col) == UNIMAP_NO) { + return (action_t)ACTION_NO; + } +#if defined(__AVR__) + return (action_t)pgm_read_word(&actionmaps[(layer)][(uni.row & 0x7)][(uni.col)]); +#else + return actionmaps[(layer)][(uni.row & 0x7)][(uni.col)]; +#endif +} + +/* Macro */ +__attribute__ ((weak)) +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +} + +/* Function */ +__attribute__ ((weak)) +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +} diff --git a/tmk_core/common/unimap.h b/tmk_core/common/unimap.h new file mode 100644 index 00000000..2dd5b221 --- /dev/null +++ b/tmk_core/common/unimap.h @@ -0,0 +1,272 @@ +/* +Copyright 2016 Jun Wako +*/ +#ifndef _UNIMAP_H_ +#define _UNIMAP_H_ + +#include +#include +#include "action.h" +#include "action_code.h" +#include "actionmap.h" + + +// Universal map table: 8x16=128key +#define UNIMAP_ROWS 8 +#define UNIMAP_COLS 16 + +/* Universal 128-key keyboard layout(8x16) + ,-----------------------------------------------. + |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| +,---. |-----------------------------------------------| ,-----------. ,-----------. +|Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut| +`---' `-----------------------------------------------' `-----------' `-----------' +,-----------------------------------------------------------. ,-----------. ,---------------. +| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| +|-----------------------------------------------------------| |-----------| |---------------| +|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| +|-----------------------------------------------------------| `-----------' |---------------| +|CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Entr| | 4| 5| 6|KP,| +|-----------------------------------------------------------| ,---. |---------------| +|Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|KP=| +|-----------------------------------------------------------| ,-----------. |---------------| +|Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| +`-----------------------------------------------------------' `-----------' `---------------' +App: Windows Menu key +Gui: Windows key, Mac ⌘ key or Meta key +VDn Vup Mut: Volume control +< #: ISO keys(in UK legend) +KP=: Keypad = for Mac +KP,: Brazilian Keypad Comma +JPY: Japanese Yen(¥) +RO: Japanese ろ(Ro) or Brazilian /(Slash) +MHEN: Japanese 無変換(Non Conversion) or Korean Hanja +HENK: Japanese 変換(Conversion) or Korean Hangul/English +KANA: Japanese かな(Hiragana/Katakana) +https://en.wikipedia.org/wiki/Keyboard_layout#Japanese +https://en.wikipedia.org/wiki/Keyboard_layout#Hangul_.28for_Korean.29 +*/ +#define UNIMAP( \ + K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73, \ + K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, K01,K02,K03, \ + K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A, K49,K4A,K4B, K53,K54,K55,K56, \ + K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, K4C,K4D,K4E, K5F,K60,K61,K57, \ + K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K32,K28, K5C,K5D,K5E,K66, \ + K79,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K75,K7D, K52, K59,K5A,K5B,K67, \ + K78,K7B,K7A,K77, K2C, K76,K00,K7E,K7F,K65,K7C, K50,K51,K4F, K62, K63,K58 \ +) { \ + { AC_##K00, AC_##K01, AC_##K02, AC_##K03, AC_##K04, AC_##K05, AC_##K06, AC_##K07, /* 00-07 */ \ + AC_##K08, AC_##K09, AC_##K0A, AC_##K0B, AC_##K0C, AC_##K0D, AC_##K0E, AC_##K0F }, /* 08-0F */ \ + { AC_##K10, AC_##K11, AC_##K12, AC_##K13, AC_##K14, AC_##K15, AC_##K16, AC_##K17, /* 10-17 */ \ + AC_##K18, AC_##K19, AC_##K1A, AC_##K1B, AC_##K1C, AC_##K1D, AC_##K1E, AC_##K1F }, /* 18-1F */ \ + { AC_##K20, AC_##K21, AC_##K22, AC_##K23, AC_##K24, AC_##K25, AC_##K26, AC_##K27, /* 20-27 */ \ + AC_##K28, AC_##K29, AC_##K2A, AC_##K2B, AC_##K2C, AC_##K2D, AC_##K2E, AC_##K2F }, /* 28-2F */ \ + { AC_##K30, AC_##K31, AC_##K32, AC_##K33, AC_##K34, AC_##K35, AC_##K36, AC_##K37, /* 30-37 */ \ + AC_##K38, AC_##K39, AC_##K3A, AC_##K3B, AC_##K3C, AC_##K3D, AC_##K3E, AC_##K3F }, /* 38-3F */ \ + { AC_##K40, AC_##K41, AC_##K42, AC_##K43, AC_##K44, AC_##K45, AC_##K46, AC_##K47, /* 40-47 */ \ + AC_##K48, AC_##K49, AC_##K4A, AC_##K4B, AC_##K4C, AC_##K4D, AC_##K4E, AC_##K4F }, /* 48-4F */ \ + { AC_##K50, AC_##K51, AC_##K52, AC_##K53, AC_##K54, AC_##K55, AC_##K56, AC_##K57, /* 50-57 */ \ + AC_##K58, AC_##K59, AC_##K5A, AC_##K5B, AC_##K5C, AC_##K5D, AC_##K5E, AC_##K5F }, /* 58-5F */ \ + { AC_##K60, AC_##K61, AC_##K62, AC_##K63, AC_##K64, AC_##K65, AC_##K66, AC_##K67, /* 60-67 */ \ + AC_##K68, AC_##K69, AC_##K6A, AC_##K6B, AC_##K6C, AC_##K6D, AC_##K6E, AC_##K6F }, /* 68-6F */ \ + { AC_##K70, AC_##K71, AC_##K72, AC_##K73, AC_##K74, AC_##K75, AC_##K76, AC_##K77, /* 70-77 */ \ + AC_##K78, AC_##K79, AC_##K7A, AC_##K7B, AC_##K7C, AC_##K7D, AC_##K7E, AC_##K7F } /* 78-7F */ \ +} + +// Universal map position codes +enum unimap_position_codes { +// logical name position(row << 4 | col) +// ------------------------------------------------ + UNIMAP_KANA, // 0x00 + UNIMAP_VOLUME_DOWN, // 0x01 + UNIMAP_VOLUME_UP, // 0x02 + UNIMAP_VOLUME_MUTE, // 0x03 + UNIMAP_A, // 0x04 + UNIMAP_B, // 0x05 + UNIMAP_C, // 0x06 + UNIMAP_D, // 0x07 + UNIMAP_E, // 0x08 + UNIMAP_F, // 0x09 + UNIMAP_G, // 0x0A + UNIMAP_H, // 0x0B + UNIMAP_I, // 0x0C + UNIMAP_J, // 0x0D + UNIMAP_K, // 0x0E + UNIMAP_L, // 0x0F + UNIMAP_M, // 0x10 + UNIMAP_N, // 0x11 + UNIMAP_O, // 0x12 + UNIMAP_P, // 0x13 + UNIMAP_Q, // 0x14 + UNIMAP_R, // 0x15 + UNIMAP_S, // 0x16 + UNIMAP_T, // 0x17 + UNIMAP_U, // 0x18 + UNIMAP_V, // 0x19 + UNIMAP_W, // 0x1A + UNIMAP_X, // 0x1B + UNIMAP_Y, // 0x1C + UNIMAP_Z, // 0x1D + UNIMAP_1, // 0x1E + UNIMAP_2, // 0x1F + UNIMAP_3, // 0x20 + UNIMAP_4, // 0x21 + UNIMAP_5, // 0x22 + UNIMAP_6, // 0x23 + UNIMAP_7, // 0x24 + UNIMAP_8, // 0x25 + UNIMAP_9, // 0x26 + UNIMAP_0, // 0x27 + UNIMAP_ENTER, // 0x28 + UNIMAP_ESCAPE, // 0x29 + UNIMAP_BSPACE, // 0x2A + UNIMAP_TAB, // 0x2B + UNIMAP_SPACE, // 0x2C + UNIMAP_MINUS, // 0x2D + UNIMAP_EQUAL, // 0x2E + UNIMAP_LBRACKET, // 0x2F + UNIMAP_RBRACKET, // 0x30 + UNIMAP_BSLASH, // 0x31 + UNIMAP_NONUS_HASH, // 0x32 ISO UK hasu + UNIMAP_SCOLON, // 0x33 + UNIMAP_QUOTE, // 0x34 + UNIMAP_GRAVE, // 0x35 + UNIMAP_COMMA, // 0x36 + UNIMAP_DOT, // 0x37 + UNIMAP_SLASH, // 0x38 + UNIMAP_CAPSLOCK, // 0x39 + UNIMAP_F1, // 0x3A + UNIMAP_F2, // 0x3B + UNIMAP_F3, // 0x3C + UNIMAP_F4, // 0x3D + UNIMAP_F5, // 0x3E + UNIMAP_F6, // 0x3F + UNIMAP_F7, // 0x40 + UNIMAP_F8, // 0x41 + UNIMAP_F9, // 0x42 + UNIMAP_F10, // 0x43 + UNIMAP_F11, // 0x44 + UNIMAP_F12, // 0x45 + UNIMAP_PSCREEN, // 0x46 + UNIMAP_SCROLLLOCK, // 0x47 + UNIMAP_PAUSE, // 0x48 + UNIMAP_INSERT, // 0x49 + UNIMAP_HOME, // 0x4A + UNIMAP_PGUP, // 0x4B + UNIMAP_DELETE, // 0x4C + UNIMAP_END, // 0x4D + UNIMAP_PGDOWN, // 0x4E + UNIMAP_RIGHT, // 0x4F + UNIMAP_LEFT, // 0x50 + UNIMAP_DOWN, // 0x51 + UNIMAP_UP, // 0x52 + UNIMAP_NUMLOCK, // 0x53 + UNIMAP_KP_SLASH, // 0x54 + UNIMAP_KP_ASTERISK, // 0x55 + UNIMAP_KP_MINUS, // 0x56 + UNIMAP_KP_PLUS, // 0x57 + UNIMAP_KP_ENTER, // 0x58 + UNIMAP_KP_1, // 0x59 + UNIMAP_KP_2, // 0x5A + UNIMAP_KP_3, // 0x5B + UNIMAP_KP_4, // 0x5C + UNIMAP_KP_5, // 0x5D + UNIMAP_KP_6, // 0x5E + UNIMAP_KP_7, // 0x5F + UNIMAP_KP_8, // 0x60 + UNIMAP_KP_9, // 0x61 + UNIMAP_KP_0, // 0x62 + UNIMAP_KP_DOT, // 0x63 + UNIMAP_NONUS_BSLASH, // 0x64 ISO UK backslash + UNIMAP_APPLICATION, // 0x65 + UNIMAP_KP_COMMA, // 0x66 + UNIMAP_KP_EQUAL, // 0x67 + UNIMAP_F13, // 0x68 + UNIMAP_F14, // 0x69 + UNIMAP_F15, // 0x6A + UNIMAP_F16, // 0x6B + UNIMAP_F17, // 0x6C + UNIMAP_F18, // 0x6D + UNIMAP_F19, // 0x6E + UNIMAP_F20, // 0x6F + UNIMAP_F21, // 0x70 + UNIMAP_F22, // 0x71 + UNIMAP_F23, // 0x72 + UNIMAP_F24, // 0x73 + UNIMAP_JYEN, // 0x74 + UNIMAP_RO, // 0x75 + UNIMAP_HENK, // 0x76 + UNIMAP_MHEN, // 0x77 + UNIMAP_LCTRL, // 0x78 + UNIMAP_LSHIFT, // 0x79 + UNIMAP_LALT, // 0x7A + UNIMAP_LGUI, // 0x7B + UNIMAP_RCTRL, // 0x7C + UNIMAP_RSHIFT, // 0x7D + UNIMAP_RALT, // 0x7E + UNIMAP_RGUI, // 0x7F + UNIMAP_NO, // 0x80 +}; + +/* + * Short names + */ +#define UNIMAP_LCTL UNIMAP_LCTRL +#define UNIMAP_RCTL UNIMAP_RCTRL +#define UNIMAP_LSFT UNIMAP_LSHIFT +#define UNIMAP_RSFT UNIMAP_RSHIFT +#define UNIMAP_ESC UNIMAP_ESCAPE +#define UNIMAP_BSPC UNIMAP_BSPACE +#define UNIMAP_ENT UNIMAP_ENTER +#define UNIMAP_DEL UNIMAP_DELETE +#define UNIMAP_INS UNIMAP_INSERT +#define UNIMAP_CAPS UNIMAP_CAPSLOCK +#define UNIMAP_CLCK UNIMAP_CAPSLOCK +#define UNIMAP_RGHT UNIMAP_RIGHT +#define UNIMAP_PGDN UNIMAP_PGDOWN +#define UNIMAP_PSCR UNIMAP_PSCREEN +#define UNIMAP_SLCK UNIMAP_SCROLLLOCK +#define UNIMAP_PAUS UNIMAP_PAUSE +#define UNIMAP_BRK UNIMAP_PAUSE +#define UNIMAP_NLCK UNIMAP_NUMLOCK +#define UNIMAP_SPC UNIMAP_SPACE +#define UNIMAP_MINS UNIMAP_MINUS +#define UNIMAP_EQL UNIMAP_EQUAL +#define UNIMAP_GRV UNIMAP_GRAVE +#define UNIMAP_RBRC UNIMAP_RBRACKET +#define UNIMAP_LBRC UNIMAP_LBRACKET +#define UNIMAP_COMM UNIMAP_COMMA +#define UNIMAP_BSLS UNIMAP_BSLASH +#define UNIMAP_SLSH UNIMAP_SLASH +#define UNIMAP_SCLN UNIMAP_SCOLON +#define UNIMAP_QUOT UNIMAP_QUOTE +#define UNIMAP_APP UNIMAP_APPLICATION +#define UNIMAP_NUHS UNIMAP_NONUS_HASH +#define UNIMAP_NUBS UNIMAP_NONUS_BSLASH +/* Japanese specific */ +#define UNIMAP_ZKHK UNIMAP_GRAVE +/* Keypad */ +#define UNIMAP_P1 UNIMAP_KP_1 +#define UNIMAP_P2 UNIMAP_KP_2 +#define UNIMAP_P3 UNIMAP_KP_3 +#define UNIMAP_P4 UNIMAP_KP_4 +#define UNIMAP_P5 UNIMAP_KP_5 +#define UNIMAP_P6 UNIMAP_KP_6 +#define UNIMAP_P7 UNIMAP_KP_7 +#define UNIMAP_P8 UNIMAP_KP_8 +#define UNIMAP_P9 UNIMAP_KP_9 +#define UNIMAP_P0 UNIMAP_KP_0 +#define UNIMAP_PDOT UNIMAP_KP_DOT +#define UNIMAP_PCMM UNIMAP_KP_COMMA +#define UNIMAP_PSLS UNIMAP_KP_SLASH +#define UNIMAP_PAST UNIMAP_KP_ASTERISK +#define UNIMAP_PMNS UNIMAP_KP_MINUS +#define UNIMAP_PPLS UNIMAP_KP_PLUS +#define UNIMAP_PEQL UNIMAP_KP_EQUAL +#define UNIMAP_PENT UNIMAP_KP_ENTER +/* Consumer Page */ +#define UNIMAP_MUTE UNIMAP_VOLUME_MUTE +#define UNIMAP_VOLU UNIMAP_VOLUME_UP +#define UNIMAP_VOLD UNIMAP_VOLUME_DOWN + +#endif diff --git a/tmk_core/doc/keycode.txt b/tmk_core/doc/keycode.txt index 44d7e27c..1712929c 100644 --- a/tmk_core/doc/keycode.txt +++ b/tmk_core/doc/keycode.txt @@ -1,7 +1,7 @@ Keycode Symbol Table ==================== Keycodes are defined in `common/keycode.h`. -Range of 00-A4 and E0-E7 are identical with HID Usage: +Range of 00-A4 and E0-E7 are identical with HID Usage of Keyboard/Keypad Page(0x07): Virtual keycodes are defined out of above range to support special actions. @@ -186,30 +186,35 @@ KC_RGUI E7 Keyboard Right GUI(Windows/Apple/Meta key /* * Virtual keycodes */ -/* System Control */ +/* Generic Desktop Page(0x01) - System Control */ KC_SYSTEM_POWER KC_PWR System Power Down KC_SYSTEM_SLEEP KC_SLEP System Sleep KC_SYSTEM_WAKE KC_WAKE System Wake -/* Consumer Page */ -KC_AUDIO_MUTE KC_MUTE -KC_AUDIO_VOL_UP KC_VOLU -KC_AUDIO_VOL_DOWN KC_VOLD -KC_MEDIA_NEXT_TRACK KC_MNXT -KC_MEDIA_PREV_TRACK KC_MPRV -KC_MEDIA_STOP KC_MSTP -KC_MEDIA_PLAY_PAUSE KC_MPLY -KC_MEDIA_SELECT KC_MSEL -KC_MAIL KC_MAIL -KC_CALCULATOR KC_CALC -KC_MY_COMPUTER KC_MYCM -KC_WWW_SEARCH KC_WSCH -KC_WWW_HOME KC_WHOM -KC_WWW_BACK KC_WBAK -KC_WWW_FORWARD KC_WFWD -KC_WWW_STOP KC_WSTP -KC_WWW_REFRESH KC_WREF -KC_WWW_FAVORITES KC_WFAV -/* Mousekey */ + +/* Consumer Page(0x07) */ +KC_AUDIO_MUTE KC_MUTE Mute +KC_AUDIO_VOL_UP KC_VOLU Volume Increment +KC_AUDIO_VOL_DOWN KC_VOLD Volume Decrement +KC_MEDIA_NEXT_TRACK KC_MNXT Scan Next Track +KC_MEDIA_PREV_TRACK KC_MPRV Scan Previous Track +KC_MEDIA_STOP KC_MSTP Stop +KC_MEDIA_FAST_FORWARD KC_MFFD Fast Forward +KC_MEDIA_REWIND KC_MRWD Rewind +KC_MEDIA_PLAY_PAUSE KC_MPLY Play/Pause +KC_EJCT KC_MEDIA_EJECT Stop/Eject +KC_MEDIA_SELECT KC_MSEL AL Consumer Control Configuration +KC_MAIL KC_MAIL AL Email Reader +KC_CALCULATOR KC_CALC AL Calculator +KC_MY_COMPUTER KC_MYCM AL Local Machine Browser +KC_WWW_SEARCH KC_WSCH AC Search +KC_WWW_HOME KC_WHOM AC Home +KC_WWW_BACK KC_WBAK AC Back +KC_WWW_FORWARD KC_WFWD AC Forward +KC_WWW_STOP KC_WSTP AC Stop +KC_WWW_REFRESH KC_WREF AC Refresh +KC_WWW_FAVORITES KC_WFAV AC Bookmarks + +/* Mousekey - TMK specific */ KC_MS_UP KC_MS_U Mouse Cursor Up KC_MS_DOWN KC_MS_D Mouse Cursor Down KC_MS_LEFT KC_MS_L Mouse Cursor Left @@ -226,7 +231,8 @@ KC_MS_WH_RIGHT KC_WH_R Mouse Wheel Right KC_MS_ACCEL0 KC_ACL0 Mouse Acceleration 0 KC_MS_ACCEL1 KC_ACL1 Mouse Acceleration 1 KC_MS_ACCEL2 KC_ACL2 Mouse Acceleration 2 -/* Fn key */ + +/* Fn key - TMK specific */ KC_FN0 KC_FN1 KC_FN2 diff --git a/tmk_core/doc/keymap.md b/tmk_core/doc/keymap.md index 3a196a2d..df5d6de1 100644 --- a/tmk_core/doc/keymap.md +++ b/tmk_core/doc/keymap.md @@ -95,7 +95,7 @@ Note that ***higher layers have priority in the layer stack***. The firmware sta ### 0.3 Keymap Example -The keymap is defined in the **`keymaps[]`** array, a 2-dimensional array of rows and columns corresponding to positions in the keyboard matrix. But most often the layers are defined using C macros to allow for easier reading and editing of the keymap files. To use complex actions you need to define `Fn` keycodes in the **`fn_actions[]`** array. +The keymap is defined in the **`uint8_t keymaps[]`** array, a 2-dimensional array of rows and columns corresponding to positions in the keyboard matrix. But most often the layers are defined using C macros to allow for easier reading and editing of the keymap files. To use complex actions you need to define `Fn` action in the **`action_t fn_actions[]`** array. This is a keymap example for the [HHKB](http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard) keyboard. This example has three layers: the QWERTY base layer, and two overlay layers for cursor and mousekey control, respectively. @@ -109,7 +109,7 @@ In this example, You can find other keymap definitions in file `keymap.c` located on project directories. - static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: Qwerty * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| @@ -167,7 +167,7 @@ You can find other keymap definitions in file `keymap.c` located on project dire LGUI,LALT, BTN1, RALT,TRNS), }; - static const uint16_t PROGMEM fn_actions[] = { + const action_t PROGMEM fn_actions[] = { ACTION_LAYER_MOMENTARY(1), // FN0 ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN1 ACTION_LAYER_TOGGLE(2), // FN2 @@ -214,7 +214,7 @@ There are 8 modifiers which has discrimination between left and right. - `KC_WSCH`, `KC_WHOM`, `KC_WBAK`, `KC_WFWD`, `KC_WSTP`, `KC_WREF`, `KC_WFAV` for web browser operation ### 1.5 Fn key -`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.*** +`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `action_t fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.*** ### 1.6 Keycode Table See keycode table in [`doc/keycode.txt`](./keycode.txt) for description of keycodes. @@ -443,7 +443,7 @@ To define tappable `Function` action in keymap use this. #### 2.4.3 Implement user function `Function` actions can be defined freely with C by user in callback function: - void keymap_call_function(keyrecord_t *event, uint8_t id, uint8_t opt) + void action_function(keyrecord_t *record, uint8_t id, uint8_t opt); This C function is called every time key is operated, argument `id` selects action to be performed and `opt` can be used for option. Function `id` can be 0-255 and `opt` can be 0-15. @@ -598,13 +598,13 @@ Legacy Keymap uses two arrays `fn_layer[]` and `fn_keycode[]` to define Fn key. In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key. - static const uint8_t PROGMEM fn_layer[] = { + const uint8_t PROGMEM fn_layer[] = { 1, // Fn0 2, // Fn1 2, // Fn2 }; - static const uint8_t PROGMEM fn_keycode[] = { + const uint8_t PROGMEM fn_keycode[] = { KC_NO, // Fn0 KC_NO, // Fn1 KC_SPC, // Fn2 diff --git a/tmk_core/doc/unimap.txt b/tmk_core/doc/unimap.txt new file mode 100644 index 00000000..0db038e6 --- /dev/null +++ b/tmk_core/doc/unimap.txt @@ -0,0 +1,51 @@ +Unimap +====== +universal keymapping framework +using logical 128-key keyboard layout independent from physical keyboad matrix + +unimap is actually an actionmap whose size is row:8xcol:16. + +/* Keymapping with 16bit action codes */ +extern const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS]; + +/* Universal 128-key keyboard layout(8x16) + ,-----------------------------------------------. + |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| +,---. |-----------------------------------------------| ,-----------. ,-----------. +|Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut| +`---' `-----------------------------------------------' `-----------' `-----------' +,-----------------------------------------------------------. ,-----------. ,---------------. +| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| +|-----------------------------------------------------------| |-----------| |---------------| +|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| +|-----------------------------------------------------------| `-----------' |---------------| +|CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Retn| | 4| 5| 6|KP,| +|-----------------------------------------------------------| ,---. |---------------| +|Shft| <| Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|KP=| +|-----------------------------------------------------------| ,-----------. |---------------| +|Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| +`-----------------------------------------------------------' `-----------' `---------------' +App: Windows Menu key +Gui: Windows key, Mac ⌘ key or Meta key +VDn Vup Mut: Volume control +< #: ISO keys(in UK legend) +KP=: Keypad = for Mac +KP,: Brazilian Keypad Comma +JPY: Japanese Yen(¥) +RO: Japanese ろ(Ro) or Brazilian /(Slash) +MHEN: Japanese 無変換(Non Conversion) or Korean Hanja +HENK: Japanese 変換(Conversion) or Korean Hangul/English +KANA: Japanese かな(Hiragana/Katakana) +https://en.wikipedia.org/wiki/Keyboard_layout#Japanese +https://en.wikipedia.org/wiki/Keyboard_layout#Hangul_.28for_Korean.29 +*/ + + +when refering to keymapping physical matrix position needed to be translated into logical one on unimap +the translation is defined in unimap array + +row and col of unimap positon is encoded as follows +position = (row << 4) | col + +// table translates matrix to universal keymap +extern const uint8_t unimap_trans[MATRIX_ROWS][MATRIX_COLS]; diff --git a/tmk_core/protocol/chibios/README.md b/tmk_core/protocol/chibios/README.md index 63e6641f..2fadc799 100644 --- a/tmk_core/protocol/chibios/README.md +++ b/tmk_core/protocol/chibios/README.md @@ -1,16 +1,16 @@ ## TMK running on top of ChibiOS -This code can be used to run TMK keyboard logic on top of [ChibiOS], meaning that you can run TMK on whatever [ChibiOS] supports. The notable examples are ARM-based Teensies (3.x and LC) and on the boards with STM32 MCUs. +This code can be used to run TMK keyboard logic on top of [ChibiOS], meaning that you can run TMK on whatever ChibiOS supports. The notable examples are PJRC Teensies(3.x and LC) with NXP Kinetis and dev boards with ST Micro STM32 MCUs. ### Usage -- To use, [get a zip of chibios](https://github.com/ChibiOS/ChibiOS/archive/a7df9a891067621e8e1a5c2a2c0ceada82403afe.zip) and unpack/rename it to `tmk_core/tool/chibios/chibios`; or you can just clone [the repo](https://github.com/ChibiOS/ChibiOS) there. For Freescale/NXP Kinetis support (meaning ARM Teensies and the Infinity keyboard), you'll also need [a zip of chibios-contrib](https://github.com/ChibiOS/ChibiOS-Contrib/archive/e1311c4db6cd366cf760673f769e925741ac0ad3.zip), unpacked/renamed to `tmk_core/tool/chibios/chibios-contrib`. Likewise, for git-savvy people, just clone [the repo](https://github.com/ChibiOS/ChibiOS-Contrib) there. -- Note: the abovementioned directories are the defaults. You can have the two chibios repositories wherever you want, just define their location in `CHIBIOS` and `CHIBIOS_CONTRIB` variables in your `Makefile`. +- To use, get a [zip file](https://github.com/ChibiOS/ChibiOS/archive/a7df9a891067621e8e1a5c2a2c0ceada82403afe.zip) of ChibiOS and unpack/rename it to `tmk_core/tool/chibios/ChibiOS`; or you can just clone [ChibiOS repo](https://github.com/ChibiOS/ChibiOS) there. For Freescale/NXP Kinetis support (meaning Teensies 3.x/LC and the Infinity keyboard), you'll also need a [zip](https://github.com/ChibiOS/ChibiOS-Contrib/archive/e1311c4db6cd366cf760673f769e925741ac0ad3.zip) of ChibiOS-Contrib, unpacked/renamed to `tmk_core/tool/chibios/ChibiOS-Contrib`. Likewise, for git-savvy people, just clone [ChibiOS-Contrib repo](https://github.com/ChibiOS/ChibiOS-Contrib) there. +- Note: the above mentioned directories are the defaults. You can have the two ChibiOS repositories wherever you want, just define their location in `CHIBIOS` and `CHIBIOS_CONTRIB` variables in your `Makefile`. - You will also need to install an ARM toolchain, for instance from [here](https://launchpad.net/gcc-arm-embedded). On linux, this is usually also present as a package for your distribution (as `gcc-arm` or something similar). On OS X, you can use [homebrew](http://brew.sh/) with an appropriate tap. ### Notes -- Some comments about ChibiOS syntax and the most commonly used GPIO functions are, as well as an example for ARM Teensies, is [here](https://github.com/tmk/tmk_keyboard/blob/master/keyboard/teensy_lc_onekey/instructions.md). +- Some comments about ChibiOS syntax and the most commonly used GPIO functions are, as well as an example for Teensies, is [here](https://github.com/tmk/tmk_keyboard/blob/master/keyboard/teensy_lc_onekey/instructions.md). - For gcc options, inspect `tmk_core/tool/chibios/chibios.mk`. For instance, I enabled `-Wno-missing-field-initializers`, because TMK common bits generated a lot of warnings on that. - For debugging, it is sometimes useful disable gcc optimisations, you can do that by adding `-O0` to `OPT_DEFS` in your `Makefile`. - USB string descriptors are messy. I did not find a way to cleanly generate the right structures from actual strings, so the definitions in individual keyboards' `config.h` are ugly as heck. diff --git a/tmk_core/protocol/lufa/descriptor.c b/tmk_core/protocol/lufa/descriptor.c index 6c2cacb5..4fb5219d 100644 --- a/tmk_core/protocol/lufa/descriptor.c +++ b/tmk_core/protocol/lufa/descriptor.c @@ -140,9 +140,9 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtrakeyReport[] = HID_RI_USAGE(8, 0x80), /* System Control */ HID_RI_COLLECTION(8, 0x01), /* Application */ HID_RI_REPORT_ID(8, REPORT_ID_SYSTEM), - HID_RI_LOGICAL_MINIMUM(16, 0x0001), + HID_RI_LOGICAL_MINIMUM(16, 0x0081), HID_RI_LOGICAL_MAXIMUM(16, 0x00B7), - HID_RI_USAGE_MINIMUM(16, 0x0001), /* System Power Down */ + HID_RI_USAGE_MINIMUM(16, 0x0081), /* System Power Down */ HID_RI_USAGE_MAXIMUM(16, 0x00B7), /* System Display LCD Autoscale */ HID_RI_REPORT_SIZE(8, 16), HID_RI_REPORT_COUNT(8, 1), diff --git a/tmk_core/protocol/lufa/descriptor.h b/tmk_core/protocol/lufa/descriptor.h index 42af0791..119f4298 100644 --- a/tmk_core/protocol/lufa/descriptor.h +++ b/tmk_core/protocol/lufa/descriptor.h @@ -155,7 +155,7 @@ typedef struct #define MOUSE_EPSIZE 8 #define EXTRAKEY_EPSIZE 8 #define CONSOLE_EPSIZE 32 -#define NKRO_EPSIZE 16 +#define NKRO_EPSIZE 32 uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 0ae84d91..66b4cbd8 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -420,6 +420,13 @@ flip: $(TARGET).hex batchisp -hardware usb -device $(MCU) -operation start reset 0 dfu: $(TARGET).hex + @echo -n dfu-programmer: waiting + @until dfu-programmer $(MCU) get bootloader-version > /dev/null 2>&1; do \ + echo -n "."; \ + sleep 1; \ + done + @echo + ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1))) dfu-programmer $(MCU) erase --force else diff --git a/tmk_core/tool/chibios/chibios.mk b/tmk_core/tool/chibios/chibios.mk index f2fedd22..88ba94ae 100644 --- a/tmk_core/tool/chibios/chibios.mk +++ b/tmk_core/tool/chibios/chibios.mk @@ -83,8 +83,8 @@ endif # # Imported source files and paths -CHIBIOS ?= $(TMK_DIR)/tool/chibios/chibios -CHIBIOS_CONTRIB ?= $(TMK_DIR)/tool/chibios/chibios-contrib +CHIBIOS ?= $(TMK_DIR)/tool/chibios/ChibiOS +CHIBIOS_CONTRIB ?= $(TMK_DIR)/tool/chibios/ChibiOS-Contrib # Startup files. Try a few different locations, for compability with old versions and # for things hardware in the contrib repository STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk