From c41e48a0ab0712d2667feb6b5dd8a4d5491cfcc5 Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 22 Mar 2019 22:15:26 +0900 Subject: [PATCH 01/71] core: Fix uart.c for ATmega32U4 --- tmk_core/common/{ => avr}/uart.c | 54 +++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 11 deletions(-) rename tmk_core/common/{ => avr}/uart.c (69%) diff --git a/tmk_core/common/uart.c b/tmk_core/common/avr/uart.c similarity index 69% rename from tmk_core/common/uart.c rename to tmk_core/common/avr/uart.c index c17649b0..d9d42390 100644 --- a/tmk_core/common/uart.c +++ b/tmk_core/common/avr/uart.c @@ -1,4 +1,3 @@ -// TODO: Teensy support(ATMega32u4/AT90USB128) // Fixed for Arduino Duemilanove ATmega168p by Jun Wako /* UART Example for Teensy USB Development Board * http://www.pjrc.com/teensy/ @@ -32,6 +31,39 @@ #include "uart.h" +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) +# define UDRn UDR0 +# define UBRRn UBRR0 +# define UCSRnA UCSR0A +# define UCSRnB UCSR0B +# define UCSRnC UCSR0C +# define U2Xn U2X0 +# define RXENn RXEN0 +# define TXENn TXEN0 +# define RXCIEn RXCIE0 +# define UCSZn1 UCSZ01 +# define UCSZn0 UCSZ00 +# define UDRIEn UDRIE0 +# define UDRE_vect USART_UDRE_vect +# define RX_vect USART_RX_vect +#elif defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +# define UDRn UDR1 +# define UBRRn UBRR1 +# define UCSRnA UCSR1A +# define UCSRnB UCSR1B +# define UCSRnC UCSR1C +# define U2Xn U2X1 +# define RXENn RXEN1 +# define TXENn TXEN1 +# define RXCIEn RXCIE1 +# define UCSZn1 UCSZ11 +# define UCSZn0 UCSZ10 +# define UDRIEn UDRIE1 +# define UDRE_vect USART1_UDRE_vect +# define RX_vect USART1_RX_vect +#endif + + // These buffers may be any size from 2 to 256 bytes. #define RX_BUFFER_SIZE 64 #define TX_BUFFER_SIZE 40 @@ -47,10 +79,10 @@ static volatile uint8_t rx_buffer_tail; void uart_init(uint32_t baud) { cli(); - UBRR0 = (F_CPU / 4 / baud - 1) / 2; - UCSR0A = (1<= TX_BUFFER_SIZE) i = 0; - UDR0 = tx_buffer[i]; + UDRn = tx_buffer[i]; tx_buffer_tail = i; } } // Receive Interrupt -ISR(USART_RX_vect) +ISR(RX_vect) { uint8_t c, i; - c = UDR0; + c = UDRn; i = rx_buffer_head + 1; if (i >= RX_BUFFER_SIZE) i = 0; if (i != rx_buffer_tail) { From e23520662dfac30c38c41c87f5593c21f1abfb1d Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 26 Mar 2019 16:09:45 +0900 Subject: [PATCH 02/71] lufa: Add debug print support with UART --- tmk_core/common.mk | 8 ++++++-- tmk_core/protocol/lufa.mk | 13 +++++++++++++ tmk_core/protocol/lufa/lufa.c | 29 +++++++++++++++++++---------- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 14951ec8..06507ecf 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -50,8 +50,12 @@ endif ifeq (yes,$(strip $(CONSOLE_ENABLE))) OPT_DEFS += -DCONSOLE_ENABLE else - OPT_DEFS += -DNO_PRINT - OPT_DEFS += -DNO_DEBUG + # Remove print functions when console is disabled and + # no other print method like UART is available + ifneq (yes, $(strip $(DEBUG_PRINT_AVAILABLE))) + OPT_DEFS += -DNO_PRINT + OPT_DEFS += -DNO_DEBUG + endif endif ifeq (yes,$(strip $(COMMAND_ENABLE))) diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 1b529bde..19fc80d4 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -49,7 +49,20 @@ OPT_DEFS += $(LUFA_OPTS) # This indicates using LUFA stack OPT_DEFS += -DPROTOCOL_LUFA +ifeq (yes,$(strip $(LUFA_DEBUG))) + LUFA_OPTS += -DLUFA_DEBUG +endif + ifeq (yes,$(strip $(LUFA_DEBUG_SUART))) SRC += common/avr/suart.S LUFA_OPTS += -DLUFA_DEBUG_SUART + # Keep print/debug lines when disabling HID console. See common.mk. + DEBUG_PRINT_AVAILABLE = yes +endif + +ifeq (yes,$(strip $(LUFA_DEBUG_UART))) + SRC += common/avr/uart.c + LUFA_OPTS += -DLUFA_DEBUG_UART + # Keep print/debug lines when disabling HID console. See common.mk. + DEBUG_PRINT_AVAILABLE = yes endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index b5d0b50e..ffa5cfbd 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -56,6 +56,10 @@ #include "avr/suart.h" #endif +#ifdef LUFA_DEBUG_UART +#include "uart.h" +#endif + #include "matrix.h" #include "descriptor.h" #include "lufa.h" @@ -218,7 +222,9 @@ static void console_task(void) */ void EVENT_USB_Device_Connect(void) { +#ifdef LUFA_DEBUG print("[C]"); +#endif /* For battery powered device */ if (!USB_IsInitialized) { USB_Disable(); @@ -229,7 +235,9 @@ void EVENT_USB_Device_Connect(void) void EVENT_USB_Device_Disconnect(void) { +#ifdef LUFA_DEBUG print("[D]"); +#endif /* For battery powered device */ USB_IsInitialized = false; /* TODO: This doesn't work. After several plug in/outs can not be enumerated. @@ -575,25 +583,22 @@ static void send_consumer(uint16_t data) /******************************************************************************* * sendchar ******************************************************************************/ -#ifdef CONSOLE_ENABLE int8_t sendchar(uint8_t c) { #ifdef LUFA_DEBUG_SUART xmit(c); #endif - bool r = console_putc(c); - return (r ? 0 : -1); -} -#else -int8_t sendchar(uint8_t c) -{ - #ifdef LUFA_DEBUG_SUART - xmit(c); + #ifdef LUFA_DEBUG_UART + uart_putchar(c); #endif + + #ifdef CONSOLE_ENABLE + console_putc(c); + #endif + return 0; } -#endif /******************************************************************************* @@ -629,6 +634,10 @@ int main(void) SUART_OUT_PORT |= (1< Date: Sun, 31 Mar 2019 14:42:19 +0900 Subject: [PATCH 03/71] lufa: This prevents resume when debug --- tmk_core/protocol/lufa/lufa.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index ffa5cfbd..400011d1 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -669,9 +669,6 @@ int main(void) print("\nKeyboard start.\n"); while (1) { while (USB_DeviceState == DEVICE_STATE_Suspended) { -#ifdef LUFA_DEBUG - print("[s]"); -#endif hook_usb_suspend_loop(); } From 527bdbbcbddc51b22c4fb210889998d550544189 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 21 Apr 2019 09:19:22 +0900 Subject: [PATCH 04/71] usb_usb: Add debug print for low level --- converter/usb_usb/Makefile.debug | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/converter/usb_usb/Makefile.debug b/converter/usb_usb/Makefile.debug index e229cd78..830995b4 100644 --- a/converter/usb_usb/Makefile.debug +++ b/converter/usb_usb/Makefile.debug @@ -1,6 +1,20 @@ TARGET = usb_usb_debug -UNIMAP_ENABLE = yes + +#UNIMAP_ENABLE = yes #KEYMAP_SECTION_ENABLE = yes -#LUFA_DEBUG = yes -OPT_DEFS += -DDEBUG_USB_HOST + +# LUFA debug print +# This may prevent USB enumeration and keyboard init +LUFA_DEBUG = yes +# Select one of outputs for debug print +LUFA_DEBUG_UART = yes +#LUFA_DEBUG_SUART = yes + +# USB_Host_Shield_2.0 debug print +# This may prevent USB enumeration and keyboard init +#OPT_DEFS += -DDEBUG_USB_HOST + +CONSOLE_ENABLE = yes +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no include Makefile From 292cc939ec6bea70c4d9b7b2130c35efd1545fe8 Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 26 Apr 2019 09:17:50 +0900 Subject: [PATCH 05/71] lufa: Fix for UART debug print --- tmk_core/protocol/lufa/lufa.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 400011d1..eade7d1b 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -713,7 +713,10 @@ void hook_usb_suspend_entry(void) __attribute__((weak)) void hook_usb_suspend_loop(void) { +#ifndef LUFA_DEBUG_UART + // This corrupts debug print when suspend suspend_power_down(); +#endif if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) { USB_Device_SendRemoteWakeup(); } From 55443fabb731459e21b45781c6d951edac5d75f4 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 2 May 2019 20:57:48 +0900 Subject: [PATCH 06/71] core: Avoid deadlock when uart.c is used in ISR --- tmk_core/common/avr/uart.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tmk_core/common/avr/uart.c b/tmk_core/common/avr/uart.c index d9d42390..0fec705f 100644 --- a/tmk_core/common/avr/uart.c +++ b/tmk_core/common/avr/uart.c @@ -66,7 +66,7 @@ // These buffers may be any size from 2 to 256 bytes. #define RX_BUFFER_SIZE 64 -#define TX_BUFFER_SIZE 40 +#define TX_BUFFER_SIZE 256 static volatile uint8_t tx_buffer[TX_BUFFER_SIZE]; static volatile uint8_t tx_buffer_head; @@ -95,6 +95,8 @@ void uart_putchar(uint8_t c) i = tx_buffer_head + 1; if (i >= TX_BUFFER_SIZE) i = 0; + // return immediately to avoid deadlock when interrupt is disabled(called from ISR) + if (tx_buffer_tail == i && (SREG & (1< Date: Mon, 6 May 2019 16:27:46 +0900 Subject: [PATCH 07/71] lufa: Fix Change debug print message --- tmk_core/protocol/lufa/lufa.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index eade7d1b..991c2719 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -642,7 +642,7 @@ int main(void) print_set_sendchar(sendchar); host_set_driver(&lufa_driver); - print("Keyboard init.\n"); + print("\n\nKeyboard init.\n"); hook_early_init(); keyboard_setup(); setup_usb(); @@ -663,6 +663,7 @@ int main(void) #endif matrix_scan(); } + print("\nUSB configured.\n"); hook_late_init(); From 993a9b02f77eda8b06cf096f345ad3f35fafc7ba Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 29 Mar 2019 15:45:20 +0900 Subject: [PATCH 08/71] lufa: Fix for freeze at re/boot time problem Calling led_set() in ISR can cause the problem. With converter especially, led_set() can take long time and USB can be stuck in the end. USB-USB converter freezes occasionally when computer power up or reboot. https://geekhack.org/index.php?topic=69169.msg2740179#msg2740179 This is also related to suspend/wakeup issue #386. --- tmk_core/protocol/lufa/lufa.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 991c2719..48034dbe 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -697,12 +697,12 @@ static uint8_t _led_stats = 0; __attribute__((weak)) void hook_usb_suspend_entry(void) { - // Turn LED off to save power - // Set 0 with putting aside status before suspend and restore - // it after wakeup, then LED is updated at keyboard_task() in main loop + // Turn off LED to save power and keep its status to resotre it later. + // LED status will be updated by keyboard_task() in main loop hopefully. _led_stats = keyboard_led_stats; keyboard_led_stats = 0; - led_set(keyboard_led_stats); + + // Calling long task here can prevent USB state transition matrix_clear(); clear_keyboard(); @@ -731,10 +731,8 @@ void hook_usb_wakeup(void) sleep_led_disable(); #endif - // Restore LED status - // BIOS/grub won't recognize/enumerate if led_set() takes long(around 40ms?) - // Converters fall into the case and miss wakeup event(timeout to reply?) in the end. - //led_set(host_keyboard_leds()); - // Instead, restore stats and update at keyboard_task() in main loop + // Restore LED status and update at keyboard_task() in main loop keyboard_led_stats = _led_stats; + + // Calling long task here can prevent USB state transition } From 4e83400fc6f67a0559cf343ba5846b505c35fd30 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 6 May 2019 23:01:18 +0900 Subject: [PATCH 09/71] usb_hid: Change to USB_Host_Shield_2.0 of tmk repo - Fix SOF/Keep Alive start timing - Disable bus detection during settling after attach - Remove keyboard LED blinking at configuring --- .gitmodules | 6 +++--- tmk_core/protocol/usb_hid.mk | 2 +- tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git | 1 - tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk | 1 + 4 files changed, 5 insertions(+), 5 deletions(-) delete mode 160000 tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git create mode 160000 tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk diff --git a/.gitmodules b/.gitmodules index 3ae861fb..c688aa84 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git"] - path = tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git - url = https://github.com/felis/USB_Host_Shield_2.0.git +[submodule "tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk"] + path = tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk + url = https://github.com/tmk/USB_Host_Shield_2.0.git diff --git a/tmk_core/protocol/usb_hid.mk b/tmk_core/protocol/usb_hid.mk index 495c4bee..bba4292f 100644 --- a/tmk_core/protocol/usb_hid.mk +++ b/tmk_core/protocol/usb_hid.mk @@ -4,7 +4,7 @@ USB_HID_DIR = protocol/usb_hid # # USB Host Shield # -USB_HOST_SHIELD_DIR = $(USB_HID_DIR)/USB_Host_Shield_2.0-git +USB_HOST_SHIELD_DIR = $(USB_HID_DIR)/USB_Host_Shield_2.0-tmk USB_HOST_SHIELD_SRC = \ $(USB_HOST_SHIELD_DIR)/Usb.cpp \ $(USB_HOST_SHIELD_DIR)/usbhid.cpp \ diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git deleted file mode 160000 index ed08df7e..00000000 --- a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-git +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ed08df7e68af06a5612d938b1bbf55cc4458518a diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk new file mode 160000 index 00000000..48b2a095 --- /dev/null +++ b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk @@ -0,0 +1 @@ +Subproject commit 48b2a0950496c7b8ba1bb6ddb937b6f00a6de781 From dd7b75040a7f3cc62fe58d6d4b3cc2a331d487b3 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 6 May 2019 01:52:25 +0900 Subject: [PATCH 10/71] lufa:usb_usb: matrix_scan() is no longer needed This is due to SOF timing fix of USB_Host_Shield_2.0. The matrix_scan() was needed for usb_usb converter to recognize FC660C at startup. --- tmk_core/protocol/lufa/lufa.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 48034dbe..aecaa050 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -661,7 +661,6 @@ int main(void) #else USB_USBTask(); #endif - matrix_scan(); } print("\nUSB configured.\n"); From 7c228967a405b04d58bb06e619de8d1d7bb3c15b Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 6 May 2019 12:15:37 +0900 Subject: [PATCH 11/71] usb_usb: Order of init prevents uneeded bus reset Device classes are registered to array of config driver pool and tried in that order until proper class is found in configuration process. If tried driver cannot handle device, bus reset is issued to the device. --- converter/usb_usb/usb_usb.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/converter/usb_usb/usb_usb.cpp b/converter/usb_usb/usb_usb.cpp index 086c90ae..75750911 100644 --- a/converter/usb_usb/usb_usb.cpp +++ b/converter/usb_usb/usb_usb.cpp @@ -71,8 +71,6 @@ static bool matrix_is_mod =false; * This supports two cascaded hubs and four keyboards */ USB usb_host; -USBHub hub1(&usb_host); -USBHub hub2(&usb_host); HIDBoot kbd1(&usb_host); HIDBoot kbd2(&usb_host); HIDBoot kbd3(&usb_host); @@ -81,6 +79,8 @@ KBDReportParser kbd_parser1; KBDReportParser kbd_parser2; KBDReportParser kbd_parser3; KBDReportParser kbd_parser4; +USBHub hub1(&usb_host); +USBHub hub2(&usb_host); uint8_t matrix_rows(void) { return MATRIX_ROWS; } From 2fd396b8ca15592729f2ab84fce474bf987deb11 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 8 May 2019 12:53:15 +0900 Subject: [PATCH 12/71] usb_usb: Add option for disabling suspend power down --- converter/usb_usb/config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/converter/usb_usb/config.h b/converter/usb_usb/config.h index 87da4a45..b2e5a9a3 100644 --- a/converter/usb_usb/config.h +++ b/converter/usb_usb/config.h @@ -36,4 +36,8 @@ along with this program. If not, see . /* key combination for command */ #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) +// Disable power saving in USB suspend loop but remote wakeup is still valid. +// This allows keep USB::Task() going during suspend without power down time delay. +//#define NO_SUSPEND_POWER_DOWN + #endif From d8e304e141723f950ea610c1b3a3fe6f85a535e9 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 7 May 2019 11:09:25 +0900 Subject: [PATCH 13/71] lufa: Startup and suspend loop can be disabled Startup wait loop is originally intended to start keyboard task loop and after console output endpoint becomes available. But now that console output is buffered when it is not available and you don't have to wait for it to be ready. You can disable the startup wait loop by defining NO_WAIT_FOR_USB_CONFIGURED in config.h Suspend loop is used for power saving by making tasks stop while USB bus is under suspend status. But this may cause problem on some devices like converter that must keep doing its task to retain communication with keyboard. The suspend loop can block its task for around 15-17ms. You can disable the suspend loop by defining NO_USB_SUSPEND_LOOP in config.h. --- tmk_core/protocol/lufa/lufa.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index aecaa050..ce15ec73 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -654,6 +654,7 @@ int main(void) keyboard_init(); +#ifndef NO_USB_STARTUP_WAIT_LOOP /* wait for USB startup */ while (USB_DeviceState != DEVICE_STATE_Configured) { #if defined(INTERRUPT_CONTROL_ENDPOINT) @@ -663,14 +664,17 @@ int main(void) #endif } print("\nUSB configured.\n"); +#endif hook_late_init(); print("\nKeyboard start.\n"); while (1) { +#ifndef NO_USB_SUSPEND_LOOP while (USB_DeviceState == DEVICE_STATE_Suspended) { hook_usb_suspend_loop(); } +#endif keyboard_task(); From 00bba0fdb5ced3156879ecbda83955881d974d48 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 7 May 2019 12:01:59 +0900 Subject: [PATCH 14/71] usb_usb: Add options for disabling blocking loops USB startup wait loop delays UHS2 Task() starting for a while like 200-600ms and USB suspend loop blocks the Task() while power saving like 15-17ms. These loops may cause keyboard enumeration failure, perhaps. Not confirmed it yet though. --- converter/usb_usb/config.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/converter/usb_usb/config.h b/converter/usb_usb/config.h index b2e5a9a3..7b80fc21 100644 --- a/converter/usb_usb/config.h +++ b/converter/usb_usb/config.h @@ -36,8 +36,17 @@ along with this program. If not, see . /* key combination for command */ #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) + // Disable power saving in USB suspend loop but remote wakeup is still valid. // This allows keep USB::Task() going during suspend without power down time delay. //#define NO_SUSPEND_POWER_DOWN + +// Disable USB startup wait, which can delays starting UHS2 Task() for 350-600ms. +//#define NO_USB_STARTUP_WAIT_LOOP + +// Disable USB suspend loop, which blocks UHS2 Task() while power saving. +// Note that this also disables power saving and remote wakeup from keyboard completely. +//#define NO_USB_SUSPEND_LOOP + #endif From f3e498590cefe28dba4419aa9525655e747e01dd Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 8 May 2019 11:44:56 +0900 Subject: [PATCH 15/71] core: Add hook_usb_startup_wait_loop --- tmk_core/common/hook.h | 11 +++++++++++ tmk_core/common/suspend.h | 8 ++++++++ tmk_core/doc/hook.txt | 2 ++ tmk_core/protocol/lufa/lufa.c | 4 ++++ 4 files changed, 25 insertions(+) diff --git a/tmk_core/common/hook.h b/tmk_core/common/hook.h index 56fe5677..140e2779 100644 --- a/tmk_core/common/hook.h +++ b/tmk_core/common/hook.h @@ -21,6 +21,10 @@ along with this program. If not, see . #include "keyboard.h" #include "led.h" +#ifdef __cplusplus +extern "C" { +#endif + /* ------------------------------------- * Protocol hooks * ------------------------------------- */ @@ -47,6 +51,10 @@ void hook_usb_suspend_loop(void); * the "normal" indicator LED status by default. */ void hook_usb_wakeup(void); +/* Called repeatedly until getting to CONFIGURED state */ +/* Default behaviour: do nothing. */ +void hook_usb_startup_wait_loop(void); + /* ------------------------------------- * Keyboard hooks @@ -76,5 +84,8 @@ void hook_keyboard_leds_change(uint8_t led_status); /* Default behaviour: do nothing. */ void hook_bootmagic(void); +#ifdef __cplusplus +} +#endif #endif /* _HOOKS_H_ */ diff --git a/tmk_core/common/suspend.h b/tmk_core/common/suspend.h index 80617a82..f0a668cf 100644 --- a/tmk_core/common/suspend.h +++ b/tmk_core/common/suspend.h @@ -5,9 +5,17 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + void suspend_idle(uint8_t timeout); void suspend_power_down(void); bool suspend_wakeup_condition(void); void suspend_wakeup_init(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/tmk_core/doc/hook.txt b/tmk_core/doc/hook.txt index 1689034e..acd77cce 100644 --- a/tmk_core/doc/hook.txt +++ b/tmk_core/doc/hook.txt @@ -9,6 +9,8 @@ Hook function | Timing `hook_early_init(void)` | Early in the boot process, before the matrix is initialized and before a connection is made with the host. Thus, this hook has access to very few parameters, but it is a good place to define any custom parameters needed by other early processes. `hook_late_init(void)` | Near the end of the boot process, after Boot Magic has run and LEDs have been initialized. `hook_bootmagic(void)` | During the Boot Magic window, after EEPROM and Bootloader checks are made, but before any other built-in Boot Magic checks are made. +`hook_usb_startup_wait_loop(void)` | Continuously, until the device gets ready and into USB configured state. + `hook_usb_wakeup(void)` | When the device wakes up from USB suspend state. `hook_usb_suspend_entry(void)` | When the device enters USB suspend state. `hook_usb_suspend_loop(void)` | Continuously, while the device is in USB suspend state. *Default action:* power down and periodically check the matrix, causing wakeup if needed. diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index ce15ec73..9dadd572 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -662,6 +662,7 @@ int main(void) #else USB_USBTask(); #endif + hook_usb_startup_wait_loop(); } print("\nUSB configured.\n"); #endif @@ -739,3 +740,6 @@ void hook_usb_wakeup(void) // Calling long task here can prevent USB state transition } + +__attribute__((weak)) +void hook_usb_startup_wait_loop(void) {} From 4880e2b661ac255c35c765cd6595ab9b1136ef2f Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 8 May 2019 11:48:47 +0900 Subject: [PATCH 16/71] usb_usb: Override startup and suspend hook --- converter/usb_usb/usb_usb.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/converter/usb_usb/usb_usb.cpp b/converter/usb_usb/usb_usb.cpp index 75750911..50d2578e 100644 --- a/converter/usb_usb/usb_usb.cpp +++ b/converter/usb_usb/usb_usb.cpp @@ -35,6 +35,10 @@ along with this program. If not, see . #include "host.h" #include "keyboard.h" +#include "hook.h" +#include "suspend.h" +#include "lufa.h" + /* KEY CODE to Matrix * @@ -233,3 +237,28 @@ void led_set(uint8_t usb_led) if (kbd3.isReady()) kbd3.SetReport(0, 0, 2, 0, 1, &usb_led); if (kbd4.isReady()) kbd4.SetReport(0, 0, 2, 0, 1, &usb_led); } + +// We need to keep doing UHS2 USB::Task() to initialize keyboard +// even before USB is not configured. +void hook_usb_startup_wait_loop(void) +{ + matrix_scan(); +} + +// We need to keep doing UHS2 USB::Task() to initialize keyboard +// even during USB bus is suspended and remote wakeup is not enabled yet on LUFA side. +// This situation can happen just after pluging converter into USB port. +void hook_usb_suspend_loop(void) +{ +#ifndef LUFA_DEBUG_UART + // This corrupts debug print when suspend + suspend_power_down(); +#endif + if (USB_Device_RemoteWakeupEnabled) { + if (suspend_wakeup_condition()) { + USB_Device_SendRemoteWakeup(); + } + } else { + matrix_scan(); + } +} From 7412953feef594109a9db81aa83dae6b6f8dea3f Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 10 May 2019 10:37:19 +0900 Subject: [PATCH 17/71] usb_usb: Handle Rollover error How keyobards report Rollover error: Cherry: 0101010101010101 https://geekhack.org/index.php?topic=69169.msg2638223#msg2638223 Apple: 0000010101010101 https://geekhack.org/index.php?topic=69169.msg2760969#msg2760969 --- tmk_core/protocol/usb_hid/parser.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tmk_core/protocol/usb_hid/parser.cpp b/tmk_core/protocol/usb_hid/parser.cpp index 81a5bfa6..5e9a3efb 100644 --- a/tmk_core/protocol/usb_hid/parser.cpp +++ b/tmk_core/protocol/usb_hid/parser.cpp @@ -12,10 +12,13 @@ void KBDReportParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *b } dprint("\r\n"); - // ignore Cherry 0101010101010101 bug report + // Rollover error + // Cherry: 0101010101010101 // https://geekhack.org/index.php?topic=69169.msg2638223#msg2638223 - if (buf[1] == 0x01) { - dprint("Cherry bug: ignored\r\n"); + // Apple: 0000010101010101 + // https://geekhack.org/index.php?topic=69169.msg2760969#msg2760969 + if (buf[2] == 0x01) { + dprint("Rollover error: ignored\r\n"); return; } From 8449ad385bf86a8525bdd3ddec0c0e1840ab32a8 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 29 May 2019 23:40:35 +0900 Subject: [PATCH 18/71] lufa: Print TMK version to console --- tmk_core/common.mk | 4 ++-- tmk_core/common/command.c | 2 +- tmk_core/protocol/lufa/lufa.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 06507ecf..a38ff081 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -99,8 +99,8 @@ ifeq (yes,$(strip $(KEYMAP_SECTION_ENABLE))) endif # Version string -VERSION := $(shell (git describe --always --dirty || echo 'unknown') 2> /dev/null) -OPT_DEFS += -DVERSION=$(VERSION) +TMK_VERSION := $(shell (git describe --always --dirty=+ || echo 'unknown') 2> /dev/null) +OPT_DEFS += -DTMK_VERSION=$(TMK_VERSION) # Search Path diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index e08f91e5..54050bd9 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -284,7 +284,7 @@ static bool command_common(uint8_t code) print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " "VER: " STR(DEVICE_VER) "\n"); - print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n"); + print("BUILD: " STR(TMK_VERSION) " (" __TIME__ " " __DATE__ ")\n"); /* build options */ print("OPTIONS:" #ifdef PROTOCOL_PJRC diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 9dadd572..32bc6981 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -642,7 +642,7 @@ int main(void) print_set_sendchar(sendchar); host_set_driver(&lufa_driver); - print("\n\nKeyboard init.\n"); + print("\n\nTMK:" STR(TMK_VERSION) "/LUFA\n\n"); hook_early_init(); keyboard_setup(); setup_usb(); From c25cdae5f2307dad87c759e42bfc81f84de55612 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 29 May 2019 23:45:35 +0900 Subject: [PATCH 19/71] usb_usb: Update unimap firmware binary --- converter/usb_usb/binary/usb_usb_unimap.hex | 3246 +++++++++---------- 1 file changed, 1621 insertions(+), 1625 deletions(-) diff --git a/converter/usb_usb/binary/usb_usb_unimap.hex b/converter/usb_usb/binary/usb_usb_unimap.hex index 835c9b98..71f47db3 100644 --- a/converter/usb_usb/binary/usb_usb_unimap.hex +++ b/converter/usb_usb/binary/usb_usb_unimap.hex @@ -1,17 +1,17 @@ -:100000000C9473020C94C5020C94C5020C94C502A6 -:100010000C94C5020C94C5020C94C5020C94C50244 -:100020000C94C5020C94C5020C94F91F0C94CB20BF -:100030000C94DD2E0C94C5020C94C5020C94C502E0 -:100040000C94C5020C94C5020C94C5020C94C50214 -:100050000C94C5020C94C40B0C94C5020C94C502FC -:100060000C94C5020C94C5020C94C5020C94C502F4 -:100070000C94C5020C94C5020C94C5020C94C502E4 -:100080000C94C5020C94C5020C94C5020C94C502D4 -:100090000C94C5020C94C5020C94C5020C94C502C4 -:1000A0000C94C5020C94C5020C94C50238215A2147 -:1000B00048225A2148229F21C221482217222A225F -:1000C00001250125302530258E25CC25E627E6277C -:1000D000E525E627E626E626BA27E627E627D127FE +:100000000C947D020C94CF020C94CF020C94CF027E +:100010000C94CF020C94CF020C94CF020C94CF021C +:100020000C94CF020C94CF020C94D81F0C94AA20ED +:100030000C94BD2E0C94CF020C94CF020C94CF02E2 +:100040000C94CF020C94CF020C94CF020C94CF02EC +:100050000C94CF020C94CF0B0C94CF020C94CF02D3 +:100060000C94CF020C94CF020C94CF020C94CF02CC +:100070000C94CF020C94CF020C94CF020C94CF02BC +:100080000C94CF020C94CF020C94CF020C94CF02AC +:100090000C94CF020C94CF020C94CF020C94CF029C +:1000A0000C94CF020C94CF020C94CF02172139216B +:1000B0002C2239212C227E21A1212C22F621092259 +:1000C000ED24ED24172517257225A62596279627BA +:1000D000BD259627A826A8266E279627962783272C :1000E000808080800405060708090A0B0C0D0E0F9E :1000F000101112131415161718191A1B1C1D1E1F88 :10010000202122232425262728292A2B2C2D2E2F77 @@ -34,270 +34,270 @@ :10021000007573625F73746174653A2025303258DB :100220000A00686F73742E5461736B3A2025640A58 :10023000000D0A0020253032580073746174653A4D -:10024000202025303258202530325800436865720E -:100250007279206275673A2069676E6F7265640D06 -:100260000A000D0A00202530325800696E7075743E -:100270002025643A000A4B6579626F6172642073CD -:10028000746172742E0A004B6579626F617264202A -:10029000696E69742E0A005B445D005B435D003C3F -:1002A00003550053004200200074006F00200055E9 -:1002B000005300420020006B006500790062006F6F -:1002C00000610072006400200063006F006E007621 -:1002D000006500720074006500720000000E037477 -:1002E000002E006D002E006B002E0000000403099C -:1002F0000409027400040100A03209040000010393 -:1003000001010009211101000122400007058103BC -:1003100008000A090401000103010200092111017A -:100320000001224D000705820308000A09040200AB -:100330000103000000092111010001223600070518 -:10034000830308000A0904030002030000000921D6 -:100350001101000122220007058403200001070586 -:1003600004032000011201100100000008EDFE5BF3 -:10037000001408010200010631FF0974A10109758A -:10038000150026FF009520750881020976150026C4 -:10039000FF00952075089102C005010980A1018523 -:1003A0000216810026B7001A81002AB70075109541 -:1003B000018100C0050C0901A10185031601002679 -:1003C0009C021A01002A9C02751095018100C0054B -:1003D000010902A1010901A1000509190129051559 -:1003E00000250195057501810295017503810105BF -:1003F00001093009311581257F95027508810609AB -:10040000381581257F950175088106050C0A38028B -:100410001581257F950175088106C0C00501090673 -:10042000A101050719E029E71500250195087501C7 -:1004300081029501750881010508190129059505B5 -:10044000750191029501750391010507190029FFB6 -:10045000150026FF00950675088100C0636F6E7356 -:10046000756D65723A20253034580A0073797374BB -:10047000656D3A20253034580A000A00253032587C -:1004800020006B6579626F6172643A20004C4544CC -:100490003A20253032580A00290A002575002F001D -:1004A0002575005D280025640020002564002000DB -:1004B00025640020002564007C0025303258006D42 -:1004C0006F7573656B6579205B62746E7C782079DB -:1004D000207620685D287265702F61636C293A2050 -:1004E0005B00530A180B11241FBECFEFDAE0DEBF0A -:1004F000CDBF04B603FE27C0809195059091960567 -:10050000A0919705B09198058730904BA740B04BCC -:10051000D1F41092950510929605109297051092BD -:10052000980514BE84B7877F84BF0FB6F894A8954A -:1005300080916000886180936000109260000FBE1F -:10054000E0E0F8E3099511E0A0E0B1E0ECEFF6E6B9 -:1005500002C005900D92AE39B107D9F725E0AEE99A -:10056000B1E001C01D92A539B207E1F712E0C3E77F -:10057000D2E004C02197FE010E946233C137D10747 -:10058000C9F70E94B51C0C947C330C940000FF93B7 -:10059000EF93E0919E01F0919F01309709F009954A -:1005A000EF91FF910895FC018591803011F0EFDF0C -:1005B000FBCF0895FF27E0E230E247FF0CC04195F2 -:1005C00097FF09C0EDE26095709580959095611D4B -:1005D000711D811D911D27FF02C0219530E350E25E -:1005E000AA27660F771F881F991FAA1FA41710F04C -:1005F000A41B63955A95A9F7AA3008F0A95FA05DDE -:10060000AF93F395611571058105910541F7ED32C1 -:1006100011F4EF93F395F21718F43F93F395FBCF92 -:100620008F91B5DFFA95E1F70895E991F9918591F8 -:10063000803021F0853219F0AADFF9CF089520E04B -:10064000E89455915532C1F3503311F468945591A3 -:100650005A3348F4505390F3220F022E220F220FE8 -:10066000200D250FF4CF0EF42195899199915336E1 -:1006700019F3533729F1533559F1BC0188279927CC -:10068000E8945C3621F48991999168945591543697 -:1006900039F446EF7EF077FF0DC08FEF9FEF0AC071 -:1006A00055374AE039F0583540E121F0523642E002 -:1006B00009F00895FF93EF937DDFEF91FF91B7CF9E -:1006C000FF93EF93FC0181918030B9F360DFFBCFA2 -:1006D000FF93EF9368DFF1CFDF93CF93CDB7DEB712 -:1006E0002596A3DFCF91DF91089580E008950895C6 -:1006F00080E0089581E00895CF93DF93CDB7DEB712 -:1007000028970FB6F894DEBF0FBECDBF29833A837A -:100710004B835C836D837E838F8398878091DC021B -:10072000282B2093DC02FE013396AE01475F5F4F1A -:100730002191243088F080E090E0DC01A452BD4F8C -:1007400012963C911297311103C012962C9304C05B -:1007500001968630910589F7E417F50749F7289641 -:100760000FB6F894DEBF0FBECDBFDF91CF910895D5 -:10077000860F911D860F911DFC015687458781E0EC -:100780000895FC0187890895CF93DF93EC018C8154 -:100790009D81DC01ED91FC910480F581E02D6E815D -:1007A00009951F86188A81E08A8B1E821B8A1C8A03 -:1007B0001D8A1E8A1F8A80E0DF91CF910895FC0177 -:1007C0008681089581E0633009F080E0089581E03A -:1007D000613009F080E00895860F911D860F911D0C -:1007E000FC01858596850895EF92FF92CF93DF9364 -:1007F000DC01E70152968C915297823049F11F96A5 -:100800006C931F9750964C9350979B8193709330A5 -:10081000F9F49A8197FF1CC09E8158962C915897A5 -:10082000291718F458969C935897E82FF0E09F01E9 -:10083000220F331FE20FF31FEA0FFB1F9A819F70F5 -:1008400097839C81908794E091878F5F52968C93D9 -:10085000DF91CF91FF90EF900895EF92FF920F9369 -:1008600002970E94F4030F91FF90EF90089508956E -:100870003F924F925F926F927F928F929F92AF9230 -:10088000BF92CF92DF92EF92FF920F931F93CF937D -:10089000DF9300D000D0CDB7DEB76C017C836B83D3 -:1008A0005A8349834C0180E1880E911C5601A7E0D0 -:1008B000AA0EB11C11E084E0482E3601B2E16B0EA5 -:1008C000711C93E0392E22E0522E8B819C81892B62 -:1008D00009F4FEC0F60190A1923059F128F4992351 -:1008E00041F0913071F0F1CF933039F19430C1F192 -:1008F000ECCF54828581968190878783528651867A -:1009000010A3AE014D5F5F4FBE016F5F7F4FC5010A -:100910000E940A1A882309F4DBC0D6011596ED91CE -:10092000FC911697808191968C93919781819296F4 -:100930008C93F6017682658230A2D60192968C91D4 -:100940009297843011F493961C92F60181A1825003 -:10095000848325813681308727838287818740A2DF -:10096000D60192968C918430B1F0853009F442C062 -:10097000823009F06EC0AE014D5F5F4FBE016F5F08 -:100980007F4FC5010E940A1A882309F4A1C0F6010D -:10099000858984A395C0AE014D5F5F4FBE016F5F37 -:1009A0007F4FC5010E940A1A882309F491C0D6011D -:1009B00055968C915597833009F082C056968C914C -:1009C0005697813009F07CC098969C9198975796DD -:1009D0008C91992321F0882309F472C003C08130DF -:1009E00009F06EC0F60113A3928996A3938997A389 -:1009F00085A366C0AE014D5F5F4FBE016F5F7F4F45 -:100A0000C5010E940A1A882309F462C0D601939690 -:100A10008C919397882309F453C012968D919C91E1 -:100A20001397009709F44CC0DC01ED91FC91019003 -:100A3000F081E02D7401D60195960C9195979796CB -:100A40002C91979796964C91969794966C910995C0 -:100A500037C0F60181A19585992319F0913031F0C5 -:100A60002AC090E002979787868715872B813C8163 -:100A700089819A81782F692FD6011E964D915C91BC -:100A80001F974115510539F49A8389833C832B8341 -:100A90001D961C9210C001962115310541F0415060 -:100AA0005109F6015787468721503109E3CF7983F1 -:100AB0006A831C821B82F60186859785892B41F407 -:100AC000D60116969C928E92159790961C92FDCE0A -:100AD0000F900F900F900F90DF91CF911F910F917A -:100AE000FF90EF90DF90CF90BF90AF909F908F904E -:100AF0007F906F905F904F903F900895CF92DF92DC -:100B0000EF92FF920F931F93CF93DF93CDB7DEB792 -:100B100062970FB6F894DEBF0FBECDBFDC015796CB -:100B20002C91222381F06C010E94290BF60103898C -:100B3000148925893689DC01CB01801B910BA20B1E -:100B4000B30BB7FF02C0F12C3AC0838590E09A8BBB -:100B5000898BE12C8E010F5F1F4F9E012F5E3F4F4F -:100B600042856681848195810E944214F82E81110C -:100B700018C029893A892330310598F0D6011D968D -:100B80008D919C911E97009761F0DC01ED91FC9195 -:100B90000190F081E02D8E010F5F1F4F40E0B60104 -:100BA00009950E94290BF601208DDC01CB01820FF3 -:100BB000911DA11DB11D838B948BA58BB68B8F2DA1 -:100BC00062960FB6F894DEBF0FBECDBFDF91CF9116 -:100BD0001F910F91FF90EF90DF90CF9008953F927B -:100BE0004F925F926F927F928F929F92AF92BF923D -:100BF000CF92DF92EF92FF920F931F93CF93DF93E9 -:100C0000CDB7DEB7EC970FB6F894DEBF0FBECDBF01 -:100C1000DC0114968D909C90159716963C9131119D -:100C20003AC1522E342E462E5C01FC01108ED401A6 -:100C3000ED91FC910190F081E02D60E0C4010995F7 -:100C40007C01009711F486ED2BC1FC01608071805E -:100C50006114710409F421C16501F7E0CF0ED11CC4 -:100C6000DC011196DC92CE9214965C928E01065DA8 -:100C70001F4F28E030E040E060E0F501848195817D -:100C80000E9405128CAF8111F9C01AA5D7016D928F -:100C90007C92D401ED91FC910280F381E02D232D13 -:100CA00040E0642DC4010995F5018683882309F489 -:100CB000F6C099A99087282F40E060E08481958153 -:100CC0000E94B0128CAFD401ED91FC91D701149623 -:100CD0001C92882359F00480F581E02DD5011696E9 -:100CE0006C91C4010995F5011682D3C00190F08181 -:100CF000E02DD50116966C91C4010995FC01892B54 -:100D000009F4A1CF912F133108F092E15482992375 -:100D100069F0292F30E08E01065D1F4F40E0F5019C -:100D20006681848195810E9405128CAF8CAD811102 -:100D3000A8C0EBACF12C45E2642E41E0742E2501F5 -:100D4000F2E04F0E511C4E0181E1880E911CFE1401 -:100D500049F17A8269825C824B821E86188A1F86DC -:100D600019A21AA21BA219A69F828E829986888632 -:100D70008D818B878A879D868C868E010F5F1F4FA2 -:100D80002F2D40E0D50116966C91169714968D91F3 -:100D90009C9115970E945312F5018289823011F0BF -:100DA000F394D5CFD50152968C91823019F081ED14 -:100DB0008CAF67C0960142E0F50166818481958120 -:100DC0000E942B0D8CAF68EE73E080E090E00E94F3 -:100DD0002B0BD5011F962C911F9740E016966C9116 -:100DE000169714968D919C9115970E941D148CAFA7 -:100DF000811147C068EE73E080E090E00E942B0B09 -:100E0000F501418D60E0C5010E9415168CAF81117E -:100E100038C020E040E060E0C5010E94EB158CAFD7 -:100E20008BE291E09A838983AE014F5F5F4F60E070 -:100E300070E0C5010E947A1580E28CAF8CAD8823EA -:100E4000C1F090E0959587958CAFCE01CC966C0162 -:100E5000EE24E394F12C00E022E040E060E0C501E4 -:100E60000E94BD1569E170E080E090E00E942B0BCC -:100E7000E5CF91E0D50157969C9312C0F70171829E -:100E80006082D501ED91FC910480F581E02DC501D2 -:100E900009958CAD05C089ED03C087ED01C084EDD7 -:100EA000EC960FB6F894DEBF0FBECDBFDF91CF91A9 -:100EB0001F910F91FF90EF90DF90CF90BF90AF9078 -:100EC0009F908F907F906F905F904F903F9008958C -:100ED0000F931F93CF93DF936091D8017091D90145 -:100EE000E091A701F091A8014091CC015091CD0172 -:100EF0002091C0013091C1018091B4019091B50160 -:100F00006E177F07B1F4E091A501F091A6014E178D -:100F10005F0779F4E091A301F091A4012E173F0738 -:100F200041F4E091A101F091A2018E179F0709F40D -:100F30009DC07093A8016093A7015093A6014093B0 -:100F4000A5013093A4012093A3019093A201809363 -:100F5000A101ECEDF2E088E0DF011D928A95E9F74E -:100F60002091D0013091D1014091D2015091D30113 -:100F70006091D4017091D5018091D6019091D701F3 -:100F80000E947C032091C4013091C5014091C601AB -:100F90005091C7016091C8017091C9018091CA0147 -:100FA0009091CB010E947C032091B8013091B9014E -:100FB0004091BA015091BB016091BC017091BD019B -:100FC0008091BE019091BF010E947C032091AC01F1 -:100FD0003091AD014091AE015091AF016091B001EF -:100FE0007091B1018091B2019091B3010E947C0394 -:100FF00081E08093DB0280917D0580FF14C08091A9 -:10100000DD021F928F938091DC021F928F938AE3FF -:1010100092E09F938F930E946C030F900F900F901C -:101020000F900F900F90C0E0D0E004E312E08091A9 -:101030007D0580FF0EC0FE01E452FD4F82811F92AC -:101040008F931F930F930E946C030F900F900F903C -:101050000F902196C630D10551F780917D0580FF14 -:1010600007C081E392E00E94D30202C01092DB022B -:101070000E94820BEC0184E692E00E947B14CE0178 -:101080000E949A0B8536910580F020917D0520FF06 -:101090000CC09F938F9382E292E09F938F930E9464 -:1010A0006C030F900F900F900F90C091A00184E6F9 -:1010B00092E00E94040DC817B9F184E692E00E9404 -:1010C000040D8093A00190917D0590FF0CC01F92AC -:1010D0008F9381E192E09F938F930E946C030F9016 -:1010E0000F900F900F908091A0018039E9F48091CA -:1010F0007D0580FF15C08091A901823019F08DE136 -:1011000091E002C088E191E09F938F9386E092E0A6 -:101110009F938F930E946C030F900F900F900F90EE -:101120000E9465220E94E02381E0DF91CF911F9110 -:101130000F910895482F50E0CA0124E0880F991FAD -:101140002A95E1F7805E9109089730F48091DC02DE -:10115000882311F090E002C080E090E0EEEDF2E034 -:10116000A1E0B0E036E03E0F2191243080F0622F04 -:1011700062956F7070E04617570749F42F70BD01F4 -:1011800002C0660F771F2A95E2F7862B972B3E1336 -:10119000EBCF0895EF92FF920F931F93CF93DF93BE -:1011A0008FEE91E00E94D302C0E0D0E088EEE82EFE -:1011B00081E0F82E02EE11E0DF93CF93FF92EF92E1 -:1011C0000E946C038C2F0E949A080E946D2E9F93A0 -:1011D0008F931F930F930E946C0380EE91E00E9407 -:1011E000D30221968DB79EB708960FB6F8949EBF8E -:1011F0000FBE8DBFC031D105F9F6DF91CF911F91A0 -:101200000F91FF90EF900895CF92DF92EF92FF92AF -:101210000F93CF93DF931F92CDB7DEB78983809171 -:101220003F02882371F0CE0101966C01EE24E39415 -:10123000F12C00E022E040E060E088E292E00E94D1 -:10124000BD1580912502882371F0CE0101966C01B5 -:10125000EE24E394F12C00E022E040E060E08EE038 -:1012600092E00E94BD1580910B02882371F0CE019F -:1012700001966C01EE24E394F12C00E022E040E0C2 -:1012800060E084EF91E00E94BD158091F101882318 -:1012900071F0CE0101966C01EE24E394F12C00E094 -:1012A00022E040E060E08AED91E00E94BD150F90E1 -:1012B000DF91CF910F91FF90EF90DF90CF90089545 +:10024000202025303258202530325800526F6C6CF7 +:100250006F766572206572726F723A2069676E6F91 +:100260007265640D0A000D0A0020253032580069BD +:100270006E7075742025643A000A4B6579626F616F +:1002800072642073746172742E0A000A55534220FE +:10029000636F6E666967757265642E0A000A0A5498 +:1002A0004D4B3A38343439616433382F4C5546411C +:1002B0000A0A003C03550053004200200074006FFE +:1002C00000200055005300420020006B00650079BB +:1002D0000062006F00610072006400200063006F24 +:1002E000006E007600650072007400650072000008 +:1002F000000E0374002E006D002E006B002E000017 +:10030000000403090409027400040100A032090476 +:100310000000010301010009211101000122400038 +:100320000705810308000A09040100010301020016 +:10033000092111010001224D000705820308000A6E +:10034000090402000103000000092111010001223B +:1003500036000705830308000A09040300020300AE +:100360000000092111010001222200070584032059 +:100370000001070504032000011201100100000024 +:1003800008EDFE5B001408010200010631FF09744C +:10039000A1010975150026FF009520750881020945 +:1003A00076150026FF00952075089102C005010909 +:1003B00080A10185021601002637001A81002AB7A4 +:1003C00000751095018100C0050C0901A10185038C +:1003D000160100269C021A01002A9C027510950144 +:1003E0008100C005010902A1010901A10005091947 +:1003F00001290515002501950575018102950175F5 +:100400000381010501093009311581257F950275A8 +:1004100008810609381581257F9501750881060533 +:100420000C0A38021581257F950175088106C0C028 +:1004300005010906A101050719E029E715002501B5 +:10044000950875018102950175088101050819015A +:10045000290595057501910295017503910105071F +:10046000190029FF150026FF00950675088100C0B8 +:10047000636F6E73756D65723A20253034580A00CB +:1004800073797374656D3A20253034580A000A0078 +:100490002530325820006B6579626F6172643A20B2 +:1004A000004C45443A20253032580A00290A0025DC +:1004B00075002F002575005D2800256400200025AB +:1004C0006400200025640020002564007C002530A5 +:1004D0003258006D6F7573656B6579205B62746E61 +:1004E0007C782079207620685D287265702F6163A2 +:1004F0006C293A205B00620A230B11241FBECFEF48 +:10050000DAE0DEBFCDBF04B603FE27C080919405BC +:1005100090919505A0919605B09197058730904BE5 +:10052000A740B04BD1F4109294051092950510920B +:1005300096051092970514BE84B7877F84BF0FB6C7 +:10054000F894A89580916000886180936000109273 +:1005500060000FBEE0E0F8E3099511E0A0E0B1E033 +:10056000ECEBF6E602C005900D92AE39B107D9F773 +:1005700025E0AEE9B1E001C01D92A439B207E1F770 +:1005800012E0CDE7D2E004C02197FE010E94423381 +:10059000CB37D107C9F70E949F1C0C945C330C9495 +:1005A0000000FF93EF93E0919E01F0919F0130973F +:1005B00009F00995EF91FF910895FC018591803034 +:1005C00011F0EFDFFBCF0895FF27E0E230E247FFB5 +:1005D0000CC0419597FF09C0EDE26095709580953C +:1005E0009095611D711D811D911D27FF02C02195F0 +:1005F00030E350E2AA27660F771F881F991FAA1FB2 +:10060000A41710F0A41B63955A95A9F7AA3008F017 +:10061000A95FA05DAF93F395611571058105910503 +:1006200041F7ED3211F4EF93F395F21718F43F937D +:10063000F395FBCF8F91B5DFFA95E1F70895E99136 +:10064000F9918591803021F0853219F0AADFF9CF38 +:10065000089520E0E89455915532C1F3503311F4D8 +:10066000689455915A3348F4505390F3220F022E58 +:10067000220F220F200D250FF4CF0EF42195899122 +:100680009991533619F3533729F1533559F1BC0178 +:1006900088279927E8945C3621F489919991689488 +:1006A0005591543639F446EF7EF077FF0DC08FEF49 +:1006B0009FEF0AC055374AE039F0583540E121F044 +:1006C000523642E009F00895FF93EF937DDFEF91FA +:1006D000FF91B7CFFF93EF93FC0181918030B9F385 +:1006E00060DFFBCFFF93EF9368DFF1CFDF93CF9312 +:1006F000CDB7DEB72596A3DFCF91DF91089580E0D7 +:100700000895089580E0089581E00895CF93DF93E0 +:10071000CDB7DEB728970FB6F894DEBF0FBECDBFBA +:10072000E22F29833A834B835C836D837E838F839F +:1007300098878091DC02E82BE093DC02FE0133967F +:10074000AE01475F5F4F2191243088F0AEEDB2E0FB +:1007500080E090E03D91311106C0DC01A452BD4F14 +:1007600012962C9304C001968630910599F7E417F0 +:10077000F50749F728960FB6F894DEBF0FBECDBF38 +:10078000DF91CF910895860F911D860F911DFC0179 +:100790005687458781E00895FC0187890895CF93A6 +:1007A000DF93EC018C819D81DC01ED91FC91048053 +:1007B000F581E02D6E8109951F86188A81E08A8B6C +:1007C0001E821B8A1C8A1D8A1E8A1F8A80E0DF9176 +:1007D000CF910895FC018681089581E0633009F08E +:1007E00080E0089581E0613009F080E00895860F8F +:1007F000911D860F911DFC01858596850895EF92C8 +:10080000FF92CF93DF93DC01E70152968C915297D0 +:10081000823049F11F966C931F9750964C935097D6 +:100820009B8193709330F9F49A8197FF1CC09E814D +:1008300058962C915897291718F458969C935897C6 +:10084000E82FF0E09F01220F331FE20FF31FEA0FA2 +:10085000FB1F9A819F7097839C81908794E091877A +:100860008F5F52968C93DF91CF91FF90EF90089518 +:10087000EF92FF920F9302970E94FF030F91FF9058 +:10088000EF9008950895CF92DF92EF92FF920F9329 +:100890001F93CF93DF93CDB7DEB762970FB6F8946F +:1008A000DEBF0FBECDBFDC0157962C91222381F015 +:1008B0006C010E94340BF60103891489258936895D +:1008C000DC01CB01801B910BA20BB30BB7FF02C065 +:1008D000F12C3AC0838590E09A8B898BE12C8E01B4 +:1008E0000F5F1F4F9E012F5E3F4F428566818481BF +:1008F00095810E942714F82E811118C029893A8900 +:100900002330310598F0D6011D968D919C911E974C +:10091000009761F0DC01ED91FC910190F081E02DF8 +:100920008E010F5F1F4F40E0B60109950E94340B06 +:10093000F601208DDC01CB01820F911DA11DB11D9F +:10094000838B948BA58BB68B8F2D62960FB6F89404 +:10095000DEBF0FBECDBFDF91CF911F910F91FF90F2 +:10096000EF90DF90CF9008952F923F924F925F9239 +:100970006F927F928F929F92AF92BF92CF92DF92AF +:10098000EF92FF920F931F93CF93DF93CDB7DEB714 +:10099000EB970FB6F894DEBF0FBECDBFDC01169605 +:1009A0005C90511019C1422E242E362E7C01FC0180 +:1009B000A480B580108ED501ED91FC910190F0815D +:1009C000E02D60E0C50109956C01009719F446ED32 +:1009D000542E0FC1FC01808091808114910409F490 +:1009E000FEC03701F7E06F0E711CDC0111967C929E +:1009F0006E9214964C928E01065D1F4F28E030E0F7 +:100A000040E060E0F701848195810E94E911182F90 +:100A10008111EBC01AA5D6018D929C92D501ED9162 +:100A2000FC910280F381E02D222D40E0632DC50171 +:100A30000995F7018683882309F4D4C099A9908782 +:100A4000282F40E060E0848195810E949412982EC6 +:100A5000D501ED91FC91D60114961C92882361F08A +:100A60000480F581E02DD70116966C91C50109959A +:100A7000F7011682592CBDC00190F081E02DD701FD +:100A800016966C91C5010995009709F4A0CF212F06 +:100A9000133108F022E1FC01448221110FC03BAC6C +:100AA000412C35E2832E31E0932E5701F2E0AF0E58 +:100AB000B11C6E0181E1C80ED11C38C030E08E013E +:100AC000065D1F4F40E0D70116966C91169714965D +:100AD0008D919C9115970E94E911182F811172C078 +:100AE000DECF9A828982BC82AB821E86188A1F86DC +:100AF00019A21AA21BA219A6DF82CE82D986C886A5 +:100B00008D818B878A87DD86CC868E010F5F1F4F94 +:100B1000242D40E0F7016681848195810E9437127F +:100B2000D70152968C91823019F043944310D9CF5B +:100B3000F7018289823009F044C0930142E0668166 +:100B4000848195810E941F0D68EE73E080E090E043 +:100B50000E94360BD7011F962C911F9740E01696E6 +:100B60006C91169714968D919C9115970E94021482 +:100B7000182F811127C068EE73E080E090E00E949A +:100B8000360BF701418D60E0C7010E940B16182F4C +:100B9000811118C020E040E060E0C7010E94E1152B +:100BA0008BE291E09A838983AE014F5F5F4F60E0F3 +:100BB00070E0C7010E94711581E0D70157968C93B0 +:100BC00018C011EDD701ED91FC910480F581E02D65 +:100BD000C7010995512E0DC029ED522E0AC097ED7F +:100BE000592E07C084ED582E04C0F60191828082F0 +:100BF000E9CF852DEB960FB6F894DEBF0FBECDBFC3 +:100C0000DF91CF911F910F91FF90EF90DF90CF90E8 +:100C1000BF90AF909F908F907F906F905F904F901C +:100C20003F902F9008953F924F925F926F927F92E4 +:100C30008F929F92AF92BF92CF92DF92EF92FF92EC +:100C40000F931F93CF93DF9300D000D0CDB7DEB7C3 +:100C50006C017C836B835A8349834C0180E1880E4D +:100C6000911C5601A7E0AA0EB11C11E084E0482EA9 +:100C70003601B2E16B0E711C93E0392E22E0522E48 +:100C80008B819C81892B09F4FBC0F60180A1823005 +:100C900059F128F4882341F0813071F0F1CF83308D +:100CA00039F18430C1F1ECCF5482858196819087EF +:100CB00087835286518610A3AE014D5F5F4FBE0100 +:100CC0006F5F7F4FC5010E94FF19882309F4D8C0C8 +:100CD000D6011596ED91FC911697808191968C9393 +:100CE0009197818192968C93F6017682658230A2EB +:100CF000D60192968C919297843011F493961C921F +:100D0000F60181A182508483258136813087278333 +:100D10008287818740A2D60192968C918430B1F06F +:100D2000853009F442C0823009F06EC0AE014D5FDB +:100D30005F4FBE016F5F7F4FC5010E94FF1988237F +:100D400009F49EC0F601858984A392C0AE014D5F6F +:100D50005F4FBE016F5F7F4FC5010E94FF1988235F +:100D600009F48EC0D60155968C915597833009F0C1 +:100D70007FC056968C915697813009F079C098962D +:100D80009C91989757968C91992321F0882309F488 +:100D90006FC003C0813009F06BC0F60113A39289C4 +:100DA00096A3938997A385A363C0AE014D5F5F4F60 +:100DB000BE016F5F7F4FC5010E94FF19882309F4B0 +:100DC0005FC0D60193968C919397882309F450C005 +:100DD00012968D919C911397009709F449C0DC01FC +:100DE000ED91FC910190F081E02D7401D601959672 +:100DF0000C91959797962C91979796964C919697DC +:100E000094966C91099534C0F6018585882319F074 +:100E1000813039F028C081A190E0029797878687BA +:100E200015872B813C8189819A81782F692FF60162 +:100E3000468557854115510581F0019621153105EB +:100E400029F41C821B8279836A830DC041505109A9 +:100E50005787468721503109E8CF3C832B839A83FB +:100E60008983F6011586F60186859785892B41F4DD +:100E7000D60116969C928E92159790961C9200CF52 +:100E80000F900F900F900F90DF91CF911F910F91C6 +:100E9000FF90EF90DF90CF90BF90AF909F908F909A +:100EA0007F906F905F904F903F900895EF92FF92E8 +:100EB0000F931F93CF936091FA017091FB01E09122 +:100EC000A701F091A8014091EE015091EF0120910E +:100ED000E2013091E3018091D6019091D7016E1724 +:100EE0007F07B1F4E091A501F091A6014E175F07CD +:100EF00079F4E091A301F091A4012E173F0741F48A +:100F0000E091A101F091A2018E179F0709F49FC003 +:100F10007093A8016093A7015093A6014093A50187 +:100F20003093A4012093A3019093A2018093A10187 +:100F3000ECEDF2E088E0DF011D928A95E9F720915F +:100F4000F2013091F3014091F4015091F50160916B +:100F5000F6017091F7018091F8019091F9010E94DA +:100F600086032091E6013091E7014091E80150911C +:100F7000E9016091EA017091EB018091EC0190919F +:100F8000ED010E9486032091DA013091DB0140914E +:100F9000DC015091DD016091DE017091DF018091F3 +:100FA000E0019091E1010E9486032091CE013091F1 +:100FB000CF014091D0015091D1016091D201709147 +:100FC000D3018091D4019091D5010E94860381E0E4 +:100FD0008093DB0280917C0580FF14C08091DD024C +:100FE0001F928F938091DC021F928F938AE392E08D +:100FF0009F938F930E9476030F900F900F900F9006 +:101000000F900F900CED12E0C6E084E3E82E82E032 +:10101000F82E80917C0580FF0CC0F80182811F9220 +:101020008F93FF92EF920E9476030F900F900F9094 +:101030000F90C1500F5F1F4FC111EBCF80917C0506 +:1010400080FF07C081E392E00E94DD0202C010929F +:10105000DB020E948D0B8C0184E692E00E946014FA +:10106000C8010E94A50B8536910580F020917C0572 +:1010700020FF0CC09F938F9382E292E09F938F9307 +:101080000E9476030F900F900F900F9084E692E0ED +:101090000E94FF0C9091A0018917B9F184E692E0BB +:1010A0000E94FF0C8093A00190917C0590FF0CC0E2 +:1010B0001F928F9381E192E09F938F930E9476031A +:1010C0000F900F900F900F908091A0018039E9F45C +:1010D00080917C0580FF15C08091A901823019F0B4 +:1010E0008DE191E002C088E191E09F938F9386E0CB +:1010F00092E09F938F930E9476030F900F900F9032 +:101100000F900E9449220E94C22381E0CF911F913B +:101110000F91FF90EF900895482F80E1489F900134 +:101120001124205E31092830310538F49091DC0219 +:10113000992319F0892F90E002C080E090E0EEED55 +:10114000F2E061E070E02191243070F0322F3295AE +:101150003F70431309C02F70DB0102C0AA0FBB1FF1 +:101160002A95E2F78A2B9B2BB2E0E43EFB0759F766 +:101170000895EF92FF920F931F93CF93DF938FEE1B +:1011800091E00E94DD02C0E0D0E088EEE82E81E030 +:10119000F82E02EE11E0DF93CF93FF92EF920E94C0 +:1011A00076038C2F0E948C080E94542E9F938F935D +:1011B0001F930F930E94760380EE91E00E94DD0260 +:1011C00021968DB79EB708960FB6F8949EBF0FBEB6 +:1011D0008DBFC031D105F9F6DF91CF911F910F91ED +:1011E000FF90EF900895CF92DF92EF92FF920F93CE +:1011F000CF93DF931F92CDB7DEB7898380916102D1 +:10120000882371F0CE0101966C01EE24E394F12C59 +:1012100000E022E040E060E08AE492E00E94B41541 +:1012200080914702882371F0CE0101966C01EE2473 +:10123000E394F12C00E022E040E060E080E392E003 +:101240000E94B41580912D02882371F0CE01019681 +:101250006C01EE24E394F12C00E022E040E060E039 +:1012600086E192E00E94B41580911302882371F008 +:10127000CE0101966C01EE24E394F12C00E022E013 +:1012800040E060E08CEF91E00E94B4150F90DF9198 +:10129000CF910F91FF90EF90DF90CF9008950C9435 +:1012A00056070E947B2E80918905882331F00E9489 +:1012B000A42E882321F00C94B61D0C945607089593 :1012C000FC017583648381E391E0918380838FE4E3 :1012D00091E093838283138A148A158A168A178A67 :1012E000418F178288E080878CE38187128613867E @@ -309,1353 +309,1349 @@ :10134000FDCF1EBC0DB407FEFDCF0E949A098EB5DD :1013500008952E9882608EBD0DB407FEFDCF6EBD40 :101360000DB407FEFDCF0C949A0988EF0E949C09EA -:10137000807C8034A1F018F4882301F1089580382E -:1013800019F0803CB9F0089588ED0E949C0981FD18 -:101390000BC069EC88ED0E94A90982E00CC088EDC1 -:1013A0000E949C0981FDF5CF6BEC88ED0E94A90994 -:1013B00083E001C081E08093A901089561ED88ED8B -:1013C0000E94A9091092A90108950F931F93CF932A -:1013D000DF938C01269A0E949A09219A229A2398D7 -:1013E000209A80E58CBD81E08DBD259868E188E874 -:1013F0000E94A90960E288E70E94A90960E088E7E5 -:101400000E94A909C1E0D0E0209799F088E60E94E7 -:101410009C09219680FFF8CF61EC88ED0E94A90914 -:1014200060E680ED0E94A90964E088EE0E94A909A7 -:1014300002C08FEF11C088EE0E949C0982FFFBCF93 -:10144000C8010E94B50960E288EC0E94A90961E028 -:1014500080E80E94A90980E0DF91CF911F910F9150 -:10146000089580917D05816080937D0584E692E0FA -:101470000E94E5098EEC91E090933602809335024C -:1014800082EC91E090931C0280931B0286EB91E02A -:1014900090930202809301028AEA91E09093E8011E -:1014A0008093E701089584E692E00E94D30C64E6FD -:1014B00072E083E592E00E949A1864E672E082E4AA -:1014C00092E00E949A1840E064E672E088E292E0BE -:1014D0000E94600940E064E672E08EE092E00E94C3 -:1014E000600940E064E672E084EF91E00E946009E8 -:1014F00040E064E672E08AED91E00E94600985E5D3 -:1015000091E09093CF018093CE019093C30180939B -:10151000C2019093B7018093B6019093AB01809381 -:10152000AA010895AF92BF92CF92DF92EF92FF92FD -:101530000F931F93CF93DF937C01B22E80917D0593 -:1015400080FF14C0DB01ED91FC910084F185E02D5A -:10155000CB0109951F928F938BE692E09F938F9317 -:101560000E946C030F900F900F900F90A02EC02F31 -:10157000D12F85E6C82E82E0D82E80917D059C2F44 -:101580009A199B1578F480FF0BC088811F928F9366 -:10159000DF92CF920E946C030F900F900F900F90EC -:1015A0002196EBCF80FF04C082E692E00E94D30236 -:1015B000D80111968C91813091F480917D0580FF46 -:1015C0001BC08CE492E0DF91CF911F910F91FF90AF -:1015D000EF90DF90CF90BF90AF900C94D302D701E3 -:1015E000129688E0F80101900D928A95E1F70E9429 -:1015F000290BF70173876287DF91CF911F910F91BC -:10160000FF90EF90DF90CF90BF90AF900895089536 -:1016100080E090E008958FEF9FEF08958FEF9FEFA8 -:1016200008950895862F0E94391B81E090E0089567 -:10163000E4EEF2E01382128288EE93E0A0E0B0E0E4 -:1016400084839583A683B7838BE591E09183808320 -:1016500008950C948E0B8F929F92AF92BF92CF926F -:10166000DF92EF92FF920E942A324B015C0120E050 -:1016700030E04AE755E40E94E1326B017C0120E052 -:1016800030E040E85FE30E94EF3187FD24C020E0B6 -:101690003FEF4FE757E4C701B6010E94DC3218164E -:1016A000ACF420E030E040E251E4C501B4010E9416 -:1016B000E1320E94FB3120E931E06115710581F0D2 -:1016C000C9010197F1F761507109F7CFC701B60160 -:1016D0000E94FB3102C061E070E0CB010197F1F79D -:1016E000FF90EF90DF90CF90BF90AF909F908F9042 -:1016F000089582E084BD93E095BD9AEF97BD8093F5 -:101700006E0008952FB7F8948091F2029091F30241 -:10171000A091F402B091F5022FBF08952FB7F8946D -:101720006091F2027091F3028091F4029091F502BF -:101730002FBF0895CF92DF92EF92FF920F931F93E6 -:101740002FB7F8944091F2025091F3026091F402A5 -:101750007091F5022FBF6A017B01EE24FF248C01FA -:1017600020E030E0C016D106E206F30610F4415046 -:1017700051099A01281B390BC9011F910F91FF9044 -:10178000EF90DF90CF9008951F920F920FB60F92B7 -:1017900011248F939F93AF93BF938091F202909106 -:1017A000F302A091F402B091F5020196A11DB11DC2 -:1017B0008093F2029093F302A093F402B093F502A7 -:1017C000BF91AF919F918F910F900FBE0F901F907F -:1017D0001895CF93DF93FC01862F807809F051C0D4 -:1017E000283008F04FC0442321F09581973009F448 -:1017F00049C0EF012D96A0E0B0E0119698819111BB -:1018000003C0662331F021C02596AF30B105A9F79A -:1018100039C085E08A9FE0018B9FD00D1124CE0F47 -:10182000DF1F442331F081E4888785818F5F8583C2 -:1018300002C081E0888725E02A9FC0012B9F900D80 -:101840001124E80FF91F80851DC06770660F660FB1 -:10185000660F442341F0606485818F5F85838770C4 -:10186000687F682B03C02770687B622B25E02A9F66 -:10187000C0012B9F900D1124E80FF91F6087862F60 -:1018800001C080E0DF91CF910895DF92EF92FF9247 -:101890000F931F93CF93DF93EC01E62EF12C85E09D -:1018A000689FB0011124FE01E60FF71F8085182FF5 -:1018B000177086FF21C001E085E0D82E8FEF800FE2 -:1018C0008F3008F001E0FE01D09EE00DF11D1124E3 -:1018D00080858695869586958770811305C0602FD3 -:1018E000CE010E94450CEACF0F5F003161F78D8178 -:1018F000811302C011501D8385E08E9DF0018F9DE4 -:10190000F00D1124EC0FFD1F108681E081871286F7 -:101910002296D783C683DF91CF911F910F91FF90BD -:10192000EF90DF900895611102C006960895FC01C2 -:101930003D9621E03081361307C035E0239F800DAE -:10194000911D1124069608952F5F3596203191F749 -:1019500080E090E00895FC016134C1F43F969C0161 -:10196000265A3F4F61E0AC014E5F5F4FDF01129797 -:101970001C9211966C93108213974D935C9335963D -:10198000E217F30799F7FC01158208953D9621E0CF -:101990003081361303C0622F0C94450C2F5F3596AF -:1019A0002031B1F70895CF93DF93FC018DE691E0EC -:1019B000918380831582108681E081871286CF0112 -:1019C000029697838683128228E023832CE3248364 -:1019D000DF011F969F01265A3F4F41E0ED012297FC -:1019E0001882219648831C922397998388831596A1 -:1019F000A217B30799F7EA58FF4F108281E180934D -:101A0000FA02DF91CF9108958091FA020895CF9361 -:101A1000DF931F92CDB7DEB749830E94930C4981B3 -:101A2000009789F0DC01ED91FC911197309759F006 -:101A300013969C9180E0891731F02081241731F0B2 -:101A400033968F5FF8CF80E090E001C0CF010F9018 -:101A5000DF91CF9108950F931F93CF93DF932115BB -:101A6000310571F0E901042F162F0E94930CFC013F -:101A7000892B41F01283D183C083038380E003C0AC -:101A800088ED01C086EDDF91CF911F910F910895F0 -:101A9000CF92DF92FF920F931F93CF93DF93662332 -:101AA00081F1F62E8C016C0186E5C80ED11CC0E0D8 -:101AB000D0E0D6018D919D916D010097F1F0DC0190 -:101AC000ED91FC910084F185E02D09958F1115C0F1 -:101AD000AB96CC0FDD1FC00FD11F88819981DC012F -:101AE000ED91FC910480F581E02DDF91CF911F9164 -:101AF0000F91FF90DF90CF9009942196C031D105CE -:101B0000C1F680E0DF91CF911F910F91FF90DF90A0 -:101B1000CF9008952E980895CF93DF931F92CDB75D -:101B2000DEB789830E948A0D89818EBD0DB407FEC0 -:101B3000FDCF1EBC0DB407FEFDCF0E949A098EB5E5 -:101B40000F90DF91CF910895CF93DF9300D0CDB761 -:101B5000DEB76A8389830E948A0D898182608EBD87 -:101B60006A810DB407FEFDCF6EBD0DB407FEFDCF3B -:101B70000F900F90DF91CF910C949A098F929F92C2 -:101B8000AF92BF92DF92EF92FF920F931F93CF938A -:101B9000DF931F92CDB7DEB74C01D62E5901498392 -:101BA0000E94930C7C014981009709F440C0FC011C -:101BB00080819181892BE9F16D2DC4010E94070D6F -:101BC000F501918380830097B1F1FC012281269574 -:101BD000269530E02031310514F02FE030E081E02F -:101BE00090E0A0E0B0E004C0880F991FAA1FBB1FBF -:101BF0002A95D2F70197F801918380836D2D80EEAD -:101C00000E94A40D88ED0E948C0D682FF70184813D -:101C1000882339F0F401EA58FF4F80818260682BF5 -:101C200001C0697F88ED0E94A40D80E005C086EDAB -:101C300003C087ED01C08BED0F90DF91CF911F9115 -:101C40000F91FF90EF90DF90BF90AF909F908F909B -:101C500008958F929F92AF92BF92CF92DF92EF92B0 -:101C6000FF920F931F93CF93DF93862E942E5901EB -:101C70000E94290B6B017C0128E8C20E23E1D21ED1 -:101C8000E11CF11C00E010E0D0E0C0E098280E94C8 -:101C9000290BDC01CB018C199D09AE09BF09B7FFE7 -:101CA0002DC0692D80EF0E94A40D0E94290BDC013C -:101CB000CB018C199D09AE09BF09B7FF09C088EC9B -:101CC0000E948C0D87FFF1CF60E888EC0E94A40D84 -:101CD00088EF0E948C0DC82FCF70C43019F0CE3021 -:101CE00051F00CC00F5F1F4FA114B10481F20A150F -:101CF0001B0569F603C0DF5FD33049F68C2FDF91F7 -:101D0000CF911F910F91FF90EF90DF90CF90BF90F8 -:101D1000AF909F908F9008959F92AF92BF92CF9275 -:101D2000DF92EF92FF920F931F93CF93DF937C018B -:101D3000C42F122F992493946C01C60ED11CC60E89 -:101D4000D11C86E5C80ED11CA42EB12CABE2AA0E84 -:101D5000B11CAA0CBB1CAE0CBF1CF601808191818A -:101D6000DC01ED91FC910280F381E02D202F412FC9 -:101D70006C2F0995803EC9F4C1110BC061E088EE5B -:101D80000E94A40D66E670E080E090E00E942B0BBC -:101D900016C0F50180819181DC01ED91FC910284F6 -:101DA000F385E02D612F09950AC08D3031F49FEF46 -:101DB000990D933008F040C016C081113DC0F60166 -:101DC00080819181DC01ED91FC910190F081E02D09 -:101DD000202F412F6C2F0995D82F8D3061F48FEF74 -:101DE000890D833050F464E670E080E090E00E945A -:101DF0002B0B9394B2CF8823F1F0C1110BC061E09B -:101E000088EE0E94A40D66E670E080E090E00E94FB -:101E10002B0B11C0EC2FF0E0BB96EE0FFF1FEE0D69 -:101E2000FF1D80819181DC01ED91FC910284F3859D -:101E3000E02D612F09958D2FDF91CF911F910F918B -:101E4000FF90EF90DF90CF90BF90AF909F9008955C -:101E50000F931F93CF93DF9300D0CDB7DEB78A01E6 -:101E60006A8389830E948A0D898182608EBDF80110 -:101E70006A81862F882339F00DB407FEFDCF91913A -:101E80009EBD8150F7CF060F111D0DB407FEFDCF8B -:101E90000E949A09C8010F900F90DF91CF911F9176 -:101EA0000F9108952F923F924F925F926F927F927F -:101EB0008F929F92AF92BF92CF92DF92EF92FF925A -:101EC0000F931F93CF93DF9300D000D01F92CDB715 -:101ED000DEB77D836C835A016901FB0121808FEF9E -:101EE000820D803408F075C00E94290B2B013C0143 -:101EF000F8E84F0EF3E15F1E611C711CEC81FD815F -:101F0000828180FD02C060E401C060E888EE0E942A -:101F1000A40D20E0312CC114D10409F44AC076018B -:101F20002C143D0408F47101EA82A8016E2D80E1B1 -:101F30000E94280F6E2D88E30E94A40DEC81FD8184 -:101F40006081606280EF0E94A40D88EC0E948C0D7D -:101F500087FFFBCF60E888EC0E94A40D88EF0E9409 -:101F60008C0D282F2F70812C912C1982222361F047 -:101F70002B830E94290BDC01CB0184199509A6094A -:101F8000B7092B81B7FD05C0CE18DF080E0D1F1D48 -:101F9000C2CF263001F12E3009F456C0243049F466 -:101FA000FFEF8F1A9F0AA114B10459F18A149B0400 -:101FB00041F588EF2B830E948C0D85FB882780F9E3 -:101FC000EC81FD81928180FB90F992832B81822F9D -:101FD00041C08AED3FC088EF0E948C0D85FB8827A9 -:101FE00080F991E08927EC81FD81928180FB90F955 -:101FF000928390FD02C060E401C060E888EE0E9418 -:10200000A40D60E088E30E94A40DF801608180E1E6 -:102010000E94A40D6A8188E30E94A40DEC81FD81D9 -:102020006081606280EF0E94A40D88EC0E948C0D9C -:1020300087FFFBCF60E888EC0E94A40D88EF0E9428 -:102040008C0D282F2F7092CF89818F5F89838330E9 -:10205000C1F6AFCF0F900F900F900F900F90DF91C0 -:10206000CF911F910F91FF90EF90DF90CF90BF9095 -:10207000AF909F908F907F906F905F904F903F9028 -:102080002F9008952F923F924F925F926F927F927E -:102090008F929F92AF92BF92CF92DF92EF92FF9278 -:1020A0000F931F93CF93DF93CDB7DEB72A970FB669 -:1020B000F894DEBF0FBECDBF4C017A8769875C8381 -:1020C0004B836901F901A080B180FB01F181FA83A2 -:1020D000F90111821082FB01828181FD02C060E161 -:1020E00001C060E288EE0E94A40D2E2C312C412C00 -:1020F000512CAD822B813C81E985FA85408160E0DD -:10210000C4010E94290E89838630B1F488EF0E94B1 -:102110008C0D82958170F1E08F27E985FA85928197 -:1021200080FB91F9928391FD02C060E101C060E201 -:1021300088EE0E94A40DDECF9981911163C088ECD6 -:102140000E948C0D82FF5CC080E30E948C0DF82EF3 -:10215000282F30E0A216B30608F4FD80F601208196 -:1021600031816F2C712CA501421B530B57FF02C00C -:1021700040E050E09301461557050CF49A012E8378 -:102180003F8328870E948A0DF8E0FEBD88853F8145 -:102190002E810DB407FEFDCFF801882341F01EBC4F -:1021A00081500DB407FEFDCF4EB54193F6CF020F1F -:1021B000131F0E949A0964E088EC0E94A40DF601A6 -:1021C00020813181620E731E71826082FA81FF1656 -:1021D00018F06A147B0460F088EF0E948C0D8295E1 -:1021E0008170E985FA85928180FB91F992830AC01A -:1021F000EE2009F47FCFC201B1010E942B0B7ACFF0 -:1022000090EF998389812A960FB6F894DEBF0FBEAE -:10221000CDBFDF91CF911F910F91FF90EF90DF9095 -:10222000CF90BF90AF909F908F907F906F905F9076 -:102230004F903F902F9008952F923F924F925F9230 -:102240006F927F928F929F92AF92BF92CF92DF92C6 -:10225000EF92FF920F931F93CF93DF93CDB7DEB72B -:1022600062970FB6F894DEBF0FBECDBF3C01F42ECF -:10227000322E202E5C2D4FA058A4C9A4DAA4188AAF -:102280001F861E861D868E01035F1F4F9E01215FE4 -:102290003F4F598B0E94BE0D598981119DC03982D3 -:1022A0002A82EB825C83BE82AD8298868F82AE01E9 -:1022B0004F5F5F4F68E080E20E94280F2D853E85CA -:1022C0004F2D60E1C3010E94290E182F811180C09B -:1022D000232C221C2224221CC114D10409F46BC01B -:1022E000EF85F8898281222009F456C082608283BA -:1022F000540133243394A114B10409F44AC05C8618 -:102300004B864D855E856F857889E12C86019E011F -:10231000255F3F4FC3010E944210182F8630B1F451 -:102320002F85388988EF298B3A8B0E948C0D85FB8D -:10233000882780F9832529893A89D90112969C91A9 -:10234000129780FB91F912969C93D5CF811140C0D2 -:10235000EBA5FCA53097A1F00190F081E02D019054 -:10236000F081E02DC4018A199B099A8789876B85C2 -:102370007C859E01275F3F4FA6018BA59CA50995F3 -:102380008B859C85A81AB90A8415950508F0B3CFEA -:1023900012C011111DC014C0816082834D855E85FD -:1023A00086019201BF01C3010E94520F811114C026 -:1023B0002D853E850FC02D853E85211003C00AC0A6 -:1023C0002D853E8560EA4F2DC3010E94290E04C071 -:1023D000812F02C060E8F7CF62960FB6F894DEBF97 -:1023E0000FBECDBFDF91CF911F910F91FF90EF9066 -:1023F000DF90CF90BF90AF909F908F907F906F9025 -:102400005F904F903F902F9008958F929F92AF9240 -:10241000BF92CF92EF920F931F931F921F921F9321 -:102420000F933F932F934901A12CB12CCC24C3943B -:10243000E12C06E020E80E941C110F900F900F90F5 -:102440000F900F900F901F910F91EF90CF90BF9032 -:10245000AF909F908F9008958F929F92AF92BF926E -:10246000CF92EF92FF920F931F921F92FF92EF92E3 -:102470003F932F934901A12CB12C22E0C22EE02ED4 -:1024800006E020E80E941C110F900F900F900F9013 -:102490000F900F900F91FF90EF90CF90BF90AF9063 -:1024A0009F908F9008954F925F926F927F928F923C -:1024B0009F92AF92BF92CF92DF92EF92FF920F93D3 -:1024C0001F93CF93DF93CDB7DEB7C054D1090FB6BA -:1024D000F894DEBF0FBECDBF3C01D62E542E422E47 -:1024E000C02ECE0101965C017C01022F29E030E074 -:1024F000C3010E942C1281111BC08B809C801F93F2 -:10250000CF92BF92AF921F9280E48F93A12CB12CF7 -:1025100082E0C82EE42C06E020E8452D6D2DC30195 -:102520000E941C110F900F900F900F900F900F9022 -:10253000C05CDF4F0FB6F894DEBF0FBECDBFDF919A -:10254000CF911F910F91FF90EF90DF90CF90BF90B0 -:10255000AF909F908F907F906F905F904F90089575 -:102560008F929F92AF92BF92CF92EF920F93CF93A1 -:102570001F921F921F921F921F921F92812C912CCB -:10258000A12CB12CC12CE22E05E020E00E941C11F0 -:10259000C82F6CE271E080E090E00E942B0B0F905E -:1025A0000F900F900F900F900F908C2FCF910F9155 -:1025B000EF90CF90BF90AF909F908F9008950F9322 -:1025C0001F93CF93DF938A3F3FEF930711F486ED7C -:1025D0002DC0DC011696ED91FC911797EF2B09F1B8 -:1025E000122F242FEC011A8740E00E94E90B082FDC -:1025F0008823C9F0682FCE010E94930C009739F30D -:10260000FC011483202F40E060E0CE010E94B01254 -:10261000182F882351F0602FCE010E94AB0C812F20 -:1026200005C087ED03C084ED01C080E0DF91CF914C -:102630001F910F9108952F923F924F925F926F9248 -:102640007F928F929F92AF92BF92CF92DF92EF9242 -:10265000FF920F931F93CF93DF93CDB7DEB76697AB -:102660000FB6F894DEBF0FBECDBF1B8A38E03C8B9F -:102670003CE33D8B8A3F3FEF930709F4ADC0B22E98 -:10268000342EA62E7C01DC011696CD90DC90179797 -:10269000CE01439617969C938E9316971A962C9379 -:1026A0008E010F5F1F4F22E130E040E060E0C70184 -:1026B0000E940512F701D782C6828111A5C06984E4 -:1026C0007A844B845C843D813E8B2E80670186E555 -:1026D000C80ED11C460110E0D4018D919C91009749 -:1026E00089F1DC01ED91FC910084F185E02D0995E3 -:1026F000811128C0F40180819181DC01ED91FC9170 -:102700000088F189E02D622D09958823D9F0F40124 -:1027100080819181DC01ED91FC910484F585E02DAF -:10272000A201B3010995811159C0F4018081918101 -:10273000DC01ED91FC910684F785E02D6E89099509 -:1027400081114CC01F5FB2E08B0E911C103121F63D -:1027500010E0F60180819181009789F1DC01ED9113 -:10276000FC910084F185E02D0995811128C0F601C6 -:1027700080819181DC01ED91FC910088F189E02D4F -:10278000622D09958823A9F1F60180819181DC01F0 -:10279000ED91FC910484F585E02DA201B30109952A -:1027A00081110DC0F60180819181DC01ED91FC91D8 -:1027B0000684F785E02D6E8909958823D1F01F5F87 -:1027C000B2E0CB0ED11C103121F62B2D432D6A2DFA -:1027D000C7010E94DF1218C086ED16C00B2D232DF5 -:1027E0004A2D612FC7010E948C0E813D09F4AACFAA -:1027F0000BC00B2D232D4A2D612FC7010E948C0E7B -:10280000982F977F913DD9F266960FB6F894DEBF68 -:102810000FBECDBFDF91CF911F910F91FF90EF9031 -:10282000DF90CF90BF90AF909F908F907F906F90F0 -:102830005F904F903F902F9008958F929F92AF920C -:10284000BF92CF92EF920F931F921F921F921F92EF -:102850001F921F92812C912CA12CB12CC12CE22E05 -:1028600009E020E00E941C110F900F900F900F9034 -:102870000F900F900F91EF90CF90BF90AF909F90DF -:102880008F9008958F929F92AF92BF92CF92DF92D6 -:10289000EF920F931F93CF93DF9300D000D0CDB76B -:1028A000DEB76C01590148011C821B821A82198211 -:1028B0008E010F5F1F4F9E012D5F3F4F0E94BE0D87 -:1028C000811109C049815A816B817C818401950104 -:1028D000C6010E9442100F900F900F900F90DF9151 -:1028E000CF911F910F91EF90DF90CF90BF90AF905D -:1028F0009F908F900895AF92BF92CF92DF92EF9208 -:10290000FF920F931F93CF938C011D990EC088ECFB -:102910000E948C0D85FF05C0C8010E94B50960E2C8 -:1029200001C060E088EC0E94A40D8091A901813073 -:1029300039F040F0823079F0833039F5C1E00CC0D5 -:1029400083E106C08091FA02807F8031F1F081E15D -:102950008093FA021AC0C0E08091FA02807F803131 -:10296000A9F40E94290BDC01CB0188539F4FAF4F84 -:10297000BF4F8093F6029093F702A093F802B093B2 -:10298000F90280E28093FA0201C0C0E0780186E596 -:10299000E80EF11C6801A6E7CA0ED11C5701F5012B -:1029A000819191915F01009739F0DC01ED91FC91EB -:1029B0000680F781E02D0995AC14BD0481F7909154 -:1029C000FA02903409F43FC050F4903221F1903370 -:1029D000A1F1913109F084C0F60110820AC091354D -:1029E00009F458C0903809F46AC0903509F078C0ED -:1029F00039C0D7018D919D917D01009739F0DC019F -:102A0000ED91FC910480F581E02D0995EC14FD0415 -:102A100081F782E163C00E94290B0091F6021091B8 -:102A2000F7022091F8023091F902DC01CB01801B02 -:102A3000910BA20BB30BB7FD53C061E088EE0E946F -:102A4000A40D80E44BC088EE0E948C0D80FD48C030 -:102A500088ED0E948C0D682F686088ED0E94A40D9F -:102A600080E53CC088EC0E948C0D86FF39C081E572 -:102A70008093FA020E94290BDC01CB014496A11D30 -:102A8000B11D8093F6029093F702A093F802B093E1 -:102A9000F90226C00E94290BC090F602D090F702DE -:102AA000E090F802F090F902DC01CB018C199D094D -:102AB000AE09BF09B7FD14C080E88093FA022C2F3D -:102AC00040E060E0C8010E941B13882331F0823D82 -:102AD00039F08093FB0280EA01C080E98093FA021A -:102AE000CF911F910F91FF90EF90DF90CF90BF900B -:102AF000AF9008958F929F92AF92BF92CF92EF9234 -:102B00000F93CF93DF93CDB7DEB7C054D1090FB683 -:102B1000F894DEBF0FBECDBF5F934F939E012F5F32 -:102B20003F4F3F932F931F9220E42F9320E8822E54 -:102B3000912C5B0132E2C32EE12C06E021E840E05B -:102B4000FC016681848195810E941C110F900F9079 -:102B50000F900F900F900F90C05CDF4F0FB6F8945E -:102B6000DEBF0FBECDBFDF91CF910F91EF90CF9021 -:102B7000BF90AF909F908F9008958F929F92AF9249 -:102B8000BF92CF92DF92EF92FF920F938E2CA42EE2 -:102B9000B12C1F921F92DF92CF92FF92EF929F2C47 -:102BA000C22EE02E09E021E2462FFC0166818481DD -:102BB00095810E941C110F900F900F900F900F9015 -:102BC0000F900F91FF90EF90DF90CF90BF90AF905C -:102BD0009F908F9008958F929F92AF92BF92CF92C5 -:102BE000EF920F93A62EB12C1F921F921F921F924D -:102BF0001F921F92812C912CC22EE42E0AE021E21A -:102C000040E0FC016681848195810E941C110F9037 -:102C10000F900F900F900F900F900F91EF90CF901B -:102C2000BF90AF909F908F9008958F929F92AF9298 -:102C3000BF92CF92EF920F93A62EB12C1F921F92AC -:102C40001F921F921F921F92812C912CC12CE42E57 -:102C50000BE021E240E0FC016681848195810E94C5 -:102C60001C110F900F900F900F900F900F900F91DD -:102C7000EF90CF90BF90AF909F908F900895FC0100 -:102C80008285089581E0693009F080E00895CF934E -:102C9000DF93EC018A819B81DC01ED91FC91048042 -:102CA000F581E02D6A8509958A85813439F4EA81B8 -:102CB000FB81EA58FF4F8081846080831A861B86DF -:102CC0001C861D861E861F86188A80E0DF91CF91A4 -:102CD00008958F929F92AF92BF92CF92EF920F93EF -:102CE000A42EB12CB22A1F921F921F921F921F92E4 -:102CF0001F92812C912CC12CE62E01E023E240E0B2 -:102D0000FC016285828193810E941C110F900F90BB -:102D10000F900F900F900F900F91EF90CF90BF906A -:102D2000AF909F908F9008958F929F92AF92BF9295 -:102D3000CF92EF920F93A62EB12C1F921F923F932A -:102D40002F935F934F934A01C12CE12C00E023EABB -:102D500040E0FC016285828193810E941C110F90EA -:102D60000F900F900F900F900F900F91EF90CF90CA -:102D7000BF90AF909F908F9008958F929F92AF9247 -:102D8000BF92CF92EF920F93A42EB12CB22A1F9232 -:102D90001F921F921F921F921F92812C912CC12C67 -:102DA000E62E03E023E240E0FC016285828193810C -:102DB0000E941C110F900F900F900F900F900F908A -:102DC0000F91EF90CF90BF90AF909F908F9008950C -:102DD0002F923F924F925F926F927F928F929F922B -:102DE000AF92BF92CF92DF92EF92FF920F931F9319 -:102DF000CF93DF93CDB7DEB7E8970FB6F894DEBF79 -:102E00000FBECDBFDC011296ED90FC9013971A9681 -:102E10003C91311104C1122F242E362E3C01D701D2 -:102E2000ED91FC910190F081E02D60E0C7010995E2 -:102E30006C01009709F4F5C0FC01A080B180A114D9 -:102E4000B10409F4F0C04301F4E08F0E911CDC01E1 -:102E500011969C928E9214961C93FE0131962F012E -:102E60008F0128E030E040E060E0D30112968D91C0 -:102E70009C9113970E940512F60114828111D9C00A -:102E800009818D81893009F0D0C0D701ED91FC9185 -:102E90000280F381E02D222D41E0632DC7010995C9 -:102EA000F3018287882309F4C2C098859583282F6F -:102EB00040E060E0828193810E94B012182F882345 -:102EC00089F0D601AD92BC92D701ED91FC910480BE -:102ED000F581E02DD3011A966C91C7010995F30194 -:102EE0001286ABC0202F013208F020E2D601AD924D -:102EF000BC9221110BC0940142E0F30162858281F2 -:102F000093810E942B0D811197C010C030E0820187 -:102F100040E0D3011A966C911A9712968D919C916C -:102F200013970E940512811187C0E5CF1F921F924F -:102F30005F924F921F9288E08F9388E0882E912CA9 -:102F4000A12CB12C99E2C92EE12C06E020EA40E048 -:102F5000F3016285828193810E941C11182F0F90CA -:102F60000F900F900F900F900F90811166C08B8182 -:102F7000D3011B968C931B97720100E028E030E090 -:102F800040E01A966C911A9712968D919C91139726 -:102F90000E942C12811150C02B813C8140E0F30132 -:102FA0006285828193810E942C12811145C0298102 -:102FB00030E0CE0181967C0140E0D3011A966C91FD -:102FC0001A9712968D919C9113970E942C12811141 -:102FD00033C02E8140E0F3016285828193810E949B -:102FE0001D14811129C001E0D3011B968C911B9700 -:102FF000801740F020E0402F68E0C3010E94BD161A -:103000000F5FF2CF1296ED91FC911397EA58FF4FA4 -:1030100080818460808381E050968C930EC019ED8E -:103020000CC016ED0AC017ED08C011ED06C014ED76 -:1030300004C0F601B182A082182F812FE8960FB646 -:10304000F894DEBF0FBECDBFDF91CF911F910F91DE -:10305000FF90EF90DF90CF90BF90AF909F908F90B8 -:103060007F906F905F904F903F902F900895CF92F8 -:10307000DF92FF920F931F93CF93DF9300D000D086 -:10308000CDB7DEB78C01F62E19821A821B821C8204 -:1030900020E0462F61E10E94691620E04F2D60E19B -:1030A000C8010E94691620E04F2D64E0C8010E940B -:1030B000BD1683E0C82ED12C9E012F5F3F4F44E008 -:1030C00050E06F2DC8010E9494168823F1F020E093 -:1030D0004F2D64E1C8010E94691620E04F2D60E188 -:1030E000C8010E94691664E170E080E090E00E94EF -:1030F0002B0B0F900F900F900F90DF91CF911F919E -:103100000F91FF90DF90CF90089589819A81AB81D4 -:10311000BC819D7F83309140A041B105C1F264E63E -:1031200070E080E090E00E942B0B81E0C81AD1088B -:1031300019F6CDCFFC0187E791E0918380837383FB -:103140006283128613861486158616861786108A61 -:10315000148288E085839CE3968391E0978380873F -:1031600084E0818761157105B1F0DB01AA5ABF4F78 -:1031700080E090E02D913D91232B49F48B96880FB0 -:10318000991FDB01A80FB91FED93FC9308950196D9 -:103190008031910579F70895EF92FF920F931F9375 -:1031A000CF938C01C62F7A01FA0180819181A2818F -:1031B000B3818130F3E09F07F1E0AF07B105D1F0B3 -:1031C00060F48115E1E09E07AE07B10571F1813031 -:1031D0009140A140B10571F064C0833021E09207B5 -:1031E00020E1A207B105E1F183309340A041B10590 -:1031F000B9F157C08091FC02811153C020E04C2FDF -:1032000061E1C8010E94691620E04C2F60E1C8010D -:103210000E94691620E04C2F64E0C8010E94BD1690 -:1032200081E08093FC0281EB3DC020E0462F61E10C -:10323000C8010E94691620E04C2F60E1C8010E947D -:1032400069161092FC02F80162856770C770660FFC -:10325000660F660F6C2B828193810E94480D21C0FE -:1032600020E04C2F64E1C8010E94691620E04C2F39 -:1032700060E1C8010E94691664E170E080E090E0BE -:103280000E942B0BF8016285F701218126952170A0 -:1032900067704C2FF801828193810E941B1310925A -:1032A000FC0280E0CF911F910F91FF90EF90089565 -:1032B000CF92DF92EF920F931F93CF93DF93CDB70F -:1032C000DEB72E970FB6F894DEBF0FBECDBF6C01F0 -:1032D00081E090E09E878D87E12C8E010F5F1F4F6C -:1032E0009E01235F3F4F41E0F60162858281938119 -:1032F0000E944214811151C002E011E089818023B3 -:10330000D1F019861A861B861C869E01275F3F4FC7 -:1033100044E050E0612FC6010E94941681110BC059 -:10332000AE01475F5F4F612FC6010E94CC18813B01 -:1033300099F1811132C0000F1F5F1830F9F611E0CA -:10334000F6018385811740F119861A861B861C8633 -:103350009E01275F3F4F44E050E0612FC6010E946D -:103360009416811117C089859A8587709170813074 -:10337000914081F48B859C8581609C878B87AE0111 -:10338000475F5F4F612FC6010E94CC18813B21F03F -:10339000811103C01F5FD4CF80E02E960FB6F89442 -:1033A000DEBF0FBECDBFDF91CF911F910F91EF9088 -:1033B000DF90CF9008950F931F93CF93DF93FC017D -:1033C0002089211102C080E020C0EC010E94290B5D -:1033D0000C851D852E853F85DC01CB01801B910B63 -:1033E000A20BB30BB7FDEFCFCE010E945819182FD7 -:1033F0000E94290BDC01CB018C599F4FAF4FBF4F6F -:103400008C879D87AE87BF87812FDF91CF911F91DA -:103410000F910895CF93DF93FC01EA0180819181A0 -:10342000892B19F580E027C028813981232BD1F31E -:10343000DB012D913C91D9019C91A381B0E0A81BA7 -:10344000B10920813181A20FB31F9C9382818150E9 -:10345000828388819981019799838883DB018D918B -:103460009C91119701968D939C9382818111DCCF61 -:103470008381828381E0DF91CF910895CF92DF92A3 -:10348000EF92FF920F931F93CF93DF936C01EB01A9 -:103490007B01E40EF51E00E010E0CE15DF0561F0C3 -:1034A0006991D601ED91FC910190F081E02DC6016A -:1034B0000995080F191FF1CFC801DF91CF911F9116 -:1034C0000F91FF90EF90DF90CF90089580910904C5 -:1034D0000895CF93DF9300D01F92CDB7DEB79C0144 -:1034E00080918C05843019F593E099833B832A837E -:1034F0009093E9008FEF9091E800815095FD06C010 -:1035000095ED9A95F1F700008111F5CF8091E800D3 -:1035100085FF0DC040E050E063E070E0CE01019611 -:103520000E94E91D8091E8008E778093E8000F905B -:103530000F900F90DF91CF910895CF93DF9300D03C -:103540001F92CDB7DEB720918C05243021F522E003 -:1035500029839B838A8383E08093E9008FEF909196 -:10356000E800815095FD06C095ED9A95F1F70000B1 -:103570008111F5CF8091E80085FF0DC040E050E05B -:1035800063E070E0CE0101960E94E91D8091E800A1 -:103590008E778093E8000F900F900F90DF91CF917E -:1035A000089520918C052430F1F422E02093E90065 -:1035B0002FEF3091E800215035FD06C035ED3A95EA -:1035C000F1F700002111F5CF2091E80025FF0BC095 -:1035D00040E050E065E070E00E94E91D8091E80065 -:1035E0008E778093E8000895CF93DF9320918C0528 -:1035F000243049F521E02093E90021E8215059F0D9 -:103600003091E80035FD07C0EFE3F1E03197F1F7C5 -:1036100000C00000F3CF2091E80025FF14C0EC01AA -:1036200040E050E068E070E00E94E91D8091E80011 -:103630008E778093E80088E0FE01A1E0B4E001907D -:103640000D928A95E1F7DF91CF910895CF93C091C4 -:10365000FF02C1110BC00E948E0B643C79408105B2 -:10366000910520F081E08093FF02C1E08C2FCF9183 -:103670000895CF93C82F0E94261B882309F448C0C1 -:103680000FB607FE45C080918C05843009F040C01C -:103690009091E9009F702091EC00822F817020FDB5 -:1036A00080E8982B84E08093E9008091EB0080FF14 -:1036B0002CC08091EE0087FF28C0209103018091EB -:1036C0000201821709F449C08091E80085FF1DC0FE -:1036D000E0910001F0910101E20FF11D80812F5F67 -:1036E000309104012323209303018093F100809102 -:1036F000E80085FDE2CF8091E80080FFDECF2091D9 -:10370000E8002E772093E800D8CF9F709093E900CF -:103710002091020130E0B9016F5F7F4F9091040169 -:10372000492F50E0462357236091030170E046176C -:10373000570789F08091000190910101FC01E20F8F -:10374000F31FC083809102018F5F90910401892350 -:10375000809302010BC08FEF0AC08091E80085FFC3 -:10376000D4CFC093F1009F709093E90080E0CF9197 -:1037700008958BE992E00E94D30280918B0581111C -:1037800009C00E947E1F0E94DB1F8091E2008460BE -:103790008093E200089587E992E00E94D30210929C -:1037A0008B0508950895089542E061EC81E00E9440 -:1037B000F81E42E061EC82E00E94F81E42E061ECFB -:1037C00083E00E94F81E42E261EC84E00C94F81E53 -:1037D00080918E05833009F453C030F4813071F04C -:1037E000823009F48CC008958A3009F478C08B3097 -:1037F00009F45EC0893009F09AC020C080918D051F -:10380000813A09F094C08091E800877F8093E800B6 -:103810008091910590919205892B21F468E081E0D7 -:1038200094E003C060E080E090E070E00E94341E0D -:103830008091E8008B778093E800089580918D0552 -:10384000813209F074C08091910590919205892B85 -:1038500009F06DC08091E800877F8093E800809137 -:10386000E80082FD05C080918C058111F8CF5FC012 -:103870008091F100809309048091E8008B7753C018 -:1038800080918D05813A09F052C080919105909107 -:103890009205892B09F04BC08091E800877F8093C7 -:1038A000E8008091E80080FFFCCF80910F0136C0D6 -:1038B00080918D058132D9F5809191059091920585 -:1038C000892BA9F58091E800877F8093E8000E940A -:1038D0002D1F80918F0580930F010C9408288091F3 -:1038E0008D05813221F58091E800877F8093E80083 -:1038F0000E942D1F8091900580930A040895809165 -:103900008D05813AA1F48091E800877F8093E800DB -:103910008091E80080FFFCCF80910A048093F10041 -:103920008091E8008E778093E8000C942D1F089515 -:10393000089508958091090480930003109209046A -:1039400080E00E9404090E94E2230C9408280C9451 -:103950009A1C0E949B2E80918A05882329F00E9440 -:10396000C42E81110C94D31D0895CF9384B7877F03 -:1039700084BF0FB6F894A895809160008861809309 -:103980006000109260000FBE90E080E80FB6F894DF -:1039900080936100909361000FBE89E39BE10E94D8 -:1039A000522E85E091E00E94602287E892E00E941A -:1039B000D3020E94981C0E9421230E947E1F0E9415 -:1039C000DB1F8091E20084608093E20078940E9483 -:1039D000232380918C05843019F00E946807F9CF69 -:1039E0000E94991C85E792E00E94D302C4E0809176 -:1039F0008C05853019F40E94A91CF9CF0E94272359 -:103A00008091E4009091E5002091FD023091FE024A -:103A10002817390761F38091E4009091E5009093B5 -:103A2000FE028093FD020E94261B882301F38091F1 -:103A30008C058430E1F68091E9008F702091EC00D4 -:103A4000922F917020FD90E8892BC093E90090910E -:103A5000EB0090FF43C09091EE0097FF3FC0909124 -:103A6000030120910201291709F12091E80025FFA7 -:103A70001DC0E0910001F0910101E90FF11D3081BD -:103A80009F5F209104019223909303013093F100F2 -:103A90009091E80095FDE3CF9091E80090FFDFCF93 -:103AA0009091E8009E779093E800D9CF9091F30031 -:103AB0002091F20030E0392B232B81F09091E80027 -:103AC00090FF0CC09091E80095FF03C01092F100A8 -:103AD000F9CF9091E8009E779093E8008F708093E3 -:103AE000E90085CF0E94D92E8091000380930904BC -:103AF00008950C94721D292F332723303105C9F006 -:103B000064F42130310581F02230310509F043C0E1 -:103B100084E790E021EF32E042C021323105F1F03C -:103B20002232310541F137C082E190E025E633E0F1 -:103B300036C099278130910541F08230910541F0DE -:103B4000892B49F5EDEEF2E005C0EDEDF2E002C0A3 -:103B5000EFE9F2E0849190E09F0121C06430D8F455 -:103B6000E62FF0E0EE0FFF1FEB56FE4F2081318174 -:103B700089E090E014C0643070F470E0FB01EE0F57 -:103B8000FF1FE357FE4F20813181FB01E757FE4FB6 -:103B9000808190E004C080E090E020E030E0FA0115 -:103BA00031832083089580E189BD82E189BD09B414 -:103BB00000FEFDCF8091D8008F7D8093D80080914A -:103BC000E00082608093E0008091E00081FDFCCF06 -:103BD0000895CF92DF92EF92FF920F931F93CF93AE -:103BE000DF93EC018B016A010E944C1F811133C0ED -:103BF000C114D10439F0F60180819181081B190BA1 -:103C0000C80FD91FE12CF12C0115110519F1809174 -:103C1000E80085FD16C08091E8008E778093E8006B -:103C2000C114D10449F0F60180819181E80EF91E9A -:103C3000F182E08285E00FC00E944C1F882321F3AF -:103C40000AC089918093F10001501109FFEFEF1A2A -:103C5000FF0ADACF80E0DF91CF911F910F91FF90A3 -:103C6000EF90DF90CF9008952091930530919405C7 -:103C70002617370748F06115710539F42091E800DF -:103C80002E772093E80001C0B90140E0611571056D -:103C9000A9F120918C05222309F443C0253009F4B1 -:103CA00042C02091E80023FD40C02091E80022FDA1 -:103CB00032C02091E80020FFE9CF4091F30020912D -:103CC000F20030E0342BFC01CF016115710559F091 -:103CD0002830310540F481918093F10061507109E1 -:103CE0002F5F3F4FF1CF41E02830310509F040E030 -:103CF0002091E8002E772093E800C8CF4111C9CF6A -:103D00000AC080918C05882361F0853061F0809134 -:103D1000E80083FD0AC08091E80082FFF2CF80E0D6 -:103D2000089582E0089583E0089581E00895209148 -:103D30009305309194052617370748F061157105F2 -:103D400039F42091E8002E772093E80001C0B901F2 -:103D5000FC0120E06115710591F180918C058823AB -:103D600009F440C0853009F43FC08091E80083FD2C -:103D70003DC08091E80082FD2FC08091E80080FF67 -:103D8000E9CF2091F3008091F20090E0922B611531 -:103D9000710559F08830910540F424912093F10089 -:103DA0003196615071090196F2CF21E0089709F030 -:103DB00020E08091E8008E778093E800CBCF21113E -:103DC000CCCF0AC080918C05882361F0853061F0EA -:103DD0008091E80083FD0AC08091E80082FFF2CF65 -:103DE00080E0089582E0089583E0089581E00895D9 -:103DF000982F973058F59093E900981739F0709103 -:103E0000EC002091ED005091F00003C0242F762F9C -:103E100050E021FF19C03091EB003E7F3093EB0062 -:103E20003091ED003D7F3093ED003091EB0031603B -:103E30003093EB007093EC002093ED005093F00072 -:103E40002091EE0027FF07C09F5FD3CF8F70809334 -:103E5000E90081E0089580E0089580918D0587FF55 -:103E600011C08091E80082FD05C080918C05811110 -:103E7000F8CF11C08091E8008B770BC080918C0542 -:103E8000882349F08091E80080FFF8CF8091E80016 -:103E90008E778093E80008952091E4003091E5004A -:103EA00095E64091EC00842F817040FF22C0809104 -:103EB000E80080FD1CC080918C05882391F085303E -:103EC00091F08091EB0085FD10C04091E40050918D -:103ED000E5004217530729F39A01915011F784E046 -:103EE000089582E0089583E0089581E0089580E0D8 -:103EF00008954091E80042FFDECF08950E94EC1F34 -:103F00000E94F41FE0EEF0E0808181608083E8EDA4 -:103F1000F0E080818F77808319BCA7EDB0E08C91B1 -:103F20008E7F8C9380818F7E808310928B05089585 -:103F30000F931F93CF93DF930E94EC1F0E94F41FF7 -:103F4000C8EDD0E088818F778883888180688883F6 -:103F500088818F7D888319BC10928C05109288050A -:103F600010928A051092890500EE10E0F801808118 -:103F70008B7F808388818160888342E060E080E07D -:103F80000E94F81EE1EEF0E080818E7F8083E2EEF9 -:103F9000F0E0808181608083808188608083F80187 -:103FA00080818E7F8083888180618883DF91CF913B -:103FB0001F910F910895E8EDF0E080818F7E80835E -:103FC000E7EDF0E080818160808384E082BF81E062 -:103FD00080938B050C94981FE8EDF0E080818E7F34 -:103FE00080831092E20008951092DA001092E100AE -:103FF00008951F920F920FB60F9211242F933F93A3 -:104000004F935F936F937F938F939F93AF93BF93E0 -:10401000EF93FF938091E10082FF0BC08091E2005B -:1040200082FF07C08091E1008B7F8093E1000E94B6 -:10403000D31B8091DA0080FF1FC08091D80080FFE1 -:104040001BC08091DA008E7F8093DA008091D900C6 -:1040500080FF0DC080E189BD82E189BD09B400FE09 -:10406000FDCF81E080938C050E94B91B05C019BC6F -:1040700010928C050E94CB1B8091E10080FF19C03B -:104080008091E20080FF15C08091E2008E7F8093D6 -:10409000E2008091E20080618093E2008091D8008C -:1040A00080628093D80019BC85E080938C050E94C3 -:1040B000A71C8091E10084FF30C08091E20084FF62 -:1040C0002CC080E189BD82E189BD09B400FEFDCF2D -:1040D0008091D8008F7D8093D8008091E1008F7E01 -:1040E0008093E1008091E2008F7E8093E2008091D6 -:1040F000E20081608093E20080918805882311F0BE -:1041000084E007C08091E30087FD02C081E001C028 -:1041100083E080938C050E94791D8091E10083FFEC -:1041200029C08091E20083FF25C08091E100877F54 -:104130008093E10082E080938C0510928805809145 -:10414000E1008E7F8093E1008091E2008E7F80937A -:10415000E2008091E20080618093E20042E060E052 -:1041600080E00E94F81E8091F00088608093F0004B -:104170000E94D21BFF91EF91BF91AF919F918F91C0 -:104180007F916F915F914F913F912F910F900FBE53 -:104190000F901F9018951F920F920FB60F92112437 -:1041A0002F933F934F935F936F937F938F939F933F -:1041B000AF93BF93CF93DF93EF93FF93C091E90049 -:1041C000CF708091EC00D82FD17080FDD0E8109294 -:1041D000E9008091F000877F8093F00078940E943E -:1041E0000F211092E9008091F00088608093F00028 -:1041F000CD2BCF70C093E900FF91EF91DF91CF916C -:10420000BF91AF919F918F917F916F915F914F91EE -:104210003F912F910F900FBE0F901F9018951F93F5 -:10422000CF93DF93CDB7DEB7AA970FB6F894DEBF72 -:104230000FBECDBFEDE8F5E088E08E0F9091F10064 -:1042400091938E13FBCF0E94E81B8091E80083FFBF -:104250001FC180918D0590918E05492F50E04A3005 -:10426000510508F015C1FA01EA5AFF4F0C94623368 -:10427000803881F0823809F00BC1809191058F70F0 -:104280008093E9008091EB0085FB882780F91092EC -:10429000E90006C08091890590918A05911182609C -:1042A0009091E800977F9093E8008093F10010923E -:1042B000F100C8C0282F2D7F09F0EAC0882319F02B -:1042C000823061F0E5C080918F05813009F0E0C057 -:1042D000933009F080E080938A052BC080918F0590 -:1042E000811127C0809191058F7009F4D1C080930E -:1042F000E9002091EB0020FF1CC0933021F4809155 -:10430000EB00806214C09091EB0090619093EB0001 -:1043100021E030E0A90102C0440F551F8A95E2F761 -:104320004093EA001092EA008091EB00886080934D -:10433000EB001092E9008091E800877F86C0811130 -:10434000A7C010918F051F778091E3008078812BA3 -:104350008093E3008091E800877F8093E8000E94CB -:104360002D1F8091E80080FFFCCF8091E3008068E2 -:104370008093E300111102C082E001C083E08093CA -:104380008C0586C08058823008F082C080918F05ED -:10439000909190058C3D53E0950779F583E08A83F1 -:1043A0008AE289834FB7F894DE01139620E03EE05D -:1043B00051E2E32FF0E050935700E49120FF03C057 -:1043C000E295EF703F5FEF708E2F90E0EA3010F0D3 -:1043D000C79601C0C0968D939D932F5F243149F7F6 -:1043E0004FBF8091E800877F8093E8006AE270E029 -:1043F000CE0101960E94341E14C0AE014F5F5F4F84 -:10440000609191050E947B1DBC01892B09F440C07D -:104410009091E800977F9093E80089819A810E94AB -:10442000971E8091E8008B778093E80031C0803838 -:1044300079F58091E800877F8093E8008091880576 -:104440008093F1008091E8008E778093E8000E94CD -:104450002D1F1EC081111CC090918F059230C0F499 -:104460008091E800877F8093E800909388050E9400 -:104470002D1F80918805811106C08091E30087FD82 -:1044800002C081E001C084E080938C050E94D41BAF -:104490008091E80083FF0AC08091E800877F8093C5 -:1044A000E8008091EB0080628093EB00AA960FB643 -:1044B000F894DEBF0FBECDBFDF91CF911F9108955D -:1044C0009093100480930F040895E0910F04F091ED -:1044D0001004309721F00190F081E02D099480E0E4 -:1044E0000895EF92FF920F931F93CF93DF93E09184 -:1044F0000F04F09110043097B1F18C010280F38128 -:10450000E02D099580917D0582FF2DC080FF04C0BC -:1045100082E894E00E94D302E80118E08CE7E82EDC -:1045200084E0F82E80917D0580FF0BC088811F926A -:104530008F93FF92EF920E946C030F900F900F9059 -:104540000F90115021961111EDCF80917D0580FFC4 -:104550000AC08AE794E0DF91CF911F910F91FF90FD -:10456000EF900C94D302DF91CF911F910F91FF90A8 -:10457000EF900895E0910F04F0911004309721F02E -:104580000480F581E02D09940895CF93DF93EC0129 -:1045900080910D0490910E04C817D90709F1D093AA -:1045A0000E04C0930D04E0910F04F09110043097B5 -:1045B000B9F00680F781E02DCE01099580917D0547 -:1045C00082FF0EC080FF0CC0DF93CF938CE694E097 -:1045D0009F938F930E946C030F900F900F900F90FA -:1045E000DF91CF910895CF93DF93EC0180910B047D -:1045F00090910C04C817D90709F1D0930C04C0930B -:104600000B04E0910F04F09110043097B9F000848E -:10461000F185E02DCE01099580917D0582FF0EC0C8 -:1046200080FF0CC0DF93CF938CE594E09F938F9332 -:104630000E946C030F900F900F900F90DF91CF911D -:1046400008950C94E3230E94790B0C94310A8F9205 -:104650009F92AF92BF92CF92DF92EF92FF920F9311 -:104660001F93CF93DF9300D000D01F92CDB7DEB75A -:104670000E94680702E114E0F12C8F2D0E949A0835 -:104680004C01F801A080B180A826B926A114B1047C -:1046900039F4F3940E5F1F4FF0E1FF12EECF39C0F3 -:1046A00080917D0581FD0E94CA08E12CCC24C39431 -:1046B000D12CC6018A219B21892B21F1E982FA8222 -:1046C00021E0C60188219921892B09F420E02B8360 -:1046D0000E94820B8160782F9D838C8349815A814F -:1046E0006B818D810E94E62349815A816B817C8197 -:1046F0008D810E94882EF801808191818C259D25D5 -:1047000091838083E394CC0CDD1CF0E1EF12D1CFD8 -:10471000C0CF8FEF89838A831B820E94820B8160C6 -:10472000782F9D838C8349815A816B818D810E9472 -:10473000E6230E94872E0E943E31109111040E94B0 -:104740006522181759F10E946522809311049091F7 -:104750007D0592FF0EC090FF0CC01F928F938DE8D5 -:1047600094E09F938F930E946C030F900F900F9093 -:104770000F90809111040F900F900F900F900F9059 -:10478000DF91CF911F910F91FF90EF90DF90CF902D -:10479000BF90AF909F908F900C94992E0F900F9098 -:1047A0000F900F900F90DF91CF911F910F91FF907D -:1047B000EF90DF90CF90BF90AF909F908F90089533 -:1047C0000C9404090895089508950895CF93DF93F4 -:1047D000CDB7DEB72B970FB6F894DEBF0FBECDBFB7 -:1047E000942F4F83252F588769877A878B874A852F -:1047F0005B85452B21F02F3F09F59F3FF9F4DE0142 -:10480000119686E0FD0111928A95E9F785E0FE0197 -:10481000379601900D928A95E1F749815A816B8113 -:104820007C818D819E810E94E52A2B960FB6F8949B -:10483000DEBF0FBECDBFDF91CF9108954F81588568 -:1048400069857A858B850E94882ED9CF882309F4C3 -:104850005CC09CEF980F913A20F090E5980F9E3243 -:1048600018F40E94B32D0DC090E2980F983058F4C0 -:10487000877091E001C0990F8A95EAF7892F0E940D -:10488000F22D0C942C2E9BE5980F933070F4853A02 -:1048900029F0863A31F083E890E005C081E890E0A5 -:1048A00002C082E890E00C94C52298E5980F9531FB -:1048B00060F5883A89F0893A91F08A3A99F08B3A12 -:1048C000A1F08C3AA9F08D3AB1F08E3AB9F08F3A56 -:1048D000C1F080E090E017C082EE90E014C089EE55 -:1048E00090E011C08AEE90E00EC085EB90E00BC026 -:1048F00086EB90E008C083EB90E005C084EB90E08D -:1049000002C087EB90E00C94F3220895882349F1CC -:104910009CEF980F913A20F090E5980F9E3218F492 -:104920000E94D02D0DC090E2980F983058F48770F7 -:1049300091E001C0990F8A95EAF7892F0E94F82D1E -:104940000C942C2E9BE5980F933020F480E090E09F -:104950000C94C522885A853120F480E090E00C94B4 -:10496000F3220895882321F00E94F22D0C942C2E1E -:104970000895882321F00E94F82D0C942C2E089580 -:10498000BF92CF92DF92EF92FF920F931F93CF933C -:10499000DF9300D000D000D0CDB7DEB725E0FC011A -:1049A000DE01119601900D922A95E1F7FC014081FC -:1049B0005181028163817481258122952F70611557 -:1049C000710509F403C35F3F19F44F3F09F4FEC2B8 -:1049D0006C01862F7D836C83602F782F8D812E83D1 -:1049E0000E94372D182FB92E0E94362D0E94302C90 -:1049F000EB2DE295EF70F0E0E05AFF4F2E810C9422 -:104A000062338B2D807F9B2D9F70F92E882319F0A8 -:104A1000F29490EFF922002349F0FF2009F483C2B9 -:104A20008F2D0E94052E0E942C2E7DC2812F0E9468 -:104A30008624FF2009F4CAC28F2D0E940B2E2696D1 -:104A40000FB6F894DEBF0FBECDBFDF91CF911F919F -:104A50000F91FF90EF90DF90CF90BF900C942C2E91 -:104A60008B2D807F9B2D9F70F92E803219F0F29450 -:104A700080EFF822112319F0113009F12AC0002328 -:104A8000B1F08F2D222351F1213041F526960FB63A -:104A9000F894DEBF0FBECDBFDF91CF911F910F9174 -:104AA000FF90EF90DF90CF90BF900C94152E2223B3 -:104AB00019F0213009F48AC20E94182E2DC000235B -:104AC000F1F0263008F082C20E94EF2D8F2129F0EC -:104AD00023C00023F9F0211116C08F2D26960FB6A2 -:104AE000F894DEBF0FBECDBFDF91CF911F910F9124 -:104AF000FF90EF90DF90CF90BF900C94B2242530C0 -:104B000008F064C209C0F601858180FF0CC28F7075 -:104B10008583E3CF21111CC28F2D83C12B2D2695B8 -:104B20002695237030E02115310521F02130310523 -:104B3000D1F04CC2002321F0812F9B2D937002C035 -:104B400080E090E026960FB6F894DEBF0FBECDBF92 -:104B5000DF91CF911F910F91FF90EF90DF90CF9059 -:104B6000BF900C94C522002321F0812F9B2D9370C0 -:104B700002C080E090E026960FB6F894DEBF0FBE2C -:104B8000CDBFDF91CF911F910F91FF90EF90DF90FC -:104B9000CF90BF900C94F322812F002319F00E9434 -:104BA000C42F02C00E942C3026960FB6F894DEBFA8 -:104BB0000FBECDBFDF91CF911F910F91FF90EF906E -:104BC000DF90CF90BF900C94B1308B2D837009F0A3 -:104BD0007BC00111FBC1812F829586958770880F5C -:104BE000880F912F9F70C92ED12CE12CF12C082E0B -:104BF00004C0CC0CDD1CEE1CFF1C0A94D2F714FF81 -:104C000012C04FE050E060E070E004C0440F551F58 -:104C1000661F771F8A95D2F7CB01BA016095709510 -:104C20008095909503C060E070E0CB012B2D269518 -:104C300026952370422F50E042305105D9F0433081 -:104C4000510569F16C297D298E299F294130510533 -:104C500051F126960FB6F894DEBF0FBECDBFDF919F -:104C6000CF911F910F91FF90EF90DF90CF90BF9069 -:104C70000C944B2C6C297D298E299F2926960FB6E2 -:104C8000F894DEBF0FBECDBFDF91CF911F910F9182 -:104C9000FF90EF90DF90CF90BF900C94652C0E9416 -:104CA0004B2CC701B60126960FB6F894DEBF0FBE97 -:104CB000CDBFDF91CF911F910F91FF90EF90DF90CB -:104CC000CF90BF900C94312C002319F08B2D817064 -:104CD00001C08695882309F479C1812F8295869534 -:104CE0008770880F880F912F9F70C92ED12CE12CCF -:104CF000F12C082E04C0CC0CDD1CEE1CFF1C0A9409 -:104D0000D2F714FF12C04FE050E060E070E004C042 -:104D1000440F551F661F771F8A95D2F7CB01BA0142 -:104D2000609570958095909503C060E070E0CB0130 -:104D30002B2D269526952370422F50E042305105A9 -:104D4000D9F04330510569F16C297D298E299F29BD -:104D50004130510551F126960FB6F894DEBF0FBED3 -:104D6000CDBFDF91CF911F910F91FF90EF90DF901A -:104D7000CF90BF900C94122D6C297D298E299F29EC -:104D800026960FB6F894DEBF0FBECDBFDF91CF9150 -:104D90001F910F91FF90EF90DF90CF90BF900C94F8 -:104DA000242D0E94122DC701B60126960FB6F89445 -:104DB000DEBF0FBECDBFDF91CF911F910F91FF904E -:104DC000EF90DF90CF90BF900C94002D103FD1F169 -:104DD00028F480E4810F803250F0A0C0123F09F423 -:104DE00062C008F44BC0133F09F472C097C0F12FA2 -:104DF000F071FF2E8B2D8F71002351F00E94992CA2 -:104E0000812FFF2019F08295807F68CE8F7066CE4B -:104E10000E94BA2C812FFF2019F08295807F01C05B -:104E20008F7026960FB6F894DEBF0FBECDBFDF9110 -:104E3000CF911F910F91FF90EF90DF90CF90BF9097 -:104E40000C94B9240023B1F0253008F0BFC08B2D9D -:104E50008F7126960FB6F894DEBF0FBECDBFDF91DF -:104E6000CF911F910F91FF90EF90DF90CF90BF9067 -:104E70000C94DF2C263008F0A9C0E9CF0023A9F05C -:104E80008B2D8F7126960FB6F894DEBF0FBECDBF67 -:104E9000DF91CF911F910F91FF90EF90DF90CF9016 -:104EA000BF900C94992C002359F38B2D8F7126966B -:104EB0000FB6F894DEBF0FBECDBFDF91CF911F912B -:104EC0000F91FF90EF90DF90CF90BF900C94BA2C91 -:104ED000002399F08B2D8F7126960FB6F894DEBFC4 -:104EE0000FBECDBFDF91CF911F910F91FF90EF903B -:104EF000DF90CF90BF900C94842C26960FB6F89438 -:104F0000DEBF0FBECDBFDF91CF911F910F91FF90FC -:104F1000EF90DF90CF90BF900C947F2C0023A9F0EE -:104F2000222309F4ADCF812F26960FB6F894DEBF69 -:104F30000FBECDBFDF91CF911F910F91FF90EF90EA -:104F4000DF90CF90BF900C942624222309F4ADCF9C -:104F5000812F26960FB6F894DEBF0FBECDBFDF912E -:104F6000CF911F910F91FF90EF90DF90CF90BF9066 -:104F70000C9486244B2D4F70612FC6010E943E2F4A -:104F800026960FB6F894DEBF0FBECDBFDF91CF914E -:104F90001F910F91FF90EF90DF90CF90BF900C94F6 -:104FA000892B4B2D4F70612FC60126960FB6F894B2 -:104FB000DEBF0FBECDBFDF91CF911F910F91FF904C -:104FC000EF90DF90CF90BF900C94412F26960FB6B4 -:104FD000F894DEBF0FBECDBFDF91CF911F910F912F -:104FE000FF90EF90DF90CF90BF9008950E94122E17 -:104FF0000E94E12D0E942C2E0E94E3310E94B130CC -:1050000080E090E00E94C52280E090E00C94F322C2 -:105010000E94022E0C94F627CF93DF9300D000D08D -:105020001F92CDB7DEB7942F4983252F5A836B8308 -:105030007C838D834C815D81452B39F12F3F11F4A9 -:105040009F3F19F149815A816B817C818D810E943A -:10505000372D292F22952F7030E02C30310504F5A3 -:105060002A3031055CF4225031092230310568F4D0 -:10507000853A80F4843090F4823080F0883E38F4B1 -:10508000803E60F48450813A48F080E014C0803F54 -:10509000E1F704C090E2980F983080F781E00BC0F0 -:1050A0002C30310521F493FB882780F904C02F3080 -:1050B0003105C9F3EACF0F900F900F900F900F902A -:1050C000DF91CF910895CF93DF9300D000D01F924E -:1050D000CDB7DEB70F900F900F900F900F90DF912C -:1050E000CF910895CF93DF9300D000D000D0CDB7FB -:1050F000DEB726960FB6F894DEBF0FBECDBFDF91A8 -:10510000CF9108951F93CF93DF93C091320416E09F -:1051100080913304C81799F0D0E01C9FF0011D9FC7 -:10512000F00D1124EC5CFB4F408151816281738151 -:10513000848195810E9472282196C770E9CFDF9102 -:10514000CF911F910895409164045091650460913E -:1051500066047091670480916804909169040C94CE -:1051600072288091690482958F7009F054C08091F3 -:105170006604882309F44FC080913204A09133045F -:1051800060916404709165044091670450916804D3 -:10519000B6E08A1709F43FC090E041155105C1F10E -:1051A0007F3F11F46F3FA1F1B89FF001B99FF00D5F -:1051B0001124EC5CFB4F218172132AC02081621301 -:1051C00027C02281211124C023813481241735076F -:1051D00010F421503109241B350B283C3105C0F453 -:1051E000209169042F7020612093690426E0289F94 -:1051F000F001299FF00D1124E75CFB4F80818F7037 -:105200008061808384E694E00E94C0240C9482280C -:1052100001968770BECF0895BF92CF92DF92EF9232 -:10522000FF920F931F93CF93DF93CDB7DEB76197B4 -:105230000FB6F894DEBF0FBECDBF7C0185E0F7014D -:10524000DE011D9601900D928A95E1F7D7014C91F0 -:1052500011965C9111971296DC90129713960D910E -:105260001C911497309164046091650480916704E7 -:1052700090916804009709F477C16F3F19F43F3F9C -:1052800009F472C1B0906604BB2009F4C5C0209136 -:1052900069040817190728F0F801E81BF90BCF017A -:1052A00004C080959095800F911FCC24C394883CB6 -:1052B000910580F0C12C207F09F0CCC0702F198B94 -:1052C000088B6D2D89890E94632884E694E00E94F2 -:1052D000C024B6C0822F807F09F047C0651314C078 -:1052E000341312C0D11010C02F70206120936904B4 -:1052F0000E94A32884E694E00E94C024809169045F -:10530000D70115968C932FC00115110519F15F3F38 -:1053100011F44F3FF9F0CD2CD1101CC08091320414 -:105320002091330436E0821709F45CC090E0389F86 -:10533000F001399FF00D1124EC5CFB4F6181561395 -:1053400006C06081461303C06281611103C00196EB -:105350008770E9CFCD2CDD2009F426C18091690446 -:10536000816080936904C12C1FC1651308C0341388 -:1053700006C0D11004C080916904D701C9C04D870F -:105380005E87DF86702F198B088B6D2D89890E94AF -:105390000C288823E9F1DD20D9F120916904822FBE -:1053A00082958F7090E0029774F0809164049091E0 -:1053B000650498878F8319861B870A872C87CE01FF -:1053C00007960E94C02486E0F701A4E6B4E00190AD -:1053D0000D928A95E1F70E94B1280E94A328CC245F -:1053E000C394E2C0702F198B088B60E089890E94FA -:1053F000372D292F22952F7030E0223031050CF007 -:10540000C7C09F7009F0C1C0805E883008F4CCC06E -:10541000C7010E94C024E3CF0817190708F456C03B -:10542000F801E81BF90BCF01883C910508F453C043 -:10543000C12C702F198B088B6D2D89890E946328D0 -:10544000E4E6F4E086E0DF011D928A95E9F70E9428 -:10545000A328AAC0651314C0341312C0D11010C001 -:1054600080916904F7018583C7010E94C02486E00A -:10547000E4E6F4E0DF011D928A95E9F7CB2C94C0B5 -:105480004D875E87DF86702F198B088B6D2D89897C -:105490000E940C28882309F4BBCFDD2009F4B8CF83 -:1054A00020916904822F82958F7090E002970CF40E -:1054B0008ACF80916404909165049A8389831B82CA -:1054C0001D830C832E83CE0101967BCF8095909512 -:1054D000800F911FA9CFCD2CDD2009F499CF651342 -:1054E0002EC034132CC02091690420FD1FC0822FD0 -:1054F00082958F70D9F0D70115962C9315978F3020 -:1055000049F08F5F982F9295907F822F8F70892B13 -:1055100015968C93C7010E94C02486E0F701A4E68B -:10552000B4E001900D928A95E1F791CF86E0F70102 -:10553000A4E6B4E001900D928A95E1F735C04D875D -:105540005E87DF86702F198B088B6D2D89890E94ED -:105550000C28811138CF809169048160809369049F -:10556000C7010E94C02420C0DD2009F451CF4D871F -:105570005E87DF86702F198B088B6D2D89890E94BD -:105580000C28882309F444CF1ECF81113DCF0CC0D5 -:10559000243031050CF03CCF9F7009F435CFF70172 -:1055A0009581907F09F030CF8C2D61960FB6F894DD -:1055B000DEBF0FBECDBFDF91CF911F910F91FF9046 -:1055C000EF90DF90CF90BF9008951F93CF93DF931C -:1055D000CDB7DEB72C970FB6F894DEBF0FBECDBFA8 -:1055E0004F83588769877A878B879C87CE01079678 -:1055F0000E940C29882369F08F8198852A853B8534 -:10560000232BF1F19F3F09F063C08F3F09F060C089 -:1056100037C086E0FE013796DE01119601900D92AB -:105620008A95E1F76F817885EA85FB85309741F1AE -:105630007F3F11F46F3F21F12091330430E0C90125 -:105640000196877099274091320450E0841795079E -:1056500009F447C069837A83FD83EC8396E0929FC7 -:10566000D001939FB00D1124AC5CBB4FFE0131966D -:1056700001900D929A95E1F7809333040E9482285D -:1056800016E080913204909133048917C1F1189F7C -:10569000C00111248C5C9B4F0E940C29882379F156 -:1056A000E09132041E9FF0011124EC5CFB4F40811D -:1056B000518162817381848195810E9472288091D9 -:1056C000320490E001968770992780933204D9CFF5 -:1056D0004F81588569857A858B859C850E947228C3 -:1056E000CFCF0E9408281092330410923204E4E6CF -:1056F000F4E086E0DF011D928A95E9F7C1CF2C9690 -:105700000FB6F894DEBF0FBECDBFDF91CF911F91D2 -:105710000895DF92EF92FF920F931F93CF93DF9341 -:10572000FC01892B09F48AC0E12CF12CDD24D394EF -:10573000EF0121968491853709F461C058F48437CC -:1057400008F04EC0843008F06AC08130D1F0823059 -:1057500071F174C0883709F45DC050F4863709F4DC -:1057600055C0873709F06AC08E2D0E94FF2D54C0A6 -:105770009CE7980F903708F061C08F770E948624CD -:1057800050C08F010E5F1F4FFE01849190E2980F71 -:10579000983050F48770FD2D01C0FF0F8A95EAF70D -:1057A0008F2F0E94052E14C00E94262413C08F0143 -:1057B0000E5F1F4FFE01C49180E28C0F883060F4B1 -:1057C000C7708D2D01C0880FCA95EAF70E940B2E75 -:1057D0000E942C2EE80125C08C2F0E948624FACF2F -:1057E0009F012E5F3F4FFE01C491CC2369F08FE9EA -:1057F0009FE00197F1F700C00000C150F6CF9F0174 -:105800002E5F3F4FFE01F490E9010BC00E94EF2D87 -:10581000E82E07C00E94022E0E942C2E02C00E9479 -:1058200026248F2D882341F0EFE9FFE03197F1F72F -:1058300000C000008150F6CFFE017ACFDF91CF91FA -:105840001F910F91FF90EF90DF90089560936A058C -:1058500070936B0580936C0590936D050C94982E56 -:1058600008950F931F9300916E0510916F0520917D -:10587000700530917105602B712B822B932B6093F7 -:105880006E0570936F0580937005909371051F915D -:105890000F910C94972E0F931F9300916E0510910A -:1058A0006F0520917005309171056023712382236B -:1058B000932360936E0570936F05809370059093AA -:1058C00071051F910F910C94972E0F931F930091C8 -:1058D0006E0510916F05209170053091710560275C -:1058E00071278227932760936E0570936F058093CD -:1058F0007005909371051F910F910C94972E60E0A5 -:1059000070E0CB010C94262C0F931F9341E050E0E4 -:1059100060E070E08A019B0104C0000F111F221F8C -:10592000331F8A95D2F7C901B8011F910F910C94CA -:10593000262C0F931F9341E050E060E070E004C01C -:10594000440F551F661F771F8A95D2F780916A050D -:1059500090916B05A0916C05B0916D058A019B013A -:10596000082B192B2A2B3B2BC901B8011F910F9132 -:105970000C94262C0F931F9341E050E060E070E000 -:1059800004C0440F551F661F771F8A95D2F74095B4 -:1059900050956095709580916A0590916B05A091E6 -:1059A0006C05B0916D058A019B01082319232A23F8 -:1059B0003B23C901B8011F910F910C94262C0F9322 -:1059C0001F9341E050E060E070E004C0440F551FB9 -:1059D000661F771F8A95D2F780916A0590916B05B3 -:1059E000A0916C05B0916D058A019B0108271927CC -:1059F0002A273B27C901B8011F910F910C94262C2F -:105A00000F931F9300916A0510916B0520916C050F -:105A100030916D05602B712B822B932B1F910F9171 -:105A20000C94262C0F931F9300916A0510916B051F -:105A300020916C0530916D0560237123822393239F -:105A40001F910F910C94262C0F931F9300916A05C0 -:105A500010916B0520916C0530916D0560277127C1 -:105A6000822793271F910F910C94262C08958F92D3 -:105A70009F92AF92BF92DF92EF92FF920F931F938C -:105A8000CF93DF9300D000D01F92CDB7DEB76B83EA -:105A90007C838D838A018C819D81892B21F01F3F1E -:105AA00029F44F3F19F480E090E04CC08B818823AB -:105AB000C9F180906E0590906F05A0907005B09030 -:105AC000710580916A0590916B05A0916C05B0916C -:105AD0006D05882A992AAA2ABB2A8FE1E82EF12C83 -:105AE000D501C4010E2C04C0B695A795979587954E -:105AF0000A94D2F780FF07C0DE2CB8018E2D0E94D9 -:105B0000142F019729F481E0E81AF10848F7D12C05 -:105B100080E1189FF0011124E00FF11DE659FB4FC1 -:105B2000D08209C080E1189FF0011124E00FF11D1F -:105B3000E659FB4FD08009831A8369817A818D2DC4 -:105B40000E94142F0F900F900F900F900F90DF91E5 -:105B5000CF911F910F91FF90EF90DF90BF90AF908A -:105B60009F908F9008952091100130911101F901BB -:105B700032969FEF40E05191581789F09F3F19F4FA -:105B8000511101C0942F4F5F4630A9F79F3F39F064 -:105B9000F901E90FF11D97FDFA95828308950895A3 -:105BA0002091100130911101F9013296285F3F4F89 -:105BB0009081981301C010823196E217F307C1F764 -:105BC000089581E090E0E0911001F0911101E80F5B -:105BD000F91F1082019688309105A9F708958091E8 -:105BE0007C05089590917C05892B80937C05089510 -:105BF000809590917C05892380937C0508958093FE -:105C00007C05089510927C05089590917B05892B61 -:105C100080937B050895809590917B0589238093DF -:105C20007B05089510927B05089580937205089571 -:105C30001092720508958091100190911101FC015C -:105C400031969C01285F3F4F80E0919191118F5FC9 -:105C5000E217F307D1F70895E0911001F0911101D7 -:105C600080917C058083E0911001F0911101908179 -:105C700080917B05892B808380917205882361F058 -:105C8000E0911001F09111019081892B80830E9495 -:105C90001B2E8111109272058091100190911101BB -:105CA0000C94712290939F0180939E010895829598 -:105CB000982F9C7C392F36953695282F237344E0F6 -:105CC000249FC0011124932F982B292F2A7A2695DF -:105CD000892F8575880F822B08951F93CF93DF93AB -:105CE0001F92CDB7DEB799830E94572E182F998146 -:105CF000892F0E94572E212F30E0322F2227A90111 -:105D0000482BCA010F90DF91CF911F9108950895FC -:105D1000CF93DF9300D000D01F92CDB7DEB70F90A6 -:105D20000F900F900F900F90DF91CF9108950895ED -:105D300008950C94E02380918C05843021F1109219 -:105D40007E0520E488E190E00FB6F894A895809352 -:105D500060000FBE2093600083B7817F846083BFA3 -:105D600083B7816083BF7894889583B78E7F83BF24 -:105D70000FB6F894A89580916000886180936000C8 -:105D8000109260000FBE0895CF930E94E4230E94FA -:105D900068070E94E523C0E08C2F0E949A08892B97 -:105DA00029F4CF5FC031C1F780E001C081E0CF911D -:105DB00008950E94E2230C9408281F920F920FB6B8 -:105DC0000F9211248F939F93AF93BF9380917E0581 -:105DD000811113C08091F2029091F302A091F4021C -:105DE000B091F5024196A11DB11D8093F2029093EE -:105DF000F302A093F402B093F502BF91AF919F918B -:105E00008F910F900FBE0F901F90189520E1929FD9 -:105E1000F0011124E80FF11DE052FF4F9491892FFA -:105E20008F7092959F700895CF93C82FCB010E94D9 -:105E3000062F282F30E080E1989FA0011124422BEB -:105E4000532B4038510519F480E090E015C097704D -:105E5000E92FF0E088E0C89FE00DF11D112484E0F7 -:105E6000EE0FFF1F8A95E1F7E20FF31FEE0FFF1F02 -:105E7000E050F84985919491CF91089580E090E0A9 -:105E8000089508958091810580FF0BC060911501F0 -:105E900085E0689FB00111247595679575956795A4 -:105EA0002BC081FF09C06091150185E0689FB0019A -:105EB00011247595679520C082FF07C06091150178 -:105EC00085E0689FB001112417C090918205992345 -:105ED000D1F060911401961788F72091150185E0A3 -:105EE000289F90011124929FA001939F500D11248F -:105EF00070E0CA010E944E336038710540F46115AC -:105F0000710539F002C065E070E0862F08958FE7D3 -:105F1000089581E008958091810580FF08C0609117 -:105F2000130170E0759567957595679521C081FFA0 -:105F300006C06091130170E07595679519C082FFE6 -:105F400004C06091130170E010C090918205992304 -:105F5000C1F0609112019617A0F780911301899FFB -:105F6000C001112470E00E944E336038710528F49E -:105F70006115710521F0862F08958FE7089581E05E -:105F8000089561E070E0F4CF803F21F40E94422F39 -:105F9000819504C0813F29F40E94422F809385059A -:105FA0000895823F21F40E94422F819504C0833FCF -:105FB00029F40E94422F809384050895893F19F4A3 -:105FC0000E948B2F05C08A3F31F40E948B2F819550 -:105FD0008093860508958B3F21F40E948B2F819535 -:105FE00004C08C3F29F40E948B2F8093870508956D -:105FF000843F21F480918305816017C0853F21F49F -:1060000080918305826011C0863F21F480918305D1 -:1060100084600BC0873F21F480918305886005C0B0 -:10602000883F31F4809183058061809383050895D2 -:106030008D3F21F48091810581600BC08E3F21F45A -:1060400080918105826005C08F3F29F48091810590 -:106050008460809381050895803F39F4809185059F -:1060600087FF6CC01092850569C0813F29F480913B -:1060700085051816BCF362C090918405823F29F40F -:1060800097FF5CC01092840559C0833F19F419161C -:10609000CCF354C0893F41F48091860518160CF06A -:1060A0004DC0109286054AC08A3F29F4809186052A -:1060B00087FF44C0F6CF8B3F39F48091870587FF77 -:1060C0003DC0109287053AC08C3F29F48091870526 -:1060D0001816BCF333C0843F21F4809183058E7F72 -:1060E00017C0853F21F4809183058D7F11C0863FC5 -:1060F00021F4809183058B7F0BC0873F21F4809131 -:106100008305877F05C0883F31F4809183058F7EAA -:106110008093830513C08D3F21F4809181058E7F8C -:106120000BC08E3F21F4809181058D7F05C08F3F8C -:1061300029F4809181058B7F80938105809184056E -:1061400081110EC08091850581110AC0809186055C -:10615000811106C080918705811102C010928205CD -:10616000089580917D0583FF7EC08FEB94E00E94AF -:10617000D302809183051F928F938AEB94E09F93C3 -:106180008F930E946C0388EB94E00E94D30280916D -:106190008405282F082E000C330B3F938F9385EB3B -:1061A00094E09F938F930E946C0383EB94E00E9492 -:1061B000D30280918505282F082E000C330B3F93C6 -:1061C0008F9380EB94E09F938F930E946C038EEAF1 -:1061D00094E00E94D30280918605282F082E000C9F -:1061E000330B3F938F938BEA94E09F938F930E949E -:1061F0006C0389EA94E00E94D30280918705282FDE -:10620000082E000C330B3F938F9386EA94E09F9304 -:106210008F930E946C0383EA94E00E94D3028091E2 -:1062200082051F928F9380EA94E09F938F930E9440 -:106230006C038EE994E00E94D302809181051F9245 -:106240008F938BE994E09F938F930E946C0388E96E -:1062500094E00E94D3028DB79EB74C960FB6F89487 -:106260009EBF0FBE8DBF83E895E00E94BA220E94B8 -:10627000820B9093800580937F0508951F93CF93A1 -:10628000DF9380917F05909180050E949A0BAC016D -:1062900090918205992321F02091160130E006C0EB -:1062A000209117018AE0289F90011124421753077B -:1062B00008F485C080918405C0918505D09186053C -:1062C00010918705811107C0C11175C0D11173C02C -:1062D000111171C074C09F3F19F09F5F90938205A8 -:1062E000181624F40E94422F80938405809184051F -:1062F00087FF05C00E94422F8195809384051C165C -:1063000024F40E94422F809385058091850587FFA4 -:1063100005C00E94422F8195809385056091840578 -:10632000662331F1C0918505CC2311F1062E000CB6 -:10633000770B880B990B0E942C3223E333E343E362 -:106340005FE30E94E1320E94F431609384056C2F78 -:10635000CC0F770B880B990B0E942C3223E333E38D -:1063600043E35FE30E94E1320E94F43160938505CC -:106370001D1624F40E948B2F80938605809186053C -:1063800087FF05C00E948B2F81958093860511168B -:1063900024F40E948B2F809387058091870587FFC7 -:1063A00005C00E948B2F819580938705DF91CF9147 -:1063B0001F910C94B1309F3F09F08FCF97CFDF91A1 -:1063C000CF911F910895E3E8F5E085E0DF011D928C -:1063D0008A95E9F7109282051092810508950E942E -:1063E000673208F481E008950E94FB316894B1118E -:1063F0000C94D63208950E94BB3288F09F5798F0D3 -:10640000B92F9927B751B0F0E1F0660F771F881FB9 -:10641000991F1AF0BA95C9F714C0B13091F00E94D3 -:10642000D532B1E008950C94D532672F782F8827A4 -:10643000B85F39F0B93FCCF3869577956795B395FA -:10644000D9F73EF490958095709561957F4F8F4F69 -:106450009F4F0895E89409C097FB3EF4909580956E -:10646000709561957F4F8F4F9F4F9923A9F0F92F1A -:1064700096E9BB279395F695879577956795B79598 -:10648000F111F8CFFAF4BB0F11F460FF1BC06F5F7E -:106490007F4F8F4F9F4F16C0882311F096E911C090 -:1064A000772321F09EE8872F762F05C0662371F0B1 -:1064B00096E8862F70E060E02AF09A95660F771FC5 -:1064C000881FDAF7880F9695879597F90895990FA1 -:1064D0000008550FAA0BE0E8FEEF16161706E807AE -:1064E000F907C0F012161306E407F50798F0621BCF -:1064F000730B840B950B39F40A2661F0232B242BA4 -:10650000252B21F408950A2609F4A140A6958FEFC2 -:10651000811D811D089597F99F6780E870E060E014 -:1065200008959FEF80EC089500240A94161617062C -:1065300018060906089500240A9412161306140674 -:1065400005060895092E0394000C11F4882352F0D7 -:10655000BB0F40F4BF2B11F460FF04C06F5F7F4F8F -:106560008F4F9F4F089557FD9058440F551F59F076 -:106570005F3F71F04795880F97FB991F61F09F3F30 -:1065800079F087950895121613061406551FF2CF59 -:106590004695F1DF08C0161617061806991FF1CFA9 -:1065A00086957105610508940895E894BB276627D0 -:1065B0007727CB0197F908950E94673208F48FEF8F -:1065C00008950E94F4320C94A2320E94943238F062 -:1065D0000E949B3220F0952311F00C948B320C9486 -:1065E000913211240C94D6320E94B33270F3959FED -:1065F000C1F3950F50E0551F629FF001729FBB27BA -:10660000F00DB11D639FAA27F00DB11DAA1F649F55 -:106610006627B00DA11D661F829F2227B00DA11D08 -:10662000621F739FB00DA11D621F839FA00D611D8E -:10663000221F749F3327A00D611D231F849F600DAF -:10664000211D822F762F6A2F11249F5750409AF0D8 -:10665000F1F088234AF0EE0FFF1FBB1F661F771F64 -:10666000881F91505040A9F79E3F510580F00C942F -:106670008B320C94D6325F3FE4F3983ED4F3869588 -:1066800077956795B795F795E7959F5FC1F7FE2BCF -:10669000880F911D9695879597F9089597FB072E7A -:1066A00016F4009407D077FD09D00E94683307FCE8 -:1066B00005D03EF4909581959F4F08957095619512 -:1066C0007F4F0895EE0FFF1F0590F491E02D099480 -:1066D000AA1BBB1B51E107C0AA1FBB1FA617B70708 -:1066E00010F0A61BB70B881F991F5A95A9F7809524 -:0C66F0009095BC01CD010895F894FFCFF7 -:1066FC0001030000FF661AF41AD11A9D1A691A01D7 -:10670C0073052808140A321E66756C6C006C6F7762 -:10671C0000000000003804000000003704000000F6 -:10672C0000EF057503C4037E05DF0377037803E2EE -:10673C0003E703EC03B803C103F403FEFF00002DD1 -:10674C000400000000920A00000000120B3E1A0820 -:10675C000B0E0B0B0B110B070B00000000930CE93D -:10676C000BAB0C00000000E81675034716DB193F55 -:10677C00163718780342167A03404D36221C04CF84 -:0E678C00039903770303031C0335034E030038 +:10137000807C803411F118F4882371F1089580384D +:1013800019F0803C39F1089588ED0E949C099091F4 +:10139000A90181FD08C0923029F161EC88ED0E941D +:1013A000A90982E007C09330E9F063EC88ED0E9460 +:1013B000A90983E08093A901089588ED0E949C0902 +:1013C0009091A90181FD03C0933079F7089592307F +:1013D00021F7089581E0EECF61ED88ED0E94A90923 +:1013E0001092A90108950F931F93CF93DF938C015F +:1013F000269A0E949A09219A229A2398209A80E597 +:101400008CBD81E08DBD259868E188E80E94A9091E +:1014100060E288E70E94A90960E088E70E94A909C4 +:10142000C0E0D0E088E60E949C09219680FD06C0BD +:10143000CF3F8FEFD807B1F78FEF1DC061EC88ED7C +:101440000E94A90960E280ED0E94A90964E088EE8B +:101450000E94A90988EE0E949C0982FFFBCFC80167 +:101460000E94B50960E288EC0E94A90961E080E869 +:101470000E94A90980E0DF91CF911F910F910895FB +:1014800080917C05816080937C0584E692E00E94D7 +:10149000F30980EF91E0909358028093570284EE15 +:1014A00091E090933E0280933D0288ED91E090930D +:1014B0002402809323028CEC91E090930A028093A3 +:1014C0000902089584E692E00E94CF0C40E064E6B1 +:1014D00072E08AE492E00E94600940E064E672E013 +:1014E00080E392E00E94600940E064E672E086E1F9 +:1014F00092E00E94600940E064E672E08CEF91E0C7 +:101500000E94600985E591E09093F1018093F001DC +:101510009093E5018093E4019093D9018093D801E1 +:101520009093CD018093CC0164E672E08BEB91E067 +:101530000E948F1864E672E08AEA91E00C948F189A +:10154000AF92BF92CF92DF92EF92FF920F931F93D1 +:10155000CF93DF937C01CB01D22E20917C0520FF1D +:1015600013C0DB01ED91FC910084F185E02D09951C +:101570001F928F938FE692E09F938F930E94760342 +:101580000F900F900F900F90E8015801AD0CB11C17 +:1015900089E6C82E82E0D82E80917C05CA15DB052D +:1015A00079F080FF0BC088811F928F93DF92CF92DA +:1015B0000E9476030F900F900F900F902196ECCF22 +:1015C00080FF04C086E692E00E94DD02F80182817D +:1015D000813091F480917C0580FF1DC08CE492E005 +:1015E000DF91CF911F910F91FF90EF90DF90CF90FF +:1015F000BF90AF900C94DD02D701129688E0F801FD +:1016000001900D928A95E1F70E94340BD7011B9649 +:101610007C936E931A97DF91CF911F910F91FF905A +:10162000EF90DF90CF90BF90AF90089580E090E072 +:1016300008958FEF9FEF08950895862F0E94301B25 +:1016400081E090E00895E4EEF2E01382128288EEE9 +:1016500093E0A0E0B0E084839583A683B7838BE515 +:1016600091E09183808308950C94990B8F929F92BF +:10167000AF92BF92CF92DF92EF92FF920E940A3216 +:101680004B015C0120E030E04AE755E40E94C132A2 +:101690006B017C0120E030E040E85FE30E94CF3145 +:1016A00087FD24C020E03FEF4FE757E4C701B601B4 +:1016B0000E94BC321816ACF420E030E040E251E465 +:1016C000C501B4010E94C1320E94DB3120E931E042 +:1016D0006115710581F0C9010197F1F76150710938 +:1016E000F7CFC701B6010E94DB3102C061E070E0B4 +:1016F000CB010197F1F7FF90EF90DF90CF90BF9073 +:10170000AF909F908F90089582E084BD93E095BD47 +:101710009AEF97BD80936E0008952FB7F89480914B +:10172000F2029091F302A091F402B091F5022FBF62 +:1017300008952FB7F8946091F2027091F3028091AE +:10174000F4029091F5022FBF0895CF92DF92EF92AD +:10175000FF920F931F932FB7F8944091F20250918C +:10176000F3026091F4027091F5022FBF6A017B01D0 +:10177000EE24FF248C0120E030E0C016D106E20602 +:10178000F30610F4415051099A01281B390BC90185 +:101790001F910F91FF90EF90DF90CF9008951F92CF +:1017A0000F920FB60F9211248F939F93AF93BF9315 +:1017B0008091F2029091F302A091F402B091F502AF +:1017C0000196A11DB11D8093F2029093F302A093A4 +:1017D000F402B093F502BF91AF919F918F910F905A +:1017E0000FBE0F901F901895CF93DF93FC01862FAB +:1017F0008078A9F4283008F04DC0442321F0958169 +:10180000973009F447C0EF01A1E0B0E09D8599232E +:1018100041F011962596A031B105C1F73BC080E09B +:1018200039C061111CC085E08A9FE0018B9FD00DFB +:101830001124CE0FDF1F442331F081E48887858196 +:101840008F5F858302C081E0888725E02A9FC001E1 +:101850002B9F900D1124E80FF91F80851BC0677026 +:10186000660F660F660F442341F0606485818F5FC9 +:1018700085838770687F682B03C02770687B622B25 +:1018800025E02A9FC0012B9F900D1124E80FF91F1E +:101890006087862FDF91CF910895611102C006966F +:1018A0000895FC0121E03585631739F02F5F3596E7 +:1018B0002031C9F780E090E00895069635E0239F37 +:1018C000800D911D11240895DF92EF92FF920F93E6 +:1018D0001F93CF93DF93EC01E62EF12C85E0689FF8 +:1018E000B0011124FE01E60FF71F8085182F177035 +:1018F00086FF17C001E085E0D82EFE01D09EE00DE6 +:10190000F11D112480858695869586958770181718 +:10191000F9F00F5F003189F78D81811302C01150FA +:101920001D8385E08E9DF0018F9DF00D1124EC0F3D +:10193000FD1F108681E0818712862296D783C68399 +:10194000DF91CF911F910F91FF90EF90DF9008955D +:10195000602FCE010E94640CD0CFFC01613499F459 +:101960009C01255B3F4F61E0AC014E5F5F4F1586E8 +:1019700066871786548743873596E217F307B9F7CA +:10198000FC011582089521E03585631729F02F5F4A +:1019900035962031C9F70895622F0C94640CFC0130 +:1019A0008DE691E0918380831582108681E08187A6 +:1019B0001286CF01029697838683128228E02383C2 +:1019C0002CE32483DF019F01255B3F4F41E01D96FF +:1019D0001C921D971E964C931E971F961C921F9744 +:1019E0001C969C938E931B971596A217B30779F7B5 +:1019F000EA58FF4F108281E18093FA0208958091A6 +:101A0000FA020895CF93C42F0E944D0C009789F0DD +:101A1000DC01ED91FC911197309759F013969C9150 +:101A200080E0891731F020812C1731F033968F5FD9 +:101A3000F8CF80E090E001C0CF01CF9108950F93DF +:101A40001F93CF93DF932115310571F0E901042F26 +:101A5000162F0E944D0CFC01892B41F01283D1837B +:101A6000C083038380E003C088ED01C086EDDF9171 +:101A7000CF911F910F910895CF92DF92FF920F9314 +:101A80001F93CF93DF93662381F1F62E8C016C01B7 +:101A900086E5C80ED11CC0E0D0E0D6018D919D91A5 +:101AA0006D010097F1F0DC01ED91FC910084F1856E +:101AB000E02D0995F81215C0AB96CC0FDD1FC00FB5 +:101AC000D11F88819981DC01ED91FC910480F58121 +:101AD000E02DDF91CF911F910F91FF90DF90CF907C +:101AE00009942196C031D105C1F680E0DF91CF91F4 +:101AF0001F910F91FF90DF90CF9008952E98089539 +:101B0000CF93C82F0E947E0DCEBD0DB407FEFDCF32 +:101B10001EBC0DB407FEFDCF0E949A098EB5CF9171 +:101B20000895CF93DF93C82FD62F0E947E0DC260F9 +:101B3000CEBD0DB407FEFDCFDEBD0DB407FEFDCF5B +:101B4000DF91CF910C949A098F929F92AF92BF929E +:101B5000CF92DF92EF92FF920F931F93CF93DF9379 +:101B6000EC01D62EC42E59010E944D0C7C01009729 +:101B700009F445C0FC0180819181892B09F441C0A1 +:101B80004C2D6D2DCE010E94020DF50191838083B5 +:101B90000097C9F1FC0182818695869590E080319D +:101BA000910514F08FE090E041E050E060E070E0DB +:101BB0004A015B0104C0880C991CAA1CBB1C8A95B5 +:101BC000D2F7D501C4010197F801918380836D2D6F +:101BD00080EE0E94910D88ED0E94800DF7019481A6 +:101BE000992331F0CA58DF4F68816260682B02C0C8 +:101BF000682F697F88ED0E94910D80E005C086ED19 +:101C000003C087ED01C08BEDDF91CF911F910F9144 +:101C1000FF90EF90DF90CF90BF90AF909F908F900C +:101C200008958F929F92AF92BF92CF92DF92EF92E0 +:101C3000FF920F931F93CF93DF93862E942E59011B +:101C40000E94340B6B017C0128E8C20E23E1D21EF6 +:101C5000E11CF11C00E010E0D0E0C0E098280E94F8 +:101C6000340BDC01CB018C199D09AE09BF09B7FF0C +:101C70002DC0692D80EF0E94910D0E94340BDC0174 +:101C8000CB018C199D09AE09BF09B7FF09C088ECCB +:101C90000E94800D87FFF1CF60E888EC0E94910DD3 +:101CA00088EF0E94800DC82FCF70C43019F0CE305D +:101CB00051F00CC00F5F1F4FA114B10481F20A153F +:101CC0001B0569F603C0DF5FD33049F68C2FDF9127 +:101CD000CF911F910F91FF90EF90DF90CF90BF9029 +:101CE000AF909F908F9008959F92AF92BF92CF92A6 +:101CF000DF92EF92FF920F931F93CF93DF937C01BC +:101D0000D42F122F902E00E06C01C60ED11CC60EEF +:101D1000D11C86E5C80ED11CA42EB12CABE2AA0EB4 +:101D2000B11CAA0CBB1CAE0CBF1CF60180819181BA +:101D3000DC01ED91FC910280F381E02D292D412FF2 +:101D40006D2F0995803EC9F4D1110BC061E088EE7A +:101D50000E94910D66E670E080E090E00E94360BF4 +:101D600014C0F50180819181DC01ED91FC91028428 +:101D7000F385E02D612F099508C08D3021F40330E3 +:101D800008F03FC014C081113FC0F60180819181ED +:101D9000DC01ED91FC910190F081E02D292D412F86 +:101DA0006D2F0995C82F8D3051F4033050F464E63F +:101DB00070E080E090E00E94360B0F5FB6CF882382 +:101DC00011F1D1110BC061E088EE0E94910D66E621 +:101DD00070E080E090E00E94360B11C0ED2FF0E043 +:101DE000BB96EE0FFF1FEE0DFF1D80819181DC0180 +:101DF000ED91FC910284F385E02D612F09958C2FE4 +:101E000003C08DE001C080E0DF91CF911F910F9161 +:101E1000FF90EF90DF90CF90BF90AF909F9008958C +:101E20000F931F93CF93DF93182F062FEA010E9481 +:101E30007E0D12601EBDFE01802F882339F00DB487 +:101E400007FEFDCF91919EBD8150F7CFC00FD11DF0 +:101E50000DB407FEFDCF0E949A09CE01DF91CF910C +:101E60001F910F9108952F923F924F925F926F9220 +:101E70007F928F929F92AF92BF92CF92DF92EF921A +:101E8000FF920F931F93CF93DF9300D000D01F9248 +:101E9000CDB7DEB77D836C834A016901FB01F18018 +:101EA0008FEF8F0D803408F074C00E94340B2B012B +:101EB0003C01F8E84F0EF3E15F1E611C711CEC81E0 +:101EC000FD81828180FD02C060E401C060E888EE8F +:101ED0000E94910D312C8F2D90E09A838983C1143B +:101EE000D10409F448C0E980FA80CE14DF0408F474 +:101EF0007601EB82A8016E2D80E10E94100F6E2DFD +:101F000088E30E94910DEC81FD816081606280EF29 +:101F10000E94910D88EC0E94800D87FFFBCF60E846 +:101F200088EC0E94910D88EF0E94800D8F70382EF2 +:101F3000A12CB12C212C332009F46BC00E94340B4E +:101F4000DC01CB0184199509A609B709B7FF61C067 +:101F5000F6E03F1601F12EE0321609F455C084E098 +:101F6000381209C0FFEFAF1ABF0A8114910449F17A +:101F7000A814B90431F588EF0E94800D85FB8827ED +:101F800080F9EC81FD81928180FB90F99283832D11 +:101F900045C08AED43C088EF0E94800D85FB8827ED +:101FA00080F991E08927EC81FD81928180FB90F995 +:101FB000928390FD02C060E401C060E888EE0E9458 +:101FC000910D60E088E30E94910DF801608180E14D +:101FD0000E94910D6B8188E30E94910DEC81FD813F +:101FE0006081606280EF0E94910D88EC0E94800DFC +:101FF00087FFFBCF60E888EC0E94910D88EF0E947C +:10200000800D8F70382E97CF239423E02212D9CFE2 +:10201000B2CFCE18DF080E0D1F1D61CF0F900F90AD +:102020000F900F900F90DF91CF911F910F91FF9024 +:10203000EF90DF90CF90BF90AF909F908F907F9068 +:102040006F905F904F903F902F9008952F923F9206 +:102050004F925F926F927F928F929F92AF92BF92B8 +:10206000CF92DF92EF92FF920F931F93CF93DF9364 +:10207000CDB7DEB72A970FB6F894DEBF0FBECDBF3F +:102080001C016B015B834A835901D9016D907C90DF +:102090001197FB01F181F9831D921C92DB011296CD +:1020A0008C9181FD02C060E101C060E288EE0E9477 +:1020B000910D8E2D90E0A0E0B0E08C839D83AE83E7 +:1020C000BF8368862A813B81D6014C9160E0C101C3 +:1020D0000E94110EF82EB6E08B1318C088EF0E94F4 +:1020E000800D82958170E1E08E27D60112969C9139 +:1020F000129780FB91F912969C9391FD02C060E1CA +:1021000001C060E288EE0E94910DDCCF811167C0B2 +:1021100088EC0E94800D82FF60C080E30E94800DE9 +:10212000582E90E06816790608F45884F5018081ED +:1021300091819301281B390B3A87298737FF02C009 +:102140001A861986852C912C89859A858816990678 +:1021500014F49A86898649840E947E0D98E09EBD7B +:102160000DB407FEFDCFF801442041F01EBC4A9497 +:102170000DB407FEFDCF8EB58193F6CFA985BA8544 +:102180000A0F1B1F0E949A0964E088EC0E94910DBF +:10219000F50180819181880E991E91828082F9815A +:1021A0005F1618F08614970470F088EF0E94800D77 +:1021B00082958170D60112969C91129780FB91F9BD +:1021C00012969C930CC0EE2009F47CCF6C817D812B +:1021D0008E819F810E94360B75CF80EFF82E8F2D58 +:1021E0002A960FB6F894DEBF0FBECDBFDF91CF9118 +:1021F0001F910F91FF90EF90DF90CF90BF90AF9025 +:102200009F908F907F906F905F904F903F902F9016 +:1022100008952F923F924F925F926F927F928F928A +:102220009F92AF92BF92CF92DF92EF92FF920F9365 +:102230001F93CF93DF93CDB7DEB761970FB6F894B6 +:10224000DEBF0FBECDBF3C01F42E322E202EC98A38 +:102250004EA05FA0C8A4D9A4188A1F861E861D861A +:102260008E01035F1F4F9E01215F3F4F0E94A40D0F +:10227000811196C039822A82EB8289898C83BE8241 +:10228000AD8298868F82AE014F5F5F4F68E080E23B +:102290000E94100F2D853E854F2D60E1C3010E94E5 +:1022A000110EE82E811178C0932D9078392EC1142B +:1022B000D10409F462C0EF85F8898281992309F479 +:1022C0004DC082608283540122242394A114B1045E +:1022D00009F458C05C864B864D855E856F8578898C +:1022E000E12C86019E01255F3F4FC3010E9426100D +:1022F000E82EA6E08A130FC00F85188988EF0E9488 +:10230000800D85FB882780F98225F801928180FB6A +:1023100091F99283DBCF81113FC08AA59BA50097DD +:10232000A1F0DC01ED91FC9111970190F081E02D7D +:10233000C4018A199B099A8789876B857C859E01D0 +:10234000275F3F4FA601CD0109958B859C85A81A73 +:10235000B90A8415950508F0B9CF0FC08160828352 +:102360004D855E8586019201BF01C3010E94330F36 +:10237000811116C02D853E8511C02D853E853110F9 +:1023800005C00CC0E11008C02D853E8560EA4F2DC8 +:10239000C3010E94110E04C08E2D02C060E8F7CF69 +:1023A00061960FB6F894DEBF0FBECDBFDF91CF911F +:1023B0001F910F91FF90EF90DF90CF90BF90AF9063 +:1023C0009F908F907F906F905F904F903F902F9055 +:1023D00008958F929F92AF92BF92CF92EF920F93F8 +:1023E0001F931F921F921F930F933F932F934901A7 +:1023F000A12CB12CCC24C394E12C06E020E80E944F +:1024000009110F900F900F900F900F900F901F9148 +:102410000F91EF90CF90BF90AF909F908F900895C5 +:102420008F929F92AF92BF92CF92EF92FF920F93B3 +:102430001F921F92FF92EF923F932F934901A12C7D +:10244000B12C22E0C22EE02E06E020E80E94091105 +:102450000F900F900F900F900F900F900F91FF9093 +:10246000EF90CF90BF90AF909F908F9008954F9234 +:102470005F926F927F928F929F92AF92BF92CF9214 +:10248000DF92EF92FF920F931F93CF93DF93CDB71D +:10249000DEB7C054D1090FB6F894DEBF0FBECDBF72 +:1024A0003C01D62E542E422EC02ECE0101965C0148 +:1024B0007C01022F29E030E0C3010E94101281113B +:1024C0001BC08B809C801F93CF92BF92AF921F92B4 +:1024D00080E48F93A12CB12C82E0C82EE42C06E07E +:1024E00020E8452D6D2DC3010E9409110F900F901A +:1024F0000F900F900F900F90C05CDF4F0FB6F894C5 +:10250000DEBF0FBECDBFDF91CF911F910F91FF9026 +:10251000EF90DF90CF90BF90AF909F908F907F9083 +:102520006F905F904F9008958F929F92AF92BF925D +:10253000CF92EF920F93CF931F921F921F921F92F1 +:102540001F921F92812C912CA12CB12CC12CE22E18 +:1025500005E020E00E940911C82F6CE271E080E0E4 +:1025600090E00E94360B0F900F900F900F900F90FD +:102570000F908C2FCF910F91EF90CF90BF90AF9095 +:102580009F908F9008950F931F93CF93DF938A3F6F +:102590003FEF930711F486ED2DC0DC011696ED9107 +:1025A000FC911797EF2B09F1122F242FEC011A87BA +:1025B00040E00E94F40B082F8823C9F0682FCE0159 +:1025C0000E944D0C009739F3FC011483202F40E04A +:1025D00060E0CE010E949412182F882351F0602FE2 +:1025E000CE010E94AD0C812F05C087ED03C084EDA4 +:1025F00001C080E0DF91CF911F910F9108952F923C +:102600003F924F925F926F927F928F929F92AF9282 +:10261000BF92CF92DF92EF92FF920F931F93CF93CF +:10262000DF93CDB7DEB766970FB6F894DEBF0FBE67 +:10263000CDBF1B8A38E03C8B3CE33D8B8A3F3FEFAC +:10264000930709F464C0522E342E462E7C01DC011F +:102650001696CD90DC901797CE01439617969C93D3 +:102660008E9316971A962C938E010F5F1F4F22E1BF +:1026700030E040E060E0C7010E94E911F701D78235 +:10268000C6828111A6C089849A846B847C84FD8172 +:10269000FE8B2E80670136E5C30ED11C560110E07B +:1026A000D5018D919C910097F1F1DC01ED91FC91A8 +:1026B0000084F185E02D0995811135C0F5018081F7 +:1026C0009181DC01ED91FC910088F189E02D622D72 +:1026D0000995882341F1F50180819181DC01ED911B +:1026E000FC910484F585E02DA301B40109958111C5 +:1026F00010C0F50180819181DC01ED91FC9106848F +:10270000F785E02D6E890995811103C00CC086ED17 +:1027100060C0052D232D442D612FC7010E94740E2A +:10272000813D09F056C01F5FB2E0AB0EB11C103105 +:1027300009F0B6CF10E0F601808191810097E1F1B8 +:10274000DC01ED91FC910084F185E02D099581116A +:1027500033C0F60180819181DC01ED91FC9100880C +:10276000F189E02D622D09958823D9F0F601808149 +:102770009181DC01ED91FC910484F585E02DA301AC +:10278000B4010995811118C0F60180819181DC01A5 +:10279000ED91FC910684F785E02D6E8909958111F4 +:1027A0000BC0052D232D442D612FC7010E94740EEF +:1027B000982F977F913D69F41F5FE2E0CE0ED11C08 +:1027C000103109F0B8CF252D432D642DC7010E948B +:1027D000C31266960FB6F894DEBF0FBECDBFDF9171 +:1027E000CF911F910F91FF90EF90DF90CF90BF900E +:1027F000AF909F908F907F906F905F904F903F90A1 +:102800002F9008958F929F92AF92BF92CF92EF92A6 +:102810000F931F921F921F921F921F921F92812C43 +:10282000912CA12CB12CC12CE22E09E020E00E94B9 +:1028300009110F900F900F900F900F900F900F9124 +:10284000EF90CF90BF90AF909F908F9008958F9210 +:102850009F92AF92BF92CF92DF92EF920F931F930E +:10286000CF93DF9300D000D0CDB7DEB76C01590114 +:1028700048011C821B821A8219828E010F5F1F4F32 +:102880009E012D5F3F4F0E94A40D811109C0498117 +:102890005A816B817C8184019501C6010E942610BA +:1028A0000F900F900F900F90DF91CF911F910F918C +:1028B000EF90DF90CF90BF90AF909F908F90089552 +:1028C000AF92BF92CF92DF92EF92FF920F931F933E +:1028D000CF938C011D990EC088EC0E94800D85FF5E +:1028E00005C0C8010E94B50960E201C060E088EC43 +:1028F0000E94910D8091A901813039F040F0823021 +:1029000079F0833079F5C1E00CC083E106C0809195 +:10291000FA02807F803131F181E18093FA0222C096 +:10292000C0E08091FA02807F8031E9F40E94340B8C +:10293000DC01CB0188539F4FAF4FBF4F8093F6020E +:102940009093F702A093F802B093F90280E280938B +:10295000FA0280ED0E94800D682F6F7D80ED0E944D +:10296000910D01C0C0E0780186E5E80EF11C680118 +:10297000A6E7CA0ED11C5701F501819191915F0123 +:10298000009739F0DC01ED91FC910680F781E02D94 +:102990000995AC14BD0481F78091FA02803409F4E2 +:1029A00047C050F4803221F18033A1F1813109F028 +:1029B0008EC0F60110820AC0813509F464C08038E7 +:1029C00009F476C0803509F082C045C0D7018D91E9 +:1029D0009D917D01009739F0DC01ED91FC9104801F +:1029E000F581E02D0995EC14FD0481F782E16DC0BD +:1029F0000E94340B0091F6021091F7022091F80228 +:102A00003091F902DC01CB01801B910BA20BB30BBF +:102A1000B7FD5DC080ED0E94800D682F606280ED83 +:102A20000E94910D61E088EE0E94910D80E44DC0FE +:102A300088EE0E94800D80FD4AC060E488EC0E9410 +:102A4000910D88ED0E94800D682F686088ED0E94CE +:102A5000910D80E53AC088EC0E94800D86FF37C05A +:102A600081E58093FA020E94340BDC01CB0144968D +:102A7000A11DB11D8093F6029093F702A093F80276 +:102A8000B093F90224C00E94340BC090F602D0909B +:102A9000F702E090F802F090F902DC01CB018C190A +:102AA0009D09AE09BF09B7FD12C080E88093FA0204 +:102AB0002C2F40E060E0C8010E94FF12882321F023 +:102AC000823D29F080EA01C080E98093FA02CF912B +:102AD0001F910F91FF90EF90DF90CF90BF90AF903C +:102AE00008958F929F92AF92BF92CF92EF920F93E1 +:102AF000CF93DF93CDB7DEB7C054D1090FB6F894AA +:102B0000DEBF0FBECDBF5F934F939E012F5F3F4F40 +:102B10003F932F931F9220E42F9320E8822E912C35 +:102B20005B0132E2C32EE12C06E021E840E0FC012B +:102B30006681848195810E9409110F900F900F90FA +:102B40000F900F900F90C05CDF4F0FB6F894DEBF70 +:102B50000FBECDBFDF91CF910F91EF90CF90BF907F +:102B6000AF909F908F9008958F929F92AF92BF9257 +:102B7000CF92DF92EF92FF920F93A42EB12C1F926F +:102B80001F92DF92CF92FF92EF924701C22EE02E6A +:102B900009E021E2462FFC016681848195810E9433 +:102BA00009110F900F900F900F900F900F900F91B1 +:102BB000FF90EF90DF90CF90BF90AF909F908F905D +:102BC00008958F929F92AF92BF92CF92EF920F9300 +:102BD000A62EB12C1F921F921F921F921F921F921E +:102BE000812C912CC22EE42E0AE021E240E0FC016F +:102BF0006681848195810E9409110F900F900F903A +:102C00000F900F900F900F91EF90CF90BF90AF90DB +:102C10009F908F9008958F929F92AF92BF92CF9284 +:102C2000EF920F93A62EB12C1F921F921F921F920C +:102C30001F921F92812C912CC12CE42E0BE021E2DB +:102C400040E0FC016681848195810E9409110F900A +:102C50000F900F900F900F900F900F91EF90CF90DB +:102C6000BF90AF909F908F900895FC01828508954A +:102C700081E0693009F080E00895CF93DF93EC01A3 +:102C80008A819B81DC01ED91FC910480F581E02D2E +:102C90006A8509958A85813439F4EA81FB81EA588D +:102CA000FF4F8081846080831A861B861C861D8668 +:102CB0001E861F86188A80E0DF91CF9108958F923B +:102CC0009F92AF92BF92CF92EF920F93A42EB12C0E +:102CD000B22A1F921F921F921F921F921F92812C45 +:102CE000912CC12CE62E01E023E240E0FC0162853C +:102CF000828193810E9409110F900F900F900F9085 +:102D00000F900F900F91EF90CF90BF90AF909F904A +:102D10008F9008958F929F92AF92BF92CF92EF9231 +:102D20000F93A62EB12C1F921F923F932F935F9368 +:102D30004F934A01C12CE12C00E023EA40E0FC0162 +:102D40006285828193810E9409110F900F900F90EC +:102D50000F900F900F900F91EF90CF90BF90AF908A +:102D60009F908F9008958F929F92AF92BF92CF9233 +:102D7000EF920F93A42EB12CB22A1F921F921F9292 +:102D80001F921F921F92812C912CC12CE62E03E0E2 +:102D900023E240E0FC016285828193810E94091157 +:102DA0000F900F900F900F900F900F900F91EF904A +:102DB000CF90BF90AF909F908F9008952F923F92A9 +:102DC0004F925F926F927F928F929F92AF92BF923B +:102DD000CF92DF92EF92FF920F931F93CF93DF93E7 +:102DE000CDB7DEB7E8970FB6F894DEBF0FBECDBF04 +:102DF000DC011A963C91311107C1122F242E362E78 +:102E00003C01FC01C280D380D601ED91FC91019080 +:102E1000F081E02D60E0C60109957C01009709F47E +:102E2000F5C0FC01A080B180A114B10409F4F0C088 +:102E30004301F4E08F0E911CDC0111969C928E925E +:102E400014961C93FE0131962F018F0128E030E08B +:102E500040E060E0D30112968D919C9113970E94FF +:102E6000E911F70114828111D9C08D81893009F0EF +:102E7000D1C00981D601ED91FC910280F381E02D52 +:102E8000222D41E0632DC6010995F3018287882335 +:102E900009F4C2C098859583282F40E060E08281C4 +:102EA00093810E949412182F882389F0D701AD9244 +:102EB000BC92D601ED91FC910480F581E02DD30107 +:102EC0001A966C91C6010995F3011286ABC0202FAA +:102ED000013208F020E2D701AD92BC9221110BC063 +:102EE000940142E0F3016285828193810E941F0D6B +:102EF000811197C010C030E0820140E0D3011A96E2 +:102F00006C911A9712968D919C9113970E94E911DA +:102F1000811187C0E5CF1F921F925F924F921F923F +:102F200088E08F9388E0882E912CA12CB12C99E217 +:102F3000C92EE12C06E020EA40E0F301628582819F +:102F400093810E940911182F0F900F900F900F90EE +:102F50000F900F90811166C08B81D3011B968C93CB +:102F60001B97720100E028E030E040E01A966C9177 +:102F70001A9712968D919C9113970E9410128111AD +:102F800050C02B813C8140E0F301628582819381B6 +:102F90000E941012811145C0298130E0CE01819636 +:102FA0007C0140E0D3011A966C911A9712968D918C +:102FB0009C9113970E941012811133C02E8140E022 +:102FC000F3016285828193810E940214811129C0DC +:102FD00001E0D3011B968C91801740F020E0402F38 +:102FE00068E0C3010E94B3160F5FF3CFD3011296BE +:102FF000ED91FC911397EA58FF4F808184608083A4 +:1030000081E050968C930EC019ED0CC016ED0AC0ED +:1030100017ED08C011ED06C014ED04C0F701B18230 +:10302000A082182F812FE8960FB6F894DEBF0FBE4E +:10303000CDBFDF91CF911F910F91FF90EF90DF9067 +:10304000CF90BF90AF909F908F907F906F905F9048 +:103050004F903F902F900895CF92DF92FF920F9361 +:103060001F93CF93DF9300D000D0CDB7DEB78C0194 +:10307000F62E19821A821B821C8220E0462F61E103 +:103080000E945F1620E04F2D60E1C8010E945F168C +:1030900020E04F2D64E0C8010E94B31683E0C82EE3 +:1030A000D12C9E012F5F3F4F44E050E06F2DC801AF +:1030B0000E948A168823F1F020E04F2D64E1C801B8 +:1030C0000E945F1620E04F2D60E1C8010E945F164C +:1030D00064E170E080E090E00E94360B0F900F906A +:1030E0000F900F90DF91CF911F910F91FF90DF9084 +:1030F000CF90089589819A81AB81BC819D7F833077 +:103100009140A041B105C1F264E670E080E090E03A +:103110000E94360B81E0C81AD10819F6CDCFFC0108 +:1031200087E791E09183808373836283128613869D +:103130001486158616861786108A148288E0858381 +:103140009CE3968391E09783808784E08187611573 +:103150007105B1F0DB01AA5ABF4F80E090E02D91DC +:103160003D91232B49F48B96880F991FDB01A80F03 +:10317000B91FED93FC93089501968031910579F77D +:103180000895EF92FF920F931F93CF938C01C62F58 +:103190007A01FA0180819181A281B3818130F3E0CB +:1031A0009F07F1E0AF07B105D1F060F48115E1E0D0 +:1031B0009E07AE07B10571F181309140A140B10584 +:1031C00071F064C0833021E0920720E1A207B105CD +:1031D000E1F183309340A041B105B9F157C080912E +:1031E000FB02811153C020E04C2F61E1C8010E9415 +:1031F0005F1620E04C2F60E1C8010E945F1620E0BE +:103200004C2F64E0C8010E94B31681E08093FB025A +:1032100081EB3DC020E0462F61E1C8010E945F16AE +:1032200020E04C2F60E1C8010E945F161092FB0263 +:10323000F80162856770C770660F660F660F6C2BAA +:10324000828193810E943C0D21C020E04C2F64E1DB +:10325000C8010E945F1620E04C2F60E1C8010E9467 +:103260005F1664E170E080E090E00E94360BF801A8 +:103270006285F70121812695217067704C2FF80136 +:10328000828193810E94FF121092FB0280E0CF9115 +:103290001F910F91FF90EF900895CF92DF92EF92E0 +:1032A0000F931F93CF93DF93CDB7DEB72E970FB653 +:1032B000F894DEBF0FBECDBF6C0181E090E09E8729 +:1032C0008D87E12C8E010F5F1F4F9E01235F3F4FC3 +:1032D00041E0F6016285828193810E942714811169 +:1032E00051C002E011E089818023D1F019861A864D +:1032F0001B861C869E01275F3F4F44E050E0612FF4 +:10330000C6010E948A1681110BC0AE01475F5F4F54 +:10331000612FC6010E94C118813B99F1811132C011 +:10332000000F1F5F1830F9F611E0F6018385811751 +:1033300040F119861A861B861C869E01275F3F4F27 +:1033400044E050E0612FC6010E948A16811117C027 +:1033500089859A85877091708130914081F48B8541 +:103360009C8581609C878B87AE01475F5F4F612F93 +:10337000C6010E94C118813B21F0811103C01F5F6B +:10338000D4CF80E02E960FB6F894DEBF0FBECDBF2F +:10339000DF91CF911F910F91EF90DF90CF90089523 +:1033A0000F931F93CF93DF93FC012089211102C05B +:1033B00080E020C0EC010E94340B0C851D852E8519 +:1033C0003F85DC01CB01801B910BA20BB30BB7FD3A +:1033D000EFCFCE010E944D19182F0E94340BDC0153 +:1033E000CB018C599F4FAF4FBF4F8C879D87AE87C6 +:1033F000BF87812FDF91CF911F910F910895CF93B8 +:10340000DF93FC01EB0180819181892B21F1828185 +:10341000882319F1DA012D913C91232BE1F0A88149 +:10342000B9819C91A381B0E0A81BB10920813181B1 +:10343000A20FB31F9C93828181508283DA018D9108 +:103440009C91119701978D939C9388819981019606 +:1034500099838883DCCF80E003C08381828381E00D +:10346000DF91CF910895CF92DF92EF92FF920F9369 +:103470001F93CF93DF936C01EB017B01E40EF51EEC +:1034800000E010E0CE15DF0561F06991D601ED9105 +:10349000FC910190F081E02DC6010995080F191FDC +:1034A000F1CFC801DF91CF911F910F91FF90EF9065 +:1034B000DF90CF900895809108040895CF93DF9313 +:1034C00000D01F92CDB7DEB79C0180918B05843070 +:1034D00019F593E099833B832A839093E9008FEF5A +:1034E0009091E800815095FD06C095ED9A95F1F711 +:1034F00000008111F5CF8091E80085FF0DC040E00C +:1035000050E063E070E0CE0101960E94CC1D8091F6 +:10351000E8008E778093E8000F900F900F90DF9176 +:10352000CF910895CF93DF9300D01F92CDB7DEB730 +:1035300020918B05243031F522E0298380589109B0 +:103540009B838A8383E08093E9008FEF9091E8006A +:10355000815095FD06C095ED9A95F1F70000811117 +:10356000F5CF8091E80085FF0DC040E050E063E0BA +:1035700070E0CE0101960E94CC1D8091E8008E770C +:103580008093E8000F900F900F90DF91CF910895F6 +:1035900020918B052430F1F422E02093E9002FEFF5 +:1035A0003091E800215035FD06C035ED3A95F1F730 +:1035B00000002111F5CF2091E80025FF0BC040E06D +:1035C00050E065E070E00E94CC1D8091E8008E77AD +:1035D0008093E8000895CF93DF9320918B052430EA +:1035E00049F521E02093E90021E8215059F030917C +:1035F000E80035FD07C0EFE3F1E03197F1F700C0D7 +:103600000000F3CF2091E80025FF14C0EC0140E05A +:1036100050E068E070E00E94CC1D8091E8008E7759 +:103620008093E80088E0FE01A0E0B4E001900D92F4 +:103630008A95E1F7DF91CF910895CF93C091FE0273 +:10364000C1110BC00E94990B643C79408105910522 +:1036500020F081E08093FE02C1E08C2FCF9108958D +:10366000CF93C82F0E941D1B882309F448C00FB6B2 +:1036700007FE45C080918B05843009F040C08091E1 +:10368000E9008F702091EC00922F917020FD90E85E +:10369000892B94E09093E9009091EB0090FF2CC06F +:1036A0009091EE0097FF28C09091030120910201B4 +:1036B000291709F447C02091E80025FF1DC0E091BB +:1036C0000001F0910101E90FF11D30819F5F209110 +:1036D00004019223909303013093F1009091E8004C +:1036E00095FDE2CF9091E80090FFDECF9091E80049 +:1036F0009E779093E800D8CF8F708093E9008091F7 +:10370000020190E0AC014F5F5F4F30910401232F25 +:1037100030E0242335234091030150E0241735077E +:10372000D1F02091000130910101F901E80FF91F5A +:10373000C083809102018F5F90910401892380935F +:10374000020109C09091E80095FFD6CFC093F10027 +:103750008F708093E90080E0CF91089580918A0571 +:10376000811109C00E945D1F0E94BA1F8091E20072 +:1037700084608093E200089510928A050895089568 +:10378000089542E061EC81E00E94D61E42E061ECC7 +:1037900082E00E94D61E42E061EC83E00E94D61EC9 +:1037A00042E261EC84E00C94D61E80918D0583305A +:1037B00009F453C030F4813071F0823009F48CC0C8 +:1037C00008958A3009F478C08B3009F45EC08930DE +:1037D00009F09AC020C080918C05813A09F094C00C +:1037E0008091E800877F8093E80080919005909118 +:1037F0009105892B21F468E080E094E003C060E04B +:1038000080E090E070E00E94171E8091E8008B77C6 +:103810008093E800089580918C05813209F074C08E +:103820008091900590919105892B09F06DC0809150 +:10383000E800877F8093E8008091E80082FD05C062 +:1038400080918B058111F8CF5FC08091F10080934A +:1038500008048091E8008B7753C080918C05813AF1 +:1038600009F052C08091900590919105892B09F043 +:103870004BC08091E800877F8093E8008091E8004A +:1038800080FFFCCF80910F0136C080918C05813282 +:10389000D9F58091900590919105892BA9F580919A +:1038A000E800877F8093E8000E940B1F80918E05BF +:1038B00080930F010C94B62780918C05813221F5FD +:1038C0008091E800877F8093E8000E940B1F809121 +:1038D0008F0580930904089580918C05813AA1F4A5 +:1038E0008091E800877F8093E8008091E80080FF66 +:1038F000FCCF809109048093F1008091E8008E77DD +:103900008093E8000C940B1F089580910804809325 +:10391000FF02109208040E94C4230C94B6270C9452 +:10392000851C0E94B92E8091FF028093080408959F +:103930000C94911C08950C949A1C0C949A1CCF938F +:1039400084B7877F84BF0FB6F894A89580916000F4 +:10395000886180936000109260000FBE90E080E864 +:103960000FB6F89480936100909361000FBE80E3DE +:103970009BE10E943D2E85E091E00E9444228DE96A +:1039800092E00E94DD020E949D1C0E9403230E947F +:103990005D1F0E94BA1F8091E20084608093E20064 +:1039A00078940E94052380918B05843019F00E9441 +:1039B0004F09F9CF8BE892E00E94DD020E949B1C28 +:1039C00089E792E00E94DD02C4E080918B0585309A +:1039D00019F40E945109F9CF0E9409232091E400B3 +:1039E0003091E5008091FC029091FD022817390783 +:1039F00061F38091E4009091E5009093FD02809343 +:103A0000FC020E941D1B882301F380918B058430EA +:103A1000E1F68091E9008F702091EC00922F917077 +:103A200020FD90E8892BC093E9009091EB0090FF76 +:103A300043C09091EE0097FF3FC090910301209109 +:103A40000201291709F12091E80025FF1DC0E0912E +:103A50000001F0910101E90FF11D30819F5F20917C +:103A600004019223909303013093F1009091E800B8 +:103A700095FDE3CF9091E80090FFDFCF9091E800B3 +:103A80009E779093E800D9CF9091F3002091F200B7 +:103A900030E0392B232B81F09091E80090FF0CC08F +:103AA0009091E80095FF03C01092F100F9CF90913A +:103AB000E8009E779093E8008F708093E90085CFAF +:103AC000292F332723303105C9F060F42130310527 +:103AD00081F02230310509F041C084E790E025E013 +:103AE00033E040C021323105E1F02232310531F1BD +:103AF00035C082E190E029E733E034C09927813076 +:103B0000910549F028F0029749F5E3EBF2E005C092 +:103B1000E1E0F3E002C0E1EFF2E0849190E09F0188 +:103B200021C06430D8F4E62FF0E0EE0FFF1FEB5613 +:103B3000FE4F2081318189E090E014C0643070F440 +:103B400070E0FB01EE0FFF1FE357FE4F2081318134 +:103B5000FB01E757FE4F808190E004C080E090E0D9 +:103B600020E030E0FA0131832083089580E189BDAF +:103B700082E189BD09B400FEFDCF8091D8008F7D20 +:103B80008093D8008091E00082608093E000809173 +:103B9000E00081FDFCCF0895CF92DF92EF92FF927B +:103BA0000F931F93CF93DF93EC018B017A010E9457 +:103BB0002A1F811133C0E114F10439F0F70180812B +:103BC0009181081B190BC80FD91FC12CD12C0115CD +:103BD000110519F18091E80085FD16C08091E8007B +:103BE0008E778093E800E114F10449F0F7018081B9 +:103BF0009181C80ED91ED182C08285E00FC00E947B +:103C00002A1F882321F30AC089918093F100015073 +:103C10001109FFEFCF1ADF0ADACF80E0DF91CF91F1 +:103C20001F910F91FF90EF90DF90CF90089520911A +:103C30009205309193052617370748F061157105F5 +:103C400039F42091E8002E772093E80001C0B901F3 +:103C5000FC0120E06115710579F180918B058823C5 +:103C6000F1F18530F1F18091E80083FD3CC0809155 +:103C7000E80082FD2EC08091E80080FFEBCF20910C +:103C8000F3008091F20090E0922B6115710551F0E4 +:103C90008830910538F421912093F1006150710929 +:103CA0000196F3CF21E0089709F020E08091E80029 +:103CB0008E778093E800CECF2111CFCF0AC08091BC +:103CC0008B05882361F0853061F08091E80083FDE9 +:103CD0000AC08091E80082FFF2CF80E0089582E080 +:103CE000089583E0089581E0089520919205309130 +:103CF00093052617370748F06115710539F42091AF +:103D0000E8002E772093E80001C0B901FC0120E013 +:103D10006115710591F180918B05882309F440C0EC +:103D2000853009F43FC08091E80083FD3DC080915B +:103D3000E80082FD2FC08091E80080FFE9CF20914C +:103D4000F3008091F20090E0922B6115710559F01B +:103D50008830910540F424912093F1003196615010 +:103D600071090196F2CF21E0089709F020E08091D7 +:103D7000E8008E778093E800CBCF2111CCCF0AC02A +:103D800080918B05882361F0853061F08091E80097 +:103D900083FD0AC08091E80082FFF2CF80E00895A1 +:103DA00082E0089583E0089581E00895982F973088 +:103DB00068F59093E900981739F07091EC00209124 +:103DC000ED005091F00003C0242F762F50E021FD2C +:103DD00002C09F5FECCF3091EB003E7F3093EB0051 +:103DE0003091ED003D7F3093ED003091EB0031607C +:103DF0003093EB007093EC002093ED005093F000B3 +:103E00002091EE0027FDE5CF80E008958F7080932C +:103E1000E90081E0089580918C0587FF11C08091B1 +:103E2000E80082FD05C080918B058111F8CF11C09B +:103E30008091E8008B770BC080918B05882349F037 +:103E40008091E80080FFF8CF8091E8008E77809322 +:103E5000E80008952091E4003091E50095E6409156 +:103E6000EC00842F817040FF23C08091E80080FD2A +:103E70001DC080918B05882399F0853099F0809141 +:103E8000EB0085FD11C04091E4005091E50024173E +:103E9000350729F3915011F09A01E1CF84E008959C +:103EA00082E0089583E0089581E0089580E0089518 +:103EB0004091E80042FFDDCF08950E94CB1F0E9491 +:103EC000D31FE0EEF0E0808181608083E8EDF0E0D8 +:103ED00080818F77808319BCA7EDB0E08C918E7FB5 +:103EE0008C9380818F7E808310928A0508950F9332 +:103EF0001F93CF93DF930E94CB1F0E94D31FC8ED67 +:103F0000D0E088818F7788838881806888838881E2 +:103F10008F7D888319BC10928B05109287051092B3 +:103F200089051092880500EE10E0F80180818B7FF2 +:103F3000808388818160888342E060E080E00E9425 +:103F4000D61EE1EEF0E080818E7F8083E2EEF0E02D +:103F5000808181608083808188608083F801808196 +:103F60008E7F8083888180618883DF91CF911F91CC +:103F70000F910895E8EDF0E080818F7E8083E7ED7A +:103F8000F0E080818160808384E082BF81E0809363 +:103F90008A050C94771FE8EDF0E080818E7F8083A6 +:103FA0001092E20008951092DA001092E100089554 +:103FB0001F920F920FB60F9211242F933F934F939E +:103FC0005F936F937F938F939F93AF93BF93EF9381 +:103FD000FF938091E10082FF0BC08091E20082FF9D +:103FE00007C08091E1008B7F8093E1000E94C01B9D +:103FF0008091DA0080FF1FC08091D80080FF1BC035 +:104000008091DA008E7F8093DA008091D90080FF62 +:104010000DC080E189BD82E189BD09B400FEFDCFFC +:1040200081E080938B050E94AE1B05C019BC1092E5 +:104030008B050E94BC1B8091E10080FF19C080911C +:10404000E20080FF15C08091E2008E7F8093E20045 +:104050008091E20080618093E2008091D8008062CC +:104060008093D80019BC85E080938B050E948F1C3B +:104070008091E10084FF30C08091E20084FF2CC079 +:1040800080E189BD82E189BD09B400FEFDCF809148 +:10409000D8008F7D8093D8008091E1008F7E80933F +:1040A000E1008091E2008F7E8093E2008091E20047 +:1040B00081608093E20080918705882311F084E07D +:1040C00007C08091E30087FD02C081E001C083E06A +:1040D00080938B050E94981C8091E10083FF29C08A +:1040E0008091E20083FF25C08091E100877F80936B +:1040F000E10082E080938B05109287058091E100BA +:104100008E7F8093E1008091E2008E7F8093E200B9 +:104110008091E20080618093E20042E060E080E014 +:104120000E94D61E8091F00088608093F0000E946B +:10413000BF1BFF91EF91BF91AF919F918F917F91A5 +:104140006F915F914F913F912F910F900FBE0F9004 +:104150001F9018951F920F920FB60F9211242F9354 +:104160003F934F935F936F937F938F939F93AF93FF +:10417000BF93CF93DF93EF93FF93C091E900CF708C +:104180008091EC00D82FD17080FDD0E81092E9002A +:104190008091F000877F8093F00078940E94EE2059 +:1041A0001092E9008091F00088608093F000CD2BA0 +:1041B000CF70C093E900FF91EF91DF91CF91BF9154 +:1041C000AF919F918F917F916F915F914F913F91AF +:1041D0002F910F900FBE0F901F9018951F93CF93A4 +:1041E000DF93CDB7DEB7AA970FB6F894DEBF0FBE48 +:1041F000CDBFECE8F5E08091F100819325E0E43952 +:10420000F207C9F70E94D51B8091E80083FF24C103 +:1042100080918C0590918D05492F50E04A305105D1 +:1042200008F01AC1FA01EA5AFF4F0C944233803861 +:1042300081F0823809F010C1809190058F708093D1 +:10424000E9008091EB0085FB882780F91092E90056 +:1042500006C08091880590918905911182609091A6 +:10426000E800977F9093E8008093F1001092F100AE +:10427000C8C0282F2D7F09F0EFC0882319F08230A5 +:1042800061F0EAC080918E05813009F0E5C093307D +:1042900009F080E0809389052BC080918E05811103 +:1042A00027C0809190058F7009F4D6C08093E900F3 +:1042B0002091EB0020FF1CC0933021F48091EB0093 +:1042C000806214C09091EB0090619093EB0021E02C +:1042D00030E0A90102C0440F551F8A95E2F74093D0 +:1042E000EA001092EA008091EB0088608093EB0076 +:1042F0001092E9008091E800877F86C08111ACC0F0 +:1043000010918E051F778091E3008078812B809338 +:10431000E3008091E800877F8093E8000E940B1FF4 +:104320008091E80080FFFCCF8091E300806880935B +:10433000E300111102C082E001C083E080938B058D +:104340008BC08058823008F087C080918E05909194 +:104350008F058C3D53E0950779F583E08A838AE2E7 +:1043600089834FB7F894DE01139620E03EE051E2D6 +:10437000E32FF0E050935700E49120FF03C0E29553 +:10438000EF703F5FEF708E2F90E0EA3010F0C7962D +:1043900001C0C0968D939D932F5F243149F74FBF85 +:1043A0008091E800877F8093E8006AE270E0CE01A8 +:1043B00001960E94171E14C0AE014F5F5F4F6091BF +:1043C00090050E94601DBC01892B09F445C09091A5 +:1043D000E800977F9093E80089819A810E94751E7A +:1043E0008091E8008B778093E80036C08038A1F593 +:1043F0008091E800877F8093E80080918705809313 +:10440000F1008091E8008E778093E8000E940B1FF6 +:1044100023C0811121C080918E0590918F0599272D +:104420000297D4F48091E800877F8093E800809120 +:104430008E05809387050E940B1F8091870581114F +:1044400006C08091E30087FD02C081E001C084E0E6 +:1044500080938B050E94C11B8091E80083FF0AC0F6 +:104460008091E800877F8093E8008091EB00806274 +:104470008093EB00AA960FB6F894DEBF0FBECDBFB7 +:10448000DF91CF911F91089590930F0480930E04B4 +:104490000895E0910E04F0910F04309721F00190FF +:1044A000F081E02D099480E00895EF92FF920F9340 +:1044B0001F93CF93DF93E0910E04F0910F04309798 +:1044C000B1F18C010280F381E02D099580917C058A +:1044D00082FF2DC080FF04C086E994E00E94DD02C7 +:1044E000E80118E080E9E82E84E0F82E80917C0550 +:1044F00080FF0BC088811F928F93FF92EF920E94E2 +:1045000076030F900F900F900F901150219611117C +:10451000EDCF80917C0580FF0AC08EE894E0DF91AA +:10452000CF911F910F91FF90EF900C94DD02DF91DE +:10453000CF911F910F91FF90EF900895E0910E049D +:10454000F0910F04309721F00480F581E02D09945B +:104550000895CF93DF9320910C0430910D04281718 +:10456000390709F190930D0480930C04E0910E0437 +:10457000F0910F043097B9F0EC010680F781E02D3F +:10458000099580917C0582FF0EC080FF0CC0DF93EF +:10459000CF9380E894E09F938F930E9476030F90CF +:1045A0000F900F900F90DF91CF910895CF93DF93ED +:1045B00020910A0430910B042817390709F19093D0 +:1045C0000B0480930A04E0910E04F0910F043097DD +:1045D000B9F0EC010084F185E02D099580917C050E +:1045E00082FF0EC080FF0CC0DF93CF9380E794E082 +:1045F0009F938F930E9476030F900F900F900F90D0 +:10460000DF91CF9108950C94C5230E94840B0C94E4 +:10461000400A8F929F92AF92BF92CF92DF92EF9219 +:10462000FF920F931F93CF93DF9300D000D01F9280 +:10463000CDB7DEB70E94560701E114E0F12C8F2DB3 +:104640000E948C084C01F801A080B180A826B926F0 +:10465000A114B10439F4F3940E5F1F4FF0E1FF127F +:10466000EECF39C080917C0581FD0E94B908E12C14 +:10467000CC24C394D12CC5018C219D21892B21F1FF +:10468000E982FA8221E0C4018C219D21892B09F461 +:1046900020E02B830E948D0B8160782F9D838C837B +:1046A00049815A816B818D810E94C82349815A8139 +:1046B0006B817C818D810E94682EF80180819181BF +:1046C0008C259D2591838083E394CC0CDD1CF0E147 +:1046D000EF12D1CFC0CF8FEF89838A831B820E94D4 +:1046E0008D0B8160782F9D838C8349815A816B81EA +:1046F0008D810E94C8230E94672E0E941E310E9455 +:10470000492290911004891759F10E9449228093FF +:10471000100490917C0592FF0EC090FF0CC01F9278 +:104720008F9381EA94E09F938F930E9476030F907A +:104730000F900F900F90809110040F900F900F909A +:104740000F900F90DF91CF911F910F91FF90EF90FD +:10475000DF90CF90BF90AF909F908F900C94792E68 +:104760000F900F900F900F900F90DF91CF911F91AE +:104770000F91FF90EF90DF90CF90BF90AF909F9000 +:104780008F9008950C94F30808950895089508955E +:10479000CF93DF93CDB7DEB72B970FB6F894DEBF7C +:1047A0000FBECDBF942F4F83252F588769877A87F7 +:1047B0008B874A855B85452B31F02F3F31F481E0B3 +:1047C0009F3F19F403C081E001C080E080FD07C075 +:1047D0004F81588569857A858B850E94682EDE0118 +:1047E000119686E0FD0111928A95E9F785E0FE01B8 +:1047F000379601900D928A95E1F749815A816B8134 +:104800007C818D819E810E94C12A2B960FB6F894DF +:10481000DEBF0FBECDBFDF91CF910895882309F48D +:104820005CC09CEF980F913A20F090E5980F9E3273 +:1048300018F40E949F2D0DC090E2980F983058F404 +:10484000877091E001C0990F8A95EAF7892F0E943D +:10485000DD2D0C94172E9BE5980F933070F4853A5C +:1048600029F0863A31F083E890E005C081E890E0D5 +:1048700002C082E890E00C94A92298E5980F953147 +:1048800060F5883A89F0893A91F08A3A99F08B3A42 +:10489000A1F08C3AA9F08D3AB1F08E3AB9F08F3A86 +:1048A000C1F080E090E017C082EE90E014C089EE85 +:1048B00090E011C08AEE90E00EC085EB90E00BC056 +:1048C00086EB90E008C083EB90E005C084EB90E0BD +:1048D00002C087EB90E00C94D6220895882349F11A +:1048E0009CEF980F913A20F090E5980F9E3218F4C3 +:1048F0000E94BC2D0DC090E2980F983058F487703C +:1049000091E001C0990F8A95EAF7892F0E94E32D63 +:104910000C94172E9BE5980F933020F480E090E0E4 +:104920000C94A922885A853120F480E090E00C9400 +:10493000D6220895882321F00E94DD2D0C94172E95 +:104940000895882321F00E94E32D0C94172E0895DA +:10495000CF92DF92EF92FF920F931F93CF93DF934B +:1049600000D000D01F92CDB7DEB76C0185E0F60114 +:10497000DE01119601900D928A95E1F7F6014081D2 +:104980005181238134812115310531F05F3F31F4AC +:1049900091E04F3F19F403C091E001C090E090FD19 +:1049A000C5C2F601F280E580E2948FE0E822722F22 +:1049B0003D832C836F2D8D810E941B2D8C010E94C5 +:1049C0001A2D0E94142CE12FE295EF708E2F90E0AB +:1049D000FC01E05AFF4F0C944233812F807F1F70FF +:1049E000882311F01295107FFF2049F0112309F45C +:1049F00052C2812F0E94F02D0E94172E4CC2802F90 +:104A00000E946E24112309F491C2812F0E94F62D79 +:104A10000F900F900F900F900F90DF91CF911F91FB +:104A20000F91FF90EF90DF90CF900C94172E812F75 +:104A3000807F1F70803211F01295107F002319F0D3 +:104A4000013009F12BC0FF20A9F0EE2059F1F1E06F +:104A5000812FEF1228C00F900F900F900F900F90A2 +:104A6000DF91CF911F910F91FF90EF90DF90CF904A +:104A70000C94002EEE2021F081E0E81609F456C2D5 +:104A80000E94032E2DC0FF20E9F0E5E0EE1508F4AA +:104A90004DC20E94DA2D812329F022C0FF20F1F0BF +:104AA000E11015C0812F0F900F900F900F900F9075 +:104AB000DF91CF911F910F91FF90EF90DF90CF90FA +:104AC0000C949A24F4E0FE1508F430C209C0F601F3 +:104AD000858180FFE0C18F708583E4CFE110EEC156 +:104AE000812F61C1812F86958695837019F0813061 +:104AF000B9F01CC2FF2019F0C801937002C080E019 +:104B000090E00F900F900F900F900F90DF91CF914A +:104B10001F910F91FF90EF90DF90CF900C94A922FE +:104B2000FF2019F0C801937002C080E090E00F9060 +:104B30000F900F900F900F90DF91CF911F910F91D9 +:104B4000FF90EF90DF90CF900C94D622802FFF2023 +:104B500019F00E94A42F02C00E940C300F900F90F9 +:104B60000F900F900F90DF91CF911F910F91FF90B9 +:104B7000EF90DF90CF900C949130812F837009F0EB +:104B800070C0F110D3C1202F229526952770220FD7 +:104B9000220F602F6F70862F90E0A0E0B0E06C01D4 +:104BA0007D01022E04C0CC0CDD1CEE1CFF1C0A94FF +:104BB000D2F704FF12C08FE090E0A0E0B0E004C0A4 +:104BC000880F991FAA1FBB1F2A95D2F7BC01CD01E0 +:104BD000609570958095909503C060E070E0CB0182 +:104BE0001695169513701230B1F040F56C297D2999 +:104BF0008E299F29113031F10F900F900F900F9057 +:104C00000F90DF91CF911F910F91FF90EF90DF9068 +:104C1000CF900C942F2C6C297D298E299F290F90E1 +:104C20000F900F900F900F90DF91CF911F910F91E8 +:104C3000FF90EF90DF90CF900C94492C0E942F2C86 +:104C4000C701B6010F900F900F900F900F90DF915A +:104C5000CF911F910F91FF90EF90DF90CF900C9428 +:104C6000152CFF2019F0812F817001C086958823B3 +:104C700009F45CC1202F229526952770220F220F60 +:104C8000602F6F70862F90E0A0E0B0E06C017D0196 +:104C9000022E04C0CC0CDD1CEE1CFF1C0A94D2F7C3 +:104CA00004FF12C08FE090E0A0E0B0E004C0880FE5 +:104CB000991FAA1FBB1F2A95D2F7BC01CD01609591 +:104CC00070958095909503C060E070E0CB011695DB +:104CD000169513701230B1F040F56C297D298E299C +:104CE0009F29113031F10F900F900F900F900F907E +:104CF000DF91CF911F910F91FF90EF90DF90CF90B8 +:104D00000C94F62C6C297D298E299F290F900F90E9 +:104D10000F900F900F90DF91CF911F910F91FF9007 +:104D2000EF90DF90CF900C94082D0E94F62CC701D5 +:104D3000B6010F900F900F900F900F90DF91CF91D1 +:104D40001F910F91FF90EF90DF90CF900C94E42C87 +:104D5000003FC1F128F480E4800F803250F096C00B +:104D6000023F09F45EC008F449C0033F09F46CC077 +:104D70008DC0F02FF071EF2E812F8F71FF2051F039 +:104D80000E947D2C802FEE2019F08295807F8BCEA3 +:104D90008F7089CE0E949E2C802FEE2019F0829574 +:104DA000807F01C08F700F900F900F900F900F9029 +:104DB000DF91CF911F910F91FF90EF90DF90CF90F7 +:104DC0000C94A124FF20A9F084E08E1508F4AEC055 +:104DD000812F8F710F900F900F900F900F90DF9198 +:104DE000CF911F910F91FF90EF90DF90CF900C9497 +:104DF000C32CE5E0EE1508F499C0EACFFF2099F046 +:104E0000812F8F710F900F900F900F900F90DF9167 +:104E1000CF911F910F91FF90EF90DF90CF900C9466 +:104E20007D2CFF2069F3812F8F710F900F900F90D1 +:104E30000F900F90DF91CF911F910F91FF90EF9006 +:104E4000DF90CF900C949E2CFF2089F0812F8F71E2 +:104E50000F900F900F900F900F90DF91CF911F91B7 +:104E60000F91FF90EF90DF90CF900C94682C0F90F3 +:104E70000F900F900F900F90DF91CF911F910F9196 +:104E8000FF90EF90DF90CF900C94632CFF2099F06F +:104E9000EE2009F4B5CF802F0F900F900F900F9058 +:104EA0000F90DF91CF911F910F91FF90EF90DF90C6 +:104EB000CF900C940E24EE2009F4B5CF802F0F90E4 +:104EC0000F900F900F900F90DF91CF911F910F9146 +:104ED000FF90EF90DF90CF900C946E24412F4F7095 +:104EE000602FC6010E941E2F0F900F900F900F9001 +:104EF0000F90DF91CF911F910F91FF90EF90DF9076 +:104F0000CF900C946F2B412F4F70602FC6010F90E4 +:104F10000F900F900F900F90DF91CF911F910F91F5 +:104F2000FF90EF90DF90CF900C94212F0F900F9077 +:104F30000F900F900F90DF91CF911F910F91FF90E5 +:104F4000EF90DF90CF9008950E94FD2D0E94CC2D10 +:104F50000E94172E0E94C3310E94913080E090E0A1 +:104F60000E94A92280E090E00C94D6220E94ED2DB0 +:104F70000C94A4271F93CF93DF9300D000D01F92EF +:104F8000CDB7DEB7942F4983252F5A836B837C835B +:104F90008D834C815D81452B31F02F3F31F481E0D1 +:104FA0009F3F19F403C081E001C080E0182F117009 +:104FB00080FD31C049815A816B817C818D810E9445 +:104FC0001B2D292F22952F702C3030F42A30A0F47D +:104FD0002250223030F022C02C30C9F02F30B9F0EE +:104FE0001DC0853A28F48430C0F4823028F415C0FE +:104FF00090E2980F983088F0883E30F4803E68F454 +:105000008450813A58F409C0803F41F406C093FBB4 +:10501000112710F903C010E001C011E0812F0F909B +:105020000F900F900F900F90DF91CF911F910895E7 +:10503000CF93DF9300D000D01F92CDB7DEB70F9093 +:105040000F900F900F900F90DF91CF910895CF9315 +:10505000DF9300D000D000D0CDB7DEB726960FB6D4 +:10506000F894DEBF0FBECDBFDF91CF9108951F939F +:10507000CF93DF93C091310416E080913204C817BA +:1050800099F0D0E01C9FF0011D9FF00D1124ED5C04 +:10509000FB4F4081518162817381848195810E949F +:1050A00027282196C770E9CFDF91CF911F910895EE +:1050B00040916304509164046091650470916604AA +:1050C00080916704909168040C942728CF93809175 +:1050D000680482958F7009F05FC080916504882311 +:1050E00009F45AC080913104B09132047091630484 +:1050F000A0916404409166045091670491E07F3F61 +:1051000009F090E0692FC6E08B1709F445C04115FE +:10511000510521F0AF3F21F020E003C021E001C0A4 +:10512000262F90E020FD35C0C89FF001C99FF00DEB +:105130001124ED5CFB4F21812A132BC02081271302 +:1051400028C02281211125C02381348124173507ED +:1051500010F421503109241B350B283C3105C8F4CB +:10516000209168042F7020612093680426E0289F16 +:10517000F001299FF00D1124E85CFB4F80818F70B6 +:105180008061808383E694E00E94A824CF910C94F0 +:10519000372801968770B8CFCF910895AF92BF920C +:1051A000CF92DF92EF92FF920F931F93CF93DF93F3 +:1051B000CDB7DEB761970FB6F894DEBF0FBECDBF97 +:1051C0007C0185E0F701DE011D9601900D928A9524 +:1051D000E1F7D7014C9111965C9111971296DC90F2 +:1051E000129713960D911C9114973091630460915E +:1051F00064048091660490916704009731F06F3FDA +:1052000031F421E03F3F19F403C021E001C020E068 +:10521000B22FB170BB2E20FD6EC1A0906504AA20F4 +:1052200009F4CCC0209168040817190728F0F80188 +:10523000E81BF90BCF0104C080959095800F911F5A +:10524000CC24C394883C910580F0C12C207F09F0C8 +:10525000A1C0702F198B088B6D2D89890E94182889 +:1052600083E694E00E94A824BDC0822F807F09F0CD +:1052700056C0561315C0431313C0CD2CD11010C007 +:105280002F702061209368040E94582883E694E0E0 +:105290000E94A82480916804D70115968C935FC161 +:1052A0000115110531F05F3F31F481E04F3F19F4F2 +:1052B00003C081E001C080E080FD03C081E08D2556 +:1052C00002C080E090E0B82FB170CB2E80FF1CC0F0 +:1052D000809131042091320436E0821709F41CC118 +:1052E00090E0389FF001399FF00D1124ED5CFB4FE9 +:1052F0006181561306C06081461303C06281D612D5 +:1053000003C001968770E9CFCD2CDD2009F427C1B9 +:1053100080916804816080936804C12C20C1561379 +:1053200008C0431306C0D11004C080916804D7019F +:10533000B6C04D875E87DF86702F198B088B6D2D69 +:1053400089890E94BA27882399F1DD2089F120916B +:105350006804822F82958F7090E0029774F080919C +:1053600063049091640498878F8319861B870A874A +:105370002C87CE0107960E94A82486E0F701A3E6B9 +:10538000B4E001900D928A95E1F70E9466280E9490 +:10539000582811C0561781F14D875E87DF86702F20 +:1053A000198B088B6D2D89890E94BA27811138C00D +:1053B000C7010E94A824CC24C394D1C008171907A0 +:1053C00008F446C0F801E81BF90BCF01883C9105B1 +:1053D00008F443C0C12C702F198B088B6D2D89895F +:1053E0000E941828E3E6F4E086E0DF011D928A952A +:1053F000E9F70E945828B3C04313CECFD110CCCFC9 +:1054000080916804F7018583C7010E94A82486E083 +:10541000E3E6F4E0DF011D928A95E9F7CA2C9FC00C +:10542000DD2031F220916804822F82958F7090E008 +:1054300002970CF4A2CF80916304909164049A8344 +:1054400089831B821D830C832E83CE01019693CF0B +:1054500080959095800F911FB9CFCD2CDD2009F458 +:10546000A7CF561333C0431331C02091680420FDE9 +:1054700024C0822F82958F70482F50E0411551052E +:10548000E1F0D70115962C9315974F30510549F04F +:105490008F5F982F9295907F822F8F70892B159612 +:1054A0008C93C7010E94A82486E0F701A3E6B4E02C +:1054B00001900D928A95E1F79CCF86E0F701A3E673 +:1054C000B4E001900D928A95E1F749C04D875E875F +:1054D000DF86702F198B088B6D2D89890E94BA2762 +:1054E00081114BCF80916804816080936804C7016B +:1054F0000E94A82434C0DD2009F45ACF4D875E876E +:10550000DF86702F198B088B6D2D89890E94BA2731 +:10551000882309F44DCF31CF702F198B088B6D2D57 +:1055200089890E941B2D292F22952F70223028F463 +:105530009F7039F0811105C00BC0243028F49F7092 +:1055400049F4805E883020F0C7010E94A824BC2C5A +:10555000CB2C05C0F7019581907F99F7F9CF8C2D61 +:1055600061960FB6F894DEBF0FBECDBFDF91CF912D +:105570001F910F91FF90EF90DF90CF90BF90AF9071 +:1055800008951F93CF93DF93CDB7DEB72C970FB657 +:10559000F894DEBF0FBECDBF4F83588769877A87E7 +:1055A0008B879C87CE0107960E94CE288823D1F056 +:1055B0009F8188852A853B85232B31F08F3F31F4ED +:1055C00081E09F3F19F403C081E001C080E080FDCD +:1055D00047C04F81588569857A858B859C850E9457 +:1055E00027283EC086E0FE013796DE011196019025 +:1055F0000D928A95E1F7FF81E8856A857B856115C3 +:10560000710531F0EF3F31F481E0FF3F19F403C041 +:1056100081E001C080E080FD23C02091320430E0B1 +:10562000C9010196877099274091310450E0841791 +:105630009507F1F1F983EA837D836C8396E0929F6D +:10564000D001939FB00D1124AD5CBB4FFE0131968C +:1056500001900D929A95E1F7809332040E943728C9 +:1056600016E08091310490913204891771F1189FEE +:10567000C00111248D5C9B4F0E94CE28882329F104 +:10568000E09131041E9FF0011124ED5CFB4F40813D +:10569000518162817381848195810E942728809144 +:1056A000310490E001968770992780933104D9CF17 +:1056B0000E94B6271092320410923104E3E6F4E01F +:1056C00086E0DF011D928A95E9F72C960FB6F894D3 +:1056D000DEBF0FBECDBFDF91CF911F910895DF9246 +:1056E000EF92FF920F931F93CF93DF93FC01892BCF +:1056F00009F488C0E12CF12CDD24D394EF0121962C +:105700008491853709F460C058F4843708F04EC09E +:10571000843008F068C08130D1F0823071F172C0FD +:10572000883709F45BC050F4863709F453C08737D3 +:1057300009F068C08E2D0E94EA2D52C09CE7980F98 +:10574000903708F05FC08F770E946E244EC08F01A3 +:105750000E5F1F4FFE01849190E2980F983050F435 +:105760008770FD2D01C0FF0F8A95EAF78F2F0E94E9 +:10577000F02D15C00E940E2414C08F010E5F1F4F24 +:10578000FE01849190E2980F983068F48770FD2DA7 +:1057900001C0FF0F8A95EAF78F2F0E94F62D0E9415 +:1057A000172EE80122C00E946E24FBCFCF01029683 +:1057B000FE01C491CC2361F0EFE9FFE03197F1F7EE +:1057C00000C00000C150F6CFCF010296FE01F49058 +:1057D000EC010BC00E94DA2DE82E07C00E94ED2DCF +:1057E0000E94172E02C00E940E248F2D882341F0A4 +:1057F000EFE9FFE03197F1F700C000008150F6CFEC +:10580000FE017CCFDF91CF911F910F91FF90EF9020 +:10581000DF9008956093690570936A0580936B0526 +:1058200090936C050C94782E08950F931F9300911C +:105830006D0510916E0520916F0530917005602BFC +:10584000712B822B932B60936D0570936E05809363 +:105850006F05909370051F910F910C94772E0F9305 +:105860001F9300916D0510916E0520916F05309189 +:105870007005602371238223932360936D057093D9 +:105880006E0580936F05909370051F910F910C9496 +:10589000772E0F931F9300916D0510916E05209147 +:1058A0006F053091700560277127822793276093D9 +:1058B0006D0570936E0580936F05909370051F9131 +:1058C0000F910C94772E60E070E0CB010C940A2CC1 +:1058D0000F931F9341E050E060E070E08A019B016C +:1058E00004C0000F111F221F331F8A95D2F7C90170 +:1058F000B8011F910F910C940A2C0F931F9341E054 +:1059000050E060E070E004C0440F551F661F771F31 +:105910008A95D2F78091690590916A05A0916B05EF +:10592000B0916C058A019B01082B192B2A2B3B2B6C +:10593000C901B8011F910F910C940A2C0F931F936A +:1059400041E050E060E070E004C0440F551F661F66 +:10595000771F8A95D2F74095509560957095809104 +:10596000690590916A05A0916B05B0916C058A015B +:105970009B01082319232A233B23C901B8011F9146 +:105980000F910C940A2C0F931F9341E050E060E0BC +:1059900070E004C0440F551F661F771F8A95D2F729 +:1059A0008091690590916A05A0916B05B0916C0595 +:1059B0008A019B01082719272A273B27C901B8011B +:1059C0001F910F910C940A2C0F931F93009169055E +:1059D00010916A0520916B0530916C05602B712B3D +:1059E000822B932B1F910F910C940A2C0F931F93D2 +:1059F0000091690510916A0520916B0530916C0545 +:105A000060237123822393231F910F910C940A2CFE +:105A10000F931F930091690510916A0520916B0502 +:105A200030916C0560277127822793271F910F9172 +:105A30000C940A2C08958F929F92AF92BF92DF929E +:105A4000EF92FF920F931F93CF93DF9300D000D07C +:105A50001F92CDB7DEB76B837C838D838A018C81E7 +:105A60009D81892B31F01F3F31F481E04F3F19F4C4 +:105A700003C081E001C080E080FF03C080E090E0CF +:105A80004DC08B818823D1F18090690590906A0583 +:105A9000A0906B05B0906C0580916D0590916E059E +:105AA000A0916F05B0917005882A992AAA2ABB2A6D +:105AB0008FE1E82EF12CD501C4010E2C04C0B6955F +:105AC000A795979587950A94D2F780FD06C081E047 +:105AD000E81AF10880F7D12C07C0DE2CB8018E2D12 +:105AE0000E94F52E019799F380E1189FF00111248F +:105AF000E759FB4FE00FF11DD08209C080E1189FEC +:105B0000F0011124E759FB4FE00FF11DD08009830C +:105B10001A8369817A818D2D0E94F52E0F900F9046 +:105B20000F900F900F90DF91CF911F910F91FF90E9 +:105B3000EF90DF90BF90AF909F908F90089520914D +:105B4000100130911101F90132969FEF40E051911F +:105B5000851789F09F3F19F4511101C0942F4F5FB1 +:105B60004630A9F79F3F39F0F901E90FF11D97FD84 +:105B7000FA95828308950895E0911001F091110142 +:105B80009F012A5F3F4F9281891301C01282319693 +:105B9000E217F307C1F7089581E090E0E09110016A +:105BA000F0911101E80FF91F1082019688309105DC +:105BB000A9F7089580917B05089590917B05892B25 +:105BC00080937B050895809590917B058923809330 +:105BD0007B05089580937B05089510927B050895B9 +:105BE00090917A05892B80937A05089580959091FC +:105BF0007A05892380937A05089510927A0508958D +:105C00008093710508951092710508958091100197 +:105C100090911101FC0131969C01285F3F4F80E07B +:105C2000919191118F5FE217F307D1F70895E091F9 +:105C30001001F091110180917B058083E0911001AA +:105C4000F0911101908180917A05892B8083809158 +:105C50007105882361F0E0911001F09111019081AC +:105C6000892B80830E94062E8111109271058091EC +:105C70001001909111010C94552290939F018093F3 +:105C80009E0108958295982F937344E0949F90010C +:105C900011248C7C86958695282B822F8575880FFC +:105CA0002A7A2695822B0895CF93DF93D92F0E94CD +:105CB000422EC82F8D2F0E94422E2C2F30E0322FE3 +:105CC0002227A901482BCA01DF91CF910895089599 +:105CD000CF93DF9300D000D01F92CDB7DEB70F90E7 +:105CE0000F900F900F900F90DF91CF91089508952E +:105CF00008950C94C22380918B05843021F1109279 +:105D00007D0520E488E190E00FB6F894A895809393 +:105D100060000FBE2093600083B7817F846083BFE3 +:105D200083B7816083BF7894889583B78E7F83BF64 +:105D30000FB6F894A8958091600088618093600008 +:105D4000109260000FBE0895CF930E94C6230E9458 +:105D500056070E94C723C0E08C2F0E948C08892B15 +:105D600029F4CF5FC031C1F780E001C081E0CF915D +:105D700008950E94C4230C94B6271F920F920FB669 +:105D80000F9211248F939F93AF93BF9380917D05C2 +:105D9000811113C08091F2029091F302A091F4025C +:105DA000B091F5024196A11DB11D8093F20290932E +:105DB000F302A093F402B093F502BF91AF919F91CB +:105DC0008F910F900FBE0F901F901895E82FF0E065 +:105DD00080E1989FE00DF11D1124E052FF4F949156 +:105DE000892F8F7092959F700895CF93C82FCB0104 +:105DF0000E94E62EE92F90E040E1E49F90011124FB +:105E0000282B392B2038310519F480E090E014C09C +:105E1000E770F0E028E0C29FE00DF11D112424E0BE +:105E2000EE0FFF1F2A95E1F7E80FF91FEE0FFF1F96 +:105E3000E050F84985919491CF91089580E090E0E9 +:105E4000089508958091800580FF0BC06091150131 +:105E500085E0689FB00111247595679575956795E4 +:105E60002BC081FF09C06091150185E0689FB001DA +:105E700011247595679520C082FF07C060911501B8 +:105E800085E0689FB001112417C090918105992386 +:105E9000D1F060911401961788F72091150185E0E3 +:105EA000289F90011124929FA001939F500D1124CF +:105EB00070E0CA010E942E336038710540F461150C +:105EC000710519F406C065E070E0862F08958FE72C +:105ED000089581E008958091800580FF08C0609159 +:105EE000130170E0759567957595679521C081FFE1 +:105EF00006C06091130170E07595679519C082FF27 +:105F000004C06091130170E010C090918105992345 +:105F100099F0609112019617A0F780911301899F63 +:105F2000C001112470E00E942E336038710540F4E6 +:105F30006115710519F406C061E070E0862F0895BF +:105F40008FE7089581E00895803F21F40E94222F79 +:105F5000819504C0813F29F40E94222F80938405FB +:105F60000895823F21F40E94222F819504C0833F2F +:105F700029F40E94222F809383050895893F19F404 +:105F80000E946B2F05C08A3F31F40E946B2F8195D0 +:105F90008093850508958B3F21F40E946B2F819596 +:105FA00004C08C3F29F40E946B2F809386050895CE +:105FB000843F21F480918205816017C0853F21F4E0 +:105FC00080918205826011C0863F21F48091820514 +:105FD00084600BC0873F21F480918205886005C0F2 +:105FE000883F31F480918205806180938205089515 +:105FF0008D3F21F48091800581600BC08E3F21F49C +:1060000080918005826005C08F3F29F480918005D2 +:106010008460809380050895803F39F480918405E1 +:1060200087FF6CC01092840569C0813F29F480917C +:1060300084051816BCF362C090918305823F29F451 +:1060400097FF5CC01092830559C0833F19F419165D +:10605000CCF354C0893F41F48091850518160CF0AB +:106060004DC0109285054AC08A3F29F4809185056C +:1060700087FF44C0F6CF8B3F39F48091860587FFB8 +:106080003DC0109286053AC08C3F29F48091860568 +:106090001816BCF333C0843F21F4809182058E7FB3 +:1060A00017C0853F21F4809182058D7F11C0863F06 +:1060B00021F4809182058B7F0BC0873F21F4809172 +:1060C0008205877F05C0883F31F4809182058F7EED +:1060D0008093820513C08D3F21F4809180058E7FCF +:1060E0000BC08E3F21F4809180058D7F05C08F3FCE +:1060F00029F4809180058B7F8093800580918305B2 +:1061000081110EC08091840581110AC0809185059E +:10611000811106C080918605811102C0109281050F +:10612000089580917C0583FF7EC083ED94E00E94FA +:10613000DD02809182051F928F938EEC94E09F93F5 +:106140008F930E9476038CEC94E00E94DD02809194 +:106150008305282F082E000C330B3F938F9389EC77 +:1061600094E09F938F930E94760387EC94E00E94C3 +:10617000DD0280918405282F082E000C330B3F93FD +:106180008F9384EC94E09F938F930E94760382EC2C +:1061900094E00E94DD0280918505282F082E000CD6 +:1061A000330B3F938F938FEB94E09F938F930E94D9 +:1061B00076038DEB94E00E94DD0280918605282F06 +:1061C000082E000C330B3F938F938AEB94E09F9340 +:1061D0008F930E94760387EB94E00E94DD0280910A +:1061E00081051F928F9384EB94E09F938F930E947D +:1061F000760382EB94E00E94DD02809180051F927D +:106200008F938FEA94E09F938F930E9476038CEA9A +:1062100094E00E94DD028DB79EB74C960FB6F894BD +:106220009EBF0FBE8DBF82E895E00E949E220E9415 +:106230008D0B90937F0580937E0508951F93CF93D8 +:10624000DF9380917E0590917F050E94A50BAC01A4 +:1062500090918105992321F02091160130E006C02C +:10626000209117018AE0289F9001112442175307BB +:1062700008F485C080918305C0918405D09185057F +:1062800010918605811107C0C11175C0D11173C06D +:10629000111171C074C09F3F19F09F5F90938105E9 +:1062A000181624F40E94222F809383058091830581 +:1062B00087FF05C00E94222F8195809383051C16BD +:1062C00024F40E94222F809384058091840587FF07 +:1062D00005C00E94222F81958093840560918305DB +:1062E000662331F1C0918405CC2311F1062E000CF8 +:1062F000770B880B990B0E940C3223E333E343E3C3 +:106300005FE30E94C1320E94D431609383056C2FF9 +:10631000CC0F770B880B990B0E940C3223E333E3ED +:1063200043E35FE30E94C1320E94D431609384054D +:106330001D1624F40E946B2F80938505809185059E +:1063400087FF05C00E946B2F8195809385051116EC +:1063500024F40E946B2F809386058091860587FF29 +:1063600005C00E946B2F819580938605DF91CF91A8 +:106370001F910C9491309F3F09F08FCFA0CFDF91F8 +:10638000CF911F910895E2E8F5E085E0DF011D92CD +:106390008A95E9F7109281051092800508950E9470 +:1063A000473208F481E008950E94DB316894B1110E +:1063B0000C94B63208950E949B3288F09F5798F053 +:1063C000B92F9927B751B0F0E1F0660F771F881FFA +:1063D000991F1AF0BA95C9F714C0B13091F00E9414 +:1063E000B532B1E008950C94B532672F782F882725 +:1063F000B85F39F0B93FCCF3869577956795B3953B +:10640000D9F73EF490958095709561957F4F8F4FA9 +:106410009F4F0895E89409C097FB3EF490958095AE +:10642000709561957F4F8F4F9F4F9923A9F0F92F5A +:1064300096E9BB279395F695879577956795B795D8 +:10644000F111F8CFFAF4BB0F11F460FF1BC06F5FBE +:106450007F4F8F4F9F4F16C0882311F096E911C0D0 +:10646000772321F09EE8872F762F05C0662371F0F1 +:1064700096E8862F70E060E02AF09A95660F771F05 +:10648000881FDAF7880F9695879597F90895990FE1 +:106490000008550FAA0BE0E8FEEF16161706E807EE +:1064A000F907C0F012161306E407F50798F0621B0F +:1064B000730B840B950B39F40A2661F0232B242BE4 +:1064C000252B21F408950A2609F4A140A6958FEF03 +:1064D000811D811D089597F99F6780E870E060E055 +:1064E00008959FEF80EC089500240A94161617066D +:1064F00018060906089500240A94121613061406B5 +:1065000005060895092E0394000C11F4882352F017 +:10651000BB0F40F4BF2B11F460FF04C06F5F7F4FCF +:106520008F4F9F4F089557FD9058440F551F59F0B6 +:106530005F3F71F04795880F97FB991F61F09F3F70 +:1065400079F087950895121613061406551FF2CF99 +:106550004695F1DF08C0161617061806991FF1CFE9 +:1065600086957105610508940895E894BB27662710 +:106570007727CB0197F908950E94473208F48FEFEF +:1065800008950E94D4320C9482320E94743238F002 +:106590000E947B3220F0952311F00C946B320C9406 +:1065A000713211240C94B6320E94933270F3959F8D +:1065B000C1F3950F50E0551F629FF001729FBB27FA +:1065C000F00DB11D639FAA27F00DB11DAA1F649F96 +:1065D0006627B00DA11D661F829F2227B00DA11D49 +:1065E000621F739FB00DA11D621F839FA00D611DCF +:1065F000221F749F3327A00D611D231F849F600DF0 +:10660000211D822F762F6A2F11249F5750409AF018 +:10661000F1F088234AF0EE0FFF1FBB1F661F771FA4 +:10662000881F91505040A9F79E3F510580F00C946F +:106630006B320C94B6325F3FE4F3983ED4F3869508 +:1066400077956795B795F795E7959F5FC1F7FE2B0F +:10665000880F911D9695879597F9089597FB072EBA +:1066600016F4009407D077FD09D00E94483307FC48 +:1066700005D03EF4909581959F4F08957095619552 +:106680007F4F0895EE0FFF1F0590F491E02D0994C0 +:10669000AA1BBB1B51E107C0AA1FBB1FA617B70748 +:1066A00010F0A61BB70B881F991F5A95A9F7809564 +:0C66B0009095BC01CD010895F894FFCF37 +:1066BC0000030000FF5B1AEB1AC81A921A5E1A014B +:1066CC0072052808140A321E66756C6C006C6F77A4 +:1066DC00000000000013060000000042040000004F +:1066EC0000B4047F03CF034304EA0381038203ED68 +:1066FC0003F203F703C303CC03FF03FEFF000038D0 +:10670C000400000000A00A000000001D0B331A1644 +:10671C000B190B190B1C0B1C0B000000004D0CF47F +:10672C000BAD0C00000000DE167F033D16D01935B2 +:10673C00162C18820338168403404D36223004E39D +:0E674C0003AD038B0317033003490362030000 :106800008800EA44E944E244040005000600070069 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC From 2b83b9a8f9c6bd0ca5026f62495838dc55cbacf3 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 29 May 2019 14:08:03 +0900 Subject: [PATCH 20/71] core: Add hook_process_action() --- tmk_core/common/action.c | 2 ++ tmk_core/common/hook.c | 5 +++++ tmk_core/common/hook.h | 5 +++++ tmk_core/doc/{hook.txt => hook.md} | 26 +++++++++++++------------- 4 files changed, 25 insertions(+), 13 deletions(-) rename tmk_core/doc/{hook.txt => hook.md} (54%) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 9b139d48..c256892c 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -58,6 +58,8 @@ void action_exec(keyevent_t event) void process_action(keyrecord_t *record) { + if (hook_process_action(record)) return; + keyevent_t event = record->event; #ifndef NO_ACTION_TAPPING uint8_t tap_count = record->tap.count; diff --git a/tmk_core/common/hook.c b/tmk_core/common/hook.c index 4ed2403c..22be9a30 100644 --- a/tmk_core/common/hook.c +++ b/tmk_core/common/hook.c @@ -47,3 +47,8 @@ void hook_keyboard_leds_change(uint8_t led_status) { __attribute__((weak)) void hook_bootmagic(void) {} + +__attribute__((weak)) +bool hook_process_action(keyrecord_t *record) { + return false; +} diff --git a/tmk_core/common/hook.h b/tmk_core/common/hook.h index 140e2779..ddd05c6f 100644 --- a/tmk_core/common/hook.h +++ b/tmk_core/common/hook.h @@ -20,6 +20,7 @@ along with this program. If not, see . #include "keyboard.h" #include "led.h" +#include "action.h" #ifdef __cplusplus extern "C" { @@ -84,6 +85,10 @@ void hook_keyboard_leds_change(uint8_t led_status); /* Default behaviour: do nothing. */ void hook_bootmagic(void); +/* Called on before processing key event */ +/* returns true if the event is consumed and default action is not needed. */ +bool hook_process_action(keyrecord_t *record); + #ifdef __cplusplus } #endif diff --git a/tmk_core/doc/hook.txt b/tmk_core/doc/hook.md similarity index 54% rename from tmk_core/doc/hook.txt rename to tmk_core/doc/hook.md index acd77cce..0cebf858 100644 --- a/tmk_core/doc/hook.txt +++ b/tmk_core/doc/hook.md @@ -6,19 +6,19 @@ The following hooks are available available: Hook function | Timing --------------------------------|----------------------------------------------- -`hook_early_init(void)` | Early in the boot process, before the matrix is initialized and before a connection is made with the host. Thus, this hook has access to very few parameters, but it is a good place to define any custom parameters needed by other early processes. -`hook_late_init(void)` | Near the end of the boot process, after Boot Magic has run and LEDs have been initialized. -`hook_bootmagic(void)` | During the Boot Magic window, after EEPROM and Bootloader checks are made, but before any other built-in Boot Magic checks are made. -`hook_usb_startup_wait_loop(void)` | Continuously, until the device gets ready and into USB configured state. - -`hook_usb_wakeup(void)` | When the device wakes up from USB suspend state. -`hook_usb_suspend_entry(void)` | When the device enters USB suspend state. -`hook_usb_suspend_loop(void)` | Continuously, while the device is in USB suspend state. *Default action:* power down and periodically check the matrix, causing wakeup if needed. -`hook_keyboard_loop(void)` | Continuously, during the main loop, after the matrix is checked. -`hook_matrix_change(keyevent_t event)` | When a matrix state change is detected, before any other actions are processed. -`hook_layer_change(uint32_t layer_state)` | When any layer is changed. -`hook_default_layer_change(uint32_t default_layer_state)` | When any default layer is changed. -`hook_keyboard_leds_change(uint8_t led_status)` | Whenever a change in the LED status is performed. *Default action:* call `keyboard_set_leds(led_status)` +`void hook_early_init(void)` | Early in the boot process, before the matrix is initialized and before a connection is made with the host. Thus, this hook has access to very few parameters, but it is a good place to define any custom parameters needed by other early processes. +`void hook_late_init(void)` | Near the end of the boot process, after Boot Magic has run and LEDs have been initialized. +`void hook_bootmagic(void)` | During the Boot Magic window, after EEPROM and Bootloader checks are made, but before any other built-in Boot Magic checks are made. +`void hook_usb_startup_wait_loop(void)` | Continuously, until the device gets ready and into USB configured state. +`void hook_usb_wakeup(void)` | When the device wakes up from USB suspend state. +`void hook_usb_suspend_entry(void)` | When the device enters USB suspend state. +`void hook_usb_suspend_loop(void)` | Continuously, while the device is in USB suspend state. *Default action:* power down and periodically check the matrix, causing wakeup if needed. +`void hook_keyboard_loop(void)` | Continuously, during the main loop, after the matrix is checked. +`void hook_matrix_change(keyevent_t event)` | When a matrix state change is detected, before any other actions are processed. +`void hook_layer_change(uint32_t layer_state)` | When any layer is changed. +`void hook_default_layer_change(uint32_t default_layer_state)` | When any default layer is changed. +`void hook_keyboard_leds_change(uint8_t led_status)` | Whenever a change in the LED status is performed. *Default action:* call `keyboard_set_leds(led_status)` +`bool hook_process_action(keyrecord_t *record)` | Before key event is processed by tmk_core. Return true if the event is consumed and default action is not needed. From 58cbbb5c083ab8209f1ff85ace9d1790399abeb9 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 30 May 2019 11:06:13 +0900 Subject: [PATCH 21/71] alps64: Change keymap for PCB check --- keyboard/alps64/Makefile.keymap_editor | 4 ---- keyboard/alps64/unimap_plain.c | 14 ++------------ 2 files changed, 2 insertions(+), 16 deletions(-) delete mode 100644 keyboard/alps64/Makefile.keymap_editor diff --git a/keyboard/alps64/Makefile.keymap_editor b/keyboard/alps64/Makefile.keymap_editor deleted file mode 100644 index 8d337b18..00000000 --- a/keyboard/alps64/Makefile.keymap_editor +++ /dev/null @@ -1,4 +0,0 @@ -TARGET = alps64_editor -KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor -KEYMAP = editor -include Makefile diff --git a/keyboard/alps64/unimap_plain.c b/keyboard/alps64/unimap_plain.c index 1cd3445d..4c41ccb6 100644 --- a/keyboard/alps64/unimap_plain.c +++ b/keyboard/alps64/unimap_plain.c @@ -17,9 +17,6 @@ along with this program. If not, see . #include "unimap_trans.h" -#define AC_L1 ACTION_LAYER_TAP_KEY(1, KC_RGUI) - - #ifdef KEYMAP_SECTION_ENABLE const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { #else @@ -41,14 +38,7 @@ const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { [0] = UNIMAP_ALPS64( \ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS,BSPC, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, \ - LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,ESC, \ - LCTL,LGUI,LALT, SPC, APP, RALT,L1, RCTL), - - [1] = UNIMAP_ALPS64( \ - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \ - TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), + LCTL,LALT,LGUI, SPC, RGUI,RALT,APP, RCTL), }; From 7a7d9f64b5386af8aaa18bb85b58054d27a7b456 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 30 May 2019 11:12:06 +0900 Subject: [PATCH 22/71] alps64: Update unimap firmware binary --- keyboard/alps64/binary/alps64_unimap.hex | 2565 +++++++++++----------- 1 file changed, 1289 insertions(+), 1276 deletions(-) diff --git a/keyboard/alps64/binary/alps64_unimap.hex b/keyboard/alps64/binary/alps64_unimap.hex index a86bc84f..446687cb 100644 --- a/keyboard/alps64/binary/alps64_unimap.hex +++ b/keyboard/alps64/binary/alps64_unimap.hex @@ -1,1264 +1,1293 @@ -:100000000C944A050C9491050C9491050C9491055F -:100010000C9491050C9491050C9491050C94910508 -:100020000C9491050C9491050C9491050C94FB0B88 -:100030000C94AA0C0C94011B0C9491050C94910542 -:100040000C9491050C9491050C9491050C94751BDE -:100050000C9491050C9491050C9491050C949105C8 -:100060000C9491050C9491050C9491050C949105B8 -:100070000C94910589068C068F06920695069806C3 -:100080009B06170D390D270E390D270E7E0DA10D7C -:10009000270EF60D090EA811A811D611D61133128C -:1000A00071128A148A148A128A148B138B135E14A9 -:1000B0008A148A1475147E10360E0F12272D7F377E +:100000000C944E050C9495050C9495050C9495054F +:100010000C9495050C9495050C9495050C949505F8 +:100020000C9495050C9495050C9495050C94640C12 +:100030000C94130D0C94F31B0C9495050C949505DE +:100040000C9495050C9495050C9495050C94671CDF +:100050000C9495050C9495050C9495050C949505B8 +:100060000C9495050C9495050C9495050C949505A8 +:100070000C9495059206950698069B069E06A10689 +:10008000A406800DA20D950EA20D950EE70D0A0E89 +:10009000950E5F0E720E0B120B1235123512901266 +:1000A000C412B414B414DB12B414C613C6138C14E3 +:1000B000B414B414A1147E10360E0F12272D7F37FE :1000C000383334132F2E7C7D29283130742A7879E7 :1000D00039042B14351E7B641D161A081F207A1B49 :1000E0000709151721222C06190A1C182324650557 :1000F000110B0D0C25260A002530325800626F7551 -:100100006E6365213A20004B6579626F61726420ED -:1001100073746172742E0A0055534220636F6E66C9 -:100120006967757265642E0A000D0A696E69740A42 -:10013000000E0341006C00700073003600340000B4 -:1001400000080354004D004B00000004030904099B -:10015000027400040100A03209040000010301013F -:100160000009211101000122400007058103080058 -:100170000A09040100010301020009211101000123 -:10018000224D000705820308000A0904020001034A -:100190000000000921110100012236000705830338 -:1001A00008000A09040300020300000009211101EC -:1001B0000001222200070584032000010705040333 -:1001C0002000011201100100000008EDFE6464012E -:1001D00000010200010631FF0974A1010975150033 -:1001E00026FF009520750881020976150026FF007C -:1001F000952075089102C005010980A101850216AC -:10020000810026B7001A81002AB700751095018178 -:1002100000C0050C0901A1018503160100269C02FE -:100220001A01002A9C02751095018100C005010980 -:1002300002A1010901A100050919012905150025DF -:10024000019505750181029501750381010501097B -:100250003009311581257F95027508810609381509 -:1002600081257F950175088106050C0A38021581E4 -:10027000257F950175088106C0C005010906A10109 -:10028000050719E029E71500250195087501810288 -:100290009501750881010508190129059505750164 -:1002A00091029501750391010507190029FF1500B9 -:1002B00026FF00950675088100C0636F6E73756D2B -:1002C00065723A20253034580A0073797374656D6D -:1002D0003A20253034580A000A00253032582000D0 -:1002E0006B6579626F6172643A20004C45443A2034 -:1002F000253032580A00253032583A2025303862ED -:1003000025730A00722F632030313233343536378B -:100310000A00646F6E652E0A00626F6F746D61670C -:100320006963207363616E3A202E2E2E2000290A05 -:10033000002575002F002575005D2800256400202C -:1003400000256400200025640020002564007C0056 -:1003500025303258006D6F7573656B6579205B626F -:10036000746E7C782079207620685D287265702F05 -:1003700061636C293A205B006D6B5F776865656C23 -:100380005F74696D655F746F5F6D6178203D2025D6 -:10039000640A006D6B5F776865656C5F6D61785F9F -:1003A0007370656564203D2025640A006D6B5F7481 -:1003B000696D655F746F5F6D6178203D2025640A0B -:1003C000006D6B5F6D61785F7370656564203D20C3 -:1003D00025640A006D6B5F696E74657276616C20CE -:1003E0003D2025640A006D6B5F64656C6179203D7A -:1003F0002025640A006D6B5F776865656C5F7469C2 -:100400006D655F746F5F6D6178203D2025640A0023 -:100410006D6B5F776865656C5F6D61785F73706544 -:100420006564203D2025640A006D6B5F74696D650D -:100430005F746F5F6D6178203D2025640A006D6BED -:100440005F6D61785F7370656564203D2025640A87 -:10045000006D6B5F696E74657276616C203D20255E -:10046000640A006D6B5F64656C6179203D202564D2 -:100470000A000A00257500363A20776865656C5FCA -:1004800074696D655F746F5F6D61783A20000A0072 -:10049000257500353A20776865656C5F6D61785F1A -:1004A00073706565643A20000A00257500343A20AF -:1004B00074696D655F746F5F6D61783A20000A0042 -:1004C000257500333A206D61785F73706565643A15 -:1004D00020000A00257500323A20696E7465727634 -:1004E000616C286D73293A20000A00257500313AA5 -:1004F0002064656C6179282A31306D73293A2000B7 -:100500000A092D2056616C756573202D0A004D3E39 -:10051000004D25643E20003F0073657420646566CD -:1005200061756C740A00433E20007768657265202F -:1005300064656C74613A20637572736F723D2564F3 -:100540002C20776865656C3D25640A5365652068D5 -:100550007474703A2F2F656E2E77696B69706564BD -:1005600069612E6F72672F77696B692F4D6F757395 -:10057000655F6B6579730A000A092D204D6F7573ED -:10058000656B6579202D0A4553432F713A097175C2 -:1005900069740A313A0964656C6179282A31306DD1 -:1005A00073290A323A09696E74657276616C286D36 -:1005B00073290A333A096D61785F73706565640A5F -:1005C000343A0974696D655F746F5F6D61780A35DF -:1005D0003A09776865656C5F6D61785F7370656512 -:1005E000640A363A09776865656C5F74696D655FA2 -:1005F000746F5F6D61780A0A703A097072696E747F -:100600002076616C7565730A643A097365742064B9 -:10061000656661756C74730A75703A092B310A64EA -:100620006F776E3A092D310A706775703A092B3170 -:10063000300A7067646F776E3A092D31300A0A7399 -:1006400070656564203D2064656C7461202A206DAE -:1006500061785F7370656564202A20287265706513 -:100660006174202F2074696D655F746F5F6D6178B0 -:10067000290A003F004D3E2000433E20004C2564E7 -:100680000A000A092D20436F6E736F6C65202D0AD6 -:100690004553432F713A09717569740A6D3A096DB2 -:1006A0006F7573656B65790A000A092D204D6167C6 -:1006B0006963202D0A643A0964656275670A783AAD -:1006C000096465627567206D61747269780A6B3AB6 -:1006D000096465627567206B6579626F6172640A8F -:1006E0006D3A096465627567206D6F7573650A768A -:1006F0003A0976657273696F6E0A733A09737461A9 -:100700007475730A633A09636F6E736F6C65206D5D -:100710006F64650A302D343A096C61796572302D49 -:1007200034284631302D4634290A506175733A0910 -:10073000626F6F746C6F616465720A653A09656512 -:1007400070726F6D0A000A002575002E6E6B726F55 -:100750003A20000A002575002E737761705F626190 -:10076000636B736C6173685F6261636B7370616309 -:10077000653A20000A002575002E737761705F6767 -:10078000726176655F6573633A20000A0025750023 -:100790002E6E6F5F6775693A20000A002575002E7E -:1007A000737761705F72616C745F726775693A200C -:1007B000000A002575002E737761705F6C616C74A0 -:1007C0005F6C6775693A20000A002575002E636129 -:1007D00070736C6F636B5F746F5F636F6E74726F57 -:1007E0006C3A20000A002575002E737761705F63F4 -:1007F0006F6E74726F6C5F636170736C6F636B3A72 -:1008000020000A0025303258006B65796D61705FF9 -:10081000636F6E6669672E7261773A20000A002561 -:1008200075002E6D6F7573653A20000A00257500FE -:100830002E6B6579626F6172643A20000A0025753B -:10084000002E6D61747269783A20000A00257500E7 -:100850002E656E61626C653A20000A0025303258C0 -:100860000064656275675F636F6E6669672E7261AB -:10087000773A20000A0025750064656661756C741E -:100880005F6C617965723A20003F0074696D657232 -:100890005F72656164333228293A202530346C5800 -:1008A0000A006B6579626F6172645F69646C653AB6 -:1008B0002025580A006B6579626F6172645F7072FF -:1008C0006F746F636F6C3A2025580A00686F7374F9 -:1008D0005F6B6579626F6172645F6C656473282910 -:1008E0003A2025580A000A092D2053746174757343 -:1008F000202D0A004743433A20342E392E3220411E -:1009000056522D4C4942433A20312E382E307376C0 -:100910006E204156525F415243483A20617672330D -:10092000350A004F5054494F4E533A204C554641DA -:1009300020424F4F544D41474943204D4F55534559 -:100940004B45592045585452414B455920434F4E31 -:10095000534F4C4520434F4D4D414E44204B45593C -:100960004D41505F53454354494F4E203430393642 -:100970000A004255494C443A2063306630393039D8 -:100980002D6469727479202831343A32303A35391D -:10099000204A616E2031312032303137290A005629 -:1009A00049443A2030784645454428544D4B292047 -:1009B0005049443A2030783634363428416C7073CC -:1009C000363429205645523A203078303030310ABA -:1009D00000444553433A20544D4B206B6579626F78 -:1009E000617264206669726D7761726520666F72EC -:1009F00020416C707336340A000A092D2056657246 -:100A000073696F6E202D0A000A6D6F7573653A2049 -:100A10006F66660A000A6D6F7573653A206F6E0A1D -:100A2000000A6B6579626F6172643A206F66660ACC -:100A3000000A6B6579626F6172643A206F6E0A001A -:100A40000A6D61747269783A206F66660A000A6DF1 -:100A500061747269783A206F6E0A000A6465627583 -:100A6000673A206F6E0A000A64656275673A206F04 -:100A700066660A000A0A626F6F746C6F6164657261 -:100A80002E2E2E2000433E20006565636F6E666942 -:100A9000673A0A0011241FBECFEFD4E0DEBFCDBFFE -:100AA00004B603FE27C08091CD019091CE01A091A4 -:100AB000CF01B091D0018730904BA740B04BD1F41B -:100AC0001092CD011092CE011092CF011092D00160 -:100AD00014BE84B7877F84BF0FB6F894A895809121 -:100AE0006000886180936000109260000FBEE0E0BB -:100AF000F8E3099511E0A0E0B1E0ECE8FEE402C003 -:100B000005900D92A433B107D9F721E0A4E3B1E039 -:100B100001C01D92AD3CB207E1F70E9447090C9459 -:100B200044270C940000FF93EF93E0913401F0917F -:100B30003501309709F00995EF91FF910895FC0177 -:100B40008591803011F0EFDFFBCF0895FF27E0E2C1 -:100B500030E247FF0CC0419597FF09C0EDE2609578 -:100B6000709580959095611D711D811D911D27FFC8 -:100B700002C0219530E350E2AA27660F771F881F35 -:100B8000991FAA1FA41710F0A41B63955A95A9F7E3 -:100B9000AA3008F0A95FA05DAF93F39561157105C8 -:100BA0008105910541F7ED3211F4EF93F395F217BA -:100BB00018F43F93F395FBCF8F91B5DFFA95E1F7EA -:100BC0000895E991F9918591803021F0853219F0ED -:100BD000AADFF9CF089520E0E89455915532C1F38A -:100BE000503311F4689455915A3348F4505390F3AC -:100BF000220F022E220F220F200D250FF4CF0EF40C -:100C0000219589919991533619F3533729F1533529 -:100C100059F1BC0188279927E8945C3621F4899121 -:100C2000999168945591543639F446EF7EF077FFE8 -:100C30000DC08FEF9FEF0AC055374AE039F05835A5 -:100C400040E121F0523642E009F00895FF93EF931E -:100C50007DDFEF91FF91B7CFFF93EF93FC0181917F -:100C60008030B9F360DFFBCFFF93EF9368DFF1CF04 -:100C7000DF93CF93CDB7DEB72596A3DFCF91DF917A -:100C800008958AB180788AB98BB180788BB93A9807 -:100C9000429808950E94410684B114B885B18FEF3F -:100CA00085B9A6E3B1E0EEE3F1E088E08E0F1192A2 -:100CB0001D928E13FCCF8091AE0182608093AE01B5 -:100CC0003D9A459A2FEF89E698E121508040904067 -:100CD000E1F700C000003D9845980895EF92FF921B -:100CE0000F931F93CF93DF93C6E3D1E0F12C85E000 -:100CF000E82E08EF10E08F2D90E0FC013197E730EF -:100D0000F10520F4E65CFF4F0C94F926509A5898B0 -:100D100014C0519A599811C0529A5A980EC0539AB9 -:100D20005B980BC0549A5C9808C0559A5D9805C0B2 -:100D3000569A5E9802C03A9A429880EA8A95F1F7EC -:100D400083B180959881981739F18883809100014B -:100D5000882301F18091AE0180FF04C08DEF90E007 -:100D60000E949F058091AE0180FF0CC08091000120 -:100D70001F928F931F930F930E9438060F900F902E -:100D80000F900F908091AE0180FF04C086EF90E03D -:100D90000E949F05E09200010E944106F394219673 -:100DA00098E0F912A8CF809100018823B1F081501A -:100DB00080930001882339F08FE99FE00197F1F7D4 -:100DC00000C000000AC0AEE3B1E0E6E3F1E0CF010D -:100DD000885F91919D938E13FCCF81E0DF91CF913D -:100DE0001F910F91FF90EF900895E82FF0E0E25CE3 -:100DF000FE4F8081089581FF03C03D9A459A089572 -:100E00003D98459808958091520108959FB7F894B0 -:100E1000109249019FBF9091C301943009F057C0CF -:100E20009091E9009F703091EC00232F217030FDEC -:100E300020E8922B24E02093E9002091EB0020FF92 -:100E400043C02091EE0027FF3FC02091460122239E -:100E500021F02091E80025FF37C01092460126E0DE -:100E60003091E80035FD15C03091C301343061F593 -:100E70003091EB0035FD28C0215021F481E08093B2 -:100E8000460122C0EFE9FFE03197F1F700C0000012 -:100E9000E7CF8093F1008091E80085FD0AC0809142 -:100EA000E80080FFFCCF8091E8008E778093E80017 -:100EB00006C08FB7F89421E0209349018FBF9F703F -:100EC0009093E90080E008959F709093E9008FEF80 -:100ED0000895CF93DF9300D01F92CDB7DEB79C016A -:100EE0008091C301843019F593E099833B832A8371 -:100EF0009093E9008FEF9091E800815095FD06C036 -:100F000095ED9A95F1F700008111F5CF8091E800F9 -:100F100085FF0DC040E050E063E070E0CE01019637 -:100F20000E94090A8091E8008E778093E8000F9074 -:100F30000F900F90DF91CF910895CF93DF9300D062 -:100F40001F92CDB7DEB72091C301243021F522E0F6 -:100F500029839B838A8383E08093E9008FEF9091BC -:100F6000E800815095FD06C095ED9A95F1F70000D7 -:100F70008111F5CF8091E80085FF0DC040E050E081 -:100F800063E070E0CE0101960E94090A8091E800BA -:100F90008E778093E8000F900F900F90DF91CF91A4 -:100FA00008952091C3012430F1F422E02093E90058 -:100FB0002FEF3091E800215035FD06C035ED3A9510 -:100FC000F1F700002111F5CF2091E80025FF0BC0BB -:100FD00040E050E065E070E00E94090A8091E8007E -:100FE0008E778093E8000895CF93DF932091C3011B -:100FF000243039F521E02093E9002FEF3091E8000B -:10100000215035FD06C035ED3A95F1F7000021116C -:10101000F5CF2091E80025FF14C0EC0140E050E03E -:1010200068E070E00E94090A8091E8008E77809362 -:10103000E80088E0FE01AAE4B1E001900D928A95F3 -:10104000E1F7DF91CF9108950895209147012F5F37 -:10105000822F62E30E94D926992319F02093470139 -:1010600008951092470180914901882371F1809180 -:10107000C301843041F58091E9008F702091EC002C -:10108000922F917020FD90E8892B94E09093E900D5 -:101090009091EB0090FF14C09091EE0097FF10C06C -:1010A0009091E80095FF03C01092F100F9CF909164 -:1010B000E80090FF05C09091E8009E779093E800CB -:1010C0008F708093E90010924901089542E061EC2D -:1010D00081E00E94120B42E061EC82E00E94120B60 -:1010E00042E061EC83E00E94120B42E261EC84E09A -:1010F0000C94120B8091C501833009F453C030F475 -:10110000813071F0823009F48CC008958A3009F47E -:1011100078C08B3009F45EC0893009F09AC020C0D5 -:101120008091C401813A09F094C08091E800877FE2 -:101130008093E8008091C8019091C901892B21F426 -:1011400068E08AE491E003C060E080E090E070E055 -:101150000E94540A8091E8008B778093E8000895FC -:101160008091C401813209F074C08091C8019091CE -:10117000C901892B09F06DC08091E800877F8093B9 -:10118000E8008091E80082FD05C08091C3018111D3 -:10119000F8CF5FC08091F100809352018091E80008 -:1011A0008B7753C08091C401813A09F052C080917D -:1011B000C8019091C901892B09F04BC08091E800CA -:1011C000877F8093E8008091E80080FFFCCF8091CA -:1011D0000B0136C08091C4018132D9F58091C801DC -:1011E0009091C901892BA9F58091E800877F8093B0 -:1011F000E8000E94470B8091C60180930B010C947C -:10120000AC148091C401813221F58091E800877F80 -:101210008093E8000E94470B8091C701809353019F -:1012200008958091C401813AA1F48091E800877FFC -:101230008093E8008091E80080FFFCCF809153010B -:101240008093F1008091E8008E778093E8000C9401 -:10125000470B0895089508958091520180934801A5 -:101260001092520180E00E94FB060E94C70F0C946E -:10127000AC140C942C090E94C01A8091C1018823DF -:1012800029F00E94E91A81110C94F309089584B79A -:10129000877F84BF0FB6F894A8958091600088611D -:1012A00080936000109260000FBE90E080E80FB65F -:1012B000F89480936100909361000FBE86E097E000 -:1012C0000E94941A89E291E00E949F050E942A09D7 -:1012D0000E94000F0E94980B0E94EB0B8091E2008D -:1012E00084608093E20078948091C3018430E1F7B8 -:1012F00088E191E00E949F050E94020F81E091E049 -:101300000E943F0E87E091E00E949F050E942B09FA -:101310008091C301853019F40E943B09F9CF0E94E6 -:10132000080FF6CF0E94FD1A809148018093520168 -:1013300008950C949209292F332723303105C9F0E1 -:1013400064F42130310581F02230310509F043C0C9 -:1013500084E790E02FE431E042C021323105F1F022 -:101360002232310541F137C082E190E023EC31E0D7 -:1013700036C099278130910541F08230910541F0C6 -:10138000892B49F5EBE4F1E005C0E1E4F1E002C0AE -:10139000E1E3F1E0849190E09F0121C06430D8F452 -:1013A000E62FF0E0EE0FFF1FE05EFE4F208131815F -:1013B00089E090E014C0643070F470E0FB01EE0F3F -:1013C000FF1FE85EFE4F20813181FB01EC5EFE4F86 -:1013D000808190E004C080E090E020E030E0FA01FD -:1013E00031832083089584E089BD86E089BD09B4F6 -:1013F00000FEFDCF8091D8008F7D8093D800809132 -:10140000E00082608093E0008091E00081FDFCCFED -:101410000895CF92DF92EF92FF920F931F93CF9395 -:10142000DF93EC018B016A010E94660B811133C0CE -:10143000C114D10439F0F60180819181081B190B88 -:10144000C80FD91FE12CF12C0115110519F180915C -:10145000E80085FD16C08091E8008E778093E80053 -:10146000C114D10449F0F60180819181E80EF91E82 -:10147000F182E08285E00FC00E94660B882321F391 -:101480000AC089918093F10001501109FFEFEF1A12 -:10149000FF0ADACF80E0DF91CF911F910F91FF908B -:1014A000EF90DF90CF9008952091CA013091CB0149 -:1014B0002617370748F06115710539F42091E800C7 -:1014C0002E772093E80001C0B90140E06115710555 -:1014D00091F12091C301222309F440C0253009F481 -:1014E0003FC02091E80023FD3DC02091E80022FD8F -:1014F0002FC02091E80020FFE9CF2091F20030E0DA -:10150000FC01CF016115710559F02830310540F417 -:1015100081918093F100615071092F5F3F4FF1CFAE -:1015200041E02830310509F040E02091E8002E77B5 -:101530002093E800CBCF4111CCCF0AC08091C301EA -:10154000882361F0853061F08091E80083FD0AC056 -:101550008091E80082FFF2CF80E0089582E0089554 -:1015600083E0089581E008952091CA013091CB0174 -:101570002617370748F06115710539F42091E80006 -:101580002E772093E80001C0B901FC0120E061152D -:10159000710579F18091C301882309F43DC085303C -:1015A00009F43CC08091E80083FD3AC08091E800D6 -:1015B00082FD2CC08091E80080FFE9CF8091F2008D -:1015C00090E06115710559F08830910540F424913F -:1015D0002093F1003196615071090196F2CF21E01C -:1015E000089709F020E08091E8008E778093E8006A -:1015F000CECF2111CFCF0AC08091C301882361F0E3 -:10160000853061F08091E80083FD0AC08091E80098 -:1016100082FFF2CF80E0089582E0089583E008958C -:1016200081E00895982F953058F59093E900981728 -:1016300039F07091EC002091ED005091F00003C062 -:10164000242F762F50E021FF19C03091EB003E7F10 -:101650003093EB003091ED003D7F3093ED00309101 -:10166000EB0031603093EB007093EC002093ED00C1 -:101670005093F0002091EE0027FF07C09F5FD3CF6B -:101680008F708093E90081E0089580E00895809153 -:10169000C40187FF11C08091E80082FD05C08091E0 -:1016A000C3018111F8CF11C08091E8008B770BC086 -:1016B0008091C301882349F08091E80080FFF8CF32 -:1016C0008091E8008E778093E80008952091E400EF -:1016D0003091E50095E64091EC00842F817040FF49 -:1016E00022C08091E80080FD1CC08091C301882346 -:1016F00091F0853091F08091EB0085FD10C0409114 -:10170000E4005091E5004217530729F39A019150E4 -:1017100011F784E0089582E0089583E0089581E060 -:10172000089580E008954091E80042FFDECF0895DB -:101730000E94F50B0E94F80BE0EEF0E080818160E2 -:101740008083E8EDF0E080818F77808319BCE3E649 -:10175000F0E08081816080831092C20108950E9430 -:10176000F50B0E94F80B8091D8008F778093D800FA -:101770008091D80080688093D8008091D8008F7DB8 -:101780008093D80084E089BD86E089BD09B400FE5D -:10179000FDCF1092C3011092BF011092C1011092AF -:1017A000C00142E060E080E00E94120B8091E10005 -:1017B0008E7F8093E1008091E20081608093E2005F -:1017C0008091E20088608093E2008091E0008E7F4B -:1017D0008093E0000895E3E6F0E080818E7F8083CF -:1017E00081E08093C2010C94AF0B1092E200089547 -:1017F0001092E10008951F920F920FB60F921124DC -:101800002F933F934F935F936F937F938F939F9308 -:10181000AF93BF93EF93FF938091E10082FF0BC0E2 -:101820008091E20082FF07C08091E1008B7F80936E -:10183000E1000E9425088091E10080FF19C080919D -:10184000E20080FF15C08091E2008E7F8093E2006D -:101850008091E20080618093E2008091D8008062F4 -:101860008093D80019BC85E08093C3010E94390998 -:101870008091E10084FF30C08091E20084FF2CC0A1 -:1018800084E089BD86E089BD09B400FEFDCF80916A -:10189000D8008F7D8093D8008091E1008F7E809367 -:1018A000E1008091E2008F7E8093E2008091E2006F -:1018B00081608093E2008091BF01882311F084E071 -:1018C00007C08091E30087FD02C081E001C083E092 -:1018D0008093C3010E9499098091E10083FF29C090 -:1018E0008091E20083FF25C08091E100877F809393 -:1018F000E10082E08093C3011092BF018091E1007A -:101900008E7F8093E1008091E2008E7F8093E200E1 -:101910008091E20080618093E20042E060E080E03C -:101920000E94120B8091F00088608093F0000E946A -:101930002408FF91EF91BF91AF919F918F917F917B -:101940006F915F914F913F912F910F900FBE0F902C -:101950001F9018951F920F920FB60F9211242F937C -:101960003F934F935F936F937F938F939F93AF9327 -:10197000BF93CF93DF93EF93FF93C091E900CF70B4 -:101980008091EC00D82FD17080FDD0E81092E90052 -:101990008091F000877F8093F00078940E94EE0C95 -:1019A0001092E9008091F00088608093F000CD2BC8 -:1019B000CF70C093E900FF91EF91DF91CF91BF917C -:1019C000AF919F918F917F916F915F914F913F91D7 -:1019D0002F910F900FBE0F901F9018951F93CF93CC -:1019E000DF93CDB7DEB7AA970FB6F894DEBF0FBE70 -:1019F000CDBFE4ECF1E088E08E0F9091F10091937F -:101A00008E13FBCF0E947A088091E80083FF1FC1EC -:101A10008091C4019091C501492F50E04A30510591 -:101A200008F015C1FA01EF5BFF4F0C94F9268038DE -:101A300081F0823809F00BC18091C8018F708093CA -:101A4000E9008091EB0085FB882780F91092E9007E -:101A500006C08091C0019091C10191118260909166 -:101A6000E800977F9093E8008093F1001092F100D6 -:101A7000C8C0282F2D7F09F0EAC0882319F08230D2 -:101A800061F0E5C08091C601813009F0E0C093307B -:101A900009F080E08093C1012BC08091C6018111C3 -:101AA00027C08091C8018F7009F4D1C08093E900EC -:101AB0002091EB0020FF1CC0933021F48091EB00BB -:101AC000806214C09091EB0090619093EB0021E054 -:101AD00030E0A90102C0440F551F8A95E2F74093F8 -:101AE000EA001092EA008091EB0088608093EB009E -:101AF0001092E9008091E800877F86C08111A7C01D -:101B00001091C6011F778091E3008078812B80932C -:101B1000E3008091E800877F8093E8000E94470BF4 -:101B20008091E80080FFFCCF8091E3008068809383 -:101B3000E300111102C082E001C083E08093C30181 -:101B400086C08058823008F082C08091C601909192 -:101B5000C7018C3D53E0950779F583E08A838AE2DB -:101B600089834FB7F894DE01139620E03EE051E2FE -:101B7000E32FF0E050935700E49120FF03C0E2957B -:101B8000EF703F5FEF708E2F90E0EA3010F0C79655 -:101B900001C0C0968D939D932F5F243149F74FBFAD -:101BA0008091E800877F8093E8006AE270E0CE01D0 -:101BB00001960E94540A14C0AE014F5F5F4F6091BE -:101BC000C8010E949B09BC01892B09F440C0909177 -:101BD000E800977F9093E80089819A810E94B40A77 -:101BE0008091E8008B778093E80031C0803879F5E8 -:101BF0008091E800877F8093E8008091BF01809307 -:101C0000F1008091E8008E778093E8000E94470BF6 -:101C10001EC081111CC09091C6019230C0F4809109 -:101C2000E800877F8093E8009093BF010E94470BF4 -:101C30008091BF01811106C08091E30087FD02C041 -:101C400081E001C084E08093C3010E946608809116 -:101C5000E80083FF0AC08091E800877F8093E80056 -:101C60008091EB0080628093EB00AA960FB6F89407 -:101C7000DEBF0FBECDBFDF91CF911F91089590932E -:101C80005901809358010895E0915801F09159014C -:101C9000309721F00190F081E02D099480E00895C3 -:101CA000EF92FF920F931F93CF93DF93E091580130 -:101CB000F09159013097B1F18C010280F381E02D50 -:101CC00009958091AE0182FF2DC080FF04C080EE97 -:101CD00092E00E949F05E80118E08AEDE82E82E07C -:101CE000F82E8091AE0180FF0BC088811F928F93E8 -:101CF000FF92EF920E9438060F900F900F900F9076 -:101D0000115021961111EDCF8091AE0180FF0AC0D4 -:101D100088ED92E0DF91CF911F910F91FF90EF90AE -:101D20000C949F05DF91CF911F910F91FF90EF9041 -:101D30000895E0915801F0915901309721F0048005 -:101D4000F581E02D09940895CF93DF93EC01809104 -:101D5000560190915701C817D90709F1D09357013F -:101D6000C0935601E0915801F09159013097B9F0B4 -:101D70000680F781E02DCE0109958091AE0182FFAA -:101D80000EC080FF0CC0DF93CF938AEC92E09F934C -:101D90008F930E9438060F900F900F900F90DF9155 -:101DA000CF910895CF93DF93EC01809154019091EE -:101DB0005501C817D90709F1D0935501C0935401B3 -:101DC000E0915801F09159013097B9F00084F18504 -:101DD000E02DCE0109958091AE0182FF0EC080FFFB -:101DE0000CC0DF93CF938AEB92E09F938F930E9476 -:101DF00038060F900F900F900F90DF91CF910895BC -:101E00000C94C80F0E942A1B0E944A060C94521C74 -:101E1000CF92DF92EF92FF920F931F93CF93DF93B6 -:101E200000D000D000D0CDB7DEB70E946E068BE5A3 -:101E3000C82E81E0D82E00E010E0E02E802F0E9416 -:101E4000F506F60141916F01F42EF826B1F40F5F0B -:101E50001F4F0830110589F78FEF89838A831B8212 -:101E60000E94331B8160782F9D838C8349815A8126 -:101E70006B818D810E94FF0F47C09091AE0191FF51 -:101E800004C08E830E94C90F8E8120E030E04F2D68 -:101E900050E0922FBA01022E02C0759567950A9400 -:101EA000E2F760FF2BC02983EA8221E030E069017C -:101EB00002C0CC0CDD1C9A95E2F790E08C219D21AC -:101EC000892B09F420E02B830E94331B8160782F3B -:101ED0009D838C8349815A816B818D810E94FF0F84 -:101EE00049815A816B817C818D810E94AC1AF801F5 -:101EF000E55AFE4F8081C826C08206C02F5F3F4F43 -:101F00002830310531F6A3CF0E94AB1A0E94D91FA9 -:101F100010915A010E94440E181741F10E94440E7C -:101F200080935A019091AE0192FF0EC090FF0CC0B9 -:101F30001F928F938BEE92E09F938F930E943806AF -:101F40000F900F900F900F9080915A0126960FB628 -:101F5000F894DEBF0FBECDBFDF91CF911F910F91DF -:101F6000FF90EF90DF90CF900C94BD1A26960FB69D -:101F7000F894DEBF0FBECDBFDF91CF911F910F91BF -:101F8000FF90EF90DF90CF9008950C94FB0608959A -:101F90000895EF92FF920F931F93CF93DF9384E006 -:101FA00093E00E949F05C0E0D0E088E2E82E81E047 -:101FB000F82E06EF12E08C2F0E94F5060E94991A67 -:101FC000FF92EF921F928F93DF93CF931F930F9304 -:101FD0000E94380621968DB79EB708960FB6F894E2 -:101FE0009EBF0FBE8DBFC830D10529F7DF91CF91BD -:101FF0001F910F91FF90EF90089508950895CF934A -:10200000DF93CDB7DEB72B970FB6F894DEBF0FBEC8 -:10201000CDBF942F4F83252F588769877A878B8769 -:102020004A855B85452B21F02F3F09F59F3FF9F449 -:10203000DE01119686E0FD0111928A95E9F785E0AF -:10204000FE01379601900D928A95E1F749815A81F8 -:102050006B817C818D819E810E9466172B960FB6C5 -:10206000F894DEBF0FBECDBFDF91CF9108954F81B1 -:10207000588569857A858B850E94AC1AD9CFCF9314 -:10208000882309F4A9C0C82F8238A1F40E94440E05 -:1020900081FDA2C089E30E94F5190E946E1A2FEFFC -:1020A00081EE94E0215080409040E1F700C00000B4 -:1020B00089E315C08338C1F40E94440E80FD8CC0B2 -:1020C00083E50E94F5190E946E1A2FEF81EE94E0CD -:1020D000215080409040E1F700C0000083E50E945D -:1020E000121ACF910C946E1A8438A1F40E94440EF7 -:1020F00082FD72C087E40E94F5190E946E1A2FEFCC -:1021000081EE94E0215080409040E1F700C0000053 -:1021100087E4E5CF8CEF8C0F813A20F080E58C0FBF -:102120008E3248F48C2F0E943A24811155C08C2F96 -:102130000E94F519D6CF80E28C0F883048F4C77022 -:1021400081E001C0880FCA95EAF70E94341AC9CF0E -:102150008BE58C0F833078F4C53A29F0C63A31F01C -:1021600083E890E005C081E890E002C082E890E05A -:10217000CF910C94A40E88E58C0F853168F5C83A90 -:1021800089F0C93A91F0CA3A99F0CB3AA1F0CC3A29 -:10219000A9F0CD3AB1F0CE3AB9F0CF3AC1F080E033 -:1021A00090E017C082EE90E014C089EE90E011C07C -:1021B0008AEE90E00EC085EB90E00BC086EB90E0DD -:1021C00008C083EB90E005C084EB90E002C087EB91 -:1021D00090E0CF910C94D20ECF910895882309F40A -:1021E0006AC08238A1F40E94440E81FF64C089E372 -:1021F0000E94F5190E946E1A2FEF81EE94E0215093 -:1022000080409040E1F700C0000089E315C08338AA -:10221000B9F40E94440E80FF4EC083E50E94F51978 -:102220000E946E1A2FEF81EE94E021508040904082 -:10223000E1F700C0000083E50E94121A0C946E1AA8 -:102240008438A1F40E94440E82FF35C087E40E94C6 -:10225000F5190E946E1A2FEF81EE94E02150804014 -:102260009040E1F700C0000087E4E6CF9CEF980FB4 -:10227000913A10F390E5980F9E32F0F290E2980FA9 -:10228000983050F4877091E001C0990F8A95EAF771 -:10229000892F0E943A1AD2CF9BE5980F933020F4F1 -:1022A00080E090E00C94A40E885A853120F480E000 -:1022B00090E00C94D20E0895882321F00E94341AE5 -:1022C0000C946E1A0895882321F00E943A1A0C94F7 -:1022D0006E1A0895BF92CF92DF92EF92FF920F9302 -:1022E0001F93CF93DF9300D000D000D0CDB7DEB7DF -:1022F00025E0FC01DE01119601900D922A95E1F78F -:10230000FC0140813181F280258122952F7063810B -:102310007481672B09F4FEC23F3F19F44F3F09F463 -:10232000F9C26C0149833A8389819A812E830E9484 -:10233000B419182FB92E0E94B3190E94C318EB2D9F -:10234000E295EF70F0E0E55BFF4F2E810C94F926EB -:102350008B2D807F9B2D9F70092F882311F0029574 -:10236000007FFF2049F0002309F481C2802F0E94E2 -:10237000471A0E946E1A7BC2812F0E94EE10002322 -:1023800009F4C8C2802F0E944D1A26960FB6F89401 -:10239000DEBF0FBECDBFDF91CF911F910F91FF9098 -:1023A000EF90DF90CF90BF900C946E1A8B2D807FB2 -:1023B0009B2D9F70092F803211F00295007F112311 -:1023C00019F0113009F12AC0FF20B1F0802F22232B -:1023D00051F1213041F526960FB6F894DEBF0FBEBD -:1023E000CDBFDF91CF911F910F91FF90EF90DF90C4 -:1023F000CF90BF900C94571A222319F0213009F482 -:1024000089C20E945A1A2DC0FF20F1F0263008F030 -:1024100081C20E94311A802329F023C0FF20F9F0E5 -:10242000211116C0802F26960FB6F894DEBF0FBE7E -:10243000CDBFDF91CF911F910F91FF90EF90DF9073 -:10244000CF90BF900C945C11253008F063C209C096 -:10245000F601858180FF0BC28F708583E3CF211148 -:102460001BC2802F82C12B2D26952695237030E02C -:102470002115310521F021303105D1F04BC2FF206B -:1024800021F0812F9B2D937002C080E090E0269672 -:102490000FB6F894DEBF0FBECDBFDF91CF911F9175 -:1024A0000F91FF90EF90DF90CF90BF900C94A40E0F -:1024B000FF2021F0812F9B2D937002C080E090E0DF -:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139 -:1024D0001F910F91FF90EF90DF90CF90BF900C94E1 -:1024E000D20E812FFF2019F00E945F1E02C00E94B1 -:1024F000C71E26960FB6F894DEBF0FBECDBFDF9184 -:10250000CF911F910F91FF90EF90DF90CF90BF90F0 -:102510000C944C1F8B2D837009F07BC0F110FAC115 -:10252000812F829586958770880F880F912F9F70D5 -:10253000C92ED12CE12CF12C082E04C0CC0CDD1CB2 -:10254000EE1CFF1C0A94D2F714FF12C04FE050E0BB -:1025500060E070E004C0440F551F661F771F8A9526 -:10256000D2F7CB01BA01609570958095909503C024 -:1025700060E070E0CB012B2D269526952370422F2D -:1025800050E042305105D9F04330510569F16C29D2 -:102590007D298E299F294130510551F126960FB68C -:1025A000F894DEBF0FBECDBFDF91CF911F910F9189 -:1025B000FF90EF90DF90CF90BF900C94D8186C29CB -:1025C0007D298E299F2926960FB6F894DEBF0FBE6F -:1025D000CDBFDF91CF911F910F91FF90EF90DF90D2 -:1025E000CF90BF900C94EA180E94D818C701B6018A -:1025F00026960FB6F894DEBF0FBECDBFDF91CF9108 -:102600001F910F91FF90EF90DF90CF90BF900C94AF -:10261000C618FF2019F08B2D817001C08695882384 -:1026200009F478C1812F829586958770880F880F6D -:10263000912F9F70C92ED12CE12CF12C082E04C0B3 -:10264000CC0CDD1CEE1CFF1C0A94D2F714FF12C048 -:102650004FE050E060E070E004C0440F551F661F7B -:10266000771F8A95D2F7CB01BA0160957095809556 -:10267000909503C060E070E0CB012B2D2695269548 -:102680002370422F50E042305105D9F043305105BC -:1026900069F16C297D298E299F294130510551F11D -:1026A00026960FB6F894DEBF0FBECDBFDF91CF9157 -:1026B0001F910F91FF90EF90DF90CF90BF900C94FF -:1026C0008F196C297D298E299F2926960FB6F8949B -:1026D000DEBF0FBECDBFDF91CF911F910F91FF9055 -:1026E000EF90DF90CF90BF900C94A1190E948F19AA -:1026F000C701B60126960FB6F894DEBF0FBECDBF58 -:10270000DF91CF911F910F91FF90EF90DF90CF90CD -:10271000BF900C947D19103FC9F128F480E4810F1B -:10272000803250F09FC0123F09F461C008F44AC0E3 -:10273000133F09F471C096C0012F00718B2D8F716A -:10274000FF2051F00E941619812F002319F0829565 -:10275000807F69CE8F7067CE0E943719812F00234A -:1027600019F08295807F01C08F7026960FB6F8947D -:10277000DEBF0FBECDBFDF91CF911F910F91FF90B4 -:10278000EF90DF90CF90BF900C946311FF20B1F0D9 -:10279000253008F0BFC08B2D8F7126960FB6F894A8 -:1027A000DEBF0FBECDBFDF91CF911F910F91FF9084 -:1027B000EF90DF90CF90BF900C945C19263008F01A -:1027C000A9C0E9CFFF20A9F08B2D8F7126960FB6F7 -:1027D000F894DEBF0FBECDBFDF91CF911F910F9157 -:1027E000FF90EF90DF90CF90BF900C941619FF20D0 -:1027F00059F38B2D8F7126960FB6F894DEBF0FBE5E -:10280000CDBFDF91CF911F910F91FF90EF90DF909F -:10281000CF90BF900C943719FF2099F08B2D8F71BA -:1028200026960FB6F894DEBF0FBECDBFDF91CF91D5 -:102830001F910F91FF90EF90DF90CF90BF900C947D -:10284000011926960FB6F894DEBF0FBECDBFDF91FB -:10285000CF911F910F91FF90EF90DF90CF90BF909D -:102860000C94FC18FF20A9F0222309F4ADCF812F8E -:1028700026960FB6F894DEBF0FBECDBFDF91CF9185 -:102880001F910F91FF90EF90DF90CF90BF900C942D -:102890003F10222309F4ADCF812F26960FB6F8946E -:1028A000DEBF0FBECDBFDF91CF911F910F91FF9083 -:1028B000EF90DF90CF90BF900C94EE104B2D4F70A7 -:1028C000612FC6010E94FC1B26960FB6F894DEBF4E -:1028D0000FBECDBFDF91CF911F910F91FF90EF9071 -:1028E000DF90CF90BF900C940E184B2D4F70612F3E -:1028F000C60126960FB6F894DEBF0FBECDBFDF919E -:10290000CF911F910F91FF90EF90DF90CF90BF90EC -:102910000C94FF1B26960FB6F894DEBF0FBECDBFFA -:10292000DF91CF911F910F91FF90EF90DF90CF90AB -:10293000BF9008950E94541A0E94231A0E946E1A92 -:102940000E9480200E944C1F80E090E00E94A40E14 -:1029500080E090E00C94D20E0E94441A0C949A14D9 -:102960000E94B419292F22952F7030E02C303105A8 -:102970004CF42A303105C4F422503109223031059B -:1029800040F023C02C303105D1F02F303105B9F0A3 -:102990001CC0853A28F48430B0F4823028F413C087 -:1029A00090E2980F983078F0883E30F4803E58F4EA -:1029B0008450813A50F407C0803F39F404C093FB3F -:1029C000882780F9089581E0089580E00895CF93E5 -:1029D000DF9300D000D01F92CDB7DEB70F900F90DD -:1029E0000F900F900F90DF91CF910895CF93DF93C9 -:1029F00000D000D000D0CDB7DEB726960FB6F89441 -:102A0000DEBF0FBECDBFDF91CF910895CF93DF938F -:102A1000C091630180916401C817A1F0D0E0CE019C -:102A200066E070E00E94C826FC01EB59FE4F408131 -:102A3000518162817381848195810E94F61421966F -:102A4000C770E8CFDF91CF910895409195015091E3 -:102A500096016091970170919801809199019091F0 -:102A60009A010C94F614CF93DF9380919A0182958A -:102A70008F7009F05CC080919701882309F457C0DA -:102A800020916301D091640140919501C09196011C -:102A9000E0919801F09199012D1709F448C030E0B8 -:102AA000309709F440C0CF3F11F44F3FE1F1C90125 -:102AB00066E070E00E94C826DC01AB59BE4F11965B -:102AC0008C911197C8132FC08C9148132CC012966B -:102AD0008C911297811127C013968D919C91149718 -:102AE0008E179F0708F401978E1B9F0B883C91055A -:102AF000D0F480919A018F70806180939A01C9010E -:102B000066E070E00E94C826FC01E659FE4F908105 -:102B10009F709061908385E991E00E946A11DF9136 -:102B2000CF910C9406152F5F3F4F2770B5CFDF91E3 -:102B3000CF910895BF92CF92DF92EF92FF920F93C1 -:102B40001F93CF93DF93CDB7DEB761970FB6F8949D -:102B5000DEBF0FBECDBF8C0185E0F801DE011D9602 -:102B600001900D928A95E1F7D8014C9111962C9124 -:102B700011971296EC9012971396CD90DC901497C3 -:102B800050919501609196018091980190919901E1 -:102B9000009709F46EC16F3F19F45F3F09F469C1F2 -:102BA000B0909701BB2009F4C3C030919A01C816B8 -:102BB000D90628F0F601E81BF90BCF0104C0809577 -:102BC00090958C0D9D1DFF24F394883C910588F011 -:102BD000F12C307F09F0CBC07C2DD98AC88A522FC6 -:102BE0006E2D89890E94E71485E991E00E946A119F -:102BF000B4C0832F807F09F049C0621314C05413FE -:102C000012C0E11010C03F70306130939A010E94F1 -:102C1000251585E991E00E946A1180919A01D801F9 -:102C200015968C9331C0CD2831F12F3F11F44F3FD1 -:102C300011F1FE2CE1101FC0E0916301309164019D -:102C4000E31709F45CC0F0E0CF0166E070E00E9499 -:102C5000C826DC01AB59BE4F11968C9111972813F1 -:102C600007C08C91481304C012968C91811103C047 -:102C70003196E770E5CFFE2CEE2009F416C1809165 -:102C80009A01816080939A01F12C0FC1621308C0F0 -:102C9000541306C0E11004C080919A01D801C1C04C -:102CA0004D872E878D859E850E94B0148823E1F183 -:102CB000EE20D1F120919A01822F82958F7090E0C1 -:102CC000029774F0809195019091960198878F8377 -:102CD0001986DB86CA862C87CE0107960E946A1168 -:102CE00086E0F801A5E9B1E001900D928A95E1F73F -:102CF0000E9433150E942515FF24F394D6C04D87FA -:102D00002E878D859E850E94B419292F22952F70BC -:102D100030E0223031050CF0BCC09F7009F0B6C025 -:102D2000805E883008F4C1C0C8010E946A11E4CFF7 -:102D3000C816D90608F453C0F601E81BF90BCF01F9 -:102D4000883C910508F450C0F12C7C2DD98AC88AA2 -:102D5000522F6E2D89890E94E714E5E9F1E086E0A3 -:102D6000DF011D928A95E9F70E9425159EC0621326 -:102D700014C0541312C0E11010C080919A01F801E0 -:102D80008583C8010E946A1186E0E5E9F1E0DF0170 -:102D90001D928A95E9F7FB2C88C04D872E878D857B -:102DA0009E850E94B014882309F4BECFEE2009F45A -:102DB000BBCF20919A01822F82958F7090E002976D -:102DC0000CF48ECF80919501909196019A8389831E -:102DD0001B82DD82CC822E83CE0101967FCF80952F -:102DE00090958C0D9D1DACCFFE2CEE2009F49CCF50 -:102DF00062132EC054132CC020919A0120FD1FC0D5 -:102E0000822F82958F70D9F0D80115962C93159743 -:102E10008F3049F08F5F982F9295907F822F8F701F -:102E2000892B15968C93C8010E946A1186E0F801DF -:102E3000A5E9B1E001900D928A95E1F795CF86E082 -:102E4000F801A5E9B1E001900D928A95E1F72DC056 -:102E50004D872E878D859E850E94B014811140CFAD -:102E600080919A01816080939A01C8010E946A1141 -:102E70001CC0EE2009F458CF4D872E878D859E8586 -:102E80000E94B014882309F44FCF2ACF811148CF74 -:102E90000CC0243031050CF047CF9F7009F440CFAF -:102EA000F8019581907F09F03BCF8F2D61960FB689 -:102EB000F894DEBF0FBECDBFDF91CF911F910F9170 -:102EC000FF90EF90DF90CF90BF900895CF93DF9366 -:102ED000CDB7DEB72C970FB6F894DEBF0FBECDBFCF -:102EE0004F83588769877A878B879C87CE0107969F -:102EF0000E949A15882371F08F8198852A853B85D9 -:102F0000232B09F43FC09F3F09F068C08F3F09F0B1 -:102F100065C038C086E0FE013796DE01119601904B -:102F20000D928A95E1F76F817885EA85FB85309768 -:102F300049F17F3F11F46F3F29F18091640190E0E6 -:102F40009C012F5F3F4F277033274091630150E072 -:102F50002417350709F44BC069837A83FD83EC831A -:102F600066E070E00E94C826DC01AB59BE4F96E0D7 -:102F7000FE01319601900D929A95E1F7209364013C -:102F80000E94061580916301909164018917E9F10F -:102F900090E066E070E00E94C8268B599E4F0E9428 -:102FA0009A15882391F18091630190E066E070E0CA -:102FB0000E94C826FC01EB59FE4F4081518162817D -:102FC0007381848195810E94F6148091630190E061 -:102FD00001968770992780936301D4CF4F815885DC -:102FE00069857A858B859C850E94F614CBCF0E94DB -:102FF000AC141092640110926301E5E9F1E086E0FF -:10300000DF011D928A95E9F7BDCF2C960FB6F89493 -:10301000DEBF0FBECDBFDF91CF910895DF92EF925B -:10302000FF920F931F93CF93DF93FC01892B09F439 -:103030008AC0E12CF12CDD24D394EF0121968491F8 -:10304000853709F461C058F4843708F04EC08430E5 -:1030500008F06AC08130D1F0823071F174C08837D5 -:1030600009F45DC050F4863709F455C0873709F07C -:103070006AC08E2D0E94411A54C09CE7980F903769 -:1030800008F061C08F770E94EE1050C08F010E5F74 -:103090001F4FFE01849190E2980F983050F4877092 -:1030A000FD2D01C0FF0F8A95EAF78F2F0E94471A66 -:1030B00014C00E943F1013C08F010E5F1F4FFE010E -:1030C000C49180E28C0F883060F4C7708D2D01C0F0 -:1030D000880FCA95EAF70E944D1A0E946E1AE801FD -:1030E00025C08C2F0E94EE10FACF9F012E5F3F4F1C -:1030F000FE01C491CC2369F08FE99FE00197F1F7BD -:1031000000C00000C150F6CF9F012E5F3F4FFE016F -:10311000F490E9010BC00E94311AE82E07C00E940A -:10312000441A0E946E1A02C00E943F108F2D8823FD -:1031300041F0EFE9FFE03197F1F700C00000815066 -:10314000F6CFFE017ACFDF91CF911F910F91FF90C3 -:10315000EF90DF90089560939F017093A00180939A -:10316000A1019093A2010E94BB1A0C949A1460933F -:103170009B0170939C0180939D0190939E010E94FE -:10318000BC1A0C949A1408950C94AB180F931F93C7 -:1031900000919F011091A0012091A1013091A20105 -:1031A000602B712B822B932B1F910F910C94AB18DA -:1031B0000F931F9300919F011091A0012091A101F5 -:1031C0003091A20160237123822393231F910F91D9 -:1031D0000C94AB180F931F9300919F011091A001C5 -:1031E0002091A1013091A2016027712782279327A6 -:1031F0001F910F910C94AB1860E070E0CB010C9420 -:10320000B7180F931F9341E050E060E070E08A012F -:103210009B0104C0000F111F221F331F8A95D2F794 -:10322000C901B8011F910F910C94B7180F931F9308 -:1032300041E050E060E070E004C0440F551F661F9D -:10324000771F8A95D2F780919B0190919C01A09164 -:103250009D01B0919E018A019B01082B192B2A2BFD -:103260003B2BC901B8011F910F910C94B7180F9314 -:103270001F9341E050E060E070E004C0440F551F30 -:10328000661F771F8A95D2F7409550956095709587 -:1032900080919B0190919C01A0919D01B0919E0114 -:1032A0008A019B01082319232A233B23C901B80162 -:1032B0001F910F910C94B7180F931F9341E050E0AA -:1032C00060E070E004C0440F551F661F771F8A95A9 -:1032D000D2F780919B0190919C01A0919D01B091AA -:1032E0009E018A019B01082719272A273B27C9012C -:1032F000B8011F910F910C94B7180F931F93009171 -:103300009B0110919C0120919D0130919E01602BA9 -:10331000712B822B932B1F910F910C94B7180F9345 -:103320001F9300919B0110919C0120919D01309170 -:103330009E0160237123822393231F910F910C948C -:10334000B7180F931F9300919B0110919C0120913E -:103350009D0130919E0160277127822793271F913D -:103360000F910C94B7180895CF92DF92EF92FF92CD -:103370000F931F93CF93DF938C01C0909F01D09048 -:10338000A001E090A101F090A20140919B01509119 -:103390009C0160919D0170919E01C42AD52AE62A64 -:1033A000F72ACFE1D0E0D701C6010C2E04C0B695B4 -:1033B000A795979587950A94D2F780FF07C0B80123 -:1033C0008C2F0E94CD1B8130910531F4219758F745 -:1033D000B80180E00E94CD1BDF91CF911F910F912A -:1033E000FF90EF90DF90CF90089520910C013091E5 -:1033F0000D01F90132969FEF40E05191581789F085 -:103400009F3F19F4511101C0942F4F5F4630A9F727 -:103410009F3F39F0F901E90FF11D97FDFA9582837D -:103420000895089520910C0130910D01F901329613 -:10343000285F3F4F9081981301C010823196E217A8 -:10344000F307C1F7089581E090E0E0910C01F0915D -:103450000D01E80FF91F1082019688309105A9F738 -:1034600008958091AD0108959091AD01892B8093CD -:10347000AD01089580959091AD0189238093AD01B0 -:1034800008958093AD0108951092AD010895909133 -:10349000AC01892B8093AC01089580959091AC018B -:1034A00089238093AC0108951092AC010895809314 -:1034B000A30108951092A301089580910C019091A9 -:1034C0000D01FC0131969C01285F3F4F80E09191F6 -:1034D00091118F5FE217F307D1F70895E0910C0186 -:1034E000F0910D018091AD018083E0910C01F0918C -:1034F0000D0190818091AC01892B80838091A30183 -:10350000882361F0E0910C01F0910D019081892BED -:1035100080830E945D1A81111092A30180910C0199 -:1035200090910D010C94500E9093350180933401CD -:1035300008958295982F9C7C292F26952695982F63 -:103540009373990F990F922B892F8A7A8695957587 -:10355000990F892B08950895CF93DF9300D000D061 -:103560001F92CDB7DEB70F900F900F900F900F9076 -:10357000DF91CF910895089508950C94C50F089593 -:103580008091C301843021F11092AF0120E488E1E1 -:1035900090E00FB6F894A895809360000FBE20933A -:1035A000600083B7817F846083BF83B7816083BFFE -:1035B0007894889583B78E7F83BF0FB6F894A895CB -:1035C00080916000886180936000109260000FBE5F -:1035D0000895CF930E94FD0F0E946E060E94FE0F79 -:1035E000C0E08C2F0E94F506811104C0CF5FC83067 -:1035F000C1F701C081E0CF9108950E94C70F0C94DC -:10360000AC141F920F920FB60F9211248F939F93B9 -:10361000AF93BF938091AF01811113C08091B0012E -:103620009091B101A091B201B091B3014196A11D59 -:10363000B11D8093B0019093B101A093B201B093FA -:10364000B301BF91AF919F918F910F900FBE0F90DB -:103650001F90189582E084BD93E095BD9AEF97BDC9 -:1036600080936E0008952FB7F8948091B0019091E7 -:10367000B101A091B201B091B3012FBF08952FB74E -:10368000F8946091B0017091B1018091B201909174 -:10369000B3012FBF0895CF92DF92EF92FF920F9365 -:1036A0001F932FB7F8944091B0015091B1016091F0 -:1036B000B2017091B3012FBF6A017B01EE24FF2498 -:1036C0008C0120E030E0C016D106E206F30610F4CB -:1036D000415051099A01281B390BC9011F910F91C3 -:1036E000FF90EF90DF90CF9008951F920F920FB64A -:1036F0000F9211248F939F93AF93BF938091B0014A -:103700009091B101A091B201B091B3010196A11DB8 -:10371000B11D8093B0019093B101A093B201B09319 -:10372000B301BF91AF919F918F910F900FBE0F90FA -:103730001F9018950E94980BF8942FEF87EA91E656 -:10374000215080409040E1F700C0000087E090EBFE -:10375000DC018093CD019093CE01A093CF01B09373 -:10376000D0019CE088E10FB6F894A89580936000A2 -:103770000FBE90936000FFCFE92FF0E093E0EE0FD3 -:10378000FF1F9A95E1F7E80FF11DEA54FF4F94915E -:10379000892F8F7092959F700895CF93C82FCB017A -:1037A0000E94BC1B492F90E0242F30E054E0220FF0 -:1037B000331F5A95E1F7282B392B2038310519F49E -:1037C00080E090E017C0EC2FF0E023E0EE0FFF1F49 -:1037D0002A95E1F74770E40FF11D34E0EE0FFF1F6B -:1037E0003A95E1F7E80FF91FEE0FFF1FE050F84997 -:1037F00085919491CF91089580E090E00895089587 -:10380000CF92DF92EF92FF920F931F93CF936C01B1 -:10381000C0E08C2F0E94F50600E010E0E82EF12CAD -:10382000C701002E02C0959587950A94E2F780FFA4 -:1038300016C0602F7C2F80E00E94CD1B9C018C1550 -:103840009D0559F0832F807E932F907C11F0803A54 -:1038500031F430E02C153D0511F481E009C00F5F13 -:103860001F4F08301105E1F6CF5FC83091F680E0B8 -:10387000CF911F910F91FF90EF90DF90CF9008951F -:10388000CF93DF93EC018CE290E00E94001C882330 -:1038900029F0CE01DF91CF910C94001C80E0DF91E4 -:1038A000CF910895CF930E94B31D811102C00E9451 -:1038B000991D89E193E00E949F05C5E6C15049F03A -:1038C0000E946E068FE39CE90197F1F700C00000AB -:1038D000F5CF82E193E00E949F0589E290E00E948B -:1038E000401C811124C18AE290E00E94401C811199 -:1038F0000E94991D85E090E00E94401C81110E9469 -:103900009A1B0E94BF1A0E94BE1D8093AE0187E0E1 -:1039100090E00E94401C8823C1F18BE190E00E945E -:10392000401C882351F08091AE0181FB222720F9B1 -:1039300091E0922790FB81F90FC08EE090E00E9409 -:10394000401C882361F08091AE0182FB222720F980 -:1039500091E0922790FB82F98093AE0116C080E13E -:1039600090E00E94401C9091AE01882341F093FBAF -:10397000222720F981E0822780FB93F904C0892F58 -:10398000809580FB90F99093AE018091AE010E94EA -:10399000C21D0E94D01D8093CC0180EE90E00E9459 -:1039A000401C882341F08091CC01982F909590FB8A -:1039B00080F98093CC0189E390E00E94401C882329 -:1039C00059F08091CC0181FB222720F991E09227C8 -:1039D00090FB81F98093CC0182EE90E00E94401C24 -:1039E000882359F08091CC0182FB222720F991E0B5 -:1039F000922790FB82F98093CC0186EE90E00E94A2 -:103A0000401C882359F08091CC0183FB222720F9A8 -:103A100091E0922790FB83F98093CC0183EE90E0B4 -:103A20000E94401C882359F08091CC0184FB2227FE -:103A300020F991E0922790FB84F98093CC0185E3F3 -:103A400090E00E94401C882359F08091CC0185FBB6 -:103A5000222720F991E0922790FB85F98093CC01F1 -:103A600081E390E00E94401C882359F08091CC01B2 -:103A700086FB222720F991E0922790FB86F980931C -:103A8000CC0181E190E00E94401C882359F0809194 -:103A9000CC0187FB222720F991E0922790FB87F940 -:103AA0008093CC018091CC010E94D41D87E290E0EC -:103AB0000E94401CC82F8EE190E00E94401C8111A2 -:103AC000C2608FE190E00E94401C8111C46080E2DE -:103AD00090E00E94401C8111C86081E290E00E9449 -:103AE000401C8111C06182E290E00E94401C811163 -:103AF000C06283E290E00E94401C8111C06484E2B5 -:103B000090E00E94401C882311F0C06802C0CC23C2 -:103B100029F08C2F0E94CB1D6C2F03C00E94C71D63 -:103B2000682F70E080E090E0CF910C94C418CF91A2 -:103B300008956DEE7EEF80E090E00E942F2760E018 -:103B400082E090E00E94212760E083E090E00E9404 -:103B5000212760E084E090E00E94212760E085E07A -:103B600090E00C94212780E090E00E941B2721E048 -:103B70008D3E9E4F09F020E0822F089582E090E074 -:103B80000C941327682F82E090E00C94212783E0A7 -:103B900090E00C941327682F83E090E00C94212789 -:103BA00084E090E00C941327682F84E090E00C945C -:103BB00021278091B60180FF0CC08091110190E017 -:103BC00065E070E00E94C826959587959595879544 -:103BD0002EC081FF0AC08091110190E065E070E085 -:103BE0000E94C8269595879522C082FF08C08091C3 -:103BF000110190E065E070E00E94C82618C0209195 -:103C0000B7012223D1F030911001231780F7809162 -:103C1000110190E065E070E00E94C826622F70E01C -:103C20000E94C826632F70E00E94E526CB018038F1 -:103C3000910530F4009731F0089585E090E0089503 -:103C40008FE7089581E008958091B60180FF08C054 -:103C500060910F0170E0759567957595679523C024 -:103C600081FF06C060910F0170E0759567951BC0DC -:103C700082FF04C060910F0170E012C06091B70133 -:103C80006623D1F020910E016217A0F780910F01F9 -:103C900070E090E00E94C826622F70E00E94E52646 -:103CA0006038710528F46115710521F0862F08959B -:103CB0008FE7089581E0089561E070E0F4CF803FE0 -:103CC00021F40E94D91D819504C0813F29F40E94EE -:103CD000D91D8093BA010895823F21F40E94D91D15 -:103CE000819504C0833F29F40E94D91D8093B901B6 -:103CF0000895893F19F40E94241E05C08A3F31F4BB -:103D00000E94241E81958093BB0108958B3F21F46E -:103D10000E94241E819504C08C3F29F40E94241E19 -:103D20008093BC010895843F21F48091B8018160A3 -:103D300017C0853F21F48091B801826011C0863F91 -:103D400021F48091B80184600BC0873F21F48091F9 -:103D5000B801886005C0883F31F48091B801806166 -:103D60008093B80108958D3F21F48091B601816060 -:103D70000BC08E3F21F48091B601826005C08F3F59 -:103D800029F48091B60184608093B6010895803F44 -:103D900039F48091BA0187FF6CC01092BA0169C0F2 -:103DA000813F29F48091BA011816BCF362C090914A -:103DB000B901823F29F497FF5CC01092B90159C044 -:103DC000833F19F41916CCF354C0893F41F4809114 -:103DD000BB0118160CF04DC01092BB014AC08A3FBF -:103DE00029F48091BB0187FF44C0F6CF8B3F39F4A3 -:103DF0008091BC0187FF3DC01092BC013AC08C3F4E -:103E000029F48091BC011816BCF333C0843F21F41F -:103E10008091B8018E7F17C0853F21F48091B80151 -:103E20008D7F11C0863F21F48091B8018B7F0BC03C -:103E3000873F21F48091B801877F05C0883F31F426 -:103E40008091B8018F7E8093B80113C08D3F21F41B -:103E50008091B6018E7F0BC08E3F21F48091B60118 -:103E60008D7F05C08F3F29F48091B6018B7F8093B1 -:103E7000B6018091B90181110EC08091BA01811102 -:103E80000AC08091BB01811106C08091BC018111E3 -:103E900002C01092B70108958091AE0183FF7EC0E9 -:103EA00085E593E00E949F058091B8011F928F9352 -:103EB00080E593E09F938F930E9438068EE493E011 -:103EC0000E949F058091B901282F082E000C330B0A -:103ED0003F938F938BE493E09F938F930E943806D8 -:103EE00089E493E00E949F058091BA01282F082E53 -:103EF000000C330B3F938F9386E493E09F938F9353 -:103F00000E94380684E493E00E949F058091BB01E3 -:103F1000282F082E000C330B3F938F9381E493E0FE -:103F20009F938F930E9438068FE393E00E949F0532 -:103F30008091BC01282F082E000C330B3F938F93E8 -:103F40008CE393E09F938F930E94380689E393E07C -:103F50000E949F058091B7011F928F9386E393E0A3 -:103F60009F938F930E94380684E393E00E949F05FD -:103F70008091B6011F928F9381E393E09F938F937B -:103F80000E9438068EE293E00E949F058DB79EB78F -:103F90004C960FB6F8949EBF0FBE8DBF88EB91E094 -:103FA0000E94990E0E94331B9093B5018093B40137 -:103FB00008951F93CF93DF938091B4019091B50141 -:103FC0000E944B1BFC012091B701222329F0909104 -:103FD0001201892F90E007C08091130190E06AE000 -:103FE00070E00E94C826E817F90708F485C08091A0 -:103FF000B901C091BA01D091BB011091BC018111EE -:1040000007C0C11175C0D11173C0111171C074C046 -:104010002F3F19F02F5F2093B701181624F40E9448 -:10402000D91D8093B9018091B90187FF05C00E9415 -:10403000D91D81958093B9011C1624F40E94D91DC5 -:104040008093BA018091BA0187FF05C00E94D91DF3 -:1040500081958093BA016091B901662331F1C091D5 -:10406000BA01CC2311F1062E000C770B880B990BAB -:104070000E94C72523E333E343E35FE30E942B263B -:104080000E948F256093B9016C2FCC0F770B880BA2 -:10409000990B0E94C72523E333E343E35FE30E94C8 -:1040A0002B260E948F256093BA011D1624F40E94CE -:1040B000241E8093BB018091BB0187FF05C00E9435 -:1040C000241E81958093BB01111624F40E94241EA6 -:1040D0008093BC018091BC0187FF05C00E94241E13 -:1040E00081958093BC01DF91CF911F910C944C1F5F -:1040F0002F3F09F08FCF97CFDF91CF911F91089578 -:10410000E8EBF1E085E0DF011D928A95E9F7109276 -:10411000B7011092B601089588E795E00E949F05C7 -:104120001F9281E08F931F9285E08F938AE295E042 -:104130009F938F930E9438060F900F900F900F90CF -:104140000F900F9008958330E9F128F4813061F0E9 -:10415000823009F10895853009F462C008F449C03D -:10416000863009F474C0089580911301262F30E041 -:10417000280F311D2F3F310524F4680F6093130180 -:1041800003C08FEF80931301809113011F928F93CF -:1041900083E694E072C080911201262F30E0280F50 -:1041A000311D2F3F310524F4680F6093120103C0C5 -:1041B0008FEF80931201809112011F928F9381E5FE -:1041C00094E05BC080911101262F30E0280F311D53 -:1041D0002F3F310524F4680F6093110103C08FEF66 -:1041E00080931101809111011F928F938EE394E0CF -:1041F00044C080911001262F30E0280F311D2F3F41 -:10420000310524F4680F6093100103C08FEF809391 -:104210001001809110011F928F9389E294E02DC0CC -:1042200080910F01262F30E0280F311D2F3F3105DF -:1042300024F4680F60930F0103C08FEF80930F0188 -:1042400080910F011F928F9380E194E016C08091BE -:104250000E01262F30E0280F311D2F3F310524F4A9 -:10426000680F60930E0103C08FEF80930E01809161 -:104270000E011F928F9385EF93E09F938F930E947F -:1042800038060F900F900F900F900895833081F1B2 -:1042900028F4813059F08230D1F00895853009F446 -:1042A00049C0B8F1863009F456C0089580911301D1 -:1042B000681720F4861B8093130102C0109213012B -:1042C000809113011F928F9386EE93E054C08091EA -:1042D0001201681720F4861B8093120102C010920D -:1042E0001201809112011F928F9384ED93E043C0DD -:1042F00080911101681720F4861B8093110102C080 -:1043000010921101809111011F928F9381EC93E023 -:1043100032C080911001681720F4861B8093100131 -:1043200002C010921001809110011F928F938CEAAD -:1043300093E021C080910F01681720F4861B8093C1 -:104340000F0102C010920F0180910F011F928F93F5 -:1043500083E993E010C080910E01681720F4861B5A -:1043600080930E0102C010920E0180910E011F92E7 -:104370008F9388E793E09F938F930E9438060F9066 -:104380000F900F900F900895CF93C82F1F928F9387 -:104390008DE796E09F938F930E94380681E090E02E -:1043A000A0E0B0E0BC01CD0104C0660F771F881FFC -:1043B000991FCA95D2F70E94C4180F900F900F90C2 -:1043C0000F90CF910C94AC14CF938732B0F58E310F -:1043D00008F040C28E3009F4BEC100F5873009F400 -:1043E0008DC1A8F4863009F039C28091AE01817F79 -:1043F0008E7F8093AE0182E896E00E949F0585E85B -:104400009AE00E949F0581E08093BE0175C18830CB -:1044100009F43FC08B3009F46BC120C2863109F426 -:10442000E0C120F4803109F4AAC118C2893109F42D -:10443000C1C18B3109F47BC111C2883309F458C161 -:1044400050F4893209F404C2853309F401C2873279 -:1044500009F004C2FDC1833409F4FAC128F48A3397 -:1044600008F4FCC18953F7C1883409F0F7C10E94F0 -:10447000AC1484E79AE00E949F059FEF23ED80E350 -:10448000915020408040E1F700C000000E949A1B3C -:1044900033C189E89AE00E949F0589E798E00E946D -:1044A0009F050E94C71D1F928F9386E798E09F93F8 -:1044B0008F930E94380684E798E00E949F050E942F -:1044C000BE1DC82F81E698E00E949F051F92CF93E2 -:1044D0008CE598E09F938F930E9438068AE598E0D8 -:1044E0000E949F0580E598E00E949F058C2F8170B7 -:1044F0001F928F938DE498E09F938F930E943806CC -:104500008BE498E00E949F0581E498E00E949F055B -:10451000C1FB882780F91F928F938EE398E09F93C9 -:104520008F930E9438068CE398E00E949F0580E3F9 -:1045300098E00E949F05C2FB882780F91F928F9305 -:104540008DE298E09F938F930E9438068BE298E06B -:104550000E949F0582E298E00E949F05C3FBCC2742 -:10456000C0F91F92CF938FE198E09F938F930E94A1 -:1045700038068DE198E00E949F050E94D01DC82F4B -:1045800089E098E00E949F051F92CF9384E098E015 -:104590009F938F930E94380682E098E00E949F05C7 -:1045A00089EE97E00E949F058C2F81701F928F9358 -:1045B00086EE97E09F938F930E9438068DB79EB743 -:1045C00080960FB6F8949EBF0FBE8DBF84EE97E025 -:1045D0000E949F058DEC97E00E949F05C1FB8827F4 -:1045E00080F91F928F938AEC97E09F938F930E949C -:1045F000380688EC97E00E949F0586EB97E00E94C2 -:104600009F05C2FB882780F91F928F9383EB97E069 -:104610009F938F930E94380681EB97E00E949F053D -:104620008FE997E00E949F05C3FB882780F91F92BE -:104630008F938CE997E09F938F930E9438068AE9C5 -:1046400097E00E949F0580E997E00E949F05C4FBC8 -:10465000882780F91F928F938DE897E09F938F931F -:104660000E9438068BE897E00E949F0589E797E053 -:104670000E949F05C5FB882780F91F928F9386E7CC -:1046800097E09F938F930E94380684E797E00E94FB -:104690009F0588E597E00E949F05C6FB882780F963 -:1046A0001F928F9385E597E09F938F930E94380622 -:1046B00083E597E00E949F058BE497E00E949F05A9 -:1046C000C7FBCC27C0F91F92CF9388E497E09F9354 -:1046D0008F930E94380686E497E00E949F058DB76D -:1046E0009EB74C960FB6F8949EBF0FBE8DBF04C008 -:1046F00089EA96E00E949F05C1E0B5C08091AE01B5 -:10470000C82FC17080FF09C087E69AE00E949F050C -:104710008091AE01817F8E7F47C08BE59AE00E9439 -:104720009F058091AE0181608093AE01E5CF9091AD -:10473000AE0191FBCC27C0F981E0C827892FC0FBCF -:1047400081F98093AE01CC2319F08EE49AE027C062 -:1047500080E49AE0CFCF9091AE0192FBCC27C0F9D4 -:1047600081E0C827892FC0FB82F98093AE01CC235A -:1047700019F081E39AE013C081E29AE0BBCF9091F7 -:10478000AE0193FBCC27C0F981E0C827892FC0FB7D -:1047900083F98093AE01CC2351F085E19AE00E9429 -:1047A0009F058091AE0181608093AE015CC088E07E -:1047B0009AE0A0CF89EF99E00E949F0581ED99E0F2 -:1047C0000E949F058FE999E00E949F0582E799E08A -:1047D0000E949F0583E299E00E949F0584EF98E084 -:1047E00089CF86EE98E00E949F050E94440E1F929A -:1047F0008F938CEC98E09F938F930E943806809162 -:104800000B011F928F9385EB98E09F938F930E94EB -:104810003806809153011F928F9382EA98E09F930C -:104820008F930E9438060E943F1B9F938F937F9324 -:104830006F938BE898E09F938F930E9438068DB713 -:104840009EB742960FB6F8949EBF0FBE8DBF54CF51 -:1048500080E001C08D510E94C4214ECF89E898E0CC -:104860000E949F05C0E08C2FCF91089580E00895AD -:1048700080E00895CF93C82F8091BE01813071F000 -:1048800020F0823009F44BC042C1E0910C01F0915C -:104890000D018081823209F03CC107C0E0910C011A -:1048A000F0910D018081823261F48C2F0E943624B8 -:1048B000811104C08C2F0E94E4212FC081E090E080 -:1048C0002CC08C2F0E943824811126C0C431E1F005 -:1048D00070F4CB3081F0C031D1F40E948C2085E798 -:1048E00096E00E949F0582E08093BE0115C0C93208 -:1048F00059F0C83361F482E896E00E949F0589E789 -:1049000096E00E949F0508C01092BE0104C183E793 -:1049100096E00E949F05FFC081E08170FEC0C43216 -:1049200028F5CE3108F0C1C0CB30A1F1D0F4C730AA -:1049300009F0D3C08EE18093130182E380931201CA -:104940008AE08093110184E18093100188E08093D4 -:104950000F0188E280930E0189E195E00E949F0596 -:10496000BFC0C33149F1C431C1F0B7C0CB3409F481 -:10497000A9C028F4C93289F0C83361F0AEC0C1358E -:1049800009F49EC0C23509F499C0CE3409F0A5C01F -:104990006AE09EC00E948C20A3C08091BD01882344 -:1049A00019F01092BD019CC086E295E00E949F051F -:1049B00081E08093BE01B1C080E095E00E949F0538 -:1049C0008EEE94E00E949F05809113011F928F93B9 -:1049D0008BEE94E09F938F930E94380689EE94E0CB -:1049E0000E949F0587ED94E00E949F05809112012F -:1049F0001F928F9384ED94E09F938F930E943806CB -:104A000082ED94E00E949F0583EC94E00E949F0554 -:104A1000809111011F928F9380EC94E09F938F936C -:104A20000E9438068EEB94E00E949F058DEA94E088 -:104A30000E949F05809110011F928F938AEA94E053 -:104A40009F938F930E94380688EA94E00E949F0506 -:104A500083E994E00E949F0580910F011F928F933C -:104A600080E994E09F938F930E9438068EE894E04B -:104A70000E949F0587E794E00E949F0580910E01A8 -:104A80001F928F9384E794E09F938F930E94380640 -:104A900082E794E00E949F058DB79EB748960FB6B7 -:104AA000F8949EBF0FBE8DBF1BC0CE51EC2FF0E01F -:104AB000E75DFE4F80818093BD0112C061E003C0BD -:104AC00061E006C06AE08091BD010E94A32008C099 -:104AD0008091BD010E94462103C087E195E013C08B -:104AE0008091BD01882369F01F928F9381E195E049 -:104AF0009F938F930E9438060F900F900F900F9006 -:104B000004C08EE095E00E949F0581E006C01092EF -:104B1000BE0180E002C080E000CFCF9108950E94E6 -:104B200096256894B1110C94252608950E940A26B2 -:104B300088F09F5798F0B92F9927B751B0F0E1F05E -:104B4000660F771F881F991F1AF0BA95C9F714C00E -:104B5000B13091F00E942426B1E008950C942426EF -:104B6000672F782F8827B85F39F0B93FCCF3869547 -:104B700077956795B395D9F73EF4909580957095A4 -:104B800061957F4F8F4F9F4F0895E89409C097FB21 -:104B90003EF490958095709561957F4F8F4F9F4F14 -:104BA0009923A9F0F92F96E9BB279395F695879558 -:104BB00077956795B795F111F8CFFAF4BB0F11F41B -:104BC00060FF1BC06F5F7F4F8F4F9F4F16C08823C2 -:104BD00011F096E911C0772321F09EE8872F762FF8 -:104BE00005C0662371F096E8862F70E060E02AF039 -:104BF0009A95660F771F881FDAF7880F9695879525 -:104C000097F9089557FD9058440F551F59F05F3F8D -:104C100071F04795880F97FB991F61F09F3F79F0DE -:104C200087950895121613061406551FF2CF469560 -:104C3000F1DF08C0161617061806991FF1CF8695E2 -:104C40007105610508940895E894BB2766277727C6 -:104C5000CB0197F908950E943D260C94B7260E9437 -:104C6000A92638F00E94B02620F0952311F00C946C -:104C7000A0260C94A6260C9425260E94022678F3E2 -:104C80009923C9F35523B9F3950F50E0551FAA276F -:104C9000EE27FF27BB2700240894679520F4E20F36 -:104CA000F31FB41F0A1E220F331F441FAA1F66954D -:104CB000A9F7779530F4F30FB41F0A1E121E08F4FB -:104CC0006395330F441FAA1F221F769599F7879586 -:104CD00020F4B40F0A1E121E631F440FAA1F221FC6 -:104CE000331F8695A9F7862F712D602D11249F57AC -:104CF00050409AF0F1F088234AF0EE0FFF1FBB1FDF -:104D0000661F771F881F91505040A9F79E3F51059D -:104D100080F00C94A0260C9425265F3FE4F3983E87 -:104D2000D4F3869577956795B795F795E7959F5F47 -:104D3000C1F7FE2B880F911D9695879597F90895D9 -:104D400097F99F6780E870E060E008959FEF80EC3E -:104D5000089500240A9416161706180609060895E1 -:104D600000240A9412161306140605060895092E47 -:104D70000394000C11F4882352F0BB0F40F4BF2BB6 -:104D800011F460FF04C06F5F7F4F8F4F9F4F0895F6 -:104D90000024552704C0080E591F880F991F00973B -:104DA00029F076956795B8F37105B9F7802D952FA1 -:104DB0000895991B79E004C0991F961708F0961B77 -:104DC000881F7A95C9F78095089597FB072E16F4EA -:104DD000009407D077FD09D00E94FF2607FC05D07C -:104DE0003EF4909581959F4F0895709561957F4F02 -:104DF0000895EE0FFF1F0590F491E02D0994AA1B72 -:104E0000BB1B51E107C0AA1FBB1FA617B70710F0B5 -:104E1000A61BB70B881F991F5A95A9F780959095E7 -:104E2000BC01CD010895F999FECF92BD81BDF89ADC -:104E3000992780B50895A8E1B0E042E050E00C94D5 -:104E40003627262FF999FECF1FBA92BD81BD20BD0E -:104E50000FB6F894FA9AF99A0FBE019608950E9437 -:104E60002127272F0C942227DC01CB01FC01F99983 -:104E7000FECF06C0F2BDE1BDF89A319600B40D92A6 -:0C4E800041505040B8F70895F894FFCF5F -:104E8C00050307F407D1079D07690701A40128084A -:104E9C00140A321E404D36227A022D02F701D5013A -:104EAC0061017A019301AC010001020304050607BC -:044EBC0008090000E1 +:100100006E6365213A20000A4B6579626F61726403 +:100110002073746172742E0A000A55534220636F73 +:100120006E666967757265642E0A000A0A544D4B43 +:100130003A35386362626235632F4C5546410A0A8C +:10014000000E0341006C00700073003600340000A4 +:1001500000080354004D004B00000004030904098B +:10016000027400040100A03209040000010301012F +:100170000009211101000122400007058103080048 +:100180000A09040100010301020009211101000113 +:10019000224D000705820308000A0904020001033A +:1001A0000000000921110100012236000705830328 +:1001B00008000A09040300020300000009211101DC +:1001C0000001222200070584032000010705040323 +:1001D0002000011201100100000008EDFE6464011E +:1001E00000010200010631FF0974A1010975150023 +:1001F00026FF009520750881020976150026FF006C +:10020000952075089102C005010980A1018502169B +:1002100001002637001A81002AB700751095018168 +:1002200000C0050C0901A1018503160100269C02EE +:100230001A01002A9C02751095018100C005010970 +:1002400002A1010901A100050919012905150025CF +:10025000019505750181029501750381010501096B +:100260003009311581257F950275088106093815F9 +:1002700081257F950175088106050C0A38021581D4 +:10028000257F950175088106C0C005010906A101F9 +:10029000050719E029E71500250195087501810278 +:1002A0009501750881010508190129059505750154 +:1002B00091029501750391010507190029FF1500A9 +:1002C00026FF00950675088100C0636F6E73756D1B +:1002D00065723A20253034580A0073797374656D5D +:1002E0003A20253034580A000A00253032582000C0 +:1002F0006B6579626F6172643A20004C45443A2024 +:10030000253032580A00253032583A2025303862DC +:1003100025730A00722F632030313233343536377B +:100320000A00646F6E652E0A00626F6F746D6167FC +:100330006963207363616E3A202E2E2E2000290AF5 +:10034000002575002F002575005D2800256400201C +:1003500000256400200025640020002564007C0046 +:1003600025303258006D6F7573656B6579205B625F +:10037000746E7C782079207620685D287265702FF5 +:1003800061636C293A205B006D6B5F776865656C13 +:100390005F74696D655F746F5F6D6178203D2025C6 +:1003A000640A006D6B5F776865656C5F6D61785F8F +:1003B0007370656564203D2025640A006D6B5F7471 +:1003C000696D655F746F5F6D6178203D2025640AFB +:1003D000006D6B5F6D61785F7370656564203D20B3 +:1003E00025640A006D6B5F696E74657276616C20BE +:1003F0003D2025640A006D6B5F64656C6179203D6A +:100400002025640A006D6B5F776865656C5F7469B1 +:100410006D655F746F5F6D6178203D2025640A0013 +:100420006D6B5F776865656C5F6D61785F73706534 +:100430006564203D2025640A006D6B5F74696D65FD +:100440005F746F5F6D6178203D2025640A006D6BDD +:100450005F6D61785F7370656564203D2025640A77 +:10046000006D6B5F696E74657276616C203D20254E +:10047000640A006D6B5F64656C6179203D202564C2 +:100480000A000A00257500363A20776865656C5FBA +:1004900074696D655F746F5F6D61783A20000A0062 +:1004A000257500353A20776865656C5F6D61785F0A +:1004B00073706565643A20000A00257500343A209F +:1004C00074696D655F746F5F6D61783A20000A0032 +:1004D000257500333A206D61785F73706565643A05 +:1004E00020000A00257500323A20696E7465727624 +:1004F000616C286D73293A20000A00257500313A95 +:100500002064656C6179282A31306D73293A2000A6 +:100510000A092D2056616C756573202D0A004D3E29 +:10052000004D25643E20003F0073657420646566BD +:1005300061756C740A00433E20007768657265201F +:1005400064656C74613A20637572736F723D2564E3 +:100550002C20776865656C3D25640A5365652068C5 +:100560007474703A2F2F656E2E77696B69706564AD +:1005700069612E6F72672F77696B692F4D6F757385 +:10058000655F6B6579730A000A092D204D6F7573DD +:10059000656B6579202D0A4553432F713A097175B2 +:1005A00069740A313A0964656C6179282A31306DC1 +:1005B00073290A323A09696E74657276616C286D26 +:1005C00073290A333A096D61785F73706565640A4F +:1005D000343A0974696D655F746F5F6D61780A35CF +:1005E0003A09776865656C5F6D61785F7370656502 +:1005F000640A363A09776865656C5F74696D655F92 +:10060000746F5F6D61780A0A703A097072696E746E +:100610002076616C7565730A643A097365742064A9 +:10062000656661756C74730A75703A092B310A64DA +:100630006F776E3A092D310A706775703A092B3160 +:10064000300A7067646F776E3A092D31300A0A7389 +:1006500070656564203D2064656C7461202A206D9E +:1006600061785F7370656564202A20287265706503 +:100670006174202F2074696D655F746F5F6D6178A0 +:10068000290A003F004D3E2000433E20004C2564D7 +:100690000A000A092D20436F6E736F6C65202D0AC6 +:1006A0004553432F713A09717569740A6D3A096DA2 +:1006B0006F7573656B65790A000A092D204D6167B6 +:1006C0006963202D0A643A0964656275670A783A9D +:1006D000096465627567206D61747269780A6B3AA6 +:1006E000096465627567206B6579626F6172640A7F +:1006F0006D3A096465627567206D6F7573650A767A +:100700003A0976657273696F6E0A733A0973746198 +:100710007475730A633A09636F6E736F6C65206D4D +:100720006F64650A302D343A096C61796572302D39 +:1007300034284631302D4634290A506175733A0900 +:10074000626F6F746C6F616465720A653A09656502 +:1007500070726F6D0A000A002575002E6E6B726F45 +:100760003A20000A002575002E737761705F626180 +:10077000636B736C6173685F6261636B73706163F9 +:10078000653A20000A002575002E737761705F6757 +:10079000726176655F6573633A20000A0025750013 +:1007A0002E6E6F5F6775693A20000A002575002E6E +:1007B000737761705F72616C745F726775693A20FC +:1007C000000A002575002E737761705F6C616C7490 +:1007D0005F6C6775693A20000A002575002E636119 +:1007E00070736C6F636B5F746F5F636F6E74726F47 +:1007F0006C3A20000A002575002E737761705F63E4 +:100800006F6E74726F6C5F636170736C6F636B3A61 +:1008100020000A0025303258006B65796D61705FE9 +:10082000636F6E6669672E7261773A20000A002551 +:1008300075002E6D6F7573653A20000A00257500EE +:100840002E6B6579626F6172643A20000A0025752B +:10085000002E6D61747269783A20000A00257500D7 +:100860002E656E61626C653A20000A0025303258B0 +:100870000064656275675F636F6E6669672E72619B +:10088000773A20000A0025750064656661756C740E +:100890005F6C617965723A20003F0074696D657222 +:1008A0005F72656164333228293A202530346C58F0 +:1008B0000A006B6579626F6172645F69646C653AA6 +:1008C0002025580A006B6579626F6172645F7072EF +:1008D0006F746F636F6C3A2025580A00686F7374E9 +:1008E0005F6B6579626F6172645F6C656473282900 +:1008F0003A2025580A000A092D2053746174757333 +:10090000202D0A004743433A20352E342E30204113 +:1009100056522D4C4942433A20322E302E3020413F +:1009200056525F415243483A2061767233350A008D +:100930004F5054494F4E533A204C55464120424F58 +:100940004F544D41474943204D4F5553454B455911 +:100950002045585452414B455920434F4E534F4C1C +:100960004520434F4D4D414E44204B45594D41503C +:100970005F53454354494F4E20343039360A0042C4 +:1009800055494C443A203538636262623563202809 +:1009900031313A31303A3031204D617920333020D5 +:1009A00032303139290A005649443A2030784645D8 +:1009B000454428544D4B29205049443A203078363C +:1009C00034363428416C7073363429205645523AF7 +:1009D000203078303030310A00444553433A2054B7 +:1009E0004D4B206B6579626F617264206669726D30 +:1009F0007761726520666F7220416C707336340ABD +:100A0000000A092D2056657273696F6E202D0A0049 +:100A10000A6D6F7573653A206F66660A000A6D6F1E +:100A20007573653A206F6E0A000A6B6579626F61B3 +:100A300072643A206F66660A000A6B6579626F61BC +:100A400072643A206F6E0A000A6D61747269783AB6 +:100A5000206F66660A000A6D61747269783A206FC9 +:100A60006E0A000A64656275673A206F6E0A000AB2 +:100A700064656275673A206F66660A000A0A626FEB +:100A80006F746C6F616465722E2E2E2000433E20C1 +:100A9000006565636F6E6669673A0A0011241FBEC0 +:100AA000CFEFD4E0DEBFCDBF04B603FE27C08091F8 +:100AB000110390911203A0911303B0911403873096 +:100AC000904BA740B04BD1F4109211031092120337 +:100AD000109213031092140314BE84B7877F84BF4F +:100AE0000FB6F894A89580916000886180936000AB +:100AF000109260000FBEE0E0F8E3099511E0A0E07D +:100B0000B1E0E4E5F0E502C005900D92A833B1072D +:100B1000D9F723E0A8E3B1E001C01D92A131B207EB +:100B2000E1F70E944D090C9428280C940000FF93D3 +:100B3000EF93E0913801F0913901309709F0099570 +:100B4000EF91FF910895FC018591803011F0EFDF66 +:100B5000FBCF0895FF27E0E230E247FF0CC041954C +:100B600097FF09C0EDE26095709580959095611DA5 +:100B7000711D811D911D27FF02C0219530E350E2B8 +:100B8000AA27660F771F881F991FAA1FA41710F0A6 +:100B9000A41B63955A95A9F7AA3008F0A95FA05D38 +:100BA000AF93F395611571058105910541F7ED321C +:100BB00011F4EF93F395F21718F43F93F395FBCFED +:100BC0008F91B5DFFA95E1F70895E991F991859153 +:100BD000803021F0853219F0AADFF9CF089520E0A6 +:100BE000E89455915532C1F3503311F468945591FE +:100BF0005A3348F4505390F3220F022E220F220F43 +:100C0000200D250FF4CF0EF421958991999153363B +:100C100019F3533729F1533559F1BC018827992726 +:100C2000E8945C3621F489919991689455915436F1 +:100C300039F446EF7EF077FF0DC08FEF9FEF0AC0CB +:100C400055374AE039F0583540E121F0523642E05C +:100C500009F00895FF93EF937DDFEF91FF91B7CFF8 +:100C6000FF93EF93FC0181918030B9F360DFFBCFFC +:100C7000FF93EF9368DFF1CFDF93CF93CDB7DEB76C +:100C80002596A3DFCF91DF9108958AB180788AB944 +:100C90008BB180788BB93A98429808950E944506A6 +:100CA00084B114B885B18FEF85B9E2E4F1E0AAE32D +:100CB000B1E011921D9221E0EA34F207D1F7809160 +:100CC000F20282608093F2023D9A459A8FEF99E694 +:100CD00028E1815090402040E1F700C000003D989D +:100CE00045980895CF92DF92EF92FF920F931F9352 +:100CF000CF93DF930AE311E0E801D12C85E0C82E01 +:100D000098EFE92E90E0F92E8D2D90E0FC013197BF +:100D1000E730F10520F4E65CFF4F0C94DD27509A94 +:100D2000589814C0519A599811C0529A5A980EC0A6 +:100D3000539A5B980BC0549A5C9808C0559A5D987A +:100D400005C0569A5E9802C03A9A429880EA8A95FF +:100D5000F1F783B180959881981739F18883809154 +:100D60000001882301F18091F20280FF04C08DEF21 +:100D700090E00E94A3058091F20280FF0CC0809158 +:100D800000011F928F93FF92EF920E943C060F90FA +:100D90000F900F900F908091F20280FF04C086EFB9 +:100DA00090E00E94A305C09200010E944506D394E2 +:100DB000219698E0D912A8CF809100018823B1F044 +:100DC000815080930001882339F0AFE9BFE011978B +:100DD000F1F700C000000AC0E2E4F1E0D8018D9113 +:100DE0008D018193B1E002341B07C1F781E0DF91EF +:100DF000CF911F910F91FF90EF90DF90CF900895CA +:100E0000E82FF0E0EE5BFE4F8081089581FF03C084 +:100E10003D9A459A08953D984598089580915602C7 +:100E20000895CF93DF9300D01F92CDB7DEB79C011A +:100E300080910703843019F593E099833B832A83DB +:100E40009093E9008FEF9091E800815095FD06C0E6 +:100E500095ED9A95F1F700008111F5CF8091E800AA +:100E600085FF0DC040E050E063E070E0CE010196E8 +:100E70000E94760A8091E8008E778093E8000F90B8 +:100E80000F900F90DF91CF910895CF93DF9300D013 +:100E90001F92CDB7DEB720910703243031F522E051 +:100EA0002983805891099B838A8383E08093E9009A +:100EB0008FEF9091E800815095FD06C095ED9A95D1 +:100EC000F1F700008111F5CF8091E80085FF0DC09A +:100ED00040E050E063E070E0CE0101960E94760AA7 +:100EE0008091E8008E778093E8000F900F900F902C +:100EF000DF91CF910895209107032430F1F422E08F +:100F00002093E9002FEF3091E800215035FD06C015 +:100F100035ED3A95F1F700002111F5CF2091E80069 +:100F200025FF0BC040E050E065E070E00E94760ACB +:100F30008091E8008E778093E8000895CF93DF9347 +:100F400020910703243049F521E02093E90021E8AE +:100F5000215059F03091E80035FD07C0EFE3F1E092 +:100F60003197F1F700C00000F3CF2091E80025FF92 +:100F700014C0EC0140E050E068E070E00E94760AA6 +:100F80008091E8008E778093E80088E0FE01AEE46F +:100F9000B2E001900D928A95E1F7DF91CF9108952B +:100FA000CF93C0914C01C1110BC00E94311C643C15 +:100FB00079408105910520F081E080934C01C1E0EA +:100FC0008C2FCF910895CF93C82F0E94D0078823EC +:100FD00009F448C00FB607FE45C08091070384306E +:100FE00009F040C08091E9008F702091EC00922FB1 +:100FF000917020FD90E8892B94E09093E900909106 +:10100000EB0090FF2CC09091EE0097FF28C09091CC +:10101000040120910301291709F447C02091E80039 +:1010200025FF1DC0E0910101F0910201E90FF11DC2 +:1010300030819F5F209105019223909304013093AA +:10104000F1009091E80095FDE2CF9091E80090FFCB +:10105000DECF9091E8009E779093E800D8CF8F7014 +:101060008093E9008091030190E0AC014F5F5F4FF6 +:1010700030910501232F30E02423352340910401D2 +:1010800050E024173507D1F0209101013091020181 +:10109000F901E80FF91FC083809103018F5F9091E0 +:1010A000050189238093030109C09091E80095FF11 +:1010B000D6CFC093F1008F708093E90080E0CF918C +:1010C00008950895089542E061EC81E00E947A0B52 +:1010D00042E061EC82E00E947A0B42E061EC83E046 +:1010E0000E947A0B42E261EC84E00C947A0B8091CE +:1010F0000903833009F453C030F4813071F0823039 +:1011000009F48CC008958A3009F478C08B3009F452 +:101110005EC0893009F09AC020C080910803813AEE +:1011200009F094C08091E800877F8093E800809167 +:101130000C0390910D03892B21F468E08EE492E07A +:1011400003C060E080E090E070E00E94C10A8091FE +:10115000E8008B778093E80008958091080381323E +:1011600009F074C080910C0390910D03892B09F054 +:101170006DC08091E800877F8093E8008091E8004F +:1011800082FD05C0809107038111F8CF5FC0809177 +:10119000F100809356028091E8008B7753C08091D4 +:1011A0000803813A09F052C080910C0390910D031D +:1011B000892B09F04BC08091E800877F8093E8007D +:1011C0008091E80080FFFCCF8091100136C08091B3 +:1011D00008038132D9F580910C0390910D03892B7E +:1011E000A9F58091E800877F8093E8000E94AF0B0B +:1011F00080910A03809310010C94D4148091080309 +:10120000813221F58091E800877F8093E8000E9479 +:10121000AF0B80910B0380935702089580910803D0 +:10122000813AA1F48091E800877F8093E800809163 +:10123000E80080FFFCCF809157028093F1008091FD +:10124000E8008E778093E8000C94AF0B08958091AE +:10125000560280934D01109256020E9419100C9470 +:10126000D4140C9427090E94B21B80910503882393 +:1012700029F00E94DB1B81110C94600A08950E94E2 +:10128000EF1B80914D018093560208950C943F0905 +:1012900008950C9448090C944809CF9384B7877F2C +:1012A00084BF0FB6F894A895809160008861809300 +:1012B0006000109260000FBE90E080E80FB6F894D6 +:1012C00080936100909361000FBE83EE97E00E94CF +:1012D000841B86E091E00E94AD0E8BE291E00E94BB +:1012E000A3050E944B090E946C0F0E94010C0E94F2 +:1012F000540C8091E20084608093E20078940E9414 +:101300006E0F80910703843019F00E944809F9CFCD +:1013100089E191E00E94A3050E94490987E091E0DC +:101320000E94A305C4E080910703853019F40E9450 +:101330003309F9CF0E94740F2091E4003091E50049 +:1013400080914A0190914B012817390761F38091F0 +:10135000E4009091E50090934B0180934A010E9434 +:10136000D007882301F3809107038430E1F6809150 +:10137000E9008F702091EC00922F917020FD90E891 +:10138000892BC093E9009091EB0090FF3FC09091B2 +:10139000EE0097FF3BC090910401209103012917B3 +:1013A00009F12091E80025FF1DC0E0910101F091B5 +:1013B0000201E90FF11D30819F5F20910501922309 +:1013C000909304013093F1009091E80095FDE3CFF4 +:1013D0009091E80090FFDFCF9091E8009E77909386 +:1013E000E800D9CF9091F200992381F09091E80024 +:1013F00090FF0CC09091E80095FF03C01092F1009F +:10140000F9CF9091E8009E779093E8008F708093D9 +:10141000E90089CF292F332723303105C9F060F443 +:101420002130310581F02230310509F041C084E7D7 +:1014300090E02FE531E040C021323105E1F0223269 +:10144000310531F135C082E190E023ED31E034C067 +:1014500099278130910549F028F0029749F5E1E498 +:10146000F1E005C0EBE5F1E002C0E1E5F1E08491D7 +:1014700090E09F0121C06430D8F4E62FF0E0EE0F39 +:10148000FF1FEB5DFE4F2081318189E090E014C0A9 +:10149000643070F470E0FB01EE0FFF1FE35EFE4F5F +:1014A00020813181FB01E75EFE4F808190E004C026 +:1014B00080E090E020E030E0FA013183208308955D +:1014C00084E089BD86E089BD09B400FEFDCF80912E +:1014D000D8008F7D8093D8008091E0008260809357 +:1014E000E0008091E00081FDFCCF0895CF92DF9273 +:1014F000EF92FF920F931F93CF93DF93EC018B0139 +:101500007A010E94CE0B811133C0E114F10439F04D +:10151000F70180819181081B190BC80FD91FC12CBD +:10152000D12C0115110519F18091E80085FD16C037 +:101530008091E8008E778093E800E114F10449F08F +:10154000F70180819181C80ED91ED182C08285E0C9 +:101550000FC00E94CE0B882321F30AC0899180938B +:10156000F10001501109FFEFCF1ADF0ADACF80E056 +:10157000DF91CF911F910F91FF90EF90DF90CF906F +:10158000089520910E0330910F032617370748F076 +:101590006115710539F42091E8002E772093E80059 +:1015A00001C0B901FC0120E06115710561F1809174 +:1015B00007038823D9F18530D9F18091E80083FDB4 +:1015C00039C08091E80082FD2BC08091E80080FF47 +:1015D000EBCF8091F20090E06115710551F08830F9 +:1015E000910538F421912093F10061507109019621 +:1015F000F3CF21E0089709F020E08091E8008E7792 +:101600008093E800D1CF2111D2CF0AC08091070387 +:10161000882361F0853061F08091E80083FD0AC085 +:101620008091E80082FFF2CF80E0089582E0089583 +:1016300083E0089581E0089520910E0330910F0317 +:101640002617370748F06115710539F42091E80035 +:101650002E772093E80001C0B901FC0120E061155C +:10166000710579F180910703882309F43DC0853025 +:1016700009F43CC08091E80083FD3AC08091E80005 +:1016800082FD2CC08091E80080FFE9CF8091F200BC +:1016900090E06115710559F08830910540F424916E +:1016A0002093F1003196615071090196F2CF21E04B +:1016B000089709F020E08091E8008E778093E80099 +:1016C000CECF2111CFCF0AC080910703882361F0CC +:1016D000853061F08091E80083FD0AC08091E800C8 +:1016E00082FFF2CF80E0089582E0089583E00895BC +:1016F00081E00895982F953068F59093E900981748 +:1017000039F07091EC002091ED005091F00003C091 +:10171000242F762F50E021FD02C09F5FECCF309147 +:10172000EB003E7F3093EB003091ED003D7F309336 +:10173000ED003091EB0031603093EB007093EC00E2 +:101740002093ED005093F0002091EE0027FDE5CFAF +:1017500080E008958F708093E90081E00895809182 +:10176000080387FF11C08091E80082FD05C08091C9 +:1017700007038111F8CF11C08091E8008B770BC06F +:1017800080910703882349F08091E80080FFF8CF1B +:101790008091E8008E778093E80008952091E4001E +:1017A0003091E50095E64091EC00842F817040FF78 +:1017B00023C08091E80080FD1DC08091070388232D +:1017C00099F0853099F08091EB0085FD11C0409132 +:1017D000E4005091E5002417350729F3915011F0EA +:1017E0009A01E1CF84E0089582E0089583E00895AE +:1017F00081E0089580E008954091E80042FFDDCF48 +:1018000008950E945E0C0E94610CE0EEF0E0808181 +:1018100081608083E8EDF0E080818F77808319BC60 +:10182000E3E6F0E0808181608083109206030895F2 +:101830000E945E0C0E94610C8091D8008F7780938B +:10184000D8008091D80080688093D8008091D8001B +:101850008F7D8093D80084E089BD86E089BD09B47E +:1018600000FEFDCF109207031092030310920503B0 +:101870001092040342E060E080E00E947A0B8091C5 +:10188000E1008E7F8093E1008091E200816080938F +:10189000E2008091E20088608093E2008091E000A5 +:1018A0008E7F8093E0000895E3E6F0E080818E7FF4 +:1018B000808381E0809306030C94180C1092E20060 +:1018C00008951092E10008951F920F920FB60F92A3 +:1018D00011242F933F934F935F936F937F938F9335 +:1018E0009F93AF93BF93EF93FF938091E10082FFAB +:1018F0000BC08091E20082FF07C08091E1008B7FE6 +:101900008093E1000E9462088091E10080FF19C08D +:101910008091E20080FF15C08091E2008E7F80936D +:10192000E2008091E20080618093E2008091D80023 +:1019300080628093D80019BC85E0809307030E94E1 +:1019400031098091E10084FF30C08091E20084FF82 +:101950002CC084E089BD86E089BD09B400FEFDCFBE +:101960008091D8008F7D8093D8008091E1008F7E98 +:101970008093E1008091E2008F7E8093E20080916D +:10198000E20081608093E20080910303882311F0DC +:1019900084E007C08091E30087FD02C081E001C0C0 +:1019A00083E0809307030E9446098091E10083FF52 +:1019B00029C08091E20083FF25C08091E100877FEC +:1019C0008093E10082E080930703109203038091EB +:1019D000E1008E7F8093E1008091E2008E7F809312 +:1019E000E2008091E20080618093E20042E060E0EA +:1019F00080E00E947A0B8091F00088608093F00074 +:101A00000E946108FF91EF91BF91AF919F918F91DB +:101A10007F916F915F914F913F912F910F900FBEEA +:101A20000F901F9018951F920F920FB60F921124CE +:101A30002F933F934F935F936F937F938F939F93D6 +:101A4000AF93BF93CF93DF93EF93FF93C091E900E0 +:101A5000CF708091EC00D82FD17080FDD0E810922B +:101A6000E9008091F000877F8093F00078940E94D5 +:101A7000570D1092E9008091F00088608093F0008B +:101A8000CD2BCF70C093E900FF91EF91DF91CF9103 +:101A9000BF91AF919F918F917F916F915F914F9186 +:101AA0003F912F910F900FBE0F901F9018951F938D +:101AB000CF93DF93CDB7DEB7AA970FB6F894DEBF0A +:101AC0000FBECDBFE8E0F3E08091F100819323E009 +:101AD000E031F207C9F70E9477088091E80083FFA0 +:101AE00024C18091080390910903492F50E04A30A6 +:101AF000510508F01AC1FA01EF5BFF4F0C94DD2786 +:101B0000803881F0823809F010C180910C038F7009 +:101B10008093E9008091EB0085FB882780F9109283 +:101B2000E90006C080910403909105039111826041 +:101B30009091E800977F9093E8008093F1001092D5 +:101B4000F100C8C0282F2D7F09F0EFC0882319F0BD +:101B5000823061F0EAC080910A03813009F0E5C06B +:101B6000933009F080E0809305032BC080910A0335 +:101B7000811127C080910C038F7009F4D6C0809327 +:101B8000E9002091EB0020FF1CC0933021F48091EC +:101B9000EB00806214C09091EB0090619093EB0099 +:101BA00021E030E0A90102C0440F551F8A95E2F7F9 +:101BB0004093EA001092EA008091EB0088608093E5 +:101BC000EB001092E9008091E800877F86C08111C8 +:101BD000ACC010910A031F778091E3008078812BBD +:101BE0008093E3008091E800877F8093E8000E9463 +:101BF000AF0B8091E80080FFFCCF8091E30080680C +:101C00008093E300111102C082E001C083E0809361 +:101C100007038BC08058823008F087C080910A0388 +:101C200090910B038C3D53E0950779F583E08A830F +:101C30008AE289834FB7F894DE01139620E03EE0F4 +:101C400051E2E32FF0E050935700E49120FF03C0EE +:101C5000E295EF703F5FEF708E2F90E0EA3010F06A +:101C6000C79601C0C0968D939D932F5F243149F78D +:101C70004FBF8091E800877F8093E8006AE270E0C0 +:101C8000CE0101960E94C10A14C0AE014F5F5F4FA2 +:101C900060910C030E940A0ABC01892B09F445C01B +:101CA0009091E800977F9093E80089819A810E9443 +:101CB0001C0B8091E8008B778093E80036C0803859 +:101CC000A1F58091E800877F8093E800809103036D +:101CD0008093F1008091E8008E778093E8000E9465 +:101CE000AF0B23C0811121C080910A0390910B0397 +:101CF00099270297D4F48091E800877F8093E800C9 +:101D000080910A03809303030E94AF0B8091030329 +:101D1000811106C08091E30087FD02C081E001C00F +:101D200084E0809307030E9463088091E80083FFAA +:101D30000AC08091E800877F8093E8008091EB00E3 +:101D400080628093EB00AA960FB6F894DEBF0FBEB8 +:101D5000CDBFDF91CF911F91089590935D02809345 +:101D60005C020895E0915C02F0915D02309721F0F1 +:101D70000190F081E02D099480E00895EF92FF92A8 +:101D80000F931F93CF93DF93E0915C02F0915D027C +:101D90003097B1F18C010280F381E02D099580919B +:101DA000F20282FF2DC080FF04C080EF92E00E940B +:101DB000A305E80118E08AEEE82E82E0F82E809173 +:101DC000F20280FF0BC088811F928F93FF92EF92E7 +:101DD0000E943C060F900F900F900F90115021968B +:101DE0001111EDCF8091F20280FF0AC088EE92E0DF +:101DF000DF91CF911F910F91FF90EF900C94A3056D +:101E0000DF91CF911F910F91FF90EF900895E09196 +:101E10005C02F0915D02309721F00480F581E02DA5 +:101E200009940895CF93DF9320915A0230915B0279 +:101E30002817390709F190935B0280935A02E091C9 +:101E40005C02F0915D023097B9F0EC010680F781F9 +:101E5000E02D09958091F20282FF0EC080FF0CC038 +:101E6000DF93CF938AED92E09F938F930E943C067D +:101E70000F900F900F900F90DF91CF910895CF9317 +:101E8000DF9320915802309159022817390709F140 +:101E90009093590280935802E0915C02F0915D02A8 +:101EA0003097B9F0EC010084F185E02D099580911F +:101EB000F20282FF0EC080FF0CC0DF93CF938AEC4A +:101EC00092E09F938F930E943C060F900F900F908B +:101ED0000F90DF91CF9108950C941A100E941C1C52 +:101EE0000E944E060C94431DBF92CF92DF92EF9258 +:101EF000FF920F931F93CF93DF9300D000D01F92D8 +:101F0000CDB7DEB70E9472060FE512E0F12C8F2DDF +:101F10000E940007B82EF801C080C82639F4F39457 +:101F20000F5F1F4FF8E0FF12F2CF30C08091F20236 +:101F300081FD0E941B10D12CEE24E3948C2D8E2168 +:101F4000F9F0D982FA8291E08B2D8E2109F490E08C +:101F50009B830E94251C8160782F9D838C834981FF +:101F60005A816B818D810E94511049815A816B8108 +:101F70007C818D810E949C1BF80180818E2580834D +:101F8000D394EE0CF8E0DF12D9CFC9CF8FEF89835D +:101F90008A831B820E94251C8160782F9D838C83FD +:101FA00049815A816B818D810E9451100E949B1B37 +:101FB0000E94CA200E94B20E90915E02891741F1E0 +:101FC0000E94B20E80935E029091F20292FF0EC0C8 +:101FD00090FF0CC01F928F938BEF92E09F938F9393 +:101FE0000E943C060F900F900F900F9080915E0220 +:101FF0000F900F900F900F900F90DF91CF911F9146 +:102000000F91FF90EF90DF90CF90BF900C94AD1B9D +:102010000F900F900F900F900F90DF91CF911F9125 +:102020000F91FF90EF90DF90CF90BF9008950C94A8 +:10203000060708950895EF92FF920F931F93CF9391 +:10204000DF9384E193E00E94A305C0E0D0E08DE23D +:10205000E82E81E0F82E06E013E08C2F0E940007A6 +:102060000E94891BFF92EF921F928F93DF93CF9371 +:102070001F930F930E943C0621968DB79EB708963A +:102080000FB6F8949EBF0FBE8DBFC830D10529F79B +:10209000DF91CF911F910F91FF90EF9008950895D8 +:1020A0000895CF93DF93CDB7DEB72B970FB6F89493 +:1020B000DEBF0FBECDBF942F4F83252F5887698772 +:1020C0007A878B874A855B85452B31F02F3F31F42A +:1020D00081E09F3F19F403C081E001C080E080FDF2 +:1020E00007C04F81588569857A858B850E949C1B26 +:1020F000DE01119686E0FD0111928A95E9F785E0EF +:10210000FE01379601900D928A95E1F749815A8137 +:102110006B817C818D819E810E94F2172B960FB678 +:10212000F894DEBF0FBECDBFDF91CF910895CF935E +:10213000882309F4A9C0C82F8238A1F40E94B20EE6 +:1021400081FDA2C089E30E94E61A0E945E1B2FEF68 +:1021500081EE94E0215080409040E1F700C0000003 +:1021600089E315C08338C1F40E94B20E80FD8CC093 +:1021700083E50E94E61A0E945E1B2FEF81EE94E039 +:10218000215080409040E1F700C0000083E50E94AC +:10219000031BCF910C945E1B8438A1F40E94B20EF5 +:1021A00082FD72C087E40E94E61A0E945E1B2FEF38 +:1021B00081EE94E0215080409040E1F700C00000A3 +:1021C00087E4E5CF8CEF8C0F813A20F080E58C0F0F +:1021D0008E3248F48C2F0E942A25811155C08C2FF5 +:1021E0000E94E61AD6CF80E28C0F883048F4C77080 +:1021F00081E001C0880FCA95EAF70E94241BC9CF6D +:102200008BE58C0F833078F4C53A29F0C63A31F06B +:1022100083E890E005C081E890E002C082E890E0A9 +:10222000CF910C94120F88E58C0F853168F5C83A70 +:1022300089F0C93A91F0CA3A99F0CB3AA1F0CC3A78 +:10224000A9F0CD3AB1F0CE3AB9F0CF3AC1F080E082 +:1022500090E017C082EE90E014C089EE90E011C0CB +:102260008AEE90E00EC085EB90E00BC086EB90E02C +:1022700008C083EB90E005C084EB90E002C087EBE0 +:1022800090E0CF910C943F0FCF910895882309F4EB +:102290006AC08238A1F40E94B20E81FF64C089E353 +:1022A0000E94E61A0E945E1B2FEF81EE94E02150FF +:1022B00080409040E1F700C0000089E315C08338FA +:1022C000B9F40E94B20E80FF4EC083E50E94E61A68 +:1022D0000E945E1B2FEF81EE94E0215080409040E1 +:1022E000E1F700C0000083E50E94031B0C945E1B15 +:1022F0008438A1F40E94B20E82FF35C087E40E94A8 +:10230000E61A0E945E1B2FEF81EE94E02150804080 +:102310009040E1F700C0000087E4E6CF9CEF980F03 +:10232000913A10F390E5980F9E32F0F290E2980FF8 +:10233000983050F4877091E001C0990F8A95EAF7C0 +:10234000892F0E942A1BD2CF9BE5980F933020F44F +:1023500080E090E00C94120F885A853120F480E0E0 +:1023600090E00C943F0F0895882321F00E94241BD5 +:102370000C945E1B0895882321F00E942A1B0C9464 +:102380005E1B0895CF92DF92EF92FF920F931F93FF +:10239000CF93DF9300D000D01F92CDB7DEB76C0192 +:1023A0000E94B01B8111E0C285E0F601DE011196AA +:1023B00001900D928A95E1F7F601408151812381C8 +:1023C00034812115310531F05F3F31F481E04F3F19 +:1023D00019F403C081E001C080E080FDC5C2F601B0 +:1023E000F280E580E2948FE0E822722F3D832C8317 +:1023F0006F2D8D810E945B1A8C010E945A1A0E94D7 +:102400004A19E12FE295EF708E2F90E0FC01E55B19 +:10241000FF4F0C94DD27812F807F1F70882311F0E0 +:102420001295107FFF2049F0112309F452C2812F29 +:102430000E94371B0E945E1B4CC2802F0E944611D7 +:10244000112309F491C2812F0E943D1B0F900F9020 +:102450000F900F900F90DF91CF911F910F91FF90F0 +:10246000EF90DF90CF900C945E1B812F807F1F70C8 +:10247000803211F01295107F002319F0013009F11C +:102480002BC0FF20A9F0EE2059F1F1E0812FEF12CF +:1024900028C00F900F900F900F900F90DF91CF9169 +:1024A0001F910F91FF90EF90DF90CF900C94471BFE +:1024B000EE2021F081E0E81609F456C20E944A1B82 +:1024C0002DC0FF20E9F0E5E0EE1508F44DC20E94B2 +:1024D000211B812329F022C0FF20F1F0E11015C05B +:1024E000812F0F900F900F900F900F90DF91CF9151 +:1024F0001F910F91FF90EF90DF90CF900C94B4114B +:10250000F4E0FE1508F430C209C0F601858180FFB1 +:10251000E0C18F708583E4CFE110EEC1812F61C1EE +:10252000812F86958695837019F08130B9F01CC291 +:10253000FF2019F0C801937002C080E090E00F9076 +:102540000F900F900F900F90DF91CF911F910F91EF +:10255000FF90EF90DF90CF900C94120FFF2019F0B6 +:10256000C801937002C080E090E00F900F900F9030 +:102570000F900F90DF91CF911F910F91FF90EF90EF +:10258000DF90CF900C943F0F802FFF2019F00E9416 +:10259000501F02C00E94B81F0F900F900F900F9015 +:1025A0000F90DF91CF911F910F91FF90EF90DF90EF +:1025B000CF900C943D20812F837009F070C0F110F2 +:1025C000D3C1202F229526952770220F220F602F2E +:1025D0006F70862F90E0A0E0B0E06C017D01022ECC +:1025E00004C0CC0CDD1CEE1CFF1C0A94D2F704FFC7 +:1025F00012C08FE090E0A0E0B0E004C0880F991F07 +:10260000AA1FBB1F2A95D2F7BC01CD01609570951A +:102610008095909503C060E070E0CB01169516950B +:1026200013701230B1F040F56C297D298E299F2955 +:10263000113031F10F900F900F900F900F90DF91AC +:10264000CF911F910F91FF90EF90DF90CF900C945E +:102650006F196C297D298E299F290F900F900F905B +:102660000F900F90DF91CF911F910F91FF90EF90FE +:10267000DF90CF900C9489190E946F19C701B601A1 +:102680000F900F900F900F900F90DF91CF911F91AF +:102690000F91FF90EF90DF90CF900C945519FF2091 +:1026A00019F0812F817001C08695882309F45CC1DF +:1026B000202F229526952770220F220F602F6F70F2 +:1026C000862F90E0A0E0B0E06C017D01022E04C0F6 +:1026D000CC0CDD1CEE1CFF1C0A94D2F704FF12C0C8 +:1026E0008FE090E0A0E0B0E004C0880F991FAA1F1F +:1026F000BB1F2A95D2F7BC01CD01609570958095DE +:10270000909503C060E070E0CB01169516951370AC +:102710001230B1F040F56C297D298E299F291130A6 +:1027200031F10F900F900F900F900F90DF91CF919C +:102730001F910F91FF90EF90DF90CF900C94361A7D +:102740006C297D298E299F290F900F900F900F9053 +:102750000F90DF91CF911F910F91FF90EF90DF903D +:10276000CF900C94481A0E94361AC701B6010F90F8 +:102770000F900F900F900F90DF91CF911F910F91BD +:10278000FF90EF90DF90CF900C94241A003FC1F19E +:1027900028F480E4800F803250F096C0023F09F4A4 +:1027A0005EC008F449C0033F09F46CC08DC0F02F2F +:1027B000F071EF2E812F8F71FF2051F00E94BD1913 +:1027C000802FEE2019F08295807F8BCE8F7089CE7E +:1027D0000E94DE19802FEE2019F08295807F01C0C3 +:1027E0008F700F900F900F900F900F90DF91CF91FF +:1027F0001F910F91FF90EF90DF90CF900C94BB1141 +:10280000FF20A9F084E08E1508F4AEC0812F8F71EF +:102810000F900F900F900F900F90DF91CF911F911D +:102820000F91FF90EF90DF90CF900C94031AE5E0AA +:10283000EE1508F499C0EACFFF2099F0812F8F712F +:102840000F900F900F900F900F90DF91CF911F91ED +:102850000F91FF90EF90DF90CF900C94BD19FF2067 +:1028600069F3812F8F710F900F900F900F900F9041 +:10287000DF91CF911F910F91FF90EF90DF90CF905C +:102880000C94DE19FF2089F0812F8F710F900F902B +:102890000F900F900F90DF91CF911F910F91FF90AC +:1028A000EF90DF90CF900C94A8190F900F900F909D +:1028B0000F900F90DF91CF911F910F91FF90EF90AC +:1028C000DF90CF900C94A319FF2099F0EE2009F42B +:1028D000B5CF802F0F900F900F900F900F90DF913A +:1028E000CF911F910F91FF90EF90DF90CF900C94BC +:1028F0009710EE2009F4B5CF802F0F900F900F9016 +:102900000F900F90DF91CF911F910F91FF90EF905B +:10291000DF90CF900C944611412F4F70602FC6016D +:102920000E94EE1C0F900F900F900F900F90DF9170 +:10293000CF911F910F91FF90EF90DF90CF900C946B +:10294000A518412F4F70602FC6010F900F900F9068 +:102950000F900F90DF91CF911F910F91FF90EF900B +:10296000DF90CF900C94F11C0F900F900F900F9070 +:102970000F90DF91CF911F910F91FF90EF90DF901B +:10298000CF9008950E94441B0E94131B0E945E1B5F +:102990000E9470210E943D2080E090E00E94120F72 +:1029A00080E090E00C943F0F0E94341B0C94C21402 +:1029B0001F93CF93DF9300D000D01F92CDB7DEB727 +:1029C000942F4983252F5A836B837C838D834C817D +:1029D0005D81452B31F02F3F31F481E09F3F19F4A9 +:1029E00003C081E001C080E0182F117080FD31C06C +:1029F00049815A816B817C818D810E945B1A292FCC +:102A000022952F702C3030F42A30A0F4225022303E +:102A100030F022C02C30C9F02F30B9F01DC0853AFB +:102A200028F48430C0F4823028F415C090E2980F66 +:102A3000983088F0883E30F4803E68F48450813AC3 +:102A400058F409C0803F41F406C093FB112710F9E8 +:102A500003C010E001C011E0812F0F900F900F9084 +:102A60000F900F90DF91CF911F910895CF93DF9337 +:102A700000D000D01F92CDB7DEB70F900F900F900F +:102A80000F900F90DF91CF910895CF93DF9300D0F7 +:102A900000D000D0CDB7DEB726960FB6F894DEBFD3 +:102AA0000FBECDBFDF91CF910895CF93DF93C0913B +:102AB000670280916802C817A1F0D0E0CE0166E0FD +:102AC00070E00E94B827FC01E759FD4F4081518119 +:102AD00062817381848195810E9445152196C7701A +:102AE000E8CFDF91CF9108954091990250919A02D9 +:102AF00060919B0270919C0280919D0290919E0238 +:102B00000C9445151F93CF93DF9380919E0282957D +:102B10008F7009F066C080919B02882309F461C020 +:102B20002091670210916802C0919902D0919A0297 +:102B3000E0919C02F0919D0281E0CF3F09F080E09E +:102B4000482F211709F44DC0309721F0DF3F21F0C5 +:102B500080E003C081E001C0842F30E080FD3DC0F3 +:102B6000C90166E070E00E94B827DC01A759BD4F9B +:102B700011968C9111978D1330C08C918C132DC0B0 +:102B800012968C911297811128C013968D919C9169 +:102B900014978E179F0708F401978E1B9F0B883C94 +:102BA0009105D8F480919E028F70806180939E027F +:102BB000C90166E070E00E94B827FC01E259FD4FB0 +:102BC00090819F709061908389E992E00E94C21188 +:102BD000DF91CF911F910C9455152F5F3F4F2770B8 +:102BE000B0CFDF91CF911F910895AF92BF92CF9256 +:102BF000DF92EF92FF920F931F93CF93DF93CDB7A6 +:102C0000DEB761970FB6F894DEBF0FBECDBF7C0173 +:102C100085E0F701DE011D9601900D928A95E1F79E +:102C2000D7014C9111962C9111971296DC90129726 +:102C300013960D911C9114975091990260919A02EC +:102C400080919C0290919D02009731F06F3F31F48A +:102C500031E05F3F19F403C031E001C030E0B32F31 +:102C6000B170BB2E30FD76C1A0909B02AA2009F462 +:102C7000D2C030919E020817190728F0F801E81B0E +:102C8000F90BCF0104C080959095800F911FCC2443 +:102C9000C394883C910588F0C12C307F09F0A6C010 +:102CA000702F198B088B522F6D2D89890E94361534 +:102CB00089E992E00E94C211C3C0832F807F09F08E +:102CC00059C0261315C0451313C0CD2CD11010C008 +:102CD0003F70306130939E020E94741589E992E042 +:102CE0000E94C21180919E02D70115968C9368C1F3 +:102CF0000115110531F02F3F31F481E04F3F19F4F8 +:102D000003C081E001C080E080FD03C081E08D252B +:102D100002C080E090E0B82FB170CB2E80FF1FC0C2 +:102D2000E091670230916802E31709F425C1F0E0F1 +:102D3000CF0166E070E00E94B827DC01A759BD4FC3 +:102D400011968C911197281307C08C91481304C0D9 +:102D500012968C91D81203C03196E770E5CFCD2C36 +:102D6000DD2009F42DC180919E02816080939E0236 +:102D7000C12C26C1261308C0451306C0D11004C0BB +:102D800080919E02D701B9C04D872E87DF86702FB4 +:102D9000198B088B522F6D2D89890E94D814882396 +:102DA000A1F1DD2091F120919E02822F82958F70FA +:102DB00090E0029774F08091990290919A0298871E +:102DC0008F8319861B870A872C87CE0107960E945E +:102DD000C21186E0F701A9E9B2E001900D928A954F +:102DE000E1F70E9482150E94741512C0261791F116 +:102DF0004D872E87DF86702F198B088B522F6D2DF4 +:102E000089890E94D814811139C0C7010E94C2115A +:102E1000CC24C394D5C00817190708F447C0F8019B +:102E2000E81BF90BCF01883C910508F444C0C12C84 +:102E3000702F198B088B522F6D2D89890E943615A2 +:102E4000E9E9F2E086E0DF011D928A95E9F70E9448 +:102E50007415B6C04513CCCFD110CACF80919E0255 +:102E6000F7018583C7010E94C21186E0E9E9F2E01B +:102E7000DF011D928A95E9F7CA2CA2C0DD2029F254 +:102E800020919E02822F82958F7090E002970CF421 +:102E9000A0CF8091990290919A029A8389831B8294 +:102EA0001D830C832E83CE01019691CF8095909542 +:102EB000800F911FB8CFCD2CDD2009F4A6CF2613AB +:102EC00033C0451331C020919E0220FD24C0822FC3 +:102ED00082958F70482F50E041155105E1F0D701E0 +:102EE00015962C9315974F30510549F08F5F982F09 +:102EF0009295907F822F8F70892B15968C93C701A6 +:102F00000E94C21186E0F701A9E9B2E001900D929A +:102F10008A95E1F79CCF86E0F701A9E9B2E001903C +:102F20000D928A95E1F74CC04D872E87DF86702F72 +:102F3000198B088B522F6D2D89890E94D81481110D +:102F400048CF80919E02816080939E02C7010E94BB +:102F5000C21136C0DD2009F458CF4D872E87DF8699 +:102F6000702F198B088B522F6D2D89890E94D814D0 +:102F7000882309F44ACF2DCF702F198B088B522F3D +:102F80006D2D89890E945B1A292F22952F7022307E +:102F900028F49F7039F0811105C00BC0243028F44B +:102FA0009F7049F4805E883020F0C7010E94C211F2 +:102FB000BC2CCB2C05C0F7019581907F99F7F9CFF8 +:102FC0008C2D61960FB6F894DEBF0FBECDBFDF919A +:102FD000CF911F910F91FF90EF90DF90CF90BF9016 +:102FE000AF900895CF93DF93CDB7DEB72C970FB690 +:102FF000F894DEBF0FBECDBF4F83588769877A87AD +:103000008B879C87CE0107960E94F5158823D1F007 +:103010009F8188852A853B85232B31F08F3F31F4B2 +:1030200081E09F3F19F403C081E001C080E080FD92 +:103030006FC04F81588569857A858B859C850E94F4 +:10304000451566C086E0FE013796DE0111960190B7 +:103050000D928A95E1F7FF81E8856A857B85611588 +:10306000710531F0EF3F31F481E0FF3F19F403C007 +:1030700081E001C080E080FD4BC08091680290E05B +:103080009C012F5F3F4F277033274091670250E02C +:103090002417350709F443C0F983EA837D836C83E1 +:1030A00066E070E00E94B827DC01A759BD4F96E0AA +:1030B000FE01319601900D929A95E1F720936802F6 +:1030C0000E94551525C090E066E070E00E94B82788 +:1030D00087599D4F0E94F515882371F180916702F1 +:1030E00090E066E070E00E94B827FC01E759FD4FD0 +:1030F0004081518162817381848195810E9445154F +:103100008091670290E0019687709927809367020B +:1031100080916702909168028913D5CF0DC00E94FB +:10312000D4141092680210926702E9E9F2E086E096 +:10313000DF011D928A95E9F72C960FB6F894DEBF51 +:103140000FBECDBFDF91CF910895DF92EF92FF9236 +:103150000F931F93CF93DF93FC01892B09F488C051 +:10316000E12CF12CDD24D394EF0121968491853755 +:1031700009F460C058F4843708F04EC0843008F079 +:1031800068C08130D1F0823071F172C0883709F4A3 +:103190005BC050F4863709F453C0873709F068C024 +:1031A0008E2D0E94311B52C09CE7980F903708F07B +:1031B0005FC08F770E9446114EC08F010E5F1F4F78 +:1031C000FE01849190E2980F983050F48770FD2DA5 +:1031D00001C0FF0F8A95EAF78F2F0E94371B15C099 +:1031E0000E94971014C08F010E5F1F4FFE01849143 +:1031F00090E2980F983068F48770FD2D01C0FF0FA2 +:103200008A95EAF78F2F0E943D1B0E945E1BE80102 +:1032100022C00E944611FBCFCF010296FE01C4914D +:10322000CC2361F0EFE9FFE03197F1F700C0000037 +:10323000C150F6CFCF010296FE01F490EC010BC015 +:103240000E94211BE82E07C00E94341B0E945E1BB7 +:1032500002C00E9497108F2D882341F0EFE9FFE014 +:103260003197F1F700C000008150F6CFFE017CCF0E +:10327000DF91CF911F910F91FF90EF90DF90089514 +:103280006093DF027093E0028093E1029093E20288 +:103290000C94AC1B08956093E3027093E402809356 +:1032A000E5029093E6020C94AB1B0F931F930091E1 +:1032B000E3021091E4022091E5023091E602602BD6 +:1032C000712B822B932B6093E3027093E402809323 +:1032D000E5029093E6021F910F910C94AB1B0F93A4 +:1032E0001F930091E3021091E4022091E5023091D6 +:1032F000E60260237123822393236093E302709399 +:10330000E4028093E5029093E6021F910F910C94E2 +:10331000AB1B0F931F930091E3021091E4022091E5 +:10332000E5023091E6026027712782279327609398 +:10333000E3027093E4028093E5029093E6021F910A +:103340000F910C94AB1B60E070E0CB010C94401922 +:103350000F931F9341E050E060E070E08A019B0111 +:1033600004C0000F111F221F331F8A95D2F7C90115 +:10337000B8011F910F910C9440190F931F9341E0D6 +:1033800050E060E070E004C0440F551F661F771FD7 +:103390008A95D2F78091DF029091E002A091E1023C +:1033A000B091E2028A019B01082B192B2A2B3B2B9F +:1033B000C901B8011F910F910C9440190F931F93ED +:1033C00041E050E060E070E004C0440F551F661F0C +:1033D000771F8A95D2F740955095609570958091AA +:1033E000DF029091E002A091E102B091E2028A0135 +:1033F0009B01082319232A233B23C901B8011F91EC +:103400000F910C9440190F931F9341E050E060E03E +:1034100070E004C0440F551F661F771F8A95D2F7CE +:103420008091DF029091E002A091E102B091E2026E +:103430008A019B01082719272A273B27C901B801C0 +:103440001F910F910C9440190F931F930091DF026D +:103450001091E0022091E1023091E202602B712B89 +:10346000822B932B1F910F910C9440190F931F9354 +:103470000091DF021091E0022091E1023091E2021E +:1034800060237123822393231F910F910C94401981 +:103490000F931F930091DF021091E0022091E1024F +:1034A0003091E20260277127822793271F910F91A5 +:1034B0000C94401908958F929F92AF92BF92DF9221 +:1034C000EF92FF920F931F93CF93DF9300D000D022 +:1034D0001F92CDB7DEB76B837C838D838A018C818D +:1034E0009D81892B31F01F3F31F481E04F3F19F46A +:1034F00003C081E001C080E080FF03C080E090E075 +:1035000054C08B81882309F43DC08090DF029090E5 +:10351000E002A090E102B090E2028091E30290917B +:10352000E402A091E502B091E602882A992AAA2A2B +:10353000BB2A2FE1E22EF12CD501C4010E2C04C0D0 +:10354000B695A795979587950A94D2F780FD06C002 +:1035500081E0E81AF10880F7D12C07C0DE2CB80111 +:103560008E2D0E94BF1C019799F3E12FF0E093E0AC +:10357000EE0FFF1F9A95E1F7E156FD4FE00FF11DA9 +:10358000D0820CC0E12FF0E083E0EE0FFF1F8A95A0 +:10359000E1F7E156FD4FE00FF11DD08009831A835A +:1035A00069817A818D2D0E94BF1C0F900F900F9022 +:1035B0000F900F90DF91CF911F910F91FF90EF909F +:1035C000DF90BF90AF909F908F9008952091110150 +:1035D00030911201F90132969FEF40E05191851729 +:1035E00089F09F3F19F4511101C0942F4F5F46306D +:1035F000A9F79F3F39F0F901E90FF11D97FDFA9501 +:10360000828308950895E0911101F09112019F01C4 +:103610002A5F3F4F9281891301C012823196E217CF +:10362000F307C1F7089581E090E0E0911101F09176 +:103630001201E80FF91F1082019688309105A9F751 +:1036400008958091F10208959091F102892B809361 +:10365000F102089580959091F10289238093F102FF +:1036600008958093F10208951092F10208959091C7 +:10367000F002892B8093F002089580959091F002DA +:1036800089238093F00208951092F00208958093A8 +:10369000E70208951092E702089580911101909138 +:1036A0001201FC0131969C01285F3F4F80E091910F +:1036B00091118F5FE217F307D1F70895E09111019F +:1036C000F09112018091F1028083E0911101F0915B +:1036D000120190818091F002892B80838091E70212 +:1036E000882361F0E0911101F09112019081892B02 +:1036F00080830E944D1B81111092E702809111017D +:10370000909112010C94BE0E909339018093380170 +:1037100008958295982F9373292F220F220F982FA7 +:103720009C7C96959695922B892F8575880F9A7A11 +:103730009695892B08950895CF93DF9300D000D0FC +:103740001F92CDB7DEB70F900F900F900F900F9094 +:10375000DF91CF910895089508950C94171008955E +:1037600080E0089580910703843021F11092F302E4 +:1037700020E488E190E00FB6F894A895809360006B +:103780000FBE2093600083B7817F846083BF83B7BF +:10379000816083BF7894889583B78E7F83BF0FB68F +:1037A000F894A895809160008861809360001092E1 +:1037B00060000FBE0895CF930E944F100E947206C2 +:1037C0000E945010C0E08C2F0E940007811104C09D +:1037D000CF5FC830C1F701C081E0CF9108950E944A +:1037E00019100C94D4141F920F920FB60F9211243B +:1037F0008F939F93AF93BF938091F302811113C076 +:103800008091F4029091F502A091F602B091F70236 +:103810004196A11DB11D8093F4029093F502A093EF +:10382000F602B093F702BF91AF919F918F910F90E5 +:103830000FBE0F901F90189582E084BD93E095BD58 +:103840009AEF97BD80936E0008952FB7F8948091FA +:10385000F4029091F502A091F602B091F7022FBF09 +:1038600008952FB7F8946091F4027091F502809159 +:10387000F6029091F7022FBF0895CF92DF92EF9258 +:10388000FF920F931F932FB7F8944091F402509139 +:10389000F5026091F6027091F7022FBF6A017B0179 +:1038A000EE24FF248C0120E030E0C016D106E206B1 +:1038B000F30610F4415051099A01281B390BC90134 +:1038C0001F910F91FF90EF90DF90CF9008951F927E +:1038D0000F920FB60F9211248F939F93AF93BF93C4 +:1038E0008091F4029091F502A091F602B091F70256 +:1038F0000196A11DB11D8093F4029093F502A0934F +:10390000F602B093F702BF91AF919F918F910F9004 +:103910000FBE0F901F9018950E94010CF8942FEF86 +:1039200087EA91E6215080409040E1F700C0000016 +:1039300087E090EBDC018093110390931203A09336 +:103940001303B09314039CE088E10FB6F894A89594 +:10395000809360000FBE90936000FFCFE92FF0E0EE +:1039600093E0EE0FFF1F9A95E1F7E80FF11DEA547F +:10397000FF4F9491892F8F7092959F700895CF93E8 +:10398000C82FCB010E94AE1C492F90E0242F30E0BD +:1039900054E0220F331F5A95E1F7282B392B20389A +:1039A000310519F480E090E017C0EC2FF0E023E03F +:1039B000EE0FFF1F2A95E1F74770E40FF11D34E089 +:1039C000EE0FFF1F3A95E1F7E80FF91FEE0FFF1F0B +:1039D000E050F84985919491CF91089580E090E06E +:1039E00008950895CF92DF92EF92FF920F931F9365 +:1039F000CF936C01C0E08C2F0E94000700E010E024 +:103A0000E82EF12CC701002E02C0959587950A94E7 +:103A1000E2F780FF15C0602F7C2F80E00E94BF1C62 +:103A20008C159D0559F0292F207E392F307C11F0FF +:103A3000203A31F490E0C816D90611F481E009C0AB +:103A40000F5F1F4F08301105E9F6CF5FC83099F6B8 +:103A500080E0CF911F910F91FF90EF90DF90CF907A +:103A60000895CF93DF93EC018CE290E00E94F21C6A +:103A7000882329F0CE01DF91CF910C94F21C80E0D5 +:103A8000DF91CF910895CF930E94A41E811102C0AF +:103A90000E948A1E89E293E00E94A305C5E6C150F8 +:103AA00049F00E9472068FE39CE90197F1F700C08C +:103AB0000000F5CF82E293E00E94A30589E290E046 +:103AC0000E94311D811124C18AE290E00E94311DC3 +:103AD00081110E948A1E85E090E00E94311D8111B3 +:103AE0000E948C1C0E94AF1B0E94AF1E8093F202AA +:103AF00087E090E00E94311D8823C1F18BE190E0C6 +:103B00000E94311D882351F08091F20281FB22270F +:103B100020F991E0922790FB81F90FC08EE090E0B0 +:103B20000E94311D882361F08091F20282FB2227DE +:103B300020F991E0922790FB82F98093F20216C05F +:103B400080E190E00E94311D9091F202882341F0C3 +:103B500093FB222720F981E0822780FB93F904C0A0 +:103B6000892F809580FB90F99093F2028091F20268 +:103B70000E94B31E0E94C11E8093100380EE90E04D +:103B80000E94311D882341F080911003982F909559 +:103B900090FB80F98093100389E390E00E94311D2F +:103BA000882359F08091100381FB222720F991E0AE +:103BB000922790FB81F98093100382EE90E00E949F +:103BC000311D882359F08091100382FB222720F9B0 +:103BD00091E0922790FB82F98093100386EE90E0AB +:103BE0000E94311D882359F08091100383FB222706 +:103BF00020F991E0922790FB83F98093100383EEE4 +:103C000090E00E94311D882359F08091100384FBBD +:103C1000222720F991E0922790FB84F980931003EA +:103C200085E390E00E94311D882359F080911003B4 +:103C300085FB222720F991E0922790FB85F980935C +:103C4000100381E390E00E94311D882359F0809198 +:103C5000100386FB222720F991E0922790FB86F93A +:103C60008093100381E190E00E94311D882359F078 +:103C70008091100387FB222720F991E0922790FB87 +:103C800087F980931003809110030E94C51E87E27C +:103C900090E00E94311DC82F8EE190E00E94311DFE +:103CA0008111C2608FE190E00E94311D8111C460DA +:103CB00080E290E00E94311D8111C86081E290E0B5 +:103CC0000E94311D8111C06182E290E00E94311D8D +:103CD0008111C06283E290E00E94311D8111C064B5 +:103CE00084E290E00E94311D882311F0C06802C078 +:103CF000CC2329F08C2F0E94BC1E6C2F03C00E9485 +:103D0000B81E682F70E080E090E0CF910C944B19C2 +:103D1000CF9108956DEE7EEF80E090E00E94132831 +:103D200060E082E090E00E94052860E083E090E09F +:103D30000E94052860E084E090E00E94052860E091 +:103D400085E090E00C94052880E090E00E94FF2739 +:103D500021E08D3E9E4F09F020E0822F089582E001 +:103D600090E00C94F727682F82E090E00C940528EF +:103D700083E090E00C94F727682F83E090E00C94A8 +:103D8000052884E090E00C94F727682F84E090E009 +:103D90000C9405288091FA0280FF0CC080911601D6 +:103DA00090E065E070E00E94B8279595879595951D +:103DB00087952EC081FF0AC08091160190E065E0D2 +:103DC00070E00E94B8279595879522C082FF08C0B1 +:103DD0008091160190E065E070E00E94B82718C05D +:103DE0002091FB022223D9F030911501231780F78F +:103DF0008091160190E065E070E00E94B827622F84 +:103E000070E00E94B827632F70E00E94C927CB01A1 +:103E10008038910538F4009739F481E005C085E0D9 +:103E200090E008958FE7089508958091FA0280FF49 +:103E300008C06091140170E0759567957595679558 +:103E400023C081FF06C06091140170E075956795ED +:103E50001BC082FF04C06091140170E012C0609129 +:103E6000FB026623A9F0209113016217A0F780914D +:103E7000140170E090E00E94B827622F70E00E9469 +:103E8000C9276038710540F46115710519F406C041 +:103E900061E070E0862F08958FE7089581E008952E +:103EA000803F21F40E94CA1E819504C0813F29F4FD +:103EB0000E94CA1E8093FE020895823F21F40E9450 +:103EC000CA1E819504C0833F29F40E94CA1E8093B4 +:103ED000FD020895893F19F40E94151F05C08A3F0D +:103EE00031F40E94151F81958093FF0208958B3F46 +:103EF00021F40E94151F819504C08C3F29F40E9473 +:103F0000151F809300030895843F21F48091FC02E3 +:103F1000816017C0853F21F48091FC02826011C04E +:103F2000863F21F48091FC0284600BC0873F21F41E +:103F30008091FC02886005C0883F31F48091FC02CA +:103F400080618093FC0208958D3F21F48091FA02F4 +:103F500081600BC08E3F21F48091FA02826005C01F +:103F60008F3F29F48091FA0284608093FA020895C9 +:103F7000803F39F48091FE0287FF6CC01092FE02F0 +:103F800069C0813F29F48091FE021816BCF362C01B +:103F90009091FD02823F29F497FF5CC01092FD02D0 +:103FA00059C0833F19F41916CCF354C0893F41F42A +:103FB0008091FF0218160CF04DC01092FF024AC00B +:103FC0008A3F29F48091FF0287FF44C0F6CF8B3FE0 +:103FD00039F48091000387FF3DC0109200033AC07E +:103FE0008C3F29F4809100031816BCF333C0843F42 +:103FF00021F48091FC028E7F17C0853F21F48091CF +:10400000FC028D7F11C0863F21F48091FC028B7FE2 +:104010000BC0873F21F48091FC02877F05C0883F59 +:1040200031F48091FC028F7E8093FC0213C08D3F9F +:1040300021F48091FA028E7F0BC08E3F21F4809193 +:10404000FA028D7F05C08F3F29F48091FA028B7FA1 +:104050008093FA028091FD0281110EC08091FE02D0 +:1040600081110AC08091FF02811106C08091000376 +:10407000811102C01092FB0208958091F20283FF29 +:104080007EC085E693E00E94A3058091FC021F920A +:104090008F9380E693E09F938F930E943C068EE57A +:1040A00093E00E94A3058091FD02282F082E000CAA +:1040B000330B3F938F938BE593E09F938F930E94F5 +:1040C0003C0689E593E00E94A3058091FE02282F1B +:1040D000082E000C330B3F938F9386E593E09F935C +:1040E0008F930E943C0684E593E00E94A305809193 +:1040F000FF02282F082E000C330B3F938F9381E58E +:1041000093E09F938F930E943C068FE493E00E947C +:10411000A30580910003282F082E000C330B3F933A +:104120008F938CE493E09F938F930E943C0689E4E5 +:1041300093E00E94A3058091FB021F928F9386E477 +:1041400093E09F938F930E943C0684E493E00E9447 +:10415000A3058091FA021F928F9381E493E09F93CD +:104160008F930E943C068EE393E00E94A3058DB7D7 +:104170009EB74C960FB6F8949EBF0FBE8DBF8CEFC6 +:1041800092E00E94070F0E94251C9093F9028093F1 +:10419000F80208951F93CF93DF938091F8029091D6 +:1041A000F9020E943D1CFC012091FB02222321F018 +:1041B0008091170190E007C08091180190E06AE0BB +:1041C00070E00E94B827E817F90708F485C08091CD +:1041D000FD02C091FE02D091FF02109100038111F7 +:1041E00007C0C11175C0D11173C0111171C074C065 +:1041F0002F3F19F02F5F2093FB02181624F40E9422 +:10420000CA1E8093FD028091FD0287FF05C00E94B7 +:10421000CA1E81958093FD021C1624F40E94CA1EBA +:104220008093FE028091FE0287FF05C00E94CA1E95 +:1042300081958093FE026091FD02662331F1C09169 +:10424000FE02CC2311F1062E000C770B880B990B84 +:104250000E94B72623E333E343E35FE30E941B2777 +:104260000E947F266093FD026C2FCC0F770B880B8A +:10427000990B0E94B72623E333E343E35FE30E94F5 +:104280001B270E947F266093FE021D1624F40E94C5 +:10429000151F8093FF028091FF0287FF05C00E94D7 +:1042A000151F81958093FF02111624F40E94151F9B +:1042B000809300038091000387FF05C00E94151FB3 +:1042C000819580930003DF91CF911F910C943D2045 +:1042D0002F3F09F08FCFA0CFDF91CF911F9108958D +:1042E000ECEFF2E085E0DF011D928A95E9F710928C +:1042F000FB021092FA02089588E895E00E94A30557 +:104300001F9281E08F931F9285E08F938AE395E05F +:104310009F938F930E943C060F900F900F900F90E9 +:104320000F900F9008958330E9F128F4813061F007 +:10433000823009F10895853009F462C008F449C05B +:10434000863009F474C0089580911801262F30E05A +:10435000280F311D2F3F310524F4680F6093180199 +:1043600003C08FEF80931801809118011F928F93E3 +:1043700083E794E072C080911701262F30E0280F68 +:10438000311D2F3F310524F4680F6093170103C0DE +:104390008FEF80931701809117011F928F9381E611 +:1043A00094E05BC080911601262F30E0280F311D6C +:1043B0002F3F310524F4680F6093160103C08FEF7F +:1043C00080931601809116011F928F938EE494E0E2 +:1043D00044C080911501262F30E0280F311D2F3F5A +:1043E000310524F4680F6093150103C08FEF8093AB +:1043F0001501809115011F928F9389E394E02DC0E0 +:1044000080911401262F30E0280F311D2F3F3105F8 +:1044100024F4680F6093140103C08FEF809314019C +:10442000809114011F928F9380E294E016C08091D6 +:104430001301262F30E0280F311D2F3F310524F4C2 +:10444000680F6093130103C08FEF80931301809175 +:1044500013011F928F9385E094E09F938F930E94A6 +:104460003C060F900F900F900F900895833081F1CC +:1044700028F4813059F08230D1F00895853009F464 +:1044800049C0B8F1863009F456C0089580911801EA +:10449000681720F4861B8093180102C0109218013F +:1044A000809118011F928F9386EF93E054C0809102 +:1044B0001701681720F4861B8093170102C0109221 +:1044C0001701809117011F928F9384EE93E043C0F0 +:1044D00080911601681720F4861B8093160102C094 +:1044E00010921601809116011F928F9381ED93E037 +:1044F00032C080911501681720F4861B8093150146 +:1045000002C010921501809115011F928F938CEBC0 +:1045100093E021C080911401681720F4861B8093DA +:10452000140102C010921401809114011F928F9304 +:1045300083EA93E010C080911301681720F4861B72 +:104540008093130102C010921301809113011F92F6 +:104550008F9388E893E09F938F930E943C060F907F +:104560000F900F900F900895CF93C82F1F928F93A5 +:104570008DE896E09F938F930E943C0681E090E047 +:10458000A0E0B0E0BC01CD0104C0660F771F881F1A +:10459000991FCA95D2F70E944B190F900F900F9058 +:1045A0000F90CF910C94D414CF938732B0F58E3105 +:1045B00008F040C28E3009F4BEC100F5873009F41E +:1045C0008DC1A8F4863009F039C28091F202817F52 +:1045D0008E7F8093F20282E996E00E94A3058DE827 +:1045E0009AE00E94A30581E08093020375C18830A0 +:1045F00009F43FC08B3009F46BC120C2863109F445 +:10460000E0C120F4803109F4AAC118C2893109F44B +:10461000C1C18B3109F47BC111C2883309F458C17F +:1046200050F4893209F404C2853309F401C2873297 +:1046300009F004C2FDC1833409F4FAC128F48A33B5 +:1046400008F4FCC18953F7C1883409F0F7C10E940E +:10465000D4148CE79AE00E94A3059FEF23ED80E33A +:10466000915020408040E1F700C000000E948C1C67 +:1046700033C181E99AE00E94A30589E898E00E948D +:10468000A3050E94B81E1F928F9386E898E09F931F +:104690008F930E943C0684E898E00E94A3050E9444 +:1046A000AF1EC82F81E798E00E94A3051F92CF9309 +:1046B0008CE698E09F938F930E943C068AE698E0F0 +:1046C0000E94A30580E698E00E94A3058C2F8170CC +:1046D0001F928F938DE598E09F938F930E943C06E5 +:1046E0008BE598E00E94A30581E598E00E94A30570 +:1046F000C1FB882780F91F928F938EE498E09F93E7 +:104700008F930E943C068CE498E00E94A30580E40D +:1047100098E00E94A305C2FB882780F91F928F931F +:104720008DE398E09F938F930E943C068BE398E083 +:104730000E94A30582E398E00E94A305C3FBCC2757 +:10474000C0F91F92CF938FE298E09F938F930E94BE +:104750003C068DE298E00E94A3050E94C11EC82F6E +:1047600089E198E00E94A3051F92CF9384E198E02D +:104770009F938F930E943C0682E198E00E94A305DC +:1047800089EF97E00E94A3058C2F81701F928F9371 +:1047900086EF97E09F938F930E943C068DB79EB75C +:1047A00080960FB6F8949EBF0FBE8DBF84EF97E042 +:1047B0000E94A3058DED97E00E94A305C1FB882709 +:1047C00080F91F928F938AED97E09F938F930E94B9 +:1047D0003C0688ED97E00E94A30586EC97E00E94D6 +:1047E000A305C2FB882780F91F928F9383EC97E083 +:1047F0009F938F930E943C0681EC97E00E94A30553 +:104800008FEA97E00E94A305C3FB882780F91F92D7 +:104810008F938CEA97E09F938F930E943C068AEADD +:1048200097E00E94A30580EA97E00E94A305C4FBDD +:10483000882780F91F928F938DE997E09F938F933C +:104840000E943C068BE997E00E94A30589E897E067 +:104850000E94A305C5FB882780F91F928F9386E8E5 +:1048600097E09F938F930E943C0684E897E00E9414 +:10487000A30588E697E00E94A305C6FB882780F978 +:104880001F928F9385E697E09F938F930E943C063B +:1048900083E697E00E94A3058BE597E00E94A305BD +:1048A000C7FBCC27C0F91F92CF9388E597E09F9371 +:1048B0008F930E943C0686E597E00E94A3058DB782 +:1048C0009EB74C960FB6F8949EBF0FBE8DBF04C026 +:1048D00089EB96E00E94A305C1E0B5C08091F20289 +:1048E000C82FC17080FF09C08FE69AE00E94A3051F +:1048F0008091F202817F8E7F47C083E69AE00E941A +:10490000A3058091F20281608093F202E5CF90913D +:10491000F20291FBCC27C0F981E0C827892FC0FBA8 +:1049200081F98093F202CC2319F086E59AE027C042 +:1049300088E49AE0CFCF9091F20292FBCC27C0F9A5 +:1049400081E0C827892FC0FB82F98093F202CC2333 +:1049500019F089E39AE013C089E29AE0BBCF909105 +:10496000F20293FBCC27C0F981E0C827892FC0FB56 +:1049700083F98093F202CC2351F08DE19AE00E94FA +:10498000A3058091F20281608093F2025CC080E115 +:104990009AE0A0CF81E09AE00E94A30589ED99E01A +:1049A0000E94A30587EA99E00E94A3058FE799E09A +:1049B0000E94A30580E399E00E94A30584E099E0AA +:1049C00089CF86EF98E00E94A3050E94B20E1F9245 +:1049D0008F938CED98E09F938F930E943C0680917B +:1049E00010011F928F9385EC98E09F938F930E9404 +:1049F0003C06809157021F928F9382EB98E09F9321 +:104A00008F930E943C060E94311C9F938F937F934B +:104A10006F938BE998E09F938F930E943C068DB72C +:104A20009EB742960FB6F8949EBF0FBE8DBF54CF6F +:104A300080E001C08D510E94B4224ECF89E998E0F8 +:104A40000E94A305C0E08C2FCF91089580E00895C7 +:104A50000C942625CF93C82F80910203813071F0EA +:104A600020F0823009F44BC042C1E0911101F09175 +:104A700012018081823209F03CC107C0E09111012E +:104A8000F09112018081823261F48C2F0E942825DE +:104A9000811104C08C2F0E94D4222FC081E090E0AD +:104AA0002CC08C2F0E942625811126C0C431E1F034 +:104AB00070F4CB3081F0C031D1F40E947C2185E8C4 +:104AC00096E00E94A30582E08093020315C0C932DC +:104AD00059F0C83361F482E996E00E94A30589E8A1 +:104AE00096E00E94A30508C01092020304C183E867 +:104AF00096E00E94A305FFC081E08170FEC0C43231 +:104B000028F5CE3108F0C1C0CB30A1F1D0F4C730C8 +:104B100009F0D3C08EE18093180182E380931701DE +:104B20008AE08093160184E18093150188E08093E8 +:104B3000140188E28093130189E295E00E94A305A5 +:104B4000BFC0C33149F1C431C1F0B7C0CB3409F49F +:104B5000A9C028F4C93289F0C83361F0AEC0C135AC +:104B600009F49EC0C23509F499C0CE3409F0A5C03D +:104B70006AE09EC00E947C21A3C08091010388232B +:104B800019F0109201039CC086E395E00E94A305F2 +:104B900081E080930203B1C080E195E00E94A3050B +:104BA0008EEF94E00E94A305809118011F928F93CD +:104BB0008BEF94E09F938F930E943C0689EF94E0E3 +:104BC0000E94A30587EE94E00E94A305809117013F +:104BD0001F928F9384EE94E09F938F930E943C06E4 +:104BE00082EE94E00E94A30583ED94E00E94A30569 +:104BF000809116011F928F9380ED94E09F938F9385 +:104C00000E943C068EEC94E00E94A3058DEB94E09C +:104C10000E94A305809115011F928F938AEB94E067 +:104C20009F938F930E943C0688EB94E00E94A3051B +:104C300083EA94E00E94A305809114011F928F9350 +:104C400080EA94E09F938F930E943C068EE994E063 +:104C50000E94A30587E894E00E94A30580911301B8 +:104C60001F928F9384E894E09F938F930E943C0659 +:104C700082E894E00E94A3058DB79EB748960FB6D0 +:104C8000F8949EBF0FBE8DBF1BC0CE51EC2FF0E03D +:104C9000E25DFE4F80818093010312C061E003C09A +:104CA00061E006C06AE0809101030E94932108C080 +:104CB000809101030E94362203C087E295E013C071 +:104CC00080910103882369F01F928F9381E295E020 +:104CD0009F938F930E943C060F900F900F900F9020 +:104CE00004C08EE195E00E94A30581E006C0109209 +:104CF000020380E002C080E000CFCF9108950E94BF +:104D000086266894B1110C94152708950E94FA26FE +:104D100088F09F5798F0B92F9927B751B0F0E1F07C +:104D2000660F771F881F991F1AF0BA95C9F714C02C +:104D3000B13091F00E941427B1E008950C9414272B +:104D4000672F782F8827B85F39F0B93FCCF3869565 +:104D500077956795B395D9F73EF4909580957095C2 +:104D600061957F4F8F4F9F4F0895E89409C097FB3F +:104D70003EF490958095709561957F4F8F4F9F4F32 +:104D80009923A9F0F92F96E9BB279395F695879576 +:104D900077956795B795F111F8CFFAF4BB0F11F439 +:104DA00060FF1BC06F5F7F4F8F4F9F4F16C08823E0 +:104DB00011F096E911C0772321F09EE8872F762F16 +:104DC00005C0662371F096E8862F70E060E02AF057 +:104DD0009A95660F771F881FDAF7880F9695879543 +:104DE00097F9089557FD9058440F551F59F05F3FAC +:104DF00071F04795880F97FB991F61F09F3F79F0FD +:104E000087950895121613061406551FF2CF46957E +:104E1000F1DF08C0161617061806991FF1CF869500 +:104E20007105610508940895E894BB2766277727E4 +:104E3000CB0197F908950E942D270C94A7270E9473 +:104E4000992738F00E94A02720F0952311F00C94A8 +:104E500090270C9496270C9415270E94F22678F33D +:104E60009923C9F35523B9F3950F50E0551FAA278D +:104E7000EE27FF27BB2700240894679520F4E20F54 +:104E8000F31FB41F0A1E220F331F441FAA1F66956B +:104E9000A9F7779530F4F30FB41F0A1E121E08F419 +:104EA0006395330F441FAA1F221F769599F78795A4 +:104EB00020F4B40F0A1E121E631F440FAA1F221FE4 +:104EC000331F8695A9F7862F712D602D11249F57CA +:104ED00050409AF0F1F088234AF0EE0FFF1FBB1FFD +:104EE000661F771F881F91505040A9F79E3F5105BC +:104EF00080F00C9490270C9415275F3FE4F3983EC4 +:104F0000D4F3869577956795B795F795E7959F5F65 +:104F1000C1F7FE2B880F911D9695879597F90895F7 +:104F200097F99F6780E870E060E008959FEF80EC5C +:104F3000089500240A9416161706180609060895FF +:104F400000240A9412161306140605060895092E65 +:104F50000394000C11F4882352F0BB0F40F4BF2BD4 +:104F600011F460FF04C06F5F7F4F8F4F9F4F089514 +:104F70000024552704C0080E591F880F991F009759 +:104F800029F076956795B8F37105B9F7802D952FBF +:104F9000089597FB072E16F4009407D077FD09D0EB +:104FA0000E94E32707FC05D03EF4909581959F4F22 +:104FB0000895709561957F4F0895EE0FFF1F05903E +:104FC000F491E02D0994AA1BBB1B51E107C0AA1F55 +:104FD000BB1FA617B70710F0A61BB70B881F991F9A +:104FE0005A95A9F780959095BC01CD010895F9993E +:104FF000FECF92BD81BDF89A992780B50895A8E1AA +:10500000B0E042E050E00C941A28262FF999FECF28 +:105010001FBA92BD81BD20BD0FB6F894FA9AF99AD5 +:105020000FBE019608950E940528272F0C9406288C +:10503000DC01CB01FC01F999FECF06C0F2BDE1BD58 +:10504000F89A319600B40D9241505040B8F7089547 +:04505000F894FFCF02 +:10505400054E010000FF0E079E077B074507110759 +:1050640001E8022808140A321E404D36228A023D05 +:10507400020702E50171018A01A301BC01000102DA +:085084000304050607080900FA :106800000000000000000000040005000600070072 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC @@ -1266,29 +1295,13 @@ :10684000200021002200230024002500260027002C :10685000280029002A002B002C002D002E002F00DC :1068600030003100000033003400350036003700BE -:106870003800E00000000000000000000000000000 +:1068700038003900000000000000000000000000A7 :106880000000000000000000000000000000000008 :1068900000000000000000000000000000000000F8 :1068A00000000000000000000000000000000000E8 :1068B00000000000000000000000000000000000D8 -:1068C00000000000000000006400650000000000FF +:1068C00000000000000000006400E700000000007D :1068D00000000000000000000000000000000000B8 :1068E0000000000000000000320000000000000076 -:1068F000E000E100E200E300E400E500E600E7A1DB -:106900000000000000000000EA4401000100E24431 -:106910000100010001005500460054004A004B00F0 -:10692000560057004700480001000100E9440100FB -:106930000100010001000100010001003A003B00DC -:106940003C003D003E003F0040004100420043004B -:10695000580001004C00390001004400450052007D -:1069600001002A00000050004F0029004D004E0099 -:1069700051000100000000000000000000000000C5 -:106980000000000000000000000000000000000007 -:1069900000000000000000000000000000000000F7 -:1069A00000000000000000000000000000000000E7 -:1069B00000000000000000000000000000000000D7 -:1069C00000000000000000000100010000000000C5 -:1069D00000000000000000000000000000000000B7 -:1069E000000000000000000049000000000000005E -:1069F000010001000100010001000100010001008F +:1068F000E000E100E300E200E400E500E6006500FE :00000001FF From 814eaa2dffa10f8b3a9f5c5ae6fab430322056d7 Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 21 Jun 2019 13:03:49 +0900 Subject: [PATCH 23/71] core:adb_usb: Add Extended Mouse Protocol support #274 Also add Kensington Turbo Mouse 5 specific initialization --- converter/adb_usb/matrix.c | 181 +++++++++++++++++++++++++++++-------- tmk_core/common/report.h | 3 + tmk_core/protocol/adb.c | 100 +++++++++++++------- tmk_core/protocol/adb.h | 13 ++- 4 files changed, 221 insertions(+), 76 deletions(-) diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index a1dddf9f..c9113c3c 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -37,6 +37,7 @@ along with this program. If not, see . static bool has_media_keys = false; static bool is_iso_layout = false; +static uint8_t mouse_handler = ADB_HANDLER_CLASSIC1_MOUSE; // matrix state buffer(1:on, 0:off) static matrix_row_t matrix[MATRIX_ROWS]; @@ -54,15 +55,20 @@ void matrix_init(void) _delay_ms(2000); // device scan - xprintf("Before init:\n"); + xprintf("\nScan:\n"); for (uint8_t addr = 1; addr < 16; addr++) { uint16_t reg3 = adb_host_talk(addr, ADB_REG_3); if (reg3) { - xprintf("Scan: addr:%d, reg3:%04X\n", addr, reg3); + xprintf(" addr:%d, reg3:%04X\n", addr, reg3); } _delay_ms(20); } + + // + // Keyboard + // + xprintf("\nKeyboard:\n"); // Determine ISO keyboard by handler id // http://lxr.free-electrons.com/source/drivers/macintosh/adbhid.c?v=4.4#L815 uint8_t handler_id = (uint8_t) adb_host_talk(ADB_ADDR_KEYBOARD, ADB_REG_3); @@ -76,26 +82,88 @@ void matrix_init(void) is_iso_layout = false; break; } - xprintf("hadler_id: %02X, is_iso_layout: %s\n", handler_id, (is_iso_layout ? "yes" : "no")); + xprintf("hadler: %02X, ISO: %s\n", handler_id, (is_iso_layout ? "yes" : "no")); // Adjustable keyboard media keys: address=0x07 and handlerID=0x02 has_media_keys = (0x02 == (adb_host_talk(ADB_ADDR_APPLIANCE, ADB_REG_3) & 0xff)); if (has_media_keys) { - xprintf("Found: media keys\n"); + xprintf("Media keys\n"); } // Enable keyboard left/right modifier distinction // Listen Register3 // upper byte: reserved bits 0000, keyboard address 0010 // lower byte: device handler 00000011 - adb_host_listen(ADB_ADDR_KEYBOARD, ADB_REG_3, ADB_ADDR_KEYBOARD, ADB_HANDLER_EXTENDED_PROTOCOL); + adb_host_listen(ADB_ADDR_KEYBOARD, ADB_REG_3, ADB_ADDR_KEYBOARD, ADB_HANDLER_EXTENDED_KEYBOARD); - // device scan - xprintf("After init:\n"); + + #ifdef ADB_MOUSE_ENABLE + // + // Mouse + // + // https://developer.apple.com/library/archive/technotes/hw/hw_01.html#Extended + xprintf("\nMouse:\n"); + + // Some old mouses seems to need wait between commands. + _delay_ms(20); + adb_host_listen(ADB_ADDR_MOUSE, ADB_REG_3, ADB_ADDR_MOUSE, ADB_HANDLER_CLASSIC2_MOUSE); + + _delay_ms(20); + adb_host_listen(ADB_ADDR_MOUSE, ADB_REG_3, ADB_ADDR_MOUSE, ADB_HANDLER_EXTENDED_MOUSE); + + _delay_ms(20); + mouse_handler = adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_3) & 0xff; + mouse_handler = mouse_handler ? mouse_handler : ADB_HANDLER_CLASSIC1_MOUSE; + + // Extended Mouse Protocol + if (mouse_handler == ADB_HANDLER_EXTENDED_MOUSE) { + // Device info format(reg1 8-byte data) + // 0-3: device id + // 4-5: resolution in units/inch (0xC8=200upi) + // 6 : device class (0: Tablet, 1: Mouse, 2: Trackball) + // 7 : num of buttons + uint8_t len; + uint8_t buf[8]; + len = adb_host_talk_buf(ADB_ADDR_MOUSE, ADB_REG_1, buf, sizeof(buf)); + if (len) { + xprintf("Devinfo: [", len); + for (int8_t i = 0; i < len; i++) xprintf("%02X ", buf[i]); + xprintf("]\n"); + } + + // Kensington Turbo Mouse 5 + if (len == 8 && buf[0] == 0x4B && buf[1] == 0x4D && buf[2] == 0x4C && buf[3] == 0x31) { + xprintf("Turbo Mouse 5\n"); + + // Turbo Mouse command sequence to enable four buttons + // https://elixir.bootlin.com/linux/v4.4/source/drivers/macintosh/adbhid.c#L1176 + // https://github.com/NetBSD/src/blob/64b8a48e1288eb3902ed73113d157af50b2ec596/sys/arch/macppc/dev/ams.c#L261 + static uint8_t cmd1[] = { 0xE7, 0x8C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94 }; + static uint8_t cmd2[] = { 0xA5, 0x14, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0x27 }; + + // configure with new address 9 + adb_host_listen(ADB_ADDR_MOUSE, ADB_REG_3, 0x69, 0xFE); + adb_host_flush(9); + + adb_host_flush(ADB_ADDR_MOUSE); + adb_host_listen_buf(ADB_ADDR_MOUSE, ADB_REG_2, cmd1, sizeof(cmd1)); + adb_host_flush(ADB_ADDR_MOUSE); + adb_host_listen_buf(ADB_ADDR_MOUSE, ADB_REG_2, cmd2, sizeof(cmd2)); + } + + // Add device specific init here + } + mouse_handler = adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_3) & 0xff; + mouse_handler = mouse_handler ? mouse_handler : ADB_HANDLER_CLASSIC1_MOUSE; + xprintf("handler: %d\n", mouse_handler); + #endif + + + xprintf("\nScan:\n"); for (uint8_t addr = 1; addr < 16; addr++) { uint16_t reg3 = adb_host_talk(addr, ADB_REG_3); if (reg3) { - xprintf("Scan: addr:%d, reg3:%04X\n", addr, reg3); + xprintf(" addr:%d, reg3:%04X\n", addr, reg3); } _delay_ms(20); } @@ -108,8 +176,7 @@ void matrix_init(void) debug_enable = true; //debug_matrix = true; //debug_keyboard = true; - //debug_mouse = true; - print("debug enabled.\n"); + debug_mouse = true; // LED off DDRD |= (1<<6); PORTD &= ~(1<<6); @@ -127,7 +194,8 @@ static report_mouse_t mouse_report = {}; void adb_mouse_task(void) { - uint16_t codes; + uint8_t len; + uint8_t buf[5]; int16_t x, y; static int8_t mouseacc; @@ -138,47 +206,86 @@ void adb_mouse_task(void) if (timer_elapsed(tick_ms) < 12) return; tick_ms = timer_read(); - codes = adb_host_mouse_recv(); + // Extended Mouse Protocol data can be 2-5 bytes + // https://developer.apple.com/library/archive/technotes/hw/hw_01.html#Extended + // + // Byte 0: b00 y06 y05 y04 y03 y02 y01 y00 + // Byte 1: b01 x06 x05 x04 x03 x02 x01 x00 + // Byte 2: b02 y09 y08 y07 b03 x09 x08 x07 + // Byte 3: b04 y12 y11 y10 b05 x12 x11 x10 + // Byte 4: b06 y15 y14 y13 b07 x15 x14 x13 + // + // b--: Button state.(0: on, 1: off) + // x--: X axis movement. + // y--: Y axis movement. + len = adb_host_talk_buf(ADB_ADDR_MOUSE, ADB_REG_0, buf, sizeof(buf)); + // If nothing received reset mouse acceleration, and quit. - if (!codes) { + if (len < 2) { mouseacc = 1; return; }; - // Bit sixteen is button. - if (~codes & (1 << 15)) - mouse_report.buttons |= MOUSE_BTN1; - if (codes & (1 << 15)) - mouse_report.buttons &= ~MOUSE_BTN1; - // lower seven bits are movement, as signed int_7. - // low byte is X-axis, high byte is Y. - y = (codes>>8 & 0x3F); - x = (codes>>0 & 0x3F); - // bit seven and fifteen is negative - // usb does not use int_8, but int_7 (measuring distance) with sign-bit. - if (codes & (1 << 6)) - x = (x-0x40); - if (codes & (1 << 14)) - y = (y-0x40); + + // Store off-buttons and 0-movements in unused bytes + bool xneg = false; + bool yneg = false; + if (len == 2) { + if (buf[0] & 0x40) yneg = true; + if (buf[1] & 0x40) xneg = true; + } else { + if (buf[len - 1] & 0x40) yneg = true; + if (buf[len - 1] & 0x04) xneg = true; + } + + for (int8_t i = len; i < sizeof(buf); i++) { + buf[i] = 0x88; + if (yneg) buf[i] |= 0x70; + if (xneg) buf[i] |= 0x07; + } + + // 8 buttons at max + // TODO: Fix HID report descriptor for mouse to support button6-8 + uint8_t buttons = 0; + if (!(buf[4] & 0x08)) buttons |= MOUSE_BTN8; + if (!(buf[4] & 0x80)) buttons |= MOUSE_BTN7; + if (!(buf[3] & 0x08)) buttons |= MOUSE_BTN6; + if (!(buf[3] & 0x80)) buttons |= MOUSE_BTN5; + if (!(buf[2] & 0x08)) buttons |= MOUSE_BTN4; + if (!(buf[2] & 0x80)) buttons |= MOUSE_BTN3; + if (!(buf[1] & 0x80)) buttons |= MOUSE_BTN2; + if (!(buf[0] & 0x80)) buttons |= MOUSE_BTN1; + mouse_report.buttons = buttons; + + int16_t xx, yy; + yy = (buf[0] & 0x7F) | (buf[2] & 0x70) << 3 | (buf[3] & 0x70) << 6 | (buf[4] & 0x70) << 9; + xx = (buf[1] & 0x7F) | (buf[2] & 0x07) << 7 | (buf[3] & 0x07) << 10 | (buf[4] & 0x07) << 13; + // Accelerate mouse. (They weren't meant to be used on screens larger than 320x200). - x *= mouseacc; - y *= mouseacc; + x = xx * mouseacc; + y = yy * mouseacc; + + // TODO: Fix HID report descriptor for mouse to support finer resolution // Cap our two bytes per axis to one byte. // Easier with a MIN-function, but since -MAX(-a,-b) = MIN(a,b)... - // I.E. MIN(MAX(x,-127),127) = -MAX(-MAX(x, -127), -127) = MIN(-MIN(-x,127),127) + // I.E. MIN(MAX(x,-127),127) = -MAX(-MAX(x, -127), -127) = MIN(-MIN(-x,127),127) mouse_report.x = -MAX(-MAX(x, -127), -127); mouse_report.y = -MAX(-MAX(y, -127), -127); + if (debug_mouse) { - print("adb_host_mouse_recv: "); print_bin16(codes); print("\n"); - print("adb_mouse raw: ["); - phex(mouseacc); print(" "); - phex(mouse_report.buttons); print("|"); - print_decs(mouse_report.x); print(" "); - print_decs(mouse_report.y); print("]\n"); + xprintf("Mouse raw: ["); + for (int8_t i = 0; i < len; i++) xprintf("%02X ", buf[i]); + xprintf("]\n"); + + xprintf("Mouse info["); + xprintf("B:%02X, X:%d(%d), Y:%d(%d), A:%d]\n", buttons, x, xx, y, yy, mouseacc); } + // Send result by usb. host_mouse_send(&mouse_report); + // increase acceleration of mouse mouseacc += ( mouseacc < ADB_MOUSE_MAXACC ? 1 : 0 ); + return; } #endif diff --git a/tmk_core/common/report.h b/tmk_core/common/report.h index f21e84ee..2a2ff2de 100644 --- a/tmk_core/common/report.h +++ b/tmk_core/common/report.h @@ -33,6 +33,9 @@ along with this program. If not, see . #define MOUSE_BTN3 (1<<2) #define MOUSE_BTN4 (1<<3) #define MOUSE_BTN5 (1<<4) +#define MOUSE_BTN6 (1<<5) +#define MOUSE_BTN7 (1<<6) +#define MOUSE_BTN8 (1<<7) /* Consumer Page(0x0C) * following are supported by Windows: http://msdn.microsoft.com/en-us/windows/hardware/gg463372.aspx diff --git a/tmk_core/protocol/adb.c b/tmk_core/protocol/adb.c index 164255ef..7feffb30 100644 --- a/tmk_core/protocol/adb.c +++ b/tmk_core/protocol/adb.c @@ -41,6 +41,7 @@ POSSIBILITY OF SUCH DAMAGE. #include #include #include "adb.h" +#include "print.h" // GCC doesn't inline functions normally @@ -92,22 +93,25 @@ uint16_t adb_host_kbd_recv(uint8_t addr) } #ifdef ADB_MOUSE_ENABLE +__attribute__ ((weak)) void adb_mouse_init(void) { - return; + return; } -uint16_t adb_host_mouse_recv(void) -{ - return adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_0); +__attribute__ ((weak)) +void adb_mouse_task(void) { + return; } #endif -uint16_t adb_host_talk(uint8_t addr, uint8_t reg) +// This sends Talk command to read data from register and returns length of the data. +uint8_t adb_host_talk_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) { - uint16_t data = 0; + for (int8_t i =0; i < len; i++) buf[i] = 0; + cli(); attention(); - send_byte((addr<<4) | (ADB_CMD_TALK<<2) | reg); + send_byte((addr<<4) | ADB_CMD_TALK | reg); place_bit0(); // Stopbit(0) if (!wait_data_hi(500)) { // Service Request(310us Adjustable Keyboard): just ignored sei(); @@ -118,55 +122,81 @@ uint16_t adb_host_talk(uint8_t addr, uint8_t reg) return 0; // No data to send } - uint8_t n = 17; // start bit + 16 data bits + // start bit(1) + if (!wait_data_hi(40)) return 0; + if (!wait_data_lo(100)) return 0; + + uint8_t n = 0; // bit count do { + // + // |<- bit_cell_max(130) ->| + // | |<- lo ->| + // | | |<-hi->| + // _______ + // | | | + // | 130-lo | lo-hi | + // |________| | + // uint8_t lo = (uint8_t) wait_data_hi(130); if (!lo) - goto error; + goto error; // no more bit or after stop bit uint8_t hi = (uint8_t) wait_data_lo(lo); if (!hi) - goto error; + goto error; // stop bit extedned by Srq - hi = lo - hi; - lo = 130 - lo; + if (n/8 >= len) continue; // can't store in buf - data <<= 1; - if (lo < hi) { - data |= 1; - } - else if (n == 17) { - sei(); - return -20; + buf[n/8] <<= 1; + if ((130 - lo) < (lo - hi)) { + buf[n/8] |= 1; } } - while ( --n ); - - // Stop bit can't be checked normally since it could have service request lenghtening - // and its high state never goes low. - if (!wait_data_hi(351) || wait_data_lo(91)) { - sei(); - return -21; - } - sei(); - return data; + while ( ++n ); error: sei(); - return -n; + return n/8; +} + +uint16_t adb_host_talk(uint8_t addr, uint8_t reg) +{ + uint8_t len; + uint8_t buf[8]; + len = adb_host_talk_buf(addr, reg, buf, 8); + if (len != 2) return 0; + return (buf[0]<<8 | buf[1]); +} + +void adb_host_listen_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) +{ + cli(); + attention(); + send_byte((addr<<4) | ADB_CMD_LISTEN | reg); + place_bit0(); // Stopbit(0) + _delay_us(200); // Tlt/Stop to Start + place_bit1(); // Startbit(1) + for (int8_t i = 0; i < len; i++) { + send_byte(buf[i]); + //xprintf("%02X ", buf[i]); + } + place_bit0(); // Stopbit(0); + sei(); } void adb_host_listen(uint8_t addr, uint8_t reg, uint8_t data_h, uint8_t data_l) +{ + uint8_t buf[2] = { data_h, data_l }; + adb_host_listen_buf(addr, reg, buf, 2); +} + +void adb_host_flush(uint8_t addr) { cli(); attention(); - send_byte((addr<<4) | (ADB_CMD_LISTEN<<2) | reg); + send_byte((addr<<4) | ADB_CMD_FLUSH); place_bit0(); // Stopbit(0) _delay_us(200); // Tlt/Stop to Start - place_bit1(); // Startbit(1) - send_byte(data_h); - send_byte(data_l); - place_bit0(); // Stopbit(0); sei(); } diff --git a/tmk_core/protocol/adb.h b/tmk_core/protocol/adb.h index a8b97ea5..52932c94 100644 --- a/tmk_core/protocol/adb.h +++ b/tmk_core/protocol/adb.h @@ -62,8 +62,8 @@ POSSIBILITY OF SUCH DAMAGE. // Command Type #define ADB_CMD_RESET 0 #define ADB_CMD_FLUSH 1 -#define ADB_CMD_LISTEN 2 -#define ADB_CMD_TALK 3 +#define ADB_CMD_LISTEN 8 +#define ADB_CMD_TALK 12 // Register #define ADB_REG_0 0 #define ADB_REG_1 1 @@ -76,16 +76,21 @@ POSSIBILITY OF SUCH DAMAGE. #define ADB_HANDLER_M0115 0x02 #define ADB_HANDLER_M3501 0x02 #define ADB_HANDLER_M1242_ANSI 0x10 -#define ADB_HANDLER_EXTENDED_PROTOCOL 0x03 +#define ADB_HANDLER_EXTENDED_KEYBOARD 0x03 +#define ADB_HANDLER_CLASSIC1_MOUSE 0x01 +#define ADB_HANDLER_CLASSIC2_MOUSE 0x02 +#define ADB_HANDLER_EXTENDED_MOUSE 0x04 // ADB host void adb_host_init(void); bool adb_host_psw(void); uint16_t adb_host_kbd_recv(uint8_t addr); -uint16_t adb_host_mouse_recv(void); uint16_t adb_host_talk(uint8_t addr, uint8_t reg); +uint8_t adb_host_talk_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len); void adb_host_listen(uint8_t addr, uint8_t reg, uint8_t data_h, uint8_t data_l); +void adb_host_listen_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len); +void adb_host_flush(uint8_t addr); void adb_host_kbd_led(uint8_t addr, uint8_t led); void adb_mouse_task(void); void adb_mouse_init(void); From 35da7a8d703d8c3f1f74e0ec17f0ad11ee9e0df0 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 22 Jun 2019 11:00:08 +0900 Subject: [PATCH 24/71] adb_usb: Change mouse acceleration according to cpi --- converter/adb_usb/matrix.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index c9113c3c..82ccee89 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -38,6 +38,7 @@ along with this program. If not, see . static bool has_media_keys = false; static bool is_iso_layout = false; static uint8_t mouse_handler = ADB_HANDLER_CLASSIC1_MOUSE; +static uint16_t mouse_cpi = 100; // matrix state buffer(1:on, 0:off) static matrix_row_t matrix[MATRIX_ROWS]; @@ -115,6 +116,9 @@ void matrix_init(void) mouse_handler = adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_3) & 0xff; mouse_handler = mouse_handler ? mouse_handler : ADB_HANDLER_CLASSIC1_MOUSE; + if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) { mouse_cpi = 100; } + if (mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) { mouse_cpi = 200; } + // Extended Mouse Protocol if (mouse_handler == ADB_HANDLER_EXTENDED_MOUSE) { // Device info format(reg1 8-byte data) @@ -131,6 +135,12 @@ void matrix_init(void) xprintf("]\n"); } + if (len > 5) { + mouse_cpi = (buf[4]<<8) | buf[5]; + } else { + mouse_cpi = 100; + } + // Kensington Turbo Mouse 5 if (len == 8 && buf[0] == 0x4B && buf[1] == 0x4D && buf[2] == 0x4C && buf[3] == 0x31) { xprintf("Turbo Mouse 5\n"); @@ -156,6 +166,7 @@ void matrix_init(void) mouse_handler = adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_3) & 0xff; mouse_handler = mouse_handler ? mouse_handler : ADB_HANDLER_CLASSIC1_MOUSE; xprintf("handler: %d\n", mouse_handler); + xprintf("cpi: %d\n", mouse_cpi); #endif @@ -272,19 +283,18 @@ void adb_mouse_task(void) mouse_report.y = -MAX(-MAX(y, -127), -127); if (debug_mouse) { - xprintf("Mouse raw: ["); + xprintf("Mouse: ["); for (int8_t i = 0; i < len; i++) xprintf("%02X ", buf[i]); - xprintf("]\n"); - - xprintf("Mouse info["); - xprintf("B:%02X, X:%d(%d), Y:%d(%d), A:%d]\n", buttons, x, xx, y, yy, mouseacc); + xprintf("] "); + xprintf("[B:%02X, X:%d(%d), Y:%d(%d), A:%d]\n", mouse_report.buttons, mouse_report.x, xx, mouse_report.y, yy, mouseacc); } // Send result by usb. host_mouse_send(&mouse_report); + // TODO: acceleration curve is needed for precise operation? // increase acceleration of mouse - mouseacc += ( mouseacc < ADB_MOUSE_MAXACC ? 1 : 0 ); + mouseacc += ( mouseacc < (mouse_cpi < 200 ? ADB_MOUSE_MAXACC : ADB_MOUSE_MAXACC/2) ? 1 : 0 ); return; } From 66e97371bacb1ad55096f0407b47f0a73fadc6c7 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 23 Jun 2019 13:31:54 +0900 Subject: [PATCH 25/71] adb_usb: Fix mouse_init --- converter/adb_usb/matrix.c | 219 +++++++++++++++++++++++++------------ tmk_core/protocol/adb.c | 66 ++++++++++- tmk_core/protocol/adb.h | 15 ++- 3 files changed, 225 insertions(+), 75 deletions(-) diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index 82ccee89..d2da841c 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -37,17 +37,37 @@ along with this program. If not, see . static bool has_media_keys = false; static bool is_iso_layout = false; -static uint8_t mouse_handler = ADB_HANDLER_CLASSIC1_MOUSE; + +#if ADB_MOUSE_ENABLE +#define dmprintf(fmt, ...) do { if (debug_mouse) xprintf(fmt, ##__VA_ARGS__); } while (0) static uint16_t mouse_cpi = 100; +static void mouse_init(uint8_t addr); +#endif // matrix state buffer(1:on, 0:off) static matrix_row_t matrix[MATRIX_ROWS]; static void register_key(uint8_t key); +static void device_scan(void) +{ + xprintf("\nScan:\n"); + for (uint8_t addr = 0; addr < 16; addr++) { + uint16_t reg3 = adb_host_talk(addr, ADB_REG_3); + if (reg3) { + xprintf(" addr:%d, reg3:%04X\n", addr, reg3); + } + _delay_ms(20); + } +} void matrix_init(void) { + debug_enable = true; + //debug_matrix = true; + //debug_keyboard = true; + //debug_mouse = true; + // LED on DDRD |= (1<<6); PORTD |= (1<<6); @@ -55,16 +75,7 @@ void matrix_init(void) // wait for keyboard to boot up and receive command _delay_ms(2000); - // device scan - xprintf("\nScan:\n"); - for (uint8_t addr = 1; addr < 16; addr++) { - uint16_t reg3 = adb_host_talk(addr, ADB_REG_3); - if (reg3) { - xprintf(" addr:%d, reg3:%04X\n", addr, reg3); - } - _delay_ms(20); - } - + device_scan(); // // Keyboard @@ -98,26 +109,88 @@ void matrix_init(void) adb_host_listen(ADB_ADDR_KEYBOARD, ADB_REG_3, ADB_ADDR_KEYBOARD, ADB_HANDLER_EXTENDED_KEYBOARD); - #ifdef ADB_MOUSE_ENABLE // // Mouse // // https://developer.apple.com/library/archive/technotes/hw/hw_01.html#Extended + #ifdef ADB_MOUSE_ENABLE xprintf("\nMouse:\n"); + // Check device on addr3 + mouse_init(ADB_ADDR_MOUSE); + #endif + + device_scan(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; + + led_set(host_keyboard_leds()); + + // LED off + DDRD |= (1<<6); PORTD &= ~(1<<6); + return; +} + +#ifdef ADB_MOUSE_ENABLE +static void mouse_init(uint8_t orig_addr) +{ + uint16_t reg3; + uint8_t mouse_handler; + uint8_t addr; + +again: // Some old mouses seems to need wait between commands. _delay_ms(20); - adb_host_listen(ADB_ADDR_MOUSE, ADB_REG_3, ADB_ADDR_MOUSE, ADB_HANDLER_CLASSIC2_MOUSE); + mouse_handler = (reg3 = adb_host_talk(orig_addr, ADB_REG_3)) & 0xFF; + if (!reg3) return; + dmprintf("addr%d reg3: %02X\n", orig_addr, reg3); + + // Move device to tmp address + _delay_ms(20); + adb_host_flush(orig_addr); + _delay_ms(20); + adb_host_listen(orig_addr, ADB_REG_3, ((reg3 >> 8) & 0xF0) | ADB_ADDR_TMP, 0xFE); + adb_host_flush(ADB_ADDR_TMP); _delay_ms(20); - adb_host_listen(ADB_ADDR_MOUSE, ADB_REG_3, ADB_ADDR_MOUSE, ADB_HANDLER_EXTENDED_MOUSE); + mouse_handler = (reg3 = adb_host_talk(ADB_ADDR_TMP, ADB_REG_3)) & 0xFF; + if (!reg3) { + dmprintf("move fail\n"); + goto again; + } + addr = ADB_ADDR_TMP; + dmprintf("addr%d reg3: %02X\n", addr, reg3); - _delay_ms(20); - mouse_handler = adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_3) & 0xff; - mouse_handler = mouse_handler ? mouse_handler : ADB_HANDLER_CLASSIC1_MOUSE; - if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) { mouse_cpi = 100; } - if (mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) { mouse_cpi = 200; } +detect_again: + if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE || mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) { + _delay_ms(20); + adb_host_flush(addr); + adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_EXTENDED_MOUSE); + + _delay_ms(20); + mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; + + + if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) { + _delay_ms(20); + adb_host_flush(addr); + adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_CLASSIC2_MOUSE); + + _delay_ms(20); + mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; + } + + if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) { + xprintf("Classic 100cpi\n"); + mouse_cpi = 100; + } + if (mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) { + xprintf("Classic 200cpi\n"); + mouse_cpi = 200; + } + } // Extended Mouse Protocol if (mouse_handler == ADB_HANDLER_EXTENDED_MOUSE) { @@ -128,12 +201,8 @@ void matrix_init(void) // 7 : num of buttons uint8_t len; uint8_t buf[8]; - len = adb_host_talk_buf(ADB_ADDR_MOUSE, ADB_REG_1, buf, sizeof(buf)); - if (len) { - xprintf("Devinfo: [", len); - for (int8_t i = 0; i < len; i++) xprintf("%02X ", buf[i]); - xprintf("]\n"); - } + _delay_ms(20); + len = adb_host_talk_buf(addr, ADB_REG_1, buf, sizeof(buf)); if (len > 5) { mouse_cpi = (buf[4]<<8) | buf[5]; @@ -141,61 +210,67 @@ void matrix_init(void) mouse_cpi = 100; } - // Kensington Turbo Mouse 5 - if (len == 8 && buf[0] == 0x4B && buf[1] == 0x4D && buf[2] == 0x4C && buf[3] == 0x31) { - xprintf("Turbo Mouse 5\n"); - - // Turbo Mouse command sequence to enable four buttons - // https://elixir.bootlin.com/linux/v4.4/source/drivers/macintosh/adbhid.c#L1176 - // https://github.com/NetBSD/src/blob/64b8a48e1288eb3902ed73113d157af50b2ec596/sys/arch/macppc/dev/ams.c#L261 - static uint8_t cmd1[] = { 0xE7, 0x8C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94 }; - static uint8_t cmd2[] = { 0xA5, 0x14, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0x27 }; - - // configure with new address 9 - adb_host_listen(ADB_ADDR_MOUSE, ADB_REG_3, 0x69, 0xFE); - adb_host_flush(9); - - adb_host_flush(ADB_ADDR_MOUSE); - adb_host_listen_buf(ADB_ADDR_MOUSE, ADB_REG_2, cmd1, sizeof(cmd1)); - adb_host_flush(ADB_ADDR_MOUSE); - adb_host_listen_buf(ADB_ADDR_MOUSE, ADB_REG_2, cmd2, sizeof(cmd2)); + if (len) { + xprintf("Ext: [", len); + for (int8_t i = 0; i < len; i++) xprintf("%02X ", buf[i]); + xprintf("] cpi=%d\n", mouse_cpi); } - // Add device specific init here + + // Kensington Turbo Mouse 5: default device + if (buf[0] == 0x4B && buf[1] == 0x4D && buf[2] == 0x4C && buf[3] == 0x31) { + xprintf("TM5: default\n"); + // Move it to addr0 to remove this device and get new device with handle id 50 on addr 3 + // and the new device on address 3 should be handled with command sequence later. + // + // Turbo Mouse 5 has one default device on addr3 as normal mouse at first, and another device + // with hander id 50 appears after the default device is moved from addr3. + // The mouse has the two devices at same time transiently in the result. The default device is + // removed automatically after the another device receives command sequence. + // NOTE: The mouse hangs if you try moving the two deivces to same address. + adb_host_flush(addr); + adb_host_listen(addr, ADB_REG_3, ((reg3 >> 8) & 0xF0) | ADB_ADDR_0, 0xFE); + } else { + xprintf("Unknown\n"); + } } - mouse_handler = adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_3) & 0xff; - mouse_handler = mouse_handler ? mouse_handler : ADB_HANDLER_CLASSIC1_MOUSE; - xprintf("handler: %d\n", mouse_handler); - xprintf("cpi: %d\n", mouse_cpi); - #endif + if (mouse_handler == ADB_HANDLER_TURBO_MOUSE) { + xprintf("TM5: ext\n"); + + // Kensington Turbo Mouse 5 command sequence to enable four buttons + // https://elixir.bootlin.com/linux/v4.4/source/drivers/macintosh/adbhid.c#L1176 + // https://github.com/NetBSD/src/blob/64b8a48e1288eb3902ed73113d157af50b2ec596/sys/arch/macppc/dev/ams.c#L261 + static uint8_t cmd1[] = { 0xE7, 0x8C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94 }; + static uint8_t cmd2[] = { 0xA5, 0x14, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0x27 }; - xprintf("\nScan:\n"); - for (uint8_t addr = 1; addr < 16; addr++) { - uint16_t reg3 = adb_host_talk(addr, ADB_REG_3); - if (reg3) { - xprintf(" addr:%d, reg3:%04X\n", addr, reg3); - } _delay_ms(20); + adb_host_flush(addr); + adb_host_listen_buf(addr, ADB_REG_2, cmd1, sizeof(cmd1)); + adb_host_flush(addr); + adb_host_listen_buf(addr, ADB_REG_2, cmd2, sizeof(cmd2)); } - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; - led_set(host_keyboard_leds()); + // Move all mouses to a address after init to be polled + _delay_ms(20); + adb_host_flush(addr); + adb_host_listen(addr, ADB_REG_3, ((reg3 >> 8) & 0xF0) | ADB_ADDR_MOUSE_POLL, 0xFE); + adb_host_flush(ADB_ADDR_MOUSE_POLL); - debug_enable = true; - //debug_matrix = true; - //debug_keyboard = true; - debug_mouse = true; + _delay_ms(20); + mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; + if (reg3) { + dmprintf("detect again\n"); + goto detect_again; + } - // LED off - DDRD |= (1<<6); PORTD &= ~(1<<6); - return; + goto again; + +// dmprintf("handler: %d\n", mouse_handler); +// dmprintf("cpi: %d\n", mouse_cpi); } -#ifdef ADB_MOUSE_ENABLE - #ifdef MAX #undef MAX #endif @@ -217,6 +292,14 @@ void adb_mouse_task(void) if (timer_elapsed(tick_ms) < 12) return; tick_ms = timer_read(); + static uint16_t detect_ms; + if (timer_elapsed(detect_ms) > 1000) { + detect_ms = timer_read(); + dmprintf("."); + // check new device on addr3 + mouse_init(ADB_ADDR_MOUSE); + } + // Extended Mouse Protocol data can be 2-5 bytes // https://developer.apple.com/library/archive/technotes/hw/hw_01.html#Extended // @@ -229,7 +312,7 @@ void adb_mouse_task(void) // b--: Button state.(0: on, 1: off) // x--: X axis movement. // y--: Y axis movement. - len = adb_host_talk_buf(ADB_ADDR_MOUSE, ADB_REG_0, buf, sizeof(buf)); + len = adb_host_talk_buf(ADB_ADDR_MOUSE_POLL, ADB_REG_0, buf, sizeof(buf)); // If nothing received reset mouse acceleration, and quit. if (len < 2) { diff --git a/tmk_core/protocol/adb.c b/tmk_core/protocol/adb.c index 7feffb30..36005951 100644 --- a/tmk_core/protocol/adb.c +++ b/tmk_core/protocol/adb.c @@ -1,5 +1,5 @@ /* -Copyright 2011 Jun WAKO +Copyright 2011-19 Jun WAKO Copyright 2013 Shay Green This software is licensed with a Modified BSD License. @@ -113,18 +113,71 @@ uint8_t adb_host_talk_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) attention(); send_byte((addr<<4) | ADB_CMD_TALK | reg); place_bit0(); // Stopbit(0) + // TODO: Service Request(Srq): + // Device holds low part of comannd stopbit for 140-260us + // + // Command: + // ......._ ______________________ ___ ............_ ------- + // | | | | | | | + // Command | | | | | Data bytes | | + // ........|___| | 140-260 |__| |_............|___| + // |stop0 | Tlt Stop-to-Start |start1| |stop0 | + // + // Command without data: + // ......._ __________________________ + // | | + // Command | | + // ........|___| | 140-260 | + // |stop0 | Tlt Stop-to-Start | + // + // Service Request: + // ......._ ______ ___ ............_ ------- + // | 140-260 | | | | | | + // Command | Service Request | | | | Data bytes | | + // ........|___________________| |__| |_............|___| + // |stop0 | |start1| |stop0 | + // ......._ __________ + // | 140-260 | + // Command | Service Request | + // ........|___________________| + // |stop0 | + // This can be happened? + // ......._ ______________________ ___ ............_ ----- + // | | | | | | 140-260 | + // Command | | | | | Data bytes | Service Request | + // ........|___| | 140-260 |__| |_............|_________________| + // |stop0 | Tlt Stop-to-Start |start1| |stop0 | + // + // "Service requests are issued by the devices during a very specific time at the + // end of the reception of the command packet. + // If a device in need of service issues a service request, it must do so within + // the 65 µs of the Stop Bit’s low time and maintain the line low for a total of 300 µs." + // + // "A device sends a Service Request signal by holding the bus low during the low + // portion of the stop bit of any command or data transaction. The device must lengthen + // the stop by a minimum of 140 J.lS beyond its normal duration, as shown in Figure 8-15." + // http://ww1.microchip.com/downloads/en/AppNotes/00591b.pdf if (!wait_data_hi(500)) { // Service Request(310us Adjustable Keyboard): just ignored + xprintf("R"); sei(); - return -30; // something wrong + return 0; } if (!wait_data_lo(500)) { // Tlt/Stop to Start(140-260us) sei(); - return 0; // No data to send + return 0; // No data from device(not error); } // start bit(1) - if (!wait_data_hi(40)) return 0; - if (!wait_data_lo(100)) return 0; + if (!wait_data_hi(40)) { + xprintf("S"); + sei(); + return 0; + } + if (!wait_data_lo(100)) { + xprintf("s"); + sei(); + return 0; + } uint8_t n = 0; // bit count do { @@ -143,7 +196,7 @@ uint8_t adb_host_talk_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) uint8_t hi = (uint8_t) wait_data_lo(lo); if (!hi) - goto error; // stop bit extedned by Srq + goto error; // stop bit extedned by Srq? if (n/8 >= len) continue; // can't store in buf @@ -174,6 +227,7 @@ void adb_host_listen_buf(uint8_t addr, uint8_t reg, uint8_t *buf, uint8_t len) attention(); send_byte((addr<<4) | ADB_CMD_LISTEN | reg); place_bit0(); // Stopbit(0) + // TODO: Service Request _delay_us(200); // Tlt/Stop to Start place_bit1(); // Startbit(1) for (int8_t i = 0; i < len; i++) { diff --git a/tmk_core/protocol/adb.h b/tmk_core/protocol/adb.h index 52932c94..5e155cbc 100644 --- a/tmk_core/protocol/adb.h +++ b/tmk_core/protocol/adb.h @@ -1,5 +1,5 @@ /* -Copyright 2011 Jun WAKO +Copyright 2011-19 Jun WAKO This software is licensed with a Modified BSD License. All of this is supposed to be Free Software, Open Source, DFSG-free, @@ -54,11 +54,23 @@ POSSIBILITY OF SUCH DAMAGE. /* ADB commands */ // Default Address +#define ADB_ADDR_0 0 #define ADB_ADDR_DONGLE 1 #define ADB_ADDR_KEYBOARD 2 #define ADB_ADDR_MOUSE 3 #define ADB_ADDR_TABLET 4 #define ADB_ADDR_APPLIANCE 7 +#define ADB_ADDR_8 8 +#define ADB_ADDR_9 9 +#define ADB_ADDR_10 10 +#define ADB_ADDR_11 11 +#define ADB_ADDR_12 12 +#define ADB_ADDR_13 13 +#define ADB_ADDR_14 14 +#define ADB_ADDR_15 15 +// for temporary purpose, do not use for polling +#define ADB_ADDR_TMP 15 +#define ADB_ADDR_MOUSE_POLL 10 // Command Type #define ADB_CMD_RESET 0 #define ADB_CMD_FLUSH 1 @@ -80,6 +92,7 @@ POSSIBILITY OF SUCH DAMAGE. #define ADB_HANDLER_CLASSIC1_MOUSE 0x01 #define ADB_HANDLER_CLASSIC2_MOUSE 0x02 #define ADB_HANDLER_EXTENDED_MOUSE 0x04 +#define ADB_HANDLER_TURBO_MOUSE 0x32 // ADB host From daf1ef1db2dd2d22f47f7acfa1527eae9d7c3521 Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 21 Jun 2019 14:40:09 +0900 Subject: [PATCH 26/71] adb_usb: Clean repository --- converter/adb_usb/MEMO.txt | 27 ----------- converter/adb_usb/Makefile | 32 ++++++------- converter/adb_usb/Makefile.teensy | 3 -- converter/adb_usb/Makefile.unimap.rev1 | 5 -- converter/adb_usb/Makefile.unimap.rev2 | 5 -- converter/adb_usb/README.md | 42 ++++++++--------- converter/adb_usb/led.c | 27 ----------- converter/adb_usb/matrix.c | 5 ++ .../adb_usb/{ => old_keymap}/keymap_ansi.c | 0 .../adb_usb/{ => old_keymap}/keymap_common.h | 47 ------------------- .../adb_usb/{ => old_keymap}/keymap_hasu.c | 0 .../adb_usb/{ => old_keymap}/keymap_iso.c | 0 .../adb_usb/{ => old_keymap}/keymap_plain.c | 0 13 files changed, 40 insertions(+), 153 deletions(-) delete mode 100644 converter/adb_usb/MEMO.txt delete mode 100644 converter/adb_usb/Makefile.teensy delete mode 100644 converter/adb_usb/Makefile.unimap.rev1 delete mode 100644 converter/adb_usb/Makefile.unimap.rev2 delete mode 100644 converter/adb_usb/led.c rename converter/adb_usb/{ => old_keymap}/keymap_ansi.c (100%) rename converter/adb_usb/{ => old_keymap}/keymap_common.h (93%) rename converter/adb_usb/{ => old_keymap}/keymap_hasu.c (100%) rename converter/adb_usb/{ => old_keymap}/keymap_iso.c (100%) rename converter/adb_usb/{ => old_keymap}/keymap_plain.c (100%) diff --git a/converter/adb_usb/MEMO.txt b/converter/adb_usb/MEMO.txt deleted file mode 100644 index f079442c..00000000 --- a/converter/adb_usb/MEMO.txt +++ /dev/null @@ -1,27 +0,0 @@ -ADB keyboard handle id -====================== -0x01 Apple Standard keyboard M0116 ANSI -0x01 Apple Desktop Bus keyboard 658-4081 ANSI -0x02 Apple Extended Keyboard M0115 ANSI -0x02 Apple Extended Keyboard II M3501 ANSI -0x03 Logical id for Extended Protocol -0x10 Apple Adjustable keyboard M1242 ANSI - - -Adjustable Keyboard media key -============================= -Media key part has different address than the main keyboard(0x02). - -Device Address: 0x07(Appliances/Misc devices) -Handler ID: 0x02 - -Scan Codes ----------- -Media key ADB Code Code in Matix ------------------------------------------ -Volume Up: 0x03 0x48 -Volume Down: 0x02 0x49 -Mute: 0x01 0x4a -Mic: 0x00 0x42 - -As for these keys raw ADB codes are translate into logical codes in matrix. diff --git a/converter/adb_usb/Makefile b/converter/adb_usb/Makefile index 14fc181b..fe94d9f7 100644 --- a/converter/adb_usb/Makefile +++ b/converter/adb_usb/Makefile @@ -9,7 +9,6 @@ TARGET_DIR ?= . # project specific files SRC ?= matrix.c \ - led.c \ adb.c CONFIG_H = config.h @@ -64,26 +63,27 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Atmel DFU loader 4096 for TMK Converter rev.1/rev.2 # LUFA bootloader 4096 # USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +BOOTLOADER_SIZE ?= 4096 +OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE) # 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 -#UNIMAP_ENABLE = yes -#ACTIONMAP_ENABLE = yes # Use 16bit actionmap instead of 8bit keymap -#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor +BOOTMAGIC_ENABLE ?= no # 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 +NKRO_ENABLE ?= no # USB Nkey Rollover +ADB_MOUSE_ENABLE ?= yes # ADB Mouse support +UNIMAP_ENABLE ?= yes # Use unimap +ACTIONMAP_ENABLE ?= no # 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 +ADB_MOUSE_MAXACC ?= 8 +OPT_DEFS += -DADB_MOUSE_MAXACC=$(ADB_MOUSE_MAXACC) # Optimize size but this may cause error "relocation truncated to fit" @@ -93,10 +93,10 @@ OPT_DEFS += -DADB_MOUSE_MAXACC=8 # # Keymap file # -ifdef UNIMAP_ENABLE +ifeq (yes,$(strip $(UNIMAP_ENABLE))) KEYMAP_FILE = unimap else - ifdef ACTIONMAP_ENABLE + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) KEYMAP_FILE = actionmap else KEYMAP_FILE = keymap diff --git a/converter/adb_usb/Makefile.teensy b/converter/adb_usb/Makefile.teensy deleted file mode 100644 index 604e3642..00000000 --- a/converter/adb_usb/Makefile.teensy +++ /dev/null @@ -1,3 +0,0 @@ -TARGET = adb_usb_teensy -MCU = atmega32u4 -include Makefile diff --git a/converter/adb_usb/Makefile.unimap.rev1 b/converter/adb_usb/Makefile.unimap.rev1 deleted file mode 100644 index 41ec16e6..00000000 --- a/converter/adb_usb/Makefile.unimap.rev1 +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 3e46eeeb..00000000 --- a/converter/adb_usb/Makefile.unimap.rev2 +++ /dev/null @@ -1,5 +0,0 @@ -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 2240d023..4125568d 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 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. +This firmware converts Apple ADB keyboard/mouse protocol to USB, you can use it to plug old ADB keyboard/mouse into modern computer. It works on prebuilt TMK ADB-USB Converter or generic dev board with USB AVR MCU(ATMega32U4/2) like Teensy2.0. -Discuss here: http://geekhack.org/showwiki.php?title=Island:14290 +Discuss about this here: http://geekhack.org/showwiki.php?title=Island:14290 -You can buy a TMK converter here: https://geekhack.org/index.php?topic=72052.0 +Prebuilt TMK ADB-USB converter is available here: https://geekhack.org/index.php?topic=72052.0 @@ -21,13 +21,15 @@ https://github.com/tmk/tmk_keyboard/labels/NOTE Wiring ------ -Connect ADB pins to controller just by 3 lines(Vcc, GND, Data). By default Data line uses port PD0. +If you build this yourself you have to solder some wires. +Connect ADB pins to controller just by 3 lines(Vcc, GND, Data) at least. By default Data line uses port PD0. +This is not needed but you can connect PSW to PD1 optionally. ADB female socket from the front: ,--_--. / o4 3o \ 1: DATA - | o2 1o | 2: Power SW + | o2 1o | 2: PSW(Power SW) - === - 3: VCC `-___-' 4: GND @@ -36,13 +38,13 @@ https://github.com/tmk/tmk_keyboard/wiki/FAQ#pull-up-resistor Pull-up resister: - Keyboard Conveter + Keyboard AVR MCU ,------. 5V------+------|VCC | | | | [R] | | | | | - Signal--+------|PD0 | + DATA----+------|PD0 | | | GND------------|GND | `------' @@ -58,31 +60,29 @@ Build firmware and Program microcontroller ------------------------------------------ See [doc/build.md](../../tmk_core/doc/build.md). -To build firmware and program TMK Converter run these commands: +To build firmware and program TMK ADB-USB Converter run these commands: $ make -f Makefile clean - $ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)] - $ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)] dfu + $ make -f Makefile [KEYMAP=yourname] + $ make -f Makefile [KEYMAP=yourname] dfu -You can select keymap with optional `KEYMAP=` (plain is default). Push button on the converter before running `dfu` target. +You can select keymap name with optional `KEYMAP=` ('plain' is default name). Push button on the converter before running `dfu` target. -Use **Makefile.rev1** for old TMK Converter rev.1 and **Makefile.teensy** for Teensy2.0 instead of **Makefile**. For TMK Converter rev.2 just use **Makefile**. - -To program Teensy you can use `teensy` target: - - $ make -f Makefile.teensy [KEYMAP=(plain|ansi|iso|hasu)] teensy +Use **Makefile.rev1** for old TMK Converter rev.1 and Teensy2.0 instead of **Makefile**. Keymap ------ -You can change a keymap by editing code of keymap_[plain|ansi|iso|hasu|yours].c. +You can change keymap by editing code of unimap_plain.c directly, or copy it to your own keymap file like unimap_yourname.c and edit the file. How to define the keymap is probably obvious. You can find key symbols in common/keycode.h. And see [doc/keymap.md](../../tmk_core/doc/keymap.md) for more detail. Magic command ------------- -To get help press `h` holding Magic key. Magic key is `Power key`. +To get help message in hid_listen press `h` holding Magic key. Magic key is `Power key`. + +https://github.com/tmk/tmk_keyboard/wiki#debug Locking CapsLock @@ -106,11 +106,7 @@ you will always see left control even if you press right control key. Apple Extended Keyboard and Apple Extended Keyboard II can discriminate both side modifiers except for GUI key(Windows/Command). -And most ADB keyboard has no diodes in its matrix so they are not NKRO, +And most of ADB keyboards have no diodes in its matrix so they are not NKRO unfortunately, though ADB protocol itself supports it. See protocol/adb.c for more info. -If keyboard has ISO layout you may have swapped keys problem, see this for the detail. - -https://github.com/tmk/tmk_keyboard/issues/35 - EOF diff --git a/converter/adb_usb/led.c b/converter/adb_usb/led.c deleted file mode 100644 index ea9bf77b..00000000 --- a/converter/adb_usb/led.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2011 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 "adb.h" -#include "led.h" - - -void led_set(uint8_t usb_led) -{ - adb_host_kbd_led(ADB_ADDR_KEYBOARD, ~usb_led); -} diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index 966ccf52..a1dddf9f 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -337,3 +337,8 @@ static void register_key(uint8_t key) matrix[row] |= (1<. } #endif - - -/* -ADB ANSI/ISO Keymapping Note -============================ -ANSI -,----------- ----------. -| *a| 1| 2 =|Backspa| -|----------- ----------| -|Tab | Q| | ]| *c| -|----------- ----------| -|CapsLo| A| '|Return | -|----------- ----------| -|Shift | Shift | -`----------- ----------' - -ISO -,----------- ----------. -| *a| 1| 2 =|Backspa| -|----------- ----------| -|Tab | Q| | ]|Retur| -|----------- -----` | -|CapsLo| A| '| *c| | -|----------- ----------| -|Shif| *b| Shift | -`----------- ----------' - -ADB Keyboard scan code: - ADB scan code USB usage - ------------- --------- -Key ANSI ISO ANSI ISO ---------------------------------------------- -*a 0x32 0x0A 0x35 0x35 -*b ---- 0x32 ---- 0x64 -*c 0x2A 0x2A 0x31 0x31(or 0x32) - - -TMK ADB-USB mapping: -ADB USB(ANSI) USB(ISO) ---------------------------------- -0x32 0x35 0x64 -0x0A ---- 0x35 -0x2A 0x31 0x31(or 0x32) - -Note that mappings of ADB code 0x32 are diffrent between ANSI and ISO keyboard. -https://github.com/tmk/tmk_keyboard/issues/35 - */ diff --git a/converter/adb_usb/keymap_hasu.c b/converter/adb_usb/old_keymap/keymap_hasu.c similarity index 100% rename from converter/adb_usb/keymap_hasu.c rename to converter/adb_usb/old_keymap/keymap_hasu.c diff --git a/converter/adb_usb/keymap_iso.c b/converter/adb_usb/old_keymap/keymap_iso.c similarity index 100% rename from converter/adb_usb/keymap_iso.c rename to converter/adb_usb/old_keymap/keymap_iso.c diff --git a/converter/adb_usb/keymap_plain.c b/converter/adb_usb/old_keymap/keymap_plain.c similarity index 100% rename from converter/adb_usb/keymap_plain.c rename to converter/adb_usb/old_keymap/keymap_plain.c From 0fec847611726a132bd4181c83f960b00be5ea6e Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 23 Jun 2019 14:55:09 +0900 Subject: [PATCH 27/71] adb_usb: Remove unnecessary waits --- converter/adb_usb/matrix.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index d2da841c..d49adfb2 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -21,7 +21,6 @@ along with this program. If not, see . #include #include #include -#include #include "print.h" #include "util.h" #include "debug.h" @@ -31,6 +30,7 @@ along with this program. If not, see . #include "host.h" #include "led.h" #include "timer.h" +#include "wait.h" @@ -57,7 +57,6 @@ static void device_scan(void) if (reg3) { xprintf(" addr:%d, reg3:%04X\n", addr, reg3); } - _delay_ms(20); } } @@ -72,8 +71,9 @@ void matrix_init(void) DDRD |= (1<<6); PORTD |= (1<<6); adb_host_init(); - // wait for keyboard to boot up and receive command - _delay_ms(2000); + + // wait for line and device to be stable + wait_ms(100); device_scan(); @@ -140,20 +140,15 @@ static void mouse_init(uint8_t orig_addr) uint8_t addr; again: - // Some old mouses seems to need wait between commands. - _delay_ms(20); mouse_handler = (reg3 = adb_host_talk(orig_addr, ADB_REG_3)) & 0xFF; if (!reg3) return; dmprintf("addr%d reg3: %02X\n", orig_addr, reg3); // Move device to tmp address - _delay_ms(20); adb_host_flush(orig_addr); - _delay_ms(20); adb_host_listen(orig_addr, ADB_REG_3, ((reg3 >> 8) & 0xF0) | ADB_ADDR_TMP, 0xFE); adb_host_flush(ADB_ADDR_TMP); - _delay_ms(20); mouse_handler = (reg3 = adb_host_talk(ADB_ADDR_TMP, ADB_REG_3)) & 0xFF; if (!reg3) { dmprintf("move fail\n"); @@ -165,20 +160,16 @@ again: detect_again: if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE || mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) { - _delay_ms(20); adb_host_flush(addr); adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_EXTENDED_MOUSE); - _delay_ms(20); mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) { - _delay_ms(20); adb_host_flush(addr); adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_CLASSIC2_MOUSE); - _delay_ms(20); mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; } @@ -201,7 +192,6 @@ detect_again: // 7 : num of buttons uint8_t len; uint8_t buf[8]; - _delay_ms(20); len = adb_host_talk_buf(addr, ADB_REG_1, buf, sizeof(buf)); if (len > 5) { @@ -244,7 +234,6 @@ detect_again: static uint8_t cmd1[] = { 0xE7, 0x8C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94 }; static uint8_t cmd2[] = { 0xA5, 0x14, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0x27 }; - _delay_ms(20); adb_host_flush(addr); adb_host_listen_buf(addr, ADB_REG_2, cmd1, sizeof(cmd1)); adb_host_flush(addr); @@ -253,12 +242,10 @@ detect_again: // Move all mouses to a address after init to be polled - _delay_ms(20); adb_host_flush(addr); adb_host_listen(addr, ADB_REG_3, ((reg3 >> 8) & 0xF0) | ADB_ADDR_MOUSE_POLL, 0xFE); adb_host_flush(ADB_ADDR_MOUSE_POLL); - _delay_ms(20); mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; if (reg3) { dmprintf("detect again\n"); @@ -295,7 +282,6 @@ void adb_mouse_task(void) static uint16_t detect_ms; if (timer_elapsed(detect_ms) > 1000) { detect_ms = timer_read(); - dmprintf("."); // check new device on addr3 mouse_init(ADB_ADDR_MOUSE); } From 6df651203a405e386ad1f126755ecb841d5c4685 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 22 Jun 2019 08:35:57 +0900 Subject: [PATCH 28/71] adb_usb: Change Unimap for ADB keyboard --- converter/adb_usb/unimap_common.h | 55 +++++++++++------- converter/adb_usb/unimap_plain.c | 95 +++++++++++++++++++++++++------ 2 files changed, 113 insertions(+), 37 deletions(-) diff --git a/converter/adb_usb/unimap_common.h b/converter/adb_usb/unimap_common.h index 96f8a872..71b69f05 100644 --- a/converter/adb_usb/unimap_common.h +++ b/converter/adb_usb/unimap_common.h @@ -1,5 +1,5 @@ /* -Copyright 2016 Jun Wako +Copyright 2016-19 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 @@ -22,26 +22,43 @@ along with this program. If not, see . #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| +| - * |-----------------------------------------------------------| ,---. |---------------| +/* ADB Keyboard unified layout + * ,---. .---------------. ,---------------. ,---------------. ,-----------. ,---. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr| + * `---' `---------------' `---------------' `---------------' `-----------' `---' + * ,-----------------------------------------------------------. ,-----------. ,---------------. ,---. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *| |VUp| + * |-----------------------------------------------------------| |-----------| |---------------| |---| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| -| |VDn| + * |-----------------------------------------------------------| `-----------' |---------------| |---| + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| +| |Mut| + * |-----------------------------------------------------------| ,---. |---------------| `---' * |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) + * |-----------------------------------------------------------| ,-----------. |-----------|Ent| ,---. + * |Ctrl |Opt |Gui | Space |Gui* |Opt |Ctrl | |Lef|Dow|Rig| | 0| .| | |Ply| + * `-----------------------------------------------------------' `-----------' `---------------' `---' + * NOTE: Not-extended ADB keyboards have no discrimination between left and right modifiers. + * Use left ones for mapping. Right modifier always sends same code as left one. + * Apple Extended Keyboard can discriminate the modifiers except for Command(GUI) key. */ +#define UNIMAP_ADB( \ + K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, K73, \ + K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E, K2A, K49,K4A,K4B, K53,K54,K55,K56, K02, \ + K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, K4C,K4D,K4E, K5F,K60,K61,K57, K01, \ + K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K32,K28, K5C,K5D,K5E,K66, K03, \ + K79,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K7D, K52, K59,K5A,K5B,K58, \ + K78,K7A,K7B, K2C, K7E,K7C, K50,K51,K4F, K62,K63, K68 \ +) UNIMAP( \ + K68, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, 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, JYEN,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, RO, K7D, K52, K59, K5A, K5B, K58, \ + K78, K7B, K7A, MHEN, K2C, HENK,KANA,K7E, RGUI,APP, K7C, K50, K51, K4F, K62, K63, PEQL \ +) + + // 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 diff --git a/converter/adb_usb/unimap_plain.c b/converter/adb_usb/unimap_plain.c index 3d2b56f3..16a806a7 100644 --- a/converter/adb_usb/unimap_plain.c +++ b/converter/adb_usb/unimap_plain.c @@ -1,5 +1,5 @@ /* -Copyright 2016 Jun Wako +Copyright 2016-19 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 @@ -18,7 +18,7 @@ along with this program. If not, see . #define AC_FN0 ACTION_LAYER_TAP_KEY(1, KC_GRV) -#define AC_FN1 ACTION_LAYER_TAP_KEY(1, KC_BSLS) +#define AC_FN1 ACTION_LAYER_TAP_KEY(2, KC_BSLS) #define AC_PKEY ACTION_MODS_TAP_KEY(MOD_NONE, KC_POWER) #ifdef KEYMAP_SECTION_ENABLE @@ -26,22 +26,81 @@ const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (" #else const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { #endif - UNIMAP( - MPLY,NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, PKEY, - 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, PENT, - LCTL,LGUI,LALT,NO, SPC, NO, NO, RALT,RGUI,NO, RCTL, LEFT,DOWN,RGHT, P0, PDOT,NO + /* ADB Keyboard unified layout + * ,---. .---------------. ,---------------. ,---------------. ,-----------. ,---. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr| + * `---' `---------------' `---------------' `---------------' `-----------' `---' + * ,-----------------------------------------------------------. ,-----------. ,---------------. ,---. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *| |VUp| + * |-----------------------------------------------------------| |-----------| |---------------| |---| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| -| |VDn| + * |-----------------------------------------------------------| `-----------' |---------------| |---| + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|# |Retn| | 4| 5| 6| +| |Mut| + * |-----------------------------------------------------------| ,---. |---------------| `---' + * |Shif|\ | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------|Ent| ,---. + * |Ctrl |Opt |Gui | Space |Gui* |Opt |Ctrl | |Lef|Dow|Rig| | 0| .| | |Ply| + * `-----------------------------------------------------------' `-----------' `---------------' `---' + * NOTE: Not-extended ADB keyboards have no discrimination between left and right modifiers. + * Use left ones for mapping. Right modifier always sends same code as left one. + * Apple Extended Keyboard can discriminate the modifiers except for Command(GUI) key. + */ + [0] = UNIMAP_ADB( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, PKEY, + FN0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PEQL,PSLS,PAST, VOLU, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, FN1, DEL, END, PGDN, P7, P8, P9, PMNS, VOLD, + LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, PPLS, MUTE, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3, PENT, + LCTL,LALT,LGUI, SPC, RALT,RCTL, LEFT,DOWN,RGHT, P0, PDOT, MPLY ), - 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 + + /* + * ,---. .---------------. ,---------------. ,---------------. ,-----------. ,---. + * | `| | | | | | | | | | | | | | | | | | | | | | + * `---' `---------------' `---------------' `---------------' `-----------' `---' + * ,-----------------------------------------------------------. ,-----------. ,---------------. ,---. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | | | | | | | | | | | | + * |-----------------------------------------------------------| |-----------| |---------------| |---| + * | | | | | | | | |PrS|ScL|Pau|Up |INS| | | | | | | | | | | | | + * |-----------------------------------------------------------| `-----------' |---------------| |---| + * |CapsLo|VoD|VoU|Mut| | | | |Hom|PgU|Lef|Rig|# |Retn| | | | | | | | + * |-----------------------------------------------------------| ,---. |---------------| `---' + * | | | | | | | | | |End|PgD|Dow|Shift | |PgU| | | | | | + * |-----------------------------------------------------------| ,-----------. |-----------| | ,---. + * | | | | | | | | |Hom|PgD|End| | | | | | | + * `-----------------------------------------------------------' `-----------' `---------------' `---' + */ + [1] = UNIMAP_ADB( + GRV, 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, DEL, TRNS,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, + 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,TRNS,END, PGDN,DOWN, TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS, TRNS + ), + + /* + * ,---. .---------------. ,---------------. ,---------------. ,-----------. ,---. + * | `| | | | | | | | | | | | | | | | | | | | | | + * `---' `---------------' `---------------' `---------------' `-----------' `---' + * ,-----------------------------------------------------------. ,-----------. ,---------------. ,---. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | | | | | | | | | | | | + * |-----------------------------------------------------------| |-----------| |---------------| |---| + * | | | | | | | | |PrS|ScL|Pau|Up |INS| | | | | | | | | | | | | + * |-----------------------------------------------------------| `-----------' |---------------| |---| + * |CapsLo|VoD|VoU|Mut| | | | |Hom|PgU|Lef|Rig|# |Retn| | | | | | | | + * |-----------------------------------------------------------| ,---. |---------------| `---' + * | | | | | | | | | |End|PgD|Dow|Shift | |PgU| | | | | | + * |-----------------------------------------------------------| ,-----------. |-----------| | ,---. + * | | | | | | | | |Hom|PgD|End| | | | | | | + * `-----------------------------------------------------------' `-----------' `---------------' `---' + */ + [2] = UNIMAP_ADB( + GRV, 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, DEL, TRNS,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, + 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,TRNS,END, PGDN,DOWN, TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS, TRNS ), }; From 1b6aa66c8bee34a18f5d7c2d47a68b67dfc77b93 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 23 Jun 2019 15:38:06 +0900 Subject: [PATCH 29/71] adb_usb: Update binary firmware --- .../adb_usb/binary/adb_usb_rev1_unimap.hex | 2683 +++++++++-------- .../adb_usb/binary/adb_usb_rev2_unimap.hex | 2670 ++++++++-------- 2 files changed, 2790 insertions(+), 2563 deletions(-) diff --git a/converter/adb_usb/binary/adb_usb_rev1_unimap.hex b/converter/adb_usb/binary/adb_usb_rev1_unimap.hex index 6ce39af8..acc51bf7 100644 --- a/converter/adb_usb/binary/adb_usb_rev1_unimap.hex +++ b/converter/adb_usb/binary/adb_usb_rev1_unimap.hex @@ -1,17 +1,17 @@ -:100000000C9462050C94A9050C94A9050C94A905FF -:100010000C94A9050C94A9050C94A9050C94A905A8 -:100020000C94A9050C94A9050C94690F0C943B1031 -:100030000C94321F0C94A9050C94A9050C94A905E5 -:100040000C94A9050C94A9050C94A9050C94A90578 -:100050000C94A9050C94A61F0C94A9050C94A90551 -:100060000C94A9050C94A9050C94A9050C94A90558 -:100070000C94A9050C94A9050C94A9050C94A90548 -:100080000C94A9050C94A9050C94A9050C94A90538 -:100090000C94A9050C94A9050C94A9050C94A90528 -:1000A0000C94A9050C94A9050C94A905A810CA10D4 -:1000B000B811CA10B8110F113211B81187119A1165 -:1000C0006715671596159615F41532164C184C18C9 -:1000D0004B164C184C174C1720184C184C18371846 +:100000000C949A050C94E1050C94E1050C94E1051F +:100010000C94E1050C94E1050C94E1050C94E105C8 +:100020000C94E1050C94E1050C948A120C945C1379 +:100030000C9432220C94E1050C94E1050C94E1053A +:100040000C94E1050C94E1050C94E1050C94E10598 +:100050000C94E1050C94A6220C94E1050C94E105A6 +:100060000C94E1050C94E1050C94E1050C94E10578 +:100070000C94E1050C94E1050C94E1050C94E10568 +:100080000C94E1050C94E1050C94E1050C94E10558 +:100090000C94E1050C94E1050C94E1050C94E10548 +:1000A0000C94E1050C94E1050C94E105C913EB13E4 +:1000B000DE14EB13DE1430145314DE14A814BB1436 +:1000C0006A186A1894189418EF182319131B131B35 +:1000D0003A19131B251A251AEB1A131B131B001BA5 :1000E000041607090B0A1D1B06196405141A0815C6 :1000F0001C171E1F202123222E26242D25273012D7 :10010000182F0C13280F0D340E33313638111037D9 @@ -25,1295 +25,1408 @@ :1001800025303458006164625F686F73745F6B621E :10019000645F726563763A20004552524F523A20AE :1001A0006D65646961206B6579300A004552524F74 -:1001B000523A206D65646961206B6579310A005D92 -:1001C0000A0025640020002564007C002530325898 -:1001D00000200025303258006164625F6D6F7573D6 -:1001E00065207261773A205B000A00253031366263 -:1001F000006164625F686F73745F6D6F7573655FD4 -:10020000726563763A2000646562756720656E6189 -:10021000626C65642E0A005363616E3A2061646407 -:10022000723A25642C20726567333A253034580AB7 -:1002300000416674657220696E69743A0A00466FFF -:10024000756E643A206D65646961206B6579730A27 -:10025000005363616E3A20616464723A25642C2015 -:10026000726567333A253034580A004265666F720A -:100270006520696E69743A0A004B6579626F617234 -:10028000642073746172742E0A0055534220636FA8 -:100290006E666967757265642E0A000D0A696E697B -:1002A000740A005B445D005B435D002E0341004423 -:1002B00000420020006B006500790062006F006161 -:1002C0000072006400200063006F006E007600651D -:1002D00000720074006500720000000E0374002EAE -:1002E000006D002E006B002E0000000403090409BD -:1002F000027400040100A03209040000010301019E -:1003000000092111010001224000070581030800B6 -:100310000A09040100010301020009211101000181 -:10032000224D000705820308000A090402000103A8 -:100330000000000921110100012236000705830396 -:1003400008000A090403000203000000092111014A -:100350000001222200070584032000010705040391 -:100360002000011201100100000008EDFEDB0A016F -:1003700001010200010631FF0974A1010975150090 -:1003800026FF009520750881020976150026FF00DA -:10039000952075089102C005010980A1018502160A -:1003A000810026B7001A81002AB7007510950181D7 -:1003B00000C0050C0901A1018503160100269C025D -:1003C0001A01002A9C02751095018100C0050109DF -:1003D00002A1010901A1000509190129051500253E -:1003E00001950575018102950175038101050109DA -:1003F0003009311581257F95027508810609381568 -:1004000081257F950175088106050C0A3802158142 -:10041000257F950175088106C0C005010906A10167 -:10042000050719E029E715002501950875018102E6 -:1004300095017508810105081901290595057501C2 -:1004400091029501750391010507190029FF150017 -:1004500026FF00950675088100C0636F6E73756D89 -:1004600065723A20253034580A0073797374656DCB -:100470003A20253034580A000A002530325820002E -:100480006B6579626F6172643A20004C45443A2092 -:10049000253032580A00253032583A20253038624B -:1004A00025730A00722F63203031323334353637EA -:1004B0000A00290A002575002F002575005D280017 -:1004C000256400200025640020002564002000250C -:1004D00064007C0025303258006D6F7573656B6564 -:1004E00079205B62746E7C782079207620685D28A4 -:1004F0007265702F61636C293A205B006D6B5F77CA -:100500006865656C5F74696D655F746F5F6D617858 -:10051000203D2025640A006D6B5F776865656C5F20 -:100520006D61785F7370656564203D2025640A0005 -:100530006D6B5F74696D655F746F5F6D6178203D91 -:100540002025640A006D6B5F6D61785F737065656F -:1005500064203D2025640A006D6B5F696E746572CE -:1005600076616C203D2025640A006D6B5F64656CCC -:100570006179203D2025640A006D6B5F77686565B1 -:100580006C5F74696D655F746F5F6D6178203D208D -:1005900025640A006D6B5F776865656C5F6D6178D7 -:1005A0005F7370656564203D2025640A006D6B5F94 -:1005B00074696D655F746F5F6D6178203D2025649F -:1005C0000A006D6B5F6D61785F7370656564203DD7 -:1005D0002025640A006D6B5F696E74657276616CCC -:1005E000203D2025640A006D6B5F64656C61792095 -:1005F0003D2025640A000A00257500363A207768F8 -:1006000065656C5F74696D655F746F5F6D61783A85 -:1006100020000A00257500353A20776865656C5F13 -:100620006D61785F73706565643A20000A00257516 -:1006300000343A2074696D655F746F5F6D61783A5C -:1006400020000A00257500333A206D61785F7370D1 -:100650006565643A20000A00257500323A20696E0B -:1006600074657276616C286D73293A20000A002542 -:100670007500313A2064656C6179282A31306D73D8 -:10068000293A20000A092D2056616C756573202DCA -:100690000A004D3E004D25643E20003F0073657406 -:1006A0002064656661756C740A00433E20007768BB -:1006B0006572652064656C74613A20637572736F4E -:1006C000723D25642C20776865656C3D25640A536E -:1006D000656520687474703A2F2F656E2E77696B8C -:1006E0006970656469612E6F72672F77696B692F16 -:1006F0004D6F7573655F6B6579730A000A092D206C -:100700004D6F7573656B6579202D0A4553432F71C5 -:100710003A09717569740A313A0964656C6179281E -:100720002A31306D73290A323A09696E746572761E -:10073000616C286D73290A333A096D61785F7370B3 -:100740006565640A343A0974696D655F746F5F6D3D -:1007500061780A353A09776865656C5F6D61785F25 -:1007600073706565640A363A09776865656C5F740D -:10077000696D655F746F5F6D61780A0A703A097020 -:1007800072696E742076616C7565730A643A0973D8 -:1007900065742064656661756C74730A75703A09D6 -:1007A0002B310A646F776E3A092D310A70677570C4 -:1007B0003A092B31300A7067646F776E3A092D3130 -:1007C000300A0A7370656564203D2064656C74614D -:1007D000202A206D61785F7370656564202A202867 -:1007E000726570656174202F2074696D655F746F28 -:1007F0005F6D6178290A003F004D3E2000433E2096 -:10080000004C25640A000A092D20436F6E736F6C3B -:1008100065202D0A4553432F713A09717569740A91 -:100820006D3A096D6F7573656B65790A000A092D5C -:10083000204D61676963202D0A643A096465627519 -:10084000670A783A096465627567206D6174726938 -:10085000780A6B3A096465627567206B6579626F27 -:100860006172640A6D3A096465627567206D6F751F -:1008700073650A763A0976657273696F6E0A733A20 -:10088000097374617475730A633A09636F6E736FE9 -:100890006C65206D6F64650A302D343A096C61799E -:1008A0006572302D34284631302D4634290A506186 -:1008B00075733A09626F6F746C6F616465720A00D8 -:1008C0003F0074696D65725F726561643332282917 -:1008D0003A202530346C580A006B6579626F61727A -:1008E000645F69646C653A2025580A006B6579621B -:1008F0006F6172645F70726F746F636F6C3A202502 -:10090000580A00686F73745F6B6579626F61726417 -:100910005F6C65647328293A2025580A000A092D5E -:1009200020537461747573202D0A004743433A20A5 -:10093000342E392E32204156522D4C4942433A2012 -:10094000312E382E3073766E204156525F4152431D -:10095000483A20617672350A004F5054494F4E5341 -:100960003A204C554641204D4F5553454B45592053 -:1009700045585452414B455920434F4E534F4C45D7 -:1009800020434F4D4D414E44204B45594D41505F02 -:1009900053454354494F4E20343039360A004255AE -:1009A000494C443A20643030643765382D646972AC -:1009B0007479202831303A31363A3535204A616E23 -:1009C0002031392032303138290A005649443A2042 -:1009D00030784645454428742E6D2E6B2E292050C4 -:1009E00049443A2030783041444228414442206B07 -:1009F0006579626F61726420636F6E76657274658B -:100A00007229205645523A203078303130310A0070 -:100A1000444553433A20636F6E76657274204144B7 -:100A200042206B6579626F61726420746F20555348 -:100A3000420A000A092D2056657273696F6E202DD7 -:100A40000A000A6D6F7573653A206F66660A000AC0 -:100A50006D6F7573653A206F6E0A000A6B65796277 -:100A60006F6172643A206F66660A000A6B6579628C -:100A70006F6172643A206F6E0A000A6D6174726968 -:100A8000783A206F66660A000A6D61747269783A76 -:100A9000206F6E0A000A64656275673A206F6E0AFD -:100AA000000A64656275673A206F66660A000A0A82 -:100AB000626F6F746C6F616465722E2E2E2000431E -:100AC0003E20000011241FBECFEFDAE0DEBFCDBF15 -:100AD00004B603FE27C08091600290916102A0914C -:100AE0006202B09163028730904BA740B04BD1F4C3 -:100AF00010926002109261021092620210926302E0 -:100B000014BE84B7877F84BF0FB6F894A8958091F0 -:100B10006000886180936000109260000FBEE0E08A -:100B2000F8E3099511E0A0E0B1E0EEE1F0E502C0E4 -:100B300005900D92A433B107D9F722E0A4E3B1E008 -:100B400001C01D92A036B207E1F70E94970C0C94E9 -:100B50000D280C940000FF93EF93E0913401F09185 -:100B60003501309709F00995EF91FF910895FC0147 -:100B70008591803011F0EFDFFBCF0895FF27E0E291 -:100B800030E247FF0CC0419597FF09C0EDE2609548 -:100B9000709580959095611D711D811D911D27FF98 -:100BA00002C0219530E350E2AA27660F771F881F05 -:100BB000991FAA1FA41710F0A41B63955A95A9F7B3 -:100BC000AA3008F0A95FA05DAF93F3956115710598 -:100BD0008105910541F7ED3211F4EF93F395F2178A -:100BE00018F43F93F395FBCF8F91B5DFFA95E1F7BA -:100BF0000895E991F9918591803021F0853219F0BD -:100C0000AADFF9CF089520E0E89455915532C1F359 -:100C1000503311F4689455915A3348F4505390F37B -:100C2000220F022E220F220F200D250FF4CF0EF4DB -:100C3000219589919991533619F3533729F15335F9 -:100C400059F1BC0188279927E8945C3621F48991F1 -:100C5000999168945591543639F446EF7EF077FFB8 -:100C60000DC08FEF9FEF0AC055374AE039F0583575 -:100C700040E121F0523642E009F00895FF93EF93EE -:100C80007DDFEF91FF91B7CFFF93EF93FC0181914F -:100C90008030B9F360DFFBCFFF93EF9368DFF1CFD4 -:100CA000DF93CF93CDB7DEB72596A3DFCF91DF914A -:100CB0000895282F2770E82FE695E695E695EF70C2 -:100CC000F0E0E05CFE4F87FF0AC081E090E001C0E9 -:100CD000880F2A95EAF780959081892308C081E0E2 -:100CE00090E001C0880F2A95EAF79081892B8083D4 -:100CF00008950F931F93CF93DF93569A5E9A0E94A5 -:100D000076092FEF87EA91E6215080409040E1F785 -:100D100000C000008BE692E09F938F930E945006E4 -:100D20000F900F90C1E0D0E001E512E063E08C2F5E -:100D30000E947A09009771F09F938F93DF93CF936E -:100D40001F930F930E9450060F900F900F900F90DB -:100D50000F900F909FEF29EF80E09150204080404E -:100D6000E1F700C000002196C031D105F9F663E03B -:100D700082E00E947A0999278131910511F174F47A -:100D800087309105F1F024F404970297F0F419C02C -:100D900089309105B1F00D97C1F413C08D319105E3 -:100DA00081F034F48431910561F0499771F409C000 -:100DB000843C910531F0873C910519F0813C910507 -:100DC00021F481E08093500102C01092500163E051 -:100DD00087E00E947A0991E0823009F090E09093D8 -:100DE0005101992341F08EE392E09F938F930E94EB -:100DF00050060F900F9023E042E063E082E00E94F3 -:100E0000FA0981E392E09F938F930E9450060F901E -:100E10000F90C1E0D0E007E112E063E08C2F0E9468 -:100E20007A09009771F09F938F93DF93CF931F936D -:100E30000F930E9450060F900F900F900F900F90FD -:100E40000F908FEF99EF20E0815090402040E1F724 -:100E500000C000002196C031D105F9F6E0E4F1E0D0 -:100E600080E18E0F11928E13FDCF0E94D5110E944A -:100E70001D098091420281608093420287E092E0E6 -:100E80000E94B705569A5E98DF91CF911F910F91FE -:100E90000895CF93DF938091390190913A010E9498 -:100EA0007C1F0C9708F4D2C00E94641F90933A01F3 -:100EB000809339010E94F609EC01009711F481E05A -:100EC000C3C097FD05C080913B01816080933B01C9 -:100ED000D7FF05C080913B018E7F80933B012D2F72 -:100EE00033272F733327BE016F737727C6FF02C0E6 -:100EF00060547109D6FF02C0205431094091380175 -:100F0000042E000C550B649FC001659F900D749FCB -:100F1000900D112481386FEF960714F481E89FEF4C -:100F200091958195910981386FEF960714F481E8C6 -:100F30009FEF819580933C01249FC001259F900DD8 -:100F4000349F900D112481382FEF920714F481E81B -:100F50009FEF91958195910981386FEF960714F471 -:100F600081E89FEF819580933D018091420283FF4C -:100F700060C081EF91E00E94B705DF93CF938BEEC5 -:100F800091E09F938F930E94500689EE91E00E941A -:100F9000B70588ED91E00E94B70580913801282FB0 -:100FA000082E000C330B3F938F9383ED91E09F93BA -:100FB0008F930E94500681ED91E00E94B7058091C9 -:100FC0003B011F928F938CEC91E09F938F930E9433 -:100FD00050068AEC91E00E94B70580913C01282FD1 -:100FE000082E000C330B3F938F9387EC91E09F9377 -:100FF0008F930E94500685EC91E00E94B705809186 -:101000003D01282F082E000C330B3F938F9382EC69 -:1010100091E09F938F930E9450068FEB91E00E9486 -:10102000B7058DB79EB744960FB6F8949EBF0FBE16 -:101030008DBF8BE391E00E942A128091380191E0EC -:1010400088300CF090E0890F80933801DF91CF91C8 -:1010500008951F93CF93DF93C0910001D0910101B8 -:101060008FEF9FEF9093010180930001CF3F8FEFAF -:10107000D80709F074C080913601909137010E9421 -:101080007C1F0C9710F480E0CEC00E94641F9093E8 -:1010900037018093360182E00E94F309EC01892B2D -:1010A00009F05DC080915101882309F458C087E0A0 -:1010B0000E94F309009709F452C09C012F7733274F -:1010C00022303105A1F048F42115310569F02130B5 -:1010D000310599F480788A641AC02330310551F0C3 -:1010E0002F373105A1F009C08078826410C0807864 -:1010F00089640DC0807888640AC08CEA91E09F936F -:101100008F930E9450060F900F9081E18CC0292F81 -:1011100033272F7733272130310579F050F02230F3 -:10112000310579F02330310581F4EC01D078D864B1 -:1011300016C0EC01D078D26412C0EC01D078DA6429 -:101140000EC0EC01D078D9640AC089E991E09F9380 -:101150008F930E9450060F900F9080E164C08091A1 -:10116000420281FF18C0209709F48DCF85E891E0F5 -:101170000E94B705DF93CF9380E891E09F938F9310 -:101180000E9450068EE791E00E94B7050F900F90E5 -:101190000F900F9003C0209709F475CFCF378FE7DA -:1011A000D80711F48FE705C0CF3F8FEFD80721F4A0 -:1011B0008FEF0E94590636C02D2F3327822F1C2F08 -:1011C0002F3F310581F4DF93CF9380E691E09F9329 -:1011D0008F930E9450060E9479060F900F900F90F7 -:1011E0000F908C2F20C090915001992381F0A9017C -:1011F0004F7755274233510521F42078822F8A609A -:1012000006C04A30510519F42078822F82630E946B -:1012100059061F3F39F0DC2FCC27CF6FD093010147 -:10122000C093000181E0DF91CF911F910895E82FD5 -:10123000F0E0E05CFE4F80810895682F609582E0C9 -:101240000C94340A509A83E091E00197F1F700C0C2 -:10125000000050989AEB9A95F1F700C00895509AC3 -:101260008AEB8A95F1F700C0509883E091E00197EE -:10127000F1F700C000000895EF92FF920F931F93C3 -:10128000CF93DF93C0E0D0E090E8E92EF12C082F57 -:1012900010E0C7010C2E02C0959587950A94E2F7DD -:1012A00080239123892B19F00E942F0902C00E94EC -:1012B00022092196C830D10561F7DF91CF911F91A6 -:1012C0000F91FF90EF900895489B06C023E02A9568 -:1012D000F1F700000197C1F70895489906C023E08F -:1012E0002A95F1F700000197C1F708955898509892 -:1012F00008950895CF92DF92EF92FF920F931F937C -:10130000CF93DF931F92CDB7DEB7182FF894509A82 -:1013100083EF9BE00197F1F700C0000069830E9412 -:101320002F0969816C6020E1129FC0011124862B76 -:101330000E943C090E94220984EF91E00E946D09FD -:10134000892B21F4789482EE9FEF43C084EF91E0E3 -:101350000E946409009711F478943BC011E1C12CFC -:10136000D12C02E882E890E00E946D097C0188237C -:1013700051F199270E946409882329F1CC0CDD1CC6 -:10138000902F9E19E81A9E1518F46894C0F806C0AC -:10139000113121F478948CEE9FEF1BC0115011F79E -:1013A0008FE591E00E946D09892B21F478948BEEF2 -:1013B0009FEF0FC08BE590E00E946409892BB1F785 -:1013C0007894C60106C07894812F90E0919581951C -:1013D00091090F90DF91CF911F910F91FF90EF90A6 -:1013E000DF90CF90089560E00C947A0960E083E08C -:1013F0000C947A091F93CF93DF9300D01F92CDB73F -:10140000DEB7182FF894509A83EF9BE00197F1F71D -:1014100000C000002B834A8369830E942F096981E1 -:10142000686030E1139FC0011124862B0E943C09A3 -:101430000E9422098FE193E00197F1F700C00000BC -:101440000E942F094A81842F0E943C092B81822F00 -:101450000E943C090E94220978940F900F900F90EF -:10146000DF91CF911F910895262F277040E062E011 -:101470000C94FA0980915E0108959FB7F894109238 -:1014800055019FBF90915702943009F057C0909139 -:10149000E9009F703091EC00232F217030FD20E88F -:1014A000922B24E02093E9002091EB0020FF43C021 -:1014B0002091EE0027FF3FC020915201222321F00E -:1014C0002091E80025FF37C01092520126E03091AC -:1014D000E80035FD15C030915702343061F5309188 -:1014E000EB0035FD28C0215021F481E080935201AA -:1014F00022C0EFE9FFE03197F1F700C00000E7CF2D -:101500008093F1008091E80085FD0AC08091E80099 -:1015100080FFFCCF8091E8008E778093E80006C0C2 -:101520008FB7F89421E0209355018FBF9F7090935F -:10153000E90080E008959F709093E9008FEF08958F -:10154000CF93DF9300D01F92CDB7DEB79C0180917F -:101550005702843019F593E099833B832A83909353 -:10156000E9008FEF9091E800815095FD06C095ED60 -:101570009A95F1F700008111F5CF8091E80085FF81 -:101580000DC040E050E063E070E0CE0101960E94A3 -:10159000590D8091E8008E778093E8000F900F90AE -:1015A0000F90DF91CF910895CF93DF9300D01F92DA -:1015B000CDB7DEB720915702243021F522E02983F0 -:1015C0009B838A8383E08093E9008FEF9091E8000A -:1015D000815095FD06C095ED9A95F1F700008111B7 -:1015E000F5CF8091E80085FF0DC040E050E063E05A -:1015F00070E0CE0101960E94590D8091E8008E772F -:101600008093E8000F900F900F90DF91CF91089595 -:10161000209157022430F1F422E02093E9002FEFCB -:101620003091E800215035FD06C035ED3A95F1F7CF -:1016300000002111F5CF2091E80025FF0BC040E00C -:1016400050E065E070E00E94590D8091E8008E77CF -:101650008093E8000895CF93DF93209157022430C0 -:1016600039F521E02093E9002FEF3091E800215077 -:1016700035FD06C035ED3A95F1F700002111F5CFA3 -:101680002091E80025FF14C0EC0140E050E068E044 -:1016900070E00E94590D8091E8008E778093E800F9 -:1016A00088E0FE01A6E5B1E001900D928A95E1F790 -:1016B000DF91CF91089587EA92E00E94B70580916B -:1016C0005602811109C00E94EE0E0E944B0F8091BC -:1016D000E20084608093E200089583EA92E00E9431 -:1016E000B7051092560208950895209153012F5F77 -:1016F000822F62E30E94D327992319F0209353018C -:1017000008951092530180915501882371F18091C1 -:101710005702843041F58091E9008F702091EC00F0 -:10172000922F917020FD90E8892B94E09093E9002E -:101730009091EB0090FF14C09091EE0097FF10C0C5 -:101740009091E80095FF03C01092F100F9CF9091BD -:10175000E80090FF05C09091E8009E779093E80024 -:101760008F708093E90010925501089542E061EC7A -:1017700081E00E94680E42E061EC82E00E94680E07 -:1017800042E061EC83E00E94680E42E261EC84E09A -:101790000C94680E80915902833009F453C030F4E0 -:1017A000813071F0823009F48CC008958A3009F4D8 -:1017B00078C08B3009F45EC0893009F09AC020C02F -:1017C00080915802813A09F094C08091E800877FA7 -:1017D0008093E80080915C0290915D02892B21F456 -:1017E00068E086E591E003C060E080E090E070E0B2 -:1017F0000E94A40D8091E8008B778093E800089503 -:1018000080915802813209F074C080915C029091FD -:101810005D02892B09F06DC08091E800877F80937D -:10182000E8008091E80082FD05C080915702811197 -:10183000F8CF5FC08091F10080935E018091E80055 -:101840008B7753C080915802813A09F052C0809141 -:101850005C0290915D02892B09F04BC08091E800F9 -:10186000877F8093E8008091E80080FFFCCF809123 -:101870000C0136C0809158028132D9F580915C020A -:1018800090915D02892BA9F58091E800877F809374 -:10189000E8000E949D0E80915A0280930C010C94E6 -:1018A0006E1880915802813221F58091E800877F7F -:1018B0008093E8000E949D0E80915B0280935F01FF -:1018C000089580915802813AA1F48091E800877FC1 -:1018D0008093E8008091E80080FFFCCF80915F0159 -:1018E0008093F1008091E8008E778093E8000C945B -:1018F0009D0E08950895089580915E01809354018E -:1019000010925E0180E00E941D090E9468130C94F1 -:101910006E180C947C0C0E94F11E80915502882355 -:1019200029F00E941A1F81110C94430D089584B769 -:10193000877F84BF0FB6F894A89580916000886176 -:1019400080936000109260000FBE90E080E80FB6B8 -:10195000F89480936100909361000FBE8DE39AE04C -:101960000E94C21E8BE992E00E94B7050E947A0C89 -:101970000E9491120E94EE0E0E944B0F8091E20095 -:1019800084608093E2007894809157028430E1F77C -:101990008AE892E00E94B7050E94931282E091E0EB -:1019A0000E94D01189E792E00E94B7050E947B0C4B -:1019B00080915702853019F40E948B0CF9CF0E9458 -:1019C0009912F6CF0E942E1F8091540180935E01E0 -:1019D00008950C94E20C292F332723303105C9F0E8 -:1019E00064F42130310581F02230310509F043C023 -:1019F00084E790E02FEE32E042C021323105F1F071 -:101A00002232310541F137C082E190E023E633E034 -:101A100036C099278130910541F08230910541F01F -:101A2000892B49F5EBEEF2E005C0EBEDF2E002C0E8 -:101A3000EBEAF2E0849190E09F0121C06430D8F499 -:101A4000E62FF0E0EE0FFF1FEF5DFE4F20813181AA -:101A500089E090E014C0643070F470E0FB01EE0F98 -:101A6000FF1FE75EFE4F20813181FB01EB5EFE4FE1 -:101A7000808190E004C080E090E020E030E0FA0156 -:101A800031832083089580E189BD82E189BD09B455 -:101A900000FEFDCF8091D8008F7D8093D80080918B -:101AA000E00082608093E0008091E00081FDFCCF47 -:101AB0000895CF92DF92EF92FF920F931F93CF93EF -:101AC000DF93EC018B016A010E94BC0E811133C0CF -:101AD000C114D10439F0F60180819181081B190BE2 -:101AE000C80FD91FE12CF12C0115110519F18091B6 -:101AF000E80085FD16C08091E8008E778093E800AD -:101B0000C114D10449F0F60180819181E80EF91EDB -:101B1000F182E08285E00FC00E94BC0E882321F391 -:101B20000AC089918093F10001501109FFEFEF1A6B -:101B3000FF0ADACF80E0DF91CF911F910F91FF90E4 -:101B4000EF90DF90CF90089520915E0230915F0278 -:101B50002617370748F06115710539F42091E80020 -:101B60002E772093E80001C0B90140E061157105AE -:101B7000A9F120915702222309F443C0253009F42A -:101B800042C02091E80023FD40C02091E80022FDE2 -:101B900032C02091E80020FFE9CF4091F30020916E -:101BA000F20030E0342BFC01CF016115710559F0D2 -:101BB0002830310540F481918093F1006150710922 -:101BC0002F5F3F4FF1CF41E02830310509F040E071 -:101BD0002091E8002E772093E800C8CF4111C9CFAB -:101BE0000AC080915702882361F0853061F08091AE -:101BF000E80083FD0AC08091E80082FFF2CF80E018 -:101C0000089582E0089583E0089581E00895209189 -:101C10005E0230915F022617370748F061157105A3 -:101C200039F42091E8002E772093E80001C0B90133 -:101C3000FC0120E06115710591F180915702882324 -:101C400009F440C0853009F43FC08091E80083FD6D -:101C50003DC08091E80082FD2FC08091E80080FFA8 -:101C6000E9CF2091F3008091F20090E0922B611572 -:101C7000710559F08830910540F424912093F100CA -:101C80003196615071090196F2CF21E0089709F071 -:101C900020E08091E8008E778093E800CBCF21117F -:101CA000CCCF0AC080915702882361F0853061F063 -:101CB0008091E80083FD0AC08091E80082FFF2CFA6 -:101CC00080E0089582E0089583E0089581E008951A -:101CD000982F973058F59093E900981739F0709144 -:101CE000EC002091ED005091F00003C0242F762FDE -:101CF00050E021FF19C03091EB003E7F3093EB00A4 -:101D00003091ED003D7F3093ED003091EB0031607C -:101D10003093EB007093EC002093ED005093F000B3 -:101D20002091EE0027FF07C09F5FD3CF8F70809375 -:101D3000E90081E0089580E008958091580287FFCE -:101D400011C08091E80082FD05C080915702811189 -:101D5000F8CF11C08091E8008B770BC080915702BB -:101D6000882349F08091E80080FFF8CF8091E80057 -:101D70008E778093E80008952091E4003091E5008B -:101D800095E64091EC00842F817040FF22C0809145 -:101D9000E80080FD1CC080915702882391F08530B7 -:101DA00091F08091EB0085FD10C04091E4005091CE -:101DB000E5004217530729F39A01915011F784E087 -:101DC000089582E0089583E0089581E0089580E019 -:101DD00008954091E80042FFDECF08950E945C0F15 -:101DE0000E94640FE0EEF0E0808181608083E8ED86 -:101DF000F0E080818F77808319BCA7EDB0E08C91F3 -:101E00008E7F8C9380818F7E8083109256020895FE -:101E10000F931F93CF93DF930E945C0F0E94640F78 -:101E2000C8EDD0E088818F77888388818068888337 -:101E300088818F7D888319BC1092570210925302BB -:101E4000109255021092540200EE10E0F8018081C9 -:101E50008B7F808388818160888342E060E080E0BE -:101E60000E94680EE1EEF0E080818E7F8083E2EEDA -:101E7000F0E0808181608083808188608083F801C8 -:101E800080818E7F8083888180618883DF91CF917C -:101E90001F910F910895E8EDF0E080818F7E80839F -:101EA000E7EDF0E080818160808384E082BF81E0A3 -:101EB000809356020C94080FE8EDF0E080818E7F4D -:101EC00080831092E20008951092DA001092E100EF -:101ED00008951F920F920FB60F9211242F933F93E4 -:101EE0004F935F936F937F938F939F93AF93BF9322 -:101EF000EF93FF938091E10082FF0BC08091E2009D -:101F000082FF07C08091E1008B7F8093E1000E94F7 -:101F1000750B8091DA0080FF1FC08091D80080FF90 -:101F20001BC08091DA008E7F8093DA008091D90007 -:101F300080FF0DC080E189BD82E189BD09B400FE4A -:101F4000FDCF81E0809357020E945B0B05C019BC56 -:101F5000109257020E946D0B8091E10080FF19C022 -:101F60008091E20080FF15C08091E2008E7F809317 -:101F7000E2008091E20080618093E2008091D800CD -:101F800080628093D80019BC85E0809357020E943C -:101F9000890C8091E10084FF30C08091E20084FFD1 -:101FA0002CC080E189BD82E189BD09B400FEFDCF6E -:101FB0008091D8008F7D8093D8008091E1008F7E42 -:101FC0008093E1008091E2008F7E8093E200809117 -:101FD000E20081608093E20080915302882311F037 -:101FE00084E007C08091E30087FD02C081E001C06A -:101FF00083E0809357020E94E90C8091E10083FF07 -:1020000029C08091E20083FF25C08091E100877F95 -:102010008093E10082E080935702109253028091F6 -:10202000E1008E7F8093E1008091E2008E7F8093BB -:10203000E2008091E20080618093E20042E060E093 -:1020400080E00E94680E8091F00088608093F0002C -:102050000E94740BFF91EF91BF91AF919F918F916F -:102060007F916F915F914F913F912F910F900FBE94 -:102070000F901F9018951F920F920FB60F92112478 -:102080002F933F934F935F936F937F938F939F9380 -:10209000AF93BF93CF93DF93EF93FF93C091E9008A -:1020A000CF708091EC00D82FD17080FDD0E81092D5 -:1020B000E9008091F000877F8093F00078940E947F -:1020C0007F101092E9008091F00088608093F0000A -:1020D000CD2BCF70C093E900FF91EF91DF91CF91AD -:1020E000BF91AF919F918F917F916F915F914F9130 -:1020F0003F912F910F900FBE0F901F9018951F9337 -:10210000CF93DF93CDB7DEB7AA970FB6F894DEBFB3 -:102110000FBECDBFE8E5F2E088E08E0F9091F100B0 -:1021200091938E13FBCF0E94CA0B8091E80083FF2E -:102130001FC18091580290915902492F50E04A30B6 -:10214000510508F015C1FA01EA5AFF4F0C94F32724 -:10215000803881F0823809F00BC180915C028F7069 -:102160008093E9008091EB0085FB882780F910922D -:10217000E90006C08091540290915502911182604D -:102180009091E800977F9093E8008093F10010927F -:10219000F100C8C0282F2D7F09F0EAC0882319F06C -:1021A000823061F0E5C080915A02813009F0E0C0D0 -:1021B000933009F080E0809355022BC080915A0241 -:1021C000811127C080915C028F7009F4D1C0809387 -:1021D000E9002091EB0020FF1CC0933021F4809196 -:1021E000EB00806214C09091EB0090619093EB0043 -:1021F00021E030E0A90102C0440F551F8A95E2F7A3 -:102200004093EA001092EA008091EB00886080938E -:10221000EB001092E9008091E800877F86C0811171 -:10222000A7C010915A021F778091E3008078812B1C -:102230008093E3008091E800877F8093E8000E940C -:102240009D0E8091E80080FFFCCF8091E3008068C4 -:102250008093E300111102C082E001C083E080930B -:10226000570286C08058823008F082C080915A029E -:1022700090915B028C3D53E0950779F583E08A836A -:102280008AE289834FB7F894DE01139620E03EE09E -:1022900051E2E32FF0E050935700E49120FF03C098 -:1022A000E295EF703F5FEF708E2F90E0EA3010F014 -:1022B000C79601C0C0968D939D932F5F243149F737 -:1022C0004FBF8091E800877F8093E8006AE270E06A -:1022D000CE0101960E94A40D14C0AE014F5F5F4F66 -:1022E00060915C020E94EB0CBC01892B09F440C098 -:1022F0009091E800977F9093E80089819A810E94ED -:10230000070E8091E8008B778093E80031C0803819 -:1023100079F58091E800877F8093E80080915302EF -:102320008093F1008091E8008E778093E8000E940E -:102330009D0E1EC081111CC090915A029230C0F4B3 -:102340008091E800877F8093E800909353020E9479 -:102350009D0E80915302811106C08091E30087FD9C -:1023600002C081E001C084E0809357020E94B60B56 -:102370008091E80083FF0AC08091E800877F809306 -:10238000E8008091EB0080628093EB00AA960FB684 -:10239000F894DEBF0FBECDBFDF91CF911F9108959E -:1023A00090936501809364010895E0916401F09138 -:1023B0006501309721F00190F081E02D099480E0D3 -:1023C0000895EF92FF920F931F93CF93DF93E091C5 -:1023D0006401F09165013097B1F18C010280F381C5 -:1023E000E02D09958091420282FF2DC080FF04C03C -:1023F00080E894E00E94B705E80118E08AE7E82E3B -:1024000084E0F82E8091420280FF0BC088811F92E9 -:102410008F93FF92EF920E9450060F900F900F90B3 -:102420000F90115021961111EDCF8091420280FF43 -:102430000AC088E794E0DF91CF911F910F91FF9040 -:10244000EF900C94B705DF91CF911F910F91FF9002 -:10245000EF900895E0916401F0916501309721F0CB -:102460000480F581E02D09940895CF93DF93EC016A -:102470008091620190916301C817D90709F1D09347 -:102480006301C0936201E0916401F09165013097AE -:10249000B9F00680F781E02DCE01099580914202C6 -:1024A00082FF0EC080FF0CC0DF93CF938AE694E0DA -:1024B0009F938F930E9450060F900F900F900F9054 -:1024C000DF91CF910895CF93DF93EC01809160016C -:1024D00090916101C817D90709F1D0936101C093A8 -:1024E0006001E0916401F09165013097B9F00084DA -:1024F000F185E02DCE0109958091420282FF0EC048 -:1025000080FF0CC0DF93CF938AE594E09F938F9375 -:102510000E9450060F900F900F900F90DF91CF9177 -:1025200008950C9469130E945B1F0E9479060C9415 -:1025300079095F926F927F928F929F92AF92BF9232 -:10254000CF92DF92EF92FF920F931F93CF93DF937F -:1025500000D000D01F92CDB7DEB70E94290887E6D1 -:10256000C82E81E0D82E512C88248394912C852D5F -:102570000E941709A82EF601E080E82641F4539442 -:10258000FFEFCF1ADF0A80E15812F1CF40C08091EF -:10259000420281FD0E94851300E010E0F12CB12C75 -:1025A000C701002E02C0959587950A94E2F780FF37 -:1025B00028C009835A823401002E02C0660C771CA1 -:1025C0000A94E2F793012A213B2181E0232B09F4AD -:1025D00080E08B830E94641F8160782F9D838C83B1 -:1025E00049815A816B818D810E94BB1349815A8137 -:1025F0006B817C818D810E94DE1EF60180816826C0 -:1026000060820F5F1F4F0830110551F6B8CF8FEF72 -:1026100089838A831B820E94641F8160782F9D8337 -:102620008C8349815A816B818D810E94BB130E94EA -:10263000DD1E0E9425220E944907109166010E941A -:10264000D511181771F10E94D511809366019091F0 -:10265000420292FF0EC090FF0CC01F928F938BE836 -:1026600094E09F938F930E9450060F900F900F90CD -:102670000F90809166010F900F900F900F900F9028 -:10268000DF91CF911F910F91FF90EF90DF90CF904E -:10269000BF90AF909F908F907F906F905F900C94C1 -:1026A000EF1E0F900F900F900F900F90DF91CF9132 -:1026B0001F910F91FF90EF90DF90CF90BF90AF9060 -:1026C0009F908F907F906F905F9008950C941D095C -:1026D00008950895CF93DF931F92CDB7DEB7698336 -:1026E0000E94170990E021E030E0698102C0220FCA -:1026F000331F6A95E2F72823392381E0232B09F45D -:1027000080E00F90DF91CF910895EF92FF920F93A9 -:102710001F93CF93DF9384EA94E00E94B705C0E053 -:10272000D0E089E2E82E81E0F82E06E914E08C2F53 -:102730000E9417090E94C71EFF92EF921F928F936B -:10274000DF93CF931F930F930E94500621968DB76E -:102750009EB708960FB6F8949EBF0FBE8DBFC031CE -:10276000D10529F7DF91CF911F910F91FF90EF9045 -:10277000089508950895CF93DF93CDB7DEB72B97D3 -:102780000FB6F894DEBF0FBECDBF942F4F83252F19 -:10279000588769877A878B874A855B85452B21F027 -:1027A0002F3F09F59F3FF9F4DE01119686E0FD0108 -:1027B00011928A95E9F785E0FE01379601900D9216 -:1027C0008A95E1F749815A816B817C818D819E8157 -:1027D0000E944B1B2B960FB6F894DEBF0FBECDBFE9 -:1027E000DF91CF9108954F81588569857A858B85D2 -:1027F0000E94DE1ED9CFCF93882309F4A9C0C82F29 -:102800008238A1F40E94D51181FDA2C089E30E9403 -:10281000231E0E949C1E2FEF81EE94E021508040E9 -:102820009040E1F700C0000089E315C08338C1F48F -:102830000E94D51180FD8CC083E50E94231E0E945A -:102840009C1E2FEF81EE94E0215080409040E1F7F4 -:1028500000C0000083E50E94401ECF910C949C1E96 -:102860008438A1F40E94D51182FD72C087E40E94D1 -:10287000231E0E949C1E2FEF81EE94E02150804089 -:102880009040E1F700C0000087E4E5CF8CEF8C0FAB -:10289000813A20F080E58C0F8E3248F48C2F0E9414 -:1028A0004F25811155C08C2F0E94231ED6CF80E268 -:1028B0008C0F883048F4C77081E001C0880FCA953A -:1028C000EAF70E94621EC9CF8BE58C0F833078F443 -:1028D000C53A29F0C63A31F083E890E005C081E8B6 -:1028E00090E002C082E890E0CF910C94351288E528 -:1028F0008C0F853168F5C83A89F0C93A91F0CA3A27 -:1029000099F0CB3AA1F0CC3AA9F0CD3AB1F0CE3A59 -:10291000B9F0CF3AC1F080E090E017C082EE90E0CD -:1029200014C089EE90E011C08AEE90E00EC085EBF5 -:1029300090E00BC086EB90E008C083EB90E005C010 -:1029400084EB90E002C087EB90E0CF910C9463128F -:10295000CF910895882309F46AC08238A1F40E94B7 -:10296000D51181FF64C089E30E94231E0E949C1E32 -:102970002FEF81EE94E0215080409040E1F700C0BD -:10298000000089E315C08338B9F40E94D51180FF97 -:102990004EC083E50E94231E0E949C1E2FEF81EEF5 -:1029A00094E0215080409040E1F700C0000083E5B2 -:1029B0000E94401E0C949C1E8438A1F40E94D511E4 -:1029C00082FF35C087E40E94231E0E949C1E2FEFC9 -:1029D00081EE94E0215080409040E1F700C000007B -:1029E00087E4E6CF9CEF980F913A10F390E5980FAB -:1029F0009E32F0F290E2980F983050F4877091E098 -:102A000001C0990F8A95EAF7892F0E94681ED2CFDC -:102A10009BE5980F933020F480E090E00C94351201 -:102A2000885A853120F480E090E00C946312089578 -:102A3000882321F00E94621E0C949C1E0895882316 -:102A400021F00E94681E0C949C1E0895BF92CF92A4 -:102A5000DF92EF92FF920F931F93CF93DF9300D0FB -:102A600000D000D0CDB7DEB725E0FC01DE01119625 -:102A700001900D922A95E1F7FC014081518102817C -:102A800063817481258122952F706115710509F488 -:102A900003C35F3F19F44F3F09F4FEC26C01862F58 -:102AA0007D836C83602F782F8D812E830E94A71DDC -:102AB000182FB92E0E94A61D0E94961CEB2DE295A0 -:102AC000EF70F0E0E05AFF4F2E810C94F3278B2D2E -:102AD000807F9B2D9F70F92E882319F0F29490EF40 -:102AE000F922002349F0FF2009F483C28F2D0E94B0 -:102AF000751E0E949C1E7DC2812F0E94AA14FF2079 -:102B000009F4CAC28F2D0E947B1E26960FB6F89438 -:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010 -:102B2000EF90DF90CF90BF900C949C1E8B2D807FF8 -:102B30009B2D9F70F92E803219F0F29480EFF822CD -:102B4000112319F0113009F12AC00023B1F08F2DA3 -:102B5000222351F1213041F526960FB6F894DEBFBD -:102B60000FBECDBFDF91CF911F910F91FF90EF90DE -:102B7000DF90CF90BF900C94851E222319F0213056 -:102B800009F48AC20E94881E2DC00023F1F026306D -:102B900008F082C20E945F1E8F2129F023C000230B -:102BA000F9F0211116C08F2D26960FB6F894DEBFCE -:102BB0000FBECDBFDF91CF911F910F91FF90EF908E -:102BC000DF90CF90BF900C941815253008F064C2A8 -:102BD00009C0F601858180FF0CC28F708583E3CF29 -:102BE00021111CC28F2D83C12B2D26952695237074 -:102BF00030E02115310521F021303105D1F04CC2F2 -:102C0000002321F0812F9B2D937002C080E090E083 -:102C100026960FB6F894DEBF0FBECDBFDF91CF91E1 -:102C20001F910F91FF90EF90DF90CF90BF900C9489 -:102C30003512002321F0812F9B2D937002C080E07C -:102C400090E026960FB6F894DEBF0FBECDBFDF91A1 -:102C5000CF911F910F91FF90EF90DF90CF90BF9099 -:102C60000C946312812F002319F00E94AB2002C044 -:102C70000E94132126960FB6F894DEBF0FBECDBF7B -:102C8000DF91CF911F910F91FF90EF90DF90CF9048 -:102C9000BF900C9498218B2D837009F07BC001119B -:102CA000FBC1812F829586958770880F880F912FA1 -:102CB0009F70C92ED12CE12CF12C082E04C0CC0C15 -:102CC000DD1CEE1CFF1C0A94D2F714FF12C04FE06B -:102CD00050E060E070E004C0440F551F661F771F8E -:102CE0008A95D2F7CB01BA01609570958095909541 -:102CF00003C060E070E0CB012B2D26952695237054 -:102D0000422F50E042305105D9F04330510569F16E -:102D10006C297D298E299F294130510551F1269634 -:102D20000FB6F894DEBF0FBECDBFDF91CF911F91DC -:102D30000F91FF90EF90DF90CF90BF900C94BB1C51 -:102D40006C297D298E299F2926960FB6F894DEBF1F -:102D50000FBECDBFDF91CF911F910F91FF90EF90EC -:102D6000DF90CF90BF900C94D51C0E94BB1CC70174 -:102D7000B60126960FB6F894DEBF0FBECDBFDF9129 -:102D8000CF911F910F91FF90EF90DF90CF90BF9068 -:102D90000C94A11C002319F08B2D817001C0869525 -:102DA000882309F479C1812F829586958770880FD1 -:102DB000880F912F9F70C92ED12CE12CF12C082E59 -:102DC00004C0CC0CDD1CEE1CFF1C0A94D2F714FFCF -:102DD00012C04FE050E060E070E004C0440F551FA7 -:102DE000661F771F8A95D2F7CB01BA01609570955F -:102DF0008095909503C060E070E0CB012B2D269567 -:102E000026952370422F50E042305105D9F04330CF -:102E1000510569F16C297D298E299F294130510581 -:102E200051F126960FB6F894DEBF0FBECDBFDF91ED -:102E3000CF911F910F91FF90EF90DF90CF90BF90B7 -:102E40000C94821D6C297D298E299F2926960FB608 -:102E5000F894DEBF0FBECDBFDF91CF911F910F91D0 -:102E6000FF90EF90DF90CF90BF900C94941D0E9444 -:102E7000821DC701B60126960FB6F894DEBF0FBEBD -:102E8000CDBFDF91CF911F910F91FF90EF90DF9019 -:102E9000CF90BF900C94701D103FD1F128F480E4C6 -:102EA000810F803250F0A0C0123F09F462C008F4D4 -:102EB0004BC0133F09F472C097C0F12FF071FF2E81 -:102EC0008B2D8F71002351F00E94091D812FFF204F -:102ED00019F08295807F68CE8F7066CE0E942A1D81 -:102EE000812FFF2019F08295807F01C08F70269678 -:102EF0000FB6F894DEBF0FBECDBFDF91CF911F910B -:102F00000F91FF90EF90DF90CF90BF900C941F1522 -:102F10000023B1F0253008F0BFC08B2D8F712696AD -:102F20000FB6F894DEBF0FBECDBFDF91CF911F91DA -:102F30000F91FF90EF90DF90CF90BF900C944F1DBA -:102F4000263008F0A9C0E9CF0023A9F08B2D8F719E -:102F500026960FB6F894DEBF0FBECDBFDF91CF919E -:102F60001F910F91FF90EF90DF90CF90BF900C9446 -:102F7000091D002359F38B2D8F7126960FB6F894F7 -:102F8000DEBF0FBECDBFDF91CF911F910F91FF909C -:102F9000EF90DF90CF90BF900C942A1D002399F002 -:102FA0008B2D8F7126960FB6F894DEBF0FBECDBF66 -:102FB000DF91CF911F910F91FF90EF90DF90CF9015 -:102FC000BF900C94F41C26960FB6F894DEBF0FBE8B -:102FD000CDBFDF91CF911F910F91FF90EF90DF90C8 -:102FE000CF90BF900C94EF1C0023A9F0222309F48A -:102FF000ADCF812F26960FB6F894DEBF0FBECDBFA2 -:10300000DF91CF911F910F91FF90EF90DF90CF90C4 -:10301000BF900C94FB13222309F4ADCF812F269689 -:103020000FB6F894DEBF0FBECDBFDF91CF911F91D9 -:103030000F91FF90EF90DF90CF90BF900C94AA1467 -:103040004B2D4F70612FC6010E94252026960FB68A -:10305000F894DEBF0FBECDBFDF91CF911F910F91CE -:10306000FF90EF90DF90CF90BF900C94EF1B4B2D13 -:103070004F70612FC60126960FB6F894DEBF0FBEC3 -:10308000CDBFDF91CF911F910F91FF90EF90DF9017 -:10309000CF90BF900C94282026960FB6F894DEBFF0 -:1030A0000FBECDBFDF91CF911F910F91FF90EF9099 -:1030B000DF90CF90BF9008950E94821E0E94511E03 -:1030C0000E949C1E0E94CA220E94982180E090E0EB -:1030D0000E94351280E090E00C9463120E94721EF0 -:1030E0000C945C18CF93DF9300D000D01F92CDB723 -:1030F000DEB7942F4983252F5A836B837C838D837E -:103100004C815D81452B39F12F3F11F49F3F19F11F -:1031100049815A816B817C818D810E94A71D292F55 -:1031200022952F7030E02C30310504F52A3031051E -:103130005CF4225031092230310568F4853A80F47C -:10314000843090F4823080F0883E38F4803E60F421 -:103150008450813A48F080E014C0803FE1F704C019 -:1031600090E2980F983080F781E00BC02C30310549 -:1031700021F493FB882780F904C02F303105C9F36F -:10318000EACF0F900F900F900F900F90DF91CF919B -:103190000895CF93DF9300D000D01F92CDB7DEB754 -:1031A0000F900F900F900F900F90DF91CF91089597 -:1031B000CF93DF9300D000D000D0CDB7DEB72696F6 -:1031C0000FB6F894DEBF0FBECDBFDF91CF9108954B -:1031D0001F93CF93DF93C091770116E08091780120 -:1031E000C81799F0D0E01C9FF0011D9FF00D11242D -:1031F000E758FE4F408151816281738184819581BE -:103200000E94D8182196C770E9CFDF91CF911F9106 -:1032100008954091A9015091AA016091AB0170916C -:10322000AC018091AD019091AE010C94D8188091C1 -:10323000AE0182958F7009F054C08091AB01882354 -:1032400009F44FC080917701A09178016091A901A4 -:103250007091AA014091AC015091AD01B6E08A177E -:1032600009F43FC090E041155105C1F17F3F11F4D1 -:103270006F3FA1F1B89FF001B99FF00D1124E758FD -:10328000FE4F218172132AC02081621327C0228140 -:10329000211124C0238134812417350710F42150D3 -:1032A0003109241B350B283C3105C0F42091AE01B7 -:1032B0002F7020612093AE0126E0289FF001299F06 -:1032C000F00D1124E258FE4F80818F708061808361 -:1032D00089EA91E00E9426150C94E81801968770FF -:1032E000BECF0895BF92CF92DF92EF92FF920F93DD -:1032F0001F93CF93DF93CDB7DEB761970FB6F894E6 -:10330000DEBF0FBECDBF7C0185E0F701DE011D965B -:1033100001900D928A95E1F7D7014C9111965C913D -:1033200011971296DC90129713960D911C91149799 -:103330003091A9016091AA018091AC019091AD01F9 -:10334000009709F477C16F3F19F43F3F09F472C148 -:10335000B090AB01BB2009F4C5C02091AE010817A5 -:10336000190728F0F801E81BF90BCF0104C080957C -:103370009095800F911FCC24C394883C910580F0D8 -:10338000C12C207F09F0CCC0702F198B088B6D2DBC -:1033900089890E94C91889EA91E00E942615B6C061 -:1033A000822F807F09F047C0651314C0341312C008 -:1033B000D11010C02F7020612093AE010E94091916 -:1033C00089EA91E00E9426158091AE01D7011596F9 -:1033D0008C932FC00115110519F15F3F11F44F3F78 -:1033E000F9F0CD2CD1101CC080917701209178018B -:1033F00036E0821709F45CC090E0389FF001399FF5 -:10340000F00D1124E758FE4F6181561306C060810C -:10341000461303C06281611103C001968770E9CF32 -:10342000CD2CDD2009F426C18091AE01816080930E -:10343000AE01C12C1FC1651308C0341306C0D110E2 -:1034400004C08091AE01D701C9C04D875E87DF8679 -:10345000702F198B088B6D2D89890E947218882313 -:10346000E9F1DD20D9F12091AE01822F82958F7094 -:1034700090E0029774F08091A9019091AA01988739 -:103480008F8319861B870A872C87CE0107960E9497 -:10349000261586E0F701A9EAB1E001900D928A9520 -:1034A000E1F70E9417190E940919CC24C394E2C0C5 -:1034B000702F198B088B60E089890E94A71D292F26 -:1034C00022952F7030E0223031050CF0C7C09F707C -:1034D00009F0C1C0805E883008F4CCC0C7010E94EA -:1034E0002615E3CF0817190708F456C0F801E81BA2 -:1034F000F90BCF01883C910508F453C0C12C702F03 -:10350000198B088B6D2D89890E94C918E9EAF1E0B1 -:1035100086E0DF011D928A95E9F70E940919AAC089 -:10352000651314C0341312C0D11010C08091AE01C5 -:10353000F7018583C7010E94261586E0E9EAF1E0DC -:10354000DF011D928A95E9F7CB2C94C04D875E87E9 -:10355000DF86702F198B088B6D2D89890E94721858 -:10356000882309F4BBCFDD2009F4B8CF2091AE0148 -:10357000822F82958F7090E002970CF48ACF809111 -:10358000A9019091AA019A8389831B821D830C83D0 -:103590002E83CE0101967BCF80959095800F911F51 -:1035A000A9CFCD2CDD2009F499CF65132EC034139B -:1035B0002CC02091AE0120FD1FC0822F82958F70FC -:1035C000D9F0D70115962C9315978F3049F08F5F5E -:1035D000982F9295907F822F8F70892B15968C93C0 -:1035E000C7010E94261586E0F701A9EAB1E0019023 -:1035F0000D928A95E1F791CF86E0F701A9EAB1E053 -:1036000001900D928A95E1F735C04D875E87DF8680 -:10361000702F198B088B6D2D89890E94721881116A -:1036200038CF8091AE0181608093AE01C7010E94C6 -:10363000261520C0DD2009F451CF4D875E87DF8637 -:10364000702F198B088B6D2D89890E947218882321 -:1036500009F444CF1ECF81113DCF0CC02430310579 -:103660000CF03CCF9F7009F435CFF7019581907F26 -:1036700009F030CF8C2D61960FB6F894DEBF0FBEE7 -:10368000CDBFDF91CF911F910F91FF90EF90DF9011 -:10369000CF90BF9008951F93CF93DF93CDB7DEB740 -:1036A0002C970FB6F894DEBF0FBECDBF4F8358875F -:1036B00069877A878B879C87CE0107960E9472194B -:1036C000882369F08F8198852A853B85232BF1F12A -:1036D0009F3F09F063C08F3F09F060C037C086E0AC -:1036E000FE013796DE01119601900D928A95E1F761 -:1036F0006F817885EA85FB85309741F17F3F11F432 -:103700006F3F21F12091780130E0C9010196877067 -:1037100099274091770150E08417950709F447C035 -:1037200069837A83FD83EC8396E0929FD001939F17 -:10373000B00D1124A758BE4FFE01319601900D9295 -:103740009A95E1F7809378010E94E81816E080913D -:103750007701909178018917C1F1189FC001112458 -:1037600087589E4F0E947219882379F1E091770162 -:103770001E9FF0011124E758FE4F40815181628164 -:103780007381848195810E94D8188091770190E09F -:1037900001968770992780937701D9CF4F815885FB -:1037A00069857A858B859C850E94D818CFCF0E9429 -:1037B0006E181092780110927701E9EAF1E086E044 -:1037C000DF011D928A95E9F7C1CF2C960FB6F894C8 -:1037D000DEBF0FBECDBFDF91CF911F910895DF9265 -:1037E000EF92FF920F931F93CF93DF93FC01892BEE -:1037F00009F48AC0E12CF12CDD24D394EF01219649 -:103800008491853709F461C058F4843708F04EC0BC -:10381000843008F06AC08130D1F0823071F174C018 -:10382000883709F45DC050F4863709F455C08737EE -:1038300009F06AC08E2D0E946F1E54C09CE7980F3D -:10384000903708F061C08F770E94AA1450C08F0192 -:103850000E5F1F4FFE01849190E2980F983050F454 -:103860008770FD2D01C0FF0F8A95EAF78F2F0E9408 -:10387000751E14C00E94FB1313C08F010E5F1F4FF3 -:10388000FE01C49180E28C0F883060F4C7708D2DEA -:1038900001C0880FCA95EAF70E947B1E0E949C1EF9 -:1038A000E80125C08C2F0E94AA14FACF9F012E5F39 -:1038B0003F4FFE01C491CC2369F08FE99FE001974F -:1038C000F1F700C00000C150F6CF9F012E5F3F4FBF -:1038D000FE01F490E9010BC00E945F1EE82E07C0B4 -:1038E0000E94721E0E949C1E02C00E94FB138F2D1C -:1038F000882341F0EFE9FFE03197F1F700C00000C5 -:103900008150F6CFFE017ACFDF91CF911F910F91B9 -:10391000FF90EF90DF90089560932F027093300234 -:1039200080933102909332020C94EE1E08956093BE -:1039300033027093340280933502909336020C94D4 -:10394000ED1E0F931F9300913302109134022091CA -:10395000350230913602602B712B822B932B6093B2 -:1039600033027093340280933502909336021F9194 -:103970000F910C94ED1E0F931F9300913302109141 -:103980003402209135023091360260237123822364 -:1039900093236093330270933402809335029093A3 -:1039A00036021F910F910C94ED1E0F931F930091FF -:1039B0003302109134022091350230913602602793 -:1039C0007127822793276093330270933402809388 -:1039D0003502909336021F910F910C94ED1E60E01A -:1039E00070E0CB010C948C1C0F931F9341E050E0CE -:1039F00060E070E08A019B0104C0000F111F221FCC -:103A0000331F8A95D2F7C901B8011F910F910C9409 -:103A10008C1C0F931F9341E050E060E070E004C005 -:103A2000440F551F661F771F8A95D2F780912F028A -:103A300090913002A0913102B09132028A019B0133 -:103A4000082B192B2A2B3B2BC901B8011F910F9171 -:103A50000C948C1C0F931F9341E050E060E070E0E9 -:103A600004C0440F551F661F771F8A95D2F74095F3 -:103A700050956095709580912F0290913002A091A1 -:103A80003102B09132028A019B01082319232A23B3 -:103A90003B23C901B8011F910F910C948C1C0F930B -:103AA0001F9341E050E060E070E004C0440F551FF8 -:103AB000661F771F8A95D2F780912F02909130026E -:103AC000A0913102B09132028A019B010827192787 -:103AD0002A273B27C901B8011F910F910C948C1C18 -:103AE0000F931F9300912F02109130022091310209 -:103AF00030913202602B712B822B932B1F910F91EF -:103B00000C948C1C0F931F9300912F021091300284 -:103B1000209131023091320260237123822393235A -:103B20001F910F910C948C1C0F931F9300912F02E7 -:103B300010913002209131023091320260277127BA -:103B4000822793271F910F910C948C1C08958F92BC -:103B50009F92AF92BF92DF92EF92FF920F931F93CB -:103B6000CF93DF9300D000D01F92CDB7DEB76B8329 -:103B70007C838D838A018C819D81892B21F01F3F5D -:103B800029F44F3F19F480E090E04CC08B818823EA -:103B9000C9F18090330290903402A0903502B09029 -:103BA000360280912F0290913002A0913102B091A3 -:103BB0003202882A992AAA2ABB2A8FE1E82EF12C00 -:103BC000D501C4010E2C04C0B695A795979587958D -:103BD0000A94D2F780FF07C0DE2CB8018E2D0E9418 -:103BE000FB1F019729F481E0E81AF10848F7D12C6E -:103BF00088E0189FF0011124E00FF11DE155FE4F00 -:103C0000D08209C088E0189FF0011124E00FF11D57 -:103C1000E155FE4FD08009831A8369817A818D2D09 -:103C20000E94FB1F0F900F900F900F900F90DF914D -:103C3000CF911F910F91FF90EF90DF90BF90AF90C9 -:103C40009F908F90089520910D0130910E01F90100 -:103C500032969FEF40E05191581789F09F3F19F439 -:103C6000511101C0942F4F5F4630A9F79F3F39F0A3 -:103C7000F901E90FF11D97FDFA95828308950895E2 -:103C800020910D0130910E01F9013296285F3F4FCE -:103C90009081981301C010823196E217F307C1F7A3 -:103CA000089581E090E0E0910D01F0910E01E80FA0 -:103CB000F91F1082019688309105A9F70895809127 -:103CC0004102089590914102892B80934102089509 -:103CD00080959091410289238093410208958093B9 -:103CE0004102089510924102089590914002892B5B -:103CF000809340020895809590914002892380939B -:103D0000400208951092400208958093370208956A -:103D100010923702089580910D0190910E01FC01DF -:103D200031969C01285F3F4F80E0919191118F5F08 -:103D3000E217F307D1F70895E0910D01F0910E011C -:103D4000809141028083E0910D01F0910E019081FC -:103D500080914002892B808380913702882361F013 -:103D6000E0910D01F0910E019081892B80830E94DA -:103D70008B1E81111092370280910D0190910E01DE -:103D80000C94E1119093350180933401089582954C -:103D9000982F9C7C392F36953695282F237344E035 -:103DA000249FC0011124932F982B292F2A7A26951E -:103DB000892F8575880F822B08950895CF93DF93FF -:103DC00000D000D01F92CDB7DEB70F900F900F90AC -:103DD0000F900F90DF91CF910895089508950C945E -:103DE000661380915702843021F11092430220E43F -:103DF00088E190E00FB6F894A895809360000FBE1C -:103E00002093600083B7817F846083BF83B7816024 -:103E100083BF7894889583B78E7F83BF0FB6F8945D -:103E2000A895809160008861809360001092600086 -:103E30000FBE0895CF930E94B9130E9429080E94D3 -:103E4000BA13C0E08C2F0E941709811104C0CF5F04 -:103E5000C031C1F701C081E0CF9108950E9468137D -:103E60000C946E181F920F920FB60F9211248F931D -:103E70009F93AF93BF9380914302811113C08091B0 -:103E8000440290914502A0914602B09147024196AA -:103E9000A11DB11D8093440290934502A093460258 -:103EA000B0934702BF91AF919F918F910F900FBE3A -:103EB0000F901F90189582E084BD93E095BD9AEF16 -:103EC00097BD80936E0008952FB7F89480914402B7 -:103ED00090914502A0914602B09147022FBF0895EC -:103EE0002FB7F89460914402709145028091460288 -:103EF000909147022FBF0895CF92DF92EF92FF92E9 -:103F00000F931F932FB7F8944091440250914502AC -:103F100060914602709147022FBF6A017B01EE2437 -:103F2000FF248C0120E030E0C016D106E206F30643 -:103F300010F4415051099A01281B390BC9011F91F6 -:103F40000F91FF90EF90DF90CF9008951F920F9206 -:103F50000FB60F9211248F939F93AF93BF938091CD -:103F6000440290914502A0914602B0914702019609 -:103F7000A11DB11D8093440290934502A093460277 -:103F8000B0934702BF91AF919F918F910F900FBE59 -:103F90000F901F9018950E94EE0EF8942FEF87EA6D -:103FA00091E6215080409040E1F700C0000087E09A -:103FB00090EBDC018093600290936102A093620217 -:103FC000B09363029CE088E10FB6F894A8958093C3 -:103FD00060000FBE90936000FFCF28E0929FF00139 -:103FE0001124E80FF11DE052FF4F9491892F8F703B -:103FF00092959F700895CF93C82FCB010E94ED1F1B -:10400000282F30E080E1989FA0011124422B532BF0 -:104010004038510519F480E090E015C09770E92F01 -:10402000F0E088E0C89FE00DF11D112484E0EE0F60 -:10403000FF1F8A95E1F7E20FF31FEE0FFF1FE0501D -:10404000F84985919491CF91089580E090E008958A -:10405000089580914A0280FF0BC06091120185E0B3 -:10406000689FB001112475956795759567952BC06C -:1040700081FF09C06091120185E0689FB0011124A1 -:104080007595679520C082FF07C06091120185E099 -:10409000689FB001112417C090914B029923D1F071 -:1040A00060911101961788F72091120185E0289FF1 -:1040B00090011124929FA001939F500D112470E054 -:1040C000CA010E94DF276038710540F4611571054F -:1040D00039F002C065E070E0862F08958FE70895FB -:1040E00081E0089580914A0280FF08C0609110012C -:1040F00070E0759567957595679521C081FF06C03D -:104100006091100170E07595679519C082FF04C039 -:104110006091100170E010C090914B029923C1F0A2 -:1041200060910F019617A0F780911001899FC0013F -:10413000112470E00E94DF276038710528F46115B2 -:10414000710521F0862F08958FE7089581E0089585 -:1041500061E070E0F4CF803F21F40E942920819536 -:1041600004C0813F29F40E94292080934E020895C3 -:10417000823F21F40E942920819504C0833F29F4C5 -:104180000E94292080934D020895893F19F40E94CE -:10419000722005C08A3F31F40E947220819580937D -:1041A0004F0208958B3F21F40E947220819504C034 -:1041B0008C3F29F40E947220809350020895843F1E -:1041C00021F480914C02816017C0853F21F48091D9 -:1041D0004C02826011C0863F21F480914C028460C1 -:1041E0000BC0873F21F480914C02886005C0883F56 -:1041F00031F480914C02806180934C0208958D3F90 -:1042000021F480914A0281600BC08E3F21F480919D -:104210004A02826005C08F3F29F480914A0284607F -:1042200080934A020895803F39F480914E0287FFBF -:104230006CC010924E0269C0813F29F480914E02F9 -:104240001816BCF362C090914D02823F29F497FF8B -:104250005CC010924D0259C0833F19F41916CCF37B -:1042600054C0893F41F480914F0218160CF04DC0A4 -:1042700010924F024AC08A3F29F480914F0287FF73 -:1042800044C0F6CF8B3F39F48091500287FF3DC088 -:10429000109250023AC08C3F29F4809150021816B7 -:1042A000BCF333C0843F21F480914C028E7F17C051 -:1042B000853F21F480914C028D7F11C0863F21F40F -:1042C00080914C028B7F0BC0873F21F480914C0280 -:1042D000877F05C0883F31F480914C028F7E8093A8 -:1042E0004C0213C08D3F21F480914A028E7F0BC097 -:1042F0008E3F21F480914A028D7F05C08F3F29F4C3 -:1043000080914A028B7F80934A0280914D028111F5 -:104310000EC080914E0281110AC080914F0281111E -:1043200006C080915002811102C010924B02089584 -:104330008091420283FF7EC089ED94E00E94B70520 -:1043400080914C021F928F9384ED94E09F938F9302 -:104350000E94500682ED94E00E94B70580914D02C4 -:10436000282F082E000C330B3F938F938FEC94E093 -:104370009F938F930E9450068DEC94E00E94B705A6 -:1043800080914E02282F082E000C330B3F938F9301 -:104390008AEC94E09F938F930E94500688EC94E0FF -:1043A0000E94B70580914F02282F082E000C330B76 -:1043B0003F938F9385EC94E09F938F930E945006D8 -:1043C00083EC94E00E94B70580915002282F082EBC -:1043D000000C330B3F938F9380EC94E09F938F936B -:1043E0000E9450068DEB94E00E94B70580914B022D -:1043F0001F928F938AEB94E09F938F930E945006B5 -:1044000088EB94E00E94B70580914A021F928F9337 -:1044100085EB94E09F938F930E94500682EB94E08B -:104420000E94B7058DB79EB74C960FB6F8949EBF05 -:104430000FBE8DBF8CE492E00E942A120E94641F7E -:10444000909349028093480208951F93CF93DF937E -:1044500080914802909149020E947C1FAC0190918A -:104460004B02992321F02091130130E006C02091E6 -:1044700014018AE0289F900111244217530708F481 -:1044800085C080914D02C0914E02D0914F02109193 -:104490005002811107C0C11175C0D11173C0111133 -:1044A00071C074C09F3F19F09F5F90934B02181624 -:1044B00024F40E94292080934D0280914D0287FFB1 -:1044C00005C00E942920819580934D021C1624F47A -:1044D0000E94292080934E0280914E0287FF05C0E2 -:1044E0000E942920819580934E0260914D0266239F -:1044F00031F1C0914E02CC2311F1062E000C770B46 -:10450000880B990B0E94DA2623E333E343E35FE34E -:104510000E943E270E94A22660934D026C2FCC0F72 -:10452000770B880B990B0E94DA2623E333E343E3EE -:104530005FE30E943E270E94A22660934E021D1652 -:1045400024F40E94722080934F0280914F0287FFD3 -:1045500005C00E947220819580934F02111624F4A9 -:104560000E947220809350028091500287FF05C004 -:104570000E947220819580935002DF91CF911F910C -:104580000C9498219F3F09F08FCF97CFDF91CF9167 -:104590001F910895ECE4F2E085E0DF011D928A9519 -:1045A000E9F710924B0210924A0208958CEF96E0C0 -:1045B0000E94B7051F9281E08F931F9285E08F9331 -:1045C0008EEA96E09F938F930E9450060F900F9073 -:1045D0000F900F900F900F9008958330E9F128F419 -:1045E000813061F0823009F10895853009F462C0AC -:1045F00008F449C0863009F474C00895809114010C -:10460000262F30E0280F311D2F3F310524F4680F8D -:104610006093140103C08FEF809314018091140103 -:104620001F928F9387EE95E072C080911301262F21 -:1046300030E0280F311D2F3F310524F4680F6093BF -:10464000130103C08FEF80931301809113011F9218 -:104650008F9385ED95E05BC080911201262F30E0AD -:10466000280F311D2F3F310524F4680F609312018C -:1046700003C08FEF80931201809112011F928F93DC -:1046800082EC95E044C080911101262F30E0280F84 -:10469000311D2F3F310524F4680F6093110103C0D1 -:1046A0008FEF80931101809111011F928F938DEAFA -:1046B00095E02DC080911001262F30E0280F311D8C -:1046C0002F3F310524F4680F6093100103C08FEF72 -:1046D00080931001809110011F928F9384E995E0DF -:1046E00016C080910F01262F30E0280F311D2F3F7B -:1046F000310524F4680F60930F0103C08FEF80939E -:104700000F0180910F011F928F9389E795E09F938E -:104710008F930E9450060F900F900F900F90089566 -:10472000833081F128F4813059F08230D1F008953E -:10473000853009F449C0B8F1863009F456C00895AF -:1047400080911401681720F4861B8093140102C025 -:1047500010921401809114011F928F938AE695E0C4 -:1047600054C080911301681720F4861B80931301B5 -:1047700002C010921301809113011F928F9388E55C -:1047800095E043C080911201681720F4861B809346 -:10479000120102C010921201809112011F928F9398 -:1047A00085E495E032C080911101681720F4861BE2 -:1047B0008093110102C010921101809111011F928A -:1047C0008F9380E395E021C080911001681720F459 -:1047D000861B8093100102C010921001809110017D -:1047E0001F928F9387E195E010C080910F016817A9 -:1047F00020F4861B80930F0102C010920F0180915C -:104800000F011F928F938CEF94E09F938F930E94E0 -:1048100050060F900F900F900F900895CF93C82FD0 -:104820001F928F9381E098E09F938F930E94500690 -:1048300081E090E0A0E0B0E0BC01CD0104C0660FD3 -:10484000771F881F991FCA95D2F70E94971C0F9057 -:104850000F900F900F90CF910C946E18CF938732DA -:1048600088F58E3108F00BC18E3009F487C0D8F47A -:10487000873009F460C08B3009F44FC0863009F0EE -:1048800002C180914202817F8E7F8093420286E046 -:1048900098E00E94B7058FEB9AE00E94B70581E08F -:1048A0008093520246C0863109F4B0C020F48031B2 -:1048B00009F47AC0E8C0893109F491C08B3109F458 -:1048C00049C0E1C0883349F150F4893209F4D5C0B8 -:1048D000853309F4D2C0873209F0D5C0CEC0833405 -:1048E00009F4CBC028F48A3308F4CDC08953C8C07A -:1048F000883409F0C8C00E946E188EEA9AE00E94BF -:10490000B7052FEF83ED90E3215080409040E1F711 -:1049100000C000000E94CB1F0CC08DE298E041C097 -:1049200085E99AE00E94B7058091420281608093F8 -:104930004202C1E0ADC080914202C82FC17080FF29 -:10494000EFCF81EA9AE00E94B70580914202817F11 -:104950008E7F3FC09091420291FBCC27C0F981E04D -:10496000C827892FC0FB81F980934202CC2319F01C -:1049700088E89AE029C08AE79AE013C09091420241 -:1049800092FBCC27C0F981E0C827892FC0FB82F9B0 -:1049900080934202CC2319F08BE69AE015C08BE598 -:1049A0009AE00E94B705C5CF9091420293FBCC27B5 -:1049B000C0F981E0C827892FC0FB83F980934202A8 -:1049C000CC2351F08FE49AE00E94B7058091420217 -:1049D0008160809342025CC082E49AE0E2CF83E38C -:1049E0009AE00E94B70580E19AE00E94B7058BEC3F -:1049F00099E00E94B7058EE999E00E94B70589E524 -:104A000099E00E94B7058BE299E0CBCF8DE199E068 -:104A10000E94B7050E94D5111F928F9383E099E001 -:104A20009F938F930E94500680910C011F928F9349 -:104A30008CEE98E09F938F930E94500680915F01C7 -:104A40001F928F9389ED98E09F938F930E94500659 -:104A50000E94701F9F938F937F936F9382EC98E0D7 -:104A60009F938F930E9450068DB79EB742960FB6C4 -:104A7000F8949EBF0FBE8DBF5CCF80E001C08D510A -:104A80000E940E2456CF80EC98E00E94B705C0E04B -:104A90008C2FCF91089580E0089580E00895CF9302 -:104AA000C82F80915202813069F020F0823009F4E1 -:104AB00049C040C167E08FE00E946A13882309F46F -:104AC0003FC106C067E08FE00E946A13882361F04F -:104AD0008C2F0E944B25811104C08C2F0E942E2404 -:104AE0002FC081E090E02CC08C2F0E944D258111B9 -:104AF00026C0C431E1F070F4CB3081F0C031D1F484 -:104B00000E94D62289EF97E00E94B70582E0809349 -:104B1000520215C0C93259F0C83361F486E098E0FA -:104B20000E94B7058DEF97E00E94B70508C010926C -:104B3000520204C187EF97E00E94B705FFC081E0F1 -:104B40008170FEC0C43228F5CE3108F0C1C0CB3030 -:104B5000A1F1D0F4C73009F0D3C08EE180931401E5 -:104B600082E3809313018AE08093120184E18093B1 -:104B7000110188E08093100188E280930F018DE994 -:104B800096E00E94B705BFC0C33149F1C431C1F0FE -:104B9000B7C0CB3409F4A9C028F4C93289F0C833AE -:104BA00061F0AEC0C13509F49EC0C23509F499C0A8 -:104BB000CE3409F0A5C06AE09EC00E94D622A3C0F0 -:104BC00080915102882319F0109251029CC08AEA08 -:104BD00096E00E94B70581E080935202B1C084E85C -:104BE00096E00E94B70582E796E00E94B7058091A3 -:104BF00014011F928F938FE696E09F938F930E94EC -:104C000050068DE696E00E94B7058BE596E00E947F -:104C1000B705809113011F928F9388E596E09F93CB -:104C20008F930E94500686E596E00E94B70587E4C0 -:104C300096E00E94B705809112011F928F9384E441 -:104C400096E09F938F930E94500682E496E00E9424 -:104C5000B70581E396E00E94B705809111011F928C -:104C60008F938EE296E09F938F930E9450068CE282 -:104C700096E00E94B70587E196E00E94B705809113 -:104C800010011F928F9384E196E09F938F930E946F -:104C9000500682E196E00E94B7058BEF95E00E94F6 -:104CA000B70580910F011F928F9388EF95E09F9336 -:104CB0008F930E94500686EF95E00E94B7058DB74E -:104CC0009EB748960FB6F8949EBF0FBE8DBF1BC00F -:104CD000CE51EC2FF0E0E65DFE4F808180935102D3 -:104CE00012C061E003C061E006C06AE08091510239 -:104CF0000E94ED2208C0809151020E94902303C0BF -:104D00008BE996E013C080915102882369F01F92CD -:104D10008F9385E996E09F938F930E9450060F90A2 -:104D20000F900F900F9004C082E996E00E94B705A3 -:104D300081E006C01092520280E002C080E000CF05 -:104D4000CF9108950E94A9266894B1110C94382738 -:104D500008950E941D2788F09F5798F0B92F992732 -:104D6000B751B0F0E1F0660F771F881F991F1AF056 -:104D7000BA95C9F714C0B13091F00E943727B1E05D -:104D800008950C943727672F782F8827B85F39F05C -:104D9000B93FCCF3869577956795B395D9F73EF4EF -:104DA00090958095709561957F4F8F4F9F4F089597 -:104DB000E89409C097FB3EF49095809570956195B5 -:104DC0007F4F8F4F9F4F9923A9F0F92F96E9BB276B -:104DD0009395F695879577956795B795F111F8CFE7 -:104DE000FAF4BB0F11F460FF1BC06F5F7F4F8F4F52 -:104DF0009F4F16C0882311F096E911C0772321F048 -:104E00009EE8872F762F05C0662371F096E8862FDF -:104E100070E060E02AF09A95660F771F881FDAF736 -:104E2000880F9695879597F9089557FD9058440FE8 -:104E3000551F59F05F3F71F04795880F97FB991FF9 -:104E400061F09F3F79F087950895121613061406B6 -:104E5000551FF2CF4695F1DF08C016161706180643 -:104E6000991FF1CF86957105610508940895E8941E -:104E7000BB2766277727CB0197F908950E94512712 -:104E80000C94C2270E94B42738F00E94BB2720F060 -:104E9000952311F00C94AB270C94B12711240C949A -:104EA00038270E94152770F3959FC1F3950F50E0A6 -:104EB000551F629FF001729FBB27F00DB11D639FCC -:104EC000AA27F00DB11DAA1F649F6627B00DA11D72 -:104ED000661F829F2227B00DA11D621F739FB00D18 -:104EE000A11D621F839FA00D611D221F749F332788 -:104EF000A00D611D231F849F600D211D822F762F21 -:104F00006A2F11249F5750409AF0F1F088234AF0FD -:104F1000EE0FFF1FBB1F661F771F881F9150504069 -:104F2000A9F79E3F510580F00C94AB270C943827CD -:104F30005F3FE4F3983ED4F3869577956795B795F0 -:104F4000F795E7959F5FC1F7FE2B880F911D96950A -:104F5000879597F9089597F99F6780E870E060E07A -:104F600008959FEF80EC089500240A941616170602 -:104F700018060906089500240A941216130614064A -:104F800005060895092E0394000C11F4882352F0AD -:104F9000BB0F40F4BF2B11F460FF04C06F5F7F4F65 -:104FA0008F4F9F4F0895991B79E004C0991F961762 -:104FB00008F0961B881F7A95C9F78095089597FB8E -:104FC000072E16F4009407D077FD09D00E94F92728 -:104FD00007FC05D03EF4909581959F4F08957095FC -:104FE00061957F4F0895EE0FFF1F0590F491E02D1E -:104FF0000994AA1BBB1B51E107C0AA1FBB1FA61720 -:10500000B70710F0A61BB70B881F991F5A95A9F771 -:0E50100080959095BC01CD010895F894FFCFD6 -:10501E00FFFF3A0A2B0B080BD40AA00A013802280C -:10502E0008140A321E404D36221A04CD039703751A -:10503E000301031A0333034C0300010203040506A4 -:04504E000708090046 -:106800000000EA44E944E2440400050006000700F1 +:1001B000523A206D65646961206B6579310A005B94 +:1001C000423A253032582C20583A25642825642993 +:1001D0002C20593A2564282564292C20413A25648D +:1001E0005D0A005D20002530325820004D6F757388 +:1001F000653A205B0020616464723A25642C2072A9 +:100200006567333A253034580A000A5363616E3A01 +:100210000A0064657465637420616761696E0A0031 +:10022000544D353A206578740A00556E6B6E6F77C1 +:100230006E0A00544D353A2064656661756C740A27 +:10024000005D206370693D25640A00253032582026 +:10025000004578743A205B00436C617373696320D6 +:100260003230306370690A00436C617373696320D4 +:100270003130306370690A006164647225642072F1 +:100280006567333A20253032580A006D6F76652055 +:100290006661696C0A006164647225642072656736 +:1002A000333A20253032580A000A4D6F7573653A8B +:1002B0000A004D65646961206B6579730A006861A5 +:1002C000646C65723A20253032582C2049534F3ADD +:1002D0002025730A000A4B6579626F6172643A0ADD +:1002E000007300530052000A4B6579626F617264BB +:1002F0002073746172742E0A000A55534220636F92 +:100300006E666967757265642E0A000A0A544D4B61 +:100310003A66623834636163352B2F4C5546410A87 +:100320000A002E0341004400420020006B006500DB +:10033000790062006F0061007200640020006300B9 +:100340006F006E0076006500720074006500720038 +:1003500000000E0374002E006D002E006B002E00B6 +:1003600000000403090409027400040100A032091A +:1003700004000001030101000921110100012240D4 +:10038000000705810308000A0904010001030102B6 +:1003900000092111010001224D0007058203080018 +:1003A0000A090402000103000000092111010001F3 +:1003B0002236000705830308000A0904030002032C +:1003C0000000000921110100012222000705840319 +:1003D00020000107050403200001120110010000A4 +:1003E0000008EDFEDB0A0101010200010631FF09F0 +:1003F00074A1010975150026FF009520750881027A +:100400000976150026FF00952075089102C00501A8 +:100410000980A10185021601002637001A81002AF1 +:10042000B700751095018100C0050C0901A1018577 +:1004300003160100269C021A01002A9C02751095E1 +:10044000018100C005010902A1010901A1000509FE +:1004500019012905150025019505750181029501F0 +:10046000750381010501093009311581257F950248 +:100470007508810609381581257F95017508810663 +:10048000050C0A38021581257F950175088106C083 +:10049000C005010906A101050719E029E715002596 +:1004A00001950875018102950175088101050819FA +:1004B00001290595057501910295017503910105C5 +:1004C00007190029FF150026FF0095067508810011 +:1004D000C0636F6E73756D65723A20253034580AAB +:1004E0000073797374656D3A20253034580A000A18 +:1004F000002530325820006B6579626F6172643A72 +:1005000020004C45443A20253032580A002530322C +:10051000583A202530386225730A00722F63203044 +:10052000313233343536370A00290A002575002F59 +:10053000002575005D28002564002000256400204A +:100540000025640020002564007C0025303258001E +:100550006D6F7573656B6579205B62746E7C782056 +:1005600079207620685D287265702F61636C293A66 +:10057000205B006D6B5F776865656C5F74696D65A6 +:100580005F746F5F6D6178203D2025640A006D6B9C +:100590005F776865656C5F6D61785F7370656564D2 +:1005A000203D2025640A006D6B5F74696D655F7482 +:1005B0006F5F6D6178203D2025640A006D6B5F6D73 +:1005C00061785F7370656564203D2025640A006D65 +:1005D0006B5F696E74657276616C203D2025640ADC +:1005E000006D6B5F64656C6179203D2025640A00B5 +:1005F0006D6B5F776865656C5F74696D655F746F5F +:100600005F6D6178203D2025640A006D6B5F77681F +:1006100065656C5F6D61785F7370656564203D2012 +:1006200025640A006D6B5F74696D655F746F5F6D43 +:100630006178203D2025640A006D6B5F6D61785FF5 +:100640007370656564203D2025640A006D6B5F69E9 +:100650006E74657276616C203D2025640A006D6BB6 +:100660005F64656C6179203D2025640A000A0025DD +:100670007500363A20776865656C5F74696D655FF3 +:10068000746F5F6D61783A20000A00257500353A75 +:1006900020776865656C5F6D61785F737065656410 +:1006A0003A20000A00257500343A2074696D655FB0 +:1006B000746F5F6D61783A20000A00257500333A47 +:1006C000206D61785F73706565643A20000A0025CB +:1006D0007500323A20696E74657276616C286D73AC +:1006E000293A20000A00257500313A2064656C61C2 +:1006F00079282A31306D73293A20000A092D2056B5 +:10070000616C756573202D0A004D3E004D25643ED9 +:1007100020003F007365742064656661756C740A1F +:1007200000433E200077686572652064656C7461E3 +:100730003A20637572736F723D25642C207768656B +:10074000656C3D25640A53656520687474703A2FA2 +:100750002F656E2E77696B6970656469612E6F72A3 +:10076000672F77696B692F4D6F7573655F6B65795F +:10077000730A000A092D204D6F7573656B6579202A +:100780002D0A4553432F713A09717569740A313A3C +:100790000964656C6179282A31306D73290A323A0F +:1007A00009696E74657276616C286D73290A333A33 +:1007B000096D61785F73706565640A343A0974691C +:1007C0006D655F746F5F6D61780A353A09776865AA +:1007D000656C5F6D61785F73706565640A363A09B0 +:1007E000776865656C5F74696D655F746F5F6D6177 +:1007F000780A0A703A097072696E742076616C75B5 +:1008000065730A643A097365742064656661756C82 +:1008100074730A75703A092B310A646F776E3A095E +:100820002D310A706775703A092B31300A70676490 +:100830006F776E3A092D31300A0A7370656564204E +:100840003D2064656C7461202A206D61785F73704F +:10085000656564202A2028726570656174202F20E8 +:1008600074696D655F746F5F6D6178290A003F0080 +:100870004D3E2000433E20004C25640A000A092D0D +:1008800020436F6E736F6C65202D0A4553432F71A3 +:100890003A09717569740A6D3A096D6F7573656B04 +:1008A00065790A000A092D204D61676963202D0AC8 +:1008B000643A0964656275670A783A096465627525 +:1008C00067206D61747269780A6B3A0964656275B4 +:1008D00067206B6579626F6172640A6D3A096465BD +:1008E000627567206D6F7573650A763A0976657271 +:1008F00073696F6E0A733A097374617475730A636E +:100900003A09636F6E736F6C65206D6F64650A30B2 +:100910002D343A096C61796572302D3428463130B6 +:100920002D4634290A506175733A09626F6F746CF1 +:100930006F616465720A003F0074696D65725F7271 +:10094000656164333228293A202530346C580A0016 +:100950006B6579626F6172645F69646C653A2025CA +:10096000580A006B6579626F6172645F70726F74B0 +:100970006F636F6C3A2025580A00686F73745F6B61 +:100980006579626F6172645F6C65647328293A20CF +:1009900025580A000A092D20537461747573202D9F +:1009A0000A004743433A20352E342E302041565218 +:1009B0002D4C4942433A20322E302E30204156529F +:1009C0005F415243483A20617672350A004F5054D5 +:1009D000494F4E533A204C554641204D4F555345B3 +:1009E0004B45592045585452414B455920434F4E91 +:1009F000534F4C4520434F4D4D414E44204B45599C +:100A00004D41505F53454354494F4E2034303936A1 +:100A10000A004255494C443A2066623834636163A7 +:100A2000352B202831353A33323A3337204A756E28 +:100A30002032332032303139290A005649443A20D5 +:100A400030784645454428742E6D2E6B2E29205053 +:100A500049443A2030783041444228414442206B96 +:100A60006579626F61726420636F6E76657274651A +:100A70007229205645523A203078303130310A0000 +:100A8000444553433A20636F6E7665727420414447 +:100A900042206B6579626F61726420746F205553D8 +:100AA000420A000A092D2056657273696F6E202D67 +:100AB0000A000A6D6F7573653A206F66660A000A50 +:100AC0006D6F7573653A206F6E0A000A6B65796207 +:100AD0006F6172643A206F66660A000A6B6579621C +:100AE0006F6172643A206F6E0A000A6D61747269F8 +:100AF000783A206F66660A000A6D61747269783A06 +:100B0000206F6E0A000A64656275673A206F6E0A8C +:100B1000000A64656275673A206F66660A000A0A11 +:100B2000626F6F746C6F616465722E2E2E200043AD +:100B30003E20000011241FBECFEFDAE0DEBFCDBFA4 +:100B400004B603FE27C08091800390918103A09199 +:100B50008203B09183038730904BA740B04BD1F410 +:100B600010928003109281031092820310928303EB +:100B700014BE84B7877F84BF0FB6F894A895809180 +:100B80006000886180936000109260000FBEE0E01A +:100B9000F8E3099511E0A0E0B1E0E6E0F6E502C077 +:100BA00005900D92A235B107D9F723E0A2E5B1E097 +:100BB00001C01D92A038B207E1F70E94510F0C94BA +:100BC000012B0C940000FF93EF93E0915201F09100 +:100BD0005301309709F00995EF91FF910895FC01B9 +:100BE0008591803011F0EFDFFBCF0895FF27E0E221 +:100BF00030E247FF0CC0419597FF09C0EDE26095D8 +:100C0000709580959095611D711D811D911D27FF27 +:100C100002C0219530E350E2AA27660F771F881F94 +:100C2000991FAA1FA41710F0A41B63955A95A9F742 +:100C3000AA3008F0A95FA05DAF93F3956115710527 +:100C40008105910541F7ED3211F4EF93F395F21719 +:100C500018F43F93F395FBCF8F91B5DFFA95E1F749 +:100C60000895E991F9918591803021F0853219F04C +:100C7000AADFF9CF089520E0E89455915532C1F3E9 +:100C8000503311F4689455915A3348F4505390F30B +:100C9000220F022E220F220F200D250FF4CF0EF46B +:100CA000219589919991533619F3533729F1533589 +:100CB00059F1BC0188279927E8945C3621F4899181 +:100CC000999168945591543639F446EF7EF077FF48 +:100CD0000DC08FEF9FEF0AC055374AE039F0583505 +:100CE00040E121F0523642E009F00895FF93EF937E +:100CF0007DDFEF91FF91B7CFFF93EF93FC018191DF +:100D00008030B9F360DFFBCFFF93EF9368DFF1CF63 +:100D1000DF93CF93CDB7DEB72596A3DFCF91DF91D9 +:100D20000895282F2770E82FE695E695E695EF7051 +:100D3000F0E0E05AFE4F87FF0AC081E090E001C07A +:100D4000880F2A95EAF780959081892308C081E071 +:100D500090E001C0880F2A95EAF79081892B808363 +:100D600008950F931F93CF93DF938AE092E09F93B0 +:100D70008F930E9488060F900F90C0E0D0E005EF9F +:100D800011E063E08C2F0E94730C009771F09F9329 +:100D90008F93DF93CF931F930F930E9488060F903A +:100DA0000F900F900F900F900F902196C031D105AA +:100DB00041F7DF91CF911F910F9108953F924F928C +:100DC0005F926F927F928F929F92AF92BF92CF92DB +:100DD000DF92EF92FF920F931F93CF93DF93CDB7E4 +:100DE000DEB728970FB6F894DEBF0FBECDBF90E2F6 +:100DF000492E92E0592E2AE2622E22E0722E33E32F +:100E0000C32E32E0D32E4BE4A42E42E0B42E63E096 +:100E100083E00E94730C8C01892B09F449C18091F5 +:100E2000620383FF11C01F930F931F9283E08F9380 +:100E300086E992E09F938F930E9488060F900F900F +:100E40000F900F900F900F9083E00E94E40C412FC1 +:100E50004F602EEF63E083E00E94D20C8FE00E948F +:100E6000E40C63E08FE00E94730C8C0180916203BC +:100E70000115110559F483FFCACF8BE892E09F93C7 +:100E80008F930E9488060F900F90C1CF83FF11C0EF +:100E90001F930F931F928FE08F9388E792E09F93A9 +:100EA0008F930E9488060F900F900F900F900F90D5 +:100EB0000F90902E84E6E82EF12C8FEF890D823072 +:100EC00008F03FC08FE00E94E40C24E0412F63E073 +:100ED0008FE00E94D20C63E08FE00E94730C8C01C3 +:100EE000982E21E082131DC08FE00E94E40C22E0C6 +:100EF000412F63E08FE00E94D20C63E08FE00E94FC +:100F0000730C8C01982E81E008130BC088E692E0E8 +:100F10009F938F930E948806F0921301E092120132 +:100F2000A1C082E098120DC088E592E09F938F9354 +:100F30000E94880688EC90E0909313018093120140 +:100F400091C094E0991273C028E0AE014F5F5F4FEB +:100F500061E08FE00E94EE0B863050F02D813E81E3 +:100F6000322723273227309313012093120106C022 +:100F7000F0921301E09212018823C9F1882E912C7E +:100F80001F928F9381E592E09F938F930E94880632 +:100F90000F900F900F900F90312C832D032C000C8D +:100FA000990B881599059CF4E1E0F0E0EC0FFD1F2A +:100FB000E80FF91F80811F928F93BF92AF920E941A +:100FC000880633940F900F900F900F90E6CF80918A +:100FD00013018F93809112018F9381E492E09F938C +:100FE0008F930E9488060F900F900F900F90898129 +:100FF0008B34C1F48A818D34A9F48B818C3491F4C3 +:101000008C81813379F4DF92CF920E9488068FE041 +:101010000E94E40C2EEF412F407F63E08FE00E949E +:10102000D20C20C07F926F920E9488061BC082E380 +:1010300098121AC05F924F920E9488068FE00E9419 +:10104000E40C28E04AE051E062E08FE00E94990C55 +:101050008FE00E94E40C28E042E051E062E08FE083 +:101060000E94990C0F900F908FE00E94E40C412F8A +:10107000407F4A602EEF63E08FE00E94D20C8AE04E +:101080000E94E40C63E08FE00E94730C8C01982EA8 +:10109000892B09F4BCCE8091620383FF0ECF82E1DD +:1010A00092E09F938F930E9488060F900F9005CF38 +:1010B00028960FB6F894DEBF0FBECDBFDF91CF915B +:1010C0001F910F91FF90EF90DF90CF90BF90AF9066 +:1010D0009F908F907F906F905F904F903F9008957A +:1010E0009F92AF92BF92CF92DF92EF92FF920F93B7 +:1010F0001F93CF93DF9300D000D01F92CDB7DEB700 +:101100008091590190915A010E947C220C9708F419 +:101110005BC10E94642290935A018093590180918F +:101120005701909158010E947C22893E934040F0E3 +:101130000E94642290935801809357010E94DE061A +:1011400025E0AE014F5F5F4F60E08AE00E94EE0B4A +:10115000D82E41E0481710F081E034C172E08713C7 +:1011600009C0498146FB442740F98A8186FB8827CC +:1011700080F90AC0FE01E80FF11D808186FB44273B +:1011800040F982FB882780F99D2D58EF68E895305B +:10119000E0F4292F092E000C330BE1E0F0E0EC0F16 +:1011A000FD1FE20FF31F411102C0608301C0508395 +:1011B000882349F0E1E0F0E0EC0FFD1FE20FF31FA0 +:1011C0002081276020839F5FE2CF0D8103FD02C055 +:1011D00080E801C080E007FF80649C8193FF80620B +:1011E00097FF80612B8123FF886027FF84603A810D +:1011F00037FF8260698167FF816080935B01422FC6 +:10120000407788E0489F70011124892F807770E42F +:10121000879FA0011124E42AF52A6F77A701462BA6 +:10122000802F8077E82EF12CFE2CEE24FF0CE42A90 +:10123000F52A3F7710E0102F00271295110F107E2E +:10124000032B277080E8289F90011124022B132B79 +:101250009770892F90E0982F8827990F990F082B66 +:10126000192B20915601022E000C330B029FC00156 +:10127000039F900D129F900D112481384FEF94071A +:1012800014F481E89FEF91958195910981387FEF62 +:10129000970714F481E89FEF819580935C01E29EAB +:1012A000C001E39E900DF29E900D112481382FEF26 +:1012B000920714F481E89FEF919581959109813807 +:1012C0004FEF940714F481E89FEF819580935D01BF +:1012D0008091620383FF5AC08CEE91E09F938F93BD +:1012E0000E9488060F900F90912CAD2CB12C86EEA9 +:1012F000C82E81E0D82E892D092C000C990B8A1557 +:101300009B059CF4E1E0F0E0EC0FFD1FE80FF91FF6 +:1013100080811F928F93DF92CF920E9488069394D0 +:101320000F900F900F900F90E6CF83EE91E09F9378 +:101330008F930E94880680915601282F082E000C5A +:10134000330B3F938F93FF92EF9280915D01282F93 +:10135000082E000C330B3F938F931F930F938091B4 +:101360005C01282F082E000C330B3F938F93809144 +:101370005B011F928F938FEB91E09F938F930E945D +:1013800088060FB6F894DEBF0FBECDBF8BE591E0A7 +:101390000E94501580915601482F082E000C550BC5 +:1013A0002091120130911301283C310518F024E0FE +:1013B00030E002C028E030E091E0421753070CF023 +:1013C00090E0890F809356010F900F900F900F902F +:1013D0000F90DF91CF911F910F91FF90EF90DF90D1 +:1013E000CF90BF90AF909F900895E82FF0E0E05A23 +:1013F000FE4F80810895682F609582E00C94FB0C6D +:1014000080916203816080936203569A5E9A0E9483 +:10141000EA0B2FEF81EE94E0215080409040E1F7FD +:1014200000C000000E94B10685ED92E09F938F936B +:101430000E94880663E082E00E94730C99270F9057 +:101440000F908131910539F190F48730910519F1B0 +:1014500038F49C01245031092230310500F51BC0BD +:1014600089309105C1F08D309105C9F414C08D31DA +:10147000910589F038F48431910569F0893191053D +:1014800071F409C0843C910531F0873C910519F055 +:10149000813C910521F421E02093700102C010925B +:1014A000700120917001211103C020E331E002C0DE +:1014B0002CE231E03F932F939F938F938EEB92E03A +:1014C0009F938F930E94880663E087E00E94730CCD +:1014D000992721E00F900F900F900F900F900F9091 +:1014E0008230910509F020E020937101029741F4C8 +:1014F00082EB92E09F938F930E9488060F900F904B +:1015000023E042E063E082E00E94D20C89EA92E0AC +:101510009F938F930E9488060E94DE060E94B10668 +:10152000E0E6F1E00F900F90119221E0E037F20732 +:10153000D9F70E94FB140E94FB09569A5E98089501 +:101540001F93CF93DF93C0910001D09101018FEFE2 +:101550009FEF9093010180930001CF3F8FEFD80759 +:1015600009F074C080915401909155010E947C2231 +:101570000C9710F480E0CDC00E9464229093550136 +:101580008093540182E00E94960CEC01892B09F0B3 +:101590005DC080917101882309F458C087E00E94E2 +:1015A000960C009709F452C09C012F773327223004 +:1015B0003105A1F048F42115310569F021303105DC +:1015C00099F480788A641AC02330310551F02F379E +:1015D0003105A1F009C08078826410C080788964E8 +:1015E0000DC0807888640AC08CEA91E09F938F9345 +:1015F0000E9488060F900F9081E18BC0292F33271E +:101600002F7733272130310579F050F02230310522 +:1016100079F02330310581F4EC01D078D86416C01C +:10162000EC01D078D26412C0EC01D078DA640EC03C +:10163000EC01D078D9640AC089E991E09F938F9337 +:101640000E9488060F900F9080E163C08091620332 +:1016500081FF18C0209709F48DCF85E891E00E94A2 +:10166000EF05DF93CF9380E891E09F938F930E94E3 +:1016700088068EE791E00E94EF050F900F900F9083 +:101680000F9003C0209709F475CFCF378FE7D807A5 +:1016900011F48FE705C0CF3F8FEFD80721F48FEF0C +:1016A0000E94910635C02D2F3327822F1C2F2F3FEC +:1016B00081F4DF93CF9380E691E09F938F930E9414 +:1016C00088060E94000A0F900F900F900F908C2FA9 +:1016D00020C090917001992381F0A9014F7755277F +:1016E0004233510521F42078822F8A6006C04A30A7 +:1016F000510519F42078822F82630E9491061F3FC2 +:1017000039F0DC2FCC27CF6FD0930101C0930001BB +:1017100081E0DF91CF911F910895509A83E091E08D +:101720000197F1F700C0000050989AEB9A95F1F7F5 +:1017300000C00895509A8AEB8A95F1F700C050983E +:1017400083E091E00197F1F700C000000895EF9267 +:10175000FF920F931F93CF93DF93C0E0D0E090E808 +:10176000E92EF12C082F10E0C7010C2E02C0959530 +:1017700087950A94E2F780239123892B19F00E9420 +:101780009A0B02C00E948D0B2196C830D10561F7DB +:10179000DF91CF911F910F91FF90EF900895509A94 +:1017A00083EF9BE00197F1F700C000000C949A0BC7 +:1017B000489B06C023E02A95F1F700000197C1F786 +:1017C0000895489906C023E02A95F1F70000019793 +:1017D000C1F708955898509808950895EF92FF9290 +:1017E0000F931F93CF93DF93C82F162F7A01D22F19 +:1017F00080E0422F50E0282F082E000C330B2417D6 +:10180000350734F4F701E20FF31F10828F5FF3CF37 +:10181000F8940E94CF0B80E1C89F90011124812F82 +:101820008C60822B0E94A70B0E948D0B84EF91E0AD +:101830000E94E10B892B19F485EE92E01AC084EF27 +:1018400091E00E94D80B892B19F4789480E044C071 +:1018500088E290E00E94E10B892B19F483EE92E07C +:1018600008C084E690E00E94D80B892B51F481EEE9 +:1018700092E09F938F930E94880678940F900F9028 +:10188000E5CFC0E082E890E00E94E10B8823F9F008 +:101890008C011127C8010E94D80B8823C1F09C2F0E +:1018A0009695969596959D1780F4F701E90FF11D91 +:1018B0009081990F22E830E0201B310B081B1109A1 +:1018C000201731070CF491609083CF5FD9F678949C +:1018D0008C2F869586958695DF91CF911F910F91DC +:1018E000FF90EF900895CF93DF93CDB7DEB72897A1 +:1018F0000FB6F894DEBF0FBECDBF28E0AE014F5F3C +:101900005F4F0E94EE0B823031F489819A819827D3 +:101910008927982702C080E090E028960FB6F894B7 +:10192000DEBF0FBECDBFDF91CF91089560E00C9474 +:10193000730CEF92FF921F93CF93DF93D82F162F44 +:101940007A01C22FF8940E94CF0B80E1D89F9001BA +:101950001124812F8860822B0E94A70B0E948D0B7F +:101960008FE193E00197F1F700C000000E949A0B0D +:1019700010E0D0E0812F012E000C990B8C179D07F1 +:1019800044F4F701E80FF91F80810E94A70B1F5F45 +:10199000F1CF0E948D0B7894DF91CF911F91FF9032 +:1019A000EF900895CF93DF9300D0CDB7DEB7498392 +:1019B0002A8322E0AE014F5F5F4F0E94990C0F9087 +:1019C0000F90DF91CF910895CF93C82FF8940E9484 +:1019D000CF0B20E1C29FC001112481600E94A70BA0 +:1019E0000E948D0B8FE193E00197F1F700C000009A +:1019F0007894CF910895262F277040E062E00C94F0 +:101A0000D20C80917E020895CF93DF9300D01F9275 +:101A1000CDB7DEB79C0180917703843019F593E050 +:101A200099833B832A839093E9008FEF9091E8009C +:101A3000815095FD06C095ED9A95F1F70000811152 +:101A4000F5CF8091E80085FF0DC040E050E063E0F5 +:101A500070E0CE0101960E947E108091E8008E77A2 +:101A60008093E8000F900F900F90DF91CF91089531 +:101A7000CF93DF9300D01F92CDB7DEB720917703CD +:101A8000243031F522E02983805891099B838A8391 +:101A900083E08093E9008FEF9091E800815095FDFD +:101AA00006C095ED9A95F1F700008111F5CF809170 +:101AB000E80085FF0DC040E050E063E070E0CE013B +:101AC00001960E947E108091E8008E778093E80056 +:101AD0000F900F900F90DF91CF9108952091770391 +:101AE0002430F1F422E02093E9002FEF3091E80058 +:101AF000215035FD06C035ED3A95F1F70000211172 +:101B0000F5CF2091E80025FF0BC040E050E065E0F4 +:101B100070E00E947E108091E8008E778093E8004C +:101B20000895CF93DF9320917703243049F521E086 +:101B30002093E90021E8215059F03091E80035FD6B +:101B400007C0EFE3F1E03197F1F700C00000F3CFF9 +:101B50002091E80025FF14C0EC0140E050E068E06F +:101B600070E00E947E108091E8008E778093E800FC +:101B700088E0FE01A6E7B2E001900D928A95E1F7B8 +:101B8000DF91CF910895CF93C0917401C1110BC023 +:101B90000E947022643C79408105910520F081E02B +:101BA00080937401C1E08C2FCF910895CF93C82FFB +:101BB0000E94C30D882309F448C00FB607FE45C034 +:101BC00080917703843009F040C08091E9008F70E4 +:101BD0002091EC00922F917020FD90E8892B94E0E9 +:101BE0009093E9009091EB0090FF2CC09091EE0053 +:101BF00097FF28C09091170120911601291709F429 +:101C000047C02091E80025FF1DC0E0911401F0912C +:101C10001501E90FF11D30819F5F2091180192237A +:101C2000909317013093F1009091E80095FDE2CF79 +:101C30009091E80090FFDECF9091E8009E7790931E +:101C4000E800D8CF8F708093E9008091160190E072 +:101C5000AC014F5F5F4F30911801232F30E02423F8 +:101C600035234091170150E024173507D1F020911A +:101C7000140130911501F901E80FF91FC08380911B +:101C800016018F5F9091180189238093160109C076 +:101C90009091E80095FFD6CFC093F1008F708093AC +:101CA000E90080E0CF91089580917603811109C009 +:101CB0000E940F120E946C128091E2008460809357 +:101CC000E20008951092760308950895089542E081 +:101CD00061EC81E00E94881142E061EC82E00E94A8 +:101CE000881142E061EC83E00E94881142E261ECDD +:101CF00084E00C94881180917903833009F453C0F7 +:101D000030F4813071F0823009F48CC008958A304B +:101D100009F478C08B3009F45EC0893009F09AC0AC +:101D200020C080917803813A09F094C08091E80046 +:101D3000877F8093E80080917C0390917D03892BBD +:101D400021F468E086E792E003C060E080E090E084 +:101D500070E00E94C9108091E8008B778093E800C2 +:101D6000089580917803813209F074C080917C03DA +:101D700090917D03892B09F06DC08091E800877FE9 +:101D80008093E8008091E80082FD05C08091770390 +:101D90008111F8CF5FC08091F10080937E02809125 +:101DA000E8008B7753C080917803813A09F052C0E4 +:101DB00080917C0390917D03892B09F04BC0809129 +:101DC000E800877F8093E8008091E80080FFFCCFE7 +:101DD0008091230136C0809178038132D9F58091BA +:101DE0007C0390917D03892BA9F58091E800877F82 +:101DF0008093E8000E94BD1180917A0380932301B3 +:101E00000C94331B80917803813221F58091E80096 +:101E1000877F8093E8000E94BD1180917B038093AF +:101E20007F02089580917803813AA1F48091E800BF +:101E3000877F8093E8008091E80080FFFCCF80914D +:101E40007F028093F1008091E8008E778093E80014 +:101E50000C94BD11089580917E02809375011092BB +:101E60007E020E9464160C94331B0C942B0F0E946C +:101E7000F12180917503882329F00E941A22811193 +:101E80000C94681008950E942E2280917501809311 +:101E90007E0208950C94430F08950C944C0F0C94FB +:101EA0004C0FCF9384B7877F84BF0FB6F894A89563 +:101EB00080916000886180936000109260000FBE86 +:101EC00090E080E80FB6F8948093610090936100F1 +:101ED0000FBE86ED9DE00E94C42189E191E00E9441 +:101EE000F6148BE093E00E94EF050E944F0F0E94D2 +:101EF000B5150E940F120E946C128091E20084605E +:101F00008093E20078940E94B71580917703843023 +:101F100019F00E944C0FF9CF89EF92E00E94EF0573 +:101F20000E944D0F87EE92E00E94EF05C4E0809181 +:101F30007703853019F40E94370FF9CF0E94BD1541 +:101F40002091E4003091E50080917201909173013D +:101F50002817390761F38091E4009091E500909390 +:101F60007301809372010E94C30D882301F3809155 +:101F700077038430E1F68091E9008F702091EC00C6 +:101F8000922F917020FD90E8892BC093E9009091E9 +:101F9000EB0090FF43C09091EE0097FF3FC09091FF +:101FA000170120911601291709F12091E80025FF5A +:101FB0001DC0E0911401F0911501E90FF11D308170 +:101FC0009F5F209118019223909317013093F100A5 +:101FD0009091E80095FDE3CF9091E80090FFDFCF6E +:101FE0009091E8009E779093E800D9CF9091F3000C +:101FF0002091F20030E0392B232B81F09091E80002 +:1020000090FF0CC09091E80095FF03C01092F10082 +:10201000F9CF9091E8009E779093E8008F708093BD +:10202000E90085CF292F332723303105C9F060F42B +:102030002130310581F02230310509F041C084E7BB +:1020400090E026E633E040C021323105E1F0223253 +:10205000310531F135C082E190E02AED33E034C042 +:1020600099278130910549F028F0029749F5E2E27D +:10207000F3E005C0E2E6F3E002C0E2E5F3E08491BC +:1020800090E09F0121C06430D8F4E62FF0E0EE0F1D +:10209000FF1FE15CFE4F2081318189E090E014C098 +:1020A000643070F470E0FB01EE0FFF1FE95CFE4F3F +:1020B00020813181FB01ED5CFE4F808190E004C006 +:1020C00080E090E020E030E0FA0131832083089541 +:1020D00080E189BD82E189BD09B400FEFDCF809118 +:1020E000D8008F7D8093D8008091E000826080933B +:1020F000E0008091E00081FDFCCF0895CF92DF9257 +:10210000EF92FF920F931F93CF93DF93EC018B011C +:102110007A010E94DC11811133C0E114F10439F01D +:10212000F70180819181081B190BC80FD91FC12CA1 +:10213000D12C0115110519F18091E80085FD16C01B +:102140008091E8008E778093E800E114F10449F073 +:10215000F70180819181C80ED91ED182C08285E0AD +:102160000FC00E94DC11882321F30AC0899180935B +:10217000F10001501109FFEFCF1ADF0ADACF80E03A +:10218000DF91CF911F910F91FF90EF90DF90CF9053 +:10219000089520917E0330917F032617370748F07A +:1021A0006115710539F42091E8002E772093E8003D +:1021B00001C0B901FC0120E06115710579F1809140 +:1021C00077038823F1F18530F1F18091E80083FDF8 +:1021D0003CC08091E80082FD2EC08091E80080FF25 +:1021E000EBCF2091F3008091F20090E0922B6115EB +:1021F000710551F08830910538F421912093F10058 +:10220000615071090196F3CF21E0089709F020E0B1 +:102210008091E8008E778093E800CECF2111CFCF58 +:102220000AC080917703882361F0853061F0809146 +:10223000E80083FD0AC08091E80082FFF2CF80E0D1 +:10224000089582E0089583E0089581E00895209143 +:102250007E0330917F032617370748F0611571051B +:1022600039F42091E8002E772093E80001C0B901ED +:10227000FC0120E06115710591F1809177038823BD +:1022800009F440C0853009F43FC08091E80083FD27 +:102290003DC08091E80082FD2FC08091E80080FF62 +:1022A000E9CF2091F3008091F20090E0922B61152C +:1022B000710559F08830910540F424912093F10084 +:1022C0003196615071090196F2CF21E0089709F02B +:1022D00020E08091E8008E778093E800CBCF211139 +:1022E000CCCF0AC080917703882361F0853061F0FC +:1022F0008091E80083FD0AC08091E80082FFF2CF60 +:1023000080E0089582E0089583E0089581E00895D3 +:10231000982F973068F59093E900981739F07091ED +:10232000EC002091ED005091F00003C0242F762F97 +:1023300050E021FD02C09F5FECCF3091EB003E7F6B +:102340003093EB003091ED003D7F3093ED00309104 +:10235000EB0031603093EB007093EC002093ED00C4 +:102360005093F0002091EE0027FDE5CF80E0089526 +:102370008F708093E90081E008958091780387FF52 +:1023800011C08091E80082FD05C080917703811122 +:10239000F8CF11C08091E8008B770BC08091770354 +:1023A000882349F08091E80080FFF8CF8091E80011 +:1023B0008E778093E80008952091E4003091E50045 +:1023C00095E64091EC00842F817040FF23C08091FE +:1023D000E80080FD1DC080917703882399F0853047 +:1023E00099F08091EB0085FD11C04091E40050917F +:1023F000E5002417350729F3915011F09A01E1CF38 +:1024000084E0089582E0089583E0089581E00895CE +:1024100080E008954091E80042FFDDCF08950E94DA +:102420007D120E948512E0EEF0E080818160808361 +:10243000E8EDF0E080818F77808319BCA7EDB0E0F4 +:102440008C918E7F8C9380818F7E80831092760317 +:1024500008950F931F93CF93DF930E947D120E94E4 +:102460008512C8EDD0E088818F7788838881806865 +:10247000888388818F7D888319BC1092770310929E +:102480007303109275031092740300EE10E0F801CC +:1024900080818B7F808388818160888342E060E0D7 +:1024A00080E00E948811E1EEF0E080818E7F8083E1 +:1024B000E2EEF0E0808181608083808188608083AB +:1024C000F80180818E7F8083888180618883DF919D +:1024D000CF911F910F910895E8EDF0E080818F7EFC +:1024E0008083E7EDF0E080818160808384E082BFBB +:1024F00081E0809376030C942912E8EDF0E080816E +:102500008E7F80831092E20008951092DA0010927C +:10251000E10008951F920F920FB60F9211242F938E +:102520003F934F935F936F937F938F939F93AF935B +:10253000BF93EF93FF938091E10082FF0BC08091E6 +:10254000E20082FF07C08091E1008B7F8093E10071 +:102550000E94660E8091DA0080FF1FC08091D80033 +:1025600080FF1BC08091DA008E7F8093DA0080911B +:10257000D90080FF0DC080E189BD82E189BD09B429 +:1025800000FEFDCF81E0809377030E94540E05C0CA +:1025900019BC109277030E94620E8091E10080FFC7 +:1025A00019C08091E20080FF15C08091E2008E7F0B +:1025B0008093E2008091E20080618093E20080914C +:1025C000D80080628093D80019BC85E0809377039F +:1025D0000E94350F8091E10084FF30C08091E200BD +:1025E00084FF2CC080E189BD82E189BD09B400FE71 +:1025F000FDCF8091D8008F7D8093D8008091E1003D +:102600008F7E8093E1008091E2008F7E8093E200D4 +:102610008091E20081608093E200809173038823BF +:1026200011F084E007C08091E30087FD02C081E0E3 +:1026300001C083E0809377030E944A0F8091E100FC +:1026400083FF29C08091E20083FF25C08091E100D3 +:10265000877F8093E10082E0809377031092730379 +:102660008091E1008E7F8093E1008091E2008E7F77 +:102670008093E2008091E20080618093E20042E07A +:1026800060E080E00E9488118091F0008860809373 +:10269000F0000E94650EFF91EF91BF91AF919F9165 +:1026A0008F917F916F915F914F913F912F910F90FB +:1026B0000FBE0F901F9018951F920F920FB60F929A +:1026C00011242F933F934F935F936F937F938F9337 +:1026D0009F93AF93BF93CF93DF93EF93FF93C091FB +:1026E000E900CF708091EC00D82FD17080FDD0E848 +:1026F0001092E9008091F000877F8093F000789439 +:102700000E94A0131092E9008091F00088608093ED +:10271000F000CD2BCF70C093E900FF91EF91DF91D6 +:10272000CF91BF91AF919F918F917F916F915F9169 +:102730004F913F912F910F900FBE0F901F901895C2 +:102740001F93CF93DF93CDB7DEB7AA970FB6F89458 +:10275000DEBF0FBECDBFE8E7F3E08091F1008193CB +:1027600023E0E038F207C9F70E947B0E8091E80071 +:1027700083FF24C18091780390917903492F50E021 +:102780004A30510508F01AC1FA01EA5AFF4F0C9479 +:10279000E72A803881F0823809F010C180917C03EB +:1027A0008F708093E9008091EB0085FB882780F98A +:1027B0001092E90006C08091740390917503911105 +:1027C00082609091E800977F9093E8008093F100F9 +:1027D0001092F100C8C0282F2D7F09F0EFC0882388 +:1027E00019F0823061F0EAC080917A03813009F0FB +:1027F000E5C0933009F080E0809375032BC0809191 +:102800007A03811127C080917C038F7009F4D6C0B0 +:102810008093E9002091EB0020FF1CC0933021F44D +:102820008091EB00806214C09091EB0090619093D6 +:10283000EB0021E030E0A90102C0440F551F8A954A +:10284000E2F74093EA001092EA008091EB00886082 +:102850008093EB001092E9008091E800877F86C0AA +:102860008111ACC010917A031F778091E3008078CA +:10287000812B8093E3008091E800877F8093E800BC +:102880000E94BD118091E80080FFFCCF8091E300A1 +:1028900080688093E300111102C082E001C083E0F0 +:1028A000809377038BC08058823008F087C0809176 +:1028B0007A0390917B038C3D53E0950779F583E093 +:1028C0008A838AE289834FB7F894DE01139620E069 +:1028D0003EE051E2E32FF0E050935700E49120FFF7 +:1028E00003C0E295EF703F5FEF708E2F90E0EA300B +:1028F00010F0C79601C0C0968D939D932F5F243131 +:1029000049F74FBF8091E800877F8093E8006AE233 +:1029100070E0CE0101960E94C91014C0AE014F5F55 +:102920005F4F60917C030E941210BC01892B09F457 +:1029300045C09091E800977F9093E80089819A8143 +:102940000E9427118091E8008B778093E80036C0C1 +:102950008038A1F58091E800877F8093E80080911E +:1029600073038093F1008091E8008E778093E800F4 +:102970000E94BD1123C0811121C080917A039091E2 +:102980007B0399270297D4F48091E800877F809396 +:10299000E80080917A03809373030E94BD118091B7 +:1029A0007303811106C08091E30087FD02C081E0BE +:1029B00001C084E0809377030E94670E8091E80055 +:1029C00083FF0AC08091E800877F8093E8008091B0 +:1029D000EB0080628093EB00AA960FB6F894DEBFFE +:1029E0000FBECDBFDF91CF911F91089590938502C7 +:1029F000809384020895E0918402F09185023097DB +:102A000021F00190F081E02D099480E00895EF928B +:102A1000FF920F931F93CF93DF93E0918402F09185 +:102A200085023097B1F18C010280F381E02D099588 +:102A30008091620382FF2DC080FF04C087EF94E085 +:102A40000E94EF05E80118E081EFE82E84E0F82EFF +:102A50008091620380FF0BC088811F928F93FF9249 +:102A6000EF920E9488060F900F900F900F901150D8 +:102A700021961111EDCF8091620380FF0AC08FEE85 +:102A800094E0DF91CF911F910F91FF90EF900C9404 +:102A9000EF05DF91CF911F910F91FF90EF90089577 +:102AA000E0918402F0918502309721F00480F58155 +:102AB000E02D09940895CF93DF9320918202309105 +:102AC00083022817390709F19093830280938202C9 +:102AD000E0918402F09185023097B9F0EC01068014 +:102AE000F781E02D09958091620382FF0EC080FF7F +:102AF0000CC0DF93CF9381EE94E09F938F930E945D +:102B000088060F900F900F900F90DF91CF9108954E +:102B1000CF93DF93209180023091810228173907EB +:102B200009F19093810280938002E0918402F091F8 +:102B300085023097B9F0EC010084F185E02D09950C +:102B40008091620382FF0EC080FF0CC0DF93CF93A1 +:102B500081ED94E09F938F930E9488060F900F90D1 +:102B60000F900F90DF91CF9108950C9465160E94FD +:102B70005B220E94000A0C94ED0BBF92CF92DF9271 +:102B8000EF92FF920F931F93CF93DF9300D000D06B +:102B90001F92CDB7DEB70E94A00A07E812E0F12C21 +:102BA0008F2D0E94F509B82EF801C080C82639F48F +:102BB000F3940F5F1F4FF0E1FF12F2CF30C080910E +:102BC000620381FD0E947A16D12CEE24E3948C2DB1 +:102BD0008E21F9F0D982FA8291E08B2D8E2109F4B1 +:102BE00090E09B830E9464228160782F9D838C8378 +:102BF00049815A816B818D810E94B01649815A8129 +:102C00006B817C818D810E94DC21F80180818E2581 +:102C10008083D394EE0CF8E0DF12D9CFC9CF8FEFC9 +:102C200089838A831B820E9464228160782F9D831E +:102C30008C8349815A816B818D810E94B0160E94DC +:102C4000DB210E9425250E9470080E94FB149091B0 +:102C50008602891741F10E94FB14809386029091AD +:102C6000620392FF0EC090FF0CC01F928F9382E010 +:102C700095E09F938F930E9488060F900F900F907E +:102C80000F90809186020F900F900F900F900F90F1 +:102C9000DF91CF911F910F91FF90EF90DF90CF9038 +:102CA000BF900C94ED210F900F900F900F900F900C +:102CB000DF91CF911F910F91FF90EF90DF90CF9018 +:102CC000BF9008950C94FB0908950895CF93C62FE3 +:102CD0000E94F50921E030E002C0220F331FCA959F +:102CE000E2F790E02823392381E0232B09F480E0E8 +:102CF000CF910895EF92FF920F931F93CF93DF939D +:102D00008BE195E00E94EF05C0E0D0E082E3E82E81 +:102D100081E0F82E0DE015E08C2F0E94F5090E944D +:102D2000C921FF92EF921F928F93DF93CF931F934E +:102D30000F930E94880621968DB79EB708960FB60E +:102D4000F8949EBF0FBE8DBFC031D10529F7DF912A +:102D5000CF911F910F91FF90EF90089508950895DE +:102D6000CF93DF93CDB7DEB72B970FB6F894DEBFC6 +:102D70000FBECDBF942F4F83252F588769877A8741 +:102D80008B874A855B85452B31F02F3F31F481E0FD +:102D90009F3F19F403C081E001C080E080FD07C0BF +:102DA0004F81588569857A858B850E94DC21DE01FB +:102DB000119686E0FD0111928A95E9F785E0FE0102 +:102DC000379601900D928A95E1F749815A816B817E +:102DD0007C818D819E810E943E1E2B960FB6F894B9 +:102DE000DEBF0FBECDBFDF91CF910895CF93882373 +:102DF00009F4A9C0C82F8238A1F40E94FB1481FDF8 +:102E0000A2C089E30E9426210E949E212FEF81EE1D +:102E100094E0215080409040E1F700C0000089E339 +:102E200015C08338C1F40E94FB1480FD8CC083E57B +:102E30000E9426210E949E212FEF81EE94E02150D6 +:102E400080409040E1F700C0000083E50E944321EC +:102E5000CF910C949E218438A1F40E94FB1482FD32 +:102E600072C087E40E9426210E949E212FEF81EEEE +:102E700094E0215080409040E1F700C0000087E4DA +:102E8000E5CF8CEF8C0F813A20F080E58C0F8E32ED +:102E900048F48C2F0E944F28811155C08C2F0E941E +:102EA0002621D6CF80E28C0F883048F4C77081E0AD +:102EB00001C0880FCA95EAF70E946421C9CF8BE54B +:102EC0008C0F833078F4C53A29F0C63A31F083E8A4 +:102ED00090E005C081E890E002C082E890E0CF91E8 +:102EE0000C945B1588E58C0F853168F5C83A89F03C +:102EF000C93A91F0CA3A99F0CB3AA1F0CC3AA9F08C +:102F0000CD3AB1F0CE3AB9F0CF3AC1F080E090E0DE +:102F100017C082EE90E014C089EE90E011C08AEEF6 +:102F200090E00EC085EB90E00BC086EB90E008C00F +:102F300083EB90E005C084EB90E002C087EB90E06B +:102F4000CF910C948815CF910895882309F46AC015 +:102F50008238A1F40E94FB1481FF64C089E30E94BF +:102F600026210E949E212FEF81EE94E02150804087 +:102F70009040E1F700C0000089E315C08338B9F440 +:102F80000E94FB1480FF4EC083E50E9426210E9410 +:102F90009E212FEF81EE94E0215080409040E1F798 +:102FA00000C0000083E50E9443210C949E218438D8 +:102FB000A1F40E94FB1482FF35C087E40E94262101 +:102FC0000E949E212FEF81EE94E02150804090409E +:102FD000E1F700C0000087E4E6CF9CEF980F913A3C +:102FE00010F390E5980F9E32F0F290E2980F98302F +:102FF00050F4877091E001C0990F8A95EAF7892F04 +:103000000E946A21D2CF9BE5980F933020F480E094 +:1030100090E00C945B15885A853120F480E090E0B4 +:103020000C9488150895882321F00E9464210C9443 +:103030009E210895882321F00E946A210C949E21EC +:103040000895CF92DF92EF92FF920F931F93CF9349 +:10305000DF9300D000D01F92CDB7DEB76C010E9485 +:10306000EF218111E0C285E0F601DE0111960190A9 +:103070000D928A95E1F7F6014081518123813481D7 +:103080002115310531F05F3F31F481E04F3F19F4F4 +:1030900003C081E001C080E080FDC5C2F601F2807E +:1030A000E580E2948FE0E822722F3D832C836F2D20 +:1030B0008D810E94A2208C010E94A1200E94911F5C +:1030C000E12FE295EF708E2F90E0FC01E05AFF4F68 +:1030D0000C94E72A812F807F1F70882311F01295AE +:1030E000107FFF2049F0112309F452C2812F0E9462 +:1030F00077210E949E214CC2802F0E94A517112388 +:1031000009F491C2812F0E947D210F900F900F90A2 +:103110000F900F90DF91CF911F910F91FF90EF9043 +:10312000DF90CF900C949E21812F807F1F70803282 +:1031300011F01295107F002319F0013009F12BC016 +:10314000FF20A9F0EE2059F1F1E0812FEF1228C005 +:103150000F900F900F900F900F90DF91CF911F91D4 +:103160000F91FF90EF90DF90CF900C948721EE208D +:1031700021F081E0E81609F456C20E948A212DC090 +:10318000FF20E9F0E5E0EE1508F44DC20E94612150 +:10319000812329F022C0FF20F1F0E11015C0812F1A +:1031A0000F900F900F900F900F90DF91CF911F9184 +:1031B0000F91FF90EF90DF90CF900C941318F4E0F4 +:1031C000FE1508F430C209C0F601858180FFE0C118 +:1031D0008F708583E4CFE110EEC1812F61C1812F13 +:1031E00086958695837019F08130B9F01CC2FF2056 +:1031F00019F0C801937002C080E090E00F900F902A +:103200000F900F900F90DF91CF911F910F91FF9032 +:10321000EF90DF90CF900C945B15FF2019F0C80160 +:10322000937002C080E090E00F900F900F900F908D +:103230000F90DF91CF911F910F91FF90EF90DF9052 +:10324000CF900C948815802FFF2019F00E94AB239B +:1032500002C00E9413240F900F900F900F900F90B8 +:10326000DF91CF911F910F91FF90EF90DF90CF9062 +:103270000C949824812F837009F070C0F110D3C191 +:10328000202F229526952770220F220F602F6F7016 +:10329000862F90E0A0E0B0E06C017D01022E04C01A +:1032A000CC0CDD1CEE1CFF1C0A94D2F704FF12C0EC +:1032B0008FE090E0A0E0B0E004C0880F991FAA1F43 +:1032C000BB1F2A95D2F7BC01CD0160957095809502 +:1032D000909503C060E070E0CB01169516951370D1 +:1032E0001230B1F040F56C297D298E299F291130CB +:1032F00031F10F900F900F900F900F90DF91CF91C1 +:103300001F910F91FF90EF90DF90CF900C94B61F1C +:103310006C297D298E299F290F900F900F900F9077 +:103320000F90DF91CF911F910F91FF90EF90DF9061 +:10333000CF900C94D01F0E94B61FC701B6010F900A +:103340000F900F900F900F90DF91CF911F910F91E1 +:10335000FF90EF90DF90CF900C949C1FFF2019F00E +:10336000812F817001C08695882309F45CC1202FCC +:10337000229526952770220F220F602F6F70862FBF +:1033800090E0A0E0B0E06C017D01022E04C0CC0C06 +:10339000DD1CEE1CFF1C0A94D2F704FF12C08FE064 +:1033A00090E0A0E0B0E004C0880F991FAA1FBB1FE7 +:1033B0002A95D2F7BC01CD016095709580959095C6 +:1033C00003C060E070E0CB011695169513701230C3 +:1033D000B1F040F56C297D298E299F29113031F1FA +:1033E0000F900F900F900F900F90DF91CF911F9142 +:1033F0000F91FF90EF90DF90CF900C947D206C297F +:103400007D298E299F290F900F900F900F900F907C +:10341000DF91CF911F910F91FF90EF90DF90CF90B0 +:103420000C948F200E947D20C701B6010F900F9051 +:103430000F900F900F90DF91CF911F910F91FF9000 +:10344000EF90DF90CF900C946B20003FC1F128F4F7 +:1034500080E4800F803250F096C0023F09F45EC0D5 +:1034600008F449C0033F09F46CC08DC0F02FF0711F +:10347000EF2E812F8F71FF2051F00E940420802FAA +:10348000EE2019F08295807F8BCE8F7089CE0E94BE +:103490002520802FEE2019F08295807F01C08F704B +:1034A0000F900F900F900F900F90DF91CF911F9181 +:1034B0000F91FF90EF90DF90CF900C941A18FF209F +:1034C000A9F084E08E1508F4AEC0812F8F710F90A3 +:1034D0000F900F900F900F90DF91CF911F910F9150 +:1034E000FF90EF90DF90CF900C944A20E5E0EE152E +:1034F00008F499C0EACFFF2099F0812F8F710F90C7 +:103500000F900F900F900F90DF91CF911F910F911F +:10351000FF90EF90DF90CF900C940420FF2069F390 +:10352000812F8F710F900F900F900F900F90DF9160 +:10353000CF911F910F91FF90EF90DF90CF900C945F +:103540002520FF2089F0812F8F710F900F900F9011 +:103550000F900F90DF91CF911F910F91FF90EF90FF +:10356000DF90CF900C94EF1F0F900F900F900F9063 +:103570000F90DF91CF911F910F91FF90EF90DF900F +:10358000CF900C94EA1FFF2099F0EE2009F4B5CFFC +:10359000802F0F900F900F900F900F90DF91CF9191 +:1035A0001F910F91FF90EF90DF90CF900C94F61643 +:1035B000EE2009F4B5CF802F0F900F900F900F9051 +:1035C0000F90DF91CF911F910F91FF90EF90DF90BF +:1035D000CF900C94A517412F4F70602FC6010E9409 +:1035E00025230F900F900F900F900F90DF91CF91A8 +:1035F0001F910F91FF90EF90DF90CF900C94EC1EF5 +:10360000412F4F70602FC6010F900F900F900F90B9 +:103610000F90DF91CF911F910F91FF90EF90DF906E +:10362000CF900C9428230F900F900F900F900F9035 +:10363000DF91CF911F910F91FF90EF90DF90CF908E +:1036400008950E9484210E9453210E949E210E947D +:10365000CA250E94982480E090E00E945B1580E0DB +:1036600090E00C9488150E9474210C94211B1F93E8 +:10367000CF93DF9300D000D01F92CDB7DEB7942F49 +:103680004983252F5A836B837C838D834C815D8195 +:10369000452B31F02F3F31F481E09F3F19F403C0F7 +:1036A00081E001C080E0182F117080FD31C0498198 +:1036B0005A816B817C818D810E94A220292F2295C5 +:1036C0002F702C3030F42A30A0F42250223030F009 +:1036D00022C02C30C9F02F30B9F01DC0853A28F433 +:1036E0008430C0F4823028F415C090E2980F9830EE +:1036F00088F0883E30F4803E68F48450813A58F473 +:1037000009C0803F41F406C093FB112710F903C0A4 +:1037100010E001C011E0812F0F900F900F900F90DB +:103720000F90DF91CF911F910895CF93DF9300D039 +:1037300000D01F92CDB7DEB70F900F900F900F9073 +:103740000F90DF91CF910895CF93DF9300D000D0F9 +:1037500000D0CDB7DEB726960FB6F894DEBF0FBE09 +:10376000CDBFDF91CF9108951F93CF93DF93C09189 +:10377000970216E080919802C81799F0D0E01C9F3C +:10378000F0011D9FF00D1124E756FD4F408151813E +:1037900062817381848195810E94A41B2196C770E8 +:1037A000E9CFDF91CF911F9108954091C9025091C7 +:1037B000CA026091CB027091CC028091CD029091AF +:1037C000CE020C94A41BCF938091CE0282958F7071 +:1037D00009F05FC08091CB02882309F45AC0809120 +:1037E0009702B09198027091C902A091CA024091CB +:1037F000CC025091CD0291E07F3F09F090E0692F1B +:10380000C6E08B1709F445C04115510521F0AF3FC3 +:1038100021F020E003C021E001C0262F90E020FD30 +:1038200035C0C89FF001C99FF00D1124E756FD4F28 +:1038300021812A132BC02081271328C02281211126 +:1038400025C0238134812417350710F42150310914 +:10385000241B350B283C3105C8F42091CE022F7073 +:1038600020612093CE0226E0289FF001299FF00DD1 +:103870001124E256FD4F80818F708061808389EC36 +:1038800092E00E942118CF910C94B41B019687708E +:10389000B8CFCF910895AF92BF92CF92DF92EF92BF +:1038A000FF920F931F93CF93DF93CDB7DEB761974E +:1038B0000FB6F894DEBF0FBECDBF7C0185E0F701E7 +:1038C000DE011D9601900D928A95E1F7D7014C918A +:1038D00011965C9111971296DC90129713960D91A8 +:1038E0001C9114973091C9026091CA028091CC0258 +:1038F0009091CD02009731F06F3F31F421E03F3FCE +:1039000019F403C021E001C020E0B22FB170BB2E3A +:1039100020FD6EC1A090CB02AA2009F4CCC020915A +:10392000CE020817190728F0F801E81BF90BCF01A0 +:1039300004C080959095800F911FCC24C394883C3F +:10394000910580F0C12C207F09F0A1C0702F198B48 +:10395000088B6D2D89890E94951B89EC92E00E944D +:103960002118BDC0822F807F09F056C0561315C0A4 +:10397000431313C0CD2CD11010C02F7020612093A1 +:10398000CE020E94D51B89EC92E00E942118809102 +:10399000CE02D70115968C935FC10115110531F048 +:1039A0005F3F31F481E04F3F19F403C081E001C073 +:1039B00080E080FD03C081E08D2502C080E090E0C2 +:1039C000B82FB170CB2E80FF1CC080919702209140 +:1039D000980236E0821709F41CC190E0389FF0018C +:1039E000399FF00D1124E756FD4F6181561306C033 +:1039F0006081461303C06281D61203C001968770AE +:103A0000E9CFCD2CDD2009F427C18091CE02816061 +:103A10008093CE02C12C20C1561308C0431306C0A8 +:103A2000D11004C08091CE02D701B6C04D875E8709 +:103A3000DF86702F198B088B6D2D89890E94371BAB +:103A4000882399F1DD2089F12091CE02822F829581 +:103A50008F7090E0029774F08091C9029091CA0231 +:103A600098878F8319861B870A872C87CE01079634 +:103A70000E94211886E0F701A9ECB2E001900D92B6 +:103A80008A95E1F70E94E31B0E94D51B11C05617CF +:103A900081F14D875E87DF86702F198B088B6D2D26 +:103AA00089890E94371B811138C0C7010E942118E3 +:103AB000CC24C394D1C00817190708F446C0F801F4 +:103AC000E81BF90BCF01883C910508F443C0C12CD9 +:103AD000702F198B088B6D2D89890E94951BE9EC3D +:103AE000F2E086E0DF011D928A95E9F70E94D51B7E +:103AF000B3C04313CECFD110CCCF8091CE02F7010B +:103B00008583C7010E94211886E0E9ECF2E0DF011D +:103B10001D928A95E9F7CA2C9FC0DD2031F22091D1 +:103B2000CE02822F82958F7090E002970CF4A2CF84 +:103B30008091C9029091CA029A8389831B821D8356 +:103B40000C832E83CE01019693CF80959095800FA4 +:103B5000911FB9CFCD2CDD2009F4A7CF561333C068 +:103B6000431331C02091CE0220FD24C0822F8295C4 +:103B70008F70482F50E041155105E1F0D70115969F +:103B80002C9315974F30510549F08F5F982F9295E0 +:103B9000907F822F8F70892B15968C93C7010E947E +:103BA000211886E0F701A9ECB2E001900D928A9508 +:103BB000E1F79CCF86E0F701A9ECB2E001900D920D +:103BC0008A95E1F749C04D875E87DF86702F198B94 +:103BD000088B6D2D89890E94371B81114BCF8091F5 +:103BE000CE0281608093CE02C7010E94211834C0AA +:103BF000DD2009F45ACF4D875E87DF86702F198B41 +:103C0000088B6D2D89890E94371B882309F44DCFBD +:103C100031CF702F198B088B6D2D89890E94A220BE +:103C2000292F22952F70223028F49F7039F08111AE +:103C300005C00BC0243028F49F7049F4805E8830A2 +:103C400020F0C7010E942118BC2CCB2C05C0F70125 +:103C50009581907F99F7F9CF8C2D61960FB6F894E6 +:103C6000DEBF0FBECDBFDF91CF911F910F91FF90AF +:103C7000EF90DF90CF90BF90AF9008951F93CF93B8 +:103C8000DF93CDB7DEB72C970FB6F894DEBF0FBE2B +:103C9000CDBF4F83588769877A878B879C87CE01F2 +:103CA00007960E944B1C8823D1F09F8188852A8526 +:103CB0003B85232B31F08F3F31F481E09F3F19F496 +:103CC00003C081E001C080E080FD47C04F8158857E +:103CD00069857A858B859C850E94A41B3EC086E001 +:103CE000FE013796DE01119601900D928A95E1F75B +:103CF000FF81E8856A857B856115710531F0EF3FAD +:103D000031F481E0FF3F19F403C081E001C080E09D +:103D100080FD23C02091980230E0C9010196877090 +:103D200099274091970250E084179507F1F1F983A4 +:103D3000EA837D836C8396E0929FD001939FB00DC0 +:103D40001124A756BD4FFE01319601900D929A9510 +:103D5000E1F7809398020E94B41B16E080919702CD +:103D600090919802891771F1189FC001112487560C +:103D70009D4F0E944B1C882329F1E09197021E9FC2 +:103D8000F0011124E756FD4F40815181628173811A +:103D9000848195810E94A41B8091970290E00196F6 +:103DA0008770992780939702D9CF0E94331B109276 +:103DB000980210929702E9ECF2E086E0DF011D9292 +:103DC0008A95E9F72C960FB6F894DEBF0FBECDBFEB +:103DD000DF91CF911F910895DF92EF92FF920F93A1 +:103DE0001F93CF93DF93FC01892B09F488C0E12C4A +:103DF000F12CDD24D394EF0121968491853709F4C9 +:103E000060C058F4843708F04EC0843008F068C0B1 +:103E10008130D1F0823071F172C0883709F45BC013 +:103E200050F4863709F453C0873709F068C08E2DE7 +:103E30000E94712152C09CE7980F903708F05FC034 +:103E40008F770E94A5174EC08F010E5F1F4FFE0196 +:103E5000849190E2980F983050F48770FD2D01C046 +:103E6000FF0F8A95EAF78F2F0E94772115C00E94D5 +:103E7000F61614C08F010E5F1F4FFE01849190E271 +:103E8000980F983068F48770FD2D01C0FF0F8A9558 +:103E9000EAF78F2F0E947D210E949E21E80122C017 +:103EA0000E94A517FBCFCF010296FE01C491CC233F +:103EB00061F0EFE9FFE03197F1F700C00000C15079 +:103EC000F6CFCF010296FE01F490EC010BC00E94E8 +:103ED0006121E82E07C00E9474210E949E2102C029 +:103EE0000E94F6168F2D882341F0EFE9FFE031970D +:103EF000F1F700C000008150F6CFFE017CCFDF91CA +:103F0000CF911F910F91FF90EF90DF9008956093F4 +:103F10004F037093500380935103909352030C947A +:103F2000EC210895609353037093540380935503D9 +:103F3000909356030C94EB210F931F93009153031E +:103F4000109154032091550330915603602B712B2F +:103F5000822B932B609353037093540380935503E8 +:103F6000909356031F910F910C94EB210F931F9385 +:103F7000009153031091540320915503309156033F +:103F8000602371238223932360935303709354031C +:103F900080935503909356031F910F910C94EB213E +:103FA0000F931F93009153031091540320915503D5 +:103FB000309156036027712782279327609353031C +:103FC0007093540380935503909356031F910F9160 +:103FD0000C94EB2160E070E0CB010C94871F0F93F1 +:103FE0001F9341E050E060E070E08A019B0104C053 +:103FF000000F111F221F331F8A95D2F7C901B80184 +:104000001F910F910C94871F0F931F9341E050E075 +:1040100060E070E004C0440F551F661F771F8A954B +:10402000D2F780914F0390915003A0915103B0912A +:1040300052038A019B01082B192B2A2B3B2BC90108 +:10404000B8011F910F910C94871F0F931F9341E0AC +:1040500050E060E070E004C0440F551F661F771FFA +:104060008A95D2F7409550956095709580914F0351 +:1040700090915003A0915103B09152038A019B018A +:10408000082319232A233B23C901B8011F910F914B +:104090000C94871F0F931F9341E050E060E070E0A5 +:1040A00004C0440F551F661F771F8A95D2F7809171 +:1040B0004F0390915003A0915103B09152038A0194 +:1040C0009B01082719272A273B27C901B8011F91FF +:1040D0000F910C94871F0F931F9300914F03109122 +:1040E00050032091510330915203602B712B822B8E +:1040F000932B1F910F910C94871F0F931F93009187 +:104100004F031091500320915103309152036023CB +:104110007123822393231F910F910C94871F0F9378 +:104120001F9300914F031091500320915103309140 +:10413000520360277127822793271F910F910C94B8 +:10414000871F08958F929F92AF92BF92DF92EF9256 +:10415000FF920F931F93CF93DF9300D000D01F9255 +:10416000CDB7DEB76B837C838D838A018C819D8183 +:10417000892B31F01F3F31F481E04F3F19F403C028 +:1041800081E001C080E080FF03C080E090E04DC08E +:104190008B818823D1F180904F0390905003A090A1 +:1041A0005103B09052038091530390915403A09116 +:1041B0005503B0915603882A992AAA2ABB2A8FE16F +:1041C000E82EF12CD501C4010E2C04C0B695A7959C +:1041D000979587950A94D2F780FD06C081E0E81A8A +:1041E000F10880F7D12C07C0DE2CB8018E2D0E947B +:1041F000FC22019799F388E0189FF0011124E15304 +:10420000FD4FE00FF11DD08209C088E0189FF0013A +:104210001124E153FD4FE00FF11DD08009831A8373 +:1042200069817A818D2D0E94FC220F900F900F9052 +:104230000F900F90DF91CF911F910F91FF90EF9012 +:10424000DF90BF90AF909F908F90089520912401B0 +:1042500030912501F90132969FEF40E05191851789 +:1042600089F09F3F19F4511101C0942F4F5F4630E0 +:10427000A9F79F3F39F0F901E90FF11D97FDFA9574 +:10428000828308950895E0912401F09125019F0112 +:104290002A5F3F4F9281891301C012823196E21743 +:1042A000F307C1F7089581E090E0E0912401F091D7 +:1042B0002501E80FF91F1082019688309105A9F7B2 +:1042C000089580916103089590916103892B8093F3 +:1042D0006103089580959091610389238093610320 +:1042E0000895809361030895109261030895909159 +:1042F0006003892B809360030895809590916003FB +:104300008923809360030895109260030895809339 +:1043100057030895109257030895809124019091B6 +:104320002501FC0131969C01285F3F4F80E091916F +:1043300091118F5FE217F307D1F70895E0912401FF +:10434000F0912501809161038083E0912401F09137 +:104350002501908180916003892B80838091570390 +:10436000882361F0E0912401F09125019081892B4F +:1043700080830E948D218111109257038091240126 +:10438000909125010C94071590935301809352014D +:1043900008958295982F937344E0949F900111247F +:1043A0008C7C86958695282B822F8575880F2A7A96 +:1043B0002695822B08950895CF93DF9300D000D0E7 +:1043C0001F92CDB7DEB70F900F900F900F900F9008 +:1043D000DF91CF910895089508950C94621680E0BE +:1043E000089580917703843021F11092630320E4D3 +:1043F00088E190E00FB6F894A895809360000FBE16 +:104400002093600083B7817F846083BF83B781601E +:1044100083BF7894889583B78E7F83BF0FB6F89457 +:10442000A895809160008861809360001092600080 +:104430000FBE0895CF930E94AE160E94A00A0E945C +:10444000AF16C0E08C2F0E94F509811104C0CF5F28 +:10445000C031C1F701C081E0CF9108950E94641678 +:104460000C94331B1F920F920FB60F9211248F934F +:104470009F93AF93BF9380916303811113C0809189 +:10448000640390916503A0916603B0916703419620 +:10449000A11DB11D8093640390936503A0936603EF +:1044A000B0936703BF91AF919F918F910F900FBE13 +:1044B0000F901F90189582E084BD93E095BD9AEF10 +:1044C00097BD80936E0008952FB7F8948091640390 +:1044D00090916503A0916603B09167032FBF089583 +:1044E0002FB7F8946091640370916503809166031F +:1044F000909167032FBF0895CF92DF92EF92FF92C2 +:104500000F931F932FB7F894409164035091650364 +:1045100060916603709167032FBF6A017B01EE24EF +:10452000FF248C0120E030E0C016D106E206F3063D +:1045300010F4415051099A01281B390BC9011F91F0 +:104540000F91FF90EF90DF90CF9008951F920F9200 +:104550000FB60F9211248F939F93AF93BF938091C7 +:10456000640390916503A0916603B091670301967F +:10457000A11DB11D8093640390936503A09366030E +:10458000B0936703BF91AF919F918F910F900FBE32 +:104590000F901F9018950E940F12F8942FEF87EA42 +:1045A00091E6215080409040E1F700C0000087E094 +:1045B00090EBDC018093800390938103A0938203AE +:1045C000B09383039CE088E10FB6F894A89580939C +:1045D00060000FBE90936000FFCFE82FF0E088E00E +:1045E000989FE00DF11D1124E052FF4F9491892F07 +:1045F0008F7092959F700895CF93C82FCB010E9422 +:10460000ED22E92F90E040E1E49F90011124282B56 +:10461000392B2038310519F480E090E014C0E770A0 +:10462000F0E028E0C29FE00DF11D112424E0EE0F20 +:10463000FF1F2A95E1F7E80FF91FEE0FFF1FE0506B +:10464000F84985919491CF91089580E090E0089584 +:10465000089580916A0380FF0BC06091290185E075 +:10466000689FB001112475956795759567952BC066 +:1046700081FF09C06091290185E0689FB001112484 +:104680007595679520C082FF07C06091290185E07C +:10469000689FB001112417C090916B039923D1F04A +:1046A00060912801961788F72091290185E0289FBD +:1046B00090011124929FA001939F500D112470E04E +:1046C000CA010E94D32A6038710540F46115710552 +:1046D00019F406C065E070E0862F08958FE708950D +:1046E00081E0089580916A0380FF08C060912701EE +:1046F00070E0759567957595679521C081FF06C037 +:104700006091270170E07595679519C082FF04C01C +:104710006091270170E010C090916B03992399F08C +:10472000609126019617A0F780912701899FC0010B +:10473000112470E00E94D32A6038710540F461159D +:10474000710519F406C061E070E0862F08958FE7C7 +:10475000089581E00895803F21F40E9429238195E6 +:1047600004C0813F29F40E94292380936E03089599 +:10477000823F21F40E942923819504C0833F29F4BC +:104780000E94292380936D030895893F19F40E94A4 +:10479000722305C08A3F31F40E9472238195809371 +:1047A0006F0308958B3F21F40E947223819504C00A +:1047B0008C3F29F40E947223809370030895843FF4 +:1047C00021F480916C03816017C0853F21F48091B2 +:1047D0006C03826011C0863F21F480916C03846079 +:1047E0000BC0873F21F480916C03886005C0883F2F +:1047F00031F480916C03806180936C0308958D3F48 +:1048000021F480916A0381600BC08E3F21F4809176 +:104810006A03826005C08F3F29F480916A03846037 +:1048200080936A030895803F39F480916E0387FF77 +:104830006CC010926E0369C0813F29F480916E03B1 +:104840001816BCF362C090916D03823F29F497FF64 +:104850005CC010926D0359C0833F19F41916CCF354 +:1048600054C0893F41F480916F0318160CF04DC07D +:1048700010926F034AC08A3F29F480916F0387FF2B +:1048800044C0F6CF8B3F39F48091700387FF3DC061 +:10489000109270033AC08C3F29F48091700318166F +:1048A000BCF333C0843F21F480916C038E7F17C02A +:1048B000853F21F480916C038D7F11C0863F21F4E8 +:1048C00080916C038B7F0BC0873F21F480916C0338 +:1048D000877F05C0883F31F480916C038F7E809381 +:1048E0006C0313C08D3F21F480916A038E7F0BC04F +:1048F0008E3F21F480916A038D7F05C08F3F29F49C +:1049000080916A038B7F80936A0380916D0381118C +:104910000EC080916E0381110AC080916F038111D6 +:1049200006C080917003811102C010926B0308953C +:104930008091620383FF7EC080E595E00E94EF05D1 +:1049400080916C031F928F938BE495E09F938F93DC +:104950000E94880689E495E00E94EF0580916D032E +:10496000282F082E000C330B3F938F9386E495E09D +:104970009F938F930E94880684E495E00E94EF0540 +:1049800080916E03282F082E000C330B3F938F93DA +:1049900081E495E09F938F930E9488068FE395E0D2 +:1049A0000E94EF0580916F03282F082E000C330B17 +:1049B0003F938F938CE395E09F938F930E9488069B +:1049C0008AE395E00E94EF0580917003282F082E5E +:1049D000000C330B3F938F9387E395E09F938F9366 +:1049E0000E94880684E395E00E94EF0580916B03A6 +:1049F0001F928F9381E395E09F938F930E94880687 +:104A00008FE295E00E94EF0580916A031F928F93D9 +:104A10008CE295E09F938F930E94880689E295E04F +:104A20000E94EF058DB79EB74C960FB6F8949EBFC7 +:104A30000FBE8DBF8CE693E00E9450150E94642249 +:104A4000909369038093680308951F93CF93DF9336 +:104A500080916803909169030E947C22AC0190913F +:104A60006B03992321F020912A0130E006C02091A8 +:104A70002B018AE0289F900111244217530708F464 +:104A800085C080916D03C0916E03D0916F0310912A +:104A90007003811107C0C11175C0D11173C011110C +:104AA00071C074C09F3F19F09F5F90936B031816FD +:104AB00024F40E94292380936D0380916D0387FF66 +:104AC00005C00E942923819580936D031C1624F450 +:104AD0000E94292380936E0380916E0387FF05C097 +:104AE0000E942923819580936E0360916D03662354 +:104AF00031F1C0916E03CC2311F1062E000C770B1F +:104B0000880B990B0E94DA2923E333E343E35FE345 +:104B10000E943E2A0E94A22960936D036C2FCC0F45 +:104B2000770B880B990B0E94DA2923E333E343E3E5 +:104B30005FE30E943E2A0E94A22960936E031D1625 +:104B400024F40E94722380936F0380916F0387FF88 +:104B500005C00E947223819580936F03111624F47F +:104B60000E947223809370038091700387FF05C0B9 +:104B70000E947223819580937003DF91CF911F91E2 +:104B80000C9498249F3F09F08FCFA0CFDF91CF9155 +:104B90001F910895ECE6F3E085E0DF011D928A9510 +:104BA000E9F710926B0310926A03089583E797E088 +:104BB0000E94EF051F9281E08F931F9285E08F93F3 +:104BC00085E297E09F938F930E9488060F900F9045 +:104BD0000F900F900F900F9008958330E9F128F413 +:104BE000813061F0823009F10895853009F462C0A6 +:104BF00008F449C0863009F474C0089580912B01EF +:104C0000262F30E0280F311D2F3F310524F4680F87 +:104C100060932B0103C08FEF80932B0180912B01B8 +:104C20001F928F938EE596E072C080912A01262F05 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40002A0103C08FEF80932A0180912A011F92CD +:104C50008F938CE496E05BC080912901262F30E091 +:104C6000280F311D2F3F310524F4680F609329016F +:104C700003C08FEF80932901809129011F928F93A8 +:104C800089E396E044C080912801262F30E0280F68 +:104C9000311D2F3F310524F4680F6093280103C0B4 +:104CA0008FEF80932801809128011F928F9384E2D7 +:104CB00096E02DC080912701262F30E0280F311D6E +:104CC0002F3F310524F4680F6093270103C08FEF55 +:104CD00080932701809127011F928F938BE096E0AC +:104CE00016C080912601262F30E0280F311D2F3F5E +:104CF000310524F4680F6093260103C08FEF809381 +:104D00002601809126011F928F9380EF95E09F935B +:104D10008F930E9488060F900F900F900F90089528 +:104D2000833081F128F4813059F08230D1F0089538 +:104D3000853009F449C0B8F1863009F456C00895A9 +:104D400080912B01681720F4861B80932B0102C0F1 +:104D500010922B0180912B011F928F9381EE95E091 +:104D600054C080912A01681720F4861B80932A0181 +:104D700002C010922A0180912A011F928F938FEC1A +:104D800095E043C080912901681720F4861B809329 +:104D9000290102C010922901809129011F928F934D +:104DA0008CEB95E032C080912801681720F4861BB7 +:104DB0008093280102C010922801809128011F923F +:104DC0008F9387EA95E021C080912701681720F42E +:104DD000861B8093270102C0109227018091270132 +:104DE0001F928F938EE895E010C08091260168177E +:104DF00020F4861B8093260102C010922601809128 +:104E000026011F928F9383E795E09F938F930E94D3 +:104E100088060F900F900F900F900895CF93C82F92 +:104E20001F928F9388E798E09F938F930E94880644 +:104E300081E090E0A0E0B0E0BC01CD0104C0660FCD +:104E4000771F881F991FCA95D2F70E94921F0F9053 +:104E50000F900F900F90CF910C94331BCF9387320C +:104E600088F58E3108F00BC18E3009F487C0D8F474 +:104E7000873009F460C08B3009F44FC0863009F0E8 +:104E800002C180916203817F8E7F809362038DE7F0 +:104E900098E00E94EF058FE29BE00E94EF0581E021 +:104EA0008093720346C0863109F4B0C020F480318B +:104EB00009F47AC0E8C0893109F491C08B3109F452 +:104EC00049C0E1C0883349F150F4893209F4D5C0B2 +:104ED000853309F4D2C0873209F0D5C0CEC08334FF +:104EE00009F4CBC028F48A3308F4CDC08953C8C074 +:104EF000883409F0C8C00E94331B8EE19BE00E94F9 +:104F0000EF052FEF83ED90E3215080409040E1F7D3 +:104F100000C000000E94CB220CC084EA98E041C08F +:104F200085E09BE00E94EF058091620381608093A1 +:104F30006203C1E0ADC080916203C82FC17080FFE1 +:104F4000EFCF81E19BE00E94EF0580916203817FBA +:104F50008E7F3FC09091620391FBCC27C0F981E026 +:104F6000C827892FC0FB81F980936203CC2319F0F5 +:104F700088EF9AE029C08AEE9AE013C0909162030C +:104F800092FBCC27C0F981E0C827892FC0FB82F9AA +:104F900080936203CC2319F08BED9AE015C08BEC63 +:104FA0009AE00E94EF05C5CF9091620393FBCC2756 +:104FB000C0F981E0C827892FC0FB83F98093620381 +:104FC000CC2351F08FEB9AE00E94EF0580916203B1 +:104FD0008160809362035CC082EB9AE0E2CF83EA57 +:104FE0009AE00E94EF0580E89AE00E94EF058BE3CB +:104FF0009AE00E94EF0582E19AE00E94EF058DECB5 +:1050000099E00E94EF0582EA99E0CBCF84E999E02C +:105010000E94EF050E94FB141F928F938AE799E08C +:105020009F938F930E948806809123011F928F93F4 +:1050300083E699E09F938F930E94880680917F0278 +:105040001F928F9380E599E09F938F930E9488062B +:105050000E9470229F938F937F936F9389E399E0CF +:105060009F938F930E9488068DB79EB742960FB686 +:10507000F8949EBF0FBE8DBF5CCF80E001C08D5104 +:105080000E940E2756CF87E399E00E94EF05C0E00B +:105090008C2FCF91089580E008950C944B28CF93E6 +:1050A000C82F80917203813069F020F0823009F4BA +:1050B00049C040C167E08FE00E946616882309F46A +:1050C0003FC106C067E08FE00E946616882361F04A +:1050D0008C2F0E944D28811104C08C2F0E942E27F6 +:1050E0002FC081E090E02CC08C2F0E944B288111B2 +:1050F00026C0C431E1F070F4CB3081F0C031D1F47E +:105100000E94D62580E798E00E94EF0582E0809318 +:10511000720315C0C93259F0C83361F48DE798E0C5 +:105120000E94EF0584E798E00E94EF0508C0109206 +:10513000720304C18EE698E00E94EF05FFC081E093 +:105140008170FEC0C43228F5CE3108F0C1C0CB302A +:10515000A1F1D0F4C73009F0D3C08EE180932B01C8 +:1051600082E380932A018AE08093290184E180937D +:10517000280188E08093270188E28093260184E15A +:1051800097E00E94EF05BFC0C33149F1C431C1F0BF +:10519000B7C0CB3409F4A9C028F4C93289F0C833A8 +:1051A00061F0AEC0C13509F49EC0C23509F499C0A2 +:1051B000CE3409F0A5C06AE09EC00E94D625A3C0E7 +:1051C00080917103882319F0109271039CC081E2D1 +:1051D00097E00E94EF0581E080937203B1C08BEFEE +:1051E00096E00E94EF0589EE96E00E94EF0580911F +:1051F0002B011F928F9386EE96E09F938F930E94D0 +:10520000880684EE96E00E94EF0582ED96E00E940B +:10521000EF0580912A011F928F938FEC96E09F9368 +:105220008F930E9488068DEC96E00E94EF058EEB2E +:1052300096E00E94EF05809129011F928F938BEBDE +:1052400096E09F938F930E94880689EB96E00E94D8 +:10525000EF0588EA96E00E94EF05809128011F92F1 +:105260008F9385EA96E09F938F930E94880683EA46 +:1052700096E00E94EF058EE896E00E94EF0580918F +:1052800027011F928F938BE896E09F938F930E9444 +:10529000880689E896E00E94EF0582E796E00E9482 +:1052A000EF05809126011F928F938FE696E09F93E2 +:1052B0008F930E9488068DE696E00E94EF058DB7D9 +:1052C0009EB748960FB6F8949EBF0FBE8DBF1BC009 +:1052D000CE51EC2FF0E0E95BFE4F808180937103AB +:1052E00012C061E003C061E006C06AE08091710312 +:1052F0000E94ED2508C0809171030E94902603C092 +:1053000082E197E013C080917103882369F01F92B6 +:105310008F938CE097E09F938F930E9488060F9065 +:105320000F900F900F9004C089E097E00E94EF0566 +:1053300081E006C01092720380E002C080E000CFDE +:10534000CF9108950E94A9296894B1110C94382A2C +:1053500008950E941D2A88F09F5798F0B92F992729 +:10536000B751B0F0E1F0660F771F881F991F1AF050 +:10537000BA95C9F714C0B13091F00E94372AB1E054 +:1053800008950C94372A672F782F8827B85F39F053 +:10539000B93FCCF3869577956795B395D9F73EF4E9 +:1053A00090958095709561957F4F8F4F9F4F089591 +:1053B000E89409C097FB3EF49095809570956195AF +:1053C0007F4F8F4F9F4F9923A9F0F92F96E9BB2765 +:1053D0009395F695879577956795B795F111F8CFE1 +:1053E000FAF4BB0F11F460FF1BC06F5F7F4F8F4F4C +:1053F0009F4F16C0882311F096E911C0772321F042 +:105400009EE8872F762F05C0662371F096E8862FD9 +:1054100070E060E02AF09A95660F771F881FDAF730 +:10542000880F9695879597F9089557FD9058440FE2 +:10543000551F59F05F3F71F04795880F97FB991FF3 +:1054400061F09F3F79F087950895121613061406B0 +:10545000551FF2CF4695F1DF08C01616170618063D +:10546000991FF1CF86957105610508940895E89418 +:10547000BB2766277727CB0197F908950E94512A09 +:105480000C94C22A0E94B42A38F00E94BB2A20F051 +:10549000952311F00C94AB2A0C94B12A11240C948E +:1054A000382A0E94152A70F3959FC1F3950F50E09A +:1054B000551F629FF001729FBB27F00DB11D639FC6 +:1054C000AA27F00DB11DAA1F649F6627B00DA11D6C +:1054D000661F829F2227B00DA11D621F739FB00D12 +:1054E000A11D621F839FA00D611D221F749F332782 +:1054F000A00D611D231F849F600D211D822F762F1B +:105500006A2F11249F5750409AF0F1F088234AF0F7 +:10551000EE0FFF1FBB1F661F771F881F9150504063 +:10552000A9F79E3F510580F00C94AB2A0C94382AC1 +:105530005F3FE4F3983ED4F3869577956795B795EA +:10554000F795E7959F5FC1F7FE2B880F911D969504 +:10555000879597F9089597F99F6780E870E060E074 +:1055600008959FEF80EC089500240A9416161706FC +:1055700018060906089500240A9412161306140644 +:1055800005060895092E0394000C11F4882352F0A7 +:10559000BB0F40F4BF2B11F460FF04C06F5F7F4F5F +:1055A0008F4F9F4F089597FB072E16F4009407D056 +:1055B00077FD09D00E94ED2A07FC05D03EF49095B6 +:1055C00081959F4F0895709561957F4F0895EE0FD7 +:1055D000FF1F0590F491E02D0994AA1BBB1B51E11C +:1055E00007C0AA1FBB1FA617B70710F0A61BB70B53 +:1055F000881F991F5A95A9F780959095BC01CD01F8 +:065600000895F894FFCFAD +:10560600FFFFA514000069FFFF27E78C000000FFDD +:10561600FF94640076010000FF010D910D6E0D38B8 +:105626000D040D0158032808140A321E796573000B +:105636006E6F00404D3622910444040E04EC03784C +:10564600039103AA03C3030102030405060708091D +:02565600000052 +:106800008800EA44E944E244040005000600070069 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC :10683000180019001A001B001C001D001E001F007C :10684000200021002200230024002500260027002C :10685000280029002A002B002C002D002E002F00DC -:10686000300031A132003300340035A1360037004A +:10686000300031A232003300340035A13600370049 :10687000380082003A003B003C003D003E003F00F3 :1068800040004100420043004400450046004700EC :10689000480049004A004B004C004D004E004F009C :1068A000500051005200530067005400550056003C :1068B000580059005A005B005C005D005E005F00FC -:1068C0006000610062006300640000005700000087 -:1068D000CD440000000000000000000000000000A7 -:1068E0000000000000006620000000000000000022 +:1068C00060006100620063006400650057006700BB +:1068D000CD4469006A006B006C006D006E006F00B3 +:1068E0007000710072006620890087008A008B00AA :1068F000E000E100E200E300E400E500E600E7007C -:106900000100010001000100EA4401000100E2442D +:106900008800010001000100EA4401000100E244A6 :106910000100010001000100460001004A004B0097 :10692000010001004700480001000100E9440100A6 :106930000100010001000100010001003A003B00DC :106940003C003D003E003F0040004100420043004B -:10695000010001004C00010001004400450052000C -:1069600049000100010050004F0001004D004E00A1 +:10695000010035004C0001000100440045005200D8 +:1069600049000100010050004F0029004D004E0079 :1069700051000100010001000100010001000100BF :1069800001000100010001000100010001000100FF :1069900001000100010001000100010001004D00A3 :1069A0004A004E004B0001000100010001000100FF :1069B00001000100010001000100010001000100CF -:1069C00001000100010001000100010001000100BF -:1069D00001000100010001000100010001000100AF -:1069E000010001000100010001000100010001009F -:1069F000010001000100010001000100010001008F +:1069C00001000100010001000100650001006700F5 +:1069D000010069006A006B006C006D006E006F00C2 +:1069E0007000710072000100890087008A008B002E +:1069F0000100010001000100010001000100E700A9 +:106A00008800010001000100EA4401000100E244A5 +:106A10000100010001000100460001004A004B0096 +:106A2000010001004700480001000100E9440100A5 +:106A30000100010001000100010001003A003B00DB +:106A40003C003D003E003F0040004100420043004A +:106A5000010035004C0001000100440045005200D7 +:106A600049000100010050004F0029004D004E0078 +:106A700051000100010001000100010001000100BE +:106A800001000100010001000100010001000100FE +:106A900001000100010001000100010001004D00A2 +:106AA0004A004E004B0001000100010001000100FE +:106AB00001000100010001000100010001000100CE +:106AC00001000100010001000100650001006700F4 +:106AD000010069006A006B006C006D006E006F00C1 +:106AE0007000710072000100890087008A008B002D +:106AF0000100010001000100010001000100E700A8 :00000001FF diff --git a/converter/adb_usb/binary/adb_usb_rev2_unimap.hex b/converter/adb_usb/binary/adb_usb_rev2_unimap.hex index 34efc7d4..3996722d 100644 --- a/converter/adb_usb/binary/adb_usb_rev2_unimap.hex +++ b/converter/adb_usb/binary/adb_usb_rev2_unimap.hex @@ -1,14 +1,14 @@ -:100000000C9442050C9489050C9489050C9489057F -:100010000C9489050C9489050C9489050C94890528 -:100020000C9489050C9489050C9489050C940B0F8C -:100030000C94BA0F0C94CD1E0C9489050C94890570 -:100040000C9489050C9489050C9489050C94411F26 -:100050000C9489050C9489050C9489050C948905E8 -:100060000C9489050C9489050C9489050C948905D8 -:100070000C948905271049103711491037118E103B -:10008000B110371106111911E614E61415151515DE -:100090007315B115CB17CB17CA15CB17CB16CB16CB -:1000A0009F17CB17CB17B617041607090B0A1D1B92 +:100000000C947D050C94C4050C94C4050C94C40593 +:100010000C94C4050C94C4050C94C4050C94C4053C +:100020000C94C4050C94C4050C94C4050C943812AB +:100030000C94E7120C94DC210C94C4050C94C405B8 +:100040000C94C4050C94C4050C94C4050C94502263 +:100050000C94C4050C94C4050C94C4050C94C405FC +:100060000C94C4050C94C4050C94C4050C94C405EC +:100070000C94C40554137613691476136914BB13D6 +:10008000DE13691433144614F517F5171F181F18DB +:100090007A18AE189E1A9E1AC5189E1AB019B01971 +:1000A000761A9E1A9E1A8B1A041607090B0A1D1B34 :1000B00006196405141A08151C171E1F2021232277 :1000C0002E26242D25273012182F0C13280F0D341F :1000D0000E333136381110372B2C352A5829787BBE @@ -22,1291 +22,1405 @@ :100150005F686F73745F6B62645F726563763A2089 :10016000004552524F523A206D65646961206B65BB :1001700079300A004552524F523A206D65646961E8 -:10018000206B6579310A005D0A0025640020002596 -:1001900064007C00253032580020002530325800A1 -:1001A0006164625F6D6F757365207261773A205B81 -:1001B000000A002530313662006164625F686F7347 -:1001C000745F6D6F7573655F726563763A20006466 -:1001D0006562756720656E61626C65642E0A005306 -:1001E00063616E3A20616464723A25642C20726502 -:1001F00067333A253034580A0041667465722069C5 -:100200006E69743A0A00466F756E643A206D6564D3 -:100210006961206B6579730A005363616E3A2061EE -:100220006464723A25642C20726567333A25303451 -:10023000580A004265666F726520696E69743A0AF1 -:10024000004B6579626F6172642073746172742E01 -:100250000A0055534220636F6E6669677572656464 -:100260002E0A000D0A696E69740A002E03410044CB -:1002700000420020006B006500790062006F0061A1 -:100280000072006400200063006F006E007600655D -:1002900000720074006500720000000E0374002EEE -:1002A000006D002E006B002E0000000403090409FD -:1002B000027400040100A0320904000001030101DE -:1002C00000092111010001224000070581030800F7 -:1002D0000A090401000103010200092111010001C2 -:1002E000224D000705820308000A090402000103E9 -:1002F00000000009211101000122360007058303D7 -:1003000008000A090403000203000000092111018A -:1003100000012222000705840320000107050403D1 -:100320002000011201100100000008EDFEDB0A01AF -:1003300001010200010631FF0974A10109751500D0 -:1003400026FF009520750881020976150026FF001A -:10035000952075089102C005010980A1018502164A -:10036000810026B7001A81002AB700751095018117 -:1003700000C0050C0901A1018503160100269C029D -:100380001A01002A9C02751095018100C00501091F -:1003900002A1010901A1000509190129051500257E -:1003A000019505750181029501750381010501091A -:1003B0003009311581257F950275088106093815A8 -:1003C00081257F950175088106050C0A3802158183 -:1003D000257F950175088106C0C005010906A101A8 -:1003E000050719E029E71500250195087501810227 -:1003F0009501750881010508190129059505750103 -:1004000091029501750391010507190029FF150057 -:1004100026FF00950675088100C0636F6E73756DC9 -:1004200065723A20253034580A0073797374656D0B -:100430003A20253034580A000A002530325820006E -:100440006B6579626F6172643A20004C45443A20D2 -:10045000253032580A00253032583A20253038628B -:1004600025730A00722F632030313233343536372A -:100470000A00290A002575002F002575005D280057 -:10048000256400200025640020002564002000254C -:1004900064007C0025303258006D6F7573656B65A4 -:1004A00079205B62746E7C782079207620685D28E4 -:1004B0007265702F61636C293A205B006D6B5F770A -:1004C0006865656C5F74696D655F746F5F6D617899 -:1004D000203D2025640A006D6B5F776865656C5F61 -:1004E0006D61785F7370656564203D2025640A0046 -:1004F0006D6B5F74696D655F746F5F6D6178203DD2 -:100500002025640A006D6B5F6D61785F73706565AF -:1005100064203D2025640A006D6B5F696E7465720E -:1005200076616C203D2025640A006D6B5F64656C0C -:100530006179203D2025640A006D6B5F77686565F1 -:100540006C5F74696D655F746F5F6D6178203D20CD -:1005500025640A006D6B5F776865656C5F6D617817 -:100560005F7370656564203D2025640A006D6B5FD4 -:1005700074696D655F746F5F6D6178203D202564DF -:100580000A006D6B5F6D61785F7370656564203D17 -:100590002025640A006D6B5F696E74657276616C0C -:1005A000203D2025640A006D6B5F64656C617920D5 -:1005B0003D2025640A000A00257500363A20776838 -:1005C00065656C5F74696D655F746F5F6D61783AC6 -:1005D00020000A00257500353A20776865656C5F54 -:1005E0006D61785F73706565643A20000A00257557 -:1005F00000343A2074696D655F746F5F6D61783A9D -:1006000020000A00257500333A206D61785F737011 -:100610006565643A20000A00257500323A20696E4B -:1006200074657276616C286D73293A20000A002582 -:100630007500313A2064656C6179282A31306D7318 -:10064000293A20000A092D2056616C756573202D0A -:100650000A004D3E004D25643E20003F0073657446 -:100660002064656661756C740A00433E20007768FB -:100670006572652064656C74613A20637572736F8E -:10068000723D25642C20776865656C3D25640A53AE -:10069000656520687474703A2F2F656E2E77696BCC -:1006A0006970656469612E6F72672F77696B692F56 -:1006B0004D6F7573655F6B6579730A000A092D20AC -:1006C0004D6F7573656B6579202D0A4553432F7106 -:1006D0003A09717569740A313A0964656C6179285F -:1006E0002A31306D73290A323A09696E746572765F -:1006F000616C286D73290A333A096D61785F7370F4 -:100700006565640A343A0974696D655F746F5F6D7D -:1007100061780A353A09776865656C5F6D61785F65 -:1007200073706565640A363A09776865656C5F744D -:10073000696D655F746F5F6D61780A0A703A097060 -:1007400072696E742076616C7565730A643A097318 -:1007500065742064656661756C74730A75703A0916 -:100760002B310A646F776E3A092D310A7067757004 -:100770003A092B31300A7067646F776E3A092D3170 -:10078000300A0A7370656564203D2064656C74618D -:10079000202A206D61785F7370656564202A2028A7 -:1007A000726570656174202F2074696D655F746F68 -:1007B0005F6D6178290A003F004D3E2000433E20D6 -:1007C000004C25640A000A092D20436F6E736F6C7C -:1007D00065202D0A4553432F713A09717569740AD2 -:1007E0006D3A096D6F7573656B65790A000A092D9D -:1007F000204D61676963202D0A643A09646562755A -:10080000670A783A096465627567206D6174726978 -:10081000780A6B3A096465627567206B6579626F67 -:100820006172640A6D3A096465627567206D6F755F -:1008300073650A763A0976657273696F6E0A733A60 -:10084000097374617475730A633A09636F6E736F29 -:100850006C65206D6F64650A302D343A096C6179DE -:100860006572302D34284631302D4634290A5061C6 -:1008700075733A09626F6F746C6F616465720A0018 -:100880003F0074696D65725F726561643332282957 -:100890003A202530346C580A006B6579626F6172BA -:1008A000645F69646C653A2025580A006B6579625B -:1008B0006F6172645F70726F746F636F6C3A202542 -:1008C000580A00686F73745F6B6579626F61726458 -:1008D0005F6C65647328293A2025580A000A092D9F -:1008E00020537461747573202D0A004743433A20E6 -:1008F000342E392E32204156522D4C4942433A2053 -:10090000312E382E3073766E204156525F4152435D -:10091000483A2061767233350A004F5054494F4EA1 -:10092000533A204C554641204D4F5553454B455960 -:100930002045585452414B455920434F4E534F4C3C -:100940004520434F4D4D414E44204B45594D41505C -:100950005F53454354494F4E20343039360A0042E4 -:1009600055494C443A20643030643765382D646909 -:10097000727479202831303A31363A3334204A6162 -:100980006E2031392032303138290A005649443A34 -:100990002030784645454428742E6D2E6B2E292034 -:1009A0005049443A20307830414442284144422062 -:1009B0006B6579626F61726420636F6E76657274C5 -:1009C000657229205645523A203078303130310A4C -:1009D00000444553433A20636F6E7665727420413C -:1009E0004442206B6579626F61726420746F205598 -:1009F00053420A000A092D2056657273696F6E20F2 -:100A00002D0A000A6D6F7573653A206F66660A00DD -:100A10000A6D6F7573653A206F6E0A000A6B65790F -:100A2000626F6172643A206F66660A000A6B6579CC -:100A3000626F6172643A206F6E0A000A6D617472AF -:100A400069783A206F66660A000A6D617472697887 -:100A50003A206F6E0A000A64656275673A206F6E0D -:100A60000A000A64656275673A206F66660A000AC2 -:100A70000A626F6F746C6F616465722E2E2E200097 -:100A8000433E200011241FBECFEFD4E0DEBFCDBF18 -:100A900004B603FE27C08091600290916102A0918C -:100AA0006202B09163028730904BA740B04BD1F403 -:100AB0001092600210926102109262021092630220 -:100AC00014BE84B7877F84BF0FB6F894A895809131 -:100AD0006000886180936000109260000FBEE0E0CB -:100AE000F8E3099511E0A0E0B1E0E2EAFFE402C01A -:100AF00005900D92A433B107D9F722E0A4E3B1E049 -:100B000001C01D92A036B207E1F70E94570C0C9469 -:100B1000CF270C940000FF93EF93E0913401F09104 -:100B20003501309709F00995EF91FF910895FC0187 -:100B30008591803011F0EFDFFBCF0895FF27E0E2D1 -:100B400030E247FF0CC0419597FF09C0EDE2609588 -:100B5000709580959095611D711D811D911D27FFD8 -:100B600002C0219530E350E2AA27660F771F881F45 -:100B7000991FAA1FA41710F0A41B63955A95A9F7F3 -:100B8000AA3008F0A95FA05DAF93F39561157105D8 -:100B90008105910541F7ED3211F4EF93F395F217CA -:100BA00018F43F93F395FBCF8F91B5DFFA95E1F7FA -:100BB0000895E991F9918591803021F0853219F0FD -:100BC000AADFF9CF089520E0E89455915532C1F39A -:100BD000503311F4689455915A3348F4505390F3BC -:100BE000220F022E220F220F200D250FF4CF0EF41C -:100BF000219589919991533619F3533729F153353A -:100C000059F1BC0188279927E8945C3621F4899131 -:100C1000999168945591543639F446EF7EF077FFF8 -:100C20000DC08FEF9FEF0AC055374AE039F05835B5 -:100C300040E121F0523642E009F00895FF93EF932E -:100C40007DDFEF91FF91B7CFFF93EF93FC0181918F -:100C50008030B9F360DFFBCFFF93EF9368DFF1CF14 -:100C6000DF93CF93CDB7DEB72596A3DFCF91DF918A -:100C70000895282F2770E82FE695E695E695EF7002 -:100C8000F0E0E05CFE4F87FF0AC081E090E001C029 -:100C9000880F2A95EAF780959081892308C081E022 -:100CA00090E001C0880F2A95EAF79081892B808314 -:100CB00008950F931F93CF93DF93569A5E9A0E94E5 -:100CC00050092FEF87EA91E6215080409040E1F7EC -:100CD00000C0000083E392E09F938F930E94300650 -:100CE0000F900F90C1E0D0E009E112E063E08C2F9B -:100CF0000E945409009771F09F938F93DF93CF93D5 -:100D00001F930F930E9430060F900F900F900F903B -:100D10000F900F909FEF29EF80E09150204080408E -:100D2000E1F700C000002196C031D105F9F663E07B -:100D300082E00E94540999278131910511F174F4E0 -:100D400087309105F1F024F404970297F0F419C06C -:100D500089309105B1F00D97C1F413C08D31910523 -:100D600081F034F48431910561F0499771F409C040 -:100D7000843C910531F0873C910519F0813C910547 -:100D800021F481E08093500102C01092500163E091 -:100D900087E00E94540991E0823009F090E090933E -:100DA0005101992341F086E092E09F938F930E9436 -:100DB00030060F900F9023E042E063E082E00E9453 -:100DC000D40989EF91E09F938F930E9430060F9092 -:100DD0000F90C1E0D0E00FED11E063E08C2F0E9496 -:100DE0005409009771F09F938F93DF93CF931F93D4 -:100DF0000F930E9430060F900F900F900F900F905E -:100E00000F908FEF99EF20E0815090402040E1F764 -:100E100000C000002196C031D105F9F6E0E4F1E010 -:100E200080E18E0F11928E13FDCF0E9454110E940B -:100E3000F708809142028160809342028FEC91E03A -:100E40000E949705569A5E98DF91CF911F910F915E -:100E50000895CF93DF938091390190913A010E94D8 -:100E6000171F0C9708F4CCC00E94FF1E90933A0104 -:100E7000809339010E94D009EC01009711F481E0C0 -:100E8000BDC097FD05C080913B01816080933B010F -:100E9000D7FF05C080913B018E7F80933B01ED2FF2 -:100EA000FF27EF73FF27CE018F739927C6FF02C07C -:100EB00080549109D6FF02C0E054F109A091380195 -:100EC0000A2E000CBB0BBD010E94842781382FEF36 -:100ED000920714F481E89FEF22273327281B390B50 -:100EE00021388FEF380714F421E83FEF2195209344 -:100EF0003C01CF01BD010E94842781382FEF92076A -:100F000014F481E89FEF91958195910981382FEF35 -:100F1000920714F481E89FEF819580933D018091C1 -:100F2000420283FF60C089EB91E00E949705DF9346 -:100F3000CF9383EB91E09F938F930E94300681EBD8 -:100F400091E00E94970580EA91E00E9497058091C8 -:100F50003801282F082E000C330B3F938F938BE919 -:100F600091E09F938F930E94300689E991E00E945F -:100F7000970580913B011F928F9384E991E09F93A5 -:100F80008F930E94300682E991E00E94970580913C -:100F90003C01282F082E000C330B3F938F938FE8D2 -:100FA00091E09F938F930E9430068DE891E00E941C -:100FB000970580913D01282F082E000C330B3F939D -:100FC0008F938AE891E09F938F930E94300687E881 -:100FD00091E00E9497058DB79EB744960FB6F8949E -:100FE0009EBF0FBE8DBF8BE391E00E94A91180913F -:100FF000380191E088300CF090E0890F809338013F -:10100000DF91CF9108951F93CF93DF93C09100019B -:10101000D09101018FEF9FEF909301018093000128 -:10102000CF3F8FEFD80709F074C0809136019091BF -:1010300037010E94171F0C9710F480E0CEC00E9469 -:10104000FF1E909337018093360182E00E94CD0904 -:10105000EC01892B09F05DC080915101882309F4CE -:1010600058C087E00E94CD09009709F452C09C0146 -:101070002F77332722303105A1F048F421153105AF -:1010800069F02130310599F480788A641AC02330E0 -:10109000310551F02F373105A1F009C08078826405 -:1010A00010C0807889640DC0807888640AC084E7A5 -:1010B00091E09F938F930E9430060F900F9081E1F3 -:1010C0008CC0292F33272F7733272130310579F032 -:1010D00050F02230310579F02330310581F4EC01F4 -:1010E000D078D86416C0EC01D078D26412C0EC017C -:1010F000D078DA640EC0EC01D078D9640AC081E6F9 -:1011000091E09F938F930E9430060F900F9080E1A3 -:1011100064C08091420281FF18C0209709F48DCFEE -:101120008DE491E00E949705DF93CF9388E491E0EE -:101130009F938F930E94300686E491E00E9497056A -:101140000F900F900F900F9003C0209709F475CF68 -:10115000CF378FE7D80711F48FE705C0CF3F8FEF68 -:10116000D80721F48FEF0E94390636C02D2F332780 -:10117000822F1C2F2F3F310581F4DF93CF9388E21C -:1011800091E09F938F930E9430060E9459060F9022 -:101190000F900F900F908C2F20C0909150019923A9 -:1011A00081F0A9014F7755274233510521F420786A -:1011B000822F8A6006C04A30510519F42078822FA8 -:1011C00082630E9439061F3F39F0DC2FCC27CF6F96 -:1011D000D0930101C093000181E0DF91CF911F9175 -:1011E0000895E82FF0E0E05CFE4F80810895682FBD -:1011F000609582E00C940D0A509A83E091E001978B -:10120000F1F700C0000050989AEB9A95F1F700C0F2 -:101210000895509A8AEB8A95F1F700C0509883E0C0 -:1012200091E00197F1F700C000000895EF92FF925E -:101230000F931F93CF93DF93C0E0D0E090E8E92EA7 -:10124000F12C082F10E0C7010C2E02C09595879550 -:101250000A94E2F780239123892B19F00E9409094F -:1012600002C00E94FC082196C830D10561F7DF91C9 -:10127000CF911F910F91FF90EF900895489B06C06A -:1012800023E02A95F1F700000197C1F708954899E6 -:1012900006C023E02A95F1F700000197C1F70895F1 -:1012A0005898509808950895CF92DF92EF92FF9248 -:1012B0000F931F93CF93DF9300D0CDB7DEB7F89491 -:1012C000509AE3EFFBE03197F1F700C000006A832A -:1012D00089830E9409096A816C6089818295807F77 -:1012E000862B0E9416090E94FC0884EF91E00E9460 -:1012F0004709892B21F4789482EE9FEF43C084EF55 -:1013000091E00E943E09009711F478943BC011E1EE -:10131000C12CD12C02E882E890E00E9447097C01B0 -:10132000882351F199270E943E09882329F1CC0C8A -:10133000DD1C902F9E19E81A9E1518F46894C0F8C9 -:1013400006C0113121F478948CEE9FEF1BC0115030 -:1013500011F78FE591E00E944709892B21F47894D9 -:101360008BEE9FEF0FC08BE590E00E943E09892B2A -:10137000B1F77894C60106C07894812F90E09195DA -:10138000819591090F900F90DF91CF911F910F914F -:10139000FF90EF90DF90CF90089560E00C94540997 -:1013A00060E083E00C9454091F93CF93DF9300D047 -:1013B0001F92CDB7DEB7182FF894509A83EF9BE0B9 -:1013C0000197F1F700C000002B834A8369830E94D4 -:1013D00009096981862F88601295107F812B0E94F0 -:1013E00016090E94FC088FE193E00197F1F700C015 -:1013F00000000E9409094A81842F0E9416092B814E -:10140000822F0E9416090E94FC0878940F900F907A -:101410000F90DF91CF911F910895262F277040E004 -:1014200062E00C94D40980915E0108959FB7F8940E -:10143000109255019FBF90915702943009F057C008 -:101440009091E9009F703091EC00232F217030FDC6 -:1014500020E8922B24E02093E9002091EB0020FF6C -:1014600043C02091EE0027FF3FC02091520122236C -:1014700021F02091E80025FF37C01092520126E0AC -:101480003091E80035FD15C030915702343061F5D8 -:101490003091EB0035FD28C0215021F481E080938C -:1014A000520122C0EFE9FFE03197F1F700C00000E0 -:1014B000E7CF8093F1008091E80085FD0AC080911C -:1014C000E80080FFFCCF8091E8008E778093E800F1 -:1014D00006C08FB7F89421E0209355018FBF9F700D -:1014E0009093E90080E008959F709093E9008FEF5A -:1014F0000895CF93DF9300D01F92CDB7DEB79C0144 -:1015000080915702843019F593E099833B832A83B5 -:101510009093E9008FEF9091E800815095FD06C00F -:1015200095ED9A95F1F700008111F5CF8091E800D3 -:1015300085FF0DC040E050E063E070E0CE01019611 -:101540000E94190D8091E8008E778093E8000F903B -:101550000F900F90DF91CF910895CF93DF9300D03C -:101560001F92CDB7DEB720915702243021F522E03B -:1015700029839B838A8383E08093E9008FEF909196 -:10158000E800815095FD06C095ED9A95F1F70000B1 -:101590008111F5CF8091E80085FF0DC040E050E05B -:1015A00063E070E0CE0101960E94190D8091E80081 -:1015B0008E778093E8000F900F900F90DF91CF917E -:1015C0000895209157022430F1F422E02093E9009D -:1015D0002FEF3091E800215035FD06C035ED3A95EA -:1015E000F1F700002111F5CF2091E80025FF0BC095 -:1015F00040E050E065E070E00E94190D8091E80045 -:101600008E778093E8000895CF93DF93209157025F -:10161000243039F521E02093E9002FEF3091E800E4 -:10162000215035FD06C035ED3A95F1F70000211146 -:10163000F5CF2091E80025FF14C0EC0140E050E018 -:1016400068E070E00E94190D8091E8008E77809329 -:10165000E80088E0FE01A6E5B1E001900D928A95D0 -:10166000E1F7DF91CF9108950895209153012F5F05 -:10167000822F62E30E949527992319F0209353014A -:1016800008951092530180915501882371F1809142 -:101690005702843041F58091E9008F702091EC0071 -:1016A000922F917020FD90E8892B94E09093E900AF -:1016B0009091EB0090FF14C09091EE0097FF10C046 -:1016C0009091E80095FF03C01092F100F9CF90913E -:1016D000E80090FF05C09091E8009E779093E800A5 -:1016E0008F708093E90010925501089542E061ECFB -:1016F00081E00E94220E42E061EC82E00E94220E14 -:1017000042E061EC83E00E94220E42E261EC84E060 -:101710000C94220E80915902833009F453C030F4A6 -:10172000813071F0823009F48CC008958A3009F458 -:1017300078C08B3009F45EC0893009F09AC020C0AF -:1017400080915802813A09F094C08091E800877F27 -:101750008093E80080915C0290915D02892B21F4D6 -:1017600068E086E591E003C060E080E090E070E032 -:101770000E94640D8091E8008B778093E8000895C3 -:1017800080915802813209F074C080915C0290917E -:101790005D02892B09F06DC08091E800877F8093FE -:1017A000E8008091E80082FD05C080915702811118 -:1017B000F8CF5FC08091F10080935E018091E800D6 -:1017C0008B7753C080915802813A09F052C08091C2 -:1017D0005C0290915D02892B09F04BC08091E8007A -:1017E000877F8093E8008091E80080FFFCCF8091A4 -:1017F0000C0136C0809158028132D9F580915C028B -:1018000090915D02892BA9F58091E800877F8093F4 -:10181000E8000E94570E80915A0280930C010C94AC -:10182000ED1780915802813221F58091E800877F81 -:101830008093E8000E94570E80915B0280935F01C5 -:10184000089580915802813AA1F48091E800877F41 -:101850008093E8008091E80080FFFCCF80915F01D9 -:101860008093F1008091E8008E778093E8000C94DB -:10187000570E08950895089580915E018093540154 -:1018800010925E0180E00E94F7080E94E7120C941B -:10189000ED170C943C0C0E948C1E809155028823FD -:1018A00029F00E94B51E81110C94030D089584B790 -:1018B000877F84BF0FB6F894A895809160008861F7 -:1018C00080936000109260000FBE90E080E80FB639 -:1018D000F89480936100909361000FBE86E19AE0D6 -:1018E0000E94611E83E692E00E9497050E943A0CD6 -:1018F0000E9410120E94A80E0E94FB0E8091E2002E -:1019000084608093E2007894809157028430E1F7FC -:1019100082E592E00E9497050E94121282E091E017 -:101920000E944F1181E492E00E9497050E943B0CB7 -:1019300080915702853019F40E944B0CF9CF0E9418 -:101940001812F6CF0E94C91E8091540180935E0147 -:1019500008950C94A20C292F332723303105C9F0A8 -:1019600064F42130310581F02230310509F043C0A3 -:1019700084E790E02FEA32E042C021323105F1F0F5 -:101980002232310541F137C082E190E023E233E0B9 -:1019900036C099278130910541F08230910541F0A0 -:1019A000892B49F5EBEAF2E005C0EBE9F2E002C071 -:1019B000EBE6F2E0849190E09F0121C06430D8F41E -:1019C000E62FF0E0EE0FFF1FEF5DFE4F208131812B -:1019D00089E090E014C0643070F470E0FB01EE0F19 -:1019E000FF1FE75EFE4F20813181FB01EB5EFE4F62 -:1019F000808190E004C080E090E020E030E0FA01D7 -:101A000031832083089584E089BD86E089BD09B4CF -:101A100000FEFDCF8091D8008F7D8093D80080910B -:101A2000E00082608093E0008091E00081FDFCCFC7 -:101A30000895CF92DF92EF92FF920F931F93CF936F -:101A4000DF93EC018B016A010E94760E811133C095 -:101A5000C114D10439F0F60180819181081B190B62 -:101A6000C80FD91FE12CF12C0115110519F1809136 -:101A7000E80085FD16C08091E8008E778093E8002D -:101A8000C114D10449F0F60180819181E80EF91E5C -:101A9000F182E08285E00FC00E94760E882321F358 -:101AA0000AC089918093F10001501109FFEFEF1AEC -:101AB000FF0ADACF80E0DF91CF911F910F91FF9065 -:101AC000EF90DF90CF90089520915E0230915F02F9 -:101AD0002617370748F06115710539F42091E800A1 -:101AE0002E772093E80001C0B90140E0611571052F -:101AF00091F120915702222309F440C0253009F4C6 -:101B00003FC02091E80023FD3DC02091E80022FD68 -:101B10002FC02091E80020FFE9CF2091F20030E0B3 -:101B2000FC01CF016115710559F02830310540F4F1 -:101B300081918093F100615071092F5F3F4FF1CF88 -:101B400041E02830310509F040E02091E8002E778F -:101B50002093E800CBCF4111CCCF0AC0809157022F -:101B6000882361F0853061F08091E80083FD0AC030 -:101B70008091E80082FFF2CF80E0089582E008952E -:101B800083E0089581E0089520915E0230915F0224 -:101B90002617370748F06115710539F42091E800E0 -:101BA0002E772093E80001C0B901FC0120E0611507 -:101BB000710579F180915702882309F43DC0853081 -:101BC00009F43CC08091E80083FD3AC08091E800B0 -:101BD00082FD2CC08091E80080FFE9CF8091F20067 -:101BE00090E06115710559F08830910540F4249119 -:101BF0002093F1003196615071090196F2CF21E0F6 -:101C0000089709F020E08091E8008E778093E80043 -:101C1000CECF2111CFCF0AC080915702882361F027 -:101C2000853061F08091E80083FD0AC08091E80072 -:101C300082FFF2CF80E0089582E0089583E0089566 -:101C400081E00895982F953058F59093E900981702 -:101C500039F07091EC002091ED005091F00003C03C -:101C6000242F762F50E021FF19C03091EB003E7FEA -:101C70003093EB003091ED003D7F3093ED003091DB -:101C8000EB0031603093EB007093EC002093ED009B -:101C90005093F0002091EE0027FF07C09F5FD3CF45 -:101CA0008F708093E90081E0089580E0089580912D -:101CB000580287FF11C08091E80082FD05C0809125 -:101CC00057028111F8CF11C08091E8008B770BC0CB -:101CD00080915702882349F08091E80080FFF8CF77 -:101CE0008091E8008E778093E80008952091E400C9 -:101CF0003091E50095E64091EC00842F817040FF23 -:101D000022C08091E80080FD1CC08091570288238A -:101D100091F0853091F08091EB0085FD10C04091ED -:101D2000E4005091E5004217530729F39A019150BE -:101D300011F784E0089582E0089583E0089581E03A -:101D4000089580E008954091E80042FFDECF0895B5 -:101D50000E94050F0E94080FE0EEF0E08081816094 -:101D60008083E8EDF0E080818F77808319BCE3E623 -:101D7000F0E08081816080831092560208950E9475 -:101D8000050F0E94080F8091D8008F778093D800AC -:101D90008091D80080688093D8008091D8008F7D92 -:101DA0008093D80084E089BD86E089BD09B400FE37 -:101DB000FDCF1092570210925302109255021092CA -:101DC000540242E060E080E00E94220E8091E10037 -:101DD0008E7F8093E1008091E20081608093E20039 -:101DE0008091E20088608093E2008091E0008E7F25 -:101DF0008093E0000895E3E6F0E080818E7F8083A9 -:101E000081E0809356020C94BF0E1092E200089578 -:101E10001092E10008951F920F920FB60F921124B5 -:101E20002F933F934F935F936F937F938F939F93E2 -:101E3000AF93BF93EF93FF938091E10082FF0BC0BC -:101E40008091E20082FF07C08091E1008B7F809348 -:101E5000E1000E94350B8091E10080FF19C0809164 -:101E6000E20080FF15C08091E2008E7F8093E20047 -:101E70008091E20080618093E2008091D8008062CE -:101E80008093D80019BC85E0809357020E94490CCA -:101E90008091E10084FF30C08091E20084FF2CC07B -:101EA00084E089BD86E089BD09B400FEFDCF809144 -:101EB000D8008F7D8093D8008091E1008F7E809341 -:101EC000E1008091E2008F7E8093E2008091E20049 -:101ED00081608093E20080915302882311F084E0B6 -:101EE00007C08091E30087FD02C081E001C083E06C -:101EF000809357020E94A90C8091E10083FF29C0C2 -:101F00008091E20083FF25C08091E100877F80936C -:101F1000E10082E080935702109253028091E10029 -:101F20008E7F8093E1008091E2008E7F8093E200BB -:101F30008091E20080618093E20042E060E080E016 -:101F40000E94220E8091F00088608093F0000E9431 -:101F5000340BFF91EF91BF91AF919F918F917F9142 -:101F60006F915F914F913F912F910F900FBE0F9006 -:101F70001F9018951F920F920FB60F9211242F9356 -:101F80003F934F935F936F937F938F939F93AF9301 -:101F9000BF93CF93DF93EF93FF93C091E900CF708E -:101FA0008091EC00D82FD17080FDD0E81092E9002C -:101FB0008091F000877F8093F00078940E94FE0F5C -:101FC0001092E9008091F00088608093F000CD2BA2 -:101FD000CF70C093E900FF91EF91DF91CF91BF9156 -:101FE000AF919F918F917F916F915F914F913F91B1 -:101FF0002F910F900FBE0F901F9018951F93CF93A6 -:10200000DF93CDB7DEB7AA970FB6F894DEBF0FBE49 -:10201000CDBFE8E5F2E088E08E0F9091F10091935A -:102020008E13FBCF0E948A0B8091E80083FF1FC1B3 -:102030008091580290915902492F50E04A30510541 -:1020400008F015C1FA01E65CFF4F0C94B527803803 -:1020500081F0823809F00BC180915C028F7080930F -:10206000E9008091EB0085FB882780F91092E90058 -:1020700006C0809154029091550291118260909116 -:10208000E800977F9093E8008093F1001092F100B0 -:10209000C8C0282F2D7F09F0EAC0882319F08230AC -:1020A00061F0E5C080915A02813009F0E0C09330C0 -:1020B00009F080E0809355022BC080915A02811173 -:1020C00027C080915C028F7009F4D1C08093E90031 -:1020D0002091EB0020FF1CC0933021F48091EB0095 -:1020E000806214C09091EB0090619093EB0021E02E -:1020F00030E0A90102C0440F551F8A95E2F74093D2 -:10210000EA001092EA008091EB0088608093EB0077 -:102110001092E9008091E800877F86C08111A7C0F6 -:1021200010915A021F778091E3008078812B809371 -:10213000E3008091E800877F8093E8000E94570EBB -:102140008091E80080FFFCCF8091E300806880935D -:10215000E300111102C082E001C083E080935702C6 -:1021600086C08058823008F082C080915A029091D7 -:102170005B028C3D53E0950779F583E08A838AE220 -:1021800089834FB7F894DE01139620E03EE051E2D8 -:10219000E32FF0E050935700E49120FF03C0E29555 -:1021A000EF703F5FEF708E2F90E0EA3010F0C7962F -:1021B00001C0C0968D939D932F5F243149F74FBF87 -:1021C0008091E800877F8093E8006AE270E0CE01AA -:1021D00001960E94640D14C0AE014F5F5F4F609185 -:1021E0005C020E94AB0CBC01892B09F440C09091A9 -:1021F000E800977F9093E80089819A810E94C40D3E -:102200008091E8008B778093E80031C0803879F5C1 -:102210008091E800877F8093E8008091530280934B -:10222000F1008091E8008E778093E8000E94570EBD -:102230001EC081111CC090915A029230C0F480914E -:10224000E800877F8093E800909353020E94570E26 -:1022500080915302811106C08091E30087FD02C086 -:1022600081E001C084E0809357020E94760B809148 -:10227000E80083FF0AC08091E800877F8093E80030 -:102280008091EB0080628093EB00AA960FB6F894E1 -:10229000DEBF0FBECDBFDF91CF911F910895909308 -:1022A0006501809364010895E0916401F0916501F6 -:1022B000309721F00190F081E02D099480E008959D -:1022C000EF92FF920F931F93CF93DF93E0916401FE -:1022D000F09165013097B1F18C010280F381E02D1E -:1022E00009958091420282FF2DC080FF04C080E4E6 -:1022F00094E00E949705E80118E08AE3E82E84E064 -:10230000F82E8091420280FF0BC088811F928F932C -:10231000FF92EF920E9430060F900F900F900F9057 -:10232000115021961111EDCF8091420280FF0AC019 -:1023300088E394E0DF91CF911F910F91FF90EF9090 -:102340000C949705DF91CF911F910F91FF90EF9023 -:102350000895E0916401F0916501309721F00480C7 -:10236000F581E02D09940895CF93DF93EC018091DE -:10237000620190916301C817D90709F1D0936301F5 -:10238000C0936201E0916401F09165013097B9F06A -:102390000680F781E02DCE0109958091420282FFEF -:1023A0000EC080FF0CC0DF93CF938AE294E09F932E -:1023B0008F930E9430060F900F900F900F90DF9137 -:1023C000CF910895CF93DF93EC01809160019091BC -:1023D0006101C817D90709F1D0936101C093600169 -:1023E000E0916401F09165013097B9F00084F185C6 -:1023F000E02DCE0109958091420282FF0EC080FF40 -:102400000CC0DF93CF938AE194E09F938F930E9457 -:1024100030060F900F900F900F90DF91CF9108959D -:102420000C94E8120E94F61E0E9459060C9453095F -:102430005F926F927F928F929F92AF92BF92CF9254 -:10244000DF92EF92FF920F931F93CF93DF9300D011 -:1024500000D01F92CDB7DEB70E94030887E6C82ED2 -:1024600081E0D82E512C88248394912C852D0E94B4 -:10247000F108A82EF601E080E82641F45394FFEF1E -:10248000CF1ADF0A80E15812F1CF40C0809142029A -:1024900081FD0E94041300E010E0F12CB12CC70173 -:1024A000002E02C0959587950A94E2F780FF28C018 -:1024B00009835A823401002E02C0660C771C0A94EC -:1024C000E2F793012A213B2181E0232B09F480E0EC -:1024D0008B830E94FF1E8160782F9D838C834981AE -:1024E0005A816B818D810E943A1349815A816B8197 -:1024F0007C818D810E94791EF60180816826608230 -:102500000F5F1F4F0830110551F6B8CF8FEF898349 -:102510008A831B820E94FF1E8160782F9D838C839B -:1025200049815A816B818D810E943A130E94781EE5 -:102530000E94CC210E942907109166010E9454112B -:10254000181771F10E945411809366019091420214 -:1025500092FF0EC090FF0CC01F928F938BE494E00B -:102560009F938F930E9430060F900F900F900F90C3 -:10257000809166010F900F900F900F900F90DF9158 -:10258000CF911F910F91FF90EF90DF90CF90BF9070 -:10259000AF909F908F907F906F905F900C948A1E69 -:1025A0000F900F900F900F900F90DF91CF911F9190 -:1025B0000F91FF90EF90DF90CF90BF90AF909F90E2 -:1025C0008F907F906F905F9008950C94F708089516 -:1025D0000895CF93DF931F92CDB7DEB769830E9432 -:1025E000F10890E021E030E0698102C0220F331F42 -:1025F0006A95E2F72823392381E0232B09F480E050 -:102600000F90DF91CF910895EF92FF920F931F9358 -:10261000CF93DF9384E694E00E949705C0E0D0E07A -:1026200089E2E82E81E0F82E06E514E08C2F0E9466 -:10263000F1080E94661EFF92EF921F928F93DF9324 -:10264000CF931F930F930E94300621968DB79EB7AC -:1026500008960FB6F8949EBF0FBE8DBFC031D1054E -:1026600029F7DF91CF911F910F91FF90EF9008957F -:1026700008950895CF93DF93CDB7DEB72B970FB6AC -:10268000F894DEBF0FBECDBF942F4F83252F588700 -:1026900069877A878B874A855B85452B21F02F3F99 -:1026A00009F59F3FF9F4DE01119686E0FD011192D4 -:1026B0008A95E9F785E0FE01379601900D928A959B -:1026C000E1F749815A816B817C818D819E810E94D5 -:1026D000DF1A2B960FB6F894DEBF0FBECDBFDF9189 -:1026E000CF9108954F81588569857A858B850E94A1 -:1026F000791ED9CFCF93882309F4A9C0C82F823877 -:10270000A1F40E94541181FDA2C089E30E94C21D60 -:102710000E943B1E2FEF81EE94E0215080409040BC -:10272000E1F700C0000089E315C08338C1F40E94BE -:10273000541180FD8CC083E50E94C21D0E943B1E87 -:102740002FEF81EE94E0215080409040E1F700C0EF -:10275000000083E50E94DF1DCF910C943B1E84385E -:10276000A1F40E94541182FD72C087E40E94C21D30 -:102770000E943B1E2FEF81EE94E02150804090405C -:10278000E1F700C0000087E4E5CF8CEF8C0F813AC1 -:1027900020F080E58C0F8E3248F48C2F0E94F824B4 -:1027A000811155C08C2F0E94C21DD6CF80E28C0FA4 -:1027B000883048F4C77081E001C0880FCA95EAF7F5 -:1027C0000E94011EC9CF8BE58C0F833078F4C53A87 -:1027D00029F0C63A31F083E890E005C081E890E046 -:1027E00002C082E890E0CF910C94B41188E58C0F80 -:1027F000853168F5C83A89F0C93A91F0CA3A99F03A -:10280000CB3AA1F0CC3AA9F0CD3AB1F0CE3AB9F03A -:10281000CF3AC1F080E090E017C082EE90E014C0A3 -:1028200089EE90E011C08AEE90E00EC085EB90E05A -:102830000BC086EB90E008C083EB90E005C084EB12 -:1028400090E002C087EB90E0CF910C94E211CF9121 -:102850000895882309F46AC08238A1F40E945411B3 -:1028600081FF64C089E30E94C21D0E943B1E2FEFBE -:1028700081EE94E0215080409040E1F700C00000DC -:1028800089E315C08338B9F40E94541180FF4EC00B -:1028900083E50E94C21D0E943B1E2FEF81EE94E053 -:1028A000215080409040E1F700C0000083E50E9485 -:1028B000DF1D0C943B1E8438A1F40E94541182FF4A -:1028C00035C087E40E94C21D0E943B1E2FEF81EE9F -:1028D00094E0215080409040E1F700C0000087E480 -:1028E000E6CF9CEF980F913A10F390E5980F9E3247 -:1028F000F0F290E2980F983050F4877091E001C0A8 -:10290000990F8A95EAF7892F0E94071ED2CF9BE57F -:10291000980F933020F480E090E00C94B411885A22 -:10292000853120F480E090E00C94E2110895882332 -:1029300021F00E94011E0C943B1E0895882321F073 -:102940000E94071E0C943B1E0895BF92CF92DF9207 -:10295000EF92FF920F931F93CF93DF9300D000D09D -:1029600000D0CDB7DEB725E0FC01DE011196019065 -:102970000D922A95E1F7FC0140815181028163812A -:102980007481258122952F706115710509F403C3A7 -:102990005F3F19F44F3F09F4FEC26C01862F7D831F -:1029A0006C83602F782F8D812E830E943F1D182FFE -:1029B000B92E0E943E1D0E942E1CEB2DE295EF7059 -:1029C000F0E0EC5BFF4F2E810C94B5278B2D807FC0 -:1029D0009B2D9F70F92E882319F0F29490EFF92225 -:1029E000002349F0FF2009F483C28F2D0E94141E9A -:1029F0000E943B1E7DC2812F0E942914FF2009F4F2 -:102A0000CAC28F2D0E941A1E26960FB6F894DEBFFA -:102A10000FBECDBFDF91CF911F910F91FF90EF902F -:102A2000DF90CF90BF900C943B1E8B2D807F9B2D11 -:102A30009F70F92E803219F0F29480EFF822112362 -:102A400019F0113009F12AC00023B1F08F2D222393 -:102A500051F1213041F526960FB6F894DEBF0FBE36 -:102A6000CDBFDF91CF911F910F91FF90EF90DF903D -:102A7000CF90BF900C94241E222319F0213009F42A -:102A80008AC20E94271E2DC00023F1F0263008F0D4 -:102A900082C20E94FE1D8F2129F023C00023F9F07D -:102AA000211116C08F2D26960FB6F894DEBF0FBEEB -:102AB000CDBFDF91CF911F910F91FF90EF90DF90ED -:102AC000CF90BF900C949714253008F064C209C0D1 -:102AD000F601858180FF0CC28F708583E3CF2111C1 -:102AE0001CC28F2D83C12B2D26952695237030E097 -:102AF0002115310521F021303105D1F04CC20023E0 -:102B000021F0812F9B2D937002C080E090E02696EB -:102B10000FB6F894DEBF0FBECDBFDF91CF911F91EE -:102B20000F91FF90EF90DF90CF90BF900C94B41175 -:102B3000002321F0812F9B2D937002C080E090E054 -:102B400026960FB6F894DEBF0FBECDBFDF91CF91B2 -:102B50001F910F91FF90EF90DF90CF90BF900C945A -:102B6000E211812F002319F00E94522002C00E941E -:102B7000BA2026960FB6F894DEBF0FBECDBFDF9108 -:102B8000CF911F910F91FF90EF90DF90CF90BF906A -:102B90000C943F218B2D837009F07BC00111FBC188 -:102BA000812F829586958770880F880F912F9F704F -:102BB000C92ED12CE12CF12C082E04C0CC0CDD1C2C -:102BC000EE1CFF1C0A94D2F714FF12C04FE050E035 -:102BD00060E070E004C0440F551F661F771F8A95A0 -:102BE000D2F7CB01BA01609570958095909503C09E -:102BF00060E070E0CB012B2D269526952370422FA7 -:102C000050E042305105D9F04330510569F16C294B -:102C10007D298E299F294130510551F126960FB605 -:102C2000F894DEBF0FBECDBFDF91CF911F910F9102 -:102C3000FF90EF90DF90CF90BF900C94531C6C29C5 -:102C40007D298E299F2926960FB6F894DEBF0FBEE8 -:102C5000CDBFDF91CF911F910F91FF90EF90DF904B -:102C6000CF90BF900C946D1C0E94531CC701B601FD -:102C700026960FB6F894DEBF0FBECDBFDF91CF9181 -:102C80001F910F91FF90EF90DF90CF90BF900C9429 -:102C9000391C002319F08B2D817001C08695882383 -:102CA00009F479C1812F829586958770880F880FE6 -:102CB000912F9F70C92ED12CE12CF12C082E04C02D -:102CC000CC0CDD1CEE1CFF1C0A94D2F714FF12C0C2 -:102CD0004FE050E060E070E004C0440F551F661FF5 -:102CE000771F8A95D2F7CB01BA01609570958095D0 -:102CF000909503C060E070E0CB012B2D26952695C2 -:102D00002370422F50E042305105D9F04330510535 -:102D100069F16C297D298E299F294130510551F196 -:102D200026960FB6F894DEBF0FBECDBFDF91CF91D0 -:102D30001F910F91FF90EF90DF90CF90BF900C9478 -:102D40001A1D6C297D298E299F2926960FB6F89485 -:102D5000DEBF0FBECDBFDF91CF911F910F91FF90CE -:102D6000EF90DF90CF90BF900C942C1D0E941A1D05 -:102D7000C701B60126960FB6F894DEBF0FBECDBFD1 -:102D8000DF91CF911F910F91FF90EF90DF90CF9047 -:102D9000BF900C94081D103FD1F128F480E4810FFE -:102DA000803250F0A0C0123F09F462C008F44BC05A -:102DB000133F09F472C097C0F12FF071FF2E8B2DD5 -:102DC0008F71002351F00E94A11C812FFF2019F068 -:102DD0008295807F68CE8F7066CE0E94C21C812F44 -:102DE000FF2019F08295807F01C08F7026960FB664 -:102DF000F894DEBF0FBECDBFDF91CF911F910F9131 -:102E0000FF90EF90DF90CF90BF900C949E14002322 -:102E1000B1F0253008F0BFC08B2D8F7126960FB60C -:102E2000F894DEBF0FBECDBFDF91CF911F910F9100 -:102E3000FF90EF90DF90CF90BF900C94E71C26306E -:102E400008F0A9C0E9CF0023A9F08B2D8F71269639 -:102E50000FB6F894DEBF0FBECDBFDF91CF911F91AB -:102E60000F91FF90EF90DF90CF90BF900C94A11C3A -:102E7000002359F38B2D8F7126960FB6F894DEBF81 -:102E80000FBECDBFDF91CF911F910F91FF90EF90BB -:102E9000DF90CF90BF900C94C21C002399F08B2D33 -:102EA0008F7126960FB6F894DEBF0FBECDBFDF91AF -:102EB000CF911F910F91FF90EF90DF90CF90BF9037 -:102EC0000C948C1C26960FB6F894DEBF0FBECDBFB7 -:102ED000DF91CF911F910F91FF90EF90DF90CF90F6 -:102EE000BF900C94871C0023A9F0222309F4ADCFD6 -:102EF000812F26960FB6F894DEBF0FBECDBFDF91AF -:102F0000CF911F910F91FF90EF90DF90CF90BF90E6 -:102F10000C947A13222309F4ADCF812F26960FB695 -:102F2000F894DEBF0FBECDBFDF91CF911F910F91FF -:102F3000FF90EF90DF90CF90BF900C9429144B2D11 -:102F40004F70612FC6010E94C81F26960FB6F894D5 -:102F5000DEBF0FBECDBFDF91CF911F910F91FF90CC -:102F6000EF90DF90CF90BF900C94871B4B2D4F704C -:102F7000612FC60126960FB6F894DEBF0FBECDBFF7 -:102F8000DF91CF911F910F91FF90EF90DF90CF9045 -:102F9000BF900C94CB1F26960FB6F894DEBF0FBEE1 -:102FA000CDBFDF91CF911F910F91FF90EF90DF90F8 -:102FB000CF90BF9008950E94211E0E94F01D0E9494 -:102FC0003B1E0E9473220E943F2180E090E00E94FD -:102FD000B41180E090E00C94E2110E94111E0C9458 -:102FE000DB17CF93DF9300D000D01F92CDB7DEB7B1 -:102FF000942F4983252F5A836B837C838D834C8147 -:103000005D81452B39F12F3F11F49F3F19F1498123 -:103010005A816B817C818D810E943F1D292F2295D1 -:103020002F7030E02C30310504F52A3031055CF486 -:10303000225031092230310568F4853A80F4843019 -:1030400090F4823080F0883E38F4803E60F4845002 -:10305000813A48F080E014C0803FE1F704C090E27C -:10306000980F983080F781E00BC02C30310521F4A7 -:1030700093FB882780F904C02F303105C9F3EACFCC -:103080000F900F900F900F900F90DF91CF910895B8 -:10309000CF93DF9300D000D01F92CDB7DEB70F9053 -:1030A0000F900F900F900F90DF91CF910895CF93D5 -:1030B000DF9300D000D000D0CDB7DEB726960FB694 -:1030C000F894DEBF0FBECDBFDF91CF910895CF93AF -:1030D000DF93C091770180917801C817A1F0D0E00B -:1030E000CE0166E070E00E948427FC01E758FE4FA5 -:1030F0004081518162817381848195810E9457183A -:103100002196C770E8CFDF91CF9108954091A90132 -:103110005091AA016091AB017091AC018091AD0119 -:103120009091AE010C945718CF93DF938091AE012C -:1031300082958F7009F05CC08091AB01882309F4FF -:1031400057C020917701D09178014091A901C09199 -:10315000AA01E091AC01F091AD012D1709F448C02E -:1031600030E0309709F440C0CF3F11F44F3FE1F118 -:10317000C90166E070E00E948427DC01A758BE4FB9 -:1031800011968C911197C8132FC08C9148132CC0A5 -:1031900012968C911297811127C013968D919C9154 -:1031A00014978E179F0708F401978E1B9F0B883C7E -:1031B0009105D0F48091AE018F7080618093AE0153 -:1031C000C90166E070E00E948427FC01E258FE4FCE -:1031D00090819F709061908389EA91E00E94A5148C -:1031E000DF91CF910C9467182F5F3F4F2770B5CFB9 -:1031F000DF91CF910895BF92CF92DF92EF92FF922D -:103200000F931F93CF93DF93CDB7DEB761970FB6C0 -:10321000F894DEBF0FBECDBF7C0185E0F701DE0173 -:103220001D9601900D928A95E1F7D7014C91119668 -:103230002C9111971296DC90129713960D911C9178 -:1032400014975091A9016091AA018091AC019091CD -:10325000AD01009709F481C16F3F19F45F3F09F494 -:103260007CC1B090AB01BB2009F4CCC03091AE0161 -:103270000817190728F0F801E81BF90BCF0104C063 -:1032800080959095800F911FCC24C394883C910524 -:1032900088F0C12C307F09F0D4C0702F198B088BB7 -:1032A000522F6D2D89890E94481889EA91E00E9469 -:1032B000A514BDC0832F807F09F04AC0621314C0DB -:1032C000541312C0D11010C03F7030613093AE0162 -:1032D0000E94861889EA91E00E94A5148091AE01AF -:1032E000D70115968C9332C00115110531F12F3F8E -:1032F00011F44F3F11F1CD2CD1101FC0E091770197 -:1033000030917801E31709F462C0F0E0CF0166E084 -:1033100070E00E948427DC01A758BE4F11968C9163 -:103320001197281307C08C91481304C012968C91F2 -:10333000811103C03196E770E5CFCD2CDD2009F473 -:103340002DC18091AE0181608093AE01C12C26C158 -:10335000621308C0541306C0D11004C08091AE019E -:10336000D701CEC04D872E87DF86702F198B088B33 -:10337000522F6D2D89890E94F117882309F43EC0D0 -:10338000DD20E1F12091AE01822F82958F7090E0D7 -:10339000029774F08091A9019091AA0198878F8378 -:1033A00019861B870A872C87CE0107960E94A514D1 -:1033B00086E0F701A9EAB1E001900D928A95E1F764 -:1033C0000E9494180E948618CC24C394E7C0702FE2 -:1033D000198B088B522F60E089890E943F1D292F8D -:1033E00022952F7030E0223031050CF0CBC09F7059 -:1033F00009F0C5C0805E883008F4D0C0C7010E94C3 -:10340000A514E2CF0817190708F458C0F801E81B03 -:10341000F90BCF01883C910508F455C0C12C702FE1 -:10342000198B088B522F6D2D89890E944818E9EA63 -:10343000F1E086E0DF011D928A95E9F70E94861887 -:10344000ADC0621314C0541312C0D11010C08091CB -:10345000AE01F7018583C7010E94A51486E0E9EA61 -:10346000F1E0DF011D928A95E9F7CB2C97C04D87DB -:103470002E87DF86702F198B088B522F6D2D89892F -:103480000E94F117882309F4B9CFDD2009F4B6CFE3 -:103490002091AE01822F82958F7090E002970CF4FC -:1034A00087CF8091A9019091AA019A8389831B8279 -:1034B0001D830C832E83CE01019678CF8095909545 -:1034C000800F911FA7CFCD2CDD2009F497CF621379 -:1034D0002EC054132CC02091AE0120FD1FC0822F9E -:1034E00082958F70D9F0D70115962C9315978F3050 -:1034F00049F08F5F982F9295907F822F8F70892B44 -:1035000015968C93C7010E94A51486E0F701A9EADD -:10351000B1E001900D928A95E1F790CF86E0F70136 -:10352000A9EAB1E001900D928A95E1F737C04D8785 -:103530002E87DF86702F198B088B522F6D2D89896E -:103540000E94F117811134CF8091AE018160809388 -:10355000AE01C7010E94A51421C0DD2009F44ECFA1 -:103560004D872E87DF86702F198B088B522F6D2D7C -:1035700089890E94F117882309F440CF19CF81115E -:1035800039CF0CC0243031050CF038CF9F7009F4CE -:1035900031CFF7019581907F09F02CCF8C2D61966A -:1035A0000FB6F894DEBF0FBECDBFDF91CF911F9154 -:1035B0000F91FF90EF90DF90CF90BF900895CF9341 -:1035C000DF93CDB7DEB72C970FB6F894DEBF0FBEF2 -:1035D000CDBF4F83588769877A878B879C87CE01B9 -:1035E00007960E94FB18882371F08F8198852A85A1 -:1035F0003B85232B09F43FC09F3F09F068C08F3FF4 -:1036000009F065C038C086E0FE013796DE011196EC -:1036100001900D928A95E1F76F817885EA85FB85A7 -:10362000309749F17F3F11F46F3F29F18091780184 -:1036300090E09C012F5F3F4F277033274091770127 -:1036400050E02417350709F44BC069837A83FD8362 -:10365000EC8366E070E00E948427DC01A758BE4F2F -:1036600096E0FE01319601900D929A95E1F7209334 -:1036700078010E94671880917701909178018917ED -:10368000E9F190E066E070E00E94842787589E4F41 -:103690000E94FB18882391F18091770190E066E009 -:1036A00070E00E948427FC01E758FE4F4081518161 -:1036B00062817381848195810E945718809177017E -:1036C00090E001968770992780937701D4CF4F813E -:1036D000588569857A858B859C850E945718CBCF44 -:1036E0000E94ED171092780110927701E9EAF1E05B -:1036F00086E0DF011D928A95E9F7BDCF2C960FB6C3 -:10370000F894DEBF0FBECDBFDF91CF910895DF9259 -:10371000EF92FF920F931F93CF93DF93FC01892BBE -:1037200009F48AC0E12CF12CDD24D394EF01219619 -:103730008491853709F461C058F4843708F04EC08D -:10374000843008F06AC08130D1F0823071F174C0E9 -:10375000883709F45DC050F4863709F455C08737BF -:1037600009F06AC08E2D0E940E1E54C09CE7980F6F -:10377000903708F061C08F770E94291450C08F01E4 -:103780000E5F1F4FFE01849190E2980F983050F425 -:103790008770FD2D01C0FF0F8A95EAF78F2F0E94D9 -:1037A000141E14C00E947A1313C08F010E5F1F4FA6 -:1037B000FE01C49180E28C0F883060F4C7708D2DBB -:1037C00001C0880FCA95EAF70E941A1E0E943B1E8C -:1037D000E80125C08C2F0E942914FACF9F012E5F8B -:1037E0003F4FFE01C491CC2369F08FE99FE0019720 -:1037F000F1F700C00000C150F6CF9F012E5F3F4F90 -:10380000FE01F490E9010BC00E94FE1DE82E07C0E6 -:103810000E94111E0E943B1E02C00E947A138F2D2F -:10382000882341F0EFE9FFE03197F1F700C0000095 -:103830008150F6CFFE017ACFDF91CF911F910F918A -:10384000FF90EF90DF90089560932F027093300205 -:1038500080933102909332020C94891E08956093F4 -:1038600033027093340280933502909336020C94A5 -:10387000881E0F931F930091330210913402209100 -:10388000350230913602602B712B822B932B609383 -:1038900033027093340280933502909336021F9165 -:1038A0000F910C94881E0F931F9300913302109177 -:1038B0003402209135023091360260237123822335 -:1038C0009323609333027093340280933502909374 -:1038D00036021F910F910C94881E0F931F93009135 -:1038E0003302109134022091350230913602602764 -:1038F0007127822793276093330270933402809359 -:103900003502909336021F910F910C94881E60E04F -:1039100070E0CB010C94241C0F931F9341E050E006 -:1039200060E070E08A019B0104C0000F111F221F9C -:10393000331F8A95D2F7C901B8011F910F910C94DA -:10394000241C0F931F9341E050E060E070E004C03E -:10395000440F551F661F771F8A95D2F780912F025B -:1039600090913002A0913102B09132028A019B0104 -:10397000082B192B2A2B3B2BC901B8011F910F9142 -:103980000C94241C0F931F9341E050E060E070E022 -:1039900004C0440F551F661F771F8A95D2F74095C4 -:1039A00050956095709580912F0290913002A09172 -:1039B0003102B09132028A019B01082319232A2384 -:1039C0003B23C901B8011F910F910C94241C0F9344 -:1039D0001F9341E050E060E070E004C0440F551FC9 -:1039E000661F771F8A95D2F780912F02909130023F -:1039F000A0913102B09132028A019B010827192758 -:103A00002A273B27C901B8011F910F910C94241C50 -:103A10000F931F9300912F021091300220913102D9 -:103A200030913202602B712B822B932B1F910F91BF -:103A30000C94241C0F931F9300912F0210913002BD -:103A4000209131023091320260237123822393232B -:103A50001F910F910C94241C0F931F9300912F0220 -:103A6000109130022091310230913202602771278B -:103A7000822793271F910F910C94241C08958F92F5 -:103A80009F92AF92BF92DF92EF92FF920F931F939C -:103A9000CF93DF9300D000D01F92CDB7DEB76B83FA -:103AA0007C838D838A018C819D81892B21F01F3F2E -:103AB00029F44F3F19F480E090E053C08B818823B4 -:103AC00009F43CC08090330290903402A0903502FB -:103AD000B090360280912F0290913002A091310275 -:103AE000B0913202882A992AAA2ABB2A2FE1E22E13 -:103AF000F12CD501C4010E2C04C0B695A79597955D -:103B000087950A94D2F780FF07C0DE2CB8018E2D6E -:103B10000E94991F019729F481E0E81AF10848F7FB -:103B2000D12CE12FF0E093E0EE0FFF1F9A95E1F723 -:103B3000E00FF11DE155FE4FD0820CC0E12FF0E007 -:103B400083E0EE0FFF1F8A95E1F7E00FF11DE155CD -:103B5000FE4FD08009831A8369817A818D2D0E945E -:103B6000991F0F900F900F900F900F90DF91CF91B2 -:103B70001F910F91FF90EF90DF90BF90AF909F90BB -:103B80008F90089520910D0130910E01F901329628 -:103B90009FEF40E05191581789F09F3F19F4511160 -:103BA00001C0942F4F5F4630A9F79F3F39F0F901CC -:103BB000E90FF11D97FDFA958283089508952091EC -:103BC0000D0130910E01F9013296285F3F4F90812F -:103BD000981301C010823196E217F307C1F70895D8 -:103BE00081E090E0E0910D01F0910E01E80FF91FE6 -:103BF0001082019688309105A9F7089580914102BD -:103C0000089590914102892B8093410208958095F7 -:103C1000909141028923809341020895809341024B -:103C2000089510924102089590914002892B80934B -:103C3000400208958095909140028923809340022C -:103C400008951092400208958093370208951092CB -:103C50003702089580910D0190910E01FC0131967B -:103C60009C01285F3F4F80E0919191118F5FE21797 -:103C7000F307D1F70895E0910D01F0910E018091C5 -:103C800041028083E0910D01F0910E0190818091BD -:103C90004002892B808380913702882361F0E09174 -:103CA0000D01F0910E019081892B80830E942A1EC4 -:103CB00081111092370280910D0190910E010C94A8 -:103CC0006011909335018093340108958295982F67 -:103CD0009C7C292F26952695982F9373990F990FE1 -:103CE000922B892F8A7A86959575990F892B08953D -:103CF0000895CF93DF9300D000D01F92CDB7DEB7E9 -:103D00000F900F900F900F900F90DF91CF9108952B -:103D1000089508950C94E51280915702843021F1A2 -:103D20001092430220E488E190E00FB6F894A89541 -:103D3000809360000FBE2093600083B7817F846012 -:103D400083BF83B7816083BF7894889583B78E7F64 -:103D500083BF0FB6F894A895809160008861809326 -:103D60006000109260000FBE0895CF930E94381338 -:103D70000E9403080E943913C0E08C2F0E94F108B2 -:103D8000811104C0CF5FC031C1F701C081E0CF9184 -:103D900008950E94E7120C94ED171F920F920FB630 -:103DA0000F9211248F939F93AF93BF9380914302FF -:103DB000811113C08091440290914502A091460266 -:103DC000B09147024196A11DB11D8093440290938A -:103DD0004502A0934602B0934702BF91AF919F91D5 -:103DE0008F910F900FBE0F901F90189582E084BDA9 -:103DF00093E095BD9AEF97BD80936E0008952FB71D -:103E0000F8948091440290914502A0914602B091AD -:103E100047022FBF08952FB7F89460914402709124 -:103E2000450280914602909147022FBF0895CF929C -:103E3000DF92EF92FF920F931F932FB7F894409168 -:103E400044025091450260914602709147022FBF93 -:103E50006A017B01EE24FF248C0120E030E0C016D3 -:103E6000D106E206F30610F4415051099A01281BCD -:103E7000390BC9011F910F91FF90EF90DF90CF9008 -:103E800008951F920F920FB60F9211248F939F9354 -:103E9000AF93BF938091440290914502A091460256 -:103EA000B09147020196A11DB11D809344029093E9 -:103EB0004502A0934602B0934702BF91AF919F91F4 -:103EC0008F910F900FBE0F901F9018950E94A80E13 -:103ED000F8942FEF87EA91E6215080409040E1F777 -:103EE00000C0000087E090EBDC01809360029093BB -:103EF0006102A0936202B09363029CE088E10FB676 -:103F0000F894A895809360000FBE90936000FFCF57 -:103F1000E92FF0E093E0EE0FFF1F9A95E1F7E80F2D -:103F2000F11DE855FF4F9491892F8F7092959F70E6 -:103F30000895CF93C82FCB010E94881F492F90E08E -:103F4000242F30E054E0220F331F5A95E1F7282B3D -:103F5000392B2038310519F480E090E017C0EC2FA0 -:103F6000F0E023E0EE0FFF1F2A95E1F74770E40F22 -:103F7000F11D34E0EE0FFF1F3A95E1F7E80FF91F4E -:103F8000EE0FFF1FE050F84985919491CF9108956D -:103F900080E090E00895089580914A0280FF0CC06F -:103FA0008091120190E065E070E00E948427959571 -:103FB0008795959587952EC081FF0AC08091120143 -:103FC00090E065E070E00E9484279595879522C077 -:103FD00082FF08C08091120190E065E070E00E94CD -:103FE000842718C020914B022223D1F03091110177 -:103FF000231780F78091120190E065E070E00E9445 -:104000008427622F70E00E948427632F70E00E9453 -:10401000A127CB018038910530F4009731F0089545 -:1040200085E090E008958FE7089581E008958091FC -:104030004A0280FF08C06091100170E07595679595 -:104040007595679523C081FF06C06091100170E0EF -:10405000759567951BC082FF04C06091100170E0E8 -:1040600012C060914B026623D1F020910F016217BC -:10407000A0F78091100170E090E00E948427622FE9 -:1040800070E00E94A1276038710528F46115710560 -:1040900021F0862F08958FE7089581E0089561E06B -:1040A00070E0F4CF803F21F40E94CC1F819504C0C2 -:1040B000813F29F40E94CC1F80934E020895823FD5 -:1040C00021F40E94CC1F819504C0833F29F40E94F3 -:1040D000CC1F80934D020895893F19F40E94172048 -:1040E00005C08A3F31F40E941720819580934F02CA -:1040F00008958B3F21F40E941720819504C08C3FC6 -:1041000029F40E941720809350020895843F21F4DF -:1041100080914C02816017C0853F21F480914C0250 -:10412000826011C0863F21F480914C0284600BC0F4 -:10413000873F21F480914C02886005C0883F31F4AC -:1041400080914C02806180934C0208958D3F21F450 -:1041500080914A0281600BC08E3F21F480914A0217 -:10416000826005C08F3F29F480914A028460809369 -:104170004A020895803F39F480914E0287FF6CC057 -:1041800010924E0269C0813F29F480914E021816A8 -:10419000BCF362C090914D02823F29F497FF5CC04E -:1041A00010924D0259C0833F19F41916CCF354C034 -:1041B000893F41F480914F0218160CF04DC01092C7 -:1041C0004F024AC08A3F29F480914F0287FF44C0C2 -:1041D000F6CF8B3F39F48091500287FF3DC010929B -:1041E00050023AC08C3F29F4809150021816BCF35B -:1041F00033C0843F21F480914C028E7F17C0853FED -:1042000021F480914C028D7F11C0863F21F4809172 -:104210004C028B7F0BC0873F21F480914C02877F3B -:1042200005C0883F31F480914C028F7E80934C0210 -:1042300013C08D3F21F480914A028E7F0BC08E3FC8 -:1042400021F480914A028D7F05C08F3F29F480912F -:104250004A028B7F80934A0280914D0281110EC0E9 -:1042600080914E0281110AC080914F02811106C0D7 -:1042700080915002811102C010924B0208958091EA -:10428000420283FF7EC089E994E00E9497058091F5 -:104290004C021F928F9384E994E09F938F930E9426 -:1042A000300682E994E00E94970580914D02282F04 -:1042B000082E000C330B3F938F938FE894E09F936D -:1042C0008F930E9430068DE894E00E9497058091BC -:1042D0004E02282F082E000C330B3F938F938AE851 -:1042E00094E09F938F930E94300688E894E00E94A8 -:1042F000970580914F02282F082E000C330B3F9317 -:104300008F9385E894E09F938F930E94300683E813 -:1043100094E00E94970580915002282F082E000CEF -:10432000330B3F938F9380E894E09F938F930E9489 -:1043300030068DE794E00E94970580914B021F9212 -:104340008F938AE794E09F938F930E94300688E7CB -:1043500094E00E94970580914A021F928F9385E70F -:1043600094E09F938F930E94300682E794E00E942E -:1043700097058DB79EB74C960FB6F8949EBF0FBEAB -:104380008DBF8CE492E00E94A9110E94FF1E9093C1 -:1043900049028093480208951F93CF93DF93809141 -:1043A0004802909149020E94171FFC0120914B0284 -:1043B000222329F090911301892F90E007C080916A -:1043C000140190E06AE070E00E948427E817F90782 -:1043D00008F485C080914D02C0914E02D0914F02E9 -:1043E00010915002811107C0C11175C0D11173C065 -:1043F000111171C074C02F3F19F02F5F20934B0231 -:10440000181624F40E94CC1F80934D0280914D0217 -:1044100087FF05C00E94CC1F819580934D021C161A -:1044200024F40E94CC1F80934E0280914E0287FF9D -:1044300005C00E94CC1F819580934E0260914D0271 -:10444000662331F1C0914E02CC2311F1062E000CEF -:10445000770B880B990B0E94832623E333E343E316 -:104460005FE30E94E7260E944B2660934D026C2F6B -:10447000CC0F770B880B990B0E94832623E333E341 -:1044800043E35FE30E94E7260E944B2660934E02BF -:104490001D1624F40E94172080934F0280914F0232 -:1044A00087FF05C00E941720819580934F02111647 -:1044B00024F40E941720809350028091500287FFBD -:1044C00005C00E941720819580935002DF91CF9103 -:1044D0001F910C943F212F3F09F08FCF97CFDF9191 -:1044E000CF911F910895ECE4F2E085E0DF011D9289 -:1044F0008A95E9F710924B0210924A0208958CEBCC -:1045000096E00E9497051F9281E08F931F9285E0AD -:104510008F938EE696E09F938F930E9430060F90C4 -:104520000F900F900F900F900F9008958330E9F146 -:1045300028F4813061F0823009F10895853009F462 -:1045400062C008F449C0863009F474C008958091AF -:104550001401262F30E0280F311D2F3F310524F4A0 -:10456000680F6093140103C08FEF80931401809152 -:1045700014011F928F9387EA95E072C08091130116 -:10458000262F30E0280F311D2F3F310524F4680F0E -:104590006093130103C08FEF809313018091130187 -:1045A0001F928F9385E995E05BC080911201262FC1 -:1045B00030E0280F311D2F3F310524F4680F609340 -:1045C000120103C08FEF80931201809112011F929C -:1045D0008F9382E895E044C080911101262F30E04E -:1045E000280F311D2F3F310524F4680F609311010E -:1045F00003C08FEF80931101809111011F928F935F -:104600008DE695E02DC080911001262F30E0280F17 -:10461000311D2F3F310524F4680F6093100103C052 -:104620008FEF80931001809110011F928F9384E58A -:1046300095E016C080910F01262F30E0280F311D24 -:104640002F3F310524F4680F60930F0103C08FEFF3 -:1046500080930F0180910F011F928F9389E395E062 -:104660009F938F930E9430060F900F900F900F90A2 -:104670000895833081F128F4813059F08230D1F0EF -:104680000895853009F449C0B8F1863009F456C060 -:10469000089580911401681720F4861B80931401FB -:1046A00002C010921401809114011F928F938AE22C -:1046B00095E054C080911301681720F4861B809305 -:1046C000130102C010921301809113011F928F9366 -:1046D00088E195E043C080911201681720F4861BA1 -:1046E0008093120102C010921201809112011F9258 -:1046F0008F9385E095E032C080911101681720F416 -:10470000861B8093110102C010921101809111014A -:104710001F928F9380EF94E021C080911001681761 -:1047200020F4861B8093100102C01092100180912A -:1047300010011F928F9387ED94E010C080910F01BC -:10474000681720F4861B80930F0102C010920F019E -:1047500080910F011F928F938CEB94E09F938F9326 -:104760000E9430060F900F900F900F900895CF93F6 -:10477000C82F1F928F9381EC97E09F938F930E9495 -:10478000300681E090E0A0E0B0E0BC01CD0104C0C3 -:10479000660F771F881F991FCA95D2F70E942F1C9A -:1047A0000F900F900F900F90CF910C94ED17CF9327 -:1047B000873288F58E3108F00BC18E3009F487C03E -:1047C000D8F4873009F460C08B3009F44FC08630CC -:1047D00009F002C180914202817F8E7F8093420264 -:1047E00086EC97E00E94970580E89AE00E94970582 -:1047F00081E08093520246C0863109F4B0C020F4B3 -:10480000803109F47AC0E8C0893109F491C08B3154 -:1048100009F449C0E1C0883349F150F4893209F400 -:10482000D5C0853309F4D2C0873209F0D5C0CEC0D7 -:10483000833409F4CBC028F48A3308F4CDC08953FB -:10484000C8C0883409F0C8C00E94ED178FE69AE00E -:104850000E9497052FEF83ED90E321508040904018 -:10486000E1F700C000000E94661F0CC08DEE97E0CB -:1048700041C086E59AE00E949705809142028160DE -:1048800080934202C1E0ADC080914202C82FC17046 -:1048900080FFEFCF82E69AE00E9497058091420266 -:1048A000817F8E7F3FC09091420291FBCC27C0F95F -:1048B00081E0C827892FC0FB81F980934202CC2375 -:1048C00019F089E49AE029C08BE39AE013C0909133 -:1048D000420292FBCC27C0F981E0C827892FC0FB98 -:1048E00082F980934202CC2319F08CE29AE015C041 -:1048F0008CE19AE00E949705C5CF9091420293FB0C -:10490000CC27C0F981E0C827892FC0FB83F98093A9 -:104910004202CC2351F080E19AE00E9497058091F9 -:1049200042028160809342025CC083E09AE0E2CF61 -:1049300084EF99E00E94970581ED99E00E94970528 -:104940008CE899E00E9497058FE599E00E94970511 -:104950008AE199E00E9497058BEE98E0CBCF8DED30 -:1049600098E00E9497050E9454111F928F9383EC48 -:1049700098E09F938F930E94300680910C011F92C4 -:104980008F938CEA98E09F938F930E9430068091DA -:104990005F011F928F9389E998E09F938F930E9404 -:1049A00030060E940B1F9F938F937F936F9382E833 -:1049B00098E09F938F930E9430068DB79EB74296E2 -:1049C0000FB6F8949EBF0FBE8DBF5CCF80E001C0D4 -:1049D0008D510E94B72356CF80E898E00E9497053A -:1049E000C0E08C2FCF91089580E0089580E0089575 -:1049F000CF93C82F80915202813069F020F082302D -:104A000009F449C040C167E08FE00E94E9128823A1 -:104A100009F43FC106C067E08FE00E94E9128823D5 -:104A200061F08C2F0E94F424811104C08C2F0E940D -:104A3000D7232FC081E090E02CC08C2F0E94F62459 -:104A4000811126C0C431E1F070F4CB3081F0C03167 -:104A5000D1F40E947F2289EB97E00E94970582E0C3 -:104A60008093520215C0C93259F0C83361F486EC04 -:104A700097E00E9497058DEB97E00E94970508C08C -:104A80001092520204C187EB97E00E949705FFC085 -:104A900081E08170FEC0C43228F5CE3108F0C1C07B -:104AA000CB30A1F1D0F4C73009F0D3C08EE18093B0 -:104AB000140182E3809313018AE08093120184E160 -:104AC0008093110188E08093100188E280930F01A8 -:104AD0008DE596E00E949705BFC0C33149F1C4310E -:104AE000C1F0B7C0CB3409F4A9C028F4C93289F0A9 -:104AF000C83361F0AEC0C13509F49EC0C23509F4B7 -:104B000099C0CE3409F0A5C06AE09EC00E947F2201 -:104B1000A3C080915102882319F0109251029CC0C9 -:104B20008AE696E00E94970581E080935202B1C028 -:104B300084E496E00E94970582E396E00E94970540 -:104B4000809114011F928F938FE296E09F938F9331 -:104B50000E9430068DE296E00E9497058BE196E078 -:104B60000E949705809113011F928F9388E196E030 -:104B70009F938F930E94300686E196E00E949705EE -:104B800087E096E00E949705809112011F928F9313 -:104B900084E096E09F938F930E94300682E096E037 -:104BA0000E94970581EF95E00E9497058091110181 -:104BB0001F928F938EEE95E09F938F930E94300605 -:104BC0008CEE95E00E94970587ED95E00E94970591 -:104BD000809110011F928F9384ED95E09F938F93A6 -:104BE0000E94300682ED95E00E9497058BEB95E0E0 -:104BF0000E94970580910F011F928F9388EB95E09B -:104C00009F938F930E94300686EB95E00E94970554 -:104C10008DB79EB748960FB6F8949EBF0FBE8DBF56 -:104C20001BC0CE51EC2FF0E0E65DFE4F80818093FB -:104C3000510212C061E003C061E006C06AE08091E9 -:104C400051020E94962208C0809151020E9439238D -:104C500003C08BE596E013C080915102882369F070 -:104C60001F928F9385E596E09F938F930E94300665 -:104C70000F900F900F900F9004C082E596E00E9475 -:104C8000970581E006C01092520280E002C080E0E9 -:104C900000CFCF9108950E9452266894B1110C94D0 -:104CA000E12608950E94C62688F09F5798F0B92FF4 -:104CB0009927B751B0F0E1F0660F771F881F991F51 -:104CC0001AF0BA95C9F714C0B13091F00E94E026ED -:104CD000B1E008950C94E026672F782F8827B85FFD -:104CE00039F0B93FCCF3869577956795B395D9F7A9 -:104CF0003EF490958095709561957F4F8F4F9F4FB3 -:104D00000895E89409C097FB3EF4909580957095BE -:104D100061957F4F8F4F9F4F9923A9F0F92F96E907 -:104D2000BB279395F695879577956795B795F1117C -:104D3000F8CFFAF4BB0F11F460FF1BC06F5F7F4F19 -:104D40008F4F9F4F16C0882311F096E911C077232B -:104D500021F09EE8872F762F05C0662371F096E834 -:104D6000862F70E060E02AF09A95660F771F881F03 -:104D7000DAF7880F9695879597F9089557FD90581B -:104D8000440F551F59F05F3F71F04795880F97FB0F -:104D9000991F61F09F3F79F08795089512161306C9 -:104DA0001406551FF2CF4695F1DF08C016161706F8 -:104DB0001806991FF1CF869571056105089408952D -:104DC000E894BB2766277727CB0197F908950E94BF -:104DD000F9260C9473270E94652738F00E946C27EF -:104DE00020F0952311F00C945C270C9462270C940E -:104DF000E1260E94BE2678F39923C9F35523B9F31F -:104E0000950F50E0551FAA27EE27FF27BB27002448 -:104E10000894679520F4E20FF31FB41F0A1E220FB7 -:104E2000331F441FAA1F6695A9F7779530F4F30F37 -:104E3000B41F0A1E121E08F46395330F441FAA1FE5 -:104E4000221F769599F7879520F4B40F0A1E121E3B -:104E5000631F440FAA1F221F331F8695A9F7862FB1 -:104E6000712D602D11249F5750409AF0F1F0882346 -:104E70004AF0EE0FFF1FBB1F661F771F881F915060 -:104E80005040A9F79E3F510580F00C945C270C948C -:104E9000E1265F3FE4F3983ED4F3869577956795D6 -:104EA000B795F795E7959F5FC1F7FE2B880F911D8A -:104EB0009695879597F9089597F99F6780E870E030 -:104EC00060E008959FEF80EC089500240A94161680 -:104ED000170618060906089500240A9412161306E8 -:104EE000140605060895092E0394000C11F4882376 -:104EF00052F0BB0F40F4BF2B11F460FF04C06F5F92 -:104F00007F4F8F4F9F4F08950024552704C0080EF0 -:104F1000591F880F991F009729F076956795B8F368 -:104F20007105B9F7802D952F0895991B79E004C07C -:104F3000991F961708F0961B881F7A95C9F78095D8 -:104F4000089597FB072E16F4009407D077FD09D03B -:104F50000E94BB2707FC05D03EF4909581959F4F9A -:104F60000895709561957F4F0895EE0FFF1F05908E -:104F7000F491E02D0994AA1BBB1B51E107C0AA1FA5 -:104F8000BB1FA617B70710F0A61BB70B881F991FEA -:104F90005A95A9F780959095BC01CD010895F89494 -:024FA000FFCF41 -:104FA200FFFF130A040BE10AAD0A790A013802284D -:104FB20008140A321E404D3622DA038D0357033598 -:104FC20003C102DA02F3020C030001020304050624 -:044FD20007080900C3 -:106800000000EA44E944E2440400050006000700F1 +:10018000206B6579310A005B423A253032582C20C9 +:10019000583A2564282564292C20593A25642825B5 +:1001A00064292C20413A25645D0A005D2000253039 +:1001B000325820004D6F7573653A205B00206164F2 +:1001C00064723A25642C20726567333A25303458BE +:1001D0000A000A5363616E3A0A00646574656374C9 +:1001E00020616761696E0A00544D353A2065787464 +:1001F0000A00556E6B6E6F776E0A00544D353A20CB +:1002000064656661756C740A005D206370693D25E4 +:10021000640A002530325820004578743A205B008B +:10022000436C6173736963203230306370690A0014 +:10023000436C6173736963203130306370690A0005 +:1002400061646472256420726567333A2025303218 +:10025000580A006D6F7665206661696C0A006164FA +:100260006472256420726567333A20253032580A5B +:10027000000A4D6F7573653A0A004D656469612027 +:100280006B6579730A006861646C65723A20253089 +:1002900032582C2049534F3A2025730A000A4B65E7 +:1002A00079626F6172643A0A007300530052000A67 +:1002B0004B6579626F6172642073746172742E0A87 +:1002C000000A55534220636F6E66696775726564F4 +:1002D0002E0A000A0A544D4B3A6662383463616351 +:1002E000352F4C5546410A0A002E03410044004276 +:1002F0000020006B006500790062006F00610072F1 +:10030000006400200063006F006E007600650072DC +:100310000074006500720000000E0374002E006D72 +:10032000002E006B002E0000000403090409027473 +:1003300000040100A03209040000010301010009CA +:1003400021110100012240000705810308000A096C +:100350000401000103010200092111010001224DE5 +:10036000000705820308000A0904020001030000D7 +:10037000000921110100012236000705830308004E +:100380000A09040300020300000009211101000111 +:100390002222000705840320000107050403200032 +:1003A000011201100100000008EDFEDB0A0101014D +:1003B0000200010631FF0974A1010975150026FF2D +:1003C000009520750881020976150026FF0095200A +:1003D00075089102C005010980A10185021601007E +:1003E0002637001A81002AB700751095018100C0D8 +:1003F000050C0901A1018503160100269C021A01C2 +:10040000002A9C02751095018100C005010902A116 +:10041000010901A10005091901290515002501950A +:1004200005750181029501750381010501093009F6 +:10043000311581257F9502750881060938158125BA +:100440007F950175088106050C0A38021581257F04 +:10045000950175088106C0C005010906A1010507BF +:1004600019E029E71500250195087501810295011C +:100470007508810105081901290595057501910285 +:100480009501750391010507190029FF150026FF45 +:1004900000950675088100C0636F6E73756D657297 +:1004A0003A20253034580A0073797374656D3A2008 +:1004B000253034580A000A002530325820006B6578 +:1004C00079626F6172643A20004C45443A202530CD +:1004D00032580A00253032583A20253038622573C8 +:1004E0000A00722F632030313233343536370A0038 +:1004F000290A002575002F002575005D2800256458 +:1005000000200025640020002564002000256400F0 +:100510007C0025303258006D6F7573656B657920EE +:100520005B62746E7C782079207620685D28726525 +:10053000702F61636C293A205B006D6B5F77686593 +:10054000656C5F74696D655F746F5F6D6178203D88 +:100550002025640A006D6B5F776865656C5F6D616F +:10056000785F7370656564203D2025640A006D6BBB +:100570005F74696D655F746F5F6D6178203D2025E4 +:10058000640A006D6B5F6D61785F737065656420F0 +:100590003D2025640A006D6B5F696E74657276613B +:1005A0006C203D2025640A006D6B5F64656C617989 +:1005B000203D2025640A006D6B5F776865656C5F80 +:1005C00074696D655F746F5F6D6178203D2025648F +:1005D0000A006D6B5F776865656C5F6D61785F734E +:1005E00070656564203D2025640A006D6B5F746949 +:1005F0006D655F746F5F6D6178203D2025640A0032 +:100600006D6B5F6D61785F7370656564203D20255B +:10061000640A006D6B5F696E74657276616C203D73 +:100620002025640A006D6B5F64656C6179203D2054 +:1006300025640A000A00257500363A20776865654A +:100640006C5F74696D655F746F5F6D61783A2000EF +:100650000A00257500353A20776865656C5F6D6125 +:10066000785F73706565643A20000A002575003470 +:100670003A2074696D655F746F5F6D61783A200030 +:100680000A00257500333A206D61785F73706565E7 +:10069000643A20000A00257500323A20696E7465BC +:1006A0007276616C286D73293A20000A0025750066 +:1006B000313A2064656C6179282A31306D73293AAA +:1006C00020000A092D2056616C756573202D0A00E3 +:1006D0004D3E004D25643E20003F0073657420644C +:1006E000656661756C740A00433E20007768657228 +:1006F000652064656C74613A20637572736F723D36 +:1007000025642C20776865656C3D25640A53656512 +:1007100020687474703A2F2F656E2E77696B69703C +:10072000656469612E6F72672F77696B692F4D6FF2 +:100730007573655F6B6579730A000A092D204D6F2B +:100740007573656B6579202D0A4553432F713A09FE +:10075000717569740A313A0964656C6179282A31C6 +:10076000306D73290A323A09696E74657276616C6C +:10077000286D73290A333A096D61785F7370656576 +:10078000640A343A0974696D655F746F5F6D6178EE +:100790000A353A09776865656C5F6D61785F7370DB +:1007A0006565640A363A09776865656C5F74696DDA +:1007B000655F746F5F6D61780A0A703A09707269DB +:1007C0006E742076616C7565730A643A097365749A +:1007D0002064656661756C74730A75703A092B3113 +:1007E0000A646F776E3A092D310A706775703A099D +:1007F0002B31300A7067646F776E3A092D31300AF9 +:100800000A7370656564203D2064656C7461202AFC +:10081000206D61785F7370656564202A2028726599 +:1008200070656174202F2074696D655F746F5F6DF2 +:100830006178290A003F004D3E2000433E20004CD5 +:1008400025640A000A092D20436F6E736F6C6520C2 +:100850002D0A4553432F713A09717569740A6D3A2F +:10086000096D6F7573656B65790A000A092D204D56 +:1008700061676963202D0A643A0964656275670AD5 +:10088000783A096465627567206D61747269780AE7 +:100890006B3A096465627567206B6579626F617296 +:1008A000640A6D3A096465627567206D6F757365DA +:1008B0000A763A0976657273696F6E0A733A09733C +:1008C00074617475730A633A09636F6E736F6C6554 +:1008D000206D6F64650A302D343A096C6179657258 +:1008E000302D34284631302D4634290A5061757335 +:1008F0003A09626F6F746C6F616465720A003F0041 +:1009000074696D65725F72656164333228293A20BB +:100910002530346C580A006B6579626F6172645FD0 +:1009200069646C653A2025580A006B6579626F61CD +:1009300072645F70726F746F636F6C3A2025580A2F +:1009400000686F73745F6B6579626F6172645F6C6E +:1009500065647328293A2025580A000A092D205376 +:100960007461747573202D0A004743433A20352E75 +:10097000342E30204156522D4C4942433A20322EDB +:10098000302E30204156525F415243483A20617622 +:100990007233350A004F5054494F4E533A204C554C +:1009A0004641204D4F5553454B45592045585452CB +:1009B000414B455920434F4E534F4C4520434F4DDB +:1009C0004D414E44204B45594D41505F5345435492 +:1009D000494F4E20343039360A004255494C443A8A +:1009E000206662383463616335202831353A32330A +:1009F0003A3538204A756E20323320323031392969 +:100A00000A005649443A2030784645454428742E19 +:100A10006D2E6B2E29205049443A203078304144C5 +:100A20004228414442206B6579626F6172642063A1 +:100A30006F6E76657274657229205645523A203081 +:100A400078303130310A00444553433A20636F6EA9 +:100A50007665727420414442206B6579626F6172E1 +:100A60006420746F205553420A000A092D205665F0 +:100A70007273696F6E202D0A000A6D6F7573653A87 +:100A8000206F66660A000A6D6F7573653A206F6E97 +:100A90000A000A6B6579626F6172643A206F66665C +:100AA0000A000A6B6579626F6172643A206F6E0AA0 +:100AB000000A6D61747269783A206F66660A000AEE +:100AC0006D61747269783A206F6E0A000A6465621B +:100AD00075673A206F6E0A000A64656275673A208E +:100AE0006F66660A000A0A626F6F746C6F616465F4 +:100AF000722E2E2E2000433E200011241FBECFEF69 +:100B0000D4E0DEBFCDBF04B603FE27C080918003D2 +:100B100090918103A0918203B09183038730904B21 +:100B2000A740B04BD1F41092800310928103109231 +:100B300082031092830314BE84B7877F84BF0FB6ED +:100B4000F894A8958091600088618093600010926D +:100B500060000FBEE0E0F8E3099511E0A0E0B1E02D +:100B6000E6EAF5E502C005900D92A235B107D9F786 +:100B700023E0A2E5B1E001C01D92A038B207E1F781 +:100B80000E94210F0C94D12A0C940000FF93EF9344 +:100B9000E0915201F0915301309709F00995EF91DE +:100BA000FF910895FC018591803011F0EFDFFBCFBC +:100BB0000895FF27E0E230E247FF0CC0419597FF20 +:100BC00009C0EDE26095709580959095611D711D4D +:100BD000811D911D27FF02C0219530E350E2AA2715 +:100BE000660F771F881F991FAA1FA41710F0A41B58 +:100BF00063955A95A9F7AA3008F0A95FA05DAF9355 +:100C0000F395611571058105910541F7ED3211F4F8 +:100C1000EF93F395F21718F43F93F395FBCF8F9171 +:100C2000B5DFFA95E1F70895E991F9918591803062 +:100C300021F0853219F0AADFF9CF089520E0E89479 +:100C400055915532C1F3503311F4689455915A338C +:100C500048F4505390F3220F022E220F220F200D42 +:100C6000250FF4CF0EF4219589919991533619F3FC +:100C7000533729F1533559F1BC0188279927E89456 +:100C80005C3621F48991999168945591543639F4E0 +:100C900046EF7EF077FF0DC08FEF9FEF0AC055370C +:100CA0004AE039F0583540E121F0523642E009F08F +:100CB0000895FF93EF937DDFEF91FF91B7CFFF93FF +:100CC000EF93FC0181918030B9F360DFFBCFFF939C +:100CD000EF9368DFF1CFDF93CF93CDB7DEB72596E3 +:100CE000A3DFCF91DF910895282F2770E82FE69595 +:100CF000E695E695EF70F0E0E05AFE4F87FF0AC0F8 +:100D000081E090E001C0880F2A95EAF780959081F4 +:100D1000892308C081E090E001C0880F2A95EAF796 +:100D20009081892B808308950F931F93CF93DF9336 +:100D300082ED91E09F938F930E946B060F900F902E +:100D4000C0E0D0E00DEB11E063E08C2F0E94570C67 +:100D5000009771F09F938F93DF93CF931F930F931F +:100D60000E946B060F900F900F900F900F900F90B6 +:100D70002196C031D10541F7DF91CF911F910F919D +:100D800008953F924F925F926F927F928F929F92BF +:100D9000AF92BF92CF92DF92EF92FF920F931F9389 +:100DA000CF93DF93CDB7DEB728970FB6F894DEBFA9 +:100DB0000FBECDBF98EE492E91E0592E22EF622E44 +:100DC00021E0722E3BEFC32E31E0D32E43E1A42E5F +:100DD00042E0B42E63E083E00E94570C8C01892B23 +:100DE00009F449C18091620383FF11C01F930F93DF +:100DF0001F9283E08F938EE592E09F938F930E94E2 +:100E00006B060F900F900F900F900F900F9083E054 +:100E10000E94C60C412F4F602EEF63E083E00E94DA +:100E2000B40C8FE00E94C60C63E08FE00E94570C68 +:100E30008C01809162030115110559F483FFCACF1B +:100E400083E592E09F938F930E946B060F900F9023 +:100E5000C1CF83FF11C01F930F931F928FE08F9319 +:100E600080E492E09F938F930E946B060F900F9007 +:100E70000F900F900F900F90902E84E6E82EF12C9B +:100E80008FEF890D823008F03FC08FE00E94C60CC2 +:100E900024E0412F63E08FE00E94B40C63E08FE018 +:100EA0000E94570C8C01982E21E082131DC08FE008 +:100EB0000E94C60C22E0412F63E08FE00E94B40C38 +:100EC00063E08FE00E94570C8C01982E81E008139C +:100ED0000BC080E392E09F938F930E946B06F09289 +:100EE0001301E0921201A1C082E098120DC080E2CD +:100EF00092E09F938F930E946B0688EC90E0909312 +:100F000013018093120191C094E0991273C028E0FC +:100F1000AE014F5F5F4F61E08FE00E94D40B8630DF +:100F200050F02D813E813227232732273093130141 +:100F30002093120106C0F0921301E092120188235F +:100F4000C9F1882E912C1F928F9389E192E09F9393 +:100F50008F930E946B060F900F900F900F90312C83 +:100F6000832D032C000C990B881599059CF4E1E066 +:100F7000F0E0EC0FFD1FE80FF91F80811F928F93A7 +:100F8000BF92AF920E946B0633940F900F900F9018 +:100F90000F90E6CF809113018F93809112018F9370 +:100FA00089E092E09F938F930E946B060F900F90C1 +:100FB0000F900F9089818B34C1F48A818D34A9F40C +:100FC0008B818C3491F48C81813379F4DF92CF92D0 +:100FD0000E946B068FE00E94C60C2EEF412F407FCF +:100FE00063E08FE00E94B40C20C07F926F920E9459 +:100FF0006B061BC082E398121AC05F924F920E9448 +:101000006B068FE00E94C60C28E04AE051E062E0E7 +:101010008FE00E947D0C8FE00E94C60C28E042E029 +:1010200051E062E08FE00E947D0C0F900F908FE006 +:101030000E94C60C412F407F4A602EEF63E08FE094 +:101040000E94B40C8AE00E94C60C63E08FE00E940C +:10105000570C8C01982E892B09F4BCCE8091620329 +:1010600083FF0ECF8AED91E09F938F930E946B06D2 +:101070000F900F9005CF28960FB6F894DEBF0FBEE5 +:10108000CDBFDF91CF911F910F91FF90EF90DF9037 +:10109000CF90BF90AF909F908F907F906F905F9018 +:1010A0004F903F9008959F92AF92BF92CF92DF9260 +:1010B000EF92FF920F931F93CF93DF9300D000D056 +:1010C0001F92CDB7DEB78091590190915A010E94CD +:1010D00026220C9708F45EC10E940E2290935A01BA +:1010E0008093590180915701909158010E942622C6 +:1010F000893E934040F00E940E22909358018093C5 +:1011000057010E94C10625E0AE014F5F5F4F60E0CE +:101110008AE00E94D40BD82E41E0481710F081E0FD +:1011200037C182E0D81209C0498146FB442740F903 +:101130008A8186FB882780F90AC0FE01ED0DF11D2A +:10114000808186FB442740F982FB882780F99D2D0A +:1011500058EF68E89530E0F4292F092E000C330B86 +:10116000E1E0F0E0EC0FFD1FE20FF31F411102C0C0 +:10117000608301C05083882349F0E1E0F0E0EC0F88 +:10118000FD1FE20FF31F2081276020839F5FE2CFC6 +:101190000D8103FD02C090E801C090E007FF90645C +:1011A0004C8143FF906247FF90612B8123FF986041 +:1011B00027FF94605A8157FF9260398137FF916011 +:1011C00090935B01822F8077E82EF12C93E0EE0C58 +:1011D000FF1C9A95E1F7942F9077892F90E066E0B5 +:1011E000880F991F6A95E1F7E82AF92A3F77C70126 +:1011F000832B302F3077E32EF12CFE2CEE24FF0CC6 +:10120000E82AF92A5F7710E0102F00271295110FB6 +:10121000107E052B277030E03695322F2227379528 +:101220002795C801822B932B4770042F10E0102FB5 +:101230000027110F110F082B192B20915601022E98 +:10124000000C330BC801B9010E94922A81384FEF7C +:10125000940714F481E89FEF919581959109813865 +:101260004FEF940714F481E89FEF819580935C0120 +:10127000C701B9010E94922A81382FEF920714F416 +:1012800081E89FEF91958195910981384FEF9407FF +:1012900014F481E89FEF819580935D018091620352 +:1012A00083FF5AC084EB91E09F938F930E946B065B +:1012B0000F900F90912CAD2CB12C8EEAC82E81E0AE +:1012C000D82E892D092C000C990B8A159B059CF4AE +:1012D000E1E0F0E0EC0FFD1FE80FF91F80811F92A5 +:1012E0008F93DF92CF920E946B0693940F900F9092 +:1012F0000F900F90E6CF8BEA91E09F938F930E941F +:101300006B0680915601282F082E000C330B3F935B +:101310008F93FF92EF9280915D01282F082E000C91 +:10132000330B3F938F931F930F9380915C01282F72 +:10133000082E000C330B3F938F9380915B011F921B +:101340008F9387E891E09F938F930E946B060FB66F +:10135000F894DEBF0FBECDBF8BE591E00E94DB1499 +:1013600080915601482F082E000C550B2091120138 +:1013700030911301283C310518F024E030E002C020 +:1013800028E030E091E0421753070CF090E0890F1D +:10139000809356010F900F900F900F900F90DF9158 +:1013A000CF911F910F91FF90EF90DF90CF90BF9062 +:1013B000AF909F900895E82FF0E0E05AFE4F8081B3 +:1013C0000895682F609582E00C94DC0C8091620394 +:1013D000816080936203569A5E9A0E94D00B2FEF31 +:1013E00081EE94E0215080409040E1F700C0000081 +:1013F0000E9494068DE992E09F938F930E946B0662 +:1014000063E082E00E94570C99270F900F90813182 +:10141000910539F190F48730910519F138F49C0168 +:10142000245031092230310500F51BC08930910567 +:10143000C1F08D309105C9F414C08D31910589F04A +:1014400038F48431910569F08931910571F409C04E +:10145000843C910531F0873C910519F0813C910560 +:1014600021F421E02093700102C0109270012091BC +:101470007001211103C020E331E002C02CE231E011 +:101480003F932F939F938F9386E892E09F938F9340 +:101490000E946B0663E087E00E94570C992721E0C9 +:1014A0000F900F900F900F900F900F90823091053A +:1014B00009F020E020937101029741F48AE792E05D +:1014C0009F938F930E946B060F900F9023E042E052 +:1014D00063E082E00E94B40C81E792E09F938F93D7 +:1014E0000E946B060E94C1060E949406E0E6F1E0AD +:1014F0000F900F90119221E0E037F207D9F70E9488 +:1015000086140E94E109569A5E9808951F93CF931E +:10151000DF93C0910001D09101018FEF9FEF909375 +:10152000010180930001CF3F8FEFD80709F074C00D +:1015300080915401909155010E9426220C9710F43D +:1015400080E0CDC00E940E229093550180935401FB +:1015500082E00E947A0CEC01892B09F05DC0809139 +:101560007101882309F458C087E00E947A0C009723 +:1015700009F452C09C012F77332722303105A1F0A6 +:1015800048F42115310569F02130310599F480784E +:101590008A641AC02330310551F02F373105A1F08C +:1015A00009C08078826410C0807889640DC080781A +:1015B00088640AC084E791E09F938F930E946B0632 +:1015C0000F900F9081E18BC0292F33272F7733277E +:1015D0002130310579F050F02230310579F0233097 +:1015E000310581F4EC01D078D86416C0EC01D078D4 +:1015F000D26412C0EC01D078DA640EC0EC01D0786D +:10160000D9640AC081E691E09F938F930E946B0694 +:101610000F900F9080E163C08091620381FF18C03A +:10162000209709F48DCF8DE491E00E94D205DF93DD +:10163000CF9388E491E09F938F930E946B0686E49A +:1016400091E00E94D2050F900F900F900F9003C071 +:10165000209709F475CFCF378FE7D80711F48FE7BC +:1016600005C0CF3F8FEFD80721F48FEF0E9474069B +:1016700035C02D2F3327822F1C2F2F3F81F4DF936E +:10168000CF9388E291E09F938F930E946B060E9414 +:10169000E6090F900F900F900F908C2F20C0909123 +:1016A0007001992381F0A9014F77552742335105E5 +:1016B00021F42078822F8A6006C04A30510519F43F +:1016C0002078822F82630E9474061F3F39F0DC2F3E +:1016D000CC27CF6FD0930101C093000181E0DF914F +:1016E000CF911F910895509A83E091E00197F1F70F +:1016F00000C0000050989AEB9A95F1F700C0089549 +:10170000509A8AEB8A95F1F700C0509883E091E0F7 +:101710000197F1F700C000000895EF92FF920F9338 +:101720001F93CF93DF93C0E0D0E090E8E92EF12C37 +:10173000082F10E0C7010C2E02C0959587950A94DA +:10174000E2F780239123892B19F00E94800B02C0BD +:101750000E94730B2196C830D10561F7DF91CF91BC +:101760001F910F91FF90EF900895509A83EF9BE0A7 +:101770000197F1F700C000000C94800B489B06C055 +:1017800023E02A95F1F700000197C1F708954899E1 +:1017900006C023E02A95F1F700000197C1F70895EC +:1017A0005898509808950895EF92FF920F931F93C1 +:1017B000CF93DF93182FC62F7A01D22F80E0422FCC +:1017C00050E0282F082E000C330B2417350734F473 +:1017D000F701E20FF31F10828F5FF3CFF8940E949E +:1017E000B50B812F8295807FCC608C2B0E948D0B56 +:1017F0000E94730B84EF91E00E94C70B892B19F4B0 +:101800008DEA92E01AC084EF91E00E94BE0B892B12 +:1018100019F4789480E044C088E290E00E94C70BFD +:10182000892B19F48BEA92E008C084E690E00E94CC +:10183000BE0B892B51F489EA92E09F938F930E940B +:101840006B0678940F900F90E5CFC0E082E890E0AF +:101850000E94C70B8823F9F08C011127C8010E9450 +:10186000BE0B8823C1F09C2F9695969596959D1753 +:1018700080F4F701E90FF11D9081990F22E830E023 +:10188000201B310B081B1109201731070CF4916044 +:101890009083CF5FD9F678948C2F86958695869520 +:1018A000DF91CF911F910F91FF90EF900895CF930B +:1018B000DF93CDB7DEB728970FB6F894DEBF0FBE23 +:1018C000CDBF28E0AE014F5F5F4F0E94D40B823046 +:1018D00031F489819A8198278927982702C080E06E +:1018E00090E028960FB6F894DEBF0FBECDBFDF9113 +:1018F000CF91089560E00C94570CEF92FF921F93E4 +:10190000CF93DF93182FD62F7A01C22FF8940E941D +:10191000B50B812F8295807FD8608D2B0E948D0B17 +:101920000E94730B8FE193E00197F1F700C0000074 +:101930000E94800B10E0D0E0812F012E000C990B4B +:101940008C179D0744F4F701E80FF91F80810E946E +:101950008D0B1F5FF1CF0E94730B7894DF91CF91B5 +:101960001F91FF90EF900895CF93DF9300D0CDB7F4 +:10197000DEB749832A8322E0AE014F5F5F4F0E94AA +:101980007D0C0F900F90DF91CF910895CF93C82FCA +:10199000F8940E94B50B8C2F8295807F81600E9405 +:1019A0008D0B0E94730B8FE193E00197F1F700C05C +:1019B00000007894CF910895262F277040E062E0D0 +:1019C0000C94B40C80917E020895CF93DF9300D0E5 +:1019D0001F92CDB7DEB79C0180917703843019F553 +:1019E00093E099833B832A839093E9008FEF909152 +:1019F000E800815095FD06C095ED9A95F1F700003D +:101A00008111F5CF8091E80085FF0DC040E050E0E6 +:101A100063E070E0CE0101960E944A108091E800D8 +:101A20008E778093E8000F900F900F90DF91CF9109 +:101A30000895CF93DF9300D01F92CDB7DEB72091EA +:101A40007703243031F522E02983805891099B8364 +:101A50008A8383E08093E9008FEF9091E8008150C2 +:101A600095FD06C095ED9A95F1F700008111F5CF2F +:101A70008091E80085FF0DC040E050E063E070E039 +:101A8000CE0101960E944A108091E8008E778093E3 +:101A9000E8000F900F900F90DF91CF910895209163 +:101AA00077032430F1F422E02093E9002FEF309106 +:101AB000E800215035FD06C035ED3A95F1F70000FC +:101AC0002111F5CF2091E80025FF0BC040E050E048 +:101AD00065E070E00E944A108091E8008E77809364 +:101AE000E8000895CF93DF9320917703243049F5E0 +:101AF00021E02093E90021E8215059F03091E800DD +:101B000035FD07C0EFE3F1E03197F1F700C00000C9 +:101B1000F3CF2091E80025FF14C0EC0140E050E035 +:101B200068E070E00E944A108091E8008E77809310 +:101B3000E80088E0FE01A6E7B2E001900D928A95E8 +:101B4000E1F7DF91CF910895CF93C0917401C11156 +:101B50000BC00E941A22643C79408105910520F057 +:101B600081E080937401C1E08C2FCF910895CF93D1 +:101B7000C82F0E94A40D882309F448C00FB607FEA1 +:101B800045C080917703843009F040C08091E9001E +:101B90008F702091EC00922F917020FD90E8892B9E +:101BA00094E09093E9009091EB0090FF2CC090910D +:101BB000EE0097FF28C09091170120911601291778 +:101BC00009F447C02091E80025FF1DC0E0911401F1 +:101BD000F0911501E90FF11D30819F5F20911801EF +:101BE0009223909317013093F1009091E80095FDB6 +:101BF000E2CF9091E80090FFDECF9091E8009E77D1 +:101C00009093E800D8CF8F708093E90080911601FF +:101C100090E0AC014F5F5F4F30911801232F30E00F +:101C2000242335234091170150E024173507D1F0C4 +:101C30002091140130911501F901E80FF91FC083BB +:101C4000809116018F5F909118018923809316016E +:101C500009C09091E80095FFD6CFC093F1008F7036 +:101C60008093E90080E0CF9108950895089542E0BF +:101C700061EC81E00E944E1142E061EC82E00E9442 +:101C80004E1142E061EC83E00E944E1142E261ECB1 +:101C900084E00C944E1180917903833009F453C091 +:101CA00030F4813071F0823009F48CC008958A30AC +:101CB00009F478C08B3009F45EC0893009F09AC00D +:101CC00020C080917803813A09F094C08091E800A7 +:101CD000877F8093E80080917C0390917D03892B1E +:101CE00021F468E086E792E003C060E080E090E0E5 +:101CF00070E00E9495108091E8008B778093E80057 +:101D0000089580917803813209F074C080917C033A +:101D100090917D03892B09F06DC08091E800877F49 +:101D20008093E8008091E80082FD05C080917703F0 +:101D30008111F8CF5FC08091F10080937E02809185 +:101D4000E8008B7753C080917803813A09F052C044 +:101D500080917C0390917D03892B09F04BC0809189 +:101D6000E800877F8093E8008091E80080FFFCCF47 +:101D70008091230136C0809178038132D9F580911A +:101D80007C0390917D03892BA9F58091E800877FE2 +:101D90008093E8000E94831180917A03809323014D +:101DA0000C94BE1A80917803813221F58091E8006D +:101DB000877F8093E8000E94831180917B0380934A +:101DC0007F02089580917803813AA1F48091E80020 +:101DD000877F8093E8008091E80080FFFCCF8091AE +:101DE0007F028093F1008091E8008E778093E80075 +:101DF0000C948311089580917E0280937501109256 +:101E00007E020E94EF150C94BE1A0C94FB0E0E94E9 +:101E10009B2180917503882329F00E94C4218111A0 +:101E20000C94341008950E94D821809175018093FC +:101E30007E0208950C94130F08950C941C0F0C94BB +:101E40001C0FCF9384B7877F84BF0FB6F894A895F3 +:101E500080916000886180936000109260000FBEE6 +:101E600090E080E80FB6F894809361009093610051 +:101E70000FBE87EB9DE00E946E2189E191E00E94F8 +:101E8000811483ED92E00E94D2050E941F0F0E94F0 +:101E900040150E94D5110E9428128091E2008460B2 +:101EA0008093E20078940E944215809177038430F9 +:101EB00019F00E941C0FF9CF81EC92E00E94D2052C +:101EC0000E941D0F8FEA92E00E94D205C4E080912B +:101ED0007703853019F40E94070FF9CF0E94481547 +:101EE0002091E4003091E50080917201909173019E +:101EF0002817390761F38091E4009091E5009093F1 +:101F00007301809372010E94A40D882301F38091D4 +:101F100077038430E1F68091E9008F702091EC0026 +:101F2000922F917020FD90E8892BC093E900909149 +:101F3000EB0090FF3FC09091EE0097FF3BC0909167 +:101F4000170120911601291709F12091E80025FFBA +:101F50001DC0E0911401F0911501E90FF11D3081D0 +:101F60009F5F209118019223909317013093F10005 +:101F70009091E80095FDE3CF9091E80090FFDFCFCE +:101F80009091E8009E779093E800D9CF9091F2006D +:101F9000992381F09091E80090FF0CC09091E800A7 +:101FA00095FF03C01092F100F9CF9091E8009E7761 +:101FB0009093E8008F708093E90089CF292F332711 +:101FC00023303105C9F060F42130310581F0223031 +:101FD000310509F041C084E790E02DE233E040C0D4 +:101FE00021323105E1F02232310531F135C082E193 +:101FF00090E021EA33E034C099278130910549F01F +:1020000028F0029749F5E9EEF2E005C0E9E2F3E0D5 +:1020100002C0E9E1F3E0849190E09F0121C06430C7 +:10202000D8F4E62FF0E0EE0FFF1FE15CFE4F2081B9 +:10203000318189E090E014C0643070F470E0FB01FD +:10204000EE0FFF1FE95CFE4F20813181FB01ED5C4B +:10205000FE4F808190E004C080E090E020E030E01E +:10206000FA0131832083089584E089BD86E089BD2B +:1020700009B400FEFDCF8091D8008F7D8093D800F9 +:102080008091E00082608093E0008091E00081FD1B +:10209000FCCF0895CF92DF92EF92FF920F931F93A0 +:1020A000CF93DF93EC018B017A010E94A211811181 +:1020B00033C0E114F10439F0F70180819181081BEC +:1020C000190BC80FD91FC12CD12C0115110519F1FD +:1020D0008091E80085FD16C08091E8008E7780939E +:1020E000E800E114F10449F0F70180819181C80E04 +:1020F000D91ED182C08285E00FC00E94A211882320 +:1021000021F30AC089918093F10001501109FFEF7A +:10211000CF1ADF0ADACF80E0DF91CF911F910F91C4 +:10212000FF90EF90DF90CF90089520917E03309143 +:102130007F032617370748F06115710539F42091A0 +:10214000E8002E772093E80001C0B901FC0120E0EF +:102150006115710561F1809177038823D9F185308C +:10216000D9F18091E80083FD39C08091E80082FDBB +:102170002BC08091E80080FFEBCF8091F20090E0CF +:102180006115710551F08830910538F42191209343 +:10219000F100615071090196F3CF21E0089709F031 +:1021A00020E08091E8008E778093E800D1CF211164 +:1021B000D2CF0AC080917703882361F0853061F027 +:1021C0008091E80083FD0AC08091E80082FFF2CF91 +:1021D00080E0089582E0089583E0089581E0089505 +:1021E00020917E0330917F032617370748F0611551 +:1021F000710539F42091E8002E772093E80001C0A2 +:10220000B901FC0120E06115710579F18091770336 +:10221000882309F43DC0853009F43CC08091E80072 +:1022200083FD3AC08091E80082FD2CC08091E800D7 +:1022300080FFE9CF8091F20090E06115710559F0BF +:102240008830910540F424912093F100319661503B +:1022500071090196F2CF21E0089709F020E0809102 +:10226000E8008E778093E800CECF2111CFCF0AC04F +:1022700080917703882361F0853061F08091E800D8 +:1022800083FD0AC08091E80082FFF2CF80E00895CC +:1022900082E0089583E0089581E00895982F9530B5 +:1022A00068F59093E900981739F07091EC0020914F +:1022B000ED005091F00003C0242F762F50E021FD57 +:1022C00002C09F5FECCF3091EB003E7F3093EB007C +:1022D0003091ED003D7F3093ED003091EB003160A7 +:1022E0003093EB007093EC002093ED005093F000DE +:1022F0002091EE0027FDE5CF80E008958F70809358 +:10230000E90081E008958091780387FF11C08091F2 +:10231000E80082FD05C0809177038111F8CF11C0DC +:102320008091E8008B770BC080917703882349F078 +:102330008091E80080FFF8CF8091E8008E7780934D +:10234000E80008952091E4003091E50095E6409181 +:10235000EC00842F817040FF23C08091E80080FD55 +:102360001DC080917703882399F0853099F0809182 +:10237000EB0085FD11C04091E4005091E500241769 +:10238000350729F3915011F09A01E1CF84E00895C7 +:1023900082E0089583E0089581E0089580E0089543 +:1023A0004091E80042FFDDCF08950E9432120E9462 +:1023B0003512E0EEF0E0808181608083E8EDF0E0AE +:1023C00080818F77808319BCE3E6F0E080818160B3 +:1023D00080831092760308950E9432120E94351273 +:1023E0008091D8008F778093D8008091D800806842 +:1023F0008093D8008091D8008F7D8093D80084E0AE +:1024000089BD86E089BD09B400FEFDCF1092770337 +:1024100010927303109275031092740342E060E00F +:1024200080E00E944E118091E1008E7F8093E10058 +:102430008091E20081608093E2008091E2008860F8 +:102440008093E2008091E0008E7F8093E000089509 +:10245000E3E6F0E080818E7F808381E080937603E5 +:102460000C94EC111092E20008951092E10008958E +:102470001F920F920FB60F9211242F933F934F93F9 +:102480005F936F937F938F939F93AF93BF93EF93DC +:10249000FF938091E10082FF0BC08091E20082FFF8 +:1024A00007C08091E1008B7F8093E1000E94360E8F +:1024B0008091E10080FF19C08091E20080FF15C08B +:1024C0008091E2008E7F8093E2008091E200806143 +:1024D0008093E2008091D80080628093D80019BC7C +:1024E00085E0809377030E94050F8091E10084FFCF +:1024F00030C08091E20084FF2CC084E089BD86E07A +:1025000089BD09B400FEFDCF8091D8008F7D8093F6 +:10251000D8008091E1008F7E8093E1008091E200FD +:102520008F7E8093E2008091E20081608093E200E0 +:1025300080917303882311F084E007C08091E30049 +:1025400087FD02C081E001C083E0809377030E9491 +:102550001A0F8091E10083FF29C08091E20083FF80 +:1025600025C08091E100877F8093E10082E0809325 +:102570007703109273038091E1008E7F8093E100D6 +:102580008091E2008E7F8093E2008091E200806182 +:102590008093E20042E060E080E00E944E11809172 +:1025A000F00088608093F0000E94350EFF91EF915B +:1025B000BF91AF919F918F917F916F915F914F915B +:1025C0003F912F910F900FBE0F901F9018951F9263 +:1025D0000F920FB60F9211242F933F934F935F9357 +:1025E0006F937F938F939F93AF93BF93CF93DF931B +:1025F000EF93FF93C091E900CF708091EC00D82F4A +:10260000D17080FDD0E81092E9008091F000877FC2 +:102610008093F00078940E942B131092E90080912F +:10262000F00088608093F000CD2BCF70C093E9005C +:10263000FF91EF91DF91CF91BF91AF919F918F91DA +:102640007F916F915F914F913F912F910F900FBEAE +:102650000F901F9018951F93CF93DF93CDB7DEB7E0 +:10266000AA970FB6F894DEBF0FBECDBFE8E7F3E040 +:102670008091F100819323E0E038F207C9F70E94CE +:102680004B0E8091E80083FF24C1809178039091E4 +:102690007903492F50E04A30510508F01AC1FA0178 +:1026A000E65CFF4F0C94B72A803881F0823809F03D +:1026B00010C180917C038F708093E9008091EB00C2 +:1026C00085FB882780F91092E90006C08091740389 +:1026D00090917503911182609091E800977F90939B +:1026E000E8008093F1001092F100C8C0282F2D7FE0 +:1026F00009F0EFC0882319F0823061F0EAC08091C0 +:102700007A03813009F0E5C0933009F080E08093CE +:1027100075032BC080917A03811127C080917C03BF +:102720008F7009F4D6C08093E9002091EB0020FF60 +:102730001CC0933021F48091EB00806214C0909112 +:10274000EB0090619093EB0021E030E0A90102C022 +:10275000440F551F8A95E2F74093EA001092EA0071 +:102760008091EB0088608093EB001092E9008091EB +:10277000E800877F86C08111ACC010917A031F7773 +:102780008091E3008078812B8093E3008091E800C2 +:10279000877F8093E8000E9483118091E80080FF8A +:1027A000FCCF8091E30080688093E300111102C0A8 +:1027B00082E001C083E0809377038BC08058823031 +:1027C00008F087C080917A0390917B038C3D53E0A1 +:1027D000950779F583E08A838AE289834FB7F89475 +:1027E000DE01139620E03EE051E2E32FF0E050934B +:1027F0005700E49120FF03C0E295EF703F5FEF7058 +:102800008E2F90E0EA3010F0C79601C0C0968D93ED +:102810009D932F5F243149F74FBF8091E800877F58 +:102820008093E8006AE270E0CE0101960E94951064 +:1028300014C0AE014F5F5F4F60917C030E94DE0FBA +:10284000BC01892B09F445C09091E800977F9093D3 +:10285000E80089819A810E94F0108091E8008B77CE +:102860008093E80036C08038A1F58091E800877F2A +:102870008093E800809173038093F1008091E800D9 +:102880008E778093E8000E94831123C0811121C0BC +:1028900080917A0390917B0399270297D4F48091D9 +:1028A000E800877F8093E80080917A038093730328 +:1028B0000E94831180917303811106C08091E3000F +:1028C00087FD02C081E001C084E0809377030E940D +:1028D000370E8091E80083FF0AC08091E800877F6F +:1028E0008093E8008091EB0080628093EB00AA96D1 +:1028F0000FB6F894DEBF0FBECDBFDF91CF911F9111 +:10290000089590938502809384020895E091840253 +:10291000F0918502309721F00190F081E02D09942B +:1029200080E00895EF92FF920F931F93CF93DF9370 +:10293000E0918402F09185023097B1F18C01028020 +:10294000F381E02D09958091620382FF2DC080FF05 +:1029500004C08EEB94E00E94D205E80118E088EBF9 +:10296000E82E84E0F82E8091620380FF0BC08881FE +:102970001F928F93FF92EF920E946B060F900F9021 +:102980000F900F90115021961111EDCF809162039D +:1029900080FF0AC086EB94E0DF91CF911F910F91E9 +:1029A000FF90EF900C94D205DF91CF911F910F9182 +:1029B000FF90EF900895E0918402F09185023097A6 +:1029C00021F00480F581E02D09940895CF93DF93E1 +:1029D00020918202309183022817390709F19093E0 +:1029E000830280938202E0918402F0918502309705 +:1029F000B9F0EC010680F781E02D09958091620322 +:102A000082FF0EC080FF0CC0DF93CF9388EA94E072 +:102A10009F938F930E946B060F900F900F900F90D3 +:102A2000DF91CF910895CF93DF9320918002309171 +:102A300081022817390709F190938102809380025F +:102A4000E0918402F09185023097B9F0EC010084A6 +:102A5000F185E02D09958091620382FF0EC080FF11 +:102A60000CC0DF93CF9388E994E09F938F930E94EB +:102A70006B060F900F900F900F90DF91CF910895FC +:102A80000C94F0150E9405220E94E6090C94D30BC9 +:102A9000BF92CF92DF92EF92FF920F931F93CF934B +:102AA000DF9300D000D01F92CDB7DEB70E94860A18 +:102AB00007E812E0F12C8F2D0E94DB09B82EF801F7 +:102AC000C080C82639F4F3940F5F1F4FF0E1FF1266 +:102AD000F2CF30C08091620381FD0E940516D12C97 +:102AE000EE24E3948C2D8E21F9F0D982FA8291E0C4 +:102AF0008B2D8E2109F490E09B830E940E22816031 +:102B0000782F9D838C8349815A816B818D810E94AE +:102B10003B1649815A816B817C818D810E9486217F +:102B2000F80180818E258083D394EE0CF8E0DF12CB +:102B3000D9CFC9CF8FEF89838A831B820E940E224F +:102B40008160782F9D838C8349815A816B818D812F +:102B50000E943B160E9485210E94DB240E9453089C +:102B60000E94861490918602891741F10E94861472 +:102B7000809386029091620392FF0EC090FF0CC07A +:102B80001F928F9389EC94E09F938F930E946B0622 +:102B90000F900F900F900F90809186020F900F90E2 +:102BA0000F900F900F90DF91CF911F910F91FF9099 +:102BB000EF90DF90CF90BF900C9497210F900F90E3 +:102BC0000F900F900F90DF91CF911F910F91FF9079 +:102BD000EF90DF90CF90BF9008950C94E109089595 +:102BE0000895CF93C62F0E94DB0921E030E002C098 +:102BF000220F331FCA95E2F790E02823392381E0A2 +:102C0000232B09F480E0CF910895EF92FF920F9368 +:102C10001F93CF93DF9382EE94E00E94D205C0E031 +:102C2000D0E082E3E82E81E0F82E04ED14E08C2F52 +:102C30000E94DB090E947321FF92EF921F928F93F3 +:102C4000DF93CF931F930F930E946B0621968DB74E +:102C50009EB708960FB6F8949EBF0FBE8DBFC031C9 +:102C6000D10529F7DF91CF911F910F91FF90EF9040 +:102C7000089508950895CF93DF93CDB7DEB72B97CE +:102C80000FB6F894DEBF0FBECDBF942F4F83252F14 +:102C9000588769877A878B874A855B85452B31F012 +:102CA0002F3F31F481E09F3F19F403C081E001C060 +:102CB00080E080FD07C04F81588569857A858B85C6 +:102CC0000E948621DE01119686E0FD0111928A950F +:102CD000E9F785E0FE01379601900D928A95E1F7BC +:102CE00049815A816B817C818D819E810E94DC1D8E +:102CF0002B960FB6F894DEBF0FBECDBFDF91CF91FC +:102D00000895CF93882309F4A9C0C82F8238A1F46D +:102D10000E94861481FDA2C089E30E94D0200E94F7 +:102D200048212FEF81EE94E0215080409040E1F760 +:102D300000C0000089E315C08338C1F40E948614E6 +:102D400080FD8CC083E50E94D0200E9448212FEF97 +:102D500081EE94E0215080409040E1F700C00000F7 +:102D600083E50E94ED20CF910C9448218438A1F492 +:102D70000E94861482FD72C087E40E94D0200E94C7 +:102D800048212FEF81EE94E0215080409040E1F700 +:102D900000C0000087E4E5CF8CEF8C0F813A20F073 +:102DA00080E58C0F8E3248F48C2F0E94062881110A +:102DB00055C08C2F0E94D020D6CF80E28C0F883057 +:102DC00048F4C77081E001C0880FCA95EAF70E94F5 +:102DD0000E21C9CF8BE58C0F833078F4C53A29F0EA +:102DE000C63A31F083E890E005C081E890E002C087 +:102DF00082E890E0CF910C94E61488E58C0F853141 +:102E000068F5C83A89F0C93A91F0CA3A99F0CB3AD4 +:102E1000A1F0CC3AA9F0CD3AB1F0CE3AB9F0CF3A20 +:102E2000C1F080E090E017C082EE90E014C089EE1F +:102E300090E011C08AEE90E00EC085EB90E00BC0F0 +:102E400086EB90E008C083EB90E005C084EB90E057 +:102E500002C087EB90E0CF910C941315CF910895A9 +:102E6000882309F46AC08238A1F40E94861481FF85 +:102E700064C089E30E94D0200E9448212FEF81EE98 +:102E800094E0215080409040E1F700C0000089E3C9 +:102E900015C08338B9F40E94861480FF4EC083E5C4 +:102EA0000E94D0200E9448212FEF81EE94E0215013 +:102EB00080409040E1F700C0000083E50E94ED20D3 +:102EC0000C9448218438A1F40E94861482FF35C0F6 +:102ED00087E40E94D0200E9448212FEF81EE94E0E9 +:102EE000215080409040E1F700C0000087E4E6CF29 +:102EF0009CEF980F913A10F390E5980F9E32F0F204 +:102F000090E2980F983050F4877091E001C0990FCB +:102F10008A95EAF7892F0E941421D2CF9BE5980F5A +:102F2000933020F480E090E00C94E614885A8531C8 +:102F300020F480E090E00C9413150895882321F08C +:102F40000E940E210C9448210895882321F00E94AC +:102F500014210C9448210895CF92DF92EF92FF92B2 +:102F60000F931F93CF93DF9300D000D01F92CDB764 +:102F7000DEB76C010E9499218111E0C285E0F60163 +:102F8000DE01119601900D928A95E1F7F6014081DC +:102F90005181238134812115310531F05F3F31F4B6 +:102FA00081E04F3F19F403C081E001C080E080FD63 +:102FB000C5C2F601F280E580E2948FE0E822722F2C +:102FC0003D832C836F2D8D810E9445208C010E94B2 +:102FD00044200E94341FE12FE295EF708E2F90E085 +:102FE000FC01EC5BFF4F0C94B72A812F807F1F7090 +:102FF000882311F01295107FFF2049F0112309F466 +:1030000052C2812F0E9421210E9448214CC2802F50 +:103010000E943017112309F491C2812F0E942721A9 +:103020000F900F900F900F900F90DF91CF911F9105 +:103030000F91FF90EF90DF90CF900C944821812F5B +:10304000807F1F70803211F01295107F002319F0DD +:10305000013009F12BC0FF20A9F0EE2059F1F1E079 +:10306000812FEF1228C00F900F900F900F900F90AC +:10307000DF91CF911F910F91FF90EF90DF90CF9054 +:103080000C943121EE2021F081E0E81609F456C2BB +:103090000E9434212DC0FF20E9F0E5E0EE1508F490 +:1030A0004DC20E940B21812329F022C0FF20F1F0A4 +:1030B000E11015C0812F0F900F900F900F900F907F +:1030C000DF91CF911F910F91FF90EF90DF90CF9004 +:1030D0000C949E17F4E0FE1508F430C209C0F60106 +:1030E000858180FFE0C18F708583E4CFE110EEC160 +:1030F000812F61C1812F86958695837019F081306B +:10310000B9F01CC2FF2019F0C801937002C080E022 +:1031100090E00F900F900F900F900F90DF91CF9154 +:103120001F910F91FF90EF90DF90CF900C94E614D9 +:10313000FF2019F0C801937002C080E090E00F906A +:103140000F900F900F900F90DF91CF911F910F91E3 +:10315000FF90EF90DF90CF900C941315802FFF20FD +:1031600019F00E94612302C00E94C9230F900F90A2 +:103170000F900F900F90DF91CF911F910F91FF90C3 +:10318000EF90DF90CF900C944E24812F837009F044 +:1031900070C0F110D3C1202F229526952770220FE1 +:1031A000220F602F6F70862F90E0A0E0B0E06C01DE +:1031B0007D01022E04C0CC0CDD1CEE1CFF1C0A9409 +:1031C000D2F704FF12C08FE090E0A0E0B0E004C0AE +:1031D000880F991FAA1FBB1F2A95D2F7BC01CD01EA +:1031E000609570958095909503C060E070E0CB018C +:1031F0001695169513701230B1F040F56C297D29A3 +:103200008E299F29113031F10F900F900F900F9060 +:103210000F90DF91CF911F910F91FF90EF90DF9072 +:10322000CF900C94591F6C297D298E299F290F90CE +:103230000F900F900F900F90DF91CF911F910F91F2 +:10324000FF90EF90DF90CF900C94731F0E94591F56 +:10325000C701B6010F900F900F900F900F90DF9164 +:10326000CF911F910F91FF90EF90DF90CF900C9432 +:103270003F1FFF2019F0812F817001C086958823A0 +:1032800009F45CC1202F229526952770220F220F6A +:10329000602F6F70862F90E0A0E0B0E06C017D01A0 +:1032A000022E04C0CC0CDD1CEE1CFF1C0A94D2F7CD +:1032B00004FF12C08FE090E0A0E0B0E004C0880FEF +:1032C000991FAA1FBB1F2A95D2F7BC01CD0160959B +:1032D00070958095909503C060E070E0CB011695E5 +:1032E000169513701230B1F040F56C297D298E29A6 +:1032F0009F29113031F10F900F900F900F900F9088 +:10330000DF91CF911F910F91FF90EF90DF90CF90C1 +:103310000C9420206C297D298E299F290F900F90D5 +:103320000F900F900F90DF91CF911F910F91FF9011 +:10333000EF90DF90CF900C9432200E942020C701A4 +:10334000B6010F900F900F900F900F90DF91CF91DB +:103350001F910F91FF90EF90DF90CF900C940E2073 +:10336000003FC1F128F480E4800F803250F096C015 +:10337000023F09F45EC008F449C0033F09F46CC081 +:103380008DC0F02FF071EF2E812F8F71FF2051F043 +:103390000E94A71F802FEE2019F08295807F8BCE90 +:1033A0008F7089CE0E94C81F802FEE2019F0829561 +:1033B000807F01C08F700F900F900F900F900F9033 +:1033C000DF91CF911F910F91FF90EF90DF90CF9001 +:1033D0000C94A517FF20A9F084E08E1508F4AEC068 +:1033E000812F8F710F900F900F900F900F90DF91A2 +:1033F000CF911F910F91FF90EF90DF90CF900C94A1 +:10340000ED1FE5E0EE1508F499C0EACFFF2099F032 +:10341000812F8F710F900F900F900F900F90DF9171 +:10342000CF911F910F91FF90EF90DF90CF900C9470 +:10343000A71FFF2069F3812F8F710F900F900F90BE +:103440000F900F90DF91CF911F910F91FF90EF9010 +:10345000DF90CF900C94C81FFF2089F0812F8F71CF +:103460000F900F900F900F900F90DF91CF911F91C1 +:103470000F91FF90EF90DF90CF900C94921F0F90E0 +:103480000F900F900F900F90DF91CF911F910F91A0 +:10349000FF90EF90DF90CF900C948D1FFF2099F05C +:1034A000EE2009F4B5CF802F0F900F900F900F9062 +:1034B0000F90DF91CF911F910F91FF90EF90DF90D0 +:1034C000CF900C948116EE2009F4B5CF802F0F9089 +:1034D0000F900F900F900F90DF91CF911F910F9150 +:1034E000FF90EF90DF90CF900C943017412F4F70EA +:1034F000602FC6010E94D7220F900F900F900F905F +:103500000F90DF91CF911F910F91FF90EF90DF907F +:10351000CF900C948F1E412F4F70602FC6010F90DB +:103520000F900F900F900F90DF91CF911F910F91FF +:10353000FF90EF90DF90CF900C94DA220F900F90D5 +:103540000F900F900F90DF91CF911F910F91FF90EF +:10355000EF90DF90CF9008950E942E210E94FD20D1 +:103560000E9448210E9481250E944E2480E090E024 +:103570000E94E61480E090E00C9413150E941E2136 +:103580000C94AC1A1F93CF93DF9300D000D01F92FE +:10359000CDB7DEB7942F4983252F5A836B837C8365 +:1035A0008D834C815D81452B31F02F3F31F481E0DB +:1035B0009F3F19F403C081E001C080E0182F117013 +:1035C00080FD31C049815A816B817C818D810E944F +:1035D0004520292F22952F702C3030F42A30A0F46A +:1035E0002250223030F022C02C30C9F02F30B9F0F8 +:1035F0001DC0853A28F48430C0F4823028F415C008 +:1036000090E2980F983088F0883E30F4803E68F45D +:103610008450813A58F409C0803F41F406C093FBBE +:10362000112710F903C010E001C011E0812F0F90A5 +:103630000F900F900F900F90DF91CF911F910895F1 +:10364000CF93DF9300D000D01F92CDB7DEB70F909D +:103650000F900F900F900F90DF91CF910895CF931F +:10366000DF9300D000D000D0CDB7DEB726960FB6DE +:10367000F894DEBF0FBECDBFDF91CF910895CF93F9 +:10368000DF93C091970280919802C817A1F0D0E013 +:10369000CE0166E070E00E94922AFC01E756FD4FE1 +:1036A0004081518162817381848195810E942F1BA9 +:1036B0002196C770E8CFDF91CF9108954091C9025C +:1036C0005091CA026091CB027091CC028091CD02E0 +:1036D0009091CE020C942F1B1F93CF93DF93809178 +:1036E000CE0282958F7009F066C08091CB0288234C +:1036F00009F461C02091970210919802C091C9020B +:10370000D091CA02E091CC02F091CD0281E0CF3F8E +:1037100009F080E0482F211709F44DC0309721F0BF +:10372000DF3F21F080E003C081E001C0842F30E062 +:1037300080FD3DC0C90166E070E00E94922ADC0174 +:10374000A756BD4F11968C9111978D1330C08C9157 +:103750008C132DC012968C911297811128C013964C +:103760008D919C9114978E179F0708F401978E1BDB +:103770009F0B883C9105D8F48091CE028F708061B8 +:103780008093CE02C90166E070E00E94922AFC019B +:10379000E256FD4F90819F709061908389EC92E09A +:1037A0000E94AC17DF91CF911F910C943F1B2F5FAC +:1037B0003F4F2770B0CFDF91CF911F910895AF9207 +:1037C000BF92CF92DF92EF92FF920F931F93CF930E +:1037D000DF93CDB7DEB761970FB6F894DEBF0FBEAB +:1037E000CDBF7C0185E0F701DE011D9601900D92B1 +:1037F0008A95E1F7D7014C9111962C911197129669 +:10380000DC90129713960D911C9114975091C90258 +:103810006091CA028091CC029091CD02009731F064 +:103820006F3F31F431E05F3F19F403C031E001C074 +:1038300030E0B32FB170BB2E30FD76C1A090CB022B +:10384000AA2009F4D2C03091CE020817190728F037 +:10385000F801E81BF90BCF0104C080959095800F0B +:10386000911FCC24C394883C910588F0C12C307FF3 +:1038700009F0A6C0702F198B088B522F6D2D8989E6 +:103880000E94201B89EC92E00E94AC17C3C0832FDA +:10389000807F09F059C0261315C0451313C0CD2CE5 +:1038A000D11010C03F7030613093CE020E945E1B79 +:1038B00089EC92E00E94AC178091CE02D701159658 +:1038C0008C9368C10115110531F02F3F31F481E06F +:1038D0004F3F19F403C081E001C080E080FD03C0C8 +:1038E00081E08D2502C080E090E0B82FB170CB2E32 +:1038F00080FF1FC0E091970230919802E31709F40E +:1039000025C1F0E0CF0166E070E00E94922ADC0160 +:10391000A756BD4F11968C911197281307C08C9113 +:10392000481304C012968C91D81203C03196E770E8 +:10393000E5CFCD2CDD2009F42DC18091CE02816030 +:103940008093CE02C12C26C1261308C0451306C0A1 +:10395000D11004C08091CE02D701B9C04D872E8707 +:10396000DF86702F198B088B522F6D2D89890E944D +:10397000C21A8823A1F1DD2091F12091CE02822F7D +:1039800082958F7090E0029774F08091C9029091B7 +:10399000CA0298878F8319861B870A872C87CE01D6 +:1039A00007960E94AC1786E0F701A9ECB2E00190FF +:1039B0000D928A95E1F70E946C1B0E945E1B12C05B +:1039C000261791F14D872E87DF86702F198B088B74 +:1039D000522F6D2D89890E94C21A811139C0C701E9 +:1039E0000E94AC17CC24C394D5C00817190708F45B +:1039F00047C0F801E81BF90BCF01883C910508F49A +:103A000044C0C12C702F198B088B522F6D2D8989C2 +:103A10000E94201BE9ECF2E086E0DF011D928A950E +:103A2000E9F70E945E1BB6C04513CCCFD110CACFB8 +:103A30008091CE02F7018583C7010E94AC1786E012 +:103A4000E9ECF2E0DF011D928A95E9F7CA2CA2C0E9 +:103A5000DD2029F22091CE02822F82958F7090E096 +:103A600002970CF4A0CF8091C9029091CA029A8368 +:103A700089831B821D830C832E83CE01019691CFF7 +:103A800080959095800F911FB8CFCD2CDD2009F443 +:103A9000A6CF261333C0451331C02091CE0220FD9E +:103AA00024C0822F82958F70482F50E04115510518 +:103AB000E1F0D70115962C9315974F30510549F039 +:103AC0008F5F982F9295907F822F8F70892B1596FC +:103AD0008C93C7010E94AC1786E0F701A9ECB2E015 +:103AE00001900D928A95E1F79CCF86E0F701A9EC51 +:103AF000B2E001900D928A95E1F74CC04D872E8778 +:103B0000DF86702F198B088B522F6D2D89890E94AB +:103B1000C21A811148CF8091CE0281608093CE027B +:103B2000C7010E94AC1736C0DD2009F458CF4D877D +:103B30002E87DF86702F198B088B522F6D2D898968 +:103B40000E94C21A882309F44ACF2DCF702F198BF7 +:103B5000088B522F6D2D89890E944520292F22958F +:103B60002F70223028F49F7039F0811105C00BC0EE +:103B7000243028F49F7049F4805E883020F0C7011B +:103B80000E94AC17BC2CCB2C05C0F7019581907F0F +:103B900099F7F9CF8C2D61960FB6F894DEBF0FBE62 +:103BA000CDBFDF91CF911F910F91FF90EF90DF90EC +:103BB000CF90BF90AF900895CF93DF93CDB7DEB78E +:103BC0002C970FB6F894DEBF0FBECDBF4F8358873A +:103BD00069877A878B879C87CE0107960E94DF1BB7 +:103BE0008823D1F09F8188852A853B85232B31F05E +:103BF0008F3F31F481E09F3F19F403C081E001C0A1 +:103C000080E080FD6FC04F81588569857A858B85FE +:103C10009C850E942F1B66C086E0FE013796DE0160 +:103C2000119601900D928A95E1F7FF81E8856A85EA +:103C30007B856115710531F0EF3F31F481E0FF3F85 +:103C400019F403C081E001C080E080FD4BC0809189 +:103C5000980290E09C012F5F3F4F277033274091DF +:103C6000970250E02417350709F443C0F983EA832B +:103C70007D836C8366E070E00E94922ADC01A75687 +:103C8000BD4F96E0FE01319601900D929A95E1F7B5 +:103C9000209398020E943F1B25C090E066E070E0F0 +:103CA0000E94922A87569D4F0E94DF1B882371F144 +:103CB0008091970290E066E070E00E94922AFC01F9 +:103CC000E756FD4F408151816281738184819581E6 +:103CD0000E942F1B8091970290E001968770992790 +:103CE0008093970280919702909198028913D5CF83 +:103CF0000DC00E94BE1A1092980210929702E9EC31 +:103D0000F2E086E0DF011D928A95E9F72C960FB666 +:103D1000F894DEBF0FBECDBFDF91CF910895DF9243 +:103D2000EF92FF920F931F93CF93DF93FC01892BA8 +:103D300009F488C0E12CF12CDD24D394EF01219605 +:103D40008491853709F460C058F4843708F04EC078 +:103D5000843008F068C08130D1F0823071F172C0D7 +:103D6000883709F45BC050F4863709F453C08737AD +:103D700009F068C08E2D0E941B2152C09CE7980F4D +:103D8000903708F05FC08F770E9430174EC08F01C8 +:103D90000E5F1F4FFE01849190E2980F983050F40F +:103DA0008770FD2D01C0FF0F8A95EAF78F2F0E94C3 +:103DB000212115C00E94811614C08F010E5F1F4F74 +:103DC000FE01849190E2980F983068F48770FD2D81 +:103DD00001C0FF0F8A95EAF78F2F0E9427210E94CA +:103DE0004821E80122C00E943017FBCFCF01029684 +:103DF000FE01C491CC2361F0EFE9FFE03197F1F7C8 +:103E000000C00000C150F6CFCF010296FE01F49031 +:103E1000EC010BC00E940B21E82E07C00E941E215E +:103E20000E94482102C00E9481168F2D882341F0F4 +:103E3000EFE9FFE03197F1F700C000008150F6CFC5 +:103E4000FE017CCFDF91CF911F910F91FF90EF90FA +:103E5000DF90089560934F03709350038093510354 +:103E6000909352030C94962108956093530370939A +:103E7000540380935503909356030C9495210F930C +:103E80001F930091530310915403209155033091D7 +:103E90005603602B712B822B932B609353037093EB +:103EA000540380935503909356031F910F910C94E4 +:103EB00095210F931F930091530310915403209168 +:103EC000550330915603602371238223932360931B +:103ED00053037093540380935503909356031F919B +:103EE0000F910C9495210F931F9300915303109100 +:103EF0005403209155033091560360277127822780 +:103F000093276093530370935403809355039093C6 +:103F100056031F910F910C94952160E070E0CB0146 +:103F20000C942A1F0F931F9341E050E060E070E073 +:103F30008A019B0104C0000F111F221F331F8A95A5 +:103F4000D2F7C901B8011F910F910C942A1F0F934A +:103F50001F9341E050E060E070E004C0440F551F43 +:103F6000661F771F8A95D2F780914F039091500377 +:103F7000A0915103B09152038A019B01082B192B88 +:103F80002A2B3B2BC901B8011F910F910C942A1FBA +:103F90000F931F9341E050E060E070E004C0440FD5 +:103FA000551F661F771F8A95D2F7409550956095EB +:103FB000709580914F0390915003A0915103B0915F +:103FC00052038A019B01082319232A233B23C90199 +:103FD000B8011F910F910C942A1F0F931F9341E07A +:103FE00050E060E070E004C0440F551F661F771F6B +:103FF0008A95D2F780914F0390915003A09151037D +:10400000B09152038A019B01082719272A273B27D1 +:10401000C901B8011F910F910C942A1F0F931F9390 +:1040200000914F031091500320915103309152039E +:10403000602B712B822B932B1F910F910C942A1FB5 +:104040000F931F9300914F03109150032091510340 +:104050003091520360237123822393231F910F9188 +:104060000C942A1F0F931F9300914F03109150033C +:1040700020915103309152036027712782279327A3 +:104080001F910F910C942A1F08958F929F92AF92C7 +:10409000BF92DF92EF92FF920F931F93CF93DF9324 +:1040A00000D000D01F92CDB7DEB76B837C838D83A9 +:1040B0008A018C819D81892B31F01F3F31F481E091 +:1040C0004F3F19F403C081E001C080E080FF03C0CE +:1040D00080E090E054C08B81882309F43DC080903B +:1040E0004F0390905003A0905103B09052038091E1 +:1040F000530390915403A0915503B0915603882A1D +:10410000992AAA2ABB2A2FE1E22EF12CD501C4015B +:104110000E2C04C0B695A795979587950A94D2F76B +:1041200080FD06C081E0E81AF10880F7D12C07C0B5 +:10413000DE2CB8018E2D0E94A822019799F3E12F61 +:10414000F0E093E0EE0FFF1F9A95E1F7E153FD4F8A +:10415000E00FF11DD0820CC0E12FF0E083E0EE0F04 +:10416000FF1F8A95E1F7E153FD4FE00FF11DD0806D +:1041700009831A8369817A818D2D0E94A8220F906C +:104180000F900F900F900F90DF91CF911F910F9193 +:10419000FF90EF90DF90BF90AF909F908F90089529 +:1041A0002091240130912501F90132969FEF40E0E2 +:1041B0005191851789F09F3F19F4511101C0942F37 +:1041C0004F5F4630A9F79F3F39F0F901E90FF11D24 +:1041D00097FDFA95828308950895E0912401F09166 +:1041E00025019F012A5F3F4F9281891301C01282EE +:1041F0003196E217F307C1F7089581E090E0E0916E +:104200002401F0912501E80FF91F108201968830F2 +:104210009105A9F708958091610308959091610334 +:10422000892B809361030895809590916103892380 +:104230008093610308958093610308951092610350 +:10424000089590916003892B809360030895809571 +:104250009091600389238093600308951092600316 +:1042600008958093570308951092570308958091FD +:10427000240190912501FC0131969C01285F3F4F5C +:1042800080E0919191118F5FE217F307D1F70895C4 +:10429000E0912401F0912501809161038083E091F8 +:1042A0002401F0912501908180916003892B808306 +:1042B00080915703882361F0E0912401F09125015A +:1042C0009081892B80830E9437218111109257039E +:1042D00080912401909125010C94921490935301A4 +:1042E0008093520108958295982F9373292F220F5E +:1042F000220F982F9C7C96959695922B892F8575E9 +:10430000880F9A7A9695892B08950895CF93DF9315 +:1043100000D000D01F92CDB7DEB70F900F900F9056 +:104320000F900F90DF91CF910895089508950C9408 +:10433000ED1580E0089580917703843021F110928B +:10434000630320E488E190E00FB6F894A895809389 +:1043500060000FBE2093600083B7817F846083BFBD +:1043600083B7816083BF7894889583B78E7F83BF3E +:104370000FB6F894A89580916000886180936000E2 +:10438000109260000FBE0895CF930E9439160E94CC +:10439000860A0E943A16C0E08C2F0E94DB09811128 +:1043A00004C0CF5FC031C1F701C081E0CF91089553 +:1043B0000E94EF150C94BE1A1F920F920FB60F9227 +:1043C00011248F939F93AF93BF93809163038111C7 +:1043D00013C08091640390916503A0916603B0912E +:1043E00067034196A11DB11D8093640390936503FB +:1043F000A0936603B0936703BF91AF919F918F9194 +:104400000F900FBE0F901F90189582E084BD93E02F +:1044100095BD9AEF97BD80936E0008952FB7F894DD +:104420008091640390916503A0916603B091670346 +:104430002FBF08952FB7F8946091640370916503BE +:1044400080916603909167032FBF0895CF92DF920A +:10445000EF92FF920F931F932FB7F894409164034C +:104460005091650360916603709167032FBF6A01E5 +:104470007B01EE24FF248C0120E030E0C016D10641 +:10448000E206F30610F4415051099A01281B390B3A +:10449000C9011F910F91FF90EF90DF90CF90089589 +:1044A0001F920F920FB60F9211248F939F93AF9389 +:1044B000BF938091640390916503A0916603B091CE +:1044C00067030196A11DB11D80936403909365035A +:1044D000A0936603B0936703BF91AF919F918F91B3 +:1044E0000F900FBE0F901F9018950E94D511F89451 +:1044F0002FEF87EA91E6215080409040E1F700C01D +:10450000000087E090EBDC018093800390938103AF +:10451000A0938203B09383039CE088E10FB6F894E4 +:10452000A895809360000FBE90936000FFCFE92FA5 +:10453000F0E093E0EE0FFF1F9A95E1F7E80FF11D11 +:10454000E855FF4F9491892F8F7092959F70089531 +:10455000CF93C82FCB010E949722492F90E0242FA0 +:1045600030E054E0220F331F5A95E1F7282B392B06 +:104570002038310519F480E090E017C0EC2FF0E00E +:1045800023E0EE0FFF1F2A95E1F74770E40FF11DBE +:1045900034E0EE0FFF1F3A95E1F7E80FF91FEE0F39 +:1045A000FF1FE050F84985919491CF91089580E0E4 +:1045B00090E00895089580916A0380FF0CC0809177 +:1045C000290190E065E070E00E94922A9595879518 +:1045D000959587952EC081FF0AC08091290190E0B2 +:1045E00065E070E00E94922A9595879522C082FF2F +:1045F00008C08091290190E065E070E00E94922A55 +:1046000018C020916B032223D9F030912801231781 +:1046100080F78091290190E065E070E00E94922A85 +:10462000622F70E00E94922A632F70E00E94A32AFA +:10463000CB018038910538F4009739F481E005C04A +:1046400085E090E008958FE70895089580916A03CA +:1046500080FF08C06091270170E07595679575959A +:10466000679523C081FF06C06091270170E07595B2 +:1046700067951BC082FF04C06091270170E012C0E3 +:1046800060916B036623A9F0209126016217A0F7C1 +:104690008091270170E090E00E94922A622F70E0E2 +:1046A0000E94A32A6038710540F46115710519F460 +:1046B00006C061E070E0862F08958FE7089581E0DD +:1046C0000895803F21F40E94DB22819504C0813F40 +:1046D00029F40E94DB2280936E030895823F21F427 +:1046E0000E94DB22819504C0833F29F40E94DB22D3 +:1046F00080936D030895893F19F40E94262305C015 +:104700008A3F31F40E942623819580936F03089598 +:104710008B3F21F40E942623819504C08C3F29F40D +:104720000E942623809370030895843F21F4809192 +:104730006C03816017C0853F21F480916C03826017 +:1047400011C0863F21F480916C0384600BC0873FC9 +:1047500021F480916C03886005C0883F31F480911A +:104760006C03806180936C0308958D3F21F48091E8 +:104770006A0381600BC08E3F21F480916A038260DE +:1047800005C08F3F29F480916A03846080936A0397 +:104790000895803F39F480916E0387FF6CC01092BA +:1047A0006E0369C0813F29F480916E031816BCF333 +:1047B00062C090916D03823F29F497FF5CC0109214 +:1047C0006D0359C0833F19F41916CCF354C0893FC7 +:1047D00041F480916F0318160CF04DC010926F03D6 +:1047E0004AC08A3F29F480916F0387FF44C0F6CF07 +:1047F0008B3F39F48091700387FF3DC010927003A6 +:104800003AC08C3F29F4809170031816BCF333C072 +:10481000843F21F480916C038E7F17C0853F21F483 +:1048200080916C038D7F11C0863F21F480916C03D1 +:104830008B7F0BC0873F21F480916C03877F05C07D +:10484000883F31F480916C038F7E80936C0313C09A +:104850008D3F21F480916A038E7F0BC08E3F21F43F +:1048600080916A038D7F05C08F3F29F480916A0390 +:104870008B7F80936A0380916D0381110EC08091BC +:104880006E0381110AC080916F03811106C080916F +:104890007003811102C010926B030895809162032E +:1048A00083FF7EC087E195E00E94D20580916C0372 +:1048B0001F928F9382E195E09F938F930E946B06E6 +:1048C00080E195E00E94D20580916D03282F082E8B +:1048D000000C330B3F938F938DE095E09F938F9364 +:1048E0000E946B068BE095E00E94D20580916E03DA +:1048F000282F082E000C330B3F938F9388E095E010 +:104900009F938F930E946B0686E095E00E94D205EC +:1049100080916F03282F082E000C330B3F938F9349 +:1049200083E095E09F938F930E946B0681E095E072 +:104930000E94D20580917003282F082E000C330BA3 +:104940003F938F938EEF94E09F938F930E946B061B +:104950008BEF94E00E94D20580916B031F928F939E +:1049600088EF94E09F938F930E946B0686EF94E00C +:104970000E94D20580916A031F928F9383EF94E087 +:104980009F938F930E946B0680EF94E00E94D20564 +:104990008DB79EB74C960FB6F8949EBF0FBE8DBFD5 +:1049A0008CE693E00E94DB140E940E229093690330 +:1049B0008093680308951F93CF93DF9380916803DA +:1049C000909169030E942622FC0120916B0322230F +:1049D00021F080912A0190E007C080912B0190E0A6 +:1049E0006AE070E00E94922AE817F90708F485C08F +:1049F00080916D03C0916E03D0916F03109170038D +:104A0000811107C0C11175C0D11173C0111171C0DE +:104A100074C02F3F19F02F5F20936B03181624F4F6 +:104A20000E94DB2280936D0380916D0387FF05C098 +:104A30000E94DB22819580936D031C1624F40E9452 +:104A4000DB2280936E0380916E0387FF05C00E9476 +:104A5000DB22819580936E0360916D03662331F1B3 +:104A6000C0916E03CC2311F1062E000C770B880B3E +:104A7000990B0E94912923E333E343E35FE30E9410 +:104A8000F5290E94592960936D036C2FCC0F770B89 +:104A9000880B990B0E94912923E333E343E35FE3FF +:104AA0000E94F5290E94592960936E031D1624F473 +:104AB0000E94262380936F0380916F0387FF05C0B8 +:104AC0000E942623819580936F03111624F40E947F +:104AD0002623809370038091700387FF05C00E9496 +:104AE0002623819580937003DF91CF911F910C94C1 +:104AF0004E242F3F09F08FCFA0CFDF91CF911F9190 +:104B00000895ECE6F3E085E0DF011D928A95E9F770 +:104B100010926B0310926A0308958AE397E00E9453 +:104B2000D2051F9281E08F931F9285E08F938CEEC8 +:104B300096E09F938F930E946B060F900F900F90BB +:104B40000F900F900F9008958330E9F128F4813091 +:104B500061F0823009F10895853009F462C008F4EB +:104B600049C0863009F474C0089580912B01262F26 +:104B700030E0280F311D2F3F310524F4680F60937A +:104B80002B0103C08FEF80932B0180912B011F928B +:104B90008F9385E296E072C080912A01262F30E043 +:104BA000280F311D2F3F310524F4680F60932A012F +:104BB00003C08FEF80932A0180912A011F928F9367 +:104BC00083E196E05BC080912901262F30E0280F19 +:104BD000311D2F3F310524F4680F6093290103C074 +:104BE0008FEF80932901809129011F928F9380E09C +:104BF00096E044C080912801262F30E0280F311D17 +:104C00002F3F310524F4680F6093280103C08FEF14 +:104C100080932801809128011F928F938BEE95E05D +:104C20002DC080912701262F30E0280F311D2F3F06 +:104C3000310524F4680F6093270103C08FEF809340 +:104C40002701809127011F928F9382ED95E016C076 +:104C500080912601262F30E0280F311D2F3F31058E +:104C600024F4680F6093260103C08FEF8093260120 +:104C7000809126011F928F9387EB95E09F938F93EE +:104C80000E946B060F900F900F900F900895833045 +:104C900081F128F4813059F08230D1F008958530C7 +:104CA00009F449C0B8F1863009F456C008958091DE +:104CB0002B01681720F4861B80932B0102C01092F1 +:104CC0002B0180912B011F928F9388EA95E054C0AD +:104CD00080912A01681720F4861B80932A0102C064 +:104CE00010922A0180912A011F928F9386E995E004 +:104CF00043C080912901681720F4861B8093290105 +:104D000002C010922901809129011F928F9383E89C +:104D100095E032C080912801681720F4861B8093AB +:104D2000280102C010922801809128011F928F93C0 +:104D30008EE695E021C080912701681720F4861B3C +:104D40008093270102C010922701809127011F92B2 +:104D50008F9385E595E010C080912601681720F4B7 +:104D6000861B8093260102C01092260180912601A5 +:104D70001F928F938AE395E09F938F930E946B0617 +:104D80000F900F900F900F900895CF93C82F1F9200 +:104D90008F938FE398E09F938F930E946B0681E03F +:104DA00090E0A0E0B0E0BC01CD0104C0660F771F29 +:104DB000881F991FCA95D2F70E94351F0F900F9038 +:104DC0000F900F90CF910C94BE1ACF93873288F535 +:104DD0008E3108F00BC18E3009F487C0D8F48730CB +:104DE00009F460C08B3009F44FC0863009F002C16D +:104DF00080916203817F8E7F8093620384E498E0D8 +:104E00000E94D20586EF9AE00E94D20581E080934D +:104E1000720346C0863109F4B0C020F4803109F431 +:104E20007AC0E8C0893109F491C08B3109F449C0D6 +:104E3000E1C0883349F150F4893209F4D5C0853393 +:104E400009F4D2C0873209F0D5C0CEC0833409F44A +:104E5000CBC028F48A3308F4CDC08953C8C0883445 +:104E600009F0C8C00E94BE1A85EE9AE00E94D205E1 +:104E70002FEF83ED90E3215080409040E1F700C098 +:104E800000000E9475220CC08BE698E041C08CECBB +:104E90009AE00E94D2058091620381608093620350 +:104EA000C1E0ADC080916203C82FC17080FFEFCF19 +:104EB00088ED9AE00E94D20580916203817F8E7F07 +:104EC0003FC09091620391FBCC27C0F981E0C827D5 +:104ED000892FC0FB81F980936203CC2319F08FEBFB +:104EE0009AE029C081EB9AE013C09091620392FB93 +:104EF000CC27C0F981E0C827892FC0FB82F98093B5 +:104F00006203CC2319F082EA9AE015C082E99AE0A4 +:104F10000E94D205C5CF9091620393FBCC27C0F9C4 +:104F200081E0C827892FC0FB83F980936203CC23DB +:104F300051F086E89AE00E94D20580916203816078 +:104F4000809362035CC089E79AE0E2CF8AE69AE048 +:104F50000E94D20587E49AE00E94D20582E09AE09E +:104F60000E94D2058AED99E00E94D20585E999E078 +:104F70000E94D20589E699E0CBCF8BE599E00E94AB +:104F8000D2050E9486141F928F9381E499E09F932B +:104F90008F930E946B06809123011F928F938AE268 +:104FA00099E09F938F930E946B0680917F021F92DE +:104FB0008F9387E199E09F938F930E946B060E94E5 +:104FC0001A229F938F937F936F9380E099E09F9332 +:104FD0008F930E946B068DB79EB742960FB6F894DA +:104FE0009EBF0FBE8DBF5CCF80E001C08D510E947F +:104FF000C52656CF8EEF98E00E94D205C0E08C2FD8 +:10500000CF91089580E008950C940228CF93C82F83 +:1050100080917203813069F020F0823009F449C038 +:1050200040C167E08FE00E94F115882309F43FC179 +:1050300006C067E08FE00E94F115882361F08C2F95 +:105040000E940428811104C08C2F0E94E5262FC0E5 +:1050500081E090E02CC08C2F0E940228811126C094 +:10506000C431E1F070F4CB3081F0C031D1F40E9452 +:105070008D2587E398E00E94D20582E08093720339 +:1050800015C0C93259F0C83361F484E498E00E9435 +:10509000D2058BE398E00E94D20508C010927203FB +:1050A00004C185E398E00E94D205FFC081E08170D1 +:1050B000FEC0C43228F5CE3108F0C1C0CB30A1F11A +:1050C000D0F4C73009F0D3C08EE180932B0182E386 +:1050D00080932A018AE08093290184E1809328014A +:1050E00088E08093270188E2809326018BED96E08B +:1050F0000E94D205BFC0C33149F1C431C1F0B7C06D +:10510000CB3409F4A9C028F4C93289F0C83361F05E +:10511000AEC0C13509F49EC0C23509F499C0CE3481 +:1051200009F0A5C06AE09EC00E948D25A3C08091B1 +:105130007103882319F0109271039CC088EE96E0E9 +:105140000E94D20581E080937203B1C082EC96E0A8 +:105150000E94D20580EB96E00E94D20580912B013F +:105160001F928F938DEA96E09F938F930E946B0618 +:105170008BEA96E00E94D20589E996E00E94D2056A +:1051800080912A011F928F9386E996E09F938F93D7 +:105190000E946B0684E996E00E94D20585E896E0BD +:1051A0000E94D205809129011F928F9382E896E098 +:1051B0009F938F930E946B0680E896E00E94D20531 +:1051C0008FE696E00E94D205809128011F928F936E +:1051D0008CE696E09F938F930E946B068AE696E09A +:1051E0000E94D20585E596E00E94D20580912701B4 +:1051F0001F928F9382E596E09F938F930E946B0698 +:1052000080E596E00E94D20589E396E00E94D205EF +:10521000809126011F928F9386E396E09F938F9350 +:105220000E946B0684E396E00E94D2058DB79EB77C +:1052300048960FB6F8949EBF0FBE8DBF1BC0CE51CF +:10524000EC2FF0E0E95BFE4F80818093710312C088 +:1052500061E003C061E006C06AE0809171030E94D2 +:10526000A42508C0809171030E94472603C089EDE0 +:1052700096E013C080917103882369F01F928F9389 +:1052800083ED96E09F938F930E946B060F900F9093 +:105290000F900F9004C080ED96E00E94D20581E04F +:1052A00006C01092720380E002C080E000CFCF9170 +:1052B00008950E9460296894B1110C94EF29089513 +:1052C0000E94D42988F09F5798F0B92F9927B75199 +:1052D000B0F0E1F0660F771F881F991F1AF0BA959A +:1052E000C9F714C0B13091F00E94EE29B1E00895E1 +:1052F0000C94EE29672F782F8827B85F39F0B93FD3 +:10530000CCF3869577956795B395D9F73EF490954C +:105310008095709561957F4F8F4F9F4F0895E894CA +:1053200009C097FB3EF490958095709561957F4FED +:105330008F4F9F4F9923A9F0F92F96E9BB2793959B +:10534000F695879577956795B795F111F8CFFAF4AB +:10535000BB0F11F460FF1BC06F5F7F4F8F4F9F4FDC +:1053600016C0882311F096E911C0772321F09EE83A +:10537000872F762F05C0662371F096E8862F70E0A0 +:1053800060E02AF09A95660F771F881FDAF7880F7A +:105390009695879597F9089557FD9058440F551F96 +:1053A00059F05F3F71F04795880F97FB991F61F0A7 +:1053B0009F3F79F087950895121613061406551F1E +:1053C000F2CF4695F1DF08C0161617061806991F8A +:1053D000F1CF86957105610508940895E894BB277F +:1053E00066277727CB0197F908950E94072A0C9426 +:1053F000812A0E94732A38F00E947A2A20F095238D +:1054000011F00C946A2A0C94702A0C94EF290E94D3 +:10541000CC2978F39923C9F35523B9F3950F50E0BC +:10542000551FAA27EE27FF27BB270024089467955E +:1054300020F4E20FF31FB41F0A1E220F331F441F74 +:10544000AA1F6695A9F7779530F4F30FB41F0A1ECB +:10545000121E08F46395330F441FAA1F221F76956E +:1054600099F7879520F4B40F0A1E121E631F440F8C +:10547000AA1F221F331F8695A9F7862F712D602D35 +:1054800011249F5750409AF0F1F088234AF0EE0F14 +:10549000FF1FBB1F661F771F881F91505040A9F741 +:1054A0009E3F510580F00C946A2A0C94EF295F3FCF +:1054B000E4F3983ED4F3869577956795B795F7957D +:1054C000E7959F5FC1F7FE2B880F911D96958795F5 +:1054D00097F9089597F99F6780E870E060E0089574 +:1054E0009FEF80EC089500240A94161617061806FC +:1054F0000906089500240A941216130614060506D8 +:105500000895092E0394000C11F4882352F0BB0F68 +:1055100040F4BF2B11F460FF04C06F5F7F4F8F4FCB +:105520009F4F08950024552704C0080E591F880F67 +:10553000991F009729F076956795B8F37105B9F72B +:10554000802D952F089597FB072E16F4009407D011 +:1055500077FD09D00E94BD2A07FC05D03EF4909546 +:1055600081959F4F0895709561957F4F0895EE0F37 +:10557000FF1F0590F491E02D0994AA1BBB1B51E17C +:1055800007C0AA1FBB1FA617B70710F0A61BB70BB3 +:10559000881F991F5A95A9F780959095BC01CD0158 +:0655A0000895F894FFCF0E +:1055A600FFFFA514000069FFFF27E78C000000FF3E +:1055B600FF94640076010000FFE20C720D4F0D1996 +:1055C6000DE50C0158032808140A321E796573008C +:1055D6006E6F00404D362258040B04D503B3033FCB +:1055E60003580371038A0301020304050607080929 +:0255F6000000B3 +:106800008800EA44E944E244040005000600070069 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC :10683000180019001A001B001C001D001E001F007C :10684000200021002200230024002500260027002C :10685000280029002A002B002C002D002E002F00DC -:10686000300031A132003300340035A1360037004A +:10686000300031A232003300340035A13600370049 :10687000380082003A003B003C003D003E003F00F3 :1068800040004100420043004400450046004700EC :10689000480049004A004B004C004D004E004F009C :1068A000500051005200530067005400550056003C :1068B000580059005A005B005C005D005E005F00FC -:1068C0006000610062006300640000005700000087 -:1068D000CD440000000000000000000000000000A7 -:1068E0000000000000006620000000000000000022 +:1068C00060006100620063006400650057006700BB +:1068D000CD4469006A006B006C006D006E006F00B3 +:1068E0007000710072006620890087008A008B00AA :1068F000E000E100E200E300E400E500E600E7007C -:106900000100010001000100EA4401000100E2442D +:106900008800010001000100EA4401000100E244A6 :106910000100010001000100460001004A004B0097 :10692000010001004700480001000100E9440100A6 :106930000100010001000100010001003A003B00DC :106940003C003D003E003F0040004100420043004B -:10695000010001004C00010001004400450052000C -:1069600049000100010050004F0001004D004E00A1 +:10695000010035004C0001000100440045005200D8 +:1069600049000100010050004F0029004D004E0079 :1069700051000100010001000100010001000100BF :1069800001000100010001000100010001000100FF :1069900001000100010001000100010001004D00A3 :1069A0004A004E004B0001000100010001000100FF :1069B00001000100010001000100010001000100CF -:1069C00001000100010001000100010001000100BF -:1069D00001000100010001000100010001000100AF -:1069E000010001000100010001000100010001009F -:1069F000010001000100010001000100010001008F +:1069C00001000100010001000100650001006700F5 +:1069D000010069006A006B006C006D006E006F00C2 +:1069E0007000710072000100890087008A008B002E +:1069F0000100010001000100010001000100E700A9 +:106A00008800010001000100EA4401000100E244A5 +:106A10000100010001000100460001004A004B0096 +:106A2000010001004700480001000100E9440100A5 +:106A30000100010001000100010001003A003B00DB +:106A40003C003D003E003F0040004100420043004A +:106A5000010035004C0001000100440045005200D7 +:106A600049000100010050004F0029004D004E0078 +:106A700051000100010001000100010001000100BE +:106A800001000100010001000100010001000100FE +:106A900001000100010001000100010001004D00A2 +:106AA0004A004E004B0001000100010001000100FE +:106AB00001000100010001000100010001000100CE +:106AC00001000100010001000100650001006700F4 +:106AD000010069006A006B006C006D006E006F00C1 +:106AE0007000710072000100890087008A008B002D +:106AF0000100010001000100010001000100E700A8 :00000001FF From f19780d4ad85ee26172ae28bdea6ce88fd6db9fa Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 24 Jun 2019 16:11:36 +0900 Subject: [PATCH 30/71] adb_usb: Fix for Macally ADB keyboard - The odd keyboard sends key0 and key1 inversely for no reason. https://deskthority.net/workshop-f7/macally-mk96-t20116.html --- converter/adb_usb/matrix.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index d49adfb2..67ed3d79 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -451,12 +451,14 @@ uint8_t matrix_scan(void) register_key(0x7F); } else if (codes == 0xFFFF) { // power key release register_key(0xFF); - } else if (key0 == 0xFF) { // error - xprintf("adb_host_kbd_recv: ERROR(%d)\n", codes); - // something wrong or plug-in - matrix_init(); - return key1; } else { + // Macally keyboard sends keys inversely against ADB protocol + // https://deskthority.net/workshop-f7/macally-mk96-t20116.html + if (key0 == 0xFF) { + key0 = key1; + key1 = 0xFF; + } + /* Swap codes for ISO keyboard * https://github.com/tmk/tmk_keyboard/issues/35 * From 68f88b33e2448f972c381781900de51696c37aaf Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 24 Jun 2019 16:57:22 +0900 Subject: [PATCH 31/71] adb_usb: Update README --- converter/adb_usb/README.md | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/converter/adb_usb/README.md b/converter/adb_usb/README.md index 4125568d..efacb97d 100644 --- a/converter/adb_usb/README.md +++ b/converter/adb_usb/README.md @@ -16,7 +16,7 @@ https://github.com/tmk/tmk_keyboard/tree/master/converter/adb_usb Also check these when you are in trouble. https://github.com/tmk/tmk_keyboard/wiki -https://github.com/tmk/tmk_keyboard/labels/NOTE +https://github.com/tmk/tmk_keyboard/issues Wiring @@ -87,26 +87,33 @@ https://github.com/tmk/tmk_keyboard/wiki#debug Locking CapsLock ---------------- -Many of old ADB keyboards have mechanical push-lock switch for Capslock key and this converter supports the locking Capslock key by default. See README in top directory for more detail about this feature. +Many of old ADB keyboards have mechanical push-lock switch for Capslock key and this converter supports the locking Capslock key by default. Use keycode `LCAP` instead of `CAPS` in your keymap in short. See README in top directory for more detail. https://github.com/tmk/tmk_keyboard/blob/master/README.md#mechanical-locking-support -Also you may want to remove locking pin from the push-lock switch to use capslock as a normal momentary switch. +If you want to remap Capslock key you will have to remove locking pin or just replace with normal momentary switch. Some keyboards like Apple Adujstable keyboard use firmware-base locking with momentary switch for Capslock and remapping it won't be useful in most cases. -Mouse support -------------- -ADB mouse support was added by @mek-apelsin on Apr,2015. It supports only one button as of now. -https://github.com/tmk/tmk_keyboard/pull/207 - - -Notes ------ +Notes for keyboard +------------------ Not-extended ADB keyboards have no discrimination between right modifier and left one, you will always see left control even if you press right control key. Apple Extended Keyboard and Apple Extended Keyboard II can discriminate both side modifiers except for GUI key(Windows/Command). And most of ADB keyboards have no diodes in its matrix so they are not NKRO unfortunately, -though ADB protocol itself supports it. See protocol/adb.c for more info. +though ADB protocol itself supports it. See tmk_core/protocol/adb.c for more info. + + +Notes for mouse +--------------- +ADB mouse support was added by @mek-apelsin on Apr,2015. +https://github.com/tmk/tmk_keyboard/pull/207 + +All one-button mouses should be supported. + +As of 2019 June, the converter can handle multi-button mice and trackball up to eight buttons if the pointing device supports Apple Extended Mouse protocol. But some devices use their own specific protocol unfortunately and they will work as one-button mouse unless device specific code is added. + +Kensington Turbo Mouse 5(#64210) is supported now. +https://github.com/tmk/tmk_keyboard/issues/274#issuecomment-504726633 EOF From f4fd22aaa0859c0c9e940daafa35d2522d0f74df Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 12 Jul 2019 16:08:05 +0900 Subject: [PATCH 32/71] core: Fix ibm4704_send() wait for clock to start --- tmk_core/protocol/ibm4704.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tmk_core/protocol/ibm4704.c b/tmk_core/protocol/ibm4704.c index 6a03cd44..75e7db12 100644 --- a/tmk_core/protocol/ibm4704.c +++ b/tmk_core/protocol/ibm4704.c @@ -39,7 +39,7 @@ Data ____|__/ X____X____X____X____X____X____X____X____X____X \___ | Start 0 1 2 3 4 5 6 7 P Stop Request by host -Start bit: can be long as 300-350us. +Start bit: can be long as 300-350us during start up and upto 2500us while key scanning Request: Host pulls Clock line down to request to send a command. Timing: After Request keyboard pull up Data and down Clock line to low for start bit. After request host release Clock line once Data line becomes hi. @@ -58,7 +58,7 @@ uint8_t ibm4704_send(uint8_t data) clock_lo(); /* wait for Start bit(Clock:lo/Data:hi) */ - WAIT(data_hi, 300, 0x30); + WAIT(data_hi, 5000, 0x30); /* Data bit */ for (uint8_t i = 0; i < 8; i++) { @@ -89,7 +89,7 @@ uint8_t ibm4704_send(uint8_t data) return 0; ERROR: idle(); - if (ibm4704_error > 0x30) { + if (ibm4704_error >= 0x30) { xprintf("S:%02X ", ibm4704_error); } IBM4704_INT_ON(); From a1711da93478ae1399dd54e2a9adbb22bb9f0ec3 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 13 Jul 2019 03:02:38 +0900 Subject: [PATCH 33/71] ibm4704_usb: Update document --- converter/ibm4704_usb/ibm4704.txt | 1538 ++++++++++++++++++++++++++++- 1 file changed, 1524 insertions(+), 14 deletions(-) diff --git a/converter/ibm4704_usb/ibm4704.txt b/converter/ibm4704_usb/ibm4704.txt index 73c8a3b9..3e983848 100644 --- a/converter/ibm4704_usb/ibm4704.txt +++ b/converter/ibm4704_usb/ibm4704.txt @@ -1,3 +1,7 @@ +IBM 4704 Keyboard Analysis - 6019284(62-key) +============================================ +2013/02/09, 2019/07/12 + IBM 4704 Keyboard ================= IBM capacitive switch models: @@ -12,22 +16,26 @@ Alps switch(vintage Green) models: 6112884 Japanese 102-key http://geekhack.org/index.php?topic=50437.msg1193047#msg1193047 6341739 Chinese 102-key http://geekhack.org/index.php?topic=52888.msg1176566#msg1176566 + + Resourse -------- The IBM 4704: lots of pictures and info -http://kishy.dyndns.org/?p=648#more-648 +http://kishy.ca/?p=894 +http://imgur.com/a/LaABs Brochure: http://ed-thelen.org/comp-hist/IBM-ProdAnn/4700.pdf -IBM 4704 Keyboard Protocol -========================== +4704 Keyboard Protocol +====================== On powering up keyboard sends keyboard ID; A3h for 6019284(62-key), for example. After that the keyboard enters FC command mode and waits for parameter data from host so that it doesn't send any scancode until you send 'FF'(End of FC command mode). + Keyboard ID ------------------------------- Model 100 50-key A2h @@ -59,7 +67,7 @@ Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us l ____ __ __ __ __ __ __ __ __ __ _______ Clock \_____/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ - ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ + ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ Data ____/ X____X____X____X____X____X____X____X____X____X________ Start 0 1 2 3 4 5 6 7 P Stop @@ -69,6 +77,7 @@ Timing: Host reads bit while Clock is hi.(rising edge) Stop bit: Keyboard pulls down Data line to lo after 9th clock. + Host to Keyboard ---------------- Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us low part. @@ -80,7 +89,7 @@ Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us l | Start 0 1 2 3 4 5 6 7 P Stop Request by host -Start bit: can be long as 300-350us. +Start bit: can be long as 300-350us during start up and upto 2500us while key scanning Request: Host pulls Clock line down to request to send a command. Timing: After Request keyboard pull up Data and down Clock line to low for start bit. After request host release Clock line once Data line becomes hi. @@ -88,19 +97,20 @@ Timing: After Request keyboard pull up Data and down Clock line to low for s Stop bit: Host releases or pulls up Data line to hi after 9th clock and waits for keybaord pull down the line to lo. + Scancodes --------- Keyboard doesn't send Break code for all keys except for Alt by default. 6019284 62-key: ,-----------------------------------------------------------. - | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|???|BS | + | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|**1|BS | |-----------------------------------------------------------| |Tab | Q| W| E| R| T| Y| U| I| O| P| ¢| \| PD2| |-----------------------------------------------------------| |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| {}| PD3| |-----------------------------------------------------------| - |Shif| <>| Z| X| C| V| B| N| M| ,| ,| /|???|Shift | + |Shif| <>| Z| X| C| V| B| N| M| ,| ,| /|**2|Shift | |-----------------------------------------------------------| |Reset|blk|Alt | Space |Alt |blk|Enter| `-----------------------------------------------------------' @@ -117,8 +127,8 @@ Keyboard doesn't send Break code for all keys except for Alt by default. |9 0A|o 02|l 29|, 39| | |0 0F|p 03|; 2A|. 3A| | |- 1F|¢ 1B|' 2B|/ 3B| | - |= 0D|\ 1C|{} 2C|??? 3C| | - |??? 0C|PD2 1D|PD3 2D|RShift 3D| | + |= 0D|\ 1C|{} 2C|**2 3C| | + |**1 0C|PD2 1D|PD3 2D|RShift 3D| | |BS 0E| | | | | +----------+---------------------+----------+----------+ Bit7 is 'press flag' which set 1 on press and 0 on release when break code is enabled. @@ -139,7 +149,7 @@ Keyboard accepts these commands from host. FC Set Key Flag 00f6h FB Soft Reset 0008h FA Reset 0000h - + Keyboard response ----------------- @@ -160,7 +170,7 @@ Keyobard sends these bytes to host. Set Key Flag command(FC) ------------------------ After 'Power on Reset' firmware enters this command mode and waits for data from host, -so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF'. +so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF' to exit this mode. With Alps models you need to send 'FC' command to enter this mode. Data sent from host: @@ -170,8 +180,8 @@ Data sent from host: | `-----`--- scan code `------------- enable bit(0: enable repeat, 1: enable break) - 00-7B? Enable repeat - 80-FB? Enable break + 00-7B Enable repeat + 80-FB Enable break FE Resend(011ah) no need to use FF End(0114h) exits FC command mode. @@ -180,7 +190,1507 @@ Response from keyboard: -- OK - No response means that command is accepted. Examples: - To enable break code of all keys. + To enable break code of all keys you have to send following commands. FC 80 81 ... FB FF + + +4704 Hardware +============= +Power consumption +----------------- +This keyboard is very power greedy, it consumes around 170mA +and USB port may not be able to supply enough current. + + 5.061V - No load. Power from Powered USB Hub. + 4.946V 133.6mA max without Buzzer + 4.911V 171.0mA max with Buzzer + + +Controller Board +---------------- +NOTE: TWO BOLTS OF CONTROLLER BOARD IS CRITICAL. +Controller PCB and tab of bottom plate of key assembly with two hex bolts, these +connect between controller ground to the metal bottom plate of key switch assembly. +This connection is very critical to sense key state, keys will not be registered +unless they are tightened up with the bolts + + Controller: 8048 DIP40 with 1KB ROM and 64B RAM(8748H?) + Clock: ??MHz Resonator? TODO: machine cycle: ??us + Buffer: 7917 hex buffer + Sensor: IBM custom chip for capacitive sense + + +8048 Pin configuration +---------------------- +Bus: + bit: D7 D6 D5 D4 D3 D2 D1 D0 + use: BZ CLK DAT ??? G S2 S1 S0 + + use dir description + ---------------------------------------------------------------------- + S0 out Sensor select + S1 out Sensor select + S2 out Sensor select + G out Sensor strobe? + ??? Sensor state out(drive/charge? via 7917 buffer) + DAT out Data via buffer logic with 2K pull up resistor + CLK out Clock via buffer logic with 2K pull up resistor + BZ out Drive Buzzer via 7917 buffer with 2KOhm pull up resistor(H:on/L:off) +T0: + input of Sensor state(H:on/L:off) +T1: + input of Clock line with 1KOhm pull up resistor +INT: + input of Data line with 1KOhm pull down resistor +PORT1: + P10-P17 matrix row0-7 +PORT2: + P20 matrix row8 or I(keyboard identity bits row) + + +Connections +----------- + 8048 Sensor + ----------------------------- + D0-2 ====/===== S0-2(Sensor) + D3 ---------- STR(Sensor) + 7917 buffer + D4 --|>--+--- OUT(Sensor) + T0 ------' + + 8048 line + ----------------------------- + Vcc Vcc + | | + R 1K R 2K + T1 ---+-<|-+- CLK + D6 ---|>---' + Vcc + | + R 2K + D6 ---|>---+- DAT + T1 -+---<|-' + R 1K + | + GND + Vcc + | + R 2K + D7 ---|>---+- BZ + + +Interruption +------------ +I disable at 0015h +TCNTI disable at 0014h + + +IBM Capacitive sensor chip +-------------------------- +Silver canned package + + Pin Connection Desciption + ---------------------------------------------------------------- + Input(C0-7) Matrix Col0-7 8 column line inputs + Col select(S0-2)8048:D0-D2 Select column line to sense + Strobe(STR) 8048:D3 Strobe + Output(OUT) 848:T0 Read Key state(0:pressed/1:released) + + Pinout from bottom: + +-----------++------+-------+-------+-------+ + | 1 2 3 4 5 ||1:LCL |6:LCC |B:S0 |G:C5 | + | 6 7 8 9 ||2:GND |7:LCM |C:? |H:C4 | + | A B ||3:Out |8:S2 |D:C6 |I:C3 | + | C D E F ||4:STR |9:S1 |E:C0 |J:C2 | + | G H I J K ||5:VCC |A:C7 |F:? |K:C1 | + +-----------++------+-------+-------+-------+ + + 8048 Sensor + D0-2 ====/===== S0-2 + D3 ---------- STR + 7917 buffer + D4 --|>--+--- OUT + T0 ------' + + Speculation: 8048:D4 is used to prepare to sense capacitance.(charge key capcitor?) + +Procedure: + at 030dh: + D0-2= ; select column S0-2 + D4=1 ; Prepare sensor(Charge?) + P1/P2= ; select row + D0-4= ; 00010(bus=c2h) + D3=1 ; Strobe + P1/P2=0 ; unselect row + read T0 ; see key state + + at 01afh: + D0-2= + D4=1 + D0-2=2(010) ; select col2 + P2=01h ; select row + D3=1 ; Strobe + P2=00h ; unselect row + read T0 + + +Keyswitch Matrix +---------------- +6019284(62-key): + |0 1 2 3 4 5 6 7 + -|-------------------------------------------------------------- + 0|Enter RShift JIS_ PD3 PD2 \| LofBS BS + 1|RAlt RBlank /? '" {} Cent! - = + 2|, . l ; o p 9 0 + 3|m n k j u i 7 8 + 4|Spc b g h t y 5 6 + 5|v c d f e r 3 4 + 6|LAlt z x s a w q 2 + 7|Reset LBlank ISO\ LShift CapLock PD1 `~ 1 + 8|_ x _ _ x x _ _ (Identity bits: 32h) + + Two 15-line flat cables shown from bttom of PCB: + + Flatcable A Flatcable B + / \/ \ + 0123456789ABCDE0123456789ABCDE + --8-----01234567----76543210-- + Id row col -:GND + + +Keyboard Identity Bits +---------------------- +4704 keyboards has its identity bit marks on PCB matrix and it is readable +from firmware so that it can select key layout depending on this. + +PCB pictures: + Model 100: + http://kishy.dyndns.org/wp-content/uploads/2013/02/6019273_0011.jpg + Model 200: + http://kishy.dyndns.org/wp-content/uploads/2013/02/6019284_0020_capacitive-pcb-top.jpg + Model 300: + http://kbtalking.cool3c.com/article/23272 + Model 400: + http://kishy.dyndns.org/wp-content/uploads/2011/09/6020218_distrib_0019.jpg + + + +4704 Firmware +============= + +Startup sequence +---------------- +Power on Reset(0000h): + Short Buzzer + turns Buzzer(BZ=L) on at 0002h + turns Buzzer(BZ=H) off at 01adh + Initialize all memory(3fh-00h) + Initialize other registers + Read keyboard id and set default parameter at 01afh + set break flag for Alt key by default + Test and clear memory(3fh..00h) at 0202h + Test program memory at 0214h + r4=($21&07h)|50h at 0020h + Send test result at 022dh + sends [a0h | (keyboard id&f0h)>>4] on success + 6019284 seneds a3h on success + Wait for data from host - it expects FC command data followed by ffh(end) + Main loop + +Soft Reset(0008h): + Initialize all memory(20h-00h) It retains parameter memory. + Initialize other registers + r4=($21&07h)|50h at 0020h + Main loop + + +Memory Map +---------- +RAM(64 bytes): +$01-07 *Bank0* Registers r0-r7 + r0 temporary use + r1 temporary use + r2 temporary use + r3 row mask of scan 024dh, 0257h + r4 bus default value + 7 6 5 4 3 2 1 0 + | | | | | | | | + | | | | | `-`-`------ Sensor column select + | | | | `------------ Sensor strobe? + | | | `-------------- Sensor column set? + | | `---------------- Data + | `------------------ Clock + `-------------------- Buzzer control(L:on/H:off)023ch + =$21&07h|50h: call 0020h at 001ch soft reset (52h=0101 0010) + =$21&07h|50h: call 0020h at 0109h command FC (52h=0101 0010) + =r4|80h: at 00f4h(FD command) + =r4&7fh: at 023ch(Main) + =r4&f0h: at 0200h + r5 repeat dealy/interval + used at 02d7h + =07h at 02d9h + =28h at 02ddh + =28h at 02e1h + *r6 0bh at 00edh(FD command) + used at 0232h + r7 received data from host + temporary use at 01afh + temporary use at 005dh + =r4&c0h(current bus value?) 0247h +$08-17 8-level stack(2*8) + $0E + : last key state(1:pressed/0:released) + $15 (0E-15)=8*8=64 matrix(for 50-key and 62-key?) + $16 + : last key state(1:pressed/0:released) + $1C (16-1C)=7*8=56 (extension for 77-key?) + +$18-1F *Bank1* Registers 0-r7 + Outgoing buffer of data sent to host + $1D r5 outgoing buffer top + $1E r6 outgoing buffer + $1F r7 outgoing buffer bottom + + +$20 Resend buffer: code last sent used by 'Resend'(FE) + +$21 Keyboard identity bits + 0011 0010 (6019284: 32h read from Row(I)) + ||| |||| + ||| |```- Sensor chip control(bus value)?? + ||| `---- ??? + ```------ keyboard model id + + set at 01fah on Power on Reset: 32h from row8(I)(6019284) + got at 0020h on Soft Reset: + got at 034eh on translate into scan code: + got at 0125h on command FC: + set from scan 8(I) row at 01fdh + + Keyboard model id: + Model 100 6019273 50-key (grid layout): 22h(from picture) + Model 200 6019284 62-key Alpha(60% layout): 32h + Model 300 6019303 77-key Expanded Alpha: 42h?(from dump list) + Model 400 6020218 107-key Full key: no identity + Looks like this firmware does not support 107-key. + + IBM 4704 keyboards: + It seems Model 100, 200 and 300 keyboards share one firmware code and + have small square copper patterns on righ side of PCB to identify + its layout. See following pictures. Model 400 may use another firmware. + +$22-3F 30-byte Parameter RAM(Repeat and Break flags) + Parameter byte is comprised of four flag pairs. Flags occupies two bits each a key. + Parameter RAM can have flags for 120(4*30) keys. + + Parameter byte and flags: + bit 7 6 5 4 3 2 1 0 + 3r 3b 2r 2b 1r 1b 0r 0b +: +$3F End of Memory(64 bytes) + + + + +Entry points +------------ +0020 Soft Reset r4=($21&07h)|50h = (32h&07h)|50h=52h +0029 r1=r1+(a), a=r0 (page 0) +002c (F0=0: send or receive data with 'interpret command mode') +002d Receive data or Send scan code +0035 Send scan code + return: F1=1 +0082 Receive data from host + condition: F0==0 interpret command + F0==1 return receive data(a) + return: F1=1(ERROR) 00c7 (Receive ACK/Parity Error) 00b6,00ce + F1=0? + a=recieve data, (with F0=0 00dc) F0==0 means 'data received' +00bc push 7f(error) into outgoing buffer +00be push data/response into outgoing buffer(r5,r6,r7) +00d2 interpret keyboard command +00de calculate parity + +01a4 r1=r1+(a), a=r0 (page 1) +01a5 r1=r1+a, a=r0 +01a9 Buzzer and Scan row8(*) and set param: call from Power on Reset 0018h +01af Read keyboard identity bits from row8(I) and set param: - call from command FC 0107h +0202 Memory Test(Power on Reset) + +0230 Main loop: send, receive data and scan + send/receive: call 002c +0263 **Scan matrix**(F1==0): F1=1, r1=15h, r2=3fh, r3=01h +0287 **Scan matrix**(F1==1): F1=0, r1=1ch, r2=77h, r3=02h +0325 get key configure flags(a=-----rb; where r:repeat enable, b:break enable) +0339 queue data at bottom of outgoing buffer +034e translate into scan code + scan code table1/table2 + + +Keyboard command entry points +----------------------------- +FF: jump_table0 Soft Reset(008h) +FE: jump_table1 Resend(return content of $20) +FD: jump_table2 Short beep BZ +FC: jump_table3 parameter configuration(100h) +FB: jump_table4 Soft Reset(008h) +FA: jump_table5 Reset(000h) + + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; 8048 Disassembly of IBM 6019284 ROM dump +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; label mnemonic ; address comment +;------------------------------------------------------------------------------------- + org 000h +; jump_table:5 Hard Reset/Power on Reset + mov a,#07fh ; 0000 - a=7f Power on Reset + outl bus,a ; 0002 - BZ=L(off), others=H + mov r0,#03fh ; 0003 - r0=3fh + clr f1 ; 0005 - F1=0 + jmp X000c ; 0006 - +; jump_table:0,4 Soft Reset + mov r0,#020h ; 0008 - r0=20h $20=resend buffer + clr f1 ; 000a - + cpl f1 ; 000b - F1=1 + +;;;;;;;;;;;;;;;;;; +; initialize memory +; hard reset clear 3f-00h F1=0 +; soft reset clear 20-00h F1=1 +X000c: clr f0 ; 000c - F0=0 + clr a ; 000d - a=0 +X000e: mov @r0,a ; 000e - @r0=0 r0=$3f(hard)/$20(soft) + djnz r0,X000e ; 000f - clear RAM 3f/20h to $00 + mov psw,a ; 0011 - psw=0 + outl p1,a ; 0012 - p1=0 + outl p2,a ; 0013 - p2=0 + dis tcnti ; 0014 - disable timer overflow + dis i ; 0015 - disable INT + jf1 X001c ; 0016 - jump if F1==1(Soft Reset?) + +; F1==0 Power on Reset + call X01a9 ; 0018 - read keyboard id and set default parameter + jmp X0202 ; 001a - Memory Test and go to Main + +; F1==1 Soft Reset +X001c: call X0020 ; 001c - ; r4=$21&07h|50h(52h?), a=r4 + jmp X0230 ; 001e - ; go to Main + +;;;;;;;;;;;;;;;;;; +; Set r4 +: INPUT: r4??? +: RETURN: a=r4(original) +; r4=$21&07h|50h +; +X0020: mov r0,#021h ; 0020 - r0=21h(keyboad identity bits) + mov a,@r0 ; 0022 - a=($21) + anl a,#007h ; 0023 - a=a&07h + orl a,#050h ; 0025 - a=a|50h + xch a,r4 ; 0027 - swap a,r4 + ret ; 0028 - + +; read program memory @page0 +; INPUT: a:address +; OUTPUT: a=(a)@page0 +X0029: movp a,@a ; 0029 - + jmp X01a5 ; 002a - r1=r1+a, a=r0 + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Receive data or Send scan code +; INPUT: F0=0:interpret command/1:retern data used in Receive command/data +; OUTPUT: F0=0(received)/1(not received) +; DONE: a=0, F1=1, buffer rotate +X002c: clr f0 ; 002c - F0=0 +X002d: jnt1 X0082 ; 002d - go to receive if T1(CLK)==L + sel rb1 ; 002f - switch to bank1 + mov a,r5 ; 0030 - a=r5(bank1) r5(bank1): scan code buffer + sel rb0 ; 0031 - switch to bank0 + jnz X0035 ; 0032 - jump if r5(bank1)!=0 + retr ; 0034 - return if r5(bank1)==0 buffer empty + +;;;;;;;;;;;;;;;;;; +; Send scan code +; INPUT: a=data +; OUTPUT: F1=1:Sent,Rotate,Data ready/0:??? +X0035: dec a ; 0035 - a-- + clr c ; 0036 - c=0 + call X00de ; 0037 - c=parity calc + jnt1 X0082 ; 0039 - go to receive if T1(CLK)=L +; Start bit + anl bus,#0bfh ; 003b - [CLK=L] + orl bus,#020h ; 003d - [DATA=H] [[[Start bit]]] + mov r0,#010h ; 003f - r0=10h + + +; check inhibited(DATA==L) - check DATA line released by host +X0041: jni X0047 ; 0041 - jump if DATA==L LOOP> + jni X0049 ; 0043 - jump if DATA==L + jmp X0054 ; 0045 - cont. if DATA==H +X0047: jmp X0049 ; 0047 - +X0049: djnz r0,X0041 ; 0049 - > + jb0 X0069 ; 0061 - jump if a:bit0==1 +; a:bit0==0 +; send DATA=0 + anl bus,#0dfh ; 0063 - [DATA=L] + orl bus,#040h ; 0065 - [CLK=H] + jmp X006f ; 0067 - +; a:bit0==1 +; send DATA=1 +X0069: orl bus,#020h ; 0069 - [DATA=H] + orl bus,#040h ; 006b - [CLK=H] + jmp X006f ; 006d - +; hold CLK=H +X006f: djnz r0,X006f ; 006f - 9*2cycle delay (around 60us??) + anl bus,#0bfh ; 0071 - [CLK=L] + rrc a ; 0073 - a=a>>1, c=a:bit0 + djnz r7,X005f ; 0074 - <r7->r6->r5->a [Bank1 Buffer rotate] + retr ; 0081 - retr reverts to bank0 + + + +;;;;;;;;;;;;;;;;;; +; Receive command/data from host +; INPUT: F0=0:interpret command/1:return data(used by command) +; OUTPUT: F0=0(received)/1(not received) +; F1=1:Error/0:OK +; a: data +; c: parity +; F1: 0: Receive or Send 1: Receive +; +X0082: jf1 X0086 ; 0082 - jump if F1==1 +; F1==0 + jmp X002d ; 0084 - Can't recevie, do 'Receive or Send' again +; F1==1 +X0086: mov r0,#006h ; 0086 - r0=6h +X0088: djnz r0,X0088 ; 0088 - 6*2cycle dealy + jt1 X00cb ; 008a - return if T1(CLK)==H + anl bus,#0bfh ; 008c - [CLK=L] + orl bus,#020h ; 008e - [DATA=H] [Start bit] + mov r0,#011h ; 0090 - +X0092: djnz r0,X0092 ; 0092 - 11*2cycle delay + mov r7,#009h ; 0094 - r7=9h +X0096: orl bus,#040h ; 0096 - LOOP>[CLK=H] [Clock up for receive] + mov r0,#008h ; 0098 - +X009a: djnz r0,X009a ; 009a - 8*2cycle delay + anl bus,#0bfh ; 009c - [CLK=L] [Clock down] + jni X00a9 ; 009e - jump if INT(DATA)==L [Read bit] Read twice for debounce? +; DATA==H + orl a,#001h ; 00a0 - a:bit0=1 + jni X00ad ; 00a2 - jump if INT(DATA)==L +; DATA==H +X00a4: rrc a ; 00a4 - a=a>>1 with carry [Next bit] + djnz r7,X0096 ; 00a5 - r5->r6->r7->a + xch a,r6 ; 00c1 - + xch a,r7 ; 00c2 - + jz X00cb ; 00c3 - jump if a==0 + mov r7,#0ffh ; 00c5 - r7=ffh overflow [Over flow:FE] + +X00c7: anl bus,#0dfh ; 00c7 - [DATA=L] [Idle] End + clr f1 ; 00c9 - + cpl f1 ; 00ca - F1=1 [Error flag] +X00cb: retr ; 00cb - + + + +; check parity of recieve data +; F1==1 +X00cc: call X00de ; 00cc - call parity calc + jc X00bc ; 00ce - jump if carryflag=1 (Parity ERROR) +; parity OK + jf0 X00dc ; 00d0 - jump if F0==1 + + +;;;;;;;;;;;;;;;;; +; F0==0 +; Interpret command +; + cpl a ; 00d2 - compliment a ffh-a(command) + add a,#jump_table ; 00d3 - a=a+#jump_table + jc X00d8 ; 00d5 - + jmpp @a ; 00d7 - jump table [Keyboard command] +; Command Out bound Error +X00d8: mov a,#0fdh ; 00d8 - error response: FD + jmp X00be ; 00da - + +;;;;;;;;;;;;;;;;; +; F0==1 +; Return data +X00dc: cpl f0 ; 00dc - F0=~F0(=0) + ret ; 00dd - +; +; recieve data/command +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;; +; calculate parity: 'c' depends on number of '1' in 'a' +; INPUT: a=data +; OUTPUT: c(carry flag) +X00de: mov r0,#008h ; 00de - b8 08 8. r0=8h +X00e0: rr a ; 00e0 - 77 w a=a>>1 + jb0 X00e4 ; 00e1 - 12 e4 .d jump if a:bit0==1 + cpl c ; 00e3 - a7 ' compliment carry flag +X00e4: djnz r0,X00e0 ; 00e4 - e8 e0 h` jump if --r0!=0 + cpl c ; 00e6 - a7 ' + ret ; 00e7 - 83 . + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Keyboard command jump table +; +; jump_table:1 FE Resend(return content of $20) +X00e8: mov r0,#020h ; 00e8 - $20 + mov a,@r0 ; 00ea - a=$20 get from resend buffer + jmp X00be ; 00eb - push into outogoing buffer + +; jump_table:2 FD r6=0bh, r4=r4|80h + mov r6,#00bh ; 00ed - r6=0bh BZ duration(scan cycles)? + orl bus,#080h ; 00ef - BZ=H(on) + mov a,r4 ; 00f1 - + orl a,#080h ; 00f2 - BZ=H + mov r4,a ; 00f4 - r4=r4|80h BZ=H(on) bus-default + retr ; 00f5 - + +; jump_table:3 FC + mov r1,#01eh ; 00f6 - r1=1eh + jmp X0100 ; 00f8 - + +; +; keyboard commands: +; +; FF: jump_table0 Soft Reset(008h) +; FE: jump_table1 Resend(return content of $20) +; FD: jump_table2 BZ set BZ=H(on) to bus and r4(bus-default), duration to r6 +; FC: jump_table3 Set key configuration +; FB: jump_table4 Soft Reset(008h) +; FA: jump_table5 Reset(000h) +; +jump_table: db 008h,0e8h,0edh,0f6h,008h,000h ; 00fa .hmv.. +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; command FC parameter configuration +; clear $22-3f, then set data received from host +; +; r4: +; set to $21&07h|50h +; r7: received data +; r7=data|7fh +; F0=0 if data:bit7=1 +; F0=1 if data:bit7=0 +; +; data received(r7): +; FF End(0114h) +; FE Resend and receive again(011ah) +; FF-80 F0=0 if bit7 of r7 is set +; 7F-00 F0=1 if bit7 of r7 is reset +; +; + +;;;;;;;;;;;;;;;;;; +; clear parameter configuration RAM $3f..22 +; INPUT: r1=1eh=30 +; called at 00f6h +X0100: clr a ; 0100 - a=0 + mov r0,#03fh ; 0101 - r0=3f +X0103: mov @r0,a ; 0103 - $3f=a + dec r0 ; 0104 - r0-- + djnz r1,X0103 ; 0105 - + call X01af ; 0107 - Read keyboar id and set parameter flags + call X0020 ; 0109 - r4=($21 & 07h | 50h) =52h + +;;;;;;;;;;;;;;;;;; +; data receive from host +; +X010b: clr f0 ; 010b - LOOP>> + cpl f0 ; 010c - F0=1 +X010d: call X002d ; 010d - receive/send data with F0=1 + jf0 X010d ; 010f - LOOP while F0==1 + + +; received data from host(F0==0) + mov r7,a ; 0111 - r7=data received + cpl c ; 0112 - c=~c + cpl a ; 0113 - a=~a + +;;;;;;;;;;;;;;;;; +; a==FF *End* + jz X013b ; 0114 - return if a==FF + xrl a,#001h ; 0116 - + jnz X011e ; 0118 - jump if a!=FE + +;;;;;;;;;;;;;;;;; +; a==FE *Resend* + call X00e8 ; 011a - Resend and continue... + jmp X010b ; 011c - <> +X014c: mov a,r1 ; 014c - a=r1 + movp3 a,@a ; 014d - a=(r1) read scan code table + xrl a,r7 ; 014e - a=a^r7 a==r7(received scan code) + jnz X0156 ; 014f - + +; scan code(a) == received data(r7) + dec r2 ; 0151 - r2-- + mov a,r2 ; 0152 - a=r2 + call X015f ; 0153 - call [Set flag] + inc r2 ; 0155 - r2++ + +; check next scan code +X0156: dec r1 ; 0156 - r1-- r1: address of table + djnz r2,X014c ; 0157 - <=0 + call X00d8 ; 015b - Error: FD and cont. [Out of bound Error: FD] +X015d: jmp X010b ; 015d - <>1 + rr a ; 0162 - a=a>>1 a/4(four keys per a parameter byte) + add a,#022h ; 0163 - a=a+22h start of parameter bytes + mov r0,a ; 0165 - r0=a r0=parameter address + + mov a,r2 ; 0166 - a=r2 + anl a,#003h ; 0167 - a=a&03h [a=flag position] + jz X017e ; 0169 - if FF==0b00 + dec a ; 016b - a-- + jz X018a ; 016c - if FF==0b01 + dec a ; 016e - a-- + jz X0197 ; 016f - if FF==0b10 + +; +; Parameter byte and configure flags +; bit 7 6 5 4 3 2 1 0 +; 3r 3b 2r 2b 1r 1b 0r 0b + +;;;;;;;;;;;;;;;;;; +; FF==11b: 3r/3b + mov a,@r0 ; 0171 - a=(r0) r0=parameter address + anl a,#03fh ; 0172 - a=a&0011 1111b clear 3r/3b + jf0 X017a ; 0174 - jump if F0==1 +; F0==0(received data:bit7==1) +; a=a|40h + orl a,#040h ; 0176 - a=a|0100 0000b 3b: break enabled + + + +;;;;;;;;;;;;;;;;;; +; store to RAM and return +X0178: mov @r0,a ; 0178 - (r0)=a store parameter to RAM + ret ; 0179 - return a: command/received data +; End of Set flag +;;;;;;;;;;;;;;;;;; + + + +; F0==1 (data:bit7==0) +; a=a|80h +X017a: orl a,#080h ; 017a - a=a|1000 0000b 3r: repeat enabled + jmp X0178 ; 017c - +;;; + + +;;;;;;;;;;;;;;;;;; +; FF==00b: 0r/0b +X017e: mov a,@r0 ; 017e - a=(r0) + anl a,#0fch ; 017f - a=a & 1111 1100b clear 0r/0b + jf0 X0186 ; 0181 - jump if F0==1 +; F0==0(data:bit==1) + inc a ; 0183 - a++ 0b: break enabled + jmp X0178 ; 0184 - +; F0==1(data:bit==0) +X0186: orl a,#002h ; 0186 - 0r: repeat enabled + jmp X0178 ; 0188 - +;;; + + +;;;;;;;;;;;;;;;;;; +; FF==01b: 1r/1b +X018a: mov a,@r0 ; 018a - + anl a,#0f3h ; 018b - clear 1r/1b + jf0 X0193 ; 018d - +; F0==0(data:bit==1) + orl a,#004h ; 018f - 1b: break enabled + jmp X0178 ; 0191 - +; F0==1(data:bit==0) +X0193: orl a,#008h ; 0193 - 1r: repeat enabled + jmp X0178 ; 0195 - +;;; + + +;;;;;;;; +; FF==10b parameter|10h / parameter|20h +X0197: mov a,@r0 ; 0197 - + anl a,#0cfh ; 0198 - clear 2r/2b + jf0 X01a0 ; 019a - +; F0==0(data:bit==1) + orl a,#010h ; 019c - 2b: break enabled + jmp X0178 ; 019e - +; F0==1(data:bit==0) +X01a0: orl a,#020h ; 01a0 - 2r: repeat enabled + jmp X0178 ; 01a2 - +;;; + + +; +; End of command FC +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;; +; read program memory @page1 +; INPUT: a=address of program memory +X01a4: movp a,@a ; 01a4 - a=(a)@page1 + +; OUTPUT: r1=r1+a, a=r0 +; r1=r1+a,a=r0 +X01a5: add a,r1 ; 01a5 - + mov r1,a ; 01a6 - r1=a+r1 + mov a,r0 ; 01a7 - a=r0 + ret ; 01a8 - + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Scan row8(I) and set parameter flags(on Power on Reset) +; +; call from hard reset 0018h with a=0, r0=0, r1=0? +; INPUT: r0, r1: for wait loop +; OUTPUT: $21=keybaord identity bits, r4=$21&f0h +; + +;;;;;;;;;;;;;;;;;; +; delay to make Buzzer audible when powering up?? +X01a9: djnz r0,X01a9 ; 01a9 - r0*2cycle + djnz r1,X01a9 ; 01ab - r1*(r0*2cycle+2cycle) 256*(256*2+2)=131584(2us?/cycle) around 260ms?? + anl bus,#0c0h ; 01ad - BZ=_,CLK=_,DATA=L line is idle + + +;;;;;;;;;;;;;;;;;; +; +; Read keyboard identity bits from row8(I) and set parameter flags(on command FC) +; INPUT: a=0 +; OUTPUT: r4=a=scanned data of row8(I)=keyboard identity bits +; +; F0: 1:read(frist)/0:read(second)&settle +; It needs to read same value twice to settle. +; +; Keyboar id bit pattern on PCB: +; mark: 1 +; brank: 0 +; Sensor value meaning: +; Sensor: 0 1 +; Kbd id: 1(mark) 0(blank) +; Key: 1(pressed) 0(released) +; +; called from command FC 0107h +X01af: mov r7,#008h ; 01af - r7=08h [column] +X01b1: rl a ; 01b1 - a=a<<1 LOOP_0{ [next column] +X01b2: mov r4,a ; 01b2 - LOOP{ r4=a [data] + cpl f0 ; 01b3 - F0=~F0 toggle F0 [read twice to debounce] + mov a,r7 ; 01b4 - a=r7 + dec a ; 01b5 - a-- + orl a,#0c0h ; 01b6 - col(7-0)|c0h = c7-c0h BZ=H:on [Beep during FC command] + outl bus,a ; 01b8 - [Select column] + orl bus,#010h ; 01b9 - D4=1 [charge sensor out=H?] + mov a,#0d2h ; 01bb - 1101 0010 + outl bus,a ; 01bd - bus=d2h D4-0=10010 select column 2? + +; + orl p2,#001h ; 01be - P2:0=1 [select row8(I)] + mov a,r4 ; 01c0 - a=r4(data) + orl bus,#008h ; 01c1 - bus=d2h|08h=dah D4=1 [Strobe?](1101 1010) + anl p2,#000h ; 01c3 - P2:0=L [unselect row8(I)] + +; check sensor out(T0) + jt0 X01d5 ; 01c5 - jump if T0==H + jf0 X01cd ; 01c7 - jump if F0==1 + jb0 X01d9 ; 01c9 - jump if a:bit0==1 [Settle] + ; TO(sensor)==0 && F0==0 && a:bit0==0 + jmp X01b2 ; 01cb - }LOOP + +; record 1(a=a|01h) when key is on(T0=L) and F0==1 +; T0(sensor)==L(off) && F0==1 (from 01c7) +X01cd: orl a,#001h ; 01cd - a=a|1 [Set a:bit0=H] + jmp X01b2 ; 01cf - LOOP + +; record 0(a=a&feh) when key is off(T0=H) and F0==0 +; T0(sensor)==H(on) && F0==0 && a:bit0==1(off) (from 01d7) +X01d1: anl a,#0feh ; 01d1 - a=a&feh [Set a:bit0=L] + jmp X01b2 ; 01d3 - LOOP + +; scan LOOP again +; T0(sensor)==H(on) && F0==1 (from 01c5) +X01d5: jf0 X01b2 ; 01d5 - LOOP while F0==1 + +; T0(sensor)==H(on) && F0==0 + jb0 X01d1 ; 01d7 - jump if a:bit0==1 [need to change r4(a) to 0] + +; next column +; T0(sensor)==H && F0==0 && a:bit0==0 OR +; T0(sensor)==L && F0==0 && a:bit0==1 (from 01c9) +X01d9: djnz r7,X01b1 ; 01d9 - }LOOP_0 while --r7>0 [Next column] + mov r4,a ; 01db - r4=a a=r4=scanned data of Row8(I) + + +;;;;;;;;;;;;;;;;;; +; Set parameters from scanned data of row 8(I) +; +; INPUT: a=r4=keyboard identity bits +; OUTPUT: $21=keybaord identity bits, r4=$21&f0h +; + anl a,#0f0h ; 01dc - a=a&f0h + xrl a,#020h ; 01de - a=a^20h (a==0010 xxxx) 6019273 + jz X01ec ; 01e0 - jump if a==0 + xrl a,#010h ; 01e2 - a=a^10h (a==0011 xxxx) *6019284 when power on reset + jz X01f2 ; 01e4 - jump if a==0 + xrl a,#070h ; 01e6 - a=a^70h (a==0100 xxxx) 6019303 + jz X01f2 ; 01e8 - jump if a==0 + jmp X01fa ; 01ea - + +; $21==(0010 xxxx) for 6019273(50-key) +; set break enalbe flag for Reset(or on other layout?) +X01ec: mov r0,#022h ; 01ec - + mov @r0,#001h ; 01ee - $22=1 $22:bit0=break enable falg of ???? + jmp X01fa ; 01f0 - + +; $21==(0011 0010 | 0100 xxxx) for 6019284(62-key) or 6019303(77-key) layout +; set break enable flag for LAlt and RAlt *6019284 +X01f2: mov r0,#02eh ; 01f2 - + mov @r0,#001h ; 01f4 - $2e=1 $2e:bit0=break enable flag of LAlt + mov r0,#024h ; 01f6 - + mov @r0,#001h ; 01f8 - $24=1 $24:bit0=break enable flag of RAlt + +; set $21 to scanned data of row 8(I) [keyboard identity bits] +X01fa: mov r0,#021h ; 01fa - + mov a,r4 ; 01fc - + mov @r0,a ; 01fd - ($21)=r4 $21: r4=identity bits(row 8(I)) + anl a,#0f0h ; 01fe - + mov r4,a ; 0200 - r4=r4&f0h + ret ; 0201 - +; +; End of Scan row8(I) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Test and clear memory(3fh..00h) on Power on Reset +; +X0202: mov r0,#03fh ; 0202 - $3f +X0204: mov a,@r0 ; 0204 - LOOP>> + mov r1,a ; 0205 - r1=(r0) r0=3f..00 + mov a,#0ffh ; 0206 - a=ffh + mov @r0,a ; 0208 - (r0)=ffh + xrl a,@r0 ; 0209 - a=a^ffh =0?? + jnz X0224 ; 020a - jump if a!=ffh *always should be a=zero* + mov @r0,a ; 020c - (r0)=a (=0) + mov a,@r0 ; 020d - a=(r0) + jnz X0224 ; 020e - jump if a!=ffh *always should be a=zero* + mov a,r1 ; 0210 - a=r1 + mov @r0,a ; 0211 - (r0)=a (revert to origin value) + djnz r0,X0204 ; 0212 - <> a=r0=0 + call X0029 ; 0215 - r1=r1+(a), a=r0 (page0) + call X01a4 ; 0217 - r1=r1+(a), a=r0 (page1) + movp a,@a ; 0219 - + call X01a5 ; 021a - r1=r1+(a), a=r0 (page2) + movp3 a,@a ; 021c - + call X01a5 ; 021d - r1=r1+(a), a=r0 (page3) + djnz r0,X0214 ; 021f - <a:l + orl a,#0a0h ; 0229 - a=a|a0h(1010 iiii) i:keyboard id(hi-bits) + call X0339 ; 022b - queue data(a) to buffer + call X010b ; 022d - send kbd ID and wait for data from host [FC command] + strt t ; 022f - start timer +; Usually first data form keyboard at startup is A3h(sum of program memory?). +; FEh for memory error?? +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Main?? +; +; check scan code buffer to send +X0230: call X002c ; 0230 - receive/send data + mov a,r6 ; 0232 - a=r6 set by command FD Short Beep(0bh at 00edh) + jz X023d ; 0233 - + djnz r6,X023d ; 0235 - r6-- +; Buzzer off + anl bus,#07fh ; 0237 - BZ=L(off) when get to r6==0 [Short Beep ends] + mov a,r4 ; 0239 - + anl a,#07fh ; 023a - + mov r4,a ; 023c - r4=r4&7fh(BZ=L:off) r4=bus-default + +; delay for scan 192*32cycle? +X023d: mov a,t ; 023d - a=t(timer) + add a,#064h ; 023e - a=a+64h + jnc X023d ; 0240 - delay for scan + clr a ; 0242 - a=0 + mov t,a ; 0243 - t=0 timer clear + +; Start matrix scan +; r7=r4&c0h +X0244: mov a,r4 ; 0244 - a=r4 + anl a,#0c0h ; 0245 - a=a&c0h BZ=_,CLK=_,DAT=L: + mov r7,a ; 0247 - r7=r4&c0h r7=bus-current + jf1 X0253 ; 0248 - jump if F1==1 (p1/p2) + +; F1==0 + cpl f1 ; 024a - F1=1(=~F1) + mov r2,#03fh ; 024b - r2=3fh scan code seed + mov r3,#001h ; 024d - r3=01h row mask + mov r1,#015h ; 024f - r1=15h last key state + jmp X0263 ; 0251 - scan matrix p1 row + +; F1==1 +X0253: clr f0 ; 0253 - F0=0 + clr f1 ; 0254 - F1=0 + mov r2,#077h ; 0255 - r2=77h scan code seed + mov r3,#002h ; 0257 - r3=02h + mov r1,#01ch ; 0259 - r1=1ch last key state + jmp X0287 ; 025b - Scan matrix p2 row +; +; INPUT: F1=0 +X025d: cpl f1 ; 025d - F1=~F1=1 + call X002c ; 025e - receive/send data + clr f1 ; 0260 - F1=0 + jmp X0244 ; 0261 - + +;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; scan matrix p1 row +; INPUT: F1=1, r1=15h, r2=3fh, r3=01h, r7=r4&c0h +; (r1): last state +; +; r0:col, r7:bus-current, r3:row(drive H), r4=bus-default +; +; $15: bit7 +; +; bus: xxxS Gccc +; +X0263: mov a,#008h ; 0263 - a=8 LOOP>>> + mov r0,a ; 0265 - r0=08h =column + orl a,r7 ; 0266 - a=08h|r7 + mov r7,a ; 0267 - r7=a =xxxx 1ccc(G:1 column:ccc) r7=P1 value +X0268: dec r7 ; 0268 - LOOP>> r7-- + mov a,r7 ; 0269 - a=r7 + outl bus,a ; 026a - [select column] + orl bus,#010h ; 026b - sensor out=H [sensor clamp=H]??? + mov a,r3 ; 026d - a=r3 current row + outl p1,a ; 026e - drive line with H [select row] + mov a,r4 ; 026f - a=r4 bus default value + outl bus,a ; 0270 - [revert bus default] + orl bus,#008h ; 0271 - D3:H sensor-G [strobe]??? hold? clean Sensor? + anl p1,#000h ; 0273 - [unselect row] + + jnt0 X02ab ; 0275 - sensor out==0 +; Sensor==1[key is on] + mov a,@r1 ; 0277 - a=$(r1); r1=15... last key state + jb7 X02e5 ; 0278 - jump if a:bit7==1(off) press +; a:bit7==0(last key state is on) same as last +;On->On + + +; Go to next column +X027a: rl a ; 027a - a=a<<1 + mov @r1,a ; 027b - (r1)=a; (r1)=(r1)<<1 next col of last key state +X027c: dec r2 ; 027c - r2-- [key index of scan code table] + djnz r0,X0268 ; 027d - <> + mov r0,a ; 0289 - r0=8 + orl a,r7 ; 028a - a=a|r7 + mov r7,a ; 028b - r7=a +X028c: dec r7 ; 028c - r7-- LOOP>> + mov a,r7 ; 028d - a=r7 + outl bus,a ; 028e - [select column] + mov a,r4 ; 0293 - bus default value + outl bus,a ; 0294 - [revert bus default] + orl bus,#008h ; 0295 - [strobe] + anl p2,#000h ; 0297 - p2=00h [unselect row] + jnt0 X02ab ; 0299 - jump if sensor out==0(key is on) +; sensor==1(key is off) + mov a,@r1 ; 029b - a=(r1) [last key state] + jb7 X02e5 ; 029c - jump if a:bit7==1(off) press + +; a:bit7==0(last key state is on) +X029e: rl a ; 029e - a=a<<1 + mov @r1,a ; 029f - (r1)=a [next last key bit] +X02a0: dec r2 ; 02a0 - r2--(77h) + djnz r0,X028c ; 02a1 - jump if r0--!=0 <on) +; +; last:bit7==0(off) && sensor=0(on) + orl a,#080h ; 02b6 - 0:on 1:off + rl a ; 02b8 - + mov @r1,a ; 02b9 - (r1)=(r1)<<1 next column + call X0325 ; 02ba - key configure flag + ; (a:bit1=repeat enable, a:bit0=break enable) +; if keyconf:bit0==1 then set release flag + jb0 X02fd ; 02bc - r2=r2|80h [press flag] +; if keyconf:bit1==1 then set repeat + jb1 X02e1 ; 02be - r5=repeat delay [repeat] + +; get scan code and queue it into buffer +X02c0: call translate034E ; 02c0 - a=scancode + call X0339 ; 02c2 - queue data to buffer + call X0303 ; 02c4 - [r1=a=address of last key state] +X02c6: jf1 X027c ; 02c6 - next col(F1==1) + jmp X02a0 ; 02c8 - next col(F1==0) + +; +; [hold key] +; +; last key is on and sensor==0(on) (on->on) +X02ca: rl a ; 02ca - + mov @r1,a ; 02cb - (r1)=(r1)<<1 + call X0325 ; 02cc - key configure flag + ; (a:bit1=repeat enable, a:bit0=break enable) +; repeat:flag + jb1 X02d4 ; 02ce - [repeat] + +; if repeat:flag(bit1)==0 (no repeat) +X02d0: call X0303 ; 02d0 - r1=r2&0fh+0eh address of last key state + jmp X02c6 ; 02d2 - goto next col + +; if flag:bit1==1 (repeat) +X02d4: jf0 X02dd ; 02d4 - + +; F0==0 + cpl f0 ; 02d6 - F0=~F0=1 + djnz r5,X02d0 ; 02d7 - + mov r5,#007h ; 02d9 - r5=07h repeat interval + jmp X02c0 ; 02db - send scan code + +; F0==1 +X02dd: mov r5,#028h ; 02dd - r5=28h repeat delay(for first repeat) + jmp X02d0 ; 02df - +; +X02e1: mov r5,#028h ; 02e1 - r5=28h repeat delay(for first repeat) + jmp X02c0 ; 02e3 - send scan code + + +; +; debouncing and change last key state: press +; +; INPUT: (r1): last key status +; +; (r1):bit7==1(last key is on) && Sensor==1(key is off) [release] +X02e5: call X030d ; 02e5 - a=0(sensor out=1), ffh(sensor out=0) [Sense key] + jnz X02f8 ; 02e7 - + call X030d ; 02e9 - [Sense key] + jnz X02f8 ; 02eb - \_debouncing +; Sensor==1(a=0) [Debounced] + +; +; on->off [release] +; + mov a,@r1 ; 02ed - a=(r1) RAM + anl a,#07fh ; 02ee - a=a&7fh last state=0(0:on 1:off) + rl a ; 02f0 - a=a<<1 + mov @r1,a ; 02f1 - (r1)=a +; + call X0325 ; 02f2 - key configure flag + ; (a:bit1=repeat enable, a:bit0=break enable) + jb0 X02c0 ; 02f4 - goto translate if a:bit0==1 + jmp X02d0 ; 02f6 - + +; go to next col scan Sensor==1 +X02f8: mov a,@r1 ; 02f8 - + jf1 X027a ; 02f9 - goto next col scan(p1) if F1==1 [Next column] + jmp X029e ; 02fb - goto next col scan(p2) else [Next column] + +; +; add press flag(bit8) +; r2=key index +X02fd: mov a,r2 ; 02fd - [key index] + orl a,#080h ; 02fe - + mov r2,a ; 0300 - r2=r2|80h **press flag** + jmp X02c0 ; 0301 - + +; Address of last key state +; INPUT: r2=key index +; OUTPUT: r1=(r2>>3)&0fh+0eh = address of last key state +X0303: mov a,r2 ; 0303 - a=r2 key index + rr a ; 0304 - + rr a ; 0305 - + rr a ; 0306 - a= a>>3 + anl a,#00fh ; 0307 - a= a & 0fh + add a,#00eh ; 0309 - a= a + 0eh + mov r1,a ; 030b - r1=a + ret ; 030c - + +;;;;;;;;;;;;;;;;;;;;;;; +; Sense key +; INPUT: r7: bus-current, F1:0(p2),1(p1) r4=bus-default, r3=row +; RETURN: a=0xff(sensor out=0, press), 0(sensor out=1, release) +; +X030d: mov a,r7 ; 030d - r7: bus-current + outl bus,a ; 030e - [Select column] + orl bus,#010h ; 030f - [Charge: D4] + mov a,r3 ; 0311 - r3: row(drive) select p1(F1=1)/p2(F1=0) setting + jf1 X0317 ; 0312 - +; F1==0 + outl p2,a ; 0314 - set p2 [Select row] + jmp X0318 ; 0315 - +; F1==1 +X0317: outl p1,a ; 0317 - set p1 [Select row] + +X0318: mov a,r4 ; 0318 - r4: bus-default + outl bus,a ; 0319 - set bus + clr a ; 031a - a=0 + orl bus,#008h ; 031b - [Strobe: D3] + anl p1,#000h ; 031d - clear p1 [Unselect row] + anl p2,#000h ; 031f - clear p2 [Unselect row] + + jt0 X0324 ; 0321 - sensor out==1 +sensor out==0 + cpl a ; 0323 - a=0xff [press(on)] +sensor out==1 +X0324: ret ; 0324 - a=0 [release(off)] +; +; End of Main +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; key configure flags +; +; INPUT: r2=key index(p1:-3fh, p2:-77h) (aaaaaaii) +: OUTPUT: a=Key configure 2-bit flags; bit0 and 1 are only valid. (------rb) +; +: Key configure flags are retained in RAM($22-3F) and +; Key configure flags use 2bit per key so that a byte can has flags of four key like: +; bit 7 6 5 4 3 2 1 0 +; 3r 3b 2r 2b 1r 1b 0r 0b +; where r=repeat enable, b=break code(release) eanble +; +X0325: mov a,r2 ; 0325 - a=r2 index + rr a ; 0326 - + rr a ; 0327 - a=a>>2 bit7-2 of index(aaaaaa) + add a,#022h ; 0328 - a=a+22h $22+aaaaaa + mov r1,a ; 032a - r1=a + mov a,@r1 ; 032b - a=(r1) $22-3F(ignored bit7,bit6) + mov r1,a ; 032c - r1=a r1=($22-3F) ???? + mov a,r2 ; 032d - a=r2 index + anl a,#003h ; 032e - a=a&03h a=bit0,bit1 of index + xch a,r1 ; 0330 - a<->r1 r1=bit0,bit1 of index, a=($22-3F) + inc r1 ; 0331 - r1++ =1-4 +X0332: djnz r1,X0335 ; 0332 - while --r1>0 + ret ; 0334 - + +; place flags of the key on bit0 and 1 +X0335: rr a ; 0335 - + rr a ; 0336 - a=a>>2; a=$22-3F + jmp X0332 ; 0337 - + +; +; Queue data to bottom of outgoing buffer(bank1:r5,r6,r7) +; INPUT: a=data, r2=??? +; OUTPUT: r2=r2&07h +; a->r5->r6->r7 +X0339: sel rb1 ; 0339 - switch to bank1 + inc a ; 033a - a++ + xch a,r5 ; 033b - a<->r5 + jz X0348 ; 033c - + xch a,r5 ; 033e - + xch a,r6 ; 033f - + jz X0348 ; 0340 - + xch a,r6 ; 0342 - + xch a,r7 ; 0343 - + jz X0348 ; 0344 - + mov r7,#0ffh ; 0346 - buffer overflow +X0348: sel rb0 ; 0348 - switch to bank0 + mov a,r2 ; 0349 - a=r2 + anl a,#07fh ; 034a - a=a&7fh + mov r2,a ; 034c - r2=a + ret ; 034d - +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Translate key index into scancode +; +; INPUT: r2=keyindex [bit7:release flag(1:release/0:press), bit6-0:index] +; OUTPUT: a=scancode +translate034E: + mov r1,#021h ; 034e - + mov a,@r1 ; 0350 - a=$21 $21:bit6,5,4 = traslate table + anl a,#0f0h ; 0351 - a=a & f0h + xrl a,#020h ; 0353 - a=a ^ 20h $21:bit5(0010 0000) 0010 xxxx => table1 + jz X0361 ; 0355 - if a==0 read table1 (6019273 50-key) + xrl a,#010h ; 0357 - a=a ^ 10h $21:bit4(0001 0000) 0011 xxxx => table2 + jz X0370 ; 0359 - read table2 (6019284 62-key) + xrl a,#070h ; 035b - a=a & 70h $21:bit6(0111 0000) 0100 xxxx => table2 + jz X0370 ; 035d - read table2 (6019303 77-key) + mov a,r2 ; 035f - else use r2(keyindex) instead of scancode + ret ; 0360 - +; table1(8x7=56) +X0361: mov a,r2 ; 0361 - keyindex + anl a,#07fh ; 0362 - + add a,#078h ; 0364 - table1 +; read table +X0366: movp3 a,@a ; 0366 - read scancode from table a=scan code + xch a,r2 ; 0367 - a=keyindex, r2=scancode + jb7 X036c ; 0368 - if keyindex:bit7==1 [relase event] + xch a,r2 ; 036a - a=scancode, r2=keyindex + ret ; 036b - +; release flag +X036c: xch a,r2 ; 036c - + orl a,#080h ; 036d - [[[[[release flag(bit7)]]]]] + ret ; 036f - a: scan code +; table2(8X10=80) +X0370: mov a,r2 ; 0370 - + anl a,#07fh ; 0371 - + add a,#0b0h ; 0373 - table2 + jmp X0366 ; 0375 - read table + + +; maybe 'salt' to make sum of program memory 'zero'(at 0222h) + db 0b6h ; 0377 6 + + +;;;;;;;;;;;;;;;;;; +; +; Scancode table +; + +;;;;;;;;;;;;;;;;;; +; Used for 6019273 Add Key Parameter RAM +table1: db 03fh,037h,03ah,036h,02ah,035h,022h,023h ; 0378 + db 03bh,02bh,039h,031h,032h,029h,021h,0ffh ; 0380 + db 033h,038h,0ffh,030h,028h,0ffh,020h,0ffh ; 0388 + db 017h,01dh,01ch,015h,00ch,00dh,004h,005h ; 0390 + db 00fh,01fh,01bh,013h,014h,00bh,003h,0ffh ; 0398 + db 00eh,01ah,019h,012h,009h,00ah,001h,002h ; 03a0 + db 016h,01eh,018h,010h,011h,008h,000h,0ffh ; 03a8 + +;;;;;;;;;;;;;;;;;; +; Used for 6019284 and 6019303 Add Key Parameter RAM +table2: db 02fh,03dh,03ch,02dh,01dh,01ch,00ch,00eh ; 03b0 Enter ... BS $22, $23 + db 03fh,042h,03bh,02bh,02ch,01bh,01fh,00dh ; 03b8 RAlt ... $24, $25 + db 039h,03ah,029h,02ah,002h,003h,00ah,00fh ; 03c0 ... $26, $27 + db 038h,037h,028h,027h,017h,001h,008h,009h ; 03c8 ... $28, $29 + db 040h,036h,025h,026h,015h,016h,011h,012h ; 03d0 ... $2a, $2b + db 035h,034h,023h,024h,013h,014h,01ah,010h ; 03d8 ... $2c, $2d + db 03fh,032h,033h,022h,021h,006h,005h,019h ; 03e0 LAlt ... $2e, $2f + db 031h,041h,03eh,030h,020h,004h,000h,018h ; 03e8 Reset ... 1 $30, $31 + db 071h,076h,075h,066h,055h,056h,045h,046h ; 03f0 Used for 77-key $32, $33 + db 077h,067h,074h,064h,065h,054h,0ffh,044h ; 03f8 Used for 77-key $34, $35 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +; +; symbol equates +; +; these are symbols from the control +; file that are referenced in the code +; +jump_table equ 0fah +; + end From 229693e687a912150e9ac17d1eb23032f2305470 Mon Sep 17 00:00:00 2001 From: Haruka Inoue Date: Tue, 23 Jul 2019 10:14:59 +0900 Subject: [PATCH 34/71] Add PC-8801 Keyboard support. (#620) * Add PC-8801 Keyboard support. * Add PC-8801 Keyboard support. * Add PC-8801 Keyboard support. --- converter/pc88_usb/Makefile | 101 ++++++++++++++++++ converter/pc88_usb/Makefile.32u4 | 4 + converter/pc88_usb/Makefile.unimap | 101 ++++++++++++++++++ converter/pc88_usb/Makefile.unimap.32u4 | 4 + converter/pc88_usb/README | 73 +++++++++++++ converter/pc88_usb/config.h | 121 ++++++++++++++++++++++ converter/pc88_usb/keymap.c | 130 ++++++++++++++++++++++++ converter/pc88_usb/matrix.c | 95 +++++++++++++++++ converter/pc88_usb/unimap.c | 45 ++++++++ converter/pc88_usb/unimap_trans.h | 64 ++++++++++++ 10 files changed, 738 insertions(+) create mode 100644 converter/pc88_usb/Makefile create mode 100644 converter/pc88_usb/Makefile.32u4 create mode 100644 converter/pc88_usb/Makefile.unimap create mode 100644 converter/pc88_usb/Makefile.unimap.32u4 create mode 100644 converter/pc88_usb/README create mode 100644 converter/pc88_usb/config.h create mode 100644 converter/pc88_usb/keymap.c create mode 100644 converter/pc88_usb/matrix.c create mode 100644 converter/pc88_usb/unimap.c create mode 100644 converter/pc88_usb/unimap_trans.h diff --git a/converter/pc88_usb/Makefile b/converter/pc88_usb/Makefile new file mode 100644 index 00000000..c6af9735 --- /dev/null +++ b/converter/pc88_usb/Makefile @@ -0,0 +1,101 @@ +# Target file name (without extension). +TARGET ?= pc88_usb + +# Directory common source filess exist +TMK_DIR ?= ../../tmk_core + +# Directory keyboard dependent files exist +TARGET_DIR ?= . + +# keyboard dependent files +# Add one of lines below to select serial protocol implementation +# protocol/serial_uart.c +# protocol/serial_soft.c +SRC ?= matrix.c \ + protocol/serial_uart.c + +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 + + +# 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 + + +# Build Options +# *Comment out* to disable the options. +# +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 +##UNIMAP_ENABLE ?= yes + + +# Boot Section Size in bytes +# Teensy halfKay 512 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# +# 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 + + +# 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/pc88_usb/Makefile.32u4 b/converter/pc88_usb/Makefile.32u4 new file mode 100644 index 00000000..c27f1261 --- /dev/null +++ b/converter/pc88_usb/Makefile.32u4 @@ -0,0 +1,4 @@ +TARGET ?= pc88_usb_32u4 +MCU ?= atmega32u4 + +include Makefile diff --git a/converter/pc88_usb/Makefile.unimap b/converter/pc88_usb/Makefile.unimap new file mode 100644 index 00000000..da526033 --- /dev/null +++ b/converter/pc88_usb/Makefile.unimap @@ -0,0 +1,101 @@ +# Target file name (without extension). +TARGET ?= pc88_usb_unimap + +# Directory common source filess exist +TMK_DIR ?= ../../tmk_core + +# Directory keyboard dependent files exist +TARGET_DIR ?= . + +# keyboard dependent files +# Add one of lines below to select serial protocol implementation +# protocol/serial_uart.c +# protocol/serial_soft.c +SRC ?= matrix.c \ + protocol/serial_uart.c + +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 + + +# 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 + + +# Build Options +# *Comment out* to disable the options. +# +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 +UNIMAP_ENABLE ?= yes + + +# Boot Section Size in bytes +# Teensy halfKay 512 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# +# 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 + + +# 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/pc88_usb/Makefile.unimap.32u4 b/converter/pc88_usb/Makefile.unimap.32u4 new file mode 100644 index 00000000..11ab3ad7 --- /dev/null +++ b/converter/pc88_usb/Makefile.unimap.32u4 @@ -0,0 +1,4 @@ +TARGET ?= pc88_usb_32u4_unimap +MCU ?= atmega32u4 + +include Makefile.unimap diff --git a/converter/pc88_usb/README b/converter/pc88_usb/README new file mode 100644 index 00000000..eba21118 --- /dev/null +++ b/converter/pc88_usb/README @@ -0,0 +1,73 @@ +PC88(Late type) to USB keyboard protocol converter +======================================= +Target MCU is ATMega32u2 but other USB capable AVR will also work. + + +README FIRST +--------- +This converter is for TYPE-B keyboard. For keyboards other than TYPE-B, +change the mode switch on the back of the keyboard. + +Stand the left foot on the back of the keyboard and there are two slits. +There is a mode change switch in the back of it. + +When this switch is up, TYPE-B mode is set. + +When connecting a keyboard to this adapter, be sure to set to TYPE-B mode. + + + +Connector +--------- +On host/converter: + + 5Pin mini DIN + ___ ___ + / |_| \ + / 5 4 \ + | 3 | 2 | + \_ 1 _/ + \_____/ + (receptacle) + + +Wiring: You can change this with editing config.h. + + Pin mini DIN MCU + ---------------------------------- + 1 5V VCC + 2 GND GND + 3 DATA RD2 + 4 NC + 5 NC + + + + +Protocol +-------- +Signal: Asynchronous, Positive logic, 20800bps, Least bit first +Frame format: 1-Start bit(Lo), 8-Data bits, non-Parity, 1-Stop bit + + + +Build Firmware +-------------- +Just use 'make' to bild firmware for TMK PC88 converter. + + $ make -f Makefile.unimap clean + $ make -f Makefile.unimap + +To flash firmware + + $ make -f Makefile.unimap dfu + +then push button on converter to flash firmware. + +If you are using ATMega32u4 based board instead of premade TMK PC88 converter(ATMega32u2) use following commands. + + $ make -f Makefile.unimap.32u4 clean + $ make -f Makefile.unimap.32u4 + $ make -f Makefile.unimap.32u4 dfu + + diff --git a/converter/pc88_usb/config.h b/converter/pc88_usb/config.h new file mode 100644 index 00000000..97ae6e3d --- /dev/null +++ b/converter/pc88_usb/config.h @@ -0,0 +1,121 @@ +/* +Copyright 2012 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 CONFIG_H +#define CONFIG_H + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x8801 +#define DEVICE_VER 0x0101 +#define MANUFACTURER t.m.k. +#define PRODUCT PC88 keyboard converter +#define DESCRIPTION converts PC88 keyboard protocol into USB + + +/* matrix size */ +#define MATRIX_ROWS 16 +#define MATRIX_COLS 8 + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->keys[0] == KC_STOP || \ + keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) \ +) + + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/* + * PC88 Serial(USART) configuration + * asynchronous, positive logic, 20800baud, bit order: LSB first + * 1-start bit, 8-data bit, non parity, 1-stop bit + */ + +/* + * Software Serial + * Add protocol/serial_soft.c to SRC in Makefile + */ +#define SERIAL_SOFT_BAUD 20800 +#define SERIAL_SOFT_PARITY_NONE +#define SERIAL_SOFT_BIT_ORDER_LSB +#define SERIAL_SOFT_LOGIC_POSITIVE +/* RXD Port */ +#define SERIAL_SOFT_RXD_DDR DDRD +#define SERIAL_SOFT_RXD_PORT PORTD +#define SERIAL_SOFT_RXD_PIN PIND +#define SERIAL_SOFT_RXD_BIT 2 +#define SERIAL_SOFT_RXD_READ() (SERIAL_SOFT_RXD_PIN&(1<>8); /* baud rate */ \ + UCSR1B |= (1< + +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 "keycode.h" +#include "action.h" +#include "util.h" +#include "serial.h" +#include "keymap.h" + + + + +// Following macros help you to define a keymap with the form of actual keyboard layout. + +/* Keyboard Scan codes + * ,---. ,---. ,------------------------. ,------------------------. ,-------. + * | 60| | 61| | 62 | 63 | 64 | 65 | 66 | | 67 | 68 | 69 | 6A | 6B | | 36| 37| + * `---' `---' `------------------------' `------------------------' `-------' + * ,---------------------------------------------------------------. ,-------. ,---------------. + * | 00 | 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E | | 38| 39| | 3E| 3F| 4D| 41| + * |---------------------------------------------------------------| `-------' |---------------| + * | 0F | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| | | 42| 43| 44| 45| + * |--------------------------------------------------------` 1C | ,-------. |---------------| + * | 74| 71| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| | | 3A | | 46| 47| 48| 49| + * |---------------------------------------------------------------| |-------| |---------------| + * | 70 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 78 | | 3B| 3C| | 4A| 4B| 4C| 4D| + * `---------------------------------------------------------------' |-------| |---------------| + * | 72| 73| 51 | 34 | 35 | 7A| 7B| | 3D | | 4E| 4F| 50| 79| + * `-------------------------------------------' `-------' `---------------' + */ + +#define KEYMAP( \ + K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K38, K39, K3E, K3F, K40, K41, \ + K0F, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K42, K43, K44, K45, \ + K74, K71, K1D, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27,K28, K3A, K46, K47, K48, K49, \ + K70, K29, K2A, K2B, K2C, K2D, K2E, K2F, K30, K31, K32, K33, K78, K3B, K3C, K4A, K4B, K4C, K4D, \ + K72, K73, K51, K34, K35, K7A, K7B, K3D, K4E, K4F, K50, K79 \ +) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ + { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ + { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ + { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ + { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ + { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ + { KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ + { KC_##K50, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ + { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \ + { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_NO, KC_NO, KC_NO, KC_NO } \ +} + + +const action_t fn_actions[] PROGMEM = { + [0] = ACTION_FUNCTION(0), // toggle all LEDs +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + static bool led = false; + switch (id) { + case 0: + if (record->event.pressed) { + if ((led = !led)) + serial_send(0x80); // all on + else + serial_send(0xff); // all off + } + break; + } +} + + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keyboard Scan codes + * ,---. ,---. ,------------------------. ,------------------------. ,-------. + * | 60| | 61| | 62 | 63 | 64 | 65 | 66 | | 67 | 68 | 69 | 6A | 6B | | 36| 37| + * `---' `---' `------------------------' `------------------------' `-------' + * ,---------------------------------------------------------------. ,-------. ,---------------. + * | 00 | 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E | | 38| 39| | 3E| 3F| 4D| 41| + * |---------------------------------------------------------------| `-------' |---------------| + * | 0F | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| | | 42| 43| 44| 45| + * |--------------------------------------------------------` 1C | ,-------. |---------------| + * | 74| 71| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| | | 3A | | 46| 47| 48| 49| + * |---------------------------------------------------------------| |-------| |---------------| + * | 70 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 78 | | 3B| 3C| | 4A| 4B| 4C| 4D| + * `---------------------------------------------------------------' |-------| |---------------| + * | 72| 73| 51 | 34 | 35 | 7A| 7B| | 3D | | 4E| 4F| 50| 79| + * `-------------------------------------------' `-------' `---------------' + */ + /* ANSI */ + KEYMAP( + PAUS,PSCR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, PGDN,PGUP, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSLS,BSPC, INS, DEL, HOME, END,PMNS,PSLS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, ENT, P7, P8, P9, PAST, + LCTL,LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT,F18, UP, P4, P5, P6, PPLS, + LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH,GRV, RSFT, LEFT,RGHT, P1, P2, P3, PEQL, + F19, LGUI,LALT, SPC, RALT, APP, RGUI, DOWN, P0, PCMM,PDOT,PENT + ), + /* JIS */ + KEYMAP( + PAUS, PSCR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, PGDN,PGUP, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, JYEN,BSPC, INS, DEL, HOME, END,PMNS,PSLS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, ENT, P7, P8, P9, PAST, + LCTL,LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NUHS, UP, P4, P5, P6, PPLS, + LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, RSFT, LEFT,RGHT, P1, P2, P3, PEQL, + KANA,LALT,MHEN, SPC, HENK, RGUI,ZKHK, DOWN, P0, PCMM,PDOT,PENT + ), +}; diff --git a/converter/pc88_usb/matrix.c b/converter/pc88_usb/matrix.c new file mode 100644 index 00000000..4fb10bd1 --- /dev/null +++ b/converter/pc88_usb/matrix.c @@ -0,0 +1,95 @@ +/* +Copyright 2012 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 +#include +#include "print.h" +#include "util.h" +#include "matrix.h" +#include "led.h" +#include "debug.h" +#include "protocol/serial.h" + + +/* + * Matrix Array usage: + * + * ROW: 16(4bits) + * COL: 8(3bits) + * + * 8bit wide + * +---------+ + * 0|00 ... 07| + * 1|08 ... 0F| + * :| ... | + * :| ... | + * E|70 ... 77| + * F|78 ... 7F| + * +---------+ + */ +static uint8_t matrix[MATRIX_ROWS]; +#define ROW(code) ((code>>3)&0xF) +#define COL(code) (code&0x07) + +void matrix_init(void) +{ + debug_keyboard = true; + + serial_init(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; + + print("matrix_init done.\n"); + return; +} + +uint8_t matrix_scan(void) +{ + uint16_t code; + code = serial_recv2(); + if (code == -1) { + return 0; + } + + print_hex8(code); print(" "); + + if (code&0x80) { + // break code + if (matrix_is_on(ROW(code), COL(code))) { + matrix[ROW(code)] &= ~(1< + +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, COMM, + LSFT,NUBS,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,FN0, RCTL, LEFT,DOWN,RGHT, P0, DOT, PEQL + ), + 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/pc88_usb/unimap_trans.h b/converter/pc88_usb/unimap_trans.h new file mode 100644 index 00000000..80f669f2 --- /dev/null +++ b/converter/pc88_usb/unimap_trans.h @@ -0,0 +1,64 @@ +/* +Copyright 2018 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 _TRANS_H +#define _TRANS_H + +#include +#include +#include "unimap.h" + + +/* Mapping PC88 scan codes to UNIMAP layout codes + * + * PC88 scan codes + * ,---. ,---. ,------------------------. ,------------------------. ,-------. + * | 60| | 61| | 62 | 63 | 64 | 65 | 66 | | 67 | 68 | 69 | 6A | 6B | | 36| 37| + * `---' `---' `------------------------' `------------------------' `-------' + * ,---------------------------------------------------------------. ,-------. ,---------------. + * | 00 | 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E | | 38| 39| | 3E| 3F| 4D| 41| + * |---------------------------------------------------------------| `-------' |---------------| + * | 0F | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| | | 42| 43| 44| 45| + * |--------------------------------------------------------` 1C | ,-------. |---------------| + * | 74| 71| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| | | 3A | | 46| 47| 48| 49| + * |---------------------------------------------------------------| |-------| |---------------| + * | 70 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 78 | | 3B| 3C| | 4A| 4B| 4C| 4D| + * `---------------------------------------------------------------' |-------| |---------------| + * | 72| 73| 51 | 34 | 35 | 7A| 7B| | 3D | | 4E| 4F| 50| 79| + * `-------------------------------------------' `-------' `---------------' + * + * + */ +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_ESC, UNIMAP_1, UNIMAP_2, UNIMAP_3, UNIMAP_4, UNIMAP_5, UNIMAP_6, UNIMAP_7 }, /* 00-07 */ + { UNIMAP_8, UNIMAP_9, UNIMAP_0, UNIMAP_MINS, UNIMAP_EQL, UNIMAP_JYEN, UNIMAP_BSPC, UNIMAP_TAB }, /* 08-0F */ + { UNIMAP_Q, UNIMAP_W, UNIMAP_E, UNIMAP_R, UNIMAP_T, UNIMAP_Y, UNIMAP_U, UNIMAP_I }, /* 10-17 */ + { UNIMAP_O, UNIMAP_P, UNIMAP_LBRC, UNIMAP_RBRC, UNIMAP_ENT, UNIMAP_A, UNIMAP_S, UNIMAP_D }, /* 18-1F */ + { UNIMAP_F, UNIMAP_G, UNIMAP_H, UNIMAP_J, UNIMAP_K, UNIMAP_L, UNIMAP_SCLN, UNIMAP_QUOT }, /* 20-27 */ + { UNIMAP_BSLS, UNIMAP_Z, UNIMAP_X, UNIMAP_C, UNIMAP_V, UNIMAP_B, UNIMAP_N, UNIMAP_M }, /* 28-2F */ + { UNIMAP_COMM, UNIMAP_DOT, UNIMAP_SLSH, UNIMAP_RO, UNIMAP_SPC, UNIMAP_HENK, UNIMAP_PGDN, UNIMAP_PGUP }, /* 30-37 */ + { UNIMAP_INS, UNIMAP_DEL, UNIMAP_UP, UNIMAP_LEFT, UNIMAP_RGHT, UNIMAP_DOWN, UNIMAP_HOME, UNIMAP_END }, /* 38-3F */ + { UNIMAP_PMNS, UNIMAP_PSLS, UNIMAP_P7, UNIMAP_P8, UNIMAP_P9, UNIMAP_PAST, UNIMAP_P4, UNIMAP_P5 }, /* 40-47 */ + { UNIMAP_P6, UNIMAP_PPLS, UNIMAP_P1, UNIMAP_P2, UNIMAP_P3, UNIMAP_PEQL, UNIMAP_P0, UNIMAP_PCMM }, /* 48-4F */ + { UNIMAP_PDOT, UNIMAP_MHEN, UNIMAP_F11, UNIMAP_F12, UNIMAP_F13, UNIMAP_F14, UNIMAP_F15, UNIMAP_NO }, /* 50-57 */ + { UNIMAP_F21, UNIMAP_F22, UNIMAP_F23, UNIMAP_F24, UNIMAP_NO, UNIMAP_NO, UNIMAP_APP, UNIMAP_NO }, /* 58-5F */ + { UNIMAP_PAUS, UNIMAP_PSCR, UNIMAP_F1, UNIMAP_F2, UNIMAP_F3, UNIMAP_F4, UNIMAP_F5, UNIMAP_F6 }, /* 60-67 */ + { UNIMAP_F7, UNIMAP_F8, UNIMAP_F9, UNIMAP_F10, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* 68-6F */ + { UNIMAP_LSFT, UNIMAP_CAPS, UNIMAP_KANA, UNIMAP_LALT, UNIMAP_LCTL, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, /* 70-77 */ + { UNIMAP_RSFT, UNIMAP_PENT, UNIMAP_RGUI, UNIMAP_GRV, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO } /* 78-7F */ +}; + +#endif From 841c7d9ab411f49819735fc9629d55068d28e4e3 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Sep 2019 23:41:22 +0900 Subject: [PATCH 35/71] pc98_usb: Change LUFA build option for #627 --- converter/pc98_usb/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/converter/pc98_usb/Makefile b/converter/pc98_usb/Makefile index a3cf2a29..0f284a1b 100644 --- a/converter/pc98_usb/Makefile +++ b/converter/pc98_usb/Makefile @@ -50,7 +50,7 @@ ARCH ?= AVR8 F_USB ?= $(F_CPU) # Interrupt driven control endpoint task -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT +#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Build Options From 1ac07ccf99faa91eeb2b128be51cf6b36eb6376e Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Sep 2019 23:43:29 +0900 Subject: [PATCH 36/71] pc98_usb: Fix debug print codes --- converter/pc98_usb/matrix.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/converter/pc98_usb/matrix.c b/converter/pc98_usb/matrix.c index 84a29382..b44d3ef5 100644 --- a/converter/pc98_usb/matrix.c +++ b/converter/pc98_usb/matrix.c @@ -71,12 +71,12 @@ static void pc98_inhibit_repeat(void) RETRY: pc98_send(0x9C); code = pc98_wait_response(); - if (code != -1) xprintf("send 9C: %02X\n", code); + if (code != -1) dprintf("send 9C: %02X\n", code); if (code != 0xFA) return; pc98_send(0x70); code = pc98_wait_response(); - if (code != -1) xprintf("send 70: %02X\n", code); + if (code != -1) dprintf("send 70: %02X\n", code); if (code != 0xFA) goto RETRY; } @@ -87,18 +87,17 @@ static void pc98_led_set(void) RETRY: pc98_send(0x9D); code = pc98_wait_response(); - if (code != -1) xprintf("send 9D: %02X\n", code); + if (code != -1) dprintf("send 9D: %02X\n", code); if (code != 0xFA) return; pc98_send(pc98_led); code = pc98_wait_response(); - if (code != -1) xprintf("send %02X: %02X\n", pc98_led, code); + if (code != -1) dprintf("send %02X: %02X\n", pc98_led, code); if (code != 0xFA) goto RETRY; } void matrix_init(void) { - debug_keyboard = true; PC98_RST_DDR |= (1< Date: Thu, 5 Sep 2019 00:01:07 +0900 Subject: [PATCH 37/71] pc98_usb: Fix STOP as magic key --- converter/pc98_usb/config.h | 2 +- converter/pc98_usb/unimap.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/converter/pc98_usb/config.h b/converter/pc98_usb/config.h index d3898d90..b7a00ed7 100644 --- a/converter/pc98_usb/config.h +++ b/converter/pc98_usb/config.h @@ -32,7 +32,7 @@ along with this program. If not, see . /* key combination for command */ #define IS_COMMAND() ( \ - keyboard_report->keys[0] == KC_STOP || \ + matrix_is_on(12, 0) || /* STOP */ \ keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) \ ) diff --git a/converter/pc98_usb/unimap.c b/converter/pc98_usb/unimap.c index 20befeaf..c84953ba 100644 --- a/converter/pc98_usb/unimap.c +++ b/converter/pc98_usb/unimap.c @@ -26,7 +26,7 @@ const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { #endif /* ,---. ,---. ,------------------------. ,------------------------. ,------------------------. - |Pau| |PrS| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| F13| F14| F15| + | | |PrS| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| F13| F14| F15| `---' `---' `------------------------' `------------------------' `------------------------' ,-------------------------------------------------------------. ,-------. ,---------------. | Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bspc| |Ins|Del| |Hom|End| -| /| @@ -42,7 +42,7 @@ const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { Caps and Kana are locking keys. */ UNIMAP_PC98( - PAUS,PSCR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, + NO, PSCR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, DEL, HOME,END, PMNS,PSLS, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, PGDN,PGUP, P7, P8, P9, PAST, LCTL,LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS,ENT, UP, P4, P5, P6, PPLS, From f664a993d2ab876435eccf25d1ec126d1f5e3191 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 5 Sep 2019 00:20:32 +0900 Subject: [PATCH 38/71] pc98_usb: Fix scan code description --- converter/pc98_usb/README | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/converter/pc98_usb/README b/converter/pc98_usb/README index 4c35ed32..dceb3ce4 100644 --- a/converter/pc98_usb/README +++ b/converter/pc98_usb/README @@ -64,23 +64,23 @@ If you are using ATMega32u4 based board instead of premade TMK PC98 converter(AT PC98 Scan Codes --------------- ,---. ,---. ,------------------------. ,------------------------. ,------------------------. - |Pau| |PrS| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| F13| F14| F15| + |Stp| |Cpy| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| F13| F14| F15| `---' `---' `------------------------' `------------------------' `------------------------' ,-------------------------------------------------------------. ,-------. ,---------------. - | Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bspc| |Ins|Del| |Hom|End| -| /| + | Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bspc| |Ins|Del| |Hom|Hlp| -| /| |-------------------------------------------------------------| |-------| |---------------| - | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |PgD|PgU| | 7| 8| 9| *| + | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |RUp|RDn| | 7| 8| 9| *| |-------------------------------------------------------`Enter| |-------| |---------------| |Ctl|Cap| A| S| D| F| G| H| J| K| L| ;| '| \| | | Up | | 4| 5| 6| +| |-------------------------------------------------------------| |-------| |---------------| | Shift | Z| X| C| V| B| N| M| ,| .| /| RO| Shift | |Lef|Rig| | 1| 2| 3| =| `-------------------------------------------------------------' |-------| |---------------| - ^3|Kana|Gui|Alt|MHEN| Space |HENK|Alt|Gui|App|^2 | Down | | 0| ,| .| ^1| + |Kana|Win|GRP|NFER| Space |XFER| ^2|Win| ^3| | Down | | 0| ,| .| ^1| `-------------------------------------------------------' `-------' `---------------' - ^1: Enter on keypad is identical to Enter on alphanumeric portion. - ^2: Right Alt is ALT on DIGITAL WAVE Dboard while Menu on PC-9821 keyboard. - App is HOME key on PC98XL keyboard. - ^3: Caps and Kana are locking keys, either mechanically or by firmware emulation. + ^1: Enter on keypad is identical to Enter on alphanumeric portion + ^2: ALT on DIGITAL WAVE Dboard while Menu on PC-9821 keyboard + ^3: HOME on PC98XL keyboard + ^4: CAPS and Kana are locking keys, either mechanically or by firmware emulation ,---. ,---. ,------------------------. ,------------------------. ,------------------------. From a2e8a1b534b7d8a8ba0f79b67f07b05e35b41882 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 9 Sep 2019 11:50:11 +0900 Subject: [PATCH 39/71] ps2_usb: Make build files clean --- converter/ps2_usb/Makefile.rev1 | 7 +- converter/ps2_usb/Makefile.rev2 | 7 +- converter/ps2_usb/Makefile.unimap.rev1 | 5 - converter/ps2_usb/Makefile.unimap.rev2 | 6 - converter/ps2_usb/config_rev1.h | 147 ------------------------- converter/ps2_usb/config_rev2.h | 95 ---------------- 6 files changed, 10 insertions(+), 257 deletions(-) delete mode 100644 converter/ps2_usb/Makefile.unimap.rev1 delete mode 100644 converter/ps2_usb/Makefile.unimap.rev2 delete mode 100644 converter/ps2_usb/config_rev1.h delete mode 100644 converter/ps2_usb/config_rev2.h diff --git a/converter/ps2_usb/Makefile.rev1 b/converter/ps2_usb/Makefile.rev1 index 0d607652..dfe14991 100644 --- a/converter/ps2_usb/Makefile.rev1 +++ b/converter/ps2_usb/Makefile.rev1 @@ -1,6 +1,6 @@ -TARGET ?= ps2_usb_rev1 +TARGET ?= ps2_usb_rev1_unimap MCU = atmega32u4 -CONFIG_H = config_rev1.h +CONFIG_H = config.h BOOTLOADER_SIZE = 4096 BOOTMAGIC_ENABLE ?= no @@ -14,4 +14,7 @@ PS2_USE_USART = yes PS2_USE_INT = no PS2_USE_BUSYWAIT = no +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes + include Makefile diff --git a/converter/ps2_usb/Makefile.rev2 b/converter/ps2_usb/Makefile.rev2 index 8b34d4fa..cd9874fd 100644 --- a/converter/ps2_usb/Makefile.rev2 +++ b/converter/ps2_usb/Makefile.rev2 @@ -1,6 +1,6 @@ -TARGET ?= ps2_usb_rev2 +TARGET ?= ps2_usb_rev2_unimap MCU = atmega32u2 -CONFIG_H = config_rev2.h +CONFIG_H = config.h BOOTLOADER_SIZE = 4096 BOOTMAGIC_ENABLE ?= no @@ -14,4 +14,7 @@ PS2_USE_USART = no PS2_USE_INT = yes PS2_USE_BUSYWAIT = no +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes + include Makefile diff --git a/converter/ps2_usb/Makefile.unimap.rev1 b/converter/ps2_usb/Makefile.unimap.rev1 deleted file mode 100644 index c62b1874..00000000 --- a/converter/ps2_usb/Makefile.unimap.rev1 +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = ps2_usb_rev1_unimap -UNIMAP_ENABLE = yes -KEYMAP_SECTION_ENABLE = yes - -include Makefile.rev1 diff --git a/converter/ps2_usb/Makefile.unimap.rev2 b/converter/ps2_usb/Makefile.unimap.rev2 deleted file mode 100644 index a3bc6399..00000000 --- a/converter/ps2_usb/Makefile.unimap.rev2 +++ /dev/null @@ -1,6 +0,0 @@ -TARGET = ps2_usb_rev2_unimap -UNIMAP_ENABLE = yes -KEYMAP_SECTION_ENABLE = yes -#LUFA_DEBUG_SUART = yes - -include Makefile.rev2 diff --git a/converter/ps2_usb/config_rev1.h b/converter/ps2_usb/config_rev1.h deleted file mode 100644 index ce670f50..00000000 --- a/converter/ps2_usb/config_rev1.h +++ /dev/null @@ -1,147 +0,0 @@ -/* -Copyright 2012 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 CONFIG_H -#define CONFIG_H - -#include - -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6512 -#define DEVICE_VER 0x0001 -#define MANUFACTURER t.m.k. -#define PRODUCT PS/2 keyboard converter -#define DESCRIPTION convert PS/2 keyboard to USB - - -/* matrix size */ -#define MATRIX_ROWS 32 // keycode bit: 3-0 -#define MATRIX_COLS 8 // keycode bit: 6-4 - - -/* key combination for command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \ - keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) \ -) - - -//#define NO_SUSPEND_POWER_DOWN - - -/* - * PS/2 Busywait - */ -#ifdef PS2_USE_BUSYWAIT -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 5 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 2 -#endif - -/* - * PS/2 USART - */ -#ifdef PS2_USE_USART -#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) -/* XCK for clock line and RXD for data line */ -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 5 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 2 -/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ -/* set DDR of CLOCK as input to be slave */ -#define PS2_USART_INIT() do { \ - PS2_CLOCK_DDR &= ~(1< - -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 CONFIG_H -#define CONFIG_H - -#include - -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6512 -#define DEVICE_VER 0x0001 -#define MANUFACTURER t.m.k. -#define PRODUCT PS/2 keyboard converter -#define DESCRIPTION convert PS/2 keyboard to USB - - -/* matrix size */ -#define MATRIX_ROWS 32 // keycode bit: 3-0 -#define MATRIX_COLS 8 // keycode bit: 6-4 - - -/* key combination for command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \ - keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) \ -) - - -//#define NO_SUSPEND_POWER_DOWN - - -/* - * PS/2 Busywait - */ -#ifdef PS2_USE_BUSYWAIT -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 1 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 0 -#endif - -/* - * PS/2 Pin interrupt - */ -#ifdef PS2_USE_INT -/* uses INT1 for clock line(ATMega32U4) */ -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 1 -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 0 -#define PS2_INT_INIT() do { \ - EICRA |= ((1< Date: Mon, 9 Sep 2019 12:10:15 +0900 Subject: [PATCH 40/71] ps2_usb: Update README --- converter/ps2_usb/README.md | 54 ++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/converter/ps2_usb/README.md b/converter/ps2_usb/README.md index 1ad28589..9b4585d3 100644 --- a/converter/ps2_usb/README.md +++ b/converter/ps2_usb/README.md @@ -2,17 +2,14 @@ PS/2 to USB keyboard converter ============================== This firmware converts PS/2 keyboard protocol to USB.(It supports Scan Code Set 2.) +You can discuss about this converter here. -Connect Wires -------------- -1. Connect **Vcc** and **GND**. -2. Connect **Clock** and **Data** line. - - **Interrupt**: **Clock** is on `PD1` and **Data** on `PD0`.(Recommended. Soarer's converter compatible) - - **Busywait**: **Clock** is on `PD1` and **Data** on `PD0`. - - **USART**: **Clock** is on `PD5` and **Data** on `PD2`. -3. You need pull-up resistors. 1K-10K Ohm would be fine. +https://geekhack.org/index.php?topic=14618.0 -To change pin configuration edit **config.h** and **Makefile**. + +Preassembled TMK PS/2-USB converter is available here. + +https://geekhack.org/index.php?topic=72052.0 Build Firmware @@ -27,32 +24,47 @@ To program firmware push the button on converter and run: $ make -f Makefile.rev2 KEYMAP=plain dfu -- For **TMK converter Rev.1** use `make -f Makefile.rev1` instead. -- To select keymap use `jis`, `spacefn` or your own in place of `plain`. +For **TMK converter Rev.1** use `Makefile.rev1` instead. + +If your use DIY converter with ATMega32u4 board you can use `Makefile.32u4`, but note that progarmming with 'dfu' may not work for your converter. + + +Build your own converter +------------------------ +Use ATMega32u4 as controller and Makefile.32u4 to build firmware. + +1. Wire **Vcc** and **GND** properly. +2. Connect **Clock** to `PD1` and **Data** to `PD0` line. (Compatible to Soarer's converter pin configuration) +3. You need pull-up resistors on both signal lines. 1K-10K Ohm would be fine. + +You can configure controller and pin configurations in Makefile and config.h. Keymap ------ -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document(you can find in README.md of top directory) and existent keymap files. +To define your own keymap copy `unimap_plain.c` to `unimap_.c` and edit it. Or just edit `unimap_plain.c` directly. + +See wiki pages and documents. + +https://github.com/tmk/tmk_keyboard/wiki PS/2 signal handling implementations ------------------------------------ -Following three methods can be used to implement PS/2 signal handling. +Following three methods are available to implement PS/2 signal handling. -### Simple and stupid busy-wait(ps2_busywait.c) - This is expected to implemented with portable C code for reference. -### Interrupt driven(ps2_interrupt.c) - Uses pin interrupt to detect falling edge of clock line. -### USART hardware module(ps2_usart.c) - Uses AVR USART engine to receive PS/2 signal. +- **Interrupt** Uses pin interrupt to detect falling edge of clock line. **Recommended.** (ps2_interrupt.c) +- **Busywait** Implementation with portable C code for reference. (ps2_busywait.c) +- **USART** Uses AVR USART hardware engine to receive PS/2 signal. You must use this fothis for V-USB. (ps2_usart.c) -To select method edit Makefile. +TMK converter rev1 uses **USART** and rev2 uses **Interrupt** for reference. + +You can change method by editing `Makefile` but not needed in most case. V-USB Support ------------- -With V-USB you can use this converter on ATmega(168/328) but it doesn't support NKRO at this time. +With V-USB you can use this converter on ATmega(168/328). Use Makefile.vusb to build firmeware. Not supported actively anymore. Circuit: From f5e487bc3850161bf4b78d9eafef11b78fd02bce Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 10 Sep 2019 07:54:36 +0900 Subject: [PATCH 41/71] ps2_usb: Add Makefile.32u4 --- converter/ps2_usb/Makefile.32u4 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 converter/ps2_usb/Makefile.32u4 diff --git a/converter/ps2_usb/Makefile.32u4 b/converter/ps2_usb/Makefile.32u4 new file mode 100644 index 00000000..60fe530b --- /dev/null +++ b/converter/ps2_usb/Makefile.32u4 @@ -0,0 +1,20 @@ +TARGET ?= ps2_usb_32u4 +MCU = atmega32u4 +CONFIG_H = config.h +BOOTLOADER_SIZE = 4096 + +BOOTMAGIC_ENABLE ?= no +MOUSEKEY_ENABLE ?= yes +EXTRAKEY_ENABLE ?= yes +CONSOLE_ENABLE ?= yes +COMMAND_ENABLE ?= yes +NKRO_ENABLE ?= yes + +PS2_USE_USART = no +PS2_USE_INT = yes +PS2_USE_BUSYWAIT = no + +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes + +include Makefile From 19350e3ee55c701e886e4376b0892bc74595b66f Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 16 Sep 2019 17:49:38 +0900 Subject: [PATCH 42/71] core: Add bootkey of Caterina bootloader The bootkey set in bootloader_jump() works with Pro Micro and Leonardo. This fix doesn't seem to prevent other bootloaders, however, it can be disabled by defining NO_BOOTLOADER_CATERINA_BOOTKEY. --- tmk_core/common/avr/bootloader.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index 7c744e8c..8d6de1a0 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -87,6 +87,14 @@ void bootloader_jump(void) { _delay_ms(5); #endif +#ifndef NO_BOOTLOADER_CATERINA_BOOTKEY + // Set bootkey for Arduino Leonardo and Pro Micro bootloader + // Watchdog reset with bootkey causes the bootloader to enter program mode instead of starting application. + // https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina.c#L68-L69 + // https://github.com/sparkfun/SF32u4_boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina.c#L88-L89 + *(volatile uint16_t *)0x0800 = 0x7777; +#endif + // watchdog reset reset_key = BOOTLOADER_RESET_KEY; wdt_enable(WDTO_250MS); @@ -108,6 +116,13 @@ void bootloader_jump_after_watchdog_reset(void) MCUSR &= ~(1< Date: Mon, 16 Sep 2019 18:42:50 +0900 Subject: [PATCH 43/71] core: Fix comment and remove unused code --- tmk_core/common/avr/bootloader.c | 115 ++++--------------------------- 1 file changed, 15 insertions(+), 100 deletions(-) diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index 8d6de1a0..31d9a3ba 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -16,8 +16,8 @@ * AVR Boot section size are defined by setting BOOTSZ fuse in fact. Consult with your MCU datasheet. * Note that 'Word'(2 bytes) size and address are used in datasheet while TMK uses 'Byte'. * - * * Size of Bootloaders in bytes: + * Atmel DFU loader(ATmega32U2) 4096 * Atmel DFU loader(ATmega32U4) 4096 * Atmel DFU loader(AT90USB128) 8192 * LUFA bootloader(ATmega32U4) 4096 @@ -27,33 +27,19 @@ * Teensy++ halfKay(AT90USB128) 1024 * * - * AVR Boot section is located at the end of Flash memory like the followings. + * AVR Boot section is located at the end of Flash memory. * - * - * byte Atmel/LUFA(ATMega32u4) byte Atmel(AT90SUB128) - * 0x0000 +---------------+ 0x00000 +---------------+ - * | | | | - * | | | | - * | Application | | Application | - * | | | | - * = = = = - * | | 32KB-4KB | | 128KB-8KB - * 0x6000 +---------------+ 0x1FC00 +---------------+ - * | Bootloader | 4KB | Bootloader | 8KB - * 0x7FFF +---------------+ 0x1FFFF +---------------+ - * - * - * byte Teensy(ATMega32u4) byte Teensy++(AT90SUB128) - * 0x0000 +---------------+ 0x00000 +---------------+ - * | | | | - * | | | | - * | Application | | Application | - * | | | | - * = = = = - * | | 32KB-512B | | 128KB-1KB - * 0x7E00 +---------------+ 0x1FC00 +---------------+ - * | Bootloader | 512B | Bootloader | 1KB - * 0x7FFF +---------------+ 0x1FFFF +---------------+ + * byte ATMega32u4 with 4096-byte Boot section + * 0x0000 +---------------+ + * | | + * | | + * | Application | 28KB + * | | + * = = + * | | + * 0x7000 +---------------+ <---- BOOTLOADER_START + * | Bootloader | 4KB BOOTLOADER_SIZE + * 0x7FFF +---------------+ <---- FLASHEND */ #ifndef BOOTLOADER_SIZE #warning To use bootloader_jump() you need to define BOOTLOADER_SIZE in config.h. @@ -64,8 +50,8 @@ #define BOOTLOADER_START (FLASH_SIZE - BOOTLOADER_SIZE) -/* - * Entering the Bootloader via Software +/* + * Entering the Bootloader via Software * http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__software_bootloader_start.html */ #define BOOTLOADER_RESET_KEY 0xB007B007 @@ -127,74 +113,3 @@ void bootloader_jump_after_watchdog_reset(void) ((void (*)(void))(BOOTLOADER_START/2))(); } } - - -#if 0 -/* Jumping To The Bootloader - * http://www.pjrc.com/teensy/jump_to_bootloader.html - * - * This method doen't work when using LUFA. idk why. - * - needs to initialize more regisers or interrupt setting? - */ -void bootloader_jump(void) { -#ifdef PROTOCOL_LUFA - USB_Disable(); - cli(); - _delay_ms(2000); -#endif - -#ifdef PROTOCOL_PJRC - cli(); - UDCON = 1; - USBCON = (1< Date: Tue, 17 Sep 2019 16:19:52 +0900 Subject: [PATCH 44/71] core: Read bootloader size from AVR fuse bits This makes defining BOOTLOADER_SIZE macro optional. --- tmk_core/common/avr/bootloader.c | 44 +++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index 31d9a3ba..2a898f8c 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "bootloader.h" @@ -41,13 +42,42 @@ * | Bootloader | 4KB BOOTLOADER_SIZE * 0x7FFF +---------------+ <---- FLASHEND */ -#ifndef BOOTLOADER_SIZE -#warning To use bootloader_jump() you need to define BOOTLOADER_SIZE in config.h. -#define BOOTLOADER_SIZE 4096 -#endif -#define FLASH_SIZE (FLASHEND + 1L) -#define BOOTLOADER_START (FLASH_SIZE - BOOTLOADER_SIZE) +/* bootloader start address in byte */ +#define BOOTLOADER_START (FLASHEND - bootloader_size() + 1) + +/* boot section size in byte */ +static inline uint16_t bootloader_size(void) +{ +#if defined(BOOTLOADER_SIZE) + return BOOTLOADER_SIZE; +#else + #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__) || \ + defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega16U2__) || \ + defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) + uint8_t hfuse = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); + switch ((hfuse >> 1) & 3) { + case 0: return 4096; + case 1: return 2048; + case 2: return 1024; + case 3: return 512; + } + return 4096; + #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || \ + defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) + uint8_t hfuse = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); + switch ((hfuse >> 1) & 3) { + case 0: return 8192; + case 1: return 4096; + case 2: return 2048; + case 3: return 1024; + } + return 8192; + #else + #error Set Boot section size to BOOTLOADER_SIZE in config.h + #endif +#endif +} /* @@ -110,6 +140,6 @@ void bootloader_jump_after_watchdog_reset(void) #endif // This is compled into 'icall', address should be in word unit, not byte. - ((void (*)(void))(BOOTLOADER_START/2))(); + ((void (*)(void))(BOOTLOADER_START / 2))(); } } From 83b90f4b6fe6744cababc153e3fee5ed42ee4322 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 17 Sep 2019 20:55:35 +0900 Subject: [PATCH 45/71] core: Add AC_BTLD to actionmap and unimap Now that it can jump to bootloader with AC_BTLD --- tmk_core/common/action.c | 10 ++++++++ tmk_core/common/action_code.h | 20 +++++++++------ tmk_core/common/actionmap.h | 47 ++++++----------------------------- tmk_core/common/keymap.c | 4 +-- 4 files changed, 32 insertions(+), 49 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index c256892c..5a6f3df3 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -28,6 +28,7 @@ along with this program. If not, see . #include "action.h" #include "hook.h" #include "wait.h" +#include "bootloader.h" #ifdef DEBUG_ACTION #include "debug.h" @@ -341,6 +342,15 @@ void process_action(keyrecord_t *record) break; #endif case ACT_COMMAND: + switch (action.command.id) { + case COMMAND_BOOTLOADER: + if (event.pressed) { + clear_keyboard(); + wait_ms(50); + bootloader_jump(); + } + break; + } break; #ifndef NO_ACTION_FUNCTION case ACT_FUNCTION: diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index 1eb69104..77c7c342 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -48,7 +48,7 @@ along with this program. If not, see . * 0100|10| usage(10) (reserved) * 0100|11| usage(10) (reserved) * - * ACT_MOUSEKEY(0110): TODO: Not needed? + * ACT_MOUSEKEY(0101): TODO: Not needed? * 0101|xxxx| keycode Mouse key * * 011x|xxxx xxxx xxxx (reseved) @@ -290,6 +290,12 @@ enum layer_pram_tap_op { /* * Extensions */ +/* Macro */ +#define ACTION_MACRO(id) ACTION(ACT_MACRO, (id)) +#define ACTION_MACRO_TAP(id) ACTION(ACT_MACRO, FUNC_TAP<<8 | (id)) +#define ACTION_MACRO_OPT(id, opt) ACTION(ACT_MACRO, (opt)<<8 | (id)) + +/* Backlight */ enum backlight_opt { BACKLIGHT_INCREASE = 0, BACKLIGHT_DECREASE = 1, @@ -297,18 +303,18 @@ enum backlight_opt { BACKLIGHT_STEP = 3, BACKLIGHT_LEVEL = 4, }; -/* Macro */ -#define ACTION_MACRO(id) ACTION(ACT_MACRO, (id)) -#define ACTION_MACRO_TAP(id) ACTION(ACT_MACRO, FUNC_TAP<<8 | (id)) -#define ACTION_MACRO_OPT(id, opt) ACTION(ACT_MACRO, (opt)<<8 | (id)) -/* Backlight */ #define ACTION_BACKLIGHT_INCREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_INCREASE << 8) #define ACTION_BACKLIGHT_DECREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_DECREASE << 8) #define ACTION_BACKLIGHT_TOGGLE() ACTION(ACT_BACKLIGHT, BACKLIGHT_TOGGLE << 8) #define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8) #define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | level) + /* Command */ -#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (addr)) +enum command_ids { + COMMAND_BOOTLOADER, // jump to bootloader +}; +#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (id)) + /* Function */ enum function_opts { FUNC_TAP = 0x8, /* indciates function is tappable */ diff --git a/tmk_core/common/actionmap.h b/tmk_core/common/actionmap.h index 2ebfb0d0..a96c84b3 100644 --- a/tmk_core/common/actionmap.h +++ b/tmk_core/common/actionmap.h @@ -283,43 +283,7 @@ along with this program. If not, see . #define AC_WWW_STOP ACTION_USAGE_CONSUMER(APPCONTROL_STOP) #define AC_WWW_REFRESH ACTION_USAGE_CONSUMER(APPCONTROL_REFRESH) #define AC_WWW_FAVORITES ACTION_USAGE_CONSUMER(APPCONTROL_BOOKMARKS) -/* Jump to bootloader */ -#define AC_BOOTLOADER ACTION_KEY(KC_BOOTLOADER) -/* Fn key */ -/* -#define AC_FN0 ACTION_KEY(KC_FN0) -#define AC_FN1 ACTION_KEY(KC_FN1) -#define AC_FN2 ACTION_KEY(KC_FN2) -#define AC_FN3 ACTION_KEY(KC_FN3) -#define AC_FN4 ACTION_KEY(KC_FN4) -#define AC_FN5 ACTION_KEY(KC_FN5) -#define AC_FN6 ACTION_KEY(KC_FN6) -#define AC_FN7 ACTION_KEY(KC_FN7) -#define AC_FN8 ACTION_KEY(KC_FN8) -#define AC_FN9 ACTION_KEY(KC_FN9) -#define AC_FN10 ACTION_KEY(KC_FN10) -#define AC_FN11 ACTION_KEY(KC_FN11) -#define AC_FN12 ACTION_KEY(KC_FN12) -#define AC_FN13 ACTION_KEY(KC_FN13) -#define AC_FN14 ACTION_KEY(KC_FN14) -#define AC_FN15 ACTION_KEY(KC_FN15) -#define AC_FN16 ACTION_KEY(KC_FN16) -#define AC_FN17 ACTION_KEY(KC_FN17) -#define AC_FN18 ACTION_KEY(KC_FN18) -#define AC_FN19 ACTION_KEY(KC_FN19) -#define AC_FN20 ACTION_KEY(KC_FN20) -#define AC_FN21 ACTION_KEY(KC_FN21) -#define AC_FN22 ACTION_KEY(KC_FN22) -#define AC_FN23 ACTION_KEY(KC_FN23) -#define AC_FN24 ACTION_KEY(KC_FN24) -#define AC_FN25 ACTION_KEY(KC_FN25) -#define AC_FN26 ACTION_KEY(KC_FN26) -#define AC_FN27 ACTION_KEY(KC_FN27) -#define AC_FN28 ACTION_KEY(KC_FN28) -#define AC_FN29 ACTION_KEY(KC_FN29) -#define AC_FN30 ACTION_KEY(KC_FN30) -#define AC_FN31 ACTION_KEY(KC_FN31) -*/ + /* Mousekey */ #define AC_MS_UP ACTION_MOUSEKEY(KC_MS_UP) #define AC_MS_DOWN ACTION_MOUSEKEY(KC_MS_DOWN) @@ -338,6 +302,10 @@ along with this program. If not, see . #define AC_MS_ACCEL1 ACTION_MOUSEKEY(KC_MS_ACCEL1) #define AC_MS_ACCEL2 ACTION_MOUSEKEY(KC_MS_ACCEL2) +/* Command */ +#define AC_BOOTLOADER ACTION_COMMAND(COMMAND_BOOTLOADER, 0) + + /* * Short names */ @@ -447,9 +415,10 @@ along with this program. If not, see . #define AC_WSTP ACTION_USAGE_CONSUMER(APPCONTROL_STOP) #define AC_WREF ACTION_USAGE_CONSUMER(APPCONTROL_REFRESH) #define AC_WFAV ACTION_USAGE_CONSUMER(APPCONTROL_BOOKMARKS) -/* Jump to bootloader */ -#define AC_BTLD ACTION_KEY(KC_BOOTLOADER) /* Transparent */ #define AC_TRNS ACTION_KEY(KC_TRANSPARENT) +/* Command */ +#define AC_BTLD AC_BOOTLOADER + #endif diff --git a/tmk_core/common/keymap.c b/tmk_core/common/keymap.c index 01c6e642..80ad388e 100644 --- a/tmk_core/common/keymap.c +++ b/tmk_core/common/keymap.c @@ -155,9 +155,7 @@ static action_t keycode_to_action(uint8_t keycode) return (action_t)ACTION_TRANSPARENT; break; case KC_BOOTLOADER: - clear_keyboard(); - wait_ms(50); - bootloader_jump(); // not return + return (action_t)ACTION_COMMAND(COMMAND_BOOTLOADER, 0); break; default: return (action_t)ACTION_NO; From bc821b79d09dfc1d3747b1f7a9937d852404d12b Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 18 Sep 2019 14:14:25 +0900 Subject: [PATCH 46/71] core: Remove unneeded code in bootloader_jump --- tmk_core/common/avr/bootloader.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index 2a898f8c..8a1bec06 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -92,7 +92,6 @@ void bootloader_jump(void) { #ifdef PROTOCOL_LUFA USB_Disable(); cli(); - _delay_ms(2000); #endif #ifdef PROTOCOL_PJRC @@ -125,11 +124,10 @@ void bootloader_jump_after_watchdog_reset(void) if ((MCUSR & (1< Date: Wed, 18 Sep 2019 15:09:02 +0900 Subject: [PATCH 47/71] core: Add NO_PRINT and NO_DEBUG build option Lines below in Makefile disable print and debug functions respectively. NO_PRINT = yes NO_DEBUG = yes --- tmk_core/common.mk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index a38ff081..090bbe6e 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -58,6 +58,14 @@ else endif endif +ifeq (yes,$(strip $(NO_DEBUG))) + OPT_DEFS += -DNO_DEBUG +endif + +ifeq (yes,$(strip $(NO_PRINT))) + OPT_DEFS += -DNO_PRINT +endif + ifeq (yes,$(strip $(COMMAND_ENABLE))) SRC += $(COMMON_DIR)/command.c OPT_DEFS += -DCOMMAND_ENABLE From 108b0ce8d9b6635c81d6fc1350a50efc6458d695 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 18 Sep 2019 15:29:38 +0900 Subject: [PATCH 48/71] usb_usb: Clean print for debug --- converter/usb_usb/usb_usb.cpp | 18 +++--------------- tmk_core/protocol/usb_hid/parser.cpp | 10 +++++----- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/converter/usb_usb/usb_usb.cpp b/converter/usb_usb/usb_usb.cpp index 50d2578e..9277cece 100644 --- a/converter/usb_usb/usb_usb.cpp +++ b/converter/usb_usb/usb_usb.cpp @@ -140,12 +140,6 @@ uint8_t matrix_scan(void) { or_report(kbd_parser4.report); matrix_is_mod = true; - - dprintf("state: %02X %02X", keyboard_report.mods, keyboard_report.reserved); - for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { - dprintf(" %02X", keyboard_report.keys[i]); - } - dprint("\r\n"); } else { matrix_is_mod = false; } @@ -155,17 +149,17 @@ uint8_t matrix_scan(void) { usb_host.Task(); timer = timer_elapsed(timer); if (timer > 100) { - dprintf("host.Task: %d\n", timer); + xprintf("host.Task: %d\n", timer); } static uint8_t usb_state = 0; if (usb_state != usb_host.getUsbTaskState()) { usb_state = usb_host.getUsbTaskState(); - dprintf("usb_state: %02X\n", usb_state); + xprintf("usb_state: %02X\n", usb_state); // restore LED state when keyboard comes up if (usb_state == USB_STATE_RUNNING) { - dprintf("speed: %s\n", usb_host.getVbusState()==FSHOST ? "full" : "low"); + xprintf("speed: %s\n", usb_host.getVbusState()==FSHOST ? "full" : "low"); keyboard_set_leds(host_keyboard_leds()); } } @@ -222,12 +216,6 @@ uint8_t matrix_key_count(void) { } void matrix_print(void) { - print("\nr/c 0123456789ABCDEF\n"); - for (uint8_t row = 0; row < matrix_rows(); row++) { - xprintf("%02d: ", row); - print_bin_reverse16(matrix_get_row(row)); - print("\n"); - } } void led_set(uint8_t usb_led) diff --git a/tmk_core/protocol/usb_hid/parser.cpp b/tmk_core/protocol/usb_hid/parser.cpp index 5e9a3efb..bc2744d0 100644 --- a/tmk_core/protocol/usb_hid/parser.cpp +++ b/tmk_core/protocol/usb_hid/parser.cpp @@ -1,16 +1,16 @@ #include "parser.h" #include "usb_hid.h" -#include "debug.h" +#include "print.h" void KBDReportParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) { - dprintf("input %d:", hid->GetAddress()); + xprintf("input %d:", hid->GetAddress()); for (uint8_t i = 0; i < len; i++) { - dprintf(" %02X", buf[i]); + xprintf(" %02X", buf[i]); } - dprint("\r\n"); + xprintf("\r\n"); // Rollover error // Cherry: 0101010101010101 @@ -18,7 +18,7 @@ void KBDReportParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *b // Apple: 0000010101010101 // https://geekhack.org/index.php?topic=69169.msg2760969#msg2760969 if (buf[2] == 0x01) { - dprint("Rollover error: ignored\r\n"); + xprintf("Rollover error: ignored\r\n"); return; } From 250724f79a204b47912371c19fd6c4f2f0521fc9 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 18 Sep 2019 15:41:24 +0900 Subject: [PATCH 49/71] usb_usb: Enable NO_DEBUG build option to save flash memory space --- converter/usb_usb/Makefile.unimap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/converter/usb_usb/Makefile.unimap b/converter/usb_usb/Makefile.unimap index cc383eda..48a041ba 100644 --- a/converter/usb_usb/Makefile.unimap +++ b/converter/usb_usb/Makefile.unimap @@ -2,4 +2,6 @@ TARGET = usb_usb_unimap UNIMAP_ENABLE = yes KEYMAP_SECTION_ENABLE = yes #LUFA_DEBUG = yes +#CONSOLE_ENABLE = no +NO_DEBUG = yes include Makefile From b813d62a8bbd30c75396cce6068af0af370d7b7f Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 18 Sep 2019 15:42:47 +0900 Subject: [PATCH 50/71] usb_usb: Add BTLD unimap to start bootloader Press App(Menu) + Pause key to start bootloader --- converter/usb_usb/unimap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/converter/usb_usb/unimap.c b/converter/usb_usb/unimap.c index 0f34ece8..2d905429 100644 --- a/converter/usb_usb/unimap.c +++ b/converter/usb_usb/unimap.c @@ -35,7 +35,7 @@ const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { ), 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, + GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,BTLD, 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, From f016476d83b86737fa9bffd26c08f7ede4bf0805 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 18 Sep 2019 16:09:10 +0900 Subject: [PATCH 51/71] usb_usb: Update firmware file --- converter/usb_usb/{README => README.md} | 1 + converter/usb_usb/binary/usb_usb_unimap.hex | 3240 +++++++++---------- 2 files changed, 1602 insertions(+), 1639 deletions(-) rename converter/usb_usb/{README => README.md} (98%) diff --git a/converter/usb_usb/README b/converter/usb_usb/README.md similarity index 98% rename from converter/usb_usb/README rename to converter/usb_usb/README.md index 2ab9b707..468d56fa 100644 --- a/converter/usb_usb/README +++ b/converter/usb_usb/README.md @@ -81,6 +81,7 @@ Update 2018/02/xx Add Korean and Brazilian specific keys(ab6ddac,b2fa0ffa) 2018/07/xx Fix startup issue(c2ce617) 2018/10/xx Use fixed LUFA stack and update USB_Host_Shield_2.0 +2019/09/18 Add BTLD(bootlader jump) key to unimap diff --git a/converter/usb_usb/binary/usb_usb_unimap.hex b/converter/usb_usb/binary/usb_usb_unimap.hex index 71f47db3..40307a8e 100644 --- a/converter/usb_usb/binary/usb_usb_unimap.hex +++ b/converter/usb_usb/binary/usb_usb_unimap.hex @@ -1,17 +1,17 @@ -:100000000C947D020C94CF020C94CF020C94CF027E -:100010000C94CF020C94CF020C94CF020C94CF021C -:100020000C94CF020C94CF020C94D81F0C94AA20ED -:100030000C94BD2E0C94CF020C94CF020C94CF02E2 -:100040000C94CF020C94CF020C94CF020C94CF02EC -:100050000C94CF020C94CF0B0C94CF020C94CF02D3 -:100060000C94CF020C94CF020C94CF020C94CF02CC -:100070000C94CF020C94CF020C94CF020C94CF02BC -:100080000C94CF020C94CF020C94CF020C94CF02AC -:100090000C94CF020C94CF020C94CF020C94CF029C -:1000A0000C94CF020C94CF020C94CF02172139216B -:1000B0002C2239212C227E21A1212C22F621092259 -:1000C000ED24ED24172517257225A62596279627BA -:1000D000BD259627A826A8266E279627962783272C +:100000000C943F020C9492020C9492020C94920273 +:100010000C9492020C9492020C9492020C94920210 +:100020000C9492020C9492020C94041F0C94D61F10 +:100030000C946B2D0C9492020C9492020C949202EC +:100040000C9492020C9492020C9492020C949202E0 +:100050000C9492020C94FB0A0C9492020C9492025F +:100060000C9492020C9492020C9492020C949202C0 +:100070000C9492020C9492020C9492020C949202B0 +:100080000C9492020C9492020C9492020C949202A0 +:100090000C9492020C9492020C9492020C94920290 +:1000A0000C9492020C9492020C94920243206520CC +:1000B000582165205821AA20CD2058212221352100 +:1000C000B623B623E023E0233B246F247D267D2640 +:1000D00086247D267125712537267D264C266A26A5 :1000E000808080800405060708090A0B0C0D0E0F9E :1000F000101112131415161718191A1B1C1D1E1F88 :10010000202122232425262728292A2B2C2D2E2F77 @@ -28,1630 +28,1592 @@ :1001B000808080808080808080808080808080803F :1001C00078797A7B7C7D7E7F808080808080808053 :1001D000808080808080808080808080808080801F -:1001E0000A00253031366200253032643A20000A98 -:1001F000722F63203031323334353637383941424B -:10020000434445460A0073706565643A2025730AC5 -:10021000007573625F73746174653A2025303258DB -:100220000A00686F73742E5461736B3A2025640A58 -:10023000000D0A0020253032580073746174653A4D -:10024000202025303258202530325800526F6C6CF7 -:100250006F766572206572726F723A2069676E6F91 -:100260007265640D0A000D0A0020253032580069BD -:100270006E7075742025643A000A4B6579626F616F -:1002800072642073746172742E0A000A55534220FE -:10029000636F6E666967757265642E0A000A0A5498 -:1002A0004D4B3A38343439616433382F4C5546411C -:1002B0000A0A003C03550053004200200074006FFE -:1002C00000200055005300420020006B00650079BB -:1002D0000062006F00610072006400200063006F24 -:1002E000006E007600650072007400650072000008 -:1002F000000E0374002E006D002E006B002E000017 -:10030000000403090409027400040100A032090476 -:100310000000010301010009211101000122400038 -:100320000705810308000A09040100010301020016 -:10033000092111010001224D000705820308000A6E -:10034000090402000103000000092111010001223B -:1003500036000705830308000A09040300020300AE -:100360000000092111010001222200070584032059 -:100370000001070504032000011201100100000024 -:1003800008EDFE5B001408010200010631FF09744C -:10039000A1010975150026FF009520750881020945 -:1003A00076150026FF00952075089102C005010909 -:1003B00080A10185021601002637001A81002AB7A4 -:1003C00000751095018100C0050C0901A10185038C -:1003D000160100269C021A01002A9C027510950144 -:1003E0008100C005010902A1010901A10005091947 -:1003F00001290515002501950575018102950175F5 -:100400000381010501093009311581257F950275A8 -:1004100008810609381581257F9501750881060533 -:100420000C0A38021581257F950175088106C0C028 -:1004300005010906A101050719E029E715002501B5 -:10044000950875018102950175088101050819015A -:10045000290595057501910295017503910105071F -:10046000190029FF150026FF00950675088100C0B8 -:10047000636F6E73756D65723A20253034580A00CB -:1004800073797374656D3A20253034580A000A0078 -:100490002530325820006B6579626F6172643A20B2 -:1004A000004C45443A20253032580A00290A0025DC -:1004B00075002F002575005D2800256400200025AB -:1004C0006400200025640020002564007C002530A5 -:1004D0003258006D6F7573656B6579205B62746E61 -:1004E0007C782079207620685D287265702F6163A2 -:1004F0006C293A205B00620A230B11241FBECFEF48 -:10050000DAE0DEBFCDBF04B603FE27C080919405BC -:1005100090919505A0919605B09197058730904BE5 -:10052000A740B04BD1F4109294051092950510920B -:1005300096051092970514BE84B7877F84BF0FB6C7 -:10054000F894A89580916000886180936000109273 -:1005500060000FBEE0E0F8E3099511E0A0E0B1E033 -:10056000ECEBF6E602C005900D92AE39B107D9F773 -:1005700025E0AEE9B1E001C01D92A439B207E1F770 -:1005800012E0CDE7D2E004C02197FE010E94423381 -:10059000CB37D107C9F70E949F1C0C945C330C9495 -:1005A0000000FF93EF93E0919E01F0919F0130973F -:1005B00009F00995EF91FF910895FC018591803034 -:1005C00011F0EFDFFBCF0895FF27E0E230E247FFB5 -:1005D0000CC0419597FF09C0EDE26095709580953C -:1005E0009095611D711D811D911D27FF02C02195F0 -:1005F00030E350E2AA27660F771F881F991FAA1FB2 -:10060000A41710F0A41B63955A95A9F7AA3008F017 -:10061000A95FA05DAF93F395611571058105910503 -:1006200041F7ED3211F4EF93F395F21718F43F937D -:10063000F395FBCF8F91B5DFFA95E1F70895E99136 -:10064000F9918591803021F0853219F0AADFF9CF38 -:10065000089520E0E89455915532C1F3503311F4D8 -:10066000689455915A3348F4505390F3220F022E58 -:10067000220F220F200D250FF4CF0EF42195899122 -:100680009991533619F3533729F1533559F1BC0178 -:1006900088279927E8945C3621F489919991689488 -:1006A0005591543639F446EF7EF077FF0DC08FEF49 -:1006B0009FEF0AC055374AE039F0583540E121F044 -:1006C000523642E009F00895FF93EF937DDFEF91FA -:1006D000FF91B7CFFF93EF93FC0181918030B9F385 -:1006E00060DFFBCFFF93EF9368DFF1CFDF93CF9312 -:1006F000CDB7DEB72596A3DFCF91DF91089580E0D7 -:100700000895089580E0089581E00895CF93DF93E0 -:10071000CDB7DEB728970FB6F894DEBF0FBECDBFBA -:10072000E22F29833A834B835C836D837E838F839F -:1007300098878091DC02E82BE093DC02FE0133967F -:10074000AE01475F5F4F2191243088F0AEEDB2E0FB -:1007500080E090E03D91311106C0DC01A452BD4F14 -:1007600012962C9304C001968630910599F7E417F0 -:10077000F50749F728960FB6F894DEBF0FBECDBF38 -:10078000DF91CF910895860F911D860F911DFC0179 -:100790005687458781E00895FC0187890895CF93A6 -:1007A000DF93EC018C819D81DC01ED91FC91048053 -:1007B000F581E02D6E8109951F86188A81E08A8B6C -:1007C0001E821B8A1C8A1D8A1E8A1F8A80E0DF9176 -:1007D000CF910895FC018681089581E0633009F08E -:1007E00080E0089581E0613009F080E00895860F8F -:1007F000911D860F911DFC01858596850895EF92C8 -:10080000FF92CF93DF93DC01E70152968C915297D0 -:10081000823049F11F966C931F9750964C935097D6 -:100820009B8193709330F9F49A8197FF1CC09E814D -:1008300058962C915897291718F458969C935897C6 -:10084000E82FF0E09F01220F331FE20FF31FEA0FA2 -:10085000FB1F9A819F7097839C81908794E091877A -:100860008F5F52968C93DF91CF91FF90EF90089518 -:10087000EF92FF920F9302970E94FF030F91FF9058 -:10088000EF9008950895CF92DF92EF92FF920F9329 -:100890001F93CF93DF93CDB7DEB762970FB6F8946F -:1008A000DEBF0FBECDBFDC0157962C91222381F015 -:1008B0006C010E94340BF60103891489258936895D -:1008C000DC01CB01801B910BA20BB30BB7FF02C065 -:1008D000F12C3AC0838590E09A8B898BE12C8E01B4 -:1008E0000F5F1F4F9E012F5E3F4F428566818481BF -:1008F00095810E942714F82E811118C029893A8900 -:100900002330310598F0D6011D968D919C911E974C -:10091000009761F0DC01ED91FC910190F081E02DF8 -:100920008E010F5F1F4F40E0B60109950E94340B06 -:10093000F601208DDC01CB01820F911DA11DB11D9F -:10094000838B948BA58BB68B8F2D62960FB6F89404 -:10095000DEBF0FBECDBFDF91CF911F910F91FF90F2 -:10096000EF90DF90CF9008952F923F924F925F9239 -:100970006F927F928F929F92AF92BF92CF92DF92AF -:10098000EF92FF920F931F93CF93DF93CDB7DEB714 -:10099000EB970FB6F894DEBF0FBECDBFDC01169605 -:1009A0005C90511019C1422E242E362E7C01FC0180 -:1009B000A480B580108ED501ED91FC910190F0815D -:1009C000E02D60E0C50109956C01009719F446ED32 -:1009D000542E0FC1FC01808091808114910409F490 -:1009E000FEC03701F7E06F0E711CDC0111967C929E -:1009F0006E9214964C928E01065D1F4F28E030E0F7 -:100A000040E060E0F701848195810E94E911182F90 -:100A10008111EBC01AA5D6018D929C92D501ED9162 -:100A2000FC910280F381E02D222D40E0632DC50171 -:100A30000995F7018683882309F4D4C099A9908782 -:100A4000282F40E060E0848195810E949412982EC6 -:100A5000D501ED91FC91D60114961C92882361F08A -:100A60000480F581E02DD70116966C91C50109959A -:100A7000F7011682592CBDC00190F081E02DD701FD -:100A800016966C91C5010995009709F4A0CF212F06 -:100A9000133108F022E1FC01448221110FC03BAC6C -:100AA000412C35E2832E31E0932E5701F2E0AF0E58 -:100AB000B11C6E0181E1C80ED11C38C030E08E013E -:100AC000065D1F4F40E0D70116966C91169714965D -:100AD0008D919C9115970E94E911182F811172C078 -:100AE000DECF9A828982BC82AB821E86188A1F86DC -:100AF00019A21AA21BA219A6DF82CE82D986C886A5 -:100B00008D818B878A87DD86CC868E010F5F1F4F94 -:100B1000242D40E0F7016681848195810E9437127F -:100B2000D70152968C91823019F043944310D9CF5B -:100B3000F7018289823009F044C0930142E0668166 -:100B4000848195810E941F0D68EE73E080E090E043 -:100B50000E94360BD7011F962C911F9740E01696E6 -:100B60006C91169714968D919C9115970E94021482 -:100B7000182F811127C068EE73E080E090E00E949A -:100B8000360BF701418D60E0C7010E940B16182F4C -:100B9000811118C020E040E060E0C7010E94E1152B -:100BA0008BE291E09A838983AE014F5F5F4F60E0F3 -:100BB00070E0C7010E94711581E0D70157968C93B0 -:100BC00018C011EDD701ED91FC910480F581E02D65 -:100BD000C7010995512E0DC029ED522E0AC097ED7F -:100BE000592E07C084ED582E04C0F60191828082F0 -:100BF000E9CF852DEB960FB6F894DEBF0FBECDBFC3 -:100C0000DF91CF911F910F91FF90EF90DF90CF90E8 -:100C1000BF90AF909F908F907F906F905F904F901C -:100C20003F902F9008953F924F925F926F927F92E4 -:100C30008F929F92AF92BF92CF92DF92EF92FF92EC -:100C40000F931F93CF93DF9300D000D0CDB7DEB7C3 -:100C50006C017C836B835A8349834C0180E1880E4D -:100C6000911C5601A7E0AA0EB11C11E084E0482EA9 -:100C70003601B2E16B0E711C93E0392E22E0522E48 -:100C80008B819C81892B09F4FBC0F60180A1823005 -:100C900059F128F4882341F0813071F0F1CF83308D -:100CA00039F18430C1F1ECCF5482858196819087EF -:100CB00087835286518610A3AE014D5F5F4FBE0100 -:100CC0006F5F7F4FC5010E94FF19882309F4D8C0C8 -:100CD000D6011596ED91FC911697808191968C9393 -:100CE0009197818192968C93F6017682658230A2EB -:100CF000D60192968C919297843011F493961C921F -:100D0000F60181A182508483258136813087278333 -:100D10008287818740A2D60192968C918430B1F06F -:100D2000853009F442C0823009F06EC0AE014D5FDB -:100D30005F4FBE016F5F7F4FC5010E94FF1988237F -:100D400009F49EC0F601858984A392C0AE014D5F6F -:100D50005F4FBE016F5F7F4FC5010E94FF1988235F -:100D600009F48EC0D60155968C915597833009F0C1 -:100D70007FC056968C915697813009F079C098962D -:100D80009C91989757968C91992321F0882309F488 -:100D90006FC003C0813009F06BC0F60113A39289C4 -:100DA00096A3938997A385A363C0AE014D5F5F4F60 -:100DB000BE016F5F7F4FC5010E94FF19882309F4B0 -:100DC0005FC0D60193968C919397882309F450C005 -:100DD00012968D919C911397009709F449C0DC01FC -:100DE000ED91FC910190F081E02D7401D601959672 -:100DF0000C91959797962C91979796964C919697DC -:100E000094966C91099534C0F6018585882319F074 -:100E1000813039F028C081A190E0029797878687BA -:100E200015872B813C8189819A81782F692FF60162 -:100E3000468557854115510581F0019621153105EB -:100E400029F41C821B8279836A830DC041505109A9 -:100E50005787468721503109E8CF3C832B839A83FB -:100E60008983F6011586F60186859785892B41F4DD -:100E7000D60116969C928E92159790961C9200CF52 -:100E80000F900F900F900F90DF91CF911F910F91C6 -:100E9000FF90EF90DF90CF90BF90AF909F908F909A -:100EA0007F906F905F904F903F900895EF92FF92E8 -:100EB0000F931F93CF936091FA017091FB01E09122 -:100EC000A701F091A8014091EE015091EF0120910E -:100ED000E2013091E3018091D6019091D7016E1724 -:100EE0007F07B1F4E091A501F091A6014E175F07CD -:100EF00079F4E091A301F091A4012E173F0741F48A -:100F0000E091A101F091A2018E179F0709F49FC003 -:100F10007093A8016093A7015093A6014093A50187 -:100F20003093A4012093A3019093A2018093A10187 -:100F3000ECEDF2E088E0DF011D928A95E9F720915F -:100F4000F2013091F3014091F4015091F50160916B -:100F5000F6017091F7018091F8019091F9010E94DA -:100F600086032091E6013091E7014091E80150911C -:100F7000E9016091EA017091EB018091EC0190919F -:100F8000ED010E9486032091DA013091DB0140914E -:100F9000DC015091DD016091DE017091DF018091F3 -:100FA000E0019091E1010E9486032091CE013091F1 -:100FB000CF014091D0015091D1016091D201709147 -:100FC000D3018091D4019091D5010E94860381E0E4 -:100FD0008093DB0280917C0580FF14C08091DD024C -:100FE0001F928F938091DC021F928F938AE392E08D -:100FF0009F938F930E9476030F900F900F900F9006 -:101000000F900F900CED12E0C6E084E3E82E82E032 -:10101000F82E80917C0580FF0CC0F80182811F9220 -:101020008F93FF92EF920E9476030F900F900F9094 -:101030000F90C1500F5F1F4FC111EBCF80917C0506 -:1010400080FF07C081E392E00E94DD0202C010929F -:10105000DB020E948D0B8C0184E692E00E946014FA -:10106000C8010E94A50B8536910580F020917C0572 -:1010700020FF0CC09F938F9382E292E09F938F9307 -:101080000E9476030F900F900F900F9084E692E0ED -:101090000E94FF0C9091A0018917B9F184E692E0BB -:1010A0000E94FF0C8093A00190917C0590FF0CC0E2 -:1010B0001F928F9381E192E09F938F930E9476031A -:1010C0000F900F900F900F908091A0018039E9F45C -:1010D00080917C0580FF15C08091A901823019F0B4 -:1010E0008DE191E002C088E191E09F938F9386E0CB -:1010F00092E09F938F930E9476030F900F900F9032 -:101100000F900E9449220E94C22381E0CF911F913B -:101110000F91FF90EF900895482F80E1489F900134 -:101120001124205E31092830310538F49091DC0219 -:10113000992319F0892F90E002C080E090E0EEED55 -:10114000F2E061E070E02191243070F0322F3295AE -:101150003F70431309C02F70DB0102C0AA0FBB1FF1 -:101160002A95E2F78A2B9B2BB2E0E43EFB0759F766 -:101170000895EF92FF920F931F93CF93DF938FEE1B -:1011800091E00E94DD02C0E0D0E088EEE82E81E030 -:10119000F82E02EE11E0DF93CF93FF92EF920E94C0 -:1011A00076038C2F0E948C080E94542E9F938F935D -:1011B0001F930F930E94760380EE91E00E94DD0260 -:1011C00021968DB79EB708960FB6F8949EBF0FBEB6 -:1011D0008DBFC031D105F9F6DF91CF911F910F91ED -:1011E000FF90EF900895CF92DF92EF92FF920F93CE -:1011F000CF93DF931F92CDB7DEB7898380916102D1 -:10120000882371F0CE0101966C01EE24E394F12C59 -:1012100000E022E040E060E08AE492E00E94B41541 -:1012200080914702882371F0CE0101966C01EE2473 -:10123000E394F12C00E022E040E060E080E392E003 -:101240000E94B41580912D02882371F0CE01019681 -:101250006C01EE24E394F12C00E022E040E060E039 -:1012600086E192E00E94B41580911302882371F008 -:10127000CE0101966C01EE24E394F12C00E022E013 -:1012800040E060E08CEF91E00E94B4150F90DF9198 -:10129000CF910F91FF90EF90DF90CF9008950C9435 -:1012A00056070E947B2E80918905882331F00E9489 -:1012B000A42E882321F00C94B61D0C945607089593 -:1012C000FC017583648381E391E0918380838FE4E3 -:1012D00091E093838283138A148A158A168A178A67 -:1012E000418F178288E080878CE38187128613867E -:1012F00084E0848781E0828B118A178616861586A2 -:1013000061157105B1F0DB01AA5ABF4F80E090E092 -:101310002D913D91232B49F48B96880F991FDB016A -:10132000A80FB91FED93FC930895019680319105A4 -:1013300079F708952E9A08952E988EBD0DB407FE64 -:10134000FDCF1EBC0DB407FEFDCF0E949A098EB5DD -:1013500008952E9882608EBD0DB407FEFDCF6EBD40 -:101360000DB407FEFDCF0C949A0988EF0E949C09EA -:10137000807C803411F118F4882371F1089580384D -:1013800019F0803C39F1089588ED0E949C099091F4 -:10139000A90181FD08C0923029F161EC88ED0E941D -:1013A000A90982E007C09330E9F063EC88ED0E9460 -:1013B000A90983E08093A901089588ED0E949C0902 -:1013C0009091A90181FD03C0933079F7089592307F -:1013D00021F7089581E0EECF61ED88ED0E94A90923 -:1013E0001092A90108950F931F93CF93DF938C015F -:1013F000269A0E949A09219A229A2398209A80E597 -:101400008CBD81E08DBD259868E188E80E94A9091E -:1014100060E288E70E94A90960E088E70E94A909C4 -:10142000C0E0D0E088E60E949C09219680FD06C0BD -:10143000CF3F8FEFD807B1F78FEF1DC061EC88ED7C -:101440000E94A90960E280ED0E94A90964E088EE8B -:101450000E94A90988EE0E949C0982FFFBCFC80167 -:101460000E94B50960E288EC0E94A90961E080E869 -:101470000E94A90980E0DF91CF911F910F910895FB -:1014800080917C05816080937C0584E692E00E94D7 -:10149000F30980EF91E0909358028093570284EE15 -:1014A00091E090933E0280933D0288ED91E090930D -:1014B0002402809323028CEC91E090930A028093A3 -:1014C0000902089584E692E00E94CF0C40E064E6B1 -:1014D00072E08AE492E00E94600940E064E672E013 -:1014E00080E392E00E94600940E064E672E086E1F9 -:1014F00092E00E94600940E064E672E08CEF91E0C7 -:101500000E94600985E591E09093F1018093F001DC -:101510009093E5018093E4019093D9018093D801E1 -:101520009093CD018093CC0164E672E08BEB91E067 -:101530000E948F1864E672E08AEA91E00C948F189A -:10154000AF92BF92CF92DF92EF92FF920F931F93D1 -:10155000CF93DF937C01CB01D22E20917C0520FF1D -:1015600013C0DB01ED91FC910084F185E02D09951C -:101570001F928F938FE692E09F938F930E94760342 -:101580000F900F900F900F90E8015801AD0CB11C17 -:1015900089E6C82E82E0D82E80917C05CA15DB052D -:1015A00079F080FF0BC088811F928F93DF92CF92DA -:1015B0000E9476030F900F900F900F902196ECCF22 -:1015C00080FF04C086E692E00E94DD02F80182817D -:1015D000813091F480917C0580FF1DC08CE492E005 -:1015E000DF91CF911F910F91FF90EF90DF90CF90FF -:1015F000BF90AF900C94DD02D701129688E0F801FD -:1016000001900D928A95E1F70E94340BD7011B9649 -:101610007C936E931A97DF91CF911F910F91FF905A -:10162000EF90DF90CF90BF90AF90089580E090E072 -:1016300008958FEF9FEF08950895862F0E94301B25 -:1016400081E090E00895E4EEF2E01382128288EEE9 -:1016500093E0A0E0B0E084839583A683B7838BE515 -:1016600091E09183808308950C94990B8F929F92BF -:10167000AF92BF92CF92DF92EF92FF920E940A3216 -:101680004B015C0120E030E04AE755E40E94C132A2 -:101690006B017C0120E030E040E85FE30E94CF3145 -:1016A00087FD24C020E03FEF4FE757E4C701B601B4 -:1016B0000E94BC321816ACF420E030E040E251E465 -:1016C000C501B4010E94C1320E94DB3120E931E042 -:1016D0006115710581F0C9010197F1F76150710938 -:1016E000F7CFC701B6010E94DB3102C061E070E0B4 -:1016F000CB010197F1F7FF90EF90DF90CF90BF9073 -:10170000AF909F908F90089582E084BD93E095BD47 -:101710009AEF97BD80936E0008952FB7F89480914B -:10172000F2029091F302A091F402B091F5022FBF62 -:1017300008952FB7F8946091F2027091F3028091AE -:10174000F4029091F5022FBF0895CF92DF92EF92AD -:10175000FF920F931F932FB7F8944091F20250918C -:10176000F3026091F4027091F5022FBF6A017B01D0 -:10177000EE24FF248C0120E030E0C016D106E20602 -:10178000F30610F4415051099A01281B390BC90185 -:101790001F910F91FF90EF90DF90CF9008951F92CF -:1017A0000F920FB60F9211248F939F93AF93BF9315 -:1017B0008091F2029091F302A091F402B091F502AF -:1017C0000196A11DB11D8093F2029093F302A093A4 -:1017D000F402B093F502BF91AF919F918F910F905A -:1017E0000FBE0F901F901895CF93DF93FC01862FAB -:1017F0008078A9F4283008F04DC0442321F0958169 -:10180000973009F447C0EF01A1E0B0E09D8599232E -:1018100041F011962596A031B105C1F73BC080E09B -:1018200039C061111CC085E08A9FE0018B9FD00DFB -:101830001124CE0FDF1F442331F081E48887858196 -:101840008F5F858302C081E0888725E02A9FC001E1 -:101850002B9F900D1124E80FF91F80851BC0677026 -:10186000660F660F660F442341F0606485818F5FC9 -:1018700085838770687F682B03C02770687B622B25 -:1018800025E02A9FC0012B9F900D1124E80FF91F1E -:101890006087862FDF91CF910895611102C006966F -:1018A0000895FC0121E03585631739F02F5F3596E7 -:1018B0002031C9F780E090E00895069635E0239F37 -:1018C000800D911D11240895DF92EF92FF920F93E6 -:1018D0001F93CF93DF93EC01E62EF12C85E0689FF8 -:1018E000B0011124FE01E60FF71F8085182F177035 -:1018F00086FF17C001E085E0D82EFE01D09EE00DE6 -:10190000F11D112480858695869586958770181718 -:10191000F9F00F5F003189F78D81811302C01150FA -:101920001D8385E08E9DF0018F9DF00D1124EC0F3D -:10193000FD1F108681E0818712862296D783C68399 -:10194000DF91CF911F910F91FF90EF90DF9008955D -:10195000602FCE010E94640CD0CFFC01613499F459 -:101960009C01255B3F4F61E0AC014E5F5F4F1586E8 -:1019700066871786548743873596E217F307B9F7CA -:10198000FC011582089521E03585631729F02F5F4A -:1019900035962031C9F70895622F0C94640CFC0130 -:1019A0008DE691E0918380831582108681E08187A6 -:1019B0001286CF01029697838683128228E02383C2 -:1019C0002CE32483DF019F01255B3F4F41E01D96FF -:1019D0001C921D971E964C931E971F961C921F9744 -:1019E0001C969C938E931B971596A217B30779F7B5 -:1019F000EA58FF4F108281E18093FA0208958091A6 -:101A0000FA020895CF93C42F0E944D0C009789F0DD -:101A1000DC01ED91FC911197309759F013969C9150 -:101A200080E0891731F020812C1731F033968F5FD9 -:101A3000F8CF80E090E001C0CF01CF9108950F93DF -:101A40001F93CF93DF932115310571F0E901042F26 -:101A5000162F0E944D0CFC01892B41F01283D1837B -:101A6000C083038380E003C088ED01C086EDDF9171 -:101A7000CF911F910F910895CF92DF92FF920F9314 -:101A80001F93CF93DF93662381F1F62E8C016C01B7 -:101A900086E5C80ED11CC0E0D0E0D6018D919D91A5 -:101AA0006D010097F1F0DC01ED91FC910084F1856E -:101AB000E02D0995F81215C0AB96CC0FDD1FC00FB5 -:101AC000D11F88819981DC01ED91FC910480F58121 -:101AD000E02DDF91CF911F910F91FF90DF90CF907C -:101AE00009942196C031D105C1F680E0DF91CF91F4 -:101AF0001F910F91FF90DF90CF9008952E98089539 -:101B0000CF93C82F0E947E0DCEBD0DB407FEFDCF32 -:101B10001EBC0DB407FEFDCF0E949A098EB5CF9171 -:101B20000895CF93DF93C82FD62F0E947E0DC260F9 -:101B3000CEBD0DB407FEFDCFDEBD0DB407FEFDCF5B -:101B4000DF91CF910C949A098F929F92AF92BF929E -:101B5000CF92DF92EF92FF920F931F93CF93DF9379 -:101B6000EC01D62EC42E59010E944D0C7C01009729 -:101B700009F445C0FC0180819181892B09F441C0A1 -:101B80004C2D6D2DCE010E94020DF50191838083B5 -:101B90000097C9F1FC0182818695869590E080319D -:101BA000910514F08FE090E041E050E060E070E0DB -:101BB0004A015B0104C0880C991CAA1CBB1C8A95B5 -:101BC000D2F7D501C4010197F801918380836D2D6F -:101BD00080EE0E94910D88ED0E94800DF7019481A6 -:101BE000992331F0CA58DF4F68816260682B02C0C8 -:101BF000682F697F88ED0E94910D80E005C086ED19 -:101C000003C087ED01C08BEDDF91CF911F910F9144 -:101C1000FF90EF90DF90CF90BF90AF909F908F900C -:101C200008958F929F92AF92BF92CF92DF92EF92E0 -:101C3000FF920F931F93CF93DF93862E942E59011B -:101C40000E94340B6B017C0128E8C20E23E1D21EF6 -:101C5000E11CF11C00E010E0D0E0C0E098280E94F8 -:101C6000340BDC01CB018C199D09AE09BF09B7FF0C -:101C70002DC0692D80EF0E94910D0E94340BDC0174 -:101C8000CB018C199D09AE09BF09B7FF09C088ECCB -:101C90000E94800D87FFF1CF60E888EC0E94910DD3 -:101CA00088EF0E94800DC82FCF70C43019F0CE305D -:101CB00051F00CC00F5F1F4FA114B10481F20A153F -:101CC0001B0569F603C0DF5FD33049F68C2FDF9127 -:101CD000CF911F910F91FF90EF90DF90CF90BF9029 -:101CE000AF909F908F9008959F92AF92BF92CF92A6 -:101CF000DF92EF92FF920F931F93CF93DF937C01BC -:101D0000D42F122F902E00E06C01C60ED11CC60EEF -:101D1000D11C86E5C80ED11CA42EB12CABE2AA0EB4 -:101D2000B11CAA0CBB1CAE0CBF1CF60180819181BA -:101D3000DC01ED91FC910280F381E02D292D412FF2 -:101D40006D2F0995803EC9F4D1110BC061E088EE7A -:101D50000E94910D66E670E080E090E00E94360BF4 -:101D600014C0F50180819181DC01ED91FC91028428 -:101D7000F385E02D612F099508C08D3021F40330E3 -:101D800008F03FC014C081113FC0F60180819181ED -:101D9000DC01ED91FC910190F081E02D292D412F86 -:101DA0006D2F0995C82F8D3051F4033050F464E63F -:101DB00070E080E090E00E94360B0F5FB6CF882382 -:101DC00011F1D1110BC061E088EE0E94910D66E621 -:101DD00070E080E090E00E94360B11C0ED2FF0E043 -:101DE000BB96EE0FFF1FEE0DFF1D80819181DC0180 -:101DF000ED91FC910284F385E02D612F09958C2FE4 -:101E000003C08DE001C080E0DF91CF911F910F9161 -:101E1000FF90EF90DF90CF90BF90AF909F9008958C -:101E20000F931F93CF93DF93182F062FEA010E9481 -:101E30007E0D12601EBDFE01802F882339F00DB487 -:101E400007FEFDCF91919EBD8150F7CFC00FD11DF0 -:101E50000DB407FEFDCF0E949A09CE01DF91CF910C -:101E60001F910F9108952F923F924F925F926F9220 -:101E70007F928F929F92AF92BF92CF92DF92EF921A -:101E8000FF920F931F93CF93DF9300D000D01F9248 -:101E9000CDB7DEB77D836C834A016901FB01F18018 -:101EA0008FEF8F0D803408F074C00E94340B2B012B -:101EB0003C01F8E84F0EF3E15F1E611C711CEC81E0 -:101EC000FD81828180FD02C060E401C060E888EE8F -:101ED0000E94910D312C8F2D90E09A838983C1143B -:101EE000D10409F448C0E980FA80CE14DF0408F474 -:101EF0007601EB82A8016E2D80E10E94100F6E2DFD -:101F000088E30E94910DEC81FD816081606280EF29 -:101F10000E94910D88EC0E94800D87FFFBCF60E846 -:101F200088EC0E94910D88EF0E94800D8F70382EF2 -:101F3000A12CB12C212C332009F46BC00E94340B4E -:101F4000DC01CB0184199509A609B709B7FF61C067 -:101F5000F6E03F1601F12EE0321609F455C084E098 -:101F6000381209C0FFEFAF1ABF0A8114910449F17A -:101F7000A814B90431F588EF0E94800D85FB8827ED -:101F800080F9EC81FD81928180FB90F99283832D11 -:101F900045C08AED43C088EF0E94800D85FB8827ED -:101FA00080F991E08927EC81FD81928180FB90F995 -:101FB000928390FD02C060E401C060E888EE0E9458 -:101FC000910D60E088E30E94910DF801608180E14D -:101FD0000E94910D6B8188E30E94910DEC81FD813F -:101FE0006081606280EF0E94910D88EC0E94800DFC -:101FF00087FFFBCF60E888EC0E94910D88EF0E947C -:10200000800D8F70382E97CF239423E02212D9CFE2 -:10201000B2CFCE18DF080E0D1F1D61CF0F900F90AD -:102020000F900F900F90DF91CF911F910F91FF9024 -:10203000EF90DF90CF90BF90AF909F908F907F9068 -:102040006F905F904F903F902F9008952F923F9206 -:102050004F925F926F927F928F929F92AF92BF92B8 -:10206000CF92DF92EF92FF920F931F93CF93DF9364 -:10207000CDB7DEB72A970FB6F894DEBF0FBECDBF3F -:102080001C016B015B834A835901D9016D907C90DF -:102090001197FB01F181F9831D921C92DB011296CD -:1020A0008C9181FD02C060E101C060E288EE0E9477 -:1020B000910D8E2D90E0A0E0B0E08C839D83AE83E7 -:1020C000BF8368862A813B81D6014C9160E0C101C3 -:1020D0000E94110EF82EB6E08B1318C088EF0E94F4 -:1020E000800D82958170E1E08E27D60112969C9139 -:1020F000129780FB91F912969C9391FD02C060E1CA -:1021000001C060E288EE0E94910DDCCF811167C0B2 -:1021100088EC0E94800D82FF60C080E30E94800DE9 -:10212000582E90E06816790608F45884F5018081ED -:1021300091819301281B390B3A87298737FF02C009 -:102140001A861986852C912C89859A858816990678 -:1021500014F49A86898649840E947E0D98E09EBD7B -:102160000DB407FEFDCFF801442041F01EBC4A9497 -:102170000DB407FEFDCF8EB58193F6CFA985BA8544 -:102180000A0F1B1F0E949A0964E088EC0E94910DBF -:10219000F50180819181880E991E91828082F9815A -:1021A0005F1618F08614970470F088EF0E94800D77 -:1021B00082958170D60112969C91129780FB91F9BD -:1021C00012969C930CC0EE2009F47CCF6C817D812B -:1021D0008E819F810E94360B75CF80EFF82E8F2D58 -:1021E0002A960FB6F894DEBF0FBECDBFDF91CF9118 -:1021F0001F910F91FF90EF90DF90CF90BF90AF9025 -:102200009F908F907F906F905F904F903F902F9016 -:1022100008952F923F924F925F926F927F928F928A -:102220009F92AF92BF92CF92DF92EF92FF920F9365 -:102230001F93CF93DF93CDB7DEB761970FB6F894B6 -:10224000DEBF0FBECDBF3C01F42E322E202EC98A38 -:102250004EA05FA0C8A4D9A4188A1F861E861D861A -:102260008E01035F1F4F9E01215F3F4F0E94A40D0F -:10227000811196C039822A82EB8289898C83BE8241 -:10228000AD8298868F82AE014F5F5F4F68E080E23B -:102290000E94100F2D853E854F2D60E1C3010E94E5 -:1022A000110EE82E811178C0932D9078392EC1142B -:1022B000D10409F462C0EF85F8898281992309F479 -:1022C0004DC082608283540122242394A114B1045E -:1022D00009F458C05C864B864D855E856F8578898C -:1022E000E12C86019E01255F3F4FC3010E9426100D -:1022F000E82EA6E08A130FC00F85188988EF0E9488 -:10230000800D85FB882780F98225F801928180FB6A -:1023100091F99283DBCF81113FC08AA59BA50097DD -:10232000A1F0DC01ED91FC9111970190F081E02D7D -:10233000C4018A199B099A8789876B857C859E01D0 -:10234000275F3F4FA601CD0109958B859C85A81A73 -:10235000B90A8415950508F0B9CF0FC08160828352 -:102360004D855E8586019201BF01C3010E94330F36 -:10237000811116C02D853E8511C02D853E853110F9 -:1023800005C00CC0E11008C02D853E8560EA4F2DC8 -:10239000C3010E94110E04C08E2D02C060E8F7CF69 -:1023A00061960FB6F894DEBF0FBECDBFDF91CF911F -:1023B0001F910F91FF90EF90DF90CF90BF90AF9063 -:1023C0009F908F907F906F905F904F903F902F9055 -:1023D00008958F929F92AF92BF92CF92EF920F93F8 -:1023E0001F931F921F921F930F933F932F934901A7 -:1023F000A12CB12CCC24C394E12C06E020E80E944F -:1024000009110F900F900F900F900F900F901F9148 -:102410000F91EF90CF90BF90AF909F908F900895C5 -:102420008F929F92AF92BF92CF92EF92FF920F93B3 -:102430001F921F92FF92EF923F932F934901A12C7D -:10244000B12C22E0C22EE02E06E020E80E94091105 -:102450000F900F900F900F900F900F900F91FF9093 -:10246000EF90CF90BF90AF909F908F9008954F9234 -:102470005F926F927F928F929F92AF92BF92CF9214 -:10248000DF92EF92FF920F931F93CF93DF93CDB71D -:10249000DEB7C054D1090FB6F894DEBF0FBECDBF72 -:1024A0003C01D62E542E422EC02ECE0101965C0148 -:1024B0007C01022F29E030E0C3010E94101281113B -:1024C0001BC08B809C801F93CF92BF92AF921F92B4 -:1024D00080E48F93A12CB12C82E0C82EE42C06E07E -:1024E00020E8452D6D2DC3010E9409110F900F901A -:1024F0000F900F900F900F90C05CDF4F0FB6F894C5 -:10250000DEBF0FBECDBFDF91CF911F910F91FF9026 -:10251000EF90DF90CF90BF90AF909F908F907F9083 -:102520006F905F904F9008958F929F92AF92BF925D -:10253000CF92EF920F93CF931F921F921F921F92F1 -:102540001F921F92812C912CA12CB12CC12CE22E18 -:1025500005E020E00E940911C82F6CE271E080E0E4 -:1025600090E00E94360B0F900F900F900F900F90FD -:102570000F908C2FCF910F91EF90CF90BF90AF9095 -:102580009F908F9008950F931F93CF93DF938A3F6F -:102590003FEF930711F486ED2DC0DC011696ED9107 -:1025A000FC911797EF2B09F1122F242FEC011A87BA -:1025B00040E00E94F40B082F8823C9F0682FCE0159 -:1025C0000E944D0C009739F3FC011483202F40E04A -:1025D00060E0CE010E949412182F882351F0602FE2 -:1025E000CE010E94AD0C812F05C087ED03C084EDA4 -:1025F00001C080E0DF91CF911F910F9108952F923C -:102600003F924F925F926F927F928F929F92AF9282 -:10261000BF92CF92DF92EF92FF920F931F93CF93CF -:10262000DF93CDB7DEB766970FB6F894DEBF0FBE67 -:10263000CDBF1B8A38E03C8B3CE33D8B8A3F3FEFAC -:10264000930709F464C0522E342E462E7C01DC011F -:102650001696CD90DC901797CE01439617969C93D3 -:102660008E9316971A962C938E010F5F1F4F22E1BF -:1026700030E040E060E0C7010E94E911F701D78235 -:10268000C6828111A6C089849A846B847C84FD8172 -:10269000FE8B2E80670136E5C30ED11C560110E07B -:1026A000D5018D919C910097F1F1DC01ED91FC91A8 -:1026B0000084F185E02D0995811135C0F5018081F7 -:1026C0009181DC01ED91FC910088F189E02D622D72 -:1026D0000995882341F1F50180819181DC01ED911B -:1026E000FC910484F585E02DA301B40109958111C5 -:1026F00010C0F50180819181DC01ED91FC9106848F -:10270000F785E02D6E890995811103C00CC086ED17 -:1027100060C0052D232D442D612FC7010E94740E2A -:10272000813D09F056C01F5FB2E0AB0EB11C103105 -:1027300009F0B6CF10E0F601808191810097E1F1B8 -:10274000DC01ED91FC910084F185E02D099581116A -:1027500033C0F60180819181DC01ED91FC9100880C -:10276000F189E02D622D09958823D9F0F601808149 -:102770009181DC01ED91FC910484F585E02DA301AC -:10278000B4010995811118C0F60180819181DC01A5 -:10279000ED91FC910684F785E02D6E8909958111F4 -:1027A0000BC0052D232D442D612FC7010E94740EEF -:1027B000982F977F913D69F41F5FE2E0CE0ED11C08 -:1027C000103109F0B8CF252D432D642DC7010E948B -:1027D000C31266960FB6F894DEBF0FBECDBFDF9171 -:1027E000CF911F910F91FF90EF90DF90CF90BF900E -:1027F000AF909F908F907F906F905F904F903F90A1 -:102800002F9008958F929F92AF92BF92CF92EF92A6 -:102810000F931F921F921F921F921F921F92812C43 -:10282000912CA12CB12CC12CE22E09E020E00E94B9 -:1028300009110F900F900F900F900F900F900F9124 -:10284000EF90CF90BF90AF909F908F9008958F9210 -:102850009F92AF92BF92CF92DF92EF920F931F930E -:10286000CF93DF9300D000D0CDB7DEB76C01590114 -:1028700048011C821B821A8219828E010F5F1F4F32 -:102880009E012D5F3F4F0E94A40D811109C0498117 -:102890005A816B817C8184019501C6010E942610BA -:1028A0000F900F900F900F90DF91CF911F910F918C -:1028B000EF90DF90CF90BF90AF909F908F90089552 -:1028C000AF92BF92CF92DF92EF92FF920F931F933E -:1028D000CF938C011D990EC088EC0E94800D85FF5E -:1028E00005C0C8010E94B50960E201C060E088EC43 -:1028F0000E94910D8091A901813039F040F0823021 -:1029000079F0833079F5C1E00CC083E106C0809195 -:10291000FA02807F803131F181E18093FA0222C096 -:10292000C0E08091FA02807F8031E9F40E94340B8C -:10293000DC01CB0188539F4FAF4FBF4F8093F6020E -:102940009093F702A093F802B093F90280E280938B -:10295000FA0280ED0E94800D682F6F7D80ED0E944D -:10296000910D01C0C0E0780186E5E80EF11C680118 -:10297000A6E7CA0ED11C5701F501819191915F0123 -:10298000009739F0DC01ED91FC910680F781E02D94 -:102990000995AC14BD0481F78091FA02803409F4E2 -:1029A00047C050F4803221F18033A1F1813109F028 -:1029B0008EC0F60110820AC0813509F464C08038E7 -:1029C00009F476C0803509F082C045C0D7018D91E9 -:1029D0009D917D01009739F0DC01ED91FC9104801F -:1029E000F581E02D0995EC14FD0481F782E16DC0BD -:1029F0000E94340B0091F6021091F7022091F80228 -:102A00003091F902DC01CB01801B910BA20BB30BBF -:102A1000B7FD5DC080ED0E94800D682F606280ED83 -:102A20000E94910D61E088EE0E94910D80E44DC0FE -:102A300088EE0E94800D80FD4AC060E488EC0E9410 -:102A4000910D88ED0E94800D682F686088ED0E94CE -:102A5000910D80E53AC088EC0E94800D86FF37C05A -:102A600081E58093FA020E94340BDC01CB0144968D -:102A7000A11DB11D8093F6029093F702A093F80276 -:102A8000B093F90224C00E94340BC090F602D0909B -:102A9000F702E090F802F090F902DC01CB018C190A -:102AA0009D09AE09BF09B7FD12C080E88093FA0204 -:102AB0002C2F40E060E0C8010E94FF12882321F023 -:102AC000823D29F080EA01C080E98093FA02CF912B -:102AD0001F910F91FF90EF90DF90CF90BF90AF903C -:102AE00008958F929F92AF92BF92CF92EF920F93E1 -:102AF000CF93DF93CDB7DEB7C054D1090FB6F894AA -:102B0000DEBF0FBECDBF5F934F939E012F5F3F4F40 -:102B10003F932F931F9220E42F9320E8822E912C35 -:102B20005B0132E2C32EE12C06E021E840E0FC012B -:102B30006681848195810E9409110F900F900F90FA -:102B40000F900F900F90C05CDF4F0FB6F894DEBF70 -:102B50000FBECDBFDF91CF910F91EF90CF90BF907F -:102B6000AF909F908F9008958F929F92AF92BF9257 -:102B7000CF92DF92EF92FF920F93A42EB12C1F926F -:102B80001F92DF92CF92FF92EF924701C22EE02E6A -:102B900009E021E2462FFC016681848195810E9433 -:102BA00009110F900F900F900F900F900F900F91B1 -:102BB000FF90EF90DF90CF90BF90AF909F908F905D -:102BC00008958F929F92AF92BF92CF92EF920F9300 -:102BD000A62EB12C1F921F921F921F921F921F921E -:102BE000812C912CC22EE42E0AE021E240E0FC016F -:102BF0006681848195810E9409110F900F900F903A -:102C00000F900F900F900F91EF90CF90BF90AF90DB -:102C10009F908F9008958F929F92AF92BF92CF9284 -:102C2000EF920F93A62EB12C1F921F921F921F920C -:102C30001F921F92812C912CC12CE42E0BE021E2DB -:102C400040E0FC016681848195810E9409110F900A -:102C50000F900F900F900F900F900F91EF90CF90DB -:102C6000BF90AF909F908F900895FC01828508954A -:102C700081E0693009F080E00895CF93DF93EC01A3 -:102C80008A819B81DC01ED91FC910480F581E02D2E -:102C90006A8509958A85813439F4EA81FB81EA588D -:102CA000FF4F8081846080831A861B861C861D8668 -:102CB0001E861F86188A80E0DF91CF9108958F923B -:102CC0009F92AF92BF92CF92EF920F93A42EB12C0E -:102CD000B22A1F921F921F921F921F921F92812C45 -:102CE000912CC12CE62E01E023E240E0FC0162853C -:102CF000828193810E9409110F900F900F900F9085 -:102D00000F900F900F91EF90CF90BF90AF909F904A -:102D10008F9008958F929F92AF92BF92CF92EF9231 -:102D20000F93A62EB12C1F921F923F932F935F9368 -:102D30004F934A01C12CE12C00E023EA40E0FC0162 -:102D40006285828193810E9409110F900F900F90EC -:102D50000F900F900F900F91EF90CF90BF90AF908A -:102D60009F908F9008958F929F92AF92BF92CF9233 -:102D7000EF920F93A42EB12CB22A1F921F921F9292 -:102D80001F921F921F92812C912CC12CE62E03E0E2 -:102D900023E240E0FC016285828193810E94091157 -:102DA0000F900F900F900F900F900F900F91EF904A -:102DB000CF90BF90AF909F908F9008952F923F92A9 -:102DC0004F925F926F927F928F929F92AF92BF923B -:102DD000CF92DF92EF92FF920F931F93CF93DF93E7 -:102DE000CDB7DEB7E8970FB6F894DEBF0FBECDBF04 -:102DF000DC011A963C91311107C1122F242E362E78 -:102E00003C01FC01C280D380D601ED91FC91019080 -:102E1000F081E02D60E0C60109957C01009709F47E -:102E2000F5C0FC01A080B180A114B10409F4F0C088 -:102E30004301F4E08F0E911CDC0111969C928E925E -:102E400014961C93FE0131962F018F0128E030E08B -:102E500040E060E0D30112968D919C9113970E94FF -:102E6000E911F70114828111D9C08D81893009F0EF -:102E7000D1C00981D601ED91FC910280F381E02D52 -:102E8000222D41E0632DC6010995F3018287882335 -:102E900009F4C2C098859583282F40E060E08281C4 -:102EA00093810E949412182F882389F0D701AD9244 -:102EB000BC92D601ED91FC910480F581E02DD30107 -:102EC0001A966C91C6010995F3011286ABC0202FAA -:102ED000013208F020E2D701AD92BC9221110BC063 -:102EE000940142E0F3016285828193810E941F0D6B -:102EF000811197C010C030E0820140E0D3011A96E2 -:102F00006C911A9712968D919C9113970E94E911DA -:102F1000811187C0E5CF1F921F925F924F921F923F -:102F200088E08F9388E0882E912CA12CB12C99E217 -:102F3000C92EE12C06E020EA40E0F301628582819F -:102F400093810E940911182F0F900F900F900F90EE -:102F50000F900F90811166C08B81D3011B968C93CB -:102F60001B97720100E028E030E040E01A966C9177 -:102F70001A9712968D919C9113970E9410128111AD -:102F800050C02B813C8140E0F301628582819381B6 -:102F90000E941012811145C0298130E0CE01819636 -:102FA0007C0140E0D3011A966C911A9712968D918C -:102FB0009C9113970E941012811133C02E8140E022 -:102FC000F3016285828193810E940214811129C0DC -:102FD00001E0D3011B968C91801740F020E0402F38 -:102FE00068E0C3010E94B3160F5FF3CFD3011296BE -:102FF000ED91FC911397EA58FF4F808184608083A4 -:1030000081E050968C930EC019ED0CC016ED0AC0ED -:1030100017ED08C011ED06C014ED04C0F701B18230 -:10302000A082182F812FE8960FB6F894DEBF0FBE4E -:10303000CDBFDF91CF911F910F91FF90EF90DF9067 -:10304000CF90BF90AF909F908F907F906F905F9048 -:103050004F903F902F900895CF92DF92FF920F9361 -:103060001F93CF93DF9300D000D0CDB7DEB78C0194 -:10307000F62E19821A821B821C8220E0462F61E103 -:103080000E945F1620E04F2D60E1C8010E945F168C -:1030900020E04F2D64E0C8010E94B31683E0C82EE3 -:1030A000D12C9E012F5F3F4F44E050E06F2DC801AF -:1030B0000E948A168823F1F020E04F2D64E1C801B8 -:1030C0000E945F1620E04F2D60E1C8010E945F164C -:1030D00064E170E080E090E00E94360B0F900F906A -:1030E0000F900F90DF91CF911F910F91FF90DF9084 -:1030F000CF90089589819A81AB81BC819D7F833077 -:103100009140A041B105C1F264E670E080E090E03A -:103110000E94360B81E0C81AD10819F6CDCFFC0108 -:1031200087E791E09183808373836283128613869D -:103130001486158616861786108A148288E0858381 -:103140009CE3968391E09783808784E08187611573 -:103150007105B1F0DB01AA5ABF4F80E090E02D91DC -:103160003D91232B49F48B96880F991FDB01A80F03 -:10317000B91FED93FC93089501968031910579F77D -:103180000895EF92FF920F931F93CF938C01C62F58 -:103190007A01FA0180819181A281B3818130F3E0CB -:1031A0009F07F1E0AF07B105D1F060F48115E1E0D0 -:1031B0009E07AE07B10571F181309140A140B10584 -:1031C00071F064C0833021E0920720E1A207B105CD -:1031D000E1F183309340A041B105B9F157C080912E -:1031E000FB02811153C020E04C2F61E1C8010E9415 -:1031F0005F1620E04C2F60E1C8010E945F1620E0BE -:103200004C2F64E0C8010E94B31681E08093FB025A -:1032100081EB3DC020E0462F61E1C8010E945F16AE -:1032200020E04C2F60E1C8010E945F161092FB0263 -:10323000F80162856770C770660F660F660F6C2BAA -:10324000828193810E943C0D21C020E04C2F64E1DB -:10325000C8010E945F1620E04C2F60E1C8010E9467 -:103260005F1664E170E080E090E00E94360BF801A8 -:103270006285F70121812695217067704C2FF80136 -:10328000828193810E94FF121092FB0280E0CF9115 -:103290001F910F91FF90EF900895CF92DF92EF92E0 -:1032A0000F931F93CF93DF93CDB7DEB72E970FB653 -:1032B000F894DEBF0FBECDBF6C0181E090E09E8729 -:1032C0008D87E12C8E010F5F1F4F9E01235F3F4FC3 -:1032D00041E0F6016285828193810E942714811169 -:1032E00051C002E011E089818023D1F019861A864D -:1032F0001B861C869E01275F3F4F44E050E0612FF4 -:10330000C6010E948A1681110BC0AE01475F5F4F54 -:10331000612FC6010E94C118813B99F1811132C011 -:10332000000F1F5F1830F9F611E0F6018385811751 -:1033300040F119861A861B861C869E01275F3F4F27 -:1033400044E050E0612FC6010E948A16811117C027 -:1033500089859A85877091708130914081F48B8541 -:103360009C8581609C878B87AE01475F5F4F612F93 -:10337000C6010E94C118813B21F0811103C01F5F6B -:10338000D4CF80E02E960FB6F894DEBF0FBECDBF2F -:10339000DF91CF911F910F91EF90DF90CF90089523 -:1033A0000F931F93CF93DF93FC012089211102C05B -:1033B00080E020C0EC010E94340B0C851D852E8519 -:1033C0003F85DC01CB01801B910BA20BB30BB7FD3A -:1033D000EFCFCE010E944D19182F0E94340BDC0153 -:1033E000CB018C599F4FAF4FBF4F8C879D87AE87C6 -:1033F000BF87812FDF91CF911F910F910895CF93B8 -:10340000DF93FC01EB0180819181892B21F1828185 -:10341000882319F1DA012D913C91232BE1F0A88149 -:10342000B9819C91A381B0E0A81BB10920813181B1 -:10343000A20FB31F9C93828181508283DA018D9108 -:103440009C91119701978D939C9388819981019606 -:1034500099838883DCCF80E003C08381828381E00D -:10346000DF91CF910895CF92DF92EF92FF920F9369 -:103470001F93CF93DF936C01EB017B01E40EF51EEC -:1034800000E010E0CE15DF0561F06991D601ED9105 -:10349000FC910190F081E02DC6010995080F191FDC -:1034A000F1CFC801DF91CF911F910F91FF90EF9065 -:1034B000DF90CF900895809108040895CF93DF9313 -:1034C00000D01F92CDB7DEB79C0180918B05843070 -:1034D00019F593E099833B832A839093E9008FEF5A -:1034E0009091E800815095FD06C095ED9A95F1F711 -:1034F00000008111F5CF8091E80085FF0DC040E00C -:1035000050E063E070E0CE0101960E94CC1D8091F6 -:10351000E8008E778093E8000F900F900F90DF9176 -:10352000CF910895CF93DF9300D01F92CDB7DEB730 -:1035300020918B05243031F522E0298380589109B0 -:103540009B838A8383E08093E9008FEF9091E8006A -:10355000815095FD06C095ED9A95F1F70000811117 -:10356000F5CF8091E80085FF0DC040E050E063E0BA -:1035700070E0CE0101960E94CC1D8091E8008E770C -:103580008093E8000F900F900F90DF91CF910895F6 -:1035900020918B052430F1F422E02093E9002FEFF5 -:1035A0003091E800215035FD06C035ED3A95F1F730 -:1035B00000002111F5CF2091E80025FF0BC040E06D -:1035C00050E065E070E00E94CC1D8091E8008E77AD -:1035D0008093E8000895CF93DF9320918B052430EA -:1035E00049F521E02093E90021E8215059F030917C -:1035F000E80035FD07C0EFE3F1E03197F1F700C0D7 -:103600000000F3CF2091E80025FF14C0EC0140E05A -:1036100050E068E070E00E94CC1D8091E8008E7759 -:103620008093E80088E0FE01A0E0B4E001900D92F4 -:103630008A95E1F7DF91CF910895CF93C091FE0273 -:10364000C1110BC00E94990B643C79408105910522 -:1036500020F081E08093FE02C1E08C2FCF9108958D -:10366000CF93C82F0E941D1B882309F448C00FB6B2 -:1036700007FE45C080918B05843009F040C08091E1 -:10368000E9008F702091EC00922F917020FD90E85E -:10369000892B94E09093E9009091EB0090FF2CC06F -:1036A0009091EE0097FF28C09091030120910201B4 -:1036B000291709F447C02091E80025FF1DC0E091BB -:1036C0000001F0910101E90FF11D30819F5F209110 -:1036D00004019223909303013093F1009091E8004C -:1036E00095FDE2CF9091E80090FFDECF9091E80049 -:1036F0009E779093E800D8CF8F708093E9008091F7 -:10370000020190E0AC014F5F5F4F30910401232F25 -:1037100030E0242335234091030150E0241735077E -:10372000D1F02091000130910101F901E80FF91F5A -:10373000C083809102018F5F90910401892380935F -:10374000020109C09091E80095FFD6CFC093F10027 -:103750008F708093E90080E0CF91089580918A0571 -:10376000811109C00E945D1F0E94BA1F8091E20072 -:1037700084608093E200089510928A050895089568 -:10378000089542E061EC81E00E94D61E42E061ECC7 -:1037900082E00E94D61E42E061EC83E00E94D61EC9 -:1037A00042E261EC84E00C94D61E80918D0583305A -:1037B00009F453C030F4813071F0823009F48CC0C8 -:1037C00008958A3009F478C08B3009F45EC08930DE -:1037D00009F09AC020C080918C05813A09F094C00C -:1037E0008091E800877F8093E80080919005909118 -:1037F0009105892B21F468E080E094E003C060E04B -:1038000080E090E070E00E94171E8091E8008B77C6 -:103810008093E800089580918C05813209F074C08E -:103820008091900590919105892B09F06DC0809150 -:10383000E800877F8093E8008091E80082FD05C062 -:1038400080918B058111F8CF5FC08091F10080934A -:1038500008048091E8008B7753C080918C05813AF1 -:1038600009F052C08091900590919105892B09F043 -:103870004BC08091E800877F8093E8008091E8004A -:1038800080FFFCCF80910F0136C080918C05813282 -:10389000D9F58091900590919105892BA9F580919A -:1038A000E800877F8093E8000E940B1F80918E05BF -:1038B00080930F010C94B62780918C05813221F5FD -:1038C0008091E800877F8093E8000E940B1F809121 -:1038D0008F0580930904089580918C05813AA1F4A5 -:1038E0008091E800877F8093E8008091E80080FF66 -:1038F000FCCF809109048093F1008091E8008E77DD -:103900008093E8000C940B1F089580910804809325 -:10391000FF02109208040E94C4230C94B6270C9452 -:10392000851C0E94B92E8091FF028093080408959F -:103930000C94911C08950C949A1C0C949A1CCF938F -:1039400084B7877F84BF0FB6F894A89580916000F4 -:10395000886180936000109260000FBE90E080E864 -:103960000FB6F89480936100909361000FBE80E3DE -:103970009BE10E943D2E85E091E00E9444228DE96A -:1039800092E00E94DD020E949D1C0E9403230E947F -:103990005D1F0E94BA1F8091E20084608093E20064 -:1039A00078940E94052380918B05843019F00E9441 -:1039B0004F09F9CF8BE892E00E94DD020E949B1C28 -:1039C00089E792E00E94DD02C4E080918B0585309A -:1039D00019F40E945109F9CF0E9409232091E400B3 -:1039E0003091E5008091FC029091FD022817390783 -:1039F00061F38091E4009091E5009093FD02809343 -:103A0000FC020E941D1B882301F380918B058430EA -:103A1000E1F68091E9008F702091EC00922F917077 -:103A200020FD90E8892BC093E9009091EB0090FF76 -:103A300043C09091EE0097FF3FC090910301209109 -:103A40000201291709F12091E80025FF1DC0E0912E -:103A50000001F0910101E90FF11D30819F5F20917C -:103A600004019223909303013093F1009091E800B8 -:103A700095FDE3CF9091E80090FFDFCF9091E800B3 -:103A80009E779093E800D9CF9091F3002091F200B7 -:103A900030E0392B232B81F09091E80090FF0CC08F -:103AA0009091E80095FF03C01092F100F9CF90913A -:103AB000E8009E779093E8008F708093E90085CFAF -:103AC000292F332723303105C9F060F42130310527 -:103AD00081F02230310509F041C084E790E025E013 -:103AE00033E040C021323105E1F02232310531F1BD -:103AF00035C082E190E029E733E034C09927813076 -:103B0000910549F028F0029749F5E3EBF2E005C092 -:103B1000E1E0F3E002C0E1EFF2E0849190E09F0188 -:103B200021C06430D8F4E62FF0E0EE0FFF1FEB5613 -:103B3000FE4F2081318189E090E014C0643070F440 -:103B400070E0FB01EE0FFF1FE357FE4F2081318134 -:103B5000FB01E757FE4F808190E004C080E090E0D9 -:103B600020E030E0FA0131832083089580E189BDAF -:103B700082E189BD09B400FEFDCF8091D8008F7D20 -:103B80008093D8008091E00082608093E000809173 -:103B9000E00081FDFCCF0895CF92DF92EF92FF927B -:103BA0000F931F93CF93DF93EC018B017A010E9457 -:103BB0002A1F811133C0E114F10439F0F70180812B -:103BC0009181081B190BC80FD91FC12CD12C0115CD -:103BD000110519F18091E80085FD16C08091E8007B -:103BE0008E778093E800E114F10449F0F7018081B9 -:103BF0009181C80ED91ED182C08285E00FC00E947B -:103C00002A1F882321F30AC089918093F100015073 -:103C10001109FFEFCF1ADF0ADACF80E0DF91CF91F1 -:103C20001F910F91FF90EF90DF90CF90089520911A -:103C30009205309193052617370748F061157105F5 -:103C400039F42091E8002E772093E80001C0B901F3 -:103C5000FC0120E06115710579F180918B058823C5 -:103C6000F1F18530F1F18091E80083FD3CC0809155 -:103C7000E80082FD2EC08091E80080FFEBCF20910C -:103C8000F3008091F20090E0922B6115710551F0E4 -:103C90008830910538F421912093F1006150710929 -:103CA0000196F3CF21E0089709F020E08091E80029 -:103CB0008E778093E800CECF2111CFCF0AC08091BC -:103CC0008B05882361F0853061F08091E80083FDE9 -:103CD0000AC08091E80082FFF2CF80E0089582E080 -:103CE000089583E0089581E0089520919205309130 -:103CF00093052617370748F06115710539F42091AF -:103D0000E8002E772093E80001C0B901FC0120E013 -:103D10006115710591F180918B05882309F440C0EC -:103D2000853009F43FC08091E80083FD3DC080915B -:103D3000E80082FD2FC08091E80080FFE9CF20914C -:103D4000F3008091F20090E0922B6115710559F01B -:103D50008830910540F424912093F1003196615010 -:103D600071090196F2CF21E0089709F020E08091D7 -:103D7000E8008E778093E800CBCF2111CCCF0AC02A -:103D800080918B05882361F0853061F08091E80097 -:103D900083FD0AC08091E80082FFF2CF80E00895A1 -:103DA00082E0089583E0089581E00895982F973088 -:103DB00068F59093E900981739F07091EC00209124 -:103DC000ED005091F00003C0242F762F50E021FD2C -:103DD00002C09F5FECCF3091EB003E7F3093EB0051 -:103DE0003091ED003D7F3093ED003091EB0031607C -:103DF0003093EB007093EC002093ED005093F000B3 -:103E00002091EE0027FDE5CF80E008958F7080932C -:103E1000E90081E0089580918C0587FF11C08091B1 -:103E2000E80082FD05C080918B058111F8CF11C09B -:103E30008091E8008B770BC080918B05882349F037 -:103E40008091E80080FFF8CF8091E8008E77809322 -:103E5000E80008952091E4003091E50095E6409156 -:103E6000EC00842F817040FF23C08091E80080FD2A -:103E70001DC080918B05882399F0853099F0809141 -:103E8000EB0085FD11C04091E4005091E50024173E -:103E9000350729F3915011F09A01E1CF84E008959C -:103EA00082E0089583E0089581E0089580E0089518 -:103EB0004091E80042FFDDCF08950E94CB1F0E9491 -:103EC000D31FE0EEF0E0808181608083E8EDF0E0D8 -:103ED00080818F77808319BCA7EDB0E08C918E7FB5 -:103EE0008C9380818F7E808310928A0508950F9332 -:103EF0001F93CF93DF930E94CB1F0E94D31FC8ED67 -:103F0000D0E088818F7788838881806888838881E2 -:103F10008F7D888319BC10928B05109287051092B3 -:103F200089051092880500EE10E0F80180818B7FF2 -:103F3000808388818160888342E060E080E00E9425 -:103F4000D61EE1EEF0E080818E7F8083E2EEF0E02D -:103F5000808181608083808188608083F801808196 -:103F60008E7F8083888180618883DF91CF911F91CC -:103F70000F910895E8EDF0E080818F7E8083E7ED7A -:103F8000F0E080818160808384E082BF81E0809363 -:103F90008A050C94771FE8EDF0E080818E7F8083A6 -:103FA0001092E20008951092DA001092E100089554 -:103FB0001F920F920FB60F9211242F933F934F939E -:103FC0005F936F937F938F939F93AF93BF93EF9381 -:103FD000FF938091E10082FF0BC08091E20082FF9D -:103FE00007C08091E1008B7F8093E1000E94C01B9D -:103FF0008091DA0080FF1FC08091D80080FF1BC035 -:104000008091DA008E7F8093DA008091D90080FF62 -:104010000DC080E189BD82E189BD09B400FEFDCFFC -:1040200081E080938B050E94AE1B05C019BC1092E5 -:104030008B050E94BC1B8091E10080FF19C080911C -:10404000E20080FF15C08091E2008E7F8093E20045 -:104050008091E20080618093E2008091D8008062CC -:104060008093D80019BC85E080938B050E948F1C3B -:104070008091E10084FF30C08091E20084FF2CC079 -:1040800080E189BD82E189BD09B400FEFDCF809148 -:10409000D8008F7D8093D8008091E1008F7E80933F -:1040A000E1008091E2008F7E8093E2008091E20047 -:1040B00081608093E20080918705882311F084E07D -:1040C00007C08091E30087FD02C081E001C083E06A -:1040D00080938B050E94981C8091E10083FF29C08A -:1040E0008091E20083FF25C08091E100877F80936B -:1040F000E10082E080938B05109287058091E100BA -:104100008E7F8093E1008091E2008E7F8093E200B9 -:104110008091E20080618093E20042E060E080E014 -:104120000E94D61E8091F00088608093F0000E946B -:10413000BF1BFF91EF91BF91AF919F918F917F91A5 -:104140006F915F914F913F912F910F900FBE0F9004 -:104150001F9018951F920F920FB60F9211242F9354 -:104160003F934F935F936F937F938F939F93AF93FF -:10417000BF93CF93DF93EF93FF93C091E900CF708C -:104180008091EC00D82FD17080FDD0E81092E9002A -:104190008091F000877F8093F00078940E94EE2059 -:1041A0001092E9008091F00088608093F000CD2BA0 -:1041B000CF70C093E900FF91EF91DF91CF91BF9154 -:1041C000AF919F918F917F916F915F914F913F91AF -:1041D0002F910F900FBE0F901F9018951F93CF93A4 -:1041E000DF93CDB7DEB7AA970FB6F894DEBF0FBE48 -:1041F000CDBFECE8F5E08091F100819325E0E43952 -:10420000F207C9F70E94D51B8091E80083FF24C103 -:1042100080918C0590918D05492F50E04A305105D1 -:1042200008F01AC1FA01EA5AFF4F0C944233803861 -:1042300081F0823809F010C1809190058F708093D1 -:10424000E9008091EB0085FB882780F91092E90056 -:1042500006C08091880590918905911182609091A6 -:10426000E800977F9093E8008093F1001092F100AE -:10427000C8C0282F2D7F09F0EFC0882319F08230A5 -:1042800061F0EAC080918E05813009F0E5C093307D -:1042900009F080E0809389052BC080918E05811103 -:1042A00027C0809190058F7009F4D6C08093E900F3 -:1042B0002091EB0020FF1CC0933021F48091EB0093 -:1042C000806214C09091EB0090619093EB0021E02C -:1042D00030E0A90102C0440F551F8A95E2F74093D0 -:1042E000EA001092EA008091EB0088608093EB0076 -:1042F0001092E9008091E800877F86C08111ACC0F0 -:1043000010918E051F778091E3008078812B809338 -:10431000E3008091E800877F8093E8000E940B1FF4 -:104320008091E80080FFFCCF8091E300806880935B -:10433000E300111102C082E001C083E080938B058D -:104340008BC08058823008F087C080918E05909194 -:104350008F058C3D53E0950779F583E08A838AE2E7 -:1043600089834FB7F894DE01139620E03EE051E2D6 -:10437000E32FF0E050935700E49120FF03C0E29553 -:10438000EF703F5FEF708E2F90E0EA3010F0C7962D -:1043900001C0C0968D939D932F5F243149F74FBF85 -:1043A0008091E800877F8093E8006AE270E0CE01A8 -:1043B00001960E94171E14C0AE014F5F5F4F6091BF -:1043C00090050E94601DBC01892B09F445C09091A5 -:1043D000E800977F9093E80089819A810E94751E7A -:1043E0008091E8008B778093E80036C08038A1F593 -:1043F0008091E800877F8093E80080918705809313 -:10440000F1008091E8008E778093E8000E940B1FF6 -:1044100023C0811121C080918E0590918F0599272D -:104420000297D4F48091E800877F8093E800809120 -:104430008E05809387050E940B1F8091870581114F -:1044400006C08091E30087FD02C081E001C084E0E6 -:1044500080938B050E94C11B8091E80083FF0AC0F6 -:104460008091E800877F8093E8008091EB00806274 -:104470008093EB00AA960FB6F894DEBF0FBECDBFB7 -:10448000DF91CF911F91089590930F0480930E04B4 -:104490000895E0910E04F0910F04309721F00190FF -:1044A000F081E02D099480E00895EF92FF920F9340 -:1044B0001F93CF93DF93E0910E04F0910F04309798 -:1044C000B1F18C010280F381E02D099580917C058A -:1044D00082FF2DC080FF04C086E994E00E94DD02C7 -:1044E000E80118E080E9E82E84E0F82E80917C0550 -:1044F00080FF0BC088811F928F93FF92EF920E94E2 -:1045000076030F900F900F900F901150219611117C -:10451000EDCF80917C0580FF0AC08EE894E0DF91AA -:10452000CF911F910F91FF90EF900C94DD02DF91DE -:10453000CF911F910F91FF90EF900895E0910E049D -:10454000F0910F04309721F00480F581E02D09945B -:104550000895CF93DF9320910C0430910D04281718 -:10456000390709F190930D0480930C04E0910E0437 -:10457000F0910F043097B9F0EC010680F781E02D3F -:10458000099580917C0582FF0EC080FF0CC0DF93EF -:10459000CF9380E894E09F938F930E9476030F90CF -:1045A0000F900F900F90DF91CF910895CF93DF93ED -:1045B00020910A0430910B042817390709F19093D0 -:1045C0000B0480930A04E0910E04F0910F043097DD -:1045D000B9F0EC010084F185E02D099580917C050E -:1045E00082FF0EC080FF0CC0DF93CF9380E794E082 -:1045F0009F938F930E9476030F900F900F900F90D0 -:10460000DF91CF9108950C94C5230E94840B0C94E4 -:10461000400A8F929F92AF92BF92CF92DF92EF9219 -:10462000FF920F931F93CF93DF9300D000D01F9280 -:10463000CDB7DEB70E94560701E114E0F12C8F2DB3 -:104640000E948C084C01F801A080B180A826B926F0 -:10465000A114B10439F4F3940E5F1F4FF0E1FF127F -:10466000EECF39C080917C0581FD0E94B908E12C14 -:10467000CC24C394D12CC5018C219D21892B21F1FF -:10468000E982FA8221E0C4018C219D21892B09F461 -:1046900020E02B830E948D0B8160782F9D838C837B -:1046A00049815A816B818D810E94C82349815A8139 -:1046B0006B817C818D810E94682EF80180819181BF -:1046C0008C259D2591838083E394CC0CDD1CF0E147 -:1046D000EF12D1CFC0CF8FEF89838A831B820E94D4 -:1046E0008D0B8160782F9D838C8349815A816B81EA -:1046F0008D810E94C8230E94672E0E941E310E9455 -:10470000492290911004891759F10E9449228093FF -:10471000100490917C0592FF0EC090FF0CC01F9278 -:104720008F9381EA94E09F938F930E9476030F907A -:104730000F900F900F90809110040F900F900F909A -:104740000F900F90DF91CF911F910F91FF90EF90FD -:10475000DF90CF90BF90AF909F908F900C94792E68 -:104760000F900F900F900F900F90DF91CF911F91AE -:104770000F91FF90EF90DF90CF90BF90AF909F9000 -:104780008F9008950C94F30808950895089508955E -:10479000CF93DF93CDB7DEB72B970FB6F894DEBF7C -:1047A0000FBECDBF942F4F83252F588769877A87F7 -:1047B0008B874A855B85452B31F02F3F31F481E0B3 -:1047C0009F3F19F403C081E001C080E080FD07C075 -:1047D0004F81588569857A858B850E94682EDE0118 -:1047E000119686E0FD0111928A95E9F785E0FE01B8 -:1047F000379601900D928A95E1F749815A816B8134 -:104800007C818D819E810E94C12A2B960FB6F894DF -:10481000DEBF0FBECDBFDF91CF910895882309F48D -:104820005CC09CEF980F913A20F090E5980F9E3273 -:1048300018F40E949F2D0DC090E2980F983058F404 -:10484000877091E001C0990F8A95EAF7892F0E943D -:10485000DD2D0C94172E9BE5980F933070F4853A5C -:1048600029F0863A31F083E890E005C081E890E0D5 -:1048700002C082E890E00C94A92298E5980F953147 -:1048800060F5883A89F0893A91F08A3A99F08B3A42 -:10489000A1F08C3AA9F08D3AB1F08E3AB9F08F3A86 -:1048A000C1F080E090E017C082EE90E014C089EE85 -:1048B00090E011C08AEE90E00EC085EB90E00BC056 -:1048C00086EB90E008C083EB90E005C084EB90E0BD -:1048D00002C087EB90E00C94D6220895882349F11A -:1048E0009CEF980F913A20F090E5980F9E3218F4C3 -:1048F0000E94BC2D0DC090E2980F983058F487703C -:1049000091E001C0990F8A95EAF7892F0E94E32D63 -:104910000C94172E9BE5980F933020F480E090E0E4 -:104920000C94A922885A853120F480E090E00C9400 -:10493000D6220895882321F00E94DD2D0C94172E95 -:104940000895882321F00E94E32D0C94172E0895DA -:10495000CF92DF92EF92FF920F931F93CF93DF934B -:1049600000D000D01F92CDB7DEB76C0185E0F60114 -:10497000DE01119601900D928A95E1F7F6014081D2 -:104980005181238134812115310531F05F3F31F4AC -:1049900091E04F3F19F403C091E001C090E090FD19 -:1049A000C5C2F601F280E580E2948FE0E822722F22 -:1049B0003D832C836F2D8D810E941B2D8C010E94C5 -:1049C0001A2D0E94142CE12FE295EF708E2F90E0AB -:1049D000FC01E05AFF4F0C944233812F807F1F70FF -:1049E000882311F01295107FFF2049F0112309F45C -:1049F00052C2812F0E94F02D0E94172E4CC2802F90 -:104A00000E946E24112309F491C2812F0E94F62D79 -:104A10000F900F900F900F900F90DF91CF911F91FB -:104A20000F91FF90EF90DF90CF900C94172E812F75 -:104A3000807F1F70803211F01295107F002319F0D3 -:104A4000013009F12BC0FF20A9F0EE2059F1F1E06F -:104A5000812FEF1228C00F900F900F900F900F90A2 -:104A6000DF91CF911F910F91FF90EF90DF90CF904A -:104A70000C94002EEE2021F081E0E81609F456C2D5 -:104A80000E94032E2DC0FF20E9F0E5E0EE1508F4AA -:104A90004DC20E94DA2D812329F022C0FF20F1F0BF -:104AA000E11015C0812F0F900F900F900F900F9075 -:104AB000DF91CF911F910F91FF90EF90DF90CF90FA -:104AC0000C949A24F4E0FE1508F430C209C0F601F3 -:104AD000858180FFE0C18F708583E4CFE110EEC156 -:104AE000812F61C1812F86958695837019F0813061 -:104AF000B9F01CC2FF2019F0C801937002C080E019 -:104B000090E00F900F900F900F900F90DF91CF914A -:104B10001F910F91FF90EF90DF90CF900C94A922FE -:104B2000FF2019F0C801937002C080E090E00F9060 -:104B30000F900F900F900F90DF91CF911F910F91D9 -:104B4000FF90EF90DF90CF900C94D622802FFF2023 -:104B500019F00E94A42F02C00E940C300F900F90F9 -:104B60000F900F900F90DF91CF911F910F91FF90B9 -:104B7000EF90DF90CF900C949130812F837009F0EB -:104B800070C0F110D3C1202F229526952770220FD7 -:104B9000220F602F6F70862F90E0A0E0B0E06C01D4 -:104BA0007D01022E04C0CC0CDD1CEE1CFF1C0A94FF -:104BB000D2F704FF12C08FE090E0A0E0B0E004C0A4 -:104BC000880F991FAA1FBB1F2A95D2F7BC01CD01E0 -:104BD000609570958095909503C060E070E0CB0182 -:104BE0001695169513701230B1F040F56C297D2999 -:104BF0008E299F29113031F10F900F900F900F9057 -:104C00000F90DF91CF911F910F91FF90EF90DF9068 -:104C1000CF900C942F2C6C297D298E299F290F90E1 -:104C20000F900F900F900F90DF91CF911F910F91E8 -:104C3000FF90EF90DF90CF900C94492C0E942F2C86 -:104C4000C701B6010F900F900F900F900F90DF915A -:104C5000CF911F910F91FF90EF90DF90CF900C9428 -:104C6000152CFF2019F0812F817001C086958823B3 -:104C700009F45CC1202F229526952770220F220F60 -:104C8000602F6F70862F90E0A0E0B0E06C017D0196 -:104C9000022E04C0CC0CDD1CEE1CFF1C0A94D2F7C3 -:104CA00004FF12C08FE090E0A0E0B0E004C0880FE5 -:104CB000991FAA1FBB1F2A95D2F7BC01CD01609591 -:104CC00070958095909503C060E070E0CB011695DB -:104CD000169513701230B1F040F56C297D298E299C -:104CE0009F29113031F10F900F900F900F900F907E -:104CF000DF91CF911F910F91FF90EF90DF90CF90B8 -:104D00000C94F62C6C297D298E299F290F900F90E9 -:104D10000F900F900F90DF91CF911F910F91FF9007 -:104D2000EF90DF90CF900C94082D0E94F62CC701D5 -:104D3000B6010F900F900F900F900F90DF91CF91D1 -:104D40001F910F91FF90EF90DF90CF900C94E42C87 -:104D5000003FC1F128F480E4800F803250F096C00B -:104D6000023F09F45EC008F449C0033F09F46CC077 -:104D70008DC0F02FF071EF2E812F8F71FF2051F039 -:104D80000E947D2C802FEE2019F08295807F8BCEA3 -:104D90008F7089CE0E949E2C802FEE2019F0829574 -:104DA000807F01C08F700F900F900F900F900F9029 -:104DB000DF91CF911F910F91FF90EF90DF90CF90F7 -:104DC0000C94A124FF20A9F084E08E1508F4AEC055 -:104DD000812F8F710F900F900F900F900F90DF9198 -:104DE000CF911F910F91FF90EF90DF90CF900C9497 -:104DF000C32CE5E0EE1508F499C0EACFFF2099F046 -:104E0000812F8F710F900F900F900F900F90DF9167 -:104E1000CF911F910F91FF90EF90DF90CF900C9466 -:104E20007D2CFF2069F3812F8F710F900F900F90D1 -:104E30000F900F90DF91CF911F910F91FF90EF9006 -:104E4000DF90CF900C949E2CFF2089F0812F8F71E2 -:104E50000F900F900F900F900F90DF91CF911F91B7 -:104E60000F91FF90EF90DF90CF900C94682C0F90F3 -:104E70000F900F900F900F90DF91CF911F910F9196 -:104E8000FF90EF90DF90CF900C94632CFF2099F06F -:104E9000EE2009F4B5CF802F0F900F900F900F9058 -:104EA0000F90DF91CF911F910F91FF90EF90DF90C6 -:104EB000CF900C940E24EE2009F4B5CF802F0F90E4 -:104EC0000F900F900F900F90DF91CF911F910F9146 -:104ED000FF90EF90DF90CF900C946E24412F4F7095 -:104EE000602FC6010E941E2F0F900F900F900F9001 -:104EF0000F90DF91CF911F910F91FF90EF90DF9076 -:104F0000CF900C946F2B412F4F70602FC6010F90E4 -:104F10000F900F900F900F90DF91CF911F910F91F5 -:104F2000FF90EF90DF90CF900C94212F0F900F9077 -:104F30000F900F900F90DF91CF911F910F91FF90E5 -:104F4000EF90DF90CF9008950E94FD2D0E94CC2D10 -:104F50000E94172E0E94C3310E94913080E090E0A1 -:104F60000E94A92280E090E00C94D6220E94ED2DB0 -:104F70000C94A4271F93CF93DF9300D000D01F92EF -:104F8000CDB7DEB7942F4983252F5A836B837C835B -:104F90008D834C815D81452B31F02F3F31F481E0D1 -:104FA0009F3F19F403C081E001C080E0182F117009 -:104FB00080FD31C049815A816B817C818D810E9445 -:104FC0001B2D292F22952F702C3030F42A30A0F47D -:104FD0002250223030F022C02C30C9F02F30B9F0EE -:104FE0001DC0853A28F48430C0F4823028F415C0FE -:104FF00090E2980F983088F0883E30F4803E68F454 -:105000008450813A58F409C0803F41F406C093FBB4 -:10501000112710F903C010E001C011E0812F0F909B -:105020000F900F900F900F90DF91CF911F910895E7 -:10503000CF93DF9300D000D01F92CDB7DEB70F9093 -:105040000F900F900F900F90DF91CF910895CF9315 -:10505000DF9300D000D000D0CDB7DEB726960FB6D4 -:10506000F894DEBF0FBECDBFDF91CF9108951F939F -:10507000CF93DF93C091310416E080913204C817BA -:1050800099F0D0E01C9FF0011D9FF00D1124ED5C04 -:10509000FB4F4081518162817381848195810E949F -:1050A00027282196C770E9CFDF91CF911F910895EE -:1050B00040916304509164046091650470916604AA -:1050C00080916704909168040C942728CF93809175 -:1050D000680482958F7009F05FC080916504882311 -:1050E00009F45AC080913104B09132047091630484 -:1050F000A0916404409166045091670491E07F3F61 -:1051000009F090E0692FC6E08B1709F445C04115FE -:10511000510521F0AF3F21F020E003C021E001C0A4 -:10512000262F90E020FD35C0C89FF001C99FF00DEB -:105130001124ED5CFB4F21812A132BC02081271302 -:1051400028C02281211125C02381348124173507ED -:1051500010F421503109241B350B283C3105C8F4CB -:10516000209168042F7020612093680426E0289F16 -:10517000F001299FF00D1124E85CFB4F80818F70B6 -:105180008061808383E694E00E94A824CF910C94F0 -:10519000372801968770B8CFCF910895AF92BF920C -:1051A000CF92DF92EF92FF920F931F93CF93DF93F3 -:1051B000CDB7DEB761970FB6F894DEBF0FBECDBF97 -:1051C0007C0185E0F701DE011D9601900D928A9524 -:1051D000E1F7D7014C9111965C9111971296DC90F2 -:1051E000129713960D911C9114973091630460915E -:1051F00064048091660490916704009731F06F3FDA -:1052000031F421E03F3F19F403C021E001C020E068 -:10521000B22FB170BB2E20FD6EC1A0906504AA20F4 -:1052200009F4CCC0209168040817190728F0F80188 -:10523000E81BF90BCF0104C080959095800F911F5A -:10524000CC24C394883C910580F0C12C207F09F0C8 -:10525000A1C0702F198B088B6D2D89890E94182889 -:1052600083E694E00E94A824BDC0822F807F09F0CD -:1052700056C0561315C0431313C0CD2CD11010C007 -:105280002F702061209368040E94582883E694E0E0 -:105290000E94A82480916804D70115968C935FC161 -:1052A0000115110531F05F3F31F481E04F3F19F4F2 -:1052B00003C081E001C080E080FD03C081E08D2556 -:1052C00002C080E090E0B82FB170CB2E80FF1CC0F0 -:1052D000809131042091320436E0821709F41CC118 -:1052E00090E0389FF001399FF00D1124ED5CFB4FE9 -:1052F0006181561306C06081461303C06281D612D5 -:1053000003C001968770E9CFCD2CDD2009F427C1B9 -:1053100080916804816080936804C12C20C1561379 -:1053200008C0431306C0D11004C080916804D7019F -:10533000B6C04D875E87DF86702F198B088B6D2D69 -:1053400089890E94BA27882399F1DD2089F120916B -:105350006804822F82958F7090E0029774F080919C -:1053600063049091640498878F8319861B870A874A -:105370002C87CE0107960E94A82486E0F701A3E6B9 -:10538000B4E001900D928A95E1F70E9466280E9490 -:10539000582811C0561781F14D875E87DF86702F20 -:1053A000198B088B6D2D89890E94BA27811138C00D -:1053B000C7010E94A824CC24C394D1C008171907A0 -:1053C00008F446C0F801E81BF90BCF01883C9105B1 -:1053D00008F443C0C12C702F198B088B6D2D89895F -:1053E0000E941828E3E6F4E086E0DF011D928A952A -:1053F000E9F70E945828B3C04313CECFD110CCCFC9 -:1054000080916804F7018583C7010E94A82486E083 -:10541000E3E6F4E0DF011D928A95E9F7CA2C9FC00C -:10542000DD2031F220916804822F82958F7090E008 -:1054300002970CF4A2CF80916304909164049A8344 -:1054400089831B821D830C832E83CE01019693CF0B -:1054500080959095800F911FB9CFCD2CDD2009F458 -:10546000A7CF561333C0431331C02091680420FDE9 -:1054700024C0822F82958F70482F50E0411551052E -:10548000E1F0D70115962C9315974F30510549F04F -:105490008F5F982F9295907F822F8F70892B159612 -:1054A0008C93C7010E94A82486E0F701A3E6B4E02C -:1054B00001900D928A95E1F79CCF86E0F701A3E673 -:1054C000B4E001900D928A95E1F749C04D875E875F -:1054D000DF86702F198B088B6D2D89890E94BA2762 -:1054E00081114BCF80916804816080936804C7016B -:1054F0000E94A82434C0DD2009F45ACF4D875E876E -:10550000DF86702F198B088B6D2D89890E94BA2731 -:10551000882309F44DCF31CF702F198B088B6D2D57 -:1055200089890E941B2D292F22952F70223028F463 -:105530009F7039F0811105C00BC0243028F49F7092 -:1055400049F4805E883020F0C7010E94A824BC2C5A -:10555000CB2C05C0F7019581907F99F7F9CF8C2D61 -:1055600061960FB6F894DEBF0FBECDBFDF91CF912D -:105570001F910F91FF90EF90DF90CF90BF90AF9071 -:1055800008951F93CF93DF93CDB7DEB72C970FB657 -:10559000F894DEBF0FBECDBF4F83588769877A87E7 -:1055A0008B879C87CE0107960E94CE288823D1F056 -:1055B0009F8188852A853B85232B31F08F3F31F4ED -:1055C00081E09F3F19F403C081E001C080E080FDCD -:1055D00047C04F81588569857A858B859C850E9457 -:1055E00027283EC086E0FE013796DE011196019025 -:1055F0000D928A95E1F7FF81E8856A857B856115C3 -:10560000710531F0EF3F31F481E0FF3F19F403C041 -:1056100081E001C080E080FD23C02091320430E0B1 -:10562000C9010196877099274091310450E0841791 -:105630009507F1F1F983EA837D836C8396E0929F6D -:10564000D001939FB00D1124AD5CBB4FFE0131968C -:1056500001900D929A95E1F7809332040E943728C9 -:1056600016E08091310490913204891771F1189FEE -:10567000C00111248D5C9B4F0E94CE28882329F104 -:10568000E09131041E9FF0011124ED5CFB4F40813D -:10569000518162817381848195810E942728809144 -:1056A000310490E001968770992780933104D9CF17 -:1056B0000E94B6271092320410923104E3E6F4E01F -:1056C00086E0DF011D928A95E9F72C960FB6F894D3 -:1056D000DEBF0FBECDBFDF91CF911F910895DF9246 -:1056E000EF92FF920F931F93CF93DF93FC01892BCF -:1056F00009F488C0E12CF12CDD24D394EF0121962C -:105700008491853709F460C058F4843708F04EC09E -:10571000843008F068C08130D1F0823071F172C0FD -:10572000883709F45BC050F4863709F453C08737D3 -:1057300009F068C08E2D0E94EA2D52C09CE7980F98 -:10574000903708F05FC08F770E946E244EC08F01A3 -:105750000E5F1F4FFE01849190E2980F983050F435 -:105760008770FD2D01C0FF0F8A95EAF78F2F0E94E9 -:10577000F02D15C00E940E2414C08F010E5F1F4F24 -:10578000FE01849190E2980F983068F48770FD2DA7 -:1057900001C0FF0F8A95EAF78F2F0E94F62D0E9415 -:1057A000172EE80122C00E946E24FBCFCF01029683 -:1057B000FE01C491CC2361F0EFE9FFE03197F1F7EE -:1057C00000C00000C150F6CFCF010296FE01F49058 -:1057D000EC010BC00E94DA2DE82E07C00E94ED2DCF -:1057E0000E94172E02C00E940E248F2D882341F0A4 -:1057F000EFE9FFE03197F1F700C000008150F6CFEC -:10580000FE017CCFDF91CF911F910F91FF90EF9020 -:10581000DF9008956093690570936A0580936B0526 -:1058200090936C050C94782E08950F931F9300911C -:105830006D0510916E0520916F0530917005602BFC -:10584000712B822B932B60936D0570936E05809363 -:105850006F05909370051F910F910C94772E0F9305 -:105860001F9300916D0510916E0520916F05309189 -:105870007005602371238223932360936D057093D9 -:105880006E0580936F05909370051F910F910C9496 -:10589000772E0F931F9300916D0510916E05209147 -:1058A0006F053091700560277127822793276093D9 -:1058B0006D0570936E0580936F05909370051F9131 -:1058C0000F910C94772E60E070E0CB010C940A2CC1 -:1058D0000F931F9341E050E060E070E08A019B016C -:1058E00004C0000F111F221F331F8A95D2F7C90170 -:1058F000B8011F910F910C940A2C0F931F9341E054 -:1059000050E060E070E004C0440F551F661F771F31 -:105910008A95D2F78091690590916A05A0916B05EF -:10592000B0916C058A019B01082B192B2A2B3B2B6C -:10593000C901B8011F910F910C940A2C0F931F936A -:1059400041E050E060E070E004C0440F551F661F66 -:10595000771F8A95D2F74095509560957095809104 -:10596000690590916A05A0916B05B0916C058A015B -:105970009B01082319232A233B23C901B8011F9146 -:105980000F910C940A2C0F931F9341E050E060E0BC -:1059900070E004C0440F551F661F771F8A95D2F729 -:1059A0008091690590916A05A0916B05B0916C0595 -:1059B0008A019B01082719272A273B27C901B8011B -:1059C0001F910F910C940A2C0F931F93009169055E -:1059D00010916A0520916B0530916C05602B712B3D -:1059E000822B932B1F910F910C940A2C0F931F93D2 -:1059F0000091690510916A0520916B0530916C0545 -:105A000060237123822393231F910F910C940A2CFE -:105A10000F931F930091690510916A0520916B0502 -:105A200030916C0560277127822793271F910F9172 -:105A30000C940A2C08958F929F92AF92BF92DF929E -:105A4000EF92FF920F931F93CF93DF9300D000D07C -:105A50001F92CDB7DEB76B837C838D838A018C81E7 -:105A60009D81892B31F01F3F31F481E04F3F19F4C4 -:105A700003C081E001C080E080FF03C080E090E0CF -:105A80004DC08B818823D1F18090690590906A0583 -:105A9000A0906B05B0906C0580916D0590916E059E -:105AA000A0916F05B0917005882A992AAA2ABB2A6D -:105AB0008FE1E82EF12CD501C4010E2C04C0B6955F -:105AC000A795979587950A94D2F780FD06C081E047 -:105AD000E81AF10880F7D12C07C0DE2CB8018E2D12 -:105AE0000E94F52E019799F380E1189FF00111248F -:105AF000E759FB4FE00FF11DD08209C080E1189FEC -:105B0000F0011124E759FB4FE00FF11DD08009830C -:105B10001A8369817A818D2D0E94F52E0F900F9046 -:105B20000F900F900F90DF91CF911F910F91FF90E9 -:105B3000EF90DF90BF90AF909F908F90089520914D -:105B4000100130911101F90132969FEF40E051911F -:105B5000851789F09F3F19F4511101C0942F4F5FB1 -:105B60004630A9F79F3F39F0F901E90FF11D97FD84 -:105B7000FA95828308950895E0911001F091110142 -:105B80009F012A5F3F4F9281891301C01282319693 -:105B9000E217F307C1F7089581E090E0E09110016A -:105BA000F0911101E80FF91F1082019688309105DC -:105BB000A9F7089580917B05089590917B05892B25 -:105BC00080937B050895809590917B058923809330 -:105BD0007B05089580937B05089510927B050895B9 -:105BE00090917A05892B80937A05089580959091FC -:105BF0007A05892380937A05089510927A0508958D -:105C00008093710508951092710508958091100197 -:105C100090911101FC0131969C01285F3F4F80E07B -:105C2000919191118F5FE217F307D1F70895E091F9 -:105C30001001F091110180917B058083E0911001AA -:105C4000F0911101908180917A05892B8083809158 -:105C50007105882361F0E0911001F09111019081AC -:105C6000892B80830E94062E8111109271058091EC -:105C70001001909111010C94552290939F018093F3 -:105C80009E0108958295982F937344E0949F90010C -:105C900011248C7C86958695282B822F8575880FFC -:105CA0002A7A2695822B0895CF93DF93D92F0E94CD -:105CB000422EC82F8D2F0E94422E2C2F30E0322FE3 -:105CC0002227A901482BCA01DF91CF910895089599 -:105CD000CF93DF9300D000D01F92CDB7DEB70F90E7 -:105CE0000F900F900F900F90DF91CF91089508952E -:105CF00008950C94C22380918B05843021F1109279 -:105D00007D0520E488E190E00FB6F894A895809393 -:105D100060000FBE2093600083B7817F846083BFE3 -:105D200083B7816083BF7894889583B78E7F83BF64 -:105D30000FB6F894A8958091600088618093600008 -:105D4000109260000FBE0895CF930E94C6230E9458 -:105D500056070E94C723C0E08C2F0E948C08892B15 -:105D600029F4CF5FC031C1F780E001C081E0CF915D -:105D700008950E94C4230C94B6271F920F920FB669 -:105D80000F9211248F939F93AF93BF9380917D05C2 -:105D9000811113C08091F2029091F302A091F4025C -:105DA000B091F5024196A11DB11D8093F20290932E -:105DB000F302A093F402B093F502BF91AF919F91CB -:105DC0008F910F900FBE0F901F901895E82FF0E065 -:105DD00080E1989FE00DF11D1124E052FF4F949156 -:105DE000892F8F7092959F700895CF93C82FCB0104 -:105DF0000E94E62EE92F90E040E1E49F90011124FB -:105E0000282B392B2038310519F480E090E014C09C -:105E1000E770F0E028E0C29FE00DF11D112424E0BE -:105E2000EE0FFF1F2A95E1F7E80FF91FEE0FFF1F96 -:105E3000E050F84985919491CF91089580E090E0E9 -:105E4000089508958091800580FF0BC06091150131 -:105E500085E0689FB00111247595679575956795E4 -:105E60002BC081FF09C06091150185E0689FB001DA -:105E700011247595679520C082FF07C060911501B8 -:105E800085E0689FB001112417C090918105992386 -:105E9000D1F060911401961788F72091150185E0E3 -:105EA000289F90011124929FA001939F500D1124CF -:105EB00070E0CA010E942E336038710540F461150C -:105EC000710519F406C065E070E0862F08958FE72C -:105ED000089581E008958091800580FF08C0609159 -:105EE000130170E0759567957595679521C081FFE1 -:105EF00006C06091130170E07595679519C082FF27 -:105F000004C06091130170E010C090918105992345 -:105F100099F0609112019617A0F780911301899F63 -:105F2000C001112470E00E942E336038710540F4E6 -:105F30006115710519F406C061E070E0862F0895BF -:105F40008FE7089581E00895803F21F40E94222F79 -:105F5000819504C0813F29F40E94222F80938405FB -:105F60000895823F21F40E94222F819504C0833F2F -:105F700029F40E94222F809383050895893F19F404 -:105F80000E946B2F05C08A3F31F40E946B2F8195D0 -:105F90008093850508958B3F21F40E946B2F819596 -:105FA00004C08C3F29F40E946B2F809386050895CE -:105FB000843F21F480918205816017C0853F21F4E0 -:105FC00080918205826011C0863F21F48091820514 -:105FD00084600BC0873F21F480918205886005C0F2 -:105FE000883F31F480918205806180938205089515 -:105FF0008D3F21F48091800581600BC08E3F21F49C -:1060000080918005826005C08F3F29F480918005D2 -:106010008460809380050895803F39F480918405E1 -:1060200087FF6CC01092840569C0813F29F480917C -:1060300084051816BCF362C090918305823F29F451 -:1060400097FF5CC01092830559C0833F19F419165D -:10605000CCF354C0893F41F48091850518160CF0AB -:106060004DC0109285054AC08A3F29F4809185056C -:1060700087FF44C0F6CF8B3F39F48091860587FFB8 -:106080003DC0109286053AC08C3F29F48091860568 -:106090001816BCF333C0843F21F4809182058E7FB3 -:1060A00017C0853F21F4809182058D7F11C0863F06 -:1060B00021F4809182058B7F0BC0873F21F4809172 -:1060C0008205877F05C0883F31F4809182058F7EED -:1060D0008093820513C08D3F21F4809180058E7FCF -:1060E0000BC08E3F21F4809180058D7F05C08F3FCE -:1060F00029F4809180058B7F8093800580918305B2 -:1061000081110EC08091840581110AC0809185059E -:10611000811106C080918605811102C0109281050F -:10612000089580917C0583FF7EC083ED94E00E94FA -:10613000DD02809182051F928F938EEC94E09F93F5 -:106140008F930E9476038CEC94E00E94DD02809194 -:106150008305282F082E000C330B3F938F9389EC77 -:1061600094E09F938F930E94760387EC94E00E94C3 -:10617000DD0280918405282F082E000C330B3F93FD -:106180008F9384EC94E09F938F930E94760382EC2C -:1061900094E00E94DD0280918505282F082E000CD6 -:1061A000330B3F938F938FEB94E09F938F930E94D9 -:1061B00076038DEB94E00E94DD0280918605282F06 -:1061C000082E000C330B3F938F938AEB94E09F9340 -:1061D0008F930E94760387EB94E00E94DD0280910A -:1061E00081051F928F9384EB94E09F938F930E947D -:1061F000760382EB94E00E94DD02809180051F927D -:106200008F938FEA94E09F938F930E9476038CEA9A -:1062100094E00E94DD028DB79EB74C960FB6F894BD -:106220009EBF0FBE8DBF82E895E00E949E220E9415 -:106230008D0B90937F0580937E0508951F93CF93D8 -:10624000DF9380917E0590917F050E94A50BAC01A4 -:1062500090918105992321F02091160130E006C02C -:10626000209117018AE0289F9001112442175307BB -:1062700008F485C080918305C0918405D09185057F -:1062800010918605811107C0C11175C0D11173C06D -:10629000111171C074C09F3F19F09F5F90938105E9 -:1062A000181624F40E94222F809383058091830581 -:1062B00087FF05C00E94222F8195809383051C16BD -:1062C00024F40E94222F809384058091840587FF07 -:1062D00005C00E94222F81958093840560918305DB -:1062E000662331F1C0918405CC2311F1062E000CF8 -:1062F000770B880B990B0E940C3223E333E343E3C3 -:106300005FE30E94C1320E94D431609383056C2FF9 -:10631000CC0F770B880B990B0E940C3223E333E3ED -:1063200043E35FE30E94C1320E94D431609384054D -:106330001D1624F40E946B2F80938505809185059E -:1063400087FF05C00E946B2F8195809385051116EC -:1063500024F40E946B2F809386058091860587FF29 -:1063600005C00E946B2F819580938605DF91CF91A8 -:106370001F910C9491309F3F09F08FCFA0CFDF91F8 -:10638000CF911F910895E2E8F5E085E0DF011D92CD -:106390008A95E9F7109281051092800508950E9470 -:1063A000473208F481E008950E94DB316894B1110E -:1063B0000C94B63208950E949B3288F09F5798F053 -:1063C000B92F9927B751B0F0E1F0660F771F881FFA -:1063D000991F1AF0BA95C9F714C0B13091F00E9414 -:1063E000B532B1E008950C94B532672F782F882725 -:1063F000B85F39F0B93FCCF3869577956795B3953B -:10640000D9F73EF490958095709561957F4F8F4FA9 -:106410009F4F0895E89409C097FB3EF490958095AE -:10642000709561957F4F8F4F9F4F9923A9F0F92F5A -:1064300096E9BB279395F695879577956795B795D8 -:10644000F111F8CFFAF4BB0F11F460FF1BC06F5FBE -:106450007F4F8F4F9F4F16C0882311F096E911C0D0 -:10646000772321F09EE8872F762F05C0662371F0F1 -:1064700096E8862F70E060E02AF09A95660F771F05 -:10648000881FDAF7880F9695879597F90895990FE1 -:106490000008550FAA0BE0E8FEEF16161706E807EE -:1064A000F907C0F012161306E407F50798F0621B0F -:1064B000730B840B950B39F40A2661F0232B242BE4 -:1064C000252B21F408950A2609F4A140A6958FEF03 -:1064D000811D811D089597F99F6780E870E060E055 -:1064E00008959FEF80EC089500240A94161617066D -:1064F00018060906089500240A94121613061406B5 -:1065000005060895092E0394000C11F4882352F017 -:10651000BB0F40F4BF2B11F460FF04C06F5F7F4FCF -:106520008F4F9F4F089557FD9058440F551F59F0B6 -:106530005F3F71F04795880F97FB991F61F09F3F70 -:1065400079F087950895121613061406551FF2CF99 -:106550004695F1DF08C0161617061806991FF1CFE9 -:1065600086957105610508940895E894BB27662710 -:106570007727CB0197F908950E94473208F48FEFEF -:1065800008950E94D4320C9482320E94743238F002 -:106590000E947B3220F0952311F00C946B320C9406 -:1065A000713211240C94B6320E94933270F3959F8D -:1065B000C1F3950F50E0551F629FF001729FBB27FA -:1065C000F00DB11D639FAA27F00DB11DAA1F649F96 -:1065D0006627B00DA11D661F829F2227B00DA11D49 -:1065E000621F739FB00DA11D621F839FA00D611DCF -:1065F000221F749F3327A00D611D231F849F600DF0 -:10660000211D822F762F6A2F11249F5750409AF018 -:10661000F1F088234AF0EE0FFF1FBB1F661F771FA4 -:10662000881F91505040A9F79E3F510580F00C946F -:106630006B320C94B6325F3FE4F3983ED4F3869508 -:1066400077956795B795F795E7959F5FC1F7FE2B0F -:10665000880F911D9695879597F9089597FB072EBA -:1066600016F4009407D077FD09D00E94483307FC48 -:1066700005D03EF4909581959F4F08957095619552 -:106680007F4F0895EE0FFF1F0590F491E02D0994C0 -:10669000AA1BBB1B51E107C0AA1FBB1FA617B70748 -:1066A00010F0A61BB70B881F991F5A95A9F7809564 -:0C66B0009095BC01CD010895F894FFCF37 -:1066BC0000030000FF5B1AEB1AC81A921A5E1A014B -:1066CC0072052808140A321E66756C6C006C6F77A4 -:1066DC00000000000013060000000042040000004F -:1066EC0000B4047F03CF034304EA0381038203ED68 -:1066FC0003F203F703C303CC03FF03FEFF000038D0 -:10670C000400000000A00A000000001D0B331A1644 -:10671C000B190B190B1C0B1C0B000000004D0CF47F -:10672C000BAD0C00000000DE167F033D16D01935B2 -:10673C00162C18820338168403404D36223004E39D -:0E674C0003AD038B0317033003490362030000 +:1001E00073706565643A2025730A007573625F73E6 +:1001F000746174653A20253032580A00686F737450 +:100200002E5461736B3A2025640A00526F6C6C6F38 +:10021000766572206572726F723A2069676E6F72CE +:1002200065640D0A000D0A00202530325800696E01 +:100230007075742025643A000A4B6579626F6172AB +:10024000642073746172742E0A000A55534220634D +:100250006F6E666967757265642E0A000A0A544DEE +:100260004B3A62383133643632612B2F4C5546415C +:100270000A0A003C03550053004200200074006F3E +:1002800000200055005300420020006B00650079FB +:100290000062006F00610072006400200063006F64 +:1002A000006E007600650072007400650072000048 +:1002B000000E0374002E006D002E006B002E000057 +:1002C000000403090409027400040100A0320904B7 +:1002D0000000010301010009211101000122400079 +:1002E0000705810308000A09040100010301020057 +:1002F000092111010001224D000705820308000AAF +:10030000090402000103000000092111010001227B +:1003100036000705830308000A09040300020300EE +:100320000000092111010001222200070584032099 +:100330000001070504032000011201100100000064 +:1003400008EDFE5B001408010200010631FF09748C +:10035000A1010975150026FF009520750881020985 +:1003600076150026FF00952075089102C005010949 +:1003700080A10185021601002637001A81002AB7E4 +:1003800000751095018100C0050C0901A1018503CC +:10039000160100269C021A01002A9C027510950184 +:1003A0008100C005010902A1010901A10005091987 +:1003B0000129051500250195057501810295017535 +:1003C0000381010501093009311581257F950275E9 +:1003D00008810609381581257F9501750881060574 +:1003E0000C0A38021581257F950175088106C0C069 +:1003F00005010906A101050719E029E715002501F6 +:10040000950875018102950175088101050819019A +:10041000290595057501910295017503910105075F +:10042000190029FF150026FF00950675088100C0F8 +:10043000290A002575002F002575005D2800256418 +:1004400000200025640020002564002000256400B1 +:100450007C0025303258006D6F7573656B657920AF +:100460005B62746E7C782079207620685D287265E6 +:10047000702F61636C293A205B009E094F0A11249A +:100480001FBECFEFDAE0DEBFCDBF04B603FE28C04B +:100490008091940590919505A0919605B09197054E +:1004A0008730904BA740B04BD9F41092940510922E +:1004B0009505109296051092970514BE0FB6F89404 +:1004C000A895809160008861809360001092600020 +:1004D0000FBE1092010810920008E0E0F8E30995C1 +:1004E00011E0A0E0B1E0E6E5F4E602C005900D926F +:1004F000AE39B107D9F725E0AEE9B1E001C01D92F0 +:10050000A439B207E1F712E0CFE3D2E004C02197AB +:10051000FE010E940F32CD33D107C9F70E94CB1BD9 +:100520000C9429320C940000FF93EF93E0919E010C +:10053000F0919F01309709F00995EF91FF9108958F +:10054000FC018591803011F0EFDFFBCF0895FF278C +:10055000E0E230E247FF0CC0419597FF09C0EDE2B1 +:100560006095709580959095611D711D811D911DFF +:1005700027FF02C0219530E350E2AA27660F771FBC +:10058000881F991FAA1FA41710F0A41B63955A95E2 +:10059000A9F7AA3008F0A95FA05DAF93F3956115A4 +:1005A00071058105910541F7ED3211F4EF93F39553 +:1005B000F21718F43F93F395FBCF8F91B5DFFA95BF +:1005C000E1F70895E991F9918591803021F0853224 +:1005D00019F0AADFF9CF089520E0E894559155323B +:1005E000C1F3503311F4689455915A3348F4505381 +:1005F00090F3220F022E220F220F200D250FF4CF91 +:100600000EF4219589919991533619F3533729F1B5 +:10061000533559F1BC0188279927E8945C3621F4B9 +:100620008991999168945591543639F446EF7EF04A +:1006300077FF0DC08FEF9FEF0AC055374AE039F0C2 +:10064000583540E121F0523642E009F00895FF9319 +:10065000EF937DDFEF91FF91B7CFFF93EF93FC0115 +:1006600081918030B9F360DFFBCFFF93EF9368DFB8 +:10067000F1CFDF93CF93CDB7DEB72596A3DFCF9130 +:10068000DF91089580E00895089580E0089581E065 +:100690000895CF93DF93CDB7DEB728970FB6F894C0 +:1006A000DEBF0FBECDBFE22F29833A834B835C832D +:1006B0006D837E838F8398878091DC02E82BE093A3 +:1006C000DC02FE013396AE01475F5F4F219124307B +:1006D00088F0AEEDB2E080E090E03D91311106C0CF +:1006E000DC01A452BD4F12962C9304C001968630B3 +:1006F000910599F7E417F50749F728960FB6F8948E +:10070000DEBF0FBECDBFDF91CF910895860F911D43 +:10071000860F911DFC015687458781E00895FC01F5 +:1007200087890895CF93DF93EC018C819D81DC0153 +:10073000ED91FC910480F581E02D6E8109951F8675 +:10074000188A81E08A8B1E821B8A1C8A1D8A1E8A57 +:100750001F8A80E0DF91CF910895FC018681089582 +:1007600081E0633009F080E0089581E0613009F0B4 +:1007700080E00895860F911D860F911DFC018585EF +:1007800096850895EF92FF92CF93DF93DC01E70106 +:1007900052968C915297823049F11F966C931F9715 +:1007A00050964C9350979B8193709330F9F49A81B3 +:1007B00097FF1CC09E8158962C915897291718F4C2 +:1007C00058969C935897E82FF0E09F01220F331F13 +:1007D000E20FF31FEA0FFB1F9A819F7097839C81A2 +:1007E000908794E091878F5F52968C93DF91CF91A1 +:1007F000FF90EF900895EF92FF920F9302970E945F +:10080000C2030F91FF90EF9008950895CF92DF9269 +:10081000EF92FF920F931F93CF93DF93CDB7DEB785 +:1008200062970FB6F894DEBF0FBECDBFDC015796BE +:100830002C91222381F06C010E94600AF601038949 +:10084000148925893689DC01CB01801B910BA20B11 +:10085000B30BB7FF02C0F12C3AC0838590E09A8BAE +:10086000898BE12C8E010F5F1F4F9E012F5E3F4F42 +:1008700042856681848195810E945313F82E8111EF +:1008800018C029893A892330310598F0D6011D9680 +:100890008D919C911E97009761F0DC01ED91FC9188 +:1008A0000190F081E02D8E010F5F1F4F40E0B601F7 +:1008B00009950E94600AF601208DDC01CB01820FB0 +:1008C000911DA11DB11D838B948BA58BB68B8F2D94 +:1008D00062960FB6F894DEBF0FBECDBFDF91CF9109 +:1008E0001F910F91FF90EF90DF90CF9008952F927E +:1008F0003F924F925F926F927F928F929F92AF92B0 +:10090000BF92CF92DF92EF92FF920F931F93CF93FC +:10091000DF93CDB7DEB7EB970FB6F894DEBF0FBE0F +:10092000CDBFDC0116965C90511019C1422E242EC9 +:10093000362E7C01FC01A480B580108ED501ED918E +:10094000FC910190F081E02D60E0C50109956C01FA +:10095000009719F446ED542E0FC1FC018080918060 +:100960008114910409F4FEC03701F7E06F0E711C89 +:10097000DC0111967C926E9214964C928E01065D6B +:100980001F4F28E030E040E060E0F701848195816E +:100990000E941511182F8111EBC01AA5D6018D9256 +:1009A0009C92D501ED91FC910280F381E02D222DE6 +:1009B00040E0632DC5010995F7018683882309F47A +:1009C000D4C099A99087282F40E060E08481958168 +:1009D0000E94C011982ED501ED91FC91D60114967C +:1009E0001C92882361F00480F581E02DD7011696D2 +:1009F0006C91C5010995F7011682592CBDC0019073 +:100A0000F081E02DD70116966C91C50109950097EC +:100A100009F4A0CF212F133108F022E1FC01448218 +:100A200021110FC03BAC412C35E2832E31E0932ED7 +:100A30005701F2E0AF0EB11C6E0181E1C80ED11C6E +:100A400038C030E08E01065D1F4F40E0D70116969A +:100A50006C91169714968D919C9115970E94151183 +:100A6000182F811172C0DECF9A828982BC82AB823C +:100A70001E86188A1F8619A21AA21BA219A6DF8237 +:100A8000CE82D986C8868D818B878A87DD86CC8683 +:100A90008E010F5F1F4F242D40E0F7016681848196 +:100AA00095810E946311D70152968C91823019F082 +:100AB00043944310D9CFF7018289823009F044C0B2 +:100AC000930142E06681848195810E944B0C68EE1F +:100AD00073E080E090E00E94620AD7011F962C919B +:100AE0001F9740E016966C91169714968D919C91E5 +:100AF00015970E942E13182F811127C068EE73E0FE +:100B000080E090E00E94620AF701418D60E0C70139 +:100B10000E943715182F811118C020E040E060E0D6 +:100B2000C7010E940D158BE291E09A838983AE0183 +:100B30004F5F5F4F60E070E0C7010E949D1481E04D +:100B4000D70157968C9318C011EDD701ED91FC9108 +:100B50000480F581E02DC7010995512E0DC029EDC6 +:100B6000522E0AC097ED592E07C084ED582E04C0AE +:100B7000F60191828082E9CF852DEB960FB6F8942D +:100B8000DEBF0FBECDBFDF91CF911F910F91FF90C0 +:100B9000EF90DF90CF90BF90AF909F908F907F901D +:100BA0006F905F904F903F902F9008953F924F929B +:100BB0005F926F927F928F929F92AF92BF92CF92ED +:100BC000DF92EF92FF920F931F93CF93DF9300D0AA +:100BD00000D0CDB7DEB76C017C836B835A83498329 +:100BE0004C0180E1880E911C5601A7E0AA0EB11CB1 +:100BF00011E084E0482E3601B2E16B0E711C93E0E7 +:100C0000392E22E0522E8B819C81892B09F4FBC066 +:100C1000F60180A1823059F128F4882341F0813017 +:100C200071F0F1CF833039F18430C1F1ECCF5482CF +:100C300085819681908787835286518610A3AE0165 +:100C40004D5F5F4FBE016F5F7F4FC5010E942B1943 +:100C5000882309F4D8C0D6011596ED91FC9116971A +:100C6000808191968C939197818192968C93F601D5 +:100C70007682658230A2D60192968C9192978430CA +:100C800011F493961C92F60181A1825084832581F0 +:100C90003681308727838287818740A2D60192964A +:100CA0008C918430B1F0853009F442C0823009F073 +:100CB0006EC0AE014D5F5F4FBE016F5F7F4FC501DC +:100CC0000E942B19882309F49EC0F601858984A30C +:100CD00092C0AE014D5F5F4FBE016F5F7F4FC50198 +:100CE0000E942B19882309F48EC0D60155968C9149 +:100CF0005597833009F07FC056968C915697813076 +:100D000009F079C098969C91989757968C91992361 +:100D100021F0882309F46FC003C0813009F06BC053 +:100D2000F60113A3928996A3938997A385A363C021 +:100D3000AE014D5F5F4FBE016F5F7F4FC5010E94E7 +:100D40002B19882309F45FC0D60193968C91939751 +:100D5000882309F450C012968D919C9113970097A7 +:100D600009F449C0DC01ED91FC910190F081E02D86 +:100D70007401D60195960C91959797962C9197971B +:100D800096964C91969794966C91099534C0F6017D +:100D90008585882319F0813039F028C081A190E041 +:100DA00002979787868715872B813C8189819A8155 +:100DB000782F692FF601468557854115510581F039 +:100DC00001962115310529F41C821B8279836A83DF +:100DD0000DC0415051095787468721503109E8CF4E +:100DE0003C832B839A838983F6011586F6018685D9 +:100DF0009785892B41F4D60116969C928E92159771 +:100E000090961C9200CF0F900F900F900F90DF9153 +:100E1000CF911F910F91FF90EF90DF90CF90BF90F7 +:100E2000AF909F908F907F906F905F904F903F908A +:100E30000895CF93DF936091FA017091FB01E091E7 +:100E4000A701F091A8014091EE015091EF0120918E +:100E5000E2013091E3018091D6019091D7016E17A4 +:100E60007F07B1F4E091A501F091A6014E175F074D +:100E700079F4E091A301F091A4012E173F0741F40A +:100E8000E091A101F091A2018E179F0709F463C0C0 +:100E90007093A8016093A7015093A6014093A50108 +:100EA0003093A4012093A3019093A2018093A10108 +:100EB000ECEDF2E088E0DF011D928A95E9F72091E0 +:100EC000F2013091F3014091F4015091F5016091EC +:100ED000F6017091F7018091F8019091F9010E945B +:100EE00049032091E6013091E7014091E8015091DA +:100EF000E9016091EA017091EB018091EC01909120 +:100F0000ED010E9449032091DA013091DB0140910B +:100F1000DC015091DD016091DE017091DF01809173 +:100F2000E0019091E1010E9449032091CE013091AE +:100F3000CF014091D0015091D1016091D2017091C7 +:100F4000D3018091D4019091D5010E94490381E0A1 +:100F50008093DB0202C01092DB020E94B90AEC010E +:100F600084E692E00E948C13CE010E94D10A85365D +:100F7000910560F09F938F938CEF91E09F938F93F7 +:100F80000E9439030F900F900F900F9084E692E02B +:100F90000E942B0C9091A001891779F184E692E0D0 +:100FA0000E942B0C8093A0011F928F938BEE91E0F7 +:100FB0009F938F930E9439030F900F900F900F9083 +:100FC0008091A0018039C9F48091A901823019F083 +:100FD0008DE191E002C088E191E09F938F9380EED4 +:100FE00091E09F938F930E9439030E9475210E9484 +:100FF0006E220F900F900F900F9081E0DF91CF91B4 +:101000000895482F80E1489F90011124205E310906 +:101010002830310538F49091DC02992319F0892F9A +:1010200090E002C080E090E0EEEDF2E061E070E080 +:101030002191243070F0322F32953F70431309C054 +:101040002F70DB0102C0AA0FBB1F2A95E2F78A2B83 +:101050009B2BB2E0E43EFB0759F708950895CF9229 +:10106000DF92EF92FF920F93CF93DF931F92CDB752 +:10107000DEB7898380916102882371F0CE010196E9 +:101080006C01EE24E394F12C00E022E040E060E00B +:101090008AE492E00E94E01480914702882371F074 +:1010A000CE0101966C01EE24E394F12C00E022E0E5 +:1010B00040E060E080E392E00E94E01480912D0225 +:1010C000882371F0CE0101966C01EE24E394F12C9B +:1010D00000E022E040E060E086E192E00E94E0145F +:1010E00080911302882371F0CE0101966C01EE24E9 +:1010F000E394F12C00E022E040E060E08CEF91E02E +:101100000E94E0140F90DF91CF910F91FF90EF902C +:10111000DF90CF9008950C9419070E94292D80919B +:101120008905882331F00E94522D882321F00C94E8 +:10113000E21C0C9419070895FC017583648381E314 +:1011400091E0918380838FE491E093838283138A7B +:10115000148A158A168A178A418F178288E0808739 +:101160008CE381871286138684E0848781E0828BFA +:10117000118A17861686158661157105B1F0DB0197 +:10118000AA5ABF4F80E090E02D913D91232B49F466 +:101190008B96880F991FDB01A80FB91FED93FC9365 +:1011A000089501968031910579F708952E9A089552 +:1011B0002E988EBD0DB407FEFDCF1EBC0DB407FEEC +:1011C000FDCF0E94D6088EB508952E9882608EBD00 +:1011D0000DB407FEFDCF6EBD0DB407FEFDCF0C9420 +:1011E000D60888EF0E94D808807C803411F118F46A +:1011F000882371F10895803819F0803C39F1089501 +:1012000088ED0E94D8089091A90181FD08C0923014 +:1012100029F161EC88ED0E94E50882E007C0933077 +:10122000E9F063EC88ED0E94E50883E08093A90172 +:10123000089588ED0E94D8089091A90181FD03C00E +:10124000933079F70895923021F7089581E0EECF39 +:1012500061ED88ED0E94E5081092A90108950F93B1 +:101260001F93CF93DF938C01269A0E94D608219A70 +:10127000229A2398209A80E58CBD81E08DBD259827 +:1012800068E188E80E94E50860E288E70E94E508D6 +:1012900060E088E70E94E508C0E0D0E088E60E94B0 +:1012A000D808219680FD06C0CF3F8FEFD807B1F751 +:1012B0008FEF1DC061EC88ED0E94E50860E280EDD3 +:1012C0000E94E50864E088EE0E94E50888EE0E942E +:1012D000D80882FFFBCFC8010E94F10860E288ECC9 +:1012E0000E94E50861E080E80E94E50880E0DF9167 +:1012F000CF911F910F91089580917C05816080931B +:101300007C0584E692E00E942F0980EF91E09093A3 +:1013100058028093570284EE91E090933E028093AE +:101320003D0288ED91E090932402809323028CEC9F +:1013300091E090930A0280930902089584E692E076 +:101340000E94FB0B40E064E672E08AE492E00E94B7 +:101350009C0840E064E672E080E392E00E949C0812 +:1013600040E064E672E086E192E00E949C0840E082 +:1013700064E672E08CEF91E00E949C0885E591E0C4 +:101380009093F1018093F0019093E5018093E40143 +:101390009093D9018093D8019093CD018093CC0193 +:1013A00064E672E08BEB91E00E94BB1764E672E0AA +:1013B0008AEA91E00C94BB17AF92BF92CF92DF9272 +:1013C000EF92FF920F931F93CF93DF937C01CB019A +:1013D000D22EDB01ED91FC910084F185E02D099581 +:1013E0001F928F938EE292E09F938F930E94390316 +:1013F000E8015801AD0CB11C0F900F900F900F90A9 +:1014000088E2C82E82E0D82ECA15DB0561F08991EA +:101410001F928F93DF92CF920E9439030F900F900B +:101420000F900F90F1CF85E292E09F938F930E94EF +:1014300039030F900F90F8018281813049F48BE0DD +:1014400092E09F938F930E9439030F900F900FC0EB +:10145000D701129688E0F80101900D928A95E1F784 +:101460000E94600AD7011B967C936E931A97DF91B6 +:10147000CF911F910F91FF90EF90DF90CF90BF9091 +:10148000AF90089580E090E008958FEF9FEF08956A +:101490000895862F0E945C1A81E090E00895E4EEA2 +:1014A000F2E01382128288EE93E0A0E0B0E0848341 +:1014B0009583A683B7838BE591E09183808308951C +:1014C0000C94C50A8F929F92AF92BF92CF92DF92F7 +:1014D000EF92FF920E94D7304B015C0120E030E098 +:1014E0004AE755E40E948E316B017C0120E030E038 +:1014F00040E85FE30E949C3087FD24C020E03FEF7E +:101500004FE757E4C701B6010E9489311816ACF4C1 +:1015100020E030E040E251E4C501B4010E948E3188 +:101520000E94A83020E931E06115710581F0C90100 +:101530000197F1F761507109F7CFC701B6010E9419 +:10154000A83002C061E070E0CB010197F1F7FF9095 +:10155000EF90DF90CF90BF90AF909F908F900895C5 +:1015600082E084BD93E095BD9AEF97BD80936E00B5 +:1015700008952FB7F8948091F2029091F302A09110 +:10158000F402B091F5022FBF08952FB7F89460913F +:10159000F2027091F3028091F4029091F5022FBF54 +:1015A0000895CF92DF92EF92FF920F931F932FB780 +:1015B000F8944091F2025091F3026091F40270911C +:1015C000F5022FBF6A017B01EE24FF248C0120E08D +:1015D00030E0C016D106E206F30610F4415051097E +:1015E0009A01281B390BC9011F910F91FF90EF90B1 +:1015F000DF90CF9008951F920F920FB60F92112493 +:101600008F939F93AF93BF938091F2029091F302D7 +:10161000A091F402B091F5020196A11DB11D809335 +:10162000F2029093F302A093F402B093F502BF91FB +:10163000AF919F918F910F900FBE0F901F901895B3 +:10164000CF93DF93FC01862F8078A9F4283008F02F +:101650004DC0442321F09581973009F447C0EF0134 +:10166000A1E0B0E09D85992341F011962596A03127 +:10167000B105C1F73BC080E039C061111CC085E0F5 +:101680008A9FE0018B9FD00D1124CE0FDF1F4423D2 +:1016900031F081E4888785818F5F858302C081E096 +:1016A000888725E02A9FC0012B9F900D1124E80F09 +:1016B000F91F80851BC06770660F660F660F442395 +:1016C00041F0606485818F5F85838770687F682BB8 +:1016D00003C02770687B622B25E02A9FC0012B9FE7 +:1016E000900D1124E80FF91F6087862FDF91CF91AD +:1016F0000895611102C006960895FC0121E0358528 +:10170000631739F02F5F35962031C9F780E090E0FC +:101710000895069635E0239F800D911D11240895AC +:10172000DF92EF92FF920F931F93CF93DF93EC0121 +:10173000E62EF12C85E0689FB0011124FE01E60F32 +:10174000F71F8085182F177086FF17C001E085E00E +:10175000D82EFE01D09EE00DF11D112480858695C6 +:101760008695869587701817F9F00F5F003189F715 +:101770008D81811302C011501D8385E08E9DF00183 +:101780008F9DF00D1124EC0FFD1F108681E08187E5 +:1017900012862296D783C683DF91CF911F910F9136 +:1017A000FF90EF90DF900895602FCE010E94900B84 +:1017B000D0CFFC01613499F49C01255B3F4F61E07F +:1017C000AC014E5F5F4F1586668717865487438747 +:1017D0003596E217F307B9F7FC011582089521E069 +:1017E0003585631729F02F5F35962031C9F70895A5 +:1017F000622F0C94900BFC018DE691E09183808325 +:101800001582108681E081871286CF010296978328 +:101810008683128228E023832CE32483DF019F0147 +:10182000255B3F4F41E01D961C921D971E964C93E1 +:101830001E971F961C921F971C969C938E931B9726 +:101840001596A217B30779F7EA58FF4F108281E186 +:101850008093FA0208958091FA020895CF93C42FDD +:101860000E94790B009789F0DC01ED91FC911197B2 +:10187000309759F013969C9180E0891731F02081C0 +:101880002C1731F033968F5FF8CF80E090E001C0E5 +:10189000CF01CF9108950F931F93CF93DF9321151D +:1018A000310571F0E901042F162F0E94790BFC011C +:1018B000892B41F01283D183C083038380E003C06E +:1018C00088ED01C086EDDF91CF911F910F910895B2 +:1018D000CF92DF92FF920F931F93CF93DF936623F4 +:1018E00081F1F62E8C016C0186E5C80ED11CC0E09A +:1018F000D0E0D6018D919D916D010097F1F0DC0152 +:10190000ED91FC910084F185E02D0995F81215C048 +:10191000AB96CC0FDD1FC00FD11F88819981DC01F0 +:10192000ED91FC910480F581E02DDF91CF911F9125 +:101930000F91FF90DF90CF9009942196C031D1058F +:10194000C1F680E0DF91CF911F910F91FF90DF9062 +:10195000CF9008952E980895CF93C82F0E94AA0C77 +:10196000CEBD0DB407FEFDCF1EBC0DB407FEFDCFEE +:101970000E94D6088EB5CF910895CF93DF93C82FDC +:10198000D62F0E94AA0CC260CEBD0DB407FEFDCFBB +:10199000DEBD0DB407FEFDCFDF91CF910C94D608CC +:1019A0008F929F92AF92BF92CF92DF92EF92FF926F +:1019B0000F931F93CF93DF93EC01D62EC42E5901C2 +:1019C0000E94790B7C01009709F445C0FC018081DD +:1019D0009181892B09F441C04C2D6D2DCE010E94BF +:1019E0002E0CF501918380830097C9F1FC0182815F +:1019F0008695869590E08031910514F08FE090E017 +:101A000041E050E060E070E04A015B0104C0880CF6 +:101A1000991CAA1CBB1C8A95D2F7D501C401019759 +:101A2000F801918380836D2D80EE0E94BD0C88EDBE +:101A30000E94AC0CF7019481992331F0CA58DF4F12 +:101A400068816260682B02C0682F697F88ED0E9400 +:101A5000BD0C80E005C086ED03C087ED01C08BEDB5 +:101A6000DF91CF911F910F91FF90EF90DF90CF907A +:101A7000BF90AF909F908F9008958F929F92AF925A +:101A8000BF92CF92DF92EF92FF920F931F93CF936B +:101A9000DF93862E942E59010E94600A6B017C010F +:101AA00028E8C20E23E1D21EE11CF11C00E010E088 +:101AB000D0E0C0E098280E94600ADC01CB018C19BC +:101AC0009D09AE09BF09B7FF2DC0692D80EF0E94A7 +:101AD000BD0C0E94600ADC01CB018C199D09AE0986 +:101AE000BF09B7FF09C088EC0E94AC0C87FFF1CF9B +:101AF00060E888EC0E94BD0C88EF0E94AC0CC82FF7 +:101B0000CF70C43019F0CE3051F00CC00F5F1F4FB2 +:101B1000A114B10481F20A151B0569F603C0DF5F49 +:101B2000D33049F68C2FDF91CF911F910F91FF9009 +:101B3000EF90DF90CF90BF90AF909F908F900895DF +:101B40009F92AF92BF92CF92DF92EF92FF920F934C +:101B50001F93CF93DF937C01D42F122F902E00E0A0 +:101B60006C01C60ED11CC60ED11C86E5C80ED11C58 +:101B7000A42EB12CABE2AA0EB11CAA0CBB1CAE0C5D +:101B8000BF1CF60180819181DC01ED91FC91028006 +:101B9000F381E02D292D412F6D2F0995803EC9F449 +:101BA000D1110BC061E088EE0E94BD0C66E670E0CA +:101BB00080E090E00E94620A14C0F501808191816A +:101BC000DC01ED91FC910284F385E02D612F0995F4 +:101BD00008C08D3021F4033008F03FC014C08111DB +:101BE0003FC0F60180819181DC01ED91FC91019073 +:101BF000F081E02D292D412F6D2F0995C82F8D30B3 +:101C000051F4033050F464E670E080E090E00E940C +:101C1000620A0F5FB6CF882311F1D1110BC061E0CA +:101C200088EE0E94BD0C66E670E080E090E00E94C5 +:101C3000620A11C0ED2FF0E0BB96EE0FFF1FEE0D14 +:101C4000FF1D80819181DC01ED91FC910284F3857F +:101C5000E02D612F09958C2F03C08DE001C080E03D +:101C6000DF91CF911F910F91FF90EF90DF90CF9078 +:101C7000BF90AF909F9008950F931F93CF93DF93E2 +:101C8000182F062FEA010E94AA0C12601EBDFE0149 +:101C9000802F882339F00DB407FEFDCF91919EBDB2 +:101CA0008150F7CFC00FD11D0DB407FEFDCF0E94AC +:101CB000D608CE01DF91CF911F910F9108952F92F9 +:101CC0003F924F925F926F927F928F929F92AF92CC +:101CD000BF92CF92DF92EF92FF920F931F93CF9319 +:101CE000DF9300D000D01F92CDB7DEB77D836C8329 +:101CF0004A016901FB01F1808FEF8F0D803408F0FC +:101D000074C00E94600A2B013C01F8E84F0EF3E119 +:101D10005F1E611C711CEC81FD81828180FD02C00F +:101D200060E401C060E888EE0E94BD0C312C8F2D6C +:101D300090E09A838983C114D10409F448C0E980F2 +:101D4000FA80CE14DF0408F47601EB82A8016E2D30 +:101D500080E10E943C0E6E2D88E30E94BD0CEC8158 +:101D6000FD816081606280EF0E94BD0C88EC0E9462 +:101D7000AC0C87FFFBCF60E888EC0E94BD0C88EFBD +:101D80000E94AC0C8F70382EA12CB12C212C33204A +:101D900009F46BC00E94600ADC01CB01841995092B +:101DA000A609B709B7FF61C0F6E03F1601F12EE0C2 +:101DB000321609F455C084E0381209C0FFEFAF1A9B +:101DC000BF0A8114910449F1A814B90431F588EFD0 +:101DD0000E94AC0C85FB882780F9EC81FD81928103 +:101DE00080FB90F99283832D45C08AED43C088EF34 +:101DF0000E94AC0C85FB882780F991E08927EC8153 +:101E0000FD81928180FB90F9928390FD02C060E495 +:101E100001C060E888EE0E94BD0C60E088E30E948B +:101E2000BD0CF801608180E10E94BD0C6B8188E3EC +:101E30000E94BD0CEC81FD816081606280EF0E9498 +:101E4000BD0C88EC0E94AC0C87FFFBCF60E888ECEF +:101E50000E94BD0C88EF0E94AC0C8F70382E97CF7B +:101E6000239423E02212D9CFB2CFCE18DF080E0D73 +:101E70001F1D61CF0F900F900F900F900F90DF916B +:101E8000CF911F910F91FF90EF90DF90CF90BF9077 +:101E9000AF909F908F907F906F905F904F903F900A +:101EA0002F9008952F923F924F925F926F927F9260 +:101EB0008F929F92AF92BF92CF92DF92EF92FF925A +:101EC0000F931F93CF93DF93CDB7DEB72A970FB64B +:101ED000F894DEBF0FBECDBF1C016B015B834A834C +:101EE0005901D9016D907C901197FB01F181F98323 +:101EF0001D921C92DB0112968C9181FD02C060E163 +:101F000001C060E288EE0E94BD0C8E2D90E0A0E042 +:101F1000B0E08C839D83AE83BF8368862A813B813A +:101F2000D6014C9160E0C1010E943D0DF82EB6E053 +:101F30008B1318C088EF0E94AC0C82958170E1E091 +:101F40008E27D60112969C91129780FB91F91296DA +:101F50009C9391FD02C060E101C060E288EE0E94A6 +:101F6000BD0CDCCF811167C088EC0E94AC0C82FFF5 +:101F700060C080E30E94AC0C582E90E06816790691 +:101F800008F45884F501808191819301281B390B55 +:101F90003A87298737FF02C01A861986852C912C2B +:101FA00089859A858816990614F49A8689864984C3 +:101FB0000E94AA0C98E09EBD0DB407FEFDCFF8016B +:101FC000442041F01EBC4A940DB407FEFDCF8EB5EF +:101FD0008193F6CFA985BA850A0F1B1F0E94D608E8 +:101FE00064E088EC0E94BD0CF50180819181880E2F +:101FF000991E91828082F9815F1618F086149704E9 +:1020000070F088EF0E94AC0C82958170D601129618 +:102010009C91129780FB91F912969C930CC0EE2034 +:1020200009F47CCF6C817D818E819F810E94620A40 +:1020300075CF80EFF82E8F2D2A960FB6F894DEBF5D +:102040000FBECDBFDF91CF911F910F91FF90EF9009 +:10205000DF90CF90BF90AF909F908F907F906F90C8 +:102060005F904F903F902F9008952F923F924F9204 +:102070005F926F927F928F929F92AF92BF92CF9218 +:10208000DF92EF92FF920F931F93CF93DF93CDB721 +:10209000DEB761970FB6F894DEBF0FBECDBF3C012F +:1020A000F42E322E202EC98A4EA05FA0C8A4D9A437 +:1020B000188A1F861E861D868E01035F1F4F9E0194 +:1020C000215F3F4F0E94D00C811196C039822A8235 +:1020D000EB8289898C83BE82AD8298868F82AE0125 +:1020E0004F5F5F4F68E080E20E943C0E2D853E8589 +:1020F0004F2D60E1C3010E943D0DE82E811178C093 +:10210000932D9078392EC114D10409F462C0EF8563 +:10211000F8898281992309F44DC082608283540139 +:1021200022242394A114B10409F458C05C864B8680 +:102130004D855E856F857889E12C86019E01255F3E +:102140003F4FC3010E94520FE82EA6E08A130FC032 +:102150000F85188988EF0E94AC0C85FB882780F9D1 +:102160008225F801928180FB91F99283DBCF811166 +:102170003FC08AA59BA50097A1F0DC01ED91FC91E1 +:1021800011970190F081E02DC4018A199B099A876B +:1021900089876B857C859E01275F3F4FA601CD0116 +:1021A00009958B859C85A81AB90A8415950508F0B0 +:1021B000B9CF0FC0816082834D855E858601920113 +:1021C000BF01C3010E945F0E811116C02D853E859F +:1021D00011C02D853E85311005C00CC0E11008C02E +:1021E0002D853E8560EA4F2DC3010E943D0D04C040 +:1021F0008E2D02C060E8F7CF61960FB6F894DEBF6F +:102200000FBECDBFDF91CF911F910F91FF90EF9047 +:10221000DF90CF90BF90AF909F908F907F906F9006 +:102220005F904F903F902F9008958F929F92AF9222 +:10223000BF92CF92EF920F931F931F921F921F9303 +:102240000F933F932F934901A12CB12CCC24C3941D +:10225000E12C06E020E80E9435100F900F900F90BF +:102260000F900F900F901F910F91EF90CF90BF9014 +:10227000AF909F908F9008958F929F92AF92BF9250 +:10228000CF92EF92FF920F931F921F92FF92EF92C5 +:102290003F932F934901A12CB12C22E0C22EE02EB6 +:1022A00006E020E80E9435100F900F900F900F90DD +:1022B0000F900F900F91FF90EF90CF90BF90AF9045 +:1022C0009F908F9008954F925F926F927F928F921E +:1022D0009F92AF92BF92CF92DF92EF92FF920F93B5 +:1022E0001F93CF93DF93CDB7DEB7C054D1090FB69C +:1022F000F894DEBF0FBECDBF3C01D62E542E422E29 +:10230000C02ECE0101965C017C01022F29E030E055 +:10231000C3010E943C1181111BC08B809C801F93C4 +:10232000CF92BF92AF921F9280E48F93A12CB12CD9 +:1023300082E0C82EE42C06E020E8452D6D2DC30177 +:102340000E9435100F900F900F900F900F900F90EC +:10235000C05CDF4F0FB6F894DEBF0FBECDBFDF917C +:10236000CF911F910F91FF90EF90DF90CF90BF9092 +:10237000AF909F908F907F906F905F904F90089557 +:102380008F929F92AF92BF92CF92EF920F93CF9383 +:102390001F921F921F921F921F921F92812C912CAD +:1023A000A12CB12CC12CE22E05E020E00E943510BA +:1023B000C82F6CE271E080E090E00E94620A0F900A +:1023C0000F900F900F900F900F908C2FCF910F9137 +:1023D000EF90CF90BF90AF909F908F9008950F9304 +:1023E0001F93CF93DF938A3F3FEF930711F486ED5E +:1023F0002DC0DC011696ED91FC911797EF2B09F19A +:10240000122F242FEC011A8740E00E94200B082F86 +:102410008823C9F0682FCE010E94790B009739F309 +:10242000FC011483202F40E060E0CE010E94C01127 +:10243000182F882351F0602FCE010E94D90B812FD5 +:1024400005C087ED03C084ED01C080E0DF91CF912E +:102450001F910F9108952F923F924F925F926F922A +:102460007F928F929F92AF92BF92CF92DF92EF9224 +:10247000FF920F931F93CF93DF93CDB7DEB766978D +:102480000FB6F894DEBF0FBECDBF1B8A38E03C8B81 +:102490003CE33D8B8A3F3FEF930709F464C0522E23 +:1024A000342E462E7C01DC011696CD90DC901797D9 +:1024B000CE01439617969C938E9316971A962C935B +:1024C0008E010F5F1F4F22E130E040E060E0C70166 +:1024D0000E941511F701D782C6828111A6C0898496 +:1024E0009A846B847C84FD81FE8B2E80670136E5A7 +:1024F000C30ED11C560110E0D5018D919C9100971F +:10250000F1F1DC01ED91FC910084F185E02D09955C +:10251000811135C0F50180819181DC01ED91FC9143 +:102520000088F189E02D622D0995882341F1F5019C +:1025300080819181DC01ED91FC910484F585E02D91 +:10254000A301B4010995811110C0F5018081918129 +:10255000DC01ED91FC910684F785E02D6E890995EB +:10256000811103C00CC086ED60C0052D232D442DC4 +:10257000612FC7010E94A00D813D09F056C01F5F69 +:10258000B2E0AB0EB11C103109F0B6CF10E0F6018D +:10259000808191810097E1F1DC01ED91FC91008453 +:1025A000F185E02D0995811133C0F601808191817B +:1025B000DC01ED91FC910088F189E02D622D0995F7 +:1025C0008823D9F0F60180819181DC01ED91FC91A5 +:1025D0000484F585E02DA301B4010995811118C08B +:1025E000F60180819181DC01ED91FC910684F785F3 +:1025F000E02D6E89099581110BC0052D232D442DE9 +:10260000612FC7010E94A00D982F977F913D69F41B +:102610001F5FE2E0CE0ED11C103109F0B8CF252D9E +:10262000432D642DC7010E94EF1166960FB6F894F2 +:10263000DEBF0FBECDBFDF91CF911F910F91FF90F5 +:10264000EF90DF90CF90BF90AF909F908F907F9052 +:102650006F905F904F903F902F9008958F929F9230 +:10266000AF92BF92CF92EF920F931F921F921F9241 +:102670001F921F921F92812C912CA12CB12CC12C46 +:10268000E22E09E020E00E9435100F900F900F908D +:102690000F900F900F900F91EF90CF90BF90AF9051 +:1026A0009F908F9008958F929F92AF92BF92CF92FA +:1026B000DF92EF920F931F93CF93DF9300D000D060 +:1026C000CDB7DEB76C01590148011C821B821A820A +:1026D00019828E010F5F1F4F9E012D5F3F4F0E9499 +:1026E000D00C811109C049815A816B817C818401A0 +:1026F0009501C6010E94520F0F900F900F900F90FE +:10270000DF91CF911F910F91EF90DF90CF90BF900D +:10271000AF909F908F900895AF92BF92CF92DF922B +:10272000EF92FF920F931F93CF938C011D990EC0D0 +:1027300088EC0E94AC0C85FF05C0C8010E94F1081E +:1027400060E201C060E088EC0E94BD0C8091A901AC +:10275000813039F040F0823079F0833079F5C1E092 +:102760000CC083E106C08091FA02807F803131F194 +:1027700081E18093FA0222C0C0E08091FA02807F5A +:102780008031E9F40E94600ADC01CB0188539F4F3D +:10279000AF4FBF4F8093F6029093F702A093F802D9 +:1027A000B093F90280E28093FA0280ED0E94AC0CB3 +:1027B000682F6F7D80ED0E94BD0C01C0C0E07801E4 +:1027C00086E5E80EF11C6801A6E7CA0ED11C570188 +:1027D000F501819191915F01009739F0DC01ED9154 +:1027E000FC910680F781E02D0995AC14BD0481F7BA +:1027F0008091FA02803409F447C050F4803221F10C +:102800008033A1F1813109F08EC0F60110820AC037 +:10281000813509F464C0803809F476C0803509F048 +:1028200082C045C0D7018D919D917D01009739F0FF +:10283000DC01ED91FC910480F581E02D0995EC140B +:10284000FD0481F782E16DC00E94600A0091F602EA +:102850001091F7022091F8023091F902DC01CB01CE +:10286000801B910BA20BB30BB7FD5DC080ED0E94E6 +:10287000AC0C682F606280ED0E94BD0C61E088EEB8 +:102880000E94BD0C80E44DC088EE0E94AC0C80FD1F +:102890004AC060E488EC0E94BD0C88ED0E94AC0C3C +:1028A000682F686088ED0E94BD0C80E53AC088EC16 +:1028B0000E94AC0C86FF37C081E58093FA020E942B +:1028C000600ADC01CB014496A11DB11D8093F60284 +:1028D0009093F702A093F802B093F90224C00E94EB +:1028E000600AC090F602D090F702E090F802F090F3 +:1028F000F902DC01CB018C199D09AE09BF09B7FDB6 +:1029000012C080E88093FA022C2F40E060E0C801FA +:102910000E942B12882321F0823D29F080EA01C019 +:1029200080E98093FA02CF911F910F91FF90EF9071 +:10293000DF90CF90BF90AF9008958F929F92AF920B +:10294000BF92CF92EF920F93CF93DF93CDB7DEB7C5 +:10295000C054D1090FB6F894DEBF0FBECDBF5F9350 +:102960004F939E012F5F3F4F3F932F931F9220E481 +:102970002F9320E8822E912C5B0132E2C32EE12CB2 +:1029800006E021E840E0FC016681848195810E9497 +:1029900035100F900F900F900F900F900F90C05C1C +:1029A000DF4F0FB6F894DEBF0FBECDBFDF91CF91E2 +:1029B0000F91EF90CF90BF90AF909F908F90089520 +:1029C0008F929F92AF92BF92CF92DF92EF92FF923F +:1029D0000F93A42EB12C1F921F92DF92CF92FF92E1 +:1029E000EF924701C22EE02E09E021E2462FFC01C2 +:1029F0006681848195810E9435100F900F900F9011 +:102A00000F900F900F900F91FF90EF90DF90CF906D +:102A1000BF90AF909F908F9008958F929F92AF92AA +:102A2000BF92CF92EF920F93A62EB12C1F921F92BE +:102A30001F921F921F921F92812C912CC22EE42E66 +:102A40000AE021E240E0FC016681848195810E94D8 +:102A500035100F900F900F900F900F900F900F91D7 +:102A6000EF90CF90BF90AF909F908F9008958F92EE +:102A70009F92AF92BF92CF92EF920F93A62EB12C5E +:102A80001F921F921F921F921F921F92812C912CB6 +:102A9000C12CE42E0BE021E240E0FC016681848140 +:102AA00095810E9435100F900F900F900F900F900E +:102AB0000F900F91EF90CF90BF90AF909F908F901D +:102AC0000895FC018285089581E0693009F080E075 +:102AD0000895CF93DF93EC018A819B81DC01ED9116 +:102AE000FC910480F581E02D6A8509958A85813401 +:102AF00039F4EA81FB81EA58FF4F8081846080834A +:102B00001A861B861C861D861E861F86188A80E0F4 +:102B1000DF91CF9108958F929F92AF92BF92CF9203 +:102B2000EF920F93A42EB12CB22A1F921F921F92E4 +:102B30001F921F921F92812C912CC12CE62E01E036 +:102B400023E240E0FC016285828193810E9435107E +:102B50000F900F900F900F900F900F900F91EF909C +:102B6000CF90BF90AF909F908F9008958F929F923B +:102B7000AF92BF92CF92EF920F93A62EB12C1F92DD +:102B80001F923F932F935F934F934A01C12CE12CE7 +:102B900000E023EA40E0FC016285828193810E948B +:102BA00035100F900F900F900F900F900F900F9186 +:102BB000EF90CF90BF90AF909F908F9008958F929D +:102BC0009F92AF92BF92CF92EF920F93A42EB12C0F +:102BD000B22A1F921F921F921F921F921F92812C46 +:102BE000912CC12CE62E03E023E240E0FC0162853B +:102BF000828193810E9435100F900F900F900F905B +:102C00000F900F900F91EF90CF90BF90AF909F904B +:102C10008F9008952F923F924F925F926F927F9282 +:102C20008F929F92AF92BF92CF92DF92EF92FF92DC +:102C30000F931F93CF93DF93CDB7DEB7E8970FB60F +:102C4000F894DEBF0FBECDBFDC011A963C91311166 +:102C500007C1122F242E362E3C01FC01C280D380E6 +:102C6000D601ED91FC910190F081E02D60E0C6016C +:102C700009957C01009709F4F5C0FC01A080B180A2 +:102C8000A114B10409F4F0C04301F4E08F0E911CCB +:102C9000DC0111969C928E9214961C93FE01319643 +:102CA0002F018F0128E030E040E060E0D301129670 +:102CB0008D919C9113970E941511F7011482811137 +:102CC000D9C08D81893009F0D1C00981D601ED913B +:102CD000FC910280F381E02D222D41E0632DC6019D +:102CE0000995F3018287882309F4C2C098859583EA +:102CF000282F40E060E0828193810E94C011182F4C +:102D0000882389F0D701AD92BC92D601ED91FC9158 +:102D10000480F581E02DD3011A966C91C6010995C6 +:102D2000F3011286ABC0202F013208F020E2D70158 +:102D3000AD92BC9221110BC0940142E0F301628577 +:102D4000828193810E944B0C811197C010C030E0AA +:102D5000820140E0D3011A966C911A9712968D91D8 +:102D60009C9113970E941511811187C0E5CF1F9286 +:102D70001F925F924F921F9288E08F9388E0882E77 +:102D8000912CA12CB12C99E2C92EE12C06E020EA6D +:102D900040E0F3016285828193810E943510182FF3 +:102DA0000F900F900F900F900F900F90811166C0B1 +:102DB0008B81D3011B968C931B97720100E028E056 +:102DC00030E040E01A966C911A9712968D919C9182 +:102DD00013970E943C11811150C02B813C8140E02F +:102DE000F3016285828193810E943C11811145C06B +:102DF000298130E0CE0181967C0140E0D3011A9612 +:102E00006C911A9712968D919C9113970E943C1188 +:102E1000811133C02E8140E0F3016285828193816C +:102E20000E942E13811129C001E0D3011B968C91C1 +:102E3000801740F020E0402F68E0C3010E94DF15BA +:102E40000F5FF3CFD3011296ED91FC911397EA58DF +:102E5000FF4F80818460808381E050968C930EC008 +:102E600019ED0CC016ED0AC017ED08C011ED06C033 +:102E700014ED04C0F701B182A082182F812FE896CB +:102E80000FB6F894DEBF0FBECDBFDF91CF911F917B +:102E90000F91FF90EF90DF90CF90BF90AF909F90F9 +:102EA0008F907F906F905F904F903F902F900895FC +:102EB000CF92DF92FF920F931F93CF93DF9300D0B7 +:102EC00000D0CDB7DEB78C01F62E19821A821B8294 +:102ED0001C8220E0462F61E10E948B1520E04F2DDF +:102EE00060E1C8010E948B1520E04F2D64E0C8010D +:102EF0000E94DF1583E0C82ED12C9E012F5F3F4F2B +:102F000044E050E06F2DC8010E94B6158823F1F00F +:102F100020E04F2D64E1C8010E948B1520E04F2D69 +:102F200060E1C8010E948B1564E170E080E090E0F0 +:102F30000E94620A0F900F900F900F90DF91CF9137 +:102F40001F910F91FF90DF90CF90089589819A8112 +:102F5000AB81BC819D7F83309140A041B105C1F21E +:102F600064E670E080E090E00E94620A81E0C81AA6 +:102F7000D10819F6CDCFFC0187E791E091838083DA +:102F800073836283128613861486158616861786C7 +:102F9000108A148288E085839CE3968391E097836E +:102FA000808784E0818761157105B1F0DB01AA5A41 +:102FB000BF4F80E090E02D913D91232B49F48B96FB +:102FC000880F991FDB01A80FB91FED93FC9308959B +:102FD00001968031910579F70895EF92FF920F9352 +:102FE0001F93CF938C01C62F7A01FA0180819181C2 +:102FF000A281B3818130F3E09F07F1E0AF07B10513 +:10300000D1F060F48115E1E09E07AE07B10571F1E2 +:1030100081309140A140B10571F064C0833021E05E +:10302000920720E1A207B105E1F183309340A0416E +:10303000B105B9F157C08091FB02811153C020E066 +:103040004C2F61E1C8010E948B1520E04C2F60E1FC +:10305000C8010E948B1520E04C2F64E0C8010E943B +:10306000DF1581E08093FB0281EB3DC020E0462F1D +:1030700061E1C8010E948B1520E04C2F60E1C8017E +:103080000E948B151092FB02F80162856770C77071 +:10309000660F660F660F6C2B828193810E94680C0D +:1030A00021C020E04C2F64E1C8010E948B1520E074 +:1030B0004C2F60E1C8010E948B1564E170E080E054 +:1030C00090E00E94620AF8016285F701218126954D +:1030D000217067704C2FF801828193810E942B121E +:1030E0001092FB0280E0CF911F910F91FF90EF9023 +:1030F0000895CF92DF92EF920F931F93CF93DF93B8 +:10310000CDB7DEB72E970FB6F894DEBF0FBECDBF9A +:103110006C0181E090E09E878D87E12C8E010F5F2E +:103120001F4F9E01235F3F4F41E0F6016285828180 +:1031300093810E945313811151C002E011E08981F3 +:103140008023D1F019861A861B861C869E01275F74 +:103150003F4F44E050E0612FC6010E94B615811137 +:103160000BC0AE01475F5F4F612FC6010E94ED1794 +:10317000813B99F1811132C0000F1F5F1830F9F6C1 +:1031800011E0F6018385811740F119861A861B86A6 +:103190001C869E01275F3F4F44E050E0612FC6012F +:1031A0000E94B615811117C089859A858770917024 +:1031B0008130914081F48B859C8581609C878B87D1 +:1031C000AE01475F5F4F612FC6010E94ED17813B43 +:1031D00021F0811103C01F5FD4CF80E02E960FB67F +:1031E000F894DEBF0FBECDBFDF91CF911F910F913D +:1031F000EF90DF90CF9008950F931F93CF93DF93BD +:10320000FC012089211102C080E020C0EC010E9455 +:10321000600A0C851D852E853F85DC01CB01801B56 +:10322000910BA20BB30BB7FDEFCFCE010E94791823 +:10323000182F0E94600ADC01CB018C599F4FAF4FC1 +:10324000BF4F8C879D87AE87BF87812FDF91CF913E +:103250001F910F910895CF93DF93FC01EB018081C3 +:103260009181892B21F18281882319F1DA012D9135 +:103270003C91232BE1F0A881B9819C91A381B0E01E +:10328000A81BB10920813181A20FB31F9C938281B9 +:1032900081508283DA018D919C91119701978D93D2 +:1032A0009C9388819981019699838883DCCF80E003 +:1032B00003C08381828381E0DF91CF910895CF9213 +:1032C000DF92EF92FF920F931F93CF93DF936C01E6 +:1032D000EB017B01E40EF51E00E010E0CE15DF05EA +:1032E00061F06991D601ED91FC910190F081E02DA2 +:1032F000C6010995080F191FF1CFC801DF91CF91C1 +:103300001F910F91FF90EF90DF90CF9008958091E3 +:1033100008040895CF93DF9300D01F92CDB7DEB796 +:103320009C0180918B05843019F593E099833B8350 +:103330002A839093E9008FEF9091E800815095FDEA +:1033400006C095ED9A95F1F700008111F5CF8091B7 +:10335000E80085FF0DC040E050E063E070E0CE0182 +:1033600001960E94F81C8091E8008E778093E80017 +:103370000F900F900F90DF91CF910895CF93DF932F +:1033800000D01F92CDB7DEB720918B05243031F5E8 +:1033900022E02983805891099B838A8383E080936C +:1033A000E9008FEF9091E800815095FD06C095ED02 +:1033B0009A95F1F700008111F5CF8091E80085FF23 +:1033C0000DC040E050E063E070E0CE0101960E9445 +:1033D000F81C8091E8008E778093E8000F900F90A2 +:1033E0000F90DF91CF91089520918B052430F1F457 +:1033F00022E02093E9002FEF3091E800215035FDC5 +:1034000006C035ED3A95F1F700002111F5CF209176 +:10341000E80025FF0BC040E050E065E070E00E944E +:10342000F81C8091E8008E778093E8000895CF9390 +:10343000DF9320918B05243049F521E02093E900AA +:1034400021E8215059F03091E80035FD07C0EFE345 +:10345000F1E03197F1F700C00000F3CF2091E800D0 +:1034600025FF14C0EC0140E050E068E070E00E94ED +:10347000F81C8091E8008E778093E80088E0FE01D8 +:10348000A0E0B4E001900D928A95E1F7DF91CF9131 +:103490000895CF93C091FE02C1110BC00E94C50ACE +:1034A000643C79408105910520F081E08093FE0223 +:1034B000C1E08C2FCF910895CF93C82F0E94491A55 +:1034C000882309F448C00FB607FE45C080918B05DC +:1034D000843009F040C08091E9008F702091EC00A9 +:1034E000922F917020FD90E8892B94E09093E90051 +:1034F0009091EB0090FF2CC09091EE0097FF28C0B8 +:103500009091030120910201291709F447C02091ED +:10351000E80025FF1DC0E0910001F0910101E90FD5 +:10352000F11D30819F5F209104019223909303014C +:103530003093F1009091E80095FDE2CF9091E80082 +:1035400090FFDECF9091E8009E779093E800D8CF6F +:103550008F708093E9008091020190E0AC014F5F91 +:103560005F4F30910401232F30E024233523409115 +:10357000030150E024173507D1F02091000130916C +:103580000101F901E80FF91FC083809102018F5FEB +:103590009091040189238093020109C09091E80071 +:1035A00095FFD6CFC093F1008F708093E90080E043 +:1035B000CF91089580918A05811109C00E94891ECA +:1035C0000E94E61E8091E20084608093E2000895EC +:1035D00010928A0508950895089542E061EC81E013 +:1035E0000E94021E42E061EC82E00E94021E42E064 +:1035F00061EC83E00E94021E42E261EC84E00C94E4 +:10360000021E80918D05833009F453C030F481305F +:1036100071F0823009F48CC008958A3009F478C0C2 +:103620008B3009F45EC0893009F09AC020C08091C7 +:103630008C05813A09F094C08091E800877F8093DF +:10364000E8008091900590919105892B21F468E024 +:1036500080E094E003C060E080E090E070E00E94D1 +:10366000431D8091E8008B778093E8000895809156 +:103670008C05813209F074C080919005909191057C +:10368000892B09F06DC08091E800877F8093E80066 +:103690008091E80082FD05C080918B058111F8CFF3 +:1036A0005FC08091F100809308048091E8008B77DF +:1036B00053C080918C05813A09F052C080919005E9 +:1036C00090919105892B09F04BC08091E800877F8C +:1036D0008093E8008091E80080FFFCCF80910F018B +:1036E00036C080918C058132D9F5809190059091FA +:1036F0009105892BA9F58091E800877F8093E800E8 +:103700000E94371E80918E0580930F010C946623D2 +:1037100080918C05813221F58091E800877F80932C +:10372000E8000E94371E80918F0580930904089558 +:1037300080918C05813AA1F48091E800877F809385 +:10374000E8008091E80080FFFCCF8091090480931D +:10375000F1008091E8008E778093E8000C94371E8A +:103760000895809108048093FF02109208040E943B +:1037700070220C9466230C94B11B0E94672D8091DB +:10378000FF028093080408950C94BD1B08950C94C7 +:10379000C61B0C94C61BCF9384B7877F84BF0FB61C +:1037A000F894A895809160008861809360001092E1 +:1037B00060000FBE90E080E80FB6F894809361003F +:1037C000909361000FBE8CE59AE10E940E2D85E07A +:1037D00091E00E9470218CE592E00E94A0020E947C +:1037E000C91B0E94C3210E94891E0E94E61E80916F +:1037F000E20084608093E20078940E94C521809169 +:103800008B05843019F00E948B08F9CF8AE492E08E +:103810000E94A0020E94C71B88E392E00E94A002BF +:10382000C4E080918B05853019F40E948D08F9CF92 +:103830000E94C9212091E4003091E5008091FC02B2 +:103840009091FD022817390761F38091E40090916F +:10385000E5009093FD028093FC020E94491A8823A0 +:1038600001F380918B058430E1F68091E9008F703F +:103870002091EC00922F917020FD90E8892BC0934D +:10388000E9009091EB0090FF43C09091EE0097FF0C +:103890003FC09091030120910201291709F1209165 +:1038A000E80025FF1DC0E0910001F0910101E90F42 +:1038B000F11D30819F5F20910401922390930301B9 +:1038C0003093F1009091E80095FDE3CF9091E800EE +:1038D00090FFDFCF9091E8009E779093E800D9CFDA +:1038E0009091F3002091F20030E0392B232B81F0EE +:1038F0009091E80090FF0CC09091E80095FF03C004 +:103900001092F100F9CF9091E8009E779093E80033 +:103910008F708093E90085CF292F3327233031051D +:10392000C9F060F42130310581F02230310509F011 +:1039300041C084E790E025EC32E040C021323105FF +:10394000E1F02232310531F135C082E190E029E326 +:1039500033E034C099278130910549F028F002976F +:1039600049F5E3E7F2E005C0E1ECF2E002C0E1EB8B +:10397000F2E0849190E09F0121C06430D8F4E62FFA +:10398000F0E0EE0FFF1FEB56FE4F2081318189E002 +:1039900090E014C0643070F470E0FB01EE0FFF1F84 +:1039A000E357FE4F20813181FB01E757FE4F8081B5 +:1039B00090E004C080E090E020E030E0FA01318344 +:1039C0002083089580E189BD82E189BD09B400FEAC +:1039D000FDCF8091D8008F7D8093D8008091E0004A +:1039E00082608093E0008091E00081FDFCCF08952B +:1039F000CF92DF92EF92FF920F931F93CF93DF93BB +:103A0000EC018B017A010E94561E811133C0E11432 +:103A1000F10439F0F70180819181081B190BC80F5F +:103A2000D91FC12CD12C0115110519F18091E80085 +:103A300085FD16C08091E8008E778093E800E11440 +:103A4000F10449F0F70180819181C80ED91ED1821D +:103A5000C08285E00FC00E94561E882321F30AC051 +:103A600089918093F10001501109FFEFCF1ADF0A0D +:103A7000DACF80E0DF91CF911F910F91FF90EF900F +:103A8000DF90CF90089520919205309193052617ED +:103A9000370748F06115710539F42091E8002E7759 +:103AA0002093E80001C0B901FC0120E06115710517 +:103AB00079F180918B058823F1F18530F1F18091C6 +:103AC000E80083FD3CC08091E80082FD2EC080911B +:103AD000E80080FFEBCF2091F3008091F20090E0AE +:103AE000922B6115710551F08830910538F42191C0 +:103AF0002093F100615071090196F3CF21E00897FE +:103B000009F020E08091E8008E778093E800CECF26 +:103B10002111CFCF0AC080918B05882361F08530B9 +:103B200061F08091E80083FD0AC08091E80082FF87 +:103B3000F2CF80E0089582E0089583E0089581E067 +:103B4000089520919205309193052617370748F084 +:103B50006115710539F42091E8002E772093E80073 +:103B600001C0B901FC0120E06115710591F180915E +:103B70008B05882309F440C0853009F43FC080914B +:103B8000E80083FD3DC08091E80082FD2FC0809158 +:103B9000E80080FFE9CF2091F3008091F20090E0EF +:103BA000922B6115710559F08830910540F42491EC +:103BB0002093F1003196615071090196F2CF21E016 +:103BC000089709F020E08091E8008E778093E80064 +:103BD000CBCF2111CCCF0AC080918B05882361F017 +:103BE000853061F08091E80083FD0AC08091E80093 +:103BF00082FFF2CF80E0089582E0089583E0089587 +:103C000081E00895982F973068F59093E900981710 +:103C100039F07091EC002091ED005091F00003C05C +:103C2000242F762F50E021FD02C09F5FECCF309112 +:103C3000EB003E7F3093EB003091ED003D7F309301 +:103C4000ED003091EB0031603093EB007093EC00AD +:103C50002093ED005093F0002091EE0027FDE5CF7A +:103C600080E008958F708093E90081E0089580914D +:103C70008C0587FF11C08091E80082FD05C080910E +:103C80008B058111F8CF11C08091E8008B770BC0B4 +:103C900080918B05882349F08091E80080FFF8CF60 +:103CA0008091E8008E778093E80008952091E400E9 +:103CB0003091E50095E64091EC00842F817040FF43 +:103CC00023C08091E80080FD1DC080918B05882372 +:103CD00099F0853099F08091EB0085FD11C04091FD +:103CE000E4005091E5002417350729F3915011F0B5 +:103CF0009A01E1CF84E0089582E0089583E0089579 +:103D000081E0089580E008954091E80042FFDDCF12 +:103D100008950E94F71E0E94FF1EE0EEF0E08081F1 +:103D200081608083E8EDF0E080818F77808319BC2B +:103D3000A7EDB0E08C918E7F8C9380818F7E808305 +:103D400010928A0508950F931F93CF93DF930E94DB +:103D5000F71E0E94FF1EC8EDD0E088818F77888310 +:103D600088818068888388818F7D888319BC1092C0 +:103D70008B0510928705109289051092880500EE38 +:103D800010E0F80180818B7F808388818160888347 +:103D900042E060E080E00E94021EE1EEF0E08081FF +:103DA0008E7F8083E2EEF0E080818160808380817D +:103DB00088608083F80180818E7F80838881806124 +:103DC0008883DF91CF911F910F910895E8EDF0E086 +:103DD00080818F7E8083E7EDF0E080818160808349 +:103DE00084E082BF81E080938A050C94A31EE8EDF5 +:103DF000F0E080818E7F80831092E200089510921F +:103E0000DA001092E10008951F920F920FB60F9200 +:103E100011242F933F934F935F936F937F938F93CF +:103E20009F93AF93BF93EF93FF938091E10082FF45 +:103E30000BC08091E20082FF07C08091E1008B7F80 +:103E40008093E1000E94EC1A8091DA0080FF1FC08D +:103E50008091D80080FF1BC08091DA008E7F809314 +:103E6000DA008091D90080FF0DC080E189BD82E138 +:103E700089BD09B400FEFDCF81E080938B050E94CF +:103E8000DA1A05C019BC10928B050E94E81A8091BD +:103E9000E10080FF19C08091E20080FF15C0809191 +:103EA000E2008E7F8093E2008091E2008061809347 +:103EB000E2008091D80080628093D80019BC85E030 +:103EC00080938B050E94BB1B8091E10084FF30C072 +:103ED0008091E20084FF2CC080E189BD82E189BD30 +:103EE00009B400FEFDCF8091D8008F7D8093D8006B +:103EF0008091E1008F7E8093E1008091E2008F7ECF +:103F00008093E2008091E20081608093E2008091E2 +:103F10008705882311F084E007C08091E30087FDC6 +:103F200002C081E001C083E080938B050E94C41B26 +:103F30008091E10083FF29C08091E20083FF25C0CA +:103F40008091E100877F8093E10082E080938B0580 +:103F5000109287058091E1008E7F8093E10080912F +:103F6000E2008E7F8093E2008091E2008061809386 +:103F7000E20042E060E080E00E94021E8091F000DA +:103F800088608093F0000E94EB1AFF91EF91BF913F +:103F9000AF919F918F917F916F915F914F913F91E1 +:103FA0002F910F900FBE0F901F9018951F920F9298 +:103FB0000FB60F9211242F933F934F935F936F93FC +:103FC0007F938F939F93AF93BF93CF93DF93EF93A1 +:103FD000FF93C091E900CF708091EC00D82FD17091 +:103FE00080FDD0E81092E9008091F000877F8093F7 +:103FF000F00078940E941A201092E9008091F0005D +:1040000088608093F000CD2BCF70C093E900FF91C2 +:10401000EF91DF91CF91BF91AF919F918F917F9160 +:104020006F915F914F913F912F910F900FBE0F9025 +:104030001F9018951F93CF93DF93CDB7DEB7AA9744 +:104040000FB6F894DEBF0FBECDBFECE8F5E080916F +:10405000F100819325E0E439F207C9F70E94011BC2 +:104060008091E80083FF24C180918C0590918D059B +:10407000492F50E04A30510508F01AC1FA01EA5AB6 +:10408000FF4F0C940F32803881F0823809F010C154 +:10409000809190058F708093E9008091EB0085FB03 +:1040A000882780F91092E90006C0809188059091D8 +:1040B0008905911182609091E800977F9093E800C4 +:1040C0008093F1001092F100C8C0282F2D7F09F0D5 +:1040D000EFC0882319F0823061F0EAC080918E052C +:1040E000813009F0E5C0933009F080E080938905C4 +:1040F0002BC080918E05811127C0809190058F7013 +:1041000009F4D6C08093E9002091EB0020FF1CC089 +:10411000933021F48091EB00806214C09091EB0009 +:1041200090619093EB0021E030E0A90102C0440FC0 +:10413000551F8A95E2F74093EA001092EA008091B9 +:10414000EB0088608093EB001092E9008091E8001A +:10415000877F86C08111ACC010918E051F7780913A +:10416000E3008078812B8093E3008091E800877FD3 +:104170008093E8000E94371E8091E80080FFFCCF0A +:104180008091E30080688093E300111102C082E017 +:1041900001C083E080938B058BC08058823008F08B +:1041A00087C080918E0590918F058C3D53E09507D7 +:1041B00079F583E08A838AE289834FB7F894DE0138 +:1041C000139620E03EE051E2E32FF0E050935700D9 +:1041D000E49120FF03C0E295EF703F5FEF708E2FF8 +:1041E00090E0EA3010F0C79601C0C0968D939D9381 +:1041F0002F5F243149F74FBF8091E800877F80937C +:10420000E8006AE270E0CE0101960E94431D14C0EE +:10421000AE014F5F5F4F609190050E948C1CBC0106 +:10422000892B09F445C09091E800977F9093E800AE +:1042300089819A810E94A11D8091E8008B778093EB +:10424000E80036C08038A1F58091E800877F809330 +:10425000E800809187058093F1008091E8008E77D7 +:104260008093E8000E94371E23C0811121C08091F5 +:104270008E0590918F0599270297D4F48091E800DC +:10428000877F8093E80080918E05809387050E9448 +:10429000371E80918705811106C08091E30087FD5C +:1042A00002C081E001C084E080938B050E94ED1A7A +:1042B0008091E80083FF0AC08091E800877F8093A7 +:1042C000E8008091EB0080628093EB00AA960FB625 +:1042D000F894DEBF0FBECDBFDF91CF911F9108953F +:1042E00090930F0480930E040895E0910E04F091D2 +:1042F0000F04309721F00190F081E02D099480E0C7 +:104300000895E0910E04F0910F04309721F002809F +:10431000F381E02D09940895E0910E04F0910F04CB +:10432000309721F00480F581E02D099408952091C3 +:104330000C0430910D042817390771F090930D0487 +:1043400080930C04E0910E04F0910F04309721F05B +:104350000680F781E02D0994089520910A04309198 +:104360000B042817390771F090930B0480930A040B +:10437000E0910E04F0910F04309721F00084F18554 +:10438000E02D099408950C9471220E94B00A0C94B7 +:104390007C098F929F92AF92BF92CF92DF92EF9261 +:1043A000FF920F931F93CF93DF9300D000D01F9203 +:1043B000CDB7DEB70E94190701E114E0F12C8F2D73 +:1043C0000E9401084C01F801A080B180A826B926FE +:1043D000A114B10439F4F3940E5F1F4FF0E1FF1202 +:1043E000EECF39C080917C0581FD0E942E08E12C22 +:1043F000CC24C394D12CC5018C219D21892B21F182 +:10440000E982FA8221E0C4018C219D21892B09F4E3 +:1044100020E02B830E94B90A8160782F9D838C83D2 +:1044200049815A816B818D810E94742249815A8110 +:104430006B817C818D810E94142DF8018081918196 +:104440008C259D2591838083E394CC0CDD1CF0E1C9 +:10445000EF12D1CFC0CF8FEF89838A831B820E9456 +:10446000B90A8160782F9D838C8349815A816B8141 +:104470008D810E9474220E94132D0E94EB2F0E94B6 +:104480007521909110048917B9F00E9475218093CD +:1044900010040F900F900F900F900F90DF91CF911D +:1044A0001F910F91FF90EF90DF90CF90BF90AF9052 +:1044B0009F908F900C94252D0F900F900F900F9040 +:1044C0000F90DF91CF911F910F91FF90EF90DF90B0 +:1044D000CF90BF90AF909F908F9008950C942F082D +:1044E0000895089508950895CF93DF93CDB7DEB76B +:1044F0002B970FB6F894DEBF0FBECDBF942F4F831E +:10450000252F588769877A878B874A855B85452B56 +:1045100031F02F3F31F481E09F3F19F403C081E077 +:1045200001C080E080FD07C04F81588569857A858C +:104530008B850E94142DDE01119686E0FD011192FB +:104540008A95E9F785E0FE01379601900D928A95EC +:10455000E1F749815A816B817C818D819E810E9426 +:1045600092292B960FB6F894DEBF0FBECDBFDF9118 +:10457000CF910895882309F45CC09CEF980F913A7D +:1045800020F090E5980F9E3218F40E94702C0DC018 +:1045900090E2980F983058F4877091E001C0990F1D +:1045A0008A95EAF7892F0E94AE2C0C94E82C9BE5A3 +:1045B000980F933070F4853A29F0863A31F083E809 +:1045C00090E005C081E890E002C082E890E00C94A1 +:1045D000972198E5980F953160F5883A89F0893AE6 +:1045E00091F08A3A99F08B3AA1F08C3AA9F08D3A81 +:1045F000B1F08E3AB9F08F3AC1F080E090E017C088 +:1046000082EE90E014C089EE90E011C08AEE90E056 +:104610000EC085EB90E00BC086EB90E008C083EB0A +:1046200090E005C084EB90E002C087EB90E00C9432 +:10463000AD210895882349F19CEF980F913A20F01D +:1046400090E5980F9E3218F40E948D2C0DC090E2D8 +:10465000980F983058F4877091E001C0990F8A95AF +:10466000EAF7892F0E94B42C0C94E82C9BE5980F54 +:10467000933020F480E090E00C949721885A8531A3 +:1046800020F480E090E00C94AD210895882321F07F +:104690000E94AE2C0C94E82C0895882321F00E94EF +:1046A000B42C0C94E82C08950E94CE2C0E949D2CD2 +:1046B0000E94E82C0E9490300E945E2F80E090E0E3 +:1046C0000E94972180E090E00C94AD210E94BE2CC6 +:1046D0000C945423CF92DF92EF92FF920F931F938B +:1046E000CF93DF9300D000D01F92CDB7DEB76C011F +:1046F0000E94272D811101C385E0F601DE0111968C +:1047000001900D928A95E1F7F60140815181238154 +:1047100034812115310531F05F3F31F481E04F3FA5 +:1047200019F403C081E001C080E080FDE6C2F6011B +:10473000F280E580E2948FE0E82249835A83FB828D +:10474000722F3D832C836F2D8D810E94EC2B8C0169 +:104750000E94EB2B0E94E52AE12FE295EF708E2F4D +:1047600090E0FC01E05AFF4F0C940F32812F807FC4 +:104770001F70882311F01295107FFF2049F011233C +:1047800009F452C2812F0E94C12C0E94E82C4CC215 +:10479000802F0E941A23112309F4AFC2812F0E9497 +:1047A000C72C0F900F900F900F900F90DF91CF912B +:1047B0001F910F91FF90EF90DF90CF900C94E82C19 +:1047C000812F807F1F70803211F01295107F00239F +:1047D00019F0013009F12BC0FF20A9F0EE2059F1AA +:1047E000F1E0812FEF1228C00F900F900F900F90E3 +:1047F0000F90DF91CF911F910F91FF90EF90DF907D +:10480000CF900C94D12CEE2021F021E0E21609F497 +:1048100074C20E94D42C2DC0FF20E9F085E08E15D3 +:1048200008F46BC20E94AB2C812329F022C0FF2028 +:10483000F1F0E11015C0812F0F900F900F900F90A5 +:104840000F90DF91CF911F910F91FF90EF90DF902C +:10485000CF900C94462394E09E1508F44EC209C0F4 +:10486000F601858180FFE0C18F708583E4CFE11080 +:10487000EEC1812F61C1812F86958695837019F0D5 +:104880008130B9F03AC2FF2019F0C801937002C01C +:1048900080E090E00F900F900F900F900F90DF91BD +:1048A000CF911F910F91FF90EF90DF90CF900C94DC +:1048B0009721FF2019F0C801937002C080E090E0BA +:1048C0000F900F900F900F900F90DF91CF911F914D +:1048D0000F91FF90EF90DF90CF900C94AD21802F3F +:1048E000FF2019F00E94712E02C00E94D92E0F9055 +:1048F0000F900F900F900F90DF91CF911F910F911C +:10490000FF90EF90DF90CF900C945E2F812F8370FB +:1049100009F070C0F110F1C1202F22952695277063 +:10492000220F220F602F6F70862F90E0A0E0B0E082 +:104930006C017D01022E04C0CC0CDD1CEE1CFF1CA2 +:104940000A94D2F704FF12C08FE090E0A0E0B0E03C +:1049500004C0880F991FAA1FBB1F2A95D2F7BC015C +:10496000CD01609570958095909503C060E070E0F2 +:10497000CB011695169513701230B1F040F56C29E5 +:104980007D298E299F29113031F10F900F900F90C2 +:104990000F900F90DF91CF911F910F91FF90EF90AB +:1049A000DF90CF900C94002B6C297D298E299F29B4 +:1049B0000F900F900F900F900F90DF91CF911F915C +:1049C0000F91FF90EF90DF90CF900C941A2B0E94E4 +:1049D000002BC701B6010F900F900F900F900F9012 +:1049E000DF91CF911F910F91FF90EF90DF90CF90CB +:1049F0000C94E62AFF2019F0812F817001C0869562 +:104A0000882309F47AC1202F229526952770220F3A +:104A1000220F602F6F70862F90E0A0E0B0E06C0155 +:104A20007D01022E04C0CC0CDD1CEE1CFF1C0A9480 +:104A3000D2F704FF12C08FE090E0A0E0B0E004C025 +:104A4000880F991FAA1FBB1F2A95D2F7BC01CD0161 +:104A5000609570958095909503C060E070E0CB0103 +:104A60001695169513701230B1F040F56C297D291A +:104A70008E299F29113031F10F900F900F900F90D8 +:104A80000F90DF91CF911F910F91FF90EF90DF90EA +:104A9000CF900C94C72B6C297D298E299F290F90CC +:104AA0000F900F900F900F90DF91CF911F910F916A +:104AB000FF90EF90DF90CF900C94D92B0E94C72BE2 +:104AC000C701B6010F900F900F900F900F90DF91DC +:104AD000CF911F910F91FF90EF90DF90CF900C94AA +:104AE000B52B003FC1F128F480E4800F803250F0F4 +:104AF00096C0023F09F45EC008F449C0033F09F4C0 +:104B00006CC08DC0F02FF071EF2E812F8F71FF20C0 +:104B100051F00E944E2B802FEE2019F08295807F5D +:104B20008BCE8F7089CE0E946F2B802FEE2019F0D4 +:104B30008295807F01C08F700F900F900F900F9023 +:104B40000F90DF91CF911F910F91FF90EF90DF9029 +:104B5000CF900C944D23FF20A9F024E02E1508F4EB +:104B6000CCC0812F8F710F900F900F900F900F90EE +:104B7000DF91CF911F910F91FF90EF90DF90CF9039 +:104B80000C94942B85E08E1508F4B7C0EACFFF2073 +:104B900099F0812F8F710F900F900F900F900F90C1 +:104BA000DF91CF911F910F91FF90EF90DF90CF9009 +:104BB0000C944E2BFF2069F3812F8F710F900F9073 +:104BC0000F900F900F90DF91CF911F910F91FF9059 +:104BD000EF90DF90CF900C946F2BFF2089F0812F06 +:104BE0008F710F900F900F900F900F90DF91CF91DA +:104BF0001F910F91FF90EF90DF90CF900C94392B85 +:104C00000F900F900F900F900F90DF91CF911F9109 +:104C10000F91FF90EF90DF90CF900C94342BFF20FA +:104C200099F0EE2009F4B5CF802F0F900F900F90E0 +:104C30000F900F90DF91CF911F910F91FF90EF9008 +:104C4000DF90CF900C94BA22EE2009F4B5CF802FDC +:104C50000F900F900F900F900F90DF91CF911F91B9 +:104C60000F91FF90EF90DF90CF900C941A23412F7B +:104C70004F70602FC6010E94EB2D0F900F900F9088 +:104C80000F900F90DF91CF911F910F91FF90EF90B8 +:104C9000DF90CF900C94402A01112FC0FF2069F1C2 +:104CA0000E9466239FEFE0E7F2E09150E040F04081 +:104CB000E1F700C000000F900F900F900F900F9041 +:104CC000DF91CF911F910F91FF90EF90DF90CF90E8 +:104CD0000C94942D412F4F70602FC6010F900F90B0 +:104CE0000F900F900F90DF91CF911F910F91FF9038 +:104CF000EF90DF90CF900C94EE2D0F900F900F90CF +:104D00000F900F90DF91CF911F910F91FF90EF9037 +:104D1000DF90CF9008951F93CF93DF9300D000D002 +:104D20001F92CDB7DEB7942F4983252F5A836B830B +:104D30007C838D834C815D81452B31F02F3F31F495 +:104D400081E09F3F19F403C081E001C080E0182F8B +:104D5000117080FD31C049815A816B817C818D81C8 +:104D60000E94EC2B292F22952F702C3030F42A3002 +:104D7000A0F42250223030F022C02C30C9F02F3065 +:104D8000B9F01DC0853A28F48430C0F4823028F48C +:104D900015C090E2980F983088F0883E30F4803E3D +:104DA00068F48450813A58F409C0803F41F406C049 +:104DB00093FB112710F903C010E001C011E0812F0F +:104DC0000F900F900F900F900F90DF91CF911F9148 +:104DD0000895CF93DF9300D000D01F92CDB7DEB7F8 +:104DE0000F900F900F900F900F90DF91CF9108953B +:104DF000CF93DF9300D000D000D0CDB7DEB726969A +:104E00000FB6F894DEBF0FBECDBFDF91CF910895EE +:104E10001F93CF93DF93C091310416E08091320449 +:104E2000C81799F0D0E01C9FF0011D9FF00D1124D0 +:104E3000ED5CFB4F4081518162817381848195815A +:104E40000E94F8262196C770E9CFDF91CF911F917C +:104E500008954091630450916404609165047091D9 +:104E6000660480916704909168040C94F826CF93AF +:104E70008091680482958F7009F05FC0809165040D +:104E8000882309F45AC080913104B09132047091A2 +:104E90006304A0916404409166045091670491E01A +:104EA0007F3F09F090E0692FC6E08B1709F445C0F9 +:104EB0004115510521F0AF3F21F020E003C021E072 +:104EC00001C0262F90E020FD35C0C89FF001C99F8A +:104ED000F00D1124ED5CFB4F21812A132BC02081A2 +:104EE000271328C02281211125C023813481241752 +:104EF000350710F421503109241B350B283C3105AE +:104F0000C8F4209168042F7020612093680426E083 +:104F1000289FF001299FF00D1124E85CFB4F808150 +:104F20008F708061808383E694E00E946A23CF9132 +:104F30000C94082701968770B8CFCF910895AF924F +:104F4000BF92CF92DF92EF92FF920F931F93CF9376 +:104F5000DF93CDB7DEB761970FB6F894DEBF0FBE13 +:104F6000CDBF7C0185E0F701DE011D9601900D9219 +:104F70008A95E1F7D7014C9111965C9111971296A1 +:104F8000DC90129713960D911C9114973091630445 +:104F9000609164048091660490916704009731F0F9 +:104FA0006F3F31F421E03F3F19F403C021E001C01D +:104FB00020E0B22FB170BB2E20FD6EC1A090650421 +:104FC000AA2009F4CCC0209168040817190728F01A +:104FD000F801E81BF90BCF0104C080959095800F74 +:104FE000911FCC24C394883C910580F0C12C207F74 +:104FF00009F0A1C0702F198B088B6D2D89890E9433 +:10500000E92683E694E00E946A23BDC0822F807F58 +:1050100009F056C0561315C0431313C0CD2CD11040 +:1050200010C02F702061209368040E94292783E616 +:1050300094E00E946A2380916804D70115968C93AE +:105040005FC10115110531F05F3F31F481E04F3F41 +:1050500019F403C081E001C080E080FD03C081E05D +:105060008D2502C080E090E0B82FB170CB2E80FF7C +:105070001CC0809131042091320436E0821709F47B +:105080001CC190E0389FF001399FF00D1124ED5CB8 +:10509000FB4F6181561306C06081461303C06281D5 +:1050A000D61203C001968770E9CFCD2CDD2009F41C +:1050B00027C180916804816080936804C12C20C15D +:1050C000561308C0431306C0D11004C08091680471 +:1050D000D701B6C04D875E87DF86702F198B088B8E +:1050E0006D2D89890E948B26882399F1DD2089F115 +:1050F00020916804822F82958F7090E0029774F05F +:10510000809163049091640498878F8319861B872C +:105110000A872C87CE0107960E946A2386E0F70152 +:10512000A3E6B4E001900D928A95E1F70E9437273B +:105130000E94292711C0561781F14D875E87DF86AF +:10514000702F198B088B6D2D89890E948B268111F8 +:1051500038C0C7010E946A23CC24C394D1C0081769 +:10516000190708F446C0F801E81BF90BCF01883C89 +:10517000910508F443C0C12C702F198B088B6D2D3D +:1051800089890E94E926E3E6F4E086E0DF011D92CA +:105190008A95E9F70E942927B3C04313CECFD110D7 +:1051A000CCCF80916804F7018583C7010E946A23F0 +:1051B00086E0E3E6F4E0DF011D928A95E9F7CA2C68 +:1051C0009FC0DD2031F220916804822F82958F707C +:1051D00090E002970CF4A2CF809163049091640454 +:1051E0009A8389831B821D830C832E83CE010196B3 +:1051F00093CF80959095800F911FB9CFCD2CDD2056 +:1052000009F4A7CF561333C0431331C0209168046B +:1052100020FD24C0822F82958F70482F50E04115C9 +:105220005105E1F0D70115962C9315974F30510594 +:1052300049F08F5F982F9295907F822F8F70892BE6 +:1052400015968C93C7010E946A2386E0F701A3E6B6 +:10525000B4E001900D928A95E1F79CCF86E0F701CA +:10526000A3E6B4E001900D928A95E1F749C04D871D +:105270005E87DF86702F198B088B6D2D89890E94C0 +:105280008B2681114BCF80916804816080936804E4 +:10529000C7010E946A2334C0DD2009F45ACF4D872C +:1052A0005E87DF86702F198B088B6D2D89890E9490 +:1052B0008B26882309F44DCF31CF702F198B088BA3 +:1052C0006D2D89890E94EC2B292F22952F70223079 +:1052D00028F49F7039F0811105C00BC0243028F4E8 +:1052E0009F7049F4805E883020F0C7010E946A23D5 +:1052F000BC2CCB2C05C0F7019581907F99F7F9CF95 +:105300008C2D61960FB6F894DEBF0FBECDBFDF9136 +:10531000CF911F910F91FF90EF90DF90CF90BF90B2 +:10532000AF9008951F93CF93DF93CDB7DEB72C973F +:105330000FB6F894DEBF0FBECDBF4F835887698785 +:105340007A878B879C87CE0107960E949F278823A8 +:10535000D1F09F8188852A853B85232B31F08F3FB3 +:1053600031F481E09F3F19F403C081E001C080E087 +:1053700080FD47C04F81588569857A858B859C85DE +:105380000E94F8263EC086E0FE013796DE011196A7 +:1053900001900D928A95E1F7FF81E8856A857B850A +:1053A0006115710531F0EF3F31F481E0FF3F19F4F1 +:1053B00003C081E001C080E080FD23C02091320461 +:1053C00030E0C9010196877099274091310450E07F +:1053D00084179507F1F1F983EA837D836C8396E066 +:1053E000929FD001939FB00D1124AD5CBB4FFE0185 +:1053F000319601900D929A95E1F7809332040E94C4 +:10540000082716E08091310490913204891771F1D8 +:10541000189FC00111248D5C9B4F0E949F278823F9 +:1054200029F1E09131041E9FF0011124ED5CFB4F46 +:105430004081518162817381848195810E94F82627 +:105440008091310490E00196877099278093310410 +:10545000D9CF0E9466231092320410923104E3E601 +:10546000F4E086E0DF011D928A95E9F72C960FB6ED +:10547000F894DEBF0FBECDBFDF91CF911F9108958D +:10548000DF92EF92FF920F931F93CF93DF93FC0174 +:10549000892B09F488C0E12CF12CDD24D394EF0191 +:1054A00021968491853709F460C058F4843708F058 +:1054B0004EC0843008F068C08130D1F0823071F184 +:1054C00072C0883709F45BC050F4863709F453C0C2 +:1054D000873709F068C08E2D0E94BB2C52C09CE714 +:1054E000980F903708F05FC08F770E941A234EC044 +:1054F0008F010E5F1F4FFE01849190E2980F98304C +:1055000050F48770FD2D01C0FF0F8A95EAF78F2FA9 +:105510000E94C12C15C00E94BA2214C08F010E5FD8 +:105520001F4FFE01849190E2980F983068F48770C5 +:10553000FD2D01C0FF0F8A95EAF78F2F0E94C72C1F +:105540000E94E82CE80122C00E941A23FBCFCF0161 +:105550000296FE01C491CC2361F0EFE9FFE03197A0 +:10556000F1F700C00000C150F6CFCF010296FE0156 +:10557000F490EC010BC00E94AB2CE82E07C00E94F7 +:10558000BE2C0E94E82C02C00E94BA228F2D8823D4 +:1055900041F0EFE9FFE03197F1F700C000008150E2 +:1055A000F6CFFE017CCFDF91CF911F910F91FF903D +:1055B000EF90DF9008956093690570936A0580937A +:1055C0006B0590936C050C94242D08950F931F93F5 +:1055D00000916D0510916E0520916F053091700559 +:1055E000602B712B822B932B60936D0570936E054E +:1055F00080936F05909370051F910F910C94232D4C +:105600000F931F9300916D0510916E0520916F050A +:1056100030917005602371238223932360936D057D +:1056200070936E0580936F05909370051F910F9195 +:105630000C94232D0F931F9300916D0510916E050F +:1056400020916F053091700560277127822793277D +:1056500060936D0570936E0580936F059093700550 +:105660001F910F910C94232D60E070E0CB010C94FE +:10567000DB2A0F931F9341E050E060E070E08A0165 +:105680009B0104C0000F111F221F331F8A95D2F700 +:10569000C901B8011F910F910C94DB2A0F931F933E +:1056A00041E050E060E070E004C0440F551F661F09 +:1056B000771F8A95D2F78091690590916A05A0912C +:1056C0006B05B0916C058A019B01082B192B2A2BC5 +:1056D0003B2BC901B8011F910F910C94DB2A0F934A +:1056E0001F9341E050E060E070E004C0440F551F9C +:1056F000661F771F8A95D2F74095509560957095F3 +:105700008091690590916A05A0916B05B0916C0537 +:105710008A019B01082319232A233B23C901B801CD +:105720001F910F910C94DB2A0F931F9341E050E0DF +:1057300060E070E004C0440F551F661F771F8A9514 +:10574000D2F78091690590916A05A0916B05B0919F +:105750006C058A019B01082719272A273B27C901C5 +:10576000B8011F910F910C94DB2A0F931F930091A6 +:10577000690510916A0520916B0530916C05602BCD +:10578000712B822B932B1F910F910C94DB2A0F937B +:105790001F930091690510916A0520916B05309166 +:1057A0006C0560237123822393231F910F910C9426 +:1057B000DB2A0F931F930091690510916A052091D0 +:1057C0006B0530916C0560277127822793271F9105 +:1057D0000F910C94DB2A08958F929F92AF92BF9203 +:1057E000DF92EF92FF920F931F93CF93DF9300D03E +:1057F00000D01F92CDB7DEB76B837C838D838A0187 +:105800008C819D81892B31F01F3F31F481E04F3F26 +:1058100019F403C081E001C080E080FF03C080E094 +:1058200090E04DC08B818823D1F1809069059090E4 +:105830006A05A0906B05B0906C0580916D05909104 +:105840006E05A0916F05B0917005882A992AAA2A41 +:10585000BB2A8FE1E82EF12CD501C4010E2C04C027 +:10586000B695A795979587950A94D2F780FD06C0BF +:1058700081E0E81AF10880F7D12C07C0DE2CB801CE +:105880008E2D0E94C22D019799F380E1189FF0019F +:105890001124E759FB4FE00FF11DD08209C080E1D0 +:1058A000189FF0011124E759FB4FE00FF11DD08044 +:1058B00009831A8369817A818D2D0E94C22D0F90F0 +:1058C0000F900F900F900F90DF91CF911F910F913C +:1058D000FF90EF90DF90BF90AF909F908F900895D2 +:1058E0002091100130911101F90132969FEF40E0B3 +:1058F0005191851789F09F3F19F4511101C0942FE0 +:105900004F5F4630A9F79F3F39F0F901E90FF11DCC +:1059100097FDFA95828308950895E0911001F09122 +:1059200011019F012A5F3F4F9281891301C01282AA +:105930003196E217F307C1F7089581E090E0E09116 +:105940001001F0911101E80FF91F108201968830C3 +:105950009105A9F7089580917B05089590917B05A5 +:10596000892B80937B050895809590917B058923F1 +:1059700080937B05089580937B05089510927B05A5 +:10598000089590917A05892B80937A0508958095E2 +:1059900090917A05892380937A05089510927A056B +:1059A000089580937105089510927105089580916E +:1059B000100190911101FC0131969C01285F3F4F2D +:1059C00080E0919191118F5FE217F307D1F708956D +:1059D000E0911001F091110180917B058083E091AD +:1059E0001001F0911101908180917A05892B8083BB +:1059F00080917105882361F0E0911001F09111010F +:105A00009081892B80830E94D72C8111109271057F +:105A100080911001909111010C94812190939F012C +:105A200080939E0108950895CF93DF9300D000D016 +:105A30001F92CDB7DEB70F900F900F900F900F9081 +:105A4000DF91CF910895089508950C946E2280E01F +:105A5000089580918B05843021F110927D0520E41A +:105A600088E190E00FB6F894A895809360000FBE8F +:105A70002093600083B7817F846083BF83B7816098 +:105A800083BF7894889583B78E7F83BF0FB6F894D1 +:105A9000A8958091600088618093600010926000FA +:105AA0000FBE0895CF930E9472220E9419070E9490 +:105AB0007322C0E08C2F0E940108892B29F4CF5F4C +:105AC000C031C1F780E001C081E0CF9108950E940C +:105AD00070220C9466231F920F920FB60F9211241E +:105AE0008F939F93AF93BF9380917D05811113C0D6 +:105AF0008091F2029091F302A091F402B091F5022C +:105B00004196A11DB11D8093F2029093F302A093E0 +:105B1000F402B093F502BF91AF919F918F910F90D6 +:105B20000FBE0F901F9018950E94891EF89487E76A +:105B300097E7909301088093000887E090EBDC01E1 +:105B40008093940590939505A0939605B09397053F +:105B50009CE088E10FB6F894A895809360000FBE92 +:105B600090936000FFCFE82FF0E080E1989FE00D78 +:105B7000F11D1124E052FF4F9491892F8F7092955F +:105B80009F700895CF93C82FCB010E94B32DE92FAA +:105B900090E040E1E49F90011124282B392B20381C +:105BA000310519F480E090E014C0E770F0E028E0DF +:105BB000C29FE00DF11D112424E0EE0FFF1F2A9576 +:105BC000E1F7E80FF91FEE0FFF1FE050F84985914C +:105BD0009491CF91089580E090E008950895809188 +:105BE000800580FF0BC06091150185E0689FB001C2 +:105BF000112475956795759567952BC081FF09C030 +:105C00006091150185E0689FB00111247595679535 +:105C100020C082FF07C06091150185E0689FB00138 +:105C2000112417C0909181059923D1F0609114013E +:105C3000961788F72091150185E0289F900111247F +:105C4000929FA001939F500D112470E0CA010E9401 +:105C5000FB316038710540F46115710519F406C017 +:105C600065E070E0862F08958FE7089581E008953C +:105C70008091800580FF08C06091130170E07595E8 +:105C800067957595679521C081FF06C060911301E6 +:105C900070E07595679519C082FF04C0609113018B +:105CA00070E010C090918105992399F060911201E4 +:105CB0009617A0F780911301899FC001112470E00D +:105CC0000E94FB316038710540F46115710519F4CB +:105CD00006C061E070E0862F08958FE7089581E0A7 +:105CE0000895803F21F40E94EF2D819504C0813FEB +:105CF00029F40E94EF2D809384050895823F21F4BA +:105D00000E94EF2D819504C0833F29F40E94EF2D5E +:105D1000809383050895893F19F40E94382E05C0A9 +:105D20008A3F31F40E94382E81958093850508952D +:105D30008B3F21F40E94382E819504C08C3F29F4BA +:105D40000E94382E809386050895843F21F4809127 +:105D50008205816017C0853F21F4809182058260B1 +:105D600011C0863F21F48091820584600BC0873F7B +:105D700021F480918205886005C0883F31F48091CC +:105D8000820580618093820508958D3F21F4809182 +:105D9000800581600BC08E3F21F480918005826078 +:105DA00005C08F3F29F48091800584608093800531 +:105DB0000895803F39F48091840587FF6CC010926C +:105DC000840569C0813F29F4809184051816BCF3CD +:105DD00062C090918305823F29F497FF5CC01092C6 +:105DE000830559C0833F19F41916CCF354C0893F79 +:105DF00041F48091850518160CF04DC01092850570 +:105E00004AC08A3F29F48091850587FF44C0F6CFB8 +:105E10008B3F39F48091860587FF3DC0109286053F +:105E20003AC08C3F29F4809186051816BCF333C024 +:105E3000843F21F4809182058E7F17C0853F21F435 +:105E4000809182058D7F11C0863F21F4809182056B +:105E50008B7F0BC0873F21F480918205877F05C02F +:105E6000883F31F4809182058F7E8093820513C034 +:105E70008D3F21F4809180058E7F0BC08E3F21F4F1 +:105E8000809180058D7F05C08F3F29F4809180052A +:105E90008B7F809380058091830581110EC0809156 +:105EA000840581110AC080918505811106C0809109 +:105EB0008605811102C010928105089580917C05AC +:105EC00083FF7EC087E594E00E94A0028091820556 +:105ED0001F928F9382E594E09F938F930E943903E2 +:105EE00080E594E00E94A00280918305282F082E6F +:105EF000000C330B3F938F938DE494E09F938F932B +:105F00000E9439038BE494E00E94A00280918405F2 +:105F1000282F082E000C330B3F938F9388E494E0D6 +:105F20009F938F930E94390386E494E00E94A0021D +:105F300080918505282F082E000C330B3F938F93FB +:105F400083E494E09F938F930E94390381E494E06B +:105F50000E94A00280918605282F082E000C330B8A +:105F60003F938F938EE394E09F938F930E94390326 +:105F70008BE394E00E94A002809181051F928F9391 +:105F800088E394E09F938F930E94390386E394E023 +:105F90000E94A002809180051F928F9383E394E07A +:105FA0009F938F930E94390380E394E00E94A002A4 +:105FB0008DB79EB74C960FB6F8949EBF0FBE8DBF9F +:105FC00082E895E00E948C210E94B90A90937F0597 +:105FD00080937E0508951F93CF93DF9380917E0574 +:105FE00090917F050E94D10AAC019091810599237F +:105FF00021F02091160130E006C0209117018AE0BF +:10600000289F900111244217530708F485C08091FE +:106010008305C0918405D091850510918605811175 +:1060200007C0C11175C0D11173C0111171C074C006 +:106030009F3F19F09F5F90938105181624F40E94EA +:10604000EF2D809383058091830587FF05C00E9413 +:10605000EF2D8195809383051C1624F40E94EF2D6B +:10606000809384058091840587FF05C00E94EF2DF1 +:1060700081958093840560918305662331F1C091F9 +:106080008405CC2311F1062E000C770B880B990B9D +:106090000E94D93023E333E343E35FE30E948E3170 +:1060A0000E94A130609383056C2FCC0F770B880B77 +:1060B000990B0E94D93023E333E343E35FE30E946B +:1060C0008E310E94A130609384051D1624F40E9435 +:1060D000382E809385058091850587FF05C00E9435 +:1060E000382E819580938505111624F40E94382E50 +:1060F000809386058091860587FF05C00E94382E13 +:10610000819580938605DF91CF911F910C945E2F2E +:106110009F3F09F08FCFA0CFDF91CF911F910895BE +:10612000E2E8F5E085E0DF011D928A95E9F710923B +:1061300081051092800508950E94143108F481E0D1 +:1061400008950E94A8306894B1110C948331089589 +:106150000E94683188F09F5798F0B92F9927B7515E +:10616000B0F0E1F0660F771F881F991F1AF0BA95FB +:10617000C9F714C0B13091F00E948231B1E00895A6 +:106180000C948231672F782F8827B85F39F0B93F98 +:10619000CCF3869577956795B395D9F73EF49095AE +:1061A0008095709561957F4F8F4F9F4F0895E8942C +:1061B00009C097FB3EF490958095709561957F4F4F +:1061C0008F4F9F4F9923A9F0F92F96E9BB279395FD +:1061D000F695879577956795B795F111F8CFFAF40D +:1061E000BB0F11F460FF1BC06F5F7F4F8F4F9F4F3E +:1061F00016C0882311F096E911C0772321F09EE89C +:10620000872F762F05C0662371F096E8862F70E001 +:1062100060E02AF09A95660F771F881FDAF7880FDB +:106220009695879597F90895990F0008550FAA0B31 +:10623000E0E8FEEF16161706E807F907C0F0121699 +:106240001306E407F50798F0621B730B840B950B9C +:1062500039F40A2661F0232B242B252B21F40895F1 +:106260000A2609F4A140A6958FEF811D811D08958E +:1062700097F99F6780E870E060E008959FEF80ECF9 +:10628000089500240A94161617061806090608959C +:1062900000240A9412161306140605060895092E02 +:1062A0000394000C11F4882352F0BB0F40F4BF2B71 +:1062B00011F460FF04C06F5F7F4F8F4F9F4F0895B1 +:1062C00057FD9058440F551F59F05F3F71F04795A7 +:1062D000880F97FB991F61F09F3F79F0879508958C +:1062E000121613061406551FF2CF4695F1DF08C0AB +:1062F000161617061806991FF1CF869571056105C8 +:1063000008940895E894BB2766277727CB0197F96F +:1063100008950E94143108F48FEF08950E94A1316E +:106320000C944F310E94413138F00E94483120F0E6 +:10633000952311F00C9438310C943E3111240C94B7 +:1063400083310E94603170F3959FC1F3950F50E047 +:10635000551F629FF001729FBB27F00DB11D639F17 +:10636000AA27F00DB11DAA1F649F6627B00DA11DBD +:10637000661F829F2227B00DA11D621F739FB00D63 +:10638000A11D621F839FA00D611D221F749F3327D3 +:10639000A00D611D231F849F600D211D822F762F6C +:1063A0006A2F11249F5750409AF0F1F088234AF049 +:1063B000EE0FFF1FBB1F661F771F881F91505040B5 +:1063C000A9F79E3F510580F00C9438310C9483312D +:1063D0005F3FE4F3983ED4F3869577956795B7953C +:1063E000F795E7959F5FC1F7FE2B880F911D969556 +:1063F000879597F9089597FB072E16F4009407D018 +:1064000077FD09D00E94153207FC05D03EF4909527 +:1064100081959F4F0895709561957F4F0895EE0F78 +:10642000FF1F0590F491E02D0994AA1BBB1B51E1BD +:1064300007C0AA1FBB1FA617B70710F0A61BB70BF4 +:10644000881F991F5A95A9F780959095BC01CD0199 +:066450000895F894FFCF4F +:1064560000030000FF8719171AF419BE198A1901DB +:1064660072052808140A321E66756C6C006C6F770C +:106476000000000000D60500000000050400000032 +:10648600007704420392030604AD0344034503B0B8 +:1064960003B503BA0386038F03C203FEFF0000FBA6 +:1064A6000300000000DC0900000000490A5F1942F1 +:1064B6000A450A450A480A480A00000000790B20E6 +:1064C6000BD90B000000000A1642036915FC18617F +:1064D600155817450364154703404D3622F003A3AC +:0E64E600036D034B03D702F0020903220300EB :106800008800EA44E944E244040005000600070069 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC @@ -1677,7 +1639,7 @@ :1069600049000100010050004F0029004D004E0079 :1069700051000100010001000100010001000100BF :1069800001000100010001000100010001000100FF -:1069900001000100010001000100010001004D00A3 +:1069900000E00100010001000100010001004D00C4 :1069A0004A004E004B0001000100010001000100FF :1069B00001000100010001000100010001000100CF :1069C00001000100010001000100010001000100BF From c215713f13796b73c0e9d202f380f5237f92bec6 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 18 Sep 2019 16:51:44 +0900 Subject: [PATCH 52/71] usb_usb: Fix markdown notation in README --- converter/usb_usb/README.md | 79 ++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 44 deletions(-) diff --git a/converter/usb_usb/README.md b/converter/usb_usb/README.md index 468d56fa..7fb5df2e 100644 --- a/converter/usb_usb/README.md +++ b/converter/usb_usb/README.md @@ -1,7 +1,8 @@ USB to USB keyboard protocol converter ====================================== -See for detail and discussion. -https://geekhack.org/index.php?topic=69169.0 +See for detail and discussion here. + +- https://geekhack.org/index.php?topic=69169.0 Hardware requirement @@ -9,27 +10,16 @@ Hardware requirement There are two options. ### TMK USB-USB Converter -You can buy a fully assembled converter from me here. +You can buy a fully preassembled converter from me here. - https://geekhack.org/index.php?topic=69169.0 +- https://geekhack.org/index.php?topic=72052.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/ - -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 +### Arduino Leonardo + USB Host Shield +Buying Arduino Leonardo and USB Host Shield. +- https://store.arduino.cc/usa/leonardo +- https://store.arduino.cc/usa/arduino-usb-host-shield +- https://www.sparkfun.com/products/9947 Build firmware @@ -74,32 +64,33 @@ You can editor keymap and download firmware with web brwoser. Update ------ -2014/12/11 Added Hub support(confirmed with HHKB pro2) -2016/09/10 Unimap editor support -2016/10/18 Fix LED state at startup -2017/05/xx Fix startup code for FC660C(3eae475) -2018/02/xx Add Korean and Brazilian specific keys(ab6ddac,b2fa0ffa) -2018/07/xx Fix startup issue(c2ce617) -2018/10/xx Use fixed LUFA stack and update USB_Host_Shield_2.0 -2019/09/18 Add BTLD(bootlader jump) key to unimap +- 2014/12/11 Added Hub support(confirmed with HHKB pro2) +- 2016/09/10 Unimap editor support +- 2016/10/18 Fix LED state at startup +- 2017/05/xx Fix startup code for FC660C(3eae475) +- 2018/02/xx Add Korean and Brazilian specific keys(ab6ddac,b2fa0ffa) +- 2018/07/xx Fix startup issue(c2ce617) +- 2018/10/xx Use fixed LUFA stack and update USB_Host_Shield_2.0 +- 2019/09/18 Add BTLD(bootlader jump) key to unimap Resource -------- -USB Host Sheild 2.0 - https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino - https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-for-arduino-pro-mini -USB Host Sheild 2.0 source - https://github.com/felis/USB_Host_Shield_2.0 -Arduino USB Host Shield(with bootst converter) - http://arduino.cc/en/Main/ArduinoUSBHostShield -Arduino source - https://github.com/arduino/Arduino/hardware/arduino/{cores,variants} -Initial release of TMK USB-USB converter - https://geekhack.org/index.php?topic=33057.msg653549#msg653549 - http://deskthority.net/workshop-f7/is-remapping-a-usb-keyboard-using-teensy-possible-t2841-30.html#p74854 -Arduino-based hardware keyboard remapper - Colemak forum - http://forum.colemak.com/viewtopic.php?id=1561 -Teensy + Host Shield - http://www.pjrc.com/teensy/td_libs_USBHostShield.html +### USB Host Sheild 2.0 +- https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino + +### USB Host Sheild 2.0 source +- https://github.com/felis/USB_Host_Shield_2.0 + +### Arduino USB Host Shield(with bootst converter) +- http://arduino.cc/en/Main/ArduinoUSBHostShield + +### Arduino source +- https://github.com/arduino/Arduino/hardware/arduino/{cores,variants} + +### Arduino-based hardware keyboard remapper - Colemak forum +- http://forum.colemak.com/viewtopic.php?id=1561 + +### Teensy + Host Shield +- http://www.pjrc.com/teensy/td_libs_USBHostShield.html From 47775af20671e347e7e5545f63b42a51f0a4df04 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 1 Oct 2019 14:16:44 +0900 Subject: [PATCH 53/71] fc980c: Fix initial state of LED --- keyboard/fc980c/fc980c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/fc980c/fc980c.c b/keyboard/fc980c/fc980c.c index 59b1d526..6b8fa39b 100644 --- a/keyboard/fc980c/fc980c.c +++ b/keyboard/fc980c/fc980c.c @@ -51,7 +51,7 @@ void matrix_init(void) // LEDs on NumLock, CapsLock and ScrollLock(PB4, PB5, PB6) DDRB |= (1<<4) | (1<<5) | (1<<6); - PORTB |= (1<<4) | (1<<5) | (1<<6); + PORTB &= ~((1<<4) | (1<<5) | (1<<6)); // initialize matrix state: all keys off for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0x00; From 06c7ea297b3b5fdfecbcf8225737c496048b1ffd Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 1 Oct 2019 14:18:06 +0900 Subject: [PATCH 54/71] fc980c: Update firmware binary --- keyboard/fc980c/binary/fc980c.hex | 2407 +++++++++++++++-------------- 1 file changed, 1210 insertions(+), 1197 deletions(-) diff --git a/keyboard/fc980c/binary/fc980c.hex b/keyboard/fc980c/binary/fc980c.hex index 9ebc2999..c9890756 100644 --- a/keyboard/fc980c/binary/fc980c.hex +++ b/keyboard/fc980c/binary/fc980c.hex @@ -1,17 +1,17 @@ -:100000000C9440050C9487050C9487050C94870587 -:100010000C9487050C9487050C9487050C94870530 -:100020000C9487050C9487050C94A90C0C947B0DFB -:100030000C94831C0C9487050C9487050C948705FD -:100040000C9487050C9487050C9487050C94870500 -:100050000C9487050C94F71C0C9487050C94870569 -:100060000C9487050C9487050C9487050C948705E0 -:100070000C9487050C9487050C9487050C948705D0 -:100080000C9487050C9487050C9487050C948705C0 -:100090000C9487050C9487050C9487050C948705B0 -:1000A0000C9487050C9487050C948705E80D0A0EBF -:1000B000F80E0A0EF80E4F0E720EF80EC70EDA0E7C -:1000C000F011F0111F121F127D12BB12D514D5149E -:1000D000D412D514D513D513A914D514D514C0141E +:100000000C9444050C948C050C948C050C948C0574 +:100010000C948C050C948C050C948C050C948C051C +:100020000C948C050C948C050C94010D0C94D30D40 +:100030000C94FE1C0C948C050C948C050C948C0573 +:100040000C948C050C948C050C948C050C948C05EC +:100050000C948C050C94721D0C948C050C948C05DE +:100060000C948C050C948C050C948C050C948C05CC +:100070000C948C050C948C050C948C050C948C05BC +:100080000C948C050C948C050C948C050C948C05AC +:100090000C948C050C948C050C948C050C948C059C +:1000A0000C948C050C948C050C948C05400E620EFF +:1000B000550F620E550FA70ECA0E550F1F0F320FA8 +:1000C000721272129C129C12F7122B1339153915E9 +:1000D000421339152D142D14F3143915081526154E :1000E000507C7E8051634F621B7B35198029102C18 :1000F0007F37808059585A5B1D7A78060E8011052B :10010000343836805C575D5E070479090D3A0B0A76 @@ -20,1189 +20,1202 @@ :100130002E2D2731532A5455201F8021263B24235E :100140002F1312285F5660611A1E2B08253D1C22B2 :10015000444342454C4E494B80808080413E403F65 -:100160004B6579626F6172642073746172742E0AD8 -:100170000055534220636F6E666967757265642E21 -:100180000A000D0A696E69740A005B445D005B43F6 -:100190005D002C0346004300390038003000430066 -:1001A000200041006C007400200043006F006E00CE -:1001B000740072006F006C006C006500720000003B -:1001C0000A0354004D004B002E00000004030904F4 -:1001D00009028D00050100A032090400000103019D -:1001E00001000921110100012240000705810308D7 -:1001F000000A0904010001030102000921110100A4 -:1002000001224D000705820308000A0904020001CB -:1002100003000000092111010001223600070583B7 -:100220000308000A09040300020300000009211169 -:1002300001000122220007058403200001070504B4 -:10024000032000010904040001030000000921113A -:100250000100012239000705850320000112011069 -:100260000100000008EDFE0C9800010102000105EC -:10027000010906A101050719E029E71500250195E7 -:100280000875018102050819012905950575019177 -:10029000029501750391010507190029F71500253D -:1002A0000195F875018102C00631FF0974A10109A9 -:1002B00075150026FF009520750881020976150046 -:1002C00026FF00952075089102C005010980A10153 -:1002D000850216810026B7001A81002AB700751022 -:1002E00095018100C0050C0901A1018503160100DB -:1002F000269C021A01002A9C02751095018100C0FB -:1003000005010902A1010901A10005091901290539 -:10031000150025019505750181029501750381017F -:100320000501093009311581257F9502750881067F -:1003300009381581257F950175088106050C0A3855 -:10034000021581257F950175088106C0C005010948 -:1003500006A101050719E029E71500250195087593 -:10036000018102950175088101050819012905958A -:100370000575019102950175039101050719002981 -:10038000FF150026FF00950675088100C0636F6E9B -:1003900073756D65723A20253034580A007379738D -:1003A00074656D3A20253034580A000A0025303231 -:1003B0005820006B6579626F6172643A20004C4589 -:1003C000443A20253032580A00253032583A202548 -:1003D0003031366225730A00722F63203031323398 -:1003E0003435363738394142434445460A0064655E -:1003F0006C5F6B65795F6269743A2063616E277424 -:100400002064656C3A20253032580A006164645FCC -:100410006B65795F6269743A2063616E277420614D -:1004200064643A20253032580A004F6E6573686F55 -:10043000743A2074696D656F75740A00290A002585 -:1004400075002F002575005D28002564002000251B -:100450006400200025640020002564007C00253015 -:100460003258006D6F7573656B6579205B62746ED1 -:100470007C782079207620685D287265702F616312 -:100480006C293A205B006D6B5F776865656C5F7403 -:10049000696D655F746F5F6D6178203D2025640A2A -:1004A000006D6B5F776865656C5F6D61785F737019 -:1004B000656564203D2025640A006D6B5F74696D7D -:1004C000655F746F5F6D6178203D2025640A006D63 -:1004D0006B5F6D61785F7370656564203D20256496 -:1004E0000A006D6B5F696E74657276616C203D20E9 -:1004F00025640A006D6B5F64656C6179203D202581 -:10050000640A006D6B5F776865656C5F74696D6523 -:100510005F746F5F6D6178203D2025640A006D6B0C -:100520005F776865656C5F6D61785F737065656442 -:10053000203D2025640A006D6B5F74696D655F74F2 -:100540006F5F6D6178203D2025640A006D6B5F6DE3 -:1005500061785F7370656564203D2025640A006DD5 -:100560006B5F696E74657276616C203D2025640A4C -:10057000006D6B5F64656C6179203D2025640A0025 -:100580000A00257500363A20776865656C5F7469E6 -:100590006D655F746F5F6D61783A20000A002575A4 -:1005A00000353A20776865656C5F6D61785F7370C0 -:1005B0006565643A20000A00257500343A207469A4 -:1005C0006D655F746F5F6D61783A20000A00257574 -:1005D00000333A206D61785F73706565643A20007E -:1005E0000A00257500323A20696E74657276616C76 -:1005F000286D73293A20000A00257500313A2064DD -:10060000656C6179282A31306D73293A20000A0916 -:100610002D2056616C756573202D0A004D3E004DEE -:1006200025643E20003F0073657420646566617533 -:100630006C740A00433E200077686572652064652B -:100640006C74613A20637572736F723D25642C205F -:10065000776865656C3D25640A5365652068747428 -:10066000703A2F2F656E2E77696B697065646961CA -:100670002E6F72672F77696B692F4D6F7573655F8A -:100680006B6579730A000A092D204D6F7573656BD0 -:100690006579202D0A4553432F713A0971756974A4 -:1006A0000A313A0964656C6179282A31306D732901 -:1006B0000A323A09696E74657276616C286D732925 -:1006C0000A333A096D61785F73706565640A343A7C -:1006D0000974696D655F746F5F6D61780A353A09F9 -:1006E000776865656C5F6D61785F73706565640AD6 -:1006F000363A09776865656C5F74696D655F746F1C -:100700005F6D61780A0A703A097072696E742076BA -:10071000616C7565730A643A097365742064656673 -:1007200061756C74730A75703A092B310A646F77BE -:100730006E3A092D310A706775703A092B31300A0B -:100740007067646F776E3A092D31300A0A737065ED -:100750006564203D2064656C7461202A206D617899 -:100760005F7370656564202A202872657065617406 -:10077000202F2074696D655F746F5F6D6178290A41 -:10078000003F004D3E2000433E20004C25640A00FF -:100790000A092D20436F6E736F6C65202D0A455337 -:1007A000432F713A09717569740A6D3A096D6F7555 -:1007B00073656B65790A000A092D204D61676963CD -:1007C000202D0A643A0964656275670A783A0964FB -:1007D00065627567206D61747269780A6B3A0964A5 -:1007E00065627567206B6579626F6172640A6D3A44 -:1007F000096465627567206D6F7573650A763A09DD -:1008000076657273696F6E0A733A097374617475F1 -:10081000730A633A09636F6E736F6C65206D6F6462 -:10082000650A302D343A096C61796572302D3428AF -:100830004631302D4634290A506175733A09626F8A -:100840006F746C6F616465720A6E3A094E4B524F59 -:100850000A003F004E4B524F3A206F66660A004E28 -:100860004B524F3A206F6E0A0074696D65725F7269 -:10087000656164333228293A202530346C580A00E7 -:100880006B6579626F6172645F6E6B726F3A20257F -:10089000580A006B6579626F6172645F69646C65A8 -:1008A0003A2025580A006B6579626F6172645F7047 -:1008B000726F746F636F6C3A2025580A00686F730B -:1008C000745F6B6579626F6172645F6C65647328D5 -:1008D000293A2025580A000A092D2053746174759D -:1008E00073202D0A004743433A20342E392E3220FC -:1008F0004156522D4C4942433A20312E382E307306 -:10090000766E204156525F415243483A20617672DA -:10091000350A004F5054494F4E533A204C554641EA -:10092000204D4F5553454B45592045585452414B46 -:10093000455920434F4E534F4C4520434F4D4D4159 -:100940004E44204E4B524F204B45594D41505F5322 -:10095000454354494F4E20343039360A00425549F8 -:100960004C443A2063646634623531202831313A90 -:1009700031393A32372041707220323720323031EB -:1009800038290A005649443A2030784645454428DB -:10099000544D4B2E29205049443A20307839383074 -:1009A000432846433938304320416C7420436F6EEE -:1009B00074726F6C6C657229205645523A203078FB -:1009C000303130300A00444553433A20544D4B2EC9 -:1009D000206B6579626F617264206669726D776100 -:1009E000726520666F72204643393830430A000A28 -:1009F000092D2056657273696F6E202D0A000A6DED -:100A00006F7573653A206F66660A000A6D6F7573BD -:100A1000653A206F6E0A000A6B6579626F617264D5 -:100A20003A206F66660A000A6B6579626F617264CC -:100A30003A206F6E0A000A6D61747269783A206F0D -:100A400066660A000A6D61747269783A206F6E0AF0 -:100A5000000A64656275673A206F6E0A000A646571 -:100A60006275673A206F66660A000A0A626F6F74E1 -:100A70006C6F616465722E2E2E2000433E200000B4 -:100A800011241FBECFEFDAE0DEBFCDBF04B603FEF8 -:100A900027C08091A2029091A302A091A402B091DC -:100AA000A5028730904BA740B04BD1F41092A20220 -:100AB0001092A3021092A4021092A50214BE84B751 -:100AC000877F84BF0FB6F894A895809160008861F5 -:100AD00080936000109260000FBEE0E0F8E309959B -:100AE00011E0A0E0B1E0E4E0FBE402C005900D926B -:100AF000A833B107D9F722E0A8E3B1E001C01D9205 -:100B0000A23AB207E1F70E94CC090C9480250C941C -:100B10000000FF93EF93E0913801F0913901309795 -:100B200009F00995EF91FF910895FC0185918030BE -:100B300011F0EFDFFBCF0895FF27E0E230E247FF3F -:100B40000CC0419597FF09C0EDE2609570958095C6 -:100B50009095611D711D811D911D27FF02C021957A -:100B600030E350E2AA27660F771F881F991FAA1F3C -:100B7000A41710F0A41B63955A95A9F7AA3008F0A2 -:100B8000A95FA05DAF93F39561157105810591058E -:100B900041F7ED3211F4EF93F395F21718F43F9308 -:100BA000F395FBCF8F91B5DFFA95E1F70895E991C1 -:100BB000F9918591803021F0853219F0AADFF9CFC3 -:100BC000089520E0E89455915532C1F3503311F463 -:100BD000689455915A3348F4505390F3220F022EE3 -:100BE000220F220F200D250FF4CF0EF421958991AD -:100BF0009991533619F3533729F1533559F1BC0103 -:100C000088279927E8945C3621F489919991689412 -:100C10005591543639F446EF7EF077FF0DC08FEFD3 -:100C20009FEF0AC055374AE039F0583540E121F0CE -:100C3000523642E009F00895FF93EF937DDFEF9184 -:100C4000FF91B7CFFF93EF93FC0181918030B9F30F -:100C500060DFFBCFFF93EF9368DFF1CFDF93CF939C -:100C6000CDB7DEB72596A3DFCF91DF91089584B18C -:100C70008F6084B93E98469A3F9A8AB1806F8AB94C -:100C80005F9A479884B1806784B985B1806785B9D8 -:100C9000EAE4F1E01192119281E0EA35F807D1F728 -:100CA000EAE3F1E01192119281E0EA34F807D1F71A -:100CB0008AE491E090935D0180935C018AE391E086 -:100CC00090935B0180935A010895AF92BF92DF9297 -:100CD000EF92FF920F931F93CF93DF9380915A016E -:100CE00090915B0120915C0130915D0130935B013B -:100CF00020935A0190935D0180935C0100E010E025 -:100D0000C1E0D0E085B1807F802B85B9BE01002E87 -:100D100002C0660F771F0A94E2F75B01A094B094BB -:100D200040E050E08BB1282F2F78CA0134E0880FC3 -:100D3000991F3A95E1F7822B8BB92AE02A95F1F7B2 -:100D400000C0CA01880F991FA0915A01B0915B01A0 -:100D5000A80FB91F2D913C9126233723232B09F08F -:100D6000479AE5E3EA95F1F70000D6B45F98FAE018 -:100D7000FA95F1F700C0A0915C01B0915D017D0191 -:100D8000E80EF91EF701369B05C0208131812A212A -:100D90003B2104C020813181262B372B31832083D6 -:100DA00026B5ED2CF12C2D1518F026B530E004C039 -:100DB00026B530E021503F4F2E193F09263031052E -:100DC00068F020915A0130915B01280F391FF90119 -:100DD00020813181A80FB91F2D933C93FAE1FA9538 -:100DE000F1F700C047985F9A20EA2A95F1F74F5F24 -:100DF0005F4F4830510509F095CFA0915C01B0914B -:100E00005D01E0915A01F0915B0150962D913C916A -:100E10005197808991892817390751F00E94C11C88 -:100E200060935E0170935F01809360019093610114 -:100E30000F5F1F4F0031110509F064CF81E0DF9192 -:100E4000CF911F910F91FF90EF90DF90BF90AF90E7 -:100E5000089520915C0190915D01E22FF92FE80F38 -:100E6000F11DE80FF11D80819181089580FF02C07E -:100E70002C9A01C02C9881FF02C02D9A01C02D9898 -:100E800082FF02C02E9A08952E98089580918601BF -:100E900008959FB7F894109265019FBF90919902B1 -:100EA000943009F057C09091E9009F703091EC00A8 -:100EB000232F217030FD20E8922B24E02093E900BD -:100EC0002091EB0020FF43C02091EE0027FF3FC0A0 -:100ED00020916201222321F02091E80025FF37C0F4 -:100EE0001092620126E03091E80035FD15C0309186 -:100EF0009902343061F53091EB0035FD28C0215066 -:100F000021F481E08093620122C0EFE9FFE0319794 -:100F1000F1F700C00000E7CF8093F1008091E80076 -:100F200085FD0AC08091E80080FFFCCF8091E80039 -:100F30008E778093E80006C08FB7F89421E0209365 -:100F400065018FBF9F709093E90080E008959F70C6 -:100F50009093E9008FEF0895CF93DF9300D01F9215 -:100F6000CDB7DEB79C0180919902843019F593E0EA -:100F700099833B832A839093E9008FEF9091E80057 -:100F8000815095FD06C095ED9A95F1F7000081110D -:100F9000F5CF8091E80085FF0DC040E050E063E0B0 -:100FA00070E0CE0101960E94990A8091E8008E7748 -:100FB0008093E8000F900F900F90DF91CF910895EC -:100FC000CF93DF9300D01F92CDB7DEB72091990267 -:100FD000243021F522E029839B838A8383E0809358 -:100FE000E9008FEF9091E800815095FD06C095EDE6 -:100FF0009A95F1F700008111F5CF8091E80085FF07 -:101000000DC040E050E063E070E0CE0101960E9428 -:10101000990A8091E8008E778093E8000F900F90F6 -:101020000F90DF91CF910895209199022430F1F42F -:1010300022E02093E9002FEF3091E800215035FDA8 -:1010400006C035ED3A95F1F700002111F5CF20915A -:10105000E80025FF0BC040E050E065E070E00E9432 -:10106000990A8091E8008E778093E8000895CF93E5 -:10107000DF9320919902243009F048C0EC0180915F -:101080000A018823E1F080910B018823C1F085E0FB -:101090008093E9008FEF9091E800815095FD06C0A4 -:1010A0009AE29A95F1F700C08111F5CF8091E8009E -:1010B00085FF2CC040E050E060E270E017C081E0A6 -:1010C0008093E9008FEF9091E800815095FD06C074 -:1010D00095ED9A95F1F700008111F5CF8091E80028 -:1010E00085FF14C040E050E068E070E0CE010E944F -:1010F000990A8091E8008E778093E80080E2FE01F3 -:10110000A6E6B1E001900D928A95E1F7DF91CF91CB -:1011100008958EE891E00E949505809198028111D2 -:1011200009C00E942E0C0E948B0C8091E20084600A -:101130008093E20008958AE891E00E94950510925C -:10114000980208950895209163012F5F822F62E332 -:101150000E944625992319F0209363010895109267 -:10116000630180916501882371F180919902843037 -:1011700041F58091E9008F702091EC00922F9170E1 -:1011800020FD90E8892B94E09093E9009091EB008A -:1011900090FF14C09091EE0097FF10C09091E8006E -:1011A00095FF03C01092F100F9CF9091E80090FFF5 -:1011B00005C09091E8009E779093E8008F7080932F -:1011C000E90010926501089542E061EC81E00E941F -:1011D000A80B42E061EC82E00E94A80B42E061ECC7 -:1011E00083E00E94A80B42E261EC84E00E94A80B1D -:1011F00042E261EC85E00C94A80B80919B02833065 -:1012000009F455C030F4813071F0823009F48EC099 -:1012100008958A3009F47AC08B3009F460C08930AF -:1012200009F09CC020C080919A02813A09F096C0D2 -:101230008091E800877F8093E80080919E029091E2 -:101240009F02892B21F460E286E691E003C060E012 -:1012500080E090E070E00E94E40A8091E8008B77E3 -:101260008093E800089580919A02813209F076C057 -:1012700080919E0290919F02009719F0049709F0C7 -:101280006DC08091E800877F8093E8008091E8003E -:1012900082FD05C0809199028111F8CF5FC08091D5 -:1012A000F100809386018091E8008B7753C0809194 -:1012B0009A02813A09F052C080919E0290919F0259 -:1012C000892B09F04BC08091E800877F8093E8006C -:1012D0008091E80080FFFCCF80910A0136C08091A8 -:1012E0009A028132D9F580919E0290919F02892BBA -:1012F000A9F58091E800877F8093E8000E94DD0BCC -:1013000080919C0280930A010C94F71480919A02B8 -:10131000813221F58091E800877F8093E8000E9468 -:10132000DD0B80919D0280938701089580919A0240 -:10133000813AA1F48091E800877F8093E800809152 -:10134000E80080FFFCCF809187018093F1008091BD -:10135000E8008E778093E8000C94DD0B08950895E3 -:10136000089580918601809364011092860180E047 -:101370000E9436070E9492100C94F7140C94B10945 -:101380000E94411C80919702882329F00E946A1CC8 -:1013900081110C94830A089584B7877F84BF0FB6A8 -:1013A000F894A89580916000886180936000109205 -:1013B00060000FBE90E080E80FB6F8948093610063 -:1013C000909361000FBE89E497E00E94F81B82E8C9 -:1013D00091E00E9495050E94AF090E94D10F0E94E2 -:1013E0002E0C0E948B0C8091E20084608093E200BE -:1013F0007894809199028430E1F781ED97E001972C -:1014000039F0EFE9FFE03197F1F700C00000F7CFC6 -:1014100081E791E00E9495050E94D30F80E091E062 -:101420000E94100F80E691E00E9495050E94B0098D -:1014300080919902853019F40E94C009F9CF0E9469 -:10144000D70FF6CF0E947F1C8091640180938601A4 -:1014500008950C94220A292F332723303105C9F02F -:1014600064F42130310581F02230310509F043C0A8 -:101470008DE890E020ED31E042C021323105F1F0FD -:101480002232310541F137C082E190E02DE532E0B2 -:1014900036C099278130910541F08230910541F0A5 -:1014A000892B49F5ECECF1E005C0E0ECF1E002C07D -:1014B000E2E9F1E0849190E09F0121C06530D8F429 -:1014C000E62FF0E0EE0FFF1FED5DFE4F2081318132 -:1014D00089E090E014C0653070F470E0FB01EE0F1D -:1014E000FF1FE75EFE4F20813181FB01EC5EFE4F66 -:1014F000808190E004C080E090E020E030E0FA01DC -:1015000031832083089580E189BD82E189BD09B4DA -:1015100000FEFDCF8091D8008F7D8093D800809110 -:10152000E00082608093E0008091E00081FDFCCFCC -:101530000895CF92DF92EF92FF920F931F93CF9374 -:10154000DF93EC018B016A010E94FC0B811133C017 -:10155000C114D10439F0F60180819181081B190B67 -:10156000C80FD91FE12CF12C0115110519F180913B -:10157000E80085FD16C08091E8008E778093E80032 -:10158000C114D10449F0F60180819181E80EF91E61 -:10159000F182E08285E00FC00E94FC0B882321F3DA -:1015A0000AC089918093F10001501109FFEFEF1AF1 -:1015B000FF0ADACF80E0DF91CF911F910F91FF906A -:1015C000EF90DF90CF9008952091A0023091A1027A -:1015D0002617370748F06115710539F42091E800A6 -:1015E0002E772093E80001C0B90140E06115710534 -:1015F000A9F120919902222309F443C0253009F46E -:1016000042C02091E80023FD40C02091E80022FD67 -:1016100032C02091E80020FFE9CF4091F3002091F3 -:10162000F20030E0342BFC01CF016115710559F057 -:101630002830310540F481918093F10061507109A7 -:101640002F5F3F4FF1CF41E02830310509F040E0F6 -:101650002091E8002E772093E800C8CF4111C9CF30 -:101660000AC080919902882361F0853061F08091F1 -:10167000E80083FD0AC08091E80082FFF2CF80E09D -:10168000089582E0089583E0089581E0089520910F -:10169000A0023091A1022617370748F061157105A5 -:1016A00039F42091E8002E772093E80001C0B901B9 -:1016B000FC0120E06115710591F180919902882368 -:1016C00009F440C0853009F43FC08091E80083FDF3 -:1016D0003DC08091E80082FD2FC08091E80080FF2E -:1016E000E9CF2091F3008091F20090E0922B6115F8 -:1016F000710559F08830910540F424912093F10050 -:101700003196615071090196F2CF21E0089709F0F6 -:1017100020E08091E8008E778093E800CBCF211104 -:10172000CCCF0AC080919902882361F0853061F0A6 -:101730008091E80083FD0AC08091E80082FFF2CF2B -:1017400080E0089582E0089583E0089581E008959F -:10175000982F973058F59093E900981739F07091C9 -:10176000EC002091ED005091F00003C0242F762F63 -:1017700050E021FF19C03091EB003E7F3093EB0029 -:101780003091ED003D7F3093ED003091EB00316002 -:101790003093EB007093EC002093ED005093F00039 -:1017A0002091EE0027FF07C09F5FD3CF8F708093FB -:1017B000E90081E0089580E0089580919A0287FF12 -:1017C00011C08091E80082FD05C0809199028111CD -:1017D000F8CF11C08091E8008B770BC080919902FF -:1017E000882349F08091E80080FFF8CF8091E800DD -:1017F0008E778093E80008952091E4003091E50011 -:1018000095E64091EC00842F817040FF22C08091CA -:10181000E80080FD1CC080919902882391F08530FA -:1018200091F08091EB0085FD10C04091E400509153 -:10183000E5004217530729F39A01915011F784E00C -:10184000089582E0089583E0089581E0089580E09E -:1018500008954091E80042FFDECF08950E949C0C5D -:101860000E94A40CE0EEF0E0808181608083E8EDCE -:10187000F0E080818F77808319BCA7EDB0E08C9178 -:101880008E7F8C9380818F7E808310929802089542 -:101890000F931F93CF93DF930E949C0C0E94A40C84 -:1018A000C8EDD0E088818F778883888180688883BD -:1018B00088818F7D888319BC1092990210929502BD -:1018C000109297021092960200EE10E0F8018081CB -:1018D0008B7F808388818160888342E060E080E044 -:1018E0000E94A80BE1EEF0E080818E7F8083E2EE23 -:1018F000F0E0808181608083808188608083F8014E -:1019000080818E7F8083888180618883DF91CF9101 -:101910001F910F910895E8EDF0E080818F7E808324 -:10192000E7EDF0E080818160808384E082BF81E028 -:10193000809398020C94480CE8EDF0E080818E7F53 -:1019400080831092E20008951092DA001092E10074 -:1019500008951F920F920FB60F9211242F933F9369 -:101960004F935F936F937F938F939F93AF93BF93A7 -:10197000EF93FF938091E10082FF0BC08091E20022 -:1019800082FF07C08091E1008B7F8093E1000E947D -:10199000A3088091DA0080FF1FC08091D80080FFEB -:1019A0001BC08091DA008E7F8093DA008091D9008D -:1019B00080FF0DC080E189BD82E189BD09B400FED0 -:1019C000FDCF81E0809399020E94890805C019BC6F -:1019D000109299020E949B088091E10080FF19C03B -:1019E0008091E20080FF15C08091E2008E7F80939D -:1019F000E2008091E20080618093E2008091D80053 -:101A000080628093D80019BC85E0809399020E947F -:101A1000BE098091E10084FF30C08091E20084FF24 -:101A20002CC080E189BD82E189BD09B400FEFDCFF3 -:101A30008091D8008F7D8093D8008091E1008F7EC7 -:101A40008093E1008091E2008F7E8093E20080919C -:101A5000E20081608093E20080919502882311F07A -:101A600084E007C08091E30087FD02C081E001C0EF -:101A700083E0809399020E94290A8091E10083FF0C -:101A800029C08091E20083FF25C08091E100877F1B -:101A90008093E10082E080939902109295028091F8 -:101AA000E1008E7F8093E1008091E2008E7F809341 -:101AB000E2008091E20080618093E20042E060E019 -:101AC00080E00E94A80B8091F00088608093F00075 -:101AD0000E94A208FF91EF91BF91AF919F918F91CA -:101AE0007F916F915F914F913F912F910F900FBE1A -:101AF0000F901F9018951F920F920FB60F921124FE -:101B00002F933F934F935F936F937F938F939F9305 -:101B1000AF93BF93CF93DF93EF93FF93C091E9000F -:101B2000CF708091EC00D82FD17080FDD0E810925A -:101B3000E9008091F000877F8093F00078940E9404 -:101B4000BF0D1092E9008091F00088608093F00052 -:101B5000CD2BCF70C093E900FF91EF91DF91CF9132 -:101B6000BF91AF919F918F917F916F915F914F91B5 -:101B70003F912F910F900FBE0F901F9018951F93BC -:101B8000CF93DF93CDB7DEB7AA970FB6F894DEBF39 -:101B90000FBECDBFEAE9F2E088E08E0F9091F10030 -:101BA00091938E13FBCF0E94FD088091E80083FF84 -:101BB0001FC180919A0290919B02492F50E04A30B8 -:101BC000510508F015C1FA01EA5AFF4F0C94662539 -:101BD000803881F0823809F00BC180919E028F70AD -:101BE0008093E9008091EB0085FB882780F91092B3 -:101BF000E90006C08091960290919702911182604F -:101C00009091E800977F9093E8008093F100109204 -:101C1000F100C8C0282F2D7F09F0EAC0882319F0F1 -:101C2000823061F0E5C080919C02813009F0E0C013 -:101C3000933009F080E0809397022BC080919C0242 -:101C4000811127C080919E028F7009F4D1C08093CA -:101C5000E9002091EB0020FF1CC0933021F480911B -:101C6000EB00806214C09091EB0090619093EB00C8 -:101C700021E030E0A90102C0440F551F8A95E2F728 -:101C80004093EA001092EA008091EB008860809314 -:101C9000EB001092E9008091E800877F86C08111F7 -:101CA000A7C010919C021F778091E3008078812B60 -:101CB0008093E3008091E800877F8093E8000E9492 -:101CC000DD0B8091E80080FFFCCF8091E30080680D -:101CD0008093E300111102C082E001C083E0809391 -:101CE000990286C08058823008F082C080919C02A0 -:101CF00090919D028C3D53E0950779F583E08A83AE -:101D00008AE289834FB7F894DE01139620E03EE023 -:101D100051E2E32FF0E050935700E49120FF03C01D -:101D2000E295EF703F5FEF708E2F90E0EA3010F099 -:101D3000C79601C0C0968D939D932F5F243149F7BC -:101D40004FBF8091E800877F8093E8006AE270E0EF -:101D5000CE0101960E94E40A14C0AE014F5F5F4FAE -:101D600060919E020E942B0ABC01892B09F440C09D -:101D70009091E800977F9093E80089819A810E9472 -:101D8000470B8091E8008B778093E80031C0803862 -:101D900079F58091E800877F8093E8008091950233 -:101DA0008093F1008091E8008E778093E8000E9494 -:101DB000DD0B1EC081111CC090919C029230C0F4BA -:101DC0008091E800877F8093E800909395020E94BD -:101DD000DD0B80919502811106C08091E30087FDA3 -:101DE00002C081E001C084E0809399020E94E4086F -:101DF0008091E80083FF0AC08091E800877F80938C -:101E0000E8008091EB0080628093EB00AA960FB609 -:101E1000F894DEBF0FBECDBFDF91CF911F91089523 -:101E200090938D0180938C010895E0918C01F09145 -:101E30008D01309721F00190F081E02D099480E030 -:101E40000895EF92FF920F931F93CF93DF93E0914A -:101E50008C01F0918D013097B1F18C010280F381FA -:101E6000E02D09958091840282FF2DC080FF04C07F -:101E700083EB93E00E949505E80110E28DEAE82EDD -:101E800083E0F82E8091840280FF0BC088811F922E -:101E90008F93FF92EF920E942E060F900F900F905B -:101EA0000F90115021961111EDCF8091840280FF87 -:101EB0000AC08BEA93E0DF91CF911F910F91FF90C1 -:101EC000EF900C949505DF91CF911F910F91FF90AA -:101ED000EF900895E0918C01F0918D01309721F001 -:101EE0000480F581E02D09940895CF93DF93EC01F0 -:101EF00080918A0190918B01C817D90709F1D0937D -:101F00008B01C0938A01E0918C01F0918D01309793 -:101F1000B9F00680F781E02DCE0109958091840209 -:101F200082FF0EC080FF0CC0DF93CF938DE993E05A -:101F30009F938F930E942E060F900F900F900F90FB -:101F4000DF91CF910895CF93DF93EC0180918801C9 -:101F500090918901C817D90709F1D0938901C093DD -:101F60008801E0918C01F0918D013097B9F00084E7 -:101F7000F185E02DCE0109958091840282FF0EC08B -:101F800080FF0CC0DF93CF938DE893E09F938F93F6 -:101F90000E942E060F900F900F900F90DF91CF911F -:101FA00008950C9493100E94AC1C0C9437068F92E9 -:101FB0009F92AF92BF92CF92DF92EF92FF920F93D8 -:101FC0001F93CF93DF9300D000D01F92CDB7DEB721 -:101FD0000E9465060FE811E0F12C8F2D0E94290761 -:101FE0004C01F801A080B180A826B926A114B10443 -:101FF00039F4F3940E5F1F4FF8E0FF12EECF39C0B3 -:102000008091840281FD0E949410E12CCC24C39421 -:10201000D12CC6018A219B21892B21F1E982FA82E8 -:1020200021E0C60188219921892B09F420E02B8326 -:102030000E94B51C8160782F9D838C8349815A81D1 -:102040006B818D810E94CA1049815A816B817C818C -:102050008D810E942E1CF801808191818C259D2507 -:1020600091838083E394CC0CDD1CF0E1EF12D1CF9F -:10207000C0CF8FEF89838A831B820E94B51C816049 -:10208000782F9D838C8349815A816B818D810E9439 -:10209000CA100E942D1C0E94761F10918E010E9472 -:1020A000150F181759F10E94150F80938E0190910A -:1020B000840292FF0EC090FF0CC01F928F938EEB94 -:1020C00093E09F938F930E942E060F900F900F9096 -:1020D0000F9080918E010F900F900F900F900F90A6 -:1020E000DF91CF911F910F91FF90EF90DF90CF90F4 -:1020F000BF90AF909F908F900C943F1C0F900F90CB -:102100000F900F900F90DF91CF911F910F91FF9043 -:10211000EF90DF90CF90BF90AF909F908F900895F9 -:102120000C94360708950895EF92FF920F931F9332 -:10213000CF93DF9388ED93E00E949505C0E0D0E057 -:102140008DE2E82E81E0F82E09EC13E08C2F0E943E -:1021500029070E94131CFF92EF929F938F93DF93A6 -:10216000CF931F930F930E942E0621968DB79EB793 -:1021700008960FB6F8949EBF0FBE8DBFC830D1052C -:1021800029F7DF91CF911F910F91FF90EF90089564 -:1021900008950895CF93DF93CDB7DEB72B970FB691 -:1021A000F894DEBF0FBECDBF942F4F83252F5887E5 -:1021B00069877A878B874A855B85452B21F02F3F7E -:1021C00009F59F3FF9F4DE01119686E0FD011192B9 -:1021D0008A95E9F785E0FE01379601900D928A9580 -:1021E000E1F749815A816B817C818D819E810E94BA -:1021F000DC172B960FB6F894DEBF0FBECDBFDF9174 -:10220000CF9108954F81588569857A858B850E9485 -:102210002E1CD9CFCF93882309F465C0C82F8CEF2B -:102220008C0F813A20F080E58C0F8E3248F48C2F91 -:102230000E94C022811157C08C2F0E94B41A0CC07A -:1022400080E28C0F883058F4C77081E001C0880F9D -:10225000CA95EAF70E945F1BCF910C94A31B8BE5F4 -:102260008C0F833078F4C53A29F0C63A31F083E810 -:1022700090E005C081E890E002C082E890E0CF9154 -:102280000C94750F88E58C0F853168F5C83A89F094 -:10229000C93A91F0CA3A99F0CB3AA1F0CC3AA9F0F8 -:1022A000CD3AB1F0CE3AB9F0CF3AC1F080E090E04B -:1022B00017C082EE90E014C089EE90E011C08AEE63 -:1022C00090E00EC085EB90E00BC086EB90E008C07C -:1022D00083EB90E005C084EB90E002C087EB90E0D8 -:1022E000CF910C94A30FCF910895882349F19CEFCF -:1022F000980F913A20F090E5980F9E3218F40E94C2 -:10230000071B0DC090E2980F983058F4877091E049 -:1023100001C0990F8A95EAF7892F0E94651B0C94DA -:10232000A31B9BE5980F933020F480E090E00C9481 -:10233000750F885A853120F480E090E00C94A30F4B -:102340000895882321F00E945F1B0C94A31B08951D -:10235000882321F00E94651B0C94A31B0895BF9253 -:10236000CF92DF92EF92FF920F931F93CF93DF9361 -:1023700000D000D000D0CDB7DEB725E0FC01DE01F3 -:10238000119601900D922A95E1F7FC01408151814F -:10239000028163817481258122952F7061157105F9 -:1023A00009F403C35F3F19F44F3F09F4FEC26C0107 -:1023B000862F7D836C83602F782F8D812E830E94E2 -:1023C000381A182FB92E0E94371A0E942719EB2DA0 -:1023D000E295EF70F0E0E05AFF4F2E810C946625F5 -:1023E0008B2D807F9B2D9F70F92E882319F0F294FE -:1023F00090EFF922002349F0FF2009F483C28F2DCA -:102400000E94721B0E94A31B7DC2812F0E94751126 -:10241000FF2009F4CAC28F2D0E94781B26960FB6A2 -:10242000F894DEBF0FBECDBFDF91CF911F910F910A -:10243000FF90EF90DF90CF90BF900C94A31B8B2D5B -:10244000807F9B2D9F70F92E803219F0F29480EFDF -:10245000F822112319F0113009F12AC00023B1F03C -:102460008F2D222351F1213041F526960FB6F89495 -:10247000DEBF0FBECDBFDF91CF911F910F91FF90B7 -:10248000EF90DF90CF90BF900C94821B222319F025 -:10249000213009F48AC20E948B1B2DC00023F1F069 -:1024A000263008F082C20E945C1B8F2129F023C0D5 -:1024B0000023F9F0211116C08F2D26960FB6F8943F -:1024C000DEBF0FBECDBFDF91CF911F910F91FF9067 -:1024D000EF90DF90CF90BF900C94A111253008F0C1 -:1024E00064C209C0F601858180FF0CC28F708583AC -:1024F000E3CF21111CC28F2D83C12B2D269526954C -:10250000237030E02115310521F021303105D1F063 -:102510004CC2002321F0812F9B2D937002C080E0DC -:1025200090E026960FB6F894DEBF0FBECDBFDF91C8 -:10253000CF911F910F91FF90EF90DF90CF90BF90C0 -:102540000C94750F002321F0812F9B2D937002C0F6 -:1025500080E090E026960FB6F894DEBF0FBECDBFA8 -:10256000DF91CF911F910F91FF90EF90DF90CF906F -:10257000BF900C94A30F812F002319F00E94FC1D23 -:1025800002C00E94641E26960FB6F894DEBF0FBEEE -:10259000CDBFDF91CF911F910F91FF90EF90DF9012 -:1025A000CF90BF900C94E91E8B2D837009F07BC0F7 -:1025B0000111FBC1812F829586958770880F880F46 -:1025C000912F9F70C92ED12CE12CF12C082E04C024 -:1025D000CC0CDD1CEE1CFF1C0A94D2F714FF12C0B9 -:1025E0004FE050E060E070E004C0440F551F661FEC -:1025F000771F8A95D2F7CB01BA01609570958095C7 -:10260000909503C060E070E0CB012B2D26952695B8 -:102610002370422F50E042305105D9F0433051052C -:1026200069F16C297D298E299F294130510551F18D -:1026300026960FB6F894DEBF0FBECDBFDF91CF91C7 -:102640001F910F91FF90EF90DF90CF90BF900C946F -:102650004C196C297D298E299F2926960FB6F8944E -:10266000DEBF0FBECDBFDF91CF911F910F91FF90C5 -:10267000EF90DF90CF90BF900C9466190E944C1998 -:10268000C701B60126960FB6F894DEBF0FBECDBFC8 -:10269000DF91CF911F910F91FF90EF90DF90CF903E -:1026A000BF900C943219002319F08B2D817001C05A -:1026B0008695882309F479C1812F82958695877044 -:1026C000880F880F912F9F70C92ED12CE12CF12CEF -:1026D000082E04C0CC0CDD1CEE1CFF1C0A94D2F7A3 -:1026E00014FF12C04FE050E060E070E004C0440FFF -:1026F000551F661F771F8A95D2F7CB01BA016095E7 -:1027000070958095909503C060E070E0CB012B2D13 -:10271000269526952370422F50E042305105D9F07E -:102720004330510569F16C297D298E299F2941305B -:10273000510551F126960FB6F894DEBF0FBECDBFFE -:10274000DF91CF911F910F91FF90EF90DF90CF908D -:10275000BF900C94131A6C297D298E299F292696E7 -:102760000FB6F894DEBF0FBECDBFDF91CF911F91A2 -:102770000F91FF90EF90DF90CF90BF900C94251AAF -:102780000E94131AC701B60126960FB6F894DEBF51 -:102790000FBECDBFDF91CF911F910F91FF90EF90B2 -:1027A000DF90CF90BF900C94011A103FD1F128F424 -:1027B00080E4810F803250F0A0C0123F09F462C063 -:1027C00008F44BC0133F09F472C097C0F12FF071A9 -:1027D000FF2E8B2D8F71002351F00E949A19812FAB -:1027E000FF2019F08295807F68CE8F7066CE0E94A0 -:1027F000BB19812FFF2019F08295807F01C08F7057 -:1028000026960FB6F894DEBF0FBECDBFDF91CF91F5 -:102810001F910F91FF90EF90DF90CF90BF900C949D -:10282000A8110023B1F0253008F0BFC08B2D8F71A7 -:1028300026960FB6F894DEBF0FBECDBFDF91CF91C5 -:102840001F910F91FF90EF90DF90CF90BF900C946D -:10285000E019263008F0A9C0E9CF0023A9F08B2D9C -:102860008F7126960FB6F894DEBF0FBECDBFDF91F5 -:10287000CF911F910F91FF90EF90DF90CF90BF907D -:102880000C949A19002359F38B2D8F7126960FB64D -:10289000F894DEBF0FBECDBFDF91CF911F910F9196 -:1028A000FF90EF90DF90CF90BF900C94BB19002366 -:1028B00099F08B2D8F7126960FB6F894DEBF0FBE60 -:1028C000CDBFDF91CF911F910F91FF90EF90DF90DF -:1028D000CF90BF900C94851926960FB6F894DEBF62 -:1028E0000FBECDBFDF91CF911F910F91FF90EF9061 -:1028F000DF90CF90BF900C9480190023A9F0222381 -:1029000009F4ADCF812F26960FB6F894DEBF0FBE27 -:10291000CDBFDF91CF911F910F91FF90EF90DF908E -:10292000CF90BF900C940A11222309F4ADCF812FD0 -:1029300026960FB6F894DEBF0FBECDBFDF91CF91C4 -:102940001F910F91FF90EF90DF90CF90BF900C946C -:1029500075114B2D4F70612FC6010E94761D269672 -:102960000FB6F894DEBF0FBECDBFDF91CF911F91A0 -:102970000F91FF90EF90DF90CF90BF900C94801854 -:102980004B2D4F70612FC60126960FB6F894DEBF0F -:102990000FBECDBFDF91CF911F910F91FF90EF90B0 -:1029A000DF90CF90BF900C94791D26960FB6F894C7 -:1029B000DEBF0FBECDBFDF91CF911F910F91FF9072 -:1029C000EF90DF90CF90BF9008950E947F1B0E94F0 -:1029D0004E1B0E94A31B0E941B200E94E91E80E048 -:1029E00090E00E94750F80E090E00C94A30F0E948D -:1029F0006F1B0C94E514CF93DF9300D000D01F928F -:102A0000CDB7DEB7942F4983252F5A836B837C8300 -:102A10008D834C815D81452B39F12F3F11F49F3F10 -:102A200019F149815A816B817C818D810E94381A0C -:102A3000292F22952F7030E02C30310504F52A30F3 -:102A400031055CF4225031092230310568F4853AB1 -:102A500080F4843090F4823080F0883E38F4803EF8 -:102A600060F48450813A48F080E014C0803FE1F780 -:102A700004C090E2980F983080F781E00BC02C30B2 -:102A8000310521F493FB882780F904C02F303105EC -:102A9000C9F3EACF0F900F900F900F900F90DF9136 -:102AA000CF910895CF93DF9300D000D01F92CDB780 -:102AB000DEB70F900F900F900F900F90DF91CF9196 -:102AC0000895CF93DF9300D000D000D0CDB7DEB70C -:102AD00026960FB6F894DEBF0FBECDBFDF91CF9123 -:102AE00008951F93CF93DF93C0919F0116E08091CB -:102AF000A001C81799F0D0E01C9FF0011D9FF00DB8 -:102B00001124EF55FE4F4081518162817381848190 -:102B100095810E9461152196C770E9CFDF91CF9111 -:102B20001F9108954091D1015091D2016091D3013C -:102B30007091D4018091D5019091D6010C946115CA -:102B40008091D60182958F7009F054C08091D30195 -:102B5000882309F44FC080919F01A091A00160914A -:102B6000D1017091D2014091D4015091D501B6E0CC -:102B70008A1709F43FC090E041155105C1F17F3F2C -:102B800011F46F3FA1F1B89FF001B99FF00D11242E -:102B9000EF55FE4F218172132AC02081621327C096 -:102BA0002281211124C0238134812417350710F498 -:102BB00021503109241B350B2C323140C0F42091B7 -:102BC000D6012F7020612093D60126E0289FF001C6 -:102BD000299FF00D1124EA55FE4F80818F7080618E -:102BE000808381ED91E00E94AF110C9471150196E4 -:102BF0008770BECF0895BF92CF92DF92EF92FF927F -:102C00000F931F93CF93DF93CDB7DEB761970FB6C6 -:102C1000F894DEBF0FBECDBF7C0185E0F701DE0179 -:102C20001D9601900D928A95E1F7D7014C9111966E -:102C30005C9111971296DC90129713960D911C914E -:102C400014973091D1016091D2018091D40190917B -:102C5000D501009709F47FC16F3F19F43F3F09F494 -:102C60007AC1B090D301BB2009F4CAC02091D6012B -:102C70000817190750F0F801E81BF90BCF01CC2415 -:102C8000C3948C329140D0F009C080959095800F0C -:102C9000911FCC24C3948C32914080F0C12C207FB2 -:102CA00009F0CCC0702F198B088B6D2D89890E947B -:102CB000521581ED91E00E94AF11B6C0822F807F46 -:102CC00009F047C0651314C0341312C0D11010C0EE -:102CD0002F7020612093D6010E94921581ED91E022 -:102CE0000E94AF118091D601D70115968C932FC009 -:102CF0000115110519F15F3F11F44F3FF9F0CD2C8B -:102D0000D1101CC080919F012091A00136E0821754 -:102D100009F45CC090E0389FF001399FF00D112458 -:102D2000EF55FE4F6181561306C06081461303C004 -:102D30006281611103C001968770E9CFCD2CDD203F -:102D400009F429C18091D60181608093D601C12CFC -:102D500022C1651308C0341306C0D11004C080918D -:102D6000D601D701CCC04D875E87DF86702F198BC7 -:102D7000088B6D2D89890E94FB148823E9F1DD20E1 -:102D8000D9F12091D601822F82958F7090E0029721 -:102D900074F08091D1019091D20198878F83198628 -:102DA0001B870A872C87CE0107960E94AF1186E009 -:102DB000F701A1EDB1E001900D928A95E1F70E9433 -:102DC000A0150E949215CC24C394E5C0702F198BD6 -:102DD000088B60E089890E94381A292F22952F706C -:102DE00030E0223031050CF0CAC09F7009F0C4C039 -:102DF000805E883008F4CFC0C7010E94AF11E3CFD6 -:102E00000817190708F456C0F801E81BF90BCF01A1 -:102E10008C32914008F456C0C12C702F198B088B4E -:102E20006D2D89890E945215E1EDF1E086E0DF0108 -:102E30001D928A95E9F70E949215ADC0651314C0E2 -:102E4000341312C0D11010C08091D601F7018583D0 -:102E5000C7010E94AF1186E0E1EDF1E0DF011D92B4 -:102E60008A95E9F7CB2C97C04D875E87DF86702F58 -:102E7000198B088B6D2D89890E94FB14882309F416 -:102E8000BBCFDD2009F4B8CF2091D601822F8295E7 -:102E90008F7090E002970CF48ACF8091D1019091CD -:102EA000D2019A8389831B821D830C832E83CE01DA -:102EB00001967BCF80959095800F911F8C32914029 -:102EC00008F0AACFCD2CDD2009F496CF65132EC0D3 -:102ED00034132CC02091D60120FD1FC0822F829573 -:102EE0008F70D9F0D70115962C9315978F3049F034 -:102EF0008F5F982F9295907F822F8F70892B1596D8 -:102F00008C93C7010E94AF1186E0F701A1EDB1E0FB -:102F100001900D928A95E1F78ECF86E0F701A1ED41 -:102F2000B1E001900D928A95E1F735C04D875E873B -:102F3000DF86702F198B088B6D2D89890E94FB14F9 -:102F4000811135CF8091D60181608093D601C70170 -:102F50000E94AF1120C0DD2009F44ECF4D875E875F -:102F6000DF86702F198B088B6D2D89890E94FB14C9 -:102F7000882309F441CF1BCF81113ACF0CC02430F4 -:102F800031050CF039CF9F7009F432CFF7019581EC -:102F9000907F09F02DCF8C2D61960FB6F894DEBF8F -:102FA0000FBECDBFDF91CF911F910F91FF90EF909A -:102FB000DF90CF90BF9008951F93CF93DF93CDB74D -:102FC000DEB72C970FB6F894DEBF0FBECDBF4F8390 -:102FD000588769877A878B879C87CE0107960E94DE -:102FE000FB15882369F08F8198852A853B85232BE3 -:102FF000F1F19F3F09F063C08F3F09F060C037C017 -:1030000086E0FE013796DE01119601900D928A95B9 -:10301000E1F76F817885EA85FB85309741F17F3F45 -:1030200011F46F3F21F12091A00130E0C901019618 -:103030008770992740919F0150E08417950709F404 -:1030400047C069837A83FD83EC8396E0929FD00129 -:10305000939FB00D1124AF55BE4FFE0131960190E4 -:103060000D929A95E1F78093A0010E94711516E0E8 -:1030700080919F019091A0018917C1F1189FC00113 -:1030800011248F559E4F0E94FB15882379F1E09102 -:103090009F011E9FF0011124EF55FE4F4081518189 -:1030A00062817381848195810E94611580919F0165 -:1030B00090E001968770992780939F01D9CF4F8127 -:1030C000588569857A858B859C850E946115CFCF4F -:1030D0000E94F7141092A00110929F01E1EDF1E01F -:1030E00086E0DF011D928A95E9F7C1CF2C960FB6D5 -:1030F000F894DEBF0FBECDBFDF91CF911F91089531 -:10310000DF92EF92FF920F931F93CF93DF93FC0117 -:10311000892B09F48AC0E12CF12CDD24D394EF0132 -:1031200021968491853709F461C058F4843708F0FA -:103130004EC0843008F06AC08130D1F0823071F125 -:1031400074C0883709F45DC050F4863709F455C05F -:10315000873709F06AC08E2D0E946C1B54C09CE713 -:10316000980F903708F061C08F770E94751150C09A -:103170008F010E5F1F4FFE01849190E2980F9830EF -:1031800050F48770FD2D01C0FF0F8A95EAF78F2F4D -:103190000E94721B14C00E940A1113C08F010E5F9F -:1031A0001F4FFE01C49180E28C0F883060F4C7701D -:1031B0008D2D01C0880FCA95EAF70E94781B0E94E6 -:1031C000A31BE80125C08C2F0E947511FACF9F0127 -:1031D0002E5F3F4FFE01C491CC2369F08FE99FE041 -:1031E0000197F1F700C00000C150F6CF9F012E5F9C -:1031F0003F4FFE01F490E9010BC00E945C1BE82EDA -:1032000007C00E946F1B0E94A31B02C00E940A11EC -:103210008F2D882341F0EFE9FFE03197F1F700C0EF -:1032200000008150F6CFFE017ACFDF91CF911F9140 -:103230000F91FF90EF90DF90089560935702709385 -:1032400058028093590290935A020C943E1C0895A0 -:1032500060935B0270935C0280935D0290935E02C8 -:103260000C943D1C0F931F9300915B0210915C0224 -:1032700020915D0230915E02602B712B822B932B8B -:1032800060935B0270935C0280935D0290935E0298 -:103290001F910F910C943D1C0F931F9300915B02A3 -:1032A00010915C0220915D0230915E0260237123D7 -:1032B0008223932360935B0270935C0280935D0290 -:1032C00090935E021F910F910C943D1C0F931F93DE -:1032D00000915B0210915C0220915D0230915E02D0 -:1032E000602771278227932760935B0270935C02AB -:1032F00080935D0290935E021F910F910C943D1C90 -:1033000060E070E0CB010C941D190F931F9341E016 -:1033100050E060E070E08A019B0104C0000F111FC3 -:10332000221F331F8A95D2F7C901B8011F910F914F -:103330000C941D190F931F9341E050E060E070E082 -:1033400004C0440F551F661F771F8A95D2F78091DE -:10335000570290915802A0915902B0915A028A01E5 -:103360009B01082B192B2A2B3B2BC901B8011F915C -:103370000F910C941D190F931F9341E050E060E0F2 -:1033800070E004C0440F551F661F771F8A95D2F75F -:103390004095509560957095809157029091580294 -:1033A000A0915902B0915A028A019B010823192366 -:1033B0002A233B23C901B8011F910F910C941D19B9 -:1033C0000F931F9341E050E060E070E004C0440FB1 -:1033D000551F661F771F8A95D2F7809157029091EB -:1033E0005802A0915902B0915A028A019B01082704 -:1033F00019272A273B27C901B8011F910F910C9467 -:103400001D190F931F93009157021091580220919C -:10341000590230915A02602B712B822B932B1F91F2 -:103420000F910C941D190F931F9300915702109147 -:1034300058022091590230915A026023712382234D -:1034400093231F910F910C941D190F931F930091BB -:103450005702109158022091590230915A02602768 -:103460007127822793271F910F910C941D1908959E -:103470008F929F92AF92BF92DF92EF92FF920F9343 -:103480001F93CF93DF9300D000D01F92CDB7DEB74C -:103490006B837C838D838A018C819D81892B21F0B4 -:1034A0001F3F29F44F3F19F480E090E04CC08B811E -:1034B0008823C9F180905B0290905C02A0905D022D -:1034C000B0905E028091570290915802A0915902EB -:1034D000B0915A02882A992AAA2ABB2A8FE1E82E9B -:1034E000F12CD501C4010E2C04C0B695A795979573 -:1034F00087950A94D2F780FF07C0DE2CB8018E2D85 -:103500000E944C1D019729F481E0E81AF10848F760 -:10351000D12C80E1189FF0011124E00FF11DE95238 -:10352000FE4FD08209C080E1189FF0011124E00F06 -:10353000F11DE952FE4FD08009831A8369817A8197 -:103540008D2D0E944C1D0F900F900F900F900F909B -:10355000DF91CF911F910F91FF90EF90DF90BF907F -:10356000AF909F908F90089590910A01992321F038 -:1035700090910B01911109C020910C0130910D0126 -:10358000F90132969FEF40E030C0982F96959695BE -:1035900096959F31A0F4E0910C01F0910D01E90F97 -:1035A000F11D877021E030E0A90102C0440F551FD2 -:1035B0008A95E2F7CA019181892B818308959091C0 -:1035C000840290FF23C01F928F938CE094E09F931E -:1035D0008F930E942E060F900F900F900F900895DA -:1035E0009F3F39F04F5F4E3141F051915813F8CF62 -:1035F0000DC05111F7CF942FF5CF9F3F39F0F9014E -:10360000E90FF11D97FDFA95828308950895909131 -:103610000A01992321F090910B01911109C0209189 -:103620000C0130910D01F9013296205E3F4F30C000 -:10363000982F9695969596959F31A8F4E0910C0158 -:10364000F0910D01E90FF11D877021E030E0A90133 -:1036500002C0440F551F8A95E2F7CA0180959181F7 -:103660008923818308959091840290FF16C01F9250 -:103670008F938EEE93E09F938F930E942E060F9070 -:103680000F900F900F9008953196E217F30729F0ED -:1036900090819813F9CF1082F7CF089581E090E0E0 -:1036A000E0910C01F0910D01E80FF91F10820196D5 -:1036B00080329105A9F70895809183020895909131 -:1036C0008302892B809383020895809590918302D1 -:1036D0008923809383020895809383020895109232 -:1036E0008302089590918202892B8093820208952B -:1036F000809590918202892380938202089510928E -:1037000082020895809361020E94B51C909360022A -:1037100080935F02089510926102109260021092ED -:103720005F02089580910C0190910D01FC0131968A -:103730009C01205E3F4F80E0919191118F5FE217D5 -:10374000F307D1F70895E0910C01F0910D018091FC -:1037500083028083E0910C01F0910D0190818091B2 -:103760008202892B8083809161028823D9F10E9493 -:10377000B51C20915F02309160028217930748F0D8 -:103780000E94B51C20915F0230916002821B930B56 -:103790000AC00E94B51C20915F0230916002209502 -:1037A0003095820F931F8C32914070F0809184028B -:1037B00080FF08C08AE294E09F938F930E942E06B8 -:1037C0000F900F900E948B1BE0910C01F0910D0166 -:1037D000908180916102892B80830E94921B8111CC -:1037E0000E948B1B80910C0190910D010C94210F74 -:1037F000909339018093380108958295982F9C7C8D -:10380000392F36953695282F237344E0249FC00125 -:103810001124932F982B292F2A7A2695892F857585 -:10382000880F822B08951F93CF93DF931F92CDB7FC -:10383000DEB799830E94FD1B182F9981892F0E9462 -:10384000FD1B212F30E0322F2227A901482BCA016E -:103850000F90DF91CF911F9108950895CF93DF933B -:1038600000D000D01F92CDB7DEB70F900F900F9011 -:103870000F900F90DF91CF910895089508950C94C3 -:10388000901080919902843021F11092850220E4F9 -:1038900088E190E00FB6F894A895809360000FBE81 -:1038A0002093600083B7817F846083BF83B781608A -:1038B00083BF7894889583B78E7F83BF0FB6F894C3 -:1038C000A8958091600088618093600010926000EC -:1038D0000FBE0895CF930E94C8100E9465060E94F3 -:1038E000C910C0E08C2F0E942907892B29F4CF5FD3 -:1038F000C830C1F780E001C081E0CF9108950E94F7 -:1039000092100C94F7141F920F920FB60F9211247D -:103910008F939F93AF93BF9380918502811113C0C2 -:103920008091860290918702A0918802B0918902CD -:103930004196A11DB11D8093860290938702A093AA -:103940008802B0938902BF91AF919F918F910F90A0 -:103950000FBE0F901F90189582E084BD93E095BD37 -:103960009AEF97BD80936E0008952FB7F8948091D9 -:10397000860290918702A0918802B09189022FBFA0 -:1039800008952FB7F8946091860270918702809114 -:103990008802909189022FBF0895CF92DF92EF9213 -:1039A000FF920F931F932FB7F89440918602509186 -:1039B000870260918802709189022FBF6A017B01A2 -:1039C000EE24FF248C0120E030E0C016D106E20690 -:1039D000F30610F4415051099A01281B390BC90113 -:1039E0001F910F91FF90EF90DF90CF9008951F925D -:1039F0000F920FB60F9211248F939F93AF93BF93A3 -:103A00008091860290918702A0918802B0918902EC -:103A10000196A11DB11D8093860290938702A09309 -:103A20008802B0938902BF91AF919F918F910F90BF -:103A30000FBE0F901F9018950E942E0CF8942FEF38 -:103A400087EA91E6215080409040E1F700C00000F5 -:103A500087E090EBDC018093A2029093A302A093F5 -:103A6000A402B093A5029CE088E10FB6F894A89553 -:103A7000809360000FBE90936000FFCF20E1929F83 -:103A8000F0011124E80FF11DE052FF4F9491892FAE -:103A90008F7092959F700895CF93C82FCB010E948D -:103AA0003E1D282F30E080E1989FA0011124422B79 -:103AB000532B4038510519F480E090E015C0977001 -:103AC000E92FF0E088E0C89FE00DF11D112484E0AB -:103AD000EE0FFF1F8A95E1F7E20FF31FEE0FFF1FB6 -:103AE000E050F84985919491CF91089580E090E05D -:103AF0000895089580918C0280FF0BC060911101A0 -:103B000085E0689FB0011124759567957595679557 -:103B10002BC081FF09C06091110185E0689FB00151 -:103B200011247595679520C082FF07C0609111012F -:103B300085E0689FB001112417C090918D029923F0 -:103B4000D1F060911001961788F72091110185E05E -:103B5000289F90011124929FA001939F500D112442 -:103B600070E0CA010E9452256038710540F4611569 -:103B7000710539F002C065E070E0862F08958FE787 -:103B8000089581E0089580918C0280FF08C06091C3 -:103B90000F0170E0759567957595679521C081FF58 -:103BA00006C060910F0170E07595679519C082FF9E -:103BB00004C060910F0170E010C090918D029923B4 -:103BC000C1F060910E019617A0F780910F01899FB7 -:103BD000C001112470E00E9452256038710528F45C -:103BE0006115710521F0862F08958FE7089581E012 -:103BF000089561E070E0F4CF803F21F40E947A1DC7 -:103C0000819504C0813F29F40E947A1D809390021F -:103C10000895823F21F40E947A1D819504C0833F5C -:103C200029F40E947A1D80938F020895893F19F428 -:103C30000E94C31D05C08A3F31F40E94C31D8195B7 -:103C40008093910208958B3F21F40E94C31D8195BA -:103C500004C08C3F29F40E94C31D809392020895F2 -:103C6000843F21F480918E02816017C0853F21F44A -:103C700080918E02826011C0863F21F480918E0275 -:103C800084600BC0873F21F480918E02886005C05C -:103C9000883F31F480918E02806180938E02089576 -:103CA0008D3F21F480918C0281600BC08E3F21F406 -:103CB00080918C02826005C08F3F29F480918C0234 -:103CC000846080938C020895803F39F48091900243 -:103CD00087FF6CC01092900269C0813F29F48091E7 -:103CE00090021816BCF362C090918F02823F29F4B3 -:103CF00097FF5CC010928F0259C0833F19F41916C8 -:103D0000CCF354C0893F41F48091910218160CF015 -:103D10004DC0109291024AC08A3F29F480919102CD -:103D200087FF44C0F6CF8B3F39F48091920287FF22 -:103D30003DC0109292023AC08C3F29F480919202C9 -:103D40001816BCF333C0843F21F480918E028E7F1D -:103D500017C0853F21F480918E028D7F11C0863F70 -:103D600021F480918E028B7F0BC0873F21F48091DC -:103D70008E02877F05C0883F31F480918E028F7E4E -:103D800080938E0213C08D3F21F480918C028E7F30 -:103D90000BC08E3F21F480918C028D7F05C08F3F38 -:103DA00029F480918C028B7F80938C0280918F020A -:103DB00081110EC08091900281110AC08091910200 -:103DC000811106C080919202811102C010928D0271 -:103DD00008958091840283FF7EC083E694E00E9470 -:103DE000950580918E021F928F938EE594E09F93AC -:103DF0008F930E942E068CE594E00E949505809199 -:103E00008F02282F082E000C330B3F938F9389E5E8 -:103E100094E09F938F930E942E0687E594E00E9482 -:103E2000950580919002282F082E000C330B3F93AC -:103E30008F9384E594E09F938F930E942E0682E5F2 -:103E400094E00E94950580919102282F082E000C85 -:103E5000330B3F938F938FE494E09F938F930E9453 -:103E60002E068DE494E00E94950580919202282F01 -:103E7000082E000C330B3F938F938AE494E09F93BA -:103E80008F930E942E0687E494E00E94950580910E -:103E90008D021F928F9384E494E09F938F930E94EE -:103EA0002E0682E494E00E94950580918C021F9278 -:103EB0008F938FE394E09F938F930E942E068CE361 -:103EC00094E00E9495058DB79EB74C960FB6F89476 -:103ED0009EBF0FBE8DBF8EE892E00E946A0F0E94C7 -:103EE000B51C90938B0280938A0208951F93CF9301 -:103EF000DF9380918A0290918B020E94CD1CAC01CD -:103F000090918D02992321F02091120130E006C09A -:103F1000209113018AE0289F900111244217530732 -:103F200008F485C080918F02C0919002D0919102D7 -:103F300010919202811107C0C11175C0D11173C0D7 -:103F4000111171C074C09F3F19F09F5F90938D0253 -:103F5000181624F40E947A1D80938F0280918F029C -:103F600087FF05C00E947A1D819580938F021C16E1 -:103F700024F40E947A1D809390028091900287FF22 -:103F800005C00E947A1D81958093900260918F02F6 -:103F9000662331F1C0919002CC2311F1062E000C62 -:103FA000770B880B990B0E944D2423E333E343E303 -:103FB0005FE30E94B1240E94152460938F026C2F4E -:103FC000CC0F770B880B990B0E944D2423E333E32E -:103FD00043E35FE30E94B1240E94152460939002A2 -:103FE0001D1624F40E94C31D8093910280919102BA -:103FF00087FF05C00E94C31D819580939102111611 -:1040000024F40E94C31D809392028091920287FF44 -:1040100005C00E94C31D819580939202DF91CF91CC -:104020001F910C94E91E9F3F09F08FCF97CFDF912E -:10403000CF911F910895EEE8F2E085E0DF011D9237 -:104040008A95E9F710928D0210928C02089586E805 -:1040500096E00E9495051F9281E08F931F9285E064 -:104060008F9388E396E09F938F930E942E060F9084 -:104070000F900F900F900F900F9008958330E9F1FB -:1040800028F4813061F0823009F10895853009F417 -:1040900062C008F449C0863009F474C00895809164 -:1040A0001301262F30E0280F311D2F3F310524F456 -:1040B000680F6093130103C08FEF80931301809109 -:1040C00013011F928F9381E795E072C080911201D6 -:1040D000262F30E0280F311D2F3F310524F4680FC3 -:1040E0006093120103C08FEF80931201809112013F -:1040F0001F928F938FE595E05BC080911101262F71 -:1041000030E0280F311D2F3F310524F4680F6093F4 -:10411000110103C08FEF80931101809111011F9253 -:104120008F938CE495E044C080911001262F30E0FD -:10413000280F311D2F3F310524F4680F60931001C3 -:1041400003C08FEF80931001809110011F928F9315 -:1041500087E395E02DC080910F01262F30E0280FD6 -:10416000311D2F3F310524F4680F60930F0103C008 -:104170008FEF80930F0180910F011F928F938EE13B -:1041800095E016C080910E01262F30E0280F311DDA -:104190002F3F310524F4680F60930E0103C08FEFA9 -:1041A00080930E0180910E011F928F9383E095E022 -:1041B0009F938F930E942E060F900F900F900F9059 -:1041C0000895833081F128F4813059F08230D1F0A4 -:1041D0000895853009F449C0B8F1863009F456C015 -:1041E000089580911301681720F4861B80931301B2 -:1041F00002C010921301809113011F928F9384EFDC -:1042000094E054C080911201681720F4861B8093BB -:10421000120102C010921201809112011F928F931D -:1042200082EE94E043C080911101681720F4861B50 -:104230008093110102C010921101809111011F920F -:104240008F938FEC94E032C080911001681720F4B6 -:10425000861B8093100102C0109210018091100102 -:104260001F928F938AEB94E021C080910F01681711 -:1042700020F4861B80930F0102C010920F018091E1 -:104280000F011F928F9381EA94E010C080910E017C -:10429000681720F4861B80930E0102C010920E0155 -:1042A00080910E011F928F9386E894E09F938F93E5 -:1042B0000E942E060F900F900F900F900895CF93AD -:1042C000C82F1F928F938BE897E09F938F930E9444 -:1042D0002E0681E090E0A0E0B0E0BC01CD0104C07A -:1042E000660F771F881F991FCA95D2F70E94281959 -:1042F0000F900F900F900F90CF910C94F714CF93D5 -:104300008732A8F58E3108F02BC1803109F49FC0A7 -:10431000F8F4873009F464C0A8F4863009F024C1A9 -:1043200080918402817F8E7F8093840280E997E070 -:104330000E9495058BE79AE00E94950581E08093A5 -:1043400094024CC08B30F1F18E3009F46CC00CC17A -:10435000863109F4B0C020F4813109F4EDC004C104 -:10436000893109F491C08B3109F449C0FDC088330B -:1043700049F150F4893209F4F1C0853309F4EEC0F3 -:10438000873209F0F1C0EAC0833409F4E7C028F4A9 -:104390008A3308F4E9C08953E4C0883409F0E4C0E2 -:1043A0000E94F7148AE69AE00E9495052FEF83EDAC -:1043B00090E3215080409040E1F700C000000E944F -:1043C0001C1D0CC087EB97E05CC081E59AE00E9461 -:1043D000950580918402816080938402C1E0C9C008 -:1043E00080918402C82FC17080FFEFCF8DE59AE0E5 -:1043F0000E94950580918402817F8E7F3DC09091BF -:10440000840291FBCC27C0F981E0C827892FC0FB2B -:1044100081F980938402CC2319F084E49AE027C0C8 -:1044200086E39AE02EC09091840292FBCC27C0F9DB -:1044300081E0C827892FC0FB82F980938402CC23B6 -:1044400019F087E29AE013C087E19AE01AC09091D0 -:10445000840293FBCC27C0F981E0C827892FC0FBD9 -:1044600083F980938402CC2351F08BE09AE00E9480 -:104470009505809184028160809384027AC08EEFDA -:1044800099E00E949505AACF8FEE99E00E949505CC -:1044900086EC99E00E94950584E899E00E949505D4 -:1044A0008DE599E00E94950583E199E00E949505CC -:1044B00085EE98E0E6CF87ED98E00E9495050E9492 -:1044C000150F1F928F938DEB98E09F938F930E940F -:1044D0002E0680910A011F928F9386EA98E09F939F -:1044E0008F930E942E06809187011F928F9383E9FC -:1044F00098E09F938F930E942E0680910B011F924C -:104500008F9380E898E09F938F930E942E060E94DD -:10451000C11C9F938F937F936F9389E698E09F933D -:104520008F930E942E068DB79EB746960FB6F894CD -:104530009EBF0FBE8DBF52CF0E94F714C0910B01DA -:1045400081E0C827C0930B01CC2329F08FE598E0C8 -:104550000E9495050EC084E598E093CF80E001C0ED -:104560008D510E945F213ACF82E598E00E94950527 -:10457000C0E08C2FCF91089580E0089580E00895E9 -:10458000CF93C82F80919402813071F020F0823057 -:1045900009F44BC042C1E0910C01F0910D01808102 -:1045A000823209F03CC107C0E0910C01F0910D018D -:1045B0008081823261F48C2F0E94BC22811104C060 -:1045C0008C2F0E947F212FC081E090E02CC08C2F87 -:1045D0000E94BE22811126C0C431E1F070F4CB30BC -:1045E00081F0C031D1F40E94272083E897E00E9437 -:1045F000950582E08093940215C0C93259F0C83302 -:1046000061F480E997E00E94950587E897E00E94B1 -:10461000950508C01092940204C181E897E00E94B9 -:104620009505FFC081E08170FEC0C43228F5CE310F -:1046300008F0C1C0CB30A1F1D0F4C73009F0D3C02D -:104640008EE18093130182E3809312018AE08093CC -:10465000110184E18093100188E080930F0188E2CA -:1046600080930E0187E296E00E949505BFC0C3319A -:1046700049F1C431C1F0B7C0CB3409F4A9C028F462 -:10468000C93289F0C83361F0AEC0C13509F49EC0AB -:10469000C23509F499C0CE3409F0A5C06AE09EC0C5 -:1046A0000E942720A3C080919302882319F01092C2 -:1046B00093029CC084E396E00E94950581E080937C -:1046C0009402B1C08EE096E00E9495058CEF95E0D3 -:1046D0000E949505809113011F928F9389EF95E0B9 -:1046E0009F938F930E942E0687EF95E00E94950579 -:1046F00085EE95E00E949505809112011F928F939F -:1047000082EE95E09F938F930E942E0680EE95E0B7 -:104710000E94950581ED95E00E949505809111011B -:104720001F928F938EEC95E09F938F930E942E069D -:104730008CEC95E00E9495058BEB95E00E94950529 -:10474000809110011F928F9388EB95E09F938F9338 -:104750000E942E0686EB95E00E94950581EA95E081 -:104760000E94950580910F011F928F938EE995E02D -:104770009F938F930E942E068CE995E00E949505E9 -:1047800085E895E00E94950580910E011F928F9318 -:1047900082E895E09F938F930E942E0680E895E033 -:1047A0000E9495058DB79EB748960FB6F8949EBFA8 -:1047B0000FBE8DBF1BC0CE51EC2FF0E0E25DFE4F6F -:1047C00080818093930212C061E003C061E006C063 -:1047D0006AE0809193020E943E2008C0809193027B -:1047E0000E94E12003C085E296E013C0809193020D -:1047F000882369F01F928F938FE196E09F938F93A8 -:104800000E942E060F900F900F900F9004C08CE125 -:1048100096E00E94950581E006C01092940280E027 -:1048200002C080E000CFCF9108950E941C246894BC -:10483000B1110C94AB2408950E94902488F09F57E6 -:1048400098F0B92F9927B751B0F0E1F0660F771FB4 -:10485000881F991F1AF0BA95C9F714C0B13091F0AA -:104860000E94AA24B1E008950C94AA24672F782FFF -:104870008827B85F39F0B93FCCF38695779567956F -:10488000B395D9F73EF490958095709561957F4FDB -:104890008F4F9F4F0895E89409C097FB3EF4909581 -:1048A0008095709561957F4F8F4F9F4F9923A9F009 -:1048B000F92F96E9BB279395F69587957795679598 -:1048C000B795F111F8CFFAF4BB0F11F460FF1BC0DC -:1048D0006F5F7F4F8F4F9F4F16C0882311F096E96F -:1048E00011C0772321F09EE8872F762F05C066231D -:1048F00071F096E8862F70E060E02AF09A95660FD6 -:10490000771F881FDAF7880F9695879597F908958E -:1049100057FD9058440F551F59F05F3F71F0479570 -:10492000880F97FB991F61F09F3F79F08795089555 -:10493000121613061406551FF2CF4695F1DF08C074 -:10494000161617061806991FF1CF86957105610591 -:1049500008940895E894BB2766277727CB0197F939 -:1049600008950E94C4240C9435250E94272538F010 -:104970000E942E2520F0952311F00C941E250C94F6 -:10498000242511240C94AB240E94882470F3959F55 -:10499000C1F3950F50E0551F629FF001729FBB2736 -:1049A000F00DB11D639FAA27F00DB11DAA1F649FD2 -:1049B0006627B00DA11D661F829F2227B00DA11D85 -:1049C000621F739FB00DA11D621F839FA00D611D0B -:1049D000221F749F3327A00D611D231F849F600D2C -:1049E000211D822F762F6A2F11249F5750409AF055 -:1049F000F1F088234AF0EE0FFF1FBB1F661F771FE1 -:104A0000881F91505040A9F79E3F510580F00C94AB -:104A10001E250C94AB245F3FE4F3983ED4F38695B7 -:104A200077956795B795F795E7959F5FC1F7FE2B4B -:104A3000880F911D9695879597F9089597F99F6727 -:104A400080E870E060E008959FEF80EC0895002416 -:104A50000A941616170618060906089500240A94E3 -:104A600012161306140605060895092E0394000C69 -:104A700011F4882352F0BB0F40F4BF2B11F460FFF8 -:104A800004C06F5F7F4F8F4F9F4F0895991B79E050 -:104A900004C0991F961708F0961B881F7A95C9F7CE -:104AA0008095089597FB072E16F4009407D077FDA4 -:104AB00009D00E946C2507FC05D03EF490958195A5 -:104AC0009F4F0895709561957F4F0895EE0FFF1FDA -:104AD0000590F491E02D0994AA1BBB1B51E107C07E -:104AE000AA1FBB1FA617B70710F0A61BB70B881F7E -:104AF000991F5A95A9F780959095BC01CD0108950D -:044B0000F894FFCF57 -:104B0400460737081408E007AC07010162022808C9 -:104B1400140A321E404D3622394D030003CA02A83E -:104B2400026F02E201FB0114022D024D0200010298 -:084B340003040506070809004F +:100160000A4B6579626F6172642073746172742ED8 +:100170000A000A55534220636F6E6669677572659F +:10018000642E0A000A0A544D4B3A63323135373136 +:1001900033662B2F4C5546410A0A002C0346004378 +:1001A000003900380030004300200041006C00742A +:1001B00000200043006F006E00740072006F006C3E +:1001C000006C006500720000000A0354004D004BF3 +:1001D000002E0000000403090409028D000501003F +:1001E000A0320904000001030101000921110100EE +:1001F000012240000705810308000A0904010001EB +:1002000003010200092111010001224D00070582AE +:100210000308000A0904020001030000000921117B +:100220000100012236000705830308000A090403C0 +:100230000002030000000921110100012222000731 +:1002400005840320000107050403200001090404BC +:1002500000010300000009211101000122390007FB +:100260000585032000011201100100000008EDFEC9 +:100270000C9800010102000105010906A101050712 +:1002800019E029E715002501950875018102050887 +:1002900019012905950575019102950175039101D3 +:1002A0000507190029F71500250195F87501810248 +:1002B000C00631FF0974A1010975150026FF0095DC +:1002C00020750881020976150026FF009520750823 +:1002D0009102C005010980A101850216010026379F +:1002E000001A81002AB700751095018100C0050C25 +:1002F0000901A1018503160100269C021A01002AAA +:100300009C02751095018100C005010902A1010937 +:1003100001A100050919012905150025019505759B +:10032000018102950175038101050109300931152B +:1003300081257F95027508810609381581257F95ED +:100340000175088106050C0A38021581257F950183 +:1003500075088106C0C005010906A101050719E05D +:1003600029E7150025019508750181029501750899 +:10037000810105081901290595057501910295016D +:10038000750391010507190029FF150026FF009547 +:100390000675088100C0636F6E73756D65723A20D3 +:1003A000253034580A0073797374656D3A2025300E +:1003B00034580A000A002530325820006B657962F3 +:1003C0006F6172643A20004C45443A20253032581F +:1003D0000A00253032583A20253031366225730A1A +:1003E00000722F632030313233343536373839419B +:1003F00042434445460A0064656C5F6B65795F6201 +:1004000069743A2063616E27742064656C3A202514 +:100410003032580A006164645F6B65795F626974A9 +:100420003A2063616E2774206164643A202530327B +:10043000580A004F6E6573686F743A2074696D6571 +:100440006F75740A00290A002575002F00257500B4 +:100450005D2800256400200025640020002564003C +:1004600020002564007C0025303258006D6F7573C4 +:10047000656B6579205B62746E7C782079207620CC +:10048000685D287265702F61636C293A205B006D8E +:100490006B5F776865656C5F74696D655F746F5FCE +:1004A0006D6178203D2025640A006D6B5F7768657B +:1004B000656C5F6D61785F7370656564203D2025B4 +:1004C000640A006D6B5F74696D655F746F5F6D6169 +:1004D00078203D2025640A006D6B5F6D61785F7345 +:1004E00070656564203D2025640A006D6B5F696E50 +:1004F00074657276616C203D2025640A006D6B5F27 +:1005000064656C6179203D2025640A006D6B5F771E +:100510006865656C5F74696D655F746F5F6D617848 +:10052000203D2025640A006D6B5F776865656C5F10 +:100530006D61785F7370656564203D2025640A00F5 +:100540006D6B5F74696D655F746F5F6D6178203D81 +:100550002025640A006D6B5F6D61785F737065655F +:1005600064203D2025640A006D6B5F696E746572BE +:1005700076616C203D2025640A006D6B5F64656CBC +:100580006179203D2025640A000A00257500363A6D +:1005900020776865656C5F74696D655F746F5F6D0A +:1005A00061783A20000A00257500353A20776865A1 +:1005B000656C5F6D61785F73706565643A20000AF1 +:1005C00000257500343A2074696D655F746F5F6D46 +:1005D00061783A20000A00257500333A206D617871 +:1005E0005F73706565643A20000A00257500323A31 +:1005F00020696E74657276616C286D73293A2000EB +:100600000A00257500313A2064656C6179282A3129 +:10061000306D73293A20000A092D2056616C7565EA +:1006200073202D0A004D3E004D25643E20003F0002 +:100630007365742064656661756C740A00433E20BE +:100640000077686572652064656C74613A20637533 +:1006500072736F723D25642C20776865656C3D254B +:10066000640A53656520687474703A2F2F656E2E86 +:1006700077696B6970656469612E6F72672F77693E +:100680006B692F4D6F7573655F6B6579730A000A2F +:10069000092D204D6F7573656B6579202D0A4553C3 +:1006A000432F713A09717569740A313A0964656CAE +:1006B0006179282A31306D73290A323A09696E74DA +:1006C000657276616C286D73290A333A096D617819 +:1006D0005F73706565640A343A0974696D655F74A7 +:1006E0006F5F6D61780A353A09776865656C5F6D93 +:1006F00061785F73706565640A363A097768656585 +:100700006C5F74696D655F746F5F6D61780A0A7004 +:100710003A097072696E742076616C7565730A644B +:100720003A097365742064656661756C74730A7543 +:10073000703A092B310A646F776E3A092D310A70CD +:100740006775703A092B31300A7067646F776E3ABB +:10075000092D31300A0A7370656564203D20646597 +:100760006C7461202A206D61785F73706565642008 +:100770002A2028726570656174202F2074696D6568 +:100780005F746F5F6D6178290A003F004D3E200065 +:10079000433E20004C25640A000A092D20436F6E59 +:1007A000736F6C65202D0A4553432F713A0971759B +:1007B00069740A6D3A096D6F7573656B65790A0026 +:1007C0000A092D204D61676963202D0A643A096486 +:1007D000656275670A783A096465627567206D61BC +:1007E000747269780A6B3A096465627567206B6593 +:1007F00079626F6172640A6D3A0964656275672097 +:100800006D6F7573650A763A0976657273696F6EF6 +:100810000A733A097374617475730A633A09636FF2 +:100820006E736F6C65206D6F64650A302D343A0904 +:100830006C61796572302D34284631302D4634296B +:100840000A506175733A09626F6F746C6F61646509 +:10085000720A6E3A094E4B524F0A003F004E4B52FD +:100860004F3A206F66660A004E4B524F3A206F6E29 +:100870000A0074696D65725F72656164333228299C +:100880003A202530346C580A006B6579626F6172CA +:10089000645F6E6B726F3A2025580A006B6579624F +:1008A0006F6172645F69646C653A2025580A006B59 +:1008B0006579626F6172645F70726F746F636F6C81 +:1008C0003A2025580A00686F73745F6B6579626F10 +:1008D0006172645F6C65647328293A2025580A00A8 +:1008E0000A092D20537461747573202D0A00474343 +:1008F000433A20352E342E30204156522D4C494259 +:10090000433A20322E302E30204156525F4152431E +:10091000483A20617672350A004F5054494F4E5381 +:100920003A204C554641204D4F5553454B45592093 +:1009300045585452414B455920434F4E534F4C4517 +:1009400020434F4D4D414E44204E4B524F204B457E +:10095000594D41505F53454354494F4E203430392F +:10096000360A004255494C443A206332313537311A +:1009700033662B202831343A30363A3435204F63F1 +:10098000742020312032303139290A005649443A46 +:100990002030784645454428544D4B2E2920504957 +:1009A000443A203078393830432846433938304388 +:1009B00020416C7420436F6E74726F6C6C65722989 +:1009C000205645523A203078303130300A004445C4 +:1009D00053433A20544D4B2E206B6579626F617200 +:1009E00064206669726D7761726520666F72204659 +:1009F00043393830430A000A092D2056657273695D +:100A00006F6E202D0A000A6D6F7573653A206F6650 +:100A1000660A000A6D6F7573653A206F6E0A000AE8 +:100A20006B6579626F6172643A206F66660A000ACC +:100A30006B6579626F6172643A206F6E0A000A6DAD +:100A400061747269783A206F66660A000A6D617493 +:100A50007269783A206F6E0A000A64656275673AB7 +:100A6000206F6E0A000A64656275673A206F6666D9 +:100A70000A000A0A626F6F746C6F616465722E2ED1 +:100A80002E2000433E20000011241FBECFEFDAE0ED +:100A9000DEBFCDBF04B603FE28C08091A4039091B1 +:100AA000A503A091A603B091A7038730904BA74060 +:100AB000B04BD9F41092A4031092A5031092A60390 +:100AC0001092A70314BE0FB6F894A8958091600009 +:100AD000886180936000109260000FBE1092010840 +:100AE00010920008E0E0F8E3099511E0A0E0B1E021 +:100AF000ECEDFBE402C005900D92AE33B107D9F7DF +:100B000023E0AEE3B1E001C01D92A43AB207E1F7E1 +:100B10000E94C8090C94EC250C940000FF93EF93FD +:100B2000E0913E01F0913F01309709F00995EF9176 +:100B3000FF910895FC018591803011F0EFDFFBCF2C +:100B40000895FF27E0E230E247FF0CC0419597FF90 +:100B500009C0EDE26095709580959095611D711DBD +:100B6000811D911D27FF02C0219530E350E2AA2785 +:100B7000660F771F881F991FAA1FA41710F0A41BC8 +:100B800063955A95A9F7AA3008F0A95FA05DAF93C5 +:100B9000F395611571058105910541F7ED3211F469 +:100BA000EF93F395F21718F43F93F395FBCF8F91E2 +:100BB000B5DFFA95E1F70895E991F99185918030D3 +:100BC00021F0853219F0AADFF9CF089520E0E894EA +:100BD00055915532C1F3503311F4689455915A33FD +:100BE00048F4505390F3220F022E220F220F200DB3 +:100BF000250FF4CF0EF4219589919991533619F36D +:100C0000533729F1533559F1BC0188279927E894C6 +:100C10005C3621F48991999168945591543639F450 +:100C200046EF7EF077FF0DC08FEF9FEF0AC055377C +:100C30004AE039F0583540E121F0523642E009F0FF +:100C40000895FF93EF937DDFEF91FF91B7CFFF936F +:100C5000EF93FC0181918030B9F360DFFBCFFF930C +:100C6000EF9368DFF1CFDF93CF93CDB7DEB7259653 +:100C7000A3DFCF91DF91089584B18F6084B93E984E +:100C8000469A3F9A8AB1806F8AB95F9A479884B131 +:100C9000806784B985B18F7885B9E0E5F1E011927C +:100CA000119281E0E036F807D1F7E0E4F1E080E569 +:100CB00091E0119211928E179F07D9F780E591E08C +:100CC000909363018093620180E491E090936101CD +:100CD0008093600108958F929F92BF92CF92DF928E +:100CE000EF92FF920F931F93CF93DF938091600158 +:100CF0009091610120916201309163013093610113 +:100D0000209360019093630180936201E12CF12CA8 +:100D1000C1E0D0E00FEF10E085B1807F8E2985B96A +:100D2000BE010E2C02C0660F771F0A94E2F74B013A +:100D30008094909440E050E08BB1282F2F78CA0126 +:100D400034E0880F991F3A95E1F7822B8BB98AE03E +:100D50008A95F1F700C09A01220F331FE0916001DC +:100D6000F0916101E20FF31F808191818623972327 +:100D7000892B09F0479AA5E3AA95F1F70000B6B4CC +:100D80005F98BAE0BA95F1F700C0E0916201F09186 +:100D900063016F01C20ED31ED601369B06C08D9132 +:100DA0009C9111978821992105C08D919C91119753 +:100DB000862B972B8D939C9386B5CB2CD12C8B15A2 +:100DC00028F086B590E08C199D0906C0B6B4C8011C +:100DD0008C199D098B0D911D069768F0809160011B +:100DE00090916101820F931FDC018D919C91E20F24 +:100DF000F31F91838083BAE1BA95F1F700C0479859 +:100E00005F9A80EA8A95F1F74F5F5F4F483051054E +:100E100009F092CFA0916201B0916301E09160016D +:100E2000F091610150962D913C9151978089918963 +:100E30002817390711F00E943C1DAFEFEA1AFA0A91 +:100E4000B0E1EB16F10409F067CF81E0DF91CF91BB +:100E50001F910F91FF90EF90DF90CF90BF909F90E8 +:100E60008F9008952091620190916301E22FF92FF4 +:100E7000E80FF11DE80FF11D80819181089580FF39 +:100E800002C02C9A01C02C9881FF02C02D9A01C08B +:100E90002D9882FF02C02E9A08952E980895809171 +:100EA00088020895CF93DF9300D01F92CDB7DEB7AD +:100EB0009C0180919B03843019F593E099833B83D7 +:100EC0002A839093E9008FEF9091E800815095FD7F +:100ED00006C095ED9A95F1F700008111F5CF80914C +:100EE000E80085FF0DC040E050E063E070E0CE0117 +:100EF00001960E94F50A8091E8008E778093E800C1 +:100F00000F900F900F90DF91CF910895CF93DF93C3 +:100F100000D01F92CDB7DEB720919B03243031F56E +:100F200022E02983805891099B838A8383E0809300 +:100F3000E9008FEF9091E800815095FD06C095ED96 +:100F40009A95F1F700008111F5CF8091E80085FFB7 +:100F50000DC040E050E063E070E0CE0101960E94D9 +:100F6000F50A8091E8008E778093E8000F900F904B +:100F70000F90DF91CF91089520919B032430F1F4DD +:100F800022E02093E9002FEF3091E800215035FD59 +:100F900006C035ED3A95F1F700002111F5CF20910B +:100FA000E80025FF0BC040E050E065E070E00E94E3 +:100FB000F50A8091E8008E778093E8000895CF933A +:100FC000DF9320919B03243009F04AC0EC0180910B +:100FD0000F018823E1F0809110018823C1F085E0A2 +:100FE0008093E90081E8815049F09091E80095FDF7 +:100FF00005C09AE29A95F1F700C0F5CF8091E8001C +:1010000085FF2EC040E050E060E270E019C081E052 +:101010008093E90081E8815059F09091E80095FDB6 +:1010200007C0EFE3F1E03197F1F700C00000F3CF24 +:101030008091E80085FF14C040E050E068E070E077 +:10104000CE010E94F50A8091E8008E778093E80037 +:1010500080E2FE01A8E6B2E001900D928A95E1F7E8 +:10106000DF91CF910895CF93C0916601C1110BC05C +:101070000E943C1D643C79408105910520F081E08F +:1010800080936601C1E08C2FCF910895CF93C82F34 +:101090000E943308882309F448C00FB607FE45C0F4 +:1010A00080919B03843009F040C08091E9008F70EB +:1010B0002091EC00922F917020FD90E8892B94E014 +:1010C0009093E9009091EB0090FF2CC09091EE007E +:1010D00097FF28C09091030120910201291709F47C +:1010E00047C02091E80025FF1DC0E0910001F0916C +:1010F0000101E90FF11D30819F5F209104019223CE +:10110000909303013093F1009091E80095FDE2CFB8 +:101110009091E80090FFDECF9091E8009E77909349 +:10112000E800D8CF8F708093E9008091020190E0B1 +:10113000AC014F5F5F4F30910401232F30E0242337 +:1011400035234091030150E024173507D1F0209159 +:10115000000130910101F901E80FF91FC08380916E +:1011600002018F5F9091040189238093020109C0DD +:101170009091E80095FFD6CFC093F1008F708093D7 +:10118000E90080E0CF91089580919A03811109C010 +:101190000E94860C0E94E30C8091E20084608093A0 +:1011A000E200089510929A0308950895089542E088 +:1011B00061EC81E00E94FF0B42E061EC82E00E9462 +:1011C000FF0B42E061EC83E00E94FF0B42E261EC26 +:1011D00084E00E94FF0B42E261EC85E00C94FF0B7F +:1011E00080919D03833009F455C030F4813071F053 +:1011F000823009F48EC008958A3009F47AC08B30A9 +:1012000009F460C0893009F09CC020C080919C0323 +:10121000813A09F096C08091E800877F8093E800CA +:101220008091A0039091A103892B21F460E288E6CC +:1012300092E003C060E080E090E070E00E94400B2C +:101240008091E8008B778093E800089580919C035B +:10125000813209F076C08091A0039091A10300979C +:1012600019F0049709F06DC08091E800877F8093A2 +:10127000E8008091E80082FD05C080919B03811108 +:10128000F8CF5FC08091F100809388028091E800E0 +:101290008B7753C080919C03813A09F052C08091B2 +:1012A000A0039091A103892B09F04BC08091E80025 +:1012B000877F8093E8008091E80080FFFCCF8091D9 +:1012C0000F0136C080919C038132D9F58091A00333 +:1012D0009091A103892BA9F58091E800877F8093E5 +:1012E000E8000E94340C80919E0380930F010C94BF +:1012F000221280919C03813221F58091E800877F42 +:101300008093E8000E94340C80919F0380938902AF +:10131000089580919C03813AA1F48091E800877F31 +:101320008093E8008091E80080FFFCCF80918902E3 +:101330008093F1008091E8008E778093E8000C9410 +:10134000340C08958091880280936701109288027E +:101350000E94ED100C9422120C94A2090E94BC1C55 +:1013600080919903882329F00E94E51C81110C9437 +:10137000DF0A08950E94FA1C809167018093880219 +:1013800008950C94BA0908950C94C3090C94C309E8 +:10139000CF9384B7877F84BF0FB6F894A8958091C8 +:1013A0006000886180936000109260000FBE90E042 +:1013B00080E80FB6F89480936100909361000FBEAF +:1013C00086E498E00E947C1C85E091E00E946D0F0D +:1013D00084E891E00E949A050E94C6090E942C10A0 +:1013E0000E94860C0E94E30C8091E200846080934E +:1013F000E20078940E942E1080919B03843019F0B3 +:101400000E94C309F9CF82E791E00E949A050E94E9 +:10141000C40980E691E00E949A05C4E080919B0394 +:10142000853019F40E94AE09F9CF0E943210209144 +:10143000E4003091E50080916401909165012817E6 +:10144000390761F38091E4009091E5009093650184 +:10145000809364010E943308882301F380919B03E9 +:101460008430E1F68091E9008F702091EC00922F9A +:10147000917020FD90E8892BC093E9009091EB00DA +:1014800090FF43C09091EE0097FF3FC09091030101 +:1014900020910201291709F12091E80025FF1DC0C4 +:1014A000E0910001F0910101E90FF11D30819F5F92 +:1014B000209104019223909303013093F1009091C5 +:1014C000E80095FDE3CF9091E80090FFDFCF909189 +:1014D000E8009E779093E800D9CF9091F300209197 +:1014E000F20030E0392B232B81F09091E80090FF3F +:1014F0000CC09091E80095FF03C01092F100F9CF65 +:101500009091E8009E779093E8008F708093E900B7 +:1015100085CF292F332723303105C9F060F42130DE +:10152000310581F02230310509F041C08DE890E0AD +:1015300029ED31E040C021323105E1F022323105A0 +:1015400031F135C082E190E026E632E034C09927DF +:101550008130910549F028F0029749F5EBE9F1E077 +:1015600005C0E5EDF1E002C0E9ECF1E0849190E026 +:101570009F0121C06530D8F4E62FF0E0EE0FFF1F89 +:10158000E85DFE4F2081318189E090E014C0653034 +:1015900070F470E0FB01EE0FFF1FE25EFE4F208152 +:1015A0003181FB01E75EFE4F808190E004C080E066 +:1015B00090E020E030E0FA0131832083089580E15B +:1015C00089BD82E189BD09B400FEFDCF8091D800BC +:1015D0008F7D8093D8008091E00082608093E0004E +:1015E0008091E00081FDFCCF0895CF92DF92EF92D1 +:1015F000FF920F931F93CF93DF93EC018B017A013E +:101600000E94530C811133C0E114F10439F0F70149 +:1016100080819181081B190BC80FD91FC12CD12CB7 +:101620000115110519F18091E80085FD16C0809122 +:10163000E8008E778093E800E114F10449F0F701A7 +:1016400080819181C80ED91ED182C08285E00FC0F1 +:101650000E94530C882321F30AC089918093F100E2 +:1016600001501109FFEFCF1ADF0ADACF80E0DF91D6 +:10167000CF911F910F91FF90EF90DF90CF90089541 +:101680002091A2033091A3032617370748F0611574 +:10169000710539F42091E8002E772093E80001C00D +:1016A000B901FC0120E06115710579F180919B037E +:1016B0008823F1F18530F1F18091E80083FD3CC091 +:1016C0008091E80082FD2EC08091E80080FFEBCF82 +:1016D0002091F3008091F20090E0922B611571054A +:1016E00051F08830910538F421912093F100615038 +:1016F00071090196F3CF21E0089709F020E080916D +:10170000E8008E778093E800CECF2111CFCF0AC0BA +:1017100080919B03882361F0853061F08091E8001F +:1017200083FD0AC08091E80082FFF2CF80E0089537 +:1017300082E0089583E0089581E008952091A20356 +:101740003091A3032617370748F06115710539F466 +:101750002091E8002E772093E80001C0B901FC0138 +:1017600020E06115710591F180919B03882309F4B4 +:1017700040C0853009F43FC08091E80083FD3DC042 +:101780008091E80082FD2FC08091E80080FFE9CFC2 +:101790002091F3008091F20090E0922B6115710589 +:1017A00059F08830910540F424912093F10031964E +:1017B000615071090196F2CF21E0089709F020E00D +:1017C0008091E8008E778093E800CBCF2111CCCFB9 +:1017D0000AC080919B03882361F0853061F080917D +:1017E000E80083FD0AC08091E80082FFF2CF80E02C +:1017F000089582E0089583E0089581E00895982F88 +:10180000973068F59093E900981739F07091EC00E3 +:101810002091ED005091F00003C0242F762F50E06E +:1018200021FD02C09F5FECCF3091EB003E7F3093F3 +:10183000EB003091ED003D7F3093ED003091EB00F7 +:1018400031603093EB007093EC002093ED005093E7 +:10185000F0002091EE0027FDE5CF80E008958F7025 +:101860008093E90081E0089580919C0387FF11C077 +:101870008091E80082FD05C080919B038111F8CF23 +:1018800011C08091E8008B770BC080919B03882367 +:1018900049F08091E80080FFF8CF8091E8008E77D2 +:1018A0008093E80008952091E4003091E50095E6EA +:1018B0004091EC00842F817040FF23C08091E800AC +:1018C00080FD1DC080919B03882399F0853099F09D +:1018D0008091EB0085FD11C04091E4005091E5003E +:1018E0002417350729F3915011F09A01E1CF84E0D4 +:1018F000089582E0089583E0089581E0089580E0EE +:1019000008954091E80042FFDDCF08950E94F40C55 +:101910000E94FC0CE0EEF0E0808181608083E8EDC5 +:10192000F0E080818F77808319BCA7EDB0E08C91C7 +:101930008E7F8C9380818F7E808310929A0308958E +:101940000F931F93CF93DF930E94F40C0E94FC0C23 +:10195000C8EDD0E088818F7788838881806888830C +:1019600088818F7D888319BC10929B031092970306 +:10197000109299031092980300EE10E0F801808114 +:101980008B7F808388818160888342E060E080E093 +:101990000E94FF0BE1EEF0E080818E7F8083E2EE1B +:1019A000F0E0808181608083808188608083F8019D +:1019B00080818E7F8083888180618883DF91CF9151 +:1019C0001F910F910895E8EDF0E080818F7E808374 +:1019D000E7EDF0E080818160808384E082BF81E078 +:1019E00080939A030C94A00CE8EDF0E080818E7F48 +:1019F00080831092E20008951092DA001092E100C4 +:101A000008951F920F920FB60F9211242F933F93B8 +:101A10004F935F936F937F938F939F93AF93BF93F6 +:101A2000EF93FF938091E10082FF0BC08091E20071 +:101A300082FF07C08091E1008B7F8093E1000E94CC +:101A4000D6088091DA0080FF1FC08091D80080FF07 +:101A50001BC08091DA008E7F8093DA008091D900DC +:101A600080FF0DC080E189BD82E189BD09B400FE1F +:101A7000FDCF81E080939B030E94C40805C019BC80 +:101A800010929B030E94D2088091E10080FF19C050 +:101A90008091E20080FF15C08091E2008E7F8093EC +:101AA000E2008091E20080618093E2008091D800A2 +:101AB00080628093D80019BC85E080939B030E94CC +:101AC000AC098091E10084FF30C08091E20084FF86 +:101AD0002CC080E189BD82E189BD09B400FEFDCF43 +:101AE0008091D8008F7D8093D8008091E1008F7E17 +:101AF0008093E1008091E2008F7E8093E2008091EC +:101B0000E20081608093E20080919703882311F0C6 +:101B100084E007C08091E30087FD02C081E001C03E +:101B200083E080939B030E94C1098091E10083FFC1 +:101B300029C08091E20083FF25C08091E100877F6A +:101B40008093E10082E080939B0310929703809141 +:101B5000E1008E7F8093E1008091E2008E7F809390 +:101B6000E2008091E20080618093E20042E060E068 +:101B700080E00E94FF0B8091F00088608093F0006D +:101B80000E94D508FF91EF91BF91AF919F918F91E6 +:101B90007F916F915F914F913F912F910F900FBE69 +:101BA0000F901F9018951F920F920FB60F9211244D +:101BB0002F933F934F935F936F937F938F939F9355 +:101BC000AF93BF93CF93DF93EF93FF93C091E9005F +:101BD000CF708091EC00D82FD17080FDD0E81092AA +:101BE000E9008091F000877F8093F00078940E9454 +:101BF000170E1092E9008091F00088608093F00049 +:101C0000CD2BCF70C093E900FF91EF91DF91CF9181 +:101C1000BF91AF919F918F917F916F915F914F9104 +:101C20003F912F910F900FBE0F901F9018951F930B +:101C3000CF93DF93CDB7DEB7AA970FB6F894DEBF88 +:101C40000FBECDBFECE9F3E08091F100819323E07A +:101C5000E43AF207C9F70E94F0088091E80083FF98 +:101C600024C180919C0390919D03492F50E04A30FC +:101C7000510508F01AC1FA01EA5AFF4F0C94D22517 +:101C8000803881F0823809F010C18091A0038F70F4 +:101C90008093E9008091EB0085FB882780F9109202 +:101CA000E90006C080919803909199039111826098 +:101CB0009091E800977F9093E8008093F100109254 +:101CC000F100C8C0282F2D7F09F0EFC0882319F03C +:101CD000823061F0EAC080919E03813009F0E5C056 +:101CE000933009F080E0809399032BC080919E038C +:101CF000811127C08091A0038F7009F4D6C0809312 +:101D0000E9002091EB0020FF1CC0933021F480916A +:101D1000EB00806214C09091EB0090619093EB0017 +:101D200021E030E0A90102C0440F551F8A95E2F777 +:101D30004093EA001092EA008091EB008860809363 +:101D4000EB001092E9008091E800877F86C0811146 +:101D5000ACC010919E031F778091E3008078812BA7 +:101D60008093E3008091E800877F8093E8000E94E1 +:101D7000340C8091E80080FFFCCF8091E300806804 +:101D80008093E300111102C082E001C083E08093E0 +:101D90009B038BC08058823008F087C080919E03DF +:101DA00090919F038C3D53E0950779F583E08A83FA +:101DB0008AE289834FB7F894DE01139620E03EE073 +:101DC00051E2E32FF0E050935700E49120FF03C06D +:101DD000E295EF703F5FEF708E2F90E0EA3010F0E9 +:101DE000C79601C0C0968D939D932F5F243149F70C +:101DF0004FBF8091E800877F8093E8006AE270E03F +:101E0000CE0101960E94400B14C0AE014F5F5F4FA0 +:101E10006091A0030E94890ABC01892B09F445C086 +:101E20009091E800977F9093E80089819A810E94C1 +:101E30009E0B8091E8008B778093E80036C0803855 +:101E4000A1F58091E800877F8093E8008091970357 +:101E50008093F1008091E8008E778093E8000E94E3 +:101E6000340C23C0811121C080919E0390919F0367 +:101E700099270297D4F48091E800877F8093E80047 +:101E800080919E03809397030E94340C8091970366 +:101E9000811106C08091E30087FD02C081E001C08E +:101EA00084E080939B030E94D7088091E80083FF21 +:101EB0000AC08091E800877F8093E8008091EB0062 +:101EC00080628093EB00AA960FB6F894DEBF0FBE37 +:101ED000CDBFDF91CF911F91089590938F02809392 +:101EE0008E020895E0918E02F0918F02309721F0DA +:101EF0000190F081E02D099480E00895EF92FF9227 +:101F00000F931F93CF93DF93E0918E02F0918F0296 +:101F10003097B1F18C010280F381E02D0995809119 +:101F2000860382FF2DC080FF04C08CEB93E00E94EB +:101F30009A05E80110E286EBE82E83E0F82E809106 +:101F4000860380FF0BC088811F928F93FF92EF92D0 +:101F50000E9433060F900F900F900F901150219612 +:101F60001111EDCF8091860380FF0AC084EB93E0CE +:101F7000DF91CF911F910F91FF90EF900C949A05F4 +:101F8000DF91CF911F910F91FF90EF900895E09115 +:101F90008E02F0918F02309721F00480F581E02DC0 +:101FA00009940895CF93DF9320918C0230918D0294 +:101FB0002817390709F190938D0280938C02E091E4 +:101FC0008E02F0918F023097B9F0EC010680F78114 +:101FD000E02D09958091860382FF0EC080FF0CC022 +:101FE000DF93CF9386EA93E09F938F930E9433060B +:101FF0000F900F900F900F90DF91CF910895CF9396 +:10200000DF9320918A0230918B022817390709F15A +:1020100090938B0280938A02E0918E02F0918F025E +:102020003097B9F0EC010084F185E02D099580919D +:10203000860382FF0EC080FF0CC0DF93CF9386E93A +:1020400093E09F938F930E9433060F900F900F9011 +:102050000F90DF91CF9108950C94EE100E94271DF0 +:102060000C943C068F929F92AF92BF92CF92DF92D8 +:10207000EF92FF920F931F93CF93DF9300D000D086 +:102080001F92CDB7DEB70E946B0601E912E0F12C7A +:102090008F2D0E9432074C01F801A080B180A82644 +:1020A000B926A114B10439F4F3940E5F1F4FF8E080 +:1020B000FF12EECF39C08091860381FD0E94EF10A0 +:1020C000E12CCC24C394D12CC5018C219D21892BDA +:1020D00021F1E982FA8221E0C4018C219D21892B22 +:1020E00009F420E02B830E94301D8160782F9D83AE +:1020F0008C8349815A816B818D810E942511498190 +:102100005A816B817C818D810E94A71CF80180819E +:1021100091818C259D2591838083E394CC0CDD1CDB +:10212000F0E1EF12D1CFC0CF8FEF89838A831B827A +:102130000E94301D8160782F9D838C8349815A8154 +:102140006B818D810E9425110E94A61C0E94EE1FAA +:102150000E94720F90919002891759F10E94720F9C +:10216000809390029091860392FF0EC090FF0CC066 +:102170001F928F9387EC93E09F938F930E94330677 +:102180000F900F900F900F90809190020F900F90F2 +:102190000F900F900F90DF91CF911F910F91FF90B3 +:1021A000EF90DF90CF90BF90AF909F908F900C9466 +:1021B000B81C0F900F900F900F900F90DF91CF9160 +:1021C0001F910F91FF90EF90DF90CF90BF90AF9055 +:1021D0009F908F9008950C943F0708950895EF9273 +:1021E000FF920F931F93CF93DF9381EE93E00E94B2 +:1021F0009A05C0E0D0E082E3E82E81E0F82E02EDFF +:1022000013E08C2F0E9432070E94931CFF92EF92E2 +:102210009F938F93DF93CF931F930F930E94330667 +:1022200021968DB79EB708960FB6F8949EBF0FBE45 +:102230008DBFC830D10529F7DF91CF911F910F9144 +:10224000FF90EF90089508950895CF93DF93CDB751 +:10225000DEB72B970FB6F894DEBF0FBECDBF942F1D +:102260004F83252F588769877A878B874A855B85B7 +:10227000452B31F02F3F31F481E09F3F19F403C02B +:1022800081E001C080E080FD07C04F8158856985ED +:102290007A858B850E94A71CDE01119686E0FD01E0 +:1022A00011928A95E9F785E0FE01379601900D922B +:1022B0008A95E1F749815A816B817C818D819E816C +:1022C0000E9456182B960FB6F894DEBF0FBECDBFF6 +:1022D000DF91CF910895CF93882309F465C0C82F6B +:1022E0008CEF8C0F813A20F080E58C0F8E3248F411 +:1022F0008C2F0E943823811157C08C2F0E943E1BC7 +:102300000CC080E28C0F883058F4C77081E001C0A7 +:10231000880FCA95EAF70E94E31BCF910C94271C03 +:102320008BE58C0F833078F4C53A29F0C63A31F04A +:1023300083E890E005C081E890E002C082E890E088 +:10234000CF910C94D20F88E58C0F853168F5C83A8F +:1023500089F0C93A91F0CA3A99F0CB3AA1F0CC3A57 +:10236000A9F0CD3AB1F0CE3AB9F0CF3AC1F080E061 +:1023700090E017C082EE90E014C089EE90E011C0AA +:102380008AEE90E00EC085EB90E00BC086EB90E00B +:1023900008C083EB90E005C084EB90E002C087EBBF +:1023A00090E0CF910C94FF0FCF910895882349F1CD +:1023B0009CEF980F913A20F090E5980F9E3218F418 +:1023C0000E948E1B0DC090E2980F983058F48770D1 +:1023D00091E001C0990F8A95EAF7892F0E94E91BC5 +:1023E0000C94271C9BE5980F933020F480E090E03C +:1023F0000C94D20F885A853120F480E090E00C9440 +:10240000FF0F0895882321F00E94E31B0C94271CE2 +:102410000895882321F00E94E91B0C94271C08953D +:102420000E94031C0E94D21B0E94271C0E94932022 +:102430000E94611F80E090E00E94D20F80E090E057 +:102440000C94FF0F0E94F31B0C941012CF92DF929A +:10245000EF92FF920F931F93CF93DF9300D000D0A2 +:102460001F92CDB7DEB76C010E94BA1C811101C367 +:1024700085E0F601DE01119601900D928A95E1F753 +:10248000F60140815181238134812115310531F0DC +:102490005F3F31F481E04F3F19F403C081E001C098 +:1024A00080E080FDE6C2F601F280E580E2948FE0F4 +:1024B000E82249835A83FB82722F3D832C836F2D40 +:1024C0008D810E94BA1A8C010E94B91A0E94A91922 +:1024D000E12FE295EF708E2F90E0FC01E05AFF4F64 +:1024E0000C94D225812F807F1F70882311F01295C4 +:1024F000107FFF2049F0112309F452C2812F0E945E +:10250000F61B0E94271C4CC2802F0E94D61111235B +:1025100009F4AFC2812F0E94FC1B0F900F900F9007 +:102520000F900F90DF91CF911F910F91FF90EF903F +:10253000DF90CF900C94271C812F807F1F708032FA +:1025400011F01295107F002319F0013009F12BC012 +:10255000FF20A9F0EE2059F1F1E0812FEF1228C001 +:102560000F900F900F900F900F90DF91CF911F91D0 +:102570000F91FF90EF90DF90CF900C94061CEE200F +:1025800021F021E0E21609F474C20E940F1C2DC054 +:10259000FF20E9F085E08E1508F46BC20E94E01B75 +:1025A000812329F022C0FF20F1F0E11015C0812F16 +:1025B0000F900F900F900F900F90DF91CF911F9180 +:1025C0000F91FF90EF90DF90CF900C94021294E067 +:1025D0009E1508F44EC209C0F601858180FFE0C156 +:1025E0008F708583E4CFE110EEC1812F61C1812F0F +:1025F00086958695837019F08130B9F03AC2FF2034 +:1026000019F0C801937002C080E090E00F900F9025 +:102610000F900F900F90DF91CF911F910F91FF902E +:10262000EF90DF90CF900C94D20FFF2019F0C801EB +:10263000937002C080E090E00F900F900F900F9089 +:102640000F90DF91CF911F910F91FF90EF90DF904E +:10265000CF900C94FF0F802FFF2019F00E94741E62 +:1026600002C00E94DC1E0F900F900F900F900F90F1 +:10267000DF91CF911F910F91FF90EF90DF90CF905E +:102680000C94611F812F837009F070C0F110F1C1AB +:10269000202F229526952770220F220F602F6F7012 +:1026A000862F90E0A0E0B0E06C017D01022E04C016 +:1026B000CC0CDD1CEE1CFF1C0A94D2F704FF12C0E8 +:1026C0008FE090E0A0E0B0E004C0880F991FAA1F3F +:1026D000BB1F2A95D2F7BC01CD01609570958095FE +:1026E000909503C060E070E0CB01169516951370CD +:1026F0001230B1F040F56C297D298E299F291130C7 +:1027000031F10F900F900F900F900F90DF91CF91BC +:102710001F910F91FF90EF90DF90CF900C94CE1906 +:102720006C297D298E299F290F900F900F900F9073 +:102730000F90DF91CF911F910F91FF90EF90DF905D +:10274000CF900C94E8190E94CE19C701B6010F90E2 +:102750000F900F900F900F90DF91CF911F910F91DD +:10276000FF90EF90DF90CF900C94B419FF2019F0F8 +:10277000812F817001C08695882309F47AC1202FAA +:10278000229526952770220F220F602F6F70862FBB +:1027900090E0A0E0B0E06C017D01022E04C0CC0C02 +:1027A000DD1CEE1CFF1C0A94D2F704FF12C08FE060 +:1027B00090E0A0E0B0E004C0880F991FAA1FBB1FE3 +:1027C0002A95D2F7BC01CD016095709580959095C2 +:1027D00003C060E070E0CB011695169513701230BF +:1027E000B1F040F56C297D298E299F29113031F1F6 +:1027F0000F900F900F900F900F90DF91CF911F913E +:102800000F91FF90EF90DF90CF900C94951A6C2968 +:102810007D298E299F290F900F900F900F900F9078 +:10282000DF91CF911F910F91FF90EF90DF90CF90AC +:102830000C94A71A0E94951AC701B6010F900F9029 +:102840000F900F900F90DF91CF911F910F91FF90FC +:10285000EF90DF90CF900C94831A003FC1F128F4E1 +:1028600080E4800F803250F096C0023F09F45EC0D1 +:1028700008F449C0033F09F46CC08DC0F02FF0711B +:10288000EF2E812F8F71FF2051F00E941C1A802F94 +:10289000EE2019F08295807F8BCE8F7089CE0E94BA +:1028A0003D1A802FEE2019F08295807F01C08F7035 +:1028B0000F900F900F900F900F90DF91CF911F917D +:1028C0000F91FF90EF90DF90CF900C940912FF20B2 +:1028D000A9F024E02E1508F4CCC0812F8F710F9041 +:1028E0000F900F900F900F90DF91CF911F910F914C +:1028F000FF90EF90DF90CF900C94621A85E08E15D8 +:1029000008F4B7C0EACFFF2099F0812F8F710F90A4 +:102910000F900F900F900F90DF91CF911F910F911B +:10292000FF90EF90DF90CF900C941C1AFF2069F37A +:10293000812F8F710F900F900F900F900F90DF915C +:10294000CF911F910F91FF90EF90DF90CF900C945B +:102950003D1AFF2089F0812F8F710F900F900F90FB +:102960000F900F90DF91CF911F910F91FF90EF90FB +:10297000DF90CF900C94071A0F900F900F900F904C +:102980000F90DF91CF911F910F91FF90EF90DF900B +:10299000CF900C94021AFF2099F0EE2009F4B5CFE5 +:1029A000802F0F900F900F900F900F90DF91CF918D +:1029B0001F910F91FF90EF90DF90CF900C946B11CF +:1029C000EE2009F4B5CF802F0F900F900F900F904D +:1029D0000F90DF91CF911F910F91FF90EF90DF90BB +:1029E000CF900C94D611412F4F70602FC6010E94DA +:1029F000EE1D0F900F900F900F900F90DF91CF91E1 +:102A00001F910F91FF90EF90DF90CF900C940419DD +:102A100001112FC0FF2069F10E9422129FEFE0E711 +:102A2000F2E09150E040F040E1F700C000000F906C +:102A30000F900F900F900F90DF91CF911F910F91FA +:102A4000FF90EF90DF90CF900C94971D412F4F7027 +:102A5000602FC6010F900F900F900F900F90DF9195 +:102A6000CF911F910F91FF90EF90DF90CF900C943A +:102A7000F11D0F900F900F900F900F90DF91CF915D +:102A80001F910F91FF90EF90DF90CF9008951F93CB +:102A9000CF93DF9300D000D01F92CDB7DEB7942F35 +:102AA0004983252F5A836B837C838D834C815D8181 +:102AB000452B31F02F3F31F481E09F3F19F403C0E3 +:102AC00081E001C080E0182F117080FD31C0498184 +:102AD0005A816B817C818D810E94BA1A292F22959F +:102AE0002F702C3030F42A30A0F42250223030F0F5 +:102AF00022C02C30C9F02F30B9F01DC0853A28F41F +:102B00008430C0F4823028F415C090E2980F9830D9 +:102B100088F0883E30F4803E68F48450813A58F45E +:102B200009C0803F41F406C093FB112710F903C090 +:102B300010E001C011E0812F0F900F900F900F90C7 +:102B40000F90DF91CF911F910895CF93DF9300D025 +:102B500000D01F92CDB7DEB70F900F900F900F905F +:102B60000F90DF91CF910895CF93DF9300D000D0E5 +:102B700000D0CDB7DEB726960FB6F894DEBF0FBEF5 +:102B8000CDBFDF91CF9108951F93CF93DF93C09175 +:102B9000A10216E08091A202C81799F0D0E01C9F14 +:102BA000F0011D9FF00D1124ED55FD4F4081518125 +:102BB00062817381848195810E94B4152196C770CA +:102BC000E9CFDF91CF911F9108954091D3025091A9 +:102BD000D4026091D5027091D6028091D702909173 +:102BE000D8020C94B415CF938091D80282958F703F +:102BF00009F05FC08091D502882309F45AC0809102 +:102C0000A102B091A2027091D302A091D40240918E +:102C1000D6025091D70291E07F3F09F090E0692FF2 +:102C2000C6E08B1709F445C04115510521F0AF3FAF +:102C300021F020E003C021E001C0262F90E020FD1C +:102C400035C0C89FF001C99FF00D1124ED55FD4F0F +:102C500021812A132BC02081271328C02281211112 +:102C600025C0238134812417350710F42150310900 +:102C7000241B350B2C323140C8F42091D8022F7020 +:102C800020612093D80226E0289FF001299FF00DB3 +:102C90001124E855FD4F80818F708061808383ED22 +:102CA00092E00E942612CF910C94C4150196877071 +:102CB000B8CFCF910895AF92BF92CF92DF92EF92AB +:102CC000FF920F931F93CF93DF93CDB7DEB761973A +:102CD0000FB6F894DEBF0FBECDBF7C0185E0F701D3 +:102CE000DE011D9601900D928A95E1F7D7014C9176 +:102CF00011965C9111971296DC90129713960D9194 +:102D00001C9114973091D3026091D4028091D60225 +:102D10009091D702009731F06F3F31F421E03F3FAF +:102D200019F403C021E001C020E0B22FB170BB2E26 +:102D300020FD76C1A090D502AA2009F4D1C020912F +:102D4000D8020817190750F0F801E81BF90BCF015A +:102D5000CC24C3948C329140D0F009C080959095DA +:102D6000800F911FCC24C3948C32914080F0C12CF1 +:102D7000207F09F0A1C0702F198B088B6D2D8989D8 +:102D80000E94A51583ED92E00E942612BDC0822FFD +:102D9000807F09F056C0561315C0431313C0CD2CC5 +:102DA000D11010C02F7020612093D8020E94E51529 +:102DB00083ED92E00E9426128091D802D7011596E9 +:102DC0008C9362C10115110531F05F3F31F481E050 +:102DD0004F3F19F403C081E001C080E080FD03C0D3 +:102DE00081E08D2502C080E090E0B82FB170CB2E3D +:102DF00080FF1CC08091A1022091A20236E08217C0 +:102E000009F41FC190E0389FF001399FF00D1124A3 +:102E1000ED55FD4F6181561306C06081461303C016 +:102E20006281D61203C001968770E9CFCD2CDD20D8 +:102E300009F42AC18091D80281608093D802C12C04 +:102E400023C1561308C0431306C0D11004C080919B +:102E5000D802D701B9C04D875E87DF86702F198BE6 +:102E6000088B6D2D89890E944715882399F1DD20F3 +:102E700089F12091D802822F82958F7090E002977D +:102E800074F08091D3029091D40298878F83198631 +:102E90001B870A872C87CE0107960E94261286E0A0 +:102EA000F701A3EDB2E001900D928A95E1F70E943F +:102EB000F3150E94E51511C0561781F14D875E8705 +:102EC000DF86702F198B088B6D2D89890E9447151D +:102ED000811138C0C7010E942612CC24C394D4C0EB +:102EE0000817190708F446C0F801E81BF90BCF01D1 +:102EF0008C32914008F446C0C12C702F198B088B7E +:102F00006D2D89890E94A515E3EDF2E086E0DF01D1 +:102F10001D928A95E9F70E94E515B6C04313CECFFE +:102F2000D110CCCF8091D802F7018583C7010E94D0 +:102F3000261286E0E3EDF2E0DF011D928A95E9F7C3 +:102F4000CA2CA2C0DD2031F22091D802822F8295B6 +:102F50008F7090E002970CF4A2CF8091D3029091F1 +:102F6000D4029A8389831B821D830C832E83CE0116 +:102F7000019693CF80959095800F911F8C32914050 +:102F800008F0BACFCD2CDD2009F4A4CF561333C0FE +:102F9000431331C02091D80220FD24C0822F829596 +:102FA0008F70482F50E041155105E1F0D70115967B +:102FB0002C9315974F30510549F08F5F982F9295BC +:102FC000907F822F8F70892B15968C93C7010E945A +:102FD000261286E0F701A3EDB2E001900D928A95EA +:102FE000E1F799CF86E0F701A3EDB2E001900D92F1 +:102FF0008A95E1F749C04D875E87DF86702F198B70 +:10300000088B6D2D89890E944715811148CF8091C9 +:10301000D80281608093D802C7010E94261234C072 +:10302000DD2009F457CF4D875E87DF86702F198B1F +:10303000088B6D2D89890E944715882309F44ACF92 +:103040002ECF702F198B088B6D2D89890E94BA1A8B +:10305000292F22952F70223028F49F7039F081118A +:1030600005C00BC0243028F49F7049F4805E88307E +:1030700020F0C7010E942612BC2CCB2C05C0F70102 +:103080009581907F99F7F9CF8C2D61960FB6F894C2 +:10309000DEBF0FBECDBFDF91CF911F910F91FF908B +:1030A000EF90DF90CF90BF90AF9008951F93CF9394 +:1030B000DF93CDB7DEB72C970FB6F894DEBF0FBE07 +:1030C000CDBF4F83588769877A878B879C87CE01CE +:1030D00007960E945B168823D1F09F8188852A85F8 +:1030E0003B85232B31F08F3F31F481E09F3F19F472 +:1030F00003C081E001C080E080FD47C04F8158855A +:1031000069857A858B859C850E94B4153EC086E0D2 +:10311000FE013796DE01119601900D928A95E1F736 +:10312000FF81E8856A857B856115710531F0EF3F88 +:1031300031F481E0FF3F19F403C081E001C080E079 +:1031400080FD23C02091A20230E0C9010196877062 +:1031500099274091A10250E084179507F1F1F98376 +:10316000EA837D836C8396E0929FD001939FB00D9C +:103170001124AD55BD4FFE01319601900D929A95E7 +:10318000E1F78093A2020E94C41516E08091A1028B +:103190009091A202891771F1189FC00111248D55D9 +:1031A0009D4F0E945B16882329F1E091A1021E9F8A +:1031B000F0011124ED55FD4F4081518162817381F1 +:1031C000848195810E94B4158091A10290E00196BE +:1031D000877099278093A102D9CF0E942212109262 +:1031E000A2021092A102E3EDF2E086E0DF011D925F +:1031F0008A95E9F72C960FB6F894DEBF0FBECDBFC7 +:10320000DF91CF911F910895DF92EF92FF920F937C +:103210001F93CF93DF93FC01892B09F488C0E12C25 +:10322000F12CDD24D394EF0121968491853709F4A4 +:1032300060C058F4843708F04EC0843008F068C08D +:103240008130D1F0823071F172C0883709F45BC0EF +:1032500050F4863709F453C0873709F068C08E2DC3 +:103260000E94F01B52C09CE7980F903708F05FC097 +:103270008F770E94D6114EC08F010E5F1F4FFE0147 +:10328000849190E2980F983050F48770FD2D01C022 +:10329000FF0F8A95EAF78F2F0E94F61B15C00E9438 +:1032A0006B1114C08F010E5F1F4FFE01849190E2DD +:1032B000980F983068F48770FD2D01C0FF0F8A9534 +:1032C000EAF78F2F0E94FC1B0E94271CE80122C0F6 +:1032D0000E94D611FBCFCF010296FE01C491CC23F0 +:1032E00061F0EFE9FFE03197F1F700C00000C15055 +:1032F000F6CFCF010296FE01F490EC010BC00E94C4 +:10330000E01BE82E07C00E94F31B0E94271C02C08E +:103310000E946B118F2D882341F0EFE9FFE0319778 +:10332000F1F700C000008150F6CFFE017CCFDF91A5 +:10333000CF911F910F91FF90EF90DF9008956093D0 +:10334000590370935A0380935B0390935C030C942E +:10335000B71C089560935D0370935E0380935F03D1 +:10336000909360030C94B61C0F931F9300915D0320 +:1033700010915E0320915F0330916003602B712BED +:10338000822B932B60935D0370935E0380935F03A6 +:10339000909360031F910F910C94B61C0F931F9391 +:1033A00000915D0310915E0320915F0330916003F3 +:1033B000602371238223932360935D0370935E03E4 +:1033C00080935F03909360031F910F910C94B61C40 +:1033D0000F931F9300915D0310915E0320915F0393 +:1033E00030916003602771278227932760935D03E4 +:1033F00070935E0380935F03909360031F910F911E +:103400000C94B61C60E070E0CB010C949F190F93F4 +:103410001F9341E050E060E070E08A019B0104C02E +:10342000000F111F221F331F8A95D2F7C901B8015F +:103430001F910F910C949F190F931F9341E050E03F +:1034400060E070E004C0440F551F661F771F8A9527 +:10345000D2F78091590390915A03A0915B03B091E8 +:103460005C038A019B01082B192B2A2B3B2BC901DA +:10347000B8011F910F910C949F190F931F9341E076 +:1034800050E060E070E004C0440F551F661F771FD6 +:103490008A95D2F740955095609570958091590323 +:1034A00090915A03A0915B03B0915C038A019B0148 +:1034B000082319232A233B23C901B8011F910F9127 +:1034C0000C949F190F931F9341E050E060E070E06F +:1034D00004C0440F551F661F771F8A95D2F780914D +:1034E000590390915A03A0915B03B0915C038A0148 +:1034F0009B01082719272A273B27C901B8011F91DB +:103500000F910C949F190F931F93009159031091E1 +:103510005A0320915B0330915C03602B712B822B4B +:10352000932B1F910F910C949F190F931F93009150 +:10353000590310915A0320915B0330915C0360237F +:103540007123822393231F910F910C949F190F9342 +:103550001F930091590310915A0320915B033091FE +:103560005C0360277127822793271F910F910C948A +:103570009F1908958F929F92AF92BF92DF92EF9220 +:10358000FF920F931F93CF93DF9300D000D01F9231 +:10359000CDB7DEB76B837C838D838A018C819D815F +:1035A000892B31F01F3F31F481E04F3F19F403C004 +:1035B00081E001C080E080FF03C080E090E04DC06A +:1035C0008B818823D1F18090590390905A03A09069 +:1035D0005B03B0905C0380915D0390915E03A091CA +:1035E0005F03B0916003882A992AAA2ABB2A8FE137 +:1035F000E82EF12CD501C4010E2C04C0B695A79578 +:10360000979587950A94D2F780FD06C081E0E81A65 +:10361000F10880F7D12C07C0DE2CB8018E2D0E9456 +:10362000C51D019799F380E1189FF0011124E7521D +:10363000FD4FE00FF11DD08209C080E1189FF0011D +:103640001124E752FD4FE00FF11DD08009831A834A +:1036500069817A818D2D0E94C51D0F900F900F906A +:103660000F900F90DF91CF911F910F91FF90EF90EE +:10367000DF90BF90AF909F908F90089590910F0131 +:10368000992379F190911001992359F1982F9695EA +:10369000969596959F31A1F0E0911101F09112015C +:1036A000E90FF11D877021E030E0A90102C0440F4D +:1036B000551F8A95E2F7CA019181892B818308956C +:1036C0009091860390FF29C01F928F9385E194E02B +:1036D0009F938F930E9433060F900F900F900F903F +:1036E00008952091110130911201F90132969FEF56 +:1036F00040E05191851789F09F3F19F4511101C0A5 +:10370000942F4F5F4E31A9F79F3F39F0F901E90F30 +:10371000F11D97FDFA9582830895089590910F0108 +:10372000992381F190911001992361F1982F969539 +:10373000969596959F31A9F0E0911101F0911201B3 +:10374000E90FF11D877021E030E0A90102C0440FAC +:10375000551F8A95E2F7CA0180959181892381835B +:1037600008959091860390FF1CC01F928F9387EF5E +:1037700093E09F938F930E9433060F900F900F90CA +:103780000F900895E0911101F09112019F01225EC6 +:103790003F4F9281891301C012823196E217F307DD +:1037A000C1F7089581E090E0E0911101F0911201DC +:1037B000E80FF91F1082019680329105A9F708954C +:1037C00080918503089590918503892B80938503CB +:1037D00008958095909185038923809385030895AA +:1037E0008093850308951092850308959091840332 +:1037F000892B809384030895809590918403892375 +:103800008093840308951092840308958093630342 +:103810000E94301D9093620380936103089510927B +:103820006303109262031092610308958091110165 +:1038300090911201FC0131969C01205E3F4F80E087 +:10384000919191118F5FE217F307D1F70895E091FD +:103850001101F0911201809185038083E0911101A3 +:10386000F0911201908180918403892B8083809153 +:1038700063038823D9F10E94301D209161033091A8 +:1038800062038217930748F00E94301D2091610364 +:1038900030916203821B930B0AC00E94301D20915D +:1038A00061033091620320953095820F931F8C3213 +:1038B000914070F08091860380FF08C083E394E01C +:1038C0009F938F930E9433060F900F900E940F1CBE +:1038D000E0911101F0911201908180916303892B95 +:1038E00080830E94161C81110E940F1C809111017F +:1038F000909112010C947E0F90933F0180933E01B2 +:1039000008958295982F937344E0949F9001112419 +:103910008C7C86958695282B822F8575880F2A7A30 +:103920002695822B0895CF93DF93D92F0E94811C77 +:10393000C82F8D2F0E94811C2C2F30E0322F222780 +:10394000A901482BCA01DF91CF9108950895CF9323 +:10395000DF9300D000D01F92CDB7DEB70F900F904D +:103960000F900F900F90DF91CF91089508950895D3 +:103970000C94EB1080E0089580919B03843021F13A +:103980001092870320E488E190E00FB6F894A895A0 +:10399000809360000FBE2093600083B7817F8460B6 +:1039A00083BF83B7816083BF7894889583B78E7F08 +:1039B00083BF0FB6F894A8958091600088618093CA +:1039C0006000109260000FBE0895CF930E942311F3 +:1039D0000E946B060E942411C0E08C2F0E943207C7 +:1039E000892B29F4CF5FC830C1F780E001C081E0A6 +:1039F000CF9108950E94ED100C9422121F920F9205 +:103A00000FB60F9211248F939F93AF93BF93809122 +:103A10008703811113C08091880390918903A0913D +:103A20008A03B0918B034196A11DB11D8093880339 +:103A300090938903A0938A03B0938B03BF91AF91B6 +:103A40009F918F910F900FBE0F901F90189582E05D +:103A500084BD93E095BD9AEF97BD80936E00089565 +:103A60002FB7F8948091880390918903A0918A03DD +:103A7000B0918B032FBF08952FB7F89460918803FE +:103A80007091890380918A0390918B032FBF0895D1 +:103A9000CF92DF92EF92FF920F931F932FB7F8947C +:103AA000409188035091890360918A0370918B0340 +:103AB0002FBF6A017B01EE24FF248C0120E030E05F +:103AC000C016D106E206F30610F4415051099A01DE +:103AD000281B390BC9011F910F91FF90EF90DF90C8 +:103AE000CF9008951F920F920FB60F9211248F93CB +:103AF0009F93AF93BF938091880390918903A09186 +:103B00008A03B0918B030196A11DB11D8093880398 +:103B100090938903A0938A03B0938B03BF91AF91D5 +:103B20009F918F910F900FBE0F901F9018950E943C +:103B3000860CF89487E797E7909301088093000834 +:103B400087E090EBDC018093A4039093A503A093FE +:103B5000A603B093A7039CE088E10FB6F894A8955C +:103B6000809360000FBE90936000FFCFE82FF0E0DD +:103B700080E1989FE00DF11D1124E052FF4F9491D8 +:103B8000892F8F7092959F700895CF93C82FCB0186 +:103B90000E94B61DE92F90E040E1E49F90011124BE +:103BA000282B392B2038310519F480E090E014C01F +:103BB000E770F0E028E0C29FE00DF11D112424E041 +:103BC000EE0FFF1F2A95E1F7E80FF91FEE0FFF1F19 +:103BD000E050F84985919491CF91089580E090E06C +:103BE0000895089580918E0380FF0BC060911601A7 +:103BF00085E0689FB0011124759567957595679567 +:103C00002BC081FF09C06091160185E0689FB0015B +:103C100011247595679520C082FF07C06091160139 +:103C200085E0689FB001112417C090918F039923FC +:103C3000D1F060911501961788F72091160185E063 +:103C4000289F90011124929FA001939F500D112451 +:103C500070E0CA010E94BE256038710540F461150C +:103C6000710519F406C065E070E0862F08958FE7AE +:103C7000089581E0089580918E0380FF08C06091CF +:103C8000140170E0759567957595679521C081FF62 +:103C900006C06091140170E07595679519C082FFA8 +:103CA00004C06091140170E010C090918F039923BB +:103CB00099F0609113019617A0F780911401899FE4 +:103CC000C001112470E00E94BE256038710540F4E7 +:103CD0006115710519F406C061E070E0862F089542 +:103CE0008FE7089581E00895803F21F40E94F21D3E +:103CF000819504C0813F29F40E94F21D80939203B4 +:103D00000895823F21F40E94F21D819504C0833FF3 +:103D100029F40E94F21D809391030895893F19F4BC +:103D20000E943B1E05C08A3F31F40E943B1E8195D4 +:103D30008093930308958B3F21F40E943B1E81954D +:103D400004C08C3F29F40E943B1E80939403089585 +:103D5000843F21F480919003816017C0853F21F456 +:103D600080919003826011C0863F21F4809190037E +:103D700084600BC0873F21F480919003886005C068 +:103D8000883F31F48091900380618093900308957F +:103D90008D3F21F480918E0381600BC08E3F21F412 +:103DA00080918E03826005C08F3F29F480918E033D +:103DB000846080938E030895803F39F4809192034C +:103DC00087FF6CC01092920369C0813F29F48091F3 +:103DD00092031816BCF362C090919103823F29F4BC +:103DE00097FF5CC01092910359C0833F19F41916D4 +:103DF000CCF354C0893F41F48091930318160CF022 +:103E00004DC0109293034AC08A3F29F480919303D6 +:103E100087FF44C0F6CF8B3F39F48091940387FF2E +:103E20003DC0109294033AC08C3F29F480919403D2 +:103E30001816BCF333C0843F21F4809190038E7F29 +:103E400017C0853F21F4809190038D7F11C0863F7C +:103E500021F4809190038B7F0BC0873F21F48091E8 +:103E60009003877F05C0883F31F4809190038F7E57 +:103E70008093900313C08D3F21F480918E038E7F39 +:103E80000BC08E3F21F480918E038D7F05C08F3F44 +:103E900029F480918E038B7F80938E038091910310 +:103EA00081110EC08091920381110AC08091930309 +:103EB000811106C080919403811102C010928F037A +:103EC00008958091860383FF7EC08CE694E00E9473 +:103ED0009A05809190031F928F9387E694E09F93B9 +:103EE0008F930E94330685E694E00E949A058091A4 +:103EF0009103282F082E000C330B3F938F9382E6FB +:103F000094E09F938F930E94330680E694E00E9492 +:103F10009A0580919203282F082E000C330B3F93B3 +:103F20008F938DE594E09F938F930E9433068BE5EA +:103F300094E00E949A0580919303282F082E000C8C +:103F4000330B3F938F9388E594E09F938F930E9468 +:103F5000330686E594E00E949A0580919403282F09 +:103F6000082E000C330B3F938F9383E594E09F93CF +:103F70008F930E94330680E594E00E949A05809119 +:103F80008F031F928F938DE494E09F938F930E94F1 +:103F900033068BE494E00E949A0580918E031F9271 +:103FA0008F9388E494E09F938F930E94330685E477 +:103FB00094E00E949A058DB79EB74C960FB6F89480 +:103FC0009EBF0FBE8DBF80E993E00E94C70F0E9485 +:103FD000301D90938D0380938C0308951F93CF938E +:103FE000DF9380918C0390918D030E94481DAC015A +:103FF00090918F03992321F02091170130E006C0A2 +:10400000209118018AE0289F90011124421753073C +:1040100008F485C080919103C0919203D0919303DD +:1040200010919403811107C0C11175C0D11173C0E3 +:10403000111171C074C09F3F19F09F5F90938F035F +:10404000181624F40E94F21D80939103809191032D +:1040500087FF05C00E94F21D8195809391031C1675 +:1040600024F40E94F21D809392038091920387FFB3 +:1040700005C00E94F21D8195809392036091910387 +:10408000662331F1C0919203CC2311F1062E000C6E +:10409000770B880B990B0E94C52423E333E343E39A +:1040A0005FE30E9429250E948D24609391036C2F69 +:1040B000CC0F770B880B990B0E94C52423E333E3C5 +:1040C00043E35FE30E9429250E948D2460939203BD +:1040D0001D1624F40E943B1E80939303809193034A +:1040E00087FF05C00E943B1E8195809393031116A4 +:1040F00024F40E943B1E809394038091940387FFD5 +:1041000005C00E943B1E819580939403DF91CF915F +:104110001F910C94611F9F3F09F08FCFA0CFDF91BB +:10412000CF911F910895E0E9F3E085E0DF011D9252 +:104130008A95E9F710928F0310928E0308958FE805 +:1041400096E00E949A051F9281E08F931F9285E06E +:104150008F9381E496E09F938F930E9433060F9094 +:104160000F900F900F900F900F9008958330E9F10A +:1041700028F4813061F0823009F10895853009F426 +:1041800062C008F449C0863009F474C00895809173 +:104190001801262F30E0280F311D2F3F310524F460 +:1041A000680F6093180103C08FEF8093180180910E +:1041B00018011F928F938AE795E072C080911701D2 +:1041C000262F30E0280F311D2F3F310524F4680FD2 +:1041D0006093170103C08FEF80931701809117013F +:1041E0001F928F9388E695E05BC080911601262F81 +:1041F00030E0280F311D2F3F310524F4680F609304 +:10420000160103C08FEF80931601809116011F9253 +:104210008F9385E595E044C080911501262F30E00D +:10422000280F311D2F3F310524F4680F60931501CD +:1042300003C08FEF80931501809115011F928F931A +:1042400080E495E02DC080911401262F30E0280FE6 +:10425000311D2F3F310524F4680F6093140103C012 +:104260008FEF80931401809114011F928F9387E246 +:1042700095E016C080911301262F30E0280F311DE4 +:104280002F3F310524F4680F6093130103C08FEFB3 +:1042900080931301809113011F928F938CE095E01E +:1042A0009F938F930E9433060F900F900F900F9063 +:1042B0000895833081F128F4813059F08230D1F0B3 +:1042C0000895853009F449C0B8F1863009F456C024 +:1042D000089580911801681720F4861B80931801B7 +:1042E00002C010921801809118011F928F938DEFD8 +:1042F00094E054C080911701681720F4861B8093C6 +:10430000170102C010921701809117011F928F931D +:104310008BEE94E043C080911601681720F4861B51 +:104320008093160102C010921601809116011F920F +:104330008F9388ED94E032C080911501681720F4C6 +:10434000861B8093150102C0109215018091150102 +:104350001F928F9383EC94E021C080911401681721 +:1043600020F4861B8093140102C0109214018091E6 +:1043700014011F928F938AEA94E010C08091130178 +:10438000681720F4861B8093130102C0109213015A +:10439000809113011F928F938FE894E09F938F93E6 +:1043A0000E9433060F900F900F900F900895CF93B7 +:1043B000C82F1F928F9384E997E09F938F930E9459 +:1043C000330681E090E0A0E0B0E0BC01CD0104C084 +:1043D000660F771F881F991FCA95D2F70E94AA19E6 +:1043E0000F900F900F900F90CF910C942212CF93BB +:1043F0008732A8F58E3108F02BC1803109F49FC0B7 +:10440000F8F4873009F464C0A8F4863009F024C1B8 +:1044100080918603817F8E7F8093860389E997E070 +:104420000E949A0583E89AE00E949A0581E08093B1 +:1044300096034CC08B30F1F18E3009F46CC00CC186 +:10444000863109F4B0C020F4813109F4EDC004C113 +:10445000893109F491C08B3109F449C0FDC088331A +:1044600049F150F4893209F4F1C0853309F4EEC002 +:10447000873209F0F1C0EAC0833409F4E7C028F4B8 +:104480008A3308F4E9C08953E4C0883409F0E4C0F1 +:104490000E94221282E79AE00E949A052FEF83ED94 +:1044A00090E3215080409040E1F700C000000E945E +:1044B000971D0CC080EC97E05CC089E59AE00E94F3 +:1044C0009A0580918603816080938603C1E0C9C00C +:1044D00080918603C82FC17080FFEFCF85E69AE0F8 +:1044E0000E949A0580918603817F8E7F3DC09091C6 +:1044F000860391FBCC27C0F981E0C827892FC0FB38 +:1045000081F980938603CC2319F08CE49AE027C0CC +:104510008EE39AE02EC09091860392FBCC27C0F9DF +:1045200081E0C827892FC0FB82F980938603CC23C2 +:1045300019F08FE29AE013C08FE19AE01AC09091CF +:10454000860393FBCC27C0F981E0C827892FC0FBE5 +:1045500083F980938603CC2351F083E19AE00E9493 +:104560009A05809186038160809386037AC086E0F5 +:104570009AE00E949A05AACF87EF99E00E949A05D7 +:104580008EEC99E00E949A058CE899E00E949A05C9 +:1045900083E699E00E949A0589E199E00E949A05D4 +:1045A0008EEE98E0E6CF80EE98E00E949A050E9499 +:1045B000720F1F928F9386EC98E09F938F930E94C7 +:1045C000330680910F011F928F938FEA98E09F939B +:1045D0008F930E943306809189021F928F938CE9FA +:1045E00098E09F938F930E943306809110011F9251 +:1045F0008F9389E898E09F938F930E9433060E94DF +:104600003C1D9F938F937F936F9382E798E09F93D6 +:104610008F930E9433068DB79EB746960FB6F894D7 +:104620009EBF0FBE8DBF52CF0E942212C0911001BB +:1046300081E0C827C0931001CC2329F088E698E0D8 +:104640000E949A050EC08DE598E093CF80E001C0EE +:104650008D510E94D7213ACF8BE598E00E949A05B0 +:10466000C0E08C2FCF91089580E008950C943423FE +:10467000CF93C82F80919603813071F020F0823063 +:1046800009F44BC042C1E0911101F0911201808107 +:10469000823209F03CC107C0E0911101F091120192 +:1046A0008081823261F48C2F0E943623811104C0F4 +:1046B0008C2F0E94F7212FC081E090E02CC08C2F1E +:1046C0000E943423811126C0C431E1F070F4CB3054 +:1046D00081F0C031D1F40E949F208CE897E00E94C5 +:1046E0009A0582E08093960315C0C93259F0C83309 +:1046F00061F489E997E00E949A0580E997E00E94B9 +:104700009A0508C01092960304C18AE897E00E94B7 +:104710009A05FFC081E08170FEC0C43228F5CE3119 +:1047200008F0C1C0CB30A1F1D0F4C73009F0D3C03C +:104730008EE18093180182E3809317018AE08093D1 +:10474000160184E18093150188E08093140188E2CA +:104750008093130180E396E00E949A05BFC0C331A5 +:1047600049F1C431C1F0B7C0CB3409F4A9C028F471 +:10477000C93289F0C83361F0AEC0C13509F49EC0BA +:10478000C23509F499C0CE3409F0A5C06AE09EC0D4 +:104790000E949F20A3C080919503882319F0109256 +:1047A00095039CC08DE396E00E949A0581E080937A +:1047B0009603B1C087E196E00E949A0585E096E0F5 +:1047C0000E949A05809118011F928F9382E096E0D3 +:1047D0009F938F930E94330680E096E00E949A0593 +:1047E0008EEE95E00E949A05809117011F928F939B +:1047F0008BEE95E09F938F930E94330689EE95E0B0 +:104800000E949A058AED95E00E949A058091160112 +:104810001F928F9387ED95E09F938F930E943306AD +:1048200085ED95E00E949A0584EC95E00E949A053A +:10483000809115011F928F9381EC95E09F938F9348 +:104840000E9433068FEB95E00E949A058AEA95E074 +:104850000E949A05809114011F928F9387EA95E038 +:104860009F938F930E94330685EA95E00E949A05F4 +:104870008EE895E00E949A05809113011F928F9314 +:104880008BE895E09F938F930E94330689E895E02B +:104890000E949A058DB79EB748960FB6F8949EBFB2 +:1048A0000FBE8DBF1BC0CE51EC2FF0E0ED5CFE4F74 +:1048B00080818093950312C061E003C061E006C06F +:1048C0006AE0809195030E94B62008C0809195030C +:1048D0000E94592103C08EE296E013C08091950397 +:1048E000882369F01F928F9388E296E09F938F93BD +:1048F0000E9433060F900F900F900F9004C085E236 +:1049000096E00E949A0581E006C01092960380E02E +:1049100002C080E000CFCF9108950E949424689453 +:10492000B1110C94232508950E94082588F09F5703 +:1049300098F0B92F9927B751B0F0E1F0660F771FC3 +:10494000881F991F1AF0BA95C9F714C0B13091F0B9 +:104950000E942225B1E008950C942225672F782F1C +:104960008827B85F39F0B93FCCF38695779567957E +:10497000B395D9F73EF490958095709561957F4FEA +:104980008F4F9F4F0895E89409C097FB3EF4909590 +:104990008095709561957F4F8F4F9F4F9923A9F018 +:1049A000F92F96E9BB279395F695879577956795A7 +:1049B000B795F111F8CFFAF4BB0F11F460FF1BC0EB +:1049C0006F5F7F4F8F4F9F4F16C0882311F096E97E +:1049D00011C0772321F09EE8872F762F05C066232C +:1049E00071F096E8862F70E060E02AF09A95660FE5 +:1049F000771F881FDAF7880F9695879597F908959E +:104A000057FD9058440F551F59F05F3F71F047957F +:104A1000880F97FB991F61F09F3F79F08795089564 +:104A2000121613061406551FF2CF4695F1DF08C083 +:104A3000161617061806991FF1CF869571056105A0 +:104A400008940895E894BB2766277727CB0197F948 +:104A500008950E943C250C94AD250E949F2538F0B6 +:104A60000E94A62520F0952311F00C9496250C9415 +:104A70009C2511240C9423250E94002570F3959FFA +:104A8000C1F3950F50E0551F629FF001729FBB2745 +:104A9000F00DB11D639FAA27F00DB11DAA1F649FE1 +:104AA0006627B00DA11D661F829F2227B00DA11D94 +:104AB000621F739FB00DA11D621F839FA00D611D1A +:104AC000221F749F3327A00D611D231F849F600D3B +:104AD000211D822F762F6A2F11249F5750409AF064 +:104AE000F1F088234AF0EE0FFF1FBB1F661F771FF0 +:104AF000881F91505040A9F79E3F510580F00C94BB +:104B000096250C9423255F3FE4F3983ED4F38695D5 +:104B100077956795B795F795E7959F5FC1F7FE2B5A +:104B2000880F911D9695879597F9089597F99F6736 +:104B300080E870E060E008959FEF80EC0895002425 +:104B40000A941616170618060906089500240A94F2 +:104B500012161306140605060895092E0394000C78 +:104B600011F4882352F0BB0F40F4BF2B11F460FF07 +:104B700004C06F5F7F4F8F4F9F4F089597FB072EA5 +:104B800016F4009407D077FD09D00E94D82507FCC1 +:104B900005D03EF4909581959F4F0895709561954D +:104BA0007F4F0895EE0FFF1F0590F491E02D0994BB +:104BB000AA1BBB1B51E107C0AA1FBB1FA617B70743 +:104BC00010F0A61BB70B881F991F5A95A9F780955F +:0C4BD0009095BC01CD010895F894FFCF32 +:104BDC0068010000FF4F07DF07BC0786075207017B +:104BEC000164032808140A321E404D36223956033C +:104BFC000903D302B1027802EB0104021D02360252 +:0E4C0C00560200010203040506070809000015 :106800000000000000000000040005000600070072 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC From 1b581bc173ef1a72852069c9452ee28adb2fbb1d Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 3 Oct 2019 13:41:48 +0900 Subject: [PATCH 55/71] alps64: Change debouncing using timer count --- keyboard/alps64/matrix.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboard/alps64/matrix.c b/keyboard/alps64/matrix.c index 109bcf2c..4a1c84c6 100644 --- a/keyboard/alps64/matrix.c +++ b/keyboard/alps64/matrix.c @@ -25,13 +25,15 @@ along with this program. If not, see . #include "print.h" #include "debug.h" #include "util.h" +#include "timer.h" #include "matrix.h" #ifndef DEBOUNCE # define DEBOUNCE 5 #endif -static uint8_t debouncing = DEBOUNCE; +static bool debouncing = false; +static uint16_t debouncing_time = 0; /* matrix state(1:on, 0:off) */ static matrix_row_t matrix[MATRIX_ROWS]; @@ -70,26 +72,24 @@ uint8_t matrix_scan(void) { for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); - _delay_us(30); // without this wait read unstable value. + _delay_us(1); // delay for settling matrix_row_t cols = read_cols(); if (matrix_debouncing[i] != cols) { - matrix_debouncing[i] = cols; if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); + dprintf("bounce: %d %d@%02X\n", timer_elapsed(debouncing_time), i, matrix_debouncing[i]^cols); } - debouncing = DEBOUNCE; + matrix_debouncing[i] = cols; + debouncing = true; + debouncing_time = timer_read(); } unselect_rows(); } - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debouncing[i]; - } + if (debouncing && timer_elapsed(debouncing_time) >= DEBOUNCE) { + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = matrix_debouncing[i]; } + debouncing = false; } return 1; From beaeed9334868fd6b92360945b2f56a7fd1318f6 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 12 Nov 2019 12:36:49 +0900 Subject: [PATCH 56/71] gh60: Change debouncing using timer count --- keyboard/gh60/matrix.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/keyboard/gh60/matrix.c b/keyboard/gh60/matrix.c index 5a56cee0..451e541a 100644 --- a/keyboard/gh60/matrix.c +++ b/keyboard/gh60/matrix.c @@ -25,13 +25,16 @@ along with this program. If not, see . #include "print.h" #include "debug.h" #include "util.h" +#include "timer.h" #include "matrix.h" #ifndef DEBOUNCE # define DEBOUNCE 5 #endif -static uint8_t debouncing = DEBOUNCE; +static bool debouncing = false; +static uint16_t debouncing_time = 0; + /* matrix state(1:on, 0:off) */ static matrix_row_t matrix[MATRIX_ROWS]; @@ -60,26 +63,24 @@ uint8_t matrix_scan(void) { for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); - _delay_us(30); // without this wait read unstable value. + _delay_us(1); // delay for settling matrix_row_t cols = read_cols(); if (matrix_debouncing[i] != cols) { - matrix_debouncing[i] = cols; if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); + dprintf("bounce: %d %d@%02X\n", timer_elapsed(debouncing_time), i, matrix_debouncing[i]^cols); } - debouncing = DEBOUNCE; + matrix_debouncing[i] = cols; + debouncing = true; + debouncing_time = timer_read(); } unselect_rows(); } - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debouncing[i]; - } + if (debouncing && timer_elapsed(debouncing_time) >= DEBOUNCE) { + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = matrix_debouncing[i]; } + debouncing = false; } return 1; From 3c3d9d4956ac111562181b8e6fcc6925eed981e2 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 12 Nov 2019 12:39:32 +0900 Subject: [PATCH 57/71] alps64: Update firmware binary --- keyboard/alps64/binary/alps64_unimap.hex | 2578 +++++++++++----------- 1 file changed, 1292 insertions(+), 1286 deletions(-) diff --git a/keyboard/alps64/binary/alps64_unimap.hex b/keyboard/alps64/binary/alps64_unimap.hex index 446687cb..16f4355b 100644 --- a/keyboard/alps64/binary/alps64_unimap.hex +++ b/keyboard/alps64/binary/alps64_unimap.hex @@ -1,1293 +1,1299 @@ -:100000000C944E050C9495050C9495050C9495054F -:100010000C9495050C9495050C9495050C949505F8 -:100020000C9495050C9495050C9495050C94640C12 -:100030000C94130D0C94F31B0C9495050C949505DE -:100040000C9495050C9495050C9495050C94671CDF -:100050000C9495050C9495050C9495050C949505B8 -:100060000C9495050C9495050C9495050C949505A8 -:100070000C9495059206950698069B069E06A10689 -:10008000A406800DA20D950EA20D950EE70D0A0E89 -:10009000950E5F0E720E0B120B1235123512901266 -:1000A000C412B414B414DB12B414C613C6138C14E3 -:1000B000B414B414A1147E10360E0F12272D7F37FE +:100000000C9450050C9498050C9498050C94980544 +:100010000C9498050C9498050C9498050C949805EC +:100020000C9498050C9498050C9498050C94770CF6 +:100030000C94260D0C94271C0C9498050C94980590 +:100040000C9498050C9498050C9498050C949B1CA2 +:100050000C9498050C9498050C9498050C949805AC +:100060000C9498050C9498050C9498050C9498059C +:100070000C9498059B069E06A106A406A706AA0650 +:10008000AD06930DB50DA80EB50DA80EFA0D1D0EFB +:10009000A80E720E850E3712371261126112BC1251 +:1000A000F012FE14FE140713FE14F213F213B81428 +:1000B000FE14CD14EB147E10360E0F12272D7F3751 :1000C000383334132F2E7C7D29283130742A7879E7 :1000D00039042B14351E7B641D161A081F207A1B49 :1000E0000709151721222C06190A1C182324650557 -:1000F000110B0D0C25260A002530325800626F7551 -:100100006E6365213A20000A4B6579626F61726403 -:100110002073746172742E0A000A55534220636F73 -:100120006E666967757265642E0A000A0A544D4B43 -:100130003A35386362626235632F4C5546410A0A8C -:10014000000E0341006C00700073003600340000A4 -:1001500000080354004D004B00000004030904098B -:10016000027400040100A03209040000010301012F -:100170000009211101000122400007058103080048 -:100180000A09040100010301020009211101000113 -:10019000224D000705820308000A0904020001033A -:1001A0000000000921110100012236000705830328 -:1001B00008000A09040300020300000009211101DC -:1001C0000001222200070584032000010705040323 -:1001D0002000011201100100000008EDFE6464011E -:1001E00000010200010631FF0974A1010975150023 -:1001F00026FF009520750881020976150026FF006C -:10020000952075089102C005010980A1018502169B -:1002100001002637001A81002AB700751095018168 -:1002200000C0050C0901A1018503160100269C02EE -:100230001A01002A9C02751095018100C005010970 -:1002400002A1010901A100050919012905150025CF -:10025000019505750181029501750381010501096B -:100260003009311581257F950275088106093815F9 -:1002700081257F950175088106050C0A38021581D4 -:10028000257F950175088106C0C005010906A101F9 -:10029000050719E029E71500250195087501810278 -:1002A0009501750881010508190129059505750154 -:1002B00091029501750391010507190029FF1500A9 -:1002C00026FF00950675088100C0636F6E73756D1B -:1002D00065723A20253034580A0073797374656D5D -:1002E0003A20253034580A000A00253032582000C0 -:1002F0006B6579626F6172643A20004C45443A2024 -:10030000253032580A00253032583A2025303862DC -:1003100025730A00722F632030313233343536377B -:100320000A00646F6E652E0A00626F6F746D6167FC -:100330006963207363616E3A202E2E2E2000290AF5 -:10034000002575002F002575005D2800256400201C -:1003500000256400200025640020002564007C0046 -:1003600025303258006D6F7573656B6579205B625F -:10037000746E7C782079207620685D287265702FF5 -:1003800061636C293A205B006D6B5F776865656C13 -:100390005F74696D655F746F5F6D6178203D2025C6 -:1003A000640A006D6B5F776865656C5F6D61785F8F -:1003B0007370656564203D2025640A006D6B5F7471 -:1003C000696D655F746F5F6D6178203D2025640AFB -:1003D000006D6B5F6D61785F7370656564203D20B3 -:1003E00025640A006D6B5F696E74657276616C20BE -:1003F0003D2025640A006D6B5F64656C6179203D6A -:100400002025640A006D6B5F776865656C5F7469B1 -:100410006D655F746F5F6D6178203D2025640A0013 -:100420006D6B5F776865656C5F6D61785F73706534 -:100430006564203D2025640A006D6B5F74696D65FD -:100440005F746F5F6D6178203D2025640A006D6BDD -:100450005F6D61785F7370656564203D2025640A77 -:10046000006D6B5F696E74657276616C203D20254E -:10047000640A006D6B5F64656C6179203D202564C2 -:100480000A000A00257500363A20776865656C5FBA -:1004900074696D655F746F5F6D61783A20000A0062 -:1004A000257500353A20776865656C5F6D61785F0A -:1004B00073706565643A20000A00257500343A209F -:1004C00074696D655F746F5F6D61783A20000A0032 -:1004D000257500333A206D61785F73706565643A05 -:1004E00020000A00257500323A20696E7465727624 -:1004F000616C286D73293A20000A00257500313A95 -:100500002064656C6179282A31306D73293A2000A6 -:100510000A092D2056616C756573202D0A004D3E29 -:10052000004D25643E20003F0073657420646566BD -:1005300061756C740A00433E20007768657265201F -:1005400064656C74613A20637572736F723D2564E3 -:100550002C20776865656C3D25640A5365652068C5 -:100560007474703A2F2F656E2E77696B69706564AD -:1005700069612E6F72672F77696B692F4D6F757385 -:10058000655F6B6579730A000A092D204D6F7573DD -:10059000656B6579202D0A4553432F713A097175B2 -:1005A00069740A313A0964656C6179282A31306DC1 -:1005B00073290A323A09696E74657276616C286D26 -:1005C00073290A333A096D61785F73706565640A4F -:1005D000343A0974696D655F746F5F6D61780A35CF -:1005E0003A09776865656C5F6D61785F7370656502 -:1005F000640A363A09776865656C5F74696D655F92 -:10060000746F5F6D61780A0A703A097072696E746E -:100610002076616C7565730A643A097365742064A9 -:10062000656661756C74730A75703A092B310A64DA -:100630006F776E3A092D310A706775703A092B3160 -:10064000300A7067646F776E3A092D31300A0A7389 -:1006500070656564203D2064656C7461202A206D9E -:1006600061785F7370656564202A20287265706503 -:100670006174202F2074696D655F746F5F6D6178A0 -:10068000290A003F004D3E2000433E20004C2564D7 -:100690000A000A092D20436F6E736F6C65202D0AC6 -:1006A0004553432F713A09717569740A6D3A096DA2 -:1006B0006F7573656B65790A000A092D204D6167B6 -:1006C0006963202D0A643A0964656275670A783A9D -:1006D000096465627567206D61747269780A6B3AA6 -:1006E000096465627567206B6579626F6172640A7F -:1006F0006D3A096465627567206D6F7573650A767A -:100700003A0976657273696F6E0A733A0973746198 -:100710007475730A633A09636F6E736F6C65206D4D -:100720006F64650A302D343A096C61796572302D39 -:1007300034284631302D4634290A506175733A0900 -:10074000626F6F746C6F616465720A653A09656502 -:1007500070726F6D0A000A002575002E6E6B726F45 -:100760003A20000A002575002E737761705F626180 -:10077000636B736C6173685F6261636B73706163F9 -:10078000653A20000A002575002E737761705F6757 -:10079000726176655F6573633A20000A0025750013 -:1007A0002E6E6F5F6775693A20000A002575002E6E -:1007B000737761705F72616C745F726775693A20FC -:1007C000000A002575002E737761705F6C616C7490 -:1007D0005F6C6775693A20000A002575002E636119 -:1007E00070736C6F636B5F746F5F636F6E74726F47 -:1007F0006C3A20000A002575002E737761705F63E4 -:100800006F6E74726F6C5F636170736C6F636B3A61 -:1008100020000A0025303258006B65796D61705FE9 -:10082000636F6E6669672E7261773A20000A002551 -:1008300075002E6D6F7573653A20000A00257500EE -:100840002E6B6579626F6172643A20000A0025752B -:10085000002E6D61747269783A20000A00257500D7 -:100860002E656E61626C653A20000A0025303258B0 -:100870000064656275675F636F6E6669672E72619B -:10088000773A20000A0025750064656661756C740E -:100890005F6C617965723A20003F0074696D657222 -:1008A0005F72656164333228293A202530346C58F0 -:1008B0000A006B6579626F6172645F69646C653AA6 -:1008C0002025580A006B6579626F6172645F7072EF -:1008D0006F746F636F6C3A2025580A00686F7374E9 -:1008E0005F6B6579626F6172645F6C656473282900 -:1008F0003A2025580A000A092D2053746174757333 -:10090000202D0A004743433A20352E342E30204113 -:1009100056522D4C4942433A20322E302E3020413F -:1009200056525F415243483A2061767233350A008D -:100930004F5054494F4E533A204C55464120424F58 -:100940004F544D41474943204D4F5553454B455911 -:100950002045585452414B455920434F4E534F4C1C -:100960004520434F4D4D414E44204B45594D41503C -:100970005F53454354494F4E20343039360A0042C4 -:1009800055494C443A203538636262623563202809 -:1009900031313A31303A3031204D617920333020D5 -:1009A00032303139290A005649443A2030784645D8 -:1009B000454428544D4B29205049443A203078363C -:1009C00034363428416C7073363429205645523AF7 -:1009D000203078303030310A00444553433A2054B7 -:1009E0004D4B206B6579626F617264206669726D30 -:1009F0007761726520666F7220416C707336340ABD -:100A0000000A092D2056657273696F6E202D0A0049 -:100A10000A6D6F7573653A206F66660A000A6D6F1E -:100A20007573653A206F6E0A000A6B6579626F61B3 -:100A300072643A206F66660A000A6B6579626F61BC -:100A400072643A206F6E0A000A6D61747269783AB6 -:100A5000206F66660A000A6D61747269783A206FC9 -:100A60006E0A000A64656275673A206F6E0A000AB2 -:100A700064656275673A206F66660A000A0A626FEB -:100A80006F746C6F616465722E2E2E2000433E20C1 -:100A9000006565636F6E6669673A0A0011241FBEC0 -:100AA000CFEFD4E0DEBFCDBF04B603FE27C08091F8 -:100AB000110390911203A0911303B0911403873096 -:100AC000904BA740B04BD1F4109211031092120337 -:100AD000109213031092140314BE84B7877F84BF4F -:100AE0000FB6F894A89580916000886180936000AB -:100AF000109260000FBEE0E0F8E3099511E0A0E07D -:100B0000B1E0E4E5F0E502C005900D92A833B1072D -:100B1000D9F723E0A8E3B1E001C01D92A131B207EB -:100B2000E1F70E944D090C9428280C940000FF93D3 -:100B3000EF93E0913801F0913901309709F0099570 -:100B4000EF91FF910895FC018591803011F0EFDF66 -:100B5000FBCF0895FF27E0E230E247FF0CC041954C -:100B600097FF09C0EDE26095709580959095611DA5 -:100B7000711D811D911D27FF02C0219530E350E2B8 -:100B8000AA27660F771F881F991FAA1FA41710F0A6 -:100B9000A41B63955A95A9F7AA3008F0A95FA05D38 -:100BA000AF93F395611571058105910541F7ED321C -:100BB00011F4EF93F395F21718F43F93F395FBCFED -:100BC0008F91B5DFFA95E1F70895E991F991859153 -:100BD000803021F0853219F0AADFF9CF089520E0A6 -:100BE000E89455915532C1F3503311F468945591FE -:100BF0005A3348F4505390F3220F022E220F220F43 -:100C0000200D250FF4CF0EF421958991999153363B -:100C100019F3533729F1533559F1BC018827992726 -:100C2000E8945C3621F489919991689455915436F1 -:100C300039F446EF7EF077FF0DC08FEF9FEF0AC0CB -:100C400055374AE039F0583540E121F0523642E05C -:100C500009F00895FF93EF937DDFEF91FF91B7CFF8 -:100C6000FF93EF93FC0181918030B9F360DFFBCFFC -:100C7000FF93EF9368DFF1CFDF93CF93CDB7DEB76C -:100C80002596A3DFCF91DF9108958AB180788AB944 -:100C90008BB180788BB93A98429808950E944506A6 -:100CA00084B114B885B18FEF85B9E2E4F1E0AAE32D -:100CB000B1E011921D9221E0EA34F207D1F7809160 -:100CC000F20282608093F2023D9A459A8FEF99E694 -:100CD00028E1815090402040E1F700C000003D989D -:100CE00045980895CF92DF92EF92FF920F931F9352 -:100CF000CF93DF930AE311E0E801D12C85E0C82E01 -:100D000098EFE92E90E0F92E8D2D90E0FC013197BF -:100D1000E730F10520F4E65CFF4F0C94DD27509A94 -:100D2000589814C0519A599811C0529A5A980EC0A6 -:100D3000539A5B980BC0549A5C9808C0559A5D987A -:100D400005C0569A5E9802C03A9A429880EA8A95FF -:100D5000F1F783B180959881981739F18883809154 -:100D60000001882301F18091F20280FF04C08DEF21 -:100D700090E00E94A3058091F20280FF0CC0809158 -:100D800000011F928F93FF92EF920E943C060F90FA -:100D90000F900F900F908091F20280FF04C086EFB9 -:100DA00090E00E94A305C09200010E944506D394E2 -:100DB000219698E0D912A8CF809100018823B1F044 -:100DC000815080930001882339F0AFE9BFE011978B -:100DD000F1F700C000000AC0E2E4F1E0D8018D9113 -:100DE0008D018193B1E002341B07C1F781E0DF91EF -:100DF000CF911F910F91FF90EF90DF90CF900895CA -:100E0000E82FF0E0EE5BFE4F8081089581FF03C084 -:100E10003D9A459A08953D984598089580915602C7 -:100E20000895CF93DF9300D01F92CDB7DEB79C011A -:100E300080910703843019F593E099833B832A83DB -:100E40009093E9008FEF9091E800815095FD06C0E6 -:100E500095ED9A95F1F700008111F5CF8091E800AA -:100E600085FF0DC040E050E063E070E0CE010196E8 -:100E70000E94760A8091E8008E778093E8000F90B8 -:100E80000F900F90DF91CF910895CF93DF9300D013 -:100E90001F92CDB7DEB720910703243031F522E051 -:100EA0002983805891099B838A8383E08093E9009A -:100EB0008FEF9091E800815095FD06C095ED9A95D1 -:100EC000F1F700008111F5CF8091E80085FF0DC09A -:100ED00040E050E063E070E0CE0101960E94760AA7 -:100EE0008091E8008E778093E8000F900F900F902C -:100EF000DF91CF910895209107032430F1F422E08F -:100F00002093E9002FEF3091E800215035FD06C015 -:100F100035ED3A95F1F700002111F5CF2091E80069 -:100F200025FF0BC040E050E065E070E00E94760ACB -:100F30008091E8008E778093E8000895CF93DF9347 -:100F400020910703243049F521E02093E90021E8AE -:100F5000215059F03091E80035FD07C0EFE3F1E092 -:100F60003197F1F700C00000F3CF2091E80025FF92 -:100F700014C0EC0140E050E068E070E00E94760AA6 -:100F80008091E8008E778093E80088E0FE01AEE46F -:100F9000B2E001900D928A95E1F7DF91CF9108952B -:100FA000CF93C0914C01C1110BC00E94311C643C15 -:100FB00079408105910520F081E080934C01C1E0EA -:100FC0008C2FCF910895CF93C82F0E94D0078823EC -:100FD00009F448C00FB607FE45C08091070384306E -:100FE00009F040C08091E9008F702091EC00922FB1 -:100FF000917020FD90E8892B94E09093E900909106 -:10100000EB0090FF2CC09091EE0097FF28C09091CC -:10101000040120910301291709F447C02091E80039 -:1010200025FF1DC0E0910101F0910201E90FF11DC2 -:1010300030819F5F209105019223909304013093AA -:10104000F1009091E80095FDE2CF9091E80090FFCB -:10105000DECF9091E8009E779093E800D8CF8F7014 -:101060008093E9008091030190E0AC014F5F5F4FF6 -:1010700030910501232F30E02423352340910401D2 -:1010800050E024173507D1F0209101013091020181 -:10109000F901E80FF91FC083809103018F5F9091E0 -:1010A000050189238093030109C09091E80095FF11 -:1010B000D6CFC093F1008F708093E90080E0CF918C -:1010C00008950895089542E061EC81E00E947A0B52 -:1010D00042E061EC82E00E947A0B42E061EC83E046 -:1010E0000E947A0B42E261EC84E00C947A0B8091CE -:1010F0000903833009F453C030F4813071F0823039 -:1011000009F48CC008958A3009F478C08B3009F452 -:101110005EC0893009F09AC020C080910803813AEE -:1011200009F094C08091E800877F8093E800809167 -:101130000C0390910D03892B21F468E08EE492E07A -:1011400003C060E080E090E070E00E94C10A8091FE -:10115000E8008B778093E80008958091080381323E -:1011600009F074C080910C0390910D03892B09F054 -:101170006DC08091E800877F8093E8008091E8004F -:1011800082FD05C0809107038111F8CF5FC0809177 -:10119000F100809356028091E8008B7753C08091D4 -:1011A0000803813A09F052C080910C0390910D031D -:1011B000892B09F04BC08091E800877F8093E8007D -:1011C0008091E80080FFFCCF8091100136C08091B3 -:1011D00008038132D9F580910C0390910D03892B7E -:1011E000A9F58091E800877F8093E8000E94AF0B0B -:1011F00080910A03809310010C94D4148091080309 -:10120000813221F58091E800877F8093E8000E9479 -:10121000AF0B80910B0380935702089580910803D0 -:10122000813AA1F48091E800877F8093E800809163 -:10123000E80080FFFCCF809157028093F1008091FD -:10124000E8008E778093E8000C94AF0B08958091AE -:10125000560280934D01109256020E9419100C9470 -:10126000D4140C9427090E94B21B80910503882393 -:1012700029F00E94DB1B81110C94600A08950E94E2 -:10128000EF1B80914D018093560208950C943F0905 -:1012900008950C9448090C944809CF9384B7877F2C -:1012A00084BF0FB6F894A895809160008861809300 -:1012B0006000109260000FBE90E080E80FB6F894D6 -:1012C00080936100909361000FBE83EE97E00E94CF -:1012D000841B86E091E00E94AD0E8BE291E00E94BB -:1012E000A3050E944B090E946C0F0E94010C0E94F2 -:1012F000540C8091E20084608093E20078940E9414 -:101300006E0F80910703843019F00E944809F9CFCD -:1013100089E191E00E94A3050E94490987E091E0DC -:101320000E94A305C4E080910703853019F40E9450 -:101330003309F9CF0E94740F2091E4003091E50049 -:1013400080914A0190914B012817390761F38091F0 -:10135000E4009091E50090934B0180934A010E9434 -:10136000D007882301F3809107038430E1F6809150 -:10137000E9008F702091EC00922F917020FD90E891 -:10138000892BC093E9009091EB0090FF3FC09091B2 -:10139000EE0097FF3BC090910401209103012917B3 -:1013A00009F12091E80025FF1DC0E0910101F091B5 -:1013B0000201E90FF11D30819F5F20910501922309 -:1013C000909304013093F1009091E80095FDE3CFF4 -:1013D0009091E80090FFDFCF9091E8009E77909386 -:1013E000E800D9CF9091F200992381F09091E80024 -:1013F00090FF0CC09091E80095FF03C01092F1009F -:10140000F9CF9091E8009E779093E8008F708093D9 -:10141000E90089CF292F332723303105C9F060F443 -:101420002130310581F02230310509F041C084E7D7 -:1014300090E02FE531E040C021323105E1F0223269 -:10144000310531F135C082E190E023ED31E034C067 -:1014500099278130910549F028F0029749F5E1E498 -:10146000F1E005C0EBE5F1E002C0E1E5F1E08491D7 -:1014700090E09F0121C06430D8F4E62FF0E0EE0F39 -:10148000FF1FEB5DFE4F2081318189E090E014C0A9 -:10149000643070F470E0FB01EE0FFF1FE35EFE4F5F -:1014A00020813181FB01E75EFE4F808190E004C026 -:1014B00080E090E020E030E0FA013183208308955D -:1014C00084E089BD86E089BD09B400FEFDCF80912E -:1014D000D8008F7D8093D8008091E0008260809357 -:1014E000E0008091E00081FDFCCF0895CF92DF9273 -:1014F000EF92FF920F931F93CF93DF93EC018B0139 -:101500007A010E94CE0B811133C0E114F10439F04D -:10151000F70180819181081B190BC80FD91FC12CBD -:10152000D12C0115110519F18091E80085FD16C037 -:101530008091E8008E778093E800E114F10449F08F -:10154000F70180819181C80ED91ED182C08285E0C9 -:101550000FC00E94CE0B882321F30AC0899180938B -:10156000F10001501109FFEFCF1ADF0ADACF80E056 -:10157000DF91CF911F910F91FF90EF90DF90CF906F -:10158000089520910E0330910F032617370748F076 -:101590006115710539F42091E8002E772093E80059 -:1015A00001C0B901FC0120E06115710561F1809174 -:1015B00007038823D9F18530D9F18091E80083FDB4 -:1015C00039C08091E80082FD2BC08091E80080FF47 -:1015D000EBCF8091F20090E06115710551F08830F9 -:1015E000910538F421912093F10061507109019621 -:1015F000F3CF21E0089709F020E08091E8008E7792 -:101600008093E800D1CF2111D2CF0AC08091070387 -:10161000882361F0853061F08091E80083FD0AC085 -:101620008091E80082FFF2CF80E0089582E0089583 -:1016300083E0089581E0089520910E0330910F0317 -:101640002617370748F06115710539F42091E80035 -:101650002E772093E80001C0B901FC0120E061155C -:10166000710579F180910703882309F43DC0853025 -:1016700009F43CC08091E80083FD3AC08091E80005 -:1016800082FD2CC08091E80080FFE9CF8091F200BC -:1016900090E06115710559F08830910540F424916E -:1016A0002093F1003196615071090196F2CF21E04B -:1016B000089709F020E08091E8008E778093E80099 -:1016C000CECF2111CFCF0AC080910703882361F0CC -:1016D000853061F08091E80083FD0AC08091E800C8 -:1016E00082FFF2CF80E0089582E0089583E00895BC -:1016F00081E00895982F953068F59093E900981748 -:1017000039F07091EC002091ED005091F00003C091 -:10171000242F762F50E021FD02C09F5FECCF309147 -:10172000EB003E7F3093EB003091ED003D7F309336 -:10173000ED003091EB0031603093EB007093EC00E2 -:101740002093ED005093F0002091EE0027FDE5CFAF -:1017500080E008958F708093E90081E00895809182 -:10176000080387FF11C08091E80082FD05C08091C9 -:1017700007038111F8CF11C08091E8008B770BC06F -:1017800080910703882349F08091E80080FFF8CF1B -:101790008091E8008E778093E80008952091E4001E -:1017A0003091E50095E64091EC00842F817040FF78 -:1017B00023C08091E80080FD1DC08091070388232D -:1017C00099F0853099F08091EB0085FD11C0409132 -:1017D000E4005091E5002417350729F3915011F0EA -:1017E0009A01E1CF84E0089582E0089583E00895AE -:1017F00081E0089580E008954091E80042FFDDCF48 -:1018000008950E945E0C0E94610CE0EEF0E0808181 -:1018100081608083E8EDF0E080818F77808319BC60 -:10182000E3E6F0E0808181608083109206030895F2 -:101830000E945E0C0E94610C8091D8008F7780938B -:10184000D8008091D80080688093D8008091D8001B -:101850008F7D8093D80084E089BD86E089BD09B47E -:1018600000FEFDCF109207031092030310920503B0 -:101870001092040342E060E080E00E947A0B8091C5 -:10188000E1008E7F8093E1008091E200816080938F -:10189000E2008091E20088608093E2008091E000A5 -:1018A0008E7F8093E0000895E3E6F0E080818E7FF4 -:1018B000808381E0809306030C94180C1092E20060 -:1018C00008951092E10008951F920F920FB60F92A3 -:1018D00011242F933F934F935F936F937F938F9335 -:1018E0009F93AF93BF93EF93FF938091E10082FFAB -:1018F0000BC08091E20082FF07C08091E1008B7FE6 -:101900008093E1000E9462088091E10080FF19C08D -:101910008091E20080FF15C08091E2008E7F80936D -:10192000E2008091E20080618093E2008091D80023 -:1019300080628093D80019BC85E0809307030E94E1 -:1019400031098091E10084FF30C08091E20084FF82 -:101950002CC084E089BD86E089BD09B400FEFDCFBE -:101960008091D8008F7D8093D8008091E1008F7E98 -:101970008093E1008091E2008F7E8093E20080916D -:10198000E20081608093E20080910303882311F0DC -:1019900084E007C08091E30087FD02C081E001C0C0 -:1019A00083E0809307030E9446098091E10083FF52 -:1019B00029C08091E20083FF25C08091E100877FEC -:1019C0008093E10082E080930703109203038091EB -:1019D000E1008E7F8093E1008091E2008E7F809312 -:1019E000E2008091E20080618093E20042E060E0EA -:1019F00080E00E947A0B8091F00088608093F00074 -:101A00000E946108FF91EF91BF91AF919F918F91DB -:101A10007F916F915F914F913F912F910F900FBEEA -:101A20000F901F9018951F920F920FB60F921124CE -:101A30002F933F934F935F936F937F938F939F93D6 -:101A4000AF93BF93CF93DF93EF93FF93C091E900E0 -:101A5000CF708091EC00D82FD17080FDD0E810922B -:101A6000E9008091F000877F8093F00078940E94D5 -:101A7000570D1092E9008091F00088608093F0008B -:101A8000CD2BCF70C093E900FF91EF91DF91CF9103 -:101A9000BF91AF919F918F917F916F915F914F9186 -:101AA0003F912F910F900FBE0F901F9018951F938D -:101AB000CF93DF93CDB7DEB7AA970FB6F894DEBF0A -:101AC0000FBECDBFE8E0F3E08091F100819323E009 -:101AD000E031F207C9F70E9477088091E80083FFA0 -:101AE00024C18091080390910903492F50E04A30A6 -:101AF000510508F01AC1FA01EF5BFF4F0C94DD2786 -:101B0000803881F0823809F010C180910C038F7009 -:101B10008093E9008091EB0085FB882780F9109283 -:101B2000E90006C080910403909105039111826041 -:101B30009091E800977F9093E8008093F1001092D5 -:101B4000F100C8C0282F2D7F09F0EFC0882319F0BD -:101B5000823061F0EAC080910A03813009F0E5C06B -:101B6000933009F080E0809305032BC080910A0335 -:101B7000811127C080910C038F7009F4D6C0809327 -:101B8000E9002091EB0020FF1CC0933021F48091EC -:101B9000EB00806214C09091EB0090619093EB0099 -:101BA00021E030E0A90102C0440F551F8A95E2F7F9 -:101BB0004093EA001092EA008091EB0088608093E5 -:101BC000EB001092E9008091E800877F86C08111C8 -:101BD000ACC010910A031F778091E3008078812BBD -:101BE0008093E3008091E800877F8093E8000E9463 -:101BF000AF0B8091E80080FFFCCF8091E30080680C -:101C00008093E300111102C082E001C083E0809361 -:101C100007038BC08058823008F087C080910A0388 -:101C200090910B038C3D53E0950779F583E08A830F -:101C30008AE289834FB7F894DE01139620E03EE0F4 -:101C400051E2E32FF0E050935700E49120FF03C0EE -:101C5000E295EF703F5FEF708E2F90E0EA3010F06A -:101C6000C79601C0C0968D939D932F5F243149F78D -:101C70004FBF8091E800877F8093E8006AE270E0C0 -:101C8000CE0101960E94C10A14C0AE014F5F5F4FA2 -:101C900060910C030E940A0ABC01892B09F445C01B -:101CA0009091E800977F9093E80089819A810E9443 -:101CB0001C0B8091E8008B778093E80036C0803859 -:101CC000A1F58091E800877F8093E800809103036D -:101CD0008093F1008091E8008E778093E8000E9465 -:101CE000AF0B23C0811121C080910A0390910B0397 -:101CF00099270297D4F48091E800877F8093E800C9 -:101D000080910A03809303030E94AF0B8091030329 -:101D1000811106C08091E30087FD02C081E001C00F -:101D200084E0809307030E9463088091E80083FFAA -:101D30000AC08091E800877F8093E8008091EB00E3 -:101D400080628093EB00AA960FB6F894DEBF0FBEB8 -:101D5000CDBFDF91CF911F91089590935D02809345 -:101D60005C020895E0915C02F0915D02309721F0F1 -:101D70000190F081E02D099480E00895EF92FF92A8 -:101D80000F931F93CF93DF93E0915C02F0915D027C -:101D90003097B1F18C010280F381E02D099580919B -:101DA000F20282FF2DC080FF04C080EF92E00E940B -:101DB000A305E80118E08AEEE82E82E0F82E809173 -:101DC000F20280FF0BC088811F928F93FF92EF92E7 -:101DD0000E943C060F900F900F900F90115021968B -:101DE0001111EDCF8091F20280FF0AC088EE92E0DF -:101DF000DF91CF911F910F91FF90EF900C94A3056D -:101E0000DF91CF911F910F91FF90EF900895E09196 -:101E10005C02F0915D02309721F00480F581E02DA5 -:101E200009940895CF93DF9320915A0230915B0279 -:101E30002817390709F190935B0280935A02E091C9 -:101E40005C02F0915D023097B9F0EC010680F781F9 -:101E5000E02D09958091F20282FF0EC080FF0CC038 -:101E6000DF93CF938AED92E09F938F930E943C067D -:101E70000F900F900F900F90DF91CF910895CF9317 -:101E8000DF9320915802309159022817390709F140 -:101E90009093590280935802E0915C02F0915D02A8 -:101EA0003097B9F0EC010084F185E02D099580911F -:101EB000F20282FF0EC080FF0CC0DF93CF938AEC4A -:101EC00092E09F938F930E943C060F900F900F908B -:101ED0000F90DF91CF9108950C941A100E941C1C52 -:101EE0000E944E060C94431DBF92CF92DF92EF9258 -:101EF000FF920F931F93CF93DF9300D000D01F92D8 -:101F0000CDB7DEB70E9472060FE512E0F12C8F2DDF -:101F10000E940007B82EF801C080C82639F4F39457 -:101F20000F5F1F4FF8E0FF12F2CF30C08091F20236 -:101F300081FD0E941B10D12CEE24E3948C2D8E2168 -:101F4000F9F0D982FA8291E08B2D8E2109F490E08C -:101F50009B830E94251C8160782F9D838C834981FF -:101F60005A816B818D810E94511049815A816B8108 -:101F70007C818D810E949C1BF80180818E2580834D -:101F8000D394EE0CF8E0DF12D9CFC9CF8FEF89835D -:101F90008A831B820E94251C8160782F9D838C83FD -:101FA00049815A816B818D810E9451100E949B1B37 -:101FB0000E94CA200E94B20E90915E02891741F1E0 -:101FC0000E94B20E80935E029091F20292FF0EC0C8 -:101FD00090FF0CC01F928F938BEF92E09F938F9393 -:101FE0000E943C060F900F900F900F9080915E0220 -:101FF0000F900F900F900F900F90DF91CF911F9146 -:102000000F91FF90EF90DF90CF90BF900C94AD1B9D -:102010000F900F900F900F900F90DF91CF911F9125 -:102020000F91FF90EF90DF90CF90BF9008950C94A8 -:10203000060708950895EF92FF920F931F93CF9391 -:10204000DF9384E193E00E94A305C0E0D0E08DE23D -:10205000E82E81E0F82E06E013E08C2F0E940007A6 -:102060000E94891BFF92EF921F928F93DF93CF9371 -:102070001F930F930E943C0621968DB79EB708963A -:102080000FB6F8949EBF0FBE8DBFC830D10529F79B -:10209000DF91CF911F910F91FF90EF9008950895D8 -:1020A0000895CF93DF93CDB7DEB72B970FB6F89493 -:1020B000DEBF0FBECDBF942F4F83252F5887698772 -:1020C0007A878B874A855B85452B31F02F3F31F42A -:1020D00081E09F3F19F403C081E001C080E080FDF2 -:1020E00007C04F81588569857A858B850E949C1B26 -:1020F000DE01119686E0FD0111928A95E9F785E0EF -:10210000FE01379601900D928A95E1F749815A8137 -:102110006B817C818D819E810E94F2172B960FB678 -:10212000F894DEBF0FBECDBFDF91CF910895CF935E -:10213000882309F4A9C0C82F8238A1F40E94B20EE6 -:1021400081FDA2C089E30E94E61A0E945E1B2FEF68 -:1021500081EE94E0215080409040E1F700C0000003 -:1021600089E315C08338C1F40E94B20E80FD8CC093 -:1021700083E50E94E61A0E945E1B2FEF81EE94E039 -:10218000215080409040E1F700C0000083E50E94AC -:10219000031BCF910C945E1B8438A1F40E94B20EF5 -:1021A00082FD72C087E40E94E61A0E945E1B2FEF38 -:1021B00081EE94E0215080409040E1F700C00000A3 -:1021C00087E4E5CF8CEF8C0F813A20F080E58C0F0F -:1021D0008E3248F48C2F0E942A25811155C08C2FF5 -:1021E0000E94E61AD6CF80E28C0F883048F4C77080 -:1021F00081E001C0880FCA95EAF70E94241BC9CF6D -:102200008BE58C0F833078F4C53A29F0C63A31F06B -:1022100083E890E005C081E890E002C082E890E0A9 -:10222000CF910C94120F88E58C0F853168F5C83A70 -:1022300089F0C93A91F0CA3A99F0CB3AA1F0CC3A78 -:10224000A9F0CD3AB1F0CE3AB9F0CF3AC1F080E082 -:1022500090E017C082EE90E014C089EE90E011C0CB -:102260008AEE90E00EC085EB90E00BC086EB90E02C -:1022700008C083EB90E005C084EB90E002C087EBE0 -:1022800090E0CF910C943F0FCF910895882309F4EB -:102290006AC08238A1F40E94B20E81FF64C089E353 -:1022A0000E94E61A0E945E1B2FEF81EE94E02150FF -:1022B00080409040E1F700C0000089E315C08338FA -:1022C000B9F40E94B20E80FF4EC083E50E94E61A68 -:1022D0000E945E1B2FEF81EE94E0215080409040E1 -:1022E000E1F700C0000083E50E94031B0C945E1B15 -:1022F0008438A1F40E94B20E82FF35C087E40E94A8 -:10230000E61A0E945E1B2FEF81EE94E02150804080 -:102310009040E1F700C0000087E4E6CF9CEF980F03 -:10232000913A10F390E5980F9E32F0F290E2980FF8 -:10233000983050F4877091E001C0990F8A95EAF7C0 -:10234000892F0E942A1BD2CF9BE5980F933020F44F -:1023500080E090E00C94120F885A853120F480E0E0 -:1023600090E00C943F0F0895882321F00E94241BD5 -:102370000C945E1B0895882321F00E942A1B0C9464 -:102380005E1B0895CF92DF92EF92FF920F931F93FF -:10239000CF93DF9300D000D01F92CDB7DEB76C0192 -:1023A0000E94B01B8111E0C285E0F601DE011196AA -:1023B00001900D928A95E1F7F601408151812381C8 -:1023C00034812115310531F05F3F31F481E04F3F19 -:1023D00019F403C081E001C080E080FDC5C2F601B0 -:1023E000F280E580E2948FE0E822722F3D832C8317 -:1023F0006F2D8D810E945B1A8C010E945A1A0E94D7 -:102400004A19E12FE295EF708E2F90E0FC01E55B19 -:10241000FF4F0C94DD27812F807F1F70882311F0E0 -:102420001295107FFF2049F0112309F452C2812F29 -:102430000E94371B0E945E1B4CC2802F0E944611D7 -:10244000112309F491C2812F0E943D1B0F900F9020 -:102450000F900F900F90DF91CF911F910F91FF90F0 -:10246000EF90DF90CF900C945E1B812F807F1F70C8 -:10247000803211F01295107F002319F0013009F11C -:102480002BC0FF20A9F0EE2059F1F1E0812FEF12CF -:1024900028C00F900F900F900F900F90DF91CF9169 -:1024A0001F910F91FF90EF90DF90CF900C94471BFE -:1024B000EE2021F081E0E81609F456C20E944A1B82 -:1024C0002DC0FF20E9F0E5E0EE1508F44DC20E94B2 -:1024D000211B812329F022C0FF20F1F0E11015C05B -:1024E000812F0F900F900F900F900F90DF91CF9151 -:1024F0001F910F91FF90EF90DF90CF900C94B4114B -:10250000F4E0FE1508F430C209C0F601858180FFB1 -:10251000E0C18F708583E4CFE110EEC1812F61C1EE -:10252000812F86958695837019F08130B9F01CC291 -:10253000FF2019F0C801937002C080E090E00F9076 -:102540000F900F900F900F90DF91CF911F910F91EF -:10255000FF90EF90DF90CF900C94120FFF2019F0B6 -:10256000C801937002C080E090E00F900F900F9030 -:102570000F900F90DF91CF911F910F91FF90EF90EF -:10258000DF90CF900C943F0F802FFF2019F00E9416 -:10259000501F02C00E94B81F0F900F900F900F9015 -:1025A0000F90DF91CF911F910F91FF90EF90DF90EF -:1025B000CF900C943D20812F837009F070C0F110F2 -:1025C000D3C1202F229526952770220F220F602F2E -:1025D0006F70862F90E0A0E0B0E06C017D01022ECC -:1025E00004C0CC0CDD1CEE1CFF1C0A94D2F704FFC7 -:1025F00012C08FE090E0A0E0B0E004C0880F991F07 -:10260000AA1FBB1F2A95D2F7BC01CD01609570951A -:102610008095909503C060E070E0CB01169516950B -:1026200013701230B1F040F56C297D298E299F2955 -:10263000113031F10F900F900F900F900F90DF91AC -:10264000CF911F910F91FF90EF90DF90CF900C945E -:102650006F196C297D298E299F290F900F900F905B -:102660000F900F90DF91CF911F910F91FF90EF90FE -:10267000DF90CF900C9489190E946F19C701B601A1 -:102680000F900F900F900F900F90DF91CF911F91AF -:102690000F91FF90EF90DF90CF900C945519FF2091 -:1026A00019F0812F817001C08695882309F45CC1DF -:1026B000202F229526952770220F220F602F6F70F2 -:1026C000862F90E0A0E0B0E06C017D01022E04C0F6 -:1026D000CC0CDD1CEE1CFF1C0A94D2F704FF12C0C8 -:1026E0008FE090E0A0E0B0E004C0880F991FAA1F1F -:1026F000BB1F2A95D2F7BC01CD01609570958095DE -:10270000909503C060E070E0CB01169516951370AC -:102710001230B1F040F56C297D298E299F291130A6 -:1027200031F10F900F900F900F900F90DF91CF919C -:102730001F910F91FF90EF90DF90CF900C94361A7D -:102740006C297D298E299F290F900F900F900F9053 -:102750000F90DF91CF911F910F91FF90EF90DF903D -:10276000CF900C94481A0E94361AC701B6010F90F8 -:102770000F900F900F900F90DF91CF911F910F91BD -:10278000FF90EF90DF90CF900C94241A003FC1F19E -:1027900028F480E4800F803250F096C0023F09F4A4 -:1027A0005EC008F449C0033F09F46CC08DC0F02F2F -:1027B000F071EF2E812F8F71FF2051F00E94BD1913 -:1027C000802FEE2019F08295807F8BCE8F7089CE7E -:1027D0000E94DE19802FEE2019F08295807F01C0C3 -:1027E0008F700F900F900F900F900F90DF91CF91FF -:1027F0001F910F91FF90EF90DF90CF900C94BB1141 -:10280000FF20A9F084E08E1508F4AEC0812F8F71EF -:102810000F900F900F900F900F90DF91CF911F911D -:102820000F91FF90EF90DF90CF900C94031AE5E0AA -:10283000EE1508F499C0EACFFF2099F0812F8F712F -:102840000F900F900F900F900F90DF91CF911F91ED -:102850000F91FF90EF90DF90CF900C94BD19FF2067 -:1028600069F3812F8F710F900F900F900F900F9041 -:10287000DF91CF911F910F91FF90EF90DF90CF905C -:102880000C94DE19FF2089F0812F8F710F900F902B -:102890000F900F900F90DF91CF911F910F91FF90AC -:1028A000EF90DF90CF900C94A8190F900F900F909D -:1028B0000F900F90DF91CF911F910F91FF90EF90AC -:1028C000DF90CF900C94A319FF2099F0EE2009F42B -:1028D000B5CF802F0F900F900F900F900F90DF913A -:1028E000CF911F910F91FF90EF90DF90CF900C94BC -:1028F0009710EE2009F4B5CF802F0F900F900F9016 -:102900000F900F90DF91CF911F910F91FF90EF905B -:10291000DF90CF900C944611412F4F70602FC6016D -:102920000E94EE1C0F900F900F900F900F90DF9170 -:10293000CF911F910F91FF90EF90DF90CF900C946B -:10294000A518412F4F70602FC6010F900F900F9068 -:102950000F900F90DF91CF911F910F91FF90EF900B -:10296000DF90CF900C94F11C0F900F900F900F9070 -:102970000F90DF91CF911F910F91FF90EF90DF901B -:10298000CF9008950E94441B0E94131B0E945E1B5F -:102990000E9470210E943D2080E090E00E94120F72 -:1029A00080E090E00C943F0F0E94341B0C94C21402 -:1029B0001F93CF93DF9300D000D01F92CDB7DEB727 -:1029C000942F4983252F5A836B837C838D834C817D -:1029D0005D81452B31F02F3F31F481E09F3F19F4A9 -:1029E00003C081E001C080E0182F117080FD31C06C -:1029F00049815A816B817C818D810E945B1A292FCC -:102A000022952F702C3030F42A30A0F4225022303E -:102A100030F022C02C30C9F02F30B9F01DC0853AFB -:102A200028F48430C0F4823028F415C090E2980F66 -:102A3000983088F0883E30F4803E68F48450813AC3 -:102A400058F409C0803F41F406C093FB112710F9E8 -:102A500003C010E001C011E0812F0F900F900F9084 -:102A60000F900F90DF91CF911F910895CF93DF9337 -:102A700000D000D01F92CDB7DEB70F900F900F900F -:102A80000F900F90DF91CF910895CF93DF9300D0F7 -:102A900000D000D0CDB7DEB726960FB6F894DEBFD3 -:102AA0000FBECDBFDF91CF910895CF93DF93C0913B -:102AB000670280916802C817A1F0D0E0CE0166E0FD -:102AC00070E00E94B827FC01E759FD4F4081518119 -:102AD00062817381848195810E9445152196C7701A -:102AE000E8CFDF91CF9108954091990250919A02D9 -:102AF00060919B0270919C0280919D0290919E0238 -:102B00000C9445151F93CF93DF9380919E0282957D -:102B10008F7009F066C080919B02882309F461C020 -:102B20002091670210916802C0919902D0919A0297 -:102B3000E0919C02F0919D0281E0CF3F09F080E09E -:102B4000482F211709F44DC0309721F0DF3F21F0C5 -:102B500080E003C081E001C0842F30E080FD3DC0F3 -:102B6000C90166E070E00E94B827DC01A759BD4F9B -:102B700011968C9111978D1330C08C918C132DC0B0 -:102B800012968C911297811128C013968D919C9169 -:102B900014978E179F0708F401978E1B9F0B883C94 -:102BA0009105D8F480919E028F70806180939E027F -:102BB000C90166E070E00E94B827FC01E259FD4FB0 -:102BC00090819F709061908389E992E00E94C21188 -:102BD000DF91CF911F910C9455152F5F3F4F2770B8 -:102BE000B0CFDF91CF911F910895AF92BF92CF9256 -:102BF000DF92EF92FF920F931F93CF93DF93CDB7A6 -:102C0000DEB761970FB6F894DEBF0FBECDBF7C0173 -:102C100085E0F701DE011D9601900D928A95E1F79E -:102C2000D7014C9111962C9111971296DC90129726 -:102C300013960D911C9114975091990260919A02EC -:102C400080919C0290919D02009731F06F3F31F48A -:102C500031E05F3F19F403C031E001C030E0B32F31 -:102C6000B170BB2E30FD76C1A0909B02AA2009F462 -:102C7000D2C030919E020817190728F0F801E81B0E -:102C8000F90BCF0104C080959095800F911FCC2443 -:102C9000C394883C910588F0C12C307F09F0A6C010 -:102CA000702F198B088B522F6D2D89890E94361534 -:102CB00089E992E00E94C211C3C0832F807F09F08E -:102CC00059C0261315C0451313C0CD2CD11010C008 -:102CD0003F70306130939E020E94741589E992E042 -:102CE0000E94C21180919E02D70115968C9368C1F3 -:102CF0000115110531F02F3F31F481E04F3F19F4F8 -:102D000003C081E001C080E080FD03C081E08D252B -:102D100002C080E090E0B82FB170CB2E80FF1FC0C2 -:102D2000E091670230916802E31709F425C1F0E0F1 -:102D3000CF0166E070E00E94B827DC01A759BD4FC3 -:102D400011968C911197281307C08C91481304C0D9 -:102D500012968C91D81203C03196E770E5CFCD2C36 -:102D6000DD2009F42DC180919E02816080939E0236 -:102D7000C12C26C1261308C0451306C0D11004C0BB -:102D800080919E02D701B9C04D872E87DF86702FB4 -:102D9000198B088B522F6D2D89890E94D814882396 -:102DA000A1F1DD2091F120919E02822F82958F70FA -:102DB00090E0029774F08091990290919A0298871E -:102DC0008F8319861B870A872C87CE0107960E945E -:102DD000C21186E0F701A9E9B2E001900D928A954F -:102DE000E1F70E9482150E94741512C0261791F116 +:1000F000110B0D0C2526626F756E63653A20256421 +:1001000020256440253032580A000A4B6579626F19 +:100110006172642073746172742E0A000A5553422E +:1001200020636F6E666967757265642E0A000A0A3D +:10013000544D4B3A31623538316263312F4C55465C +:10014000410A0A000E0341006C0070007300360083 +:1001500034000000080354004D004B00000004036D +:10016000090409027400040100A03209040000011E +:10017000030101000921110100012240000705814E +:100180000308000A0904010001030102000921110A +:10019000010001224D000705820308000A0904023C +:1001A00000010300000009211101000122360007AF +:1001B00005830308000A0904030002030000000984 +:1001C00021110100012222000705840320000107FC +:1001D0000504032000011201100100000008EDFEDB +:1001E00064640100010200010631FF0974A10109E4 +:1001F00075150026FF009520750881020976150007 +:1002000026FF00952075089102C005010980A10113 +:1002100085021601002637001A81002AB7007510E2 +:1002200095018100C0050C0901A10185031601009B +:10023000269C021A01002A9C02751095018100C0BB +:1002400005010902A1010901A100050919012905FA +:100250001500250195057501810295017503810140 +:100260000501093009311581257F95027508810640 +:1002700009381581257F950175088106050C0A3816 +:10028000021581257F950175088106C0C005010909 +:1002900006A101050719E029E71500250195087554 +:1002A000018102950175088101050819012905954B +:1002B0000575019102950175039101050719002942 +:1002C000FF150026FF00950675088100C0636F6E5C +:1002D00073756D65723A20253034580A007379734E +:1002E00074656D3A20253034580A000A00253032F2 +:1002F0005820006B6579626F6172643A20004C454A +:10030000443A20253032580A00253032583A202508 +:1003100030386225730A00722F6320303132333453 +:100320003536370A00646F6E652E0A00626F6F748F +:100330006D61676963207363616E3A202E2E2E20F3 +:1003400000290A002575002F002575005D2800256D +:10035000640020002564002000256400200025643E +:10036000007C0025303258006D6F7573656B6579C0 +:10037000205B62746E7C782079207620685D28721C +:1003800065702F61636C293A205B006D6B5F776845 +:1003900065656C5F74696D655F746F5F6D61782012 +:1003A0003D2025640A006D6B5F776865656C5F6D45 +:1003B00061785F7370656564203D2025640A006D77 +:1003C0006B5F74696D655F746F5F6D6178203D2050 +:1003D00025640A006D6B5F6D61785F73706565649D +:1003E000203D2025640A006D6B5F696E746572762E +:1003F000616C203D2025640A006D6B5F64656C6153 +:1004000079203D2025640A006D6B5F776865656C17 +:100410005F74696D655F746F5F6D6178203D202545 +:10042000640A006D6B5F776865656C5F6D61785F0E +:100430007370656564203D2025640A006D6B5F74F0 +:10044000696D655F746F5F6D6178203D2025640A7A +:10045000006D6B5F6D61785F7370656564203D2032 +:1004600025640A006D6B5F696E74657276616C203D +:100470003D2025640A006D6B5F64656C6179203DE9 +:100480002025640A000A00257500363A2077686541 +:10049000656C5F74696D655F746F5F6D61783A203C +:1004A000000A00257500353A20776865656C5F6D38 +:1004B00061785F73706565643A20000A00257500F5 +:1004C000343A2074696D655F746F5F6D61783A20AE +:1004D000000A00257500333A206D61785F737065FE +:1004E00065643A20000A00257500323A20696E746E +:1004F000657276616C286D73293A20000A002575B3 +:1005000000313A2064656C6179282A31306D732995 +:100510003A20000A092D2056616C756573202D0A5A +:10052000004D3E004D25643E20003F007365742061 +:1005300064656661756C740A00433E2000776865E7 +:1005400072652064656C74613A20637572736F72B2 +:100550003D25642C20776865656C3D25640A5365EC +:100560006520687474703A2F2F656E2E77696B69F9 +:1005700070656469612E6F72672F77696B692F4DA3 +:100580006F7573655F6B6579730A000A092D204DDD +:100590006F7573656B6579202D0A4553432F713A4A +:1005A00009717569740A313A0964656C6179282AA0 +:1005B00031306D73290A323A09696E746572766159 +:1005C0006C286D73290A333A096D61785F73706521 +:1005D00065640A343A0974696D655F746F5F6D61B3 +:1005E000780A353A09776865656C5F6D61785F7385 +:1005F000706565640A363A09776865656C5F746989 +:100600006D655F746F5F6D61780A0A703A09707288 +:10061000696E742076616C7565730A643A09736556 +:10062000742064656661756C74730A75703A092B81 +:10063000310A646F776E3A092D310A706775703A26 +:10064000092B31300A7067646F776E3A092D3130AB +:100650000A0A7370656564203D2064656C746120CE +:100660002A206D61785F7370656564202A20287286 +:100670006570656174202F2074696D655F746F5FAC +:100680006D6178290A003F004D3E2000433E200066 +:100690004C25640A000A092D20436F6E736F6C6548 +:1006A000202D0A4553432F713A09717569740A6DFB +:1006B0003A096D6F7573656B65790A000A092D201B +:1006C0004D61676963202D0A643A09646562756744 +:1006D0000A783A096465627567206D617472697899 +:1006E0000A6B3A096465627567206B6579626F61B0 +:1006F00072640A6D3A096465627567206D6F75737F +:10070000650A763A0976657273696F6E0A733A09FB +:100710007374617475730A633A09636F6E736F6CF7 +:1007200065206D6F64650A302D343A096C61796516 +:1007300072302D34284631302D4634290A506175E7 +:10074000733A09626F6F746C6F616465720A653A1F +:1007500009656570726F6D0A000A002575002E6EBE +:100760006B726F3A20000A002575002E7377617056 +:100770005F6261636B736C6173685F6261636B730B +:10078000706163653A20000A002575002E73776159 +:10079000705F67726176655F6573633A20000A0077 +:1007A0002575002E6E6F5F6775693A20000A002577 +:1007B00075002E737761705F72616C745F7267751C +:1007C000693A20000A002575002E737761705F6C0E +:1007D000616C745F6C6775693A20000A00257500CA +:1007E0002E636170736C6F636B5F746F5F636F6EAA +:1007F00074726F6C3A20000A002575002E737761C1 +:10080000705F636F6E74726F6C5F636170736C6F37 +:10081000636B3A20000A0025303258006B65796D11 +:1008200061705F636F6E6669672E7261773A200050 +:100830000A002575002E6D6F7573653A20000A0059 +:100840002575002E6B6579626F6172643A20000A2B +:10085000002575002E6D61747269783A20000A00D7 +:100860002575002E656E61626C653A20000A0025D0 +:100870003032580064656275675F636F6E666967E2 +:100880002E7261773A20000A002575006465666162 +:10089000756C745F6C617965723A20003F00746911 +:1008A0006D65725F72656164333228293A202530A4 +:1008B000346C580A006B6579626F6172645F6964B9 +:1008C0006C653A2025580A006B6579626F61726425 +:1008D0005F70726F746F636F6C3A2025580A0068FE +:1008E0006F73745F6B6579626F6172645F6C65646E +:1008F0007328293A2025580A000A092D20537461CB +:10090000747573202D0A004743433A20352E342E48 +:1009100030204156522D4C4942433A20322E302E3F +:1009200030204156525F415243483A20617672333B +:10093000350A004F5054494F4E533A204C554641CA +:1009400020424F4F544D41474943204D4F55534549 +:100950004B45592045585452414B455920434F4E21 +:10096000534F4C4520434F4D4D414E44204B45592C +:100970004D41505F53454354494F4E203430393632 +:100980000A004255494C443A20316235383162639D +:1009900031202831313A35363A3130204E6F7620C9 +:1009A00031322032303139290A005649443A203058 +:1009B000784645454428544D4B29205049443A2017 +:1009C00030783634363428416C70733634292056EA +:1009D00045523A203078303030310A004445534394 +:1009E0003A20544D4B206B6579626F6172642066CA +:1009F00069726D7761726520666F7220416C7073E9 +:100A000036340A000A092D2056657273696F6E200C +:100A10002D0A000A6D6F7573653A206F66660A00CD +:100A20000A6D6F7573653A206F6E0A000A6B6579FF +:100A3000626F6172643A206F66660A000A6B6579BC +:100A4000626F6172643A206F6E0A000A6D6174729F +:100A500069783A206F66660A000A6D617472697877 +:100A60003A206F6E0A000A64656275673A206F6EFD +:100A70000A000A64656275673A206F66660A000AB2 +:100A80000A626F6F746C6F616465722E2E2E200087 +:100A9000433E20006565636F6E6669673A0A000031 +:100AA00011241FBECFEFD4E0DEBFCDBF04B603FEDE +:100AB00028C08091140390911503A0911603B09162 +:100AC00017038730904BA740B04BD9F41092140312 +:100AD00010921503109216031092170314BE0FB64E +:100AE000F894A895809160008861809360001092CE +:100AF00060000FBE1092010810920008E0E0F8E3D9 +:100B0000099511E0A0E0B1E0E6EBF0E502C0059048 +:100B10000D92A833B107D9F723E0A8E3B1E001C0F3 +:100B20001D92A431B207E1F70E9460090C94592884 +:100B30000C940000FF93EF93E0913801F09139019C +:100B4000309709F00995EF91FF910895FC01859187 +:100B5000803011F0EFDFFBCF0895FF27E0E230E2B5 +:100B600047FF0CC0419597FF09C0EDE26095709575 +:100B700080959095611D711D811D911D27FF02C0FB +:100B8000219530E350E2AA27660F771F881F991F2F +:100B9000AA1FA41710F0A41B63955A95A9F7AA30B1 +:100BA00008F0A95FA05DAF93F3956115710581050C +:100BB000910541F7ED3211F4EF93F395F21718F424 +:100BC0003F93F395FBCF8F91B5DFFA95E1F7089549 +:100BD000E991F9918591803021F0853219F0AADFF1 +:100BE000F9CF089520E0E89455915532C1F3503380 +:100BF00011F4689455915A3348F4505390F3220FEE +:100C0000022E220F220F200D250FF4CF0EF4219576 +:100C100089919991533619F3533729F1533559F185 +:100C2000BC0188279927E8945C3621F48991999131 +:100C300068945591543639F446EF7EF077FF0DC035 +:100C40008FEF9FEF0AC055374AE039F0583540E141 +:100C500021F0523642E009F00895FF93EF937DDFD3 +:100C6000EF91FF91B7CFFF93EF93FC01819180301B +:100C7000B9F360DFFBCFFF93EF9368DFF1CFDF9332 +:100C8000CF93CDB7DEB72596A3DFCF91DF9108953F +:100C90008AB180788AB98BB180788BB93A984298BA +:100CA00008950E94480684B114B885B18FEF85B9C4 +:100CB000E2E4F1E0AAE3B1E011921D9221E0EA340E +:100CC000F207D1F78091F50282608093F5023D9A98 +:100CD000459A8FEF99E628E1815090402040E1F756 +:100CE00000C000003D98459808959F92AF92BF9232 +:100CF000CF92DF92EF92FF920F931F93CF93DF93E8 +:100D00008AE3E82E81E0F82E8701C0E0D0E0992444 +:100D1000939496EFC92E90E0D92E8C2F90E0FC0191 +:100D20003197E730F10520F4E65CFF4F0C940E2874 +:100D3000509A589814C0519A599811C0529A5A987A +:100D40000EC0539A5B980BC0549A5C9808C0559A91 +:100D50005D9805C0569A5E9802C03A9A429885E01E +:100D60008A95F1F70000B3B0B094D801AC90AB1401 +:100D700059F180914C018823E9F08091F50280FFC0 +:100D800019C080914A0190914B010E94711CAB24C3 +:100D90001F92AF92DF93CF939F938F93DF92CF9267 +:100DA0000E943F068DB79EB708960FB6F8949EBF77 +:100DB0000FBE8DBFD801BC9290924C010E94591C6D +:100DC00090934B0180934A010E94480621960F5F41 +:100DD0001F4FC830D10509F0A0CF80914C01882366 +:100DE000A9F080914A0190914B010E94711C0597D6 +:100DF00068F0E2E4F1E0D7018D917D018193B2E4E6 +:100E0000EB16B1E0FB06B9F710924C0181E0DF91DF +:100E1000CF911F910F91FF90EF90DF90CF90BF90F7 +:100E2000AF909F900895E82FF0E0EE5BFE4F808139 +:100E3000089581FF03C03D9A459A08953D984598CD +:100E40000895809159020895CF93DF9300D01F92A7 +:100E5000CDB7DEB79C0180910A03843019F593E089 +:100E600099833B832A839093E9008FEF9091E80068 +:100E7000815095FD06C095ED9A95F1F7000081111E +:100E8000F5CF8091E80085FF0DC040E050E063E0C1 +:100E900070E0CE0101960E94890A8091E8008E7769 +:100EA0008093E8000F900F900F90DF91CF910895FD +:100EB000CF93DF9300D01F92CDB7DEB720910A0306 +:100EC000243031F522E02983805891099B838A835D +:100ED00083E08093E9008FEF9091E800815095FDC9 +:100EE00006C095ED9A95F1F700008111F5CF80913C +:100EF000E80085FF0DC040E050E063E070E0CE0107 +:100F000001960E94890A8091E8008E778093E8001C +:100F10000F900F900F90DF91CF91089520910A03C9 +:100F20002430F1F422E02093E9002FEF3091E80023 +:100F3000215035FD06C035ED3A95F1F7000021113D +:100F4000F5CF2091E80025FF0BC040E050E065E0C0 +:100F500070E00E94890A8091E8008E778093E80013 +:100F60000895CF93DF9320910A03243049F521E0BF +:100F70002093E90021E8215059F03091E80035FD37 +:100F800007C0EFE3F1E03197F1F700C00000F3CFC5 +:100F90002091E80025FF14C0EC0140E050E068E03B +:100FA00070E00E94890A8091E8008E778093E800C3 +:100FB00088E0FE01A1E5B2E001900D928A95E1F78B +:100FC000DF91CF910895CF93C0914F01C1110BC014 +:100FD0000E94651C643C79408105910520F081E008 +:100FE00080934F01C1E08C2FCF910895CF93C82FEC +:100FF0000E94E307882309F448C00FB607FE45C0E6 +:1010000080910A03843009F040C08091E9008F701C +:101010002091EC00922F917020FD90E8892B94E0B4 +:101020009093E9009091EB0090FF2CC09091EE001E +:1010300097FF28C09091030120910201291709F41C +:1010400047C02091E80025FF1DC0E0910001F0910C +:101050000101E90FF11D30819F5F2091040192236E +:10106000909303013093F1009091E80095FDE2CF59 +:101070009091E80090FFDECF9091E8009E779093EA +:10108000E800D8CF8F708093E9008091020190E052 +:10109000AC014F5F5F4F30910401232F30E02423D8 +:1010A00035234091030150E024173507D1F02091FA +:1010B000000130910101F901E80FF91FC08380910F +:1010C00002018F5F9091040189238093020109C07E +:1010D0009091E80095FFD6CFC093F1008F70809378 +:1010E000E90080E0CF9108950895089542E061EC11 +:1010F00081E00E948D0B42E061EC82E00E948D0B4A +:1011000042E061EC83E00E948D0B42E261EC84E0FE +:101110000C948D0B80910C03833009F453C030F490 +:10112000813071F0823009F48CC008958A3009F45E +:1011300078C08B3009F45EC0893009F09AC020C0B5 +:1011400080910B03813A09F094C08091E800877F79 +:101150008093E80080910F0390911003892B21F474 +:1011600068E081E592E003C060E080E090E070E03C +:101170000E94D40A8091E8008B778093E80008955C +:1011800080910B03813209F074C080910F0390911C +:101190001003892B09F06DC08091E800877F809350 +:1011A000E8008091E80082FD05C080910A0381116A +:1011B000F8CF5FC08091F100809359028091E800E0 +:1011C0008B7753C080910B03813A09F052C0809114 +:1011D0000F0390911003892B09F04BC08091E80018 +:1011E000877F8093E8008091E80080FFFCCF8091AA +:1011F0000F0136C080910B038132D9F580910F0326 +:1012000090911003892BA9F58091E800877F809346 +:10121000E8000E94C20B80910D0380930F010C9493 +:10122000E71180910B03813221F58091E800877FDF +:101230008093E8000E94C20B80910E0380935A02B3 +:10124000089580910B03813AA1F48091E800877F93 +:101250008093E8008091E80080FFFCCF80915A02E3 +:101260008093F1008091E8008E778093E8000C94E1 +:10127000C20B089580915902809350011092590237 +:101280000E942C100C94E7110C943A090E94E61B62 +:1012900080910803882329F00E940F1C81110C946F +:1012A000730A08950E94231C809150018093590273 +:1012B00008950C94520908950C945B090C945B09F1 +:1012C000CF9384B7877F84BF0FB6F894A895809199 +:1012D0006000886180936000109260000FBE90E013 +:1012E00080E80FB6F89480936100909361000FBE80 +:1012F00086EF97E00E94B81B85E091E00E94C00E47 +:101300008EE291E00E94A6050E945E090E947F0F76 +:101310000E94140C0E94670C8091E200846080930C +:10132000E20078940E94810F80910A03843019F0C2 +:101330000E945B09F9CF8CE191E00E94A6050E9412 +:101340005C098AE091E00E94A605C4E080910A034E +:10135000853019F40E944609F9CF0E94870F209129 +:10136000E4003091E50080914D0190914E012817E5 +:10137000390761F38091E4009091E50090934E016C +:1013800080934D010E94E307882301F380910A03B3 +:101390008430E1F68091E9008F702091EC00922F6B +:1013A000917020FD90E8892BC093E9009091EB00AB +:1013B00090FF3FC09091EE0097FF3BC090910301DA +:1013C00020910201291709F12091E80025FF1DC095 +:1013D000E0910001F0910101E90FF11D30819F5F63 +:1013E000209104019223909303013093F100909196 +:1013F000E80095FDE3CF9091E80090FFDFCF90915A +:10140000E8009E779093E800D9CF9091F20099235D +:1014100081F09091E80090FF0CC09091E80095FF5A +:1014200003C01092F100F9CF9091E8009E7790935D +:10143000E8008F708093E90089CF292F332723306C +:101440003105C9F060F42130310581F022303105D9 +:1014500009F041C084E790E022E631E040C021324B +:101460003105E1F02232310531F135C082E190E001 +:1014700026ED31E034C099278130910549F028F0FC +:10148000029749F5E4E4F1E005C0EEE5F1E002C0C1 +:10149000E4E5F1E0849190E09F0121C06430D8F44C +:1014A000E62FF0E0EE0FFF1FEC5DFE4F2081318153 +:1014B00089E090E014C0643070F470E0FB01EE0F3E +:1014C000FF1FE45EFE4F20813181FB01E85EFE4F8D +:1014D000808190E004C080E090E020E030E0FA01FC +:1014E00031832083089584E089BD86E089BD09B4F5 +:1014F00000FEFDCF8091D8008F7D8093D800809131 +:10150000E00082608093E0008091E00081FDFCCFEC +:101510000895CF92DF92EF92FF920F931F93CF9394 +:10152000DF93EC018B017A010E94E10B811133C042 +:10153000E114F10439F0F70180819181081B190B46 +:10154000C80FD91FC12CD12C0115110519F180919B +:10155000E80085FD16C08091E8008E778093E80052 +:10156000E114F10449F0F70180819181C80ED91E80 +:10157000D182C08285E00FC00E94E10B882321F355 +:101580000AC089918093F10001501109FFEFCF1A31 +:10159000DF0ADACF80E0DF91CF911F910F91FF90AA +:1015A000EF90DF90CF9008952091110330911203B6 +:1015B0002617370748F06115710539F42091E800C6 +:1015C0002E772093E80001C0B901FC0120E06115ED +:1015D000710561F180910A038823D9F18530D9F131 +:1015E0008091E80083FD39C08091E80082FD2BC026 +:1015F0008091E80080FFEBCF8091F20090E06115D0 +:10160000710551F08830910538F421912093F10053 +:10161000615071090196F3CF21E0089709F020E0AD +:101620008091E8008E778093E800D1CF2111D2CF4E +:101630000AC080910A03882361F0853061F08091AF +:10164000E80083FD0AC08091E80082FFF2CF80E0CD +:10165000089582E0089583E0089581E0089520913F +:101660001103309112032617370748F061157105F1 +:1016700039F42091E8002E772093E80001C0B901E9 +:10168000FC0120E06115710579F180910A0388233E +:1016900009F43DC0853009F43CC08091E80083FD29 +:1016A0003AC08091E80082FD2CC08091E80080FF64 +:1016B000E9CF8091F20090E06115710559F0883012 +:1016C000910540F424912093F10031966150710905 +:1016D0000196F2CF21E0089709F020E08091E80020 +:1016E0008E778093E800CECF2111CFCF0AC08091B2 +:1016F0000A03882361F0853061F08091E80083FD62 +:101700000AC08091E80082FFF2CF80E0089582E075 +:10171000089583E0089581E00895982F953068F545 +:101720009093E900981739F07091EC002091ED004A +:101730005091F00003C0242F762F50E021FD02C00D +:101740009F5FECCF3091EB003E7F3093EB00309108 +:10175000ED003D7F3093ED003091EB003160309330 +:10176000EB007093EC002093ED005093F00020917B +:10177000EE0027FDE5CF80E008958F708093E900AB +:1017800081E0089580910B0387FF11C08091E800EC +:1017900082FD05C080910A038111F8CF11C08091AC +:1017A000E8008B770BC080910A03882349F0809171 +:1017B000E80080FFF8CF8091E8008E778093E80002 +:1017C00008952091E4003091E50095E64091EC0009 +:1017D000842F817040FF23C08091E80080FD1DC0F0 +:1017E00080910A03882399F0853099F08091EB006D +:1017F00085FD11C04091E4005091E50024173507A4 +:1018000029F3915011F09A01E1CF84E0089582E02C +:10181000089583E0089581E0089580E0089540915F +:10182000E80042FFDDCF08950E94710C0E94740C05 +:10183000E0EEF0E0808181608083E8EDF0E080817F +:101840008F77808319BCE3E6F0E08081816080833C +:101850001092090308950E94710C0E94740C8091EB +:10186000D8008F778093D8008091D80080688093CB +:10187000D8008091D8008F7D8093D80084E089BD06 +:1018800086E089BD09B400FEFDCF10920A031092D4 +:101890000603109208031092070342E060E080E024 +:1018A0000E948D0B8091E1008E7F8093E1008091FA +:1018B000E20081608093E2008091E2008860809382 +:1018C000E2008091E0008E7F8093E0000895E3E6DF +:1018D000F0E080818E7F808381E0809309030C9407 +:1018E0002B0C1092E20008951092E10008951F92CF +:1018F0000F920FB60F9211242F933F934F935F9344 +:101900006F937F938F939F93AF93BF93EF93FF93C7 +:101910008091E10082FF0BC08091E20082FF07C04E +:101920008091E1008B7F8093E1000E947508809197 +:10193000E10080FF19C08091E20080FF15C0809116 +:10194000E2008E7F8093E2008091E20080618093CC +:10195000E2008091D80080628093D80019BC85E0B5 +:1019600080930A030E9444098091E10084FF30C003 +:101970008091E20084FF2CC084E089BD86E089BDAF +:1019800009B400FEFDCF8091D8008F7D8093D800F0 +:101990008091E1008F7E8093E1008091E2008F7E54 +:1019A0008093E2008091E20081608093E200809168 +:1019B0000603882311F084E007C08091E30087FDCF +:1019C00002C081E001C083E080930A030E945909AC +:1019D0008091E10083FF29C08091E20083FF25C050 +:1019E0008091E100877F8093E10082E080930A0389 +:1019F000109206038091E1008E7F8093E100809138 +:101A0000E2008E7F8093E2008091E200806180930B +:101A1000E20042E060E080E00E948D0B8091F000E7 +:101A200088608093F0000E947408FF91EF91BF914D +:101A3000AF919F918F917F916F915F914F913F9166 +:101A40002F910F900FBE0F901F9018951F920F921D +:101A50000FB60F9211242F933F934F935F936F9381 +:101A60007F938F939F93AF93BF93CF93DF93EF9326 +:101A7000FF93C091E900CF708091EC00D82FD17016 +:101A800080FDD0E81092E9008091F000877F80937C +:101A9000F00078940E946A0D1092E9008091F000A5 +:101AA00088608093F000CD2BCF70C093E900FF9148 +:101AB000EF91DF91CF91BF91AF919F918F917F91E6 +:101AC0006F915F914F913F912F910F900FBE0F90AB +:101AD0001F9018951F93CF93DF93CDB7DEB7AA97CA +:101AE0000FB6F894DEBF0FBECDBFEBE0F3E0809100 +:101AF000F100819323E0E331F207C9F70E948A08DD +:101B00008091E80083FF24C180910B0390910C0326 +:101B1000492F50E04A30510508F01AC1FA01EF5B35 +:101B2000FF4F0C940E28803881F0823809F010C1E4 +:101B300080910F038F708093E9008091EB0085FB0B +:101B4000882780F91092E90006C0809107039091E0 +:101B50000803911182609091E800977F9093E800CC +:101B60008093F1001092F100C8C0282F2D7F09F05A +:101B7000EFC0882319F0823061F0EAC080910D0334 +:101B8000813009F0E5C0933009F080E080930803CC +:101B90002BC080910D03811127C080910F038F709E +:101BA00009F4D6C08093E9002091EB0020FF1CC00F +:101BB000933021F48091EB00806214C09091EB008F +:101BC00090619093EB0021E030E0A90102C0440F46 +:101BD000551F8A95E2F74093EA001092EA0080913F +:101BE000EB0088608093EB001092E9008091E800A0 +:101BF000877F86C08111ACC010910D031F77809143 +:101C0000E3008078812B8093E3008091E800877F58 +:101C10008093E8000E94C20B8091E80080FFFCCF17 +:101C20008091E30080688093E300111102C082E09C +:101C300001C083E080930A038BC08058823008F093 +:101C400087C080910D0390910E038C3D53E0950762 +:101C500079F583E08A838AE289834FB7F894DE01BD +:101C6000139620E03EE051E2E32FF0E0509357005E +:101C7000E49120FF03C0E295EF703F5FEF708E2F7D +:101C800090E0EA3010F0C79601C0C0968D939D9306 +:101C90002F5F243149F74FBF8091E800877F809301 +:101CA000E8006AE270E0CE0101960E94D40A14C0F6 +:101CB000AE014F5F5F4F60910F030E941D0ABC0190 +:101CC000892B09F445C09091E800977F9093E80034 +:101CD00089819A810E942F0B8091E8008B778093F5 +:101CE000E80036C08038A1F58091E800877F8093B6 +:101CF000E800809106038093F1008091E8008E77E0 +:101D00008093E8000E94C20B23C0811121C0809102 +:101D10000D0390910E0399270297D4F48091E80067 +:101D2000877F8093E80080910D03809306030E94D3 +:101D3000C20B80910603811106C08091E30087FDEC +:101D400002C081E001C084E080930A030E9476080B +:101D50008091E80083FF0AC08091E800877F80932C +:101D6000E8008091EB0080628093EB00AA960FB6AA +:101D7000F894DEBF0FBECDBFDF91CF911F910895C4 +:101D80009093600280935F020895E0915F02F0916A +:101D90006002309721F00190F081E02D099480E0FD +:101DA0000895EF92FF920F931F93CF93DF93E091EB +:101DB0005F02F09160023097B1F18C010280F381F3 +:101DC000E02D09958091F50282FF2DC080FF04C0AF +:101DD00083EF92E00E94A605E80118E08DEEE82E60 +:101DE00082E0F82E8091F50280FF0BC088811F925F +:101DF0008F93FF92EF920E943F060F900F900F90EB +:101E00000F90115021961111EDCF8091F50280FFB6 +:101E10000AC08BEE92E0DF91CF911F910F91FF905E +:101E2000EF900C94A605DF91CF911F910F91FF9039 +:101E3000EF900895E0915F02F0916002309721F0F9 +:101E40000480F581E02D09940895CF93DF932091CC +:101E50005D0230915E022817390709F190935E0206 +:101E600080935D02E0915F02F09160023097B9F0DB +:101E7000EC010680F781E02D09958091F50282FF43 +:101E80000EC080FF0CC0DF93CF938DED92E09F9347 +:101E90008F930E943F060F900F900F900F90DF914D +:101EA000CF910895CF93DF9320915B0230915C0234 +:101EB0002817390709F190935C0280935B02E09147 +:101EC0005F02F09160023097B9F0EC010084F18577 +:101ED000E02D09958091F50282FF0EC080FF0CC0B5 +:101EE000DF93CF938DEC92E09F938F930E943F06F8 +:101EF0000F900F900F900F90DF91CF9108950C9459 +:101F00002D100E94501C0E9451060C94741DBF920B +:101F1000CF92DF92EF92FF920F931F93CF93DF93B5 +:101F200000D000D01F92CDB7DEB70E94750602E642 +:101F300012E0F12C8F2D0E941307B82EF801C080FB +:101F4000C82639F4F3940F5F1F4FF8E0FF12F2CF69 +:101F500030C08091F50281FD0E942E10D12CEE241C +:101F6000E3948C2D8E21F9F0D982FA8291E08B2DA9 +:101F70008E2109F490E09B830E94591C8160782F88 +:101F80009D838C8349815A816B818D810E9464106D +:101F900049815A816B817C818D810E94D01BF8011F +:101FA00080818E258083D394EE0CF8E0DF12D9CFA8 +:101FB000C9CF8FEF89838A831B820E94591C81605D +:101FC000782F9D838C8349815A816B818D810E94FA +:101FD00064100E94CF1B0E94FB200E94C50E9091AE +:101FE0006102891741F10E94C50E809361029091B0 +:101FF000F50292FF0EC090FF0CC01F928F938EEFE0 +:1020000092E09F938F930E943F060F900F900F9046 +:102010000F90809161020F900F900F900F900F9092 +:10202000DF91CF911F910F91FF90EF90DF90CF90B4 +:10203000BF900C94E11B0F900F900F900F900F909A +:10204000DF91CF911F910F91FF90EF90DF90CF9094 +:10205000BF9008950C94190708950895EF92FF9288 +:102060000F931F93CF93DF9387E193E00E94A60520 +:10207000C0E0D0E08CE2E82E81E0F82E09E013E029 +:102080008C2F0E9413070E94BD1BFF92EF921F929C +:102090008F93DF93CF931F930F930E943F06219658 +:1020A0008DB79EB708960FB6F8949EBF0FBE8DBF32 +:1020B000C830D10529F7DF91CF911F910F91FF9083 +:1020C000EF90089508950895CF93DF93CDB7DEB7CD +:1020D0002B970FB6F894DEBF0FBECDBF942F4F8362 +:1020E000252F588769877A878B874A855B85452B9B +:1020F00031F02F3F31F481E09F3F19F403C081E0BC +:1021000001C080E080FD07C04F81588569857A85D0 +:102110008B850E94D01BDE01119686E0FD01119295 +:102120008A95E9F785E0FE01379601900D928A9530 +:10213000E1F749815A816B817C818D819E810E946A +:1021400026182B960FB6F894DEBF0FBECDBFDF91D9 +:10215000CF910895CF93882309F4A9C0C82F82385E +:10216000A1F40E94C50E81FDA2C089E30E941A1B42 +:102170000E94921B2FEF81EE94E02150804090400E +:10218000E1F700C0000089E315C08338C1F40E9464 +:10219000C50E80FD8CC083E50E941A1B0E94921B15 +:1021A0002FEF81EE94E0215080409040E1F700C095 +:1021B000000083E50E94371BCF910C94921B84385A +:1021C000A1F40E94C50E82FD72C087E40E941A1B12 +:1021D0000E94921B2FEF81EE94E0215080409040AE +:1021E000E1F700C0000087E4E5CF8CEF8C0F813A67 +:1021F00020F080E58C0F8E3248F48C2F0E945B25F6 +:10220000811155C08C2F0E941A1BD6CF80E28C0FF3 +:10221000883048F4C77081E001C0880FCA95EAF79A +:102220000E94581BC9CF8BE58C0F833078F4C53AD8 +:1022300029F0C63A31F083E890E005C081E890E0EB +:1022400002C082E890E0CF910C94250F88E58C0FB6 +:10225000853168F5C83A89F0C93A91F0CA3A99F0DF +:10226000CB3AA1F0CC3AA9F0CD3AB1F0CE3AB9F0E0 +:10227000CF3AC1F080E090E017C082EE90E014C049 +:1022800089EE90E011C08AEE90E00EC085EB90E000 +:102290000BC086EB90E008C083EB90E005C084EBB8 +:1022A00090E002C087EB90E0CF910C94520FCF9159 +:1022B0000895882309F46AC08238A1F40E94C50EEB +:1022C00081FF64C089E30E941A1B0E94921B2FEFBA +:1022D00081EE94E0215080409040E1F700C0000082 +:1022E00089E315C08338B9F40E94C50E80FF4EC043 +:1022F00083E50E941A1B0E94921B2FEF81EE94E04F +:10230000215080409040E1F700C0000083E50E942A +:10231000371B0C94921B8438A1F40E94C50E82FFD7 +:1023200035C087E40E941A1B0E94921B2FEF81EE9A +:1023300094E0215080409040E1F700C0000087E425 +:10234000E6CF9CEF980F913A10F390E5980F9E32EC +:10235000F0F290E2980F983050F4877091E001C04D +:10236000990F8A95EAF7892F0E945E1BD2CF9BE5D1 +:10237000980F933020F480E090E00C94250F885A59 +:10238000853120F480E090E00C94520F089588236A +:1023900021F00E94581B0C94921B0895882321F071 +:1023A0000E945E1B0C94921B08950E94781B0E9451 +:1023B000471B0E94921B0E94A1210E946E2080E078 +:1023C00090E00E94250F80E090E00C94520F0E9454 +:1023D000681B0C94D511CF92DF92EF92FF920F936E +:1023E0001F93CF93DF9300D000D01F92CDB7DEB7FD +:1023F0006C010E94E41B811101C385E0F601DE013E +:10240000119601900D928A95E1F7F6014081518174 +:10241000238134812115310531F05F3F31F481E0B2 +:102420004F3F19F403C081E001C080E080FDE6C2A7 +:10243000F601F280E580E2948FE0E82249835A8336 +:10244000FB82722F3D832C836F2D8D810E948F1A0A +:102450008C010E948E1A0E947E19E12FE295EF7086 +:102460008E2F90E0FC01E55BFF4F0C940E28812F2E +:10247000807F1F70882311F01295107FFF2049F094 +:10248000112309F452C2812F0E946B1B0E94921BE0 +:102490004CC2802F0E945911112309F4AFC2812F21 +:1024A0000E94711B0F900F900F900F900F90DF9173 +:1024B000CF911F910F91FF90EF90DF90CF900C94F0 +:1024C000921B812F807F1F70803211F01295107F38 +:1024D000002319F0013009F12BC0FF20A9F0EE20F4 +:1024E00059F1F1E0812FEF1228C00F900F900F905B +:1024F0000F900F90DF91CF911F910F91FF90EF9070 +:10250000DF90CF900C947B1BEE2021F021E0E216AF +:1025100009F474C20E947E1B2DC0FF20E9F085E003 +:102520008E1508F46BC20E94551B812329F022C02E +:10253000FF20F1F0E11015C0812F0F900F900F9048 +:102540000F900F90DF91CF911F910F91FF90EF901F +:10255000DF90CF900C94C71194E09E1508F44EC202 +:1025600009C0F601858180FFE0C18F708583E4CFCB +:10257000E110EEC1812F61C1812F86958695837010 +:1025800019F08130B9F03AC2FF2019F0C8019370F8 +:1025900002C080E090E00F900F900F900F900F908E +:1025A000DF91CF911F910F91FF90EF90DF90CF902F +:1025B0000C94250FFF2019F0C801937002C080E031 +:1025C00090E00F900F900F900F900F90DF91CF91B0 +:1025D0001F910F91FF90EF90DF90CF900C94520FCE +:1025E000802FFF2019F00E94811F02C00E94E91F66 +:1025F0000F900F900F900F900F90DF91CF911F9140 +:102600000F91FF90EF90DF90CF900C946E20812F70 +:10261000837009F070C0F110F1C1202F229526952A +:102620002770220F220F602F6F70862F90E0A0E09E +:10263000B0E06C017D01022E04C0CC0CDD1CEE1C50 +:10264000FF1C0A94D2F704FF12C08FE090E0A0E0D4 +:10265000B0E004C0880F991FAA1FBB1F2A95D2F7AC +:10266000BC01CD01609570958095909503C060E0A8 +:1026700070E0CB011695169513701230B1F040F54D +:102680006C297D298E299F29113031F10F900F90EF +:102690000F900F900F90DF91CF911F910F91FF90AE +:1026A000EF90DF90CF900C94A3196C297D298E298F +:1026B0009F290F900F900F900F900F90DF91CF9167 +:1026C0001F910F91FF90EF90DF90CF900C94BD1968 +:1026D0000E94A319C701B6010F900F900F900F90A1 +:1026E0000F90DF91CF911F910F91FF90EF90DF90AE +:1026F000CF900C948919FF2019F0812F817001C0AF +:102700008695882309F47AC1202F22952695277073 +:10271000220F220F602F6F70862F90E0A0E0B0E0B4 +:102720006C017D01022E04C0CC0CDD1CEE1CFF1CD4 +:102730000A94D2F704FF12C08FE090E0A0E0B0E06E +:1027400004C0880F991FAA1FBB1F2A95D2F7BC018E +:10275000CD01609570958095909503C060E070E024 +:10276000CB011695169513701230B1F040F56C2917 +:102770007D298E299F29113031F10F900F900F90F4 +:102780000F900F90DF91CF911F910F91FF90EF90DD +:10279000DF90CF900C946A1A6C297D298E299F298D +:1027A0000F900F900F900F900F90DF91CF911F918E +:1027B0000F91FF90EF90DF90CF900C947C1A0E94C5 +:1027C0006A1AC701B6010F900F900F900F900F90EB +:1027D000DF91CF911F910F91FF90EF90DF90CF90FD +:1027E0000C94581A003FC1F128F480E4800F803225 +:1027F00050F096C0023F09F45EC008F449C0033FA0 +:1028000009F46CC08DC0F02FF071EF2E812F8F7105 +:10281000FF2051F00E94F119802FEE2019F08295CF +:10282000807F8BCE8F7089CE0E94121A802FEE206F +:1028300019F08295807F01C08F700F900F900F90DC +:102840000F900F90DF91CF911F910F91FF90EF901C +:10285000DF90CF900C94CE11FF20A9F024E02E152C +:1028600008F4CCC0812F8F710F900F900F900F90B4 +:102870000F90DF91CF911F910F91FF90EF90DF901C +:10288000CF900C94371A85E08E1508F4B7C0EACFC4 +:10289000FF2099F0812F8F710F900F900F900F9064 +:1028A0000F90DF91CF911F910F91FF90EF90DF90EC +:1028B000CF900C94F119FF2069F3812F8F710F9045 +:1028C0000F900F900F900F90DF91CF911F910F916C +:1028D000FF90EF90DF90CF900C94121AFF2089F0B8 +:1028E000812F8F710F900F900F900F900F90DF91AD +:1028F000CF911F910F91FF90EF90DF90CF900C94AC +:10290000DC190F900F900F900F900F90DF91CF91E7 +:102910001F910F91FF90EF90DF90CF900C94D719FB +:10292000FF2099F0EE2009F4B5CF802F0F900F9083 +:102930000F900F900F90DF91CF911F910F91FF900B +:10294000EF90DF90CF900C94AA10EE2009F4B5CF51 +:10295000802F0F900F900F900F900F90DF91CF91DD +:102960001F910F91FF90EF90DF90CF900C94591131 +:10297000412F4F70602FC6010E941F1D0F900F90B6 +:102980000F900F900F90DF91CF911F910F91FF90BB +:10299000EF90DF90CF900C94D91801112FC0FF2039 +:1029A00069F10E94E7119FEFE0E7F2E09150E0400B +:1029B000F040E1F700C000000F900F900F900F90D3 +:1029C0000F90DF91CF911F910F91FF90EF90DF90CB +:1029D000CF900C94C01C412F4F70602FC6010F90F8 +:1029E0000F900F900F900F90DF91CF911F910F914B +:1029F000FF90EF90DF90CF900C94221D0F900F90DE +:102A00000F900F900F90DF91CF911F910F91FF903A +:102A1000EF90DF90CF9008951F93CF93DF9300D076 +:102A200000D01F92CDB7DEB7942F4983252F5A834C +:102A30006B837C838D834C815D81452B31F02F3FEF +:102A400031F481E09F3F19F403C081E001C080E0D0 +:102A5000182F117080FD31C049815A816B817C81B2 +:102A60008D810E948F1A292F22952F702C3030F4DF +:102A70002A30A0F42250223030F022C02C30C9F08D +:102A80002F30B9F01DC0853A28F48430C0F482306C +:102A900028F415C090E2980F983088F0883E30F402 +:102AA000803E68F48450813A58F409C0803F41F474 +:102AB00006C093FB112710F903C010E001C011E01C +:102AC000812F0F900F900F900F900F90DF91CF916B +:102AD0001F910895CF93DF9300D000D01F92CDB700 +:102AE000DEB70F900F900F900F900F90DF91CF9166 +:102AF0000895CF93DF9300D000D000D0CDB7DEB7DC +:102B000026960FB6F894DEBF0FBECDBFDF91CF91F2 +:102B10000895CF93DF93C0916A0280916B02C8172A +:102B2000A1F0D0E0CE0166E070E00E94E927FC0150 +:102B3000E459FD4F40815181628173818481958187 +:102B40000E9479152196C770E8CFDF91CF91089543 +:102B500040919C0250919D0260919E0270919F0253 +:102B60008091A0029091A1020C9479151F93CF93AC +:102B7000DF938091A10282958F7009F066C08091E9 +:102B80009E02882309F461C020916A0210916B02B1 +:102B9000C0919C02D0919D02E0919F02F091A00211 +:102BA00081E0CF3F09F080E0482F211709F44DC0A4 +:102BB000309721F0DF3F21F080E003C081E001C0C9 +:102BC000842F30E080FD3DC0C90166E070E00E94C6 +:102BD000E927DC01A459BD4F11968C9111978D13F3 +:102BE00030C08C918C132DC012968C91129781114C +:102BF00028C013968D919C9114978E179F0708F407 +:102C000001978E1B9F0B883C9105D8F48091A102FF +:102C10008F7080618093A102C90166E070E00E941C +:102C2000E927FC01EF58FD4F90819F7090619083E0 +:102C30008CE992E00E94EB11DF91CF911F910C94EF +:102C400089152F5F3F4F2770B0CFDF91CF911F9134 +:102C50000895AF92BF92CF92DF92EF92FF920F93BF +:102C60001F93CF93DF93CDB7DEB761970FB6F8947C +:102C7000DEBF0FBECDBF7C0185E0F701DE011D96F2 +:102C800001900D928A95E1F7D7014C9111962C9104 +:102C900011971296DC90129713960D911C91149730 +:102CA00050919C0260919D0280919F029091A002A0 +:102CB000009731F06F3F31F431E05F3F19F403C00A +:102CC00031E001C030E0B32FB170BB2E30FD76C1D2 +:102CD000A0909E02AA2009F4D2C03091A102081748 +:102CE000190728F0F801E81BF90BCF0104C0809503 +:102CF0009095800F911FCC24C394883C910588F057 +:102D0000C12C307F09F0A6C0702F198B088B522F71 +:102D10006D2D89890E946A158CE992E00E94EB1161 +:102D2000C3C0832F807F09F059C0261315C04513F7 +:102D300013C0CD2CD11010C03F7030613093A10270 +:102D40000E94A8158CE992E00E94EB118091A102EB +:102D5000D70115968C9368C10115110531F02F3FED +:102D600031F481E04F3F19F403C081E001C080E0FD +:102D700080FD03C081E08D2502C080E090E0B82F87 +:102D8000B170CB2E80FF1FC0E0916A0230916B02C0 +:102D9000E31709F425C1F0E0CF0166E070E00E947E +:102DA000E927DC01A459BD4F11968C911197281386 +:102DB00007C08C91481304C012968C91D81203C09E +:102DC0003196E770E5CFCD2CDD2009F42DC180913F +:102DD000A10281608093A102C12C26C1261308C0E4 +:102DE000451306C0D11004C08091A102D701B9C01B :102DF0004D872E87DF86702F198B088B522F6D2DF4 -:102E000089890E94D814811139C0C7010E94C2115A -:102E1000CC24C394D5C00817190708F447C0F8019B -:102E2000E81BF90BCF01883C910508F444C0C12C84 -:102E3000702F198B088B522F6D2D89890E943615A2 -:102E4000E9E9F2E086E0DF011D928A95E9F70E9448 -:102E50007415B6C04513CCCFD110CACF80919E0255 -:102E6000F7018583C7010E94C21186E0E9E9F2E01B -:102E7000DF011D928A95E9F7CA2CA2C0DD2029F254 -:102E800020919E02822F82958F7090E002970CF421 -:102E9000A0CF8091990290919A029A8389831B8294 -:102EA0001D830C832E83CE01019691CF8095909542 -:102EB000800F911FB8CFCD2CDD2009F4A6CF2613AB -:102EC00033C0451331C020919E0220FD24C0822FC3 -:102ED00082958F70482F50E041155105E1F0D701E0 -:102EE00015962C9315974F30510549F08F5F982F09 -:102EF0009295907F822F8F70892B15968C93C701A6 -:102F00000E94C21186E0F701A9E9B2E001900D929A -:102F10008A95E1F79CCF86E0F701A9E9B2E001903C -:102F20000D928A95E1F74CC04D872E87DF86702F72 -:102F3000198B088B522F6D2D89890E94D81481110D -:102F400048CF80919E02816080939E02C7010E94BB -:102F5000C21136C0DD2009F458CF4D872E87DF8699 -:102F6000702F198B088B522F6D2D89890E94D814D0 -:102F7000882309F44ACF2DCF702F198B088B522F3D -:102F80006D2D89890E945B1A292F22952F7022307E -:102F900028F49F7039F0811105C00BC0243028F44B -:102FA0009F7049F4805E883020F0C7010E94C211F2 -:102FB000BC2CCB2C05C0F7019581907F99F7F9CFF8 -:102FC0008C2D61960FB6F894DEBF0FBECDBFDF919A -:102FD000CF911F910F91FF90EF90DF90CF90BF9016 -:102FE000AF900895CF93DF93CDB7DEB72C970FB690 -:102FF000F894DEBF0FBECDBF4F83588769877A87AD -:103000008B879C87CE0107960E94F5158823D1F007 -:103010009F8188852A853B85232B31F08F3F31F4B2 -:1030200081E09F3F19F403C081E001C080E080FD92 -:103030006FC04F81588569857A858B859C850E94F4 -:10304000451566C086E0FE013796DE0111960190B7 -:103050000D928A95E1F7FF81E8856A857B85611588 -:10306000710531F0EF3F31F481E0FF3F19F403C007 -:1030700081E001C080E080FD4BC08091680290E05B -:103080009C012F5F3F4F277033274091670250E02C -:103090002417350709F443C0F983EA837D836C83E1 -:1030A00066E070E00E94B827DC01A759BD4F96E0AA -:1030B000FE01319601900D929A95E1F720936802F6 -:1030C0000E94551525C090E066E070E00E94B82788 -:1030D00087599D4F0E94F515882371F180916702F1 -:1030E00090E066E070E00E94B827FC01E759FD4FD0 -:1030F0004081518162817381848195810E9445154F -:103100008091670290E0019687709927809367020B -:1031100080916702909168028913D5CF0DC00E94FB -:10312000D4141092680210926702E9E9F2E086E096 -:10313000DF011D928A95E9F72C960FB6F894DEBF51 -:103140000FBECDBFDF91CF910895DF92EF92FF9236 -:103150000F931F93CF93DF93FC01892B09F488C051 -:10316000E12CF12CDD24D394EF0121968491853755 -:1031700009F460C058F4843708F04EC0843008F079 -:1031800068C08130D1F0823071F172C0883709F4A3 -:103190005BC050F4863709F453C0873709F068C024 -:1031A0008E2D0E94311B52C09CE7980F903708F07B -:1031B0005FC08F770E9446114EC08F010E5F1F4F78 -:1031C000FE01849190E2980F983050F48770FD2DA5 -:1031D00001C0FF0F8A95EAF78F2F0E94371B15C099 -:1031E0000E94971014C08F010E5F1F4FFE01849143 -:1031F00090E2980F983068F48770FD2D01C0FF0FA2 -:103200008A95EAF78F2F0E943D1B0E945E1BE80102 -:1032100022C00E944611FBCFCF010296FE01C4914D -:10322000CC2361F0EFE9FFE03197F1F700C0000037 -:10323000C150F6CFCF010296FE01F490EC010BC015 -:103240000E94211BE82E07C00E94341B0E945E1BB7 -:1032500002C00E9497108F2D882341F0EFE9FFE014 -:103260003197F1F700C000008150F6CFFE017CCF0E -:10327000DF91CF911F910F91FF90EF90DF90089514 -:103280006093DF027093E0028093E1029093E20288 -:103290000C94AC1B08956093E3027093E402809356 -:1032A000E5029093E6020C94AB1B0F931F930091E1 -:1032B000E3021091E4022091E5023091E602602BD6 -:1032C000712B822B932B6093E3027093E402809323 -:1032D000E5029093E6021F910F910C94AB1B0F93A4 -:1032E0001F930091E3021091E4022091E5023091D6 -:1032F000E60260237123822393236093E302709399 -:10330000E4028093E5029093E6021F910F910C94E2 -:10331000AB1B0F931F930091E3021091E4022091E5 -:10332000E5023091E6026027712782279327609398 -:10333000E3027093E4028093E5029093E6021F910A -:103340000F910C94AB1B60E070E0CB010C94401922 -:103350000F931F9341E050E060E070E08A019B0111 -:1033600004C0000F111F221F331F8A95D2F7C90115 -:10337000B8011F910F910C9440190F931F9341E0D6 -:1033800050E060E070E004C0440F551F661F771FD7 -:103390008A95D2F78091DF029091E002A091E1023C -:1033A000B091E2028A019B01082B192B2A2B3B2B9F -:1033B000C901B8011F910F910C9440190F931F93ED -:1033C00041E050E060E070E004C0440F551F661F0C -:1033D000771F8A95D2F740955095609570958091AA -:1033E000DF029091E002A091E102B091E2028A0135 -:1033F0009B01082319232A233B23C901B8011F91EC -:103400000F910C9440190F931F9341E050E060E03E -:1034100070E004C0440F551F661F771F8A95D2F7CE -:103420008091DF029091E002A091E102B091E2026E -:103430008A019B01082719272A273B27C901B801C0 -:103440001F910F910C9440190F931F930091DF026D -:103450001091E0022091E1023091E202602B712B89 -:10346000822B932B1F910F910C9440190F931F9354 -:103470000091DF021091E0022091E1023091E2021E -:1034800060237123822393231F910F910C94401981 -:103490000F931F930091DF021091E0022091E1024F -:1034A0003091E20260277127822793271F910F91A5 -:1034B0000C94401908958F929F92AF92BF92DF9221 -:1034C000EF92FF920F931F93CF93DF9300D000D022 -:1034D0001F92CDB7DEB76B837C838D838A018C818D -:1034E0009D81892B31F01F3F31F481E04F3F19F46A -:1034F00003C081E001C080E080FF03C080E090E075 -:1035000054C08B81882309F43DC08090DF029090E5 -:10351000E002A090E102B090E2028091E30290917B -:10352000E402A091E502B091E602882A992AAA2A2B -:10353000BB2A2FE1E22EF12CD501C4010E2C04C0D0 -:10354000B695A795979587950A94D2F780FD06C002 -:1035500081E0E81AF10880F7D12C07C0DE2CB80111 -:103560008E2D0E94BF1C019799F3E12FF0E093E0AC -:10357000EE0FFF1F9A95E1F7E156FD4FE00FF11DA9 -:10358000D0820CC0E12FF0E083E0EE0FFF1F8A95A0 -:10359000E1F7E156FD4FE00FF11DD08009831A835A -:1035A00069817A818D2D0E94BF1C0F900F900F9022 -:1035B0000F900F90DF91CF911F910F91FF90EF909F -:1035C000DF90BF90AF909F908F9008952091110150 -:1035D00030911201F90132969FEF40E05191851729 -:1035E00089F09F3F19F4511101C0942F4F5F46306D -:1035F000A9F79F3F39F0F901E90FF11D97FDFA9501 -:10360000828308950895E0911101F09112019F01C4 -:103610002A5F3F4F9281891301C012823196E217CF -:10362000F307C1F7089581E090E0E0911101F09176 -:103630001201E80FF91F1082019688309105A9F751 -:1036400008958091F10208959091F102892B809361 -:10365000F102089580959091F10289238093F102FF -:1036600008958093F10208951092F10208959091C7 -:10367000F002892B8093F002089580959091F002DA -:1036800089238093F00208951092F00208958093A8 -:10369000E70208951092E702089580911101909138 -:1036A0001201FC0131969C01285F3F4F80E091910F -:1036B00091118F5FE217F307D1F70895E09111019F -:1036C000F09112018091F1028083E0911101F0915B -:1036D000120190818091F002892B80838091E70212 -:1036E000882361F0E0911101F09112019081892B02 -:1036F00080830E944D1B81111092E702809111017D -:10370000909112010C94BE0E909339018093380170 -:1037100008958295982F9373292F220F220F982FA7 -:103720009C7C96959695922B892F8575880F9A7A11 -:103730009695892B08950895CF93DF9300D000D0FC -:103740001F92CDB7DEB70F900F900F900F900F9094 -:10375000DF91CF910895089508950C94171008955E -:1037600080E0089580910703843021F11092F302E4 -:1037700020E488E190E00FB6F894A895809360006B -:103780000FBE2093600083B7817F846083BF83B7BF -:10379000816083BF7894889583B78E7F83BF0FB68F -:1037A000F894A895809160008861809360001092E1 -:1037B00060000FBE0895CF930E944F100E947206C2 -:1037C0000E945010C0E08C2F0E940007811104C09D -:1037D000CF5FC830C1F701C081E0CF9108950E944A -:1037E00019100C94D4141F920F920FB60F9211243B -:1037F0008F939F93AF93BF938091F302811113C076 -:103800008091F4029091F502A091F602B091F70236 -:103810004196A11DB11D8093F4029093F502A093EF -:10382000F602B093F702BF91AF919F918F910F90E5 -:103830000FBE0F901F90189582E084BD93E095BD58 -:103840009AEF97BD80936E0008952FB7F8948091FA -:10385000F4029091F502A091F602B091F7022FBF09 -:1038600008952FB7F8946091F4027091F502809159 -:10387000F6029091F7022FBF0895CF92DF92EF9258 -:10388000FF920F931F932FB7F8944091F402509139 -:10389000F5026091F6027091F7022FBF6A017B0179 -:1038A000EE24FF248C0120E030E0C016D106E206B1 -:1038B000F30610F4415051099A01281B390BC90134 -:1038C0001F910F91FF90EF90DF90CF9008951F927E -:1038D0000F920FB60F9211248F939F93AF93BF93C4 -:1038E0008091F4029091F502A091F602B091F70256 -:1038F0000196A11DB11D8093F4029093F502A0934F -:10390000F602B093F702BF91AF919F918F910F9004 -:103910000FBE0F901F9018950E94010CF8942FEF86 -:1039200087EA91E6215080409040E1F700C0000016 -:1039300087E090EBDC018093110390931203A09336 -:103940001303B09314039CE088E10FB6F894A89594 -:10395000809360000FBE90936000FFCFE92FF0E0EE -:1039600093E0EE0FFF1F9A95E1F7E80FF11DEA547F -:10397000FF4F9491892F8F7092959F700895CF93E8 -:10398000C82FCB010E94AE1C492F90E0242F30E0BD -:1039900054E0220F331F5A95E1F7282B392B20389A -:1039A000310519F480E090E017C0EC2FF0E023E03F -:1039B000EE0FFF1F2A95E1F74770E40FF11D34E089 -:1039C000EE0FFF1F3A95E1F7E80FF91FEE0FFF1F0B -:1039D000E050F84985919491CF91089580E090E06E -:1039E00008950895CF92DF92EF92FF920F931F9365 -:1039F000CF936C01C0E08C2F0E94000700E010E024 -:103A0000E82EF12CC701002E02C0959587950A94E7 -:103A1000E2F780FF15C0602F7C2F80E00E94BF1C62 -:103A20008C159D0559F0292F207E392F307C11F0FF -:103A3000203A31F490E0C816D90611F481E009C0AB -:103A40000F5F1F4F08301105E9F6CF5FC83099F6B8 -:103A500080E0CF911F910F91FF90EF90DF90CF907A -:103A60000895CF93DF93EC018CE290E00E94F21C6A -:103A7000882329F0CE01DF91CF910C94F21C80E0D5 -:103A8000DF91CF910895CF930E94A41E811102C0AF -:103A90000E948A1E89E293E00E94A305C5E6C150F8 -:103AA00049F00E9472068FE39CE90197F1F700C08C -:103AB0000000F5CF82E293E00E94A30589E290E046 -:103AC0000E94311D811124C18AE290E00E94311DC3 -:103AD00081110E948A1E85E090E00E94311D8111B3 -:103AE0000E948C1C0E94AF1B0E94AF1E8093F202AA -:103AF00087E090E00E94311D8823C1F18BE190E0C6 -:103B00000E94311D882351F08091F20281FB22270F -:103B100020F991E0922790FB81F90FC08EE090E0B0 -:103B20000E94311D882361F08091F20282FB2227DE -:103B300020F991E0922790FB82F98093F20216C05F -:103B400080E190E00E94311D9091F202882341F0C3 -:103B500093FB222720F981E0822780FB93F904C0A0 -:103B6000892F809580FB90F99093F2028091F20268 -:103B70000E94B31E0E94C11E8093100380EE90E04D -:103B80000E94311D882341F080911003982F909559 -:103B900090FB80F98093100389E390E00E94311D2F -:103BA000882359F08091100381FB222720F991E0AE -:103BB000922790FB81F98093100382EE90E00E949F -:103BC000311D882359F08091100382FB222720F9B0 -:103BD00091E0922790FB82F98093100386EE90E0AB -:103BE0000E94311D882359F08091100383FB222706 -:103BF00020F991E0922790FB83F98093100383EEE4 -:103C000090E00E94311D882359F08091100384FBBD -:103C1000222720F991E0922790FB84F980931003EA -:103C200085E390E00E94311D882359F080911003B4 -:103C300085FB222720F991E0922790FB85F980935C -:103C4000100381E390E00E94311D882359F0809198 -:103C5000100386FB222720F991E0922790FB86F93A -:103C60008093100381E190E00E94311D882359F078 -:103C70008091100387FB222720F991E0922790FB87 -:103C800087F980931003809110030E94C51E87E27C -:103C900090E00E94311DC82F8EE190E00E94311DFE -:103CA0008111C2608FE190E00E94311D8111C460DA -:103CB00080E290E00E94311D8111C86081E290E0B5 -:103CC0000E94311D8111C06182E290E00E94311D8D -:103CD0008111C06283E290E00E94311D8111C064B5 -:103CE00084E290E00E94311D882311F0C06802C078 -:103CF000CC2329F08C2F0E94BC1E6C2F03C00E9485 -:103D0000B81E682F70E080E090E0CF910C944B19C2 -:103D1000CF9108956DEE7EEF80E090E00E94132831 -:103D200060E082E090E00E94052860E083E090E09F -:103D30000E94052860E084E090E00E94052860E091 -:103D400085E090E00C94052880E090E00E94FF2739 -:103D500021E08D3E9E4F09F020E0822F089582E001 -:103D600090E00C94F727682F82E090E00C940528EF -:103D700083E090E00C94F727682F83E090E00C94A8 -:103D8000052884E090E00C94F727682F84E090E009 -:103D90000C9405288091FA0280FF0CC080911601D6 -:103DA00090E065E070E00E94B8279595879595951D -:103DB00087952EC081FF0AC08091160190E065E0D2 -:103DC00070E00E94B8279595879522C082FF08C0B1 -:103DD0008091160190E065E070E00E94B82718C05D -:103DE0002091FB022223D9F030911501231780F78F -:103DF0008091160190E065E070E00E94B827622F84 -:103E000070E00E94B827632F70E00E94C927CB01A1 -:103E10008038910538F4009739F481E005C085E0D9 -:103E200090E008958FE7089508958091FA0280FF49 -:103E300008C06091140170E0759567957595679558 -:103E400023C081FF06C06091140170E075956795ED -:103E50001BC082FF04C06091140170E012C0609129 -:103E6000FB026623A9F0209113016217A0F780914D -:103E7000140170E090E00E94B827622F70E00E9469 -:103E8000C9276038710540F46115710519F406C041 -:103E900061E070E0862F08958FE7089581E008952E -:103EA000803F21F40E94CA1E819504C0813F29F4FD -:103EB0000E94CA1E8093FE020895823F21F40E9450 -:103EC000CA1E819504C0833F29F40E94CA1E8093B4 -:103ED000FD020895893F19F40E94151F05C08A3F0D -:103EE00031F40E94151F81958093FF0208958B3F46 -:103EF00021F40E94151F819504C08C3F29F40E9473 -:103F0000151F809300030895843F21F48091FC02E3 -:103F1000816017C0853F21F48091FC02826011C04E -:103F2000863F21F48091FC0284600BC0873F21F41E -:103F30008091FC02886005C0883F31F48091FC02CA -:103F400080618093FC0208958D3F21F48091FA02F4 -:103F500081600BC08E3F21F48091FA02826005C01F -:103F60008F3F29F48091FA0284608093FA020895C9 -:103F7000803F39F48091FE0287FF6CC01092FE02F0 -:103F800069C0813F29F48091FE021816BCF362C01B -:103F90009091FD02823F29F497FF5CC01092FD02D0 -:103FA00059C0833F19F41916CCF354C0893F41F42A -:103FB0008091FF0218160CF04DC01092FF024AC00B -:103FC0008A3F29F48091FF0287FF44C0F6CF8B3FE0 -:103FD00039F48091000387FF3DC0109200033AC07E -:103FE0008C3F29F4809100031816BCF333C0843F42 -:103FF00021F48091FC028E7F17C0853F21F48091CF -:10400000FC028D7F11C0863F21F48091FC028B7FE2 -:104010000BC0873F21F48091FC02877F05C0883F59 -:1040200031F48091FC028F7E8093FC0213C08D3F9F -:1040300021F48091FA028E7F0BC08E3F21F4809193 -:10404000FA028D7F05C08F3F29F48091FA028B7FA1 -:104050008093FA028091FD0281110EC08091FE02D0 -:1040600081110AC08091FF02811106C08091000376 -:10407000811102C01092FB0208958091F20283FF29 -:104080007EC085E693E00E94A3058091FC021F920A -:104090008F9380E693E09F938F930E943C068EE57A -:1040A00093E00E94A3058091FD02282F082E000CAA -:1040B000330B3F938F938BE593E09F938F930E94F5 -:1040C0003C0689E593E00E94A3058091FE02282F1B -:1040D000082E000C330B3F938F9386E593E09F935C -:1040E0008F930E943C0684E593E00E94A305809193 -:1040F000FF02282F082E000C330B3F938F9381E58E -:1041000093E09F938F930E943C068FE493E00E947C -:10411000A30580910003282F082E000C330B3F933A -:104120008F938CE493E09F938F930E943C0689E4E5 -:1041300093E00E94A3058091FB021F928F9386E477 -:1041400093E09F938F930E943C0684E493E00E9447 -:10415000A3058091FA021F928F9381E493E09F93CD -:104160008F930E943C068EE393E00E94A3058DB7D7 -:104170009EB74C960FB6F8949EBF0FBE8DBF8CEFC6 -:1041800092E00E94070F0E94251C9093F9028093F1 -:10419000F80208951F93CF93DF938091F8029091D6 -:1041A000F9020E943D1CFC012091FB02222321F018 -:1041B0008091170190E007C08091180190E06AE0BB -:1041C00070E00E94B827E817F90708F485C08091CD -:1041D000FD02C091FE02D091FF02109100038111F7 -:1041E00007C0C11175C0D11173C0111171C074C065 -:1041F0002F3F19F02F5F2093FB02181624F40E9422 -:10420000CA1E8093FD028091FD0287FF05C00E94B7 -:10421000CA1E81958093FD021C1624F40E94CA1EBA -:104220008093FE028091FE0287FF05C00E94CA1E95 -:1042300081958093FE026091FD02662331F1C09169 -:10424000FE02CC2311F1062E000C770B880B990B84 -:104250000E94B72623E333E343E35FE30E941B2777 -:104260000E947F266093FD026C2FCC0F770B880B8A -:10427000990B0E94B72623E333E343E35FE30E94F5 -:104280001B270E947F266093FE021D1624F40E94C5 -:10429000151F8093FF028091FF0287FF05C00E94D7 -:1042A000151F81958093FF02111624F40E94151F9B -:1042B000809300038091000387FF05C00E94151FB3 -:1042C000819580930003DF91CF911F910C943D2045 -:1042D0002F3F09F08FCFA0CFDF91CF911F9108958D -:1042E000ECEFF2E085E0DF011D928A95E9F710928C -:1042F000FB021092FA02089588E895E00E94A30557 -:104300001F9281E08F931F9285E08F938AE395E05F -:104310009F938F930E943C060F900F900F900F90E9 -:104320000F900F9008958330E9F128F4813061F007 -:10433000823009F10895853009F462C008F449C05B -:10434000863009F474C0089580911801262F30E05A -:10435000280F311D2F3F310524F4680F6093180199 -:1043600003C08FEF80931801809118011F928F93E3 -:1043700083E794E072C080911701262F30E0280F68 -:10438000311D2F3F310524F4680F6093170103C0DE -:104390008FEF80931701809117011F928F9381E611 -:1043A00094E05BC080911601262F30E0280F311D6C -:1043B0002F3F310524F4680F6093160103C08FEF7F -:1043C00080931601809116011F928F938EE494E0E2 -:1043D00044C080911501262F30E0280F311D2F3F5A -:1043E000310524F4680F6093150103C08FEF8093AB -:1043F0001501809115011F928F9389E394E02DC0E0 -:1044000080911401262F30E0280F311D2F3F3105F8 -:1044100024F4680F6093140103C08FEF809314019C -:10442000809114011F928F9380E294E016C08091D6 -:104430001301262F30E0280F311D2F3F310524F4C2 -:10444000680F6093130103C08FEF80931301809175 -:1044500013011F928F9385E094E09F938F930E94A6 -:104460003C060F900F900F900F900895833081F1CC -:1044700028F4813059F08230D1F00895853009F464 -:1044800049C0B8F1863009F456C0089580911801EA -:10449000681720F4861B8093180102C0109218013F -:1044A000809118011F928F9386EF93E054C0809102 -:1044B0001701681720F4861B8093170102C0109221 -:1044C0001701809117011F928F9384EE93E043C0F0 -:1044D00080911601681720F4861B8093160102C094 -:1044E00010921601809116011F928F9381ED93E037 -:1044F00032C080911501681720F4861B8093150146 -:1045000002C010921501809115011F928F938CEBC0 -:1045100093E021C080911401681720F4861B8093DA -:10452000140102C010921401809114011F928F9304 -:1045300083EA93E010C080911301681720F4861B72 -:104540008093130102C010921301809113011F92F6 -:104550008F9388E893E09F938F930E943C060F907F -:104560000F900F900F900895CF93C82F1F928F93A5 -:104570008DE896E09F938F930E943C0681E090E047 -:10458000A0E0B0E0BC01CD0104C0660F771F881F1A -:10459000991FCA95D2F70E944B190F900F900F9058 -:1045A0000F90CF910C94D414CF938732B0F58E3105 -:1045B00008F040C28E3009F4BEC100F5873009F41E -:1045C0008DC1A8F4863009F039C28091F202817F52 -:1045D0008E7F8093F20282E996E00E94A3058DE827 -:1045E0009AE00E94A30581E08093020375C18830A0 -:1045F00009F43FC08B3009F46BC120C2863109F445 -:10460000E0C120F4803109F4AAC118C2893109F44B -:10461000C1C18B3109F47BC111C2883309F458C17F -:1046200050F4893209F404C2853309F401C2873297 -:1046300009F004C2FDC1833409F4FAC128F48A33B5 -:1046400008F4FCC18953F7C1883409F0F7C10E940E -:10465000D4148CE79AE00E94A3059FEF23ED80E33A -:10466000915020408040E1F700C000000E948C1C67 -:1046700033C181E99AE00E94A30589E898E00E948D -:10468000A3050E94B81E1F928F9386E898E09F931F -:104690008F930E943C0684E898E00E94A3050E9444 -:1046A000AF1EC82F81E798E00E94A3051F92CF9309 -:1046B0008CE698E09F938F930E943C068AE698E0F0 -:1046C0000E94A30580E698E00E94A3058C2F8170CC -:1046D0001F928F938DE598E09F938F930E943C06E5 -:1046E0008BE598E00E94A30581E598E00E94A30570 -:1046F000C1FB882780F91F928F938EE498E09F93E7 -:104700008F930E943C068CE498E00E94A30580E40D -:1047100098E00E94A305C2FB882780F91F928F931F -:104720008DE398E09F938F930E943C068BE398E083 -:104730000E94A30582E398E00E94A305C3FBCC2757 -:10474000C0F91F92CF938FE298E09F938F930E94BE -:104750003C068DE298E00E94A3050E94C11EC82F6E -:1047600089E198E00E94A3051F92CF9384E198E02D -:104770009F938F930E943C0682E198E00E94A305DC -:1047800089EF97E00E94A3058C2F81701F928F9371 -:1047900086EF97E09F938F930E943C068DB79EB75C -:1047A00080960FB6F8949EBF0FBE8DBF84EF97E042 -:1047B0000E94A3058DED97E00E94A305C1FB882709 -:1047C00080F91F928F938AED97E09F938F930E94B9 -:1047D0003C0688ED97E00E94A30586EC97E00E94D6 -:1047E000A305C2FB882780F91F928F9383EC97E083 -:1047F0009F938F930E943C0681EC97E00E94A30553 -:104800008FEA97E00E94A305C3FB882780F91F92D7 -:104810008F938CEA97E09F938F930E943C068AEADD -:1048200097E00E94A30580EA97E00E94A305C4FBDD -:10483000882780F91F928F938DE997E09F938F933C -:104840000E943C068BE997E00E94A30589E897E067 -:104850000E94A305C5FB882780F91F928F9386E8E5 -:1048600097E09F938F930E943C0684E897E00E9414 -:10487000A30588E697E00E94A305C6FB882780F978 -:104880001F928F9385E697E09F938F930E943C063B -:1048900083E697E00E94A3058BE597E00E94A305BD -:1048A000C7FBCC27C0F91F92CF9388E597E09F9371 -:1048B0008F930E943C0686E597E00E94A3058DB782 -:1048C0009EB74C960FB6F8949EBF0FBE8DBF04C026 -:1048D00089EB96E00E94A305C1E0B5C08091F20289 -:1048E000C82FC17080FF09C08FE69AE00E94A3051F -:1048F0008091F202817F8E7F47C083E69AE00E941A -:10490000A3058091F20281608093F202E5CF90913D -:10491000F20291FBCC27C0F981E0C827892FC0FBA8 -:1049200081F98093F202CC2319F086E59AE027C042 -:1049300088E49AE0CFCF9091F20292FBCC27C0F9A5 -:1049400081E0C827892FC0FB82F98093F202CC2333 -:1049500019F089E39AE013C089E29AE0BBCF909105 -:10496000F20293FBCC27C0F981E0C827892FC0FB56 -:1049700083F98093F202CC2351F08DE19AE00E94FA -:10498000A3058091F20281608093F2025CC080E115 -:104990009AE0A0CF81E09AE00E94A30589ED99E01A -:1049A0000E94A30587EA99E00E94A3058FE799E09A -:1049B0000E94A30580E399E00E94A30584E099E0AA -:1049C00089CF86EF98E00E94A3050E94B20E1F9245 -:1049D0008F938CED98E09F938F930E943C0680917B -:1049E00010011F928F9385EC98E09F938F930E9404 -:1049F0003C06809157021F928F9382EB98E09F9321 -:104A00008F930E943C060E94311C9F938F937F934B -:104A10006F938BE998E09F938F930E943C068DB72C -:104A20009EB742960FB6F8949EBF0FBE8DBF54CF6F -:104A300080E001C08D510E94B4224ECF89E998E0F8 -:104A40000E94A305C0E08C2FCF91089580E00895C7 -:104A50000C942625CF93C82F80910203813071F0EA -:104A600020F0823009F44BC042C1E0911101F09175 -:104A700012018081823209F03CC107C0E09111012E -:104A8000F09112018081823261F48C2F0E942825DE -:104A9000811104C08C2F0E94D4222FC081E090E0AD -:104AA0002CC08C2F0E942625811126C0C431E1F034 -:104AB00070F4CB3081F0C031D1F40E947C2185E8C4 -:104AC00096E00E94A30582E08093020315C0C932DC -:104AD00059F0C83361F482E996E00E94A30589E8A1 -:104AE00096E00E94A30508C01092020304C183E867 -:104AF00096E00E94A305FFC081E08170FEC0C43231 -:104B000028F5CE3108F0C1C0CB30A1F1D0F4C730C8 -:104B100009F0D3C08EE18093180182E380931701DE -:104B20008AE08093160184E18093150188E08093E8 -:104B3000140188E28093130189E295E00E94A305A5 -:104B4000BFC0C33149F1C431C1F0B7C0CB3409F49F -:104B5000A9C028F4C93289F0C83361F0AEC0C135AC -:104B600009F49EC0C23509F499C0CE3409F0A5C03D -:104B70006AE09EC00E947C21A3C08091010388232B -:104B800019F0109201039CC086E395E00E94A305F2 -:104B900081E080930203B1C080E195E00E94A3050B -:104BA0008EEF94E00E94A305809118011F928F93CD -:104BB0008BEF94E09F938F930E943C0689EF94E0E3 -:104BC0000E94A30587EE94E00E94A305809117013F -:104BD0001F928F9384EE94E09F938F930E943C06E4 -:104BE00082EE94E00E94A30583ED94E00E94A30569 -:104BF000809116011F928F9380ED94E09F938F9385 -:104C00000E943C068EEC94E00E94A3058DEB94E09C -:104C10000E94A305809115011F928F938AEB94E067 -:104C20009F938F930E943C0688EB94E00E94A3051B -:104C300083EA94E00E94A305809114011F928F9350 -:104C400080EA94E09F938F930E943C068EE994E063 -:104C50000E94A30587E894E00E94A30580911301B8 -:104C60001F928F9384E894E09F938F930E943C0659 -:104C700082E894E00E94A3058DB79EB748960FB6D0 -:104C8000F8949EBF0FBE8DBF1BC0CE51EC2FF0E03D -:104C9000E25DFE4F80818093010312C061E003C09A -:104CA00061E006C06AE0809101030E94932108C080 -:104CB000809101030E94362203C087E295E013C071 -:104CC00080910103882369F01F928F9381E295E020 -:104CD0009F938F930E943C060F900F900F900F9020 -:104CE00004C08EE195E00E94A30581E006C0109209 -:104CF000020380E002C080E000CFCF9108950E94BF -:104D000086266894B1110C94152708950E94FA26FE -:104D100088F09F5798F0B92F9927B751B0F0E1F07C -:104D2000660F771F881F991F1AF0BA95C9F714C02C -:104D3000B13091F00E941427B1E008950C9414272B -:104D4000672F782F8827B85F39F0B93FCCF3869565 -:104D500077956795B395D9F73EF4909580957095C2 -:104D600061957F4F8F4F9F4F0895E89409C097FB3F -:104D70003EF490958095709561957F4F8F4F9F4F32 -:104D80009923A9F0F92F96E9BB279395F695879576 -:104D900077956795B795F111F8CFFAF4BB0F11F439 -:104DA00060FF1BC06F5F7F4F8F4F9F4F16C08823E0 -:104DB00011F096E911C0772321F09EE8872F762F16 -:104DC00005C0662371F096E8862F70E060E02AF057 -:104DD0009A95660F771F881FDAF7880F9695879543 -:104DE00097F9089557FD9058440F551F59F05F3FAC -:104DF00071F04795880F97FB991F61F09F3F79F0FD -:104E000087950895121613061406551FF2CF46957E -:104E1000F1DF08C0161617061806991FF1CF869500 -:104E20007105610508940895E894BB2766277727E4 -:104E3000CB0197F908950E942D270C94A7270E9473 -:104E4000992738F00E94A02720F0952311F00C94A8 -:104E500090270C9496270C9415270E94F22678F33D -:104E60009923C9F35523B9F3950F50E0551FAA278D -:104E7000EE27FF27BB2700240894679520F4E20F54 -:104E8000F31FB41F0A1E220F331F441FAA1F66956B -:104E9000A9F7779530F4F30FB41F0A1E121E08F419 -:104EA0006395330F441FAA1F221F769599F78795A4 -:104EB00020F4B40F0A1E121E631F440FAA1F221FE4 -:104EC000331F8695A9F7862F712D602D11249F57CA -:104ED00050409AF0F1F088234AF0EE0FFF1FBB1FFD -:104EE000661F771F881F91505040A9F79E3F5105BC -:104EF00080F00C9490270C9415275F3FE4F3983EC4 -:104F0000D4F3869577956795B795F795E7959F5F65 -:104F1000C1F7FE2B880F911D9695879597F90895F7 -:104F200097F99F6780E870E060E008959FEF80EC5C -:104F3000089500240A9416161706180609060895FF -:104F400000240A9412161306140605060895092E65 -:104F50000394000C11F4882352F0BB0F40F4BF2BD4 -:104F600011F460FF04C06F5F7F4F8F4F9F4F089514 -:104F70000024552704C0080E591F880F991F009759 -:104F800029F076956795B8F37105B9F7802D952FBF -:104F9000089597FB072E16F4009407D077FD09D0EB -:104FA0000E94E32707FC05D03EF4909581959F4F22 -:104FB0000895709561957F4F0895EE0FFF1F05903E -:104FC000F491E02D0994AA1BBB1B51E107C0AA1F55 -:104FD000BB1FA617B70710F0A61BB70B881F991F9A -:104FE0005A95A9F780959095BC01CD010895F9993E -:104FF000FECF92BD81BDF89A992780B50895A8E1AA -:10500000B0E042E050E00C941A28262FF999FECF28 -:105010001FBA92BD81BD20BD0FB6F894FA9AF99AD5 -:105020000FBE019608950E940528272F0C9406288C -:10503000DC01CB01FC01F999FECF06C0F2BDE1BD58 -:10504000F89A319600B40D9241505040B8F7089547 -:04505000F894FFCF02 -:10505400054E010000FF0E079E077B074507110759 -:1050640001E8022808140A321E404D36228A023D05 -:10507400020702E50171018A01A301BC01000102DA -:085084000304050607080900FA +:102E000089890E940C158823A1F1DD2091F1209180 +:102E1000A102822F82958F7090E0029774F08091CA +:102E20009C0290919D0298878F8319861B870A8741 +:102E30002C87CE0107960E94EB1186E0F701ACE9E2 +:102E4000B2E001900D928A95E1F70E94B6150E94BA +:102E5000A81512C0261791F14D872E87DF86702F97 +:102E6000198B088B522F6D2D89890E940C158111A9 +:102E700039C0C7010E94EB11CC24C394D5C00817F8 +:102E8000190708F447C0F801E81BF90BCF01883C8B +:102E9000910508F444C0C12C702F198B088B522F58 +:102EA0006D2D89890E946A15ECE9F2E086E0DF0168 +:102EB0001D928A95E9F70E94A815B6C04513CCCF9C +:102EC000D110CACF8091A102F7018583C7010E946A +:102ED000EB1186E0ECE9F2E0DF011D928A95E9F75B +:102EE000CA2CA2C0DD2029F22091A102822F829556 +:102EF0008F7090E002970CF4A0CF80919C0290918B +:102F00009D029A8389831B821D830C832E83CE01AD +:102F1000019691CF80959095800F911FB8CFCD2CC1 +:102F2000DD2009F4A6CF261333C0451331C020910C +:102F3000A10220FD24C0822F82958F70482F50E07F +:102F400041155105E1F0D70115962C9315974F3097 +:102F5000510549F08F5F982F9295907F822F8F7047 +:102F6000892B15968C93C7010E94EB1186E0F7011F +:102F7000ACE9B2E001900D928A95E1F79CCF86E032 +:102F8000F701ACE9B2E001900D928A95E1F74CC0EF +:102F90004D872E87DF86702F198B088B522F6D2D52 +:102FA00089890E940C15811148CF8091A10281600E +:102FB0008093A102C7010E94EB1136C0DD2009F405 +:102FC00058CF4D872E87DF86702F198B088B522F95 +:102FD0006D2D89890E940C15882309F44ACF2DCFC5 +:102FE000702F198B088B522F6D2D89890E948F1A93 +:102FF000292F22952F70223028F49F7039F08111EB +:1030000005C00BC0243028F49F7049F4805E8830DE +:1030100020F0C7010E94EB11BC2CCB2C05C0F7019E +:103020009581907F99F7F9CF8C2D61960FB6F89422 +:10303000DEBF0FBECDBFDF91CF911F910F91FF90EB +:10304000EF90DF90CF90BF90AF900895CF93DF9334 +:10305000CDB7DEB72C970FB6F894DEBF0FBECDBF4D +:103060004F83588769877A878B879C87CE0107961D +:103070000E9429168823D1F09F8188852A853B8567 +:10308000232B31F08F3F31F481E09F3F19F403C0CF +:1030900081E001C080E080FD6FC04F815885698567 +:1030A0007A858B859C850E94791566C086E0FE0135 +:1030B0003796DE01119601900D928A95E1F7FF8116 +:1030C000E8856A857B856115710531F0EF3F31F444 +:1030D00081E0FF3F19F403C081E001C080E080FD82 +:1030E0004BC080916B0290E09C012F5F3F4F277097 +:1030F000332740916A0250E02417350709F443C092 +:10310000F983EA837D836C8366E070E00E94E9279F +:10311000DC01A459BD4F96E0FE01319601900D925D +:103120009A95E1F720936B020E94891525C090E0E3 +:1031300066E070E00E94E92784599D4F0E9429169D +:10314000882371F180916A0290E066E070E00E944D +:10315000E927FC01E459FD4F40815181628173816F +:10316000848195810E94791580916A0290E0019690 +:103170008770992780936A0280916A0290916B020E +:103180008913D5CF0DC00E94E71110926B021092E7 +:103190006A02ECE9F2E086E0DF011D928A95E9F728 +:1031A0002C960FB6F894DEBF0FBECDBFDF91CF9146 +:1031B0000895DF92EF92FF920F931F93CF93DF93C7 +:1031C000FC01892B09F488C0E12CF12CDD24D39477 +:1031D000EF0121968491853709F460C058F4843753 +:1031E00008F04EC0843008F068C08130D1F08230E1 +:1031F00071F172C0883709F45BC050F4863709F466 +:1032000053C0873709F068C08E2D0E94651B52C0DD +:103210009CE7980F903708F05FC08F770E94591194 +:103220004EC08F010E5F1F4FFE01849190E2980FF8 +:10323000983050F48770FD2D01C0FF0F8A95EAF792 +:103240008F2F0E946B1B15C00E94AA1014C08F0103 +:103250000E5F1F4FFE01849190E2980F983068F442 +:103260008770FD2D01C0FF0F8A95EAF78F2F0E940E +:10327000711B0E94921BE80122C00E945911FBCFD2 +:10328000CF010296FE01C491CC2361F0EFE9FFE08B +:103290003197F1F700C00000C150F6CFCF01029680 +:1032A000FE01F490EC010BC00E94551BE82E07C0F4 +:1032B0000E94681B0E94921B02C00E94AA108F2DC0 +:1032C000882341F0EFE9FFE03197F1F700C00000FB +:1032D0008150F6CFFE017CCFDF91CF911F910F91EE +:1032E000FF90EF90DF9008956093E2027093E30205 +:1032F0008093E4029093E5020C94E01B08956093A0 +:10330000E6027093E7028093E8029093E9020C943E +:10331000DF1B0F931F930091E6021091E7022091AB +:10332000E8023091E902602B712B822B932B609382 +:10333000E6027093E7028093E8029093E9021F91FE +:103340000F910C94DF1B0F931F930091E6021091D5 +:10335000E7022091E8023091E90260237123822381 +:1033600093236093E6027093E7028093E8029093C0 +:10337000E9021F910F910C94DF1B0F931F93009193 +:10338000E6021091E7022091E8023091E9026027FD +:103390007127822793276093E6027093E702809358 +:1033A000E8029093E9021F910F910C94DF1B60E0FB +:1033B00070E0CB010C9474190F931F9341E050E01F +:1033C00060E070E08A019B0104C0000F111F221F02 +:1033D000331F8A95D2F7C901B8011F910F910C9440 +:1033E00074190F931F9341E050E060E070E004C057 +:1033F000440F551F661F771F8A95D2F78091E2020E +:103400009091E302A091E402B091E5028A019B0150 +:10341000082B192B2A2B3B2BC901B8011F910F91A7 +:103420000C9474190F931F9341E050E060E070E03A +:1034300004C0440F551F661F771F8A95D2F7409529 +:103440005095609570958091E2029091E302A09171 +:10345000E402B091E5028A019B01082319232A2383 +:103460003B23C901B8011F910F910C9474190F935C +:103470001F9341E050E060E070E004C0440F551F2E +:10348000661F771F8A95D2F78091E2029091E3023E +:10349000A091E402B091E5028A019B010827192757 +:1034A0002A273B27C901B8011F910F910C94741969 +:1034B0000F931F930091E2021091E3022091E40226 +:1034C0003091E502602B712B822B932B1F910F9172 +:1034D0000C9474190F931F930091E2021091E30270 +:1034E0002091E4023091E50260237123822393232B +:1034F0001F910F910C9474190F931F930091E20286 +:103500001091E3022091E4023091E50260277127D7 +:10351000822793271F910F910C94741908958F920D +:103520009F92AF92BF92DF92EF92FF920F931F9301 +:10353000CF93DF9300D000D01F92CDB7DEB76B835F +:103540007C838D838A018C819D81892B31F01F3F83 +:1035500031F481E04F3F19F403C081E001C080E005 +:1035600080FF03C080E090E054C08B81882309F481 +:103570003DC08090E2029090E302A090E402B090FF +:10358000E5028091E6029091E702A091E802B091F5 +:10359000E902882A992AAA2ABB2A2FE1E22EF12CD5 +:1035A000D501C4010E2C04C0B695A79597958795B3 +:1035B0000A94D2F780FD06C081E0E81AF10880F78E +:1035C000D12C07C0DE2CB8018E2D0E94F01C019773 +:1035D00099F3E12FF0E093E0EE0FFF1F9A95E1F7EA +:1035E000EE55FD4FE00FF11DD0820CC0E12FF0E051 +:1035F00083E0EE0FFF1F8A95E1F7EE55FD4FE00FD8 +:10360000F11DD08009831A8369817A818D2D0E94F2 +:10361000F01C0F900F900F900F900F90DF91CF91B3 +:103620001F910F91FF90EF90DF90BF90AF909F9010 +:103630008F9008952091100130911101F901329677 +:103640009FEF40E05191851789F09F3F19F4511188 +:1036500001C0942F4F5F4630A9F79F3F39F0F90121 +:10366000E90FF11D97FDFA95828308950895E09181 +:103670001001F09111019F012A5F3F4F9281891340 +:1036800001C012823196E217F307C1F7089581E075 +:1036900090E0E0911001F0911101E80FF91F108204 +:1036A000019688309105A9F708958091F402089554 +:1036B0009091F402892B8093F40208958095909163 +:1036C000F40289238093F40208958093F40208950C +:1036D0001092F40208959091F302892B8093F302E3 +:1036E000089580959091F30289238093F3020895C1 +:1036F0001092F30208958093EA0208951092EA026C +:1037000008958091100190911101FC0131969C0166 +:10371000285F3F4F80E0919191118F5FE217F3078F +:10372000D1F70895E0911001F09111018091F40218 +:103730008083E0911001F091110190818091F3025A +:10374000892B80838091EA02882361F0E091100147 +:10375000F09111019081892B80830E94811B81113E +:103760001092EA0280911001909111010C94D10EF7 +:10377000909339018093380108958295982F93731F +:10378000292F220F220F982F9C7C96959695922B8D +:10379000892F8575880F9A7A9695892B08950895B3 +:1037A000CF93DF9300D000D01F92CDB7DEB70F903C +:1037B0000F900F900F900F90DF91CF910895089583 +:1037C00008950C942A10089580E0089580910A03CA +:1037D000843021F11092F60220E488E190E00FB6E7 +:1037E000F894A895809360000FBE2093600083B783 +:1037F000817F846083BF83B7816083BF789488951D +:1038000083B78E7F83BF0FB6F894A8958091600030 +:10381000886180936000109260000FBE0895CF937E +:103820000E9462100E9475060E946310C0E08C2FF7 +:103830000E941307811104C0CF5FC830C1F701C0D7 +:1038400081E0CF9108950E942C100C94E7111F92F3 +:103850000F920FB60F9211248F939F93AF93BF9344 +:103860008091F602811113C08091F7029091F802C5 +:10387000A091F902B091FA024196A11DB11D809369 +:10388000F7029093F802A093F902B093FA02BF9165 +:10389000AF919F918F910F900FBE0F901F90189531 +:1038A00082E084BD93E095BD9AEF97BD80936E0052 +:1038B00008952FB7F8948091F7029091F802A091A3 +:1038C000F902B091FA022FBF08952FB7F8946091D2 +:1038D000F7027091F8028091F9029091FA022FBFDD +:1038E0000895CF92DF92EF92FF920F931F932FB71D +:1038F000F8944091F7025091F8026091F9027091AA +:10390000FA022FBF6A017B01EE24FF248C0120E024 +:1039100030E0C016D106E206F30610F4415051091A +:103920009A01281B390BC9011F910F91FF90EF904D +:10393000DF90CF9008951F920F920FB60F9211242F +:103940008F939F93AF93BF938091F7029091F8026A +:10395000A091F902B091FA020196A11DB11D8093C8 +:10396000F7029093F802A093F902B093FA02BF9184 +:10397000AF919F918F910F900FBE0F901F90189550 +:103980000E94140CF89487E797E7909301088093BE +:10399000000887E090EBDC018093140390931503FB +:1039A000A0931603B09317039CE088E10FB6F89438 +:1039B000A895809360000FBE90936000FFCFE92F21 +:1039C000F0E093E0EE0FFF1F9A95E1F7E80FF11D8D +:1039D000EA54FF4F9491892F8F7092959F700895AC +:1039E000CF93C82FCB010E94DF1C492F90E0242FDA +:1039F00030E054E0220F331F5A95E1F7282B392B82 +:103A00002038310519F480E090E017C0EC2FF0E089 +:103A100023E0EE0FFF1F2A95E1F74770E40FF11D39 +:103A200034E0EE0FFF1F3A95E1F7E80FF91FEE0FB4 +:103A3000FF1FE050F84985919491CF91089580E05F +:103A400090E008950895CF92DF92EF92FF920F9346 +:103A50001F93CF936C01C0E08C2F0E94130700E0EE +:103A600010E0E82EF12CC701002E02C09595879535 +:103A70000A94E2F780FF15C0602F7C2F80E00E943F +:103A8000F01C8C159D0559F0292F207E392F307C94 +:103A900011F0203A31F490E0C816D90611F481E013 +:103AA00009C00F5F1F4F08301105E9F6CF5FC8301E +:103AB00099F680E0CF911F910F91FF90EF90DF90EA +:103AC000CF900895CF93DF93EC018CE290E00E94B9 +:103AD000231D882329F0CE01DF91CF910C94231D63 +:103AE00080E0DF91CF910895CF930E94D51E811180 +:103AF00002C00E94BB1E8CE293E00E94A605C5E6B0 +:103B0000C15049F00E9475068FE39CE90197F1F7D7 +:103B100000C00000F5CF85E293E00E94A60589E28F +:103B200090E00E94621D811124C18AE290E00E940F +:103B3000621D81110E94BB1E85E090E00E94621D03 +:103B400081110E94C01C0E94E31B0E94E01E809312 +:103B5000F50287E090E00E94621D8823C1F18BE1AD +:103B600090E00E94621D882351F08091F50281FB54 +:103B7000222720F991E0922790FB81F90FC08EE077 +:103B800090E00E94621D882361F08091F50282FB23 +:103B9000222720F991E0922790FB82F98093F50289 +:103BA00016C080E190E00E94621D9091F50288238A +:103BB00041F093FB222720F981E0822780FB93F9D3 +:103BC00004C0892F809580FB90F99093F502809135 +:103BD000F5020E94E41E0E94F21E8093130380EE01 +:103BE00090E00E94621D882341F080911303982F7A +:103BF000909590FB80F98093130389E390E00E94F5 +:103C0000621D882359F08091130381FB222720F93C +:103C100091E0922790FB81F98093130382EE90E06C +:103C20000E94621D882359F08091130382FB222792 +:103C300020F991E0922790FB82F98093130386EE9E +:103C400090E00E94621D882359F08091130383FB4A +:103C5000222720F991E0922790FB83F980931303A8 +:103C600083EE90E00E94621D882359F08091130337 +:103C700084FB222720F991E0922790FB84F980931E +:103C8000130385E390E00E94621D882359F0809120 +:103C9000130385FB222720F991E0922790FB85F9F9 +:103CA0008093130381E390E00E94621D882359F002 +:103CB0008091130386FB222720F991E0922790FB45 +:103CC00086F98093130381E190E00E94621D8823AE +:103CD00059F08091130387FB222720F991E0922766 +:103CE00090FB87F980931303809113030E94F61EC3 +:103CF00087E290E00E94621DC82F8EE190E00E9452 +:103D0000621D8111C2608FE190E00E94621D8111ED +:103D1000C46080E290E00E94621D8111C86081E26F +:103D200090E00E94621D8111C06182E290E00E94D9 +:103D3000621D8111C06283E290E00E94621D8111C8 +:103D4000C06484E290E00E94621D882311F0C06884 +:103D500002C0CC2329F08C2F0E94ED1E6C2F03C0D3 +:103D60000E94E91E682F70E080E090E0CF910C94F3 +:103D70007F19CF9108956DEE7EEF80E090E00E9474 +:103D8000442860E082E090E00E94362860E083E012 +:103D900090E00E94362860E084E090E00E9436289F +:103DA00060E085E090E00C94362880E090E00E948E +:103DB000302821E08D3E9E4F09F020E0822F0895AB +:103DC00082E090E00C942828682F82E090E00C9428 +:103DD000362883E090E00C942828682F83E090E058 +:103DE0000C94362884E090E00C942828682F84E016 +:103DF00090E00C9436288091FD0280FF0CC08091E9 +:103E0000150190E065E070E00E94E927959587959F +:103E1000959587952EC081FF0AC08091150190E08D +:103E200065E070E00E94E9279595879522C082FFA2 +:103E300008C08091150190E065E070E00E94E927DC +:103E400018C02091FE022223D9F0309114012317CB +:103E500080F78091150190E065E070E00E94E9270D +:103E6000622F70E00E94E927632F70E00E94FA271A +:103E7000CB018038910538F4009739F481E005C012 +:103E800085E090E008958FE7089508958091FD0200 +:103E900080FF08C06091130170E075956795759576 +:103EA000679523C081FF06C06091130170E075958E +:103EB00067951BC082FF04C06091130170E012C0BF +:103EC0006091FE026623A9F0209112016217A0F70B +:103ED0008091130170E090E00E94E927622F70E06A +:103EE0000E94FA276038710540F46115710519F4D4 +:103EF00006C061E070E0862F08958FE7089581E0A5 +:103F00000895803F21F40E94FB1E819504C0813FEB +:103F100029F40E94FB1E809301030895823F21F43F +:103F20000E94FB1E819504C0833F29F40E94FB1E62 +:103F3000809300030895893F19F40E94461F05C02D +:103F40008A3F31F40E94461F8195809302030895B1 +:103F50008B3F21F40E94461F819504C08C3F29F4B9 +:103F60000E94461F809303030895843F21F48091AB +:103F7000FF02816017C0853F21F48091FF028260BB +:103F800011C0863F21F48091FF0284600BC0873FFF +:103F900021F48091FF02886005C0883F31F4809150 +:103FA000FF0280618093FF0208958D3F21F480918C +:103FB000FD0281600BC08E3F21F48091FD02826082 +:103FC00005C08F3F29F48091FD0284608093FD023B +:103FD0000895803F39F48091010387FF6CC01092EF +:103FE000010369C0813F29F4809101031816BCF3D5 +:103FF00062C090910003823F29F497FF5CC0109249 +:10400000000359C0833F19F41916CCF354C0893FFB +:1040100041F48091020318160CF04DC01092020377 +:104020004AC08A3F29F48091020387FF44C0F6CF3B +:104030008B3F39F48091030387FF3DC01092030347 +:104040003AC08C3F29F4809103031816BCF333C0A7 +:10405000843F21F48091FF028E7F17C0853F21F4B9 +:104060008091FF028D7F11C0863F21F48091FF0275 +:104070008B7F0BC0873F21F48091FF02877F05C0B3 +:10408000883F31F48091FF028F7E8093FF0213C03E +:104090008D3F21F48091FD028E7F0BC08E3F21F475 +:1040A0008091FD028D7F05C08F3F29F48091FD0234 +:1040B0008B7F8093FD028091000381110EC080915F +:1040C000010381110AC080910203811106C0809111 +:1040D0000303811102C01092FE0208958091F5023F +:1040E00083FF7EC088E693E00E94A6058091FF02D0 +:1040F0001F928F9383E693E09F938F930E943F06D6 +:1041000081E693E00E94A60580910003282F082EE7 +:10411000000C330B3F938F938EE593E09F938F9327 +:104120000E943F068CE593E00E94A6058091010362 +:10413000282F082E000C330B3F938F9389E593E0D3 +:104140009F938F930E943F0687E593E00E94A60508 +:1041500080910203282F082E000C330B3F938F937E +:1041600084E593E09F938F930E943F0682E593E05E +:104170000E94A60580910303282F082E000C330B04 +:104180003F938F938FE493E09F938F930E943F061A +:104190008CE493E00E94A6058091FE021F928F930B +:1041A00089E493E09F938F930E943F0687E493E016 +:1041B0000E94A6058091FD021F928F9384E493E0F4 +:1041C0009F938F930E943F0681E493E00E94A6058F +:1041D0008DB79EB74C960FB6F8949EBF0FBE8DBF9D +:1041E0008FEF92E00E941A0F0E94591C9093FC02DC +:1041F0008093FB0208951F93CF93DF938091FB027E +:104200009091FC020E94711CFC012091FE0222236D +:1042100021F08091160190E007C08091170190E095 +:104220006AE070E00E94E927E817F90708F485C002 +:1042300080910003C0910103D09102031091030308 +:10424000811107C0C11175C0D11173C0111171C0A6 +:1042500074C02F3F19F02F5F2093FE02181624F42C +:104260000E94FB1E809300038091000387FF05C01E +:104270000E94FB1E8195809300031C1624F40E946B +:10428000FB1E809301038091010387FF05C00E94FC +:10429000FB1E81958093010360910003662331F139 +:1042A000C0910103CC2311F1062E000C770B880B73 +:1042B000990B0E94E82623E333E343E35FE30E9484 +:1042C0004C270E94B026609300036C2FCC0F770B15 +:1042D000880B990B0E94E82623E333E343E35FE373 +:1042E0000E944C270E94B026609301031D1624F4FF +:1042F0000E94461F809302038091020387FF05C03E +:104300000E94461F819580930203111624F40E9497 +:10431000461F809303038091030387FF05C00E941B +:10432000461F819580930303DF91CF911F910C94D9 +:104330006E202F3F09F08FCFA0CFDF91CF911F913B +:104340000895EFEFF2E085E0DF011D928A95E9F72D +:104350001092FE021092FD0208958BE895E00E94F3 +:10436000A6051F9281E08F931F9285E08F938DE3C6 +:1043700095E09F938F930E943F060F900F900F90B0 +:104380000F900F900F9008958330E9F128F4813059 +:1043900061F0823009F10895853009F462C008F4B3 +:1043A00049C0863009F474C0089580911701262F02 +:1043B00030E0280F311D2F3F310524F4680F609342 +:1043C000170103C08FEF80931701809117011F928F +:1043D0008F9386E794E072C080911601262F30E01B +:1043E000280F311D2F3F310524F4680F609316010B +:1043F00003C08FEF80931601809116011F928F9357 +:1044000084E694E05BC080911501262F30E0280FF0 +:10441000311D2F3F310524F4680F6093150103C04F +:104420008FEF80931501809115011F928F9381E585 +:1044300094E044C080911401262F30E0280F311DF4 +:104440002F3F310524F4680F6093140103C08FEFF0 +:1044500080931401809114011F928F938CE394E058 +:104460002DC080911301262F30E0280F311D2F3FE2 +:10447000310524F4680F6093130103C08FEF80931C +:104480001301809113011F928F9383E294E016C071 +:1044900080911201262F30E0280F311D2F3F31056A +:1044A00024F4680F6093120103C08FEF8093120110 +:1044B000809112011F928F9388E094E09F938F93D5 +:1044C0000E943F060F900F900F900F900895833039 +:1044D00081F128F4813059F08230D1F0089585308F +:1044E00009F449C0B8F1863009F456C008958091A6 +:1044F0001701681720F4861B8093170102C01092E1 +:104500001701809117011F928F9389EF93E054C098 +:1045100080911601681720F4861B8093160102C053 +:1045200010921601809116011F928F9387EE93E0EF +:1045300043C080911501681720F4861B80931501F4 +:1045400002C010921501809115011F928F9384ED86 +:1045500093E032C080911401681720F4861B809389 +:10456000140102C010921401809114011F928F93C4 +:104570008FEB93E021C080911301681720F4861B14 +:104580008093130102C010921301809113011F92B6 +:104590008F9386EA93E010C080911201681720F48F +:1045A000861B8093120102C01092120180911201A9 +:1045B0001F928F938BE893E09F938F930E943F0607 +:1045C0000F900F900F900F900895CF93C82F1F92C8 +:1045D0008F9380E996E09F938F930E943F0681E03E +:1045E00090E0A0E0B0E0BC01CD0104C0660F771FF1 +:1045F000881F991FCA95D2F70E947F190F900F90BC +:104600000F900F90CF910C94E711CF938732B0F5B4 +:104610008E3108F040C28E3009F4BEC100F58730FB +:1046200009F48DC1A8F4863009F039C28091F502F1 +:10463000817F8E7F8093F50285E996E00E94A60532 +:1046400080E99AE00E94A60581E08093050375C188 +:10465000883009F43FC08B3009F46BC120C2863129 +:1046600009F4E0C120F4803109F4AAC118C28931EB +:1046700009F4C1C18B3109F47BC111C2883309F43B +:1046800058C150F4893209F404C2853309F401C2D7 +:10469000873209F004C2FDC1833409F4FAC128F459 +:1046A0008A3308F4FCC18953F7C1883409F0F7C193 +:1046B0000E94E7118FE79AE00E94A6059FEF23ED85 +:1046C00080E3915020408040E1F700C000000E944C +:1046D000C01C33C184E99AE00E94A6058CE898E0EA +:1046E0000E94A6050E94E91E1F928F9389E898E018 +:1046F0009F938F930E943F0687E898E00E94A6054B +:104700000E94E01EC82F84E798E00E94A6051F9231 +:10471000CF938FE698E09F938F930E943F068DE69C +:1047200098E00E94A60583E698E00E94A6058C2FDB +:1047300081701F928F9380E698E09F938F930E94E1 +:104740003F068EE598E00E94A60584E598E00E9469 +:10475000A605C1FB882780F91F928F9381E598E019 +:104760009F938F930E943F068FE498E00E94A605D6 +:1047700083E498E00E94A605C2FB882780F91F9277 +:104780008F9380E498E09F938F930E943F068EE37F +:1047900098E00E94A60585E398E00E94A605C3FB69 +:1047A000CC27C0F91F92CF9382E398E09F938F9319 +:1047B0000E943F0680E398E00E94A6050E94F21E38 +:1047C000C82F8CE198E00E94A6051F92CF9387E145 +:1047D00098E09F938F930E943F0685E198E00E94A6 +:1047E000A6058CEF97E00E94A6058C2F81701F9282 +:1047F0008F9389EF97E09F938F930E943F068DB729 +:104800009EB780960FB6F8949EBF0FBE8DBF87EF00 +:1048100097E00E94A60580EE97E00E94A605C1FBE6 +:10482000882780F91F928F938DED97E09F938F9348 +:104830000E943F068BED97E00E94A60589EC97E069 +:104840000E94A605C2FB882780F91F928F9386ECF1 +:1048500097E09F938F930E943F0684EC97E00E941D +:10486000A60582EB97E00E94A605C3FB882780F986 +:104870001F928F938FEA97E09F938F930E943F063A +:104880008DEA97E00E94A60583EA97E00E94A605BC +:10489000C4FB882780F91F928F9380EA97E09F934B +:1048A0008F930E943F068EE997E00E94A6058CE850 +:1048B00097E00E94A605C5FB882780F91F928F9379 +:1048C00089E897E09F938F930E943F0687E897E0DF +:1048D0000E94A6058BE697E00E94A605C6FB8827E6 +:1048E00080F91F928F9388E697E09F938F930E94A1 +:1048F0003F0686E697E00E94A6058EE597E00E94B7 +:10490000A605C7FBCC27C0F91F92CF938BE597E094 +:104910009F938F930E943F0689E597E00E94A6052A +:104920008DB79EB74C960FB6F8949EBF0FBE8DBF45 +:1049300004C08CEB96E00E94A605C1E0B5C0809152 +:10494000F502C82FC17080FF09C082E79AE00E947B +:10495000A6058091F502817F8E7F47C086E69AE0AA +:104960000E94A6058091F50281608093F502E5CF53 +:104970009091F50291FBCC27C0F981E0C827892FDF +:10498000C0FB81F98093F502CC2319F089E59AE008 +:1049900027C08BE49AE0CFCF9091F50292FBCC2711 +:1049A000C0F981E0C827892FC0FB82F98093F50206 +:1049B000CC2319F08CE39AE013C08CE29AE0BBCFD1 +:1049C0009091F50293FBCC27C0F981E0C827892F8D +:1049D000C0FB83F98093F502CC2351F080E29AE08A +:1049E0000E94A6058091F50281608093F5025CC06B +:1049F00083E19AE0A0CF84E09AE00E94A6058CEDC6 +:104A000099E00E94A6058AEA99E00E94A60582E83C +:104A100099E00E94A60583E399E00E94A60587E03D +:104A200099E089CF89EF98E00E94A6050E94C50E03 +:104A30001F928F938FED98E09F938F930E943F0674 +:104A400080910F011F928F9388EC98E09F938F9332 +:104A50000E943F0680915A021F928F9385EB98E047 +:104A60009F938F930E943F060E94651C9F938F9394 +:104A70007F936F938EE998E09F938F930E943F06F8 +:104A80008DB79EB742960FB6F8949EBF0FBE8DBFEE +:104A900054CF80E001C08D510E94E5224ECF8CE9B9 +:104AA00098E00E94A605C0E08C2FCF91089580E089 +:104AB00008950C945725CF93C82F8091050381301A +:104AC00071F020F0823009F44BC042C1E091100136 +:104AD000F09111018081823209F03CC107C0E09160 +:104AE0001001F09111018081823261F48C2F0E94BB +:104AF0005925811104C08C2F0E9405232FC081E00D +:104B000090E02CC08C2F0E945725811126C0C43103 +:104B1000E1F070F4CB3081F0C031D1F40E94AD21CE +:104B200088E896E00E94A60582E08093050315C000 +:104B3000C93259F0C83361F485E996E00E94A605B0 +:104B40008CE896E00E94A60508C01092050304C1F7 +:104B500086E896E00E94A605FFC081E08170FEC055 +:104B6000C43228F5CE3108F0C1C0CB30A1F1D0F469 +:104B7000C73009F0D3C08EE18093170182E38093A0 +:104B800016018AE08093150184E18093140188E086 +:104B90008093130188E2809312018CE295E00E94D9 +:104BA000A605BFC0C33149F1C431C1F0B7C0CB3491 +:104BB00009F4A9C028F4C93289F0C83361F0AEC045 +:104BC000C13509F49EC0C23509F499C0CE3409F04C +:104BD000A5C06AE09EC00E94AD21A3C080910403DD +:104BE000882319F0109204039CC089E395E00E9489 +:104BF000A60581E080930503B1C083E195E00E94A2 +:104C0000A60581E095E00E94A605809117011F92FC +:104C10008F938EEF94E09F938F930E943F068CEFCB +:104C200094E00E94A6058AEE94E00E94A605809179 +:104C300016011F928F9387EE94E09F938F930E94AB +:104C40003F0685EE94E00E94A60586ED94E00E9462 +:104C5000A605809115011F928F9383ED94E09F9399 +:104C60008F930E943F0681ED94E00E94A60580ECA0 +:104C700094E00E94A605809114011F928F938DEB02 +:104C800094E09F938F930E943F068BEB94E00E94E9 +:104C9000A60586EA94E00E94A605809113011F9262 +:104CA0008F9383EA94E09F938F930E943F0681EA5B +:104CB00094E00E94A6058AE894E00E94A6058091EF +:104CC00012011F928F9387E894E09F938F930E9425 +:104CD0003F0685E894E00E94A6058DB79EB74896EA +:104CE0000FB6F8949EBF0FBE8DBF1BC0CE51EC2FE8 +:104CF000F0E0E35DFE4F80818093040312C061E029 +:104D000003C061E006C06AE0809104030E94C421F0 +:104D100008C0809104030E94672203C08AE295E0E4 +:104D200013C080910403882369F01F928F9384E25B +:104D300095E09F938F930E943F060F900F900F90E6 +:104D40000F9004C081E295E00E94A60581E006C0B4 +:104D50001092050380E002C080E000CFCF9108955B +:104D60000E94B7266894B1110C94462708950E94BA +:104D70002B2788F09F5798F0B92F9927B751B0F09B +:104D8000E1F0660F771F881F991F1AF0BA95C9F7CF +:104D900014C0B13091F00E944527B1E008950C9401 +:104DA0004527672F782F8827B85F39F0B93FCCF3B4 +:104DB000869577956795B395D9F73EF4909580954C +:104DC000709561957F4F8F4F9F4F0895E89409C06C +:104DD00097FB3EF490958095709561957F4F8F4F2E +:104DE0009F4F9923A9F0F92F96E9BB279395F69544 +:104DF000879577956795B795F111F8CFFAF4BB0FC2 +:104E000011F460FF1BC06F5F7F4F8F4F9F4F16C025 +:104E1000882311F096E911C0772321F09EE8872FAF +:104E2000762F05C0662371F096E8862F70E060E06B +:104E30002AF09A95660F771F881FDAF7880F9695E4 +:104E4000879597F9089557FD9058440F551F59F0CD +:104E50005F3F71F04795880F97FB991F61F09F3F67 +:104E600079F087950895121613061406551FF2CF90 +:104E70004695F1DF08C0161617061806991FF1CFE0 +:104E800086957105610508940895E894BB27662707 +:104E90007727CB0197F908950E945E270C94D827B5 +:104EA0000E94CA2738F00E94D12720F0952311F0E4 +:104EB0000C94C1270C94C7270C9446270E942327E3 +:104EC00078F39923C9F35523B9F3950F50E0551F93 +:104ED000AA27EE27FF27BB2700240894679520F414 +:104EE000E20FF31FB41F0A1E220F331F441FAA1F15 +:104EF0006695A9F7779530F4F30FB41F0A1E121EBA +:104F000008F46395330F441FAA1F221F769599F763 +:104F1000879520F4B40F0A1E121E631F440FAA1FA8 +:104F2000221F331F8695A9F7862F712D602D11241E +:104F30009F5750409AF0F1F088234AF0EE0FFF1F80 +:104F4000BB1F661F771F881F91505040A9F79E3FD7 +:104F5000510580F00C94C1270C9446275F3FE4F381 +:104F6000983ED4F3869577956795B795F795E7952D +:104F70009F5FC1F7FE2B880F911D9695879597F936 +:104F8000089597F99F6780E870E060E008959FEFCB +:104F900080EC089500240A941616170618060906D0 +:104FA000089500240A94121613061406050608959F +:104FB000092E0394000C11F4882352F0BB0F40F427 +:104FC000BF2B11F460FF04C06F5F7F4F8F4F9F4F67 +:104FD00008950024552704C0080E591F880F991FF3 +:104FE000009729F076956795B8F37105B9F7802D8C +:104FF000952F089597FB072E16F4009407D077FDA0 +:1050000009D00E94142807FC05D03EF490958195A4 +:105010009F4F0895709561957F4F0895EE0FFF1F84 +:105020000590F491E02D0994AA1BBB1B51E107C028 +:10503000AA1FBB1FA617B70710F0A61BB70B881F28 +:10504000991F5A95A9F780959095BC01CD010895B7 +:10505000F999FECF92BD81BDF89A992780B5089540 +:10506000A8E1B0E042E050E00C944B28262FF999DB +:10507000FECF1FBA92BD81BD20BD0FB6F894FA9A3B +:10508000F99A0FBE019608950E943628272F0C9496 +:105090003728DC01CB01FC01F999FECF06C0F2BD37 +:1050A000E1BDF89A319600B40D9241505040B8F7E6 +:0650B0000895F894FFCF03 +:1050B60051010000FF2107B1078E07580724070199 +:1050C600EB022808140A321E404D36228D02400299 +:1050D6000A02E80174018D01A601BF010001020365 +:0850E60004050607080900009B :106800000000000000000000040005000600070072 :10681000080009000A000B000C000D000E000F001C :1068200010001100120013001400150016001700CC From 54fd3340bf8eef61b1a2cf9e7bddf25032582039 Mon Sep 17 00:00:00 2001 From: leragequit Date: Tue, 12 Nov 2019 05:02:01 +0100 Subject: [PATCH 58/71] Adding support for the IBM 102 Terminal Keyboard ( #1386304 ) (#634) Adding support for the IBM 102 Terminal Keyboard ( #1386304 ) The 1386304 has a slightly different matrix than the 122/101 terminal keyboard. --- converter/terminal_usb/keymap.c | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/converter/terminal_usb/keymap.c b/converter/terminal_usb/keymap.c index 55b127f0..6d57a6f6 100644 --- a/converter/terminal_usb/keymap.c +++ b/converter/terminal_usb/keymap.c @@ -100,6 +100,37 @@ along with this program. If not, see . { KC_NO, KC_NO, KC_NO, KC_NO , KC_##K84, KC_NO, KC_NO, KC_NO, }, \ } +/* + * IBM Terminal keyboard 1386304, 102-key + */ +#define KEYMAP_102( \ + K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \ + \ + K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \ + K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \ + K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7B, \ + K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \ + K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \ +) { \ + { KC_NO, KC_NO , KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K07 }, \ + { KC_##K08, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K0D, KC_##K0E, KC_##K0F }, \ + { KC_NO , KC_##K11, KC_##K12, KC_NO , KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ + { KC_NO , KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ + { KC_NO , KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ + { KC_NO , KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ + { KC_NO , KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ + { KC_NO , KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ + { KC_NO , KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ + { KC_NO , KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ + { KC_NO , KC_NO , KC_##K52, KC_NO , KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ + { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_NO , KC_##K5E, KC_##K5F }, \ + { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ + { KC_NO , KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ + { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ + { KC_NO , KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO , KC_##K84, KC_NO, KC_NO, KC_NO, }, \ +} + // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. const uint8_t PROGMEM fn_layer[] = { 0, // Fn0 @@ -200,4 +231,33 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT ), */ + +/* 102-key keymaps */ + /* 0: default + * ,---. ,---------------. ,---------------. ,---------------. ,-----------. + * |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| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *|SEL| + * |-----------------------------------------------------------| |-----------| |---------------| + * |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| , | + * |-----------------------------------------------------------| ,---. |---------------| + * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------|Ent| + * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | + * `----' `---------------------------------------' `----' `-----------' `---------------' + */ +/* + KEYMAP_102( + 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,ESC, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END,PGDN, P7, P8, P9, PMNS, + CAPS, A, S, D, F, G, H, J, K, L,SCLN,QUOT, ENT, P4, P5, P6, PCMM, + LSFT, Z, X, C, V, B, N, M,COMM, DOT,SLSH, RSFT, UP, P1, P2, P3, + LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT, PENT + ), +*/ }; From 698c957cad7c0b9e89ee474dee463a2fcf274352 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 12 Nov 2019 15:37:23 +0900 Subject: [PATCH 59/71] core: Add short name for keycode KP_00 and KP_000 --- tmk_core/common/actionmap.h | 2 ++ tmk_core/common/keycode.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tmk_core/common/actionmap.h b/tmk_core/common/actionmap.h index a96c84b3..ca643e82 100644 --- a/tmk_core/common/actionmap.h +++ b/tmk_core/common/actionmap.h @@ -364,6 +364,8 @@ along with this program. If not, see . #define AC_P8 ACTION_KEY(KC_KP_8) #define AC_P9 ACTION_KEY(KC_KP_9) #define AC_P0 ACTION_KEY(KC_KP_0) +#define AC_P00 ACTION_KEY(KC_KP_00) +#define AC_P000 ACTION_KEY(KC_KP_000) #define AC_PDOT ACTION_KEY(KC_KP_DOT) #define AC_PCMM ACTION_KEY(KC_KP_COMMA) #define AC_PSLS ACTION_KEY(KC_KP_SLASH) diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index 63d52e89..acbe5c32 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -116,6 +116,8 @@ along with this program. If not, see . #define KC_P8 KC_KP_8 #define KC_P9 KC_KP_9 #define KC_P0 KC_KP_0 +#define KC_P00 KC_KP_00 +#define KC_P000 KC_KP_000 #define KC_PDOT KC_KP_DOT #define KC_PCMM KC_KP_COMMA #define KC_PSLS KC_KP_SLASH From 14a3b33f358a677f62228e8fb690bdd90aa04e7f Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 12 Nov 2019 15:41:19 +0900 Subject: [PATCH 60/71] terminal_usb: Change keymap for hidden keys --- converter/terminal_usb/README | 14 ++- converter/terminal_usb/keymap.c | 169 ++++++++------------------------ 2 files changed, 55 insertions(+), 128 deletions(-) diff --git a/converter/terminal_usb/README b/converter/terminal_usb/README index b3aadeae..79e31d2e 100644 --- a/converter/terminal_usb/README +++ b/converter/terminal_usb/README @@ -27,10 +27,20 @@ $ make RESOURCE -------- Soarer's Converter: http://geekhack.org/index.php?topic=17458.0 -102keys(1392595): http://geekhack.org/index.php?topic=10737.0 -122keys(1390876): http://www.seasip.info/VintagePC/ibm_1390876.html KbdBabel: http://www.kbdbabel.org/ RJ45 Connector: http://www.kbdbabel.org/conn/kbd_connector_ibmterm.png DIN Connector: http://www.kbdbabel.org/conn/kbd_connector_ibm3179_318x_319x.png +Terminal keyboards +------------------ +122-key + 1390876 http://www.seasip.info/VintagePC/ibm_1390876.html + 6110344 http://www.seasip.info/VintagePC/ibm_6110344.html + +102-key + 1392595 https://deskthority.net/viewtopic.php?t=8371 https://geekhack.org/index.php?topic=10737.0 + 1386303 https://geekhack.org/index.php?topic=66959.0 + 1391406 http://www.seasip.info/VintagePC/ibm_1391406.html + + EOF diff --git a/converter/terminal_usb/keymap.c b/converter/terminal_usb/keymap.c index 6d57a6f6..60330b57 100644 --- a/converter/terminal_usb/keymap.c +++ b/converter/terminal_usb/keymap.c @@ -26,19 +26,9 @@ along with this program. If not, see . -/* - * IBM Terminal keyboard 6110345(122keys)/1392595(102keys) - * http://geekhack.org/showthread.php?10737-What-Can-I-Do-With-a-Terminal-Model-M +/* + * IBM Terminal keyboard 122-key * http://www.seasip.info/VintagePC/ibm_1391406.html - * - * Keymap array: - * 8 bytes - * +---------+ - * 0| | - * :| | 0x00-0x87 - * ;| | - * 17| | - * +---------+ */ #define KEYMAP( \ K08,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F, \ @@ -69,52 +59,23 @@ along with this program. If not, see . { KC_NO, KC_NO, KC_NO, KC_##K83, KC_##K84, KC_NO, KC_NO, KC_NO, }, \ } -/* - * IBM Terminal keyboard 1399625, 101-key - */ -#define KEYMAP_101( \ - K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \ - \ - K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \ - K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D, \ - K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7C, \ - K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \ - K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \ -) { \ - { KC_NO, KC_NO , KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K07 }, \ - { KC_##K08, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K0D, KC_##K0E, KC_##K0F }, \ - { KC_NO , KC_##K11, KC_##K12, KC_NO , KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ - { KC_NO , KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ - { KC_NO , KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ - { KC_NO , KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ - { KC_NO , KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ - { KC_NO , KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ - { KC_NO , KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ - { KC_NO , KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ - { KC_NO , KC_NO , KC_##K52, KC_NO , KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ - { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_NO , KC_##K5E, KC_##K5F }, \ - { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ - { KC_NO , KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ - { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ - { KC_NO , KC_##K79, KC_##K7A, KC_NO , KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO , KC_##K84, KC_NO, KC_NO, KC_NO, }, \ -} /* - * IBM Terminal keyboard 1386304, 102-key + * IBM Terminal keyboard 102-key + * http://www.seasip.info/VintagePC/ibm_1391406.html */ #define KEYMAP_102( \ - K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \ - \ - K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \ - K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \ - K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7B, \ - K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \ - K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \ + K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \ + \ + K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66, K67,K6E,K6F, K76,K77,K7E,K84, \ + K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \ + K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K53,K5A, K6B,K73,K74,K7B, \ + K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K63, K69,K72,K7A,K79, \ + K11, K19, K29, K39, K58, K61,K60,K6A, K68,K70,K71,K78 \ ) { \ { KC_NO, KC_NO , KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K07 }, \ { KC_##K08, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K0D, KC_##K0E, KC_##K0F }, \ - { KC_NO , KC_##K11, KC_##K12, KC_NO , KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ + { KC_NO , KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ { KC_NO , KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ { KC_NO , KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ { KC_NO , KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ @@ -122,12 +83,12 @@ along with this program. If not, see . { KC_NO , KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ { KC_NO , KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ { KC_NO , KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ - { KC_NO , KC_NO , KC_##K52, KC_NO , KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ - { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_NO , KC_##K5E, KC_##K5F }, \ + { KC_NO , KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ + { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \ { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ - { KC_NO , KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ + { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ - { KC_NO , KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ + { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ { KC_NO, KC_NO, KC_NO, KC_NO , KC_##K84, KC_NO, KC_NO, KC_NO, }, \ } @@ -158,27 +119,25 @@ const uint8_t PROGMEM fn_keycode[] = { const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: default - * + /* * ,-----------------------------------------------. * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| - * `-----------------------------------------------' + * `-----------------------------------------------' * ,-----------------------------------------------. * |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| - * `-----------------------------------------------' + * `-----------------------------------------------' * ,-------. ,-----------------------------------------------------------. ,-----------. ,---------------. - * |PrS|Esc| | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BS | |Ins|Hom|PgU| |NmL| /| *| -| + * |PrS|Esc| | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |Ins|Hom|PgU| |NmL| /| *| -| * |-------| |-----------------------------------------------------------| |-----------| |---------------| - * |ScL|In4| |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| | - * |-------| |-----------------------------------------------------------| `-----------' |-----------| +| - * |Pau|In5| |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #|Retu| |Up | | 4| 5| 6| | + * |ScL|In4| |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| +| + * |-------| |-----------------------------------------------------------| `-----------' |-----------|---| + * |Pau|In5| |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #| Ret| |Up | | 4| 5| 6| ,| * |-------| |-----------------------------------------------------------| ,-----------. |---------------| - * |App|In6| |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Lef|In2|Rig| | 1| 2| 3| | - * |-------| |-----------------------------------------------------------| `-----------' |-----------|Ent| - * |Gui|Gui| |Ctrl| |Alt | Space |Alt | |Ctrl| |Dow| | 0| .| | + * |App|In6| |Shif| \| Z| X| C| V| B| N| M| ,| ,| /| RO| Shift| |Lef|In2|Rig| | 1| 2| 3|Ent| + * |-------| |-----------------------------------------------------------| `-----------' |-----------|---| + * |Gui|Gui| |Ctrl| |Alt | Space |Alt | |Ctrl| |Dow| | 00| 0| .| =| * `-------' `----' `---------------------------------------' `----' `---' `---------------' */ -/* KEYMAP( F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, @@ -187,77 +146,35 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, PAUS,INT5, CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, UP, P4, P5, P6, PCMM, APP, INT6, LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, - RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, NO, P0, PDOT,NO - ), -*/ - // pseudo ANSI - KEYMAP( - F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, - F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, - - PSCR,ESC, GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, NO, DEL, END, PGDN, P7, P8, P9, PPLS, - PAUS,INT5, CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, BSLS,ENT, UP, P4, P5, P6, PCMM, - APP, INT6, LSFT,LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, - RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, NO, P0, PDOT,NO + RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, P00, P0, PDOT,PEQL ), -/* 101-key keymaps - */ - /* 0: default + +#if 0 + /* * ,---. ,---------------. ,---------------. ,---------------. ,-----------. * |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| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *| -| + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |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| | - * |-----------------------------------------------------------| ,---. |---------------| - * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | - * |-----------------------------------------------------------| ,-----------. |-----------|Ent| - * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | - * `----' `---------------------------------------' `----' `-----------' `---------------' - */ -/* - KEYMAP_101( - 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, - CAPS, 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, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT - ), -*/ - -/* 102-key keymaps */ - /* 0: default - * ,---. ,---------------. ,---------------. ,---------------. ,-----------. - * |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| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *|SEL| - * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| - | + * |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| , | + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #| Ret| | 4| 5| 6| ,| * |-----------------------------------------------------------| ,---. |---------------| - * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | - * |-----------------------------------------------------------| ,-----------. |-----------|Ent| - * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | + * |Shift | Z| X| C| V| B| N| M| ,| ,| /| RO| Shift| |Up | | 1| 2| 3|Ent| + * |-----------------------------------------------------------| ,-----------. |-----------|---| + * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 00| 0| .| =| * `----' `---------------------------------------' `----' `-----------' `---------------' */ -/* KEYMAP_102( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK, BRK, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL,BSPC, INS,HOME,PGUP, NLCK,PSLS,PAST,ESC, - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END,PGDN, P7, P8, P9, PMNS, - CAPS, A, S, D, F, G, H, J, K, L,SCLN,QUOT, ENT, P4, P5, P6, PCMM, - LSFT, Z, X, C, V, B, N, M,COMM, DOT,SLSH, RSFT, UP, P1, P2, P3, - LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT, PENT + 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, PENT, + LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P00, P0, PDOT,PEQL ), -*/ +#endif }; From bb67a8e48f1fcfa4ff2a7bd8a564a9e1ee62f43a Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 12 Nov 2019 15:49:23 +0900 Subject: [PATCH 61/71] terminal_usb: Add note for pull-up resistors --- converter/terminal_usb/README | 2 ++ 1 file changed, 2 insertions(+) diff --git a/converter/terminal_usb/README b/converter/terminal_usb/README index 79e31d2e..eeb25706 100644 --- a/converter/terminal_usb/README +++ b/converter/terminal_usb/README @@ -15,6 +15,7 @@ Data: PD0 Clock: PD1 And VCC and GND, of course. See RESOURCE for keyboard connector pin assign. +Use 1K ohm pull-up resisters on the signal lines. BUILD @@ -31,6 +32,7 @@ KbdBabel: http://www.kbdbabel.org/ RJ45 Connector: http://www.kbdbabel.org/conn/kbd_connector_ibmterm.png DIN Connector: http://www.kbdbabel.org/conn/kbd_connector_ibm3179_318x_319x.png + Terminal keyboards ------------------ 122-key From c4b8b36950a0b936c4b699afaecd77cdc642d471 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Dec 2019 11:34:05 +0900 Subject: [PATCH 62/71] core: Add IBM PC Keyboard protocol support --- tmk_core/protocol/ibmpc.c | 264 ++++++++++++++++++++++++++++++++++++++ tmk_core/protocol/ibmpc.h | 199 ++++++++++++++++++++++++++++ 2 files changed, 463 insertions(+) create mode 100644 tmk_core/protocol/ibmpc.c create mode 100644 tmk_core/protocol/ibmpc.h diff --git a/tmk_core/protocol/ibmpc.c b/tmk_core/protocol/ibmpc.c new file mode 100644 index 00000000..e65ac461 --- /dev/null +++ b/tmk_core/protocol/ibmpc.c @@ -0,0 +1,264 @@ +/* +Copyright 2010,2011,2012,2013,2019 Jun WAKO + +This software is licensed with a Modified BSD License. +All of this is supposed to be Free Software, Open Source, DFSG-free, +GPL-compatible, and OK to use in both free and proprietary applications. +Additions and corrections to this file are welcome. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +* Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +/* + * IBM PC keyboard protocol + */ + +#include +#include +#include "ringbuf.h" +#include "ibmpc.h" +#include "debug.h" +#include "timer.h" +#include "wait.h" + + +#define WAIT(stat, us, err) do { \ + if (!wait_##stat(us)) { \ + ibmpc_error = err; \ + goto ERROR; \ + } \ +} while (0) + + +#define BUF_SIZE 16 +static uint8_t buf[BUF_SIZE]; +static ringbuf_t rb = { + .buffer = buf, + .head = 0, + .tail = 0, + .size_mask = BUF_SIZE - 1 +}; + +volatile uint8_t ibmpc_protocol = IBMPC_PROTOCOL_AT; +volatile uint8_t ibmpc_error = IBMPC_ERR_NONE; + +void ibmpc_host_init(void) +{ + clock_init(); + data_init(); + idle(); + IBMPC_INT_INIT(); + IBMPC_INT_ON(); + // POR(150-2000ms) plus BAT(300-500ms) may take 2.5sec([3]p.20) + //wait_ms(2500); +} + +int16_t ibmpc_host_send(uint8_t data) +{ + bool parity = true; + ibmpc_error = IBMPC_ERR_NONE; + + if (ibmpc_protocol == IBMPC_PROTOCOL_XT) return -1; + + dprintf("w%02X ", data); + + IBMPC_INT_OFF(); + + /* terminate a transmission if we have */ + inhibit(); + wait_us(100); // 100us [4]p.13, [5]p.50 + + /* 'Request to Send' and Start bit */ + data_lo(); + clock_hi(); + WAIT(clock_lo, 10000, 1); // 10ms [5]p.50 + + /* Data bit[2-9] */ + for (uint8_t i = 0; i < 8; i++) { + wait_us(15); + if (data&(1< 10) { + ibmpc_error = IBMPC_ERR_TIMEOUT | IBMPC_ERR_RECV | state; + state = START; + data = 0; + parity = 1; + } + last_time = timer_read(); + + switch (state) { + case START: + if (ibmpc_protocol == IBMPC_PROTOCOL_XT) { + // ignore start(0) bit + if (!data_in()) return; + } else { + if (data_in()) + goto ERROR; + } + case BIT0: + case BIT1: + case BIT2: + case BIT3: + case BIT4: + case BIT5: + case BIT6: + case BIT7: + data >>= 1; + if (data_in()) { + data |= 0x80; + parity++; + } + if (state == BIT7 && ibmpc_protocol == IBMPC_PROTOCOL_XT) { + if (!ringbuf_put(&rb, data)) { + ibmpc_error = IBMPC_ERR_FULL; + goto ERROR; + } + ibmpc_error = IBMPC_ERR_NONE; + goto DONE; + } + break; + case PARITY: + if (data_in()) { + if (!(parity & 0x01)) + goto ERROR; + } else { + if (parity & 0x01) + goto ERROR; + } + break; + case STOP: + if (!data_in()) + goto ERROR; + if (!ringbuf_put(&rb, data)) { + ibmpc_error = IBMPC_ERR_FULL; + goto ERROR; + } + ibmpc_error = IBMPC_ERR_NONE; + goto DONE; + break; + default: + goto ERROR; + } + goto NEXT; + +ERROR: + ibmpc_error |= state; + ibmpc_error |= IBMPC_ERR_RECV; + ringbuf_reset(&rb); +DONE: + last_time = 0; + state = START; + data = 0; + parity = 1; + return; +NEXT: + state++; + return; +} + +/* send LED state to keyboard */ +void ibmpc_host_set_led(uint8_t led) +{ + ibmpc_host_send(0xED); + ibmpc_host_send(led); +} diff --git a/tmk_core/protocol/ibmpc.h b/tmk_core/protocol/ibmpc.h new file mode 100644 index 00000000..47e71e27 --- /dev/null +++ b/tmk_core/protocol/ibmpc.h @@ -0,0 +1,199 @@ +/* +Copyright 2010,2011,2012,2013,2019 Jun WAKO + +This software is licensed with a Modified BSD License. +All of this is supposed to be Free Software, Open Source, DFSG-free, +GPL-compatible, and OK to use in both free and proprietary applications. +Additions and corrections to this file are welcome. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +* Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef IBMPC_H +#define IBMPC_H + +#include +#include "wait.h" +#include "print.h" + +/* + * IBM PC keyboard protocol + * + * PS/2 Resources + * -------------- + * [1] The PS/2 Mouse/Keyboard Protocol + * http://www.computer-engineering.org/ps2protocol/ + * Concise and thorough primer of PS/2 protocol. + * + * [2] Keyboard and Auxiliary Device Controller + * http://www.mcamafia.de/pdf/ibm_hitrc07.pdf + * Signal Timing and Format + * + * [3] Keyboards(101- and 102-key) + * http://www.mcamafia.de/pdf/ibm_hitrc11.pdf + * Keyboard Layout, Scan Code Set, POR, and Commands. + * + * [4] PS/2 Reference Manuals + * http://www.mcamafia.de/pdf/ibm_hitrc07.pdf + * Collection of IBM Personal System/2 documents. + * + * [5] TrackPoint Engineering Specifications for version 3E + * https://web.archive.org/web/20100526161812/http://wwwcssrv.almaden.ibm.com/trackpoint/download.html + */ +#define IBMPC_ACK 0xFA +#define IBMPC_RESEND 0xFE +#define IBMPC_SET_LED 0xED + +#define IBMPC_PROTOCOL_AT 0 +#define IBMPC_PROTOCOL_XT 1 + +// TODO: error numbers +#define IBMPC_ERR_NONE 0 +#define IBMPC_ERR_RECV 0x00 +#define IBMPC_ERR_SEND 0x10 +#define IBMPC_ERR_TIMEOUT 0x20 +#define IBMPC_ERR_FULL 0x40 + +#define IBMPC_LED_SCROLL_LOCK 0 +#define IBMPC_LED_NUM_LOCK 1 +#define IBMPC_LED_CAPS_LOCK 2 + + +extern volatile uint8_t ibmpc_protocol; +extern volatile uint8_t ibmpc_error; + +void ibmpc_host_init(void); +int16_t ibmpc_host_send(uint8_t data); +int16_t ibmpc_host_recv_response(void); +int16_t ibmpc_host_recv(void); +void ibmpc_host_set_led(uint8_t usb_led); + + +/*-------------------------------------------------------------------- + * static functions + *------------------------------------------------------------------*/ +#if defined(__AVR__) +/* + * Clock + */ +static inline void clock_init(void) +{ + IBMPC_CLOCK_PORT &= ~(1< Date: Wed, 4 Dec 2019 11:35:48 +0900 Subject: [PATCH 63/71] ibmpc_usb: Add IBM PC Keyobard converter --- converter/ibmpc_usb/Makefile | 114 ++++ converter/ibmpc_usb/Makefile.atmega32u2 | 3 + converter/ibmpc_usb/Makefile.atmega32u4 | 3 + converter/ibmpc_usb/README.md | 168 +++++ converter/ibmpc_usb/config.h | 92 +++ converter/ibmpc_usb/ibmpc_usb.c | 853 ++++++++++++++++++++++++ converter/ibmpc_usb/ibmpc_usb.h | 9 + converter/ibmpc_usb/unimap_plain.c | 45 ++ converter/ibmpc_usb/unimap_trans.h | 237 +++++++ 9 files changed, 1524 insertions(+) create mode 100644 converter/ibmpc_usb/Makefile create mode 100644 converter/ibmpc_usb/Makefile.atmega32u2 create mode 100644 converter/ibmpc_usb/Makefile.atmega32u4 create mode 100644 converter/ibmpc_usb/README.md create mode 100644 converter/ibmpc_usb/config.h create mode 100644 converter/ibmpc_usb/ibmpc_usb.c create mode 100644 converter/ibmpc_usb/ibmpc_usb.h create mode 100644 converter/ibmpc_usb/unimap_plain.c create mode 100644 converter/ibmpc_usb/unimap_trans.h diff --git a/converter/ibmpc_usb/Makefile b/converter/ibmpc_usb/Makefile new file mode 100644 index 00000000..636cb324 --- /dev/null +++ b/converter/ibmpc_usb/Makefile @@ -0,0 +1,114 @@ +# Target file name (without extension). +TARGET ?= ibmpc_usb + +# Directory common source filess exist +TMK_DIR ?= ../../tmk_core + +# Directory keyboard dependent files exist +TARGET_DIR ?= . + +# project specific files +SRC ?= protocol/ibmpc.c \ + ibmpc_usb.c + +CONFIG_H ?= config.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 +# Not work with suart debug +#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +# This improves response of keyboard when wakeup +OPT_DEFS += -DSUSPEND_MODE_STANDBY + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +BOOTLOADER_SIZE ?= 4096 +OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE) + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover + +KEYMAP_SECTION_ENABLE = yes +UNIMAP_ENABLE = yes + + +# 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) + +include $(TMK_DIR)/protocol.mk +include $(TMK_DIR)/protocol/lufa.mk +include $(TMK_DIR)/common.mk +include $(TMK_DIR)/rules.mk diff --git a/converter/ibmpc_usb/Makefile.atmega32u2 b/converter/ibmpc_usb/Makefile.atmega32u2 new file mode 100644 index 00000000..53475b3a --- /dev/null +++ b/converter/ibmpc_usb/Makefile.atmega32u2 @@ -0,0 +1,3 @@ +MCU = atmega32u2 + +include Makefile diff --git a/converter/ibmpc_usb/Makefile.atmega32u4 b/converter/ibmpc_usb/Makefile.atmega32u4 new file mode 100644 index 00000000..ba4ec743 --- /dev/null +++ b/converter/ibmpc_usb/Makefile.atmega32u4 @@ -0,0 +1,3 @@ +MCU = atmega32u4 + +include Makefile diff --git a/converter/ibmpc_usb/README.md b/converter/ibmpc_usb/README.md new file mode 100644 index 00000000..7b24866f --- /dev/null +++ b/converter/ibmpc_usb/README.md @@ -0,0 +1,168 @@ +IBM PC Keyboard Converter +========================= +The converter translates IBM PC keyboard protocols to use classic keyboards with modern computer with USB ports. +It supports both IBM XT and AT protocols, and all of scan code set 1, 2 and 3 with one firmware. + +This is not finish project and still work in progress as of 2019-12-02. Test in the field and feedback from users are needed to improve + +This project is intended to integrated existent TMK XT, PS/2 and Terminal converters. + +- IBM XT converter: https://geekhack.org/index.php?topic=94649.0 +- PS/2 converter: https://geekhack.org/index.php?topic=14618.0 +- IBM Terminal converter: http://geekhack.org/index.php?topic=27272.0 + + + +Keyboard supported +------------------ +- PC XT keyboard of IBM 5150 5160 + - 83-key: 1501100 1501105 +- PC AT keyboard of IBM 5170 + - 84-key: 6450200 6450225 +- PC Terminal keyboard of IBM 5271(3270 PC) + - 122-key: 6110344 6110345 1397000 + - 102-key: 1390680 1395764 1392595 +- PS/2 keyboards(AT+CodeSet2) +- Clones of above models + + + +Hardware +-------- +Firmware supports ATMega32u4 and ATMega32u2 by default, Teensy2 or ProMicro can be used. +Wire controller pins below to keyboard signals, besides VCC and GND. This is compatible for Soarer's converter. + +- Data PD0 +- Clock PD1 +- Reset PB6 or PB7 (For some of XT keyboards. Not needed for AT, PS/2 and Terminal) + +Pull up resistors of 1-4.7K Ohm on both Data and Clock line are recommended, without them it won't work in some cases. + +### Reset +Old Type-1 IBM XT keyboard and some of XT clones need this to reset its controller on startup. Many of IBM XT keyboards available are Type-2 and don't need the reset pin. + +See this for Type-1 vs Type-2: +https://vintagecomputer.ca/ibm-pc-model-f-keyboard-type-1-vs-type-2/ + +As for clones Zenith Z-150 XT and Leading Edge DC-2014 are known to need this. + +### Connector pinouts +#### XT +- http://www.kbdbabel.org/conn/kbd_connector_ibmpc.png +- https://allpinouts.org/pinouts/connectors/input_device/keyboard-xt-5-pin/ + +#### AT +- http://www.kbdbabel.org/conn/kbd_connector_ps2.png +- https://old.pinouts.ru/InputCables/KeyboardPC5_pinout.shtml + +#### PS/2 +- https://pinouts.ru/InputCables/KeyboardPC6_pinout.shtml + +#### Terminal +- http://www.kbdbabel.org/conn/kbd_connector_ibmterm.png +- http://www.kbdbabel.org/conn/kbd_connector_ibm3179_318x_319x.png + + + +Source Code +----------- +https://github.com/tmk/tmk_keyboard/tree/master/converter/ibmpc_usb + + + +Build Firmware +-------------- + + $ cd converter/ibmpc_usb + $ make clean + $ make + + + +Keyboard discrimination +----------------------- +This section explains how the converter determines proper protocol and scan code set for keyboard. The converter need to do that before starting to receive and translate scan codes from keyboard. + +### Keyboard ID +After startup the converter sends 0xF2 command to get keyboard ID and sees how the keyboard responds to the command. + +Response from keyboard: + +- XT keyboard doesn't support any command and returns no response. +- AT keyboard should respond with 0xFA to the command but returns no keyboard ID. +- PS/2 keyboard should respond with 0xFA to the command, followd by keyboard ID, such as 0xAB86. +- Terminal keyboard should respond with 0xFA to the command, followed by keyboard ID, such as 0xBFBF. + +Now we can dscriminate the keyboard and determine suitable protocol and scan code set as described below. + +### Protocol +- Signals from XT keyboard are recognized by XT protocol. +- Signals from AT, PS/2 and Terminal keyboard are recognized by AT protocol. + +### Scan code Set +- Scan codes from XT keyboard are handled as CodeSet1. +- Scan codes from AT and PS/2 keyboard are handled as CodeSet2. +- Scan codes from Terminal keyhboard are handled as CodeSet3. + + + +Debug +----- +Use hid_listen to see debug outputs from the converter. + +https://www.pjrc.com/teensy/hid_listen.html + + + +Resources +--------- +IBM PC Keyboard Protocol Resources: + +[a] [Microsoft USB HID to PS/2 Translation Table - Scan Code Set 1 and 2]( +http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf) + +[b] [Microsoft Keyboard Scan Code Specification - Special rules of Scan Code Set 1 and 2]( +http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc) + +[1] [PS/2 Reference Manuals - Collection of IBM Personal System/2 documents]( +http://www.mcamafia.de/pdf/pdfref.htm) + +[2] [Keyboard and Auxiliary Device Controller - Signal Timing and Format]( +http://www.mcamafia.de/pdf/ibm_hitrc07.pdf) + +[3] [Keyboards(101- and 102-key) - Keyboard Layout, Scan Code Set, POR, and Commands]( +http://www.mcamafia.de/pdf/ibm_hitrc11.pdf) + +[4] [IBM PC XT Keyboard Protocol]( +https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol) + +[5] [IBM Keyboard Scan Code by John Elliott - 83-key, 84-key, 102-key and 122-key]( +https://www.seasip.info/VintagePC/index.html) + +[6] [IBM 1391406 Keyboard - Scan Code Set 2 of 102-key PS/2 keyboard]( +https://www.seasip.info/VintagePC/ibm_1391406.html) + +[7] [The IBM 6110344 Keyboard - Scan Code Set 3 of 122-key terminal keyboard]( +https://www.seasip.info/VintagePC/ibm_6110344.html) + +[y] [TrackPoint Engineering Specifications for version 3E]( +https://web.archive.org/web/20100526161812/http://wwwcssrv.almaden.ibm.com/trackpoint/download.html) + +[z] [Soarer's XT/AT/PS2/Terminal to USB converter]( +https://geekhack.org/index.php?topic=17458.0) + + + +TODO +---- +### Reset method for rescue +For converter without accesible reset button when magickey combo doesn't work. + +Check pin status at powerup: + +- if Data and/or Clock are pull down to GND + +### Force protocol and scan code set +Keyboard discrimination may fail and you have to configure them by hand. + +### Add AT90usb1286 support for Teensy2++ diff --git a/converter/ibmpc_usb/config.h b/converter/ibmpc_usb/config.h new file mode 100644 index 00000000..fb204ecd --- /dev/null +++ b/converter/ibmpc_usb/config.h @@ -0,0 +1,92 @@ +/* +Copyright 2019 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 CONFIG_H +#define CONFIG_H + +#include + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1bee +#define DEVICE_VER 0x0001 +#define MANUFACTURER t.m.k. +#define PRODUCT IBM PC keyboard converter +#define DESCRIPTION convert IBM PC keyboard to USB + + +/* matrix size */ +#define MATRIX_ROWS 16 // keycode bit: 6-3 +#define MATRIX_COLS 8 // keycode bit: 2-0 + + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \ + keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) \ +) + + +/* + * Pin and interrupt configuration + */ +#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__) +/* uses INT1 for clock line */ +#define IBMPC_CLOCK_PORT PORTD +#define IBMPC_CLOCK_PIN PIND +#define IBMPC_CLOCK_DDR DDRD +#define IBMPC_CLOCK_BIT 1 +#define IBMPC_DATA_PORT PORTD +#define IBMPC_DATA_PIN PIND +#define IBMPC_DATA_DDR DDRD +#define IBMPC_DATA_BIT 0 +#define IBMPC_RST_PORT PORTB +#define IBMPC_RST_PIN PINB +#define IBMPC_RST_DDR DDRB +#define IBMPC_RST_BIT1 6 +#define IBMPC_RST_BIT2 7 + +/* reset for XT keyboard: low pulse for 500ms and after that HiZ for safety */ +#define IBMPC_RESET() do { \ + IBMPC_RST_PORT &= ~(1< + +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 "print.h" +#include "util.h" +#include "debug.h" +#include "ibmpc.h" +#include "host.h" +#include "led.h" +#include "matrix.h" +#include "timer.h" +#include "action.h" +#include "ibmpc_usb.h" + + +static void matrix_make(uint8_t code); +static void matrix_break(uint8_t code); + +static int8_t process_cs1(void); +static int8_t process_cs2(void); +static int8_t process_cs3(void); + + +static uint8_t matrix[MATRIX_ROWS]; +#define ROW(code) ((code>>3)&0x0F) +#define COL(code) (code&0x07) + +static int16_t read_wait(uint16_t wait_ms) +{ + uint16_t start = timer_read(); + int16_t code; + while ((code = ibmpc_host_recv()) == -1 && timer_elapsed(start) < wait_ms); + return code; +} + +static uint16_t read_keyboard_id(void) +{ + uint16_t id = 0; + int16_t code = 0; + + // Disable + code = ibmpc_host_send(0xF5); + + // Read ID + code = ibmpc_host_send(0xF2); + if (code == -1) return 0xFFFF; // XT or No keyboard + if (code != 0xFA) return 0xFFFE; // Broken PS/2? + + code = read_wait(1000); + if (code == -1) return 0x0000; // AT + id = (code & 0xFF)<<8; + + code = read_wait(1000); + id |= code & 0xFF; + + // Enable + code = ibmpc_host_send(0xF4); + + return id; +} + +void matrix_init(void) +{ + debug_enable = true; + ibmpc_host_init(); + + // hard reset for XT keyboard + IBMPC_RESET(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; + + return; +} + +/* + * keyboard recognition + * + * 1. Send F2 to get keyboard ID + * a. no ACK(FA): XT keyobard + * b. ACK but no ID: 84-key AT keyboard CodeSet2 + * c. ID is AB 83: PS/2 keyboard CodeSet2 + * d. ID is BF BF: Terminal keyboard CodeSet3 + * e. error on recv: maybe broken PS/2 + */ +uint16_t keyboard_id = 0x0000; +keyboard_kind_t keyboard_kind = NONE; +uint8_t matrix_scan(void) +{ + // scan code reading states + static enum { + INIT, + WAIT_STARTUP, + READ_ID, + LED_SET, + LOOP, + END + } state = INIT; + static uint16_t last_time; + + + if (ibmpc_error) { + xprintf("err: %02X\n", ibmpc_error); + + // when recv error, neither send error nor buffer full + if (!(ibmpc_error & (IBMPC_ERR_SEND | IBMPC_ERR_FULL))) { + // keyboard init again + if (state == LOOP) { + xprintf("init\n"); + state = INIT; + } + } + + // clear or process error + ibmpc_error = IBMPC_ERR_NONE; + } + + switch (state) { + case INIT: + ibmpc_protocol = IBMPC_PROTOCOL_AT; + keyboard_kind = NONE; + keyboard_id = 0x0000; + last_time = timer_read(); + state = WAIT_STARTUP; + matrix_clear(); + clear_keyboard(); + break; + case WAIT_STARTUP: + // read and ignore BAT code and other codes when power-up + ibmpc_host_recv(); + if (timer_elapsed(last_time) > 1000) { + state = READ_ID; + } + break; + case READ_ID: + keyboard_id = read_keyboard_id(); + if (ibmpc_error) { + xprintf("err: %02X\n", ibmpc_error); + ibmpc_error = IBMPC_ERR_NONE; + } + xprintf("ID: %04X\n", keyboard_id); + if (0xAB00 == (keyboard_id & 0xFF00)) { + // CodeSet2 PS/2 + keyboard_kind = PC_AT; + } else if (0xBF00 == (keyboard_id & 0xFF00)) { + // CodeSet3 Terminal + keyboard_kind = PC_TERMINAL; + } else if (0x0000 == keyboard_id) { + // CodeSet2 AT + keyboard_kind = PC_AT; + } else if (0xFFFF == keyboard_id) { + // CodeSet1 XT + keyboard_kind = PC_XT; + } else if (0xFFFE == keyboard_id) { + // CodeSet2 PS/2 fails to response? + keyboard_kind = PC_AT; + } else if (0x00FF == keyboard_id) { + // Mouse is not supported + xprintf("Mouse: not supported\n"); + keyboard_kind = NONE; + } else { + keyboard_kind = PC_AT; + } + + // protocol + if (keyboard_kind == PC_XT) { + xprintf("kbd: XT\n"); + ibmpc_protocol = IBMPC_PROTOCOL_XT; + } else if (keyboard_kind == PC_AT) { + xprintf("kbd: AT\n"); + ibmpc_protocol = IBMPC_PROTOCOL_AT; + } else if (keyboard_kind == PC_TERMINAL) { + xprintf("kbd: Terminal\n"); + ibmpc_protocol = IBMPC_PROTOCOL_AT; + // Set all keys - make/break [3]p.23 + ibmpc_host_send(0xF8); + } else { + xprintf("kbd: Unknown\n"); + ibmpc_protocol = IBMPC_PROTOCOL_AT; + } + state = LED_SET; + break; + case LED_SET: + led_set(host_keyboard_leds()); + state = LOOP; + case LOOP: + switch (keyboard_kind) { + case PC_XT: + process_cs1(); + break; + case PC_AT: + process_cs2(); + break; + case PC_TERMINAL: + process_cs3(); + break; + default: + break; + } + break; + default: + break; + } + return 1; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & (1< | + * LShift | E0 F0 12 | E0 12 + * RShift | E0 F0 59 | E0 59 + * L+RShift | E0 F0 12 E0 F0 59 | E0 59 E0 12 + * + * b) when Num Lock is on + * modifiers | make | break + * ----------+---------------------------+---------------------- + * Other | E0 12 | E0 F0 12 + * Shift'd | | + * + * Handling: These prefix/postfix codes are ignored. + * + * + * 2) Keypad / + * modifiers | make | break + * ----------+---------------------------+---------------------- + * Ohter | | + * LShift | E0 F0 12 | E0 12 + * RShift | E0 F0 59 | E0 59 + * L+RShift | E0 F0 12 E0 F0 59 | E0 59 E0 12 + * + * Handling: These prefix/postfix codes are ignored. + * + * + * 3) PrintScreen + * modifiers | make | break + * ----------+--------------+----------------------------------- + * Other | E0 12 E0 7C | E0 F0 7C E0 F0 12 + * Shift'd | E0 7C | E0 F0 7C + * Control'd | E0 7C | E0 F0 7C + * Alt'd | 84 | F0 84 + * + * Handling: These prefix/postfix codes are ignored, and both scan codes + * 'E0 7C' and 84 are seen as PrintScreen. + * + * 4) Pause + * modifiers | make(no break code) + * ----------+-------------------------------------------------- + * Other | E1 14 77 E1 F0 14 F0 77 + * Control'd | E0 7E E0 F0 7E + * + * Handling: Both code sequences are treated as a whole. + * And we need a ad hoc 'pseudo break code' hack to get the key off + * because it has no break code. + * + * Notes: + * 'Hanguel/English'(F1) and 'Hanja'(F2) have no break code. See [a]. + * These two Korean keys need exceptional handling and are not supported for now. + * + */ +static uint8_t cs2_e0code(uint8_t code) { + switch(code) { + // E0 prefixed codes translation See [a]. + case 0x11: return 0x0F; // right alt + case 0x14: return 0x17; // right control + case 0x1F: return 0x19; // left GUI + case 0x27: return 0x1F; // right GUI + case 0x2F: return 0x5C; // apps + case 0x4A: return 0x60; // keypad / + case 0x5A: return 0x62; // keypad enter + case 0x69: return 0x27; // end + case 0x6B: return 0x53; // cursor left + case 0x6C: return 0x2F; // home + case 0x70: return 0x39; // insert + case 0x71: return 0x37; // delete + case 0x72: return 0x3F; // cursor down + case 0x74: return 0x47; // cursor right + case 0x75: return 0x4F; // cursor up + case 0x7A: return 0x56; // page down + case 0x7D: return 0x5E; // page up + case 0x7C: return 0x6F; // Print Screen + case 0x7E: return 0x00; // Control'd Pause + + case 0x21: return 0x65; // volume down + case 0x32: return 0x6E; // volume up + case 0x23: return 0x7F; // mute + case 0x10: return 0x08; // (WWW search) -> F13 + case 0x18: return 0x10; // (WWW favourites) -> F14 + case 0x20: return 0x18; // (WWW refresh) -> F15 + case 0x28: return 0x20; // (WWW stop) -> F16 + case 0x30: return 0x28; // (WWW forward) -> F17 + case 0x38: return 0x30; // (WWW back) -> F18 + case 0x3A: return 0x38; // (WWW home) -> F19 + case 0x40: return 0x40; // (my computer) -> F20 + case 0x48: return 0x48; // (email) -> F21 + case 0x2B: return 0x50; // (calculator) -> F22 + case 0x34: return 0x08; // (play/pause) -> F13 + case 0x3B: return 0x10; // (stop) -> F14 + case 0x15: return 0x18; // (previous track) -> F15 + case 0x4D: return 0x20; // (next track) -> F16 + case 0x50: return 0x28; // (media select) -> F17 + case 0x5E: return 0x50; // (ACPI wake) -> F22 + case 0x3F: return 0x57; // (ACPI sleep) -> F23 + case 0x37: return 0x5F; // (ACPI power) -> F24 + + // https://github.com/tmk/tmk_keyboard/pull/636 + case 0x03: return 0x18; // Help DEC LK411 -> F15 + case 0x04: return 0x08; // F13 DEC LK411 + case 0x0B: return 0x20; // Do DEC LK411 -> F16 + case 0x0C: return 0x10; // F14 DEC LK411 + case 0x0D: return 0x19; // LCompose DEC LK411 -> LGUI + case 0x79: return 0x6D; // KP- DEC LK411 -> PCMM + case 0x83: return 0x28; // F17 DEC LK411 + default: return (code & 0x7F); + } +} + +static int8_t process_cs2(void) +{ + // scan code reading states + static enum { + INIT, + F0, + E0, + E0_F0, + // Pause + E1, + E1_14, + E1_F0, + E1_F0_14, + E1_F0_14_F0, + } state = INIT; + + uint16_t code = ibmpc_host_recv(); + if (code == -1) { + return 0; + } + + switch (state) { + case INIT: + switch (code) { + case 0xE0: + state = E0; + break; + case 0xF0: + state = F0; + break; + case 0xE1: + state = E1; + break; + case 0x83: // F7 + matrix_make(0x02); + state = INIT; + break; + case 0x84: // Alt'd PrintScreen + matrix_make(0x6F); + state = INIT; + break; + case 0x00: // Overrun [3]p.26 + matrix_clear(); + xprintf("!CS2_OVERRUN!\n"); + state = INIT; + break; + case 0xAA: // Self-test passed + case 0xFC: // Self-test failed + // reset or plugin-in new keyboard + state = INIT; + return -1; + break; + default: // normal key make + if (code < 0x80) { + matrix_make(code); + } else { + matrix_clear(); + xprintf("!CS2_INIT!\n"); + } + state = INIT; + } + break; + case E0: // E0-Prefixed + switch (code) { + case 0x12: // to be ignored + case 0x59: // to be ignored + state = INIT; + break; + case 0xF0: + state = E0_F0; + break; + default: + if (code < 0x80) { + matrix_make(cs2_e0code(code)); + } else { + matrix_clear(); + xprintf("!CS2_E0!\n"); + } + state = INIT; + } + break; + case F0: // Break code + switch (code) { + case 0x83: // F7 + matrix_break(0x02); + state = INIT; + break; + case 0x84: // Alt'd PrintScreen + matrix_break(0x6F); + state = INIT; + break; + default: + if (code < 0x80) { + matrix_break(code); + } else { + matrix_clear(); + xprintf("!CS2_F0!\n"); + } + state = INIT; + } + break; + case E0_F0: // Break code of E0-prefixed + switch (code) { + case 0x12: // to be ignored + case 0x59: // to be ignored + state = INIT; + break; + default: + if (code < 0x80) { + matrix_break(cs2_e0code(code)); + } else { + matrix_clear(); + xprintf("!CS2_E0_F0!\n"); + } + state = INIT; + } + break; + // Pause make: E1 14 77 + case E1: + switch (code) { + case 0x14: + state = E1_14; + break; + case 0xF0: + state = E1_F0; + break; + default: + state = INIT; + } + break; + case E1_14: + switch (code) { + case 0x77: + matrix_make(0x00); + state = INIT; + break; + default: + state = INIT; + } + break; + // Pause break: E1 F0 14 F0 77 + case E1_F0: + switch (code) { + case 0x14: + state = E1_F0_14; + break; + default: + state = INIT; + } + break; + case E1_F0_14: + switch (code) { + case 0xF0: + state = E1_F0_14_F0; + break; + default: + state = INIT; + } + break; + case E1_F0_14_F0: + switch (code) { + case 0x77: + matrix_break(0x00); + state = INIT; + break; + default: + state = INIT; + } + break; + default: + state = INIT; + } + return 0; +} + +/* + * Terminal: Scan Code Set 3 + * + * See [3], [7] + * + * Scan code 0x83 and 0x84 are handled exceptioanally to fit into 1-byte range index. + */ +static int8_t process_cs3(void) +{ + static enum { + READY, + F0, + } state = READY; + + uint16_t code = ibmpc_host_recv(); + if (code == -1) { + return 0; + } + + switch (state) { + case READY: + switch (code) { + case 0x00: + case 0xff: + xprintf("!CS3_%02X!\n", code); + break; + case 0xF0: + state = F0; + break; + case 0x83: // F7 + matrix_make(0x02); + break; + case 0x84: // keypad - + matrix_make(0x7F); + break; + default: // normal key make + if (code < 0x80) { + matrix_make(code); + } else { + xprintf("!CS3_%02X!\n", code); + } + state = READY; + } + break; + case F0: // Break code + switch (code) { + case 0x00: + case 0xff: + xprintf("!CS3_F0_%02X!\n", code); + state = READY; + break; + case 0x83: // F7 + matrix_break(0x02); + state = READY; + break; + case 0x84: // keypad - + matrix_break(0x7F); + state = READY; + break; + default: + if (code < 0x80) { + matrix_break(code); + } else { + xprintf("!CS3_F0_%02X!\n", code); + } + state = READY; + } + break; + } + return 0; +} + +/* + * IBM PC Keyboard Protocol Resources: + * + * [a] Microsoft USB HID to PS/2 Translation Table - Scan Code Set 1 and 2 + * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf + * + * [b] Microsoft Keyboard Scan Code Specification - Special rules of Scan Code Set 1 and 2 + * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc + * + * [1] PS/2 Reference Manuals - Collection of IBM Personal System/2 documents. + * http://www.mcamafia.de/pdf/pdfref.htm + * + * [2] Keyboard and Auxiliary Device Controller - Signal Timing and Format + * http://www.mcamafia.de/pdf/ibm_hitrc07.pdf + * + * [3] Keyboards(101- and 102-key) - Keyboard Layout, Scan Code Set, POR, and Commands. + * http://www.mcamafia.de/pdf/ibm_hitrc11.pdf + * + * [4] IBM PC XT Keyboard Protocol + * https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol + * + * [5] IBM Keyboard Scan Code by John Elliott - 83-key, 84-key, 102-key and 122-key + * https://www.seasip.info/VintagePC/index.html + * + * [6] IBM 1391406 Keyboard - Scan Code Set 2 of 102-key PS/2 keyboard + * https://www.seasip.info/VintagePC/ibm_1391406.html + * + * [7] The IBM 6110344 Keyboard - Scan Code Set 3 of 122-key terminal keyboard + * https://www.seasip.info/VintagePC/ibm_6110344.html + * + * [y] TrackPoint Engineering Specifications for version 3E + * https://web.archive.org/web/20100526161812/http://wwwcssrv.almaden.ibm.com/trackpoint/download.html + * + * [z] [Soarer's XT/AT/PS2/Terminal to USB converter] + * https://geekhack.org/index.php?topic=17458.0 + * + */ diff --git a/converter/ibmpc_usb/ibmpc_usb.h b/converter/ibmpc_usb/ibmpc_usb.h new file mode 100644 index 00000000..99bce7e4 --- /dev/null +++ b/converter/ibmpc_usb/ibmpc_usb.h @@ -0,0 +1,9 @@ +#ifndef IBMPC_USB_H +#define IBMPC_USB_H + +typedef enum { NONE, PC_XT, PC_AT, PC_TERMINAL } keyboard_kind_t; + +extern uint16_t keyboard_id; +extern keyboard_kind_t keyboard_kind; + +#endif diff --git a/converter/ibmpc_usb/unimap_plain.c b/converter/ibmpc_usb/unimap_plain.c new file mode 100644 index 00000000..2a38f8cf --- /dev/null +++ b/converter/ibmpc_usb/unimap_plain.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, PENT, + LCTL,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,RGUI,FN0, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PEQL + ), + 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, + CAPS,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/ibmpc_usb/unimap_trans.h b/converter/ibmpc_usb/unimap_trans.h new file mode 100644 index 00000000..f78ea75f --- /dev/null +++ b/converter/ibmpc_usb/unimap_trans.h @@ -0,0 +1,237 @@ +/* +Copyright 2019 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_TRANS_H +#define UNIMAP_TRANS_H + +#include +#include +#include "unimap.h" +#include "action.h" +#include "ibmpc_usb.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| ;| '| ^a|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| + * `-----------------------------------------------------------' `-----------' `---------------' + */ + + +/* + * Scan Code Set 1: + * ,-------. ,--------------------------------------------------------------------------. + * | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck | + * |-------| |--------------------------------------------------------------------------| + * | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -| + * |-------| |------------------------------------------------------|Ent|---------------| + * | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| | + * |-------| |----------------------------------------------------------------------| | + * | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift| *| 1| 2| 3| +| + * |-------| |----------------------------------------------------------------------| | + * | F9|F10| | Alt | Space |CapsLck| 0 | . | | + * `-------' `--------------------------------------------------------------------------' + * + * ,-------. ,--------------------------------------------------------------------------. + * | 3B| 3C| | 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E | 45 | 46 | + * |-------| |--------------------------------------------------------------------------| + * | 3D| 3E| | 0F | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B | | 47| 48| 49| 4A| + * |-------| |------------------------------------------------------| 1C|---------------| + * | 3F| 40| | 1D | 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| | 4B| 4C| 4D| | + * |-------| |----------------------------------------------------------------------| | + * | 41| 42| | 2A | 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 35| 36 | 37| 4F| 50| 51| 4E| + * |-------| |----------------------------------------------------------------------| | + * | 43| 44| | 38 | 39 | 3A | 52 | 53 | | + * `-------' `--------------------------------------------------------------------------' + * [3], [a] + */ +const uint8_t PROGMEM unimap_cs1[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_NO, UNIMAP_ESC, UNIMAP_1, UNIMAP_2, UNIMAP_3, UNIMAP_4, UNIMAP_5, UNIMAP_6 }, /* 00-07 */ + { UNIMAP_7, UNIMAP_8, UNIMAP_9, UNIMAP_0, UNIMAP_MINUS, UNIMAP_EQUAL, UNIMAP_BSPACE,UNIMAP_TAB }, /* 08-0F */ + { UNIMAP_Q, UNIMAP_W, UNIMAP_E, UNIMAP_R, UNIMAP_T, UNIMAP_Y, UNIMAP_U, UNIMAP_I }, /* 10-17 */ + { UNIMAP_O, UNIMAP_P, UNIMAP_LBRC, UNIMAP_RBRC, UNIMAP_ENTER, UNIMAP_LCTL, UNIMAP_A, UNIMAP_S, }, /* 18-1F */ + { UNIMAP_D, UNIMAP_F, UNIMAP_G, UNIMAP_H, UNIMAP_J, UNIMAP_K, UNIMAP_L, UNIMAP_SCLN }, /* 20-27 */ + { UNIMAP_QUOTE, UNIMAP_GRAVE, UNIMAP_LSHIFT,UNIMAP_BSLASH,UNIMAP_Z, UNIMAP_X, UNIMAP_C, UNIMAP_V, }, /* 28-2F */ + { UNIMAP_B, UNIMAP_N, UNIMAP_M, UNIMAP_COMMA, UNIMAP_DOT, UNIMAP_SLASH, UNIMAP_RSHIFT,UNIMAP_PAST }, /* 30-37 */ + { UNIMAP_LALT, UNIMAP_SPACE, UNIMAP_CAPS, UNIMAP_F1, UNIMAP_F2, UNIMAP_F3, UNIMAP_F4, UNIMAP_F5 }, /* 38-3F */ + { UNIMAP_F6, UNIMAP_F7, UNIMAP_F8, UNIMAP_F9, UNIMAP_F10, UNIMAP_NLCK, UNIMAP_SLCK, UNIMAP_P7 }, /* 40-47 */ + { UNIMAP_P8, UNIMAP_P9, UNIMAP_PMNS, UNIMAP_P4, UNIMAP_P5, UNIMAP_P6, UNIMAP_PPLS, UNIMAP_P1 }, /* 48-4F */ + { UNIMAP_P2, UNIMAP_P3, UNIMAP_P0, UNIMAP_PDOT, UNIMAP_PSCR, UNIMAP_PAUSE, UNIMAP_NUHS, UNIMAP_F11 }, /* 50-57 */ + { UNIMAP_F12, UNIMAP_PEQL, UNIMAP_LGUI, UNIMAP_RGUI, UNIMAP_APP, UNIMAP_MUTE, UNIMAP_VOLD, UNIMAP_VOLU }, /* 58-5F */ + { UNIMAP_UP, UNIMAP_LEFT, UNIMAP_DOWN, UNIMAP_RIGHT, UNIMAP_F13, UNIMAP_F14, UNIMAP_F15, UNIMAP_F16 }, /* 60-67 */ + { UNIMAP_F17, UNIMAP_F18, UNIMAP_F19, UNIMAP_F20, UNIMAP_F21, UNIMAP_F22, UNIMAP_F23, UNIMAP_PENT }, /* 68-6F */ + { UNIMAP_KANA, UNIMAP_INSERT,UNIMAP_DELETE,UNIMAP_RO, UNIMAP_HOME, UNIMAP_END, UNIMAP_F24, UNIMAP_PGUP }, /* 70-77 */ + { UNIMAP_PGDN, UNIMAP_HENK, UNIMAP_RCTL, UNIMAP_MHEN, UNIMAP_RALT, UNIMAP_JYEN, UNIMAP_PCMM, UNIMAP_PSLS }, /* 78-7F */ +}; + + +/* + * Scan Code Set 2: + * ,-----------------------------------------------. + * |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| ;| '| ^a|Entr| | 4| 5| 6|KP,| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|Ent| + * |-----------------------------------------------------------| ,-----------. |---------------| + * |Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | #| 0| .|KP=| + * `-----------------------------------------------------------' `-----------' `---------------' + * + * ,-----------------------------------------------. + * | 08| 10| 18| 20| 28| 30| 38| 40| 48| 50| 57| 5F| + * ,---. |-----------------------------------------------| ,-----------. ,-----------. + * | 76| | 05| 06| 04| 0C| 03| 0B| 83| 0A| 01| 09| 78| 07| |+7C| 7E|+77| |*21|*32|*23| + * `---' `-----------------------------------------------' `-----------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | 0E| 16| 1E| 26| 25| 2E| 36| 3D| 3E| 46| 45| 4E| 55| 6A| 66| |*70|*6C|*7D| | 77|*4A| 7C| 7B| + * |-----------------------------------------------------------| |-----------| |---------------| + * | 0D | 15| 1D| 24| 2D| 2C| 35| 3C| 43| 44| 4D| 54| 5B| 5D | |*71|*69|*7A| | 6C| 75| 7D| 79| + * |-----------------------------------------------------------| `-----------' |---------------| + * | 58 | 1C| 1B| 23| 2B| 34| 33| 3B| 42| 4B| 4C| 52| ^a| 5A | | 6B| 73| 74| 6D| + * |-----------------------------------------------------------| ,---. |---------------| + * | 12 | 61| 1A| 22| 21| 2A| 32| 31| 3A| 41| 49| 4A| 51| 59 | |*75| | 69| 72| 7A|*5A| + * |-----------------------------------------------------------| ,-----------. |---------------| + * | 14|*1F| 11| 67 | 29 | 64 | 13 |*11|*27|*2F|*14| |*6B|*72|*74| | 68| 70| 71| 63| + * `-----------------------------------------------------------' `-----------' `---------------' + * *: E0-prefixed codes + * +: Special codes sequence + * ^a: ISO hash key uses identical scancode 5D to US backslash. + * 51, 63, 68, 6A, 6D: Hidden keys in IBM model M [6] + */ +const uint8_t PROGMEM unimap_cs2[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_PAUS, UNIMAP_F9, UNIMAP_F7, UNIMAP_F5, UNIMAP_F3, UNIMAP_F1, UNIMAP_F2, UNIMAP_F12 }, /* 00-07 */ + { UNIMAP_F13, UNIMAP_F10, UNIMAP_F8, UNIMAP_F6, UNIMAP_F4, UNIMAP_TAB, UNIMAP_GRV, UNIMAP_RALT }, /* 08-0F */ + { UNIMAP_F14, UNIMAP_LALT, UNIMAP_LSHIFT,UNIMAP_KANA, UNIMAP_LCTL, UNIMAP_Q, UNIMAP_1, UNIMAP_RCTL }, /* 10-17 */ + { UNIMAP_F15, UNIMAP_LGUI, UNIMAP_Z, UNIMAP_S, UNIMAP_A, UNIMAP_W, UNIMAP_2, UNIMAP_RGUI }, /* 18-1F */ + { UNIMAP_F16, UNIMAP_C, UNIMAP_X, UNIMAP_D, UNIMAP_E, UNIMAP_4, UNIMAP_3, UNIMAP_END }, /* 20-27 */ + { UNIMAP_F17, UNIMAP_SPACE, UNIMAP_V, UNIMAP_F, UNIMAP_T, UNIMAP_R, UNIMAP_5, UNIMAP_HOME }, /* 28-2F */ + { UNIMAP_F18, UNIMAP_N, UNIMAP_B, UNIMAP_H, UNIMAP_G, UNIMAP_Y, UNIMAP_6, UNIMAP_DEL }, /* 30-37 */ + { UNIMAP_F19, UNIMAP_INS, UNIMAP_M, UNIMAP_J, UNIMAP_U, UNIMAP_7, UNIMAP_8, UNIMAP_DOWN }, /* 38-3F */ + { UNIMAP_F20, UNIMAP_COMMA, UNIMAP_K, UNIMAP_I, UNIMAP_O, UNIMAP_0, UNIMAP_9, UNIMAP_RIGHT }, /* 40-47 */ + { UNIMAP_F21, UNIMAP_DOT, UNIMAP_SLASH, UNIMAP_L, UNIMAP_SCOLON,UNIMAP_P, UNIMAP_MINUS, UNIMAP_UP }, /* 48-4F */ + { UNIMAP_F22, UNIMAP_RO, UNIMAP_QUOTE, UNIMAP_LEFT, UNIMAP_LBRC, UNIMAP_EQUAL, UNIMAP_PGDN, UNIMAP_F23 }, /* 50-57 */ + { UNIMAP_CAPS, UNIMAP_RSHIFT,UNIMAP_ENTER, UNIMAP_RBRC, UNIMAP_APP, UNIMAP_BSLASH,UNIMAP_PGUP, UNIMAP_F24 }, /* 58-5F */ + { UNIMAP_PSLS, UNIMAP_NUBS, UNIMAP_PENT, UNIMAP_PEQL, UNIMAP_HENK, UNIMAP_VOLD, UNIMAP_BSPACE,UNIMAP_MHEN }, /* 60-67 */ + { UNIMAP_NUHS, UNIMAP_P1, UNIMAP_JYEN, UNIMAP_P4, UNIMAP_P7, UNIMAP_PCMM, UNIMAP_VOLU, UNIMAP_PSCR }, /* 68-6F */ + { UNIMAP_P0, UNIMAP_PDOT, UNIMAP_P2, UNIMAP_P5, UNIMAP_P6, UNIMAP_P8, UNIMAP_ESC, UNIMAP_NLCK }, /* 70-77 */ + { UNIMAP_F11, UNIMAP_PPLS, UNIMAP_P3, UNIMAP_PMNS, UNIMAP_PAST, UNIMAP_P9, UNIMAP_SLCK, UNIMAP_MUTE }, /* 78-7F */ +}; + + +/* + * Scan Code Set 3: + * ,-----------------------------------------------. + * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| + * |-----------------------------------------------| + * |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| + * `-----------------------------------------------' + * ,-------. ,-----------------------------------------------------------. ,-----------. ,---------------. + * |PrS|Esc| | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|Hom|PgU| |NmL| /| *| -| + * |-------| |-----------------------------------------------------------| |-----------| |---------------| + * |ScL|Hen| |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| +| + * |-------| |-----------------------------------------------------------| `-----------' |-----------|---| + * |Pau|Muh| |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #| Ret| |Up | | 4| 5| 6| ,| + * |-------| |-----------------------------------------------------------| ,-----------. |---------------| + * |VoD|VoU| |Shif| \| Z| X| C| V| B| N| M| ,| ,| /| RO| Shift| |Lef|App|Rig| | 1| 2| 3|Ent| + * |-------| |-----------------------------------------------------------| `-----------' |-----------|---| + * |Gui|Gui| |Ctrl| |Alt | Space |Alt | |Ctrl| |Dow| |Kan| 0| .| =| + * `-------' `----' `---------------------------------------' `----' `---' `---------------' + * + * ,-----------------------------------------------. + * | 08| 10| 18| 20| 28| 30| 38| 40| 48| 50| 57| 5F| + * |-----------------------------------------------| + * | 07| 0F| 17| 1F| 27| 2F| 37| 3F| 47| 4F| 56| 5E| + * `-----------------------------------------------' + * ,-------. ,-----------------------------------------------------------. ,-----------. ,---------------. + * | 05| 06| | 0E| 16| 1E| 26| 25| 2E| 36| 3D| 3E| 46| 45| 4E| 55| 5D| 66| | 67| 6E| 6F| | 76| 77| 7E|*84| + * |-------| |-----------------------------------------------------------| |-----------| |---------------| + * | 04| 0C| | 0D | 15| 1D| 24| 2D| 2C| 35| 3C| 43| 44| 4D| 54| 5B| 5C | | 64| 65| 6D| | 6C| 75| 7D| 7C| + * |-------| |-----------------------------------------------------------| `-----------' |---------------| + * | 03| 0B| | 58 | 1C| 1B| 23| 2B| 34| 33| 3B| 42| 4B| 4C| 52| 53| 5A | | 63| | 6B| 73| 74| 7B| + * |-------| |-----------------------------------------------------------| ,-----------. |---------------| + * |*83| 0A| | 12 | 13| 1A| 22| 21| 2A| 32| 31| 3A| 41| 49| 4A| 51| 59 | | 61| 62| 6A| | 69| 72| 7A| 79| + * |-------| |-----------------------------------------------------------| `-----------' |---------------| + * | 01| 09| | 11 | |19 | 29 |39 | | 58 | | 60| | 68| 70| 71| 78| + * `-------' `-----' `---------------------------------------' `-----' `---' `---------------' + * *: 83=02, 84=7F + * 51, 5C, 5D, 68, 78: Hidden keys in IBM 122-key terminal keyboard [7] + */ +const uint8_t PROGMEM unimap_cs3[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_NO, UNIMAP_LGUI, UNIMAP_VOLD, UNIMAP_PAUSE, UNIMAP_SLCK, UNIMAP_PSCR, UNIMAP_ESC, UNIMAP_F1 }, /* 00-07 */ + { UNIMAP_F13, UNIMAP_RGUI, UNIMAP_VOLU, UNIMAP_MHEN, UNIMAP_HENK, UNIMAP_TAB, UNIMAP_GRV, UNIMAP_F2 }, /* 08-0F */ + { UNIMAP_F14, UNIMAP_LCTL, UNIMAP_LSHIFT,UNIMAP_NUBS, UNIMAP_CAPS, UNIMAP_Q, UNIMAP_1, UNIMAP_F3 }, /* 10-17 */ + { UNIMAP_F15, UNIMAP_LALT, UNIMAP_Z, UNIMAP_S, UNIMAP_A, UNIMAP_W, UNIMAP_2, UNIMAP_F4 }, /* 18-1F */ + { UNIMAP_F16, UNIMAP_C, UNIMAP_X, UNIMAP_D, UNIMAP_E, UNIMAP_4, UNIMAP_3, UNIMAP_F5 }, /* 20-27 */ + { UNIMAP_F17, UNIMAP_SPACE, UNIMAP_V, UNIMAP_F, UNIMAP_T, UNIMAP_R, UNIMAP_5, UNIMAP_F6 }, /* 28-2F */ + { UNIMAP_F18, UNIMAP_N, UNIMAP_B, UNIMAP_H, UNIMAP_G, UNIMAP_Y, UNIMAP_6, UNIMAP_F7 }, /* 30-37 */ + { UNIMAP_F19, UNIMAP_RALT, UNIMAP_M, UNIMAP_J, UNIMAP_U, UNIMAP_7, UNIMAP_8, UNIMAP_F8 }, /* 38-3F */ + { UNIMAP_F20, UNIMAP_COMMA, UNIMAP_K, UNIMAP_I, UNIMAP_O, UNIMAP_0, UNIMAP_9, UNIMAP_F9 }, /* 40-47 */ + { UNIMAP_F21, UNIMAP_DOT, UNIMAP_SLASH, UNIMAP_L, UNIMAP_SCOLON,UNIMAP_P, UNIMAP_MINUS, UNIMAP_F10 }, /* 48-4F */ + { UNIMAP_F22, UNIMAP_RO, UNIMAP_QUOTE, UNIMAP_NUHS, UNIMAP_LBRC, UNIMAP_EQUAL, UNIMAP_F11, UNIMAP_F23 }, /* 50-57 */ + { UNIMAP_RCTL, UNIMAP_RSHIFT,UNIMAP_ENTER, UNIMAP_RBRC, UNIMAP_BSLASH,UNIMAP_JYEN, UNIMAP_F12, UNIMAP_F24 }, /* 58-5F */ + { UNIMAP_DOWN, UNIMAP_LEFT, UNIMAP_APP, UNIMAP_UP, UNIMAP_DEL, UNIMAP_END, UNIMAP_BSPACE,UNIMAP_INS }, /* 60-67 */ + { UNIMAP_KANA, UNIMAP_P1, UNIMAP_RIGHT, UNIMAP_P4, UNIMAP_P7, UNIMAP_PGDN, UNIMAP_HOME, UNIMAP_PGUP }, /* 68-6F */ + { UNIMAP_P0, UNIMAP_PDOT, UNIMAP_P2, UNIMAP_P5, UNIMAP_P6, UNIMAP_P8, UNIMAP_NLCK, UNIMAP_PSLS }, /* 70-77 */ + { UNIMAP_PEQL, UNIMAP_PENT, UNIMAP_P3, UNIMAP_PCMM, UNIMAP_PPLS, UNIMAP_P9, UNIMAP_PAST, UNIMAP_PMNS }, /* 78-7F */ +}; + + +extern const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS]; +action_t action_for_key(uint8_t layer, keypos_t key) +{ + uint8_t unimap_pos; + switch (keyboard_kind) { + case PC_XT: + unimap_pos = pgm_read_byte(&unimap_cs1[key.row][key.col]); + break; + case PC_AT: + unimap_pos = pgm_read_byte(&unimap_cs2[key.row][key.col]); + break; + case PC_TERMINAL: + unimap_pos = pgm_read_byte(&unimap_cs3[key.row][key.col]); + break; + default: + return (action_t)ACTION_NO; + } + + if (unimap_pos == UNIMAP_NO) return (action_t)ACTION_NO; + + return (action_t)pgm_read_word(&actionmaps[(layer)][(unimap_pos & 0x70) >> 4][(unimap_pos & 0x0f)]); +} +#endif From 909277107f4e8289d86a04e6a571ad879925add6 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Dec 2019 14:29:49 +0900 Subject: [PATCH 64/71] core: Add ldscript for AT90USB to support unimap --- tmk_core/common.mk | 2 + tmk_core/ldscript_keymap_avr51.x | 263 +++++++++++++++++++++++++++++++ 2 files changed, 265 insertions(+) create mode 100644 tmk_core/ldscript_keymap_avr51.x diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 090bbe6e..9c3425b4 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -101,6 +101,8 @@ ifeq (yes,$(strip $(KEYMAP_SECTION_ENABLE))) EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x else ifeq ($(strip $(MCU)),atmega32u4) EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x + else ifeq ($(strip $(MCU)),at90usb1286) + EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr51.x else EXTRALDFLAGS = $(error no ldscript for keymap section) endif diff --git a/tmk_core/ldscript_keymap_avr51.x b/tmk_core/ldscript_keymap_avr51.x new file mode 100644 index 00000000..864a4dec --- /dev/null +++ b/tmk_core/ldscript_keymap_avr51.x @@ -0,0 +1,263 @@ +/* Default linker script, for normal executables */ +/* Copyright (C) 2014-2015 Free Software Foundation, Inc. + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 128K; +__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xff00; +__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K; +__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K; +__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K; +__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K; +__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__ + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ + lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__ + signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__ + user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__ +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + /* PR 13812: Placing the trampolines here gives a better chance + that they will be in range of the code that uses them. */ + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* avr-libc expects these data to reside in lower 64K. */ + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + . = ALIGN(2); + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.gnu.linkonce.d*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.r*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data AT> text + .bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit)) + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + /* See .data above... */ + KEEP(*(.eeprom*)) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + .user_signatures : + { + KEEP(*(.user_signatures*)) + } > user_signatures + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } +} From ee4686eafc59815694f69803c356591aadee2fc9 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Dec 2019 15:05:55 +0900 Subject: [PATCH 65/71] core: Fix ldscript for AT90USB to support unimap --- tmk_core/ldscript_keymap_avr51.x | 59 ++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/tmk_core/ldscript_keymap_avr51.x b/tmk_core/ldscript_keymap_avr51.x index 864a4dec..00845bd4 100644 --- a/tmk_core/ldscript_keymap_avr51.x +++ b/tmk_core/ldscript_keymap_avr51.x @@ -14,7 +14,53 @@ __SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE __USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; MEMORY { + /* With keymap section + * + * TODO: should be as below + * Flash Map of AT90USB(128KB) + * +------------+ 0x0000 + * | .vectors | + * | .progmem | + * | .init0-9 | > text region + * | .text | + * | .fini9-0 | + * | | + * |------------| _etext + * | .data | + * | .bss | > data region + * | .noinit | + * | | + * |------------| 0x1D800 + * | .keymap | > keymap region(2KB) + * |------------| 0x1E000 + * | bootloader | 8KB + * +------------+ 0x1FFFF + * + * FIXME: Use this To fit to ATMega32U4 unimap address + * Flash Map of AT90USB(128KB) + * +------------+ 0x0000 + * | .vectors | + * | .progmem | + * | .init0-9 | > text region + * | .text | + * | .fini9-0 | + * | | + * |------------| _etext + * | .data | + * | .bss | > data region + * | .noinit | + * | | + * |------------| 0x6800 + * | .keymap | > keymap region(2KB) + * |------------| 0x7000 + * ~ ~ + * ~ ~ + * |------------| 0x1E000 + * | bootloader | 8KB + * +------------+ 0x1FFFF + */ text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + keymap (rw!x) : ORIGIN = 0x6800, LENGTH = 2K data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__ eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ @@ -196,6 +242,19 @@ SECTIONS _end = . ; PROVIDE (__heap_start = .) ; } > data + /* keymap region is located at end of flash + * .fn_actions Fn actions definitions + * .keymaps Mapping layers + */ + .keymap : + { + PROVIDE(__keymap_start = .) ; + *(.keymap.fn_actions) /* 32*actions = 64bytes */ + . = ALIGN(0x40); + *(.keymap.keymaps) /* rest of .keymap section */ + *(.keymap*) + /* . = ALIGN(0x800); */ /* keymap section takes 2KB- */ + } > keymap = 0x00 /* zero fill */ .eeprom : { /* See .data above... */ From 37a452f7c96871e1ca166dc29f7692e1334f4b06 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Dec 2019 15:02:28 +0900 Subject: [PATCH 66/71] core: Fix bootloader for 128KB flash Got warning on bootloader address calculation when MCU has 128KB flash --- tmk_core/common/avr/bootloader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index 8a1bec06..8abce9d8 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -138,6 +138,6 @@ void bootloader_jump_after_watchdog_reset(void) #endif // This is compled into 'icall', address should be in word unit, not byte. - ((void (*)(void))(BOOTLOADER_START / 2))(); + ((void (*)(void))( (uint16_t)(BOOTLOADER_START / 2) ))(); } } From 4b44e106b38f7c4143c51ad4f0b0331a96925537 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 4 Dec 2019 14:54:20 +0900 Subject: [PATCH 67/71] ibmpc_usb: Add support for AT90USB1286 --- converter/ibmpc_usb/Makefile.at90usb1286 | 4 ++++ converter/ibmpc_usb/config.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 converter/ibmpc_usb/Makefile.at90usb1286 diff --git a/converter/ibmpc_usb/Makefile.at90usb1286 b/converter/ibmpc_usb/Makefile.at90usb1286 new file mode 100644 index 00000000..9eb588aa --- /dev/null +++ b/converter/ibmpc_usb/Makefile.at90usb1286 @@ -0,0 +1,4 @@ +MCU = at90usb1286 +BOOTLOADER_SIZE = 8192 + +include Makefile diff --git a/converter/ibmpc_usb/config.h b/converter/ibmpc_usb/config.h index fb204ecd..fc545f69 100644 --- a/converter/ibmpc_usb/config.h +++ b/converter/ibmpc_usb/config.h @@ -43,7 +43,7 @@ along with this program. If not, see . /* * Pin and interrupt configuration */ -#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__) +#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U2__) || defined(__AVR_AT90USB1286__) /* uses INT1 for clock line */ #define IBMPC_CLOCK_PORT PORTD #define IBMPC_CLOCK_PIN PIND From 5a759850ff030648a35fd9b2959efedff4aa5683 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 5 Dec 2019 08:57:41 +0900 Subject: [PATCH 68/71] ibmpc_usb: Fix Makefiles --- converter/ibmpc_usb/Makefile | 5 +++-- converter/ibmpc_usb/Makefile.at90usb1286 | 2 +- converter/ibmpc_usb/Makefile.atmega32u2 | 1 + converter/ibmpc_usb/Makefile.atmega32u4 | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/converter/ibmpc_usb/Makefile b/converter/ibmpc_usb/Makefile index 636cb324..fd04541c 100644 --- a/converter/ibmpc_usb/Makefile +++ b/converter/ibmpc_usb/Makefile @@ -63,8 +63,9 @@ OPT_DEFS += -DSUSPEND_MODE_STANDBY # Atmel DFU loader 4096 # LUFA bootloader 4096 # USBaspLoader 2048 -BOOTLOADER_SIZE ?= 4096 -OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE) +# Bootloader size can be calculated from fuse bits +#BOOTLOADER_SIZE ?= 4096 +#OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE) # Build Options diff --git a/converter/ibmpc_usb/Makefile.at90usb1286 b/converter/ibmpc_usb/Makefile.at90usb1286 index 9eb588aa..439dbff6 100644 --- a/converter/ibmpc_usb/Makefile.at90usb1286 +++ b/converter/ibmpc_usb/Makefile.at90usb1286 @@ -1,4 +1,4 @@ +TARGET = ibmpc_usb_at90usb1286 MCU = at90usb1286 -BOOTLOADER_SIZE = 8192 include Makefile diff --git a/converter/ibmpc_usb/Makefile.atmega32u2 b/converter/ibmpc_usb/Makefile.atmega32u2 index 53475b3a..83e5c3df 100644 --- a/converter/ibmpc_usb/Makefile.atmega32u2 +++ b/converter/ibmpc_usb/Makefile.atmega32u2 @@ -1,3 +1,4 @@ +TARGET = ibmpc_usb_atmega32u2 MCU = atmega32u2 include Makefile diff --git a/converter/ibmpc_usb/Makefile.atmega32u4 b/converter/ibmpc_usb/Makefile.atmega32u4 index ba4ec743..f63c9896 100644 --- a/converter/ibmpc_usb/Makefile.atmega32u4 +++ b/converter/ibmpc_usb/Makefile.atmega32u4 @@ -1,3 +1,4 @@ +TARGET = ibmpc_usb_atmega32u4 MCU = atmega32u4 include Makefile From 45e45691e0c03f1b5ea4341c6d90f9a09016a37d Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 5 Dec 2019 09:07:14 +0900 Subject: [PATCH 69/71] ibmpc_usb: Add prebuilt firmware files --- .../binary/ibmpc_usb_at90usb1286.hex | 1187 +++++++++++++++++ .../ibmpc_usb/binary/ibmpc_usb_atmega32u4.hex | 1186 ++++++++++++++++ 2 files changed, 2373 insertions(+) create mode 100644 converter/ibmpc_usb/binary/ibmpc_usb_at90usb1286.hex create mode 100644 converter/ibmpc_usb/binary/ibmpc_usb_atmega32u4.hex diff --git a/converter/ibmpc_usb/binary/ibmpc_usb_at90usb1286.hex b/converter/ibmpc_usb/binary/ibmpc_usb_at90usb1286.hex new file mode 100644 index 00000000..52b1494f --- /dev/null +++ b/converter/ibmpc_usb/binary/ibmpc_usb_at90usb1286.hex @@ -0,0 +1,1187 @@ +:100000000C9426050C9491050C9442080C949105CF +:100010000C9491050C9491050C9491050C94910508 +:100020000C9491050C9491050C9453120C94910529 +:100030000C9476210C9491050C9491050C949105E7 +:100040000C9491050C9491050C9491050C949105D8 +:100050000C9491050C94E6210C9491050C94910557 +:100060000C9491050C9491050C9491050C949105B8 +:100070000C9491050C9491050C9491050C949105A8 +:100080000C9491050C9491050C9491050C94910598 +:100090000C9491050C9491057C097E098A098A09C2 +:1000A0008A098A098A098A098009820984098A09D0 +:1000B0008A097E098C098A098A0946097C098A0904 +:1000C0008A0982098A098A098A098A098A098A09A0 +:1000D00084097C0968098A096C098A098A098A09DC +:1000E000480980098A098A0976098A098A098A09D8 +:1000F0004A0988098A096A098A097E098A098A09D6 +:100100007A096E098A09700982098A098A098A09A5 +:10011000780972098A098A098A098A098A098A0971 +:100120008A0974098A094C098A098A0980098A0995 +:100130008A0988098A098A098A098A098A098A0929 +:100140008A098A098A094E098A098A098A09760967 +:100150008A098A098A098A098A098A098A098A0907 +:100160008A098A0950098A09520954098A098A099F +:100170008A09560958095A098A095C095E098A09D7 +:100180008A098A09860960098A0964096209660977 +:100190008A098A098A098A098809B009BE09CA092F +:1001A000CA09A209CA09CA09CA09CA09CA09CA09DF +:1001B000CA09CA09CA09CA09CA09CA09CA09A409CD +:1001C000CA09A609CA09CA09CA09CA09C209CA09C3 +:1001D000D509C009CA09CA09CA09CA09CA09CA0986 +:1001E000CA09CA09CA09CA09CA09CA09CA099A09A7 +:1001F000B609A809BA09CA09AA09CA09AE09CA09E9 +:10020000B809AC09BC09B209B409CA09CA09CA09C2 +:10021000CA09CA09CA09CA099C099E09A009C409D0 +:10022000C609CA09CA09CA09C809B00B0B0CF30BE5 +:100230001D0C2E0C380C3D0C410C480C4D136F134B +:1002400062146F136214B413D71362142C143F1486 +:10025000721772179C179C17F717221A221A221A64 +:100260002B18221A16191619DC19221AF1190F1A4D +:10027000807B01484746293A687F0277762B353BD9 +:100280006978796439141E3C6A7A1D16041A1F3D78 +:100290006B061B070821203E6C2C19091715223FFD +:1002A0006D11050B0A1C23406E7E100D182425418C +:1002B0006F360E0C122726427037380F33132D433A +:1002C000717534322F2E44727C7D28303174457321 +:1002D000515065524C4D2A4900594F5C5F4E4A4B74 +:1002E00062635A5D5E60535467585B66576155564A +:1002F0004842403E3C3A3B456843413F3D2B357EBA +:10030000697A790078141E7C6A7B1D16041A1F7F97 +:100310006B061B070821204D6C2C19091715224A62 +:100320006D11050B0A1C234C6E49100D1824255124 +:100330006F360E0C1227264F7037380F33132D529D +:10034000717534502F2E4E72397D283065314B73C4 +:100350005464586776012A773259745C5F660246A6 +:1003600062635A5D5E60295344575B56556147038B +:1003700080291E1F20212223242526272D2E2A2BCB +:10038000141A0815171C180C12132F30287804168D +:1003900007090A0B0D0E0F33343579311D1B061971 +:1003A0000511103637387D557A2C393A3B3C3D3EA5 +:1003B0003F4041424353475F6061565C5D5E575921 +:1003C0005A5B62634648324445677B7F650301029E +:1003D0005250514F68696A6B6C6D6E6F70717258D4 +:1003E00000494C754A4D734B4E767C777E7466544B +:1003F000722530325820007225303258200077257F +:100400003032582000214353335F46305F2530326D +:1004100058210A00214353335F46305F253032585C +:10042000210A00214353335F25303258210A00212D +:100430004353335F25303258210A00214353325F42 +:1004400045305F4630210A00214353325F46302158 +:100450000A00214353325F4530210A0021435332C1 +:100460005F494E4954210A00214353325F4F56459C +:100470005252554E210A00214353315F3F210A0059 +:100480006B62643A20556E6B6E6F776E0A006B621A +:10049000643A205465726D696E616C0A006B626427 +:1004A0003A2041540A006B62643A2058540A004DC5 +:1004B0006F7573653A206E6F7420737570706F720C +:1004C0007465640A0049443A20253034580A0065AE +:1004D00072723A20253032580A00696E69740A0037 +:1004E0006572723A20253032580A000A4B657962EB +:1004F0006F6172642073746172742E0A000A55531E +:100500004220636F6E666967757265642E0A000A21 +:100510000A544D4B3A35613735393835302F4C5503 +:1005200046410A0A003403490042004D00200050B1 +:1005300000430020006B006500790062006F0061DD +:100540000072006400200063006F006E007600659A +:1005500000720074006500720000000E0374002E2B +:10056000006D002E006B002E00000004030904093A +:10057000027400040100A03209040000010301011B +:100580000009211101000122400007058103080034 +:100590000A09040100010300000009211101000102 +:1005A0002236000705820308000A0904020002033C +:1005B0000000000921110100012222000705830328 +:1005C00020000107050303200001090403000103C3 +:1005D00000000009211101000122390007058403F0 +:1005E0002000011201100100000008EDFEEE1B01C9 +:1005F000000102000105010906A101050719E02912 +:10060000E7150025019508750181020508190129E2 +:10061000059505750191029501750391010507196D +:100620000029F71500250195F875018102C00631F2 +:10063000FF0974A1010975150026FF0095207508B2 +:1006400081020976150026FF00952075089102C0E9 +:1006500005010980A10185021601002637001A81D3 +:10066000002AB700751095018100C0050C0901A191 +:10067000018503160100269C021A01002A9C0275BE +:100680001095018100C005010906A101050719E0C7 +:1006900029E7150025019508750181029501750866 +:1006A000810105081901290595057501910295013A +:1006B000750391010507190029FF150026FF009514 +:1006C0000675088100C0636F6E73756D65723A20A0 +:1006D000253034580A0073797374656D3A202530DB +:1006E00034580A000A002530325820006B657962C0 +:1006F0006F6172643A20004C45443A2025303258EC +:100700000A00253032583A202530386225730A0015 +:10071000722F632030313233343536370A00646546 +:100720006C5F6B65795F6269743A2063616E2774F0 +:100730002064656C3A20253032580A006164645F99 +:100740006B65795F6269743A2063616E277420611A +:1007500064643A20253032580A003F00433E2000AE +:100760004C25640A000A092D20436F6E736F6C6577 +:10077000202D0A4553432F713A09717569740A0097 +:100780000A092D204D61676963202D0A643A0964C6 +:10079000656275670A783A096465627567206D61FC +:1007A000747269780A6B3A096465627567206B65D3 +:1007B00079626F6172640A6D3A09646562756720D7 +:1007C0006D6F7573650A763A0976657273696F6E37 +:1007D0000A733A097374617475730A633A09636F33 +:1007E0006E736F6C65206D6F64650A302D343A0945 +:1007F0006C61796572302D34284631302D463429AC +:100800000A506175733A09626F6F746C6F61646549 +:10081000720A6E3A094E4B524F0A003F004E4B523D +:100820004F3A206F66660A004E4B524F3A206F6E69 +:100830000A0074696D65725F7265616433322829DC +:100840003A202530346C580A006B6579626F61720A +:10085000645F6E6B726F3A2025580A006B6579628F +:100860006F6172645F69646C653A2025580A006B99 +:100870006579626F6172645F70726F746F636F6CC1 +:100880003A2025580A00686F73745F6B6579626F50 +:100890006172645F6C65647328293A2025580A00E8 +:1008A0000A092D20537461747573202D0A00474383 +:1008B000433A20352E342E30204156522D4C494299 +:1008C000433A20322E302E30204156525F4152435F +:1008D000483A2061767235310A004F5054494F4EE4 +:1008E000533A204C5546412045585452414B4559A6 +:1008F00020434F4E534F4C4520434F4D4D414E44A6 +:10090000204E4B524F204B45594D41505F5345436C +:1009100054494F4E20424F4F544C4F414445525F33 +:1009200053495A450A004255494C443A20356137EB +:100930003539383530202830383A35393A32362092 +:100940004465632020352032303139290A00564968 +:10095000443A2030784645454428742E6D2E6B2E3F +:1009600029205049443A203078316265652849424F +:100970004D205043206B6579626F61726420636F14 +:100980006E76657274657229205645523A20307829 +:10099000303030310A00444553433A20636F6E765D +:1009A0006572742049424D205043206B6579626F17 +:1009B00061726420746F205553420A000A092D2089 +:1009C00056657273696F6E202D0A000A6D6F75731C +:1009D000653A206F66660A000A6D6F7573653A2086 +:1009E0006F6E0A000A6B6579626F6172643A206FFC +:1009F00066660A000A6B6579626F6172643A206FFD +:100A00006E0A000A6D61747269783A206F66660A30 +:100A1000000A6D61747269783A206F6E0A000A6488 +:100A2000656275673A206F6E0A000A6465627567D1 +:100A30003A206F66660A000A0A626F6F746C6F6113 +:100A40006465722E2E2E2000433E200011241FBE0E +:100A5000CFEFD0E2DEBFCDBF04B603FE49C0809128 +:100A6000980390919903A0919A03B0919B038730CA +:100A7000904BA740B04B09F03BC0109298031092E6 +:100A8000990310929A0310929B0314BE0FB6F89428 +:100A9000A89580916000886180936000109260004A +:100AA0000FBE1092010810920008E3E0F0E089E028 +:100AB00080935700E491E695E370E150E33040F411 +:100AC000F0E0EE0FFF1FE25DFE4F2081318102C09A +:100AD00020E030E280E090E0A2E0B0E0821B930BE7 +:100AE000A109B109B595A79597958795FC01099539 +:100AF00011E0A0E0B1E0EAEDF7E400E00BBF02C0D6 +:100B000007900D92A433B107D9F723E0A4E3B1E035 +:100B100001C01D92A839B207E1F70E94140F0C948E +:100B2000EB230C940000FF93EF93E0913401F091DC +:100B30003501309709F00995EF91FF910895FC0177 +:100B40008591803011F0EFDFFBCF0895FF27E0E2C1 +:100B500030E247FF0CC0419597FF09C0EDE2609578 +:100B6000709580959095611D711D811D911D27FFC8 +:100B700002C0219530E350E2AA27660F771F881F35 +:100B8000991FAA1FA41710F0A41B63955A95A9F7E3 +:100B9000AA3008F0A95FA05DAF93F39561157105C8 +:100BA0008105910541F7ED3211F4EF93F395F217BA +:100BB00018F43F93F395FBCF8F91B5DFFA95E1F7EA +:100BC0000895E991F9918591803021F0853219F0ED +:100BD000AADFF9CF089520E0E89455915532C1F38A +:100BE000503311F4689455915A3348F4505390F3AC +:100BF000220F022E220F220F200D250FF4CF0EF40C +:100C0000219589919991533619F3533729F1533529 +:100C100059F1BC0188279927E8945C3621F4899121 +:100C2000999168945591543639F446EF7EF077FFE8 +:100C30000DC08FEF9FEF0AC055374AE039F05835A5 +:100C400040E121F0523642E009F00895FF93EF931E +:100C50007DDFEF91FF91B7CFFF93EF93FC0181917F +:100C60008030B9F360DFFBCFFF93EF9368DFF1CF04 +:100C7000DF93CF93CDB7DEB72596A3DFCF91DF917A +:100C80000895282F80915201823071F08330B1F0A5 +:100C9000813001F5E62FF0E038E0739FE00DF11DA3 +:100CA0001124E059FC4F13C0E62FF0E088E0789F54 +:100CB000E00DF11D1124E051FD4F09C0E62FF0E0D9 +:100CC00038E0739FE00DF11D1124E059FD4FE491D0 +:100CD000E03819F480E090E008959E2F9077892FF6 +:100CE00090E034E0959587953A95E1F738E0239FB9 +:100CF000800D911D112444E0880F991F4A95E1F75A +:100D0000EF709C012E0F311DF901EE0FFF1FE05017 +:100D1000F8498591949108955998519A0895519858 +:100D2000599A08955898509A08955098589A089545 +:100D30005198599A85E08A95F1F7000089B1869516 +:100D4000817008955098589A85E08A95F1F70000CF +:100D500089B181700895CF93DF93EC010E949806CA +:100D6000882341F0209731F085E08A95F1F7000063 +:100D70002197F4CFCE01DF91CF910895CF93DF93E8 +:100D8000C2E3D0E00E949806811108C0209731F09C +:100D900085E08A95F1F700002197F4CFCE01DF912D +:100DA000CF9108952091030130E0B9016F5F7F4F2B +:100DB00090910501492F50E046235723609104018B +:100DC00070E04617570791F04091010150910201E0 +:100DD000FA01E20FF31F8083809103018F5F9091EE +:100DE000050189238093030181E0089580E008953F +:100DF0000E948C060E9495060E948F060E9495060E +:100E0000E9E6F0E0808188608083E99A0895CF93D5 +:100E1000DF939AE19150209103018091040199237D +:100E200049F0281307C0EFE9FFE03197F1F700C060 +:100E30000000F0CF281701F1E0910101F0910201CB +:100E4000E80FF11D20818F5F909105018923809328 +:100E50000401C22FD0E08091850380FF0FC01F9254 +:100E60002F9387EF93E09F938F930E9438060F9004 +:100E70000F900F900F9002C0CFEFDFEFCE01DF9108 +:100E8000CF910895EF92FF920F931F93CF93DF932B +:100E900010923A0190913B01913009F4BCC0C82FE7 +:100EA0008091850380FF0CC01F92CF938EEF93E05B +:100EB0009F938F930E9438060F900F900F900F9082 +:100EC000E9980E948C060E9495068FE891E00197B0 +:100ED000F1F700C000000E9492060E948F0680E198 +:100EE00097E20E94AB06892B11F481E07AC000E002 +:100EF00010E0FF24F394D0E0EE24E39490E59A957B +:100F0000F1F7CE01002E02C0959587950A94E2F77D +:100F100080FF04C0FE240E94950602C00E94920633 +:100F20000E94BE06892B11F482E05BC082E390E050 +:100F30000E94AB06892B11F483E053C00F5F1F4F53 +:100F400008301105D9F680E58A95F1F7FF2019F0F0 +:100F50000E94950602C00E9492060E94BE06892B3E +:100F600011F484E03EC082E390E00E94AB06892B3E +:100F700011F485E036C090E59A95F1F70E94950648 +:100F8000C2E3D0E00E94A206882341F0209741F0FE +:100F900085E08A95F1F700002197F4CFCD2B11F46D +:100FA00086E01FC082E390E00E94AB06892B11F41B +:100FB00087E017C00E94BE06892B19F0C2E3D0E07B +:100FC00009C088E00EC0209759F095E09A95F1F796 +:100FD000000021970E94A2068823A9F3CD2B71F46B +:100FE00089E080933A0180913A01806180933A01CF +:100FF0000E948F060E949506E99A0DC00E948F06F6 +:101000000E949506E99ADF91CF911F910F91FF9071 +:10101000EF900C9407078FEF9FEFDF91CF911F9117 +:101020000F91FF90EF900895CF93DF93809104018B +:1010300090910301981701F1E0910101F0910201F3 +:10104000E80FF11D20818F5F909105018923809326 +:101050000401C22FD0E08091850380FF0FC01F9252 +:101060002F9380EF93E09F938F930E9438060F9009 +:101070000F900F900F9002C0CFEFDFEFCE01DF9106 +:10108000CF9108951F920F920FB60F9211240BB6B5 +:101090000F922F933F934F935F936F937F938F9311 +:1010A0009F93AF93BF93EF93FF930E949806811194 +:1010B0008EC08091380190913901009781F00E9493 +:1010C000BC210B9760F080913701806280933A01D8 +:1010D000109237011092360181E0809300010E9446 +:1010E000A421909339018093380180913701893090 +:1010F00018F4813030F012C0893061F18A30B1F1DA +:1011000046C080913B01813029F40E94A2068111E2 +:1011100005C05DC00E94A206811139C080913601D0 +:101120008695809336010E94A206882351F0809113 +:101130003601806880933601809100018F5F809333 +:101140000001809137018830E9F580913B018130C1 +:10115000C9F510C00E94A20690910001882319F0E1 +:1011600090FF15C02FC090FD12C02CC00E94A20697 +:10117000882369F0809136010E94D206811104C053 +:1011800080E480933A0103C010923A010FC090911D +:101190003A0180913701892B80933A0180913A017D +:1011A00080933A01109203011092040110923901C8 +:1011B00010923801109237011092360181E080932D +:1011C000000105C0809137018F5F80933701FF9147 +:1011D000EF91BF91AF919F918F917F916F915F91AF +:1011E0004F913F912F910F900BBE0F900FBE0F901C +:1011F0001F901895CF93C82F8DEE0E9442078C2F19 +:10120000CF910C944207E82FE695E695E695EF70AE +:10121000F0E0EB5AFE4F4081282F277081E090E0EC +:1012200002C0880F991F2A95E2F7242F30E0282367 +:101230003923232B11F4842B80830895E82FE6951E +:10124000E695E695EF70F0E0EB5AFE4F2081382FDF +:10125000377081E090E002C0880F991F3A95E2F75D +:10126000422F50E048235923452B19F080958223C3 +:1012700080830895482F50E0FA013397E138F10553 +:1012800008F048C0E45BFF4F0C94E22387E1089527 +:101290008FE108958CE5089580E6089582E608952B +:1012A00087E2089583E508958FE2089589E308951C +:1012B00087E308958FE3089587E408958FE4089500 +:1012C00086E508958EE508958FE6089580E00895F7 +:1012D00085E608958EE608958FE7089580E30895E2 +:1012E00088E3089580E4089588E4089580E50895EA +:1012F00087E508958FE5089588E1089588E00895C9 +:1013000080E2089580E1089589E108958DE60895C9 +:1013100088E208958F7708958FE00895CF93482F3E +:1013200050E0FA017C97E834F105A0F5E353FF4F54 +:101330000C94E22385E53AC08AE538C08BE536C0D7 +:101340008CE534C08DE532C08EE530C08FE52EC00F +:1013500080E62CC081E62AC082E628C083E626C04B +:101360008FE624C081E722C082E720C084E71EC048 +:1013700085E71CC087E71AC088E718C08AE716C04F +:101380008CE714C08FE712C080E710C089E70EC059 +:101390008BE70CC0C82F87E794E09F938F930E9440 +:1013A00038060F900F908C2F01C084E5CF910895DF +:1013B0000F931F93CF93DF930E94A4218C010E946F +:1013C0001408EC01019631F4C8010E94BC21883E4A +:1013D0009340A8F3CE01DF91CF911F910F91089513 +:1013E000809185038160809385030E94F8062E9882 +:1013F000269A2F98279A2FEF89E698E1215080406E +:101400009040E1F700C0000026982798E5E5F1E05C +:10141000119221E0E536F207D9F70895E82FF0E0C0 +:10142000EB5AFE4F80810895E5E5F1E0119281E0ED +:10143000E536F807D9F70895982F80915201823048 +:1014400049F492FB882780F990FD826091FD8460C9 +:101450000C94FA080895CF93DF9380913A01882382 +:1014600011F180913A011F928F9380EE94E09F9347 +:101470008F930E94380680913A0180750F900F90EB +:101480000F900F9071F480915101843051F48AEDE6 +:1014900094E09F938F930E943806109251010F9011 +:1014A0000F9010923A0180915101823089F128F415 +:1014B000882351F08130F1F063C2833009F4CBC04E +:1014C000843009F4CFC05CC210923B0110925201EB +:1014D00010925401109253010E94A4219093500144 +:1014E00080934F0181E0809351010E94140A0E9471 +:1014F000221746C20E94140880914F01909150011A +:101500000E94BC21893E934008F43AC282E0A0C008 +:1015100085EF0E94420782EF0E9442078F3F4FEF04 +:101520009407A1F08A3F910599F40E94D8098F3F52 +:101530002FEF920781F0D82FCC270E94D809C82B13 +:1015400084EF0E9442079C2F8D2F07C09FEF01C0A0 +:101550009EEF8FEF02C090E080E090935301809364 +:10156000540180913A01882381F080913A011F92C1 +:101570008F938FEC94E09F938F930E943806109284 +:101580003A010F900F900F900F90809154018F931C +:10159000809153018F9385EC94E09F938F930E94E9 +:1015A000380680915301909154019C0122270F909D +:1015B0000F900F900F9021154BEA340711F482E041 +:1015C0000CC021153F4B11F483E007C00097B9F31D +:1015D0008F3F2FEF920721F481E0809352010DC0DD +:1015E0008F3F910561F78FEA94E09F938F930E945C +:1015F0003806109252010F900F90C0915201C130E5 +:1016000049F486EA94E09F938F930E943806C09332 +:101610003B011BC0C23019F48DE994E010C0C33007 +:1016200061F48EE894E09F938F930E9438061092A5 +:101630003B0188EF0E94420708C080E894E09F9336 +:101640008F930E94380610923B010F900F9083E019 +:101650008093510195C10E949A140E941C0A84E053 +:1016600080935101C0915201C23009F465C0C3306A +:1016700009F417C1C13009F083C10E9414088F3FDB +:101680004FEF940709F47CC120914E012230C9F13B +:1016900028F4222349F02130C1F04BC02330E9F176 +:1016A000243009F43FC045C0803E910529F0813EB9 +:1016B000910529F482E02EC0C0934E0161C18038AB +:1016C000910508F41BC18F7731C08633910589F1EC +:1016D00024F48A32910539F42CC08A3A910549F1F3 +:1016E000863B910531F18038910528F40E948E09DE +:1016F0000E9403091EC08F770E948E090E941E0956 +:1017000018C08D31910529F08D39910591F484E04F +:1017100001C083E080934E0133C18534910549F4C3 +:1017200085E5ECC08534910521F485E50E941E090C +:1017300027C110924E0124C10E9414088F3F2FEF41 +:10174000920709F41DC1E0914D014E2F50E0493040 +:10175000510508F0A3C0FA01EB5EFE4F0C94E223A2 +:101760008A3A910509F40CC1ACF48338910539F13A +:101770008438910531F1009741F50E94140A88E6FA +:1017800094E09F938F930E94380610924D010F9022 +:101790000F90F6C0813E910581F02CF4803E9105BA +:1017A000A1F482E072C0803F910529F08C3F910541 +:1017B00009F4E6C00AC081E068C084E066C082E047 +:1017C00001C08FE60E94030969C080389105D0F3FB +:1017D0000E94140A8CE594E09F938F930E94380630 +:1017E0000F900F905BC08935910509F457C0803F79 +:1017F000910521F08231910519F450C083E045C074 +:101800008038910518F40E943A09DCCF0E94140A2E +:1018100082E594E0E1CF8338910529F08438910581 +:1018200021F48FE639C082E037C080389105A0F1FD +:101830000E94140A88E494E0CFCF8231910571F1BF +:101840008935910559F18038910518F40E943A09BB +:1018500023C00E94140A8BE394E0BECF843191052B +:1018600029F0803F9105D1F486E00FC085E00DC0DE +:101870008737910599F480E0A5CF449779F487E004 +:1018800004C0803F910551F488E080934D0178C0F9 +:101890008737910519F480E00E941E0910924D01CE +:1018A0006FC00E9414088F3F4FEF940709F468C07F +:1018B00020914C01222319F02130B1F161C084380C +:1018C0009105D9F03CF4009759F083389105C9F49B +:1018D00082E014C0803F910561F08F3F910589F44B +:1018E0009F938F938FE294E09F938F930E9438068B +:1018F00032C081E080934C0143C08FE70E9403090E +:101900003FC08038910518F40E9403092EC09F93B0 +:101910008F9383E294E09F938F930E9438060F90F9 +:101920000F900F900F9021C083389105C9F01CF4DF +:10193000009739F01DC084389105A1F08F3F9105C3 +:10194000B9F49F938F9384E194E09F938F930E94C7 +:10195000380610924C010F900F900F900F9010C00E +:1019600082E001C08FE70E941E0910924C0108C05E +:1019700080389105C0F39F938F9385E094E0CBCF9F +:1019800081E0DF91CF9108958091890208950895B3 +:10199000CF93DF9300D01F92CDB7DEB720918F0396 +:1019A000243021F523E029839B838A8382E080937E +:1019B000E9008FEF9091E800815095FD06C095ED0C +:1019C0009A95F1F700008111F5CF8091E80085FF2D +:1019D0000DC040E050E063E070E0CE0101960E944F +:1019E00046108091E8008E778093E8000F900F906A +:1019F0000F90DF91CF910895CF93DF9300D01F9286 +:101A0000CDB7DEB720918F03243029F522E029835A +:101A1000805891099B838A832093E9008FEF9091EE +:101A2000E800815095FD06C095ED9A95F1F700000C +:101A30008111F5CF8091E80085FF0DC040E050E0B6 +:101A400063E070E0CE0101960E9446108091E800AC +:101A50008E778093E8000F900F900F90DF91CF91D9 +:101A60000895CF93DF93EC0190918F03943009F0A8 +:101A700048C0809115018823D9F0809116018823F0 +:101A8000B9F09093E90081E8815049F09091E80025 +:101A900095FD05C09AE29A95F1F700C0F5CF8091C7 +:101AA000E80085FF2EC040E050E060E270E019C021 +:101AB00081E08093E90081E8815059F09091E8003D +:101AC00095FD07C0EFE3F1E03197F1F700C00000AA +:101AD000F3CF8091E80085FF14C040E050E068E05B +:101AE00070E0CE010E9446108091E8008E778093CE +:101AF000E80080E2FE01A9E6B2E001900D928A952D +:101B0000E1F7DF91CF910895CF93C0916701C111A3 +:101B10000BC00E94B021643C79408105910520F002 +:101B200081E080936701C1E08C2FCF910895CF931E +:101B3000C82F0E94840D882309F448C00FB607FE01 +:101B400045C080918F03843009F040C08091E90046 +:101B50008F702091EC00922F917020FD90E8892BDE +:101B600093E09093E9009091EB0090FF2CC090914E +:101B7000EE0097FF28C090910901209108012917D4 +:101B800009F447C02091E80025FF1DC0E09106013F +:101B9000F0910701E90FF11D30819F5F20910A014B +:101BA0009223909309013093F1009091E80095FD04 +:101BB000E2CF9091E80090FFDECF9091E8009E7711 +:101BC0009093E800D8CF8F708093E900809108014E +:101BD00090E0AC014F5F5F4F30910A01232F30E05E +:101BE000242335234091090150E024173507D1F013 +:101BF0002091060130910701F901E80FF91FC08318 +:101C0000809108018F5F90910A01892380930801D8 +:101C100009C09091E80095FFD6CFC093F1008F7076 +:101C20008093E90080E0CF91089580918E03811127 +:101C300009C00E94D5110E9437128091E200846091 +:101C40008093E200089510928E03089508950895F8 +:101C500042E061EC81E00E944E1142E061EC82E0E2 +:101C60000E944E1142E261EC83E00E944E1142E27A +:101C700061EC84E00C944E1180919103833009F45F +:101C800055C030F4813071F0823009F48EC008956F +:101C90008A3009F47AC08B3009F460C0893009F0C9 +:101CA0009CC020C080919003813A09F096C0809139 +:101CB000E800877F8093E8008091940390919503DA +:101CC000892B21F460E289E692E003C060E080E0C5 +:101CD00090E070E00E9493108091E8008B778093F1 +:101CE000E800089580919003813209F076C08091D8 +:101CF000940390919503009719F0039709F06DC034 +:101D00008091E800877F8093E8008091E80082FD61 +:101D100005C080918F038111F8CF5FC08091F100E1 +:101D2000809389028091E8008B7753C08091900363 +:101D3000813A09F052C08091940390919503892BC8 +:101D400009F04BC08091E800877F8093E800809184 +:101D5000E80080FFFCCF8091150136C08091900390 +:101D60008132D9F58091940390919503892BA9F53F +:101D70008091E800877F8093E8000E948311809122 +:101D80009203809315010C94221780919003813265 +:101D900021F58091E800877F8093E8000E948311FD +:101DA0008091930380938A02089580919003813AF1 +:101DB000A1F48091E800877F8093E8008091E8009B +:101DC00080FFFCCF80918A028093F1008091E8002F +:101DD0008E778093E8000C94831108958091890296 +:101DE00080936801109289020E94140A0C942217B1 +:101DF0000C94EE0E0E94512180918D03882329F0CE +:101E00000E945E2181110C94301008950E9472216D +:101E1000809168018093890208950C94060F0895BB +:101E20000C940F0F0C940F0FCF9384B7877F84BF50 +:101E30000FB6F894A8958091600088618093600047 +:101E4000109260000FBE90E080E80FB6F894809387 +:101E50006100909361000FBE87E99DE00E942421FC +:101E60008BE091E00E9495148FE095E00E949F0521 +:101E70000E94120F0E9449150E94D5110E9437122C +:101E80008091E20084608093E20078940E944B1578 +:101E900080918F03843029F00E947A140E940F0FE2 +:101EA000F7CF8DEF94E00E949F050E94100F8BEEFC +:101EB00094E00E949F05C3E080918F03853019F460 +:101EC0000E94FA0EF9CF0E944F152091E400309144 +:101ED000E50080916501909166012817390709F4A2 +:101EE00066C08091E4009091E50090936601809334 +:101EF00065010E94840D882309F459C080918F03E5 +:101F0000843009F054C08091E9008F702091EC007A +:101F1000922F917020FD90E8892BC093E900909159 +:101F2000EB0090FF41C09091EE0097FF3DC0909173 +:101F3000090120910801291709F12091E80025FFE6 +:101F40001DC0E0910601F0910701E90FF11D3081FC +:101F50009F5F20910A019223909309013093F10031 +:101F60009091E80095FDE3CF9091E80090FFDFCFDE +:101F70009091E8009E779093E800D9CF2091F200ED +:101F80003091F300232B81F09091E80090FF0CC07A +:101F90009091E80095FF03C01092F100F9CF909165 +:101FA000E8009E779093E8008F708093E9000E948C +:101FB0007A1482CF292F332723303105C9F060F4FA +:101FC0002130310581F02230310509F041C084E72C +:101FD00090E02FE635E040C021323105E1F02232B9 +:101FE000310531F135C082E190E023EE35E034C0B7 +:101FF00099278130910549F028F0029749F5E5E2EB +:10200000F5E005C0EBE6F5E002C0EBE5F5E0849114 +:1020100090E09F0121C06430D8F4E62FF0E0EE0F8D +:10202000FF1FEB5DFE4F2081318189E090E014C0FD +:10203000643070F470E0FB01EE0FFF1FE35EFE4FB3 +:1020400020813181FB01E75EFE4F808190E004C07A +:1020500080E090E020E030E0FA01318320830895B1 +:1020600084E189BD86E189BD09B400FEFDCF809180 +:10207000D8008F7D8093D8008091E00082608093AB +:10208000E0008091E00081FDFCCF0895CF92DF92C7 +:10209000EF92FF920F931F93CF93DF93EC018B018D +:1020A0007A010E94A211811135C0E114F10439F0C6 +:1020B000F70180819181081B190BC80FD91FC12C12 +:1020C000D12C0115110529F18091E80085FD18C07A +:1020D0008091E8008E778093E8000E947A14E114E2 +:1020E000F10449F0F70180819181C80ED91ED18297 +:1020F000C08285E00FC00E94A211882311F30AC09C +:1021000089918093F10001501109FFEFCF1ADF0A86 +:10211000D8CF80E0DF91CF911F910F91FF90EF908A +:10212000DF90CF9008952091960330919703261762 +:10213000370748F06115710539F42091E8002E77D2 +:102140002093E80001C0B901FC0120E06115710590 +:1021500069F180918F038823E1F18530E1F180916D +:10216000E80083FD3AC08091E80082FD2CC0809198 +:10217000E80080FFEBCF8091F2009091F3006115B1 +:10218000710551F08830910538F421912093F100C8 +:10219000615071090196F3CF21E0089709F020E022 +:1021A0008091E8008E778093E800D0CF2111D1CFC5 +:1021B0000AC080918F03882361F0853061F080919F +:1021C000E80083FD0AC08091E80082FFF2CF80E042 +:1021D000089582E0089583E0089581E008952091B4 +:1021E0009603309197032617370748F0611571055C +:1021F00039F42091E8002E772093E80001C0B9015E +:10220000FC0120E06115710581F180918F03882325 +:1022100009F43EC0853009F43DC08091E80083FD9B +:102220003BC08091E80082FD2DC08091E80080FFD6 +:10223000E9CF8091F2009091F3006115710559F09A +:102240008830910540F424912093F100319661503B +:1022500071090196F2CF21E0089709F020E0809102 +:10226000E8008E778093E800CDCF2111CECF0AC051 +:1022700080918F03882361F0853061F08091E800C0 +:1022800083FD0AC08091E80082FFF2CF80E00895CC +:1022900082E0089583E0089581E00895982F9730B3 +:1022A00068F59093E900981739F07091EC0020914F +:1022B000ED005091F00003C0242F762F50E021FD57 +:1022C00002C09F5FECCF3091EB003E7F3093EB007C +:1022D0003091ED003D7F3093ED003091EB003160A7 +:1022E0003093EB007093EC002093ED005093F000DE +:1022F0002091EE0027FDE5CF80E008958F70809358 +:10230000E90081E008958091900387FF11C08091DA +:10231000E80082FD05C080918F038111F8CF11C0C4 +:102320008091E8008B770BC080918F03882349F060 +:102330008091E80080FFF8CF8091E8008E7780934D +:10234000E80008952091E4003091E50095E6409181 +:10235000EC00842F817040FF23C08091E80080FD55 +:102360001DC080918F03882399F0853099F080916A +:10237000EB0085FD11C04091E4005091E500241769 +:10238000350729F3915011F09A01E1CF84E00895C7 +:1023900082E0089583E0089581E0089580E0089543 +:1023A0004091E80042FFDDCF08950E9446120E944E +:1023B0004E12E0EEF0E0808181608083E8EDF0E095 +:1023C00080818F77808319BCA7EDB0E08C918E7FE0 +:1023D0008C9380818F7E808310928E0308950F935B +:1023E0001F93CF93DF930E9446120E944E12C8EDB6 +:1023F000D0E088818F77888388818068888388810E +:102400008F7D8883E7EDF0E080818068808319BC50 +:1024100010928F0310928B0310928D0310928C03F5 +:1024200000EE10E0F80180818B7F808388818160DD +:10243000888342E060E080E00E944E11E1EEF0E02F +:1024400080818E7F8083E2EEF0E0808181608083F6 +:10245000808188608083F80180818E7F808388817D +:1024600080618883DF91CF911F910F910895E8EDEE +:10247000F0E080818F7E8083E7EDF0E080818160F5 +:10248000808381E080938E030C94EF11E8EDF0E0FF +:1024900080818C7F80831092E20008951092DA0090 +:1024A0001092E10008951F920F920FB60F9211241F +:1024B0000BB60F922F933F934F935F936F937F933E +:1024C0008F939F93AF93BF93EF93FF938091E1001E +:1024D00082FF0BC08091E20082FF07C08091E10083 +:1024E0008B7F8093E1000E94270E8091DA0080FFAD +:1024F0001FC08091D80080FF1BC08091DA008E7FC2 +:102500008093DA008091D90080FF0DC084E189BDFD +:1025100086E189BD09B400FEFDCF81E080938F0381 +:102520000E94150E05C019BC10928F030E94230E45 +:102530008091E10080FF19C08091E20080FF15C00A +:102540008091E2008E7F8093E2008091E2008061C2 +:102550008093E2008091D80080628093D80019BCFB +:1025600085E080938F030E94F80E8091E10084FF44 +:1025700030C08091E20084FF2CC084E189BD86E1F7 +:1025800089BD09B400FEFDCF8091D8008F7D809376 +:10259000D8008091E1008F7E8093E1008091E2007D +:1025A0008F7E8093E2008091E20081608093E20060 +:1025B00080918B03882311F084E007C08091E300B1 +:1025C00087FD02C081E001C083E080938F030E94F9 +:1025D0000D0F8091E10083FF24C08091E20083FF12 +:1025E00020C08091E100877F8093E10082E08093AA +:1025F0008F0310928B038091E1008E7F8093E10026 +:102600008091E2008E7F8093E2008091E200806101 +:102610008093E20042E060E080E00E944E110E9460 +:10262000260EFF91EF91BF91AF919F918F917F9176 +:102630006F915F914F913F912F910F900BBE0F9033 +:102640000FBE0F901F9018951F93CF93DF93CDB7B8 +:10265000DEB7AA970FB6F894DEBF0FBECDBFE0E994 +:10266000F3E08091F100819323E0E839F207C9F7A4 +:102670000E943C0E8091E80083FF24C1809190036A +:1026800090919103492F50E04A30510508F01AC14A +:10269000FA01E25EFE4F0C94E223803881F082382A +:1026A00009F010C1809194038F708093E9008091AC +:1026B000EB0085FB882780F91092E90006C0809125 +:1026C0008C0390918D03911182609091E800977F27 +:1026D0009093E8008093F1001092F100C8C0282F79 +:1026E0002D7F09F0EFC0882319F0823061F0EAC035 +:1026F00080919203813009F0E5C0933009F080E0C9 +:1027000080938D032BC080919203811127C080910B +:1027100094038F7009F4D6C08093E9002091EB00F8 +:1027200020FF1CC0933021F48091EB00806214C024 +:102730009091EB0090619093EB0021E030E0A901D3 +:1027400002C0440F551F8A95E2F74093EA001092A9 +:10275000EA008091EB0088608093EB001092E90022 +:102760008091E800877F86C08111ACC010919203F0 +:102770001F778091E3008078812B8093E300809124 +:10278000E800877F8093E8000E9483118091E80031 +:1027900080FFFCCF8091E30080688093E3001111FB +:1027A00002C082E001C083E080938F038BC0805819 +:1027B000823008F087C080919203909193038C3D02 +:1027C00053E0950779F583E08A838AE289834FB7DE +:1027D000F894DE01139620E03EE051E2E32FF0E0B2 +:1027E00050935700E49120FF03C0E295EF703F5FE4 +:1027F000EF708E2F90E0EA3010F0C79601C0C096BF +:102800008D939D932F5F243149F74FBF8091E8004E +:10281000877F8093E8006AE270E0CE0101960E9413 +:10282000931014C0AE014F5F5F4F609194030E94FC +:10283000DA0FBC01892B09F445C09091E800977F1D +:102840009093E80089819A810E94EF108091E800BE +:102850008B778093E80036C08038A1F58091E8003E +:10286000877F8093E80080918B038093F1008091B3 +:10287000E8008E778093E8000E94831123C08111C5 +:1028800021C0809192039091930399270297D4F4E9 +:102890008091E800877F8093E80080919203809385 +:1028A0008B030E94831180918B03811106C080915C +:1028B000E30087FD02C081E001C084E080938F03C4 +:1028C0000E94280E8091E80083FF0AC08091E800F2 +:1028D000877F8093E8008091EB0080628093EB001B +:1028E000AA960FB6F894DEBF0FBECDBFDF91CF9191 +:1028F0001F910895CF9380918F038823A1F0C091F9 +:10290000E900CF709091EC00892F817090FD80E8F4 +:10291000C82B1092E9008091E80083FD0E942413E7 +:10292000CF70C093E900CF91089590939002809367 +:102930008F020895E0918F02F0919002309721F07C +:102940000190F081E02D099480E00895EF92FF92CC +:102950000F931F93CF93DF93E0918F02F09190023A +:102960003097B1F18C010280F381E02D09958091BF +:10297000850382FF2DC080FF04C08CEE96E00E948C +:102980009F05E80110E286EEE82E86E0F82E8091A1 +:10299000850380FF0BC088811F928F93FF92EF9277 +:1029A0000E9438060F900F900F900F9011502196B3 +:1029B0001111EDCF8091850380FF0AC084EE96E06F +:1029C000DF91CF911F910F91FF90EF900C949F0595 +:1029D000DF91CF911F910F91FF90EF900895CF93CA +:1029E000DF9320918D0230918E022817390709F16B +:1029F00090938E0280938D02E0918F02F09190026D +:102A00003097B9F0EC010680F781E02D09958091AF +:102A1000850382FF0EC080FF0CC0DF93CF9386ED4D +:102A200096E09F938F930E9438060F900F900F901F +:102A30000F90DF91CF910895CF93DF9320918B0278 +:102A400030918C022817390709F190938C028093FA +:102A50008B02E0918F02F09190023097B9F0EC0177 +:102A60000084F185E02D09958091850382FF0EC0D9 +:102A700080FF0CC0DF93CF9386EC96E09F938F93FB +:102A80000E9438060F900F900F900F90DF91CF911A +:102A900008950C94F2150E949B210C94F009BF92AA +:102AA000CF92DF92EF92FF920F931F93CF93DF931A +:102AB00000D000D01F92CDB7DEB70E942B0A02E9EA +:102AC00012E0F12C8F2D0E940E0AB82EF801C08062 +:102AD000C82639F4F3940F5F1F4FF0E1FF12F2CFD5 +:102AE00030C08091850381FD0E94F315D12CEE2426 +:102AF000E3948C2D8E21F9F0D982FA8291E08B2D0E +:102B00008E2109F490E09B830E94A4218160782F9C +:102B10009D838C8349815A816B818D810E94291606 +:102B200049815A816B817C818D810E943C21F80111 +:102B300080818E258083D394EE0CF8E0DF12D9CF0C +:102B4000C9CF8FEF89838A831B820E94A421816071 +:102B5000782F9D838C8349815A816B818D810E945E +:102B600029160E943B210E949A1490919102891784 +:102B700041F10E949A14809391029091850392FFF3 +:102B80000EC090FF0CC01F928F9387EF96E09F932B +:102B90008F930E9438060F900F900F900F908091A6 +:102BA00091020F900F900F900F900F90DF91CF91A7 +:102BB0001F910F91FF90EF90DF90CF90BF900C94FA +:102BC0004D210F900F900F900F900F90DF91CF91AC +:102BD0001F910F91FF90EF90DF90CF90BF900895DD +:102BE0000C941C0A0895EF92FF920F931F93CF93BA +:102BF000DF9380E197E00E949F05C0E0D0E08DE286 +:102C0000E82E81E0F82E02E017E08C2F0E940E0AD9 +:102C10000E942921FF92EF921F928F93DF93CF930F +:102C20001F930F930E94380621968DB79EB7089682 +:102C30000FB6F8949EBF0FBE8DBFC031D10529F7E6 +:102C4000DF91CF911F910F91FF90EF90089508951C +:102C50000895CF93DF93CDB7DEB72B970FB6F894D7 +:102C6000DEBF0FBECDBF942F4F83252F58876987B6 +:102C70007A878B874A855B85452B31F02F3F31F46E +:102C800081E09F3F19F403C081E001C080E080FD36 +:102C900007C04F81588569857A858B850E943C21C4 +:102CA000DE01119686E0FD0111928A95E9F785E033 +:102CB000FE01379601900D928A95E1F749815A817C +:102CC0006B817C818D819E810E94371D2B960FB672 +:102CD000F894DEBF0FBECDBFDF91CF910895CF93A3 +:102CE000882309F465C0C82F8CEF8C0F813A20F03F +:102CF00080E58C0F8E3248F48C2F0E948F23811137 +:102D000057C08C2F0E941F200CC080E28C0F88308F +:102D100058F4C77081E001C0880FCA95EAF70E9495 +:102D2000C420CF910C94FE208BE58C0F833078F477 +:102D3000C53A29F0C63A31F083E890E005C081E851 +:102D400090E002C082E890E0CF910C94EF1488E507 +:102D50008C0F853168F5C83A89F0C93A91F0CA3AC2 +:102D600099F0CB3AA1F0CC3AA9F0CD3AB1F0CE3AF5 +:102D7000B9F0CF3AC1F080E090E017C082EE90E069 +:102D800014C089EE90E011C08AEE90E00EC085EB91 +:102D900090E00BC086EB90E008C083EB90E005C0AC +:102DA00084EB90E002C087EB90E0CF910C941C156F +:102DB000CF910895882349F19CEF980F913A20F024 +:102DC00090E5980F9E3218F40E946F200DC090E29B +:102DD000980F983058F4877091E001C0990F8A9548 +:102DE000EAF7892F0E94CA200C94FE209BE5980FD9 +:102DF000933020F480E090E00C94EF14885A8531F1 +:102E000020F480E090E00C941C150895882321F0B4 +:102E10000E94C4200C94FE200895882321F00E9473 +:102E2000CA200C94FE2008950E94E4200E94B32042 +:102E30000E94FE2080E090E00E94EF1480E090E08D +:102E40000C941C150E94D4200C941417CF92DF927E +:102E5000EF92FF920F931F93CF93DF9300D000D098 +:102E60001F92CDB7DEB76C010E944F218111EAC2DB +:102E700085E0F601DE01119601900D928A95E1F749 +:102E8000F60140815181238134812115310531F0D2 +:102E90005F3F31F481E04F3F19F403C081E001C08E +:102EA00080E080FDCFC2F601F280E580E2948FE001 +:102EB000E82249835A83FB82722F3D832C836F2D36 +:102EC0008D810E949B1F8C010E949A1F0E948A1E66 +:102ED000E12FE295EF708E2F90E0FC01E85DFE4F50 +:102EE0000C94E223812F807F1F70882311F01295AC +:102EF000107FFF2049F0112309F43BC2812F0E946B +:102F0000D7200E94FE2035C2802F0E94DA1611239E +:102F100009F498C2812F0E94DD200F900F900F902E +:102F20000F900F90DF91CF911F910F91FF90EF9035 +:102F3000DF90CF900C94FE20812F807F1F70803215 +:102F400011F01295107F002319F0013009F12BC008 +:102F5000FF20A9F0EE2059F1F1E0812FEF1228C0F7 +:102F60000F900F900F900F900F90DF91CF911F91C6 +:102F70000F91FF90EF90DF90CF900C94E720EE2020 +:102F800021F021E0E21609F45DC20E94EA202DC082 +:102F9000FF20E9F085E08E1508F454C20E94C1209C +:102FA000812329F022C0FF20F1F0E11015C0812F0C +:102FB0000F900F900F900F900F90DF91CF911F9176 +:102FC0000F91FF90EF90DF90CF900C94061794E054 +:102FD0009E1508F437C209C0F601858180FFC9C17A +:102FE0008F708583E4CFE110D7C1812F4AC1812F33 +:102FF00086958695837019F08130B9F023C2FF2041 +:1030000019F0C801937002C080E090E00F900F901B +:103010000F900F900F90DF91CF911F910F91FF9024 +:10302000EF90DF90CF900C94EF14FF2019F0C801BF +:10303000937002C080E090E00F900F900F900F907F +:103040000F90DF91CF911F910F91FF90EF90DF9044 +:10305000CF900C941C15812F837009F070C0F11073 +:10306000F1C1202F229526952770220F220F602F65 +:103070006F70862F90E0A0E0B0E06C017D01022E21 +:1030800004C0CC0CDD1CEE1CFF1C0A94D2F704FF1C +:1030900012C08FE090E0A0E0B0E004C0880F991F5C +:1030A000AA1FBB1F2A95D2F7BC01CD016095709570 +:1030B0008095909503C060E070E0CB011695169561 +:1030C00013701230B1F040F56C297D298E299F29AB +:1030D000113031F10F900F900F900F900F90DF9102 +:1030E000CF911F910F91FF90EF90DF90CF900C94B4 +:1030F000AF1E6C297D298E299F290F900F900F906C +:103100000F900F90DF91CF911F910F91FF90EF9053 +:10311000DF90CF900C94C91E0E94AF1EC701B6016C +:103120000F900F900F900F900F90DF91CF911F9104 +:103130000F91FF90EF90DF90CF900C94951EFF20A1 +:1031400019F0812F817001C08695882309F47AC116 +:10315000202F229526952770220F220F602F6F7047 +:10316000862F90E0A0E0B0E06C017D01022E04C04B +:10317000CC0CDD1CEE1CFF1C0A94D2F704FF12C01D +:103180008FE090E0A0E0B0E004C0880F991FAA1F74 +:10319000BB1F2A95D2F7BC01CD0160957095809533 +:1031A000909503C060E070E0CB0116951695137002 +:1031B0001230B1F040F56C297D298E299F291130FC +:1031C00031F10F900F900F900F900F90DF91CF91F2 +:1031D0001F910F91FF90EF90DF90CF900C94761F8E +:1031E0006C297D298E299F290F900F900F900F90A9 +:1031F0000F90DF91CF911F910F91FF90EF90DF9093 +:10320000CF900C94881F0E94761FC701B6010F90C3 +:103210000F900F900F900F90DF91CF911F910F9112 +:10322000FF90EF90DF90CF900C94641F003FC1F1AE +:1032300028F480E4800F803250F096C0023F09F4F9 +:103240005EC008F449C0033F09F46CC08DC0F02F84 +:10325000F071EF2E812F8F71FF2051F00E94FD1E23 +:10326000802FEE2019F08295807FA2CE8F70A0CEA5 +:103270000E941E1F802FEE2019F08295807F01C0D2 +:103280008F700F900F900F900F900F90DF91CF9154 +:103290001F910F91FF90EF90DF90CF900C940D173E +:1032A000FF20A9F024E02E1508F4CCC0812F8F71E7 +:1032B0000F900F900F900F900F90DF91CF911F9173 +:1032C0000F91FF90EF90DF90CF900C94431F85E01B +:1032D0008E1508F4B7C0EACFFF2099F0812F8F71C7 +:1032E0000F900F900F900F900F90DF91CF911F9143 +:1032F0000F91FF90EF90DF90CF900C94FD1EFF2078 +:1033000069F3812F8F710F900F900F900F900F9096 +:10331000DF91CF911F910F91FF90EF90DF90CF90B1 +:103320000C941E1FFF2089F0812F8F710F900F903A +:103330000F900F900F90DF91CF911F910F91FF9001 +:10334000EF90DF90CF900C94E81E0F900F900F90AD +:103350000F900F90DF91CF911F910F91FF90EF9001 +:10336000DF90CF900C94E31EFF2099F0EE2009F43B +:10337000B5CF802F0F900F900F900F900F90DF918F +:10338000CF911F910F91FF90EF90DF90CF900C9411 +:103390006F16EE2009F4B5CF802F0F900F900F908D +:1033A0000F900F90DF91CF911F910F91FF90EF90B1 +:1033B000DF90CF900C94DA16412F4F70602FC6012A +:1033C0000E942A220F900F900F900F900F90DF9184 +:1033D000CF911F910F91FF90EF90DF90CF900C94C1 +:1033E000E51D01112FC0FF2069F10E9422179FEFF8 +:1033F000E0E7F2E09150E040F040E1F700C000006B +:103400000F900F900F900F900F90DF91CF911F9121 +:103410000F91FF90EF90DF90CF900C940B22412FF3 +:103420004F70602FC6010F900F900F900F900F906C +:10343000DF91CF911F910F91FF90EF90DF90CF9090 +:103440000C942D220F900F900F900F900F90DF9102 +:10345000CF911F910F91FF90EF90DF90CF90089543 +:103460001F93CF93DF9300D000D01F92CDB7DEB76C +:10347000942F4983252F5A836B837C838D834C81C2 +:103480005D81452B31F02F3F31F481E09F3F19F4EE +:1034900003C081E001C080E0182F117080FD31C0B1 +:1034A00049815A816B817C818D810E949B1F292FCC +:1034B00022952F702C3030F42A30A0F42250223084 +:1034C00030F022C02C30C9F02F30B9F01DC0853A41 +:1034D00028F48430C0F4823028F415C090E2980FAC +:1034E000983088F0883E30F4803E68F48450813A09 +:1034F00058F409C0803F41F406C093FB112710F92E +:1035000003C010E001C011E0812F0F900F900F90C9 +:103510000F900F90DF91CF911F910895CF93DF937C +:1035200000D000D01F92CDB7DEB70F900F900F9054 +:103530000F900F90DF91CF910895CF93DF9300D03C +:1035400000D000D0CDB7DEB726960FB6F894DEBF18 +:103550000FBECDBFDF91CF9108951F93CF93DF931F +:10356000C091A20216E08091A302C81799F0D0E0A2 +:103570001C9FF0011D9FF00D1124EC55FD4F408163 +:10358000518162817381848195810E949D1A219667 +:10359000C770E9CFDF91CF911F9108954091D40278 +:1035A0005091D5026091D6027091D7028091D802D5 +:1035B0009091D9020C949D1ACF938091D902829553 +:1035C0008F7009F05FC08091D602882309F45AC039 +:1035D0008091A202B091A3027091D402A091D50271 +:1035E0004091D7025091D80291E07F3F09F090E0DE +:1035F000692FC6E08B1709F445C04115510521F02C +:10360000AF3F21F020E003C021E001C0262F90E071 +:1036100020FD35C0C89FF001C99FF00D1124EC5565 +:10362000FD4F21812A132BC02081271328C022811E +:10363000211125C0238134812417350710F421502E +:103640003109241B350B283C3105C8F42091D902DF +:103650002F7020612093D90226E0289FF001299F36 +:10366000F00D1124E755FD4F80818F7080618083BC +:1036700084ED92E00E942617CF910C94AD1A01962A +:103680008770B8CFCF910895AF92BF92CF92DF925B +:10369000EF92FF920F931F93CF93DF93CDB7DEB7D7 +:1036A00061970FB6F894DEBF0FBECDBF7C0185E0F9 +:1036B000F701DE011D9601900D928A95E1F7D70181 +:1036C0004C9111965C9111971296DC90129713967B +:1036D0000D911C9114973091D4026091D502809184 +:1036E000D7029091D802009731F06F3F31F421E07A +:1036F0003F3F19F403C021E001C020E0B22FB170B8 +:10370000BB2E20FD6EC1A090D602AA2009F4CCC029 +:103710002091D9020817190728F0F801E81BF90BC6 +:10372000CF0104C080959095800F911FCC24C39445 +:10373000883C910580F0C12C207F09F0A1C0702F3A +:10374000198B088B6D2D89890E948E1A84ED92E069 +:103750000E942617BDC0822F807F09F056C05613E5 +:1037600015C0431313C0CD2CD11010C02F70206191 +:103770002093D9020E94CE1A84ED92E00E9426176F +:103780008091D902D70115968C935FC1011511055F +:1037900031F05F3F31F481E04F3F19F403C081E025 +:1037A00001C080E080FD03C081E08D2502C080E083 +:1037B00090E0B82FB170CB2E80FF1CC08091A20288 +:1037C0002091A30236E0821709F41CC190E0389FD3 +:1037D000F001399FF00D1124EC55FD4F6181561316 +:1037E00006C06081461303C06281D61203C00196F1 +:1037F0008770E9CFCD2CDD2009F427C18091D90253 +:1038000081608093D902C12C20C1561308C0431394 +:1038100006C0D11004C08091D902D701B6C04D872F +:103820005E87DF86702F198B088B6D2D89890E942A +:10383000301A882399F1DD2089F12091D902822F55 +:1038400082958F7090E0029774F08091D4029091ED +:10385000D50298878F8319861B870A872C87CE010C +:1038600007960E94261786E0F701A4EDB2E00190CA +:103870000D928A95E1F70E94DC1A0E94CE1A11C0BF +:10388000561781F14D875E87DF86702F198B088B65 +:103890006D2D89890E94301A811138C0C7010E949C +:1038A0002617CC24C394D1C00817190708F446C0C2 +:1038B000F801E81BF90BCF01883C910508F443C0DF +:1038C000C12C702F198B088B6D2D89890E948E1A3F +:1038D000E4EDF2E086E0DF011D928A95E9F70E94AF +:1038E000CE1AB3C04313CECFD110CCCF8091D90222 +:1038F000F7018583C7010E94261786E0E4EDF2E018 +:10390000DF011D928A95E9F7CA2C9FC0DD2031F2B4 +:103910002091D902822F82958F7090E002970CF44B +:10392000A2CF8091D4029091D5029A8389831B8281 +:103930001D830C832E83CE01019693CF80959095A5 +:10394000800F911FB9CFCD2CDD2009F4A7CF5613DE +:1039500033C0431331C02091D90220FD24C0822FEF +:1039600082958F70482F50E041155105E1F0D70145 +:1039700015962C9315974F30510549F08F5F982F6E +:103980009295907F822F8F70892B15968C93C7010B +:103990000E94261786E0F701A4EDB2E001900D9297 +:1039A0008A95E1F79CCF86E0F701A4EDB2E00190A3 +:1039B0000D928A95E1F749C04D875E87DF86702FAB +:1039C000198B088B6D2D89890E94301A81114BCF7C +:1039D0008091D90281608093D902C7010E94261785 +:1039E00034C0DD2009F45ACF4D875E87DF86702F03 +:1039F000198B088B6D2D89890E94301A882309F450 +:103A00004DCF31CF702F198B088B6D2D89890E9476 +:103A10009B1F292F22952F70223028F49F7039F098 +:103A2000811105C00BC0243028F49F7049F4805EDA +:103A3000883020F0C7010E942617BC2CCB2C05C073 +:103A4000F7019581907F99F7F9CF8C2D61960FB68C +:103A5000F894DEBF0FBECDBFDF91CF911F910F91C4 +:103A6000FF90EF90DF90CF90BF90AF9008951F939D +:103A7000CF93DF93CDB7DEB72C970FB6F894DEBFA8 +:103A80000FBECDBF4F83588769877A878B879C8706 +:103A9000CE0107960E94441B8823D1F09F81888520 +:103AA0002A853B85232B31F08F3F31F481E09F3F06 +:103AB00019F403C081E001C080E080FD47C04F8160 +:103AC000588569857A858B859C850E949D1A3EC0A4 +:103AD00086E0FE013796DE01119601900D928A95DF +:103AE000E1F7FF81E8856A857B856115710531F015 +:103AF000EF3F31F481E0FF3F19F403C081E001C0E2 +:103B000080E080FD23C02091A30230E0C90101962E +:103B1000877099274091A20250E084179507F1F130 +:103B2000F983EA837D836C8396E0929FD001939F13 +:103B3000B00D1124AC55BD4FFE01319601900D9290 +:103B40009A95E1F78093A3020E94AD1A16E0809146 +:103B5000A2029091A302891771F1189FC00111244C +:103B60008C559D4F0E94441B882329F1E091A202AD +:103B70001E9FF0011124EC55FD4F4081518162815F +:103B80007381848195810E949D1A8091A20290E0A8 +:103B90000196877099278093A202D9CF0E9422179D +:103BA0001092A3021092A202E4EDF2E086E0DF019F +:103BB0001D928A95E9F72C960FB6F894DEBF0FBEDA +:103BC000CDBFDF91CF911F910895DF92EF92FF92C9 +:103BD0000F931F93CF93DF93FC01892B09F488C0C7 +:103BE000E12CF12CDD24D394EF01219684918537CB +:103BF00009F460C058F4843708F04EC0843008F0EF +:103C000068C08130D1F0823071F172C0883709F418 +:103C10005BC050F4863709F453C0873709F068C099 +:103C20008E2D0E94D12052C09CE7980F903708F04B +:103C30005FC08F770E94DA164EC08F010E5F1F4F54 +:103C4000FE01849190E2980F983050F48770FD2D1A +:103C500001C0FF0F8A95EAF78F2F0E94D72015C069 +:103C60000E946F1614C08F010E5F1F4FFE018491DA +:103C700090E2980F983068F48770FD2D01C0FF0F17 +:103C80008A95EAF78F2F0E94DD200E94FE20E8012E +:103C900022C00E94DA16FBCFCF010296FE01C4912A +:103CA000CC2361F0EFE9FFE03197F1F700C00000AD +:103CB000C150F6CFCF010296FE01F490EC010BC08B +:103CC0000E94C120E82E07C00E94D4200E94FE203E +:103CD00002C00E946F168F2D882341F0EFE9FFE0AC +:103CE0003197F1F700C000008150F6CFFE017CCF84 +:103CF000DF91CF911F910F91FF90EF90DF9008958A +:103D000060935A0370935B0380935C0390935D030D +:103D10000C944C21089560935E0370935F0380932D +:103D20006003909361030C944B210F931F930091B8 +:103D30005E0310915F032091600330916103602B5B +:103D4000712B822B932B60935E0370935F038093A0 +:103D50006003909361031F910F910C944B210F937B +:103D60001F9300915E0310915F03209160033091D7 +:103D70006103602371238223932360935E03709316 +:103D80005F0380936003909361031F910F910C94E4 +:103D90004B210F931F9300915E0310915F032091BD +:103DA0006003309161036027712782279327609316 +:103DB0005E0370935F0380936003909361031F9190 +:103DC0000F910C944B2160E070E0CB010C94801EAD +:103DD0000F931F9341E050E060E070E08A019B0187 +:103DE00004C0000F111F221F331F8A95D2F7C9018B +:103DF000B8011F910F910C94801E0F931F9341E007 +:103E000050E060E070E004C0440F551F661F771F4C +:103E10008A95D2F780915A0390915B03A0915C033D +:103E2000B0915D038A019B01082B192B2A2B3B2B98 +:103E3000C901B8011F910F910C94801E0F931F931D +:103E400041E050E060E070E004C0440F551F661F81 +:103E5000771F8A95D2F7409550956095709580911F +:103E60005A0390915B03A0915C03B0915D038A01BA +:103E70009B01082319232A233B23C901B8011F9161 +:103E80000F910C94801E0F931F9341E050E060E06F +:103E900070E004C0440F551F661F771F8A95D2F744 +:103EA00080915A0390915B03A0915C03B0915D03F4 +:103EB0008A019B01082719272A273B27C901B80136 +:103EC0001F910F910C94801E0F931F9300915A0322 +:103ED00010915B0320915C0330915D03602B712B8B +:103EE000822B932B1F910F910C94801E0F931F9385 +:103EF00000915A0310915B0320915C0330915D03A4 +:103F000060237123822393231F910F910C94801EB1 +:103F10000F931F9300915A0310915B0320915C0350 +:103F200030915D0360277127822793271F910F919E +:103F30000C94801E08958F929F92AF92BF92DF9251 +:103F4000EF92FF920F931F93CF93DF9300D000D097 +:103F50001F92CDB7DEB76B837C838D838A018C8102 +:103F60009D81892B31F01F3F31F481E04F3F19F4DF +:103F700003C081E001C080E080FF03C080E090E0EA +:103F80004DC08B818823D1F180905A0390905B03C0 +:103F9000A0905C03B0905D0380915E0390915F03FD +:103FA000A0916003B0916103882A992AAA2ABB2AAA +:103FB0008FE1E82EF12CD501C4010E2C04C0B6957A +:103FC000A795979587950A94D2F780FD06C081E062 +:103FD000E81AF10880F7D12C07C0DE2CB8018E2D2D +:103FE0000E944106019799F388E0189FF00111247F +:103FF000E652FD4FE00FF11DD08209C088E0189F06 +:10400000F0011124E652FD4FE00FF11DD08009832D +:104010001A8369817A818D2D0E9441060F900F903D +:104020000F900F900F90DF91CF911F910F91FF9004 +:10403000EF90DF90BF90AF909F908F9008959091F8 +:104040001501992379F190911601992359F1982F2F +:104050009695969596959F31A1F0E0911701F09174 +:104060001801E90FF11D877021E030E0A90102C0BD +:10407000440F551F8A95E2F7CA019181892B8183EC +:1040800008959091850390FF29C01F928F938CE330 +:1040900097E09F938F930E9438060F900F900F9098 +:1040A0000F9008952091170130911801F90132966F +:1040B0009FEF40E05191851789F09F3F19F451110E +:1040C00001C0942F4F5F4E31A9F79F3F39F0F9019E +:1040D000E90FF11D97FDFA95828308950895909157 +:1040E0001501992381F190911601992361F1982F7F +:1040F0009695969596959F31A9F0E0911701F091CC +:104100001801E90FF11D877021E030E0A90102C01C +:10411000440F551F8A95E2F7CA0180959181892342 +:10412000818308959091850390FF1CC01F928F9307 +:104130008EE197E09F938F930E9438060F900F9027 +:104140000F900F900895E0911701F09118019F01D1 +:10415000225E3F4F9281891301C012823196E2178D +:10416000F307C1F7089581E090E0E0911701F09125 +:104170001801E80FF91F1082019680329105A9F706 +:10418000089580918403089590918403892B8093EE +:1041900084030895809590918403892380938403F8 +:1041A0000895809384030895109284030895909154 +:1041B0008303892B809383030895809590918303D3 +:1041C0008923809383030895109283030895809335 +:1041D00062030895109262030895809117019091EF +:1041E0001801FC0131969C01205E3F4F80E09191C7 +:1041F00091118F5FE217F307D1F70895E09117014E +:10420000F0911801809184038083E0911701F0916F +:104210001801908180918303892B808380916203B0 +:10422000882361F0E0911701F09118019081892BAA +:1042300080830E94ED20811110926203809117010A +:10424000909118010C94A614909335018093340139 +:1042500008958295982F937344E0949F90011124C0 +:104260008C7C86958695282B822F8575880F2A7AD7 +:104270002695822B08950895CF93DF9300D000D028 +:104280001F92CDB7DEB70F900F900F900F900F9049 +:10429000DF91CF910895089508950C94F01580E072 +:1042A000089583B7817F8C6083BF83B7816083BFAC +:1042B0007894889583B78E7F83BF0895CF930E94AB +:1042C00027160E942B0A0E942816C0E08C2F0E94FD +:1042D0000E0A811104C0CF5FC031C1F701C081E077 +:1042E000CF9108950E94140A0C9422171F920F92E6 +:1042F0000FB60F9211248F939F93AF93BF9380912A +:10430000860390918703A0918803B0918903419619 +:10431000A11DB11D8093860390938703A09388030A +:10432000B0938903BF91AF919F918F910F900FBE72 +:104330000F901F90189582E084BD93E095BD9AEF91 +:1043400097BD80936E0008952FB7F89480918603EF +:1043500090918703A0918803B09189032FBF08959E +:104360002FB7F8946091860370918703809188033A +:10437000909189032FBF0895CF92DF92EF92FF9221 +:104380000F931F932FB7F8944091860350918703A2 +:1043900060918803709189032FBF6A017B01EE242D +:1043A000FF248C0120E030E0C016D106E206F306BF +:1043B00010F4415051099A01281B390BC9011F9172 +:1043C0000F91FF90EF90DF90CF9008951F920F9282 +:1043D0000FB60F9211248F939F93AF93BF93809149 +:1043E000860390918703A0918803B0918903019679 +:1043F000A11DB11D8093860390938703A09388032A +:10440000B0938903BF91AF919F918F910F900FBE91 +:104410000F901F9018950E94D511F89487E797E7A1 +:10442000909301088093000887E090EBDC01809373 +:10443000980390939903A0939A03B0939B039CE0F5 +:1044400088E10FB6F894A895809360000FBE909312 +:104450006000FFCF80E090E008950895CF93C82FCB +:104460001F928F9380E697E09F938F930E94380668 +:1044700081E090E0A0E0B0E0BC01CD0104C0660F97 +:10448000771F881F991FCA95D2F70E948B1E0F9025 +:104490000F900F900F90CF910C942217CF938732EB +:1044A000A8F58E3108F02BC1803109F49FC0F8F4D3 +:1044B000873009F464C0A8F4863009F024C18091E3 +:1044C0008503817F8E7F8093850385E697E00E9438 +:1044D0009F0588E49AE00E949F0581E080938A030B +:1044E0004CC08B30F1F18E3009F46CC00CC18631B8 +:1044F00009F4B0C020F4813109F4EDC004C1893160 +:1045000009F491C08B3109F449C0FDC0883349F1E9 +:1045100050F4893209F4F1C0853309F4EEC08732D2 +:1045200009F0F1C0EAC0833409F4E7C028F48A3303 +:1045300008F4E9C08953E4C0883409F0E4C00E945B +:10454000221787E39AE00E949F052FEF83ED90E307 +:10455000215080409040E1F700C000000E940B22F3 +:104560000CC080E897E05CC08EE19AE00E949F0555 +:1045700080918503816080938503C1E0C9C08091EB +:104580008503C82FC17080FFEFCF8AE29AE00E94B6 +:104590009F0580918503817F8E7F3DC0909185032B +:1045A00091FBCC27C0F981E0C827892FC0FB81F996 +:1045B00080938503CC2319F081E19AE027C083E042 +:1045C0009AE02EC09091850392FBCC27C0F981E040 +:1045D000C827892FC0FB82F980938503CC2319F06B +:1045E00084EF99E013C084EE99E01AC0909185039E +:1045F00093FBCC27C0F981E0C827892FC0FB83F942 +:1046000080938503CC2351F088ED99E00E949F05AB +:10461000809185038160809385037AC08BEC99E05B +:104620000E949F05AACF8CEB99E00E949F0586E926 +:1046300099E00E949F058EE499E00E949F0586E222 +:1046400099E00E949F058AED98E00E949F058EEAFE +:1046500098E0E6CF80EA98E00E949F050E949A14B5 +:104660001F928F9386E898E09F938F930E9438065D +:10467000809115011F928F938FE698E09F938F93FF +:104680000E94380680918A021F928F938CE598E0F1 +:104690009F938F930E943806809116011F928F93EB +:1046A00089E498E09F938F930E9438060E94B0217E +:1046B0009F938F937F936F9382E398E09F938F9361 +:1046C0000E9438068DB79EB746960FB6F8949EBFE7 +:1046D0000FBE8DBF52CF0E942217C091160181E0FC +:1046E000C827C0931601CC2329F088E298E00E94E5 +:1046F0009F050EC08DE198E093CF80E001C08D5101 +:104700000E942E223ACF8BE198E00E949F05C0E0E4 +:104710008C2FCF91089580E008950C948B23CF9334 +:10472000C82F80918A03882319F0813059F042C044 +:10473000E0911701F09118018081823261F0843498 +:10474000D9F509C0E0911701F091180180818232FA +:1047500011F0843461F48C2F0E948D23811104C0E8 +:104760008C2F0E944E2224C081E090E021C08C2F2B +:104770000E948B2381111BC0C43189F018F4CB3007 +:1047800029F010C0C93259F0C83361F485E697E0CA +:104790000E949F058CE597E00E949F0508C010923B +:1047A0008A030CC08AE597E00E949F0507C081E05C +:1047B000817006C010928A0380E002C080E0F8CFCA +:1047C000CF910895EE0FFF1F0024001C0BBE079031 +:0A47D000F691E02D0994F894FFCF54 +:1047DA00013C0100000F69010000FFC40C310DC744 +:1047EA000CFC0CC80C0101630340362239860650C2 +:1047FA00062E06F50581059A05B305D305000010B6 +:04480A00000800049E +:106800008800EA44E944E244040005000600070069 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:10686000300031003200330034003500360037008C +:10687000380039003A003B003C003D003E003F003C +:1068800040004100420043004400450046004700EC +:10689000480049004A004B004C004D004E004F009C +:1068A000500051005200530054005500560057004C +:1068B000580059005A005B005C005D005E005F00FC +:1068C00060006100620063006400F1A18500670060 +:1068D000680069006A006B006C006D006E006F005C +:1068E0007000710072007300890087008A008B00BD +:1068F000E000E100E200E300E400E500E600E7007C +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010035004C0039000100440045005200A0 +:1069600049000100010050004F0029004D004E0079 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/ibmpc_usb/binary/ibmpc_usb_atmega32u4.hex b/converter/ibmpc_usb/binary/ibmpc_usb_atmega32u4.hex new file mode 100644 index 00000000..7f59dbb8 --- /dev/null +++ b/converter/ibmpc_usb/binary/ibmpc_usb_atmega32u4.hex @@ -0,0 +1,1186 @@ +:100000000C9430050C9491050C9442080C949105C5 +:100010000C9491050C9491050C9491050C94910508 +:100020000C9491050C9491050C9452120C9491052A +:100030000C9471210C9491050C9491050C949105EC +:100040000C9491050C9491050C9491050C949105D8 +:100050000C9491050C94E1210C9491050C9491055C +:100060000C9491050C9491050C9491050C949105B8 +:100070000C9491050C9491050C9491050C949105A8 +:100080000C9491050C9491050C9491050C94910598 +:100090000C9491050C9491050C9491050C94910588 +:1000A0000C9491050C9491050C94910578097A09AA +:1000B0008609860986098609860986097C097E09DA +:1000C0008009860986097A0988098609860942090C +:1000D0007809860986097E098609860986098609BE +:1000E00086098609800978096409860968098609EC +:1000F0008609860944097C098609860972098609E8 +:1001000086098609460984098609660986097A09E5 +:100110008609860976096A0986096C097E098609B5 +:100120008609860974096E09860986098609860981 +:10013000860986098609700986094809860986099B +:100140007C09860986098409860986098609860943 +:10015000860986098609860986094A098609860963 +:10016000860972098609860986098609860986092B +:1001700086098609860986094C0986094E095009AF +:1001800086098609860952095409560986095809BB +:100190005A0986098609860982095C098609600967 +:1001A0005E09620986098609860986098409AC09FF +:1001B000BA09C609C6099E09C609C609C609C609FB +:1001C000C609C609C609C609C609C609C609C609B7 +:1001D000C609A009C609A209C609C609C609C609F1 +:1001E000BE09C609D109BC09C609C609C609C6099E +:1001F000C609C609C609C609C609C609C609C60987 +:10020000C6099609B209A409B609C609A609C6090C +:10021000AA09C609B409A809B809AE09B009C609EE +:10022000C609C609C609C609C609C60998099A09B0 +:100230009C09C009C209C609C609C609C409AC0B94 +:10024000070CEF0B190C2A0C340C390C3D0C440C28 +:1002500048136A135D146A135D14AF13D2135D144F +:1002600027143A146D176D1797179717F2171D1A61 +:100270001D1A1D1A26181D1A11191119D7191D1A20 +:10028000EC190A1A807B01484746293A687F0277B1 +:10029000762B353B6978796439141E3C6A7A1D16D1 +:1002A000041A1F3D6B061B070821203E6C2C190900 +:1002B0001715223F6D11050B0A1C23406E7E100D91 +:1002C000182425416F360E0C122726427037380F3E +:1002D00033132D43717534322F2E44727C7D2830B8 +:1002E00031744573515065524C4D2A4900594F5C49 +:1002F0005F4E4A4B62635A5D5E60535467585B665B +:10030000576155564842403E3C3A3B456843413F61 +:100310003D2B357E697A790078141E7C6A7B1D1628 +:10032000041A1F7F6B061B070821204D6C2C19092E +:100330001715224A6D11050B0A1C234C6E49100D2E +:10034000182425516F360E0C1227264F7037380FA0 +:1003500033132D52717534502F2E4E72397D283043 +:1003600065314B735464586776012A773259745C4F +:100370005F66024662635A5D5E60295344575B566E +:100380005561470380291E1F20212223242526276B +:100390002D2E2A2B141A0815171C180C12132F3087 +:1003A0002878041607090A0B0D0E0F3334357931FE +:1003B0001D1B06190511103637387D557A2C393A30 +:1003C0003B3C3D3E3F4041424353475F6061565C8A +:1003D0005D5E57595A5B62634648324445677B7F8E +:1003E000650301025250514F68696A6B6C6D6E6F04 +:1003F0007071725800494C754A4D734B4E767C773C +:100400007E7466547225303258200072253032587E +:10041000200077253032582000214353335F463087 +:100420005F25303258210A00214353335F46305F45 +:1004300025303258210A00214353335F253032588A +:10044000210A00214353335F25303258210A00210D +:100450004353325F45305F4630210A002143533217 +:100460005F4630210A00214353325F4530210A00A4 +:10047000214353325F494E4954210A0021435332EC +:100480005F4F56455252554E210A00214353315F6A +:100490003F210A006B62643A20556E6B6E6F776E77 +:1004A0000A006B62643A205465726D696E616C0A71 +:1004B000006B62643A2041540A006B62643A20582F +:1004C000540A004D6F7573653A206E6F7420737512 +:1004D00070706F727465640A0049443A20253034A4 +:1004E000580A006572723A20253032580A00696E47 +:1004F00069740A006572723A20253032580A000A7F +:100500004B6579626F6172642073746172742E0A34 +:10051000000A55534220636F6E66696775726564A1 +:100520002E0A000A0A544D4B3A35613735393835B1 +:10053000302F4C5546410A0A003403490042004D11 +:100540000020005000430020006B0065007900622D +:10055000006F00610072006400200063006F006E95 +:100560000076006500720074006500720000000EE5 +:100570000374002E006D002E006B002E000000049E +:1005800003090409027400040100A03209040000F8 +:1005900001030101000921110100012240000705AA +:1005A000810308000A090401000103000000092179 +:1005B000110100012236000705820308000A090420 +:1005C00002000203000000092111010001222200A3 +:1005D0000705830320000107050303200001090428 +:1005E000030001030000000921110100012239006C +:1005F000070584032000011201100100000008ED2E +:10060000FEEE1B01000102000105010906A1010522 +:100610000719E029E71500250195087501810205F4 +:100620000819012905950575019102950175039138 +:10063000010507190029F71500250195F8750181B5 +:1006400002C00631FF0974A1010975150026FF00DB +:100650009520750881020976150026FF0095207502 +:10066000089102C005010980A1018502160100263A +:1006700037001A81002AB700751095018100C00566 +:100680000C0901A1018503160100269C021A010034 +:100690002A9C02751095018100C005010906A1017F +:1006A000050719E029E71500250195087501810264 +:1006B0009501750881010508190129059505750140 +:1006C00091029501750391010507190029FF150095 +:1006D00026FF00950675088100C0636F6E73756D07 +:1006E00065723A20253034580A0073797374656D49 +:1006F0003A20253034580A000A00253032582000AC +:100700006B6579626F6172643A20004C45443A200F +:10071000253032580A00253032583A2025303862C8 +:1007200025730A00722F6320303132333435363767 +:100730000A0064656C5F6B65795F6269743A206377 +:10074000616E27742064656C3A20253032580A00A7 +:100750006164645F6B65795F6269743A2063616E9E +:100760002774206164643A20253032580A003F0023 +:10077000433E20004C25640A000A092D20436F6E79 +:10078000736F6C65202D0A4553432F713A097175BB +:1007900069740A000A092D204D61676963202D0ADA +:1007A000643A0964656275670A783A096465627536 +:1007B00067206D61747269780A6B3A0964656275C5 +:1007C00067206B6579626F6172640A6D3A096465CE +:1007D000627567206D6F7573650A763A0976657282 +:1007E00073696F6E0A733A097374617475730A637F +:1007F0003A09636F6E736F6C65206D6F64650A30C4 +:100800002D343A096C61796572302D3428463130C7 +:100810002D4634290A506175733A09626F6F746C02 +:100820006F616465720A6E3A094E4B524F0A003F7F +:10083000004E4B524F3A206F66660A004E4B524FA5 +:100840003A206F6E0A0074696D65725F726561644B +:10085000333228293A202530346C580A006B6579E8 +:10086000626F6172645F6E6B726F3A2025580A0086 +:100870006B6579626F6172645F69646C653A2025AB +:10088000580A006B6579626F6172645F70726F7491 +:100890006F636F6C3A2025580A00686F73745F6B42 +:1008A0006579626F6172645F6C65647328293A20B0 +:1008B00025580A000A092D20537461747573202D80 +:1008C0000A004743433A20352E342E3020415652F9 +:1008D0002D4C4942433A20322E302E302041565280 +:1008E0005F415243483A20617672350A004F5054B6 +:1008F000494F4E533A204C55464120455854524199 +:100900004B455920434F4E534F4C4520434F4D4D7F +:10091000414E44204E4B524F204B45594D41505F64 +:1009200053454354494F4E20424F4F544C4F41443E +:1009300045525F53495A450A004255494C443A20B2 +:100940003561373539383530202830393A30333A47 +:100950003232204465632020352032303139290A73 +:10096000005649443A2030784645454428742E6D57 +:100970002E6B2E29205049443A203078316265652B +:100980002849424D205043206B6579626F61726443 +:1009900020636F6E76657274657229205645523AEF +:1009A000203078303030310A00444553433A2063D8 +:1009B0006F6E766572742049424D205043206B65FE +:1009C00079626F61726420746F205553420A000A85 +:1009D000092D2056657273696F6E202D0A000A6D0D +:1009E0006F7573653A206F66660A000A6D6F7573DE +:1009F000653A206F6E0A000A6B6579626F617264F6 +:100A00003A206F66660A000A6B6579626F617264EC +:100A10003A206F6E0A000A6D61747269783A206F2D +:100A200066660A000A6D61747269783A206F6E0A10 +:100A3000000A64656275673A206F6E0A000A646591 +:100A40006275673A206F66660A000A0A626F6F7401 +:100A50006C6F616465722E2E2E2000433E200000D4 +:100A600011241FBECFEFDAE0DEBFCDBF04B603FE18 +:100A700041C08091980390919903A0919A03B091FD +:100A80009B038730904BA740B04BA1F51092980381 +:100A90001092990310929A0310929B0314BE0FB602 +:100AA000F894A8958091600088618093600010920E +:100AB00060000FBE1092010810920008E3E0F0E021 +:100AC00089E080935700E491E695E370E150E330CC +:100AD00040F4F0E0EE0FFF1FE25DFE4F8081918158 +:100AE00002C080E090E1E0E0F0E8E81BF90BF69549 +:100AF000E795099511E0A0E0B1E0EAECF7E402C067 +:100B000005900D92A433B107D9F723E0A4E3B1E037 +:100B100001C01D92A839B207E1F70E94100F0C9492 +:100B2000E3230C940000FF93EF93E0913401F091E4 +:100B30003501309709F00995EF91FF910895FC0177 +:100B40008591803011F0EFDFFBCF0895FF27E0E2C1 +:100B500030E247FF0CC0419597FF09C0EDE2609578 +:100B6000709580959095611D711D811D911D27FFC8 +:100B700002C0219530E350E2AA27660F771F881F35 +:100B8000991FAA1FA41710F0A41B63955A95A9F7E3 +:100B9000AA3008F0A95FA05DAF93F39561157105C8 +:100BA0008105910541F7ED3211F4EF93F395F217BA +:100BB00018F43F93F395FBCF8F91B5DFFA95E1F7EA +:100BC0000895E991F9918591803021F0853219F0ED +:100BD000AADFF9CF089520E0E89455915532C1F38A +:100BE000503311F4689455915A3348F4505390F3AC +:100BF000220F022E220F220F200D250FF4CF0EF40C +:100C0000219589919991533619F3533729F1533529 +:100C100059F1BC0188279927E8945C3621F4899121 +:100C2000999168945591543639F446EF7EF077FFE8 +:100C30000DC08FEF9FEF0AC055374AE039F05835A5 +:100C400040E121F0523642E009F00895FF93EF931E +:100C50007DDFEF91FF91B7CFFF93EF93FC0181917F +:100C60008030B9F360DFFBCFFF93EF9368DFF1CF04 +:100C7000DF93CF93CDB7DEB72596A3DFCF91DF917A +:100C80000895282F80915201823071F08330B1F0A5 +:100C9000813001F5E62FF0E038E0739FE00DF11DA3 +:100CA0001124EC57FC4F13C0E62FF0E088E0789F4A +:100CB000E00DF11D1124EC5FFC4F09C0E62FF0E0C0 +:100CC00038E0739FE00DF11D1124EC57FD4FE491C6 +:100CD000E03819F480E090E008959E2F9077892FF6 +:100CE00090E034E0959587953A95E1F738E0239FB9 +:100CF000800D911D112444E0880F991F4A95E1F75A +:100D0000EF709C012E0F311DF901EE0FFF1FE05017 +:100D1000F8498591949108955998519A0895519858 +:100D2000599A08955898509A08955098589A089545 +:100D30005198599A85E08A95F1F7000089B1869516 +:100D4000817008955098589A85E08A95F1F70000CF +:100D500089B181700895CF93DF93EC010E949806CA +:100D6000882341F0209731F085E08A95F1F7000063 +:100D70002197F4CFCE01DF91CF910895CF93DF93E8 +:100D8000C2E3D0E00E949806811108C0209731F09C +:100D900085E08A95F1F700002197F4CFCE01DF912D +:100DA000CF9108952091030130E0B9016F5F7F4F2B +:100DB00090910501492F50E046235723609104018B +:100DC00070E04617570791F04091010150910201E0 +:100DD000FA01E20FF31F8083809103018F5F9091EE +:100DE000050189238093030181E0089580E008953F +:100DF0000E948C060E9495060E948F060E9495060E +:100E0000E9E6F0E0808188608083E99A0895CF93D5 +:100E1000DF939AE19150209103018091040199237D +:100E200049F0281307C0EFE9FFE03197F1F700C060 +:100E30000000F0CF281701F1E0910101F0910201CB +:100E4000E80FF11D20818F5F909105018923809328 +:100E50000401C22FD0E08091850380FF0FC01F9254 +:100E60002F938BE094E09F938F930E9438060F900E +:100E70000F900F900F9002C0CFEFDFEFCE01DF9108 +:100E8000CF910895EF92FF920F931F93CF93DF932B +:100E900010923A0190913B01913009F4BCC0C82FE7 +:100EA0008091850380FF0CC01F92CF9382E194E074 +:100EB0009F938F930E9438060F900F900F900F9082 +:100EC000E9980E948C060E9495068FE891E00197B0 +:100ED000F1F700C000000E9492060E948F0680E198 +:100EE00097E20E94AB06892B11F481E07AC000E002 +:100EF00010E0FF24F394D0E0EE24E39490E59A957B +:100F0000F1F7CE01002E02C0959587950A94E2F77D +:100F100080FF04C0FE240E94950602C00E94920633 +:100F20000E94BE06892B11F482E05BC082E390E050 +:100F30000E94AB06892B11F483E053C00F5F1F4F53 +:100F400008301105D9F680E58A95F1F7FF2019F0F0 +:100F50000E94950602C00E9492060E94BE06892B3E +:100F600011F484E03EC082E390E00E94AB06892B3E +:100F700011F485E036C090E59A95F1F70E94950648 +:100F8000C2E3D0E00E94A206882341F0209741F0FE +:100F900085E08A95F1F700002197F4CFCD2B11F46D +:100FA00086E01FC082E390E00E94AB06892B11F41B +:100FB00087E017C00E94BE06892B19F0C2E3D0E07B +:100FC00009C088E00EC0209759F095E09A95F1F796 +:100FD000000021970E94A2068823A9F3CD2B71F46B +:100FE00089E080933A0180913A01806180933A01CF +:100FF0000E948F060E949506E99A0DC00E948F06F6 +:101000000E949506E99ADF91CF911F910F91FF9071 +:10101000EF900C9407078FEF9FEFDF91CF911F9117 +:101020000F91FF90EF900895CF93DF93809104018B +:1010300090910301981701F1E0910101F0910201F3 +:10104000E80FF11D20818F5F909105018923809326 +:101050000401C22FD0E08091850380FF0FC01F9252 +:101060002F9384E094E09F938F930E9438060F9013 +:101070000F900F900F9002C0CFEFDFEFCE01DF9106 +:10108000CF9108951F920F920FB60F9211242F93B4 +:101090003F934F935F936F937F938F939F93AF9300 +:1010A000BF93EF93FF930E94980681118EC08091A9 +:1010B000380190913901009781F00E94B7210B9778 +:1010C00060F080913701806280933A01109237017D +:1010D0001092360181E0809300010E949F2190933D +:1010E00039018093380180913701893018F48130BB +:1010F00030F012C0893061F18A30B1F146C0809180 +:101100003B01813029F40E94A206811105C05DC017 +:101110000E94A206811139C0809136018695809384 +:1011200036010E94A206882351F080913601806822 +:1011300080933601809100018F5F80930001809140 +:1011400037018830E9F580913B018130C9F510C045 +:101150000E94A20690910001882319F090FF15C00B +:101160002FC090FD12C02CC00E94A206882369F0F7 +:10117000809136010E94D206811104C080E48093E0 +:101180003A0103C010923A010FC090913A01809148 +:101190003701892B80933A0180913A0180933A017B +:1011A000109203011092040110923901109238013B +:1011B000109237011092360181E08093000105C042 +:1011C000809137018F5F80933701FF91EF91BF913D +:1011D000AF919F918F917F916F915F914F913F91CF +:1011E0002F910F900FBE0F901F901895CF93C82F7F +:1011F0008DEE0E9442078C2FCF910C944207E82F6E +:10120000E695E695E695EF70F0E0EB5AFE4F4081EB +:10121000282F277081E090E002C0880F991F2A953F +:10122000E2F7242F30E028233923232B11F4842BD9 +:1012300080830895E82FE695E695E695EF70F0E057 +:10124000EB5AFE4F2081382F377081E090E002C0CA +:10125000880F991F3A95E2F7422F50E0482359230F +:10126000452B19F08095822380830895482F50E004 +:10127000FA013397E138F10508F048C0EA5AFF4F08 +:101280000C94DD2387E108958FE108958CE508959E +:1012900080E6089582E6089587E2089583E508953B +:1012A0008FE2089589E3089587E308958FE3089511 +:1012B00087E408958FE4089586E508958EE50895FE +:1012C0008FE6089580E0089585E608958EE60895F6 +:1012D0008FE7089580E3089588E3089580E40895F2 +:1012E00088E4089580E5089587E508958FE50895D9 +:1012F00088E1089588E0089580E2089580E10895E6 +:1013000089E108958DE6089588E208958F7708951C +:101310008FE00895CF93482F50E0FA017C97E8348E +:10132000F105A0F5E952FF4F0C94DD2385E53AC0A5 +:101330008AE538C08BE536C08CE534C08DE532C017 +:101340008EE530C08FE52EC080E62CC081E62AC035 +:1013500082E628C083E626C08FE624C081E722C04B +:1013600082E720C084E71EC085E71CC087E71AC05B +:1013700088E718C08AE716C08CE714C08FE712C050 +:1013800080E710C089E70EC08BE70CC0C82F8BE840 +:1013900094E09F938F930E9438060F900F908C2FAC +:1013A00001C084E5CF9108950F931F93CF93DF93EE +:1013B0000E949F218C010E941408EC01019631F4D7 +:1013C000C8010E94B721883E9340A8F3CE01DF9167 +:1013D000CF911F910F910895809185038160809333 +:1013E00085030E94F8062E98269A2F98279A2FEFA9 +:1013F00089E698E1215080409040E1F700C000006C +:1014000026982798E5E5F1E0119221E0E536F2070C +:10141000D9F70895E82FF0E0EB5AFE4F8081089548 +:10142000E5E5F1E0119281E0E536F807D9F7089596 +:10143000982F80915201823049F492FB882780F9DD +:1014400090FD826091FD84600C94F6080895CF931E +:10145000DF9380913A01882311F180913A011F9224 +:101460008F9384EF94E09F938F930E94380680912E +:101470003A0180750F900F900F900F9071F480914A +:101480005101843051F48EEE94E09F938F930E942B +:101490003806109251010F900F9010923A018091EE +:1014A0005101823089F128F4882351F08130F1F024 +:1014B00063C2833009F4CBC0843009F4CFC05CC26E +:1014C00010923B011092520110925401109253015C +:1014D0000E949F219093500180934F0181E080935F +:1014E00051010E94100A0E941D1746C20E94140852 +:1014F00080914F01909150010E94B721893E934005 +:1015000008F43AC282E0A0C085EF0E94420782EF51 +:101510000E9442078F3F4FEF9407A1F08A3F910549 +:1015200099F40E94D4098F3F2FEF920781F0D82FB2 +:10153000CC270E94D409C82B84EF0E9442079C2F1D +:101540008D2F07C09FEF01C09EEF8FEF02C090E08C +:1015500080E0909353018093540180913A01882355 +:1015600081F080913A011F928F9383EE94E09F93D4 +:101570008F930E94380610923A010F900F900F90AF +:101580000F90809154018F93809153018F9389ED37 +:1015900094E09F938F930E9438068091530190911D +:1015A00054019C0122270F900F900F900F9021154E +:1015B0004BEA340711F482E00CC021153F4B11F4C3 +:1015C00083E007C00097B9F38F3F2FEF920721F414 +:1015D00081E0809352010DC08F3F910561F783EC4C +:1015E00094E09F938F930E943806109252010F90BF +:1015F0000F90C0915201C13049F48AEB94E09F935F +:101600008F930E943806C0933B011BC0C23019F46F +:1016100081EB94E010C0C33061F482EA94E09F93C0 +:101620008F930E94380610923B0188EF0E94420778 +:1016300008C084E994E09F938F930E94380610922B +:101640003B010F900F9083E08093510195C10E9460 +:1016500095140E94180A84E080935101C0915201B0 +:10166000C23009F465C0C33009F417C1C13009F0B4 +:1016700083C10E9414088F3F4FEF940709F47CC187 +:1016800020914E012230C9F128F4222349F0213063 +:10169000C1F04BC02330E9F1243009F43FC045C00C +:1016A000803E910529F0813E910529F482E02EC00B +:1016B000C0934E0161C18038910508F41BC18F773A +:1016C00031C08633910589F124F48A32910539F4C9 +:1016D0002CC08A3A910549F1863B910531F1803859 +:1016E000910528F40E948A090E94FF081EC08F7786 +:1016F0000E948A090E941A0918C08D31910529F0AB +:101700008D39910591F484E001C083E080934E010E +:1017100033C18534910549F485E5ECC085349105E4 +:1017200021F485E50E941A0927C110924E0124C1B7 +:101730000E9414088F3F2FEF920709F41DC1E0911A +:101740004D014E2F50E04930510508F0A3C0FA0179 +:10175000E15EFE4F0C94DD238A3A910509F40CC139 +:10176000ACF48338910539F18438910531F1009753 +:1017700041F50E94100A8CE794E09F938F930E949A +:10178000380610924D010F900F90F6C0813E9105E2 +:1017900081F02CF4803E9105A1F482E072C0803F7C +:1017A000910529F08C3F910509F4E6C00AC081E05B +:1017B00068C084E066C082E001C08FE60E94FF0836 +:1017C00069C080389105D0F30E94100A80E794E048 +:1017D0009F938F930E9438060F900F905BC08935BE +:1017E000910509F457C0803F910521F082319105A0 +:1017F00019F450C083E045C08038910518F40E9468 +:101800003609DCCF0E94100A86E694E0E1CF8338E7 +:10181000910529F08438910521F48FE639C082E0E2 +:1018200037C080389105A0F10E94100A8CE594E041 +:10183000CFCF8231910571F18935910559F1803809 +:10184000910518F40E94360923C00E94100A8FE403 +:1018500094E0BECF8431910529F0803F9105D1F409 +:1018600086E00FC085E00DC08737910599F480E0D0 +:10187000A5CF449779F487E004C0803F910551F4E7 +:1018800088E080934D0178C08737910519F480E096 +:101890000E941A0910924D016FC00E9414088F3FD8 +:1018A0004FEF940709F468C020914C01222319F0EE +:1018B0002130B1F161C084389105D9F03CF4009732 +:1018C00059F083389105C9F482E014C0803F910536 +:1018D00061F08F3F910589F49F938F9383E494E0A7 +:1018E0009F938F930E94380632C081E080934C0111 +:1018F00043C08FE70E94FF083FC08038910518F46D +:101900000E94FF082EC09F938F9387E394E09F93DC +:101910008F930E9438060F900F900F900F9021C068 +:1019200083389105C9F01CF4009739F01DC0843844 +:101930009105A1F08F3F9105B9F49F938F9388E2B1 +:1019400094E09F938F930E94380610924C010F9061 +:101950000F900F900F9010C082E001C08FE70E949F +:101960001A0910924C0108C080389105C0F39F936A +:101970008F9389E194E0CBCF81E0DF91CF910895FF +:101980008091890208950895CF93DF9300D01F922C +:10199000CDB7DEB720918F03243021F523E02983D2 +:1019A0009B838A8382E08093E9008FEF9091E80027 +:1019B000815095FD06C095ED9A95F1F700008111D3 +:1019C000F5CF8091E80085FF0DC040E050E063E076 +:1019D00070E0CE0101960E9444108091E8008E775D +:1019E0008093E8000F900F900F90DF91CF910895B2 +:1019F000CF93DF9300D01F92CDB7DEB720918F0336 +:101A0000243029F522E02983805891099B838A8319 +:101A10002093E9008FEF9091E800815095FD06C07A +:101A200095ED9A95F1F700008111F5CF8091E800CE +:101A300085FF0DC040E050E063E070E0CE0101960C +:101A40000E9444108091E8008E778093E8000F9008 +:101A50000F900F90DF91CF910895CF93DF93EC011A +:101A600090918F03943009F048C08091150188232C +:101A7000D9F0809116018823B9F09093E90081E8AC +:101A8000815049F09091E80095FD05C09AE29A9541 +:101A9000F1F700C0F5CF8091E80085FF2EC040E04F +:101AA00050E060E270E019C081E08093E90081E8D5 +:101AB000815059F09091E80095FD07C0EFE3F1E007 +:101AC0003197F1F700C00000F3CF8091E80085FF67 +:101AD00014C040E050E068E070E0CE010E94441085 +:101AE0008091E8008E778093E80080E2FE01A9E60D +:101AF000B2E001900D928A95E1F7DF91CF910895C0 +:101B0000CF93C0916701C1110BC00E94AB21643C0F +:101B100079408105910520F081E080936701C1E063 +:101B20008C2FCF910895CF93C82F0E94800D8823CA +:101B300009F448C00FB607FE45C080918F0384307A +:101B400009F040C08091E9008F702091EC00922F45 +:101B5000917020FD90E8892B93E09093E90090919B +:101B6000EB0090FF2CC09091EE0097FF28C0909161 +:101B7000090120910801291709F447C02091E800C4 +:101B800025FF1DC0E0910601F0910701E90FF11D4D +:101B900030819F5F20910A01922390930901309335 +:101BA000F1009091E80095FDE2CF9091E80090FF60 +:101BB000DECF9091E8009E779093E800D8CF8F70A9 +:101BC0008093E9008091080190E0AC014F5F5F4F86 +:101BD00030910A01232F30E024233523409109015D +:101BE00050E024173507D1F020910601309107010C +:101BF000F901E80FF91FC083809108018F5F909170 +:101C00000A0189238093080109C09091E80095FF9B +:101C1000D6CFC093F1008F708093E90080E0CF9120 +:101C2000089580918E03811109C00E94D7110E94EE +:101C300034128091E20084608093E2000895109253 +:101C40008E0308950895089542E061EC81E00E94BA +:101C5000501142E061EC82E00E94501142E261ECDE +:101C600083E00E94501142E261EC84E00C94501138 +:101C700080919103833009F455C030F4813071F0C4 +:101C8000823009F48EC008958A3009F47AC08B300E +:101C900009F460C0893009F09CC020C08091900395 +:101CA000813A09F096C08091E800877F8093E80030 +:101CB0008091940390919503892B21F460E289E649 +:101CC00092E003C060E080E090E070E00E9491103C +:101CD0008091E8008B778093E800089580919003CD +:101CE000813209F076C0809194039091950300971A +:101CF00019F0039709F06DC08091E800877F809309 +:101D0000E8008091E80082FD05C080918F03811179 +:101D1000F8CF5FC08091F100809389028091E80044 +:101D20008B7753C080919003813A09F052C0809123 +:101D3000940390919503892B09F04BC08091E800A2 +:101D4000877F8093E8008091E80080FFFCCF80913E +:101D5000150136C0809190038132D9F580919403AA +:101D600090919503892BA9F58091E800877F809356 +:101D7000E8000E94851180919203809315010C94D4 +:101D80001D1780919003813221F58091E800877FB3 +:101D90008093E8000E9485118091930380938A02CA +:101DA000089580919003813AA1F48091E800877FA3 +:101DB0008093E8008091E80080FFFCCF80918A0248 +:101DC0008093F1008091E8008E778093E8000C9476 +:101DD000851108958091890280936801109289028B +:101DE0000E94100A0C941D170C94EA0E0E944C21BC +:101DF00080918D03882329F00E94592181110C9430 +:101E00002E1008950E946D218091680180938902AF +:101E100008950C94020F08950C940B0F0C940B0F63 +:101E2000CF9384B7877F84BF0FB6F894A89580912D +:101E30006000886180936000109260000FBE90E0A7 +:101E400080E80FB6F89480936100909361000FBE14 +:101E500083E99DE00E941F218BE091E00E94901495 +:101E600083E295E00E949F050E940E0F0E94441598 +:101E70000E94D7110E9434128091E2008460809306 +:101E8000E20078940E94461580918F03843029F0F7 +:101E90000E9475140E940B0FF7CF81E195E00E941C +:101EA0009F050E940C0F8FEF94E00E949F05C3E0F6 +:101EB00080918F03853019F40E94F60EF9CF0E94AD +:101EC0004A152091E4003091E500809165019091E0 +:101ED00066012817390709F468C08091E4009091E1 +:101EE000E50090936601809365010E94800D882330 +:101EF00009F45BC080918F03843009F056C0809153 +:101F0000E9008F702091EC00922F917020FD90E8F5 +:101F1000892BC093E9009091EB0090FF43C0909112 +:101F2000EE0097FF3FC09091090120910801291709 +:101F300009F12091E80025FF1DC0E0910601F09114 +:101F40000701E90FF11D30819F5F20910A01922363 +:101F5000909309013093F1009091E80095FDE3CF53 +:101F60009091E80090FFDFCF9091E8009E779093EA +:101F7000E800D9CF9091F3002091F20030E0392BA6 +:101F8000232B81F09091E80090FF0CC09091E80025 +:101F900095FF03C01092F100F9CF9091E8009E7771 +:101FA0009093E8008F708093E9000E94751480CFB1 +:101FB000292F332723303105C9F060F42130310552 +:101FC00081F02230310509F041C084E790E023E838 +:101FD00035E040C021323105E1F02232310531F1E6 +:101FE00035C082E190E027EF35E034C09927813099 +:101FF000910549F028F0029749F5E9E3F5E005C0BD +:10200000EFE7F5E002C0EFE6F5E0849190E09F0194 +:1020100021C06430D8F4E62FF0E0EE0FFF1FEB5D37 +:10202000FE4F2081318189E090E014C0643070F46B +:1020300070E0FB01EE0FFF1FE35EFE4F2081318158 +:10204000FB01E75EFE4F808190E004C080E090E0FD +:1020500020E030E0FA0131832083089580E189BDDA +:1020600082E189BD09B400FEFDCF8091D8008F7D4B +:102070008093D8008091E00082608093E00080919E +:10208000E00081FDFCCF0895CF92DF92EF92FF92A6 +:102090000F931F93CF93DF93EC018B017A010E9482 +:1020A000A411811135C0E114F10439F0F7018081E8 +:1020B0009181081B190BC80FD91FC12CD12C0115F8 +:1020C000110529F18091E80085FD18C08091E80094 +:1020D0008E778093E8000E947514E114F10449F0B2 +:1020E000F70180819181C80ED91ED182C08285E01E +:1020F0000FC00E94A411882311F30AC08991809314 +:10210000F10001501109FFEFCF1ADF0AD8CF80E0AC +:10211000DF91CF911F910F91FF90EF90DF90CF90C3 +:10212000089520919603309197032617370748F0BA +:102130006115710539F42091E8002E772093E800AD +:1021400001C0B901FC0120E06115710579F18091B0 +:102150008F038823F1F18530F1F18091E80083FD50 +:102160003CC08091E80082FD2EC08091E80080FF95 +:10217000EBCF2091F3008091F20090E0922B61155B +:10218000710551F08830910538F421912093F100C8 +:10219000615071090196F3CF21E0089709F020E022 +:1021A0008091E8008E778093E800CECF2111CFCFC9 +:1021B0000AC080918F03882361F0853061F080919F +:1021C000E80083FD0AC08091E80082FFF2CF80E042 +:1021D000089582E0089583E0089581E008952091B4 +:1021E0009603309197032617370748F0611571055C +:1021F00039F42091E8002E772093E80001C0B9015E +:10220000FC0120E06115710591F180918F03882315 +:1022100009F440C0853009F43FC08091E80083FD97 +:102220003DC08091E80082FD2FC08091E80080FFD2 +:10223000E9CF2091F3008091F20090E0922B61159C +:10224000710559F08830910540F424912093F100F4 +:102250003196615071090196F2CF21E0089709F09B +:1022600020E08091E8008E778093E800CBCF2111A9 +:10227000CCCF0AC080918F03882361F0853061F054 +:102280008091E80083FD0AC08091E80082FFF2CFD0 +:1022900080E0089582E0089583E0089581E0089544 +:1022A000982F973068F59093E900981739F070915E +:1022B000EC002091ED005091F00003C0242F762F08 +:1022C00050E021FD02C09F5FECCF3091EB003E7FDC +:1022D0003093EB003091ED003D7F3093ED00309175 +:1022E000EB0031603093EB007093EC002093ED0035 +:1022F0005093F0002091EE0027FDE5CF80E0089597 +:102300008F708093E90081E008958091900387FFAA +:1023100011C08091E80082FD05C080918F0381117A +:10232000F8CF11C08091E8008B770BC080918F03AC +:10233000882349F08091E80080FFF8CF8091E80081 +:102340008E778093E80008952091E4003091E500B5 +:1023500095E64091EC00842F817040FF23C080916E +:10236000E80080FD1DC080918F03882399F085309F +:1023700099F08091EB0085FD11C04091E4005091EF +:10238000E5002417350729F3915011F09A01E1CFA8 +:1023900084E0089582E0089583E0089581E008953F +:1023A00080E008954091E80042FFDDCF08950E944B +:1023B00045120E944D12E0EEF0E080818160808342 +:1023C000E8EDF0E080818F77808319BCA7EDB0E065 +:1023D0008C918E7F8C9380818F7E808310928E0370 +:1023E00008950F931F93CF93DF930E9445120E948D +:1023F0004D12C8EDD0E088818F778883888180680E +:10240000888388818F7D888319BC10928F031092F6 +:102410008B0310928D0310928C0300EE10E0F801F4 +:1024200080818B7F808388818160888342E060E047 +:1024300080E00E945011E1EEF0E080818E7F808389 +:10244000E2EEF0E08081816080838081886080831B +:10245000F80180818E7F8083888180618883DF910D +:10246000CF911F910F910895E8EDF0E080818F7E6C +:102470008083E7EDF0E080818160808384E082BF2B +:1024800081E080938E030C94F111E8EDF0E08081FF +:102490008E7F80831092E20008951092DA001092ED +:1024A000E10008951F920F920FB60F9211242F93FF +:1024B0003F934F935F936F937F938F939F93AF93CC +:1024C000BF93EF93FF938091E10082FF0BC0809157 +:1024D000E20082FF07C08091E1008B7F8093E100E2 +:1024E0000E94230E8091DA0080FF1FC08091D800E7 +:1024F00080FF1BC08091DA008E7F8093DA0080918C +:10250000D90080FF0DC080E189BD82E189BD09B499 +:1025100000FEFDCF81E080938F030E94110E05C065 +:1025200019BC10928F030E941F0E8091E10080FF62 +:1025300019C08091E20080FF15C08091E2008E7F7B +:102540008093E2008091E20080618093E2008091BC +:10255000D80080628093D80019BC85E080938F03F7 +:102560000E94F40E8091E10084FF30C08091E2006F +:1025700084FF2CC080E189BD82E189BD09B400FEE1 +:10258000FDCF8091D8008F7D8093D8008091E100AD +:102590008F7E8093E1008091E2008F7E8093E20045 +:1025A0008091E20081608093E20080918B03882318 +:1025B00011F084E007C08091E30087FD02C081E054 +:1025C00001C083E080938F030E94090F8091E10096 +:1025D00083FF24C08091E20083FF20C08091E1004E +:1025E000877F8093E10082E080938F0310928B03BA +:1025F0008091E1008E7F8093E1008091E2008E7FE8 +:102600008093E2008091E20080618093E20042E0EA +:1026100060E080E00E9450110E94220EFF91EF9135 +:10262000BF91AF919F918F917F916F915F914F91EA +:102630003F912F910F900FBE0F901F9018951F93F1 +:10264000CF93DF93CDB7DEB7AA970FB6F894DEBF6E +:102650000FBECDBFE0E9F3E08091F100819323E06C +:10266000E839F207C9F70E94380E8091E80083FF2D +:1026700024C18091900390919103492F50E04A30FA +:10268000510508F01AC1FA01E85DFE4F0C94DD23F4 +:10269000803881F0823809F010C1809194038F70E6 +:1026A0008093E9008091EB0085FB882780F91092E8 +:1026B000E90006C080918C0390918D039111826096 +:1026C0009091E800977F9093E8008093F10010923A +:1026D000F100C8C0282F2D7F09F0EFC0882319F022 +:1026E000823061F0EAC080919203813009F0E5C048 +:1026F000933009F080E080938D032BC0809192038A +:10270000811127C0809194038F7009F4D6C0809303 +:10271000E9002091EB0020FF1CC0933021F4809150 +:10272000EB00806214C09091EB0090619093EB00FD +:1027300021E030E0A90102C0440F551F8A95E2F75D +:102740004093EA001092EA008091EB008860809349 +:10275000EB001092E9008091E800877F86C081112C +:10276000ACC0109192031F778091E3008078812B99 +:102770008093E3008091E800877F8093E8000E94C7 +:1027800085118091E80080FFFCCF8091E300806894 +:102790008093E300111102C082E001C083E08093C6 +:1027A0008F038BC08058823008F087C080919203DD +:1027B000909193038C3D53E0950779F583E08A83EC +:1027C0008AE289834FB7F894DE01139620E03EE059 +:1027D00051E2E32FF0E050935700E49120FF03C053 +:1027E000E295EF703F5FEF708E2F90E0EA3010F0CF +:1027F000C79601C0C0968D939D932F5F243149F7F2 +:102800004FBF8091E800877F8093E8006AE270E024 +:10281000CE0101960E94911014C0AE014F5F5F4F30 +:10282000609194030E94D80FBC01892B09F445C024 +:102830009091E800977F9093E80089819A810E94A7 +:10284000EF108091E8008B778093E80036C08038E5 +:10285000A1F58091E800877F8093E80080918B0349 +:102860008093F1008091E8008E778093E8000E94C9 +:10287000851123C0811121C080919203909193030F +:1028800099270297D4F48091E800877F8093E8002D +:102890008091920380938B030E94851180918B031A +:1028A000811106C08091E30087FD02C081E001C074 +:1028B00084E080938F030E94240E8091E80083FFC0 +:1028C0000AC08091E800877F8093E8008091EB0048 +:1028D00080628093EB00AA960FB6F894DEBF0FBE1D +:1028E000CDBFDF91CF911F910895CF9380918F033A +:1028F0008823A1F0C091E900CF709091EC00892F5E +:10290000817090FD80E8C82B1092E9008091E8006A +:1029100083FD0E941F13CF70C093E900CF910895EB +:102920009093900280938F020895E0918F02F0912E +:102930009002309721F00190F081E02D099480E021 +:102940000895EF92FF920F931F93CF93DF93E0913F +:102950008F02F09190023097B1F18C010280F381E7 +:10296000E02D09958091850382FF2DC080FF04C072 +:1029700080E097E00E949F05E80110E28AEFE82ED0 +:1029800086E0F82E8091850380FF0BC088811F921E +:102990008F93FF92EF920E9438060F900F900F9046 +:1029A0000F90115021961111EDCF8091850380FF7A +:1029B0000AC088EF96E0DF91CF911F910F91FF90B1 +:1029C000EF900C949F05DF91CF911F910F91FF9095 +:1029D000EF900895CF93DF9320918D0230918E0276 +:1029E0002817390709F190938E0280938D02E091A8 +:1029F0008F02F09190023097B9F0EC010680F781D8 +:102A0000E02D09958091850382FF0EC080FF0CC0E8 +:102A1000DF93CF938AEE96E09F938F930E943806C0 +:102A20000F900F900F900F90DF91CF910895CF935B +:102A3000DF9320918B0230918C022817390709F11E +:102A400090938C0280938B02E0918F02F091900220 +:102A50003097B9F0EC010084F185E02D0995809163 +:102A6000850382FF0EC080FF0CC0DF93CF938AEDF9 +:102A700096E09F938F930E9438060F900F900F90CF +:102A80000F90DF91CF9108950C94ED150E9496213F +:102A90000C94EC09BF92CF92DF92EF92FF920F93CA +:102AA0001F93CF93DF9300D000D01F92CDB7DEB736 +:102AB0000E94270A02E912E0F12C8F2D0E940A0AD7 +:102AC000B82EF801C080C82639F4F3940F5F1F4F69 +:102AD000F0E1FF12F2CF30C08091850381FD0E94AA +:102AE000EE15D12CEE24E3948C2D8E21F9F0D982B1 +:102AF000FA8291E08B2D8E2109F490E09B830E9455 +:102B00009F218160782F9D838C8349815A816B81BD +:102B10008D810E94241649815A816B817C818D812F +:102B20000E943721F80180818E258083D394EE0C9A +:102B3000F8E0DF12D9CFC9CF8FEF89838A831B8258 +:102B40000E949F218160782F9D838C8349815A81C7 +:102B50006B818D810E9424160E9436210E9495145B +:102B600090919102891741F10E94951480939102EE +:102B70009091850392FF0EC090FF0CC01F928F931F +:102B80008BE097E09F938F930E9438060F900F90F1 +:102B90000F900F90809191020F900F900F900F90D7 +:102BA0000F90DF91CF911F910F91FF90EF90DF90E9 +:102BB000CF90BF900C9448210F900F900F900F90E2 +:102BC0000F90DF91CF911F910F91FF90EF90DF90C9 +:102BD000CF90BF9008950C94180A0895EF92FF9239 +:102BE0000F931F93CF93DF9384E297E00E949F059A +:102BF000C0E0D0E08DE2E82E81E0F82E06E117E09B +:102C00008C2F0E940A0A0E942421FF92EF921F92A9 +:102C10008F93DF93CF931F930F930E9438062196D3 +:102C20008DB79EB708960FB6F8949EBF0FBE8DBFA6 +:102C3000C031D10529F7DF91CF911F910F91FF90FE +:102C4000EF90089508950895CF93DF93CDB7DEB741 +:102C50002B970FB6F894DEBF0FBECDBF942F4F83D6 +:102C6000252F588769877A878B874A855B85452B0F +:102C700031F02F3F31F481E09F3F19F403C081E030 +:102C800001C080E080FD07C04F81588569857A8545 +:102C90008B850E943721DE01119686E0FD0111929D +:102CA0008A95E9F785E0FE01379601900D928A95A5 +:102CB000E1F749815A816B817C818D819E810E94DF +:102CC000321D2B960FB6F894DEBF0FBECDBFDF913D +:102CD000CF910895CF93882309F465C0C82F8CEF56 +:102CE0008C0F813A20F080E58C0F8E3248F48C2FC7 +:102CF0000E948A23811157C08C2F0E941A200CC079 +:102D000080E28C0F883058F4C77081E001C0880FD2 +:102D1000CA95EAF70E94BF20CF910C94F9208BE569 +:102D20008C0F833078F4C53A29F0C63A31F083E845 +:102D300090E005C081E890E002C082E890E0CF9189 +:102D40000C94EA1488E58C0F853168F5C83A89F04F +:102D5000C93A91F0CA3A99F0CB3AA1F0CC3AA9F02D +:102D6000CD3AB1F0CE3AB9F0CF3AC1F080E090E080 +:102D700017C082EE90E014C089EE90E011C08AEE98 +:102D800090E00EC085EB90E00BC086EB90E008C0B1 +:102D900083EB90E005C084EB90E002C087EB90E00D +:102DA000CF910C941715CF910895882349F19CEF8A +:102DB000980F913A20F090E5980F9E3218F40E94F7 +:102DC0006A200DC090E2980F983058F4877091E017 +:102DD00001C0990F8A95EAF7892F0E94C5200C94AB +:102DE000F9209BE5980F933020F480E090E00C945C +:102DF000EA14885A853120F480E090E00C9417158D +:102E00000895882321F00E94BF200C94F920089592 +:102E1000882321F00E94C5200C94F92008950E9477 +:102E2000DF200E94AE200E94F92080E090E00E9406 +:102E3000EA1480E090E00C9417150E94CF200C94C7 +:102E40000F17CF92DF92EF92FF920F931F93CF93C2 +:102E5000DF9300D000D01F92CDB7DEB76C010E9487 +:102E60004A218111EAC285E0F601DE011196019046 +:102E70000D928A95E1F7F6014081518123813481D9 +:102E80002115310531F05F3F31F481E04F3F19F4F6 +:102E900003C081E001C080E080FDCFC2F601F28076 +:102EA000E580E2948FE0E82249835A83FB82722F07 +:102EB0003D832C836F2D8D810E94961F8C010E9473 +:102EC000951F0E94851EE12FE295EF708E2F90E0F6 +:102ED000FC01EE5CFE4F0C94DD23812F807F1F7080 +:102EE000882311F01295107FFF2049F0112309F477 +:102EF0003BC2812F0E94D2200E94F92035C2802F30 +:102F00000E94D516112309F498C2812F0E94D8205F +:102F10000F900F900F900F900F90DF91CF911F9116 +:102F20000F91FF90EF90DF90CF900C94F920812FBC +:102F3000807F1F70803211F01295107F002319F0EE +:102F4000013009F12BC0FF20A9F0EE2059F1F1E08A +:102F5000812FEF1228C00F900F900F900F900F90BD +:102F6000DF91CF911F910F91FF90EF90DF90CF9065 +:102F70000C94E220EE2021F021E0E21609F45DC27B +:102F80000E94E5202DC0FF20E9F085E08E1508F4B1 +:102F900054C20E94BC20812329F022C0FF20F1F0FE +:102FA000E11015C0812F0F900F900F900F900F9090 +:102FB000DF91CF911F910F91FF90EF90DF90CF9015 +:102FC0000C94011794E09E1508F437C209C0F6016D +:102FD000858180FFC9C18F708583E4CFE110D7C19F +:102FE000812F4AC1812F86958695837019F0813093 +:102FF000B9F023C2FF2019F0C801937002C080E02D +:1030000090E00F900F900F900F900F90DF91CF9165 +:103010001F910F91FF90EF90DF90CF900C94EA14E6 +:10302000FF2019F0C801937002C080E090E00F907B +:103030000F900F900F900F90DF91CF911F910F91F4 +:10304000FF90EF90DF90CF900C941715812F837035 +:1030500009F070C0F110F1C1202F2295269527703C +:10306000220F220F602F6F70862F90E0A0E0B0E05B +:103070006C017D01022E04C0CC0CDD1CEE1CFF1C7B +:103080000A94D2F704FF12C08FE090E0A0E0B0E015 +:1030900004C0880F991FAA1FBB1F2A95D2F7BC0135 +:1030A000CD01609570958095909503C060E070E0CB +:1030B000CB011695169513701230B1F040F56C29BE +:1030C0007D298E299F29113031F10F900F900F909B +:1030D0000F900F90DF91CF911F910F91FF90EF9084 +:1030E000DF90CF900C94AA1E6C297D298E299F29F0 +:1030F0000F900F900F900F900F90DF91CF911F9135 +:103100000F91FF90EF90DF90CF900C94C41E0E941F +:10311000AA1EC701B6010F900F900F900F900F904D +:10312000DF91CF911F910F91FF90EF90DF90CF90A3 +:103130000C94901EFF2019F0812F817001C086959C +:10314000882309F47AC1202F229526952770220F13 +:10315000220F602F6F70862F90E0A0E0B0E06C012E +:103160007D01022E04C0CC0CDD1CEE1CFF1C0A9459 +:10317000D2F704FF12C08FE090E0A0E0B0E004C0FE +:10318000880F991FAA1FBB1F2A95D2F7BC01CD013A +:10319000609570958095909503C060E070E0CB01DC +:1031A0001695169513701230B1F040F56C297D29F3 +:1031B0008E299F29113031F10F900F900F900F90B1 +:1031C0000F90DF91CF911F910F91FF90EF90DF90C3 +:1031D000CF900C94711F6C297D298E299F290F9007 +:1031E0000F900F900F900F90DF91CF911F910F9143 +:1031F000FF90EF90DF90CF900C94831F0E94711F7F +:10320000C701B6010F900F900F900F900F90DF91B4 +:10321000CF911F910F91FF90EF90DF90CF900C9482 +:103220005F1F003FC1F128F480E4800F803250F02E +:1032300096C0023F09F45EC008F449C0033F09F498 +:103240006CC08DC0F02FF071EF2E812F8F71FF2099 +:1032500051F00E94F81E802FEE2019F08295807F99 +:10326000A2CE8F70A0CE0E94191F802FEE2019F0E1 +:103270008295807F01C08F700F900F900F900F90FC +:103280000F90DF91CF911F910F91FF90EF90DF9002 +:10329000CF900C940817FF20A9F024E02E1508F415 +:1032A000CCC0812F8F710F900F900F900F900F90C7 +:1032B000DF91CF911F910F91FF90EF90DF90CF9012 +:1032C0000C943E1F85E08E1508F4B7C0EACFFF20AE +:1032D00099F0812F8F710F900F900F900F900F909A +:1032E000DF91CF911F910F91FF90EF90DF90CF90E2 +:1032F0000C94F81EFF2069F3812F8F710F900F90AF +:103300000F900F900F90DF91CF911F910F91FF9031 +:10331000EF90DF90CF900C94191FFF2089F0812F40 +:103320008F710F900F900F900F900F90DF91CF91B2 +:103330001F910F91FF90EF90DF90CF900C94E31EC0 +:103340000F900F900F900F900F90DF91CF911F91E2 +:103350000F91FF90EF90DF90CF900C94DE1EFF2036 +:1033600099F0EE2009F4B5CF802F0F900F900F90B9 +:103370000F900F90DF91CF911F910F91FF90EF90E1 +:10338000DF90CF900C946A16EE2009F4B5CF802F11 +:103390000F900F900F900F900F90DF91CF911F9192 +:1033A0000F91FF90EF90DF90CF900C94D516412FA6 +:1033B0004F70602FC6010E9425220F900F900F9032 +:1033C0000F900F90DF91CF911F910F91FF90EF9091 +:1033D000DF90CF900C94E01D01112FC0FF2069F108 +:1033E0000E941D179FEFE0E7F2E09150E040F040AF +:1033F000E1F700C000000F900F900F900F900F901A +:10340000DF91CF911F910F91FF90EF90DF90CF90C0 +:103410000C940622412F4F70602FC6010F900F9021 +:103420000F900F900F90DF91CF911F910F91FF9010 +:10343000EF90DF90CF900C9428220F900F900F9078 +:103440000F900F90DF91CF911F910F91FF90EF9010 +:10345000DF90CF9008951F93CF93DF9300D000D0DB +:103460001F92CDB7DEB7942F4983252F5A836B83E4 +:103470007C838D834C815D81452B31F02F3F31F46E +:1034800081E09F3F19F403C081E001C080E0182F64 +:10349000117080FD31C049815A816B817C818D81A1 +:1034A0000E94961F292F22952F702C3030F42A303D +:1034B000A0F42250223030F022C02C30C9F02F303E +:1034C000B9F01DC0853A28F48430C0F4823028F465 +:1034D00015C090E2980F983088F0883E30F4803E16 +:1034E00068F48450813A58F409C0803F41F406C022 +:1034F00093FB112710F903C010E001C011E0812FE8 +:103500000F900F900F900F900F90DF91CF911F9120 +:103510000895CF93DF9300D000D01F92CDB7DEB7D0 +:103520000F900F900F900F900F90DF91CF91089513 +:10353000CF93DF9300D000D000D0CDB7DEB7269672 +:103540000FB6F894DEBF0FBECDBFDF91CF910895C7 +:103550001F93CF93DF93C091A20216E08091A30244 +:10356000C81799F0D0E01C9FF0011D9FF00D1124A9 +:10357000EC55FD4F40815181628173818481958139 +:103580000E94981A2196C770E9CFDF91CF911F91C1 +:1035900008954091D4025091D5026091D602709165 +:1035A000D7028091D8029091D9020C94981ACF93A7 +:1035B0008091D90282958F7009F05FC08091D60208 +:1035C000882309F45AC08091A202B091A30270919D +:1035D000D402A091D5024091D7025091D80291E037 +:1035E0007F3F09F090E0692FC6E08B1709F445C0D2 +:1035F0004115510521F0AF3F21F020E003C021E04B +:1036000001C0262F90E020FD35C0C89FF001C99F62 +:10361000F00D1124EC55FD4F21812A132BC0208180 +:10362000271328C02281211125C02381348124172A +:10363000350710F421503109241B350B283C310586 +:10364000C8F42091D9022F7020612093D90226E07E +:10365000289FF001299FF00D1124E755FD4F80812F +:103660008F708061808384ED92E00E942117CF915A +:103670000C94A81A01968770B8CFCF910895AF9295 +:10368000BF92CF92DF92EF92FF920F931F93CF934F +:10369000DF93CDB7DEB761970FB6F894DEBF0FBEEC +:1036A000CDBF7C0185E0F701DE011D9601900D92F2 +:1036B0008A95E1F7D7014C9111965C91119712967A +:1036C000DC90129713960D911C9114973091D402AF +:1036D0006091D5028091D7029091D802009731F085 +:1036E0006F3F31F421E03F3F19F403C021E001C0F6 +:1036F00020E0B22FB170BB2E20FD6EC1A090D6028B +:10370000AA2009F4CCC02091D9020817190728F083 +:10371000F801E81BF90BCF0104C080959095800F4C +:10372000911FCC24C394883C910580F0C12C207F4C +:1037300009F0A1C0702F198B088B6D2D89890E940B +:10374000891A84ED92E00E942117BDC0822F807FEC +:1037500009F056C0561315C0431313C0CD2CD11019 +:1037600010C02F7020612093D9020E94C91A84EDE5 +:1037700092E00E9421178091D902D70115968C936F +:103780005FC10115110531F05F3F31F481E04F3F1A +:1037900019F403C081E001C080E080FD03C081E036 +:1037A0008D2502C080E090E0B82FB170CB2E80FF55 +:1037B0001CC08091A2022091A30236E0821709F476 +:1037C0001CC190E0389FF001399FF00D1124EC5599 +:1037D000FD4F6181561306C06081461303C06281AC +:1037E000D61203C001968770E9CFCD2CDD2009F4F5 +:1037F00027C18091D90281608093D902C12C20C158 +:10380000561308C0431306C0D11004C08091D902DA +:10381000D701B6C04D875E87DF86702F198B088B66 +:103820006D2D89890E942B1A882399F1DD2089F159 +:103830002091D902822F82958F7090E0029774F0C8 +:103840008091D4029091D50298878F8319861B8727 +:103850000A872C87CE0107960E94211786E0F70180 +:10386000A4EDB2E001900D928A95E1F70E94D71A7B +:103870000E94C91A11C0561781F14D875E87DF86F5 +:10388000702F198B088B6D2D89890E942B1A81113D +:1038900038C0C7010E942117CC24C394D1C0081797 +:1038A000190708F446C0F801E81BF90BCF01883C62 +:1038B000910508F443C0C12C702F198B088B6D2D16 +:1038C00089890E94891AE4EDF2E086E0DF011D9209 +:1038D0008A95E9F70E94C91AB3C04313CECFD1101D +:1038E000CCCF8091D902F7018583C7010E942117AF +:1038F00086E0E4EDF2E0DF011D928A95E9F7CA2C3B +:103900009FC0DD2031F22091D902822F82958F70E5 +:1039100090E002970CF4A2CF8091D4029091D5024E +:103920009A8389831B821D830C832E83CE0101968B +:1039300093CF80959095800F911FB9CFCD2CDD202E +:1039400009F4A7CF561333C0431331C02091D902D5 +:1039500020FD24C0822F82958F70482F50E04115A2 +:103960005105E1F0D70115962C9315974F3051056D +:1039700049F08F5F982F9295907F822F8F70892BBF +:1039800015968C93C7010E94211786E0F701A4EDDC +:10399000B2E001900D928A95E1F79CCF86E0F701A5 +:1039A000A4EDB2E001900D928A95E1F749C04D87F0 +:1039B0005E87DF86702F198B088B6D2D89890E9499 +:1039C0002B1A81114BCF8091D90281608093D9024B +:1039D000C7010E94211734C0DD2009F45ACF4D875A +:1039E0005E87DF86702F198B088B6D2D89890E9469 +:1039F0002B1A882309F44DCF31CF702F198B088BE8 +:103A00006D2D89890E94961F292F22952F702230B3 +:103A100028F49F7039F0811105C00BC0243028F4C0 +:103A20009F7049F4805E883020F0C7010E94211702 +:103A3000BC2CCB2C05C0F7019581907F99F7F9CF6D +:103A40008C2D61960FB6F894DEBF0FBECDBFDF910F +:103A5000CF911F910F91FF90EF90DF90CF90BF908B +:103A6000AF9008951F93CF93DF93CDB7DEB72C9718 +:103A70000FB6F894DEBF0FBECDBF4F83588769875E +:103A80007A878B879C87CE0107960E943F1B8823ED +:103A9000D1F09F8188852A853B85232B31F08F3F8C +:103AA00031F481E09F3F19F403C081E001C080E060 +:103AB00080FD47C04F81588569857A858B859C85B7 +:103AC0000E94981A3EC086E0FE013796DE011196EC +:103AD00001900D928A95E1F7FF81E8856A857B85E3 +:103AE0006115710531F0EF3F31F481E0FF3F19F4CA +:103AF00003C081E001C080E080FD23C02091A302CB +:103B000030E0C9010196877099274091A20250E0E8 +:103B100084179507F1F1F983EA837D836C8396E03E +:103B2000929FD001939FB00D1124AC55BD4FFE0163 +:103B3000319601900D929A95E1F78093A3020E942D +:103B4000A81A16E08091A2029091A302891771F140 +:103B5000189FC00111248C559D4F0E943F1B882344 +:103B600029F1E091A2021E9FF0011124EC55FD4FB6 +:103B70004081518162817381848195810E94981A6C +:103B80008091A20290E00196877099278093A2020B +:103B9000D9CF0E941D171092A3021092A202E4ED49 +:103BA000F2E086E0DF011D928A95E9F72C960FB6C8 +:103BB000F894DEBF0FBECDBFDF91CF911F91089566 +:103BC000DF92EF92FF920F931F93CF93DF93FC014D +:103BD000892B09F488C0E12CF12CDD24D394EF016A +:103BE00021968491853709F460C058F4843708F031 +:103BF0004EC0843008F068C08130D1F0823071F15D +:103C000072C0883709F45BC050F4863709F453C09A +:103C1000873709F068C08E2D0E94CC2052C09CE7E7 +:103C2000980F903708F05FC08F770E94D5164EC06E +:103C30008F010E5F1F4FFE01849190E2980F983024 +:103C400050F48770FD2D01C0FF0F8A95EAF78F2F82 +:103C50000E94D22015C00E946A1614C08F010E5F08 +:103C60001F4FFE01849190E2980F983068F487709E +:103C7000FD2D01C0FF0F8A95EAF78F2F0E94D820F3 +:103C80000E94F920E80122C00E94D516FBCFCF0187 +:103C90000296FE01C491CC2361F0EFE9FFE0319779 +:103CA000F1F700C00000C150F6CFCF010296FE012F +:103CB000F490EC010BC00E94BC20E82E07C00E94CB +:103CC000CF200E94F92002C00E946A168F2D8823FF +:103CD00041F0EFE9FFE03197F1F700C000008150BB +:103CE000F6CFFE017CCFDF91CF911F910F91FF9016 +:103CF000EF90DF90089560935A0370935B03809375 +:103D00005C0390935D030C944721089560935E03D8 +:103D100070935F0380936003909361030C9446213A +:103D20000F931F9300915E0310915F032091600336 +:103D300030916103602B712B822B932B60935E0378 +:103D400070935F0380936003909361031F910F91C1 +:103D50000C9446210F931F9300915E0310915F0313 +:103D600020916003309161036023712382239323A8 +:103D700060935E0370935F0380936003909361038D +:103D80001F910F910C9446210F931F9300915E0396 +:103D900010915F03209160033091610360277127C8 +:103DA0008227932760935E0370935F038093600381 +:103DB000909361031F910F910C94462160E070E095 +:103DC000CB010C947B1E0F931F9341E050E060E009 +:103DD00070E08A019B0104C0000F111F221F331FD6 +:103DE0008A95D2F7C901B8011F910F910C947B1EDF +:103DF0000F931F9341E050E060E070E004C0440F77 +:103E0000551F661F771F8A95D2F780915A039091AC +:103E10005B03A0915C03B0915D038A019B01082BB9 +:103E2000192B2A2B3B2BC901B8011F910F910C9420 +:103E30007B1E0F931F9341E050E060E070E004C0F0 +:103E4000440F551F661F771F8A95D2F740955095EE +:103E50006095709580915A0390915B03A0915C03EB +:103E6000B0915D038A019B01082319232A233B2378 +:103E7000C901B8011F910F910C947B1E0F931F93E2 +:103E800041E050E060E070E004C0440F551F661F41 +:103E9000771F8A95D2F780915A0390915B03A09186 +:103EA0005C03B0915D038A019B01082719272A272B +:103EB0003B27C901B8011F910F910C947B1E0F93F2 +:103EC0001F9300915A0310915B0320915C03309182 +:103ED0005D03602B712B822B932B1F910F910C9400 +:103EE0007B1E0F931F9300915A0310915B03209147 +:103EF0005C0330915D0360237123822393231F9120 +:103F00000F910C947B1E0F931F9300915A031091F5 +:103F10005B0320915C0330915D036027712782274A +:103F200093271F910F910C947B1E08958F929F925F +:103F3000AF92BF92DF92EF92FF920F931F93CF93B6 +:103F4000DF9300D000D01F92CDB7DEB76B837C83A8 +:103F50008D838A018C819D81892B31F01F3F31F443 +:103F600081E04F3F19F403C081E001C080E080FF91 +:103F700003C080E090E04DC08B818823D1F1809018 +:103F80005A0390905B03A0905C03B0905D03809116 +:103F90005E0390915F03A0916003B0916103882A52 +:103FA000992AAA2ABB2A8FE1E82EF12CD501C40157 +:103FB0000E2C04C0B695A795979587950A94D2F7CD +:103FC00080FD06C081E0E81AF10880F7D12C07C017 +:103FD000DE2CB8018E2D0E944106019799F388E0EE +:103FE000189FF0011124E652FD4FE00FF11DD08221 +:103FF00009C088E0189FF0011124E652FD4FE00F40 +:10400000F11DD08009831A8369817A818D2D0E94E8 +:1040100041060F900F900F900F900F90DF91CF916E +:104020001F910F91FF90EF90DF90BF90AF909F9006 +:104030008F90089590911501992379F1909116012F +:10404000992359F1982F9695969596959F31A1F0C1 +:10405000E0911701F0911801E90FF11D877021E03F +:1040600030E0A90102C0440F551F8A95E2F7CA014A +:104070009181892B818308959091850390FF29C0B8 +:104080001F928F9380E597E09F938F930E9438064D +:104090000F900F900F900F9008952091170130917D +:1040A0001801F90132969FEF40E05191851789F090 +:1040B0009F3F19F4511101C0942F4F5F4E31A9F762 +:1040C0009F3F39F0F901E90FF11D97FDFA958283C1 +:1040D0000895089590911501992381F19091160109 +:1040E000992361F1982F9695969596959F31A9F011 +:1040F000E0911701F0911801E90FF11D877021E09F +:1041000030E0A90102C0440F551F8A95E2F7CA01A9 +:10411000809591818923818308959091850390FFF3 +:104120001CC01F928F9382E397E09F938F930E940E +:1041300038060F900F900F900F900895E09117019F +:10414000F09118019F01225E3F4F9281891301C0B7 +:1041500012823196E217F307C1F7089581E090E0EB +:10416000E0911701F0911801E80FF91F10820196F4 +:1041700080329105A9F70895809184030895909164 +:104180008403892B80938403089580959091840300 +:104190008923809384030895809384030895109263 +:1041A0008403089590918303892B8093830308955A +:1041B00080959091830389238093830308951092BF +:1041C0008303089580936203089510926203089513 +:1041D0008091170190911801FC0131969C01205E9D +:1041E0003F4F80E0919191118F5FE217F307D1F774 +:1041F0000895E0911701F091180180918403808364 +:10420000E0911701F0911801908180918303892B2F +:10421000808380916203882361F0E0911701F0911F +:1042200018019081892B80830E94E82081111092CF +:10423000620380911701909118010C94A11490933E +:1042400035018093340108958295982F937344E04B +:10425000949F900111248C7C86958695282B822F23 +:104260008575880F2A7A2695822B08950895CF9315 +:10427000DF9300D000D01F92CDB7DEB70F900F9024 +:104280000F900F900F90DF91CF91089508950895AA +:104290000C94EB1580E0089583B7817F8C6083BF19 +:1042A00083B7816083BF7894889583B78E7F83BFFF +:1042B0000895CF930E9422160E94270A0E94231677 +:1042C000C0E08C2F0E940A0A811104C0CF5FC03168 +:1042D000C1F701C081E0CF9108950E94100A0C94AB +:1042E0001D171F920F920FB60F9211248F939F9359 +:1042F000AF93BF938091860390918703A091880329 +:10430000B09189034196A11DB11D809386039093BE +:104310008703A0938803B0938903BF91AF919F91C6 +:104320008F910F900FBE0F901F90189582E084BD63 +:1043300093E095BD9AEF97BD80936E0008952FB7D7 +:10434000F8948091860390918703A0918803B0919F +:1043500089032FBF08952FB7F89460918603709159 +:10436000870380918803909189032FBF0895CF928E +:10437000DF92EF92FF920F931F932FB7F894409123 +:1043800086035091870360918803709189032FBF42 +:104390006A017B01EE24FF248C0120E030E0C0168E +:1043A000D106E206F30610F4415051099A01281B88 +:1043B000390BC9011F910F91FF90EF90DF90CF90C3 +:1043C00008951F920F920FB60F9211248F939F930F +:1043D000AF93BF938091860390918703A091880348 +:1043E000B09189030196A11DB11D8093860390931E +:1043F0008703A0938803B0938903BF91AF919F91E6 +:104400008F910F900FBE0F901F9018950E94D7119B +:10441000F89487E797E7909301088093000887E076 +:1044200090EBDC018093980390939903A0939A03F7 +:10443000B0939B039CE088E10FB6F894A895809315 +:1044400060000FBE90936000FFCF80E090E0089581 +:104450000895CF93C82F1F928F9384E797E09F937F +:104460008F930E94380681E090E0A0E0B0E0BC01AC +:10447000CD0104C0660F771F881F991FCA95D2F718 +:104480000E94861E0F900F900F900F90CF910C946A +:104490001D17CF938732A8F58E3108F02BC18031DC +:1044A00009F49FC0F8F4873009F464C0A8F486309A +:1044B00009F024C180918503817F8E7F80938503DD +:1044C00089E797E00E949F058BE59AE00E949F058F +:1044D00081E080938A034CC08B30F1F18E3009F477 +:1044E0006CC00CC1863109F4B0C020F4813109F4EC +:1044F000EDC004C1893109F491C08B3109F449C080 +:10450000FDC0883349F150F4893209F4F1C0853394 +:1045100009F4EEC0873209F0F1C0EAC0833409F42F +:10452000E7C028F48A3308F4E9C08953E4C088342A +:1045300009F0E4C00E941D178AE49AE00E949F05DA +:104540002FEF83ED90E3215080409040E1F700C0D1 +:1045500000000E9406220CC084E997E05CC081E361 +:104560009AE00E949F058091850381608093850376 +:10457000C1E0C9C080918503C82FC17080FFEFCF13 +:104580008DE39AE00E949F0580918503817F8E7F55 +:104590003DC09091850391FBCC27C0F981E0C827ED +:1045A000892FC0FB81F980938503CC2319F084E225 +:1045B0009AE027C086E19AE02EC09091850392FB95 +:1045C000CC27C0F981E0C827892FC0FB82F98093EE +:1045D0008503CC2319F087E09AE013C087EF99E0B8 +:1045E0001AC09091850393FBCC27C0F981E0C827BE +:1045F000892FC0FB83F980938503CC2351F08BEE88 +:1046000099E00E949F0580918503816080938503D6 +:104610007AC08EED99E00E949F05AACF8FEC99E0B9 +:104620000E949F0589EA99E00E949F0581E699E032 +:104630000E949F0589E399E00E949F058DEE98E016 +:104640000E949F0582EC98E0E6CF84EB98E00E9400 +:104650009F050E9495141F928F938AE998E09F937B +:104660008F930E943806809115011F928F9383E8E3 +:1046700098E09F938F930E94380680918A021F9240 +:104680008F9380E798E09F938F930E9438068091E4 +:1046900016011F928F938DE598E09F938F930E9450 +:1046A00038060E94AB219F938F937F936F9386E48C +:1046B00098E09F938F930E9438068DB79EB74696D9 +:1046C0000FB6F8949EBF0FBE8DBF52CF0E941D172C +:1046D000C091160181E0C827C0931601CC2329F0B0 +:1046E0008CE398E00E949F050EC081E398E093CF91 +:1046F00080E001C08D510E9429223ACF8FE298E0DC +:104700000E949F05C0E08C2FCF91089580E008950E +:104710000C948623CF93C82F80918A03882319F0A5 +:10472000813059F042C0E0911701F0911801808169 +:10473000823261F08434D9F509C0E0911701F0911B +:1047400018018081823211F0843461F48C2F0E9430 +:104750008823811104C08C2F0E94492224C081E04B +:1047600090E021C08C2F0E94862381111BC0C43190 +:1047700089F018F4CB3029F010C0C93259F0C83391 +:1047800061F489E797E00E949F0580E797E00E9427 +:104790009F0508C010928A030CC08EE697E00E9425 +:1047A0009F0507C081E0817006C010928A0380E0F7 +:1047B00002C080E0F8CFCF910895EE0FFF1F059063 +:0A47C000F491E02D0994F894FFCF66 +:1047CA00013C0100000F69010000FFC00C2D0DC360 +:1047DA000CF80CC40C01016303403622399A0664B2 +:1047EA0006420609069505AE05C705E70500000855 +:0447FA0000040002B5 +:106800008800EA44E944E244040005000600070069 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:10686000300031003200330034003500360037008C +:10687000380039003A003B003C003D003E003F003C +:1068800040004100420043004400450046004700EC +:10689000480049004A004B004C004D004E004F009C +:1068A000500051005200530054005500560057004C +:1068B000580059005A005B005C005D005E005F00FC +:1068C00060006100620063006400F1A18500670060 +:1068D000680069006A006B006C006D006E006F005C +:1068E0007000710072007300890087008A008B00BD +:1068F000E000E100E200E300E400E500E600E7007C +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010035004C0039000100440045005200A0 +:1069600049000100010050004F0029004D004E0079 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF From ba4f28a484a670b794674d694998fed4d25f0f5f Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 28 Dec 2019 22:39:54 +0900 Subject: [PATCH 70/71] alps64: Fix for delay time for matrix scan Delay less than 20us can cause false key detection in some situations. With week internal pull-up takes time to charge stray capacitance of trace between ground fill(and fingers), perhaps? In particular, when testing Alps64 PCB without diodes tweezer is used to close a key and this makes trace longer, more capacitance in result. --- keyboard/alps64/matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/alps64/matrix.c b/keyboard/alps64/matrix.c index 4a1c84c6..1082773f 100644 --- a/keyboard/alps64/matrix.c +++ b/keyboard/alps64/matrix.c @@ -72,7 +72,7 @@ uint8_t matrix_scan(void) { for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); - _delay_us(1); // delay for settling + _delay_us(30); // delay for settling matrix_row_t cols = read_cols(); if (matrix_debouncing[i] != cols) { if (debouncing) { From 3b21f85e9bb731adcbd40be1b93b7d39ef7748c5 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 28 Dec 2019 22:57:22 +0900 Subject: [PATCH 71/71] alps64: Update prebuilt firmware --- keyboard/alps64/binary/alps64_unimap.hex | 704 +++++++++++------------ 1 file changed, 352 insertions(+), 352 deletions(-) diff --git a/keyboard/alps64/binary/alps64_unimap.hex b/keyboard/alps64/binary/alps64_unimap.hex index 16f4355b..8299647f 100644 --- a/keyboard/alps64/binary/alps64_unimap.hex +++ b/keyboard/alps64/binary/alps64_unimap.hex @@ -1,12 +1,12 @@ -:100000000C9450050C9498050C9498050C94980544 -:100010000C9498050C9498050C9498050C949805EC -:100020000C9498050C9498050C9498050C94770CF6 -:100030000C94260D0C94271C0C9498050C94980590 -:100040000C9498050C9498050C9498050C949B1CA2 -:100050000C9498050C9498050C9498050C949805AC -:100060000C9498050C9498050C9498050C9498059C -:100070000C9498059B069E06A106A406A706AA0650 -:10008000AD06930DB50DA80EB50DA80EFA0D1D0EFB +:100000000C9451050C9499050C9499050C94990540 +:100010000C9499050C9499050C9499050C949905E8 +:100020000C9499050C9499050C9499050C94770CF3 +:100030000C94260D0C94271C0C9499050C9499058E +:100040000C9499050C9499050C9499050C949B1C9F +:100050000C9499050C9499050C9499050C949905A8 +:100060000C9499050C9499050C9499050C94990598 +:100070000C9499059C069F06A206A506A806AB0649 +:10008000AE06930DB50DA80EB50DA80EFA0D1D0EFA :10009000A80E720E850E3712371261126112BC1251 :1000A000F012FE14FE140713FE14F213F213B81428 :1000B000FE14CD14EB147E10360E0F12272D7F3751 @@ -17,209 +17,209 @@ :1001000020256440253032580A000A4B6579626F19 :100110006172642073746172742E0A000A5553422E :1001200020636F6E666967757265642E0A000A0A3D -:10013000544D4B3A31623538316263312F4C55465C -:10014000410A0A000E0341006C0070007300360083 -:1001500034000000080354004D004B00000004036D -:10016000090409027400040100A03209040000011E -:10017000030101000921110100012240000705814E -:100180000308000A0904010001030102000921110A -:10019000010001224D000705820308000A0904023C -:1001A00000010300000009211101000122360007AF -:1001B00005830308000A0904030002030000000984 -:1001C00021110100012222000705840320000107FC -:1001D0000504032000011201100100000008EDFEDB -:1001E00064640100010200010631FF0974A10109E4 -:1001F00075150026FF009520750881020976150007 -:1002000026FF00952075089102C005010980A10113 -:1002100085021601002637001A81002AB7007510E2 -:1002200095018100C0050C0901A10185031601009B -:10023000269C021A01002A9C02751095018100C0BB -:1002400005010902A1010901A100050919012905FA -:100250001500250195057501810295017503810140 -:100260000501093009311581257F95027508810640 -:1002700009381581257F950175088106050C0A3816 -:10028000021581257F950175088106C0C005010909 -:1002900006A101050719E029E71500250195087554 -:1002A000018102950175088101050819012905954B -:1002B0000575019102950175039101050719002942 -:1002C000FF150026FF00950675088100C0636F6E5C -:1002D00073756D65723A20253034580A007379734E -:1002E00074656D3A20253034580A000A00253032F2 -:1002F0005820006B6579626F6172643A20004C454A -:10030000443A20253032580A00253032583A202508 -:1003100030386225730A00722F6320303132333453 -:100320003536370A00646F6E652E0A00626F6F748F -:100330006D61676963207363616E3A202E2E2E20F3 -:1003400000290A002575002F002575005D2800256D -:10035000640020002564002000256400200025643E -:10036000007C0025303258006D6F7573656B6579C0 -:10037000205B62746E7C782079207620685D28721C -:1003800065702F61636C293A205B006D6B5F776845 -:1003900065656C5F74696D655F746F5F6D61782012 -:1003A0003D2025640A006D6B5F776865656C5F6D45 -:1003B00061785F7370656564203D2025640A006D77 -:1003C0006B5F74696D655F746F5F6D6178203D2050 -:1003D00025640A006D6B5F6D61785F73706565649D -:1003E000203D2025640A006D6B5F696E746572762E -:1003F000616C203D2025640A006D6B5F64656C6153 -:1004000079203D2025640A006D6B5F776865656C17 -:100410005F74696D655F746F5F6D6178203D202545 -:10042000640A006D6B5F776865656C5F6D61785F0E -:100430007370656564203D2025640A006D6B5F74F0 -:10044000696D655F746F5F6D6178203D2025640A7A -:10045000006D6B5F6D61785F7370656564203D2032 -:1004600025640A006D6B5F696E74657276616C203D -:100470003D2025640A006D6B5F64656C6179203DE9 -:100480002025640A000A00257500363A2077686541 -:10049000656C5F74696D655F746F5F6D61783A203C -:1004A000000A00257500353A20776865656C5F6D38 -:1004B00061785F73706565643A20000A00257500F5 -:1004C000343A2074696D655F746F5F6D61783A20AE -:1004D000000A00257500333A206D61785F737065FE -:1004E00065643A20000A00257500323A20696E746E -:1004F000657276616C286D73293A20000A002575B3 -:1005000000313A2064656C6179282A31306D732995 -:100510003A20000A092D2056616C756573202D0A5A -:10052000004D3E004D25643E20003F007365742061 -:1005300064656661756C740A00433E2000776865E7 -:1005400072652064656C74613A20637572736F72B2 -:100550003D25642C20776865656C3D25640A5365EC -:100560006520687474703A2F2F656E2E77696B69F9 -:1005700070656469612E6F72672F77696B692F4DA3 -:100580006F7573655F6B6579730A000A092D204DDD -:100590006F7573656B6579202D0A4553432F713A4A -:1005A00009717569740A313A0964656C6179282AA0 -:1005B00031306D73290A323A09696E746572766159 -:1005C0006C286D73290A333A096D61785F73706521 -:1005D00065640A343A0974696D655F746F5F6D61B3 -:1005E000780A353A09776865656C5F6D61785F7385 -:1005F000706565640A363A09776865656C5F746989 -:100600006D655F746F5F6D61780A0A703A09707288 -:10061000696E742076616C7565730A643A09736556 -:10062000742064656661756C74730A75703A092B81 -:10063000310A646F776E3A092D310A706775703A26 -:10064000092B31300A7067646F776E3A092D3130AB -:100650000A0A7370656564203D2064656C746120CE -:100660002A206D61785F7370656564202A20287286 -:100670006570656174202F2074696D655F746F5FAC -:100680006D6178290A003F004D3E2000433E200066 -:100690004C25640A000A092D20436F6E736F6C6548 -:1006A000202D0A4553432F713A09717569740A6DFB -:1006B0003A096D6F7573656B65790A000A092D201B -:1006C0004D61676963202D0A643A09646562756744 -:1006D0000A783A096465627567206D617472697899 -:1006E0000A6B3A096465627567206B6579626F61B0 -:1006F00072640A6D3A096465627567206D6F75737F -:10070000650A763A0976657273696F6E0A733A09FB -:100710007374617475730A633A09636F6E736F6CF7 -:1007200065206D6F64650A302D343A096C61796516 -:1007300072302D34284631302D4634290A506175E7 -:10074000733A09626F6F746C6F616465720A653A1F -:1007500009656570726F6D0A000A002575002E6EBE -:100760006B726F3A20000A002575002E7377617056 -:100770005F6261636B736C6173685F6261636B730B -:10078000706163653A20000A002575002E73776159 -:10079000705F67726176655F6573633A20000A0077 -:1007A0002575002E6E6F5F6775693A20000A002577 -:1007B00075002E737761705F72616C745F7267751C -:1007C000693A20000A002575002E737761705F6C0E -:1007D000616C745F6C6775693A20000A00257500CA -:1007E0002E636170736C6F636B5F746F5F636F6EAA -:1007F00074726F6C3A20000A002575002E737761C1 -:10080000705F636F6E74726F6C5F636170736C6F37 -:10081000636B3A20000A0025303258006B65796D11 -:1008200061705F636F6E6669672E7261773A200050 -:100830000A002575002E6D6F7573653A20000A0059 -:100840002575002E6B6579626F6172643A20000A2B -:10085000002575002E6D61747269783A20000A00D7 -:100860002575002E656E61626C653A20000A0025D0 -:100870003032580064656275675F636F6E666967E2 -:100880002E7261773A20000A002575006465666162 -:10089000756C745F6C617965723A20003F00746911 -:1008A0006D65725F72656164333228293A202530A4 -:1008B000346C580A006B6579626F6172645F6964B9 -:1008C0006C653A2025580A006B6579626F61726425 -:1008D0005F70726F746F636F6C3A2025580A0068FE -:1008E0006F73745F6B6579626F6172645F6C65646E -:1008F0007328293A2025580A000A092D20537461CB -:10090000747573202D0A004743433A20352E342E48 -:1009100030204156522D4C4942433A20322E302E3F -:1009200030204156525F415243483A20617672333B -:10093000350A004F5054494F4E533A204C554641CA -:1009400020424F4F544D41474943204D4F55534549 -:100950004B45592045585452414B455920434F4E21 -:10096000534F4C4520434F4D4D414E44204B45592C -:100970004D41505F53454354494F4E203430393632 -:100980000A004255494C443A20316235383162639D -:1009900031202831313A35363A3130204E6F7620C9 -:1009A00031322032303139290A005649443A203058 -:1009B000784645454428544D4B29205049443A2017 -:1009C00030783634363428416C70733634292056EA -:1009D00045523A203078303030310A004445534394 -:1009E0003A20544D4B206B6579626F6172642066CA -:1009F00069726D7761726520666F7220416C7073E9 -:100A000036340A000A092D2056657273696F6E200C -:100A10002D0A000A6D6F7573653A206F66660A00CD -:100A20000A6D6F7573653A206F6E0A000A6B6579FF -:100A3000626F6172643A206F66660A000A6B6579BC -:100A4000626F6172643A206F6E0A000A6D6174729F -:100A500069783A206F66660A000A6D617472697877 -:100A60003A206F6E0A000A64656275673A206F6EFD -:100A70000A000A64656275673A206F66660A000AB2 -:100A80000A626F6F746C6F616465722E2E2E200087 -:100A9000433E20006565636F6E6669673A0A000031 -:100AA00011241FBECFEFD4E0DEBFCDBF04B603FEDE -:100AB00028C08091140390911503A0911603B09162 -:100AC00017038730904BA740B04BD9F41092140312 -:100AD00010921503109216031092170314BE0FB64E -:100AE000F894A895809160008861809360001092CE -:100AF00060000FBE1092010810920008E0E0F8E3D9 -:100B0000099511E0A0E0B1E0E6EBF0E502C0059048 -:100B10000D92A833B107D9F723E0A8E3B1E001C0F3 -:100B20001D92A431B207E1F70E9460090C94592884 -:100B30000C940000FF93EF93E0913801F09139019C -:100B4000309709F00995EF91FF910895FC01859187 -:100B5000803011F0EFDFFBCF0895FF27E0E230E2B5 -:100B600047FF0CC0419597FF09C0EDE26095709575 -:100B700080959095611D711D811D911D27FF02C0FB -:100B8000219530E350E2AA27660F771F881F991F2F -:100B9000AA1FA41710F0A41B63955A95A9F7AA30B1 -:100BA00008F0A95FA05DAF93F3956115710581050C -:100BB000910541F7ED3211F4EF93F395F21718F424 -:100BC0003F93F395FBCF8F91B5DFFA95E1F7089549 -:100BD000E991F9918591803021F0853219F0AADFF1 -:100BE000F9CF089520E0E89455915532C1F3503380 -:100BF00011F4689455915A3348F4505390F3220FEE -:100C0000022E220F220F200D250FF4CF0EF4219576 -:100C100089919991533619F3533729F1533559F185 -:100C2000BC0188279927E8945C3621F48991999131 -:100C300068945591543639F446EF7EF077FF0DC035 -:100C40008FEF9FEF0AC055374AE039F0583540E141 -:100C500021F0523642E009F00895FF93EF937DDFD3 -:100C6000EF91FF91B7CFFF93EF93FC01819180301B -:100C7000B9F360DFFBCFFF93EF9368DFF1CFDF9332 -:100C8000CF93CDB7DEB72596A3DFCF91DF9108953F -:100C90008AB180788AB98BB180788BB93A984298BA -:100CA00008950E94480684B114B885B18FEF85B9C4 -:100CB000E2E4F1E0AAE3B1E011921D9221E0EA340E -:100CC000F207D1F78091F50282608093F5023D9A98 -:100CD000459A8FEF99E628E1815090402040E1F756 -:100CE00000C000003D98459808959F92AF92BF9232 -:100CF000CF92DF92EF92FF920F931F93CF93DF93E8 -:100D00008AE3E82E81E0F82E8701C0E0D0E0992444 -:100D1000939496EFC92E90E0D92E8C2F90E0FC0191 -:100D20003197E730F10520F4E65CFF4F0C940E2874 -:100D3000509A589814C0519A599811C0529A5A987A -:100D40000EC0539A5B980BC0549A5C9808C0559A91 -:100D50005D9805C0569A5E9802C03A9A429885E01E -:100D60008A95F1F70000B3B0B094D801AC90AB1401 +:10013000544D4B3A62613466323861342B2F4C5542 +:1001400046410A0A000E0341006C0070007300363D +:100150000034000000080354004D004B0000000470 +:1001600003090409027400040100A032090400001C +:1001700001030101000921110100012240000705CE +:10018000810308000A09040100010301020009219A +:1001900011010001224D000705820308000A09042D +:1001A00002000103000000092111010001223600B4 +:1001B0000705830308000A09040300020300000086 +:1001C00009211101000122220007058403200001FA +:1001D000070504032000011201100100000008EDD2 +:1001E000FE64640100010200010631FF0974A101EF +:1001F0000975150026FF00952075088102097615FE +:100200000026FF00952075089102C005010980A114 +:100210000185021601002637001A81002AB70075F1 +:100220001095018100C0050C0901A101850316018B +:1002300000269C021A01002A9C027510950181007B +:10024000C005010902A1010901A10005091901293F +:10025000051500250195057501810295017503813C +:10026000010501093009311581257F950275088145 +:100270000609381581257F950175088106050C0A48 +:1002800038021581257F950175088106C0C00501DA +:100290000906A101050719E029E7150025019508C0 +:1002A000750181029501750881010508190129056B +:1002B00095057501910295017503910105071900D6 +:1002C00029FF150026FF00950675088100C0636FA1 +:1002D0006E73756D65723A20253034580A00737953 +:1002E0007374656D3A20253034580A000A002530B1 +:1002F000325820006B6579626F6172643A20004C5D +:1003000045443A20253032580A00253032583A20E8 +:100310002530386225730A00722F63203031323362 +:10032000343536370A00646F6E652E0A00626F6FCF +:10033000746D61676963207363616E3A202E2E2E9F +:100340002000290A002575002F002575005D280072 +:10035000256400200025640020002564002000257D +:1003600064007C0025303258006D6F7573656B65D5 +:1003700079205B62746E7C782079207620685D2815 +:100380007265702F61636C293A205B006D6B5F773B +:100390006865656C5F74696D655F746F5F6D6178CA +:1003A000203D2025640A006D6B5F776865656C5F92 +:1003B0006D61785F7370656564203D2025640A0077 +:1003C0006D6B5F74696D655F746F5F6D6178203D03 +:1003D0002025640A006D6B5F6D61785F73706565E1 +:1003E00064203D2025640A006D6B5F696E74657240 +:1003F00076616C203D2025640A006D6B5F64656C3E +:100400006179203D2025640A006D6B5F7768656522 +:100410006C5F74696D655F746F5F6D6178203D20FE +:1004200025640A006D6B5F776865656C5F6D617848 +:100430005F7370656564203D2025640A006D6B5F05 +:1004400074696D655F746F5F6D6178203D20256410 +:100450000A006D6B5F6D61785F7370656564203D48 +:100460002025640A006D6B5F696E74657276616C3D +:10047000203D2025640A006D6B5F64656C61792006 +:100480003D2025640A000A00257500363A20776869 +:1004900065656C5F74696D655F746F5F6D61783AF7 +:1004A00020000A00257500353A20776865656C5F85 +:1004B0006D61785F73706565643A20000A00257588 +:1004C00000343A2074696D655F746F5F6D61783ACE +:1004D00020000A00257500333A206D61785F737043 +:1004E0006565643A20000A00257500323A20696E7D +:1004F00074657276616C286D73293A20000A0025B4 +:100500007500313A2064656C6179282A31306D7349 +:10051000293A20000A092D2056616C756573202D3B +:100520000A004D3E004D25643E20003F0073657477 +:100530002064656661756C740A00433E200077682C +:100540006572652064656C74613A20637572736FBF +:10055000723D25642C20776865656C3D25640A53DF +:10056000656520687474703A2F2F656E2E77696BFD +:100570006970656469612E6F72672F77696B692F87 +:100580004D6F7573655F6B6579730A000A092D20DD +:100590004D6F7573656B6579202D0A4553432F7137 +:1005A0003A09717569740A313A0964656C61792890 +:1005B0002A31306D73290A323A09696E7465727690 +:1005C000616C286D73290A333A096D61785F737025 +:1005D0006565640A343A0974696D655F746F5F6DAF +:1005E00061780A353A09776865656C5F6D61785F97 +:1005F00073706565640A363A09776865656C5F747F +:10060000696D655F746F5F6D61780A0A703A097091 +:1006100072696E742076616C7565730A643A097349 +:1006200065742064656661756C74730A75703A0947 +:100630002B310A646F776E3A092D310A7067757035 +:100640003A092B31300A7067646F776E3A092D31A1 +:10065000300A0A7370656564203D2064656C7461BE +:10066000202A206D61785F7370656564202A2028D8 +:10067000726570656174202F2074696D655F746F99 +:100680005F6D6178290A003F004D3E2000433E2007 +:10069000004C25640A000A092D20436F6E736F6CAD +:1006A00065202D0A4553432F713A09717569740A03 +:1006B0006D3A096D6F7573656B65790A000A092DCE +:1006C000204D61676963202D0A643A09646562758B +:1006D000670A783A096465627567206D61747269AA +:1006E000780A6B3A096465627567206B6579626F99 +:1006F0006172640A6D3A096465627567206D6F7591 +:1007000073650A763A0976657273696F6E0A733A91 +:10071000097374617475730A633A09636F6E736F5A +:100720006C65206D6F64650A302D343A096C61790F +:100730006572302D34284631302D4634290A5061F7 +:1007400075733A09626F6F746C6F616465720A65E4 +:100750003A09656570726F6D0A000A002575002EF2 +:100760006E6B726F3A20000A002575002E73776158 +:10077000705F6261636B736C6173685F6261636B0E +:1007800073706163653A20000A002575002E737747 +:1007900061705F67726176655F6573633A20000A16 +:1007A000002575002E6E6F5F6775693A20000A009C +:1007B0002575002E737761705F72616C745F72676C +:1007C00075693A20000A002575002E737761705F05 +:1007D0006C616C745F6C6775693A20000A0025755E +:1007E000002E636170736C6F636B5F746F5F636F18 +:1007F0006E74726F6C3A20000A002575002E7377B4 +:1008000061705F636F6E74726F6C5F636170736C45 +:100810006F636B3A20000A0025303258006B65790F +:100820006D61705F636F6E6669672E7261773A20E3 +:10083000000A002575002E6D6F7573653A20000A59 +:10084000002575002E6B6579626F6172643A200035 +:100850000A002575002E6D61747269783A20000ACD +:10086000002575002E656E61626C653A20000A00F5 +:10087000253032580064656275675F636F6E666924 +:10088000672E7261773A20000A002575006465665C +:1008900061756C745F6C617965723A20003F007419 +:1008A000696D65725F72656164333228293A20256B +:1008B00030346C580A006B6579626F6172645F69ED +:1008C000646C653A2025580A006B6579626F617225 +:1008D000645F70726F746F636F6C3A2025580A0002 +:1008E000686F73745F6B6579626F6172645F6C656A +:1008F000647328293A2025580A000A092D205374C8 +:1009000061747573202D0A004743433A20352E3415 +:100910002E30204156522D4C4942433A20322E303F +:100920002E30204156525F415243483A2061767240 +:1009300033350A004F5054494F4E533A204C5546D8 +:100940004120424F4F544D41474943204D4F55534D +:10095000454B45592045585452414B455920434F2A +:100960004E534F4C4520434F4D4D414E44204B4537 +:10097000594D41505F53454354494F4E203430390F +:10098000360A004255494C443A2062613466323896 +:1009900061342B202832323A35353A3037204465DD +:1009A000632032382032303139290A005649443A1E +:1009B0002030784645454428544D4B292050494421 +:1009C0003A2030783634363428416C707336342906 +:1009D000205645523A203078303030310A004445B4 +:1009E00053433A20544D4B206B6579626F617264BA +:1009F000206669726D7761726520666F7220416C46 +:100A0000707336340A000A092D2056657273696FB7 +:100A10006E202D0A000A6D6F7573653A206F666649 +:100A20000A000A6D6F7573653A206F6E0A000A6BD3 +:100A30006579626F6172643A206F66660A000A6BBC +:100A40006579626F6172643A206F6E0A000A6D61A7 +:100A5000747269783A206F66660A000A6D61747272 +:100A600069783A206F6E0A000A64656275673A20F9 +:100A70006F6E0A000A64656275673A206F66660ADF +:100A8000000A0A626F6F746C6F616465722E2E2E9D +:100A90002000433E20006565636F6E6669673A0A11 +:100AA000000011241FBECFEFD4E0DEBFCDBF04B6DF +:100AB00003FE28C08091140390911503A0911603A2 +:100AC000B09117038730904BA740B04BD9F41092E8 +:100AD000140310921503109216031092170314BEFC +:100AE0000FB6F894A89580916000886180936000AB +:100AF000109260000FBE1092010810920008E0E012 +:100B0000F8E3099511E0A0E0B1E0E6EBF0E502C002 +:100B100005900D92A833B107D9F723E0A8E3B1E01F +:100B200001C01D92A431B207E1F70E9460090C9444 +:100B300059280C940000FF93EF93E0913801F09155 +:100B40003901309709F00995EF91FF910895FC0163 +:100B50008591803011F0EFDFFBCF0895FF27E0E2B1 +:100B600030E247FF0CC0419597FF09C0EDE2609568 +:100B7000709580959095611D711D811D911D27FFB8 +:100B800002C0219530E350E2AA27660F771F881F25 +:100B9000991FAA1FA41710F0A41B63955A95A9F7D3 +:100BA000AA3008F0A95FA05DAF93F39561157105B8 +:100BB0008105910541F7ED3211F4EF93F395F217AA +:100BC00018F43F93F395FBCF8F91B5DFFA95E1F7DA +:100BD0000895E991F9918591803021F0853219F0DD +:100BE000AADFF9CF089520E0E89455915532C1F37A +:100BF000503311F4689455915A3348F4505390F39C +:100C0000220F022E220F220F200D250FF4CF0EF4FB +:100C1000219589919991533619F3533729F1533519 +:100C200059F1BC0188279927E8945C3621F4899111 +:100C3000999168945591543639F446EF7EF077FFD8 +:100C40000DC08FEF9FEF0AC055374AE039F0583595 +:100C500040E121F0523642E009F00895FF93EF930E +:100C60007DDFEF91FF91B7CFFF93EF93FC0181916F +:100C70008030B9F360DFFBCFFF93EF9368DFF1CFF4 +:100C8000DF93CF93CDB7DEB72596A3DFCF91DF916A +:100C900008958AB180788AB98BB180788BB93A98F7 +:100CA000429808950E94490684B114B885B18FEF27 +:100CB00085B9E2E4F1E0AAE3B1E011921D9221E0EE +:100CC000EA34F207D1F78091F50282608093F50251 +:100CD0003D9A459A8FEF99E628E181509040204057 +:100CE000E1F700C000003D98459808959F92AF92AB +:100CF000BF92CF92DF92EF92FF920F931F93CF9309 +:100D0000DF938AE3E82E81E0F82E8701C0E0D0E08F +:100D10009924939496EFC92E90E0D92E8C2F90E0D1 +:100D2000FC013197E730F10520F4E65CFF4F0C94AD +:100D30000E28509A589814C0519A599811C0529A36 +:100D40005A980EC0539A5B980BC0549A5C9808C08E +:100D5000559A5D9805C0569A5E9802C03A9A429894 +:100D600080EA8A95F1F7B3B0B094D801AC90AB1497 :100D700059F180914C018823E9F08091F50280FFC0 :100D800019C080914A0190914B010E94711CAB24C3 :100D90001F92AF92DF93CF939F938F93DF92CF9267 -:100DA0000E943F068DB79EB708960FB6F8949EBF77 +:100DA0000E9440068DB79EB708960FB6F8949EBF76 :100DB0000FBE8DBFD801BC9290924C010E94591C6D -:100DC00090934B0180934A010E94480621960F5F41 -:100DD0001F4FC830D10509F0A0CF80914C01882366 +:100DC00090934B0180934A010E94490621960F5F40 +:100DD0001F4FC830D10509F0A1CF80914C01882365 :100DE000A9F080914A0190914B010E94711C0597D6 :100DF00068F0E2E4F1E0D7018D917D018193B2E4E6 :100E0000EB16B1E0FB06B9F710924C0181E0DF91DF @@ -302,11 +302,11 @@ :1012D0006000886180936000109260000FBE90E013 :1012E00080E80FB6F89480936100909361000FBE80 :1012F00086EF97E00E94B81B85E091E00E94C00E47 -:101300008EE291E00E94A6050E945E090E947F0F76 +:101300008EE291E00E94A7050E945E090E947F0F75 :101310000E94140C0E94670C8091E200846080930C :10132000E20078940E94810F80910A03843019F0C2 -:101330000E945B09F9CF8CE191E00E94A6050E9412 -:101340005C098AE091E00E94A605C4E080910A034E +:101330000E945B09F9CF8CE191E00E94A7050E9411 +:101340005C098AE091E00E94A705C4E080910A034D :10135000853019F40E944609F9CF0E94870F209129 :10136000E4003091E50080914D0190914E012817E5 :10137000390761F38091E4009091E50090934E016C @@ -323,11 +323,11 @@ :1014200003C01092F100F9CF9091E8009E7790935D :10143000E8008F708093E90089CF292F332723306C :101440003105C9F060F42130310581F022303105D9 -:1014500009F041C084E790E022E631E040C021324B +:1014500009F041C084E790E023E631E040C021324A :101460003105E1F02232310531F135C082E190E001 -:1014700026ED31E034C099278130910549F028F0FC -:10148000029749F5E4E4F1E005C0EEE5F1E002C0C1 -:10149000E4E5F1E0849190E09F0121C06430D8F44C +:1014700027ED31E034C099278130910549F028F0FB +:10148000029749F5E5E4F1E005C0EFE5F1E002C0BF +:10149000E5E5F1E0849190E09F0121C06430D8F44B :1014A000E62FF0E0EE0FFF1FEC5DFE4F2081318153 :1014B00089E090E014C0643070F470E0FB01EE0F3E :1014C000FF1FE45EFE4F20813181FB01E85EFE4F8D @@ -475,28 +475,28 @@ :101DA0000895EF92FF920F931F93CF93DF93E091EB :101DB0005F02F09160023097B1F18C010280F381F3 :101DC000E02D09958091F50282FF2DC080FF04C0AF -:101DD00083EF92E00E94A605E80118E08DEEE82E60 +:101DD00084EF92E00E94A705E80118E08EEEE82E5D :101DE00082E0F82E8091F50280FF0BC088811F925F -:101DF0008F93FF92EF920E943F060F900F900F90EB +:101DF0008F93FF92EF920E9440060F900F900F90EA :101E00000F90115021961111EDCF8091F50280FFB6 -:101E10000AC08BEE92E0DF91CF911F910F91FF905E -:101E2000EF900C94A605DF91CF911F910F91FF9039 +:101E10000AC08CEE92E0DF91CF911F910F91FF905D +:101E2000EF900C94A705DF91CF911F910F91FF9038 :101E3000EF900895E0915F02F0916002309721F0F9 :101E40000480F581E02D09940895CF93DF932091CC :101E50005D0230915E022817390709F190935E0206 :101E600080935D02E0915F02F09160023097B9F0DB :101E7000EC010680F781E02D09958091F50282FF43 -:101E80000EC080FF0CC0DF93CF938DED92E09F9347 -:101E90008F930E943F060F900F900F900F90DF914D +:101E80000EC080FF0CC0DF93CF938EED92E09F9346 +:101E90008F930E9440060F900F900F900F90DF914C :101EA000CF910895CF93DF9320915B0230915C0234 :101EB0002817390709F190935C0280935B02E09147 :101EC0005F02F09160023097B9F0EC010084F18577 :101ED000E02D09958091F50282FF0EC080FF0CC0B5 -:101EE000DF93CF938DEC92E09F938F930E943F06F8 +:101EE000DF93CF938EEC92E09F938F930E944006F6 :101EF0000F900F900F900F90DF91CF9108950C9459 -:101F00002D100E94501C0E9451060C94741DBF920B +:101F00002D100E94501C0E9452060C94741DBF920A :101F1000CF92DF92EF92FF920F931F93CF93DF93B5 -:101F200000D000D01F92CDB7DEB70E94750602E642 +:101F200000D000D01F92CDB7DEB70E94760602E641 :101F300012E0F12C8F2D0E941307B82EF801C080FB :101F4000C82639F4F3940F5F1F4FF8E0FF12F2CF69 :101F500030C08091F50281FD0E942E10D12CEE241C @@ -509,17 +509,17 @@ :101FC000782F9D838C8349815A816B818D810E94FA :101FD00064100E94CF1B0E94FB200E94C50E9091AE :101FE0006102891741F10E94C50E809361029091B0 -:101FF000F50292FF0EC090FF0CC01F928F938EEFE0 -:1020000092E09F938F930E943F060F900F900F9046 +:101FF000F50292FF0EC090FF0CC01F928F938FEFDF +:1020000092E09F938F930E9440060F900F900F9045 :102010000F90809161020F900F900F900F900F9092 :10202000DF91CF911F910F91FF90EF90DF90CF90B4 :10203000BF900C94E11B0F900F900F900F900F909A :10204000DF91CF911F910F91FF90EF90DF90CF9094 :10205000BF9008950C94190708950895EF92FF9288 -:102060000F931F93CF93DF9387E193E00E94A60520 -:10207000C0E0D0E08CE2E82E81E0F82E09E013E029 +:102060000F931F93CF93DF9388E193E00E94A7051E +:10207000C0E0D0E08CE2E82E81E0F82E0AE013E028 :102080008C2F0E9413070E94BD1BFF92EF921F929C -:102090008F93DF93CF931F930F930E943F06219658 +:102090008F93DF93CF931F930F930E944006219657 :1020A0008DB79EB708960FB6F8949EBF0FBE8DBF32 :1020B000C830D10529F7DF91CF911F910F91FF9083 :1020C000EF90089508950895CF93DF93CDB7DEB7CD @@ -896,7 +896,7 @@ :1037F000817F846083BF83B7816083BF789488951D :1038000083B78E7F83BF0FB6F894A8958091600030 :10381000886180936000109260000FBE0895CF937E -:103820000E9462100E9475060E946310C0E08C2FF7 +:103820000E9462100E9476060E946310C0E08C2FF6 :103830000E941307811104C0CF5FC830C1F701C0D7 :1038400081E0CF9108950E942C100C94E7111F92F3 :103850000F920FB60F9211248F939F93AF93BF9344 @@ -941,9 +941,9 @@ :103AC000CF900895CF93DF93EC018CE290E00E94B9 :103AD000231D882329F0CE01DF91CF910C94231D63 :103AE00080E0DF91CF910895CF930E94D51E811180 -:103AF00002C00E94BB1E8CE293E00E94A605C5E6B0 -:103B0000C15049F00E9475068FE39CE90197F1F7D7 -:103B100000C00000F5CF85E293E00E94A60589E28F +:103AF00002C00E94BB1E8DE293E00E94A705C5E6AE +:103B0000C15049F00E9476068FE39CE90197F1F7D6 +:103B100000C00000F5CF86E293E00E94A70589E28D :103B200090E00E94621D811124C18AE290E00E940F :103B3000621D81110E94BB1E85E090E00E94621D03 :103B400081110E94C01C0E94E31B0E94E01E809312 @@ -1036,21 +1036,21 @@ :1040B0008B7F8093FD028091000381110EC080915F :1040C000010381110AC080910203811106C0809111 :1040D0000303811102C01092FE0208958091F5023F -:1040E00083FF7EC088E693E00E94A6058091FF02D0 -:1040F0001F928F9383E693E09F938F930E943F06D6 -:1041000081E693E00E94A60580910003282F082EE7 -:10411000000C330B3F938F938EE593E09F938F9327 -:104120000E943F068CE593E00E94A6058091010362 -:10413000282F082E000C330B3F938F9389E593E0D3 -:104140009F938F930E943F0687E593E00E94A60508 +:1040E00083FF7EC089E693E00E94A7058091FF02CE +:1040F0001F928F9384E693E09F938F930E944006D4 +:1041000082E693E00E94A70580910003282F082EE5 +:10411000000C330B3F938F938FE593E09F938F9326 +:104120000E9440068DE593E00E94A705809101035F +:10413000282F082E000C330B3F938F938AE593E0D2 +:104140009F938F930E94400688E593E00E94A70505 :1041500080910203282F082E000C330B3F938F937E -:1041600084E593E09F938F930E943F0682E593E05E -:104170000E94A60580910303282F082E000C330B04 -:104180003F938F938FE493E09F938F930E943F061A -:104190008CE493E00E94A6058091FE021F928F930B -:1041A00089E493E09F938F930E943F0687E493E016 -:1041B0000E94A6058091FD021F928F9384E493E0F4 -:1041C0009F938F930E943F0681E493E00E94A6058F +:1041600085E593E09F938F930E94400683E593E05B +:104170000E94A70580910303282F082E000C330B03 +:104180003F938F9380E593E09F938F930E94400627 +:104190008DE493E00E94A7058091FE021F928F9309 +:1041A0008AE493E09F938F930E94400688E493E013 +:1041B0000E94A7058091FD021F928F9385E493E0F2 +:1041C0009F938F930E94400682E493E00E94A7058C :1041D0008DB79EB74C960FB6F8949EBF0FBE8DBF9D :1041E0008FEF92E00E941A0F0E94591C9093FC02DC :1041F0008093FB0208951F93CF93DF938091FB027E @@ -1075,124 +1075,124 @@ :10432000461F819580930303DF91CF911F910C94D9 :104330006E202F3F09F08FCFA0CFDF91CF911F913B :104340000895EFEFF2E085E0DF011D928A95E9F72D -:104350001092FE021092FD0208958BE895E00E94F3 -:10436000A6051F9281E08F931F9285E08F938DE3C6 -:1043700095E09F938F930E943F060F900F900F90B0 +:104350001092FE021092FD0208958CE895E00E94F2 +:10436000A7051F9281E08F931F9285E08F938EE3C4 +:1043700095E09F938F930E9440060F900F900F90AF :104380000F900F900F9008958330E9F128F4813059 :1043900061F0823009F10895853009F462C008F4B3 :1043A00049C0863009F474C0089580911701262F02 :1043B00030E0280F311D2F3F310524F4680F609342 :1043C000170103C08FEF80931701809117011F928F -:1043D0008F9386E794E072C080911601262F30E01B +:1043D0008F9387E794E072C080911601262F30E01A :1043E000280F311D2F3F310524F4680F609316010B :1043F00003C08FEF80931601809116011F928F9357 -:1044000084E694E05BC080911501262F30E0280FF0 +:1044000085E694E05BC080911501262F30E0280FEF :10441000311D2F3F310524F4680F6093150103C04F -:104420008FEF80931501809115011F928F9381E585 +:104420008FEF80931501809115011F928F9382E584 :1044300094E044C080911401262F30E0280F311DF4 :104440002F3F310524F4680F6093140103C08FEFF0 -:1044500080931401809114011F928F938CE394E058 +:1044500080931401809114011F928F938DE394E057 :104460002DC080911301262F30E0280F311D2F3FE2 :10447000310524F4680F6093130103C08FEF80931C -:104480001301809113011F928F9383E294E016C071 +:104480001301809113011F928F9384E294E016C070 :1044900080911201262F30E0280F311D2F3F31056A :1044A00024F4680F6093120103C08FEF8093120110 -:1044B000809112011F928F9388E094E09F938F93D5 -:1044C0000E943F060F900F900F900F900895833039 +:1044B000809112011F928F9389E094E09F938F93D4 +:1044C0000E9440060F900F900F900F900895833038 :1044D00081F128F4813059F08230D1F0089585308F :1044E00009F449C0B8F1863009F456C008958091A6 :1044F0001701681720F4861B8093170102C01092E1 -:104500001701809117011F928F9389EF93E054C098 +:104500001701809117011F928F938AEF93E054C097 :1045100080911601681720F4861B8093160102C053 -:1045200010921601809116011F928F9387EE93E0EF +:1045200010921601809116011F928F9388EE93E0EE :1045300043C080911501681720F4861B80931501F4 -:1045400002C010921501809115011F928F9384ED86 +:1045400002C010921501809115011F928F9385ED85 :1045500093E032C080911401681720F4861B809389 :10456000140102C010921401809114011F928F93C4 -:104570008FEB93E021C080911301681720F4861B14 +:1045700080EC93E021C080911301681720F4861B22 :104580008093130102C010921301809113011F92B6 -:104590008F9386EA93E010C080911201681720F48F +:104590008F9387EA93E010C080911201681720F48E :1045A000861B8093120102C01092120180911201A9 -:1045B0001F928F938BE893E09F938F930E943F0607 +:1045B0001F928F938CE893E09F938F930E94400605 :1045C0000F900F900F900F900895CF93C82F1F92C8 -:1045D0008F9380E996E09F938F930E943F0681E03E +:1045D0008F9381E996E09F938F930E94400681E03C :1045E00090E0A0E0B0E0BC01CD0104C0660F771FF1 :1045F000881F991FCA95D2F70E947F190F900F90BC :104600000F900F90CF910C94E711CF938732B0F5B4 :104610008E3108F040C28E3009F4BEC100F58730FB :1046200009F48DC1A8F4863009F039C28091F502F1 -:10463000817F8E7F8093F50285E996E00E94A60532 -:1046400080E99AE00E94A60581E08093050375C188 +:10463000817F8E7F8093F50286E996E00E94A70530 +:1046400082E99AE00E94A70581E08093050375C185 :10465000883009F43FC08B3009F46BC120C2863129 :1046600009F4E0C120F4803109F4AAC118C28931EB :1046700009F4C1C18B3109F47BC111C2883309F43B :1046800058C150F4893209F404C2853309F401C2D7 :10469000873209F004C2FDC1833409F4FAC128F459 :1046A0008A3308F4FCC18953F7C1883409F0F7C193 -:1046B0000E94E7118FE79AE00E94A6059FEF23ED85 +:1046B0000E94E71181E89AE00E94A7059FEF23ED91 :1046C00080E3915020408040E1F700C000000E944C -:1046D000C01C33C184E99AE00E94A6058CE898E0EA -:1046E0000E94A6050E94E91E1F928F9389E898E018 -:1046F0009F938F930E943F0687E898E00E94A6054B -:104700000E94E01EC82F84E798E00E94A6051F9231 -:10471000CF938FE698E09F938F930E943F068DE69C -:1047200098E00E94A60583E698E00E94A6058C2FDB -:1047300081701F928F9380E698E09F938F930E94E1 -:104740003F068EE598E00E94A60584E598E00E9469 -:10475000A605C1FB882780F91F928F9381E598E019 -:104760009F938F930E943F068FE498E00E94A605D6 -:1047700083E498E00E94A605C2FB882780F91F9277 -:104780008F9380E498E09F938F930E943F068EE37F -:1047900098E00E94A60585E398E00E94A605C3FB69 -:1047A000CC27C0F91F92CF9382E398E09F938F9319 -:1047B0000E943F0680E398E00E94A6050E94F21E38 -:1047C000C82F8CE198E00E94A6051F92CF9387E145 -:1047D00098E09F938F930E943F0685E198E00E94A6 -:1047E000A6058CEF97E00E94A6058C2F81701F9282 -:1047F0008F9389EF97E09F938F930E943F068DB729 -:104800009EB780960FB6F8949EBF0FBE8DBF87EF00 -:1048100097E00E94A60580EE97E00E94A605C1FBE6 -:10482000882780F91F928F938DED97E09F938F9348 -:104830000E943F068BED97E00E94A60589EC97E069 -:104840000E94A605C2FB882780F91F928F9386ECF1 -:1048500097E09F938F930E943F0684EC97E00E941D -:10486000A60582EB97E00E94A605C3FB882780F986 -:104870001F928F938FEA97E09F938F930E943F063A -:104880008DEA97E00E94A60583EA97E00E94A605BC -:10489000C4FB882780F91F928F9380EA97E09F934B -:1048A0008F930E943F068EE997E00E94A6058CE850 -:1048B00097E00E94A605C5FB882780F91F928F9379 -:1048C00089E897E09F938F930E943F0687E897E0DF -:1048D0000E94A6058BE697E00E94A605C6FB8827E6 -:1048E00080F91F928F9388E697E09F938F930E94A1 -:1048F0003F0686E697E00E94A6058EE597E00E94B7 -:10490000A605C7FBCC27C0F91F92CF938BE597E094 -:104910009F938F930E943F0689E597E00E94A6052A +:1046D000C01C33C186E99AE00E94A7058DE898E0E6 +:1046E0000E94A7050E94E91E1F928F938AE898E016 +:1046F0009F938F930E94400688E898E00E94A70548 +:104700000E94E01EC82F85E798E00E94A7051F922F +:10471000CF9380E798E09F938F930E9440068EE6A8 +:1047200098E00E94A70584E698E00E94A7058C2FD8 +:1047300081701F928F9381E698E09F938F930E94E0 +:1047400040068FE598E00E94A70585E598E00E9465 +:10475000A705C1FB882780F91F928F9382E598E017 +:104760009F938F930E94400680E598E00E94A705E2 +:1047700084E498E00E94A705C2FB882780F91F9275 +:104780008F9381E498E09F938F930E9440068FE37C +:1047900098E00E94A70586E398E00E94A705C3FB66 +:1047A000CC27C0F91F92CF9383E398E09F938F9318 +:1047B0000E94400681E398E00E94A7050E94F21E35 +:1047C000C82F8DE198E00E94A7051F92CF9388E142 +:1047D00098E09F938F930E94400686E198E00E94A4 +:1047E000A7058DEF97E00E94A7058C2F81701F927F +:1047F0008F938AEF97E09F938F930E9440068DB727 +:104800009EB780960FB6F8949EBF0FBE8DBF88EFFF +:1048100097E00E94A70581EE97E00E94A705C1FBE3 +:10482000882780F91F928F938EED97E09F938F9347 +:104830000E9440068CED97E00E94A7058AEC97E065 +:104840000E94A705C2FB882780F91F928F9387ECEF +:1048500097E09F938F930E94400685EC97E00E941B +:10486000A70583EB97E00E94A705C3FB882780F983 +:104870001F928F9380EB97E09F938F930E94400647 +:104880008EEA97E00E94A70584EA97E00E94A705B8 +:10489000C4FB882780F91F928F9381EA97E09F934A +:1048A0008F930E9440068FE997E00E94A7058DE84C +:1048B00097E00E94A705C5FB882780F91F928F9378 +:1048C0008AE897E09F938F930E94400688E897E0DC +:1048D0000E94A7058CE697E00E94A705C6FB8827E3 +:1048E00080F91F928F9389E697E09F938F930E94A0 +:1048F000400687E697E00E94A7058FE597E00E94B3 +:10490000A705C7FBCC27C0F91F92CF938CE597E092 +:104910009F938F930E9440068AE597E00E94A70527 :104920008DB79EB74C960FB6F8949EBF0FBE8DBF45 -:1049300004C08CEB96E00E94A605C1E0B5C0809152 -:10494000F502C82FC17080FF09C082E79AE00E947B -:10495000A6058091F502817F8E7F47C086E69AE0AA -:104960000E94A6058091F50281608093F502E5CF53 +:1049300004C08DEB96E00E94A705C1E0B5C0809150 +:10494000F502C82FC17080FF09C084E79AE00E9479 +:10495000A7058091F502817F8E7F47C088E69AE0A7 +:104960000E94A7058091F50281608093F502E5CF52 :104970009091F50291FBCC27C0F981E0C827892FDF -:10498000C0FB81F98093F502CC2319F089E59AE008 -:1049900027C08BE49AE0CFCF9091F50292FBCC2711 +:10498000C0FB81F98093F502CC2319F08BE59AE006 +:1049900027C08DE49AE0CFCF9091F50292FBCC270F :1049A000C0F981E0C827892FC0FB82F98093F50206 -:1049B000CC2319F08CE39AE013C08CE29AE0BBCFD1 +:1049B000CC2319F08EE39AE013C08EE29AE0BBCFCD :1049C0009091F50293FBCC27C0F981E0C827892F8D -:1049D000C0FB83F98093F502CC2351F080E29AE08A -:1049E0000E94A6058091F50281608093F5025CC06B -:1049F00083E19AE0A0CF84E09AE00E94A6058CEDC6 -:104A000099E00E94A6058AEA99E00E94A60582E83C -:104A100099E00E94A60583E399E00E94A60587E03D -:104A200099E089CF89EF98E00E94A6050E94C50E03 -:104A30001F928F938FED98E09F938F930E943F0674 -:104A400080910F011F928F9388EC98E09F938F9332 -:104A50000E943F0680915A021F928F9385EB98E047 -:104A60009F938F930E943F060E94651C9F938F9394 -:104A70007F936F938EE998E09F938F930E943F06F8 +:1049D000C0FB83F98093F502CC2351F082E29AE088 +:1049E0000E94A7058091F50281608093F5025CC06A +:1049F00085E19AE0A0CF86E09AE00E94A7058EEDBF +:104A000099E00E94A7058CEA99E00E94A70583E837 +:104A100099E00E94A70584E399E00E94A70588E039 +:104A200099E089CF8AEF98E00E94A7050E94C50E01 +:104A30001F928F9380EE98E09F938F930E94400681 +:104A400080910F011F928F9389EC98E09F938F9331 +:104A50000E94400680915A021F928F9386EB98E045 +:104A60009F938F930E9440060E94651C9F938F9393 +:104A70007F936F938FE998E09F938F930E944006F6 :104A80008DB79EB742960FB6F8949EBF0FBE8DBFEE -:104A900054CF80E001C08D510E94E5224ECF8CE9B9 -:104AA00098E00E94A605C0E08C2FCF91089580E089 +:104A900054CF80E001C08D510E94E5224ECF8DE9B8 +:104AA00098E00E94A705C0E08C2FCF91089580E088 :104AB00008950C945725CF93C82F8091050381301A :104AC00071F020F0823009F44BC042C1E091100136 :104AD000F09111018081823209F03CC107C0E09160 @@ -1200,41 +1200,41 @@ :104AF0005925811104C08C2F0E9405232FC081E00D :104B000090E02CC08C2F0E945725811126C0C43103 :104B1000E1F070F4CB3081F0C031D1F40E94AD21CE -:104B200088E896E00E94A60582E08093050315C000 -:104B3000C93259F0C83361F485E996E00E94A605B0 -:104B40008CE896E00E94A60508C01092050304C1F7 -:104B500086E896E00E94A605FFC081E08170FEC055 +:104B200089E896E00E94A70582E08093050315C0FE +:104B3000C93259F0C83361F486E996E00E94A705AE +:104B40008DE896E00E94A70508C01092050304C1F5 +:104B500087E896E00E94A705FFC081E08170FEC053 :104B6000C43228F5CE3108F0C1C0CB30A1F1D0F469 :104B7000C73009F0D3C08EE18093170182E38093A0 :104B800016018AE08093150184E18093140188E086 -:104B90008093130188E2809312018CE295E00E94D9 -:104BA000A605BFC0C33149F1C431C1F0B7C0CB3491 +:104B90008093130188E2809312018DE295E00E94D8 +:104BA000A705BFC0C33149F1C431C1F0B7C0CB3490 :104BB00009F4A9C028F4C93289F0C83361F0AEC045 :104BC000C13509F49EC0C23509F499C0CE3409F04C :104BD000A5C06AE09EC00E94AD21A3C080910403DD -:104BE000882319F0109204039CC089E395E00E9489 -:104BF000A60581E080930503B1C083E195E00E94A2 -:104C0000A60581E095E00E94A605809117011F92FC -:104C10008F938EEF94E09F938F930E943F068CEFCB -:104C200094E00E94A6058AEE94E00E94A605809179 -:104C300016011F928F9387EE94E09F938F930E94AB -:104C40003F0685EE94E00E94A60586ED94E00E9462 -:104C5000A605809115011F928F9383ED94E09F9399 -:104C60008F930E943F0681ED94E00E94A60580ECA0 -:104C700094E00E94A605809114011F928F938DEB02 -:104C800094E09F938F930E943F068BEB94E00E94E9 -:104C9000A60586EA94E00E94A605809113011F9262 -:104CA0008F9383EA94E09F938F930E943F0681EA5B -:104CB00094E00E94A6058AE894E00E94A6058091EF -:104CC00012011F928F9387E894E09F938F930E9425 -:104CD0003F0685E894E00E94A6058DB79EB74896EA +:104BE000882319F0109204039CC08AE395E00E9488 +:104BF000A70581E080930503B1C084E195E00E94A0 +:104C0000A70582E095E00E94A705809117011F92F9 +:104C10008F938FEF94E09F938F930E9440068DEFC8 +:104C200094E00E94A7058BEE94E00E94A705809176 +:104C300016011F928F9388EE94E09F938F930E94AA +:104C4000400686EE94E00E94A70587ED94E00E945E +:104C5000A705809115011F928F9384ED94E09F9397 +:104C60008F930E94400682ED94E00E94A70581EC9C +:104C700094E00E94A705809114011F928F938EEB00 +:104C800094E09F938F930E9440068CEB94E00E94E7 +:104C9000A70587EA94E00E94A705809113011F925F +:104CA0008F9384EA94E09F938F930E94400682EA58 +:104CB00094E00E94A7058BE894E00E94A7058091EC +:104CC00012011F928F9388E894E09F938F930E9424 +:104CD000400686E894E00E94A7058DB79EB74896E7 :104CE0000FB6F8949EBF0FBE8DBF1BC0CE51EC2FE8 :104CF000F0E0E35DFE4F80818093040312C061E029 :104D000003C061E006C06AE0809104030E94C421F0 -:104D100008C0809104030E94672203C08AE295E0E4 -:104D200013C080910403882369F01F928F9384E25B -:104D300095E09F938F930E943F060F900F900F90E6 -:104D40000F9004C081E295E00E94A60581E006C0B4 +:104D100008C0809104030E94672203C08BE295E0E3 +:104D200013C080910403882369F01F928F9385E25A +:104D300095E09F938F930E9440060F900F900F90E5 +:104D40000F9004C082E295E00E94A70581E006C0B2 :104D50001092050380E002C080E000CFCF9108955B :104D60000E94B7266894B1110C94462708950E94BA :104D70002B2788F09F5798F0B92F9927B751B0F09B @@ -1291,8 +1291,8 @@ :1050A000E1BDF89A319600B40D9241505040B8F7E6 :0650B0000895F894FFCF03 :1050B60051010000FF2107B1078E07580724070199 -:1050C600EB022808140A321E404D36228D02400299 -:1050D6000A02E80174018D01A601BF010001020365 +:1050C600EB022808140A321E404D36228E02410297 +:1050D6000B02E90175018E01A701C001000102035F :0850E60004050607080900009B :106800000000000000000000040005000600070072 :10681000080009000A000B000C000D000E000F001C