diff options
Diffstat (limited to 'keyboard')
33 files changed, 10562 insertions, 1654 deletions
diff --git a/keyboard/arrow_pad/Makefile b/keyboard/arrow_pad/Makefile new file mode 100644 index 0000000000..2c4ee0cae5 --- /dev/null +++ b/keyboard/arrow_pad/Makefile @@ -0,0 +1,158 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# Target file name (without extension). +TARGET = arrow_pad + + +# Directory common source filess exist +TOP_DIR = ../.. +TMK_DIR = ../../tmk_core + +# Directory keyboard dependent files exist +TARGET_DIR = . + +# # project specific files +SRC = arrow_pad.c + +ifdef KEYMAP + SRC := keymaps/$(KEYMAP).c $(SRC) +else + SRC := keymaps/default.c $(SRC) +endif + +CONFIG_H = config.h + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +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 +KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 + + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +# Optimize size but this may cause error "relocation truncated to fit" +#EXTRALDFLAGS = -Wl,--relax + +# Search Path +VPATH += $(TARGET_DIR) +VPATH += $(TOP_DIR) +VPATH += $(TMK_DIR) + +include $(TOP_DIR)/quantum/quantum.mk + diff --git a/keyboard/arrow_pad/README.md b/keyboard/arrow_pad/README.md new file mode 100644 index 0000000000..f669ad6a12 --- /dev/null +++ b/keyboard/arrow_pad/README.md @@ -0,0 +1,24 @@ +arrow_pad keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent README.md](/README.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboard/arrow_pad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +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 `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +``` +$ make KEYMAP=[default|jack|<name>] +``` +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
\ No newline at end of file diff --git a/keyboard/arrow_pad/arrow_pad.c b/keyboard/arrow_pad/arrow_pad.c new file mode 100644 index 0000000000..f29c2c53fe --- /dev/null +++ b/keyboard/arrow_pad/arrow_pad.c @@ -0,0 +1,114 @@ +#include "arrow_pad.h" + +__attribute__ ((weak)) +void matrix_init_user(void) { + // leave this function blank - it can be defined in a keymap file +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + // leave this function blank - it can be defined in a keymap file +} + +__attribute__ ((weak)) +bool process_action_user(keyrecord_t *record) { + // leave this function blank - it can be defined in a keymap file + return true; +} + +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) { + // leave this function blank - it can be defined in a keymap file +} + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + +#ifdef BACKLIGHT_ENABLE + backlight_init_ports(); +#endif + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_action_kb(keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_action_user(record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} + +#ifdef BACKLIGHT_ENABLE +#define CHANNEL OCR1C + +void backlight_init_ports() +{ + + // Setup PB7 as output and output low. + DDRB |= (1<<7); + PORTB &= ~(1<<7); + + // Use full 16-bit resolution. + ICR1 = 0xFFFF; + + // I could write a wall of text here to explain... but TL;DW + // Go read the ATmega32u4 datasheet. + // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on + + // Pin PB7 = OCR1C (Timer 1, Channel C) + // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 + // (i.e. start high, go low when counter matches.) + // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 + // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 + + TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; + TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; + + backlight_init(); +} + +void backlight_set(uint8_t level) +{ + if ( level == 0 ) + { + // Turn off PWM control on PB7, revert to output low. + TCCR1A &= ~(_BV(COM1C1)); + CHANNEL = 0x0; + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + } + else if ( level == BACKLIGHT_LEVELS ) + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF; + } + else + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } +} + +#endif
\ No newline at end of file diff --git a/keyboard/arrow_pad/arrow_pad.h b/keyboard/arrow_pad/arrow_pad.h new file mode 100644 index 0000000000..2026b52d1d --- /dev/null +++ b/keyboard/arrow_pad/arrow_pad.h @@ -0,0 +1,18 @@ +#ifndef ARROW_PAD_H +#define ARROW_PAD_H + +#include "matrix.h" +#include "keymap_common.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#include <avr/io.h> +#include <stddef.h> + +void matrix_init_user(void); +void matrix_scan_user(void); +bool process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); + +#endif diff --git a/keyboard/arrow_pad/config.h b/keyboard/arrow_pad/config.h new file mode 100644 index 0000000000..9e85f3ccf6 --- /dev/null +++ b/keyboard/arrow_pad/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4096 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nobody +#define PRODUCT GoldPad +#define DESCRIPTION A custom keyboard + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B0, B1, B2, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/arrow_pad/keymaps/default.c b/keyboard/arrow_pad/keymaps/default.c new file mode 100644 index 0000000000..5647f75afe --- /dev/null +++ b/keyboard/arrow_pad/keymaps/default.c @@ -0,0 +1,163 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "arrow_pad.h" +#include "led.h" + +// This is the 21-key keypad to 2x11 element matrix mapping +#define KEYMAP( \ + KM_ESC, KM_TAB, KM_BSL, KM_ARR, \ + KM_NUM, KM_FSL, KM_AST, KM_MIN, \ + KM___7, KM___8, KM___9, KM_EQU, \ + KM___4, KM___5, KM___6, KM_PLS, \ + KM___1, KM___2, KM___3, ___ENT, \ + KM___0, _____0, KM_DOT, KM_ENT \ +) { \ + { KM_ESC, KM_TAB, KM_BSL, KM_ARR }, \ + { KM_NUM, KM_FSL, KM_AST, KM_MIN }, \ + { KM___7, KM___8, KM___9, KM_EQU }, \ + { KM___4, KM___5, KM___6, KM_PLS }, \ + { KM___1, KM___2, KM___3, KC_NO }, \ + { KM___0, KC_NO, KM_DOT, KM_ENT } \ +} + +#define LAYER_BASE 0 +#define LAYER_EDIT 1 +#define LAYER_FUNCTION 2 + +#define MACRO_COPY_CUT 0 +#define MACRO_SHIFT_CONTROL 1 +#define MACRO_CONTROL_ALT 2 + +#define M_COPY KC_FN5 +#define M_SHFCT KC_FN6 +#define M_CTALT KC_FN7 + +#define SC_UNDO LCTL(KC_Z) +#define SC_REDO LCTL(KC_Y) +#define SC_CUT LCTL(KC_X) +#define SC_COPY LCTL(KC_C) +#define SC_PSTE LCTL(KC_V) +#define SC_SELA LCTL(KC_A) +#define SC_SAVE LCTL(KC_S) +#define SC_OPEN LCTL(KC_O) +#define SC_ACLS LALT(KC_F4) +#define SC_CCLS LCTL(KC_F4) + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[LAYER_BASE] = KEYMAP( \ + KC_ESC, KC_TAB, KC_BSLS, KC_FN0, \ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_P7, KC_P8, KC_P9, KC_PEQL, \ + KC_P4, KC_P5, KC_P6, KC_PPLS, \ + KC_P1, KC_P2, KC_P3, XXXXXXX, \ + KC_P0, KC_PCMM, KC_PDOT, KC_PENT ), + +[LAYER_EDIT] = KEYMAP( \ + KC_ESC, KC_TAB, KC_SPC, _______, \ + KC_FN1, SC_PSTE, SC_REDO, SC_UNDO, \ + KC_HOME, KC_UP, KC_PGUP, KC_LALT, \ + KC_LEFT, M_COPY, KC_RGHT, KC_LCTL, \ + KC_END, KC_DOWN, KC_PGDN, XXXXXXX, \ + KC_BSPC, KC_PENT, KC_DEL, M_SHFCT), + +[LAYER_FUNCTION] = KEYMAP( \ + KC_FN2, KC_FN3, KC_FN4, _______, \ + KC_FN1, _______, _______, _______, \ + _______, _______, _______, _______, \ + _______, _______, _______, _______, \ + _______, _______, _______, XXXXXXX, \ + RESET, _______, _______, _______ ), + +}; + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(LAYER_FUNCTION), + [1] = ACTION_LAYER_TOGGLE(LAYER_EDIT), + [2] = ACTION_BACKLIGHT_TOGGLE(), + [3] = ACTION_BACKLIGHT_INCREASE(), + [4] = ACTION_BACKLIGHT_DECREASE(), + [5] = ACTION_MACRO_TAP(MACRO_COPY_CUT), + [6] = ACTION_MACRO_TAP(MACRO_SHIFT_CONTROL), + [7] = ACTION_MACRO_TAP(MACRO_CONTROL_ALT), + +}; + + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +} + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch (id) { + + case MACRO_COPY_CUT: + if (record->event.pressed) { + register_code(KC_LCTL); + if (record->tap.count == 1) { + register_code(KC_C); + unregister_code(KC_C); + } + else if (record->tap.count == 2) { + register_code(KC_X); + unregister_code(KC_X); + } + unregister_code(KC_LCTL); + } + break; + + case MACRO_SHIFT_CONTROL: + if (record->event.pressed) { + if (record->tap.count <= 2) register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count == 2) register_mods(MOD_BIT(KC_LCTL)); + if (record->tap.count == 3) register_code(KC_PENT);; + } + else { + unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL)); + unregister_code(KC_PENT); + } + break; + + case MACRO_CONTROL_ALT: + if (record->event.pressed) { + if (record->tap.count < 2) register_mods(MOD_BIT(KC_LCTL)); + if (record->tap.count >= 2) register_mods(MOD_BIT(KC_LALT)); + } + else { + unregister_mods(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); + } + break; + } + + return MACRO_NONE; +} + +void led_set_user(uint8_t usb_led) +{ + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // output high + DDRD |= (1<<6); + PORTD |= (1<<6); + } else { + // Hi-Z + DDRD &= ~(1<<6); + PORTD &= ~(1<<6); + } + if (usb_led & (1<<USB_LED_NUM_LOCK)) { + // output low + DDRC |= (1<<7); + PORTC |= ~(1<<7); + } else { + // Hi-Z + DDRC &= ~(1<<7); + PORTC &= ~(1<<7); + } +}
\ No newline at end of file diff --git a/keyboard/arrow_pad/keymaps/pad_21/config.h b/keyboard/arrow_pad/keymaps/pad_21/config.h new file mode 100644 index 0000000000..a095e87374 --- /dev/null +++ b/keyboard/arrow_pad/keymaps/pad_21/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4097 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nobody +#define PRODUCT Arrow Pad 21 +#define DESCRIPTION 21-Key QMK Assistant + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 11 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D3, D5 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/arrow_pad/keymaps/pad_21/keymap.c b/keyboard/arrow_pad/keymaps/pad_21/keymap.c new file mode 100644 index 0000000000..28917a5d9e --- /dev/null +++ b/keyboard/arrow_pad/keymaps/pad_21/keymap.c @@ -0,0 +1,160 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "arrow_pad.h" +#include "led.h" + +// This is the 21-key keypad to 2x11 element matrix mapping +#define KEYMAP( \ + KM_ESC, KM_TAB, KM_BSL, KM_ARR, \ + KM_NUM, KM_FSL, KM_AST, KM_MIN, \ + KM___7, KM___8, KM___9, ___PLS, \ + KM___4, KM___5, KM___6, KM_PLS, \ + KM___1, KM___2, KM___3, ___ENT, \ + KM___0, _____0, KM_DOT, KM_ENT \ +) { \ + { KM_ESC, KM_TAB, KM_BSL, KM_ARR, KM___7, KM___8, KM___9, KM_PLS, KM___1, KM___2, KM___3, }, \ + { KM_NUM, KM_FSL, KM_AST, KM_MIN, KM___4, KM___5, KM___6, KM_ENT, KC_NO, KM___0, KM_DOT, }, \ +} + + +#define LAYER_BASE 0 +#define LAYER_EDIT 1 +#define LAYER_FUNCTION 2 + +#define MACRO_COPY_CUT 0 +#define MACRO_SHIFT_CONTROL 1 +#define MACRO_CONTROL_ALT 2 + +#define M_COPY KC_FN5 +#define M_SHFCT KC_FN6 +#define M_CTALT KC_FN7 + +#define SC_UNDO LCTL(KC_Z) +#define SC_REDO LCTL(KC_Y) +#define SC_CUT LCTL(KC_X) +#define SC_COPY LCTL(KC_C) +#define SC_PSTE LCTL(KC_V) +#define SC_SELA LCTL(KC_A) +#define SC_SAVE LCTL(KC_S) +#define SC_OPEN LCTL(KC_O) +#define SC_ACLS LALT(KC_F4) +#define SC_CCLS LCTL(KC_F4) + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[LAYER_BASE] = KEYMAP( \ + KC_ESC, KC_TAB, KC_BSLS, KC_FN0, \ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_P7, KC_P8, KC_P9, XXXXXXX, \ + KC_P4, KC_P5, KC_P6, KC_PPLS, \ + KC_P1, KC_P2, KC_P3, XXXXXXX, \ + KC_P0, XXXXXXX, KC_PDOT, KC_PENT ), + +[LAYER_EDIT] = KEYMAP( \ + KC_ESC, KC_TAB, KC_SPC, _______, \ + KC_FN1, SC_PSTE, SC_REDO, SC_UNDO, \ + KC_HOME, KC_UP, KC_PGUP, XXXXXXX, \ + KC_LEFT, M_COPY, KC_RGHT, M_CTALT, \ + KC_END, KC_DOWN, KC_PGDN, XXXXXXX, \ + KC_BSPC, XXXXXXX, KC_DEL, M_SHFCT), + +[LAYER_FUNCTION] = KEYMAP( \ + KC_FN2, KC_FN3, KC_FN4, _______, \ + KC_FN1, _______, _______, _______, \ + _______, _______, _______, XXXXXXX, \ + _______, _______, _______, _______, \ + _______, _______, _______, XXXXXXX, \ + RESET, XXXXXXX, _______, _______ ), + +}; + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(LAYER_FUNCTION), + [1] = ACTION_LAYER_TOGGLE(LAYER_EDIT), + [2] = ACTION_BACKLIGHT_TOGGLE(), + [3] = ACTION_BACKLIGHT_INCREASE(), + [4] = ACTION_BACKLIGHT_DECREASE(), + [5] = ACTION_MACRO_TAP(MACRO_COPY_CUT), + [6] = ACTION_MACRO_TAP(MACRO_SHIFT_CONTROL), + [7] = ACTION_MACRO_TAP(MACRO_CONTROL_ALT), + +}; + + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +} + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch (id) { + + case MACRO_COPY_CUT: + if (record->event.pressed) { + register_code(KC_LCTL); + if (record->tap.count == 1) { + register_code(KC_C); + unregister_code(KC_C); + } + else if (record->tap.count == 2) { + register_code(KC_X); + unregister_code(KC_X); + } + unregister_code(KC_LCTL); + } + break; + + case MACRO_SHIFT_CONTROL: + if (record->event.pressed) { + if (record->tap.count <= 2) register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count == 2) register_mods(MOD_BIT(KC_LCTL)); + if (record->tap.count == 3) register_code(KC_PENT);; + } + else { + unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL)); + unregister_code(KC_PENT); + } + break; + + case MACRO_CONTROL_ALT: + if (record->event.pressed) { + if (record->tap.count < 2) register_mods(MOD_BIT(KC_LCTL)); + if (record->tap.count >= 2) register_mods(MOD_BIT(KC_LALT)); + } + else { + unregister_mods(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); + } + break; + } + + return MACRO_NONE; +} + +void led_set_user(uint8_t usb_led) +{ + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // output high + DDRD |= (1<<6); + PORTD |= (1<<6); + } else { + // Hi-Z + DDRD &= ~(1<<6); + PORTD &= ~(1<<6); + } + if (usb_led & (1<<USB_LED_NUM_LOCK)) { + // output low + DDRC |= (1<<7); + PORTC |= ~(1<<7); + } else { + // Hi-Z + DDRC &= ~(1<<7); + PORTC &= ~(1<<7); + } +}
\ No newline at end of file diff --git a/keyboard/arrow_pad/keymaps/pad_21/makefile.mk b/keyboard/arrow_pad/keymaps/pad_21/makefile.mk new file mode 100644 index 0000000000..af51976a89 --- /dev/null +++ b/keyboard/arrow_pad/keymaps/pad_21/makefile.mk @@ -0,0 +1,17 @@ +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +CONFIG_H = keymaps/$(KEYMAP)/config.h
\ No newline at end of file diff --git a/keyboard/arrow_pad/keymaps/pad_24/config.h b/keyboard/arrow_pad/keymaps/pad_24/config.h new file mode 100644 index 0000000000..75369c047f --- /dev/null +++ b/keyboard/arrow_pad/keymaps/pad_24/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4096 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nobody +#define PRODUCT Arrow Pad 24 +#define DESCRIPTION 24-Key QMK Assistant + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B0, B1, B2, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/arrow_pad/keymaps/pad_24/keymap.c b/keyboard/arrow_pad/keymaps/pad_24/keymap.c new file mode 100644 index 0000000000..5647f75afe --- /dev/null +++ b/keyboard/arrow_pad/keymaps/pad_24/keymap.c @@ -0,0 +1,163 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "arrow_pad.h" +#include "led.h" + +// This is the 21-key keypad to 2x11 element matrix mapping +#define KEYMAP( \ + KM_ESC, KM_TAB, KM_BSL, KM_ARR, \ + KM_NUM, KM_FSL, KM_AST, KM_MIN, \ + KM___7, KM___8, KM___9, KM_EQU, \ + KM___4, KM___5, KM___6, KM_PLS, \ + KM___1, KM___2, KM___3, ___ENT, \ + KM___0, _____0, KM_DOT, KM_ENT \ +) { \ + { KM_ESC, KM_TAB, KM_BSL, KM_ARR }, \ + { KM_NUM, KM_FSL, KM_AST, KM_MIN }, \ + { KM___7, KM___8, KM___9, KM_EQU }, \ + { KM___4, KM___5, KM___6, KM_PLS }, \ + { KM___1, KM___2, KM___3, KC_NO }, \ + { KM___0, KC_NO, KM_DOT, KM_ENT } \ +} + +#define LAYER_BASE 0 +#define LAYER_EDIT 1 +#define LAYER_FUNCTION 2 + +#define MACRO_COPY_CUT 0 +#define MACRO_SHIFT_CONTROL 1 +#define MACRO_CONTROL_ALT 2 + +#define M_COPY KC_FN5 +#define M_SHFCT KC_FN6 +#define M_CTALT KC_FN7 + +#define SC_UNDO LCTL(KC_Z) +#define SC_REDO LCTL(KC_Y) +#define SC_CUT LCTL(KC_X) +#define SC_COPY LCTL(KC_C) +#define SC_PSTE LCTL(KC_V) +#define SC_SELA LCTL(KC_A) +#define SC_SAVE LCTL(KC_S) +#define SC_OPEN LCTL(KC_O) +#define SC_ACLS LALT(KC_F4) +#define SC_CCLS LCTL(KC_F4) + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[LAYER_BASE] = KEYMAP( \ + KC_ESC, KC_TAB, KC_BSLS, KC_FN0, \ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_P7, KC_P8, KC_P9, KC_PEQL, \ + KC_P4, KC_P5, KC_P6, KC_PPLS, \ + KC_P1, KC_P2, KC_P3, XXXXXXX, \ + KC_P0, KC_PCMM, KC_PDOT, KC_PENT ), + +[LAYER_EDIT] = KEYMAP( \ + KC_ESC, KC_TAB, KC_SPC, _______, \ + KC_FN1, SC_PSTE, SC_REDO, SC_UNDO, \ + KC_HOME, KC_UP, KC_PGUP, KC_LALT, \ + KC_LEFT, M_COPY, KC_RGHT, KC_LCTL, \ + KC_END, KC_DOWN, KC_PGDN, XXXXXXX, \ + KC_BSPC, KC_PENT, KC_DEL, M_SHFCT), + +[LAYER_FUNCTION] = KEYMAP( \ + KC_FN2, KC_FN3, KC_FN4, _______, \ + KC_FN1, _______, _______, _______, \ + _______, _______, _______, _______, \ + _______, _______, _______, _______, \ + _______, _______, _______, XXXXXXX, \ + RESET, _______, _______, _______ ), + +}; + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(LAYER_FUNCTION), + [1] = ACTION_LAYER_TOGGLE(LAYER_EDIT), + [2] = ACTION_BACKLIGHT_TOGGLE(), + [3] = ACTION_BACKLIGHT_INCREASE(), + [4] = ACTION_BACKLIGHT_DECREASE(), + [5] = ACTION_MACRO_TAP(MACRO_COPY_CUT), + [6] = ACTION_MACRO_TAP(MACRO_SHIFT_CONTROL), + [7] = ACTION_MACRO_TAP(MACRO_CONTROL_ALT), + +}; + + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +} + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch (id) { + + case MACRO_COPY_CUT: + if (record->event.pressed) { + register_code(KC_LCTL); + if (record->tap.count == 1) { + register_code(KC_C); + unregister_code(KC_C); + } + else if (record->tap.count == 2) { + register_code(KC_X); + unregister_code(KC_X); + } + unregister_code(KC_LCTL); + } + break; + + case MACRO_SHIFT_CONTROL: + if (record->event.pressed) { + if (record->tap.count <= 2) register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count == 2) register_mods(MOD_BIT(KC_LCTL)); + if (record->tap.count == 3) register_code(KC_PENT);; + } + else { + unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL)); + unregister_code(KC_PENT); + } + break; + + case MACRO_CONTROL_ALT: + if (record->event.pressed) { + if (record->tap.count < 2) register_mods(MOD_BIT(KC_LCTL)); + if (record->tap.count >= 2) register_mods(MOD_BIT(KC_LALT)); + } + else { + unregister_mods(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); + } + break; + } + + return MACRO_NONE; +} + +void led_set_user(uint8_t usb_led) +{ + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // output high + DDRD |= (1<<6); + PORTD |= (1<<6); + } else { + // Hi-Z + DDRD &= ~(1<<6); + PORTD &= ~(1<<6); + } + if (usb_led & (1<<USB_LED_NUM_LOCK)) { + // output low + DDRC |= (1<<7); + PORTC |= ~(1<<7); + } else { + // Hi-Z + DDRC &= ~(1<<7); + PORTC &= ~(1<<7); + } +}
\ No newline at end of file diff --git a/keyboard/arrow_pad/keymaps/pad_24/makefile.mk b/keyboard/arrow_pad/keymaps/pad_24/makefile.mk new file mode 100644 index 0000000000..e31bfe1af2 --- /dev/null +++ b/keyboard/arrow_pad/keymaps/pad_24/makefile.mk @@ -0,0 +1,17 @@ +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +CONFIG_H = keymaps/$(KEYMAP)/config.h
\ No newline at end of file diff --git a/keyboard/atomic/flash-pcb.sh b/keyboard/atomic/flash-pcb.sh deleted file mode 100755 index 46abc6982a..0000000000 --- a/keyboard/atomic/flash-pcb.sh +++ /dev/null @@ -1,3 +0,0 @@ -dfu-programmer atmega32u4 erase --force -dfu-programmer atmega32u4 flash atomic_pcb.hex -dfu-programmer atmega32u4 reset
\ No newline at end of file diff --git a/keyboard/ergodox_ez/keymaps/bepo/README.md b/keyboard/ergodox_ez/keymaps/bepo/README.md new file mode 100644 index 0000000000..338909ed99 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/bepo/README.md @@ -0,0 +1,34 @@ +# BEPO keymap for the ErgoDox + +This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this README will be in french. + +# Disposition BÉPO pour l'ErgoDox + +Cette keymap a été pensée pour la disposition BÉPO (http://bepo.fr), qui est une disposition de clavier francophone, ergonomique et libre, élaborée selon la méthode Dvorak. L'adaptation de cette disposition à l'ErgoDox a été réalisée en conservant les points forts du clavier TypeMatrix 2030 (très répandu dans la communauté bépo, avec un excellent rapport ergonomie / prix) voir en réglant certains de ses défauts (3 colonnes pour l'auriculaire droit et touche "Ê") et en apportant son lot de nouveautés (compatibilité avec les systèmes azerty et qwerty). + +Particularités +-------------- + +Touches de repos des pouces : "espace" à gauche et "entrée" à droite. + +Placement des touches de combinaison ("Shift", "Alt", "Ctrl"...) adapté aux pouces, et permettant de conserver chaque doigt pour les rangées de lettres auxquelles ils sont assignés sans avoir à changer la touche de combinaison de côté (exemple : "A" majuscule puis "M" majuscule avec les auriculaires et un seul appui d'une touche "Shift"). + +Les touches "Alt" et "Alt Gr" sont accessibles avec les pouces sur la rangée du bas comme sur la TypeMatrix 2030, avec une symétrie gauche / droite. + +Les touches "Ctrl" sont placées sur la même ligne que les touche "Alt" et "Alt Gr" comme sur un clavier clasique, elles sont accessibles aux pouces sur la rangée du bas (moins éloigné que le groupe de touches de pouces pour des petites mains). + +Les touches "Backspace" et "Delete" sont placées comme sur la TypeMatrix 2030, du côté gauche uniquement (pour laisser celles de la main droite servir de {caps,num,scroll}lock puisqu'elles ont des LED). + +La touche "Tab" est placée comme sur la TypeMatrix 2020. + +Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO". + +Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long). + +Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0". + +L'appui sur une touche permet de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle. + +TODO : couche de compatibilité pour utiliser la disposition BÉPO sur un système configuré pour un clavier AZERTY. + +> Olivier Smedts <olivier@gid0.org> diff --git a/keyboard/ergodox_ez/keymaps/bepo/bepo.hex b/keyboard/ergodox_ez/keymaps/bepo/bepo.hex new file mode 100644 index 0000000000..0456ea21d0 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/bepo/bepo.hex @@ -0,0 +1,1193 @@ +:100000000C94D2030C9419040C9419040C94190444
+:100010000C9419040C9419040C9419040C941904EC
+:100020000C9419040C9419040C94B50E0C94870FBD
+:100030000C9419040C9419040C9419040C941904CC
+:100040000C9419040C9443230C9419040C94190473
+:100050000C9419040C94D71C0C9419040C941904D6
+:100060000C9419040C9419040C9419040C9419049C
+:100070000C9419040C9419040C9419040C9419048C
+:100080000C9419040C9419040C9419040C9419047C
+:100090000C9419040C9419040C9419040C9419046C
+:1000A0000C9419040C9419040C941904F40F1610F0
+:1000B0000411161004115B107E100411D310E61009
+:1000C000B513B513E413E4131A143A146B156B1536
+:1000D00045146B15F514F5145C156B156B1565154A
+:1000E0000215021502150215021502150215021558
+:1000F0000215021502150215021502150215021548
+:100100001415211528152F15391502E002E20001FA
+:10011000E201E00002620001620262016200350059
+:100120002E0030006400015400001E001400040082
+:100130001D00000004521F001A0016001B00E300FF
+:10014000E1002000080007000600E0002C0021006C
+:10015000150009001900E2000552220017000A00EC
+:100160000500000029004C002A0000002B000000C0
+:100170000652470039000000530000000000230031
+:100180001C000B00110000004900240018000D00A5
+:100190001000E600013025000C000E003600E400DF
+:1001A0002800260012000F003700E700E5002700B6
+:1001B000130033003800460004522D002F00340095
+:1001C000310048000000210222021A00080001004C
+:1001D000000034020500040004000000045236024E
+:1001E000080018001C00E3000252370213000C0044
+:1001F0001B00E0002C002602120008003700E2007D
+:1002000005522702080036000E00000029004C00AD
+:100210002A0000002B0000000652470039000000B1
+:100220005300000000001F022302060034000000FB
+:1002300049002E02190017001400035201002D007E
+:10024000070016000A00E400280038000F0015001F
+:100250000B00E700025225020D00110009004600C4
+:1002600004522E001D00100006004800000020026D
+:1002700035001A020802010000001E0005020402F7
+:100280000402010001001F00080218021C02E30220
+:100290000100200013020C021B02E00201002100F9
+:1002A000120208023302E2020100220008023300B7
+:1002B0000E02000001000100010000002B020000FE
+:1002C0000100010001000000010000000100230006
+:1002D0001E02060238020000010024001902170263
+:1002E0001402E60201002500070216020A02E402D7
+:1002F000010026000F0215020B02E7020100270091
+:100300000D02110209020100010001001D0210028C
+:10031000060201000000210222021A00080001006A
+:1003200000003402310204003100000004523602A1
+:10033000080018002F02E3000252370224020C00CA
+:100340003002E0002D022F00120022143700E200DC
+:1003500005523000080036003502000029004C002C
+:100360002A0000002B000000065247003900000060
+:100370005300000000001F022302060034000000AA
+:1003800049002E02190017001400010001002D0081
+:10039000070016000A00E400280038000F001500CE
+:1003A0000B00E700025225020D0011000900460073
+:1003B00004522E001D00100006004800000000003E
+:1003C000000000000000000000003A0000000000F3
+:1003D0007A00000001003B00000000007B000100EB
+:1003E00001003C00000000007C00010000003D0016
+:1003F000000000007D00010000003E000000000041
+:10040000000000000000A800A9000000AA000000F1
+:1004100000000000000000000000000000003F009D
+:100420004B004E0000000000000040004A00500059
+:1004300000000100010041005200510000000100D5
+:10044000000042004D004F00000001000100430089
+:100450004400450000000000010000000000000012
+:10046000000000000000000000000000000000008C
+:10047000000000000000000000000000000000007C
+:10048000000000000000010001000000000000006A
+:10049000000001000000000000000000000001005A
+:1004A000010000000000000000000000000000004B
+:1004B000000000000000000000000000000000003C
+:1004C000000000000000000000000000000000002C
+:1004D000000057005F005C005900620000005600F9
+:1004E00060005D005A0000305800540061005E005A
+:1004F0005B008500010055000000000000000000C6
+:1005000000000000000000000000000000000000EB
+:1005100000000000000000000000000000000000DB
+:1005200000000000000000000000000000000100CA
+:1005300001000000000000000000010000000000B9
+:1005400000000000000001000000000000000000AA
+:10055000000000000000000000000000000000009B
+:10056000010000000000000000000000000000008A
+:10057000000000000000000000000000F400F20095
+:100580000000010000000000F000F1000000010088
+:1005900000000000F500F300000001000100000071
+:1005A000F900FA0000000000000000000000000058
+:1005B00000000000000016034500720067006F0095
+:1005C00044006F007800200045005A000000160328
+:1005D0004500720067006F0044006F007800200043
+:1005E00045005A0000000403090409026D000401DB
+:1005F00000A0FA0904000001030101000921110112
+:100600000001223F000705810308000A09040100D8
+:100610000103010200092111010001224D0007051B
+:10062000820308000A0904020001030000000921F6
+:10063000110100012236000705830308000A09049E
+:10064000030001030000000921110100012239000B
+:10065000070584031000011201100100000008EDDD
+:10066000FE071301000102000105010906A10105B1
+:100670000719E029E7150025019508750181020594
+:1006800008190129059505750191029501750391D8
+:100690000105071900297715002501957875018155
+:1006A00002C005010980A101850216010026B700DC
+:1006B0001A01002AB700751095018100C0050C09C8
+:1006C00001A1018503160100269C021A01002A9C43
+:1006D00002751095018100C005010902A1010901FF
+:1006E000A1000509190129051500250195057501C8
+:1006F00081029501750381010501093009311581D8
+:10070000257F95027508810609381581257F950199
+:1007100075088106050C0A38021581257F9501753B
+:10072000088106C0C005010906A101050719E029D5
+:10073000E71500250195087501810295017508816D
+:1007400001050819012905950575019102950175A5
+:100750000391010507190029FF150025FF9506756E
+:10076000088100C00000000000000000000000013F
+:100770000204060A0F17202C3A4A5D71879DB3C701
+:10078000DAE9F5FCFFFCF5E9DAC7B39D87715D4A4C
+:100790003A2C20170F0A0604020100000000000096
+:1007A0000000000011241FBECFEFDAE0DEBFCDBF96
+:1007B00004B603FE27C08091FB019091FC01A0913B
+:1007C000FD01B091FE018730904BA740B04BD1F4B2
+:1007D0001092FB011092FC011092FD011092FE019B
+:1007E00014BE84B7877F84BF0FB6F894A895809114
+:1007F0006000886180936000109260000FBEE0E0AE
+:10080000FFE3099511E0A0E0B1E0E2E3FAE402C001
+:1008100005900D92A433B107D9F721E0A4E3B1E02C
+:1008200001C01D92AB3FB207E1F70E94F60B0C949A
+:1008300017250C940000662319F0613041F017C0B1
+:10084000FC018281811116C084E191E00895FC01D0
+:100850008281882331F084E00E94131A8FE091E0B6
+:10086000089584E00E94341A8AE091E0089580E0BF
+:1008700090E0089587E191E00895089508950C941B
+:100880003E0456985E9825982D9826982E9827987D
+:100890002F988FEF90E09093890080938800909339
+:1008A0008B0080938A0090938D0080938C00259A12
+:1008B0002D9A2FEF80E792E0215080409040E1F7A1
+:1008C00000C00000269A2E9A2FEF80E792E0215078
+:1008D00080409040E1F700C00000279A2F9A2FEF48
+:1008E00080E792E0215080409040E1F700C0000096
+:1008F00025982D982FEF80E792E02150804090407E
+:10090000E1F700C0000026982E982FEF80E792E0D4
+:10091000215080409040E1F700C0000027982F98B8
+:1009200056985E9825982D9826982E9827982F9857
+:10093000089589EA8093800089E08093810024985B
+:100940002C983F988AB18F748AB96E98479A8BB168
+:10095000806B8BB9769A0E9441040C943D0480E22E
+:10096000809300018091340181110EC00E94FE0429
+:1009700081E0809334012FEF83ED90E3215080409C
+:100980009040E1F700C0000080E40E9404058093DD
+:10099000000181112EC00E942E058093000181115B
+:1009A00028C00E942E0580930001811122C08FE390
+:1009B0000E942E058093000181111BC00E94260514
+:1009C00080E40E94040580930001811112C08CE034
+:1009D0000E942E058093000181110BC00E942E05FC
+:1009E00080930001811105C08FE30E942E05809342
+:1009F00000010E9426058091000108951092B9001F
+:100A00008AE08093B800089594EA9093BC00909196
+:100A1000BC0097FFFCCF9091B900987F983021F0EF
+:100A2000903111F081E008958093BB0084E88093B9
+:100A3000BC008091BC0087FFFCCF8091B900887F0B
+:100A4000883111F0803471F780E0089584E9809353
+:100A5000BC008091BC0084FDFCCF08958093BB0056
+:100A600084E88093BC008091BC0087FFFCCF90910C
+:100A7000B900987F81E0983209F480E0089584E815
+:100A80008093BC008091BC0087FFFCCF8091BB00AD
+:100A9000089580910001811115C080E40E94040531
+:100AA0008093000181110CC082E10E942E05809389
+:100AB0000001811105C08FEF0E942E058093000177
+:100AC0000E94260584B1807F84B985B1807F85B975
+:100AD0008AB1837F8AB98BB1837F8BB93E98469860
+:100AE00008950E94AF04809300010E94490580B3DD
+:100AF0008C7080BB81B3836F81BBA6E3B1E0E4E47B
+:100B0000F1E08EE08E0F11921D928E13FCCF0C94AB
+:100B10009904BF92CF92DF92EF92FF920F931F93AF
+:100B2000CF93DF9380910001882379F08091350184
+:100B30008F5F80933501811108C00E94AF048093BC
+:100B40000001811102C00E94410406E311E0C0E0EF
+:100B5000D0E0DD24D39482E0C82EEE24E394F12C7F
+:100B6000C730D10500F580910001811164C080E497
+:100B70000E94040580930001811112C082E10E944D
+:100B80002E058093000181110BC0C7010C2E01C0FE
+:100B9000880F0A94EAF780950E942E058093000141
+:100BA0000E94260548C0CA30A1F028F4C83059F088
+:100BB000C93061F005C0CC3089F070F0CD3089F0DB
+:100BC000209A289810C0219A29980DC0229A2A9814
+:100BD0000AC0239A2B9807C0529A01C0539A5B9877
+:100BE00002C03E9A469890EA9A95F1F79FB179999A
+:100BF00002C082E001C080E091709D25982B7C9915
+:100C000002C084E001C080E0892B7D9902C038E0F9
+:100C100001C030E0832B7E9902C020E101C020E0BA
+:100C2000822B9FB19095991F9927991F9295990FA3
+:100C3000907E892B0FC080910001811149C080E412
+:100C40000E94040580930001882379F1B12C0E9451
+:100C500026058B2DF8019081981719F08083C0929A
+:100C600001010E94490521960F5F1F4FCE30D1052B
+:100C700009F076CF80910101882361F18150809342
+:100C80000101882339F08FE99FE00197F1F700C057
+:100C9000000020C0A4E4B1E0E6E3F1E0CF01825F10
+:100CA00091919D938E13FCCF15C083E10E942E0578
+:100CB000809300018111CACF81E40E9404058093D2
+:100CC00000018111C3CF0E943F05B82EB094BFCF61
+:100CD00080E0C0CF0E943F0481E0DF91CF911F915F
+:100CE0000F91FF90EF90DF90CF90BF900895E82F85
+:100CF000F0E0EC5BFE4F8081089508950F931F9301
+:100D0000CF93DF93C4E4D1E010E00C2F025F899110
+:100D100090E00E944A1C180F0C13F9CF812FDF912D
+:100D2000CF911F910F91089581E0089581E008957A
+:100D30000C94960608950F931F93CF93DF938C0125
+:100D4000FC01C081D181CE010E94CF1ABE010E9458
+:100D50004407EC01B8010E949806882309F48DC06D
+:100D6000F8018281882309F44AC080915D018111D4
+:100D70001FC0C431F0E5DF0709F051C00E949A0698
+:100D800081E080935D010E94A11C90935C0180939F
+:100D90005B0110925401109256011092550110926D
+:100DA00058011092570110925A011092590165C0D2
+:100DB00080915B0190915C010E94AD1C883C910583
+:100DC00070F480915401E82FF0E0EE0FFF1FEB5A12
+:100DD000FE4FD183C0838F5F809354014EC0C438CF
+:100DE00080E5D80721F0C538D04501F13AC0F801B7
+:100DF0008281882341F01092520182E01EC0C438E3
+:100E0000E0E5DE0759F580915201811106C086E2C6
+:100E10000E94591286E20E94211382E01CC0C4384D
+:100E2000F0E5DF0741F3C538D045D9F4F8018281F8
+:100E3000882331F01092530180E20E9470131DC08C
+:100E400080915301811106C087E20E94591287E206
+:100E50000E94211380E20E9477130FC0C538D0454D
+:100E600029F381E08093520180935301C801DF91FF
+:100E7000CF911F910F910C94940680E0DF91CF9158
+:100E80001F910F910895089596E0799FF001112424
+:100E900094E5899FE00DF11D1124E60FF11DEE0F81
+:100EA000FF1FE25EFE4F859194910895880F991F70
+:100EB000FC01E256F040859194910895880F991FA6
+:100EC000FC01E25EFE4F8591949108950F931F936C
+:100ED000CF93DF93EC018115904350F5C11580E26B
+:100EE000D80708F0C3C0CB3BD10590F4C83AD10570
+:100EF00008F06AC0C53AD10508F05BC0C430D1051E
+:100F000008F0D0C1219709F0CAC101E010E00AC27F
+:100F1000CF3FD10511F008F0C5C1C03FD10508F0A1
+:100F2000A2C0CE01805E9109089708F4BBC1B7C189
+:100F3000C13090E5D90709F4A2C020F5C0318FE493
+:100F4000D80770F4C11590E4D90708F094C0C11512
+:100F500021E3D20708F0A3C1DD278E01106CE2C1A6
+:100F6000C115D04509F09BC10E94D6158FEF94E3BF
+:100F70002CE0815090402040E1F700C000000E942A
+:100F8000FC1CD0C1C11597E5D90758F4C03121E543
+:100F9000D20708F01CC1C43180E5D80708F475C039
+:100FA0007EC1CE0190578115904108F078C1DF7065
+:100FB00073C1C53AD10509F477C1C63AD10509F024
+:100FC00076C102E810E4AEC1C83AD10509F472C195
+:100FD000C93AD10509F471C1CA3AD10509F470C101
+:100FE000CB3AD10509F46FC1CC3AD10509F46EC1F1
+:100FF000CD3AD10509F46DC1C03BD10509F46CC1EE
+:10100000CE3AD10509F46BC1CF3AD10509F46AC1D2
+:10101000C13BD10509F469C1C23BD10509F468C1DE
+:10102000C33BD10509F467C1C43BD10509F466C1CE
+:10103000C53BD10509F465C1C63BD10509F464C1BE
+:10104000C73BD10509F463C1C83BD10509F462C1AE
+:10105000C93BD10509F461C1CA3BD10509F460C19E
+:1010600000E014E45FC18E0110655CC1CE019F7089
+:101070000E945E0758C1DF708E01106A53C18091D3
+:10108000DA0181608093DA014DC10E94A11E8111B5
+:1010900002C00E94871E0E94BE1E90E09093FB013A
+:1010A0008093FA01C23080E5D80721F48091FA01DB
+:1010B000816086C0C43090E5D90721F48091FA019F
+:1010C00082607EC0C63020E5D20721F48091FA010B
+:1010D000846076C0C83080E5D80719F48091FA01A1
+:1010E00027C0CA3090E5D90721F48091FA018061C8
+:1010F00067C0CC3020E5D20721F48091FA018062EC
+:101100005FC0CE3080E5D80721F48091FA01806479
+:1011100057C0C03190E5D90721F48091FA01806869
+:101120004FC0C23120E5D20729F48091FA018460D2
+:10113000886046C0C33080E5D80721F48091FA0169
+:101140008E7F3EC0C53090E5D90721F48091FA0129
+:101150008D7F36C0C73020E5D20721F48091FA0197
+:101160008B7F2EC0C93080E5D80719F48091FA0131
+:1011700026C0CB3090E5D90721F48091FA018F7E0B
+:101180001FC0CD3020E5D20721F48091FA018F7D78
+:1011900017C0CF3080E5D80721F48091FA018F7B0A
+:1011A0000FC0C13190E5D90721F48091FA018F7702
+:1011B00007C0C331D04531F48091FA018B7F877F1E
+:1011C0008093FA018091FA010E94C21EABC08D2F5C
+:1011D00099278F70992781309105D9F49E0123704A
+:1011E000332702C0880F991F2A95E2F79C688E0169
+:1011F00044E0000F111F4A95E1F700271370802B80
+:10120000912B53E0CC0FDD1F5A95E1F7C076DD2717
+:101210002FC08230910531F4DC2FCC278E01016F75
+:10122000106A80C08330910569F4CE0183709927DC
+:1012300001E010E002C0000F111F8A95E2F7C8011B
+:101240009C680FC084309105B9F4CE018370992752
+:1012500001E010E002C0000F111F8A95E2F7C801FB
+:101260009A6823E0CC0FDD1F2A95E1F7C07ED77086
+:101270008C010C2B1D2B56C08530910531F4DC2FD1
+:10128000CC278E01046F106A4DC0069709F04AC042
+:10129000CF71DD27DC2FCC278E01106243C000E028
+:1012A00010E040C08E013EC001E810E43BC003E8FE
+:1012B00010E438C002EE14E435C009EE14E432C084
+:1012C0000AEE14E42FC005EB14E42CC006EB14E482
+:1012D00029C007EB14E426C00CEC14E423C00DEC89
+:1012E00014E420C003E815E41DC00AE815E41AC0A0
+:1012F00002E915E417C004E915E414C001E216E49C
+:1013000011C003E216E40EC004E216E40BC005E2CD
+:1013100016E408C006E216E405C007E216E402C0BF
+:101320000AE216E4C801DF91CF911F910F91089551
+:1013300096E0799FF001112494E5899FE00DF11D5D
+:101340001124E60FF11DEE0FFF1FE25EFE4F8591A7
+:101350009491803E9105E0F4803C910558F58133ED
+:10136000910509F46FC048F48932910509F463C00E
+:101370008A32910509F46DC072C089339105E9F094
+:1013800082389105D1F08533910509F44DC067C0CD
+:10139000833E910581F138F4803E9105B9F0823E9B
+:1013A0009105D9F05CC0863E910561F1873E9105BB
+:1013B000A1F155C00E94560708952091FA0120FD21
+:1013C00002C021FF4CC080EE90E049C08091FA013C
+:1013D00080FFF9CF89E390E042C08091FA0182FF5B
+:1013E0000EC08091FA0184FF03C080E090E037C016
+:1013F00083EE90E034C08091FA0182FFF2CF82EE5A
+:1014000090E02DC08091FA0183FF0BC08091FA011A
+:1014100084FDEBCF87EE90E022C08091FA0183FF3C
+:10142000F5CF86EE90E01BC08091FA0185FF07C0E2
+:1014300089E290E014C08091FA0185FFF9CF85E33D
+:1014400090E00DC08091FA0186FF07C08AE290E02B
+:1014500006C08091FA0186FFF9CF81E390E00E94F7
+:101460006607089508950C94320A80916E010895DC
+:10147000CF93DF9300D01F92CDB7DEB79C01809150
+:10148000F101843019F593E099833B832A8390938B
+:10149000E9008FEF9091E800815095FD06C095ED31
+:1014A0009A95F1F700008111F5CF8091E80085FF52
+:1014B0000DC040E050E063E070E0CE0101960E9474
+:1014C000A50C8091E8008E778093E8000F900F9034
+:1014D0000F90DF91CF910895CF93DF9300D01F92AB
+:1014E000CDB7DEB72091F101243021F522E0298328
+:1014F0009B838A8383E08093E9008FEF9091E800DB
+:10150000815095FD06C095ED9A95F1F70000811187
+:10151000F5CF8091E80085FF0DC040E050E063E02A
+:1015200070E0CE0101960E94A50C8091E8008E77B4
+:101530008093E8000F900F900F90DF91CF91089566
+:101540002091F1012430F1F422E02093E9002FEF03
+:101550003091E800215035FD06C035ED3A95F1F7A0
+:1015600000002111F5CF2091E80025FF0BC040E0DD
+:1015700050E065E070E00E94A50C8091E8008E7755
+:101580008093E8000895CF93DF93EC019091F101EF
+:10159000943009F046C080910C018823D9F08091E5
+:1015A0000D018823B9F09093E9008FEF9091E80046
+:1015B000815095FD06C095E19A95F1F700008111E3
+:1015C000F5CF8091E80085FF2CC040E050E060E15D
+:1015D00070E017C081E08093E9008FEF9091E80000
+:1015E000815095FD06C095ED9A95F1F700008111A7
+:1015F000F5CF8091E80085FF14C040E050E068E03E
+:1016000070E0CE010E94A50C8091E8008E77809357
+:10161000E80080E1FE01AEE5B1E001900D928A950F
+:10162000E1F7DF91CF9108958091F001811109C018
+:101630000E943A0E0E94970E8091E200846080938F
+:10164000E20008951092F001089508950C9430235B
+:101650000E94921C0E9436230E943D110C94330A72
+:1016600042E061EC81E00E94B40D42E061EC82E076
+:101670000E94B40D42E061EC83E00E94B40D42E1AF
+:1016800061EC84E00C94B40D8091F301833009F493
+:1016900055C030F4813071F0823009F48EC0089565
+:1016A0008A3009F47AC08B3009F460C0893009F0BF
+:1016B0009CC020C08091F201813A09F096C08091CF
+:1016C000E800877F8093E8008091F6019091F70110
+:1016D000892B21F460E18EE591E003C060E080E0B9
+:1016E00090E070E00E94F00C8091E8008B7780938E
+:1016F000E80008958091F201813209F076C080916E
+:10170000F6019091F701009719F0039709F06DC069
+:101710008091E800877F8093E8008091E80082FD57
+:1017200005C08091F1018111F8CF5FC08091F10077
+:1017300080936E018091E8008B7753C08091F20115
+:10174000813A09F052C08091F6019091F701892BFE
+:1017500009F04BC08091E800877F8093E80080917A
+:10176000E80080FFFCCF80910C0136C08091F2012F
+:101770008132D9F58091F6019091F701892BA9F575
+:101780008091E800877F8093E8000E94E90D8091B6
+:10179000F40180930C010C94D6158091F2018132F2
+:1017A00021F58091E800877F8093E8000E94E90D91
+:1017B0008091F50180936F0108958091F201813A43
+:1017C000A1F48091E800877F8093E8008091E80091
+:1017D00080FFFCCF80916F018093F1008091E80041
+:1017E0008E778093E8000C94E90D089584B7877F85
+:1017F00084BF0FB6F894A8958091600088618093AB
+:101800006000109260000FBE90E080E80FB6F89480
+:1018100080936100909361000FBE0E948C110E9422
+:101820003A0E0E94970E8091E20084608093E2005D
+:1018300078940E941D110E948E1182E091E00E9416
+:1018400038110E941E238091F101853069F40E94B5
+:10185000561C8091EF018823B1F30E94841C8823D9
+:1018600091F30E948F0CEFCF0E949411ECCF292F9F
+:10187000332723303105C9F064F42130310581F07C
+:101880002230310509F043C08DE690E02AEE35E0C4
+:1018900042C021323105F1F02232310541F137C029
+:1018A00082E190E027E536E036C099278130910546
+:1018B00041F08230910541F0892B49F5E6EEF5E0E3
+:1018C00005C0EEECF5E002C0E6EBF5E0849190E0B7
+:1018D0009F0121C06430D8F4E62FF0E0EE0FFF1F27
+:1018E000EE5DFE4F2081318189E090E014C06430CC
+:1018F00070F470E0FB01EE0FFF1FE65EFE4F2081EB
+:101900003181FB01EA5EFE4F808190E004C080E0FF
+:1019100090E020E030E0FA0131832083089580E1F7
+:1019200089BD82E189BD09B400FEFDCF8091D80058
+:101930008F7D8093D8008091E00082608093E000EA
+:101940008091E00081FDFCCF0895CF92DF92EF926D
+:10195000FF920F931F93CF93DF93EC018B016A01EA
+:101960000E94080E811133C0C114D10439F0F60170
+:1019700080819181081B190BC80FD91FE12CF12C14
+:101980000115110519F18091E80085FD16C08091BF
+:10199000E8008E778093E800C114D10449F0F60185
+:1019A00080819181E80EF91EF182E08285E00FC00E
+:1019B0000E94080E882321F30AC089918093F100C8
+:1019C00001501109FFEFEF1AFF0ADACF80E0DF9133
+:1019D000CF911F910F91FF90EF90DF90CF900895DE
+:1019E0002091F8013091F9012617370748F0611569
+:1019F000710539F42091E8002E772093E80001C0AA
+:101A0000B90140E061157105A9F12091F10122238E
+:101A100009F443C0253009F442C02091E80023FDB9
+:101A200040C02091E80022FD32C02091E80020FF54
+:101A3000E9CF4091F3002091F20030E0342BFC011B
+:101A4000CF016115710559F02830310540F48191BD
+:101A50008093F100615071092F5F3F4FF1CF41E05A
+:101A60002830310509F040E02091E8002E772093DE
+:101A7000E800C8CF4111C9CF0AC08091F101882385
+:101A800061F0853061F08091E80083FD0AC08091AB
+:101A9000E80082FFF2CF80E0089582E0089583E0BD
+:101AA000089581E008952091F8013091F9012617F9
+:101AB000370748F06115710539F42091E8002E7759
+:101AC0002093E80001C0B901FC0120E06115710517
+:101AD00091F18091F101882309F440C0853009F427
+:101AE0003FC08091E80083FD3DC08091E80082FD09
+:101AF0002FC08091E80080FFE9CF2091F300809112
+:101B0000F20090E0922B6115710559F08830910533
+:101B100040F424912093F1003196615071090196AF
+:101B2000F2CF21E0089709F020E08091E8008E775D
+:101B30008093E800CBCF2111CCCF0AC08091F10176
+:101B4000882361F0853061F08091E80083FD0AC050
+:101B50008091E80082FFF2CF80E0089582E008954E
+:101B600083E0089581E00895982F973058F5909379
+:101B7000E900981739F07091EC002091ED00509138
+:101B8000F00003C0242F762F50E021FF19C03091C0
+:101B9000EB003E7F3093EB003091ED003D7F3093C2
+:101BA000ED003091EB0031603093EB007093EC006E
+:101BB0002093ED005093F0002091EE0027FF07C026
+:101BC0009F5FD3CF8F708093E90081E0089580E01C
+:101BD00008958091F20187FF11C08091E80082FD95
+:101BE00005C08091F1018111F8CF11C08091E8000A
+:101BF0008B770BC08091F101882349F08091E80038
+:101C000080FFF8CF8091E8008E778093E8000895F8
+:101C10002091E4003091E50095E64091EC00842F9E
+:101C2000817040FF22C08091E80080FD1CC080913F
+:101C3000F101882391F0853091F08091EB0085FDD2
+:101C400010C04091E4005091E5004217530729F37A
+:101C50009A01915011F784E0089582E0089583E09D
+:101C6000089581E0089580E008954091E80042FFE2
+:101C7000DECF08950E94A80E0E94B00EE0EEF0E0C4
+:101C8000808181608083E8EDF0E080818F778083C0
+:101C900019BCA7EDB0E08C918E7F8C9380818F7EF4
+:101CA00080831092F00108950F931F93CF93DF93D9
+:101CB0000E94A80E0E94B00EC8EDD0E088818F77F8
+:101CC000888388818068888388818F7D888319BC18
+:101CD0001092F1011092ED011092EF011092EE01BD
+:101CE00000EE10E0F80180818B7F80838881816025
+:101CF000888342E060E080E00E94B40DE1EEF0E015
+:101D000080818E7F8083E2EEF0E08081816080833D
+:101D1000808188608083F80180818E7F80838881C4
+:101D200080618883DF91CF911F910F910895E8ED35
+:101D3000F0E080818F7E8083E7EDF0E0808181603C
+:101D4000808384E082BF81E08093F0010C94540E84
+:101D5000E8EDF0E080818E7F80831092E2000895AC
+:101D60001092DA001092E10008951F920F920FB6C0
+:101D70000F9211242F933F934F935F936F937F9311
+:101D80008F939F93AF93BF93EF93FF938091E10065
+:101D900082FF0BC08091E20082FF07C08091E100CA
+:101DA0008B7F8093E1000E941C118091DA0080FFFC
+:101DB0001FC08091D80080FF1BC08091DA008E7F09
+:101DC0008093DA008091D90080FF0DC080E189BD49
+:101DD00082E189BD09B400FEFDCF81E08093F1016D
+:101DE0000E94140B05C019BC1092F1010E94220B35
+:101DF0008091E10080FF19C08091E20080FF15C052
+:101E00008091E2008E7F8093E2008091E200806109
+:101E10008093E2008091D80080628093D80019BC42
+:101E200085E08093F1010E94260B8091E10084FF00
+:101E300030C08091E20084FF2CC080E189BD82E146
+:101E400089BD09B400FEFDCF8091D8008F7D8093BD
+:101E5000D8008091E1008F7E8093E1008091E200C4
+:101E60008F7E8093E2008091E20081608093E200A7
+:101E70008091ED01882311F084E007C08091E30098
+:101E800087FD02C081E001C083E08093F1010E94E0
+:101E9000280B8091E10083FF29C08091E20083FF3D
+:101EA00025C08091E100877F8093E10082E08093EC
+:101EB000F1011092ED018091E1008E7F8093E100AD
+:101EC0008091E2008E7F8093E2008091E200806149
+:101ED0008093E20042E060E080E00E94B40D8091D7
+:101EE000F00088608093F0000E94250BFF91EF9135
+:101EF000BF91AF919F918F917F916F915F914F9122
+:101F00003F912F910F900FBE0F901F9018951F9229
+:101F10000F920FB60F9211242F933F934F935F931D
+:101F20006F937F938F939F93AF93BF93CF93DF93E1
+:101F3000EF93FF93C091E900CF708091EC00D82F10
+:101F4000D17080FDD0E81092E9008091F000877F89
+:101F50008093F00078940E94CB0F1092E90080915A
+:101F6000F00088608093F000CD2BCF70C093E90023
+:101F7000FF91EF91DF91CF91BF91AF919F918F91A1
+:101F80007F916F915F914F913F912F910F900FBE75
+:101F90000F901F9018951F93CF93DF93CDB7DEB7A7
+:101FA000AA970FB6F894DEBF0FBECDBFE2EFF1E007
+:101FB00088E08E0F9091F10091938E13FBCF0E94D9
+:101FC000440B8091E80083FF1FC18091F201909142
+:101FD000F301492F50E04A30510508F015C1FA01CC
+:101FE000EA5AFF4F0C94C724803881F0823809F0F8
+:101FF0000BC18091F6018F708093E9008091EB0016
+:1020000085FB882780F91092E90006C08091EE01D7
+:102010009091EF01911182609091E800977F9093E9
+:10202000E8008093F1001092F100C8C0282F2D7FA6
+:1020300009F0EAC0882319F0823061F0E5C0809190
+:10204000F401813009F0E0C0933009F080E0809322
+:10205000EF012BC08091F401811127C08091F6011E
+:102060008F7009F4D1C08093E9002091EB0020FF2C
+:102070001CC0933021F48091EB00806214C09091D9
+:10208000EB0090619093EB0021E030E0A90102C0E9
+:10209000440F551F8A95E2F74093EA001092EA0038
+:1020A0008091EB0088608093EB001092E9008091B2
+:1020B000E800877F86C08111A7C01091F4011F77C7
+:1020C0008091E3008078812B8093E3008091E80089
+:1020D000877F8093E8000E94E90D8091E80080FFEF
+:1020E000FCCF8091E30080688093E300111102C06F
+:1020F00082E001C083E08093F10186C08058823085
+:1021000008F082C08091F4019091F5018C3D53E07C
+:10211000950779F583E08A838AE289834FB7F8943B
+:10212000DE01139620E03EE051E2E32FF0E0509311
+:102130005700E49120FF03C0E295EF703F5FEF701E
+:102140008E2F90E0EA3010F0C79601C0C0968D93B4
+:102150009D932F5F243149F74FBF8091E800877F1F
+:102160008093E8006AE270E0CE0101960E94F00CD4
+:1021700014C0AE014F5F5F4F6091F6010E94370CB3
+:10218000BC01892B09F440C09091E800977F90939F
+:10219000E80089819A810E94530D8091E8008B7735
+:1021A0008093E80031C0803879F58091E800877F1E
+:1021B0008093E8008091ED018093F1008091E80028
+:1021C0008E778093E8000E94E90D1EC081111CC02B
+:1021D0009091F4019230C0F48091E800877F809361
+:1021E000E8009093ED010E94E90D8091ED018111CD
+:1021F00006C08091E30087FD02C081E001C084E059
+:102200008093F1010E94300B8091E80083FF0AC0A7
+:102210008091E800877F8093E8008091EB008062E6
+:102220008093EB00AA960FB6F894DEBF0FBECDBF29
+:10223000DF91CF911F9108950895CF938091F1017F
+:102240008823A1F0C091E900CF709091EC00892F14
+:10225000817090FD80E8C82B1092E9008091E80021
+:1022600083FD0E94CB0FCF70C093E900CF910895FA
+:1022700090937501809374010895E0917401F09139
+:102280007501309721F00190F081E02D099480E0F4
+:102290000895E0917401F0917501309721F002806A
+:1022A000F381E02D09940895E0917401F091750196
+:1022B000309721F00480F581E02D09940895209154
+:1022C0007201309173018217930771F0909373013B
+:1022D00080937201E0917401F0917501309721F0C3
+:1022E0000680F781E02D09940895209170013091C6
+:1022F00071018217930771F09093710180937001BF
+:10230000E0917401F0917501309721F00084F1851E
+:10231000E02D0994089508950C948B110E94981C47
+:102320000E9471050C945A1D9F92AF92BF92CF925A
+:10233000DF92EF92FF920F931F93CF93DF9300D022
+:1023400000D000D0CDB7DEB70E9489050DE010E0C7
+:10235000AA24A394B12C902E802F0E947706980176
+:1023600029583E4F6901F901F080F826A1F4015087
+:10237000110988F78FEF89838A831B820E94A11C31
+:102380008160782F9D838C8349815A816B818D81F7
+:102390000E942B122FC09091DA0191FF04C08E830E
+:1023A0000E947D068E8125E030E0A501022E01C04D
+:1023B000440F0A94EAF7E42E4F21C1F029839A8250
+:1023C0008E2191E009F490E09B830E94A11C816022
+:1023D000782F9D838C8349815A816B818D810E94E6
+:1023E0002B12F6018081E826E08204C021503109D9
+:1023F000E0F6BDCF0E944120109176010E943D1170
+:102400001817B9F00E943D118093760126960FB6F9
+:10241000F894DEBF0FBECDBFDF91CF911F910F911A
+:10242000FF90EF90DF90CF90BF90AF909F900C9473
+:10243000330A26960FB6F894DEBF0FBECDBFDF91EC
+:10244000CF911F910F91FF90EF90DF90CF90BF90B1
+:10245000AF909F900895CF93DF93CDB7DEB72B97C2
+:102460000FB6F894DEBF0FBECDBF4F835887698784
+:102470007A878B87DE01119686E0FD0111928A959D
+:10248000E9F785E0FE01379601900D928A95E1F714
+:1024900049815A816B817C818D819E810E94741853
+:1024A0002B960FB6F894DEBF0FBECDBFDF91CF9154
+:1024B0000895CF93882309F4C2C0C82F823859F4F5
+:1024C0000E943D1181FDBBC089E30E944E1B0E940A
+:1024D0001B1C89E30CC0833879F40E943D1180FDF8
+:1024E000AEC083E50E944E1B0E941B1C83E50E9428
+:1024F000901BCF910C941B1C843859F40E943D1101
+:1025000082FD9DC087E40E944E1B0E941B1C87E435
+:10251000EECF8CEF8C0F813A48F48C2F0E948322EF
+:1025200081118DC08C2F0E944E1BE3CF80E28C0F57
+:10253000883048F4C77081E001C0880FCA95EAF777
+:102540000E94D41BD6CF8BE58C0F833078F4C53A2C
+:1025500029F0C63A31F083E890E005C081E890E0C8
+:1025600002C082E890E0CF910C945F1188E58C0F57
+:10257000833108F064C0C83A39F1C93A41F1CA3A26
+:1025800049F1CB3A51F1CC3A59F1CD3A61F1C03B26
+:1025900069F1CE3A71F1CF3A79F1C13B81F1C23B99
+:1025A00089F1C33B91F1C43B99F1C53BA1F1C63B15
+:1025B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B75
+:1025C000C9F180E090E038C082EE90E035C089EE3D
+:1025D00090E032C08AEE90E02FC085EB90E02CC0F6
+:1025E00086EB90E029C087EB90E026C08CEC90E071
+:1025F00023C08DEC90E020C083E891E01DC08AE804
+:1026000091E01AC082E991E017C084E991E014C01A
+:1026100081E292E011C083E292E00EC084E292E097
+:102620000BC085E292E008C086E292E005C087E236
+:1026300092E002C08AE292E0CF910C947511CF91A2
+:102640000895882309F44BC0823859F40E943D1143
+:1026500081FF45C089E30E944E1B0E941B1C89E339
+:102660000CC0833871F40E943D1180FF38C083E5AF
+:102670000E944E1B0E941B1C83E50E94901B0C9421
+:102680001B1C843859F40E943D1182FF28C087E446
+:102690000E944E1B0E941B1C87E4EFCF9CEF980FFB
+:1026A000913A58F390E2980F983050F4877091E087
+:1026B00001C0990F8A95EAF7892F0E94DA1BDFCFB4
+:1026C0009BE5980F933020F480E090E00C945F112C
+:1026D000885A833120F480E090E00C9475110895BD
+:1026E000882321F00E94D41B0C941B1C089588237E
+:1026F00021F00E94DA1B0C941B1C08957F928F928C
+:102700009F92AF92BF92CF92DF92EF92FF920F9380
+:102710001F93CF93DF931F92CDB7DEB77C01C62EF8
+:10272000772EFC01058102950F70128111110E9414
+:10273000F11B0E94471B882379F0112369F080E286
+:102740008C0D883048F082E00E94301B0E94471BAD
+:1027500091E0D82ED92601C0D12CE72DE295EF705B
+:10276000F0E0E05AFF4F0C94C724872D807F072D9F
+:102770000F70882311F00295007F112389F0002348
+:1027800009F490C180E28C0D883020F4802F0E94E3
+:10279000D41B03C0802F0E94E41B0E941B1C82C11B
+:1027A0008C2D0E942113002309F495C180E28C0D29
+:1027B000883020F4802F0E94DA1B03C0802F0E94F3
+:1027C000EA1B0E941B1C87C1972D907F872D8F705D
+:1027D000903211F08295807FCC2021F0F1E0CF166D
+:1027E000B1F01EC0112349F0002309F414C10130D7
+:1027F00009F011C10E94041C6EC1002319F00130C0
+:1028000009F469C189830E94071C89810AC11123C7
+:1028100021F0023008F05FC1FEC001115CC101C1AE
+:10282000112321F0002309F4F6C03CC1002309F470
+:10283000F8C03EC1872D86958695837090E00097FD
+:1028400019F0019761F047C1112321F08C2D972DCC
+:10285000937002C080E090E00E945F113CC11123A0
+:1028600021F08C2D972D937002C080E090E00E94A3
+:10287000751131C18C2D112319F00E94491F02C01E
+:102880000E94B11F0E94362026C1872D837009F057
+:1028900052C0111120C18C2D829586958770880FAA
+:1028A000880F9C2D9F70892E912CA12CB12C082E65
+:1028B00004C0880C991CAA1CBB1C0A94D2F7C4FE45
+:1028C00014C00FE010E020E030E0B901A80104C01E
+:1028D000440F551F661F771F8A95D2F7CB01BA01A7
+:1028E000609570958095909503C060E070E0CB0195
+:1028F000272D26952695237030E02230310569F08A
+:102900002330310589F0682979298A299B292130CA
+:10291000310571F00E94BC19DEC0682979298A2925
+:102920009B290E94D819D7C00E94BC19C501B401C7
+:102930000E94A019D0C0112319F0872D817001C009
+:102940008695882309F4C7C08C2D8295869587705B
+:10295000880F880F9C2D9F70892E912CA12CB12C53
+:10296000082E04C0880C991CAA1CBB1C0A94D2F720
+:10297000C4FE14C00FE010E020E030E0B901A8016F
+:1029800004C0440F551F661F771F8A95D2F7CB01ED
+:10299000BA01609570958095909503C060E070E0F5
+:1029A000CB01272D269526952370422F50E04230EB
+:1029B000510569F04330510589F0682979298A2940
+:1029C0009B294130510571F00E94961A84C06829F4
+:1029D00079298A299B290E94B21A7DC00E94961AE1
+:1029E000C501B4010E947A1A76C08C2D90E0FC01DA
+:1029F000E05EF109E531F10508F050C0E059FF4F04
+:102A00000C94C7240C2D0F70872D8F71112331F07A
+:102A10000E94131A802F0E9470135DC00E94341A06
+:102A2000802F0E94771357C0112339F0011153C032
+:102A3000872D8F710E94591A4EC0023008F04BC08A
+:102A4000F7CF112339F0872D8F710E94131A43C0DD
+:102A50001123C9F3872D8F710E94341A3CC01123B2
+:102A600029F0872D8F710E94FE1935C00E94F4193C
+:102A700032C0112351F0172D1F71812F0E94131A9C
+:102A800063E0812F0E94271B26C081E00E94301B3B
+:102A9000023008F182E00E94301B1DC0112331F08A
+:102AA000002389F28C2D0E94591215C0002391F247
+:102AB0008C2D0E9421130FC0472D4F706C2DC70124
+:102AC0000E941B040E94181906C0472D4F706C2DE0
+:102AD000C7010E944307DD20F9F00E94231B80FDFF
+:102AE0001BC0F70112820E941D1B0E94131AC7010E
+:102AF0000E949B150E941D1B0F90DF91CF911F918B
+:102B00000F91FF90EF90DF90CF90BF90AF909F908C
+:102B10008F907F900C94341A0F90DF91CF911F917A
+:102B20000F91FF90EF90DF90CF90BF90AF909F906C
+:102B30008F907F9008950F931F93CF93DF93EC01B5
+:102B4000888199812B813C81232BB9F09F3F11F41F
+:102B50008F3F99F0CE010E949B06882371F0688117
+:102B600079818A810E94191B8C010E94CE1A0E94D1
+:102B70009519B801CE010E947E13DF91CF911F916C
+:102B80000F9108950E94F11B0E94011C0E94C61B18
+:102B90000E941B1C0E94E6200E94362080E090E0EC
+:102BA0000E945F1180E090E00C9475110E94E11B7F
+:102BB0000C94C2150E940E1B292F22952F7030E015
+:102BC0002C3031054CF42A3031056CF42250310997
+:102BD00022303105A8F407C02C30310569F02F30C0
+:102BE000310551F00DC0803F69F018F4803E40F48B
+:102BF00009C0843F29F406C093FB882780F9089513
+:102C000080E0089581E00895CF93DF9300D000D055
+:102C10001F92CDB7DEB70F900F900F900F900F90CF
+:102C2000DF91CF910895CF93DF9300D000D000D0F3
+:102C3000CDB7DEB726960FB6F894DEBF0FBECDBF78
+:102C4000DF91CF9108951F93CF93DF93C0918501BA
+:102C500016E080918601C81799F0D0E01C9FF00122
+:102C60001D9FF00D1124E957FE4F40815181628173
+:102C70007381848195810E9413162196C770E9CFD4
+:102C8000DF91CF911F9108954091B7015091B80104
+:102C90006091B9017091BA018091BB019091BC0122
+:102CA0000C9413168091BC0182958F7009F054C06A
+:102CB0008091B901882309F44FC080918501A091CA
+:102CC00086016091B7017091B8014091BA015091AD
+:102CD000BB01B6E08A1709F43FC090E041155105E9
+:102CE000C1F17F3F11F46F3FA1F1B89FF001B99F8F
+:102CF000F00D1124E957FE4F218172132AC0208163
+:102D0000621327C02281211124C02381348124171A
+:102D1000350710F421503109241B350B283C3105AF
+:102D2000C0F42091BC012F7020612093BC0126E0EB
+:102D3000289FF001299FF00D1124E457FE4F808158
+:102D40008F708061808387EB91E00E949B150C94CB
+:102D5000231601968770BECF0895CF92DF92EF922F
+:102D6000FF920F931F93CF93DF93CDB7DEB7629798
+:102D70000FB6F894DEBF0FBECDBF8C0185E0F80121
+:102D8000DE011D9601900D928A95E1F7D8014C91D4
+:102D900011965C91119712966C9112971396CD90A3
+:102DA000DC9014973091B7017091B8018091BA010D
+:102DB0009091BB01009709F46BC17F3F19F43F3F2D
+:102DC00009F466C1E090B901EE2009F4C0C0209179
+:102DD000BC01C816D90628F0F601E81BF90BCF0193
+:102DE00004C0809590958C0D9D1DFF24F394883C24
+:102DF000910578F0F12C207F09F0C6C07C2DD98A8E
+:102E0000C88A89890E94041687EB91E00E949B156D
+:102E1000B1C0822F807F09F046C0751314C03413EF
+:102E200012C0611110C02F7020612093BC010E945C
+:102E3000441687EB91E00E949B158091BC01D8015C
+:102E400015968C932EC0CD2819F15F3F11F44F3F9A
+:102E5000F9F0F62E61111CC0809185012091860148
+:102E600036E0821709F45AC090E0389FF001399F8C
+:102E7000F00D1124E957FE4F7181571306C0708180
+:102E8000471303C07281711103C001968770E9CFA7
+:102E9000F62E662309F418C18091BC0181608093ED
+:102EA000BC01F12C11C1751308C0341306C06111A7
+:102EB00004C08091BC01D801C3C04D875E878D8559
+:102EC0009E856A8B0E94DA156A898823E1F1662360
+:102ED000D1F12091BC01822F82958F7090E00297F2
+:102EE00074F08091B7019091B80198878F8319860B
+:102EF000DB86CA862C87CE0107960E949B1586E04A
+:102F0000F801A7EBB1E001900D928A95E1F70E94DC
+:102F100052160E944416FF24F394D6C04D875E8754
+:102F20008D859E850E940E1B292F22952F7030E0E3
+:102F3000223031050CF0BCC09F7009F0B6C0805E35
+:102F4000883008F4C1C0C8010E949B15E4CFC816A0
+:102F5000D90608F453C0F601E81BF90BCF01883CF1
+:102F6000910508F450C0F12C7C2DD98AC88A898932
+:102F70000E940416E7EBF1E086E0DF011D928A95DE
+:102F8000E9F70E944416A0C0751314C0341312C090
+:102F9000611110C08091BC01F8018583C8010E94B5
+:102FA0009B1586E0E7EBF1E0DF011D928A95E9F7DA
+:102FB000FE2C8AC04D875E878D859E856A8B0E9418
+:102FC000DA156A89882309F4BECF662309F4BBCFDA
+:102FD0002091BC01822F82958F7090E002970CF4B3
+:102FE0008ECF8091B7019091B8019A8389831B821B
+:102FF000DD82CC822E83CE0101967FCF8095909585
+:103000008C0D9D1DACCFF62E662309F49CCF751355
+:103010002EC034132CC02091BC0120FD1FC0822F74
+:1030200082958F70D9F0D80115962C9315978F3013
+:1030300049F08F5F982F9295907F822F8F70892B08
+:1030400015968C93C8010E949B1586E0F801A7EBAA
+:10305000B1E001900D928A95E1F793CF86E0F801F7
+:10306000A7EBB1E001900D928A95E1F72DC04D8755
+:103070005E878D859E850E94DA15811140CF8091F3
+:10308000BC0181608093BC01C8010E949B151CC0DB
+:10309000662309F458CF4D875E878D859E850E94F3
+:1030A000DA15882309F44FCF2ACF811148CF0CC0FD
+:1030B000243031050CF047CF9F7009F440CFF80160
+:1030C0009581907F09F03BCF8F2D62960FB6F894D3
+:1030D000DEBF0FBECDBFDF91CF911F910F91FF904B
+:1030E000EF90DF90CF9008951F93CF93DF93CDB7EC
+:1030F000DEB72C970FB6F894DEBF0FBECDBF4F835F
+:10310000588769877A878B879C87CE0107960E94AC
+:10311000AD16882369F08F8198852A853B85232BFE
+:10312000F1F19F3F09F063C08F3F09F060C037C0E5
+:1031300086E0FE013796DE01119601900D928A9588
+:10314000E1F76F817885EA85FB85309741F17F3F14
+:1031500011F46F3F21F12091860130E0C901019601
+:10316000877099274091850150E08417950709F4ED
+:1031700047C069837A83FD83EC8396E0929FD001F8
+:10318000939FB00D1124A957BE4FFE0131960190B7
+:103190000D929A95E1F7809386010E94231616E01E
+:1031A00080918501909186018917C1F1189FC00116
+:1031B000112489579E4F0E94AD16882379F1E09122
+:1031C00085011E9FF0011124E957FE4F4081518176
+:1031D00062817381848195810E941316809185019B
+:1031E00090E001968770992780938501D9CF4F8110
+:1031F000588569857A858B859C850E941316CFCF6B
+:103200000E94D6151092860110928501E7EBF1E03D
+:1032100086E0DF011D928A95E9F7C1CF2C960FB6A3
+:10322000F894DEBF0FBECDBFDF91CF911F910895FF
+:10323000EF92FF920F931F93CF93DF938C01892B13
+:1032400009F46CC0F12CEE24E394E8012196F80116
+:103250008491843740F4843008F051C0813081F08B
+:10326000823019F15BC0853709F444C0A8F19CE7AE
+:10327000980F903708F052C08F770E94211341C0F9
+:103280000E5F1F4FFE01C49180E28C0F883048F41E
+:10329000C7708E2D01C0880FCA95EAF70E94F41BF3
+:1032A00014C08C2F0E9459122DC00E5F1F4FFE01BB
+:1032B000C49180E28C0F883058F4C7708E2D01C005
+:1032C000880FCA95EAF70E94FA1B0E941B1C1AC0BD
+:1032D0008C2F0E94211316C00E5F1F4FFE01C49158
+:1032E000CC2381F08FE99FE00197F1F700C0000047
+:1032F000C150F6CF0E5F1F4FFE01F49003C00E9435
+:1033000059128E018F2D882309F49FCFEFE9FFE03A
+:103310003197F1F700C000008150F5CFDF91CF91D8
+:103320001F910F91FF90EF90089508956093C10150
+:103330007093C2018093C3019093C4010C94C21591
+:103340000F931F930091C1011091C2012091C301FD
+:103350003091C401DC01CB01802B912BA22BB32B2C
+:103360008093C1019093C201A093C301B093C401A3
+:103370001F910F910C94C2150F931F930091C101DF
+:103380001091C2012091C3013091C401DC01CB0135
+:1033900080239123A223B3238093C1019093C20180
+:1033A000A093C301B093C4011F910F910C94C21557
+:1033B0000F931F930091C1011091C2012091C3018D
+:1033C0003091C401DC01CB0180279127A227B327CC
+:1033D0008093C1019093C201A093C301B093C40133
+:1033E0001F910F910C94C2151092BD011092BE0155
+:1033F0001092BF011092C0010C94C21541E050E040
+:1034000060E070E004C0440F551F661F771F8A9567
+:10341000D2F74093BD015093BE016093BF017093FA
+:10342000C0010C94C21541E050E060E070E004C0BF
+:10343000440F551F661F771F8A95D2F78091BD01F3
+:103440009091BE01A091BF01B091C001482B592BB2
+:103450006A2B7B2B4093BD015093BE016093BF014B
+:103460007093C0010C94C21541E050E060E070E040
+:1034700004C0440F551F661F771F8A95D2F74095E9
+:103480005095609570958091BD019091BE01A0917D
+:10349000BF01B091C001482359236A237B23409385
+:1034A000BD015093BE016093BF017093C0010C94A5
+:1034B000C21541E050E060E070E004C0440F551FC9
+:1034C000661F771F8A95D2F78091BD019091BE014A
+:1034D000A091BF01B091C001482759276A277B27D7
+:1034E0004093BD015093BE016093BF017093C00132
+:1034F0000C94C2150F931F930091BD011091BE0152
+:103500002091BF013091C001DC01CB01802B912BB8
+:10351000A22BB32B8093BD019093BE01A093BF015A
+:10352000B093C0011F910F910C94C2150F931F937C
+:103530000091BD011091BE012091BF013091C001E9
+:10354000DC01CB0180239123A223B3238093BD010F
+:103550009093BE01A093BF01B093C0011F910F9142
+:103560000C94C2150F931F930091BD011091BE01E1
+:103570002091BF013091C001DC01CB018027912750
+:10358000A227B3278093BD019093BE01A093BF01F2
+:10359000B093C0011F910F910C94C2150895CF9262
+:1035A000DF92EF92FF920F931F93CF93DF938C01E3
+:1035B000C090C101D090C201E090C301F090C4015D
+:1035C0008091BD019091BE01A091BF01B091C00159
+:1035D000C82AD92AEA2AFB2ACFE1D0E0D701C601BE
+:1035E0000C2E04C0B695A795979587950A94D2F7A7
+:1035F00080FF06C0B8018C2F0E949809019721F422
+:10360000219760F780E001C08C2FDF91CF911F914F
+:103610000F91FF90EF90DF90CF900895CF93DF93BD
+:10362000EC010E94CF1ABE010E949809DF91CF9150
+:103630000895CB010E940E1B08958091C5018595C8
+:103640008595859508958091C5018770089598E0C6
+:10365000899F90011124262B2093C5010C94131AE5
+:103660002091C501809582238093C501982F977082
+:1036700069F430E0482F082E000C550B241735074D
+:1036800029F08595859585950C94341A0895909127
+:10369000C501977081E009F480E0089590910C01D4
+:1036A000992321F090910D01911109C020910E01F3
+:1036B00030910F01F90132969FEF40E01FC0982F23
+:1036C0009695969596959F3050F5E0910E01F09164
+:1036D0000F01E90FF11D877021E030E0A90102C060
+:1036E000440F551F8A95E2F7CA019181892B818386
+:1036F00008959F3F39F04F5F4E3041F0519158137C
+:10370000F8CF0DC05111F7CF942FF5CF9F3F39F06F
+:10371000F901E90FF11D97FDFA9582830895089547
+:1037200090910C01992321F090910D01911109C004
+:1037300020910E0130910F01F9013296205F3F4F29
+:103740001FC0982F9695969596959F30F0F4E0912E
+:103750000E01F0910F01E90FF11D877021E030E0BB
+:10376000A90102C0440F551F8A95E2F7CA0180954E
+:1037700091818923818308953196E217F30729F017
+:1037800090819813F9CF1082F7CF089581E090E0EF
+:10379000E0910E01F0910F01E80FF91F10820196E0
+:1037A00080319105A9F708959091D901892B8093D3
+:1037B000D901089580959091D90189238093D901E9
+:1037C00008951092D90108959091D801892B809382
+:1037D000D801089580959091D80189238093D801CC
+:1037E00008951092D80108959091D701892B809364
+:1037F000D701089580959091D70189238093D701AF
+:1038000008951092D70108958093C60108951092EB
+:10381000C601089580910E0190910F01FC0131962F
+:103820009C01205F3F4F80E0919191118F5FE217E3
+:10383000F307D1F70895E0910E01F0910F01809107
+:10384000D9018083E0910E01F0910F019081809168
+:10385000D801892B8083E0910E01F0910F019081B6
+:103860008091D701892B80838091C601882361F0E4
+:10387000E0910E01F0910F019081892B80830E94CD
+:103880000A1C81111092C60180910E0190910F01C6
+:103890000C94491120E0009739F0AC0141505109D6
+:1038A000842395232F5FF7CF822F08958091F10114
+:1038B000843039F11092DB0120E488E190E00FB60A
+:1038C000F894A895809360000FBE2093600080E07C
+:1038D0000E94330A83B7817F846083BF83B781608E
+:1038E00083BF7894889583B78E7F83BF0FB6F89493
+:1038F000A8958091600088618093600010926000BC
+:103900000FBE0895089508950E94821C0E948905A3
+:103910000E94831C0E947E0691E0811101C090E00C
+:10392000892F08950E94D6150E943D110C94330AE8
+:1039300082E084BD93E095BD9AEF97BD80936E00C1
+:1039400008952FB7F8948091DC019091DD01A0914A
+:10395000DE01B091DF012FBF0895CF92DF92EF9289
+:10396000FF920F931F932FB7F8944091DC01509171
+:10397000DD016091DE017091DF012FBF6A017B01E3
+:10398000EE24FF248C0120E030E0C016D106E206D0
+:10399000F30610F4415051099A01281B390BC90153
+:1039A0001F910F91FF90EF90DF90CF9008951F929D
+:1039B0000F920FB60F9211248F939F93AF93BF93E3
+:1039C0008091DC019091DD01A091DE01B091DF01D9
+:1039D0000196A11DB11D8093DC019093DD01A093A0
+:1039E000DE01B093DF01BF91AF919F918F910F9056
+:1039F0000FBE0F901F9018950E943A0EF8942FEF6B
+:103A000087EA91E6215080409040E1F700C0000035
+:103A100087E090EBDC018093FB019093FC01A09385
+:103A2000FD01B093FE019CE088E10FB6F894A895E3
+:103A3000809360000FBE90936000FFCFEF92FF92E3
+:103A40000F931F93CF93DF93D82FCDE08C2F0E943D
+:103A5000770605E010E0E82EF12CC701002E02C029
+:103A6000959587950A94E2F780FF09C0602F7C2F17
+:103A700080E00E944407D81302C081E006C00150D4
+:103A8000110958F7C15010F780E0DF91CF911F91D5
+:103A90000F91FF90EF900895CF93C82F8CE20E9472
+:103AA0001E1D882321F08C2FCF910C941E1D80E0C9
+:103AB000CF910895CF930E94A11E811102C00E9450
+:103AC000871EC5E6C15049F00E9489058FE39CE935
+:103AD0000197F1F700C00000F5CF89E20E944C1D6C
+:103AE000811113C18AE20E944C1D81110E94871E20
+:103AF00085E00E944C1D81110E94FC1C0E94AC1E9E
+:103B00008093DA0187E00E944C1D8823A9F18BE1A4
+:103B10000E944C1D882351F08091DA0181FB2227FD
+:103B200020F991E0922790FB81F90EC08EE00E946F
+:103B30004C1D882361F08091DA0182FB222720F955
+:103B400091E0922790FB82F98093DA0115C080E121
+:103B50000E944C1D9091DA01882341F093FB2227AB
+:103B600020F981E0822780FB93F904C0892F80959A
+:103B700080FB90F99093DA018091DA010E94B01EE7
+:103B80000E94BE1E8093FA0180EE0E944C1D882385
+:103B900041F08091FA01982F909590FB80F98093E5
+:103BA000FA0189E30E944C1D882359F08091FA01A3
+:103BB00081FB222720F991E0922790FB81F98093E5
+:103BC000FA0182EE0E944C1D882359F08091FA017F
+:103BD00082FB222720F991E0922790FB82F98093C3
+:103BE000FA0186EE0E944C1D882359F08091FA015B
+:103BF00083FB222720F991E0922790FB83F98093A1
+:103C0000FA0183EE0E944C1D882359F08091FA013D
+:103C100084FB222720F991E0922790FB84F980937E
+:103C2000FA0185E30E944C1D882359F08091FA0126
+:103C300085FB222720F991E0922790FB85F980935C
+:103C4000FA0181E30E944C1D882359F08091FA010A
+:103C500086FB222720F991E0922790FB86F980933A
+:103C6000FA0181E10E944C1D882359F08091FA01EC
+:103C700087FB222720F991E0922790FB87F9809318
+:103C8000FA018091FA010E94C21E8091FA0187FB1D
+:103C9000882780F980930D0187E20E944C1DC82F70
+:103CA0008EE10E944C1D8111C2608FE10E944C1D6B
+:103CB0008111C46080E20E944C1D8111C86081E2C4
+:103CC0000E944C1D8111C06182E20E944C1D811135
+:103CD000C06283E20E944C1D8111C06484E20E9494
+:103CE0004C1D882311F0C06802C0CC2329F08C2F12
+:103CF0000E94B91E6C2F03C00E94B51E682F70E091
+:103D000080E090E0CF910C949619CF9108956DEEDC
+:103D10007EEF80E090E00E94012560E082E090E08C
+:103D20000E94EF2460E083E090E00E94EF2460E0D6
+:103D300084E090E00E94EF2460E085E090E00C9445
+:103D4000EF2480E090E00E94E92421E08D3E9E4F28
+:103D500009F020E0822F089582E090E00C94E124A5
+:103D6000682F82E090E00C94EF2483E090E00C94C4
+:103D7000E124682F83E090E00C94EF2484E090E04D
+:103D80000C94E124682F84E090E00C94EF2480915F
+:103D9000E20180FF0BC06091130185E0689FB001D4
+:103DA000112475956795759567952BC081FF09C09E
+:103DB0006091130185E0689FB001112475956795A6
+:103DC00020C082FF07C06091130185E0689FB001A9
+:103DD000112417C09091E3019923D1F06091120151
+:103DE000961788F72091130185E0289F90011124F0
+:103DF000929FA001939F500D112470E0CA010E9470
+:103E0000B3246038710540F46115710539F002C0C2
+:103E100065E070E0862F08958FE7089581E00895AA
+:103E20008091E20180FF08C06091110170E07595FA
+:103E300067957595679521C081FF06C06091110156
+:103E400070E07595679519C082FF04C060911101FB
+:103E500070E010C09091E3019923C1F060911001CE
+:103E60009617A0F780911101899FC001112470E07D
+:103E70000E94B3246038710528F46115710521F0A2
+:103E8000862F08958FE7089581E0089561E070E03E
+:103E9000F4CF803F21F40E94C71E819504C0813F6A
+:103EA00029F40E94C71E8093E6010895823F21F401
+:103EB0000E94C71E819504C0833F29F40E94C71E3B
+:103EC0008093E5010895893F19F40E94101F05C0F1
+:103ED0008A3F31F40E94101F81958093E701089575
+:103EE0008B3F21F40E94101F819504C08C3F29F460
+:103EF0000E94101F8093E8010895843F21F480916F
+:103F0000E401816017C0853F21F48091E401826063
+:103F100011C0863F21F48091E40184600BC0873F8B
+:103F200021F48091E401886005C0883F31F48091DC
+:103F3000E40180618093E40108958D3F21F4809134
+:103F4000E20181600BC08E3F21F48091E20182602A
+:103F500005C08F3F29F48091E20184608093E201E3
+:103F60000895803F39F48091E60187FF6CC010927C
+:103F7000E60169C0813F29F48091E6011816BCF37F
+:103F800062C09091E501823F29F497FF5CC01092D6
+:103F9000E50159C0833F19F41916CCF354C0893F89
+:103FA00041F48091E70118160CF04DC01092E70122
+:103FB0004AC08A3F29F48091E70187FF44C0F6CFC9
+:103FC0008B3F39F48091E80187FF3DC01092E801F2
+:103FD0003AC08C3F29F48091E8011816BCF333C035
+:103FE000843F21F48091E4018E7F17C0853F21F446
+:103FF0008091E4018D7F11C0863F21F48091E4011E
+:104000008B7F0BC0873F21F48091E401877F05C03F
+:10401000883F31F48091E4018F7E8093E40113C0E6
+:104020008D3F21F48091E2018E7F0BC08E3F21F401
+:104030008091E2018D7F05C08F3F29F48091E201DC
+:104040008B7F8093E2018091E50181110EC0809108
+:10405000E60181110AC08091E701811106C08091BB
+:10406000E801811102C01092E301089584EE91E00D
+:104070000E9454110E94A11C9093E1018093E001E1
+:1040800008951F93CF93DF938091E0019091E10118
+:104090000E94AD1CAC019091E301992321F0209185
+:1040A000140130E006C0209115018AE0289F90019C
+:1040B00011244217530708F485C08091E501C0918F
+:1040C000E601D091E7011091E801811107C0C1110B
+:1040D00075C0D11173C0111171C074C09F3F19F028
+:1040E0009F5F9093E301181624F40E94C71E8093EB
+:1040F000E5018091E50187FF05C00E94C71E8195FB
+:104100008093E5011C1624F40E94C71E8093E601EB
+:104110008091E60187FF05C00E94C71E81958093AC
+:10412000E6016091E501662331F1C091E601CC23FF
+:1041300011F1062E000C770B880B990B0E94BA2305
+:1041400023E333E343E35FE30E941E240E948223C0
+:104150006093E5016C2FCC0F770B880B990B0E94B5
+:10416000BA2323E333E343E35FE30E941E240E9468
+:1041700082236093E6011D1624F40E94101F809391
+:10418000E7018091E70187FF05C00E94101F81951C
+:104190008093E701111624F40E94101F8093E80118
+:1041A0008091E80187FF05C00E94101F81958093D0
+:1041B000E801DF91CF911F910C9436209F3F09F0C9
+:1041C0008FCF97CFDF91CF911F910895E4EEF1E06B
+:1041D00085E0DF011D928A95E9F71092E3011092C4
+:1041E000E2010895833081F128F4813059F0823062
+:1041F000D1F00895853009F449C0B8F1863009F44A
+:1042000056C0089580911501262F30E0280F311DEA
+:104210002F3F310524F4680F6093150108958FEF47
+:1042200080931501089580911401262F30E0280F06
+:10423000311D2F3F310524F4680F60931401089558
+:104240008FEF80931401089580911301262F30E0A1
+:10425000280F311D2F3F310524F4680F609313019F
+:1042600008958FEF80931301089580911201262FF6
+:1042700030E0280F311D2F3F310524F4680F609383
+:10428000120108958FEF809312010895809111011A
+:10429000262F30E0280F311D2F3F310524F4680F01
+:1042A0006093110108958FEF80931101089580911B
+:1042B0001001262F30E0280F311D2F3F310524F447
+:1042C000680F6093100108958FEF80931001089597
+:1042D000833011F128F4813049F0823091F0089553
+:1042E000853081F120F18630C1F10895809115016A
+:1042F000681720F4861B809315010895109215010C
+:10430000089580911401681720F4861B809314018E
+:10431000089510921401089580911301681720F4F4
+:10432000861B8093130108951092130108958091C4
+:104330001201681720F4861B8093120108951092D1
+:104340001201089580911101681720F4861B809353
+:1043500011010895109211010895809110016817BC
+:1043600020F4861B80931001089510921001089587
+:104370000F931F938D3109F46BC008F03FC08E304E
+:1043800009F47FC0C0F4873009F469C068F486304E
+:1043900009F0B1C08091DA01817F8E7F8093DA01CC
+:1043A00081E08093EA01A8C0883009F4A2C08B3074
+:1043B00009F49FC0A0C0863109F49BC078F4803115
+:1043C00009F472C0813109F096C00E94D61590910F
+:1043D0000D0181E0892780930D018BC0893109F49B
+:1043E00088C08B3109F087C08091DA0181FB2227D8
+:1043F00020F991E0922790FB81F94CC0853309F4B4
+:1044000070C048F4873209F46CC008F459C089328E
+:1044100009F467C070C0833438F48A3308F04EC0A2
+:10442000883309F466C067C0833409F45AC08834FD
+:1044300009F061C00E94D6150FEF13ED20E3015083
+:1044400010402040E1F700C000000E94FC1C51C059
+:104450000E943C230E943D110E94330A4AC0909161
+:10446000DA01892F8095817080FB90F929F09660A0
+:1044700098609093DA0140C0997F977F9093DA011A
+:1044800038C08091DA0182FB222720F991E092273F
+:1044900090FB82F98093DA01992359F18091DA0136
+:1044A00081608093DA0125C08091DA0183FB2227A5
+:1044B00020F991E0922790FB83F9ECCF895301C05A
+:1044C0008D5141E050E060E070E08A019B0104C042
+:1044D000000F111F221F331F8A95D2F7C901B8019F
+:1044E00004C061E070E080E090E00E9496190E94B4
+:1044F000D61581E001C080E01F910F91089580E002
+:10450000089580E00895CF93C82F8091EA0181300B
+:1045100079F018F08230E9F187C0E0910E01F09156
+:104520000F018081813169F0823209F07FC009C0BA
+:10453000E0910E01F0910F018081813111F0823202
+:1045400061F48C2F0E947F22811104C08C2F0E9465
+:10455000B8211DC081E090E01AC08C2F0E948122FA
+:10456000811114C0C43179F048F4CB3079F0C031F6
+:1045700009F060C082E08093EA0108C0C93219F0F6
+:10458000C83321F057C01092EA0154C081E0817015
+:1045900053C0C93289F118F5C43171F1A8F4C7309C
+:1045A00009F046C08AE08093150194E190931401CC
+:1045B00093E0909313018093120188E0809311019E
+:1045C00088E28093100134C0CE51C63088F5EC2FBC
+:1045D000F0E0E65DFE4F80818093E90129C0CE3492
+:1045E000E9F020F4CB3421F56AE013C0C13579F04D
+:1045F000C235F1F461E00DC08091E901882319F022
+:104600001092E90115C081E08093EA0115C061E0D4
+:1046100006C08091E9010E94F2200AC06AE0809100
+:10462000E9010E94682104C01092EA0180E004C000
+:1046300081E002C080E0ABCFCF910895E1E8F0E0E7
+:104640008081886080838081816080838FB7F894C7
+:1046500093E09093890090ED909388008FBF089528
+:10466000EFE6F0E08081826080830895EFE6F0E07D
+:1046700080818D7F80830895EFE6F0E0908182E075
+:104680008927808308951F920F920FB60F921124ED
+:104690002F933F934F935F936F937F938F939F934A
+:1046A000AF93BF93EF93FF938091EB019091EC0157
+:1046B00001969093EC018093EB01811103C082E09D
+:1046C0000E94330AE091EC01E695E695F0E0EC59A2
+:1046D000F84FE4918091EB018E1303C080E00E94BB
+:1046E000330AFF91EF91BF91AF919F918F917F918D
+:1046F0006F915F914F913F912F910F900FBE0F904F
+:104700001F9018950E9489236894B1110C94182465
+:1047100008950E94FD2388F09F5798F0B92F99279C
+:10472000B751B0F0E1F0660F771F881F991F1AF09C
+:10473000BA95C9F714C0B13091F00E941724B1E0C6
+:1047400008950C941724672F782F8827B85F39F0C5
+:10475000B93FCCF3869577956795B395D9F73EF435
+:1047600090958095709561957F4F8F4F9F4F0895DD
+:10477000E89409C097FB3EF49095809570956195FB
+:104780007F4F8F4F9F4F9923A9F0F92F96E9BB27B1
+:104790009395F695879577956795B795F111F8CF2D
+:1047A000FAF4BB0F11F460FF1BC06F5F7F4F8F4F98
+:1047B0009F4F16C0882311F096E911C0772321F08E
+:1047C0009EE8872F762F05C0662371F096E8862F26
+:1047D00070E060E02AF09A95660F771F881FDAF77D
+:1047E000880F9695879597F9089557FD9058440F2F
+:1047F000551F59F05F3F71F04795880F97FB991F40
+:1048000061F09F3F79F087950895121613061406FC
+:10481000551FF2CF4695F1DF08C016161706180689
+:10482000991FF1CF86957105610508940895E89464
+:10483000BB2766277727CB0197F908950E9431247B
+:104840000C94A2240E94942438F00E949B2420F00F
+:10485000952311F00C948B240C94912411240C9426
+:1048600018240E94F52370F3959FC1F3950F50E033
+:10487000551F629FF001729FBB27F00DB11D639F12
+:10488000AA27F00DB11DAA1F649F6627B00DA11DB8
+:10489000661F829F2227B00DA11D621F739FB00D5E
+:1048A000A11D621F839FA00D611D221F749F3327CE
+:1048B000A00D611D231F849F600D211D822F762F67
+:1048C0006A2F11249F5750409AF0F1F088234AF044
+:1048D000EE0FFF1FBB1F661F771F881F91505040B0
+:1048E000A9F79E3F510580F00C948B240C9418245A
+:1048F0005F3FE4F3983ED4F3869577956795B79537
+:10490000F795E7959F5FC1F7FE2B880F911D969550
+:10491000879597F9089597F99F6780E870E060E0C0
+:1049200008959FEF80EC089500240A941616170648
+:1049300018060906089500240A9412161306140690
+:1049400005060895092E0394000C11F4882352F0F3
+:10495000BB0F40F4BF2B11F460FF04C06F5F7F4FAB
+:104960008F4F9F4F089597FB072E16F4009407D0A2
+:1049700077FD09D00E94CD2407FC05D03EF4909528
+:1049800081959F4F0895709561957F4F0895EE0F23
+:10499000FF1F0590F491E02D0994AA1BBB1B51E168
+:1049A00007C0AA1FBB1FA617B70710F0A61BB70B9F
+:1049B000881F991F5A95A9F780959095BC01CD0144
+:1049C0000895F999FECF92BD81BDF89A992780B5D7
+:1049D0000895A8E1B0E042E050E00C940925262FAC
+:1049E000F999FECF92BD81BDF89A019700B40216E5
+:1049F00039F01FBA20BD0FB6F894FA9AF99A0FBE93
+:104A000008950196272F0E94F0240C94EF24DC01D6
+:104A1000CB01FC01F999FECF06C0F2BDE1BDF89AC9
+:104A2000319600B40D9241505040B8F70895F89473
+:024A3000FFCFB6
+:104A32002002350AC30AA00A6C0A380A0101C7011A
+:104A420028080A03140A3F4D36392507D806A2065C
+:104A52006906FC0515062E06470601020304050633
+:044A62000708090038
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/bepo/bepo.png b/keyboard/ergodox_ez/keymaps/bepo/bepo.png Binary files differnew file mode 100644 index 0000000000..3df7aa609f --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/bepo/bepo.png diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c new file mode 100644 index 0000000000..dac6b7b51a --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -0,0 +1,311 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_extras/keymap_bepo.h" + +#define BASE 0 // default layer +#define QWER 1 // qwerty compat layer +#define SQWER 2 // shifted qwerty compat layer +#define AQWER 3 // alted qwerty compat layer +#define FNAV 4 // function / navigation keys +#define NUM 5 // numeric keypad keys +#define MSE 6 // mouse keys + +#define KP_00 0 +#define CA_Fx 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Base layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | % | B |E_ACUT| P | O |E_GRAV|Backsp| |CapsLo| ^ | V | D | L | J | Z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | W | A | U | I | E | , |------| |------| C | T | S | R | N | M | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | E_CIRC |A_GRAV| Y | X | . | K | | | | ' | Q | G | H | F | C_CEDIL| + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * |QWERTY| |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | L_Num| | CA_Fx| | | + * | Space|LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[BASE] = KEYMAP( +// Left hand +BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, +BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, +BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, +BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, +TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT, + KC_ESC, MO(MSE), + MO(NUM), + KC_SPC, KC_LSHIFT, MO(FNAV), +// Right hand + KC_SLCK, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL, + KC_CAPSLOCK, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, + BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, + KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, + BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_NO, KC_INS, +M(CA_Fx), +MO(FNAV), KC_RSHIFT, KC_ENTER), +/* Keymap 1: QWERTY system compatibility layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | % | b | e | p | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | w | a | u | i | e | , |------| |------| c | t | s | r | n | m | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | e | a | y | x | . | k | | | | ' | q | g | h | f | c | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | L_Num| | | | | + * | Space|LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[QWER] = KEYMAP( +// Left hand +KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL, +KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC, +KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA, +KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB, +KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, + KC_ESC, MO(MSE), + MO(NUM), + KC_SPC, MO(SQWER), MO(FNAV), +// Right hand + KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, + KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, + KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, + MO(AQWER), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_NO, KC_INS, +KC_TRNS, +MO(FNAV), MO(SQWER), KC_ENTER), +/* Keymap 2: QWERTY shifted system compatibility layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ` | B | E | P | O | E |Backsp| |CapsLo| ! | V | D | L | J | Z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | W | A | U | I | E | ; |------| |------| C | T | S | R | N | M | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | L_Num| | | | | + * | Space|LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[SQWER] = KEYMAP( +// Left hand +KC_HASH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, +KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS, +S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON, +S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB), +KC_TRNS, KC_TRNS, S(KC_LGUI), S(KC_LCTL), S(KC_LALT), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, +// Right hand + KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_EXLM, S(KC_V), S(KC_D), S(KC_L), S(KC_J), S(KC_Z), + S(KC_C), S(KC_T), S(KC_S), S(KC_R), S(KC_N), S(KC_M), + KC_TRNS, S(KC_SLASH), S(KC_Q), S(KC_G), S(KC_H), S(KC_F), S(KC_C), + S(KC_RALT), S(KC_RCTL), S(KC_RGUI), KC_TRNS, KC_TRNS, +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, KC_TRNS, KC_TRNS), +/* Keymap 3: QWERTY alted system compatibility layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | w | a | u | i | € | , |------| |------| c | t | s | r | n | m | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | L_Num| | | | | + * | _ |LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[AQWER] = KEYMAP( +// Left hand +KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL, +KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, +KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, +KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, +KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, + KC_ESC, MO(MSE), + MO(NUM), + KC_UNDS, MO(SQWER), MO(FNAV), +// Right hand + KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, + KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, + KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, + KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_NO, KC_INS, +KC_TRNS, +MO(FNAV), MO(SQWER), KC_ENTER), +/* Keymap 4: function / navigation layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | |VolDwn| | | PgUp | Home | Up | End | F11 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| PgDn | Left | Down | Right| F12 | | + * |--------+------+------+------+------+------| VolUp| | |------+------+------+------+------+--------| + * | | Undo | Cut | Copy | Paste| | | | | | | | | | | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * | | | | | | | | | | | | | | | | | | + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[FNAV] = KEYMAP( +// Left hand +KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE, +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, +KC_NO, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_VOLD, +KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_TRNS, KC_TRNS, +// Right hand + KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, + KC_NO, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_F11, KC_NO, + KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F12, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, +KC_NO, KC_NO, +KC_TRNS, +KC_TRNS, KC_TRNS, KC_NO), +/* Keymap 5: numeric layer, sends keypad codes + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | + | - | / | * | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | 7 | 8 | 9 | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | 4 | 5 | 6 | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | 1 | 2 | 3 | | | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * | | | | | | | | | | | | | 0 | 00 | . | | | + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | | | | | | + * | | |------| |------| | Enter| + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUM] = KEYMAP( +// Left hand +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_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_NO, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_NO, + KC_TRNS, + KC_NO, KC_TRNS, KC_NO, +// Right hand + KC_NO, KC_NO, KC_KP_PLUS, KC_KP_MINUS, KC_KP_SLASH, KC_KP_ASTERISK, KC_NO, + KC_NO, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_NO, KC_NO, + KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_NO, KC_NO, + KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_NO, KC_NO, + KC_KP_0, M(KP_00), KC_KP_COMMA, KC_NO, KC_NO, +KC_NO, KC_NO, +KC_NO, +KC_NO, KC_TRNS, KC_KP_ENTER), +/* Keymap 6: mouse layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | |LClick| Up |RClick| WhUp | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | Left | Down | Right|WhDown| | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * | | | | | | | | | | | | | | | | | | + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[MSE] = KEYMAP( +// Left hand +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_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_NO, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_TRNS, + KC_NO, + KC_NO, KC_TRNS, KC_NO, +// Right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_NO, + KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, +KC_NO, KC_NO, +KC_NO, +KC_NO, KC_TRNS, KC_NO) +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case KP_00: + if (record->event.pressed) { + return MACRO( T(KP_0), D(KP_0), END ); + } else { + return MACRO( U(KP_0), END ); + } + break; + case CA_Fx: + if (record->event.pressed) { + layer_on(FNAV); + return MACRO( D(LALT), D(LCTL), END ); + } else { + layer_off(FNAV); + return MACRO( U(LCTL), U(LALT), END ); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +}; diff --git a/keyboard/ergodox_ez/keymaps/dave/dave.hex b/keyboard/ergodox_ez/keymaps/dave/dave.hex index 363e7234d8..a1ba8b901d 100644 --- a/keyboard/ergodox_ez/keymaps/dave/dave.hex +++ b/keyboard/ergodox_ez/keymaps/dave/dave.hex @@ -1,1128 +1,1172 @@ -:100000000C9463020C94AA020C94AA020C94AA0207
-:100010000C94AA020C94AA020C94AA020C94AA02B0
-:100020000C94AA020C94AA020C94FF0B0C94D10C11
-:100030000C94AA020C94AA020C94AA020C94AA0290
-:100040000C94AA020C9445210C94AA020C94AA02C6
-:100050000C94AA020C94D71A0C94AA020C94AA022B
-:100060000C94AA020C94AA020C94AA020C94AA0260
-:100070000C94AA020C94AA020C94AA020C94AA0250
-:100080000C94AA020C94AA020C94AA020C94AA0240
-:100090000C94AA020C94AA020C94AA020C94AA0230
-:1000A0000C94AA020C94AA020C94AA023E0D600DB4
-:1000B000530E600D530EA50DC80D530E1D0E300EC0
-:1000C0001A111A11491149118C11C611D313D313E6
-:1000D000DF11D313D412D412A713D313D313BE1327
-:1000E00029002B00E000E100357100001E00140023
-:1000F00004001D006400E3001F001A0016001B002E
-:1001000000000252200008000700060000002C003A
-:100110002100150009001900E2001151220017000A
-:100120000A0005000000460023001C0000000B0030
-:100130000000650023000A000000050000004800E0
-:1001400024001C000B0011000000007525001800A1
-:100150000D001000E600115126000C000E003600C4
-:1001600000002C00270012000F0037002F00015262
-:100170002D001300330038003000E7002A0028006B
-:100180002800E500347100000100010001000100B9
-:100190000100000001001E022002220201000100F5
-:1001A00001001F02210223020100010001002F02B1
-:1001B00026022F000100010001003002270230005A
-:1001C000010012510100310235003502000001002A
-:1001D0000100010000000100000001000100010019
-:1001E0000000010000000100010001000100010009
-:1001F0000000010000005F005C0059006200125125
-:10020000540060005D005A0062000100550061006A
-:100210005E005B0063000100560057005700580065
-:10022000580001002E0032003400010001000000DF
-:100230000100010001000100010000003A004A0035
-:100240005000F400F20001003B0052005100F000A9
-:10025000F10001003C004D004F00F500F3000100EB
-:100260003D0049004C000100010010513E004B00D0
-:100270004E0001000000A5003F0001000000010049
-:1002800000004C05400001000000010000000100DA
-:1002900041000100010001000000010042000100D6
-:1002A000B600AC00AA001051430049004C00AE005B
-:1002B000A800010044000100B700AB00A900010044
-:1002C00045000100010001000100010001000100E2
-:1002D00001000100010000001603450072006700E4
-:1002E0006F0044006F007800200045005A000000B5
-:1002F00016034500720067006F0044006F0078002D
-:10030000200045005A0000000403090409026D00A2
-:10031000040100A0FA090400000103010100092101
-:1003200011010001223F000705810308000A0904AA
-:1003300001000103010200092111010001224D0009
-:100340000705820308000A090402000103000000F7
-:100350000921110100012236000705830308000A64
-:10036000090403000103000000092111010001221A
-:10037000390007058403100001120110010000007C
-:1003800008EDFE071301000102000105010906A1A5
-:1003900001050719E029E715002501950875018178
-:1003A0000205081901290595057501910295017548
-:1003B0000391010507190029771500250195787526
-:1003C000018102C005010980A101850216010026F4
-:1003D000B7001A01002AB700751095018100C00509
-:1003E0000C0901A1018503160100269C021A0100D7
-:1003F0002A9C02751095018100C005010902A10126
-:100400000901A10005091901290515002501950516
-:1004100075018102950175038101050109300931DA
-:100420001581257F95027508810609381581257F7C
-:10043000950175088106050C0A38021581257F95FE
-:100440000175088106C0C005010906A1010507194B
-:10045000E029E715002501950875018102950175D0
-:100460000881010508190129059505750191029575
-:1004700001750391010507190029FF150025FF9556
-:100480000675088100C000000000000000000000A8
-:1004900000010204060A0F17202C3A4A5D71879D5D
-:1004A000B3C7DAE9F5FCFFFCF5E9DAC7B39D87715C
-:1004B0005D4A3A2C20170F0A0604020100000000D2
-:1004C00000000000000011241FBECFEFDAE0DEBF05
-:1004D000CDBF04B603FE27C08091F1019091F201D7
-:1004E000A091F301B091F4018730904BA740B04B3D
-:1004F000D1F41092F1011092F2011092F3011092D6
-:10050000F40114BE84B7877F84BF0FB6F894A89512
-:1005100080916000886180936000109260000FBE3F
-:10052000E0E0FFE3099511E0A0E0B1E0ECE2F6E4E1
-:1005300002C005900D92A433B107D9F721E0A4E3DE
-:10054000B1E001C01D92A13FB207E1F70E94460948
-:100550000C9414230C94000061110BC0FC018281E7
-:10056000882321F085EE0E94B40F03C085EE0E941F
-:100570007C1080E090E0089508956091B50170913D
-:10058000B6018091B7019091B8010E94041A569863
-:100590005E98E5E3F1E065E070E031E0A1E0B0E015
-:1005A0004081831305C091E04F3F41F490E006C0C5
-:1005B00021E0411101C020E0922F9195940F90838A
-:1005C000992309F194B1AD01062E01C0440F0A949C
-:1005D000EAF7942B94B995B1492B45B9408150E085
-:1005E000313029F4509389004093880019C032308B
-:1005F00029F450938B0040938A0012C050938D00D1
-:1006000040938C000DC094B1AD01062E01C0440F83
-:100610000A94EAF74095942394B995B1492345B9D2
-:100620003F5F6F5F7F4F3196343009F0B9CF089547
-:100630000C94BD0256985E9825982D9826982E9871
-:1006400027982F988FEF90E09093890080938800EF
-:1006500090938B0080938A0090938D0080938C0000
-:10066000259A2D9A2FEF80E792E02150804090400C
-:10067000E1F700C00000269A2E9A2FEF80E792E063
-:10068000215080409040E1F700C00000279A2F9A47
-:100690002FEF80E792E0215080409040E1F700C0CA
-:1006A000000025982D982FEF80E792E021508040A0
-:1006B0009040E1F700C0000026982E982FEF80E7C9
-:1006C00092E0215080409040E1F700C00000279860
-:1006D0002F9856985E9825982D9826982E982798AA
-:1006E0002F98089589EA8093800089E080938100A3
-:1006F00024982C983F988AB18F748AB96E98479A3B
-:100700008BB1806B8BB9769A0E941A030C94BC0251
-:1007100080E2809300018091380181110EC00E9417
-:10072000D70381E0809338012FEF83ED90E32150D0
-:1007300080409040E1F700C0000080E40E94DD03AB
-:100740008093000181112EC00E9407048093000154
-:10075000811128C00E94070480930001811122C0EA
-:100760008FE30E9407048093000181111BC00E9447
-:10077000FF0380E40E94DD0380930001811112C019
-:100780008CE00E9407048093000181110BC00E943D
-:10079000070480930001811105C08FE30E940704C4
-:1007A000809300010E94FF03809100010895109240
-:1007B000B9008AE08093B800089594EA9093BC0051
-:1007C0009091BC0097FFFCCF9091B900987F983032
-:1007D00021F0903111F081E008958093BB0084E80E
-:1007E0008093BC008091BC0087FFFCCF8091B90052
-:1007F000887F883111F0803471F780E0089584E9B2
-:100800008093BC008091BC0084FDFCCF0895809350
-:10081000BB0084E88093BC008091BC0087FFFCCFC4
-:100820009091B900987F81E0983209F480E00895B2
-:1008300084E88093BC008091BC0087FFFCCF80914E
-:10084000BB00089580910001811115C080E40E94D1
-:10085000DD038093000181110CC082E10E94070436
-:1008600080930001811105C08FEF0E9407048093DF
-:1008700000010E94FF0384B1807F84B985B1807F2D
-:1008800085B98AB1837F8AB98BB1837F8BB93E9852
-:10089000469808950E948803809300010E942204D4
-:1008A00080B38C7080BB81B3836F81BBE8E4F1E0DF
-:1008B000AAE3B1E011921D9281E0E635F807D1F785
-:1008C0000C9472039F92AF92BF92CF92DF92EF92FD
-:1008D000FF920F931F93CF93DF93809100018823A2
-:1008E00079F0809139018F5F80933901811108C0BF
-:1008F0000E94880380930001811102C00E941A03A4
-:100900008AE3E82E81E0F82E8701C0E0D0E0BB2426
-:10091000B39492E0A92ECC24C394D12CC730D10536
-:1009200000F580910001811164C080E40E94DD0324
-:1009300080930001811112C082E10E94070480931C
-:10094000000181110BC0C6010C2E01C0880F0A9452
-:10095000EAF780950E940704809300010E94FF033C
-:1009600048C0CA30A1F028F4C83059F0C93061F04D
-:1009700005C0CC3089F070F0CD3089F0209A2898ED
-:1009800010C0219A29980DC0229A2A980AC0239A49
-:100990002B9807C0529A01C0539A5B9802C03E9AA6
-:1009A0004698E0EAEA95F1F78FB181708B25799945
-:1009B00002C032E001C030E0832B7C9902C034E0F9
-:1009C00001C030E0832B7D9902C028E001C020E007
-:1009D000822B7E9902C090E101C090E0892B9FB1EB
-:1009E0009095991F9927991F9295990F907E892B21
-:1009F0000FC08091000181114AC080E40E94DD0394
-:100A000080930001882381F1912C0E94FF03892D9E
-:100A1000D8019C91981719F08C93A09201010E9423
-:100A2000220421960F5F1F4FCE30D10509F076CFFB
-:100A300080910101882369F181508093010188230D
-:100A400039F0EFE9FFE03197F1F700C0000021C075
-:100A5000E8E4F1E0D7018D917D018193B8E4EB16D4
-:100A6000B1E0FB06B9F715C083E10E94070480934B
-:100A700000018111C9CF81E40E94DD038093000150
-:100A80008111C2CF0E941804982E9094BECF80E0AE
-:100A9000BFCF0E94180381E0DF91CF911F910F918A
-:100AA000FF90EF90DF90CF90BF90AF909F90089510
-:100AB000E82FF0E0E85BFE4F8081089508958B3BBE
-:100AC000910580F4883A910548F5853A9105D8F466
-:100AD0008430910508F0B2C0019709F06EC081E042
-:100AE00090E00895803E910508F467C0883E910526
-:100AF00008F4A4C09C01205F31092031310508F0C1
-:100B00005CC090650895853A910509F459C0863A0C
-:100B1000910509F058C082E890E40895883A91055B
-:100B200009F454C0893A910509F453C08A3A9105F1
-:100B300009F452C08B3A910509F451C08C3A9105E1
-:100B400009F450C08D3A910509F44FC0803B9105DE
-:100B500009F44EC08E3A910509F44DC08F3A9105C3
-:100B600009F44CC0813B910509F44BC0823B9105CF
-:100B700009F44AC0833B910509F449C0843B9105BF
-:100B800009F448C0853B910509F447C0863B9105AF
-:100B900009F446C0873B910509F445C0883B91059F
-:100BA00009F444C0893B910509F443C08A3B91058F
-:100BB00009F442C080E094E4089580E090E0089554
-:100BC00081E890E4089583E890E4089582EE94E447
-:100BD000089589EE94E408958AEE94E4089585EBEF
-:100BE00094E4089586EB94E4089587EB94E40895E3
-:100BF0008CEC94E408958DEC94E4089583E895E4F6
-:100C000008958AE895E4089582E995E4089584E9D1
-:100C100095E4089581E296E4089583E296E40895C8
-:100C200084E296E4089585E296E4089586E296E4E7
-:100C3000089587E296E408958AE296E40895089577
-:100C400024E5829FC0011124FC0126E0729FE00D83
-:100C5000F11D1124E60FF11DEE0FFF1FE052FF4FB3
-:100C6000859194910895880F991FFC01E05AF040F6
-:100C7000859194910895880F991FFC01E052FF4FD0
-:100C800085919491089524E5829FC0011124FC016F
-:100C900046E0749FE00DF11D1124E60FF11DEE0FEB
-:100CA000FF1FE052FF4F859194919C013A952115C9
-:100CB0004FE1340708F425C13F512115304120F49C
-:100CC0009F700E943B0608959C01305321153041CE
-:100CD00018F49927906C0895811520E5920769F41E
-:100CE0000E94F5134FEF84E39CE041508040904018
-:100CF000E1F700C000000C94FC1A813020E5920757
-:100D000031F48091D00181608093D00108959C01DD
-:100D100030552115304108F05CC0292F33272F7042
-:100D2000332721303105E9F4AC0164E0440F551F4D
-:100D30006A95E1F744275370BC016370772702C0BE
-:100D4000220F331F6A95E2F73C68242B352B73E0A2
-:100D5000880F991F7A95E1F780769927822B932B3C
-:100D600008952230310529F4982F8827816F906AE1
-:100D7000089523303105A1F4AC0133E0440F551F31
-:100D80003A95E1F7407E57708370992721E030E073
-:100D900002C0220F331F8A95E2F7C9019C6816C072
-:100DA0002430310531F5AC0123E0440F551F2A955D
-:100DB000E1F7407E57708370992721E030E002C050
-:100DC000220F331F8A95E2F7C9019A68842B952B6D
-:100DD00008959C0130572115304118F49F7090629E
-:100DE00008959C0130582115304118F49F70906A85
-:100DF0000895803E9105E0F4803C910558F58133DB
-:100E0000910509F46FC048F48932910509F463C073
-:100E10008A32910509F46DC072C089339105E9F0F9
-:100E200082389105D1F08533910509F44DC067C032
-:100E3000833E910581F138F4803E9105B9F0823E00
-:100E40009105D9F05CC0863E910561F1873E910520
-:100E5000A1F155C00E94330608952091E20120FDC2
-:100E600002C021FF4CC080EE90E049C08091E201B9
-:100E700080FFF9CF89E390E042C08091E20182FFD8
-:100E80000EC08091E20184FF03C080E090E037C093
-:100E900083EE90E034C08091E20182FFF2CF82EED7
-:100EA00090E02DC08091E20183FF0BC08091E201B0
-:100EB00084FDEBCF87EE90E022C08091E20183FFBA
-:100EC000F5CF86EE90E01BC08091E20185FF07C060
-:100ED00089E290E014C08091E20185FFF9CF85E3BB
-:100EE00090E00DC08091E20186FF07C08AE290E0A9
-:100EF00006C08091E20186FFF9CF81E390E00E9475
-:100F00005F0508950895809166010895CF93DF935A
-:100F100000D01F92CDB7DEB79C018091E8018430EC
-:100F200019F593E099833B832A839093E9008FEF2F
-:100F30009091E800815095FD06C095ED9A95F1F7E6
-:100F400000008111F5CF8091E80085FF0DC040E0E1
-:100F500050E063E070E0CE0101960E94F3098091B9
-:100F6000E8008E778093E8000F900F900F90DF914C
-:100F7000CF910895CF93DF9300D01F92CDB7DEB706
-:100F80002091E801243021F522E029839B838A8384
-:100F900083E08093E9008FEF9091E800815095FD08
-:100FA00006C095ED9A95F1F700008111F5CF80917B
-:100FB000E80085FF0DC040E050E063E070E0CE0146
-:100FC00001960E94F3098091E8008E778093E800F3
-:100FD0000F900F900F90DF91CF9108959C01809119
-:100FE000E8018430F9F482E08093E9009FEF80917A
-:100FF000E800915085FD06C085ED8A95F1F7000067
-:101000009111F5CF8091E80085FF0CC040E050E0E1
-:1010100065E070E0C9010E94F3098091E8008E77D5
-:101020008093E8000895CF93DF93EC018091E8016D
-:10103000843009F046C090910C019923D9F0909129
-:101040000D019923B9F08093E9008FEF9091E800AA
-:10105000815095FD06C095E19A95F1F70000811148
-:10106000F5CF8091E80085FF2CC040E050E060E1C2
-:1010700070E017C081E08093E9008FEF9091E80065
-:10108000815095FD06C095ED9A95F1F7000081110C
-:10109000F5CF8091E80085FF14C040E050E068E0A3
-:1010A00070E0CE010E94F3098091E8008E77809372
-:1010B000E80080E1FE01A6E5B1E001900D928A957D
-:1010C000E1F7DF91CF9108958091E701811109C087
-:1010D0000E94840B0E94E10B8091E2008460809367
-:1010E000E20008951092E701089508950C943221CA
-:1010F0000E94921A0E9438210E948C0E0C94820742
-:1011000042E061EC81E00E94FD0A42E061EC82E095
-:101110000E94FD0A42E061EC83E00E94FD0A42E188
-:1011200061EC84E00C94FD0A8091EA01833009F4BB
-:1011300055C030F4813071F0823009F48EC00895CA
-:101140008A3009F47AC08B3009F460C0893009F024
-:101150009CC020C08091E901813A09F096C080913D
-:10116000E800877F8093E8008091ED019091EE0187
-:10117000892B21F460E186E591E003C060E080E026
-:1011800090E070E00E943E0A8091E8008B778093A7
-:10119000E80008958091E901813209F076C08091DC
-:1011A000ED019091EE01009719F0039709F06DC0E1
-:1011B0008091E800877F8093E8008091E80082FDBD
-:1011C00005C08091E8018111F8CF5FC08091F100E6
-:1011D000809366018091E8008B7753C08091E9018C
-:1011E000813A09F052C08091ED019091EE01892B76
-:1011F00009F04BC08091E800877F8093E8008091E0
-:10120000E80080FFFCCF80910C0136C08091E9019D
-:101210008132D9F58091ED019091EE01892BA9F5EC
-:101220008091E800877F8093E8000E94320B8091D4
-:10123000EB0180930C010C94F5138091E90181324C
-:1012400021F58091E800877F8093E8000E94320BAF
-:101250008091EC018093670108958091E901813AC2
-:10126000A1F48091E800877F8093E8008091E800F6
-:1012700080FFFCCF809167018093F1008091E800AE
-:101280008E778093E8000C94320B089584B7877FA3
-:1012900084BF0FB6F894A895809160008861809310
-:1012A0006000109260000FBE90E080E80FB6F894E6
-:1012B00080936100909361000FBE0E94DB0E0E943C
-:1012C000840B0E94E10B8091E20084608093E20035
-:1012D00078940E946C0E0E94DD0E82E091E00E94E4
-:1012E000870E0E9420218091E801853069F40E94D8
-:1012F000541A8091E6018823B1F30E947E1A882354
-:1013000091F30E94DD09EFCF0E94E30EECCF292F6D
-:10131000332723303105C9F060F42130310581F0E5
-:101320002230310509F041C08DE690E02CE033E039
-:1013300040C021323105E1F02232310531F135C0B2
-:1013400082E190E029E733E034C0992781309105AC
-:1013500049F028F0029749F5E8EDF2E005C0E8E031
-:10136000F3E002C0E0EFF2E0849190E09F0121C041
-:101370006430D8F4E62FF0E0EE0FFF1FEE5DFE4F75
-:101380002081318189E090E014C0643070F470E015
-:10139000FB01EE0FFF1FE65EFE4F20813181FB0156
-:1013A000EA5EFE4F808190E004C080E090E020E0A3
-:1013B00030E0FA0131832083089580E189BD82E124
-:1013C00089BD09B400FEFDCF8091D8008F7D809348
-:1013D000D8008091E00082608093E0008091E0007E
-:1013E00081FDFCCF0895CF92DF92EF92FF920F9391
-:1013F0001F93CF93DF93EC018B016A010E94510B85
-:10140000811133C0C114D10439F0F601808191817A
-:10141000081B190BC80FD91FE12CF12C0115110560
-:1014200019F18091E80085FD16C08091E8008E7763
-:101430008093E800C114D10449F0F60180819181C4
-:10144000E80EF91EF182E08285E00FC00E94510B88
-:10145000882321F30AC089918093F100015011097A
-:10146000FFEFEF1AFF0ADACF80E0DF91CF911F91F3
-:101470000F91FF90EF90DF90CF9008952091EF01B2
-:101480003091F0012617370748F06115710539F4DE
-:101490002091E8002E772093E80001C0B901FC01FB
-:1014A00020E06115710579F18091E8018823F1F15F
-:1014B0008530F1F18091E80083FD3CC08091E80027
-:1014C00082FD2EC08091E80080FFEBCF2091F300D9
-:1014D0008091F20090E0922B6115710551F08830F7
-:1014E000910538F421912093F10061507109019622
-:1014F000F3CF21E0089709F020E08091E8008E7793
-:101500008093E800CECF2111CFCF0AC08091E801AF
-:10151000882361F0853061F08091E80083FD0AC086
-:101520008091E80082FFF2CF80E0089582E0089584
-:1015300083E0089581E008952091EF013091F0015A
-:101540002617370748F06115710539F42091E80036
-:101550002E772093E80001C0B901FC0120E061155D
-:10156000710591F18091E801882309F440C085302C
-:1015700009F43FC08091E80083FD3DC08091E80000
-:1015800082FD2FC08091E80080FFE9CF2091F30019
-:101590008091F20090E0922B6115710559F088302E
-:1015A000910540F424912093F10031966150710926
-:1015B0000196F2CF21E0089709F020E08091E80041
-:1015C0008E778093E800CBCF2111CCCF0AC08091D9
-:1015D000E801882361F0853061F08091E80083FDA7
-:1015E0000AC08091E80082FFF2CF80E0089582E097
-:1015F000089583E0089581E00895982F973068F565
-:101600009093E900981739F07091EC002091ED006B
-:101610005091F00003C0242F762F50E021FD02C02E
-:101620009F5FECCF3091EB003E7F3093EB00309129
-:10163000ED003D7F3093ED003091EB003160309351
-:10164000EB007093EC002093ED005093F00020919C
-:10165000EE0027FDE5CF80E008958F708093E900CC
-:1016600081E008958091E90187FF11C08091E80031
-:1016700082FD05C08091E8018111F8CF11C08091F1
-:10168000E8008B770BC08091E801882349F08091B6
-:10169000E80080FFF8CF8091E8008E778093E80023
-:1016A00008952091E4003091E50095E64091EC002A
-:1016B000842F817040FF23C08091E80080FD1DC011
-:1016C0008091E801882399F0853099F08091EB00B2
-:1016D00085FD11C04091E4005091E50024173507C5
-:1016E00029F3915011F09A01E1CF84E0089582E04E
-:1016F000089583E0089581E0089580E00895409181
-:10170000E80042FFDDCF08950E94F20B0E94FA0B21
-:10171000E0EEF0E0808181608083E8EDF0E08081A0
-:101720008F77808319BCA7EDB0E08C918E7F8C936E
-:1017300080818F7E80831092E70108950F931F931D
-:10174000CF93DF930E94F20B0E94FA0BC8EDD0E01A
-:1017500088818F77888388818068888388818F7D5E
-:10176000888319BC1092E8011092E4011092E601FE
-:101770001092E50100EE10E0F80180818B7F8083FC
-:1017800088818160888342E060E080E00E94FD0AF9
-:10179000E1EEF0E080818E7F8083E2EEF0E08081F8
-:1017A00081608083808188608083F80180818E7F62
-:1017B0008083888180618883DF91CF911F910F9111
-:1017C0000895E8EDF0E080818F7E8083E7EDF0E022
-:1017D00080818160808384E082BF81E08093E70123
-:1017E0000C949E0BE8EDF0E080818E7F8083109258
-:1017F000E20008951092DA001092E10008951F921D
-:101800000F920FB60F9211242F933F934F935F9334
-:101810006F937F938F939F93AF93BF93EF93FF93B8
-:101820008091E10082FF0BC08091E20082FF07C03F
-:101830008091E1008B7F8093E1000E946B0E80918C
-:10184000DA0080FF1FC08091D80080FF1BC080910C
-:10185000DA008E7F8093DA008091D90080FF0DC07E
-:1018600080E189BD82E189BD09B400FEFDCF81E040
-:101870008093E8010E94640805C019BC1092E80139
-:101880000E9472088091E10080FF19C08091E200FF
-:1018900080FF15C08091E2008E7F8093E2008091EE
-:1018A000E20080618093E2008091D80080628093A2
-:1018B000D80019BC85E08093E8010E9476088091E9
-:1018C000E10084FF30C08091E20084FF2CC080E101
-:1018D00089BD82E189BD09B400FEFDCF8091D800A9
-:1018E0008F7D8093D8008091E1008F7E8093E1000E
-:1018F0008091E2008F7E8093E2008091E20081601F
-:101900008093E2008091E401882311F084E007C015
-:101910008091E30087FD02C081E001C083E08093F5
-:10192000E8010E9478088091E10083FF29C080913E
-:10193000E20083FF25C08091E100877F8093E10072
-:1019400082E08093E8011092E4018091E1008E7FB3
-:101950008093E1008091E2008E7F8093E20080918D
-:10196000E20080618093E20042E060E080E00E945B
-:10197000FD0A8091F00088608093F0000E94750855
-:10198000FF91EF91BF91AF919F918F917F916F9157
-:101990005F914F913F912F910F900FBE0F901F902D
-:1019A00018951F920F920FB60F9211242F933F9309
-:1019B0004F935F936F937F938F939F93AF93BF9357
-:1019C000CF93DF93EF93FF93C091E900CF708091A5
-:1019D000EC00D82FD17080FDD0E81092E900809102
-:1019E000F000877F8093F00078940E94150D10928C
-:1019F000E9008091F00088608093F000CD2BCF70DB
-:101A0000C093E900FF91EF91DF91CF91BF91AF912A
-:101A10009F918F917F916F915F914F913F912F9106
-:101A20000F900FBE0F901F9018951F93CF93DF93C9
-:101A3000CDB7DEB7AA970FB6F894DEBF0FBECDBF05
-:101A4000E9EEF1E08091F100819321E0E13FF207BE
-:101A5000C9F70E9494088091E80083FF24C1809117
-:101A6000E9019091EA01492F50E04A30510508F010
-:101A70001AC1FA01EA5AFF4F0C94C922803881F04A
-:101A8000823809F010C18091ED018F708093E900D8
-:101A90008091EB0085FB882780F91092E90006C051
-:101AA0008091E5019091E601911182609091E800AA
-:101AB000977F9093E8008093F1001092F100C8C0E6
-:101AC000282F2D7F09F0EFC0882319F0823061F0B4
-:101AD000EAC08091EB01813009F0E5C0933009F054
-:101AE00080E08093E6012BC08091EB01811127C03B
-:101AF0008091ED018F7009F4D6C08093E9002091A8
-:101B0000EB0020FF1CC0933021F48091EB00806239
-:101B100014C09091EB0090619093EB0021E030E0D5
-:101B2000A90102C0440F551F8A95E2F74093EA00CD
-:101B30001092EA008091EB0088608093EB00109295
-:101B4000E9008091E800877F86C08111ACC01091C8
-:101B5000EB011F778091E3008078812B8093E30075
-:101B60008091E800877F8093E8000E94320B80918B
-:101B7000E80080FFFCCF8091E30080688093E30061
-:101B8000111102C082E001C083E08093E8018BC0A4
-:101B90008058823008F087C08091EB019091EC0171
-:101BA0008C3D53E0950779F583E08A838AE2898347
-:101BB0004FB7F894DE01139620E03EE051E2E32FA8
-:101BC000F0E050935700E49120FF03C0E295EF70DE
-:101BD0003F5FEF708E2F90E0EA3010F0C79601C0A3
-:101BE000C0968D939D932F5F243149F74FBF80910D
-:101BF000E800877F8093E8006AE270E0CE010196FA
-:101C00000E943E0A14C0AE014F5F5F4F6091ED012C
-:101C10000E948709BC01892B09F445C09091E80016
-:101C2000977F9093E80089819A810E949C0A809115
-:101C3000E8008B778093E80036C08038A1F580916A
-:101C4000E800877F8093E8008091E4018093F100B1
-:101C50008091E8008E778093E8000E94320B23C0C9
-:101C6000811121C08091EB019091EC01992702979D
-:101C7000D4F48091E800877F8093E8008091EB01A5
-:101C80008093E4010E94320B8091E401811106C02F
-:101C90008091E30087FD02C081E001C084E0809371
-:101CA000E8010E9480088091E80083FF0AC08091CB
-:101CB000E800877F8093E8008091EB00806280934A
-:101CC000EB00AA960FB6F894DEBF0FBECDBFDF9132
-:101CD000CF911F9108950895CF938091E8018823B3
-:101CE000A1F0C091E900CF709091EC00892F817034
-:101CF00090FD80E8C82B1092E9008091E80083FDF8
-:101D00000E94150DCF70C093E900CF910895909374
-:101D10006D0180936C010895E0916C01F0916D016B
-:101D2000309721F00190F081E02D099480E0089532
-:101D3000E0916C01F0916D01309721F00280F38108
-:101D4000E02D09940895E0916C01F0916D013097B8
-:101D500021F00480F581E02D0994089520916A0115
-:101D600030916B012817390771F090936B018093C4
-:101D70006A01E0916C01F0916D01309721F00680CD
-:101D8000F781E02D0994089520916801309169014F
-:101D90002817390771F09093690180936801E091E9
-:101DA0006C01F0916D01309721F00084F185E02DF8
-:101DB0000994089508950C94DA0E0E94981A0E94CE
-:101DC0004A040C945E1BCF92DF92EF92FF920F9326
-:101DD0001F93CF93DF93CDB7DEB72B970FB6F89451
-:101DE000DEBF0FBECDBF0E9462048FE6C82E81E029
-:101DF000D82E00E010E0E02E802F0E945805F6015A
-:101E000041916F01F82EF426B1F40F5F1F4F0E3091
-:101E1000110589F78FEF89838A831B820E94A11A9B
-:101E20008160782F9D838C8349815A816B818D815C
-:101E30000E94860F40C09091D00191FF04C08B8713
-:101E40000E945E058B8520E030E04F2D50E0922F00
-:101E5000BA01022E02C0759567950A94E2F760FFF9
-:101E600024C02E83EF8221E030E0690102C0CC0C57
-:101E7000DD1C9A95E2F790E08C219D21892B09F4D5
-:101E800020E028870E94A11A8160782F9A8789878D
-:101E90004E815F8168858A850E94860FF801E1592D
-:101EA000FE4F8081C826C08206C02F5F3F4F26307C
-:101EB000310569F6AACF0E94451E0E948C0E9091B2
-:101EC0006E018917A1F00E948C0E80936E012B96F3
-:101ED0000FB6F894DEBF0FBECDBFDF91CF911F913B
-:101EE0000F91FF90EF90DF90CF900C9482072B968C
-:101EF0000FB6F894DEBF0FBECDBFDF91CF911F911B
-:101F00000F91FF90EF90DF90CF900895CF93DF93E4
-:101F1000CDB7DEB72B970FB6F894DEBF0FBECDBF9F
-:101F20004F83588769877A878B87DE01119686E011
-:101F3000FD0111928A95E9F785E0FE01379601903F
-:101F40000D928A95E1F749815A816B817C818D815F
-:101F50009E810E9489162B960FB6F894DEBF0FBEA5
-:101F6000CDBFDF91CF910895CF93C82F882309F477
-:101F7000C1C0823859F40E948C0E81FDBBC089E338
-:101F80000E9426190E94DE1989E30CC0833879F477
-:101F90000E948C0E80FDAEC083E50E9426190E942F
-:101FA000DE1983E50E946519CF910C94DE198438FF
-:101FB00059F40E948C0E82FD9DC087E40E94261970
-:101FC0000E94DE1987E4EECF8CEF8C0F813A48F443
-:101FD0008C2F0E94852081118DC08C2F0E94261984
-:101FE000E3CF80E28C0F883048F4C77081E001C0F5
-:101FF000880FCA95EAF70E94A719D6CF8BE58C0FF8
-:10200000833078F4C53A29F0C63A31F083E890E09D
-:1020100005C081E890E002C082E890E0CF910C9486
-:10202000AE0E88E58C0F833108F064C0C83A39F1F0
-:10203000C93A41F1CA3A49F1CB3A51F1CC3A59F196
-:10204000CD3A61F1C03B69F1CE3A71F1CF3A79F105
-:10205000C13B81F1C23B89F1C33B91F1C43B99F192
-:10206000C53BA1F1C63BA9F1C73BB1F1C83BB9F1F2
-:10207000C93BC1F1CA3BC9F180E090E038C082EEB3
-:1020800090E035C089EE90E032C08AEE90E02FC03B
-:1020900085EB90E02CC086EB90E029C087EB90E0C8
-:1020A00026C08CEC90E023C08DEC90E020C083E84B
-:1020B00091E01DC08AE891E01AC082E991E017C062
-:1020C00084E991E014C081E292E011C083E292E0E1
-:1020D0000EC084E292E00BC085E292E008C086E286
-:1020E00092E005C087E292E002C08AE292E0CF91DE
-:1020F0000C94C40ECF910895882309F44BC0823804
-:1021000059F40E948C0E81FF45C089E30E94261974
-:102110000E94DE1989E30CC0833871F40E948C0E92
-:1021200080FF38C083E50E9426190E94DE1983E5EE
-:102130000E9465190C94DE19843859F40E948C0EA3
-:1021400082FF28C087E40E9426190E94DE1987E4D6
-:10215000EFCF9CEF980F913A58F390E2980F983098
-:1021600050F4877091E001C0990F8A95EAF7892FA2
-:102170000E94AD19DFCF9BE5980F933020F480E0EB
-:1021800090E00C94AE0E885A833120F480E090E009
-:102190000C94C40E0895882321F00E94A7190C9472
-:1021A000DE190895882321F00E94AD190C94DE19E0
-:1021B0000895BF92CF92DF92EF92FF920F931F93F9
-:1021C000CF93DF9300D000D000D0CDB7DEB77C0135
-:1021D00085E0F701DE01119601900D928A95E1F7F5
-:1021E000F70183819481892B09F4DDC2908181817B
-:1021F0008F3F19F49F3F09F4D6C2F7010281258170
-:1022000022952F7099838A8389819A812E830E94D7
-:10221000E518182FB92E0E94E4180E94AB17EB2D79
-:10222000E295EF704E2F50E0FA01E05AFF4F2E81F9
-:102230000C94C9228B2D807F9B2D9F70F92E8823B3
-:1022400019F0F29480EFF822002349F0FF2009F4FE
-:1022500057C28F2D0E94B7190E94DE1951C2812FDB
-:102260000E947C10FF2009F49EC28F2D0E94BD1990
-:1022700026960FB6F894DEBF0FBECDBFDF91CF918B
-:102280001F910F91FF90EF90DF90CF90BF900C9433
-:10229000DE193B2D307F8B2D8F70303211F08295FF
-:1022A000807F112319F0113021F12CC00023B9F0E7
-:1022B000222309F490C1213009F08DC126960FB672
-:1022C000F894DEBF0FBECDBFDF91CF911F910F916C
-:1022D000FF90EF90DF90CF90BF900C94C71922230E
-:1022E00019F0213009F45FC28E830E94CA198E81D1
-:1022F00086C1002321F0223008F055C26CC12111A3
-:1023000052C27DC1002321F0222309F464C1F8C127
-:10231000222309F474C109C28B2D8695869583709A
-:1023200019F08130D1F03FC2002321F0812F9B2D85
-:10233000937002C080E090E026960FB6F894DEBF5E
-:102340000FBECDBFDF91CF911F910F91FF90EF9006
-:10235000DF90CF90BF900C94AE0E002321F0812F20
-:102360009B2D937002C080E090E026960FB6F89403
-:10237000DEBF0FBECDBFDF91CF911F910F91FF90B8
-:10238000EF90DF90CF90BF900C94C40E812F00236C
-:1023900019F00E944D1D02C00E94B51D26960FB671
-:1023A000F894DEBF0FBECDBFDF91CF911F910F918B
-:1023B000FF90EF90DF90CF90BF900C943A1E8B2D42
-:1023C000837009F075C00111EEC1812F8295869549
-:1023D0008770880F880F912F9F70C92ED12CE12C08
-:1023E000F12C082E04C0CC0CDD1CEE1CFF1C0A9442
-:1023F000D2F714FF12C00FE010E020E030E004C07C
-:10240000000F111F221F331F8A95D2F7C901B8018F
-:10241000609570958095909503C060E070E0CB0169
-:102420004B2D4695469543704230C1F060F56C29BE
-:102430007D298E299F29413051F126960FB6F894B7
-:10244000DEBF0FBECDBFDF91CF911F910F91FF90E7
-:10245000EF90DF90CF90BF900C94D2176C297D291C
-:102460008E299F2926960FB6F894DEBF0FBECDBFEA
-:10247000DF91CF911F910F91FF90EF90DF90CF9060
-:10248000BF900C94EE170E94D217C701B601269692
-:102490000FB6F894DEBF0FBECDBFDF91CF911F9175
-:1024A0000F91FF90EF90DF90CF90BF900C94B617F4
-:1024B000002319F08B2D817001C08695882309F4C3
-:1024C00072C1812F829586958770880F880F912F12
-:1024D0009F70C92ED12CE12CF12C082E04C0CC0CFD
-:1024E000DD1CEE1CFF1C0A94D2F714FF12C00FE093
-:1024F00010E020E030E004C0000F111F221F331F46
-:102500008A95D2F7C901B80160957095809590952C
-:1025100003C060E070E0CB014B2D469546954370BB
-:102520004230C1F060F56C297D298E299F29413008
-:1025300051F126960FB6F894DEBF0FBECDBFDF91E6
-:10254000CF911F910F91FF90EF90DF90CF90BF90B0
-:102550000C94AC186C297D298E299F2926960FB6DC
-:10256000F894DEBF0FBECDBFDF91CF911F910F91C9
-:10257000FF90EF90DF90CF90BF900C94C8180E940E
-:10258000AC18C701B60126960FB6F894DEBF0FBE91
-:10259000CDBFDF91CF911F910F91FF90EF90DF9012
-:1025A000CF90BF900C949018103FD1F118F4103ECA
-:1025B00050F4A1C0123F09F463C008F44CC0133FAB
-:1025C00009F473C098C01F708B2D8F710023A1F088
-:1025D0000E942918812F26960FB6F894DEBF0FBEF1
-:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2
-:1025F000CF90BF900C94CB100E944A18812F269642
-:102600000FB6F894DEBF0FBECDBFDF91CF911F9103
-:102610000F91FF90EF90DF90CF90BF900C94D2106D
-:102620000023A9F02111BFC08B2D8F7126960FB604
-:10263000F894DEBF0FBECDBFDF91CF911F910F91F8
-:10264000FF90EF90DF90CF90BF900C946F182230E6
-:1026500008F0A9C0E9CF0023A9F08B2D8F71269631
-:102660000FB6F894DEBF0FBECDBFDF91CF911F91A3
-:102670000F91FF90EF90DF90CF90BF900C942918AE
-:10268000002359F38B2D8F7126960FB6F894DEBF79
-:102690000FBECDBFDF91CF911F910F91FF90EF90B3
-:1026A000DF90CF90BF900C944A18002399F08B2DA7
-:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7
-:1026C000CF911F910F91FF90EF90DF90CF90BF902F
-:1026D0000C94141826960FB6F894DEBF0FBECDBF2B
-:1026E000DF91CF911F910F91FF90EF90DF90CF90EE
-:1026F000BF900C940A180023A9F0222309F4ADCF4F
-:10270000812F26960FB6F894DEBF0FBECDBFDF91A6
-:10271000CF911F910F91FF90EF90DF90CF90BF90DE
-:102720000C94B40F222309F4ADCF812F26960FB657
-:10273000F894DEBF0FBECDBFDF91CF911F910F91F7
-:10274000FF90EF90DF90CF90BF900C947C104B2DBA
-:102750004F70612FC7010E94AC0226960FB6F89405
-:10276000DEBF0FBECDBFDF91CF911F910F91FF90C4
-:10277000EF90DF90CF90BF900C942E174B2D4F70A1
-:10278000612FC70126960FB6F894DEBF0FBECDBFEE
-:10279000DF91CF911F910F91FF90EF90DF90CF903D
-:1027A000BF900C941F0626960FB6F894DEBF0FBE9E
-:1027B000CDBFDF91CF911F910F91FF90EF90DF90F0
-:1027C000CF90BF9008950E94C4190E9499190E9449
-:1027D000DE190E94EA1E0E943A1E80E090E00E94EC
-:1027E000AE0E80E090E00C94C40E0E94B4190C94DC
-:1027F000E3130E94E518292F22952F702C3030F416
-:102800002A3048F42250223078F405C02C3041F0B0
-:102810002F3031F009C0803E48F0803F29F406C0D7
-:1028200093FB882780F9089580E0089581E008955A
-:10283000CF93DF9300D000D01F92CDB7DEB70F90BB
-:102840000F900F900F900F90DF91CF910895CF933D
-:10285000DF9300D000D000D0CDB7DEB726960FB6FC
-:10286000F894DEBF0FBECDBFDF91CF9108951F93C7
-:10287000CF93DF93C0917D0116E080917E01C81750
-:1028800099F0D0E01C9FF0011D9FF00D1124E1583C
-:10289000FE4F4081518162817381848195810E94C4
-:1028A00027142196C770E9CFDF91CF911F9108952A
-:1028B0004091AF015091B0016091B1017091B201AE
-:1028C0008091B3019091B4010C9427148091B401CC
-:1028D00082958F7009F054C08091B101882309F46A
-:1028E0004FC080917D01A0917E014091B201509135
-:1028F000B3016091AF017091B001B6E08A1709F49D
-:102900003FC090E041155105C1F17F3F11F46F3F89
-:10291000A1F1B89FF001B99FF00D1124E158FE4FCD
-:10292000218127132AC02081261327C0228121114B
-:1029300024C0238134812417350710F42150310934
-:10294000241B350B283C3105C0F42091B4012F70B5
-:1029500020612093B40126E0289FF001299FF00D0B
-:102960001124EC57FE4F80818F70806180838FEA45
-:1029700091E00E94D9100C94371401968770BECF55
-:102980000895CF92DF92EF92FF920F931F93CF9310
-:10299000DF93CDB7DEB762970FB6F894DEBF0FBEF8
-:1029A000CDBF8C0185E0F801DE011D9601900D92EE
-:1029B0008A95E1F7D8014C9111965C911197129686
-:1029C0006C918091B2019091B301009709F475C1A7
-:1029D0003091AF017091B0017F3F19F43F3F09F48E
-:1029E0006CC1F801C380D480E090B101EE2009F4FD
-:1029F000BEC02091B401C816D90628F0D601A81B84
-:102A0000B90BCD0104C0809590958C0D9D1DFF24C0
-:102A1000F394883C910578F0F12C207F09F0C4C034
-:102A20007C2DD98AC88A89890E9418148FEA91E07E
-:102A30000E94D910AFC0822F807F09F045C0571384
-:102A400013C0431311C061110FC02F702061209378
-:102A5000B4010E9458148FEA91E00E94D91080912D
-:102A6000B401F80185832EC0CD2819F15F3F11F420
-:102A70004F3FF9F0F62E61111CC080917D0120912D
-:102A80007E0136E0821709F45BC090E0389FF001C8
-:102A9000399FF00D1124E158FE4F7181571306C084
-:102AA0007081471303C07281711103C00196877052
-:102AB000E9CFF62E662309F41CC18091B401816030
-:102AC0008093B401F12C15C1571309C0431307C0FB
-:102AD000611105C08091B401F8018583C8C04D879C
-:102AE0005E878D859E856A8B0E94F9136A8988238B
-:102AF000D1F16623C1F12091B401822F82958F70AC
-:102B000090E0029774F08091AF019091B0019887A6
-:102B10008F831986DB86CA862C87CE0107960E9492
-:102B2000D91086E0F801AFEAB1E001900D928A95E4
-:102B3000E1F70E9466140E945814FF24F394D9C050
-:102B40004D875E878D859E850E94E518292F2295E9
-:102B50002F70223008F0C1C09F7009F0BBC0805EAA
-:102B6000883008F4C6C0C8010E94D910E6CFC81644
-:102B7000D90608F453C0F601E81BF90BCF01883CD5
-:102B8000910508F450C0F12C7C2DD98AC88A898916
-:102B90000E941814EFEAF1E086E0DF011D928A95A9
-:102BA000E9F70E945814A5C0571314C0431312C06C
-:102BB000611110C08091B401F8018583C8010E94A1
-:102BC000D91086E0EFEAF1E0DF011D928A95E9F77E
-:102BD000FE2C8FC04D875E878D859E856A8B0E94F7
-:102BE000F9136A89882309F4BECF662309F4BBCFA1
-:102BF0002091B401822F82958F7090E002970CF49F
-:102C000090CF8091AF019091B0019A8389831B820C
-:102C1000DD82CC822E83CE01019681CF8095909566
-:102C20008C0D9D1DACCFF62E662309F49CCF571357
-:102C300033C0431331C02091B40120FD24C0822F42
-:102C400082958F70482F50E041155105E1F0D80171
-:102C500015962C9315974F30510549F08F5F982F9B
-:102C60009295907F822F8F70892B15968C93C80137
-:102C70000E94D91086E0F801AFEAB1E001900D9210
-:102C80008A95E1F78ECF86E0F801AFEAB1E00190D6
-:102C90000D928A95E1F72DC04D875E878D859E85C3
-:102CA0000E94F91381113DCF8091B401816080931E
-:102CB000B401C8010E94D9101CC0662309F453CF87
-:102CC0004D875E878D859E850E94F913882309F4C0
-:102CD0004ACF27CF811143CF0CC0243008F043CF17
-:102CE0009F7009F43CCFD80115969C91907F09F014
-:102CF00036CF8F2D62960FB6F894DEBF0FBECDBFD4
-:102D0000DF91CF911F910F91FF90EF90DF90CF90C7
-:102D100008951F93CF93DF93CDB7DEB72C970FB6EF
-:102D2000F894DEBF0FBECDBF4F83588769877A877F
-:102D30008B879C87CE0107960E94C114882371F06F
-:102D40008A859B85892B09F441C088858F3F09F0CE
-:102D500065C08F818F3F09F061C038C086E0FE01F9
-:102D60003796DE01119601900D928A95E1F76A85FA
-:102D70007B856115710551F1FF81E885EF3F11F405
-:102D8000FF3F21F120917E0130E0C901019687705B
-:102D9000992740917D0150E08417950709F447C0B9
-:102DA000F983EA837D836C8396E0929FD001939FA1
-:102DB000B00D1124A158BE4FFE01319601900D9225
-:102DC0009A95E1F780937E010E94371416E0809176
-:102DD0007D0190917E018917B9F1189FC0011124DE
-:102DE00081589E4F0E94C114882371F1E0917D01AA
-:102DF0001E9FF0011124E158FE4F408151816281F4
-:102E00007381848195810E94271480917D0190E0D7
-:102E100001968770992780937D01D9CF4F8158857E
-:102E200069857A858B859C850E942714CFCF0E9467
-:102E3000F51310927E0110927D01EFEAF1E086E039
-:102E4000DF011D928A95E9F72C960FB6F894DEBF44
-:102E50000FBECDBFDF91CF911F910895EF92FF92EA
-:102E60000F931F93CF93DF938C01892B09F46CC0D0
-:102E7000F12CEE24E394E8012196F8018491843743
-:102E800040F4843008F051C0813081F0823019F173
-:102E90005BC0853709F444C0A8F19CE7980F9037D0
-:102EA00008F052C08F770E947C1041C00E5F1F4F08
-:102EB000FE01849190E2980F983050F48770FE2DB7
-:102EC00001C0FF0F8A95EAF78F2F0E94B71914C02F
-:102ED0000E94B40F2DC00E5F1F4FFE01849190E23F
-:102EE000980F983060F48770FE2D01C0FF0F8A950F
-:102EF000EAF78F2F0E94BD190E94DE1919C00E94A7
-:102F00007C1016C00E5F1F4FFE01C491CC2381F0D0
-:102F10008FE99FE00197F1F700C00000C150F6CFA4
-:102F20000E5F1F4FFE01F49003C00E94B40F8E018C
-:102F30008F2D882309F49FCFEFE9FFE03197F1F758
-:102F400000C000008150F5CFDF91CF911F910F910C
-:102F5000FF90EF90089508956093B9017093BA01BE
-:102F60008093BB019093BC010C94E3130F931F93C8
-:102F70000091B9011091BA012091BB013091BC01BF
-:102F8000DC01CB01802B912BA22BB32B8093B901B9
-:102F90009093BA01A093BB01B093BC011F910F9114
-:102FA0000C94E3130F931F930091B9011091BA0190
-:102FB0002091BB013091BC01DC01CB018023912326
-:102FC000A223B3238093B9019093BA01A093BB01CC
-:102FD000B093BC011F910F910C94E3130F931F93B7
-:102FE0000091B9011091BA012091BB013091BC014F
-:102FF000DC01CB0180279127A227B3278093B90159
-:103000009093BA01A093BB01B093BC011F910F91A3
-:103010000C94E3131092B5011092B6011092B7010F
-:103020001092B8010C94E31341E050E060E070E0CE
-:1030300004C0440F551F661F771F8A95D2F740932F
-:10304000B5015093B6016093B7017093B8010C9429
-:10305000E31341E050E060E070E004C0440F551F0E
-:10306000661F771F8A95D2F78091B5019091B601BE
-:10307000A091B701B091B801482B592B6A2B7B2B3B
-:103080004093B5015093B6016093B7017093B801B6
-:103090000C94E31341E050E060E070E004C0440FA2
-:1030A000551F661F771F8A95D2F7409550956095FA
-:1030B00070958091B5019091B601A091B701B09142
-:1030C000B801482359236A237B234093B5015093C9
-:1030D000B6016093B7017093B8010C94E31341E01B
-:1030E00050E060E070E004C0440F551F661F771F7A
-:1030F0008A95D2F78091B5019091B601A091B70160
-:10310000B091B801482759276A277B274093B5011A
-:103110005093B6016093B7017093B8010C94E31318
-:103120000F931F930091B5011091B6012091B70143
-:103130003091B801DC01CB01802B912BA22BB32B5A
-:103140008093B5019093B601A093B701B093B801F5
-:103150001F910F910C94E3130F931F930091B501EE
-:103160001091B6012091B7013091B801DC01CB017B
-:1031700080239123A223B3238093B5019093B601BA
-:10318000A093B701B093B8011F910F910C94E31372
-:103190000F931F930091B5011091B6012091B701D3
-:1031A0003091B801DC01CB0180279127A227B327FA
-:1031B0008093B5019093B601A093B701B093B80185
-:1031C0001F910F910C94E3130895CF92DF92EF9229
-:1031D000FF920F931F93CF93DF938C01C090B501A3
-:1031E000D090B601E090B701F090B8018091B9019C
-:1031F0009091BA01A091BB01B091BC01C82AD92A13
-:10320000EA2AFB2ACFE1D0E0D701C6010C2E04C088
-:10321000B695A795979587950A94D2F780FF07C032
-:10322000B8018C2F0E9443068130910531F421971B
-:1032300058F7B80180E00E944306DF91CF911F91BB
-:103240000F91FF90EF90DF90CF90089590910C0137
-:103250009923F1F090910D019923D1F0982F969533
-:10326000969596959F3080F5E0910E01F0910F01B3
-:10327000E90FF11D877021E030E0A90102C0440F81
-:10328000551F8A95E2F7CA019181892B81830895A0
-:1032900020910E0130910F01F90132969FEF40E02D
-:1032A0005191851789F09F3F19F4511101C0942F56
-:1032B0004F5F4E30A9F79F3F39F0F901E90FF11D3B
-:1032C00097FDFA9582830895089590910C019923B2
-:1032D000F9F090910D019923D9F0982F9695969534
-:1032E00096959F3028F5E0910E01F0910F01E90FBE
-:1032F000F11D877021E030E0A90102C0440F551F85
-:103300008A95E2F7CA018095918189238183089586
-:1033100020910E0130910F01F9013296205F3F4F4D
-:103320009081891301C010823196E217F307C1F72B
-:10333000089581E090E0E0910E01F0910F01E80F17
-:10334000F91F1082019680319105A9F70895909197
-:10335000CF01892B8093CF01089580959091CF0163
-:1033600089238093CF0108951092CF010895909101
-:10337000CE01892B8093CE01089580959091CE0146
-:1033800089238093CE0108951092CE0108958093F1
-:10339000BD0108951092BD01089580910E01909194
-:1033A0000F01FC0131969C01205F3F4F80E091911D
-:1033B00091118F5FE217F307D1F70895E0910E01A5
-:1033C000F0910F018091CF018083E0910E01F09187
-:1033D0000F0190818091CE01892B80838091BD0166
-:1033E000882361F0E0910E01F0910F019081892B0B
-:1033F00080830E94CD1981111092BD0180910E0130
-:1034000090910F010C94980ECF92DF92EF92FF9261
-:103410006C01EE24FF24C114D104E104F10421F075
-:10342000C701B60120E101C020E0C72ED82EE92E49
-:10343000FF24C114D104E104F10419F0285FC7018D
-:10344000B6016B017C0154E0F694E794D794C794DD
-:103450005A95D1F7C114D104E104F10419F02C5F9D
-:10346000C701B6016B017C0142E0F694E794D79462
-:10347000C7944A95D1F7C114D104E104F10419F0BD
-:103480002E5FC701B601DC01CB01B695A7959795D4
-:103490008795892B8A2B8B2B09F02F5F822FFF902A
-:1034A000EF90DF90CF9008958091E801843011F182
-:1034B00020E488E190E00FB6F894A895809360002E
-:1034C0000FBE2093600083B7817F846083BF83B782
-:1034D000816083BF7894889583B78E7F83BF0FB652
-:1034E000F894A895809160008861809360001092A4
-:1034F00060000FBE089508950C947B1ACF930E942C
-:103500007C1A0E9462040E947B1AC0E08C2F0E94E9
-:103510005805811104C0CF5FCE30C1F701C081E0F2
-:10352000CF9108950E94F5130E948C0E0C9482078F
-:1035300082E084BD93E095BD9AEF97BD80936E00C5
-:1035400008952FB7F8948091D1019091D201A09164
-:10355000D301B091D4012FBF0895CF92DF92EF92A3
-:10356000FF920F931F932FB7F8944091D101509180
-:10357000D2016091D3017091D4012FBF6A017B0108
-:10358000EE24FF248C0120E030E0C016D106E206D4
-:10359000F30610F4415051099A01281B390BC90157
-:1035A0001F910F91FF90EF90DF90CF9008951F92A1
-:1035B0000F920FB60F9211248F939F93AF93BF93E7
-:1035C0008091D1019091D201A091D301B091D40109
-:1035D0000196A11DB11D8093D1019093D201A093BA
-:1035E000D301B093D401BF91AF919F918F910F9070
-:1035F0000FBE0F901F9018950E94840BF8942FEF28
-:1036000087EA91E6215080409040E1F700C0000039
-:1036100087E090EBDC018093F1019093F201A0939D
-:10362000F301B093F4019CE088E10FB6F894A895FB
-:10363000809360000FBE90936000FFCFEF92FF92E7
-:103640000F931F93CF93DF93D82FC0E08C2F0E944E
-:10365000580500E010E0E82EF12CC701002E02C052
-:10366000959587950A94E2F780FD06C00F5F1F4F7E
-:103670000630110591F709C0602F7C2F80E00E9471
-:1036800020068D13F3CF81E004C0CF5FCE30F1F67A
-:1036900080E0DF91CF911F910F91FF90EF900895FF
-:1036A000CF93C82F8CE20E941E1B882321F08C2F01
-:1036B000CF910C941E1B80E0CF910895CF930E9470
-:1036C000A51C811102C00E948B1CC5E6C15049F0A7
-:1036D0000E9462048FE39CE90197F1F700C00000AB
-:1036E000F5CF89E20E94501B811113C18AE20E942A
-:1036F000501B81110E948B1C85E00E94501B811180
-:103700000E94FC1A0E94B01C8093D00187E00E94A6
-:10371000501B8823A9F18BE10E94501B882351F094
-:103720008091D00181FB222720F991E0922790FB24
-:1037300081F90EC08EE00E94501B882361F08091B9
-:10374000D00182FB222720F991E0922790FB82F999
-:103750008093D00115C080E10E94501B9091D00150
-:10376000882341F093FB222720F981E0822780FB08
-:1037700093F904C0892F809580FB90F99093D00134
-:103780008091D0010E94B41C0E94C21C8093E2016F
-:1037900080EE0E94501B882341F08091E201982F17
-:1037A000909590FB80F98093E20189E30E94501B81
-:1037B000882359F08091E20181FB222720F991E0D2
-:1037C000922790FB81F98093E20182EE0E94501BC8
-:1037D000882359F08091E20182FB222720F991E0B1
-:1037E000922790FB82F98093E20186EE0E94501BA3
-:1037F000882359F08091E20183FB222720F991E090
-:10380000922790FB83F98093E20183EE0E94501B84
-:10381000882359F08091E20184FB222720F991E06E
-:10382000922790FB84F98093E20185E30E94501B6C
-:10383000882359F08091E20185FB222720F991E04D
-:10384000922790FB85F98093E20181E30E94501B4F
-:10385000882359F08091E20186FB222720F991E02C
-:10386000922790FB86F98093E20181E10E94501B30
-:10387000882359F08091E20187FB222720F991E00B
-:10388000922790FB87F98093E2018091E2010E94E8
-:10389000C61C8091E20187FB882780F980930D0187
-:1038A00087E20E94501BC82F8EE10E94501B81119D
-:1038B000C2608FE10E94501B8111C46080E20E94AF
-:1038C000501B8111C86081E20E94501B8111C061B0
-:1038D00082E20E94501B8111C06283E20E94501B51
-:1038E0008111C06484E20E94501B882311F0C068DB
-:1038F00002C0CC2329F08C2F0E94BD1C6C2F03C06A
-:103900000E94B91C682F70E080E090E0CF910C9489
-:10391000AC17CF9108956DEE7EEF80E090E00E94AD
-:10392000FF2260E082E090E00E94F12260E083E00C
-:1039300090E00E94F12260E084E090E00E94F12299
-:1039400060E085E090E00C94F12280E090E00E943D
-:10395000EB2221E08D3E9E4F09F020E0822F08955A
-:1039600082E090E00C94E322682F82E090E00C94D7
-:10397000F12283E090E00C94E322682F83E090E052
-:103980000C94F12284E090E00C94E322682F84E010
-:1039900090E00C94F1228091D70180FF0BC06091E0
-:1039A000130185E0689FB0011124759567957595A1
-:1039B00067952BC081FF09C06091130185E0689F66
-:1039C000B00111247595679520C082FF07C06091F2
-:1039D000130185E0689FB001112417C09091D801B0
-:1039E0009923D1F060911201961788F72091130165
-:1039F00085E0289F90011124929FA001939F500D74
-:103A0000112470E0CA010E94B5226038710540F4AB
-:103A10006115710519F406C065E070E0862F089500
-:103A20008FE7089581E008958091D70180FF08C055
-:103A30006091110170E0759567957595679521C046
-:103A400081FF06C06091110170E07595679519C0FE
-:103A500082FF04C06091110170E010C09091D80104
-:103A6000992399F0609110019617A0F780911101A8
-:103A7000899FC001112470E00E94B5226038710551
-:103A800040F46115710519F406C061E070E0862FFD
-:103A900008958FE7089581E00895803F21F40E9402
-:103AA000CB1C819504C0813F29F40E94CB1C8093DC
-:103AB000DB010895823F21F40E94CB1C819504C054
-:103AC000833F29F40E94CB1C8093DA010895893F3B
-:103AD00019F40E94141D05C08A3F31F40E94141D80
-:103AE00081958093DC0108958B3F21F40E94141D81
-:103AF000819504C08C3F29F40E94141D8093DD0140
-:103B00000895843F21F48091D901816017C0853FD9
-:103B100021F48091D901826011C0863F21F4809107
-:103B2000D90184600BC0873F21F48091D90188605E
-:103B300005C0883F31F48091D90180618093D9011B
-:103B400008958D3F21F48091D70181600BC08E3F95
-:103B500021F48091D701826005C08F3F29F48091C4
-:103B6000D70184608093D7010895803F39F4809114
-:103B7000DB0187FF6CC01092DB0169C0813F29F433
-:103B80008091DB011816BCF362C09091DA01823F8C
-:103B900029F497FF5CC01092DA0159C0833F19F4F1
-:103BA0001916CCF354C0893F41F48091DC011816FA
-:103BB0000CF04DC01092DC014AC08A3F29F480917C
-:103BC000DC0187FF44C0F6CF8B3F39F48091DD01E3
-:103BD00087FF3DC01092DD013AC08C3F29F48091EF
-:103BE000DD011816BCF333C0843F21F48091D90164
-:103BF0008E7F17C0853F21F48091D9018D7F11C040
-:103C0000863F21F48091D9018B7F0BC0873F21F43F
-:103C10008091D901877F05C0883F31F48091D90117
-:103C20008F7E8093D90113C08D3F21F48091D701FD
-:103C30008E7F0BC08E3F21F48091D7018D7F05C010
-:103C40008F3F29F48091D7018B7F8093D70180919A
-:103C5000DA0181110EC08091DB0181110AC08091CF
-:103C6000DC01811106C08091DD01811102C010923A
-:103C7000D801089589ED91E00E94A30E0E94A11A37
-:103C80009093D6018093D50108951F93CF93DF932E
-:103C90008091D5019091D6010E94AD1AAC0190910E
-:103CA000D801992321F02091140130E006C0209121
-:103CB00015018AE0289F900111244217530708F448
-:103CC00085C08091DA01C091DB01D091DC011091B7
-:103CD000DD01811107C0C11175C0D11173C011116F
-:103CE00071C074C09F3F19F09F5F9093D801181660
-:103CF00024F40E94CB1C8093DA018091DA0187FFC3
-:103D000005C00E94CB1C81958093DA011C1624F417
-:103D10000E94CB1C8093DB018091DB0187FF05C0F3
-:103D20000E94CB1C81958093DB016091DA016623B0
-:103D300031F1C091DB01CC2311F1062E000C770B81
-:103D4000880B990B0E94BC2123E333E343E35FE339
-:103D50000E9420220E9484216093DA016C2FCC0FF4
-:103D6000770B880B990B0E94BC2123E333E343E3D9
-:103D70005FE30E9420220E9484216093DB011D16D4
-:103D800024F40E94141D8093DC018091DC0187FFE4
-:103D900005C00E94141D81958093DC01111624F446
-:103DA0000E94141D8093DD018091DD0187FF05C015
-:103DB0000E94141D81958093DD01DF91CF911F91A9
-:103DC0000C943A1E9F3F09F08FCFA0CFDF91CF9187
-:103DD0001F910895E9EDF1E085E0DF011D928A95DC
-:103DE000E9F71092D8011092D7010895833081F13C
-:103DF00028F4813059F08230D1F00895853009F4EB
-:103E000049C0B8F1863009F456C008958091150173
-:103E1000262F30E0280F311D2F3F310524F4680F85
-:103E20006093150108958FEF809315010895809197
-:103E30001401262F30E0280F311D2F3F310524F4C7
-:103E4000680F6093140108958FEF80931401089513
-:103E500080911301262F30E0280F311D2F3F3105AF
-:103E600024F4680F6093130108958FEF809313017A
-:103E7000089580911201262F30E0280F311D2F3F29
-:103E8000310524F4680F6093120108958FEF809339
-:103E90001201089580911101262F30E0280F311D65
-:103EA0002F3F310524F4680F6093110108958FEFBF
-:103EB00080931101089580911001262F30E0280F82
-:103EC000311D2F3F310524F4680F609310010895D0
-:103ED0008FEF809310010895833011F128F4813021
-:103EE00049F0823091F00895853081F120F18630DB
-:103EF000C1F1089580911501681720F4861B809305
-:103F00001501089510921501089580911401681704
-:103F100020F4861B809314010895109214010895D3
-:103F200080911301681720F4861B80931301089574
-:103F300010921301089580911201681720F4861BD6
-:103F40008093120108951092120108958091110139
-:103F5000681720F4861B80931101089510921101B7
-:103F6000089580911001681720F4861B809310013A
-:103F700008951092100108950F931F938D3109F445
-:103F80006BC008F03FC08E3009F47DC0C0F48730AC
-:103F900009F46EC068F4863009F0AFC08091D0019A
-:103FA000817F8E7F8093D00181E08093DF01A6C066
-:103FB000883009F458C08B3009F49BC09EC086310C
-:103FC00009F497C078F4803109F470C0813109F0A8
-:103FD00094C00E94F51390910D0181E08927809390
-:103FE0000D0187C0893109F484C08B3109F085C087
-:103FF0008091D00181FB222720F991E0922790FB4C
-:1040000081F94AC0853309F45BC048F4873209F46A
-:1040100057C008F45AC0893209F452C06EC08334C4
-:1040200038F48A3308F067C0883309F462C065C089
-:10403000833409F445C0883409F05FC00E94F51349
-:104040000FEF13ED20E3015010402040E1F700C0D6
-:1040500000000E94FC1A4DC00E943E210E948C0E5E
-:104060000E94820746C00E94B01C0E94C21C41C030
-:104070009091D001892F817090FF12C0917F9E7F17
-:104080009093D0013BC08091D00182FB222720F980
-:1040900091E0922790FB82F98093D001992349F116
-:1040A0008091D00181608093D00123C08091D001A4
-:1040B00083FB222720F991E0922790FB83F9ECCF34
-:1040C00061E070E080E090E010C08D5141E050E090
-:1040D00060E070E08A019B0104C0000F111F221FE5
-:1040E000331F8A95D2F7C901B8010E94AC170E940C
-:1040F000F51381E003C08953E9CF80E01F910F9150
-:10410000089580E008950C948120CF93C82F80916A
-:10411000DF01813079F018F08230E9F187C0E09159
-:104120000E01F0910F018081813169F0823209F036
-:104130007FC009C0E0910E01F0910F0180818131B3
-:1041400011F0823261F48C2F0E948320811104C00F
-:104150008C2F0E94BC1F1DC081E090E01AC08C2FE4
-:104160000E948120811114C0C43179F048F4CB3011
-:1041700079F0C03109F060C082E08093DF0108C0AF
-:10418000C93219F0C83321F057C01092DF0154C072
-:1041900081E0817053C0C93289F118F5C43171F1E1
-:1041A000A8F4C73009F046C08AE08093150194E175
-:1041B0009093140193E0909313018093120188E08F
-:1041C0008093110188E28093100134C0CE51C63033
-:1041D00088F5EC2FF0E0E65DFE4F80818093DE01F4
-:1041E00029C0CE34E9F020F4CB3421F56AE013C0C5
-:1041F000C13579F0C235F1F461E00DC08091DE0186
-:10420000882319F01092DE0115C081E08093DF0150
-:1042100015C061E006C08091DE010E94F61E0AC052
-:104220006AE08091DE010E946C1F04C01092DF01E1
-:1042300080E004C081E002C080E0ABCFCF91089560
-:10424000E1E8F0E080818860808380818160808304
-:104250008FB7F89493E09093890090ED9093880045
-:104260008FBF0895EFE6F0E080818260808308953B
-:10427000EFE6F0E080818D7F80830895EFE6F0E047
-:10428000908182E08927808308951F920F920FB654
-:104290000F9211242F933F934F935F936F937F93CC
-:1042A0008F939F93AF93BF93EF93FF938091E00120
-:1042B0009091E10101969093E1018093E0018111D9
-:1042C00003C082E00E948207E091E101E695E69555
-:1042D000F0E0EA57FB4FE4918091E0018E1303C0B8
-:1042E00080E00E948207FF91EF91BF91AF919F9173
-:1042F0008F917F916F915F914F913F912F910F908F
-:104300000FBE0F901F9018950E948B216894B111D9
-:104310000C941A2208950E94FF2188F09F5798F06C
-:10432000B92F9927B751B0F0E1F0660F771F881FBA
-:10433000991F1AF0BA95C9F714C0B13091F00E94D4
-:104340001922B1E008950C941922672F782F88273D
-:10435000B85F39F0B93FCCF3869577956795B395FB
-:10436000D9F73EF490958095709561957F4F8F4F6A
-:104370009F4F0895E89409C097FB3EF4909580956F
-:10438000709561957F4F8F4F9F4F9923A9F0F92F1B
-:1043900096E9BB279395F695879577956795B79599
-:1043A000F111F8CFFAF4BB0F11F460FF1BC06F5F7F
-:1043B0007F4F8F4F9F4F16C0882311F096E911C091
-:1043C000772321F09EE8872F762F05C0662371F0B2
-:1043D00096E8862F70E060E02AF09A95660F771FC6
-:1043E000881FDAF7880F9695879597F9089557FDF6
-:1043F0009058440F551F59F05F3F71F04795880F53
-:1044000097FB991F61F09F3F79F0879508951216E9
-:1044100013061406551FF2CF4695F1DF08C0161695
-:1044200017061806991FF1CF869571056105089446
-:104430000895E894BB2766277727CB0197F908955D
-:104440000E9433220C94A4220E94962238F00E94EB
-:104450009D2220F0952311F00C948D220C94932230
-:1044600011240C941A220E94F72170F3959FC1F336
-:10447000950F50E0551F629FF001729FBB27F00D12
-:10448000B11D639FAA27F00DB11DAA1F649F662767
-:10449000B00DA11D661F829F2227B00DA11D621FB6
-:1044A000739FB00DA11D621F839FA00D611D221F70
-:1044B000749F3327A00D611D231F849F600D211D54
-:1044C000822F762F6A2F11249F5750409AF0F1F0D7
-:1044D00088234AF0EE0FFF1FBB1F661F771F881F40
-:1044E00091505040A9F79E3F510580F00C948D22C9
-:1044F0000C941A225F3FE4F3983ED4F386957795A7
-:104500006795B795F795E7959F5FC1F7FE2B880FE5
-:10451000911D9695879597F9089597F99F6780E87B
-:1045200070E060E008959FEF80EC089500240A9405
-:104530001616170618060906089500240A9412167E
-:104540001306140605060895092E0394000C11F4B1
-:10455000882352F0BB0F40F4BF2B11F460FF04C05E
-:104560006F5F7F4F8F4F9F4F089597FB072E16F475
-:10457000009407D077FD09D00E94CF2207FC05D018
-:104580003EF4909581959F4F0895709561957F4F6A
-:104590000895EE0FFF1F0590F491E02D0994AA1BDA
-:1045A000BB1B51E107C0AA1FBB1FA617B70710F01E
-:1045B000A61BB70B881F991F5A95A9F78095909550
-:1045C000BC01CD010895F999FECF92BD81BDF89A45
-:1045D000992780B50895A8E1B0E042E050E00C943E
-:1045E0000623262FF999FECF1FBA92BD81BD20BDAB
-:1045F0000FB6F894FA9AF99A0FBE019608950E94A0
-:10460000F122272F0C94F222DC01CB01FC01F99955
-:10461000FECF06C0F2BDE1BDF89A319600B40D920E
-:0C46200041505040B8F70895F894FFCFC7
-:10462C00200283071308EE07BA0786070101BE01B3
-:10463C0028080A03140A3F4D36394704FA03C40309
-:10464C008B031E03370350036903010203040506A1
-:04465C000708090042
+:100000000C9478020C94BF020C94BF020C94BF02B3
+:100010000C94BF020C94BF020C94BF020C94BF025C
+:100020000C94BF020C94BF020C94C10D0C94930E5F
+:100030000C94BF020C94BF020C94BF020C94BF023C
+:100040000C94BF020C949F220C94BF020C94BF022C
+:100050000C94BF020C94331C0C94BF020C94BF028E
+:100060000C94BF020C94BF020C94BF020C94BF020C
+:100070000C94BF020C94BF020C94BF020C94BF02FC
+:100080000C94BF020C94BF020C94BF020C94BF02EC
+:100090000C94BF020C94BF020C94BF020C94BF02DC
+:1000A0000C94BF020C94BF020C94BF02000F220FED
+:1000B0001010220F1010670F8A0F1010DF0FF20FB1
+:1000C000C112C112F012F0122613461377147714DE
+:1000D00051137714011401146814771477147114F0
+:1000E0000E140E140E140E140E140E140E140E1400
+:1000F0000E140E140E140E140E140E140E140E14F0
+:1001000020142D1434143B14451429002B00E00056
+:10011000E100357100001E00140004001D006400A1
+:10012000E3001F001A0016001B000000025220000E
+:1001300008000700060000002C002100150009003F
+:100140001900E2001151220017000A00050000000A
+:10015000460023001C0000000B00000046002300A6
+:100160000A00000005000000007524001C000B00C0
+:10017000110000000075250018000D001000E600B9
+:10018000115126000C000E0036002F002C00270015
+:1001900012000F003700300001522D001300330011
+:1001A00038000000E7002A0028002800E50034712C
+:1001B0000000010001000100010001000000010039
+:1001C0001E02200222020100010001001F02210282
+:1001D00023020100010001002F0226022F0001006E
+:1001E000010001003002270230000100125101001D
+:1001F000310235003502000001000100010000005D
+:1002000001000000010001000100000001000000E9
+:1002100001000100010001000100000001000000D8
+:100220005F005C00590062001251540060005D00E4
+:100230005A0062000100550061005E005B0063002F
+:1002400001005600570057005800580001002E00CA
+:100250003200340001000100000001000100010033
+:100260000100010000003A004A005000F400F200D2
+:1002700001003B0052005100F000F10001003C0081
+:100280004D004F00F500F30001003D0049004C0017
+:100290000100010010513E004B004E000100000023
+:1002A00001003F00010000000100000001004000CB
+:1002B00001000000010000000100410001000100F8
+:1002C00001000000010042000100B600AC00AA00DD
+:1002D0001051430049004C00AE00A800010044004A
+:1002E0000100B700AB00A9000100450001000100BA
+:1002F00001000100010001000100010001000100F6
+:10030000000016034500720067006F0044006F0094
+:100310007800200045005A000000160345007200D6
+:1003200067006F0044006F007800200045005A000D
+:1003300000000403090409026D00040100A0FA0989
+:100340000400000103010100092111010001223F05
+:10035000000705810308000A0904010001030102E6
+:1003600000092111010001224D0007058203080048
+:100370000A09040200010300000009211101000123
+:100380002236000705830308000A0904030001035D
+:100390000000000921110100012239000705840332
+:1003A0001000011201100100000008EDFE0713010A
+:1003B000000102000105010906A101050719E02954
+:1003C000E715002501950875018102050819012925
+:1003D00005950575019102950175039101050719B0
+:1003E00000297715002501957875018102C0050166
+:1003F0000980A101850216010026B7001A01002A12
+:10040000B700751095018100C0050C0901A1018597
+:1004100003160100269C021A01002A9C0275109501
+:10042000018100C005010902A1010901A10005091E
+:100430001901290515002501950575018102950110
+:10044000750381010501093009311581257F950268
+:100450007508810609381581257F95017508810683
+:10046000050C0A38021581257F950175088106C0A3
+:10047000C005010906A101050719E029E7150025B6
+:10048000019508750181029501750881010508191A
+:1004900001290595057501910295017503910105E5
+:1004A00007190029FF150025FF950675088100C072
+:1004B0000000000000000000000000010204060A25
+:1004C0000F17202C3A4A5D71879DB3C7DAE9F5FC16
+:1004D000FFFCF5E9DAC7B39D87715D4A3A2C201716
+:1004E0000F0A0604020100000000000000000000E6
+:1004F00011241FBECFEFDAE0DEBFCDBF04B603FE8E
+:1005000027C08091FF0190910002A0910102B0915B
+:1005100002028730904BA740B04BD1F41092FF01FC
+:1005200010920002109201021092020214BE84B7CF
+:10053000877F84BF0FB6F894A8958091600088618A
+:1005400080936000109260000FBEE0E0FFE3099529
+:1005500011E0A0E0B1E0EAEEF8E402C005900D92EF
+:10056000A433B107D9F721E0A4E3B1E001C01D92A3
+:10057000AF3FB207E1F70E94020B0C9473240C9476
+:10058000000061110BC0FC018281882321F085EEFF
+:100590000E94651103C085EE0E942D1280E090E05C
+:1005A00008950895EF92FF921F93CF93DF93609188
+:1005B000C1017091C2018091C3019091C4010E9458
+:1005C000621B56985E9821E030E0E82FF0E0AF0122
+:1005D0004C5C5E4F7A01A1E0B0E0122F821308C09C
+:1005E000AF01E701988161E09F3F69F460E00BC0D3
+:1005F000A901B9016C5C7E4FEB01988161E091111A
+:1006000001C060E06195960FBA016C5C7E4FEB0112
+:1006100098834C5F5F4F992321F194B1ED0102C0A3
+:10062000CC0FDD1F4A95E2F7AE019C2B94B995B132
+:10063000492B45B9EB01488150E02130310529F4BF
+:1006400050938900409388001AC0123029F45093C7
+:100650008B0040938A0013C050938D0040938C0010
+:100660000EC094B1BD0102C0660F771F4A95E2F734
+:10067000AB014095942394B995B1492345B92F5FB7
+:100680003F4F2430310509F0A8CFDF91CF911F9162
+:10069000FF90EF9008950C94D20256985E9825989A
+:1006A0002D9826982E9827982F988FEF90E090936A
+:1006B00089008093880090938B0080938A009093A8
+:1006C0008D0080938C00259A2D9A2FEF80E792E081
+:1006D000215080409040E1F700C00000269A2E9AF9
+:1006E0002FEF80E792E0215080409040E1F700C07A
+:1006F0000000279A2F9A2FEF80E792E02150804048
+:100700009040E1F700C0000025982D982FEF80E77A
+:1007100092E0215080409040E1F700C00000269810
+:100720002E982FEF80E792E0215080409040E1F733
+:1007300000C0000027982F9856985E9825982D980D
+:1007400026982E9827982F98089589EA80938000FC
+:1007500089E08093810024982C983F988AB18F7407
+:100760008AB96E98479A8BB1806B8BB9769A0E9442
+:100770004D030C94D10280E28093000180913801F6
+:1007800081110EC00E940A0481E0809338012FEF8E
+:1007900083ED90E3215080409040E1F700C00000DD
+:1007A00080E40E9410048093000181112EC00E94F9
+:1007B0003A0480930001811128C00E943A0480937A
+:1007C0000001811122C08FE30E943A04809300014E
+:1007D00081111BC00E94320480E40E9410048093A7
+:1007E0000001811112C08CE00E943A048093000144
+:1007F00081110BC00E943A0480930001811105C051
+:100800008FE30E943A04809300010E943204809199
+:10081000000108951092B9008AE08093B80008950D
+:1008200094EA9093BC009091BC0097FFFCCF90910C
+:10083000B900987F983021F0903111F081E008954F
+:100840008093BB0084E88093BC008091BC0087FF4C
+:10085000FCCF8091B900887F883111F0803471F726
+:1008600080E0089584E98093BC008091BC0084FD01
+:10087000FCCF08958093BB0084E88093BC008091F6
+:10088000BC0087FFFCCF9091B900987F81E098323F
+:1008900009F480E0089584E88093BC008091BC0056
+:1008A00087FFFCCF8091BB000895809100018111EA
+:1008B00015C080E40E9410048093000181110CC0D7
+:1008C00082E10E943A0480930001811105C08FEFFC
+:1008D0000E943A04809300010E94320484B1807F18
+:1008E00084B985B1807F85B98AB1837F8AB98BB19C
+:1008F000837F8BB93E98469808950E94BB038093EE
+:1009000000010E94550480B38C7080BB81B3836F5B
+:1009100081BBAAE3B1E0E8E4F1E08EE08E0F119232
+:100920001D928E13FCCF0C94A503BF92CF92DF9241
+:10093000EF92FF920F931F93CF93DF93809100016B
+:10094000882379F0809139018F5F8093390181117B
+:1009500008C00E94BB0380930001811102C00E9465
+:100960004D030AE311E0C0E0D0E0DD24D39482E03F
+:10097000C82EEE24E394F12CC730D10500F5809108
+:100980000001811164C080E40E9410048093000182
+:10099000811112C082E10E943A048093000181110A
+:1009A0000BC0C7010C2E01C0880F0A94EAF780958E
+:1009B0000E943A04809300010E94320448C0CA3069
+:1009C000A1F028F4C83059F0C93061F005C0CC302E
+:1009D00089F070F0CD3089F0209A289810C0219AC3
+:1009E00029980DC0229A2A980AC0239A2B9807C0EA
+:1009F000529A01C0539A5B9802C03E9A469890EA78
+:100A00009A95F1F79FB1799902C082E001C080E028
+:100A100091709D25982B7C9902C084E001C080E0F4
+:100A2000892B7D9902C038E001C030E0832B7E998C
+:100A300002C020E101C020E0822B9FB19095991F58
+:100A40009927991F9295990F907E892B0FC08091BD
+:100A50000001811149C080E40E94100480930001CC
+:100A6000882379F1B12C0E9432048B2DF8019081FA
+:100A7000981719F08083C09201010E9455042196B5
+:100A80000F5F1F4FCE30D10509F076CF8091010165
+:100A9000882361F1815080930101882339F08FE927
+:100AA0009FE00197F1F700C0000020C0A8E4B1E08A
+:100AB000EAE3F1E0CF01825F91919D938E13FCCF29
+:100AC00015C083E10E943A04809300018111CACFCE
+:100AD00081E40E941004809300018111C3CF0E9421
+:100AE0004B04B82EB094BFCF80E0C0CF0E944B0320
+:100AF00081E0DF91CF911F910F91FF90EF90DF90F8
+:100B0000CF90BF900895E82FF0E0E85BFE4F808122
+:100B1000089508950F931F93CF93DF93C8E4D1E016
+:100B200010E00C2F025F899190E00E94561B180F75
+:100B30000C13F9CF812FDF91CF911F910F91089561
+:100B400081E0089581E008950C94A20508950F9323
+:100B50001F93CF93DF938C01FC01C081D181CE0123
+:100B60000E94DB19BE010E945006EC01B8010E94F0
+:100B7000A405882309F48DC0F8018281882309F433
+:100B80004AC08091610181111FC0C431F0E5DF07C7
+:100B900009F051C00E94A60581E0809361010E9486
+:100BA000FD1B9093600180935F0110925801109299
+:100BB0005A011092590110925C0110925B0110923F
+:100BC0005E0110925D0165C080915F0190916001AE
+:100BD0000E94091C883C910570F480915801E82F0F
+:100BE000F0E0EE0FFF1FE75AFE4FD183C0838F5F07
+:100BF000809358014EC0C43880E5D80721F0C5382D
+:100C0000D04501F13AC0F8018281882341F0109269
+:100C1000560182E01EC0C438E0E5DE0759F5809138
+:100C20005601811106C086E20E94651186E20E948B
+:100C30002D1282E01CC0C438F0E5DF0741F3C5384F
+:100C4000D045D9F4F8018281882331F01092570100
+:100C500080E20E947C121DC080915701811106C064
+:100C600087E20E94651187E20E942D1280E20E94B5
+:100C700083120FC0C538D04529F381E08093560117
+:100C800080935701C801DF91CF911F910F910C9470
+:100C9000A00580E0DF91CF911F910F9108950895F5
+:100CA00096E0799FF001112494E5899FE00DF11DF4
+:100CB0001124E60FF11DEE0FFF1FE65FFE4F859139
+:100CC00094910895880F991FFC01E657F040859193
+:100CD00094910895880F991FFC01E65FFE4F85915E
+:100CE000949108950F931F93CF93DF93EC01811597
+:100CF000904350F5C11580E2D80708F0C3C0CB3B44
+:100D0000D10590F4C83AD10508F06AC0C53AD105BA
+:100D100008F05BC0C430D10508F0D0C1219709F0BC
+:100D2000CAC101E010E00AC2CF3FD10511F008F0BE
+:100D3000C5C1C03FD10508F0A2C0CE01805E9109B7
+:100D4000089708F4BBC1B7C1C13090E5D90709F4D1
+:100D5000A2C020F5C0318FE4D80770F4C11590E42B
+:100D6000D90708F094C0C11521E3D20708F0A3C148
+:100D7000DD278E01106CE2C1C115D04509F09BC181
+:100D80000E94E2148FEF94E32CE0815090402040C9
+:100D9000E1F700C000000E94581CD0C1C11597E5C2
+:100DA000D90758F4C03121E5D20708F01CC1C4317D
+:100DB00080E5D80708F475C07EC1CE019057811533
+:100DC000904108F078C1DF7073C1C53AD10509F4CC
+:100DD00077C1C63AD10509F076C102E810E4AEC188
+:100DE000C83AD10509F472C1C93AD10509F471C1F3
+:100DF000CA3AD10509F470C1CB3AD10509F46FC1E3
+:100E0000CC3AD10509F46EC1CD3AD10509F46DC1D2
+:100E1000C03BD10509F46CC1CE3AD10509F46BC1D0
+:100E2000CF3AD10509F46AC1C13BD10509F469C1C2
+:100E3000C23BD10509F468C1C33BD10509F467C1C0
+:100E4000C43BD10509F466C1C53BD10509F465C1B0
+:100E5000C63BD10509F464C1C73BD10509F463C1A0
+:100E6000C83BD10509F462C1C93BD10509F461C190
+:100E7000CA3BD10509F460C100E014E45FC18E01F2
+:100E800010655CC1CE019F700E946A0658C1DF7078
+:100E90008E01106A53C18091DE0181608093DE0172
+:100EA0004DC10E94FD1D811102C00E94E31D0E94E0
+:100EB0001A1E90E09093FF018093FE01C23080E5FE
+:100EC000D80721F48091FE01816086C0C43090E58E
+:100ED000D90721F48091FE0182607EC0C63020E5F2
+:100EE000D20721F48091FE01846076C0C83080E58D
+:100EF000D80719F48091FE0127C0CA3090E5D907C0
+:100F000021F48091FE01806167C0CC3020E5D207DA
+:100F100021F48091FE0180625FC0CE3080E5D80769
+:100F200021F48091FE01806457C0C03190E5D9075B
+:100F300021F48091FE0180684FC0C23120E5D207C4
+:100F400029F48091FE018460886046C0C33080E54A
+:100F5000D80721F48091FE018E7F3EC0C53090E518
+:100F6000D90721F48091FE018D7F36C0C73020E57E
+:100F7000D20721F48091FE018B7F2EC0C93080E51D
+:100F8000D80719F48091FE0126C0CB3090E5D9072F
+:100F900021F48091FE018F7E1FC0CD3020E5D20765
+:100FA00021F48091FE018F7D17C0CF3080E5D807F6
+:100FB00021F48091FE018F7B0FC0C13190E5D907EC
+:100FC00021F48091FE018F7707C0C331D04531F401
+:100FD0008091FE018B7F877F8093FE018091FE01CF
+:100FE0000E941E1EABC08D2F99278F7099278130CC
+:100FF0009105D9F49E012370332702C0880F991FF1
+:101000002A95E2F79C688E0144E0000F111F4A9573
+:10101000E1F700271370802B912B53E0CC0FDD1FDD
+:101020005A95E1F7C076DD272FC08230910531F463
+:10103000DC2FCC278E01016F106A80C083309105B0
+:1010400069F4CE018370992701E010E002C0000F1F
+:10105000111F8A95E2F7C8019C680FC08430910582
+:10106000B9F4CE018370992701E010E002C0000FAF
+:10107000111F8A95E2F7C8019A6823E0CC0FDD1FA3
+:101080002A95E1F7C07ED7708C010C2B1D2B56C022
+:101090008530910531F4DC2FCC278E01046F106A66
+:1010A0004DC0069709F04AC0CF71DD27DC2FCC2751
+:1010B0008E01106243C000E010E040C08E013EC0CF
+:1010C00001E810E43BC003E810E438C002EE14E489
+:1010D00035C009EE14E432C00AEE14E42FC005EB6B
+:1010E00014E42CC006EB14E429C007EB14E426C07A
+:1010F0000CEC14E423C00DEC14E420C003E815E468
+:101100001DC00AE815E41AC002E915E417C004E995
+:1011100015E414C001E216E411C003E216E40EC0A7
+:1011200004E216E40BC005E216E408C006E216E489
+:1011300005C007E216E402C00AE216E4C801DF9126
+:10114000CF911F910F91089596E0799FF00111249E
+:1011500094E5899FE00DF11D1124E60FF11DEE0FBE
+:10116000FF1FE65FFE4F85919491803E9105E0F46C
+:10117000803C910558F58133910509F46FC048F41E
+:101180008932910509F463C08A32910509F46DC072
+:1011900072C089339105E9F082389105D1F0853329
+:1011A000910509F44DC067C0833E910581F138F483
+:1011B000803E9105B9F0823E9105D9F05CC0863E33
+:1011C000910561F1873E9105A1F155C00E9462062B
+:1011D00008952091FE0120FD02C021FF4CC080EE49
+:1011E00090E049C08091FE0180FFF9CF89E390E053
+:1011F00042C08091FE0182FF0EC08091FE0184FFFB
+:1012000003C080E090E037C083EE90E034C080916E
+:10121000FE0182FFF2CF82EE90E02DC08091FE01B0
+:1012200083FF0BC08091FE0184FDEBCF87EE90E041
+:1012300022C08091FE0183FFF5CF86EE90E01BC0B7
+:101240008091FE0185FF07C089E290E014C0809183
+:10125000FE0185FFF9CF85E390E00DC08091FE018E
+:1012600086FF07C08AE290E006C08091FE0186FFFB
+:10127000F9CF81E390E00E947206089508950C94DE
+:101280003E09809172010895CF93DF9300D01F92A1
+:10129000CDB7DEB79C018091F501843019F593E05C
+:1012A00099833B832A839093E9008FEF9091E80024
+:1012B000815095FD06C095ED9A95F1F700008111DA
+:1012C000F5CF8091E80085FF0DC040E050E063E07D
+:1012D00070E0CE0101960E94B10B8091E8008E77FC
+:1012E0008093E8000F900F900F90DF91CF910895B9
+:1012F000CF93DF9300D01F92CDB7DEB72091F501D9
+:10130000243021F522E029839B838A8383E0809324
+:10131000E9008FEF9091E800815095FD06C095EDB2
+:101320009A95F1F700008111F5CF8091E80085FFD3
+:101330000DC040E050E063E070E0CE0101960E94F5
+:10134000B10B8091E8008E778093E8000F900F90AA
+:101350000F90DF91CF9108952091F5012430F1F4A1
+:1013600022E02093E9002FEF3091E800215035FD75
+:1013700006C035ED3A95F1F700002111F5CF209127
+:10138000E80025FF0BC040E050E065E070E00E94FF
+:10139000B10B8091E8008E778093E8000895CF9399
+:1013A000DF93EC019091F501943009F046C08091F3
+:1013B0000C018823D9F080910D018823B9F0909316
+:1013C000E9008FEF9091E800815095FD06C095E10E
+:1013D0009A95F1F700008111F5CF8091E80085FF23
+:1013E0002CC040E050E060E170E017C081E08093E5
+:1013F000E9008FEF9091E800815095FD06C095EDD2
+:101400009A95F1F700008111F5CF8091E80085FFF2
+:1014100014C040E050E068E070E0CE010E94B10BE3
+:101420008091E8008E778093E80080E1FE01A2E6DB
+:10143000B1E001900D928A95E1F7DF91CF91089587
+:101440008091F401811109C00E94460D0E94A30DF4
+:101450008091E20084608093E20008951092F4018C
+:10146000089508950C948C220E94EE1B0E949222F3
+:101470000E9449100C943F0942E061EC81E00E9417
+:10148000C00C42E061EC82E00E94C00C42E061ECE2
+:1014900083E00E94C00C42E161EC84E00C94C00C3B
+:1014A0008091F701833009F455C030F4813071F038
+:1014B000823009F48EC008958A3009F47AC08B30E6
+:1014C00009F460C0893009F09CC020C08091F60109
+:1014D000813A09F096C08091E800877F8093E80008
+:1014E0008091FA019091FB01892B21F460E182E661
+:1014F00091E003C060E080E090E070E00E94FC0BAF
+:101500008091E8008B778093E80008958091F60140
+:10151000813209F076C08091FA019091FB01009729
+:1015200019F0039709F06DC08091E800877F8093E0
+:10153000E8008091E80082FD05C08091F5018111ED
+:10154000F8CF5FC08091F100809372018091E80034
+:101550008B7753C08091F601813A09F052C0809197
+:10156000FA019091FB01892B09F04BC08091E800B2
+:10157000877F8093E8008091E80080FFFCCF809116
+:101580000C0136C08091F6018132D9F58091FA01C3
+:101590009091FB01892BA9F58091E800877F8093CA
+:1015A000E8000E94F50C8091F80180930C010C94E6
+:1015B000E2148091F601813221F58091E800877F65
+:1015C0008093E8000E94F50C8091F90180937301EB
+:1015D00008958091F601813AA1F48091E800877F17
+:1015E0008093E8008091E80080FFFCCF8091730138
+:1015F0008093F1008091E8008E778093E8000C944E
+:10160000F50C089584B7877F84BF0FB6F894A8952A
+:1016100080916000886180936000109260000FBE2E
+:1016200090E080E80FB6F894809361009093610099
+:101630000FBE0E9498100E94460D0E94A30D80913B
+:10164000E20084608093E20078940E9429100E9456
+:101650009A1082E091E00E9444100E947A228091C8
+:10166000F501853069F40E94B21B8091F301882353
+:10167000B1F30E94E01B882391F30E949B0BEFCFF4
+:101680000E94A010ECCF292F332723303105C9F059
+:1016900064F42130310581F02230310509F043C076
+:1016A0008DE690E026E333E042C021323105F1F0CF
+:1016B0002232310541F137C082E190E023EA33E084
+:1016C00036C099278130910541F08230910541F073
+:1016D000892B49F5E2E3F3E005C0EAE1F3E002C05B
+:1016E000E2E0F3E0849190E09F0121C06430D8F4FF
+:1016F000E62FF0E0EE0FFF1FEE5DFE4F20813181FF
+:1017000089E090E014C0643070F470E0FB01EE0FEB
+:10171000FF1FE65EFE4F20813181FB01EA5EFE4F36
+:10172000808190E004C080E090E020E030E0FA01A9
+:1017300031832083089580E189BD82E189BD09B4A8
+:1017400000FEFDCF8091D8008F7D8093D8008091DE
+:10175000E00082608093E0008091E00081FDFCCF9A
+:101760000895CF92DF92EF92FF920F931F93CF9342
+:10177000DF93EC018B016A010E94140D811133C0CB
+:10178000C114D10439F0F60180819181081B190B35
+:10179000C80FD91FE12CF12C0115110519F1809109
+:1017A000E80085FD16C08091E8008E778093E80000
+:1017B000C114D10449F0F60180819181E80EF91E2F
+:1017C000F182E08285E00FC00E94140D882321F38E
+:1017D0000AC089918093F10001501109FFEFEF1ABF
+:1017E000FF0ADACF80E0DF91CF911F910F91FF9038
+:1017F000EF90DF90CF9008952091FC013091FD0192
+:101800002617370748F06115710539F42091E80073
+:101810002E772093E80001C0B90140E06115710501
+:10182000A9F12091F501222309F443C0253009F4E0
+:1018300042C02091E80023FD40C02091E80022FD35
+:1018400032C02091E80020FFE9CF4091F3002091C1
+:10185000F20030E0342BFC01CF016115710559F025
+:101860002830310540F481918093F1006150710975
+:101870002F5F3F4FF1CF41E02830310509F040E0C4
+:101880002091E8002E772093E800C8CF4111C9CFFE
+:101890000AC08091F501882361F0853061F0809164
+:1018A000E80083FD0AC08091E80082FFF2CF80E06B
+:1018B000089582E0089583E0089581E008952091DD
+:1018C000FC013091FD012617370748F061157105BD
+:1018D00039F42091E8002E772093E80001C0B90187
+:1018E000FC0120E06115710591F18091F5018823DB
+:1018F00009F440C0853009F43FC08091E80083FDC1
+:101900003DC08091E80082FD2FC08091E80080FFFB
+:10191000E9CF2091F3008091F20090E0922B6115C5
+:10192000710559F08830910540F424912093F1001D
+:101930003196615071090196F2CF21E0089709F0C4
+:1019400020E08091E8008E778093E800CBCF2111D2
+:10195000CCCF0AC08091F501882361F0853061F019
+:101960008091E80083FD0AC08091E80082FFF2CFF9
+:1019700080E0089582E0089583E0089581E008956D
+:10198000982F973058F59093E900981739F0709197
+:10199000EC002091ED005091F00003C0242F762F31
+:1019A00050E021FF19C03091EB003E7F3093EB00F7
+:1019B0003091ED003D7F3093ED003091EB003160D0
+:1019C0003093EB007093EC002093ED005093F00007
+:1019D0002091EE0027FF07C09F5FD3CF8F708093C9
+:1019E000E90081E0089580E008958091F60187FF85
+:1019F00011C08091E80082FD05C08091F501811140
+:101A0000F8CF11C08091E8008B770BC08091F50171
+:101A1000882349F08091E80080FFF8CF8091E800AA
+:101A20008E778093E80008952091E4003091E500DE
+:101A300095E64091EC00842F817040FF22C0809198
+:101A4000E80080FD1CC08091F501882391F085306D
+:101A500091F08091EB0085FD10C04091E400509121
+:101A6000E5004217530729F39A01915011F784E0DA
+:101A7000089582E0089583E0089581E0089580E06C
+:101A800008954091E80042FFDECF08950E94B40D12
+:101A90000E94BC0DE0EEF0E0808181608083E8ED83
+:101AA000F0E080818F77808319BCA7EDB0E08C9146
+:101AB0008E7F8C9380818F7E80831092F4010895B5
+:101AC0000F931F93CF93DF930E94B40D0E94BC0D20
+:101AD000C8EDD0E088818F7788838881806888838B
+:101AE00088818F7D888319BC1092F5011092F101D5
+:101AF0001092F3011092F20100EE10E0F8018081E3
+:101B00008B7F808388818160888342E060E080E011
+:101B10000E94C00CE1EEF0E080818E7F8083E2EED7
+:101B2000F0E0808181608083808188608083F8011B
+:101B300080818E7F8083888180618883DF91CF91CF
+:101B40001F910F910895E8EDF0E080818F7E8083F2
+:101B5000E7EDF0E080818160808384E082BF81E0F6
+:101B60008093F4010C94600DE8EDF0E080818E7FAD
+:101B700080831092E20008951092DA001092E10042
+:101B800008951F920F920FB60F9211242F933F9337
+:101B90004F935F936F937F938F939F93AF93BF9375
+:101BA000EF93FF938091E10082FF0BC08091E200F0
+:101BB00082FF07C08091E1008B7F8093E1000E944B
+:101BC00028108091DA0080FF1FC08091D80080FF2C
+:101BD0001BC08091DA008E7F8093DA008091D9005B
+:101BE00080FF0DC080E189BD82E189BD09B400FE9E
+:101BF000FDCF81E08093F5010E94200A05C019BC49
+:101C00001092F5010E942E0A8091E10080FF19C018
+:101C10008091E20080FF15C08091E2008E7F80936A
+:101C2000E2008091E20080618093E2008091D80020
+:101C300080628093D80019BC85E08093F5010E94F2
+:101C4000320A8091E10084FF30C08091E20084FF7D
+:101C50002CC080E189BD82E189BD09B400FEFDCFC1
+:101C60008091D8008F7D8093D8008091E1008F7E95
+:101C70008093E1008091E2008F7E8093E20080916A
+:101C8000E20081608093E2008091F101882311F0ED
+:101C900084E007C08091E30087FD02C081E001C0BD
+:101CA00083E08093F5010E94340A8091E10083FF74
+:101CB00029C08091E20083FF25C08091E100877FE9
+:101CC0008093E10082E08093F5011092F101809110
+:101CD000E1008E7F8093E1008091E2008E7F80930F
+:101CE000E2008091E20080618093E20042E060E0E7
+:101CF00080E00E94C00C8091F00088608093F0002A
+:101D00000E94310AFF91EF91BF91AF919F918F9106
+:101D10007F916F915F914F913F912F910F900FBEE7
+:101D20000F901F9018951F920F920FB60F921124CB
+:101D30002F933F934F935F936F937F938F939F93D3
+:101D4000AF93BF93CF93DF93EF93FF93C091E900DD
+:101D5000CF708091EC00D82FD17080FDD0E8109228
+:101D6000E9008091F000877F8093F00078940E94D2
+:101D7000D70E1092E9008091F00088608093F00007
+:101D8000CD2BCF70C093E900FF91EF91DF91CF9100
+:101D9000BF91AF919F918F917F916F915F914F9183
+:101DA0003F912F910F900FBE0F901F9018951F938A
+:101DB000CF93DF93CDB7DEB7AA970FB6F894DEBF07
+:101DC0000FBECDBFE6EFF1E088E08E0F9091F100FD
+:101DD00091938E13FBCF0E94500A8091E80083FFFD
+:101DE0001FC18091F6019091F701492F50E04A30D0
+:101DF000510508F015C1FA01EA5AFF4F0C9423244B
+:101E0000803881F0823809F00BC18091FA018F701F
+:101E10008093E9008091EB0085FB882780F9109280
+:101E2000E90006C08091F2019091F3019111826066
+:101E30009091E800977F9093E8008093F1001092D2
+:101E4000F100C8C0282F2D7F09F0EAC0882319F0BF
+:101E5000823061F0E5C08091F801813009F0E0C086
+:101E6000933009F080E08093F3012BC08091F8015A
+:101E7000811127C08091FA018F7009F4D1C080933D
+:101E8000E9002091EB0020FF1CC0933021F48091E9
+:101E9000EB00806214C09091EB0090619093EB0096
+:101EA00021E030E0A90102C0440F551F8A95E2F7F6
+:101EB0004093EA001092EA008091EB0088608093E2
+:101EC000EB001092E9008091E800877F86C08111C5
+:101ED000A7C01091F8011F778091E3008078812BD3
+:101EE0008093E3008091E800877F8093E8000E9460
+:101EF000F50C8091E80080FFFCCF8091E3008068C2
+:101F00008093E300111102C082E001C083E080935E
+:101F1000F50186C08058823008F082C08091F801B7
+:101F20009091F9018C3D53E0950779F583E08A8320
+:101F30008AE289834FB7F894DE01139620E03EE0F1
+:101F400051E2E32FF0E050935700E49120FF03C0EB
+:101F5000E295EF703F5FEF708E2F90E0EA3010F067
+:101F6000C79601C0C0968D939D932F5F243149F78A
+:101F70004FBF8091E800877F8093E8006AE270E0BD
+:101F8000CE0101960E94FC0B14C0AE014F5F5F4F63
+:101F90006091FA010E94430BBC01892B09F440C0F7
+:101FA0009091E800977F9093E80089819A810E9440
+:101FB0005F0C8091E8008B778093E80031C0803817
+:101FC00079F58091E800877F8093E8008091F101A6
+:101FD0008093F1008091E8008E778093E8000E9462
+:101FE000F50C1EC081111CC09091F8019230C0F414
+:101FF0008091E800877F8093E8009093F1010E9430
+:10200000F50C8091F101811106C08091E30087FDFC
+:1020100002C081E001C084E08093F5010E943C0A87
+:102020008091E80083FF0AC08091E800877F809359
+:10203000E8008091EB0080628093EB00AA960FB6D7
+:10204000F894DEBF0FBECDBFDF91CF911F910895F1
+:102050000895CF938091F5018823A1F0C091E90004
+:10206000CF709091EC00892F817090FD80E8C82B93
+:102070001092E9008091E80083FD0E94D70ECF7096
+:10208000C093E900CF9108959093790180937801EE
+:102090000895E0917801F0917901309721F0019055
+:1020A000F081E02D099480E00895E0917801F091AD
+:1020B0007901309721F00280F381E02D0994089591
+:1020C000E0917801F0917901309721F00480F58159
+:1020D000E02D0994089520917601309177018217BF
+:1020E000930771F09093770180937601E0917801E6
+:1020F000F0917901309721F00680F781E02D099465
+:10210000089520917401309175018217930771F041
+:102110009093750180937401E0917801F0917901B9
+:10212000309721F00084F185E02D099408950895F9
+:102130000C9497100E94F41B0E947D040C94B61C12
+:102140009F92AF92BF92CF92DF92EF92FF920F9346
+:102150001F93CF93DF9300D000D000D0CDB7DEB770
+:102160000E9495040DE010E0AA24A394B12C902EB7
+:10217000802F0E948305980125583E4F6901F9017F
+:10218000F080F826A1F40150110988F78FEF8983B8
+:102190008A831B820E94FD1B8160782F9D838C8324
+:1021A00049815A816B818D810E9437112FC0909196
+:1021B000DE0191FF04C08E830E9489058E8125E097
+:1021C00030E0A501022E01C0440F0A94EAF7E42E84
+:1021D0004F21C1F029839A828E2191E009F490E089
+:1021E0009B830E94FD1B8160782F9D838C83498196
+:1021F0005A816B818D810E943711F6018081E8261A
+:10220000E08204C021503109E0F6BDCF0E949D1F3D
+:1022100010917A010E9449101817B9F00E944910D4
+:1022200080937A0126960FB6F894DEBF0FBECDBF1D
+:10223000DF91CF911F910F91FF90EF90DF90CF90A2
+:10224000BF90AF909F900C943F0926960FB6F894DC
+:10225000DEBF0FBECDBFDF91CF911F910F91FF90D9
+:10226000EF90DF90CF90BF90AF909F900895CF9365
+:10227000DF93CDB7DEB72B970FB6F894DEBF0FBE56
+:10228000CDBF4F83588769877A878B87DE01119688
+:1022900086E0FD0111928A95E9F785E0FE01379607
+:1022A00001900D928A95E1F749815A816B817C8179
+:1022B0008D819E810E9480172B960FB6F894DEBF09
+:1022C0000FBECDBFDF91CF910895CF93882309F43E
+:1022D000C2C0C82F823859F40E94491081FDBBC08A
+:1022E00089E30E945A1A0E94271B89E30CC0833895
+:1022F00079F40E94491080FDAEC083E50E945A1A0D
+:102300000E94271B83E50E949C1ACF910C94271BE7
+:10231000843859F40E94491082FD9DC087E40E94D0
+:102320005A1A0E94271B87E4EECF8CEF8C0F813A5C
+:1023300048F48C2F0E94DF2181118DC08C2F0E94C8
+:102340005A1AE3CF80E28C0F883048F4C77081E0DE
+:1023500001C0880FCA95EAF70E94E01AD6CF8BE534
+:102360008C0F833078F4C53A29F0C63A31F083E80F
+:1023700090E005C081E890E002C082E890E0CF9153
+:102380000C946B1088E58C0F833108F064C0C83A58
+:1023900039F1C93A41F1CA3A49F1CB3A51F1CC3A53
+:1023A00059F1CD3A61F1C03B69F1CE3A71F1CF3AC2
+:1023B00079F1C13B81F1C23B89F1C33B91F1C43B4F
+:1023C00099F1C53BA1F1C63BA9F1C73BB1F1C83BAF
+:1023D000B9F1C93BC1F1CA3BC9F180E090E038C016
+:1023E00082EE90E035C089EE90E032C08AEE90E057
+:1023F0002FC085EB90E02CC086EB90E029C087EBE6
+:1024000090E026C08CEC90E023C08DEC90E020C0E2
+:1024100083E891E01DC08AE891E01AC082E991E06A
+:1024200017C084E991E014C081E292E011C083E218
+:1024300092E00EC084E292E00BC085E292E008C018
+:1024400086E292E005C087E292E002C08AE292E072
+:10245000CF910C948110CF910895882309F44BC03B
+:10246000823859F40E94491081FF45C089E30E94D7
+:102470005A1A0E94271B89E30CC0833871F40E940A
+:10248000491080FF38C083E50E945A1A0E94271B1A
+:1024900083E50E949C1A0C94271B843859F40E94EF
+:1024A000491082FF28C087E40E945A1A0E94271B05
+:1024B00087E4EFCF9CEF980F913A58F390E2980F92
+:1024C000983050F4877091E001C0990F8A95EAF72F
+:1024D000892F0E94E61ADFCF9BE5980F933020F4F6
+:1024E00080E090E00C946B10885A833120F480E0F7
+:1024F00090E00C9481100895882321F00E94E01A46
+:102500000C94271B0895882321F00E94E61A0C944E
+:10251000271B08957F928F929F92AF92BF92CF9286
+:10252000DF92EF92FF920F931F93CF93DF931F924F
+:10253000CDB7DEB77C01C62E772EFC010581029552
+:102540000F70128111110E94FD1A0E94531A8823E4
+:1025500079F0112369F080E28C0D883048F082E038
+:102560000E943C1A0E94531A91E0D82ED92601C02D
+:10257000D12CE72DE295EF70F0E0E05AFF4F0C947C
+:102580002324872D807F072D0F70882311F002955B
+:10259000007F112389F0002309F490C180E28C0DA3
+:1025A000883020F4802F0E94E01A03C0802F0E9400
+:1025B000F01A0E94271B82C18C2D0E942D1200232D
+:1025C00009F495C180E28C0D883020F4802F0E94A0
+:1025D000E61A03C0802F0E94F61A0E94271B87C1AB
+:1025E000972D907F872D8F70903211F08295807F8C
+:1025F000CC2021F0F1E0CF16B1F01EC0112349F03C
+:10260000002309F414C1013009F011C10E94101B0C
+:102610006EC1002319F0013009F469C189830E9459
+:10262000131B89810AC1112321F0023008F05FC118
+:10263000FEC001115CC101C1112321F0002309F486
+:10264000F6C03CC1002309F4F8C03EC1872D869531
+:102650008695837090E0009719F0019761F047C16B
+:10266000112321F08C2D972D937002C080E090E013
+:102670000E946B103CC1112321F08C2D972D93707B
+:1026800002C080E090E00E94811031C18C2D1123A6
+:1026900019F00E94A51E02C00E940D1F0E94921FE9
+:1026A00026C1872D837009F052C0111120C18C2DD5
+:1026B000829586958770880F880F9C2D9F70892E34
+:1026C000912CA12CB12C082E04C0880C991CAA1C9A
+:1026D000BB1C0A94D2F7C4FE14C00FE010E020E047
+:1026E00030E0B901A80104C0440F551F661F771FD1
+:1026F0008A95D2F7CB01BA01609570958095909537
+:1027000003C060E070E0CB01272D2695269523704D
+:1027100030E02230310569F02330310589F0682935
+:1027200079298A299B292130310571F00E94C81826
+:10273000DEC0682979298A299B290E94E418D7C01C
+:102740000E94C818C501B4010E94AC18D0C0112362
+:1027500019F0872D817001C08695882309F4C7C0C0
+:102760008C2D829586958770880F880F9C2D9F7081
+:10277000892E912CA12CB12C082E04C0880C991CF8
+:10278000AA1CBB1C0A94D2F7C4FE14C00FE010E0D0
+:1027900020E030E0B901A80104C0440F551F661FB6
+:1027A000771F8A95D2F7CB01BA0160957095809515
+:1027B000909503C060E070E0CB01272D269526950B
+:1027C0002370422F50E04230510569F043305105EB
+:1027D00089F0682979298A299B294130510571F0AE
+:1027E0000E94A21984C0682979298A299B290E94FC
+:1027F000BE197DC00E94A219C501B4010E948619AC
+:1028000076C08C2D90E0FC01E05EF109E531F10528
+:1028100008F050C0E059FF4F0C9423240C2D0F708A
+:10282000872D8F71112331F00E941F19802F0E9474
+:102830007C125DC00E944019802F0E94831257C0F5
+:10284000112339F0011153C0872D8F710E94651932
+:102850004EC0023008F04BC0F7CF112339F0872D5E
+:102860008F710E941F1943C01123C9F3872D8F71E7
+:102870000E9440193CC0112329F0872D8F710E94BE
+:102880000A1935C00E94001932C0112351F0172DCA
+:102890001F71812F0E941F1963E0812F0E94331A3C
+:1028A00026C081E00E943C1A023008F182E00E94BA
+:1028B0003C1A1DC0112331F0002389F28C2D0E9497
+:1028C000651115C0002391F28C2D0E942D120FC0AE
+:1028D000472D4F706C2DC7010E94C1020E94241821
+:1028E00006C0472D4F706C2DC7010E944F06DD209A
+:1028F000F9F00E942F1A80FD1BC0F70112820E947E
+:10290000291A0E941F19C7010E94A7140E94291AA0
+:102910000F90DF91CF911F910F91FF90EF90DF907B
+:10292000CF90BF90AF909F908F907F900C94401964
+:102930000F90DF91CF911F910F91FF90EF90DF905B
+:10294000CF90BF90AF909F908F907F9008950F93FE
+:102950001F93CF93DF93EC01888199812B813C8178
+:10296000232BB9F09F3F11F48F3F99F0CE010E94C5
+:10297000A705882371F0688179818A810E94251AD0
+:102980008C010E94DA190E94A118B801CE010E94A0
+:102990008A12DF91CF911F910F9108950E94FD1A25
+:1029A0000E940D1B0E94D21A0E94271B0E944220E7
+:1029B0000E94921F80E090E00E946B1080E090E007
+:1029C0000C9481100E94ED1A0C94CE140E941A1AD5
+:1029D000292F22952F7030E02C3031054CF42A300D
+:1029E00031056CF42250310922303105A8F407C0BA
+:1029F0002C30310569F02F30310551F00DC0803F8A
+:102A000069F018F4803E40F409C0843F29F406C000
+:102A100093FB882780F9089580E0089581E0089568
+:102A2000CF93DF9300D000D01F92CDB7DEB70F90C9
+:102A30000F900F900F900F90DF91CF910895CF934B
+:102A4000DF9300D000D000D0CDB7DEB726960FB60A
+:102A5000F894DEBF0FBECDBFDF91CF9108951F93D5
+:102A6000CF93DF93C091890116E080918A01C81746
+:102A700099F0D0E01C9FF0011D9FF00D1124E55747
+:102A8000FE4F4081518162817381848195810E94D2
+:102A90001F152196C770E9CFDF91CF911F9108953F
+:102AA0004091BB015091BC016091BD017091BE018C
+:102AB0008091BF019091C0010C941F158091C001BD
+:102AC00082958F7009F054C08091BD01882309F46C
+:102AD0004FC080918901A0918A016091BB017091E2
+:102AE000BC014091BE015091BF01B6E08A1709F4C4
+:102AF0003FC090E041155105C1F17F3F11F46F3F98
+:102B0000A1F1B89FF001B99FF00D1124E557FE4FD8
+:102B1000218172132AC02081621327C022812111D2
+:102B200024C0238134812417350710F42150310942
+:102B3000241B350B283C3105C0F42091C0012F70B7
+:102B400020612093C00126E0289FF001299FF00D0D
+:102B50001124E057FE4F80818F70806180838BEB62
+:102B600091E00E94A7140C942F1501968770BECF98
+:102B70000895CF92DF92EF92FF920F931F93CF931E
+:102B8000DF93CDB7DEB762970FB6F894DEBF0FBE06
+:102B9000CDBF8C0185E0F801DE011D9601900D92FC
+:102BA0008A95E1F7D8014C9111965C911197129694
+:102BB0006C9112971396CD90DC9014973091BB01D5
+:102BC0007091BC018091BE019091BF01009709F402
+:102BD0006BC17F3F19F43F3F09F466C1E090BD012E
+:102BE000EE2009F4C0C02091C001C816D90628F013
+:102BF000F601E81BF90BCF0104C0809590958C0D70
+:102C00009D1DFF24F394883C910578F0F12C207FE2
+:102C100009F0C6C07C2DD98AC88A89890E941015FE
+:102C20008BEB91E00E94A714B1C0822F807F09F046
+:102C300046C0751314C0341312C0611110C02F7038
+:102C400020612093C0010E9450158BEB91E00E94FF
+:102C5000A7148091C001D80115968C932EC0CD2861
+:102C600019F15F3F11F44F3FF9F0F62E61111CC0CE
+:102C70008091890120918A0136E0821709F45AC0B7
+:102C800090E0389FF001399FF00D1124E557FE4F79
+:102C90007181571306C07081471303C0728171118F
+:102CA00003C001968770E9CFF62E662309F418C198
+:102CB0008091C00181608093C001F12C11C1751316
+:102CC00008C0341306C0611104C08091C001D8014E
+:102CD000C3C04D875E878D859E856A8B0E94E614F2
+:102CE0006A898823E1F16623D1F12091C001822F06
+:102CF00082958F7090E0029774F08091BB01909163
+:102D0000BC0198878F831986DB86CA862C87CE0103
+:102D100007960E94A71486E0F801ABEBB1E00190A2
+:102D20000D928A95E1F70E945E150E945015FF24CE
+:102D3000F394D6C04D875E878D859E850E941A1AB2
+:102D4000292F22952F7030E0223031050CF0BCC0C5
+:102D50009F7009F0B6C0805E883008F4C1C0C80119
+:102D60000E94A714E4CFC816D90608F453C0F60190
+:102D7000E81BF90BCF01883C910508F450C0F12CF9
+:102D80007C2DD98AC88A89890E941015EBEBF1E065
+:102D900086E0DF011D928A95E9F70E945015A0C0D8
+:102DA000751314C0341312C0611110C08091C0019A
+:102DB000F8018583C8010E94A71486E0EBEBF1E0DF
+:102DC000DF011D928A95E9F7FE2C8AC04D875E8748
+:102DD0008D859E856A8B0E94E6146A89882309F492
+:102DE000BECF662309F4BBCF2091C001822F82950C
+:102DF0008F7090E002970CF48ECF8091BB01909180
+:102E0000BC019A8389831B82DD82CC822E83CE0112
+:102E100001967FCF809590958C0D9D1DACCFF62EA1
+:102E2000662309F49CCF75132EC034132CC0209157
+:102E3000C00120FD1FC0822F82958F70D9F0D8016C
+:102E400015962C9315978F3049F08F5F982F929598
+:102E5000907F822F8F70892B15968C93C8010E94CA
+:102E6000A71486E0F801ABEBB1E001900D928A95D2
+:102E7000E1F793CF86E0F801ABEBB1E001900D9262
+:102E80008A95E1F72DC04D875E878D859E850E94CE
+:102E9000E614811140CF8091C00181608093C00110
+:102EA000C8010E94A7141CC0662309F458CF4D879F
+:102EB0005E878D859E850E94E614882309F44FCF96
+:102EC0002ACF811148CF0CC0243031050CF047CFF8
+:102ED0009F7009F440CFF8019581907F09F03BCFB6
+:102EE0008F2D62960FB6F894DEBF0FBECDBFDF9177
+:102EF000CF911F910F91FF90EF90DF90CF900895A9
+:102F00001F93CF93DF93CDB7DEB72C970FB6F8940E
+:102F1000DEBF0FBECDBF4F83588769877A878B8707
+:102F20009C87CE0107960E94B915882369F08F818E
+:102F300098852A853B85232BF1F19F3F09F063C0DB
+:102F40008F3F09F060C037C086E0FE013796DE0192
+:102F5000119601900D928A95E1F76F817885EA8547
+:102F6000FB85309741F17F3F11F46F3F21F12091B4
+:102F70008A0130E0C9010196877099274091890143
+:102F800050E08417950709F447C069837A83FD836D
+:102F9000EC8396E0929FD001939FB00D1124A5572A
+:102FA000BE4FFE01319601900D929A95E1F7809304
+:102FB0008A010E942F1516E08091890190918A0163
+:102FC0008917C1F1189FC001112485579E4F0E9497
+:102FD000B915882379F1E09189011E9FF001112430
+:102FE000E557FE4F408151816281738184819581D3
+:102FF0000E941F158091890190E0019687709927A2
+:1030000080938901D9CF4F81588569857A858B85D1
+:103010009C850E941F15CFCF0E94E21410928A0156
+:1030200010928901EBEBF1E086E0DF011D928A95B9
+:10303000E9F7C1CF2C960FB6F894DEBF0FBECDBF17
+:10304000DF91CF911F910895EF92FF920F931F93FD
+:10305000CF93DF938C01892B09F46CC0F12CEE2403
+:10306000E394E8012196F8018491843740F4843098
+:1030700008F051C0813081F0823019F15BC0853792
+:1030800009F444C0A8F19CE7980F903708F052C0AB
+:103090008F770E942D1241C00E5F1F4FFE01C49119
+:1030A00080E28C0F883048F4C7708E2D01C0880FE5
+:1030B000CA95EAF70E94001B14C08C2F0E9465116C
+:1030C0002DC00E5F1F4FFE01C49180E28C0F88302F
+:1030D00058F4C7708E2D01C0880FCA95EAF70E9478
+:1030E000061B0E94271B1AC08C2F0E942D1216C08F
+:1030F0000E5F1F4FFE01C491CC2381F08FE99FE04A
+:103100000197F1F700C00000C150F6CF0E5F1F4FCE
+:10311000FE01F49003C00E9465118E018F2D88235B
+:1031200009F49FCFEFE9FFE03197F1F700C000000D
+:103130008150F5CFDF91CF911F910F91FF90EF90CC
+:10314000089508956093C5017093C6018093C701E7
+:103150009093C8010C94CE140F931F930091C50156
+:103160001091C6012091C7013091C801DC01CB014B
+:10317000802B912BA22BB32B8093C5019093C6017A
+:10318000A093C701B093C8011F910F910C94CE1466
+:103190000F931F930091C5011091C6012091C701A3
+:1031A0003091C801DC01CB0180239123A223B323FA
+:1031B0008093C5019093C601A093C701B093C80145
+:1031C0001F910F910C94CE140F931F930091C50182
+:1031D0001091C6012091C7013091C801DC01CB01DB
+:1031E00080279127A227B3278093C5019093C6011A
+:1031F000A093C701B093C8011F910F910C94CE14F6
+:103200001092C1011092C2011092C3011092C40128
+:103210000C94CE1441E050E060E070E004C0440F34
+:10322000551F661F771F8A95D2F74093C1015093AF
+:10323000C2016093C3017093C4010C94CE1441E0A9
+:1032400050E060E070E004C0440F551F661F771F18
+:103250008A95D2F78091C1019091C201A091C301DA
+:10326000B091C401482B592B6A2B7B2B4093C10191
+:103270005093C2016093C3017093C4010C94CE14A7
+:1032800041E050E060E070E004C0440F551F661F4D
+:10329000771F8A95D2F740955095609570958091EB
+:1032A000C1019091C201A091C301B091C401482312
+:1032B00059236A237B234093C1015093C201609339
+:1032C000C3017093C4010C94CE1441E050E060E05F
+:1032D00070E004C0440F551F661F771F8A95D2F710
+:1032E0008091C1019091C201A091C301B091C4012C
+:1032F000482759276A277B274093C1015093C20171
+:103300006093C3017093C4010C94CE140F931F9368
+:103310000091C1011091C2012091C3013091C401FB
+:10332000DC01CB01802B912BA22BB32B8093C1010D
+:103330009093C201A093C301B093C4011F910F9158
+:103340000C94CE140F931F930091C1011091C201F0
+:103350002091C3013091C401DC01CB018023912372
+:10336000A223B3238093C1019093C201A093C30110
+:10337000B093C4011F910F910C94CE140F931F931F
+:103380000091C1011091C2012091C3013091C4018B
+:10339000DC01CB0180279127A227B3278093C101AD
+:1033A0009093C201A093C301B093C4011F910F91E8
+:1033B0000C94CE140895CF92DF92EF92FF920F9368
+:1033C0001F93CF93DF938C01C090C501D090C601AD
+:1033D000E090C701F090C8018091C1019091C201B5
+:1033E000A091C301B091C401C82AD92AEA2AFB2AB4
+:1033F000CFE1D0E0D701C6010C2E04C0B695A79549
+:10340000979587950A94D2F780FF06C0B8018C2F54
+:103410000E94A408019721F4219760F780E001C081
+:103420008C2FDF91CF911F910F91FF90EF90DF9044
+:10343000CF900895CF93DF93EC010E94DB19BE017A
+:103440000E94A408DF91CF910895CB010E941A1A1F
+:1034500008958091C90185958595859508958091F8
+:10346000C9018770089598E0899F90011124262B47
+:103470002093C9010C941F192091C90180958223C2
+:103480008093C901982F977069F430E0482F082E77
+:10349000000C550B2417350729F0859585958595E2
+:1034A0000C94401908959091C901977081E009F436
+:1034B00080E0089590910C01992321F090910D01E5
+:1034C000911109C020910E0130910F01F90132963E
+:1034D0009FEF40E01FC0982F9695969596959F3048
+:1034E00050F5E0910E01F0910F01E90FF11D877089
+:1034F00021E030E0A90102C0440F551F8A95E2F790
+:10350000CA019181892B818308959F3F39F04F5FD4
+:103510004E3041F051915813F8CF0DC05111F7CFF3
+:10352000942FF5CF9F3F39F0F901E90FF11D97FD79
+:10353000FA9582830895089590910C01992321F0C2
+:1035400090910D01911109C020910E0130910F0150
+:10355000F9013296205F3F4F1FC0982F96959695A0
+:1035600096959F30F0F4E0910E01F0910F01E90F74
+:10357000F11D877021E030E0A90102C0440F551F02
+:103580008A95E2F7CA018095918189238183089504
+:103590003196E217F30729F090819813F9CF108242
+:1035A000F7CF089581E090E0E0910E01F0910F01D6
+:1035B000E80FF91F1082019680319105A9F708954F
+:1035C0009091DD01892B8093DD0108958095909184
+:1035D000DD0189238093DD0108951092DD010895B6
+:1035E0009091DC01892B8093DC0108958095909166
+:1035F000DC0189238093DC0108951092DC01089599
+:103600009091DB01892B8093DB0108958095909147
+:10361000DB0189238093DB0108951092DB0108957B
+:103620008093CA0108951092CA01089580910E01F5
+:1036300090910F01FC0131969C01205F3F4F80E08B
+:10364000919191118F5FE217F307D1F70895E091FF
+:103650000E01F0910F018091DD018083E0910E0158
+:10366000F0910F0190818091DC01892B8083E091A2
+:103670000E01F0910F0190818091DB01892B8083F5
+:103680008091CA01882361F0E0910E01F0910F0151
+:103690009081892B80830E94161B81111092CA0190
+:1036A00080910E0190910F010C94551020E000972D
+:1036B00039F0AC0141505109842395232F5FF7CF96
+:1036C000822F0895CF92DF92EF92FF926C01EE2449
+:1036D000FF24C114D104E104F10421F0C701B601B3
+:1036E00020E101C020E0C72ED82EE92EFF24C1140E
+:1036F000D104E104F10419F0285FC701B6016B01A0
+:103700007C0154E0F694E794D794C7945A95D1F786
+:10371000C114D104E104F10419F02C5FC701B60112
+:103720006B017C0142E0F694E794D794C7944A95E4
+:10373000D1F7C114D104E104F10419F02E5FC701DF
+:10374000B601DC01CB01B695A79597958795892B96
+:103750008A2B8B2B09F02F5F822FFF90EF90DF9049
+:10376000CF9008958091F501843039F11092DF01F6
+:1037700020E488E190E00FB6F894A895809360006B
+:103780000FBE2093600080E00E943F0983B7817FD5
+:10379000846083BF83B7816083BF7894889583B743
+:1037A0008E7F83BF0FB6F894A895809160008861E2
+:1037B00080936000109260000FBE089508950895F0
+:1037C0000E94DE1B0E9495040E94DF1B0E948A0556
+:1037D00091E0811101C090E0892F08950E94E214C8
+:1037E0000E9449100C943F0982E084BD93E095BD8E
+:1037F0009AEF97BD80936E0008952FB7F89480914B
+:10380000E0019091E101A091E201B091E3012FBFAD
+:103810000895CF92DF92EF92FF920F931F932FB7ED
+:10382000F8944091E0015091E1016091E2017091C2
+:10383000E3012FBF6A017B01EE24FF248C0120E00D
+:1038400030E0C016D106E206F30610F441505109EB
+:103850009A01281B390BC9011F910F91FF90EF901E
+:10386000DF90CF9008951F920F920FB60F92112400
+:103870008F939F93AF93BF938091E0019091E1016B
+:10388000A091E201B091E3010196A11DB11D8093C9
+:10389000E0019093E101A093E201B093E301BF91B5
+:1038A000AF919F918F910F900FBE0F901F90189521
+:1038B0000E94460DF8942FEF87EA91E62150804050
+:1038C0009040E1F700C0000087E090EBDC018093BE
+:1038D000FF0190930002A0930102B09302029CE0CA
+:1038E00088E10FB6F894A895809360000FBE90937E
+:1038F0006000FFCFEF92FF920F931F93CF93DF9360
+:10390000D82FCDE08C2F0E94830505E010E0E82E33
+:10391000F12CC701002E02C0959587950A94E2F715
+:1039200080FF09C0602F7C2F80E00E945006D813D2
+:1039300002C081E006C00150110958F7C15010F7CC
+:1039400080E0DF91CF911F910F91FF90EF9008954C
+:10395000CF93C82F8CE20E947A1C882321F08C2FF1
+:10396000CF910C947A1C80E0CF910895CF930E9460
+:10397000FD1D811102C00E94E31DC5E6C15049F042
+:103980000E9495048FE39CE90197F1F700C00000C5
+:10399000F5CF89E20E94A81C811113C18AE20E941E
+:1039A000A81C81110E94E31D85E00E94A81C8111C2
+:1039B0000E94581C0E94081E8093DE0187E00E942E
+:1039C000A81C8823A9F18BE10E94A81C882351F030
+:1039D0008091DE0181FB222720F991E0922790FB64
+:1039E00081F90EC08EE00E94A81C882361F08091AE
+:1039F000DE0182FB222720F991E0922790FB82F9D9
+:103A00008093DE0115C080E10E94A81C9091DE0128
+:103A1000882341F093FB222720F981E0822780FB55
+:103A200093F904C0892F809580FB90F99093DE0173
+:103A30008091DE010E940C1E0E941A1E8093FE01DE
+:103A400080EE0E94A81C882341F08091FE01982FEF
+:103A5000909590FB80F98093FE0189E30E94A81C59
+:103A6000882359F08091FE0181FB222720F991E003
+:103A7000922790FB81F98093FE0182EE0E94A81CA0
+:103A8000882359F08091FE0182FB222720F991E0E2
+:103A9000922790FB82F98093FE0186EE0E94A81C7B
+:103AA000882359F08091FE0183FB222720F991E0C1
+:103AB000922790FB83F98093FE0183EE0E94A81C5D
+:103AC000882359F08091FE0184FB222720F991E0A0
+:103AD000922790FB84F98093FE0185E30E94A81C45
+:103AE000882359F08091FE0185FB222720F991E07F
+:103AF000922790FB85F98093FE0181E30E94A81C28
+:103B0000882359F08091FE0186FB222720F991E05D
+:103B1000922790FB86F98093FE0181E10E94A81C08
+:103B2000882359F08091FE0187FB222720F991E03C
+:103B3000922790FB87F98093FE018091FE010E94FD
+:103B40001E1E8091FE0187FB882780F980930D015E
+:103B500087E20E94A81CC82F8EE10E94A81C811138
+:103B6000C2608FE10E94A81C8111C46080E20E94A3
+:103B7000A81C8111C86081E20E94A81C8111C0614B
+:103B800082E20E94A81C8111C06283E20E94A81CEC
+:103B90008111C06484E20E94A81C882311F0C068CF
+:103BA00002C0CC2329F08C2F0E94151E6C2F03C05D
+:103BB0000E94111E682F70E080E090E0CF910C947D
+:103BC000A218CF9108956DEE7EEF80E090E00E9404
+:103BD0005D2460E082E090E00E944B2460E083E09E
+:103BE00090E00E944B2460E084E090E00E944B242F
+:103BF00060E085E090E00C944B2480E090E00E942F
+:103C0000452421E08D3E9E4F09F020E0822F08954B
+:103C100082E090E00C943D24682F82E090E00C94C8
+:103C20004B2483E090E00C943D24682F83E090E0E7
+:103C30000C944B2484E090E00C943D24682F84E0A5
+:103C400090E00C944B248091E60180FF0BC06091C2
+:103C5000130185E0689FB0011124759567957595EE
+:103C600067952BC081FF09C06091130185E0689FB3
+:103C7000B00111247595679520C082FF07C060913F
+:103C8000130185E0689FB001112417C09091E701EE
+:103C90009923D1F060911201961788F720911301B2
+:103CA00085E0289F90011124929FA001939F500DC1
+:103CB000112470E0CA010E940F246038710540F49D
+:103CC0006115710539F002C065E070E0862F089536
+:103CD0008FE7089581E008958091E60180FF08C094
+:103CE0006091110170E0759567957595679521C094
+:103CF00081FF06C06091110170E07595679519C04C
+:103D000082FF04C06091110170E010C09091E70142
+:103D10009923C1F0609110019617A0F780911101CD
+:103D2000899FC001112470E00E940F246038710542
+:103D300028F46115710521F0862F08958FE7089505
+:103D400081E0089561E070E0F4CF803F21F40E94AB
+:103D5000231E819504C0813F29F40E94231E809375
+:103D6000EA010895823F21F40E94231E819504C038
+:103D7000833F29F40E94231E8093E9010895893F1F
+:103D800019F40E946C1E05C08A3F31F40E946C1E1B
+:103D900081958093EB0108958B3F21F40E946C1E66
+:103DA000819504C08C3F29F40E946C1E8093EC0125
+:103DB0000895843F21F48091E801816017C0853F18
+:103DC00021F48091E801826011C0863F21F4809146
+:103DD000E80184600BC0873F21F48091E80188608E
+:103DE00005C0883F31F48091E80180618093E8014B
+:103DF00008958D3F21F48091E60181600BC08E3FD4
+:103E000021F48091E601826005C08F3F29F4809102
+:103E1000E60184608093E6010895803F39F4809143
+:103E2000EA0187FF6CC01092EA0169C0813F29F462
+:103E30008091EA011816BCF362C09091E901823FBB
+:103E400029F497FF5CC01092E90159C0833F19F42F
+:103E50001916CCF354C0893F41F48091EB01181638
+:103E60000CF04DC01092EB014AC08A3F29F48091BA
+:103E7000EB0187FF44C0F6CF8B3F39F48091EC0112
+:103E800087FF3DC01092EC013AC08C3F29F480912D
+:103E9000EC011816BCF333C0843F21F48091E80193
+:103EA0008E7F17C0853F21F48091E8018D7F11C07E
+:103EB000863F21F48091E8018B7F0BC0873F21F47E
+:103EC0008091E801877F05C0883F31F48091E80147
+:103ED0008F7E8093E80113C08D3F21F48091E6012D
+:103EE0008E7F0BC08E3F21F48091E6018D7F05C04F
+:103EF0008F3F29F48091E6018B7F8093E6018091CA
+:103F0000E90181110EC08091EA0181110AC08091FE
+:103F1000EB01811106C08091EC01811102C0109269
+:103F2000E701089588EE91E00E9460100E94FD1B59
+:103F30009093E5018093E40108951F93CF93DF935D
+:103F40008091E4019091E5010E94091CAC019091DF
+:103F5000E701992321F02091140130E006C020915F
+:103F600015018AE0289F900111244217530708F495
+:103F700085C08091E901C091EA01D091EB011091D7
+:103F8000EC01811107C0C11175C0D11173C01111AD
+:103F900071C074C09F3F19F09F5F9093E70118169E
+:103FA00024F40E94231E8093E9018091E90187FF98
+:103FB00005C00E94231E81958093E9011C1624F4FC
+:103FC0000E94231E8093EA018091EA0187FF05C0C9
+:103FD0000E94231E81958093EA016091E901662386
+:103FE00031F1C091EA01CC2311F1062E000C770BC0
+:103FF000880B990B0E94162323E333E343E35FE32B
+:104000000E947A230E94DE226093E9016C2FCC0F7C
+:10401000770B880B990B0E94162323E333E343E3CA
+:104020005FE30E947A230E94DE226093EA011D165C
+:1040300024F40E946C1E8093EB018091EB0187FFBA
+:1040400005C00E946C1E81958093EB01111624F42B
+:104050000E946C1E8093EC018091EC0187FF05C0EB
+:104060000E946C1E81958093EC01DF91CF911F918E
+:104070000C94921F9F3F09F08FCF97CFDF91CF9184
+:104080001F910895E8EEF1E085E0DF011D928A9529
+:10409000E9F71092E7011092E6010895833081F16B
+:1040A00028F4813059F08230D1F00895853009F438
+:1040B00049C0B8F1863009F456C0089580911501C1
+:1040C000262F30E0280F311D2F3F310524F4680FD3
+:1040D0006093150108958FEF8093150108958091E5
+:1040E0001401262F30E0280F311D2F3F310524F415
+:1040F000680F6093140108958FEF80931401089561
+:1041000080911301262F30E0280F311D2F3F3105FC
+:1041100024F4680F6093130108958FEF80931301C7
+:10412000089580911201262F30E0280F311D2F3F76
+:10413000310524F4680F6093120108958FEF809386
+:104140001201089580911101262F30E0280F311DB2
+:104150002F3F310524F4680F6093110108958FEF0C
+:1041600080931101089580911001262F30E0280FCF
+:10417000311D2F3F310524F4680F6093100108951D
+:104180008FEF809310010895833011F128F481306E
+:1041900049F0823091F00895853081F120F1863028
+:1041A000C1F1089580911501681720F4861B809352
+:1041B0001501089510921501089580911401681752
+:1041C00020F4861B80931401089510921401089521
+:1041D00080911301681720F4861B809313010895C2
+:1041E00010921301089580911201681720F4861B24
+:1041F0008093120108951092120108958091110187
+:10420000681720F4861B8093110108951092110104
+:10421000089580911001681720F4861B8093100187
+:1042200008951092100108950F931F938D3109F492
+:104230006BC008F03FC08E3009F47FC0C0F48730F7
+:1042400009F469C068F4863009F0B1C08091DE01DC
+:10425000817F8E7F8093DE0181E08093EE01A8C094
+:10426000883009F4A2C08B3009F49FC0A0C0863109
+:1042700009F49BC078F4803109F472C0813109F0EF
+:1042800096C00E94E21490910D0181E089278093ED
+:104290000D018BC0893109F488C08B3109F087C0CA
+:1042A0008091DE0181FB222720F991E0922790FB8B
+:1042B00081F94CC0853309F470C048F4873209F4A1
+:1042C0006CC008F459C0893209F467C070C08334E7
+:1042D00038F48A3308F04EC0883309F466C067C0EA
+:1042E000833409F45AC0883409F061C00E94E21492
+:1042F0000FEF13ED20E3015010402040E1F700C024
+:1043000000000E94581C51C00E9498220E9449102F
+:104310000E943F094AC09091DE01892F80958170EB
+:1043200080FB90F929F0966098609093DE0140C080
+:10433000997F977F9093DE0138C08091DE0182FBE8
+:10434000222720F991E0922790FB82F98093DE01E9
+:10435000992359F18091DE0181608093DE0125C0AF
+:104360008091DE0183FB222720F991E0922790FBC8
+:1043700083F9ECCF895301C08D5141E050E060E0FA
+:1043800070E08A019B0104C0000F111F221F331F20
+:104390008A95D2F7C901B80104C061E070E080E0FD
+:1043A00090E00E94A2180E94E21481E001C080E027
+:1043B0001F910F91089580E0089580E00895CF93B4
+:1043C000C82F8091EE01813079F018F08230E9F148
+:1043D00087C0E0910E01F0910F018081813169F079
+:1043E000823209F07FC009C0E0910E01F0910F0107
+:1043F0008081813111F0823261F48C2F0E94DB21A7
+:10440000811104C08C2F0E9414211DC081E090E016
+:104410001AC08C2F0E94DD21811114C0C43179F0A3
+:1044200048F4CB3079F0C03109F060C082E080936D
+:10443000EE0108C0C93219F0C83321F057C01092FC
+:10444000EE0154C081E0817053C0C93289F118F582
+:10445000C43171F1A8F4C73009F046C08AE08093F6
+:10446000150194E19093140193E0909313018093CC
+:10447000120188E08093110188E28093100134C01A
+:10448000CE51C63088F5EC2FF0E0E65DFE4F80811E
+:104490008093ED0129C0CE34E9F020F4CB3421F52E
+:1044A0006AE013C0C13579F0C235F1F461E00DC0A6
+:1044B0008091ED01882319F01092ED0115C081E083
+:1044C0008093EE0115C061E006C08091ED010E946D
+:1044D0004E200AC06AE08091ED010E94C42004C011
+:1044E0001092EE0180E004C081E002C080E0ABCF1A
+:1044F000CF910895E1E8F0E0808188608083808139
+:10450000816080838FB7F89493E09093890090ED59
+:10451000909388008FBF0895EFE6F0E0808182607D
+:1045200080830895EFE6F0E080818D7F8083089599
+:10453000EFE6F0E0908182E08927808308951F9262
+:104540000F920FB60F9211242F933F934F935F93C7
+:104550006F937F938F939F93AF93BF93EF93FF934B
+:104560008091EF019091F00101969093F00180937A
+:10457000EF01811103C082E00E943F09E091F00148
+:10458000E695E695F0E0E055FB4FE4918091EF0170
+:104590008E1303C080E00E943F09FF91EF91BF910D
+:1045A000AF919F918F917F916F915F914F913F91CB
+:1045B0002F910F900FBE0F901F9018950E94E5222B
+:1045C0006894B1110C94742308950E94592388F0C3
+:1045D0009F5798F0B92F9927B751B0F0E1F0660FC7
+:1045E000771F881F991F1AF0BA95C9F714C0B13008
+:1045F00091F00E947323B1E008950C947323672F08
+:10460000782F8827B85F39F0B93FCCF38695779536
+:104610006795B395D9F73EF490958095709561951F
+:104620007F4F8F4F9F4F0895E89409C097FB3EF44A
+:1046300090958095709561957F4F8F4F9F4F9923EF
+:10464000A9F0F92F96E9BB279395F695879577956D
+:104650006795B795F111F8CFFAF4BB0F11F460FF2D
+:104660001BC06F5F7F4F8F4F9F4F16C0882311F085
+:1046700096E911C0772321F09EE8872F762F05C099
+:10468000662371F096E8862F70E060E02AF09A9534
+:10469000660F771F881FDAF7880F9695879597F929
+:1046A000089557FD9058440F551F59F05F3F71F022
+:1046B0004795880F97FB991F61F09F3F79F0879589
+:1046C0000895121613061406551FF2CF4695F1DF12
+:1046D00008C0161617061806991FF1CF86957105A2
+:1046E000610508940895E894BB2766277727CB01D6
+:1046F00097F908950E948D230C94FE230E94F023C5
+:1047000038F00E94F72320F0952311F00C94E72352
+:104710000C94ED2311240C9474230E94512370F304
+:10472000959FC1F3950F50E0551F629FF001729F56
+:10473000BB27F00DB11D639FAA27F00DB11DAA1F65
+:10474000649F6627B00DA11D661F829F2227B00DB2
+:10475000A11D621F739FB00DA11D621F839FA00D3D
+:10476000611D221F749F3327A00D611D231F849F8D
+:10477000600D211D822F762F6A2F11249F575040E4
+:104780009AF0F1F088234AF0EE0FFF1FBB1F661F5F
+:10479000771F881F91505040A9F79E3F510580F028
+:1047A0000C94E7230C9474235F3FE4F3983ED4F316
+:1047B000869577956795B795F795E7959F5FC1F7CC
+:1047C000FE2B880F911D9695879597F9089597F977
+:1047D0009F6780E870E060E008959FEF80EC0895A7
+:1047E00000240A94161617061806090608950024D0
+:1047F0000A9412161306140605060895092E03944A
+:10480000000C11F4882352F0BB0F40F4BF2B11F4BD
+:1048100060FF04C06F5F7F4F8F4F9F4F089597FBDE
+:10482000072E16F4009407D077FD09D00E942924A2
+:1048300007FC05D03EF4909581959F4F08957095A3
+:1048400061957F4F0895EE0FFF1F0590F491E02DC5
+:104850000994AA1BBB1B51E107C0AA1FBB1FA617C7
+:10486000B70710F0A61BB70B881F991F5A95A9F719
+:1048700080959095BC01CD010895F999FECF92BD28
+:1048800081BDF89A992780B50895A8E1B0E042E08B
+:1048900050E00C946524262FF999FECF92BD81BD7E
+:1048A000F89A019700B4021639F01FBA20BD0FB66E
+:1048B000F894FA9AF99A0FBE08950196272F0E944C
+:1048C0004C240C944B24DC01CB01FC01F999FECF64
+:1048D00006C0F2BDE1BDF89A319600B40D92415088
+:0A48E0005040B8F70895F894FFCF98
+:1048EA0020024109CF09AC09780944090101CB0129
+:1048FA0028080A03140A3F4D363971042404EE03CA
+:10490A00B503480361037A0393030102030405060E
+:04491A000708090081
:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/dave/keymap.c b/keyboard/ergodox_ez/keymaps/dave/keymap.c index 3ac2842fbf..e9480af3e9 100644 --- a/keyboard/ergodox_ez/keymaps/dave/keymap.c +++ b/keyboard/ergodox_ez/keymaps/dave/keymap.c @@ -3,8 +3,8 @@ #include "action_layer.h" #define BASE 0 // default layer -#define PROG 1 // symbols -#define NAVI 2 // navigation keys +#define PROG 1 // programming +#define NAVI 2 // navigation const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer @@ -18,16 +18,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| H | | B |------+------+------+------+------+--------| * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |`/Ctrl| \ | | | LAlt | | RAlt | | [ | ] |'/Ctrl| + * |`/Ctrl| \ | | | LAlt | | RAlt | [ | ] | |'/Ctrl| * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | PrtS | Apps | | Paus | CtAl | + * | PrtS | PrtS | | CtAl | CtAl | * ,------+------+------| |------+------+------. * | | | L1 | | L1 | | | * | Spce | ~L2 +------| |------+ ~L1 | Spce | * | | | LGui | | RGui | | | * `--------------------' `--------------------' */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, @@ -35,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_H, CTL_T(KC_GRV),KC_NUBS,KC_NO, KC_NO, KC_LALT, - KC_PSCREEN, KC_APP, + KC_PSCREEN, KC_PSCREEN, TO(PROG, ON_PRESS), KC_SPC, MO(NAVI), KC_LGUI, // right hand @@ -43,8 +45,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_G, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENTER, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, - KC_RALT,KC_NO, KC_LBRC,KC_RBRC, CTL_T(KC_QUOT), - KC_PAUS, MT(0x5, KC_NO), + KC_RALT,KC_LBRC,KC_RBRC,KC_NO, CTL_T(KC_QUOT), + MT(0x5, KC_NO), MT(0x5, KC_NO), TO(PROG, ON_PRESS), KC_RGUI, MO(PROG), KC_SPC ), @@ -70,6 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ +// PROGRAMMING [PROG] = KEYMAP( // left hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -105,20 +108,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | MsLt | MsDn | MsRt | | |VolDn | Mute |VolUp | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | Powr | Log | | | | + * | | | | | | * ,------|------|------| |------+------+------. * | | | L0 | | L0 | | | * | | |------| |------| | | * | | | | | | | | * `--------------------' `--------------------' */ +// NAVIGATION [NAVI] = KEYMAP( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_INS, KC_PGUP, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELT, KC_PGDN, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_PWR, LCTL(LALT(KC_DELT)), + KC_TRNS, KC_TRNS, TO(BASE, ON_PRESS), KC_TRNS, KC_TRNS, KC_TRNS, // right hand diff --git a/keyboard/ergodox_ez/keymaps/dave/readme.md b/keyboard/ergodox_ez/keymaps/dave/readme.md new file mode 100644 index 0000000000..aa0f9bd192 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dave/readme.md @@ -0,0 +1,38 @@ +This keymap is my preferred layout (after a certain amount of experimentation). +The rationale behind the design is as follows: + +I grew up typing from a very early age and thus never learned the "correct" way +to touch type (essentially, I'm self-taught). As a, result my fingers don't +tend to stay on the "home keys" and occasionally my right hand wants to type +keys that are on the left of the keyboard, and vice versa. + +Hence, despite liking the idea of split keyboards in principle, I've never been +able to get on with them because the split simply doesn't work with my style of +typing. The Ergodox solves this neatly by virtue of having a few extra keys in +the "middle" of the keyboard which I can utilise for deliberate redundancy. +Thus in this keymap there are two "6" keys (one on the left, one on the right) +and likewise Y, H, G, and B are all duplicated to enable one-handed patterns +that I use frequently (e.g. "byobu" with the right hand, "yes" with the left, +etc.). + +I occasionally use the numeric pad for data entry, thus this is duplicated +under the natural home position of the right hand in layer 1 (activated by +holding one of the right thumb buttons), while the cursor keys are duplicated +under the classic WASD gaming layout of the left hand in layer 2 (activated by +holding one of the left thumb buttons). Various other useful keys also appear +in these layers (brackets and symbols for coding in layer 1, navigation and +F-keys in layer 2, etc.). + +Finally, modifier keys like Ctrl, Shift, and Alt, along with Backspace and +Enter are all in traditional locations in an effort to reuse existing muscle +memory as much as possible (keys like =, #, and ' are in layer 1). The layout +maps are in the comments of keymap_dave.c so I won't bother duplicating them +here. + +Oh, and the LEDs are rather pimped ... because I could! + +Anyway, although I'm sure this keymap won't be to many people's taste you might +find some interesting ideas in here for your own layouts. Do tweet me +(@waveform80) if you have any questions / suggestions / bugs. + +Dave. diff --git a/keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md b/keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md new file mode 100644 index 0000000000..e075e3cd7d --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_spanish/README.md @@ -0,0 +1,99 @@ +# Ergodox Spanish Dvorak Layout + * See spanish dvorak layout [here](http://djelibeibi.unex.es/dvorak/) + * Software layout must be set to SPANISH QWERTY to work properly + +## Keymap Layers + - L0: spanish dvorak with some customizations (see layout below) + - L1: auxiliary keys (includes qwerty shortcuts, numpad...) + - L2: qwerty layout with customizations + + +### Keymap 0: Base layer +Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively + +<pre><code> + +,--------------------------------------------------. ,--------------------------------------------------. +| \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| F1/~L1 | . | , | Ñ | P | Y |MEH_T | | L1 | F | G | C | H | L |ALL_T/+ | +|--------+------+------+------+------+------| DEL | | ~L1 |------+------+------+------+------+--------| +|Esc/Ctrl| A | O | E | U | I |------| |------| D | R | T | N | S |'/RCtrl | +|--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------| +| {/LSft | - | Q | J | K | X | | | | B | M | W | V | Z | }/RSft | +'--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' + |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT| + '----------------------------------' '----------------------------------' + ,-------------. ,-------------. + |F5/CAG|F6/~L1| |F7/~L1|F8/CAG| + ,------|------|------| |------+--------+------. + | | |F4/CA | |F11/CA| | | + | ENTER| TAB |------| |------| BSPC | SPACE| + | | |F3/SA | |F12/SA| | | + '--------------------' '----------------------' + CAG = CTRL-ALT-GUI + CA = CTRL-ALT + SA = SHIFT-ALT + +</pre></code> + +### Keymap 1: Aux layer + +<pre><code> + +,--------------------------------------------------. ,--------------------------------------------------. +| | F1 | F2 | F3 | F4 | F5 | SLEEP| | PWR | F6 | F7 | F8 | F9 | F10 | F11 | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| | < | > | MsUp | | | | | ~L0 | | 7 | 8 | 9 | * | '^ | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | |MsLeft|MsDown|MsRght| |------| |------| | 4 | 5 | 6 | + | Ç | +|--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------| +|CAPSLOCK| | | | | | | | | | 1 | 2 | 3 | / | | +'--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' + |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V| | | . | 0 | = | | + '----------------------------------' '----------------------------------' + ,-------------. ,-------------. + | | | | | Play | + ,------|------|------| |------+------+------. + | | | | | VolUp| | | + | Lclk | Rclk |------| |------| Prev | Next | + | | | L2 | | VolDn| | | + '--------------------' '--------------------' + +</pre></code> + +### Keymap 2: QWERTY layer + +<pre><code> + +,--------------------------------------------------. ,--------------------------------------------------. +| \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| TRANS | Q | W | E | R | T |MEH_T | | TRANS| Y | U | I | O | P |ALL_T/+ | +|--------+------+------+------+------+------| DEL | | |------+------+------+------+------+--------| +|Esc/Ctrl| A | S | D | F | G |------| |------| H | J | K | L | Ñ |'/RCtrl | +|--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------| +| {/LSft | Z | X | C | V | B | | | | N | M | , | . | - | }/RSft | +'--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------' + |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT| + '----------------------------------' '----------------------------------' + ,-------------. ,-------------. + |F5/CAG| TRANS| | TRANS|F8/CAG| + ,------|------|------| |------+--------+------. + | | |F4/CA | |F11/CA| | | + | ENTER| TAB |------| |------| BSPC | SPACE| + | | | TRANS| |F12/SA| | | + '--------------------' '----------------------' + CAG = CTRL-ALT-GUI + CA = CTRL-ALT + SA = SHIFT-ALT + +</pre></code> + + +## Generation of .hex file +> [Download scripts from here](https://github.com/johgh/keyboard/tree/master/ergodox) + +> Execute install.sh and generate.sh scripts. + +> Flash with `teensy_loader` binary (should be installed from previous step) diff --git a/keyboard/ergodox_ez/keymaps/dvorak_spanish/dvorak_spanish.hex b/keyboard/ergodox_ez/keymaps/dvorak_spanish/dvorak_spanish.hex new file mode 100644 index 0000000000..9d41778092 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_spanish/dvorak_spanish.hex @@ -0,0 +1,5371 @@ + + + + +<!DOCTYPE html> +<html lang="en" class=" is-copy-enabled is-u2f-enabled"> + <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#"> + <meta charset='utf-8'> + + <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-3514e6d8825ab9f55728f0030acba498e5da5b85ebc8abc35f0f466ac9d2bdda.css" integrity="sha256-NRTm2IJaufVXKPADCsukmOXaW4XryKvDXw9GasnSvdo=" media="all" rel="stylesheet" /> + <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github-92b560dee7dafd08f0965a6d49e5e4298b3d856899681b308fd7809d9c35367b.css" integrity="sha256-krVg3ufa/QjwllptSeXkKYs9hWiZaBswj9eAnZw1Nns=" media="all" rel="stylesheet" /> + + + + + + <link as="script" href="https://assets-cdn.github.com/assets/frameworks-ea5bbb2a837377ffde53e1099e5909c8df4d36cc5e90c05aeb3694b157df7e4d.js" rel="preload" /> + + <link as="script" href="https://assets-cdn.github.com/assets/github-391829145dbc07158dde112aa636b7ac8b58f7726527ce710bd56118ae1d2f57.js" rel="preload" /> + + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta http-equiv="Content-Language" content="en"> + <meta name="viewport" content="width=device-width"> + + + <title>keyboard/dvorak_spanish.hex at master · johgh/keyboard</title> + <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> + <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> + <link rel="apple-touch-icon" href="/apple-touch-icon.png"> + <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> + <link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> + <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> + <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> + <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> + <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> + <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> + <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png"> + <meta property="fb:app_id" content="1401488693436528"> + + <meta content="https://avatars0.githubusercontent.com/u/8402706?v=3&s=400" name="twitter:image:src" /><meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="johgh/keyboard" name="twitter:title" /><meta content="My keyboard layouts" name="twitter:description" /> + <meta content="https://avatars0.githubusercontent.com/u/8402706?v=3&s=400" property="og:image" /><meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="johgh/keyboard" property="og:title" /><meta content="https://github.com/johgh/keyboard" property="og:url" /><meta content="My keyboard layouts" property="og:description" /> + <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> + <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> + <link rel="assets" href="https://assets-cdn.github.com/"> + <link rel="web-socket" href="wss://live.github.com/_sockets/ODQwMjcwNjplYzk1N2I2ZWI2ZmQ4NDkxYzYwOGYyNTI5NTU2ZGU4MDo5NzUzYjgxYzU5YjA2Y2E3NWRkMzFkYmU1NGVmNzVjNWZiNjhkOTc2ZDNmYmQ2MjA3YTEyNmUwZjJhMGJiYWM1--b3bf68e80e5b864f72da0ef5dee160dae6a5eb69"> + <meta name="pjax-timeout" content="1000"> + <link rel="sudo-modal" href="/sessions/sudo_modal"> + + <meta name="msapplication-TileImage" content="/windows-tile.png"> + <meta name="msapplication-TileColor" content="#ffffff"> + <meta name="selected-link" value="repo_source" data-pjax-transient> + + <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> +<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> + <meta name="google-analytics" content="UA-3769691-2"> + +<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="2F3F4253:55E8:1DFD2F84:574C7A03" name="octolytics-dimension-request_id" /><meta content="8402706" name="octolytics-actor-id" /><meta content="johgh" name="octolytics-actor-login" /><meta content="c7f8908bf6490d3f8a93067aaad799b39f00fe93f431d2c8e1af7a284d27053c" name="octolytics-actor-hash" /> +<meta content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" name="analytics-location" /> + + + + <meta class="js-ga-set" name="dimension1" content="Logged In"> + + + + <meta name="hostname" content="github.com"> + <meta name="user-login" content="johgh"> + + <meta name="expected-hostname" content="github.com"> + <meta name="js-proxy-site-detection-payload" content="NzY3MTQyZDM1NGNkODk4MGRiNjE4YmFjMjhlMTJiYzU2ODgzYThiYjE1ZWVlN2Q0NDcwZTg5MjQyNWVhZGRlM3x7InJlbW90ZV9hZGRyZXNzIjoiNDcuNjMuNjYuODMiLCJyZXF1ZXN0X2lkIjoiMkYzRjQyNTM6NTVFODoxREZEMkY4NDo1NzRDN0EwMyIsInRpbWVzdGFtcCI6MTQ2NDYyOTc3MH0="> + + + <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#4078c0"> + <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico"> + + <meta name="html-safe-nonce" content="96bc37131ccc1986c2a0d20d90faf397412de2be"> + <meta content="28f444bd9d5d742a073b405185ff204d5126d5a2" name="form-nonce" /> + + <meta http-equiv="x-pjax-version" content="e7cec84ad9772b41eb2a7820f7affce2"> + + + + <meta name="description" content="My keyboard layouts"> + <meta name="go-import" content="github.com/johgh/keyboard git https://github.com/johgh/keyboard.git"> + + <meta content="8402706" name="octolytics-dimension-user_id" /><meta content="johgh" name="octolytics-dimension-user_login" /><meta content="58259078" name="octolytics-dimension-repository_id" /><meta content="johgh/keyboard" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="58259078" name="octolytics-dimension-repository_network_root_id" /><meta content="johgh/keyboard" name="octolytics-dimension-repository_network_root_nwo" /> + <link href="https://github.com/johgh/keyboard/commits/master.atom" rel="alternate" title="Recent Commits to keyboard:master" type="application/atom+xml"> + + + <link rel="canonical" href="https://github.com/johgh/keyboard/blob/master/ergodox/dvorak_spanish/dvorak_spanish.hex" data-pjax-transient> + </head> + + + <body class="logged-in env-production linux vis-public page-blob"> + <div id="js-pjax-loader-bar" class="pjax-loader-bar"></div> + <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a> + + + + + + + + <div class="header header-logged-in true" role="banner"> + <div class="container clearfix"> + + <a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo"> + <svg aria-hidden="true" class="octicon octicon-mark-github" height="28" version="1.1" viewBox="0 0 16 16" width="28"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59 0.4 0.07 0.55-0.17 0.55-0.38 0-0.19-0.01-0.82-0.01-1.49-2.01 0.37-2.53-0.49-2.69-0.94-0.09-0.23-0.48-0.94-0.82-1.13-0.28-0.15-0.68-0.52-0.01-0.53 0.63-0.01 1.08 0.58 1.23 0.82 0.72 1.21 1.87 0.87 2.33 0.66 0.07-0.52 0.28-0.87 0.51-1.07-1.78-0.2-3.64-0.89-3.64-3.95 0-0.87 0.31-1.59 0.82-2.15-0.08-0.2-0.36-1.02 0.08-2.12 0 0 0.67-0.21 2.2 0.82 0.64-0.18 1.32-0.27 2-0.27 0.68 0 1.36 0.09 2 0.27 1.53-1.04 2.2-0.82 2.2-0.82 0.44 1.1 0.16 1.92 0.08 2.12 0.51 0.56 0.82 1.27 0.82 2.15 0 3.07-1.87 3.75-3.65 3.95 0.29 0.25 0.54 0.73 0.54 1.48 0 1.07-0.01 1.93-0.01 2.2 0 0.21 0.15 0.46 0.55 0.38C13.71 14.53 16 11.53 16 8 16 3.58 12.42 0 8 0z"></path></svg> +</a> + + + <div class="header-search scoped-search site-scoped-search js-site-search" role="search"> + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/search" class="js-site-search-form" data-scoped-search-url="/johgh/keyboard/search" data-unscoped-search-url="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div> + <label class="form-control header-search-wrapper js-chromeless-input-container"> + <div class="header-search-scope">This repository</div> + <input type="text" + class="form-control header-search-input js-site-search-focus js-site-search-field is-clearable" + data-hotkey="s" + name="q" + placeholder="Search" + aria-label="Search this repository" + data-unscoped-placeholder="Search GitHub" + data-scoped-placeholder="Search" + tabindex="1" + autocapitalize="off"> + </label> +</form></div> + + + <ul class="header-nav left" role="navigation"> + <li class="header-nav-item"> + <a href="/pulls" class="js-selected-navigation-item header-nav-link" data-ga-click="Header, click, Nav menu - item:pulls context:user" data-hotkey="g p" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls"> + Pull requests +</a> </li> + <li class="header-nav-item"> + <a href="/issues" class="js-selected-navigation-item header-nav-link" data-ga-click="Header, click, Nav menu - item:issues context:user" data-hotkey="g i" data-selected-links="/issues /issues/assigned /issues/mentioned /issues"> + Issues +</a> </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://gist.github.com/" data-ga-click="Header, go to gist, text:gist">Gist</a> + </li> + </ul> + + +<ul class="header-nav user-nav right" id="user-links"> + <li class="header-nav-item"> + + <a href="/notifications" aria-label="You have no unread notifications" class="header-nav-link notification-indicator tooltipped tooltipped-s js-socket-channel js-notification-indicator" data-channel="notification-changed-v2:8402706" data-ga-click="Header, go to notifications, icon:read" data-hotkey="g n"> + <span class="mail-status "></span> + <svg aria-hidden="true" class="octicon octicon-bell" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M14 12v1H0v-1l0.73-0.58c0.77-0.77 0.81-2.55 1.19-4.42 0.77-3.77 4.08-5 4.08-5 0-0.55 0.45-1 1-1s1 0.45 1 1c0 0 3.39 1.23 4.16 5 0.38 1.88 0.42 3.66 1.19 4.42l0.66 0.58z m-7 4c1.11 0 2-0.89 2-2H5c0 1.11 0.89 2 2 2z"></path></svg> +</a> + </li> + + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link tooltipped tooltipped-s js-menu-target" href="/new" + aria-label="Create new…" + data-ga-click="Header, create new, icon:add"> + <svg aria-hidden="true" class="octicon octicon-plus left" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 9H7v5H5V9H0V7h5V2h2v5h5v2z"></path></svg> + <span class="dropdown-caret"></span> + </a> + + <div class="dropdown-menu-content js-menu-content"> + <ul class="dropdown-menu dropdown-menu-sw"> + +<a class="dropdown-item" href="/new" data-ga-click="Header, create new repository"> + New repository +</a> + + <a class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository"> + Import repository + </a> + + + <a class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization"> + New organization + </a> + + + + <div class="dropdown-divider"></div> + <div class="dropdown-header"> + <span title="johgh/keyboard">This repository</span> + </div> + <a class="dropdown-item" href="/johgh/keyboard/issues/new" data-ga-click="Header, create new issue"> + New issue + </a> + <a class="dropdown-item" href="/johgh/keyboard/settings/collaboration" data-ga-click="Header, create new collaborator"> + New collaborator + </a> + + </ul> + </div> + </li> + + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link name tooltipped tooltipped-sw js-menu-target" href="/johgh" + aria-label="View profile and more" + data-ga-click="Header, show menu, icon:avatar"> + <img alt="@johgh" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/8402706?v=3&s=40" width="20" /> + <span class="dropdown-caret"></span> + </a> + + <div class="dropdown-menu-content js-menu-content"> + <div class="dropdown-menu dropdown-menu-sw"> + <div class=" dropdown-header header-nav-current-user css-truncate"> + Signed in as <strong class="css-truncate-target">johgh</strong> + + </div> + + + <div class="dropdown-divider"></div> + + <a class="dropdown-item" href="/johgh" data-ga-click="Header, go to profile, text:your profile"> + Your profile + </a> + <a class="dropdown-item" href="/stars" data-ga-click="Header, go to starred repos, text:your stars"> + Your stars + </a> + <a class="dropdown-item" href="/explore" data-ga-click="Header, go to explore, text:explore"> + Explore + </a> + <a class="dropdown-item" href="/integrations" data-ga-click="Header, go to integrations, text:integrations"> + Integrations + </a> + <a class="dropdown-item" href="https://help.github.com" data-ga-click="Header, go to help, text:help"> + Help + </a> + + + <div class="dropdown-divider"></div> + + <a class="dropdown-item" href="/settings/profile" data-ga-click="Header, go to settings, icon:settings"> + Settings + </a> + + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/logout" class="logout-form" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="+XodOWOKV2qhNVaih0sfooP0Lk1Hb8ZAjBSaV905IlPw0ey4dZ5MbzXx+FxqBR0EBSVq6fDwao88f69abdVTfQ==" /></div> + <button class="dropdown-item dropdown-signout" data-ga-click="Header, sign out, icon:logout"> + Sign out + </button> +</form> + </div> + </div> + </li> +</ul> + + + + </div> +</div> + + + + + + <div id="start-of-content" class="accessibility-aid"></div> + + <div id="js-flash-container"> +</div> + + + <div role="main" class="main-content"> + <div itemscope itemtype="http://schema.org/SoftwareSourceCode"> + <div id="js-repo-pjax-container" data-pjax-container> + +<div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav"> + <div class="container repohead-details-container"> + + + +<ul class="pagehead-actions"> + + <li> + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="f797ztd5TsuzQ5g9R6knDUTPO2IVEFpEIeU+5aa6U2NuHB5HDPxoXez+Ele95bMWYaRLcKkoQK+H44xomAgfJA==" /></div> <input class="form-control" id="repository_id" name="repository_id" type="hidden" value="58259078" /> + + <div class="select-menu js-menu-container js-select-menu"> + <a href="/johgh/keyboard/subscription" + class="btn btn-sm btn-with-count select-menu-button js-menu-target" role="button" tabindex="0" aria-haspopup="true" + data-ga-click="Repository, click Watch settings, action:blob#show"> + <span class="js-select-button"> + <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6c4.94 0 7.94-6 7.94-6S13 2 8.06 2z m-0.06 10c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4z m2-4c0 1.11-0.89 2-2 2s-2-0.89-2-2 0.89-2 2-2 2 0.89 2 2z"></path></svg> + Unwatch + </span> + </a> + <a class="social-count js-social-count" href="/johgh/keyboard/watchers"> + 1 + </a> + + <div class="select-menu-modal-holder"> + <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true"> + <div class="select-menu-header js-navigation-enable" tabindex="-1"> + <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75-1.48-1.48 3.75-3.75L0.77 4.25l1.48-1.48 3.75 3.75 3.75-3.75 1.48 1.48-3.75 3.75z"></path></svg> + <span class="select-menu-title">Notifications</span> + </div> + + <div class="select-menu-list js-navigation-container" role="menu"> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5L4 13 0 9l1.5-1.5 2.5 2.5 6.5-6.5 1.5 1.5z"></path></svg> + <div class="select-menu-item-text"> + <input id="do_included" name="do" type="radio" value="included" /> + <span class="select-menu-item-heading">Not watching</span> + <span class="description">Be notified when participating or @mentioned.</span> + <span class="js-select-button-text hidden-select-button-text"> + <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6c4.94 0 7.94-6 7.94-6S13 2 8.06 2z m-0.06 10c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4z m2-4c0 1.11-0.89 2-2 2s-2-0.89-2-2 0.89-2 2-2 2 0.89 2 2z"></path></svg> + Watch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0"> + <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5L4 13 0 9l1.5-1.5 2.5 2.5 6.5-6.5 1.5 1.5z"></path></svg> + <div class="select-menu-item-text"> + <input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" /> + <span class="select-menu-item-heading">Watching</span> + <span class="description">Be notified of all conversations.</span> + <span class="js-select-button-text hidden-select-button-text"> + <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6c4.94 0 7.94-6 7.94-6S13 2 8.06 2z m-0.06 10c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4z m2-4c0 1.11-0.89 2-2 2s-2-0.89-2-2 0.89-2 2-2 2 0.89 2 2z"></path></svg> + Unwatch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5L4 13 0 9l1.5-1.5 2.5 2.5 6.5-6.5 1.5 1.5z"></path></svg> + <div class="select-menu-item-text"> + <input id="do_ignore" name="do" type="radio" value="ignore" /> + <span class="select-menu-item-heading">Ignoring</span> + <span class="description">Never be notified.</span> + <span class="js-select-button-text hidden-select-button-text"> + <svg aria-hidden="true" class="octicon octicon-mute" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8 2.81v10.38c0 0.67-0.81 1-1.28 0.53L3 10H1c-0.55 0-1-0.45-1-1V7c0-0.55 0.45-1 1-1h2l3.72-3.72c0.47-0.47 1.28-0.14 1.28 0.53z m7.53 3.22l-1.06-1.06-1.97 1.97-1.97-1.97-1.06 1.06 1.97 1.97-1.97 1.97 1.06 1.06 1.97-1.97 1.97 1.97 1.06-1.06-1.97-1.97 1.97-1.97z"></path></svg> + Stop ignoring + </span> + </div> + </div> + + </div> + + </div> + </div> + </div> +</form> + </li> + + <li> + + <div class="js-toggler-container js-social-container starring-container "> + + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/unstar" class="starred" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="9A6+ZzRASK6KFvr/l3mD5fdqF6wAutGyXcHd/9130Jyt/nJTM2+0QZbzPe1wh8z3boeD9BwofxkUcUFuamo4Vg==" /></div> + <button + class="btn btn-sm btn-with-count js-toggler-target" + aria-label="Unstar this repository" title="Unstar johgh/keyboard" + data-ga-click="Repository, click unstar button, action:blob#show; text:Unstar"> + <svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M14 6l-4.9-0.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14l4.33-2.33 4.33 2.33L10.4 9.26 14 6z"></path></svg> + Unstar + </button> + <a class="social-count js-social-count" href="/johgh/keyboard/stargazers"> + 0 + </a> +</form> + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/star" class="unstarred" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="CAPVEEQSSx3LaHYWOp68GDX/WuflV61vhOh8IuCmd964inwPxiXoLYYiUTnlqzXaEt30NeCFUneoxaosn8Etgw==" /></div> + <button + class="btn btn-sm btn-with-count js-toggler-target" + aria-label="Star this repository" title="Star johgh/keyboard" + data-ga-click="Repository, click star button, action:blob#show; text:Star"> + <svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M14 6l-4.9-0.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14l4.33-2.33 4.33 2.33L10.4 9.26 14 6z"></path></svg> + Star + </button> + <a class="social-count js-social-count" href="/johgh/keyboard/stargazers"> + 0 + </a> +</form> </div> + + </li> + + <li> + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/fork" class="btn-with-count" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="TkLrGh7KM4+GzHjrSCT3n2kES2RQWpBwpod3gLNn1itfZMlNQss5N6fBtlSb7wTp6cdW2i9jN0j7FSK5k3ClmQ==" /></div> + <button + type="submit" + class="btn btn-sm btn-with-count" + data-ga-click="Repository, show fork modal, action:blob#show; text:Fork" + title="Fork your own copy of johgh/keyboard to your account" + aria-label="Fork your own copy of johgh/keyboard to your account"> + <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path d="M8 1c-1.11 0-2 0.89-2 2 0 0.73 0.41 1.38 1 1.72v1.28L5 8 3 6v-1.28c0.59-0.34 1-0.98 1-1.72 0-1.11-0.89-2-2-2S0 1.89 0 3c0 0.73 0.41 1.38 1 1.72v1.78l3 3v1.78c-0.59 0.34-1 0.98-1 1.72 0 1.11 0.89 2 2 2s2-0.89 2-2c0-0.73-0.41-1.38-1-1.72V9.5l3-3V4.72c0.59-0.34 1-0.98 1-1.72 0-1.11-0.89-2-2-2zM2 4.2c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2z m3 10c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2z m3-10c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2z"></path></svg> + Fork + </button> +</form> + <a href="/johgh/keyboard/network" class="social-count"> + 0 + </a> + </li> +</ul> + + <h1 class="entry-title public "> + <svg aria-hidden="true" class="octicon octicon-repo" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M4 9h-1v-1h1v1z m0-3h-1v1h1v-1z m0-2h-1v1h1v-1z m0-2h-1v1h1v-1z m8-1v12c0 0.55-0.45 1-1 1H6v2l-1.5-1.5-1.5 1.5V14H1c-0.55 0-1-0.45-1-1V1C0 0.45 0.45 0 1 0h10c0.55 0 1 0.45 1 1z m-1 10H1v2h2v-1h3v1h5V11z m0-10H2v9h9V1z"></path></svg> + <span class="author" itemprop="author"><a href="/johgh" class="url fn" rel="author">johgh</a></span><!-- +--><span class="path-divider">/</span><!-- +--><strong itemprop="name"><a href="/johgh/keyboard" data-pjax="#js-repo-pjax-container">keyboard</a></strong> + +</h1> + + </div> + <div class="container"> + +<nav class="reponav js-repo-nav js-sidenav-container-pjax" + itemscope + itemtype="http://schema.org/BreadcrumbList" + role="navigation" + data-pjax="#js-repo-pjax-container"> + + <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> + <a href="/johgh/keyboard" aria-selected="true" class="js-selected-navigation-item selected reponav-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /johgh/keyboard" itemprop="url"> + <svg aria-hidden="true" class="octicon octicon-code" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M9.5 3l-1.5 1.5 3.5 3.5L8 11.5l1.5 1.5 4.5-5L9.5 3zM4.5 3L0 8l4.5 5 1.5-1.5L2.5 8l3.5-3.5L4.5 3z"></path></svg> + <span itemprop="name">Code</span> + <meta itemprop="position" content="1"> +</a> </span> + + <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> + <a href="/johgh/keyboard/issues" class="js-selected-navigation-item reponav-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /johgh/keyboard/issues" itemprop="url"> + <svg aria-hidden="true" class="octicon octicon-issue-opened" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7S10.14 13.7 7 13.7 1.3 11.14 1.3 8s2.56-5.7 5.7-5.7m0-1.3C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7S10.86 1 7 1z m1 3H6v5h2V4z m0 6H6v2h2V10z"></path></svg> + <span itemprop="name">Issues</span> + <span class="counter">0</span> + <meta itemprop="position" content="2"> +</a> </span> + + <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> + <a href="/johgh/keyboard/pulls" class="js-selected-navigation-item reponav-item" data-hotkey="g p" data-selected-links="repo_pulls /johgh/keyboard/pulls" itemprop="url"> + <svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M11 11.28c0-1.73 0-6.28 0-6.28-0.03-0.78-0.34-1.47-0.94-2.06s-1.28-0.91-2.06-0.94c0 0-1.02 0-1 0V0L4 3l3 3V4h1c0.27 0.02 0.48 0.11 0.69 0.31s0.3 0.42 0.31 0.69v6.28c-0.59 0.34-1 0.98-1 1.72 0 1.11 0.89 2 2 2s2-0.89 2-2c0-0.73-0.41-1.38-1-1.72z m-1 2.92c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2zM4 3c0-1.11-0.89-2-2-2S0 1.89 0 3c0 0.73 0.41 1.38 1 1.72 0 1.55 0 5.56 0 6.56-0.59 0.34-1 0.98-1 1.72 0 1.11 0.89 2 2 2s2-0.89 2-2c0-0.73-0.41-1.38-1-1.72V4.72c0.59-0.34 1-0.98 1-1.72z m-0.8 10c0 0.66-0.55 1.2-1.2 1.2s-1.2-0.55-1.2-1.2 0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2z m-1.2-8.8c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2z"></path></svg> + <span itemprop="name">Pull requests</span> + <span class="counter">0</span> + <meta itemprop="position" content="3"> +</a> </span> + + <a href="/johgh/keyboard/wiki" class="js-selected-navigation-item reponav-item" data-hotkey="g w" data-selected-links="repo_wiki /johgh/keyboard/wiki"> + <svg aria-hidden="true" class="octicon octicon-book" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M2 5h4v1H2v-1z m0 3h4v-1H2v1z m0 2h4v-1H2v1z m11-5H9v1h4v-1z m0 2H9v1h4v-1z m0 2H9v1h4v-1z m2-6v9c0 0.55-0.45 1-1 1H8.5l-1 1-1-1H1c-0.55 0-1-0.45-1-1V3c0-0.55 0.45-1 1-1h5.5l1 1 1-1h5.5c0.55 0 1 0.45 1 1z m-8 0.5l-0.5-0.5H1v9h6V3.5z m7-0.5H8.5l-0.5 0.5v8.5h6V3z"></path></svg> + Wiki +</a> + + <a href="/johgh/keyboard/pulse" class="js-selected-navigation-item reponav-item" data-selected-links="pulse /johgh/keyboard/pulse"> + <svg aria-hidden="true" class="octicon octicon-pulse" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38 8H0V10h3.6L4.5 8.2l0.9 5.4L9 8.5l1.6 1.5H14V8H11.5z"></path></svg> + Pulse +</a> + <a href="/johgh/keyboard/graphs" class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors /johgh/keyboard/graphs"> + <svg aria-hidden="true" class="octicon octicon-graph" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M16 14v1H0V0h1v14h15z m-11-1H3V8h2v5z m4 0H7V3h2v10z m4 0H11V6h2v7z"></path></svg> + Graphs +</a> + <a href="/johgh/keyboard/settings" class="js-selected-navigation-item reponav-item" data-selected-links="repo_settings repo_branch_settings hooks /johgh/keyboard/settings"> + <svg aria-hidden="true" class="octicon octicon-gear" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M14 8.77V7.17l-1.94-0.64-0.45-1.09 0.88-1.84-1.13-1.13-1.81 0.91-1.09-0.45-0.69-1.92H6.17l-0.63 1.94-1.11 0.45-1.84-0.88-1.13 1.13 0.91 1.81-0.45 1.09L0 7.23v1.59l1.94 0.64 0.45 1.09-0.88 1.84 1.13 1.13 1.81-0.91 1.09 0.45 0.69 1.92h1.59l0.63-1.94 1.11-0.45 1.84 0.88 1.13-1.13-0.92-1.81 0.47-1.09 1.92-0.69zM7 11c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"></path></svg> + Settings +</a> +</nav> + + </div> +</div> + +<div class="container new-discussion-timeline experiment-repo-nav"> + <div class="repository-content"> + + + +<a href="/johgh/keyboard/blob/ab4c46c678233f6082bb057e59bd1facade3e5a3/ergodox/dvorak_spanish/dvorak_spanish.hex" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a> + +<!-- blob contrib key: blob_contributors:v21:3c9a595e7cf64fe08b296fdf57e4ba32 --> + +<div class="file-navigation js-zeroclipboard-container"> + +<div class="select-menu branch-select-menu js-menu-container js-select-menu left"> + <button class="btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w" + title="master" + type="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true"> + <i>Branch:</i> + <span class="js-select-button css-truncate-target">master</span> + </button> + + <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true"> + + <div class="select-menu-modal"> + <div class="select-menu-header"> + <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75-1.48-1.48 3.75-3.75L0.77 4.25l1.48-1.48 3.75 3.75 3.75-3.75 1.48 1.48-3.75 3.75z"></path></svg> + <span class="select-menu-title">Switch branches/tags</span> + </div> + + <div class="select-menu-filters"> + <div class="select-menu-text-filter"> + <input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Find or create a branch…"> + </div> + <div class="select-menu-tabs"> + <ul> + <li class="select-menu-tab"> + <a href="#" data-tab-filter="branches" data-filter-placeholder="Find or create a branch…" class="js-select-menu-tab" role="tab">Branches</a> + </li> + <li class="select-menu-tab"> + <a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a> + </li> + </ul> + </div> + </div> + + <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu"> + + <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring"> + + + <a class="select-menu-item js-navigation-item js-navigation-open selected" + href="/johgh/keyboard/blob/master/ergodox/dvorak_spanish/dvorak_spanish.hex" + data-name="master" + data-skip-pjax="true" + rel="nofollow"> + <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5L4 13 0 9l1.5-1.5 2.5 2.5 6.5-6.5 1.5 1.5z"></path></svg> + <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text" title="master"> + master + </span> + </a> + </div> + + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="eqr2+jkq/i0OVGOdWjBeradS5NuV5Awtfm3VeKOA1dzLRV3xH1xNXVEbNlekX7TJtQx/gDTpucEMsJBUR96nIA==" /></div> + <svg aria-hidden="true" class="octicon octicon-git-branch select-menu-item-icon" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path d="M10 5c0-1.11-0.89-2-2-2s-2 0.89-2 2c0 0.73 0.41 1.38 1 1.72v0.3c-0.02 0.52-0.23 0.98-0.63 1.38s-0.86 0.61-1.38 0.63c-0.83 0.02-1.48 0.16-2 0.45V4.72c0.59-0.34 1-0.98 1-1.72 0-1.11-0.89-2-2-2S0 1.89 0 3c0 0.73 0.41 1.38 1 1.72v6.56C0.41 11.63 0 12.27 0 13c0 1.11 0.89 2 2 2s2-0.89 2-2c0-0.53-0.2-1-0.53-1.36 0.09-0.06 0.48-0.41 0.59-0.47 0.25-0.11 0.56-0.17 0.94-0.17 1.05-0.05 1.95-0.45 2.75-1.25s1.2-1.98 1.25-3.02h-0.02c0.61-0.36 1.02-1 1.02-1.73zM2 1.8c0.66 0 1.2 0.55 1.2 1.2s-0.55 1.2-1.2 1.2-1.2-0.55-1.2-1.2 0.55-1.2 1.2-1.2z m0 12.41c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2z m6-8c-0.66 0-1.2-0.55-1.2-1.2s0.55-1.2 1.2-1.2 1.2 0.55 1.2 1.2-0.55 1.2-1.2 1.2z"></path></svg> + <div class="select-menu-item-text"> + <span class="select-menu-item-heading">Create branch: <span class="js-new-item-name"></span></span> + <span class="description">from ‘master’</span> + </div> + <input type="hidden" name="name" id="name" class="js-new-item-value"> + <input type="hidden" name="branch" id="branch" value="master"> + <input type="hidden" name="path" id="path" value="ergodox/dvorak_spanish/dvorak_spanish.hex"> +</form> + </div> + + <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags"> + <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring"> + + + </div> + + <div class="select-menu-no-results">Nothing to show</div> + </div> + + </div> + </div> +</div> + + <div class="btn-group right"> + <a href="/johgh/keyboard/find/master" + class="js-pjax-capture-input btn btn-sm" + data-pjax + data-hotkey="t"> + Find file + </a> + <button aria-label="Copy file path to clipboard" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" data-copied-hint="Copied!" type="button">Copy path</button> + </div> + <div class="breadcrumb js-zeroclipboard-target"> + <span class="repo-root js-repo-root"><span class="js-path-segment"><a href="/johgh/keyboard"><span>keyboard</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a href="/johgh/keyboard/tree/master/ergodox"><span>ergodox</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/johgh/keyboard/tree/master/ergodox/dvorak_spanish"><span>dvorak_spanish</span></a></span><span class="separator">/</span><strong class="final-path">dvorak_spanish.hex</strong> + </div> +</div> + +<include-fragment class="commit-tease" src="/johgh/keyboard/contributors/master/ergodox/dvorak_spanish/dvorak_spanish.hex"> + <div> + Fetching contributors… + </div> + + <div class="commit-tease-contributors"> + <img alt="" class="loader-loading left" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" /> + <span class="loader-error">Cannot retrieve contributors at this time</span> + </div> +</include-fragment> +<div class="file"> + <div class="file-header"> + <div class="file-actions"> + + <div class="btn-group"> + <a href="/johgh/keyboard/raw/master/ergodox/dvorak_spanish/dvorak_spanish.hex" class="btn btn-sm " id="raw-url">Raw</a> + <a href="/johgh/keyboard/blame/master/ergodox/dvorak_spanish/dvorak_spanish.hex" class="btn btn-sm js-update-url-with-hash">Blame</a> + <a href="/johgh/keyboard/commits/master/ergodox/dvorak_spanish/dvorak_spanish.hex" class="btn btn-sm " rel="nofollow">History</a> + </div> + + + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/edit/master/ergodox/dvorak_spanish/dvorak_spanish.hex" class="inline-form js-update-url-with-hash" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="mBXUFIbsdwQ12m5mU+yedoFFa8YgpdxmzXk1dlfq1kh0C66VRpqfqiN2C7erMu+s584jhyOYVPRmEEJ8ZlRmjw==" /></div> + <button class="btn-octicon tooltipped tooltipped-nw" type="submit" + aria-label="Edit this file" data-hotkey="e" data-disable-with> + <svg aria-hidden="true" class="octicon octicon-pencil" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M0 12v3h3l8-8-3-3L0 12z m3 2H1V12h1v1h1v1z m10.3-9.3l-1.3 1.3-3-3 1.3-1.3c0.39-0.39 1.02-0.39 1.41 0l1.59 1.59c0.39 0.39 0.39 1.02 0 1.41z"></path></svg> + </button> +</form> <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/johgh/keyboard/delete/master/ergodox/dvorak_spanish/dvorak_spanish.hex" class="inline-form" data-form-nonce="28f444bd9d5d742a073b405185ff204d5126d5a2" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="EK6jR4ODlaPp5/jn2atxuOqb22Or3H/UxxumUc4sjbGX1M3680KVs3VMgkwrfWaeZk9Qhd9vqD3sI7bJpiKXIw==" /></div> + <button class="btn-octicon btn-octicon-danger tooltipped tooltipped-nw" type="submit" + aria-label="Delete this file" data-disable-with> + <svg aria-hidden="true" class="octicon octicon-trashcan" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M10 2H8c0-0.55-0.45-1-1-1H4c-0.55 0-1 0.45-1 1H1c-0.55 0-1 0.45-1 1v1c0 0.55 0.45 1 1 1v9c0 0.55 0.45 1 1 1h7c0.55 0 1-0.45 1-1V5c0.55 0 1-0.45 1-1v-1c0-0.55-0.45-1-1-1z m-1 12H2V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9z m1-10H1v-1h9v1z"></path></svg> + </button> +</form> </div> + + <div class="file-info"> + 1172 lines (1171 sloc) + <span class="file-info-divider"></span> + 51.4 KB + </div> +</div> + + + + <div itemprop="text" class="blob-wrapper data type-text"> + <table class="highlight tab-size js-file-line-container" data-tab-size="8"> + <tr> + <td id="L1" class="blob-num js-line-number" data-line-number="1"></td> + <td id="LC1" class="blob-code blob-code-inner js-file-line">:100000000C9465020C94AC020C94AC020C94AC02FF
</td> + </tr> + <tr> + <td id="L2" class="blob-num js-line-number" data-line-number="2"></td> + <td id="LC2" class="blob-code blob-code-inner js-file-line">:100010000C94AC020C94AC020C94AC020C94AC02A8
</td> + </tr> + <tr> + <td id="L3" class="blob-num js-line-number" data-line-number="3"></td> + <td id="LC3" class="blob-code blob-code-inner js-file-line">:100020000C94AC020C94AC020C94FC0C0C94CE0D11
</td> + </tr> + <tr> + <td id="L4" class="blob-num js-line-number" data-line-number="4"></td> + <td id="LC4" class="blob-code blob-code-inner js-file-line">:100030000C94AC020C94AC020C94AC020C94AC0288
</td> + </tr> + <tr> + <td id="L5" class="blob-num js-line-number" data-line-number="5"></td> + <td id="LC5" class="blob-code blob-code-inner js-file-line">:100040000C94AC020C949A220C94AC020C94AC026A
</td> + </tr> + <tr> + <td id="L6" class="blob-num js-line-number" data-line-number="6"></td> + <td id="LC6" class="blob-code blob-code-inner js-file-line">:100050000C94AC020C942A1C0C94AC020C94AC02D0
</td> + </tr> + <tr> + <td id="L7" class="blob-num js-line-number" data-line-number="7"></td> + <td id="LC7" class="blob-code blob-code-inner js-file-line">:100060000C94AC020C94AC020C94AC020C94AC0258
</td> + </tr> + <tr> + <td id="L8" class="blob-num js-line-number" data-line-number="8"></td> + <td id="LC8" class="blob-code blob-code-inner js-file-line">:100070000C94AC020C94AC020C94AC020C94AC0248
</td> + </tr> + <tr> + <td id="L9" class="blob-num js-line-number" data-line-number="9"></td> + <td id="LC9" class="blob-code blob-code-inner js-file-line">:100080000C94AC020C94AC020C94AC020C94AC0238
</td> + </tr> + <tr> + <td id="L10" class="blob-num js-line-number" data-line-number="10"></td> + <td id="LC10" class="blob-code blob-code-inner js-file-line">:100090000C94AC020C94AC020C94AC020C94AC0228
</td> + </tr> + <tr> + <td id="L11" class="blob-num js-line-number" data-line-number="11"></td> + <td id="LC11" class="blob-code blob-code-inner js-file-line">:1000A0000C94AC020C94AC020C94AC023B0E5D0EB2
</td> + </tr> + <tr> + <td id="L12" class="blob-num js-line-number" data-line-number="12"></td> + <td id="LC12" class="blob-code blob-code-inner js-file-line">:1000B0004B0F5D0E4B0FA20EC50E4B0F1A0F2D0FDF
</td> + </tr> + <tr> + <td id="L13" class="blob-num js-line-number" data-line-number="13"></td> + <td id="LC13" class="blob-code blob-code-inner js-file-line">:1000C00019121912561256129912D712F014F0146E
</td> + </tr> + <tr> + <td id="L14" class="blob-num js-line-number" data-line-number="14"></td> + <td id="LC14" class="blob-code blob-code-inner js-file-line">:1000D000F012F014F113F113C414F014F014DB1443
</td> + </tr> + <tr> + <td id="L15" class="blob-num js-line-number" data-line-number="15"></td> + <td id="LC15" class="blob-code blob-code-inner js-file-line">:1000E0000000F0A135003A81297100300230000093
</td> + </tr> + <tr> + <td id="L16" class="blob-num js-line-number" data-line-number="16"></td> + <td id="LC16" class="blob-code blob-code-inner js-file-line">:1000F0001E003700040038004A003C761F0036001E
</td> + </tr> + <tr> + <td id="L17" class="blob-num js-line-number" data-line-number="17"></td> + <td id="LC17" class="blob-code blob-code-inner js-file-line">:10010000120014004E002B002000330008000D00E8
</td> + </tr> + <tr> + <td id="L18" class="blob-num js-line-number" data-line-number="18"></td> + <td id="LC18" class="blob-code blob-code-inner js-file-line">:100110004B0028002100130018000E004D003D7513
</td> + </tr> + <tr> + <td id="L19" class="blob-num js-line-number" data-line-number="19"></td> + <td id="LC19" class="blob-code blob-code-inner js-file-line">:1001200022001C000C001B0000003E7D64004C7788
</td> + </tr> + <tr> + <td id="L20" class="blob-num js-line-number" data-line-number="20"></td> + <td id="LC20" class="blob-code blob-code-inner js-file-line">:100130000000E30000003F812E00C1000000E60047
</td> + </tr> + <tr> + <td id="L21" class="blob-num js-line-number" data-line-number="21"></td> + <td id="LC21" class="blob-code blob-code-inner js-file-line">:100140000000408123000900070005000000417DF8
</td> + </tr> + <tr> + <td id="L22" class="blob-num js-line-number" data-line-number="22"></td> + <td id="LC22" class="blob-code blob-code-inner js-file-line">:1001500024000A0015001000500044752500060018
</td> + </tr> + <tr> + <td id="L23" class="blob-num js-line-number" data-line-number="23"></td> + <td id="LC23" class="blob-code blob-code-inner js-file-line">:1001600017001A0051002C0026000B001100190086
</td> + </tr> + <tr> + <td id="L24" class="blob-num js-line-number" data-line-number="24"></td> + <td id="LC24" class="blob-code blob-code-inner js-file-line">:1001700052002A0027000F0016001D004F00457690
</td> + </tr> + <tr> + <td id="L25" class="blob-num js-line-number" data-line-number="25"></td> + <td id="LC25" class="blob-code blob-code-inner js-file-line">:100180002D00307F34710130033000000000010089
</td> + </tr> + <tr> + <td id="L26" class="blob-num js-line-number" data-line-number="26"></td> + <td id="LC26" class="blob-code blob-code-inner js-file-line">:1001900000000430160100003A0064000000000076
</td> + </tr> + <tr> + <td id="L27" class="blob-num js-line-number" data-line-number="27"></td> + <td id="LC27" class="blob-code blob-code-inner js-file-line">:1001A0001D0102543B006402F20000001B01F50037
</td> + </tr> + <tr> + <td id="L28" class="blob-num js-line-number" data-line-number="28"></td> + <td id="LC28" class="blob-code blob-code-inner js-file-line">:1001B0003C00F000F10000000601F4003D000000EA
</td> + </tr> + <tr> + <td id="L29" class="blob-num js-line-number" data-line-number="29"></td> + <td id="LC29" class="blob-code blob-code-inner js-file-line">:1001C000F3000000190100003E00000000000000E4
</td> + </tr> + <tr> + <td id="L30" class="blob-num js-line-number" data-line-number="30"></td> + <td id="LC30" class="blob-code blob-code-inner js-file-line">:1001D00000000000A6000000000000000000010078
</td> + </tr> + <tr> + <td id="L31" class="blob-num js-line-number" data-line-number="31"></td> + <td id="LC31" class="blob-code blob-code-inner js-file-line">:1001E000A500010000004600000001003F000000E3
</td> + </tr> + <tr> + <td id="L32" class="blob-num js-line-number" data-line-number="32"></td> + <td id="LC32" class="blob-code blob-code-inner js-file-line">:1001F000000000000000AE004000240021001E00AE
</td> + </tr> + <tr> + <td id="L33" class="blob-num js-line-number" data-line-number="33"></td> + <td id="LC33" class="blob-code blob-code-inner js-file-line">:100200000000A9004100250022001F003700AB00BC
</td> + </tr> + <tr> + <td id="L34" class="blob-num js-line-number" data-line-number="34"></td> + <td id="LC34" class="blob-code blob-code-inner js-file-line">:1002100042002600230020002700AC0043005500C8
</td> + </tr> + <tr> + <td id="L35" class="blob-num js-line-number" data-line-number="35"></td> + <td id="LC35" class="blob-code blob-code-inner js-file-line">:10022000570054006700AA0044002F00310000006E
</td> + </tr> + <tr> + <td id="L36" class="blob-num js-line-number" data-line-number="36"></td> + <td id="LC36" class="blob-code blob-code-inner js-file-line">:10023000000000003500010029710030023000008C
</td> + </tr> + <tr> + <td id="L37" class="blob-num js-line-number" data-line-number="37"></td> + <td id="LC37" class="blob-code blob-code-inner js-file-line">:100240001E00140004001D004A0001001F001A00D7
</td> + </tr> + <tr> + <td id="L38" class="blob-num js-line-number" data-line-number="38"></td> + <td id="LC38" class="blob-code blob-code-inner js-file-line">:1002500016001B004E002B002000080007000600BF
</td> + </tr> + <tr> + <td id="L39" class="blob-num js-line-number" data-line-number="39"></td> + <td id="LC39" class="blob-code blob-code-inner js-file-line">:100260004B00280021001500090019004D003D75C4
</td> + </tr> + <tr> + <td id="L40" class="blob-num js-line-number" data-line-number="40"></td> + <td id="LC40" class="blob-code blob-code-inner js-file-line">:10027000220017000A00050000003E7D64004C7754
</td> + </tr> + <tr> + <td id="L41" class="blob-num js-line-number" data-line-number="41"></td> + <td id="LC41" class="blob-code blob-code-inner js-file-line">:100280000000E300000001002E0001000000E60075
</td> + </tr> + <tr> + <td id="L42" class="blob-num js-line-number" data-line-number="42"></td> + <td id="LC42" class="blob-code blob-code-inner js-file-line">:100290000000010023001C000B0011000000417D44
</td> + </tr> + <tr> + <td id="L43" class="blob-num js-line-number" data-line-number="43"></td> + <td id="LC43" class="blob-code blob-code-inner js-file-line">:1002A000240018000D0010005000447525000C00BB
</td> + </tr> + <tr> + <td id="L44" class="blob-num js-line-number" data-line-number="44"></td> + <td id="LC44" class="blob-code blob-code-inner js-file-line">:1002B0000E00360051002C00260012000F003700FF
</td> + </tr> + <tr> + <td id="L45" class="blob-num js-line-number" data-line-number="45"></td> + <td id="LC45" class="blob-code blob-code-inner js-file-line">:1002C00052002A0027001300330038004F00457603
</td> + </tr> + <tr> + <td id="L46" class="blob-num js-line-number" data-line-number="46"></td> + <td id="LC46" class="blob-code blob-code-inner js-file-line">:1002D0002D00307F347101300330000016034500DB
</td> + </tr> + <tr> + <td id="L47" class="blob-num js-line-number" data-line-number="47"></td> + <td id="LC47" class="blob-code blob-code-inner js-file-line">:1002E000720067006F0044006F0078002000450036
</td> + </tr> + <tr> + <td id="L48" class="blob-num js-line-number" data-line-number="48"></td> + <td id="LC48" class="blob-code blob-code-inner js-file-line">:1002F0005A00000016034500720067006F004400BA
</td> + </tr> + <tr> + <td id="L49" class="blob-num js-line-number" data-line-number="49"></td> + <td id="LC49" class="blob-code blob-code-inner js-file-line">:100300006F007800200045005A0000000403090433
</td> + </tr> + <tr> + <td id="L50" class="blob-num js-line-number" data-line-number="50"></td> + <td id="LC50" class="blob-code blob-code-inner js-file-line">:1003100009026D00040100A0FA09040000010301B4
</td> + </tr> + <tr> + <td id="L51" class="blob-num js-line-number" data-line-number="51"></td> + <td id="LC51" class="blob-code blob-code-inner js-file-line">:100320000100092111010001223F00070581030896
</td> + </tr> + <tr> + <td id="L52" class="blob-num js-line-number" data-line-number="52"></td> + <td id="LC52" class="blob-code blob-code-inner js-file-line">:10033000000A090401000103010200092111010062
</td> + </tr> + <tr> + <td id="L53" class="blob-num js-line-number" data-line-number="53"></td> + <td id="LC53" class="blob-code blob-code-inner js-file-line">:1003400001224D000705820308000A09040200018A
</td> + </tr> + <tr> + <td id="L54" class="blob-num js-line-number" data-line-number="54"></td> + <td id="LC54" class="blob-code blob-code-inner js-file-line">:100350000300000009211101000122360007058376
</td> + </tr> + <tr> + <td id="L55" class="blob-num js-line-number" data-line-number="55"></td> + <td id="LC55" class="blob-code blob-code-inner js-file-line">:100360000308000A09040300010300000009211129
</td> + </tr> + <tr> + <td id="L56" class="blob-num js-line-number" data-line-number="56"></td> + <td id="LC56" class="blob-code blob-code-inner js-file-line">:100370000100012239000705840310000112011059
</td> + </tr> + <tr> + <td id="L57" class="blob-num js-line-number" data-line-number="57"></td> + <td id="LC57" class="blob-code blob-code-inner js-file-line">:100380000100000008EDFE07130100010200010555
</td> + </tr> + <tr> + <td id="L58" class="blob-num js-line-number" data-line-number="58"></td> + <td id="LC58" class="blob-code blob-code-inner js-file-line">:10039000010906A101050719E029E71500250195C6
</td> + </tr> + <tr> + <td id="L59" class="blob-num js-line-number" data-line-number="59"></td> + <td id="LC59" class="blob-code blob-code-inner js-file-line">:1003A0000875018102050819012905950575019156
</td> + </tr> + <tr> + <td id="L60" class="blob-num js-line-number" data-line-number="60"></td> + <td id="LC60" class="blob-code blob-code-inner js-file-line">:1003B000029501750391010507190029771500259C
</td> + </tr> + <tr> + <td id="L61" class="blob-num js-line-number" data-line-number="61"></td> + <td id="LC61" class="blob-code blob-code-inner js-file-line">:1003C00001957875018102C005010980A1018502AE
</td> + </tr> + <tr> + <td id="L62" class="blob-num js-line-number" data-line-number="62"></td> + <td id="LC62" class="blob-code blob-code-inner js-file-line">:1003D00016010026B7001A01002AB7007510950112
</td> + </tr> + <tr> + <td id="L63" class="blob-num js-line-number" data-line-number="63"></td> + <td id="LC63" class="blob-code blob-code-inner js-file-line">:1003E0008100C0050C0901A1018503160100269CAE
</td> + </tr> + <tr> + <td id="L64" class="blob-num js-line-number" data-line-number="64"></td> + <td id="LC64" class="blob-code blob-code-inner js-file-line">:1003F000021A01002A9C02751095018100C00501B6
</td> + </tr> + <tr> + <td id="L65" class="blob-num js-line-number" data-line-number="65"></td> + <td id="LC65" class="blob-code blob-code-inner js-file-line">:100400000902A1010901A100050919012905150029
</td> + </tr> + <tr> + <td id="L66" class="blob-num js-line-number" data-line-number="66"></td> + <td id="LC66" class="blob-code blob-code-inner js-file-line">:10041000250195057501810295017503810105018D
</td> + </tr> + <tr> + <td id="L67" class="blob-num js-line-number" data-line-number="67"></td> + <td id="LC67" class="blob-code blob-code-inner js-file-line">:10042000093009311581257F950275088106093843
</td> + </tr> + <tr> + <td id="L68" class="blob-num js-line-number" data-line-number="68"></td> + <td id="LC68" class="blob-code blob-code-inner js-file-line">:100430001581257F950175088106050C0A3802157E
</td> + </tr> + <tr> + <td id="L69" class="blob-num js-line-number" data-line-number="69"></td> + <td id="LC69" class="blob-code blob-code-inner js-file-line">:1004400081257F950175088106C0C005010906A1B7
</td> + </tr> + <tr> + <td id="L70" class="blob-num js-line-number" data-line-number="70"></td> + <td id="LC70" class="blob-code blob-code-inner js-file-line">:1004500001050719E029E7150025019508750181B7
</td> + </tr> + <tr> + <td id="L71" class="blob-num js-line-number" data-line-number="71"></td> + <td id="LC71" class="blob-code blob-code-inner js-file-line">:100460000295017508810105081901290595057591
</td> + </tr> + <tr> + <td id="L72" class="blob-num js-line-number" data-line-number="72"></td> + <td id="LC72" class="blob-code blob-code-inner js-file-line">:100470000191029501750391010507190029FF15E6
</td> + </tr> + <tr> + <td id="L73" class="blob-num js-line-number" data-line-number="73"></td> + <td id="LC73" class="blob-code blob-code-inner js-file-line">:100480000025FF950675088100C0000000000000EF
</td> + </tr> + <tr> + <td id="L74" class="blob-num js-line-number" data-line-number="74"></td> + <td id="LC74" class="blob-code blob-code-inner js-file-line">:100490000000000000010204060A0F17202C3A4A4F
</td> + </tr> + <tr> + <td id="L75" class="blob-num js-line-number" data-line-number="75"></td> + <td id="LC75" class="blob-code blob-code-inner js-file-line">:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2
</td> + </tr> + <tr> + <td id="L76" class="blob-num js-line-number" data-line-number="76"></td> + <td id="LC76" class="blob-code blob-code-inner js-file-line">:1004B000B39D87715D4A3A2C20170F0A060402018A
</td> + </tr> + <tr> + <td id="L77" class="blob-num js-line-number" data-line-number="77"></td> + <td id="LC77" class="blob-code blob-code-inner js-file-line">:1004C0000000000000000000000011241FBECFEF5C
</td> + </tr> + <tr> + <td id="L78" class="blob-num js-line-number" data-line-number="78"></td> + <td id="LC78" class="blob-code blob-code-inner js-file-line">:1004D000DAE0DEBFCDBF04B603FE27C08091F00195
</td> + </tr> + <tr> + <td id="L79" class="blob-num js-line-number" data-line-number="79"></td> + <td id="LC79" class="blob-code blob-code-inner js-file-line">:1004E0009091F101A091F201B091F3018730904B0E
</td> + </tr> + <tr> + <td id="L80" class="blob-num js-line-number" data-line-number="80"></td> + <td id="LC80" class="blob-code blob-code-inner js-file-line">:1004F000A740B04BD1F41092F0011092F10110928C
</td> + </tr> + <tr> + <td id="L81" class="blob-num js-line-number" data-line-number="81"></td> + <td id="LC81" class="blob-code blob-code-inner js-file-line">:10050000F2011092F30114BE84B7877F84BF0FB647
</td> + </tr> + <tr> + <td id="L82" class="blob-num js-line-number" data-line-number="82"></td> + <td id="LC82" class="blob-code blob-code-inner js-file-line">:10051000F894A895809160008861809360001092A3
</td> + </tr> + <tr> + <td id="L83" class="blob-num js-line-number" data-line-number="83"></td> + <td id="LC83" class="blob-code blob-code-inner js-file-line">:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C
</td> + </tr> + <tr> + <td id="L84" class="blob-num js-line-number" data-line-number="84"></td> + <td id="LC84" class="blob-code blob-code-inner js-file-line">:10053000E0EEF8E402C005900D92A433B107D9F7BC
</td> + </tr> + <tr> + <td id="L85" class="blob-num js-line-number" data-line-number="85"></td> + <td id="LC85" class="blob-code blob-code-inner js-file-line">:1005400021E0A4E3B1E001C01D92A03FB207E1F7B2
</td> + </tr> + <tr> + <td id="L86" class="blob-num js-line-number" data-line-number="86"></td> + <td id="LC86" class="blob-code blob-code-inner js-file-line">:100550000E943D0A0C946E240C940000FC01623051
</td> + </tr> + <tr> + <td id="L87" class="blob-num js-line-number" data-line-number="87"></td> + <td id="LC87" class="blob-code blob-code-inner js-file-line">:1005600009F445C028F4662351F0613041F182C09E
</td> + </tr> + <tr> + <td id="L88" class="blob-num js-line-number" data-line-number="88"></td> + <td id="LC88" class="blob-code blob-code-inner js-file-line">:10057000633009F45BC0643009F472C07BC08281CF
</td> + </tr> + <tr> + <td id="L89" class="blob-num js-line-number" data-line-number="89"></td> + <td id="LC89" class="blob-code blob-code-inner js-file-line">:10058000882341F00E94F41B90933501809334013D
</td> + </tr> + <tr> + <td id="L90" class="blob-num js-line-number" data-line-number="90"></td> + <td id="LC90" class="blob-code blob-code-inner js-file-line">:1005900085EE6AC085EE0E947511809134019091BC
</td> + </tr> + <tr> + <td id="L91" class="blob-num js-line-number" data-line-number="91"></td> + <td id="LC91" class="blob-code blob-code-inner js-file-line">:1005A00035010E94001C8F3591050CF063C086EE6A
</td> + </tr> + <tr> + <td id="L92" class="blob-num js-line-number" data-line-number="92"></td> + <td id="LC92" class="blob-code blob-code-inner js-file-line">:1005B0000E94AD1084E30E94AD1084E34DC082819F
</td> + </tr> + <tr> + <td id="L93" class="blob-num js-line-number" data-line-number="93"></td> + <td id="LC93" class="blob-code blob-code-inner js-file-line">:1005C0008111E0CF85EE0E947511809134019091E8
</td> + </tr> + <tr> + <td id="L94" class="blob-num js-line-number" data-line-number="94"></td> + <td id="LC94" class="blob-code blob-code-inner js-file-line">:1005D00035010E94001C8F3591050CF04BC086EE52
</td> + </tr> + <tr> + <td id="L95" class="blob-num js-line-number" data-line-number="95"></td> + <td id="LC95" class="blob-code blob-code-inner js-file-line">:1005E0000E94AD1081E30E94AD1081E335C082818D
</td> + </tr> + <tr> + <td id="L96" class="blob-num js-line-number" data-line-number="96"></td> + <td id="LC96" class="blob-code blob-code-inner js-file-line">:1005F000882341F00E94F41B9093350180933401CD
</td> + </tr> + <tr> + <td id="L97" class="blob-num js-line-number" data-line-number="97"></td> + <td id="LC97" class="blob-code blob-code-inner js-file-line">:1006000082EE32C082EE0E94751180913401909189
</td> + </tr> + <tr> + <td id="L98" class="blob-num js-line-number" data-line-number="98"></td> + <td id="LC98" class="blob-code blob-code-inner js-file-line">:1006100035010E94001C8F35910564F586EE0E941D
</td> + </tr> + <tr> + <td id="L99" class="blob-num js-line-number" data-line-number="99"></td> + <td id="LC99" class="blob-code blob-code-inner js-file-line">:10062000AD108FE20E94AD108FE216C08281811161
</td> + </tr> + <tr> + <td id="L100" class="blob-num js-line-number" data-line-number="100"></td> + <td id="LC100" class="blob-code blob-code-inner js-file-line">:10063000E1CF82EE0E9475118091340190913501D5
</td> + </tr> + <tr> + <td id="L101" class="blob-num js-line-number" data-line-number="101"></td> + <td id="LC101" class="blob-code blob-code-inner js-file-line">:100640000E94001C8F359105ACF486EE0E94AD101F
</td> + </tr> + <tr> + <td id="L102" class="blob-num js-line-number" data-line-number="102"></td> + <td id="LC102" class="blob-code blob-code-inner js-file-line">:1006500080E30E94AD1080E30E94751186EE08C011
</td> + </tr> + <tr> + <td id="L103" class="blob-num js-line-number" data-line-number="103"></td> + <td id="LC103" class="blob-code blob-code-inner js-file-line">:100660008281882321F089E30E94AD1003C089E3D1
</td> + </tr> + <tr> + <td id="L104" class="blob-num js-line-number" data-line-number="104"></td> + <td id="LC104" class="blob-code blob-code-inner js-file-line">:100670000E94751180E090E0089508956091B301A3
</td> + </tr> + <tr> + <td id="L105" class="blob-num js-line-number" data-line-number="105"></td> + <td id="LC105" class="blob-code blob-code-inner js-file-line">:100680007091B4018091B5019091B6010E94531B05
</td> + </tr> + <tr> + <td id="L106" class="blob-num js-line-number" data-line-number="106"></td> + <td id="LC106" class="blob-code blob-code-inner js-file-line">:1006900056985E9825982D9826982E9827982F98EA
</td> + </tr> + <tr> + <td id="L107" class="blob-num js-line-number" data-line-number="107"></td> + <td id="LC107" class="blob-code blob-code-inner js-file-line">:1006A000813029F0823029F4269A2E9A02C0279AA6
</td> + </tr> + <tr> + <td id="L108" class="blob-num js-line-number" data-line-number="108"></td> + <td id="LC108" class="blob-code blob-code-inner js-file-line">:1006B0002F9A0E94840F81FF02C0259A2D9A0895D7
</td> + </tr> + <tr> + <td id="L109" class="blob-num js-line-number" data-line-number="109"></td> + <td id="LC109" class="blob-code blob-code-inner js-file-line">:1006C0000C943E0356985E9825982D9826982E985F
</td> + </tr> + <tr> + <td id="L110" class="blob-num js-line-number" data-line-number="110"></td> + <td id="LC110" class="blob-code blob-code-inner js-file-line">:1006D00027982F988FEF90E090938900809388005F
</td> + </tr> + <tr> + <td id="L111" class="blob-num js-line-number" data-line-number="111"></td> + <td id="LC111" class="blob-code blob-code-inner js-file-line">:1006E00090938B0080938A0090938D0080938C0070
</td> + </tr> + <tr> + <td id="L112" class="blob-num js-line-number" data-line-number="112"></td> + <td id="LC112" class="blob-code blob-code-inner js-file-line">:1006F000259A2D9A2FEF80E792E02150804090407C
</td> + </tr> + <tr> + <td id="L113" class="blob-num js-line-number" data-line-number="113"></td> + <td id="LC113" class="blob-code blob-code-inner js-file-line">:10070000E1F700C00000269A2E9A2FEF80E792E0D2
</td> + </tr> + <tr> + <td id="L114" class="blob-num js-line-number" data-line-number="114"></td> + <td id="LC114" class="blob-code blob-code-inner js-file-line">:10071000215080409040E1F700C00000279A2F9AB6
</td> + </tr> + <tr> + <td id="L115" class="blob-num js-line-number" data-line-number="115"></td> + <td id="LC115" class="blob-code blob-code-inner js-file-line">:100720002FEF80E792E0215080409040E1F700C039
</td> + </tr> + <tr> + <td id="L116" class="blob-num js-line-number" data-line-number="116"></td> + <td id="LC116" class="blob-code blob-code-inner js-file-line">:10073000000025982D982FEF80E792E0215080400F
</td> + </tr> + <tr> + <td id="L117" class="blob-num js-line-number" data-line-number="117"></td> + <td id="LC117" class="blob-code blob-code-inner js-file-line">:100740009040E1F700C0000026982E982FEF80E738
</td> + </tr> + <tr> + <td id="L118" class="blob-num js-line-number" data-line-number="118"></td> + <td id="LC118" class="blob-code blob-code-inner js-file-line">:1007500092E0215080409040E1F700C000002798CF
</td> + </tr> + <tr> + <td id="L119" class="blob-num js-line-number" data-line-number="119"></td> + <td id="LC119" class="blob-code blob-code-inner js-file-line">:100760002F9856985E9825982D9826982E98279819
</td> + </tr> + <tr> + <td id="L120" class="blob-num js-line-number" data-line-number="120"></td> + <td id="LC120" class="blob-code blob-code-inner js-file-line">:100770002F98089589EA8093800089E08093810012
</td> + </tr> + <tr> + <td id="L121" class="blob-num js-line-number" data-line-number="121"></td> + <td id="LC121" class="blob-code blob-code-inner js-file-line">:1007800024982C983F988AB18F748AB96E98479AAA
</td> + </tr> + <tr> + <td id="L122" class="blob-num js-line-number" data-line-number="122"></td> + <td id="LC122" class="blob-code blob-code-inner js-file-line">:100790008BB1806B8BB9769A0E9462030C943D03F7
</td> + </tr> + <tr> + <td id="L123" class="blob-num js-line-number" data-line-number="123"></td> + <td id="LC123" class="blob-code blob-code-inner js-file-line">:1007A00080E2809300018091360181110EC00E9489
</td> + </tr> + <tr> + <td id="L124" class="blob-num js-line-number" data-line-number="124"></td> + <td id="LC124" class="blob-code blob-code-inner js-file-line">:1007B0001F0481E0809336012FEF83ED90E32150F9
</td> + </tr> + <tr> + <td id="L125" class="blob-num js-line-number" data-line-number="125"></td> + <td id="LC125" class="blob-code blob-code-inner js-file-line">:1007C00080409040E1F700C0000080E40E942504D2
</td> + </tr> + <tr> + <td id="L126" class="blob-num js-line-number" data-line-number="126"></td> + <td id="LC126" class="blob-code blob-code-inner js-file-line">:1007D0008093000181112EC00E944F04809300017C
</td> + </tr> + <tr> + <td id="L127" class="blob-num js-line-number" data-line-number="127"></td> + <td id="LC127" class="blob-code blob-code-inner js-file-line">:1007E000811128C00E944F0480930001811122C012
</td> + </tr> + <tr> + <td id="L128" class="blob-num js-line-number" data-line-number="128"></td> + <td id="LC128" class="blob-code blob-code-inner js-file-line">:1007F0008FE30E944F048093000181111BC00E946F
</td> + </tr> + <tr> + <td id="L129" class="blob-num js-line-number" data-line-number="129"></td> + <td id="LC129" class="blob-code blob-code-inner js-file-line">:10080000470480E40E94250480930001811112C0F6
</td> + </tr> + <tr> + <td id="L130" class="blob-num js-line-number" data-line-number="130"></td> + <td id="LC130" class="blob-code blob-code-inner js-file-line">:100810008CE00E944F048093000181110BC00E9464
</td> + </tr> + <tr> + <td id="L131" class="blob-num js-line-number" data-line-number="131"></td> + <td id="LC131" class="blob-code blob-code-inner js-file-line">:100820004F0480930001811105C08FE30E944F04A3
</td> + </tr> + <tr> + <td id="L132" class="blob-num js-line-number" data-line-number="132"></td> + <td id="LC132" class="blob-code blob-code-inner js-file-line">:10083000809300010E944704809100010895109266
</td> + </tr> + <tr> + <td id="L133" class="blob-num js-line-number" data-line-number="133"></td> + <td id="LC133" class="blob-code blob-code-inner js-file-line">:10084000B9008AE08093B800089594EA9093BC00C0
</td> + </tr> + <tr> + <td id="L134" class="blob-num js-line-number" data-line-number="134"></td> + <td id="LC134" class="blob-code blob-code-inner js-file-line">:100850009091BC0097FFFCCF9091B900987F9830A1
</td> + </tr> + <tr> + <td id="L135" class="blob-num js-line-number" data-line-number="135"></td> + <td id="LC135" class="blob-code blob-code-inner js-file-line">:1008600021F0903111F081E008958093BB0084E87D
</td> + </tr> + <tr> + <td id="L136" class="blob-num js-line-number" data-line-number="136"></td> + <td id="LC136" class="blob-code blob-code-inner js-file-line">:100870008093BC008091BC0087FFFCCF8091B900C1
</td> + </tr> + <tr> + <td id="L137" class="blob-num js-line-number" data-line-number="137"></td> + <td id="LC137" class="blob-code blob-code-inner js-file-line">:10088000887F883111F0803471F780E0089584E921
</td> + </tr> + <tr> + <td id="L138" class="blob-num js-line-number" data-line-number="138"></td> + <td id="LC138" class="blob-code blob-code-inner js-file-line">:100890008093BC008091BC0084FDFCCF08958093C0
</td> + </tr> + <tr> + <td id="L139" class="blob-num js-line-number" data-line-number="139"></td> + <td id="LC139" class="blob-code blob-code-inner js-file-line">:1008A000BB0084E88093BC008091BC0087FFFCCF34
</td> + </tr> + <tr> + <td id="L140" class="blob-num js-line-number" data-line-number="140"></td> + <td id="LC140" class="blob-code blob-code-inner js-file-line">:1008B0009091B900987F81E0983209F480E0089522
</td> + </tr> + <tr> + <td id="L141" class="blob-num js-line-number" data-line-number="141"></td> + <td id="LC141" class="blob-code blob-code-inner js-file-line">:1008C00084E88093BC008091BC0087FFFCCF8091BE
</td> + </tr> + <tr> + <td id="L142" class="blob-num js-line-number" data-line-number="142"></td> + <td id="LC142" class="blob-code blob-code-inner js-file-line">:1008D000BB00089580910001811115C080E40E9441
</td> + </tr> + <tr> + <td id="L143" class="blob-num js-line-number" data-line-number="143"></td> + <td id="LC143" class="blob-code blob-code-inner js-file-line">:1008E00025048093000181110CC082E10E944F0415
</td> + </tr> + <tr> + <td id="L144" class="blob-num js-line-number" data-line-number="144"></td> + <td id="LC144" class="blob-code blob-code-inner js-file-line">:1008F00080930001811105C08FEF0E944F04809307
</td> + </tr> + <tr> + <td id="L145" class="blob-num js-line-number" data-line-number="145"></td> + <td id="LC145" class="blob-code blob-code-inner js-file-line">:1009000000010E94470484B1807F84B985B1807F53
</td> + </tr> + <tr> + <td id="L146" class="blob-num js-line-number" data-line-number="146"></td> + <td id="LC146" class="blob-code blob-code-inner js-file-line">:1009100085B98AB1837F8AB98BB1837F8BB93E98C1
</td> + </tr> + <tr> + <td id="L147" class="blob-num js-line-number" data-line-number="147"></td> + <td id="LC147" class="blob-code blob-code-inner js-file-line">:10092000469808950E94D003809300010E946A04B3
</td> + </tr> + <tr> + <td id="L148" class="blob-num js-line-number" data-line-number="148"></td> + <td id="LC148" class="blob-code blob-code-inner js-file-line">:1009300080B38C7080BB81B3836F81BBA8E3B1E0CF
</td> + </tr> + <tr> + <td id="L149" class="blob-num js-line-number" data-line-number="149"></td> + <td id="LC149" class="blob-code blob-code-inner js-file-line">:10094000E6E4F1E08EE08E0F11921D928E13FCCF43
</td> + </tr> + <tr> + <td id="L150" class="blob-num js-line-number" data-line-number="150"></td> + <td id="LC150" class="blob-code blob-code-inner js-file-line">:100950000C94BA03BF92CF92DF92EF92FF920F9363
</td> + </tr> + <tr> + <td id="L151" class="blob-num js-line-number" data-line-number="151"></td> + <td id="LC151" class="blob-code blob-code-inner js-file-line">:100960001F93CF93DF9380910001882379F08091CA
</td> + </tr> + <tr> + <td id="L152" class="blob-num js-line-number" data-line-number="152"></td> + <td id="LC152" class="blob-code blob-code-inner js-file-line">:1009700037018F5F80933701811108C00E94D00337
</td> + </tr> + <tr> + <td id="L153" class="blob-num js-line-number" data-line-number="153"></td> + <td id="LC153" class="blob-code blob-code-inner js-file-line">:1009800080930001811102C00E94620308E311E01C
</td> + </tr> + <tr> + <td id="L154" class="blob-num js-line-number" data-line-number="154"></td> + <td id="LC154" class="blob-code blob-code-inner js-file-line">:10099000C0E0D0E0DD24D39482E0C82EEE24E394BE
</td> + </tr> + <tr> + <td id="L155" class="blob-num js-line-number" data-line-number="155"></td> + <td id="LC155" class="blob-code blob-code-inner js-file-line">:1009A000F12CC730D10500F580910001811164C0A0
</td> + </tr> + <tr> + <td id="L156" class="blob-num js-line-number" data-line-number="156"></td> + <td id="LC156" class="blob-code blob-code-inner js-file-line">:1009B00080E40E94250480930001811112C082E12D
</td> + </tr> + <tr> + <td id="L157" class="blob-num js-line-number" data-line-number="157"></td> + <td id="LC157" class="blob-code blob-code-inner js-file-line">:1009C0000E944F048093000181110BC0C7010C2EBF
</td> + </tr> + <tr> + <td id="L158" class="blob-num js-line-number" data-line-number="158"></td> + <td id="LC158" class="blob-code blob-code-inner js-file-line">:1009D00001C0880F0A94EAF780950E944F04809323
</td> + </tr> + <tr> + <td id="L159" class="blob-num js-line-number" data-line-number="159"></td> + <td id="LC159" class="blob-code blob-code-inner js-file-line">:1009E00000010E94470448C0CA30A1F028F4C83072
</td> + </tr> + <tr> + <td id="L160" class="blob-num js-line-number" data-line-number="160"></td> + <td id="LC160" class="blob-code blob-code-inner js-file-line">:1009F00059F0C93061F005C0CC3089F070F0CD30CD
</td> + </tr> + <tr> + <td id="L161" class="blob-num js-line-number" data-line-number="161"></td> + <td id="LC161" class="blob-code blob-code-inner js-file-line">:100A000089F0209A289810C0219A29980DC0229A1E
</td> + </tr> + <tr> + <td id="L162" class="blob-num js-line-number" data-line-number="162"></td> + <td id="LC162" class="blob-code blob-code-inner js-file-line">:100A10002A980AC0239A2B9807C0529A01C0539A69
</td> + </tr> + <tr> + <td id="L163" class="blob-num js-line-number" data-line-number="163"></td> + <td id="LC163" class="blob-code blob-code-inner js-file-line">:100A20005B9802C03E9A469890EA9A95F1F79FB17A
</td> + </tr> + <tr> + <td id="L164" class="blob-num js-line-number" data-line-number="164"></td> + <td id="LC164" class="blob-code blob-code-inner js-file-line">:100A3000799902C082E001C080E091709D25982BD9
</td> + </tr> + <tr> + <td id="L165" class="blob-num js-line-number" data-line-number="165"></td> + <td id="LC165" class="blob-code blob-code-inner js-file-line">:100A40007C9902C084E001C080E0892B7D9902C0BE
</td> + </tr> + <tr> + <td id="L166" class="blob-num js-line-number" data-line-number="166"></td> + <td id="LC166" class="blob-code blob-code-inner js-file-line">:100A500038E001C030E0832B7E9902C020E101C064
</td> + </tr> + <tr> + <td id="L167" class="blob-num js-line-number" data-line-number="167"></td> + <td id="LC167" class="blob-code blob-code-inner js-file-line">:100A600020E0822B9FB19095991F9927991F92950D
</td> + </tr> + <tr> + <td id="L168" class="blob-num js-line-number" data-line-number="168"></td> + <td id="LC168" class="blob-code blob-code-inner js-file-line">:100A7000990F907E892B0FC080910001811149C090
</td> + </tr> + <tr> + <td id="L169" class="blob-num js-line-number" data-line-number="169"></td> + <td id="LC169" class="blob-code blob-code-inner js-file-line">:100A800080E40E94250480930001882379F1B12C31
</td> + </tr> + <tr> + <td id="L170" class="blob-num js-line-number" data-line-number="170"></td> + <td id="LC170" class="blob-code blob-code-inner js-file-line">:100A90000E9447048B2DF8019081981719F08083EC
</td> + </tr> + <tr> + <td id="L171" class="blob-num js-line-number" data-line-number="171"></td> + <td id="LC171" class="blob-code blob-code-inner js-file-line">:100AA000C09201010E946A0421960F5F1F4FCE3051
</td> + </tr> + <tr> + <td id="L172" class="blob-num js-line-number" data-line-number="172"></td> + <td id="LC172" class="blob-code blob-code-inner js-file-line">:100AB000D10509F076CF80910101882361F1815041
</td> + </tr> + <tr> + <td id="L173" class="blob-num js-line-number" data-line-number="173"></td> + <td id="LC173" class="blob-code blob-code-inner js-file-line">:100AC00080930101882339F08FE99FE00197F1F7C6
</td> + </tr> + <tr> + <td id="L174" class="blob-num js-line-number" data-line-number="174"></td> + <td id="LC174" class="blob-code blob-code-inner js-file-line">:100AD00000C0000020C0A6E4B1E0E8E3F1E0CF01EF
</td> + </tr> + <tr> + <td id="L175" class="blob-num js-line-number" data-line-number="175"></td> + <td id="LC175" class="blob-code blob-code-inner js-file-line">:100AE000825F91919D938E13FCCF15C083E10E948C
</td> + </tr> + <tr> + <td id="L176" class="blob-num js-line-number" data-line-number="176"></td> + <td id="LC176" class="blob-code blob-code-inner js-file-line">:100AF0004F04809300018111CACF81E40E94250434
</td> + </tr> + <tr> + <td id="L177" class="blob-num js-line-number" data-line-number="177"></td> + <td id="LC177" class="blob-code blob-code-inner js-file-line">:100B0000809300018111C3CF0E946004B82EB0947D
</td> + </tr> + <tr> + <td id="L178" class="blob-num js-line-number" data-line-number="178"></td> + <td id="LC178" class="blob-code blob-code-inner js-file-line">:100B1000BFCF80E0C0CF0E94600381E0DF91CF9122
</td> + </tr> + <tr> + <td id="L179" class="blob-num js-line-number" data-line-number="179"></td> + <td id="LC179" class="blob-code blob-code-inner js-file-line">:100B20001F910F91FF90EF90DF90CF90BF900895AD
</td> + </tr> + <tr> + <td id="L180" class="blob-num js-line-number" data-line-number="180"></td> + <td id="LC180" class="blob-code blob-code-inner js-file-line">:100B3000E82FF0E0EA5BFE4F808108950895089564
</td> + </tr> + <tr> + <td id="L181" class="blob-num js-line-number" data-line-number="181"></td> + <td id="LC181" class="blob-code blob-code-inner js-file-line">:100B400096E0799FF001112494E5899FE00DF11D55
</td> + </tr> + <tr> + <td id="L182" class="blob-num js-line-number" data-line-number="182"></td> + <td id="LC182" class="blob-code blob-code-inner js-file-line">:100B50001124E60FF11DEE0FFF1FEC51FF4F8591A1
</td> + </tr> + <tr> + <td id="L183" class="blob-num js-line-number" data-line-number="183"></td> + <td id="LC183" class="blob-code blob-code-inner js-file-line">:100B600094910895880F991FFC01E05AF0408591F7
</td> + </tr> + <tr> + <td id="L184" class="blob-num js-line-number" data-line-number="184"></td> + <td id="LC184" class="blob-code blob-code-inner js-file-line">:100B700094910895880F991FFC01E052FF4F8591D1
</td> + </tr> + <tr> + <td id="L185" class="blob-num js-line-number" data-line-number="185"></td> + <td id="LC185" class="blob-code blob-code-inner js-file-line">:100B8000949108950F931F93CF93DF93EC018115F8
</td> + </tr> + <tr> + <td id="L186" class="blob-num js-line-number" data-line-number="186"></td> + <td id="LC186" class="blob-code blob-code-inner js-file-line">:100B9000904350F5C11580E2D80708F0B3C0CB3BB5
</td> + </tr> + <tr> + <td id="L187" class="blob-num js-line-number" data-line-number="187"></td> + <td id="LC187" class="blob-code blob-code-inner js-file-line">:100BA000D10590F4C83AD10508F05AC0C53AD1052C
</td> + </tr> + <tr> + <td id="L188" class="blob-num js-line-number" data-line-number="188"></td> + <td id="LC188" class="blob-code blob-code-inner js-file-line">:100BB00008F04BC0C430D10508F0BBC1219709F043
</td> + </tr> + <tr> + <td id="L189" class="blob-num js-line-number" data-line-number="189"></td> + <td id="LC189" class="blob-code blob-code-inner js-file-line">:100BC000B5C101E010E0F5C1CF3FD10511F008F04B
</td> + </tr> + <tr> + <td id="L190" class="blob-num js-line-number" data-line-number="190"></td> + <td id="LC190" class="blob-code blob-code-inner js-file-line">:100BD000B0C1C03FD10508F092C0CE01805E91093E
</td> + </tr> + <tr> + <td id="L191" class="blob-num js-line-number" data-line-number="191"></td> + <td id="LC191" class="blob-code blob-code-inner js-file-line">:100BE000089708F4A6C1A2C1C11591E5D907A8F4D8
</td> + </tr> + <tr> + <td id="L192" class="blob-num js-line-number" data-line-number="192"></td> + <td id="LC192" class="blob-code blob-code-inner js-file-line">:100BF000C23020E5D20708F09EC0C11580E5D807B5
</td> + </tr> + <tr> + <td id="L193" class="blob-num js-line-number" data-line-number="193"></td> + <td id="LC193" class="blob-code blob-code-inner js-file-line">:100C000009F485C008F091C0C11520E4D20708F0AE
</td> + </tr> + <tr> + <td id="L194" class="blob-num js-line-number" data-line-number="194"></td> + <td id="LC194" class="blob-code blob-code-inner js-file-line">:100C10008DC1DD278E01106CCCC1C11580E8D807CD
</td> + </tr> + <tr> + <td id="L195" class="blob-num js-line-number" data-line-number="195"></td> + <td id="LC195" class="blob-code blob-code-inner js-file-line">:100C200058F4C11590E7D90708F07CC1C11520E63A
</td> + </tr> + <tr> + <td id="L196" class="blob-num js-line-number" data-line-number="196"></td> + <td id="LC196" class="blob-code blob-code-inner js-file-line">:100C3000D20708F422C17AC1C11580E9D80708F0AB
</td> + </tr> + <tr> + <td id="L197" class="blob-num js-line-number" data-line-number="197"></td> + <td id="LC197" class="blob-code blob-code-inner js-file-line">:100C400075C1DF708E01106AB4C1C53AD10509F4CF
</td> + </tr> + <tr> + <td id="L198" class="blob-num js-line-number" data-line-number="198"></td> + <td id="LC198" class="blob-code blob-code-inner js-file-line">:100C500072C1C63AD10509F071C102E810E4A9C118
</td> + </tr> + <tr> + <td id="L199" class="blob-num js-line-number" data-line-number="199"></td> + <td id="LC199" class="blob-code blob-code-inner js-file-line">:100C6000C83AD10509F46DC1C93AD10509F46CC17E
</td> + </tr> + <tr> + <td id="L200" class="blob-num js-line-number" data-line-number="200"></td> + <td id="LC200" class="blob-code blob-code-inner js-file-line">:100C7000CA3AD10509F46BC1CB3AD10509F46AC16E
</td> + </tr> + <tr> + <td id="L201" class="blob-num js-line-number" data-line-number="201"></td> + <td id="LC201" class="blob-code blob-code-inner js-file-line">:100C8000CC3AD10509F469C1CD3AD10509F468C15E
</td> + </tr> + <tr> + <td id="L202" class="blob-num js-line-number" data-line-number="202"></td> + <td id="LC202" class="blob-code blob-code-inner js-file-line">:100C9000C03BD10509F467C1CE3AD10509F466C15C
</td> + </tr> + <tr> + <td id="L203" class="blob-num js-line-number" data-line-number="203"></td> + <td id="LC203" class="blob-code blob-code-inner js-file-line">:100CA000CF3AD10509F465C1C13BD10509F464C14E
</td> + </tr> + <tr> + <td id="L204" class="blob-num js-line-number" data-line-number="204"></td> + <td id="LC204" class="blob-code blob-code-inner js-file-line">:100CB000C23BD10509F463C1C33BD10509F462C14C
</td> + </tr> + <tr> + <td id="L205" class="blob-num js-line-number" data-line-number="205"></td> + <td id="LC205" class="blob-code blob-code-inner js-file-line">:100CC000C43BD10509F461C1C53BD10509F460C13C
</td> + </tr> + <tr> + <td id="L206" class="blob-num js-line-number" data-line-number="206"></td> + <td id="LC206" class="blob-code blob-code-inner js-file-line">:100CD000C63BD10509F45FC1C73BD10509F45EC12C
</td> + </tr> + <tr> + <td id="L207" class="blob-num js-line-number" data-line-number="207"></td> + <td id="LC207" class="blob-code blob-code-inner js-file-line">:100CE000C83BD10509F45DC1C93BD10509F45CC11C
</td> + </tr> + <tr> + <td id="L208" class="blob-num js-line-number" data-line-number="208"></td> + <td id="LC208" class="blob-code blob-code-inner js-file-line">:100CF000CA3BD10509F45BC100E014E45AC18E017E
</td> + </tr> + <tr> + <td id="L209" class="blob-num js-line-number" data-line-number="209"></td> + <td id="LC209" class="blob-code blob-code-inner js-file-line">:100D0000106557C1CE019F700E94BA0553C10E9461
</td> + </tr> + <tr> + <td id="L210" class="blob-num js-line-number" data-line-number="210"></td> + <td id="LC210" class="blob-code blob-code-inner js-file-line">:100D100014159FEF24E38CE0915020408040E1F7D0
</td> + </tr> + <tr> + <td id="L211" class="blob-num js-line-number" data-line-number="211"></td> + <td id="LC211" class="blob-code blob-code-inner js-file-line">:100D200000C000000E944F1C44C18091CF0181602F
</td> + </tr> + <tr> + <td id="L212" class="blob-num js-line-number" data-line-number="212"></td> + <td id="LC212" class="blob-code blob-code-inner js-file-line">:100D30008093CF013EC10E94F81D811102C00E9424
</td> + </tr> + <tr> + <td id="L213" class="blob-num js-line-number" data-line-number="213"></td> + <td id="LC213" class="blob-code blob-code-inner js-file-line">:100D4000DE1D0E94151E90E09093F0018093EF014C
</td> + </tr> + <tr> + <td id="L214" class="blob-num js-line-number" data-line-number="214"></td> + <td id="LC214" class="blob-code blob-code-inner js-file-line">:100D5000C23090E5D90721F48091EF01816086C00F
</td> + </tr> + <tr> + <td id="L215" class="blob-num js-line-number" data-line-number="215"></td> + <td id="LC215" class="blob-code blob-code-inner js-file-line">:100D6000C43020E5D20721F48091EF0182607EC07B
</td> + </tr> + <tr> + <td id="L216" class="blob-num js-line-number" data-line-number="216"></td> + <td id="LC216" class="blob-code blob-code-inner js-file-line">:100D7000C63080E5D80721F48091EF01846076C009
</td> + </tr> + <tr> + <td id="L217" class="blob-num js-line-number" data-line-number="217"></td> + <td id="LC217" class="blob-code blob-code-inner js-file-line">:100D8000C83090E5D90719F48091EF0127C0CA3027
</td> + </tr> + <tr> + <td id="L218" class="blob-num js-line-number" data-line-number="218"></td> + <td id="LC218" class="blob-code blob-code-inner js-file-line">:100D900020E5D20721F48091EF01806167C0CC305B
</td> + </tr> + <tr> + <td id="L219" class="blob-num js-line-number" data-line-number="219"></td> + <td id="LC219" class="blob-code blob-code-inner js-file-line">:100DA00080E5D80721F48091EF0180625FC0CE30EA
</td> + </tr> + <tr> + <td id="L220" class="blob-num js-line-number" data-line-number="220"></td> + <td id="LC220" class="blob-code blob-code-inner js-file-line">:100DB00090E5D90721F48091EF01806457C0C031DC
</td> + </tr> + <tr> + <td id="L221" class="blob-num js-line-number" data-line-number="221"></td> + <td id="LC221" class="blob-code blob-code-inner js-file-line">:100DC00020E5D20721F48091EF0180684FC0C23145
</td> + </tr> + <tr> + <td id="L222" class="blob-num js-line-number" data-line-number="222"></td> + <td id="LC222" class="blob-code blob-code-inner js-file-line">:100DD00080E5D80729F48091EF018460886046C0DF
</td> + </tr> + <tr> + <td id="L223" class="blob-num js-line-number" data-line-number="223"></td> + <td id="LC223" class="blob-code blob-code-inner js-file-line">:100DE000C33090E5D90721F48091EF018E7F3EC09A
</td> + </tr> + <tr> + <td id="L224" class="blob-num js-line-number" data-line-number="224"></td> + <td id="LC224" class="blob-code blob-code-inner js-file-line">:100DF000C53020E5D20721F48091EF018D7F36C008
</td> + </tr> + <tr> + <td id="L225" class="blob-num js-line-number" data-line-number="225"></td> + <td id="LC225" class="blob-code blob-code-inner js-file-line">:100E0000C73080E5D80721F48091EF018B7F2EC099
</td> + </tr> + <tr> + <td id="L226" class="blob-num js-line-number" data-line-number="226"></td> + <td id="LC226" class="blob-code blob-code-inner js-file-line">:100E1000C93090E5D90719F48091EF0126C0CB3095
</td> + </tr> + <tr> + <td id="L227" class="blob-num js-line-number" data-line-number="227"></td> + <td id="LC227" class="blob-code blob-code-inner js-file-line">:100E200020E5D20721F48091EF018F7E1FC0CD30E5
</td> + </tr> + <tr> + <td id="L228" class="blob-num js-line-number" data-line-number="228"></td> + <td id="LC228" class="blob-code blob-code-inner js-file-line">:100E300080E5D80721F48091EF018F7D17C0CF3076
</td> + </tr> + <tr> + <td id="L229" class="blob-num js-line-number" data-line-number="229"></td> + <td id="LC229" class="blob-code blob-code-inner js-file-line">:100E400090E5D90721F48091EF018F7B0FC0C1316C
</td> + </tr> + <tr> + <td id="L230" class="blob-num js-line-number" data-line-number="230"></td> + <td id="LC230" class="blob-code blob-code-inner js-file-line">:100E500020E5D20721F48091EF018F7707C0C331DD
</td> + </tr> + <tr> + <td id="L231" class="blob-num js-line-number" data-line-number="231"></td> + <td id="LC231" class="blob-code blob-code-inner js-file-line">:100E6000D04531F48091EF018B7F877F8093EF0134
</td> + </tr> + <tr> + <td id="L232" class="blob-num js-line-number" data-line-number="232"></td> + <td id="LC232" class="blob-code blob-code-inner js-file-line">:100E70008091EF010E94191E9CC08D2F99278F70C1
</td> + </tr> + <tr> + <td id="L233" class="blob-num js-line-number" data-line-number="233"></td> + <td id="LC233" class="blob-code blob-code-inner js-file-line">:100E8000992781309105D9F49E012370332702C040
</td> + </tr> + <tr> + <td id="L234" class="blob-num js-line-number" data-line-number="234"></td> + <td id="LC234" class="blob-code blob-code-inner js-file-line">:100E9000880F991F2A95E2F79C688E0144E0000FA5
</td> + </tr> + <tr> + <td id="L235" class="blob-num js-line-number" data-line-number="235"></td> + <td id="LC235" class="blob-code blob-code-inner js-file-line">:100EA000111F4A95E1F700271370802B912B53E017
</td> + </tr> + <tr> + <td id="L236" class="blob-num js-line-number" data-line-number="236"></td> + <td id="LC236" class="blob-code blob-code-inner js-file-line">:100EB000CC0FDD1F5A95E1F7C076DD272FC08230B9
</td> + </tr> + <tr> + <td id="L237" class="blob-num js-line-number" data-line-number="237"></td> + <td id="LC237" class="blob-code blob-code-inner js-file-line">:100EC000910531F4DC2FCC278E01016F106A71C0BF
</td> + </tr> + <tr> + <td id="L238" class="blob-num js-line-number" data-line-number="238"></td> + <td id="LC238" class="blob-code blob-code-inner js-file-line">:100ED0008330910569F4CE018370992701E010E019
</td> + </tr> + <tr> + <td id="L239" class="blob-num js-line-number" data-line-number="239"></td> + <td id="LC239" class="blob-code blob-code-inner js-file-line">:100EE00002C0000F111F8A95E2F7C8019C680FC06D
</td> + </tr> + <tr> + <td id="L240" class="blob-num js-line-number" data-line-number="240"></td> + <td id="LC240" class="blob-code blob-code-inner js-file-line">:100EF000049709F05EC0CE018370992701E010E0ED
</td> + </tr> + <tr> + <td id="L241" class="blob-num js-line-number" data-line-number="241"></td> + <td id="LC241" class="blob-code blob-code-inner js-file-line">:100F000002C0000F111F8A95E2F7C8019A6823E01A
</td> + </tr> + <tr> + <td id="L242" class="blob-num js-line-number" data-line-number="242"></td> + <td id="LC242" class="blob-code blob-code-inner js-file-line">:100F1000CC0FDD1F2A95E1F7C07ED7708C010C2B1A
</td> + </tr> + <tr> + <td id="L243" class="blob-num js-line-number" data-line-number="243"></td> + <td id="LC243" class="blob-code blob-code-inner js-file-line">:100F20001D2B47C0DF708E01106243C000E010E04F
</td> + </tr> + <tr> + <td id="L244" class="blob-num js-line-number" data-line-number="244"></td> + <td id="LC244" class="blob-code blob-code-inner js-file-line">:100F300040C08E013EC001E810E43BC003E810E46D
</td> + </tr> + <tr> + <td id="L245" class="blob-num js-line-number" data-line-number="245"></td> + <td id="LC245" class="blob-code blob-code-inner js-file-line">:100F400038C002EE14E435C009EE14E432C00AEEF3
</td> + </tr> + <tr> + <td id="L246" class="blob-num js-line-number" data-line-number="246"></td> + <td id="LC246" class="blob-code blob-code-inner js-file-line">:100F500014E42FC005EB14E42CC006EB14E429C004
</td> + </tr> + <tr> + <td id="L247" class="blob-num js-line-number" data-line-number="247"></td> + <td id="LC247" class="blob-code blob-code-inner js-file-line">:100F600007EB14E426C00CEC14E423C00DEC14E4ED
</td> + </tr> + <tr> + <td id="L248" class="blob-num js-line-number" data-line-number="248"></td> + <td id="LC248" class="blob-code blob-code-inner js-file-line">:100F700020C003E815E41DC00AE815E41AC002E920
</td> + </tr> + <tr> + <td id="L249" class="blob-num js-line-number" data-line-number="249"></td> + <td id="LC249" class="blob-code blob-code-inner js-file-line">:100F800015E417C004E915E414C001E216E411C029
</td> + </tr> + <tr> + <td id="L250" class="blob-num js-line-number" data-line-number="250"></td> + <td id="LC250" class="blob-code blob-code-inner js-file-line">:100F900003E216E40EC004E216E40BC005E216E418
</td> + </tr> + <tr> + <td id="L251" class="blob-num js-line-number" data-line-number="251"></td> + <td id="LC251" class="blob-code blob-code-inner js-file-line">:100FA00008C006E216E405C007E216E402C00AE241
</td> + </tr> + <tr> + <td id="L252" class="blob-num js-line-number" data-line-number="252"></td> + <td id="LC252" class="blob-code blob-code-inner js-file-line">:100FB00016E4C801DF91CF911F910F91089596E03B
</td> + </tr> + <tr> + <td id="L253" class="blob-num js-line-number" data-line-number="253"></td> + <td id="LC253" class="blob-code blob-code-inner js-file-line">:100FC000799FF001112494E5899FE00DF11D112412
</td> + </tr> + <tr> + <td id="L254" class="blob-num js-line-number" data-line-number="254"></td> + <td id="LC254" class="blob-code blob-code-inner js-file-line">:100FD000E60FF11DEE0FFF1FEC51FF4F859194912D
</td> + </tr> + <tr> + <td id="L255" class="blob-num js-line-number" data-line-number="255"></td> + <td id="LC255" class="blob-code blob-code-inner js-file-line">:100FE000803E9105E0F4803C910558F581339105F0
</td> + </tr> + <tr> + <td id="L256" class="blob-num js-line-number" data-line-number="256"></td> + <td id="LC256" class="blob-code blob-code-inner js-file-line">:100FF00009F46FC048F48932910509F463C08A325C
</td> + </tr> + <tr> + <td id="L257" class="blob-num js-line-number" data-line-number="257"></td> + <td id="LC257" class="blob-code blob-code-inner js-file-line">:10100000910509F46DC072C089339105E9F0823809
</td> + </tr> + <tr> + <td id="L258" class="blob-num js-line-number" data-line-number="258"></td> + <td id="LC258" class="blob-code blob-code-inner js-file-line">:101010009105D1F08533910509F44DC067C0833E39
</td> + </tr> + <tr> + <td id="L259" class="blob-num js-line-number" data-line-number="259"></td> + <td id="LC259" class="blob-code blob-code-inner js-file-line">:10102000910581F138F4803E9105B9F0823E910539
</td> + </tr> + <tr> + <td id="L260" class="blob-num js-line-number" data-line-number="260"></td> + <td id="LC260" class="blob-code blob-code-inner js-file-line">:10103000D9F05CC0863E910561F1873E9105A1F132
</td> + </tr> + <tr> + <td id="L261" class="blob-num js-line-number" data-line-number="261"></td> + <td id="LC261" class="blob-code blob-code-inner js-file-line">:1010400055C00E94B20508952091EF0120FD02C015
</td> + </tr> + <tr> + <td id="L262" class="blob-num js-line-number" data-line-number="262"></td> + <td id="LC262" class="blob-code blob-code-inner js-file-line">:1010500021FF4CC080EE90E049C08091EF0180FFFD
</td> + </tr> + <tr> + <td id="L263" class="blob-num js-line-number" data-line-number="263"></td> + <td id="LC263" class="blob-code blob-code-inner js-file-line">:10106000F9CF89E390E042C08091EF0182FF0EC08A
</td> + </tr> + <tr> + <td id="L264" class="blob-num js-line-number" data-line-number="264"></td> + <td id="LC264" class="blob-code blob-code-inner js-file-line">:101070008091EF0184FF03C080E090E037C083EEF1
</td> + </tr> + <tr> + <td id="L265" class="blob-num js-line-number" data-line-number="265"></td> + <td id="LC265" class="blob-code blob-code-inner js-file-line">:1010800090E034C08091EF0182FFF2CF82EE90E0D9
</td> + </tr> + <tr> + <td id="L266" class="blob-num js-line-number" data-line-number="266"></td> + <td id="LC266" class="blob-code blob-code-inner js-file-line">:101090002DC08091EF0183FF0BC08091EF0184FD93
</td> + </tr> + <tr> + <td id="L267" class="blob-num js-line-number" data-line-number="267"></td> + <td id="LC267" class="blob-code blob-code-inner js-file-line">:1010A000EBCF87EE90E022C08091EF0183FFF5CF78
</td> + </tr> + <tr> + <td id="L268" class="blob-num js-line-number" data-line-number="268"></td> + <td id="LC268" class="blob-code blob-code-inner js-file-line">:1010B00086EE90E01BC08091EF0185FF07C089E2BA
</td> + </tr> + <tr> + <td id="L269" class="blob-num js-line-number" data-line-number="269"></td> + <td id="LC269" class="blob-code blob-code-inner js-file-line">:1010C00090E014C08091EF0185FFF9CF85E390E0B7
</td> + </tr> + <tr> + <td id="L270" class="blob-num js-line-number" data-line-number="270"></td> + <td id="LC270" class="blob-code blob-code-inner js-file-line">:1010D0000DC08091EF0186FF07C08AE290E006C054
</td> + </tr> + <tr> + <td id="L271" class="blob-num js-line-number" data-line-number="271"></td> + <td id="LC271" class="blob-code blob-code-inner js-file-line">:1010E0008091EF0186FFF9CF81E390E00E94C20575
</td> + </tr> + <tr> + <td id="L272" class="blob-num js-line-number" data-line-number="272"></td> + <td id="LC272" class="blob-code blob-code-inner js-file-line">:1010F000089508950C947908809164010895CF9320
</td> + </tr> + <tr> + <td id="L273" class="blob-num js-line-number" data-line-number="273"></td> + <td id="LC273" class="blob-code blob-code-inner js-file-line">:10110000DF9300D01F92CDB7DEB79C018091E6013E
</td> + </tr> + <tr> + <td id="L274" class="blob-num js-line-number" data-line-number="274"></td> + <td id="LC274" class="blob-code blob-code-inner js-file-line">:10111000843019F593E099833B832A839093E90007
</td> + </tr> + <tr> + <td id="L275" class="blob-num js-line-number" data-line-number="275"></td> + <td id="LC275" class="blob-code blob-code-inner js-file-line">:101120008FEF9091E800815095FD06C095ED9A955E
</td> + </tr> + <tr> + <td id="L276" class="blob-num js-line-number" data-line-number="276"></td> + <td id="LC276" class="blob-code blob-code-inner js-file-line">:10113000F1F700008111F5CF8091E80085FF0DC027
</td> + </tr> + <tr> + <td id="L277" class="blob-num js-line-number" data-line-number="277"></td> + <td id="LC277" class="blob-code blob-code-inner js-file-line">:1011400040E050E063E070E0CE0101960E94EC0ABE
</td> + </tr> + <tr> + <td id="L278" class="blob-num js-line-number" data-line-number="278"></td> + <td id="LC278" class="blob-code blob-code-inner js-file-line">:101150008091E8008E778093E8000F900F900F90B9
</td> + </tr> + <tr> + <td id="L279" class="blob-num js-line-number" data-line-number="279"></td> + <td id="LC279" class="blob-code blob-code-inner js-file-line">:10116000DF91CF910895CF93DF9300D01F92CDB739
</td> + </tr> + <tr> + <td id="L280" class="blob-num js-line-number" data-line-number="280"></td> + <td id="LC280" class="blob-code blob-code-inner js-file-line">:10117000DEB72091E601243021F522E029839B830C
</td> + </tr> + <tr> + <td id="L281" class="blob-num js-line-number" data-line-number="281"></td> + <td id="LC281" class="blob-code blob-code-inner js-file-line">:101180008A8383E08093E9008FEF9091E80081509B
</td> + </tr> + <tr> + <td id="L282" class="blob-num js-line-number" data-line-number="282"></td> + <td id="LC282" class="blob-code blob-code-inner js-file-line">:1011900095FD06C095ED9A95F1F700008111F5CF08
</td> + </tr> + <tr> + <td id="L283" class="blob-num js-line-number" data-line-number="283"></td> + <td id="LC283" class="blob-code blob-code-inner js-file-line">:1011A0008091E80085FF0DC040E050E063E070E012
</td> + </tr> + <tr> + <td id="L284" class="blob-num js-line-number" data-line-number="284"></td> + <td id="LC284" class="blob-code blob-code-inner js-file-line">:1011B000CE0101960E94EC0A8091E8008E77809320
</td> + </tr> + <tr> + <td id="L285" class="blob-num js-line-number" data-line-number="285"></td> + <td id="LC285" class="blob-code blob-code-inner js-file-line">:1011C000E8000F900F900F90DF91CF91089520913C
</td> + </tr> + <tr> + <td id="L286" class="blob-num js-line-number" data-line-number="286"></td> + <td id="LC286" class="blob-code blob-code-inner js-file-line">:1011D000E6012430F1F422E02093E9002FEF309172
</td> + </tr> + <tr> + <td id="L287" class="blob-num js-line-number" data-line-number="287"></td> + <td id="LC287" class="blob-code blob-code-inner js-file-line">:1011E000E800215035FD06C035ED3A95F1F70000D5
</td> + </tr> + <tr> + <td id="L288" class="blob-num js-line-number" data-line-number="288"></td> + <td id="LC288" class="blob-code blob-code-inner js-file-line">:1011F0002111F5CF2091E80025FF0BC040E050E021
</td> + </tr> + <tr> + <td id="L289" class="blob-num js-line-number" data-line-number="289"></td> + <td id="LC289" class="blob-code blob-code-inner js-file-line">:1012000065E070E00E94EC0A8091E8008E778093A0
</td> + </tr> + <tr> + <td id="L290" class="blob-num js-line-number" data-line-number="290"></td> + <td id="LC290" class="blob-code blob-code-inner js-file-line">:10121000E8000895CF93DF93EC019091E6019430BC
</td> + </tr> + <tr> + <td id="L291" class="blob-num js-line-number" data-line-number="291"></td> + <td id="LC291" class="blob-code blob-code-inner js-file-line">:1012200009F046C080910C018823D9F080910D010E
</td> + </tr> + <tr> + <td id="L292" class="blob-num js-line-number" data-line-number="292"></td> + <td id="LC292" class="blob-code blob-code-inner js-file-line">:101230008823B9F09093E9008FEF9091E8008150F6
</td> + </tr> + <tr> + <td id="L293" class="blob-num js-line-number" data-line-number="293"></td> + <td id="LC293" class="blob-code blob-code-inner js-file-line">:1012400095FD06C095E19A95F1F700008111F5CF63
</td> + </tr> + <tr> + <td id="L294" class="blob-num js-line-number" data-line-number="294"></td> + <td id="LC294" class="blob-code blob-code-inner js-file-line">:101250008091E80085FF2CC040E050E060E170E044
</td> + </tr> + <tr> + <td id="L295" class="blob-num js-line-number" data-line-number="295"></td> + <td id="LC295" class="blob-code blob-code-inner js-file-line">:1012600017C081E08093E9008FEF9091E8008150F2
</td> + </tr> + <tr> + <td id="L296" class="blob-num js-line-number" data-line-number="296"></td> + <td id="LC296" class="blob-code blob-code-inner js-file-line">:1012700095FD06C095ED9A95F1F700008111F5CF27
</td> + </tr> + <tr> + <td id="L297" class="blob-num js-line-number" data-line-number="297"></td> + <td id="LC297" class="blob-code blob-code-inner js-file-line">:101280008091E80085FF14C040E050E068E070E025
</td> + </tr> + <tr> + <td id="L298" class="blob-num js-line-number" data-line-number="298"></td> + <td id="LC298" class="blob-code blob-code-inner js-file-line">:10129000CE010E94EC0A8091E8008E778093E800EE
</td> + </tr> + <tr> + <td id="L299" class="blob-num js-line-number" data-line-number="299"></td> + <td id="LC299" class="blob-code blob-code-inner js-file-line">:1012A00080E1FE01A4E5B1E001900D928A95E1F79D
</td> + </tr> + <tr> + <td id="L300" class="blob-num js-line-number" data-line-number="300"></td> + <td id="LC300" class="blob-code blob-code-inner js-file-line">:1012B000DF91CF9108958091E501811109C00E94CD
</td> + </tr> + <tr> + <td id="L301" class="blob-num js-line-number" data-line-number="301"></td> + <td id="LC301" class="blob-code blob-code-inner js-file-line">:1012C000810C0E94DE0C8091E20084608093E20039
</td> + </tr> + <tr> + <td id="L302" class="blob-num js-line-number" data-line-number="302"></td> + <td id="LC302" class="blob-code blob-code-inner js-file-line">:1012D00008951092E501089508950C9487220E94C4
</td> + </tr> + <tr> + <td id="L303" class="blob-num js-line-number" data-line-number="303"></td> + <td id="LC303" class="blob-code blob-code-inner js-file-line">:1012E000E51B0E948D220E94840F0C947A0842E034
</td> + </tr> + <tr> + <td id="L304" class="blob-num js-line-number" data-line-number="304"></td> + <td id="LC304" class="blob-code blob-code-inner js-file-line">:1012F00061EC81E00E94FB0B42E061EC82E00E9425
</td> + </tr> + <tr> + <td id="L305" class="blob-num js-line-number" data-line-number="305"></td> + <td id="LC305" class="blob-code blob-code-inner js-file-line">:10130000FB0B42E061EC83E00E94FB0B42E161ECED
</td> + </tr> + <tr> + <td id="L306" class="blob-num js-line-number" data-line-number="306"></td> + <td id="LC306" class="blob-code blob-code-inner js-file-line">:1013100084E00C94FB0B8091E801833009F455C004
</td> + </tr> + <tr> + <td id="L307" class="blob-num js-line-number" data-line-number="307"></td> + <td id="LC307" class="blob-code blob-code-inner js-file-line">:1013200030F4813071F0823009F48EC008958A3033
</td> + </tr> + <tr> + <td id="L308" class="blob-num js-line-number" data-line-number="308"></td> + <td id="LC308" class="blob-code blob-code-inner js-file-line">:1013300009F47AC08B3009F460C0893009F09CC090
</td> + </tr> + <tr> + <td id="L309" class="blob-num js-line-number" data-line-number="309"></td> + <td id="LC309" class="blob-code blob-code-inner js-file-line">:1013400020C08091E701813A09F096C08091E800C1
</td> + </tr> + <tr> + <td id="L310" class="blob-num js-line-number" data-line-number="310"></td> + <td id="LC310" class="blob-code blob-code-inner js-file-line">:10135000877F8093E8008091EB019091EC01892BCD
</td> + </tr> + <tr> + <td id="L311" class="blob-num js-line-number" data-line-number="311"></td> + <td id="LC311" class="blob-code blob-code-inner js-file-line">:1013600021F460E184E591E003C060E080E090E07A
</td> + </tr> + <tr> + <td id="L312" class="blob-num js-line-number" data-line-number="312"></td> + <td id="LC312" class="blob-code blob-code-inner js-file-line">:1013700070E00E94370B8091E8008B778093E80043
</td> + </tr> + <tr> + <td id="L313" class="blob-num js-line-number" data-line-number="313"></td> + <td id="LC313" class="blob-code blob-code-inner js-file-line">:1013800008958091E701813209F076C08091EB01E8
</td> + </tr> + <tr> + <td id="L314" class="blob-num js-line-number" data-line-number="314"></td> + <td id="LC314" class="blob-code blob-code-inner js-file-line">:101390009091EC01009719F0039709F06DC08091CE
</td> + </tr> + <tr> + <td id="L315" class="blob-num js-line-number" data-line-number="315"></td> + <td id="LC315" class="blob-code blob-code-inner js-file-line">:1013A000E800877F8093E8008091E80082FD05C017
</td> + </tr> + <tr> + <td id="L316" class="blob-num js-line-number" data-line-number="316"></td> + <td id="LC316" class="blob-code blob-code-inner js-file-line">:1013B0008091E6018111F8CF5FC08091F1008093A8
</td> + </tr> + <tr> + <td id="L317" class="blob-num js-line-number" data-line-number="317"></td> + <td id="LC317" class="blob-code blob-code-inner js-file-line">:1013C00064018091E8008B7753C08091E701813AF6
</td> + </tr> + <tr> + <td id="L318" class="blob-num js-line-number" data-line-number="318"></td> + <td id="LC318" class="blob-code blob-code-inner js-file-line">:1013D00009F052C08091EB019091EC01892B09F04A
</td> + </tr> + <tr> + <td id="L319" class="blob-num js-line-number" data-line-number="319"></td> + <td id="LC319" class="blob-code blob-code-inner js-file-line">:1013E0004BC08091E800877F8093E8008091E800FF
</td> + </tr> + <tr> + <td id="L320" class="blob-num js-line-number" data-line-number="320"></td> + <td id="LC320" class="blob-code blob-code-inner js-file-line">:1013F00080FFFCCF80910C0136C08091E7018132E3
</td> + </tr> + <tr> + <td id="L321" class="blob-num js-line-number" data-line-number="321"></td> + <td id="LC321" class="blob-code blob-code-inner js-file-line">:10140000D9F58091EB019091EC01892BA9F58091A0
</td> + </tr> + <tr> + <td id="L322" class="blob-num js-line-number" data-line-number="322"></td> + <td id="LC322" class="blob-code blob-code-inner js-file-line">:10141000E800877F8093E8000E94300C8091E9010A
</td> + </tr> + <tr> + <td id="L323" class="blob-num js-line-number" data-line-number="323"></td> + <td id="LC323" class="blob-code blob-code-inner js-file-line">:1014200080930C010C9414158091E701813221F511
</td> + </tr> + <tr> + <td id="L324" class="blob-num js-line-number" data-line-number="324"></td> + <td id="LC324" class="blob-code blob-code-inner js-file-line">:101430008091E800877F8093E8000E94300C8091C3
</td> + </tr> + <tr> + <td id="L325" class="blob-num js-line-number" data-line-number="325"></td> + <td id="LC325" class="blob-code blob-code-inner js-file-line">:10144000EA018093650108958091E701813AA1F452
</td> + </tr> + <tr> + <td id="L326" class="blob-num js-line-number" data-line-number="326"></td> + <td id="LC326" class="blob-code blob-code-inner js-file-line">:101450008091E800877F8093E8008091E80080FF1A
</td> + </tr> + <tr> + <td id="L327" class="blob-num js-line-number" data-line-number="327"></td> + <td id="LC327" class="blob-code blob-code-inner js-file-line">:10146000FCCF809165018093F1008091E8008E7738
</td> + </tr> + <tr> + <td id="L328" class="blob-num js-line-number" data-line-number="328"></td> + <td id="LC328" class="blob-code blob-code-inner js-file-line">:101470008093E8000C94300C089584B7877F84BF74
</td> + </tr> + <tr> + <td id="L329" class="blob-num js-line-number" data-line-number="329"></td> + <td id="LC329" class="blob-code blob-code-inner js-file-line">:101480000FB6F894A8958091600088618093600001
</td> + </tr> + <tr> + <td id="L330" class="blob-num js-line-number" data-line-number="330"></td> + <td id="LC330" class="blob-code blob-code-inner js-file-line">:10149000109260000FBE90E080E80FB6F894809341
</td> + </tr> + <tr> + <td id="L331" class="blob-num js-line-number" data-line-number="331"></td> + <td id="LC331" class="blob-code blob-code-inner js-file-line">:1014A0006100909361000FBE0E94D30F0E94810CD7
</td> + </tr> + <tr> + <td id="L332" class="blob-num js-line-number" data-line-number="332"></td> + <td id="LC332" class="blob-code blob-code-inner js-file-line">:1014B0000E94DE0C8091E20084608093E2007894C8
</td> + </tr> + <tr> + <td id="L333" class="blob-num js-line-number" data-line-number="333"></td> + <td id="LC333" class="blob-code blob-code-inner js-file-line">:1014C0000E94640F0E94D50F82E091E00E947F0F7E
</td> + </tr> + <tr> + <td id="L334" class="blob-num js-line-number" data-line-number="334"></td> + <td id="LC334" class="blob-code blob-code-inner js-file-line">:1014D0000E9475228091E601853069F40E94A31B69
</td> + </tr> + <tr> + <td id="L335" class="blob-num js-line-number" data-line-number="335"></td> + <td id="LC335" class="blob-code blob-code-inner js-file-line">:1014E0008091E4018823B1F30E94D11B882391F3FA
</td> + </tr> + <tr> + <td id="L336" class="blob-num js-line-number" data-line-number="336"></td> + <td id="LC336" class="blob-code blob-code-inner js-file-line">:1014F0000E94D60AEFCF0E94DB0FECCF292F3327B3
</td> + </tr> + <tr> + <td id="L337" class="blob-num js-line-number" data-line-number="337"></td> + <td id="LC337" class="blob-code blob-code-inner js-file-line">:1015000023303105C9F064F42130310581F02230F7
</td> + </tr> + <tr> + <td id="L338" class="blob-num js-line-number" data-line-number="338"></td> + <td id="LC338" class="blob-code blob-code-inner js-file-line">:10151000310509F043C08DE690E020E133E042C0A0
</td> + </tr> + <tr> + <td id="L339" class="blob-num js-line-number" data-line-number="339"></td> + <td id="LC339" class="blob-code blob-code-inner js-file-line">:1015200021323105F1F02232310541F137C082E13B
</td> + </tr> + <tr> + <td id="L340" class="blob-num js-line-number" data-line-number="340"></td> + <td id="LC340" class="blob-code blob-code-inner js-file-line">:1015300090E02DE733E036C099278130910541F0E6
</td> + </tr> + <tr> + <td id="L341" class="blob-num js-line-number" data-line-number="341"></td> + <td id="LC341" class="blob-code blob-code-inner js-file-line">:101540008230910541F0892B49F5ECE0F3E005C0CC
</td> + </tr> + <tr> + <td id="L342" class="blob-num js-line-number" data-line-number="342"></td> + <td id="LC342" class="blob-code blob-code-inner js-file-line">:10155000E4EFF2E002C0ECEDF2E0849190E09F0154
</td> + </tr> + <tr> + <td id="L343" class="blob-num js-line-number" data-line-number="343"></td> + <td id="LC343" class="blob-code blob-code-inner js-file-line">:1015600021C06430D8F4E62FF0E0EE0FFF1FEE5DEF
</td> + </tr> + <tr> + <td id="L344" class="blob-num js-line-number" data-line-number="344"></td> + <td id="LC344" class="blob-code blob-code-inner js-file-line">:10157000FE4F2081318189E090E014C0643070F426
</td> + </tr> + <tr> + <td id="L345" class="blob-num js-line-number" data-line-number="345"></td> + <td id="LC345" class="blob-code blob-code-inner js-file-line">:1015800070E0FB01EE0FFF1FE65EFE4F2081318110
</td> + </tr> + <tr> + <td id="L346" class="blob-num js-line-number" data-line-number="346"></td> + <td id="LC346" class="blob-code blob-code-inner js-file-line">:10159000FB01EA5EFE4F808190E004C080E090E0B5
</td> + </tr> + <tr> + <td id="L347" class="blob-num js-line-number" data-line-number="347"></td> + <td id="LC347" class="blob-code blob-code-inner js-file-line">:1015A00020E030E0FA0131832083089580E189BD95
</td> + </tr> + <tr> + <td id="L348" class="blob-num js-line-number" data-line-number="348"></td> + <td id="LC348" class="blob-code blob-code-inner js-file-line">:1015B00082E189BD09B400FEFDCF8091D8008F7D06
</td> + </tr> + <tr> + <td id="L349" class="blob-num js-line-number" data-line-number="349"></td> + <td id="LC349" class="blob-code blob-code-inner js-file-line">:1015C0008093D8008091E00082608093E000809159
</td> + </tr> + <tr> + <td id="L350" class="blob-num js-line-number" data-line-number="350"></td> + <td id="LC350" class="blob-code blob-code-inner js-file-line">:1015D000E00081FDFCCF0895CF92DF92EF92FF9261
</td> + </tr> + <tr> + <td id="L351" class="blob-num js-line-number" data-line-number="351"></td> + <td id="LC351" class="blob-code blob-code-inner js-file-line">:1015E0000F931F93CF93DF93EC018B016A010E944D
</td> + </tr> + <tr> + <td id="L352" class="blob-num js-line-number" data-line-number="352"></td> + <td id="LC352" class="blob-code blob-code-inner js-file-line">:1015F0004F0C811133C0C114D10439F0F601808140
</td> + </tr> + <tr> + <td id="L353" class="blob-num js-line-number" data-line-number="353"></td> + <td id="LC353" class="blob-code blob-code-inner js-file-line">:101600009181081B190BC80FD91FE12CF12C011572
</td> + </tr> + <tr> + <td id="L354" class="blob-num js-line-number" data-line-number="354"></td> + <td id="LC354" class="blob-code blob-code-inner js-file-line">:10161000110519F18091E80085FD16C08091E80060
</td> + </tr> + <tr> + <td id="L355" class="blob-num js-line-number" data-line-number="355"></td> + <td id="LC355" class="blob-code blob-code-inner js-file-line">:101620008E778093E800C114D10449F0F6018081DF
</td> + </tr> + <tr> + <td id="L356" class="blob-num js-line-number" data-line-number="356"></td> + <td id="LC356" class="blob-code blob-code-inner js-file-line">:101630009181E80EF91EF182E08285E00FC00E94E0
</td> + </tr> + <tr> + <td id="L357" class="blob-num js-line-number" data-line-number="357"></td> + <td id="LC357" class="blob-code blob-code-inner js-file-line">:101640004F0C882321F30AC089918093F100015047
</td> + </tr> + <tr> + <td id="L358" class="blob-num js-line-number" data-line-number="358"></td> + <td id="LC358" class="blob-code blob-code-inner js-file-line">:101650001109FFEFEF1AFF0ADACF80E0DF91CF9197
</td> + </tr> + <tr> + <td id="L359" class="blob-num js-line-number" data-line-number="359"></td> + <td id="LC359" class="blob-code blob-code-inner js-file-line">:101660001F910F91FF90EF90DF90CF900895209100
</td> + </tr> + <tr> + <td id="L360" class="blob-num js-line-number" data-line-number="360"></td> + <td id="LC360" class="blob-code blob-code-inner js-file-line">:10167000ED013091EE012617370748F0611571052D
</td> + </tr> + <tr> + <td id="L361" class="blob-num js-line-number" data-line-number="361"></td> + <td id="LC361" class="blob-code blob-code-inner js-file-line">:1016800039F42091E8002E772093E80001C0B901D9
</td> + </tr> + <tr> + <td id="L362" class="blob-num js-line-number" data-line-number="362"></td> + <td id="LC362" class="blob-code blob-code-inner js-file-line">:1016900040E061157105A9F12091E601222309F4CA
</td> + </tr> + <tr> + <td id="L363" class="blob-num js-line-number" data-line-number="363"></td> + <td id="LC363" class="blob-code blob-code-inner js-file-line">:1016A00043C0253009F442C02091E80023FD40C02A
</td> + </tr> + <tr> + <td id="L364" class="blob-num js-line-number" data-line-number="364"></td> + <td id="LC364" class="blob-code blob-code-inner js-file-line">:1016B0002091E80022FD32C02091E80020FFE9CF10
</td> + </tr> + <tr> + <td id="L365" class="blob-num js-line-number" data-line-number="365"></td> + <td id="LC365" class="blob-code blob-code-inner js-file-line">:1016C0004091F3002091F20030E0342BFC01CF0177
</td> + </tr> + <tr> + <td id="L366" class="blob-num js-line-number" data-line-number="366"></td> + <td id="LC366" class="blob-code blob-code-inner js-file-line">:1016D0006115710559F02830310540F481918093EE
</td> + </tr> + <tr> + <td id="L367" class="blob-num js-line-number" data-line-number="367"></td> + <td id="LC367" class="blob-code blob-code-inner js-file-line">:1016E000F100615071092F5F3F4FF1CF41E0283089
</td> + </tr> + <tr> + <td id="L368" class="blob-num js-line-number" data-line-number="368"></td> + <td id="LC368" class="blob-code blob-code-inner js-file-line">:1016F000310509F040E02091E8002E772093E800C2
</td> + </tr> + <tr> + <td id="L369" class="blob-num js-line-number" data-line-number="369"></td> + <td id="LC369" class="blob-code blob-code-inner js-file-line">:10170000C8CF4111C9CF0AC08091E601882361F09A
</td> + </tr> + <tr> + <td id="L370" class="blob-num js-line-number" data-line-number="370"></td> + <td id="LC370" class="blob-code blob-code-inner js-file-line">:10171000853061F08091E80083FD0AC08091E80087
</td> + </tr> + <tr> + <td id="L371" class="blob-num js-line-number" data-line-number="371"></td> + <td id="LC371" class="blob-code blob-code-inner js-file-line">:1017200082FFF2CF80E0089582E0089583E008957B
</td> + </tr> + <tr> + <td id="L372" class="blob-num js-line-number" data-line-number="372"></td> + <td id="LC372" class="blob-code blob-code-inner js-file-line">:1017300081E008952091ED013091EE0126173707E1
</td> + </tr> + <tr> + <td id="L373" class="blob-num js-line-number" data-line-number="373"></td> + <td id="LC373" class="blob-code blob-code-inner js-file-line">:1017400048F06115710539F42091E8002E77209357
</td> + </tr> + <tr> + <td id="L374" class="blob-num js-line-number" data-line-number="374"></td> + <td id="LC374" class="blob-code blob-code-inner js-file-line">:10175000E80001C0B901FC0120E06115710591F1BB
</td> + </tr> + <tr> + <td id="L375" class="blob-num js-line-number" data-line-number="375"></td> + <td id="LC375" class="blob-code blob-code-inner js-file-line">:101760008091E601882309F440C0853009F43FC028
</td> + </tr> + <tr> + <td id="L376" class="blob-num js-line-number" data-line-number="376"></td> + <td id="LC376" class="blob-code blob-code-inner js-file-line">:101770008091E80083FD3DC08091E80082FD2FC08C
</td> + </tr> + <tr> + <td id="L377" class="blob-num js-line-number" data-line-number="377"></td> + <td id="LC377" class="blob-code blob-code-inner js-file-line">:101780008091E80080FFE9CF2091F3008091F20082
</td> + </tr> + <tr> + <td id="L378" class="blob-num js-line-number" data-line-number="378"></td> + <td id="LC378" class="blob-code blob-code-inner js-file-line">:1017900090E0922B6115710559F08830910540F465
</td> + </tr> + <tr> + <td id="L379" class="blob-num js-line-number" data-line-number="379"></td> + <td id="LC379" class="blob-code blob-code-inner js-file-line">:1017A00024912093F1003196615071090196F2CF96
</td> + </tr> + <tr> + <td id="L380" class="blob-num js-line-number" data-line-number="380"></td> + <td id="LC380" class="blob-code blob-code-inner js-file-line">:1017B00021E0089709F020E08091E8008E7780937F
</td> + </tr> + <tr> + <td id="L381" class="blob-num js-line-number" data-line-number="381"></td> + <td id="LC381" class="blob-code blob-code-inner js-file-line">:1017C000E800CBCF2111CCCF0AC08091E60188235D
</td> + </tr> + <tr> + <td id="L382" class="blob-num js-line-number" data-line-number="382"></td> + <td id="LC382" class="blob-code blob-code-inner js-file-line">:1017D00061F0853061F08091E80083FD0AC080915E
</td> + </tr> + <tr> + <td id="L383" class="blob-num js-line-number" data-line-number="383"></td> + <td id="LC383" class="blob-code blob-code-inner js-file-line">:1017E000E80082FFF2CF80E0089582E0089583E070
</td> + </tr> + <tr> + <td id="L384" class="blob-num js-line-number" data-line-number="384"></td> + <td id="LC384" class="blob-code blob-code-inner js-file-line">:1017F000089581E00895982F973058F59093E90067
</td> + </tr> + <tr> + <td id="L385" class="blob-num js-line-number" data-line-number="385"></td> + <td id="LC385" class="blob-code blob-code-inner js-file-line">:10180000981739F07091EC002091ED005091F000A4
</td> + </tr> + <tr> + <td id="L386" class="blob-num js-line-number" data-line-number="386"></td> + <td id="LC386" class="blob-code blob-code-inner js-file-line">:1018100003C0242F762F50E021FF19C03091EB0038
</td> + </tr> + <tr> + <td id="L387" class="blob-num js-line-number" data-line-number="387"></td> + <td id="LC387" class="blob-code blob-code-inner js-file-line">:101820003E7F3093EB003091ED003D7F3093ED0033
</td> + </tr> + <tr> + <td id="L388" class="blob-num js-line-number" data-line-number="388"></td> + <td id="LC388" class="blob-code blob-code-inner js-file-line">:101830003091EB0031603093EB007093EC0020931B
</td> + </tr> + <tr> + <td id="L389" class="blob-num js-line-number" data-line-number="389"></td> + <td id="LC389" class="blob-code blob-code-inner js-file-line">:10184000ED005093F0002091EE0027FF07C09F5F4E
</td> + </tr> + <tr> + <td id="L390" class="blob-num js-line-number" data-line-number="390"></td> + <td id="LC390" class="blob-code blob-code-inner js-file-line">:10185000D3CF8F708093E90081E0089580E00895F0
</td> + </tr> + <tr> + <td id="L391" class="blob-num js-line-number" data-line-number="391"></td> + <td id="LC391" class="blob-code blob-code-inner js-file-line">:101860008091E70187FF11C08091E80082FD05C0EB
</td> + </tr> + <tr> + <td id="L392" class="blob-num js-line-number" data-line-number="392"></td> + <td id="LC392" class="blob-code blob-code-inner js-file-line">:101870008091E6018111F8CF11C08091E8008B774B
</td> + </tr> + <tr> + <td id="L393" class="blob-num js-line-number" data-line-number="393"></td> + <td id="LC393" class="blob-code blob-code-inner js-file-line">:101880000BC08091E601882349F08091E80080FF39
</td> + </tr> + <tr> + <td id="L394" class="blob-num js-line-number" data-line-number="394"></td> + <td id="LC394" class="blob-code blob-code-inner js-file-line">:10189000F8CF8091E8008E778093E800089520913A
</td> + </tr> + <tr> + <td id="L395" class="blob-num js-line-number" data-line-number="395"></td> + <td id="LC395" class="blob-code blob-code-inner js-file-line">:1018A000E4003091E50095E64091EC00842F8170D2
</td> + </tr> + <tr> + <td id="L396" class="blob-num js-line-number" data-line-number="396"></td> + <td id="LC396" class="blob-code blob-code-inner js-file-line">:1018B00040FF22C08091E80080FD1CC08091E601BD
</td> + </tr> + <tr> + <td id="L397" class="blob-num js-line-number" data-line-number="397"></td> + <td id="LC397" class="blob-code blob-code-inner js-file-line">:1018C000882391F0853091F08091EB0085FD10C068
</td> + </tr> + <tr> + <td id="L398" class="blob-num js-line-number" data-line-number="398"></td> + <td id="LC398" class="blob-code blob-code-inner js-file-line">:1018D0004091E4005091E5004217530729F39A0123
</td> + </tr> + <tr> + <td id="L399" class="blob-num js-line-number" data-line-number="399"></td> + <td id="LC399" class="blob-code blob-code-inner js-file-line">:1018E000915011F784E0089582E0089583E008950F
</td> + </tr> + <tr> + <td id="L400" class="blob-num js-line-number" data-line-number="400"></td> + <td id="LC400" class="blob-code blob-code-inner js-file-line">:1018F00081E0089580E008954091E80042FFDECF46
</td> + </tr> + <tr> + <td id="L401" class="blob-num js-line-number" data-line-number="401"></td> + <td id="LC401" class="blob-code blob-code-inner js-file-line">:1019000008950E94EF0C0E94F70CE0EEF0E0808159
</td> + </tr> + <tr> + <td id="L402" class="blob-num js-line-number" data-line-number="402"></td> + <td id="LC402" class="blob-code blob-code-inner js-file-line">:1019100081608083E8EDF0E080818F77808319BC5F
</td> + </tr> + <tr> + <td id="L403" class="blob-num js-line-number" data-line-number="403"></td> + <td id="LC403" class="blob-code blob-code-inner js-file-line">:10192000A7EDB0E08C918E7F8C9380818F7E808339
</td> + </tr> + <tr> + <td id="L404" class="blob-num js-line-number" data-line-number="404"></td> + <td id="LC404" class="blob-code blob-code-inner js-file-line">:101930001092E50108950F931F93CF93DF930E94B8
</td> + </tr> + <tr> + <td id="L405" class="blob-num js-line-number" data-line-number="405"></td> + <td id="LC405" class="blob-code blob-code-inner js-file-line">:10194000EF0C0E94F70CC8EDD0E088818F77888378
</td> + </tr> + <tr> + <td id="L406" class="blob-num js-line-number" data-line-number="406"></td> + <td id="LC406" class="blob-code blob-code-inner js-file-line">:1019500088818068888388818F7D888319BC1092F4
</td> + </tr> + <tr> + <td id="L407" class="blob-num js-line-number" data-line-number="407"></td> + <td id="LC407" class="blob-code blob-code-inner js-file-line">:10196000E6011092E2011092E4011092E30100EE10
</td> + </tr> + <tr> + <td id="L408" class="blob-num js-line-number" data-line-number="408"></td> + <td id="LC408" class="blob-code blob-code-inner js-file-line">:1019700010E0F80180818B7F80838881816088837B
</td> + </tr> + <tr> + <td id="L409" class="blob-num js-line-number" data-line-number="409"></td> + <td id="LC409" class="blob-code blob-code-inner js-file-line">:1019800042E060E080E00E94FB0BE1EEF0E080814D
</td> + </tr> + <tr> + <td id="L410" class="blob-num js-line-number" data-line-number="410"></td> + <td id="LC410" class="blob-code blob-code-inner js-file-line">:101990008E7F8083E2EEF0E08081816080838081B1
</td> + </tr> + <tr> + <td id="L411" class="blob-num js-line-number" data-line-number="411"></td> + <td id="LC411" class="blob-code blob-code-inner js-file-line">:1019A00088608083F80180818E7F80838881806158
</td> + </tr> + <tr> + <td id="L412" class="blob-num js-line-number" data-line-number="412"></td> + <td id="LC412" class="blob-code blob-code-inner js-file-line">:1019B0008883DF91CF911F910F910895E8EDF0E0BA
</td> + </tr> + <tr> + <td id="L413" class="blob-num js-line-number" data-line-number="413"></td> + <td id="LC413" class="blob-code blob-code-inner js-file-line">:1019C00080818F7E8083E7EDF0E08081816080837D
</td> + </tr> + <tr> + <td id="L414" class="blob-num js-line-number" data-line-number="414"></td> + <td id="LC414" class="blob-code blob-code-inner js-file-line">:1019D00084E082BF81E08093E5010C949B0CE8EDEC
</td> + </tr> + <tr> + <td id="L415" class="blob-num js-line-number" data-line-number="415"></td> + <td id="LC415" class="blob-code blob-code-inner js-file-line">:1019E000F0E080818E7F80831092E2000895109253
</td> + </tr> + <tr> + <td id="L416" class="blob-num js-line-number" data-line-number="416"></td> + <td id="LC416" class="blob-code blob-code-inner js-file-line">:1019F000DA001092E10008951F920F920FB60F9235
</td> + </tr> + <tr> + <td id="L417" class="blob-num js-line-number" data-line-number="417"></td> + <td id="LC417" class="blob-code blob-code-inner js-file-line">:101A000011242F933F934F935F936F937F938F9303
</td> + </tr> + <tr> + <td id="L418" class="blob-num js-line-number" data-line-number="418"></td> + <td id="LC418" class="blob-code blob-code-inner js-file-line">:101A10009F93AF93BF93EF93FF938091E10082FF79
</td> + </tr> + <tr> + <td id="L419" class="blob-num js-line-number" data-line-number="419"></td> + <td id="LC419" class="blob-code blob-code-inner js-file-line">:101A20000BC08091E20082FF07C08091E1008B7FB4
</td> + </tr> + <tr> + <td id="L420" class="blob-num js-line-number" data-line-number="420"></td> + <td id="LC420" class="blob-code blob-code-inner js-file-line">:101A30008093E1000E94630F8091DA0080FF1FC055
</td> + </tr> + <tr> + <td id="L421" class="blob-num js-line-number" data-line-number="421"></td> + <td id="LC421" class="blob-code blob-code-inner js-file-line">:101A40008091D80080FF1BC08091DA008E7F809348
</td> + </tr> + <tr> + <td id="L422" class="blob-num js-line-number" data-line-number="422"></td> + <td id="LC422" class="blob-code blob-code-inner js-file-line">:101A5000DA008091D90080FF0DC080E189BD82E16C
</td> + </tr> + <tr> + <td id="L423" class="blob-num js-line-number" data-line-number="423"></td> + <td id="LC423" class="blob-code blob-code-inner js-file-line">:101A600089BD09B400FEFDCF81E08093E6010E94AC
</td> + </tr> + <tr> + <td id="L424" class="blob-num js-line-number" data-line-number="424"></td> + <td id="LC424" class="blob-code blob-code-inner js-file-line">:101A70005B0905C019BC1092E6010E9469098091BA
</td> + </tr> + <tr> + <td id="L425" class="blob-num js-line-number" data-line-number="425"></td> + <td id="LC425" class="blob-code blob-code-inner js-file-line">:101A8000E10080FF19C08091E20080FF15C08091C5
</td> + </tr> + <tr> + <td id="L426" class="blob-num js-line-number" data-line-number="426"></td> + <td id="LC426" class="blob-code blob-code-inner js-file-line">:101A9000E2008E7F8093E2008091E200806180937B
</td> + </tr> + <tr> + <td id="L427" class="blob-num js-line-number" data-line-number="427"></td> + <td id="LC427" class="blob-code blob-code-inner js-file-line">:101AA000E2008091D80080628093D80019BC85E064
</td> + </tr> + <tr> + <td id="L428" class="blob-num js-line-number" data-line-number="428"></td> + <td id="LC428" class="blob-code blob-code-inner js-file-line">:101AB0008093E6010E946D098091E10084FF30C0AF
</td> + </tr> + <tr> + <td id="L429" class="blob-num js-line-number" data-line-number="429"></td> + <td id="LC429" class="blob-code blob-code-inner js-file-line">:101AC0008091E20084FF2CC080E189BD82E189BD64
</td> + </tr> + <tr> + <td id="L430" class="blob-num js-line-number" data-line-number="430"></td> + <td id="LC430" class="blob-code blob-code-inner js-file-line">:101AD00009B400FEFDCF8091D8008F7D8093D8009F
</td> + </tr> + <tr> + <td id="L431" class="blob-num js-line-number" data-line-number="431"></td> + <td id="LC431" class="blob-code blob-code-inner js-file-line">:101AE0008091E1008F7E8093E1008091E2008F7E03
</td> + </tr> + <tr> + <td id="L432" class="blob-num js-line-number" data-line-number="432"></td> + <td id="LC432" class="blob-code blob-code-inner js-file-line">:101AF0008093E2008091E20081608093E200809117
</td> + </tr> + <tr> + <td id="L433" class="blob-num js-line-number" data-line-number="433"></td> + <td id="LC433" class="blob-code blob-code-inner js-file-line">:101B0000E201882311F084E007C08091E30087FDA3
</td> + </tr> + <tr> + <td id="L434" class="blob-num js-line-number" data-line-number="434"></td> + <td id="LC434" class="blob-code blob-code-inner js-file-line">:101B100002C081E001C083E08093E6010E946F096A
</td> + </tr> + <tr> + <td id="L435" class="blob-num js-line-number" data-line-number="435"></td> + <td id="LC435" class="blob-code blob-code-inner js-file-line">:101B20008091E10083FF29C08091E20083FF25C0FE
</td> + </tr> + <tr> + <td id="L436" class="blob-num js-line-number" data-line-number="436"></td> + <td id="LC436" class="blob-code blob-code-inner js-file-line">:101B30008091E100877F8093E10082E08093E6015D
</td> + </tr> + <tr> + <td id="L437" class="blob-num js-line-number" data-line-number="437"></td> + <td id="LC437" class="blob-code blob-code-inner js-file-line">:101B40001092E2018091E1008E7F8093E10080910C
</td> + </tr> + <tr> + <td id="L438" class="blob-num js-line-number" data-line-number="438"></td> + <td id="LC438" class="blob-code blob-code-inner js-file-line">:101B5000E2008E7F8093E2008091E20080618093BA
</td> + </tr> + <tr> + <td id="L439" class="blob-num js-line-number" data-line-number="439"></td> + <td id="LC439" class="blob-code blob-code-inner js-file-line">:101B6000E20042E060E080E00E94FB0B8091F00028
</td> + </tr> + <tr> + <td id="L440" class="blob-num js-line-number" data-line-number="440"></td> + <td id="LC440" class="blob-code blob-code-inner js-file-line">:101B700088608093F0000E946C09FF91EF91BF9103
</td> + </tr> + <tr> + <td id="L441" class="blob-num js-line-number" data-line-number="441"></td> + <td id="LC441" class="blob-code blob-code-inner js-file-line">:101B8000AF919F918F917F916F915F914F913F9115
</td> + </tr> + <tr> + <td id="L442" class="blob-num js-line-number" data-line-number="442"></td> + <td id="LC442" class="blob-code blob-code-inner js-file-line">:101B90002F910F900FBE0F901F9018951F920F92CC
</td> + </tr> + <tr> + <td id="L443" class="blob-num js-line-number" data-line-number="443"></td> + <td id="LC443" class="blob-code blob-code-inner js-file-line">:101BA0000FB60F9211242F933F934F935F936F9330
</td> + </tr> + <tr> + <td id="L444" class="blob-num js-line-number" data-line-number="444"></td> + <td id="LC444" class="blob-code blob-code-inner js-file-line">:101BB0007F938F939F93AF93BF93CF93DF93EF93D5
</td> + </tr> + <tr> + <td id="L445" class="blob-num js-line-number" data-line-number="445"></td> + <td id="LC445" class="blob-code blob-code-inner js-file-line">:101BC000FF93C091E900CF708091EC00D82FD170C5
</td> + </tr> + <tr> + <td id="L446" class="blob-num js-line-number" data-line-number="446"></td> + <td id="LC446" class="blob-code blob-code-inner js-file-line">:101BD00080FDD0E81092E9008091F000877F80932B
</td> + </tr> + <tr> + <td id="L447" class="blob-num js-line-number" data-line-number="447"></td> + <td id="LC447" class="blob-code blob-code-inner js-file-line">:101BE000F00078940E94120E1092E9008091F000AB
</td> + </tr> + <tr> + <td id="L448" class="blob-num js-line-number" data-line-number="448"></td> + <td id="LC448" class="blob-code blob-code-inner js-file-line">:101BF00088608093F000CD2BCF70C093E900FF91F7
</td> + </tr> + <tr> + <td id="L449" class="blob-num js-line-number" data-line-number="449"></td> + <td id="LC449" class="blob-code blob-code-inner js-file-line">:101C0000EF91DF91CF91BF91AF919F918F917F9194
</td> + </tr> + <tr> + <td id="L450" class="blob-num js-line-number" data-line-number="450"></td> + <td id="LC450" class="blob-code blob-code-inner js-file-line">:101C10006F915F914F913F912F910F900FBE0F9059
</td> + </tr> + <tr> + <td id="L451" class="blob-num js-line-number" data-line-number="451"></td> + <td id="LC451" class="blob-code blob-code-inner js-file-line">:101C20001F9018951F93CF93DF93CDB7DEB7AA9778
</td> + </tr> + <tr> + <td id="L452" class="blob-num js-line-number" data-line-number="452"></td> + <td id="LC452" class="blob-code blob-code-inner js-file-line">:101C30000FB6F894DEBF0FBECDBFE7EEF1E088E04F
</td> + </tr> + <tr> + <td id="L453" class="blob-num js-line-number" data-line-number="453"></td> + <td id="LC453" class="blob-code blob-code-inner js-file-line">:101C40008E0F9091F10091938E13FBCF0E948B0920
</td> + </tr> + <tr> + <td id="L454" class="blob-num js-line-number" data-line-number="454"></td> + <td id="LC454" class="blob-code blob-code-inner js-file-line">:101C50008091E80083FF1FC18091E7019091E80126
</td> + </tr> + <tr> + <td id="L455" class="blob-num js-line-number" data-line-number="455"></td> + <td id="LC455" class="blob-code blob-code-inner js-file-line">:101C6000492F50E04A30510508F015C1FA01EA5AEF
</td> + </tr> + <tr> + <td id="L456" class="blob-num js-line-number" data-line-number="456"></td> + <td id="LC456" class="blob-code blob-code-inner js-file-line">:101C7000FF4F0C941E24803881F0823809F00BC18C
</td> + </tr> + <tr> + <td id="L457" class="blob-num js-line-number" data-line-number="457"></td> + <td id="LC457" class="blob-code blob-code-inner js-file-line">:101C80008091EB018F708093E9008091EB0085FBE0
</td> + </tr> + <tr> + <td id="L458" class="blob-num js-line-number" data-line-number="458"></td> + <td id="LC458" class="blob-code blob-code-inner js-file-line">:101C9000882780F91092E90006C08091E3019091B5
</td> + </tr> + <tr> + <td id="L459" class="blob-num js-line-number" data-line-number="459"></td> + <td id="LC459" class="blob-code blob-code-inner js-file-line">:101CA000E401911182609091E800977F9093E800A1
</td> + </tr> + <tr> + <td id="L460" class="blob-num js-line-number" data-line-number="460"></td> + <td id="LC460" class="blob-code blob-code-inner js-file-line">:101CB0008093F1001092F100C8C0282F2D7F09F009
</td> + </tr> + <tr> + <td id="L461" class="blob-num js-line-number" data-line-number="461"></td> + <td id="LC461" class="blob-code blob-code-inner js-file-line">:101CC000EAC0882319F0823061F0E5C08091E90113
</td> + </tr> + <tr> + <td id="L462" class="blob-num js-line-number" data-line-number="462"></td> + <td id="LC462" class="blob-code blob-code-inner js-file-line">:101CD000813009F0E0C0933009F080E08093E401A6
</td> + </tr> + <tr> + <td id="L463" class="blob-num js-line-number" data-line-number="463"></td> + <td id="LC463" class="blob-code blob-code-inner js-file-line">:101CE0002BC08091E901811127C08091EB018F7099
</td> + </tr> + <tr> + <td id="L464" class="blob-num js-line-number" data-line-number="464"></td> + <td id="LC464" class="blob-code blob-code-inner js-file-line">:101CF00009F4D1C08093E9002091EB0020FF1CC0C3
</td> + </tr> + <tr> + <td id="L465" class="blob-num js-line-number" data-line-number="465"></td> + <td id="LC465" class="blob-code blob-code-inner js-file-line">:101D0000933021F48091EB00806214C09091EB003D
</td> + </tr> + <tr> + <td id="L466" class="blob-num js-line-number" data-line-number="466"></td> + <td id="LC466" class="blob-code blob-code-inner js-file-line">:101D100090619093EB0021E030E0A90102C0440FF4
</td> + </tr> + <tr> + <td id="L467" class="blob-num js-line-number" data-line-number="467"></td> + <td id="LC467" class="blob-code blob-code-inner js-file-line">:101D2000551F8A95E2F74093EA001092EA008091ED
</td> + </tr> + <tr> + <td id="L468" class="blob-num js-line-number" data-line-number="468"></td> + <td id="LC468" class="blob-code blob-code-inner js-file-line">:101D3000EB0088608093EB001092E9008091E8004E
</td> + </tr> + <tr> + <td id="L469" class="blob-num js-line-number" data-line-number="469"></td> + <td id="LC469" class="blob-code blob-code-inner js-file-line">:101D4000877F86C08111A7C01091E9011F7780911C
</td> + </tr> + <tr> + <td id="L470" class="blob-num js-line-number" data-line-number="470"></td> + <td id="LC470" class="blob-code blob-code-inner js-file-line">:101D5000E3008078812B8093E3008091E800877F07
</td> + </tr> + <tr> + <td id="L471" class="blob-num js-line-number" data-line-number="471"></td> + <td id="LC471" class="blob-code blob-code-inner js-file-line">:101D60008093E8000E94300C8091E80080FFFCCF57
</td> + </tr> + <tr> + <td id="L472" class="blob-num js-line-number" data-line-number="472"></td> + <td id="LC472" class="blob-code blob-code-inner js-file-line">:101D70008091E30080688093E300111102C082E04B
</td> + </tr> + <tr> + <td id="L473" class="blob-num js-line-number" data-line-number="473"></td> + <td id="LC473" class="blob-code blob-code-inner js-file-line">:101D800001C083E08093E60186C08058823008F06D
</td> + </tr> + <tr> + <td id="L474" class="blob-num js-line-number" data-line-number="474"></td> + <td id="LC474" class="blob-code blob-code-inner js-file-line">:101D900082C08091E9019091EA018C3D53E0950762
</td> + </tr> + <tr> + <td id="L475" class="blob-num js-line-number" data-line-number="475"></td> + <td id="LC475" class="blob-code blob-code-inner js-file-line">:101DA00079F583E08A838AE289834FB7F894DE016C
</td> + </tr> + <tr> + <td id="L476" class="blob-num js-line-number" data-line-number="476"></td> + <td id="LC476" class="blob-code blob-code-inner js-file-line">:101DB000139620E03EE051E2E32FF0E0509357000D
</td> + </tr> + <tr> + <td id="L477" class="blob-num js-line-number" data-line-number="477"></td> + <td id="LC477" class="blob-code blob-code-inner js-file-line">:101DC000E49120FF03C0E295EF703F5FEF708E2F2C
</td> + </tr> + <tr> + <td id="L478" class="blob-num js-line-number" data-line-number="478"></td> + <td id="LC478" class="blob-code blob-code-inner js-file-line">:101DD00090E0EA3010F0C79601C0C0968D939D93B5
</td> + </tr> + <tr> + <td id="L479" class="blob-num js-line-number" data-line-number="479"></td> + <td id="LC479" class="blob-code blob-code-inner js-file-line">:101DE0002F5F243149F74FBF8091E800877F8093B0
</td> + </tr> + <tr> + <td id="L480" class="blob-num js-line-number" data-line-number="480"></td> + <td id="LC480" class="blob-code blob-code-inner js-file-line">:101DF000E8006AE270E0CE0101960E94370B14C041
</td> + </tr> + <tr> + <td id="L481" class="blob-num js-line-number" data-line-number="481"></td> + <td id="LC481" class="blob-code blob-code-inner js-file-line">:101E0000AE014F5F5F4F6091EB010E947E0ABC0103
</td> + </tr> + <tr> + <td id="L482" class="blob-num js-line-number" data-line-number="482"></td> + <td id="LC482" class="blob-code blob-code-inner js-file-line">:101E1000892B09F440C09091E800977F9093E800E7
</td> + </tr> + <tr> + <td id="L483" class="blob-num js-line-number" data-line-number="483"></td> + <td id="LC483" class="blob-code blob-code-inner js-file-line">:101E200089819A810E949A0B8091E8008B77809338
</td> + </tr> + <tr> + <td id="L484" class="blob-num js-line-number" data-line-number="484"></td> + <td id="LC484" class="blob-code blob-code-inner js-file-line">:101E3000E80031C0803879F58091E800877F809391
</td> + </tr> + <tr> + <td id="L485" class="blob-num js-line-number" data-line-number="485"></td> + <td id="LC485" class="blob-code blob-code-inner js-file-line">:101E4000E8008091E2018093F1008091E8008E77B4
</td> + </tr> + <tr> + <td id="L486" class="blob-num js-line-number" data-line-number="486"></td> + <td id="LC486" class="blob-code blob-code-inner js-file-line">:101E50008093E8000E94300C1EC081111CC090913C
</td> + </tr> + <tr> + <td id="L487" class="blob-num js-line-number" data-line-number="487"></td> + <td id="LC487" class="blob-code blob-code-inner js-file-line">:101E6000E9019230C0F48091E800877F8093E80018
</td> + </tr> + <tr> + <td id="L488" class="blob-num js-line-number" data-line-number="488"></td> + <td id="LC488" class="blob-code blob-code-inner js-file-line">:101E70009093E2010E94300C8091E201811106C032
</td> + </tr> + <tr> + <td id="L489" class="blob-num js-line-number" data-line-number="489"></td> + <td id="LC489" class="blob-code blob-code-inner js-file-line">:101E80008091E30087FD02C081E001C084E080937F
</td> + </tr> + <tr> + <td id="L490" class="blob-num js-line-number" data-line-number="490"></td> + <td id="LC490" class="blob-code blob-code-inner js-file-line">:101E9000E6010E9477098091E80083FF0AC08091E3
</td> + </tr> + <tr> + <td id="L491" class="blob-num js-line-number" data-line-number="491"></td> + <td id="LC491" class="blob-code blob-code-inner js-file-line">:101EA000E800877F8093E8008091EB008062809358
</td> + </tr> + <tr> + <td id="L492" class="blob-num js-line-number" data-line-number="492"></td> + <td id="LC492" class="blob-code blob-code-inner js-file-line">:101EB000EB00AA960FB6F894DEBF0FBECDBFDF9140
</td> + </tr> + <tr> + <td id="L493" class="blob-num js-line-number" data-line-number="493"></td> + <td id="LC493" class="blob-code blob-code-inner js-file-line">:101EC000CF911F9108950895CF938091E6018823C3
</td> + </tr> + <tr> + <td id="L494" class="blob-num js-line-number" data-line-number="494"></td> + <td id="LC494" class="blob-code blob-code-inner js-file-line">:101ED000A1F0C091E900CF709091EC00892F817042
</td> + </tr> + <tr> + <td id="L495" class="blob-num js-line-number" data-line-number="495"></td> + <td id="LC495" class="blob-code blob-code-inner js-file-line">:101EE00090FD80E8C82B1092E9008091E80083FD06
</td> + </tr> + <tr> + <td id="L496" class="blob-num js-line-number" data-line-number="496"></td> + <td id="LC496" class="blob-code blob-code-inner js-file-line">:101EF0000E94120ECF70C093E900CF910895909385
</td> + </tr> + <tr> + <td id="L497" class="blob-num js-line-number" data-line-number="497"></td> + <td id="LC497" class="blob-code blob-code-inner js-file-line">:101F00006B0180936A010895E0916A01F0916B0181
</td> + </tr> + <tr> + <td id="L498" class="blob-num js-line-number" data-line-number="498"></td> + <td id="LC498" class="blob-code blob-code-inner js-file-line">:101F1000309721F00190F081E02D099480E0089540
</td> + </tr> + <tr> + <td id="L499" class="blob-num js-line-number" data-line-number="499"></td> + <td id="LC499" class="blob-code blob-code-inner js-file-line">:101F2000E0916A01F0916B01309721F00280F3811A
</td> + </tr> + <tr> + <td id="L500" class="blob-num js-line-number" data-line-number="500"></td> + <td id="LC500" class="blob-code blob-code-inner js-file-line">:101F3000E02D09940895E0916A01F0916B013097CA
</td> + </tr> + <tr> + <td id="L501" class="blob-num js-line-number" data-line-number="501"></td> + <td id="LC501" class="blob-code blob-code-inner js-file-line">:101F400021F00480F581E02D099408952091680125
</td> + </tr> + <tr> + <td id="L502" class="blob-num js-line-number" data-line-number="502"></td> + <td id="LC502" class="blob-code blob-code-inner js-file-line">:101F5000309169018217930771F090936901809322
</td> + </tr> + <tr> + <td id="L503" class="blob-num js-line-number" data-line-number="503"></td> + <td id="LC503" class="blob-code blob-code-inner js-file-line">:101F60006801E0916A01F0916B01309721F00680E1
</td> + </tr> + <tr> + <td id="L504" class="blob-num js-line-number" data-line-number="504"></td> + <td id="LC504" class="blob-code blob-code-inner js-file-line">:101F7000F781E02D09940895209166013091670161
</td> + </tr> + <tr> + <td id="L505" class="blob-num js-line-number" data-line-number="505"></td> + <td id="LC505" class="blob-code blob-code-inner js-file-line">:101F80008217930771F09093670180936601E09147
</td> + </tr> + <tr> + <td id="L506" class="blob-num js-line-number" data-line-number="506"></td> + <td id="LC506" class="blob-code blob-code-inner js-file-line">:101F90006A01F0916B01309721F00084F185E02D0A
</td> + </tr> + <tr> + <td id="L507" class="blob-num js-line-number" data-line-number="507"></td> + <td id="LC507" class="blob-code blob-code-inner js-file-line">:101FA0000994089508950C94D20F0E94EB1B0E948F
</td> + </tr> + <tr> + <td id="L508" class="blob-num js-line-number" data-line-number="508"></td> + <td id="LC508" class="blob-code blob-code-inner js-file-line">:101FB00092040C94B11CCF92DF92EF92FF920F9398
</td> + </tr> + <tr> + <td id="L509" class="blob-num js-line-number" data-line-number="509"></td> + <td id="LC509" class="blob-code blob-code-inner js-file-line">:101FC0001F93CF93DF93CDB7DEB72B970FB6F8945F
</td> + </tr> + <tr> + <td id="L510" class="blob-num js-line-number" data-line-number="510"></td> + <td id="LC510" class="blob-code blob-code-inner js-file-line">:101FD000DEBF0FBECDBF0E94AA048DE6C82E81E0F1
</td> + </tr> + <tr> + <td id="L511" class="blob-num js-line-number" data-line-number="511"></td> + <td id="LC511" class="blob-code blob-code-inner js-file-line">:101FE000D82E00E010E0E02E802F0E949805F60128
</td> + </tr> + <tr> + <td id="L512" class="blob-num js-line-number" data-line-number="512"></td> + <td id="LC512" class="blob-code blob-code-inner js-file-line">:101FF00041916F01F42EF826B1F40F5F1F4F0E30A0
</td> + </tr> + <tr> + <td id="L513" class="blob-num js-line-number" data-line-number="513"></td> + <td id="LC513" class="blob-code blob-code-inner js-file-line">:10200000110589F78FEF89838A831B820E94F41B55
</td> + </tr> + <tr> + <td id="L514" class="blob-num js-line-number" data-line-number="514"></td> + <td id="LC514" class="blob-code blob-code-inner js-file-line">:102010008160782F9D838C8349815A816B818D816A
</td> + </tr> + <tr> + <td id="L515" class="blob-num js-line-number" data-line-number="515"></td> + <td id="LC515" class="blob-code blob-code-inner js-file-line">:102020000E947E1040C09091CF0191FF04C08B8729
</td> + </tr> + <tr> + <td id="L516" class="blob-num js-line-number" data-line-number="516"></td> + <td id="LC516" class="blob-code blob-code-inner js-file-line">:102030000E949E058B8520E030E04F2D50E0922FCE
</td> + </tr> + <tr> + <td id="L517" class="blob-num js-line-number" data-line-number="517"></td> + <td id="LC517" class="blob-code blob-code-inner js-file-line">:10204000BA01022E02C0759567950A94E2F760FF07
</td> + </tr> + <tr> + <td id="L518" class="blob-num js-line-number" data-line-number="518"></td> + <td id="LC518" class="blob-code blob-code-inner js-file-line">:1020500024C02E83EF8221E030E0690102C0CC0C65
</td> + </tr> + <tr> + <td id="L519" class="blob-num js-line-number" data-line-number="519"></td> + <td id="LC519" class="blob-code blob-code-inner js-file-line">:10206000DD1C9A95E2F790E08C219D21892B09F4E3
</td> + </tr> + <tr> + <td id="L520" class="blob-num js-line-number" data-line-number="520"></td> + <td id="LC520" class="blob-code blob-code-inner js-file-line">:1020700020E028870E94F41B8160782F9A87898747
</td> + </tr> + <tr> + <td id="L521" class="blob-num js-line-number" data-line-number="521"></td> + <td id="LC521" class="blob-code blob-code-inner js-file-line">:102080004E815F8168858A850E947E10F801E35940
</td> + </tr> + <tr> + <td id="L522" class="blob-num js-line-number" data-line-number="522"></td> + <td id="LC522" class="blob-code blob-code-inner js-file-line">:10209000FE4F8081C826C08206C02F5F3F4F26308A
</td> + </tr> + <tr> + <td id="L523" class="blob-num js-line-number" data-line-number="523"></td> + <td id="LC523" class="blob-code blob-code-inner js-file-line">:1020A000310569F6AACF0E94981F10916C010E9419
</td> + </tr> + <tr> + <td id="L524" class="blob-num js-line-number" data-line-number="524"></td> + <td id="LC524" class="blob-code blob-code-inner js-file-line">:1020B000840F1817A1F00E94840F80936C012B9657
</td> + </tr> + <tr> + <td id="L525" class="blob-num js-line-number" data-line-number="525"></td> + <td id="LC525" class="blob-code blob-code-inner js-file-line">:1020C0000FB6F894DEBF0FBECDBFDF91CF911F9149
</td> + </tr> + <tr> + <td id="L526" class="blob-num js-line-number" data-line-number="526"></td> + <td id="LC526" class="blob-code blob-code-inner js-file-line">:1020D0000F91FF90EF90DF90CF900C947A082B96A1
</td> + </tr> + <tr> + <td id="L527" class="blob-num js-line-number" data-line-number="527"></td> + <td id="LC527" class="blob-code blob-code-inner js-file-line">:1020E0000FB6F894DEBF0FBECDBFDF91CF911F9129
</td> + </tr> + <tr> + <td id="L528" class="blob-num js-line-number" data-line-number="528"></td> + <td id="LC528" class="blob-code blob-code-inner js-file-line">:1020F0000F91FF90EF90DF90CF900895CF93DF93F3
</td> + </tr> + <tr> + <td id="L529" class="blob-num js-line-number" data-line-number="529"></td> + <td id="LC529" class="blob-code blob-code-inner js-file-line">:10210000CDB7DEB72B970FB6F894DEBF0FBECDBFAD
</td> + </tr> + <tr> + <td id="L530" class="blob-num js-line-number" data-line-number="530"></td> + <td id="LC530" class="blob-code blob-code-inner js-file-line">:102110004F83588769877A878B87DE01119686E01F
</td> + </tr> + <tr> + <td id="L531" class="blob-num js-line-number" data-line-number="531"></td> + <td id="LC531" class="blob-code blob-code-inner js-file-line">:10212000FD0111928A95E9F785E0FE01379601904D
</td> + </tr> + <tr> + <td id="L532" class="blob-num js-line-number" data-line-number="532"></td> + <td id="LC532" class="blob-code blob-code-inner js-file-line">:102130000D928A95E1F749815A816B817C818D816D
</td> + </tr> + <tr> + <td id="L533" class="blob-num js-line-number" data-line-number="533"></td> + <td id="LC533" class="blob-code blob-code-inner js-file-line">:102140009E810E94AE172B960FB6F894DEBF0FBE8D
</td> + </tr> + <tr> + <td id="L534" class="blob-num js-line-number" data-line-number="534"></td> + <td id="LC534" class="blob-code blob-code-inner js-file-line">:10215000CDBFDF91CF9108950895CF93882309F4DF
</td> + </tr> + <tr> + <td id="L535" class="blob-num js-line-number" data-line-number="535"></td> + <td id="LC535" class="blob-code blob-code-inner js-file-line">:10216000C2C0C82F823859F40E94840F81FDBBC0C1
</td> + </tr> + <tr> + <td id="L536" class="blob-num js-line-number" data-line-number="536"></td> + <td id="LC536" class="blob-code blob-code-inner js-file-line">:1021700089E30E94571A0E94241B89E30CC083380C
</td> + </tr> + <tr> + <td id="L537" class="blob-num js-line-number" data-line-number="537"></td> + <td id="LC537" class="blob-code blob-code-inner js-file-line">:1021800079F40E94840F80FDAEC083E50E94571A47
</td> + </tr> + <tr> + <td id="L538" class="blob-num js-line-number" data-line-number="538"></td> + <td id="LC538" class="blob-code blob-code-inner js-file-line">:102190000E94241B83E50E94991ACF910C94241B62
</td> + </tr> + <tr> + <td id="L539" class="blob-num js-line-number" data-line-number="539"></td> + <td id="LC539" class="blob-code blob-code-inner js-file-line">:1021A000843859F40E94840F82FD9DC087E40E9408
</td> + </tr> + <tr> + <td id="L540" class="blob-num js-line-number" data-line-number="540"></td> + <td id="LC540" class="blob-code blob-code-inner js-file-line">:1021B000571A0E94241B87E4EECF8CEF8C0F813AD4
</td> + </tr> + <tr> + <td id="L541" class="blob-num js-line-number" data-line-number="541"></td> + <td id="LC541" class="blob-code blob-code-inner js-file-line">:1021C00048F48C2F0E94DA2181118DC08C2F0E943F
</td> + </tr> + <tr> + <td id="L542" class="blob-num js-line-number" data-line-number="542"></td> + <td id="LC542" class="blob-code blob-code-inner js-file-line">:1021D000571AE3CF80E28C0F883048F4C77081E053
</td> + </tr> + <tr> + <td id="L543" class="blob-num js-line-number" data-line-number="543"></td> + <td id="LC543" class="blob-code blob-code-inner js-file-line">:1021E00001C0880FCA95EAF70E94DD1AD6CF8BE5A9
</td> + </tr> + <tr> + <td id="L544" class="blob-num js-line-number" data-line-number="544"></td> + <td id="LC544" class="blob-code blob-code-inner js-file-line">:1021F0008C0F833078F4C53A29F0C63A31F083E881
</td> + </tr> + <tr> + <td id="L545" class="blob-num js-line-number" data-line-number="545"></td> + <td id="LC545" class="blob-code blob-code-inner js-file-line">:1022000090E005C081E890E002C082E890E0CF91C4
</td> + </tr> + <tr> + <td id="L546" class="blob-num js-line-number" data-line-number="546"></td> + <td id="LC546" class="blob-code blob-code-inner js-file-line">:102210000C94A60F88E58C0F833108F064C0C83A8F
</td> + </tr> + <tr> + <td id="L547" class="blob-num js-line-number" data-line-number="547"></td> + <td id="LC547" class="blob-code blob-code-inner js-file-line">:1022200039F1C93A41F1CA3A49F1CB3A51F1CC3AC4
</td> + </tr> + <tr> + <td id="L548" class="blob-num js-line-number" data-line-number="548"></td> + <td id="LC548" class="blob-code blob-code-inner js-file-line">:1022300059F1CD3A61F1C03B69F1CE3A71F1CF3A33
</td> + </tr> + <tr> + <td id="L549" class="blob-num js-line-number" data-line-number="549"></td> + <td id="LC549" class="blob-code blob-code-inner js-file-line">:1022400079F1C13B81F1C23B89F1C33B91F1C43BC0
</td> + </tr> + <tr> + <td id="L550" class="blob-num js-line-number" data-line-number="550"></td> + <td id="LC550" class="blob-code blob-code-inner js-file-line">:1022500099F1C53BA1F1C63BA9F1C73BB1F1C83B20
</td> + </tr> + <tr> + <td id="L551" class="blob-num js-line-number" data-line-number="551"></td> + <td id="LC551" class="blob-code blob-code-inner js-file-line">:10226000B9F1C93BC1F1CA3BC9F180E090E038C087
</td> + </tr> + <tr> + <td id="L552" class="blob-num js-line-number" data-line-number="552"></td> + <td id="LC552" class="blob-code blob-code-inner js-file-line">:1022700082EE90E035C089EE90E032C08AEE90E0C8
</td> + </tr> + <tr> + <td id="L553" class="blob-num js-line-number" data-line-number="553"></td> + <td id="LC553" class="blob-code blob-code-inner js-file-line">:102280002FC085EB90E02CC086EB90E029C087EB57
</td> + </tr> + <tr> + <td id="L554" class="blob-num js-line-number" data-line-number="554"></td> + <td id="LC554" class="blob-code blob-code-inner js-file-line">:1022900090E026C08CEC90E023C08DEC90E020C054
</td> + </tr> + <tr> + <td id="L555" class="blob-num js-line-number" data-line-number="555"></td> + <td id="LC555" class="blob-code blob-code-inner js-file-line">:1022A00083E891E01DC08AE891E01AC082E991E0DC
</td> + </tr> + <tr> + <td id="L556" class="blob-num js-line-number" data-line-number="556"></td> + <td id="LC556" class="blob-code blob-code-inner js-file-line">:1022B00017C084E991E014C081E292E011C083E28A
</td> + </tr> + <tr> + <td id="L557" class="blob-num js-line-number" data-line-number="557"></td> + <td id="LC557" class="blob-code blob-code-inner js-file-line">:1022C00092E00EC084E292E00BC085E292E008C08A
</td> + </tr> + <tr> + <td id="L558" class="blob-num js-line-number" data-line-number="558"></td> + <td id="LC558" class="blob-code blob-code-inner js-file-line">:1022D00086E292E005C087E292E002C08AE292E0E4
</td> + </tr> + <tr> + <td id="L559" class="blob-num js-line-number" data-line-number="559"></td> + <td id="LC559" class="blob-code blob-code-inner js-file-line">:1022E000CF910C94BC0FCF910895882309F44BC073
</td> + </tr> + <tr> + <td id="L560" class="blob-num js-line-number" data-line-number="560"></td> + <td id="LC560" class="blob-code blob-code-inner js-file-line">:1022F000823859F40E94840F81FF45C089E30E940F
</td> + </tr> + <tr> + <td id="L561" class="blob-num js-line-number" data-line-number="561"></td> + <td id="LC561" class="blob-code blob-code-inner js-file-line">:10230000571A0E94241B89E30CC0833871F40E9481
</td> + </tr> + <tr> + <td id="L562" class="blob-num js-line-number" data-line-number="562"></td> + <td id="LC562" class="blob-code blob-code-inner js-file-line">:10231000840F80FF38C083E50E94571A0E94241B57
</td> + </tr> + <tr> + <td id="L563" class="blob-num js-line-number" data-line-number="563"></td> + <td id="LC563" class="blob-code blob-code-inner js-file-line">:1023200083E50E94991A0C94241B843859F40E9466
</td> + </tr> + <tr> + <td id="L564" class="blob-num js-line-number" data-line-number="564"></td> + <td id="LC564" class="blob-code blob-code-inner js-file-line">:10233000840F82FF28C087E40E94571A0E94241B42
</td> + </tr> + <tr> + <td id="L565" class="blob-num js-line-number" data-line-number="565"></td> + <td id="LC565" class="blob-code blob-code-inner js-file-line">:1023400087E4EFCF9CEF980F913A58F390E2980F03
</td> + </tr> + <tr> + <td id="L566" class="blob-num js-line-number" data-line-number="566"></td> + <td id="LC566" class="blob-code blob-code-inner js-file-line">:10235000983050F4877091E001C0990F8A95EAF7A0
</td> + </tr> + <tr> + <td id="L567" class="blob-num js-line-number" data-line-number="567"></td> + <td id="LC567" class="blob-code blob-code-inner js-file-line">:10236000892F0E94E31ADFCF9BE5980F933020F46A
</td> + </tr> + <tr> + <td id="L568" class="blob-num js-line-number" data-line-number="568"></td> + <td id="LC568" class="blob-code blob-code-inner js-file-line">:1023700080E090E00C94A60F885A833120F480E02E
</td> + </tr> + <tr> + <td id="L569" class="blob-num js-line-number" data-line-number="569"></td> + <td id="LC569" class="blob-code blob-code-inner js-file-line">:1023800090E00C94BC0F0895882321F00E94DD1A80
</td> + </tr> + <tr> + <td id="L570" class="blob-num js-line-number" data-line-number="570"></td> + <td id="LC570" class="blob-code blob-code-inner js-file-line">:102390000C94241B0895882321F00E94E31A0C94C6
</td> + </tr> + <tr> + <td id="L571" class="blob-num js-line-number" data-line-number="571"></td> + <td id="LC571" class="blob-code blob-code-inner js-file-line">:1023A000241B0895BF92CF92DF92EF92FF920F937A
</td> + </tr> + <tr> + <td id="L572" class="blob-num js-line-number" data-line-number="572"></td> + <td id="LC572" class="blob-code blob-code-inner js-file-line">:1023B0001F93CF93DF9300D000D000D0CDB7DEB70E
</td> + </tr> + <tr> + <td id="L573" class="blob-num js-line-number" data-line-number="573"></td> + <td id="LC573" class="blob-code blob-code-inner js-file-line">:1023C00025E0FC01DE01119601900D922A95E1F7BE
</td> + </tr> + <tr> + <td id="L574" class="blob-num js-line-number" data-line-number="574"></td> + <td id="LC574" class="blob-code blob-code-inner js-file-line">:1023D000FC01D08011810281258122952F704381DB
</td> + </tr> + <tr> + <td id="L575" class="blob-num js-line-number" data-line-number="575"></td> + <td id="LC575" class="blob-code blob-code-inner js-file-line">:1023E0005481452B09F4FCC21F3F21F4FFEFDF1697
</td> + </tr> + <tr> + <td id="L576" class="blob-num js-line-number" data-line-number="576"></td> + <td id="LC576" class="blob-code blob-code-inner js-file-line">:1023F00009F4F6C27C012E830E94AC10D9821A83A4
</td> + </tr> + <tr> + <td id="L577" class="blob-num js-line-number" data-line-number="577"></td> + <td id="LC577" class="blob-code blob-code-inner js-file-line">:1024000069817A81802F0E94531A182FB92E0E9459
</td> + </tr> + <tr> + <td id="L578" class="blob-num js-line-number" data-line-number="578"></td> + <td id="LC578" class="blob-code blob-code-inner js-file-line">:10241000081A0E94CF182E81002319F00E94FA1A80
</td> + </tr> + <tr> + <td id="L579" class="blob-num js-line-number" data-line-number="579"></td> + <td id="LC579" class="blob-code blob-code-inner js-file-line">:102420002E81EB2DE295EF70F0E0E05AFF4F0C9417
</td> + </tr> + <tr> + <td id="L580" class="blob-num js-line-number" data-line-number="580"></td> + <td id="LC580" class="blob-code blob-code-inner js-file-line">:102430001E248B2D807F9B2D9F70F92E882319F0F1
</td> + </tr> + <tr> + <td id="L581" class="blob-num js-line-number" data-line-number="581"></td> + <td id="LC581" class="blob-code blob-code-inner js-file-line">:10244000F29480EFF822002389F0FF2009F475C28E
</td> + </tr> + <tr> + <td id="L582" class="blob-num js-line-number" data-line-number="582"></td> + <td id="LC582" class="blob-code blob-code-inner js-file-line">:1024500080E2810F883020F48F2D0E94DD1A03C0A6
</td> + </tr> + <tr> + <td id="L583" class="blob-num js-line-number" data-line-number="583"></td> + <td id="LC583" class="blob-code blob-code-inner js-file-line">:102460008F2D0E94ED1A0E94241B67C2812F0E94AB
</td> + </tr> + <tr> + <td id="L584" class="blob-num js-line-number" data-line-number="584"></td> + <td id="LC584" class="blob-code blob-code-inner js-file-line">:102470007511FF2009F4B4C2105E8F2D183018F4C6
</td> + </tr> + <tr> + <td id="L585" class="blob-num js-line-number" data-line-number="585"></td> + <td id="LC585" class="blob-code blob-code-inner js-file-line">:102480000E94E31A02C00E94F31A26960FB6F8942F
</td> + </tr> + <tr> + <td id="L586" class="blob-num js-line-number" data-line-number="586"></td> + <td id="LC586" class="blob-code blob-code-inner js-file-line">:10249000DEBF0FBECDBFDF91CF911F910F91FF9097
</td> + </tr> + <tr> + <td id="L587" class="blob-num js-line-number" data-line-number="587"></td> + <td id="LC587" class="blob-code blob-code-inner js-file-line">:1024A000EF90DF90CF90BF900C94241B3B2D307F9A
</td> + </tr> + <tr> + <td id="L588" class="blob-num js-line-number" data-line-number="588"></td> + <td id="LC588" class="blob-code blob-code-inner js-file-line">:1024B0008B2D8F70303211F08295807F112319F0AF
</td> + </tr> + <tr> + <td id="L589" class="blob-num js-line-number" data-line-number="589"></td> + <td id="LC589" class="blob-code blob-code-inner js-file-line">:1024C000113021F12CC00023B9F0222309F4A0C15E
</td> + </tr> + <tr> + <td id="L590" class="blob-num js-line-number" data-line-number="590"></td> + <td id="LC590" class="blob-code blob-code-inner js-file-line">:1024D000213009F09DC126960FB6F894DEBF0FBEDD
</td> + </tr> + <tr> + <td id="L591" class="blob-num js-line-number" data-line-number="591"></td> + <td id="LC591" class="blob-code blob-code-inner js-file-line">:1024E000CDBFDF91CF911F910F91FF90EF90DF90C3
</td> + </tr> + <tr> + <td id="L592" class="blob-num js-line-number" data-line-number="592"></td> + <td id="LC592" class="blob-code blob-code-inner js-file-line">:1024F000CF90BF900C940D1B222319F0213009F4CA
</td> + </tr> + <tr> + <td id="L593" class="blob-num js-line-number" data-line-number="593"></td> + <td id="LC593" class="blob-code blob-code-inner js-file-line">:102500006FC28E830E94101B8E8196C1002321F022
</td> + </tr> + <tr> + <td id="L594" class="blob-num js-line-number" data-line-number="594"></td> + <td id="LC594" class="blob-code blob-code-inner js-file-line">:10251000223008F065C27CC1211162C28DC1002346
</td> + </tr> + <tr> + <td id="L595" class="blob-num js-line-number" data-line-number="595"></td> + <td id="LC595" class="blob-code blob-code-inner js-file-line">:1025200021F0222309F474C108C2222309F484C1D2
</td> + </tr> + <tr> + <td id="L596" class="blob-num js-line-number" data-line-number="596"></td> + <td id="LC596" class="blob-code blob-code-inner js-file-line">:1025300019C22B2D26952695237030E021153105E3
</td> + </tr> + <tr> + <td id="L597" class="blob-num js-line-number" data-line-number="597"></td> + <td id="LC597" class="blob-code blob-code-inner js-file-line">:1025400021F021303105D1F04BC2002321F0812F41
</td> + </tr> + <tr> + <td id="L598" class="blob-num js-line-number" data-line-number="598"></td> + <td id="LC598" class="blob-code blob-code-inner js-file-line">:102550009B2D937002C080E090E026960FB6F89411
</td> + </tr> + <tr> + <td id="L599" class="blob-num js-line-number" data-line-number="599"></td> + <td id="LC599" class="blob-code blob-code-inner js-file-line">:10256000DEBF0FBECDBFDF91CF911F910F91FF90C6
</td> + </tr> + <tr> + <td id="L600" class="blob-num js-line-number" data-line-number="600"></td> + <td id="LC600" class="blob-code blob-code-inner js-file-line">:10257000EF90DF90CF90BF900C94A60F002321F036
</td> + </tr> + <tr> + <td id="L601" class="blob-num js-line-number" data-line-number="601"></td> + <td id="LC601" class="blob-code blob-code-inner js-file-line">:10258000812F9B2D937002C080E090E026960FB6BD
</td> + </tr> + <tr> + <td id="L602" class="blob-num js-line-number" data-line-number="602"></td> + <td id="LC602" class="blob-code blob-code-inner js-file-line">:10259000F894DEBF0FBECDBFDF91CF911F910F9199
</td> + </tr> + <tr> + <td id="L603" class="blob-num js-line-number" data-line-number="603"></td> + <td id="LC603" class="blob-code blob-code-inner js-file-line">:1025A000FF90EF90DF90CF90BF900C94BC0F812FE5
</td> + </tr> + <tr> + <td id="L604" class="blob-num js-line-number" data-line-number="604"></td> + <td id="LC604" class="blob-code blob-code-inner js-file-line">:1025B000002319F00E94A01E02C00E94081F269648
</td> + </tr> + <tr> + <td id="L605" class="blob-num js-line-number" data-line-number="605"></td> + <td id="LC605" class="blob-code blob-code-inner js-file-line">:1025C0000FB6F894DEBF0FBECDBFDF91CF911F9144
</td> + </tr> + <tr> + <td id="L606" class="blob-num js-line-number" data-line-number="606"></td> + <td id="LC606" class="blob-code blob-code-inner js-file-line">:1025D0000F91FF90EF90DF90CF90BF900C948D1FE4
</td> + </tr> + <tr> + <td id="L607" class="blob-num js-line-number" data-line-number="607"></td> + <td id="LC607" class="blob-code blob-code-inner js-file-line">:1025E0008B2D837009F07BC00111FAC1812F829578
</td> + </tr> + <tr> + <td id="L608" class="blob-num js-line-number" data-line-number="608"></td> + <td id="LC608" class="blob-code blob-code-inner js-file-line">:1025F00086958770880F880F912F9F70C92ED12CD8
</td> + </tr> + <tr> + <td id="L609" class="blob-num js-line-number" data-line-number="609"></td> + <td id="LC609" class="blob-code blob-code-inner js-file-line">:10260000E12CF12C082E04C0CC0CDD1CEE1CFF1CB0
</td> + </tr> + <tr> + <td id="L610" class="blob-num js-line-number" data-line-number="610"></td> + <td id="LC610" class="blob-code blob-code-inner js-file-line">:102610000A94D2F714FF12C04FE050E060E070E07F
</td> + </tr> + <tr> + <td id="L611" class="blob-num js-line-number" data-line-number="611"></td> + <td id="LC611" class="blob-code blob-code-inner js-file-line">:1026200004C0440F551F661F771F8A95D2F7CB0150
</td> + </tr> + <tr> + <td id="L612" class="blob-num js-line-number" data-line-number="612"></td> + <td id="LC612" class="blob-code blob-code-inner js-file-line">:10263000BA01609570958095909503C060E070E058
</td> + </tr> + <tr> + <td id="L613" class="blob-num js-line-number" data-line-number="613"></td> + <td id="LC613" class="blob-code blob-code-inner js-file-line">:10264000CB012B2D269526952370422F50E042304A
</td> + </tr> + <tr> + <td id="L614" class="blob-num js-line-number" data-line-number="614"></td> + <td id="LC614" class="blob-code blob-code-inner js-file-line">:102650005105D9F04330510569F16C297D298E2946
</td> + </tr> + <tr> + <td id="L615" class="blob-num js-line-number" data-line-number="615"></td> + <td id="LC615" class="blob-code blob-code-inner js-file-line">:102660009F294130510551F126960FB6F894DEBFEF
</td> + </tr> + <tr> + <td id="L616" class="blob-num js-line-number" data-line-number="616"></td> + <td id="LC616" class="blob-code blob-code-inner js-file-line">:102670000FBECDBFDF91CF911F910F91FF90EF90D3
</td> + </tr> + <tr> + <td id="L617" class="blob-num js-line-number" data-line-number="617"></td> + <td id="LC617" class="blob-code blob-code-inner js-file-line">:10268000DF90CF90BF900C94F6186C297D298E298D
</td> + </tr> + <tr> + <td id="L618" class="blob-num js-line-number" data-line-number="618"></td> + <td id="LC618" class="blob-code blob-code-inner js-file-line">:102690009F2926960FB6F894DEBF0FBECDBFDF91FF
</td> + </tr> + <tr> + <td id="L619" class="blob-num js-line-number" data-line-number="619"></td> + <td id="LC619" class="blob-code blob-code-inner js-file-line">:1026A000CF911F910F91FF90EF90DF90CF90BF904F
</td> + </tr> + <tr> + <td id="L620" class="blob-num js-line-number" data-line-number="620"></td> + <td id="LC620" class="blob-code blob-code-inner js-file-line">:1026B0000C9412190E94F618C701B60126960FB69F
</td> + </tr> + <tr> + <td id="L621" class="blob-num js-line-number" data-line-number="621"></td> + <td id="LC621" class="blob-code blob-code-inner js-file-line">:1026C000F894DEBF0FBECDBFDF91CF911F910F9168
</td> + </tr> + <tr> + <td id="L622" class="blob-num js-line-number" data-line-number="622"></td> + <td id="LC622" class="blob-code blob-code-inner js-file-line">:1026D000FF90EF90DF90CF90BF900C94DA1800231A
</td> + </tr> + <tr> + <td id="L623" class="blob-num js-line-number" data-line-number="623"></td> + <td id="LC623" class="blob-code blob-code-inner js-file-line">:1026E00019F08B2D817001C08695882309F478C17B
</td> + </tr> + <tr> + <td id="L624" class="blob-num js-line-number" data-line-number="624"></td> + <td id="LC624" class="blob-code blob-code-inner js-file-line">:1026F000812F829586958770880F880F912F9F7004
</td> + </tr> + <tr> + <td id="L625" class="blob-num js-line-number" data-line-number="625"></td> + <td id="LC625" class="blob-code blob-code-inner js-file-line">:10270000C92ED12CE12CF12C082E04C0CC0CDD1CE0
</td> + </tr> + <tr> + <td id="L626" class="blob-num js-line-number" data-line-number="626"></td> + <td id="LC626" class="blob-code blob-code-inner js-file-line">:10271000EE1CFF1C0A94D2F714FF12C04FE050E0E9
</td> + </tr> + <tr> + <td id="L627" class="blob-num js-line-number" data-line-number="627"></td> + <td id="LC627" class="blob-code blob-code-inner js-file-line">:1027200060E070E004C0440F551F661F771F8A9554
</td> + </tr> + <tr> + <td id="L628" class="blob-num js-line-number" data-line-number="628"></td> + <td id="LC628" class="blob-code blob-code-inner js-file-line">:10273000D2F7CB01BA01609570958095909503C052
</td> + </tr> + <tr> + <td id="L629" class="blob-num js-line-number" data-line-number="629"></td> + <td id="LC629" class="blob-code blob-code-inner js-file-line">:1027400060E070E0CB012B2D269526952370422F5B
</td> + </tr> + <tr> + <td id="L630" class="blob-num js-line-number" data-line-number="630"></td> + <td id="LC630" class="blob-code blob-code-inner js-file-line">:1027500050E042305105D9F04330510569F16C2900
</td> + </tr> + <tr> + <td id="L631" class="blob-num js-line-number" data-line-number="631"></td> + <td id="LC631" class="blob-code blob-code-inner js-file-line">:102760007D298E299F294130510551F126960FB6BA
</td> + </tr> + <tr> + <td id="L632" class="blob-num js-line-number" data-line-number="632"></td> + <td id="LC632" class="blob-code blob-code-inner js-file-line">:10277000F894DEBF0FBECDBFDF91CF911F910F91B7
</td> + </tr> + <tr> + <td id="L633" class="blob-num js-line-number" data-line-number="633"></td> + <td id="LC633" class="blob-code blob-code-inner js-file-line">:10278000FF90EF90DF90CF90BF900C94D0196C2900
</td> + </tr> + <tr> + <td id="L634" class="blob-num js-line-number" data-line-number="634"></td> + <td id="LC634" class="blob-code blob-code-inner js-file-line">:102790007D298E299F2926960FB6F894DEBF0FBE9D
</td> + </tr> + <tr> + <td id="L635" class="blob-num js-line-number" data-line-number="635"></td> + <td id="LC635" class="blob-code blob-code-inner js-file-line">:1027A000CDBFDF91CF911F910F91FF90EF90DF9000
</td> + </tr> + <tr> + <td id="L636" class="blob-num js-line-number" data-line-number="636"></td> + <td id="LC636" class="blob-code blob-code-inner js-file-line">:1027B000CF90BF900C94EC190E94D019C701B601BC
</td> + </tr> + <tr> + <td id="L637" class="blob-num js-line-number" data-line-number="637"></td> + <td id="LC637" class="blob-code blob-code-inner js-file-line">:1027C00026960FB6F894DEBF0FBECDBFDF91CF9136
</td> + </tr> + <tr> + <td id="L638" class="blob-num js-line-number" data-line-number="638"></td> + <td id="LC638" class="blob-code blob-code-inner js-file-line">:1027D0001F910F91FF90EF90DF90CF90BF900C94DE
</td> + </tr> + <tr> + <td id="L639" class="blob-num js-line-number" data-line-number="639"></td> + <td id="LC639" class="blob-code blob-code-inner js-file-line">:1027E000B419103FD1F118F4103E50F4A1C0123FBB
</td> + </tr> + <tr> + <td id="L640" class="blob-num js-line-number" data-line-number="640"></td> + <td id="LC640" class="blob-code blob-code-inner js-file-line">:1027F00009F463C008F44CC0133F09F473C098C0D7
</td> + </tr> + <tr> + <td id="L641" class="blob-num js-line-number" data-line-number="641"></td> + <td id="LC641" class="blob-code blob-code-inner js-file-line">:102800001F708B2D8F710023A1F00E944D19812F15
</td> + </tr> + <tr> + <td id="L642" class="blob-num js-line-number" data-line-number="642"></td> + <td id="LC642" class="blob-code blob-code-inner js-file-line">:1028100026960FB6F894DEBF0FBECDBFDF91CF91E5
</td> + </tr> + <tr> + <td id="L643" class="blob-num js-line-number" data-line-number="643"></td> + <td id="LC643" class="blob-code blob-code-inner js-file-line">:102820001F910F91FF90EF90DF90CF90BF900C948D
</td> + </tr> + <tr> + <td id="L644" class="blob-num js-line-number" data-line-number="644"></td> + <td id="LC644" class="blob-code blob-code-inner js-file-line">:10283000C4110E946E19812F26960FB6F894DEBF40
</td> + </tr> + <tr> + <td id="L645" class="blob-num js-line-number" data-line-number="645"></td> + <td id="LC645" class="blob-code blob-code-inner js-file-line">:102840000FBECDBFDF91CF911F910F91FF90EF9001
</td> + </tr> + <tr> + <td id="L646" class="blob-num js-line-number" data-line-number="646"></td> + <td id="LC646" class="blob-code blob-code-inner js-file-line">:10285000DF90CF90BF900C94CB110023A9F02111F1
</td> + </tr> + <tr> + <td id="L647" class="blob-num js-line-number" data-line-number="647"></td> + <td id="LC647" class="blob-code blob-code-inner js-file-line">:10286000BFC08B2D8F7126960FB6F894DEBF0FBEBA
</td> + </tr> + <tr> + <td id="L648" class="blob-num js-line-number" data-line-number="648"></td> + <td id="LC648" class="blob-code blob-code-inner js-file-line">:10287000CDBFDF91CF911F910F91FF90EF90DF902F
</td> + </tr> + <tr> + <td id="L649" class="blob-num js-line-number" data-line-number="649"></td> + <td id="LC649" class="blob-code blob-code-inner js-file-line">:10288000CF90BF900C949319223008F0A9C0E9CFE3
</td> + </tr> + <tr> + <td id="L650" class="blob-num js-line-number" data-line-number="650"></td> + <td id="LC650" class="blob-code blob-code-inner js-file-line">:102890000023A9F08B2D8F7126960FB6F894DEBF1A
</td> + </tr> + <tr> + <td id="L651" class="blob-num js-line-number" data-line-number="651"></td> + <td id="LC651" class="blob-code blob-code-inner js-file-line">:1028A0000FBECDBFDF91CF911F910F91FF90EF90A1
</td> + </tr> + <tr> + <td id="L652" class="blob-num js-line-number" data-line-number="652"></td> + <td id="LC652" class="blob-code blob-code-inner js-file-line">:1028B000DF90CF90BF900C944D19002359F38B2DCE
</td> + </tr> + <tr> + <td id="L653" class="blob-num js-line-number" data-line-number="653"></td> + <td id="LC653" class="blob-code blob-code-inner js-file-line">:1028C0008F7126960FB6F894DEBF0FBECDBFDF9195
</td> + </tr> + <tr> + <td id="L654" class="blob-num js-line-number" data-line-number="654"></td> + <td id="LC654" class="blob-code blob-code-inner js-file-line">:1028D000CF911F910F91FF90EF90DF90CF90BF901D
</td> + </tr> + <tr> + <td id="L655" class="blob-num js-line-number" data-line-number="655"></td> + <td id="LC655" class="blob-code blob-code-inner js-file-line">:1028E0000C946E19002399F08B2D8F7126960FB6DC
</td> + </tr> + <tr> + <td id="L656" class="blob-num js-line-number" data-line-number="656"></td> + <td id="LC656" class="blob-code blob-code-inner js-file-line">:1028F000F894DEBF0FBECDBFDF91CF911F910F9136
</td> + </tr> + <tr> + <td id="L657" class="blob-num js-line-number" data-line-number="657"></td> + <td id="LC657" class="blob-code blob-code-inner js-file-line">:10290000FF90EF90DF90CF90BF900C9438192696EF
</td> + </tr> + <tr> + <td id="L658" class="blob-num js-line-number" data-line-number="658"></td> + <td id="LC658" class="blob-code blob-code-inner js-file-line">:102910000FB6F894DEBF0FBECDBFDF91CF911F91F0
</td> + </tr> + <tr> + <td id="L659" class="blob-num js-line-number" data-line-number="659"></td> + <td id="LC659" class="blob-code blob-code-inner js-file-line">:102920000F91FF90EF90DF90CF90BF900C942E19F5
</td> + </tr> + <tr> + <td id="L660" class="blob-num js-line-number" data-line-number="660"></td> + <td id="LC660" class="blob-code blob-code-inner js-file-line">:102930000023A9F0222309F4ADCF812F26960FB6EC
</td> + </tr> + <tr> + <td id="L661" class="blob-num js-line-number" data-line-number="661"></td> + <td id="LC661" class="blob-code blob-code-inner js-file-line">:10294000F894DEBF0FBECDBFDF91CF911F910F91E5
</td> + </tr> + <tr> + <td id="L662" class="blob-num js-line-number" data-line-number="662"></td> + <td id="LC662" class="blob-code blob-code-inner js-file-line">:10295000FF90EF90DF90CF90BF900C94AD102223AA
</td> + </tr> + <tr> + <td id="L663" class="blob-num js-line-number" data-line-number="663"></td> + <td id="LC663" class="blob-code blob-code-inner js-file-line">:1029600009F4ADCF812F26960FB6F894DEBF0FBEC7
</td> + </tr> + <tr> + <td id="L664" class="blob-num js-line-number" data-line-number="664"></td> + <td id="LC664" class="blob-code blob-code-inner js-file-line">:10297000CDBFDF91CF911F910F91FF90EF90DF902E
</td> + </tr> + <tr> + <td id="L665" class="blob-num js-line-number" data-line-number="665"></td> + <td id="LC665" class="blob-code blob-code-inner js-file-line">:10298000CF90BF900C9475114B2D4F70612FC701E4
</td> + </tr> + <tr> + <td id="L666" class="blob-num js-line-number" data-line-number="666"></td> + <td id="LC666" class="blob-code blob-code-inner js-file-line">:102990000E94AE0226960FB6F894DEBF0FBECDBFE2
</td> + </tr> + <tr> + <td id="L667" class="blob-num js-line-number" data-line-number="667"></td> + <td id="LC667" class="blob-code blob-code-inner js-file-line">:1029A000DF91CF911F910F91FF90EF90DF90CF902B
</td> + </tr> + <tr> + <td id="L668" class="blob-num js-line-number" data-line-number="668"></td> + <td id="LC668" class="blob-code blob-code-inner js-file-line">:1029B000BF900C9452184B2D4F70612FC701269673
</td> + </tr> + <tr> + <td id="L669" class="blob-num js-line-number" data-line-number="669"></td> + <td id="LC669" class="blob-code blob-code-inner js-file-line">:1029C0000FB6F894DEBF0FBECDBFDF91CF911F9140
</td> + </tr> + <tr> + <td id="L670" class="blob-num js-line-number" data-line-number="670"></td> + <td id="LC670" class="blob-code blob-code-inner js-file-line">:1029D0000F91FF90EF90DF90CF90BF900C949F05E8
</td> + </tr> + <tr> + <td id="L671" class="blob-num js-line-number" data-line-number="671"></td> + <td id="LC671" class="blob-code blob-code-inner js-file-line">:1029E00026960FB6F894DEBF0FBECDBFDF91CF9114
</td> + </tr> + <tr> + <td id="L672" class="blob-num js-line-number" data-line-number="672"></td> + <td id="LC672" class="blob-code blob-code-inner js-file-line">:1029F0001F910F91FF90EF90DF90CF90BF900895BF
</td> + </tr> + <tr> + <td id="L673" class="blob-num js-line-number" data-line-number="673"></td> + <td id="LC673" class="blob-code blob-code-inner js-file-line">:102A00000E94FA1A0E940A1B0E94CF1A0E94241BDD
</td> + </tr> + <tr> + <td id="L674" class="blob-num js-line-number" data-line-number="674"></td> + <td id="LC674" class="blob-code blob-code-inner js-file-line">:102A10000E943D200E948D1F80E090E00E94A60F42
</td> + </tr> + <tr> + <td id="L675" class="blob-num js-line-number" data-line-number="675"></td> + <td id="LC675" class="blob-code blob-code-inner js-file-line">:102A200080E090E00C94BC0F0E94EA1A0C94001510
</td> + </tr> + <tr> + <td id="L676" class="blob-num js-line-number" data-line-number="676"></td> + <td id="LC676" class="blob-code blob-code-inner js-file-line">:102A30000E94481A292F22952F7030E02C30310542
</td> + </tr> + <tr> + <td id="L677" class="blob-num js-line-number" data-line-number="677"></td> + <td id="LC677" class="blob-code blob-code-inner js-file-line">:102A40004CF42A3031056CF4225031092230310522
</td> + </tr> + <tr> + <td id="L678" class="blob-num js-line-number" data-line-number="678"></td> + <td id="LC678" class="blob-code blob-code-inner js-file-line">:102A500088F407C02C30310549F02F30310531F0B2
</td> + </tr> + <tr> + <td id="L679" class="blob-num js-line-number" data-line-number="679"></td> + <td id="LC679" class="blob-code blob-code-inner js-file-line">:102A600009C0803E48F0803F29F406C093FB8827C8
</td> + </tr> + <tr> + <td id="L680" class="blob-num js-line-number" data-line-number="680"></td> + <td id="LC680" class="blob-code blob-code-inner js-file-line">:102A700080F9089580E0089581E00895CF93DF9371
</td> + </tr> + <tr> + <td id="L681" class="blob-num js-line-number" data-line-number="681"></td> + <td id="LC681" class="blob-code blob-code-inner js-file-line">:102A800000D000D01F92CDB7DEB70F900F900F90FF
</td> + </tr> + <tr> + <td id="L682" class="blob-num js-line-number" data-line-number="682"></td> + <td id="LC682" class="blob-code blob-code-inner js-file-line">:102A90000F900F90DF91CF910895CF93DF9300D0E7
</td> + </tr> + <tr> + <td id="L683" class="blob-num js-line-number" data-line-number="683"></td> + <td id="LC683" class="blob-code blob-code-inner js-file-line">:102AA00000D000D0CDB7DEB726960FB6F894DEBFC3
</td> + </tr> + <tr> + <td id="L684" class="blob-num js-line-number" data-line-number="684"></td> + <td id="LC684" class="blob-code blob-code-inner js-file-line">:102AB0000FBECDBFDF91CF9108951F93CF93DF93CA
</td> + </tr> + <tr> + <td id="L685" class="blob-num js-line-number" data-line-number="685"></td> + <td id="LC685" class="blob-code blob-code-inner js-file-line">:102AC000C0917B0116E080917C01C81799F0D0E09D
</td> + </tr> + <tr> + <td id="L686" class="blob-num js-line-number" data-line-number="686"></td> + <td id="LC686" class="blob-code blob-code-inner js-file-line">:102AD0001C9FF0011D9FF00D1124E358FE4F408113
</td> + </tr> + <tr> + <td id="L687" class="blob-num js-line-number" data-line-number="687"></td> + <td id="LC687" class="blob-code blob-code-inner js-file-line">:102AE000518162817381848195810E944D15219667
</td> + </tr> + <tr> + <td id="L688" class="blob-num js-line-number" data-line-number="688"></td> + <td id="LC688" class="blob-code blob-code-inner js-file-line">:102AF000C770E9CFDF91CF911F9108954091AD014B
</td> + </tr> + <tr> + <td id="L689" class="blob-num js-line-number" data-line-number="689"></td> + <td id="LC689" class="blob-code blob-code-inner js-file-line">:102B00005091AE016091AF017091B0018091B1011F
</td> + </tr> + <tr> + <td id="L690" class="blob-num js-line-number" data-line-number="690"></td> + <td id="LC690" class="blob-code blob-code-inner js-file-line">:102B10009091B2010C944D158091B20182958F7005
</td> + </tr> + <tr> + <td id="L691" class="blob-num js-line-number" data-line-number="691"></td> + <td id="LC691" class="blob-code blob-code-inner js-file-line">:102B200009F054C08091AF01882309F44FC080910F
</td> + </tr> + <tr> + <td id="L692" class="blob-num js-line-number" data-line-number="692"></td> + <td id="LC692" class="blob-code blob-code-inner js-file-line">:102B30007B01A0917C016091AD017091AE0140914B
</td> + </tr> + <tr> + <td id="L693" class="blob-num js-line-number" data-line-number="693"></td> + <td id="LC693" class="blob-code blob-code-inner js-file-line">:102B4000B0015091B101B6E08A1709F43FC090E09E
</td> + </tr> + <tr> + <td id="L694" class="blob-num js-line-number" data-line-number="694"></td> + <td id="LC694" class="blob-code blob-code-inner js-file-line">:102B500041155105C1F17F3F11F46F3FA1F1B89FBD
</td> + </tr> + <tr> + <td id="L695" class="blob-num js-line-number" data-line-number="695"></td> + <td id="LC695" class="blob-code blob-code-inner js-file-line">:102B6000F001B99FF00D1124E358FE4F218172133B
</td> + </tr> + <tr> + <td id="L696" class="blob-num js-line-number" data-line-number="696"></td> + <td id="LC696" class="blob-code blob-code-inner js-file-line">:102B70002AC02081621327C02281211124C0238111
</td> + </tr> + <tr> + <td id="L697" class="blob-num js-line-number" data-line-number="697"></td> + <td id="LC697" class="blob-code blob-code-inner js-file-line">:102B800034812417350710F421503109241B350BEB
</td> + </tr> + <tr> + <td id="L698" class="blob-num js-line-number" data-line-number="698"></td> + <td id="LC698" class="blob-code blob-code-inner js-file-line">:102B9000283C3105C0F42091B2012F7020612093B0
</td> + </tr> + <tr> + <td id="L699" class="blob-num js-line-number" data-line-number="699"></td> + <td id="LC699" class="blob-code blob-code-inner js-file-line">:102BA000B20126E0289FF001299FF00D1124EE5775
</td> + </tr> + <tr> + <td id="L700" class="blob-num js-line-number" data-line-number="700"></td> + <td id="LC700" class="blob-code blob-code-inner js-file-line">:102BB000FE4F80818F70806180838DEA91E00E945A
</td> + </tr> + <tr> + <td id="L701" class="blob-num js-line-number" data-line-number="701"></td> + <td id="LC701" class="blob-code blob-code-inner js-file-line">:102BC000D2110C945D1501968770BECF0895CF92F7
</td> + </tr> + <tr> + <td id="L702" class="blob-num js-line-number" data-line-number="702"></td> + <td id="LC702" class="blob-code blob-code-inner js-file-line">:102BD000DF92EF92FF920F931F93CF93DF93CDB7C6
</td> + </tr> + <tr> + <td id="L703" class="blob-num js-line-number" data-line-number="703"></td> + <td id="LC703" class="blob-code blob-code-inner js-file-line">:102BE000DEB762970FB6F894DEBF0FBECDBF8C0183
</td> + </tr> + <tr> + <td id="L704" class="blob-num js-line-number" data-line-number="704"></td> + <td id="LC704" class="blob-code blob-code-inner js-file-line">:102BF00085E0F801DE011D9601900D928A95E1F7BE
</td> + </tr> + <tr> + <td id="L705" class="blob-num js-line-number" data-line-number="705"></td> + <td id="LC705" class="blob-code blob-code-inner js-file-line">:102C0000D8014C9111965C91119712966C91129784
</td> + </tr> + <tr> + <td id="L706" class="blob-num js-line-number" data-line-number="706"></td> + <td id="LC706" class="blob-code blob-code-inner js-file-line">:102C10001396CD90DC9014973091AD017091AE0178
</td> + </tr> + <tr> + <td id="L707" class="blob-num js-line-number" data-line-number="707"></td> + <td id="LC707" class="blob-code blob-code-inner js-file-line">:102C20008091B0019091B101009709F46BC17F3F91
</td> + </tr> + <tr> + <td id="L708" class="blob-num js-line-number" data-line-number="708"></td> + <td id="LC708" class="blob-code blob-code-inner js-file-line">:102C300019F43F3F09F466C1E090AF01EE2009F4BA
</td> + </tr> + <tr> + <td id="L709" class="blob-num js-line-number" data-line-number="709"></td> + <td id="LC709" class="blob-code blob-code-inner js-file-line">:102C4000C0C02091B201C816D90628F0F601E81BD1
</td> + </tr> + <tr> + <td id="L710" class="blob-num js-line-number" data-line-number="710"></td> + <td id="LC710" class="blob-code blob-code-inner js-file-line">:102C5000F90BCF0104C0809590958C0D9D1DFF242C
</td> + </tr> + <tr> + <td id="L711" class="blob-num js-line-number" data-line-number="711"></td> + <td id="LC711" class="blob-code blob-code-inner js-file-line">:102C6000F394883C910578F0F12C207F09F0C6C0E0
</td> + </tr> + <tr> + <td id="L712" class="blob-num js-line-number" data-line-number="712"></td> + <td id="LC712" class="blob-code blob-code-inner js-file-line">:102C70007C2DD98AC88A89890E943E158DEA91E007
</td> + </tr> + <tr> + <td id="L713" class="blob-num js-line-number" data-line-number="713"></td> + <td id="LC713" class="blob-code blob-code-inner js-file-line">:102C80000E94D211B1C0822F807F09F046C0751317
</td> + </tr> + <tr> + <td id="L714" class="blob-num js-line-number" data-line-number="714"></td> + <td id="LC714" class="blob-code blob-code-inner js-file-line">:102C900014C0341312C0611110C02F702061209332
</td> + </tr> + <tr> + <td id="L715" class="blob-num js-line-number" data-line-number="715"></td> + <td id="LC715" class="blob-code blob-code-inner js-file-line">:102CA000B2010E947E158DEA91E00E94D2118091BE
</td> + </tr> + <tr> + <td id="L716" class="blob-num js-line-number" data-line-number="716"></td> + <td id="LC716" class="blob-code blob-code-inner js-file-line">:102CB000B201D80115968C932EC0CD2819F15F3F33
</td> + </tr> + <tr> + <td id="L717" class="blob-num js-line-number" data-line-number="717"></td> + <td id="LC717" class="blob-code blob-code-inner js-file-line">:102CC00011F44F3FF9F0F62E61111CC080917B0189
</td> + </tr> + <tr> + <td id="L718" class="blob-num js-line-number" data-line-number="718"></td> + <td id="LC718" class="blob-code blob-code-inner js-file-line">:102CD00020917C0136E0821709F45AC090E0389FB9
</td> + </tr> + <tr> + <td id="L719" class="blob-num js-line-number" data-line-number="719"></td> + <td id="LC719" class="blob-code blob-code-inner js-file-line">:102CE000F001399FF00D1124E358FE4F7181571305
</td> + </tr> + <tr> + <td id="L720" class="blob-num js-line-number" data-line-number="720"></td> + <td id="LC720" class="blob-code blob-code-inner js-file-line">:102CF00006C07081471303C07281711103C0019631
</td> + </tr> + <tr> + <td id="L721" class="blob-num js-line-number" data-line-number="721"></td> + <td id="LC721" class="blob-code blob-code-inner js-file-line">:102D00008770E9CFF62E662309F418C18091B201CD
</td> + </tr> + <tr> + <td id="L722" class="blob-num js-line-number" data-line-number="722"></td> + <td id="LC722" class="blob-code blob-code-inner js-file-line">:102D100081608093B201F12C11C1751308C0341386
</td> + </tr> + <tr> + <td id="L723" class="blob-num js-line-number" data-line-number="723"></td> + <td id="LC723" class="blob-code blob-code-inner js-file-line">:102D200006C0611104C08091B201D801C3C04D87B3
</td> + </tr> + <tr> + <td id="L724" class="blob-num js-line-number" data-line-number="724"></td> + <td id="LC724" class="blob-code blob-code-inner js-file-line">:102D30005E878D859E856A8B0E9418156A89882317
</td> + </tr> + <tr> + <td id="L725" class="blob-num js-line-number" data-line-number="725"></td> + <td id="LC725" class="blob-code blob-code-inner js-file-line">:102D4000E1F16623D1F12091B201822F82958F703B
</td> + </tr> + <tr> + <td id="L726" class="blob-num js-line-number" data-line-number="726"></td> + <td id="LC726" class="blob-code blob-code-inner js-file-line">:102D500090E0029774F08091AD019091AE01988758
</td> + </tr> + <tr> + <td id="L727" class="blob-num js-line-number" data-line-number="727"></td> + <td id="LC727" class="blob-code blob-code-inner js-file-line">:102D60008F831986DB86CA862C87CE0107960E9440
</td> + </tr> + <tr> + <td id="L728" class="blob-num js-line-number" data-line-number="728"></td> + <td id="LC728" class="blob-code blob-code-inner js-file-line">:102D7000D21186E0F801ADEAB1E001900D928A959A
</td> + </tr> + <tr> + <td id="L729" class="blob-num js-line-number" data-line-number="729"></td> + <td id="LC729" class="blob-code blob-code-inner js-file-line">:102D8000E1F70E948C150E947E15FF24F394D6C0B3
</td> + </tr> + <tr> + <td id="L730" class="blob-num js-line-number" data-line-number="730"></td> + <td id="LC730" class="blob-code blob-code-inner js-file-line">:102D90004D875E878D859E850E94481A292F229532
</td> + </tr> + <tr> + <td id="L731" class="blob-num js-line-number" data-line-number="731"></td> + <td id="LC731" class="blob-code blob-code-inner js-file-line">:102DA0002F7030E0223031050CF0BCC09F7009F06C
</td> + </tr> + <tr> + <td id="L732" class="blob-num js-line-number" data-line-number="732"></td> + <td id="LC732" class="blob-code blob-code-inner js-file-line">:102DB000B6C0805E883008F4C1C0C8010E94D2113C
</td> + </tr> + <tr> + <td id="L733" class="blob-num js-line-number" data-line-number="733"></td> + <td id="LC733" class="blob-code blob-code-inner js-file-line">:102DC000E4CFC816D90608F453C0F601E81BF90B86
</td> + </tr> + <tr> + <td id="L734" class="blob-num js-line-number" data-line-number="734"></td> + <td id="LC734" class="blob-code blob-code-inner js-file-line">:102DD000CF01883C910508F450C0F12C7C2DD98A94
</td> + </tr> + <tr> + <td id="L735" class="blob-num js-line-number" data-line-number="735"></td> + <td id="LC735" class="blob-code blob-code-inner js-file-line">:102DE000C88A89890E943E15EDEAF1E086E0DF019C
</td> + </tr> + <tr> + <td id="L736" class="blob-num js-line-number" data-line-number="736"></td> + <td id="LC736" class="blob-code blob-code-inner js-file-line">:102DF0001D928A95E9F70E947E15A0C0751314C034
</td> + </tr> + <tr> + <td id="L737" class="blob-num js-line-number" data-line-number="737"></td> + <td id="LC737" class="blob-code blob-code-inner js-file-line">:102E0000341312C0611110C08091B201F8018583A2
</td> + </tr> + <tr> + <td id="L738" class="blob-num js-line-number" data-line-number="738"></td> + <td id="LC738" class="blob-code blob-code-inner js-file-line">:102E1000C8010E94D21186E0EDEAF1E0DF011D92C7
</td> + </tr> + <tr> + <td id="L739" class="blob-num js-line-number" data-line-number="739"></td> + <td id="LC739" class="blob-code blob-code-inner js-file-line">:102E20008A95E9F7FE2C8AC04D875E878D859E8541
</td> + </tr> + <tr> + <td id="L740" class="blob-num js-line-number" data-line-number="740"></td> + <td id="LC740" class="blob-code blob-code-inner js-file-line">:102E30006A8B0E9418156A89882309F4BECF66231D
</td> + </tr> + <tr> + <td id="L741" class="blob-num js-line-number" data-line-number="741"></td> + <td id="LC741" class="blob-code blob-code-inner js-file-line">:102E400009F4BBCF2091B201822F82958F7090E060
</td> + </tr> + <tr> + <td id="L742" class="blob-num js-line-number" data-line-number="742"></td> + <td id="LC742" class="blob-code blob-code-inner js-file-line">:102E500002970CF48ECF8091AD019091AE019A83D0
</td> + </tr> + <tr> + <td id="L743" class="blob-num js-line-number" data-line-number="743"></td> + <td id="LC743" class="blob-code blob-code-inner js-file-line">:102E600089831B82DD82CC822E83CE0101967FCFA7
</td> + </tr> + <tr> + <td id="L744" class="blob-num js-line-number" data-line-number="744"></td> + <td id="LC744" class="blob-code blob-code-inner js-file-line">:102E7000809590958C0D9D1DACCFF62E662309F4A0
</td> + </tr> + <tr> + <td id="L745" class="blob-num js-line-number" data-line-number="745"></td> + <td id="LC745" class="blob-code blob-code-inner js-file-line">:102E80009CCF75132EC034132CC02091B20120FDAD
</td> + </tr> + <tr> + <td id="L746" class="blob-num js-line-number" data-line-number="746"></td> + <td id="LC746" class="blob-code blob-code-inner js-file-line">:102E90001FC0822F82958F70D9F0D80115962C9380
</td> + </tr> + <tr> + <td id="L747" class="blob-num js-line-number" data-line-number="747"></td> + <td id="LC747" class="blob-code blob-code-inner js-file-line">:102EA00015978F3049F08F5F982F9295907F822FE2
</td> + </tr> + <tr> + <td id="L748" class="blob-num js-line-number" data-line-number="748"></td> + <td id="LC748" class="blob-code blob-code-inner js-file-line">:102EB0008F70892B15968C93C8010E94D21186E0E1
</td> + </tr> + <tr> + <td id="L749" class="blob-num js-line-number" data-line-number="749"></td> + <td id="LC749" class="blob-code blob-code-inner js-file-line">:102EC000F801ADEAB1E001900D928A95E1F793CF58
</td> + </tr> + <tr> + <td id="L750" class="blob-num js-line-number" data-line-number="750"></td> + <td id="LC750" class="blob-code blob-code-inner js-file-line">:102ED00086E0F801ADEAB1E001900D928A95E1F744
</td> + </tr> + <tr> + <td id="L751" class="blob-num js-line-number" data-line-number="751"></td> + <td id="LC751" class="blob-code blob-code-inner js-file-line">:102EE0002DC04D875E878D859E850E9418158111A6
</td> + </tr> + <tr> + <td id="L752" class="blob-num js-line-number" data-line-number="752"></td> + <td id="LC752" class="blob-code blob-code-inner js-file-line">:102EF00040CF8091B20181608093B201C8010E94ED
</td> + </tr> + <tr> + <td id="L753" class="blob-num js-line-number" data-line-number="753"></td> + <td id="LC753" class="blob-code blob-code-inner js-file-line">:102F0000D2111CC0662309F458CF4D875E878D858A
</td> + </tr> + <tr> + <td id="L754" class="blob-num js-line-number" data-line-number="754"></td> + <td id="LC754" class="blob-code blob-code-inner js-file-line">:102F10009E850E941815882309F44FCF2ACF81116E
</td> + </tr> + <tr> + <td id="L755" class="blob-num js-line-number" data-line-number="755"></td> + <td id="LC755" class="blob-code blob-code-inner js-file-line">:102F200048CF0CC0243031050CF047CF9F7009F416
</td> + </tr> + <tr> + <td id="L756" class="blob-num js-line-number" data-line-number="756"></td> + <td id="LC756" class="blob-code blob-code-inner js-file-line">:102F300040CFF8019581907F09F03BCF8F2D6296AD
</td> + </tr> + <tr> + <td id="L757" class="blob-num js-line-number" data-line-number="757"></td> + <td id="LC757" class="blob-code blob-code-inner js-file-line">:102F40000FB6F894DEBF0FBECDBFDF91CF911F91BA
</td> + </tr> + <tr> + <td id="L758" class="blob-num js-line-number" data-line-number="758"></td> + <td id="LC758" class="blob-code blob-code-inner js-file-line">:102F50000F91FF90EF90DF90CF9008951F93CF9344
</td> + </tr> + <tr> + <td id="L759" class="blob-num js-line-number" data-line-number="759"></td> + <td id="LC759" class="blob-code blob-code-inner js-file-line">:102F6000DF93CDB7DEB72C970FB6F894DEBF0FBE58
</td> + </tr> + <tr> + <td id="L760" class="blob-num js-line-number" data-line-number="760"></td> + <td id="LC760" class="blob-code blob-code-inner js-file-line">:102F7000CDBF4F83588769877A878B879C87CE011F
</td> + </tr> + <tr> + <td id="L761" class="blob-num js-line-number" data-line-number="761"></td> + <td id="LC761" class="blob-code blob-code-inner js-file-line">:102F800007960E94E715882369F08F8198852A8526
</td> + </tr> + <tr> + <td id="L762" class="blob-num js-line-number" data-line-number="762"></td> + <td id="LC762" class="blob-code blob-code-inner js-file-line">:102F90003B85232BF1F19F3F09F063C08F3F09F080
</td> + </tr> + <tr> + <td id="L763" class="blob-num js-line-number" data-line-number="763"></td> + <td id="LC763" class="blob-code blob-code-inner js-file-line">:102FA00060C037C086E0FE013796DE0111960190C1
</td> + </tr> + <tr> + <td id="L764" class="blob-num js-line-number" data-line-number="764"></td> + <td id="LC764" class="blob-code blob-code-inner js-file-line">:102FB0000D928A95E1F76F817885EA85FB853097D8
</td> + </tr> + <tr> + <td id="L765" class="blob-num js-line-number" data-line-number="765"></td> + <td id="LC765" class="blob-code blob-code-inner js-file-line">:102FC00041F17F3F11F46F3F21F120917C0130E00E
</td> + </tr> + <tr> + <td id="L766" class="blob-num js-line-number" data-line-number="766"></td> + <td id="LC766" class="blob-code blob-code-inner js-file-line">:102FD000C90101968770992740917B0150E08417C1
</td> + </tr> + <tr> + <td id="L767" class="blob-num js-line-number" data-line-number="767"></td> + <td id="LC767" class="blob-code blob-code-inner js-file-line">:102FE000950709F447C069837A83FD83EC8396E0F3
</td> + </tr> + <tr> + <td id="L768" class="blob-num js-line-number" data-line-number="768"></td> + <td id="LC768" class="blob-code blob-code-inner js-file-line">:102FF000929FD001939FB00D1124A358BE4FFE01A4
</td> + </tr> + <tr> + <td id="L769" class="blob-num js-line-number" data-line-number="769"></td> + <td id="LC769" class="blob-code blob-code-inner js-file-line">:10300000319601900D929A95E1F780937C010E9490
</td> + </tr> + <tr> + <td id="L770" class="blob-num js-line-number" data-line-number="770"></td> + <td id="LC770" class="blob-code blob-code-inner js-file-line">:103010005D1516E080917B0190917C018917C1F1CB
</td> + </tr> + <tr> + <td id="L771" class="blob-num js-line-number" data-line-number="771"></td> + <td id="LC771" class="blob-code blob-code-inner js-file-line">:10302000189FC001112483589E4F0E94E7158823E2
</td> + </tr> + <tr> + <td id="L772" class="blob-num js-line-number" data-line-number="772"></td> + <td id="LC772" class="blob-code blob-code-inner js-file-line">:1030300079F1E0917B011E9FF0011124E358FE4FCE
</td> + </tr> + <tr> + <td id="L773" class="blob-num js-line-number" data-line-number="773"></td> + <td id="LC773" class="blob-code blob-code-inner js-file-line">:103040004081518162817381848195810E944D15F7
</td> + </tr> + <tr> + <td id="L774" class="blob-num js-line-number" data-line-number="774"></td> + <td id="LC774" class="blob-code blob-code-inner js-file-line">:1030500080917B0190E001968770992780937B0196
</td> + </tr> + <tr> + <td id="L775" class="blob-num js-line-number" data-line-number="775"></td> + <td id="LC775" class="blob-code blob-code-inner js-file-line">:10306000D9CF4F81588569857A858B859C850E944B
</td> + </tr> + <tr> + <td id="L776" class="blob-num js-line-number" data-line-number="776"></td> + <td id="LC776" class="blob-code blob-code-inner js-file-line">:103070004D15CFCF0E94141510927C0110927B0148
</td> + </tr> + <tr> + <td id="L777" class="blob-num js-line-number" data-line-number="777"></td> + <td id="LC777" class="blob-code blob-code-inner js-file-line">:10308000EDEAF1E086E0DF011D928A95E9F7C1CF14
</td> + </tr> + <tr> + <td id="L778" class="blob-num js-line-number" data-line-number="778"></td> + <td id="LC778" class="blob-code blob-code-inner js-file-line">:103090002C960FB6F894DEBF0FBECDBFDF91CF9157
</td> + </tr> + <tr> + <td id="L779" class="blob-num js-line-number" data-line-number="779"></td> + <td id="LC779" class="blob-code blob-code-inner js-file-line">:1030A0001F910895EF92FF920F931F93CF93DF9399
</td> + </tr> + <tr> + <td id="L780" class="blob-num js-line-number" data-line-number="780"></td> + <td id="LC780" class="blob-code blob-code-inner js-file-line">:1030B0008C01892B09F46CC0F12CEE24E394E80117
</td> + </tr> + <tr> + <td id="L781" class="blob-num js-line-number" data-line-number="781"></td> + <td id="LC781" class="blob-code blob-code-inner js-file-line">:1030C0002196F8018491843740F4843008F051C08F
</td> + </tr> + <tr> + <td id="L782" class="blob-num js-line-number" data-line-number="782"></td> + <td id="LC782" class="blob-code blob-code-inner js-file-line">:1030D000813081F0823019F15BC0853709F444C03A
</td> + </tr> + <tr> + <td id="L783" class="blob-num js-line-number" data-line-number="783"></td> + <td id="LC783" class="blob-code blob-code-inner js-file-line">:1030E000A8F19CE7980F903708F052C08F770E94A4
</td> + </tr> + <tr> + <td id="L784" class="blob-num js-line-number" data-line-number="784"></td> + <td id="LC784" class="blob-code blob-code-inner js-file-line">:1030F000751141C00E5F1F4FFE01C49180E28C0F1D
</td> + </tr> + <tr> + <td id="L785" class="blob-num js-line-number" data-line-number="785"></td> + <td id="LC785" class="blob-code blob-code-inner js-file-line">:10310000883048F4C7708E2D01C0880FCA95EAF741
</td> + </tr> + <tr> + <td id="L786" class="blob-num js-line-number" data-line-number="786"></td> + <td id="LC786" class="blob-code blob-code-inner js-file-line">:103110000E94FD1A14C08C2F0E94AD102DC00E5FAE
</td> + </tr> + <tr> + <td id="L787" class="blob-num js-line-number" data-line-number="787"></td> + <td id="LC787" class="blob-code blob-code-inner js-file-line">:103120001F4FFE01C49180E28C0F883058F4C770A5
</td> + </tr> + <tr> + <td id="L788" class="blob-num js-line-number" data-line-number="788"></td> + <td id="LC788" class="blob-code blob-code-inner js-file-line">:103130008E2D01C0880FCA95EAF70E94031B0E94DA
</td> + </tr> + <tr> + <td id="L789" class="blob-num js-line-number" data-line-number="789"></td> + <td id="LC789" class="blob-code blob-code-inner js-file-line">:10314000241B1AC08C2F0E94751116C00E5F1F4FD2
</td> + </tr> + <tr> + <td id="L790" class="blob-num js-line-number" data-line-number="790"></td> + <td id="LC790" class="blob-code blob-code-inner js-file-line">:10315000FE01C491CC2381F08FE99FE00197F1F744
</td> + </tr> + <tr> + <td id="L791" class="blob-num js-line-number" data-line-number="791"></td> + <td id="LC791" class="blob-code blob-code-inner js-file-line">:1031600000C00000C150F6CF0E5F1F4FFE01F4906B
</td> + </tr> + <tr> + <td id="L792" class="blob-num js-line-number" data-line-number="792"></td> + <td id="LC792" class="blob-code blob-code-inner js-file-line">:1031700003C00E94AD108E018F2D882309F49FCFCC
</td> + </tr> + <tr> + <td id="L793" class="blob-num js-line-number" data-line-number="793"></td> + <td id="LC793" class="blob-code blob-code-inner js-file-line">:10318000EFE9FFE03197F1F700C000008150F5CF83
</td> + </tr> + <tr> + <td id="L794" class="blob-num js-line-number" data-line-number="794"></td> + <td id="LC794" class="blob-code blob-code-inner js-file-line">:10319000DF91CF911F910F91FF90EF9008950895C7
</td> + </tr> + <tr> + <td id="L795" class="blob-num js-line-number" data-line-number="795"></td> + <td id="LC795" class="blob-code blob-code-inner js-file-line">:1031A0006093B7017093B8018093B9019093BA010D
</td> + </tr> + <tr> + <td id="L796" class="blob-num js-line-number" data-line-number="796"></td> + <td id="LC796" class="blob-code blob-code-inner js-file-line">:1031B0000C9400150F931F930091B7011091B80163
</td> + </tr> + <tr> + <td id="L797" class="blob-num js-line-number" data-line-number="797"></td> + <td id="LC797" class="blob-code blob-code-inner js-file-line">:1031C0002091B9013091BA01DC01CB01802B912B08
</td> + </tr> + <tr> + <td id="L798" class="blob-num js-line-number" data-line-number="798"></td> + <td id="LC798" class="blob-code blob-code-inner js-file-line">:1031D000A22BB32B8093B7019093B801A093B901B0
</td> + </tr> + <tr> + <td id="L799" class="blob-num js-line-number" data-line-number="799"></td> + <td id="LC799" class="blob-code blob-code-inner js-file-line">:1031E000B093BA011F910F910C9400150F931F9388
</td> + </tr> + <tr> + <td id="L800" class="blob-num js-line-number" data-line-number="800"></td> + <td id="LC800" class="blob-code blob-code-inner js-file-line">:1031F0000091B7011091B8012091B9013091BA0145
</td> + </tr> + <tr> + <td id="L801" class="blob-num js-line-number" data-line-number="801"></td> + <td id="LC801" class="blob-code blob-code-inner js-file-line">:10320000DC01CB0180239123A223B3238093B70158
</td> + </tr> + <tr> + <td id="L802" class="blob-num js-line-number" data-line-number="802"></td> + <td id="LC802" class="blob-code blob-code-inner js-file-line">:103210009093B801A093B901B093BA011F910F9197
</td> + </tr> + <tr> + <td id="L803" class="blob-num js-line-number" data-line-number="803"></td> + <td id="LC803" class="blob-code blob-code-inner js-file-line">:103220000C9400150F931F930091B7011091B801F2
</td> + </tr> + <tr> + <td id="L804" class="blob-num js-line-number" data-line-number="804"></td> + <td id="LC804" class="blob-code blob-code-inner js-file-line">:103230002091B9013091BA01DC01CB01802791279F
</td> + </tr> + <tr> + <td id="L805" class="blob-num js-line-number" data-line-number="805"></td> + <td id="LC805" class="blob-code blob-code-inner js-file-line">:10324000A227B3278093B7019093B801A093B90147
</td> + </tr> + <tr> + <td id="L806" class="blob-num js-line-number" data-line-number="806"></td> + <td id="LC806" class="blob-code blob-code-inner js-file-line">:10325000B093BA011F910F910C9400151092B30115
</td> + </tr> + <tr> + <td id="L807" class="blob-num js-line-number" data-line-number="807"></td> + <td id="LC807" class="blob-code blob-code-inner js-file-line">:103260001092B4011092B5011092B6010C940015A1
</td> + </tr> + <tr> + <td id="L808" class="blob-num js-line-number" data-line-number="808"></td> + <td id="LC808" class="blob-code blob-code-inner js-file-line">:1032700041E050E060E070E004C0440F551F661F5D
</td> + </tr> + <tr> + <td id="L809" class="blob-num js-line-number" data-line-number="809"></td> + <td id="LC809" class="blob-code blob-code-inner js-file-line">:10328000771F8A95D2F74093B3015093B4016093AE
</td> + </tr> + <tr> + <td id="L810" class="blob-num js-line-number" data-line-number="810"></td> + <td id="LC810" class="blob-code blob-code-inner js-file-line">:10329000B5017093B6010C94001541E050E060E078
</td> + </tr> + <tr> + <td id="L811" class="blob-num js-line-number" data-line-number="811"></td> + <td id="LC811" class="blob-code blob-code-inner js-file-line">:1032A00070E004C0440F551F661F771F8A95D2F740
</td> + </tr> + <tr> + <td id="L812" class="blob-num js-line-number" data-line-number="812"></td> + <td id="LC812" class="blob-code blob-code-inner js-file-line">:1032B0008091B3019091B401A091B501B091B60194
</td> + </tr> + <tr> + <td id="L813" class="blob-num js-line-number" data-line-number="813"></td> + <td id="LC813" class="blob-code blob-code-inner js-file-line">:1032C000482B592B6A2B7B2B4093B3015093B401AD
</td> + </tr> + <tr> + <td id="L814" class="blob-num js-line-number" data-line-number="814"></td> + <td id="LC814" class="blob-code blob-code-inner js-file-line">:1032D0006093B5017093B6010C94001541E050E085
</td> + </tr> + <tr> + <td id="L815" class="blob-num js-line-number" data-line-number="815"></td> + <td id="LC815" class="blob-code blob-code-inner js-file-line">:1032E00060E070E004C0440F551F661F771F8A9589
</td> + </tr> + <tr> + <td id="L816" class="blob-num js-line-number" data-line-number="816"></td> + <td id="LC816" class="blob-code blob-code-inner js-file-line">:1032F000D2F740955095609570958091B30190916B
</td> + </tr> + <tr> + <td id="L817" class="blob-num js-line-number" data-line-number="817"></td> + <td id="LC817" class="blob-code blob-code-inner js-file-line">:10330000B401A091B501B091B601482359236A23B5
</td> + </tr> + <tr> + <td id="L818" class="blob-num js-line-number" data-line-number="818"></td> + <td id="LC818" class="blob-code blob-code-inner js-file-line">:103310007B234093B3015093B4016093B501709344
</td> + </tr> + <tr> + <td id="L819" class="blob-num js-line-number" data-line-number="819"></td> + <td id="LC819" class="blob-code blob-code-inner js-file-line">:10332000B6010C94001541E050E060E070E004C08C
</td> + </tr> + <tr> + <td id="L820" class="blob-num js-line-number" data-line-number="820"></td> + <td id="LC820" class="blob-code blob-code-inner js-file-line">:10333000440F551F661F771F8A95D2F78091B301FE
</td> + </tr> + <tr> + <td id="L821" class="blob-num js-line-number" data-line-number="821"></td> + <td id="LC821" class="blob-code blob-code-inner js-file-line">:103340009091B401A091B501B091B60148275927D9
</td> + </tr> + <tr> + <td id="L822" class="blob-num js-line-number" data-line-number="822"></td> + <td id="LC822" class="blob-code blob-code-inner js-file-line">:103350006A277B274093B3015093B4016093B50172
</td> + </tr> + <tr> + <td id="L823" class="blob-num js-line-number" data-line-number="823"></td> + <td id="LC823" class="blob-code blob-code-inner js-file-line">:103360007093B6010C9400150F931F930091B30155
</td> + </tr> + <tr> + <td id="L824" class="blob-num js-line-number" data-line-number="824"></td> + <td id="LC824" class="blob-code blob-code-inner js-file-line">:103370001091B4012091B5013091B601DC01CB016F
</td> + </tr> + <tr> + <td id="L825" class="blob-num js-line-number" data-line-number="825"></td> + <td id="LC825" class="blob-code blob-code-inner js-file-line">:10338000802B912BA22BB32B8093B3019093B4018C
</td> + </tr> + <tr> + <td id="L826" class="blob-num js-line-number" data-line-number="826"></td> + <td id="LC826" class="blob-code blob-code-inner js-file-line">:10339000A093B501B093B6011F910F910C94001545
</td> + </tr> + <tr> + <td id="L827" class="blob-num js-line-number" data-line-number="827"></td> + <td id="LC827" class="blob-code blob-code-inner js-file-line">:1033A0000F931F930091B3011091B4012091B501C7
</td> + </tr> + <tr> + <td id="L828" class="blob-num js-line-number" data-line-number="828"></td> + <td id="LC828" class="blob-code blob-code-inner js-file-line">:1033B0003091B601DC01CB0180239123A223B323FA
</td> + </tr> + <tr> + <td id="L829" class="blob-num js-line-number" data-line-number="829"></td> + <td id="LC829" class="blob-code blob-code-inner js-file-line">:1033C0008093B3019093B401A093B501B093B6017B
</td> + </tr> + <tr> + <td id="L830" class="blob-num js-line-number" data-line-number="830"></td> + <td id="LC830" class="blob-code blob-code-inner js-file-line">:1033D0001F910F910C9400150F931F930091B3014F
</td> + </tr> + <tr> + <td id="L831" class="blob-num js-line-number" data-line-number="831"></td> + <td id="LC831" class="blob-code blob-code-inner js-file-line">:1033E0001091B4012091B5013091B601DC01CB01FF
</td> + </tr> + <tr> + <td id="L832" class="blob-num js-line-number" data-line-number="832"></td> + <td id="LC832" class="blob-code blob-code-inner js-file-line">:1033F00080279127A227B3278093B3019093B4012C
</td> + </tr> + <tr> + <td id="L833" class="blob-num js-line-number" data-line-number="833"></td> + <td id="LC833" class="blob-code blob-code-inner js-file-line">:10340000A093B501B093B6011F910F910C940015D4
</td> + </tr> + <tr> + <td id="L834" class="blob-num js-line-number" data-line-number="834"></td> + <td id="LC834" class="blob-code blob-code-inner js-file-line">:103410000895CF92DF92EF92FF920F931F93CF9375
</td> + </tr> + <tr> + <td id="L835" class="blob-num js-line-number" data-line-number="835"></td> + <td id="LC835" class="blob-code blob-code-inner js-file-line">:10342000DF938C01C090B701D090B801E090B90152
</td> + </tr> + <tr> + <td id="L836" class="blob-num js-line-number" data-line-number="836"></td> + <td id="LC836" class="blob-code blob-code-inner js-file-line">:10343000F090BA018091B3019091B401A091B501CF
</td> + </tr> + <tr> + <td id="L837" class="blob-num js-line-number" data-line-number="837"></td> + <td id="LC837" class="blob-code blob-code-inner js-file-line">:10344000B091B601C82AD92AEA2AFB2ACFE1D0E0F6
</td> + </tr> + <tr> + <td id="L838" class="blob-num js-line-number" data-line-number="838"></td> + <td id="LC838" class="blob-code blob-code-inner js-file-line">:10345000D701C6010C2E04C0B695A7959795879500
</td> + </tr> + <tr> + <td id="L839" class="blob-num js-line-number" data-line-number="839"></td> + <td id="LC839" class="blob-code blob-code-inner js-file-line">:103460000A94D2F780FF06C0B8018C2F0E94DF07B4
</td> + </tr> + <tr> + <td id="L840" class="blob-num js-line-number" data-line-number="840"></td> + <td id="LC840" class="blob-code blob-code-inner js-file-line">:10347000019721F4219760F780E001C08C2FDF9144
</td> + </tr> + <tr> + <td id="L841" class="blob-num js-line-number" data-line-number="841"></td> + <td id="LC841" class="blob-code blob-code-inner js-file-line">:10348000CF911F910F91FF90EF90DF90CF90089513
</td> + </tr> + <tr> + <td id="L842" class="blob-num js-line-number" data-line-number="842"></td> + <td id="LC842" class="blob-code blob-code-inner js-file-line">:10349000CF93DF93EC010E94091ABE010E94DF075F
</td> + </tr> + <tr> + <td id="L843" class="blob-num js-line-number" data-line-number="843"></td> + <td id="LC843" class="blob-code blob-code-inner js-file-line">:1034A000DF91CF910895CB010E94481A0895909121
</td> + </tr> + <tr> + <td id="L844" class="blob-num js-line-number" data-line-number="844"></td> + <td id="LC844" class="blob-code blob-code-inner js-file-line">:1034B0000C01992321F090910D01911109C02091E7
</td> + </tr> + <tr> + <td id="L845" class="blob-num js-line-number" data-line-number="845"></td> + <td id="LC845" class="blob-code blob-code-inner js-file-line">:1034C0000E0130910F01F90132969FEF40E01FC0CD
</td> + </tr> + <tr> + <td id="L846" class="blob-num js-line-number" data-line-number="846"></td> + <td id="LC846" class="blob-code blob-code-inner js-file-line">:1034D000982F9695969596959F3050F5E0910E0110
</td> + </tr> + <tr> + <td id="L847" class="blob-num js-line-number" data-line-number="847"></td> + <td id="LC847" class="blob-code blob-code-inner js-file-line">:1034E000F0910F01E90FF11D877021E030E0A90193
</td> + </tr> + <tr> + <td id="L848" class="blob-num js-line-number" data-line-number="848"></td> + <td id="LC848" class="blob-code blob-code-inner js-file-line">:1034F00002C0440F551F8A95E2F7CA019181892BBA
</td> + </tr> + <tr> + <td id="L849" class="blob-num js-line-number" data-line-number="849"></td> + <td id="LC849" class="blob-code blob-code-inner js-file-line">:10350000818308959F3F39F04F5F4E3041F05191D4
</td> + </tr> + <tr> + <td id="L850" class="blob-num js-line-number" data-line-number="850"></td> + <td id="LC850" class="blob-code blob-code-inner js-file-line">:103510005813F8CF0DC05111F7CF942FF5CF9F3F1F
</td> + </tr> + <tr> + <td id="L851" class="blob-num js-line-number" data-line-number="851"></td> + <td id="LC851" class="blob-code blob-code-inner js-file-line">:1035200039F0F901E90FF11D97FDFA9582830895AD
</td> + </tr> + <tr> + <td id="L852" class="blob-num js-line-number" data-line-number="852"></td> + <td id="LC852" class="blob-code blob-code-inner js-file-line">:10353000089590910C01992321F090910D01911122
</td> + </tr> + <tr> + <td id="L853" class="blob-num js-line-number" data-line-number="853"></td> + <td id="LC853" class="blob-code blob-code-inner js-file-line">:1035400009C020910E0130910F01F9013296205FE0
</td> + </tr> + <tr> + <td id="L854" class="blob-num js-line-number" data-line-number="854"></td> + <td id="LC854" class="blob-code blob-code-inner js-file-line">:103550003F4F1FC0982F9695969596959F30F0F403
</td> + </tr> + <tr> + <td id="L855" class="blob-num js-line-number" data-line-number="855"></td> + <td id="LC855" class="blob-code blob-code-inner js-file-line">:10356000E0910E01F0910F01E90FF11D877021E04C
</td> + </tr> + <tr> + <td id="L856" class="blob-num js-line-number" data-line-number="856"></td> + <td id="LC856" class="blob-code blob-code-inner js-file-line">:1035700030E0A90102C0440F551F8A95E2F7CA0145
</td> + </tr> + <tr> + <td id="L857" class="blob-num js-line-number" data-line-number="857"></td> + <td id="LC857" class="blob-code blob-code-inner js-file-line">:10358000809591818923818308953196E217F3070D
</td> + </tr> + <tr> + <td id="L858" class="blob-num js-line-number" data-line-number="858"></td> + <td id="LC858" class="blob-code blob-code-inner js-file-line">:1035900029F090819813F9CF1082F7CF089581E038
</td> + </tr> + <tr> + <td id="L859" class="blob-num js-line-number" data-line-number="859"></td> + <td id="LC859" class="blob-code blob-code-inner js-file-line">:1035A00090E0E0910E01F0910F01E80FF91F1082F9
</td> + </tr> + <tr> + <td id="L860" class="blob-num js-line-number" data-line-number="860"></td> + <td id="LC860" class="blob-code blob-code-inner js-file-line">:1035B000019680319105A9F708959091CE01892B4C
</td> + </tr> + <tr> + <td id="L861" class="blob-num js-line-number" data-line-number="861"></td> + <td id="LC861" class="blob-code blob-code-inner js-file-line">:1035C0008093CE01089580959091CE0189238093B8
</td> + </tr> + <tr> + <td id="L862" class="blob-num js-line-number" data-line-number="862"></td> + <td id="LC862" class="blob-code blob-code-inner js-file-line">:1035D000CE0108951092CE0108959091CD01892BCE
</td> + </tr> + <tr> + <td id="L863" class="blob-num js-line-number" data-line-number="863"></td> + <td id="LC863" class="blob-code blob-code-inner js-file-line">:1035E0008093CD01089580959091CD01892380939A
</td> + </tr> + <tr> + <td id="L864" class="blob-num js-line-number" data-line-number="864"></td> + <td id="LC864" class="blob-code blob-code-inner js-file-line">:1035F000CD0108951092CD0108959091CC01892BB1
</td> + </tr> + <tr> + <td id="L865" class="blob-num js-line-number" data-line-number="865"></td> + <td id="LC865" class="blob-code blob-code-inner js-file-line">:103600008093CC01089580959091CC01892380937B
</td> + </tr> + <tr> + <td id="L866" class="blob-num js-line-number" data-line-number="866"></td> + <td id="LC866" class="blob-code blob-code-inner js-file-line">:10361000CC0108951092CC0108958093BB010895C8
</td> + </tr> + <tr> + <td id="L867" class="blob-num js-line-number" data-line-number="867"></td> + <td id="LC867" class="blob-code blob-code-inner js-file-line">:103620001092BB01089580910E0190910F01FC0151
</td> + </tr> + <tr> + <td id="L868" class="blob-num js-line-number" data-line-number="868"></td> + <td id="LC868" class="blob-code blob-code-inner js-file-line">:1036300031969C01205F3F4F80E0919191118F5F07
</td> + </tr> + <tr> + <td id="L869" class="blob-num js-line-number" data-line-number="869"></td> + <td id="LC869" class="blob-code blob-code-inner js-file-line">:10364000E217F307D1F70895E0910E01F0910F0111
</td> + </tr> + <tr> + <td id="L870" class="blob-num js-line-number" data-line-number="870"></td> + <td id="LC870" class="blob-code blob-code-inner js-file-line">:103650008091CE018083E0910E01F0910F01908165
</td> + </tr> + <tr> + <td id="L871" class="blob-num js-line-number" data-line-number="871"></td> + <td id="LC871" class="blob-code blob-code-inner js-file-line">:103660008091CD01892B8083E0910E01F0910F01B3
</td> + </tr> + <tr> + <td id="L872" class="blob-num js-line-number" data-line-number="872"></td> + <td id="LC872" class="blob-code blob-code-inner js-file-line">:1036700090818091CC01892B80838091BB0188232C
</td> + </tr> + <tr> + <td id="L873" class="blob-num js-line-number" data-line-number="873"></td> + <td id="LC873" class="blob-code blob-code-inner js-file-line">:1036800061F0E0910E01F0910F019081892B808310
</td> + </tr> + <tr> + <td id="L874" class="blob-num js-line-number" data-line-number="874"></td> + <td id="LC874" class="blob-code blob-code-inner js-file-line">:103690000E94131B81111092BB0180910E01909129
</td> + </tr> + <tr> + <td id="L875" class="blob-num js-line-number" data-line-number="875"></td> + <td id="LC875" class="blob-code blob-code-inner js-file-line">:1036A0000F010C94900FCF92DF92EF92FF926C017A
</td> + </tr> + <tr> + <td id="L876" class="blob-num js-line-number" data-line-number="876"></td> + <td id="LC876" class="blob-code blob-code-inner js-file-line">:1036B000EE24FF24C114D104E104F10421F0C70178
</td> + </tr> + <tr> + <td id="L877" class="blob-num js-line-number" data-line-number="877"></td> + <td id="LC877" class="blob-code blob-code-inner js-file-line">:1036C000B60120E101C020E0C72ED82EE92EFF244C
</td> + </tr> + <tr> + <td id="L878" class="blob-num js-line-number" data-line-number="878"></td> + <td id="LC878" class="blob-code blob-code-inner js-file-line">:1036D000C114D104E104F10419F0285FC701B60157
</td> + </tr> + <tr> + <td id="L879" class="blob-num js-line-number" data-line-number="879"></td> + <td id="LC879" class="blob-code blob-code-inner js-file-line">:1036E0006B017C0154E0F694E794D794C7945A9503
</td> + </tr> + <tr> + <td id="L880" class="blob-num js-line-number" data-line-number="880"></td> + <td id="LC880" class="blob-code blob-code-inner js-file-line">:1036F000D1F7C114D104E104F10419F02C5FC70122
</td> + </tr> + <tr> + <td id="L881" class="blob-num js-line-number" data-line-number="881"></td> + <td id="LC881" class="blob-code blob-code-inner js-file-line">:10370000B6016B017C0142E0F694E794D794C7942C
</td> + </tr> + <tr> + <td id="L882" class="blob-num js-line-number" data-line-number="882"></td> + <td id="LC882" class="blob-code blob-code-inner js-file-line">:103710004A95D1F7C114D104E104F10419F02E5FE8
</td> + </tr> + <tr> + <td id="L883" class="blob-num js-line-number" data-line-number="883"></td> + <td id="LC883" class="blob-code blob-code-inner js-file-line">:10372000C701B601DC01CB01B695A79597958795A2
</td> + </tr> + <tr> + <td id="L884" class="blob-num js-line-number" data-line-number="884"></td> + <td id="LC884" class="blob-code blob-code-inner js-file-line">:10373000892B8A2B8B2B09F02F5F822FFF90EF9024
</td> + </tr> + <tr> + <td id="L885" class="blob-num js-line-number" data-line-number="885"></td> + <td id="LC885" class="blob-code blob-code-inner js-file-line">:10374000DF90CF9008958091E601843039F1109296
</td> + </tr> + <tr> + <td id="L886" class="blob-num js-line-number" data-line-number="886"></td> + <td id="LC886" class="blob-code blob-code-inner js-file-line">:10375000D00120E488E190E00FB6F894A89580931A
</td> + </tr> + <tr> + <td id="L887" class="blob-num js-line-number" data-line-number="887"></td> + <td id="LC887" class="blob-code blob-code-inner js-file-line">:1037600060000FBE2093600080E00E947A0883B75B
</td> + </tr> + <tr> + <td id="L888" class="blob-num js-line-number" data-line-number="888"></td> + <td id="LC888" class="blob-code blob-code-inner js-file-line">:10377000817F846083BF83B7816083BF789488959D
</td> + </tr> + <tr> + <td id="L889" class="blob-num js-line-number" data-line-number="889"></td> + <td id="LC889" class="blob-code blob-code-inner js-file-line">:1037800083B78E7F83BF0FB6F894A89580916000B1
</td> + </tr> + <tr> + <td id="L890" class="blob-num js-line-number" data-line-number="890"></td> + <td id="LC890" class="blob-code blob-code-inner js-file-line">:10379000886180936000109260000FBE08950895C4
</td> + </tr> + <tr> + <td id="L891" class="blob-num js-line-number" data-line-number="891"></td> + <td id="LC891" class="blob-code blob-code-inner js-file-line">:1037A0000895CF930E94CF1B0E94AA040E94D01BB1
</td> + </tr> + <tr> + <td id="L892" class="blob-num js-line-number" data-line-number="892"></td> + <td id="LC892" class="blob-code blob-code-inner js-file-line">:1037B000C0E08C2F0E949805811104C0CF5FCE30ED
</td> + </tr> + <tr> + <td id="L893" class="blob-num js-line-number" data-line-number="893"></td> + <td id="LC893" class="blob-code blob-code-inner js-file-line">:1037C000C1F701C081E0CF9108950E9414150E94B5
</td> + </tr> + <tr> + <td id="L894" class="blob-num js-line-number" data-line-number="894"></td> + <td id="LC894" class="blob-code blob-code-inner js-file-line">:1037D000840F0C947A0882E084BD93E095BD9AEF43
</td> + </tr> + <tr> + <td id="L895" class="blob-num js-line-number" data-line-number="895"></td> + <td id="LC895" class="blob-code blob-code-inner js-file-line">:1037E00097BD80936E0008952FB7F8948091D10112
</td> + </tr> + <tr> + <td id="L896" class="blob-num js-line-number" data-line-number="896"></td> + <td id="LC896" class="blob-code blob-code-inner js-file-line">:1037F0009091D201A091D301B091D4012FBF08952F
</td> + </tr> + <tr> + <td id="L897" class="blob-num js-line-number" data-line-number="897"></td> + <td id="LC897" class="blob-code blob-code-inner js-file-line">:10380000CF92DF92EF92FF920F931F932FB7F8940E
</td> + </tr> + <tr> + <td id="L898" class="blob-num js-line-number" data-line-number="898"></td> + <td id="LC898" class="blob-code blob-code-inner js-file-line">:103810004091D1015091D2016091D3017091D401B6
</td> + </tr> + <tr> + <td id="L899" class="blob-num js-line-number" data-line-number="899"></td> + <td id="LC899" class="blob-code blob-code-inner js-file-line">:103820002FBF6A017B01EE24FF248C0120E030E0F1
</td> + </tr> + <tr> + <td id="L900" class="blob-num js-line-number" data-line-number="900"></td> + <td id="LC900" class="blob-code blob-code-inner js-file-line">:10383000C016D106E206F30610F4415051099A0170
</td> + </tr> + <tr> + <td id="L901" class="blob-num js-line-number" data-line-number="901"></td> + <td id="LC901" class="blob-code blob-code-inner js-file-line">:10384000281B390BC9011F910F91FF90EF90DF905A
</td> + </tr> + <tr> + <td id="L902" class="blob-num js-line-number" data-line-number="902"></td> + <td id="LC902" class="blob-code blob-code-inner js-file-line">:10385000CF9008951F920F920FB60F9211248F935D
</td> + </tr> + <tr> + <td id="L903" class="blob-num js-line-number" data-line-number="903"></td> + <td id="LC903" class="blob-code blob-code-inner js-file-line">:103860009F93AF93BF938091D1019091D201A0918A
</td> + </tr> + <tr> + <td id="L904" class="blob-num js-line-number" data-line-number="904"></td> + <td id="LC904" class="blob-code blob-code-inner js-file-line">:10387000D301B091D4010196A11DB11D8093D10156
</td> + </tr> + <tr> + <td id="L905" class="blob-num js-line-number" data-line-number="905"></td> + <td id="LC905" class="blob-code blob-code-inner js-file-line">:103880009093D201A093D301B093D401BF91AF9193
</td> + </tr> + <tr> + <td id="L906" class="blob-num js-line-number" data-line-number="906"></td> + <td id="LC906" class="blob-code blob-code-inner js-file-line">:103890009F918F910F900FBE0F901F9018950E94CF
</td> + </tr> + <tr> + <td id="L907" class="blob-num js-line-number" data-line-number="907"></td> + <td id="LC907" class="blob-code blob-code-inner js-file-line">:1038A000810CF8942FEF87EA91E6215080409040F8
</td> + </tr> + <tr> + <td id="L908" class="blob-num js-line-number" data-line-number="908"></td> + <td id="LC908" class="blob-code blob-code-inner js-file-line">:1038B000E1F700C0000087E090EBDC018093F001AD
</td> + </tr> + <tr> + <td id="L909" class="blob-num js-line-number" data-line-number="909"></td> + <td id="LC909" class="blob-code blob-code-inner js-file-line">:1038C0009093F101A093F201B093F3019CE088E1A1
</td> + </tr> + <tr> + <td id="L910" class="blob-num js-line-number" data-line-number="910"></td> + <td id="LC910" class="blob-code blob-code-inner js-file-line">:1038D0000FB6F894A895809360000FBE9093600097
</td> + </tr> + <tr> + <td id="L911" class="blob-num js-line-number" data-line-number="911"></td> + <td id="LC911" class="blob-code blob-code-inner js-file-line">:1038E000FFCFEF92FF920F931F93CF93DF93D82FC9
</td> + </tr> + <tr> + <td id="L912" class="blob-num js-line-number" data-line-number="912"></td> + <td id="LC912" class="blob-code blob-code-inner js-file-line">:1038F000C0E08C2F0E94980500E010E0E82EF12C2B
</td> + </tr> + <tr> + <td id="L913" class="blob-num js-line-number" data-line-number="913"></td> + <td id="LC913" class="blob-code blob-code-inner js-file-line">:10390000C701002E02C0959587950A94E2F780FDC5
</td> + </tr> + <tr> + <td id="L914" class="blob-num js-line-number" data-line-number="914"></td> + <td id="LC914" class="blob-code blob-code-inner js-file-line">:1039100006C00F5F1F4F0630110591F709C0602FD9
</td> + </tr> + <tr> + <td id="L915" class="blob-num js-line-number" data-line-number="915"></td> + <td id="LC915" class="blob-code blob-code-inner js-file-line">:103920007C2F80E00E94A005D813F3CF81E004C073
</td> + </tr> + <tr> + <td id="L916" class="blob-num js-line-number" data-line-number="916"></td> + <td id="LC916" class="blob-code blob-code-inner js-file-line">:10393000CF5FCE30F1F680E0DF91CF911F910F91F4
</td> + </tr> + <tr> + <td id="L917" class="blob-num js-line-number" data-line-number="917"></td> + <td id="LC917" class="blob-code blob-code-inner js-file-line">:10394000FF90EF900895CF93C82F8CE20E94711CD6
</td> + </tr> + <tr> + <td id="L918" class="blob-num js-line-number" data-line-number="918"></td> + <td id="LC918" class="blob-code blob-code-inner js-file-line">:10395000882321F08C2FCF910C94711C80E0CF91A3
</td> + </tr> + <tr> + <td id="L919" class="blob-num js-line-number" data-line-number="919"></td> + <td id="LC919" class="blob-code blob-code-inner js-file-line">:103960000895CF930E94F81D811102C00E94DE1DB0
</td> + </tr> + <tr> + <td id="L920" class="blob-num js-line-number" data-line-number="920"></td> + <td id="LC920" class="blob-code blob-code-inner js-file-line">:10397000C5E6C15049F00E94AA048FE39CE9019773
</td> + </tr> + <tr> + <td id="L921" class="blob-num js-line-number" data-line-number="921"></td> + <td id="LC921" class="blob-code blob-code-inner js-file-line">:10398000F1F700C00000F5CF89E20E94A31C81116D
</td> + </tr> + <tr> + <td id="L922" class="blob-num js-line-number" data-line-number="922"></td> + <td id="LC922" class="blob-code blob-code-inner js-file-line">:1039900013C18AE20E94A31C81110E94DE1D85E0F2
</td> + </tr> + <tr> + <td id="L923" class="blob-num js-line-number" data-line-number="923"></td> + <td id="LC923" class="blob-code blob-code-inner js-file-line">:1039A0000E94A31C81110E944F1C0E94031E809341
</td> + </tr> + <tr> + <td id="L924" class="blob-num js-line-number" data-line-number="924"></td> + <td id="LC924" class="blob-code blob-code-inner js-file-line">:1039B000CF0187E00E94A31C8823A9F18BE10E941C
</td> + </tr> + <tr> + <td id="L925" class="blob-num js-line-number" data-line-number="925"></td> + <td id="LC925" class="blob-code blob-code-inner js-file-line">:1039C000A31C882351F08091CF0181FB222720F98D
</td> + </tr> + <tr> + <td id="L926" class="blob-num js-line-number" data-line-number="926"></td> + <td id="LC926" class="blob-code blob-code-inner js-file-line">:1039D00091E0922790FB81F90EC08EE00E94A31C1B
</td> + </tr> + <tr> + <td id="L927" class="blob-num js-line-number" data-line-number="927"></td> + <td id="LC927" class="blob-code blob-code-inner js-file-line">:1039E000882361F08091CF0182FB222720F991E0AA
</td> + </tr> + <tr> + <td id="L928" class="blob-num js-line-number" data-line-number="928"></td> + <td id="LC928" class="blob-code blob-code-inner js-file-line">:1039F000922790FB82F98093CF0115C080E10E944D
</td> + </tr> + <tr> + <td id="L929" class="blob-num js-line-number" data-line-number="929"></td> + <td id="LC929" class="blob-code blob-code-inner js-file-line">:103A0000A31C9091CF01882341F093FB222720F93A
</td> + </tr> + <tr> + <td id="L930" class="blob-num js-line-number" data-line-number="930"></td> + <td id="LC930" class="blob-code blob-code-inner js-file-line">:103A100081E0822780FB93F904C0892F809580FB89
</td> + </tr> + <tr> + <td id="L931" class="blob-num js-line-number" data-line-number="931"></td> + <td id="LC931" class="blob-code blob-code-inner js-file-line">:103A200090F99093CF018091CF010E94071E0E94D0
</td> + </tr> + <tr> + <td id="L932" class="blob-num js-line-number" data-line-number="932"></td> + <td id="LC932" class="blob-code blob-code-inner js-file-line">:103A3000151E8093EF0180EE0E94A31C882341F0A5
</td> + </tr> + <tr> + <td id="L933" class="blob-num js-line-number" data-line-number="933"></td> + <td id="LC933" class="blob-code blob-code-inner js-file-line">:103A40008091EF01982F909590FB80F98093EF0182
</td> + </tr> + <tr> + <td id="L934" class="blob-num js-line-number" data-line-number="934"></td> + <td id="LC934" class="blob-code blob-code-inner js-file-line">:103A500089E30E94A31C882359F08091EF0181FB28
</td> + </tr> + <tr> + <td id="L935" class="blob-num js-line-number" data-line-number="935"></td> + <td id="LC935" class="blob-code blob-code-inner js-file-line">:103A6000222720F991E0922790FB81F98093EF01C2
</td> + </tr> + <tr> + <td id="L936" class="blob-num js-line-number" data-line-number="936"></td> + <td id="LC936" class="blob-code blob-code-inner js-file-line">:103A700082EE0E94A31C882359F08091EF0182FB03
</td> + </tr> + <tr> + <td id="L937" class="blob-num js-line-number" data-line-number="937"></td> + <td id="LC937" class="blob-code blob-code-inner js-file-line">:103A8000222720F991E0922790FB82F98093EF01A1
</td> + </tr> + <tr> + <td id="L938" class="blob-num js-line-number" data-line-number="938"></td> + <td id="LC938" class="blob-code blob-code-inner js-file-line">:103A900086EE0E94A31C882359F08091EF0183FBDE
</td> + </tr> + <tr> + <td id="L939" class="blob-num js-line-number" data-line-number="939"></td> + <td id="LC939" class="blob-code blob-code-inner js-file-line">:103AA000222720F991E0922790FB83F98093EF0180
</td> + </tr> + <tr> + <td id="L940" class="blob-num js-line-number" data-line-number="940"></td> + <td id="LC940" class="blob-code blob-code-inner js-file-line">:103AB00083EE0E94A31C882359F08091EF0184FBC0
</td> + </tr> + <tr> + <td id="L941" class="blob-num js-line-number" data-line-number="941"></td> + <td id="LC941" class="blob-code blob-code-inner js-file-line">:103AC000222720F991E0922790FB84F98093EF015F
</td> + </tr> + <tr> + <td id="L942" class="blob-num js-line-number" data-line-number="942"></td> + <td id="LC942" class="blob-code blob-code-inner js-file-line">:103AD00085E30E94A31C882359F08091EF0185FBA8
</td> + </tr> + <tr> + <td id="L943" class="blob-num js-line-number" data-line-number="943"></td> + <td id="LC943" class="blob-code blob-code-inner js-file-line">:103AE000222720F991E0922790FB85F98093EF013E
</td> + </tr> + <tr> + <td id="L944" class="blob-num js-line-number" data-line-number="944"></td> + <td id="LC944" class="blob-code blob-code-inner js-file-line">:103AF00081E30E94A31C882359F08091EF0186FB8B
</td> + </tr> + <tr> + <td id="L945" class="blob-num js-line-number" data-line-number="945"></td> + <td id="LC945" class="blob-code blob-code-inner js-file-line">:103B0000222720F991E0922790FB86F98093EF011C
</td> + </tr> + <tr> + <td id="L946" class="blob-num js-line-number" data-line-number="946"></td> + <td id="LC946" class="blob-code blob-code-inner js-file-line">:103B100081E10E94A31C882359F08091EF0187FB6B
</td> + </tr> + <tr> + <td id="L947" class="blob-num js-line-number" data-line-number="947"></td> + <td id="LC947" class="blob-code blob-code-inner js-file-line">:103B2000222720F991E0922790FB87F98093EF01FB
</td> + </tr> + <tr> + <td id="L948" class="blob-num js-line-number" data-line-number="948"></td> + <td id="LC948" class="blob-code blob-code-inner js-file-line">:103B30008091EF010E94191E8091EF0187FB882779
</td> + </tr> + <tr> + <td id="L949" class="blob-num js-line-number" data-line-number="949"></td> + <td id="LC949" class="blob-code blob-code-inner js-file-line">:103B400080F980930D0187E20E94A31CC82F8EE1AB
</td> + </tr> + <tr> + <td id="L950" class="blob-num js-line-number" data-line-number="950"></td> + <td id="LC950" class="blob-code blob-code-inner js-file-line">:103B50000E94A31C8111C2608FE10E94A31C8111ED
</td> + </tr> + <tr> + <td id="L951" class="blob-num js-line-number" data-line-number="951"></td> + <td id="LC951" class="blob-code blob-code-inner js-file-line">:103B6000C46080E20E94A31C8111C86081E20E94AF
</td> + </tr> + <tr> + <td id="L952" class="blob-num js-line-number" data-line-number="952"></td> + <td id="LC952" class="blob-code blob-code-inner js-file-line">:103B7000A31C8111C06182E20E94A31C8111C0625A
</td> + </tr> + <tr> + <td id="L953" class="blob-num js-line-number" data-line-number="953"></td> + <td id="LC953" class="blob-code blob-code-inner js-file-line">:103B800083E20E94A31C8111C06484E20E94A31CF2
</td> + </tr> + <tr> + <td id="L954" class="blob-num js-line-number" data-line-number="954"></td> + <td id="LC954" class="blob-code blob-code-inner js-file-line">:103B9000882311F0C06802C0CC2329F08C2F0E942A
</td> + </tr> + <tr> + <td id="L955" class="blob-num js-line-number" data-line-number="955"></td> + <td id="LC955" class="blob-code blob-code-inner js-file-line">:103BA000101E6C2F03C00E940C1E682F70E080E076
</td> + </tr> + <tr> + <td id="L956" class="blob-num js-line-number" data-line-number="956"></td> + <td id="LC956" class="blob-code blob-code-inner js-file-line">:103BB00090E0CF910C94D018CF9108956DEE7EEFE8
</td> + </tr> + <tr> + <td id="L957" class="blob-num js-line-number" data-line-number="957"></td> + <td id="LC957" class="blob-code blob-code-inner js-file-line">:103BC00080E090E00E94582460E082E090E00E9453
</td> + </tr> + <tr> + <td id="L958" class="blob-num js-line-number" data-line-number="958"></td> + <td id="LC958" class="blob-code blob-code-inner js-file-line">:103BD000462460E083E090E00E94462460E084E0B8
</td> + </tr> + <tr> + <td id="L959" class="blob-num js-line-number" data-line-number="959"></td> + <td id="LC959" class="blob-code blob-code-inner js-file-line">:103BE00090E00E94462460E085E090E00C9446243A
</td> + </tr> + <tr> + <td id="L960" class="blob-num js-line-number" data-line-number="960"></td> + <td id="LC960" class="blob-code blob-code-inner js-file-line">:103BF00080E090E00E94402421E08D3E9E4F09F03D
</td> + </tr> + <tr> + <td id="L961" class="blob-num js-line-number" data-line-number="961"></td> + <td id="LC961" class="blob-code blob-code-inner js-file-line">:103C000020E0822F089582E090E00C943824682F01
</td> + </tr> + <tr> + <td id="L962" class="blob-num js-line-number" data-line-number="962"></td> + <td id="LC962" class="blob-code blob-code-inner js-file-line">:103C100082E090E00C94462483E090E00C943824F9
</td> + </tr> + <tr> + <td id="L963" class="blob-num js-line-number" data-line-number="963"></td> + <td id="LC963" class="blob-code blob-code-inner js-file-line">:103C2000682F83E090E00C94462484E090E00C94AC
</td> + </tr> + <tr> + <td id="L964" class="blob-num js-line-number" data-line-number="964"></td> + <td id="LC964" class="blob-code blob-code-inner js-file-line">:103C30003824682F84E090E00C9446248091D701CA
</td> + </tr> + <tr> + <td id="L965" class="blob-num js-line-number" data-line-number="965"></td> + <td id="LC965" class="blob-code blob-code-inner js-file-line">:103C400080FF0BC06091130185E0689FB0011124D3
</td> + </tr> + <tr> + <td id="L966" class="blob-num js-line-number" data-line-number="966"></td> + <td id="LC966" class="blob-code blob-code-inner js-file-line">:103C500075956795759567952BC081FF09C0609133
</td> + </tr> + <tr> + <td id="L967" class="blob-num js-line-number" data-line-number="967"></td> + <td id="LC967" class="blob-code blob-code-inner js-file-line">:103C6000130185E0689FB00111247595679520C008
</td> + </tr> + <tr> + <td id="L968" class="blob-num js-line-number" data-line-number="968"></td> + <td id="LC968" class="blob-code blob-code-inner js-file-line">:103C700082FF07C06091130185E0689FB0011124A5
</td> + </tr> + <tr> + <td id="L969" class="blob-num js-line-number" data-line-number="969"></td> + <td id="LC969" class="blob-code blob-code-inner js-file-line">:103C800017C09091D8019923D1F060911201961735
</td> + </tr> + <tr> + <td id="L970" class="blob-num js-line-number" data-line-number="970"></td> + <td id="LC970" class="blob-code blob-code-inner js-file-line">:103C900088F72091130185E0289F90011124929FBD
</td> + </tr> + <tr> + <td id="L971" class="blob-num js-line-number" data-line-number="971"></td> + <td id="LC971" class="blob-code blob-code-inner js-file-line">:103CA000A001939F500D112470E0CA010E940A24C4
</td> + </tr> + <tr> + <td id="L972" class="blob-num js-line-number" data-line-number="972"></td> + <td id="LC972" class="blob-code blob-code-inner js-file-line">:103CB0006038710540F46115710539F002C065E0A6
</td> + </tr> + <tr> + <td id="L973" class="blob-num js-line-number" data-line-number="973"></td> + <td id="LC973" class="blob-code blob-code-inner js-file-line">:103CC00070E0862F08958FE7089581E00895809130
</td> + </tr> + <tr> + <td id="L974" class="blob-num js-line-number" data-line-number="974"></td> + <td id="LC974" class="blob-code blob-code-inner js-file-line">:103CD000D70180FF08C06091110170E0759567956C
</td> + </tr> + <tr> + <td id="L975" class="blob-num js-line-number" data-line-number="975"></td> + <td id="LC975" class="blob-code blob-code-inner js-file-line">:103CE0007595679521C081FF06C06091110170E054
</td> + </tr> + <tr> + <td id="L976" class="blob-num js-line-number" data-line-number="976"></td> + <td id="LC976" class="blob-code blob-code-inner js-file-line">:103CF0007595679519C082FF04C06091110170E04D
</td> + </tr> + <tr> + <td id="L977" class="blob-num js-line-number" data-line-number="977"></td> + <td id="LC977" class="blob-code blob-code-inner js-file-line">:103D000010C09091D8019923C1F0609110019617CD
</td> + </tr> + <tr> + <td id="L978" class="blob-num js-line-number" data-line-number="978"></td> + <td id="LC978" class="blob-code blob-code-inner js-file-line">:103D1000A0F780911101899FC001112470E00E94D9
</td> + </tr> + <tr> + <td id="L979" class="blob-num js-line-number" data-line-number="979"></td> + <td id="LC979" class="blob-code blob-code-inner js-file-line">:103D20000A246038710528F46115710521F0862F89
</td> + </tr> + <tr> + <td id="L980" class="blob-num js-line-number" data-line-number="980"></td> + <td id="LC980" class="blob-code blob-code-inner js-file-line">:103D300008958FE7089581E0089561E070E0F4CF81
</td> + </tr> + <tr> + <td id="L981" class="blob-num js-line-number" data-line-number="981"></td> + <td id="LC981" class="blob-code blob-code-inner js-file-line">:103D4000803F21F40E941E1E819504C0813F29F40A
</td> + </tr> + <tr> + <td id="L982" class="blob-num js-line-number" data-line-number="982"></td> + <td id="LC982" class="blob-code blob-code-inner js-file-line">:103D50000E941E1E8093DB010895823F21F40E9481
</td> + </tr> + <tr> + <td id="L983" class="blob-num js-line-number" data-line-number="983"></td> + <td id="LC983" class="blob-code blob-code-inner js-file-line">:103D60001E1E819504C0833F29F40E941E1E80936D
</td> + </tr> + <tr> + <td id="L984" class="blob-num js-line-number" data-line-number="984"></td> + <td id="LC984" class="blob-code blob-code-inner js-file-line">:103D7000DA010895893F19F40E94671E05C08A3F41
</td> + </tr> + <tr> + <td id="L985" class="blob-num js-line-number" data-line-number="985"></td> + <td id="LC985" class="blob-code blob-code-inner js-file-line">:103D800031F40E94671E81958093DC0108958B3F7A
</td> + </tr> + <tr> + <td id="L986" class="blob-num js-line-number" data-line-number="986"></td> + <td id="LC986" class="blob-code blob-code-inner js-file-line">:103D900021F40E94671E819504C08C3F29F40E9483
</td> + </tr> + <tr> + <td id="L987" class="blob-num js-line-number" data-line-number="987"></td> + <td id="LC987" class="blob-code blob-code-inner js-file-line">:103DA000671E8093DD010895843F21F48091D9013D
</td> + </tr> + <tr> + <td id="L988" class="blob-num js-line-number" data-line-number="988"></td> + <td id="LC988" class="blob-code blob-code-inner js-file-line">:103DB000816017C0853F21F48091D901826011C0D4
</td> + </tr> + <tr> + <td id="L989" class="blob-num js-line-number" data-line-number="989"></td> + <td id="LC989" class="blob-code blob-code-inner js-file-line">:103DC000863F21F48091D90184600BC0873F21F4A4
</td> + </tr> + <tr> + <td id="L990" class="blob-num js-line-number" data-line-number="990"></td> + <td id="LC990" class="blob-code blob-code-inner js-file-line">:103DD0008091D901886005C0883F31F48091D90174
</td> + </tr> + <tr> + <td id="L991" class="blob-num js-line-number" data-line-number="991"></td> + <td id="LC991" class="blob-code blob-code-inner js-file-line">:103DE00080618093D90108958D3F21F48091D7019E
</td> + </tr> + <tr> + <td id="L992" class="blob-num js-line-number" data-line-number="992"></td> + <td id="LC992" class="blob-code blob-code-inner js-file-line">:103DF00081600BC08E3F21F48091D701826005C0A5
</td> + </tr> + <tr> + <td id="L993" class="blob-num js-line-number" data-line-number="993"></td> + <td id="LC993" class="blob-code blob-code-inner js-file-line">:103E00008F3F29F48091D70184608093D701089572
</td> + </tr> + <tr> + <td id="L994" class="blob-num js-line-number" data-line-number="994"></td> + <td id="LC994" class="blob-code blob-code-inner js-file-line">:103E1000803F39F48091DB0187FF6CC01092DB0199
</td> + </tr> + <tr> + <td id="L995" class="blob-num js-line-number" data-line-number="995"></td> + <td id="LC995" class="blob-code blob-code-inner js-file-line">:103E200069C0813F29F48091DB011816BCF362C0A0
</td> + </tr> + <tr> + <td id="L996" class="blob-num js-line-number" data-line-number="996"></td> + <td id="LC996" class="blob-code blob-code-inner js-file-line">:103E30009091DA01823F29F497FF5CC01092DA0179
</td> + </tr> + <tr> + <td id="L997" class="blob-num js-line-number" data-line-number="997"></td> + <td id="LC997" class="blob-code blob-code-inner js-file-line">:103E400059C0833F19F41916CCF354C0893F41F48B
</td> + </tr> + <tr> + <td id="L998" class="blob-num js-line-number" data-line-number="998"></td> + <td id="LC998" class="blob-code blob-code-inner js-file-line">:103E50008091DC0118160CF04DC01092DC014AC0B4
</td> + </tr> + <tr> + <td id="L999" class="blob-num js-line-number" data-line-number="999"></td> + <td id="LC999" class="blob-code blob-code-inner js-file-line">:103E60008A3F29F48091DC0187FF44C0F6CF8B3F65
</td> + </tr> + <tr> + <td id="L1000" class="blob-num js-line-number" data-line-number="1000"></td> + <td id="LC1000" class="blob-code blob-code-inner js-file-line">:103E700039F48091DD0187FF3DC01092DD013AC029
</td> + </tr> + <tr> + <td id="L1001" class="blob-num js-line-number" data-line-number="1001"></td> + <td id="LC1001" class="blob-code blob-code-inner js-file-line">:103E80008C3F29F48091DD011816BCF333C0843FC8
</td> + </tr> + <tr> + <td id="L1002" class="blob-num js-line-number" data-line-number="1002"></td> + <td id="LC1002" class="blob-code blob-code-inner js-file-line">:103E900021F48091D9018E7F17C0853F21F4809154
</td> + </tr> + <tr> + <td id="L1003" class="blob-num js-line-number" data-line-number="1003"></td> + <td id="LC1003" class="blob-code blob-code-inner js-file-line">:103EA000D9018D7F11C0863F21F48091D9018B7F8C
</td> + </tr> + <tr> + <td id="L1004" class="blob-num js-line-number" data-line-number="1004"></td> + <td id="LC1004" class="blob-code blob-code-inner js-file-line">:103EB0000BC0873F21F48091D901877F05C0883FDF
</td> + </tr> + <tr> + <td id="L1005" class="blob-num js-line-number" data-line-number="1005"></td> + <td id="LC1005" class="blob-code blob-code-inner js-file-line">:103EC00031F48091D9018F7E8093D90113C08D3F49
</td> + </tr> + <tr> + <td id="L1006" class="blob-num js-line-number" data-line-number="1006"></td> + <td id="LC1006" class="blob-code blob-code-inner js-file-line">:103ED00021F48091D7018E7F0BC08E3F21F4809119
</td> + </tr> + <tr> + <td id="L1007" class="blob-num js-line-number" data-line-number="1007"></td> + <td id="LC1007" class="blob-code blob-code-inner js-file-line">:103EE000D7018D7F05C08F3F29F48091D7018B7F4B
</td> + </tr> + <tr> + <td id="L1008" class="blob-num js-line-number" data-line-number="1008"></td> + <td id="LC1008" class="blob-code blob-code-inner js-file-line">:103EF0008093D7018091DA0181110EC08091DB019E
</td> + </tr> + <tr> + <td id="L1009" class="blob-num js-line-number" data-line-number="1009"></td> + <td id="LC1009" class="blob-code blob-code-inner js-file-line">:103F000081110AC08091DC01811106C08091DD0120
</td> + </tr> + <tr> + <td id="L1010" class="blob-num js-line-number" data-line-number="1010"></td> + <td id="LC1010" class="blob-code blob-code-inner js-file-line">:103F1000811102C01092D801089589ED91E00E94AC
</td> + </tr> + <tr> + <td id="L1011" class="blob-num js-line-number" data-line-number="1011"></td> + <td id="LC1011" class="blob-code blob-code-inner js-file-line">:103F20009B0F0E94F41B9093D6018093D5010895B6
</td> + </tr> + <tr> + <td id="L1012" class="blob-num js-line-number" data-line-number="1012"></td> + <td id="LC1012" class="blob-code blob-code-inner js-file-line">:103F30001F93CF93DF938091D5019091D6010E947A
</td> + </tr> + <tr> + <td id="L1013" class="blob-num js-line-number" data-line-number="1013"></td> + <td id="LC1013" class="blob-code blob-code-inner js-file-line">:103F4000001CAC019091D801992321F0209114011B
</td> + </tr> + <tr> + <td id="L1014" class="blob-num js-line-number" data-line-number="1014"></td> + <td id="LC1014" class="blob-code blob-code-inner js-file-line">:103F500030E006C0209115018AE0289F90011124CD
</td> + </tr> + <tr> + <td id="L1015" class="blob-num js-line-number" data-line-number="1015"></td> + <td id="LC1015" class="blob-code blob-code-inner js-file-line">:103F60004217530708F485C08091DA01C091DB0144
</td> + </tr> + <tr> + <td id="L1016" class="blob-num js-line-number" data-line-number="1016"></td> + <td id="LC1016" class="blob-code blob-code-inner js-file-line">:103F7000D091DC011091DD01811107C0C11175C024
</td> + </tr> + <tr> + <td id="L1017" class="blob-num js-line-number" data-line-number="1017"></td> + <td id="LC1017" class="blob-code blob-code-inner js-file-line">:103F8000D11173C0111171C074C09F3F19F09F5FB0
</td> + </tr> + <tr> + <td id="L1018" class="blob-num js-line-number" data-line-number="1018"></td> + <td id="LC1018" class="blob-code blob-code-inner js-file-line">:103F90009093D801181624F40E941E1E8093DA0113
</td> + </tr> + <tr> + <td id="L1019" class="blob-num js-line-number" data-line-number="1019"></td> + <td id="LC1019" class="blob-code blob-code-inner js-file-line">:103FA0008091DA0187FF05C00E941E1E81958093D3
</td> + </tr> + <tr> + <td id="L1020" class="blob-num js-line-number" data-line-number="1020"></td> + <td id="LC1020" class="blob-code blob-code-inner js-file-line">:103FB000DA011C1624F40E941E1E8093DB018091FE
</td> + </tr> + <tr> + <td id="L1021" class="blob-num js-line-number" data-line-number="1021"></td> + <td id="LC1021" class="blob-code blob-code-inner js-file-line">:103FC000DB0187FF05C00E941E1E81958093DB01E7
</td> + </tr> + <tr> + <td id="L1022" class="blob-num js-line-number" data-line-number="1022"></td> + <td id="LC1022" class="blob-code blob-code-inner js-file-line">:103FD0006091DA01662331F1C091DB01CC2311F14C
</td> + </tr> + <tr> + <td id="L1023" class="blob-num js-line-number" data-line-number="1023"></td> + <td id="LC1023" class="blob-code blob-code-inner js-file-line">:103FE000062E000C770B880B990B0E94112323E3FC
</td> + </tr> + <tr> + <td id="L1024" class="blob-num js-line-number" data-line-number="1024"></td> + <td id="LC1024" class="blob-code blob-code-inner js-file-line">:103FF00033E343E35FE30E9475230E94D922609379
</td> + </tr> + <tr> + <td id="L1025" class="blob-num js-line-number" data-line-number="1025"></td> + <td id="LC1025" class="blob-code blob-code-inner js-file-line">:10400000DA016C2FCC0F770B880B990B0E941123D0
</td> + </tr> + <tr> + <td id="L1026" class="blob-num js-line-number" data-line-number="1026"></td> + <td id="LC1026" class="blob-code blob-code-inner js-file-line">:1040100023E333E343E35FE30E9475230E94D92245
</td> + </tr> + <tr> + <td id="L1027" class="blob-num js-line-number" data-line-number="1027"></td> + <td id="LC1027" class="blob-code blob-code-inner js-file-line">:104020006093DB011D1624F40E94671E8093DC015F
</td> + </tr> + <tr> + <td id="L1028" class="blob-num js-line-number" data-line-number="1028"></td> + <td id="LC1028" class="blob-code blob-code-inner js-file-line">:104030008091DC0187FF05C00E94671E81958093F7
</td> + </tr> + <tr> + <td id="L1029" class="blob-num js-line-number" data-line-number="1029"></td> + <td id="LC1029" class="blob-code blob-code-inner js-file-line">:10404000DC01111624F40E94671E8093DD0180912B
</td> + </tr> + <tr> + <td id="L1030" class="blob-num js-line-number" data-line-number="1030"></td> + <td id="LC1030" class="blob-code blob-code-inner js-file-line">:10405000DD0187FF05C00E94671E81958093DD0109
</td> + </tr> + <tr> + <td id="L1031" class="blob-num js-line-number" data-line-number="1031"></td> + <td id="LC1031" class="blob-code blob-code-inner js-file-line">:10406000DF91CF911F910C948D1F9F3F09F08FCF4F
</td> + </tr> + <tr> + <td id="L1032" class="blob-num js-line-number" data-line-number="1032"></td> + <td id="LC1032" class="blob-code blob-code-inner js-file-line">:1040700097CFDF91CF911F910895E9EDF1E085E0B1
</td> + </tr> + <tr> + <td id="L1033" class="blob-num js-line-number" data-line-number="1033"></td> + <td id="LC1033" class="blob-code blob-code-inner js-file-line">:10408000DF011D928A95E9F71092D8011092D701AD
</td> + </tr> + <tr> + <td id="L1034" class="blob-num js-line-number" data-line-number="1034"></td> + <td id="LC1034" class="blob-code blob-code-inner js-file-line">:104090000895833081F128F4813059F08230D1F0D5
</td> + </tr> + <tr> + <td id="L1035" class="blob-num js-line-number" data-line-number="1035"></td> + <td id="LC1035" class="blob-code blob-code-inner js-file-line">:1040A0000895853009F449C0B8F1863009F456C046
</td> + </tr> + <tr> + <td id="L1036" class="blob-num js-line-number" data-line-number="1036"></td> + <td id="LC1036" class="blob-code blob-code-inner js-file-line">:1040B000089580911501262F30E0280F311D2F3FE4
</td> + </tr> + <tr> + <td id="L1037" class="blob-num js-line-number" data-line-number="1037"></td> + <td id="LC1037" class="blob-code blob-code-inner js-file-line">:1040C000310524F4680F6093150108958FEF8093F4
</td> + </tr> + <tr> + <td id="L1038" class="blob-num js-line-number" data-line-number="1038"></td> + <td id="LC1038" class="blob-code blob-code-inner js-file-line">:1040D0001501089580911401262F30E0280F311D1D
</td> + </tr> + <tr> + <td id="L1039" class="blob-num js-line-number" data-line-number="1039"></td> + <td id="LC1039" class="blob-code blob-code-inner js-file-line">:1040E0002F3F310524F4680F6093140108958FEF7A
</td> + </tr> + <tr> + <td id="L1040" class="blob-num js-line-number" data-line-number="1040"></td> + <td id="LC1040" class="blob-code blob-code-inner js-file-line">:1040F00080931401089580911301262F30E0280F3A
</td> + </tr> + <tr> + <td id="L1041" class="blob-num js-line-number" data-line-number="1041"></td> + <td id="LC1041" class="blob-code blob-code-inner js-file-line">:10410000311D2F3F310524F4680F6093130108958A
</td> + </tr> + <tr> + <td id="L1042" class="blob-num js-line-number" data-line-number="1042"></td> + <td id="LC1042" class="blob-code blob-code-inner js-file-line">:104110008FEF80931301089580911201262F30E0D4
</td> + </tr> + <tr> + <td id="L1043" class="blob-num js-line-number" data-line-number="1043"></td> + <td id="LC1043" class="blob-code blob-code-inner js-file-line">:10412000280F311D2F3F310524F4680F60931201D1
</td> + </tr> + <tr> + <td id="L1044" class="blob-num js-line-number" data-line-number="1044"></td> + <td id="LC1044" class="blob-code blob-code-inner js-file-line">:1041300008958FEF80931201089580911101262F29
</td> + </tr> + <tr> + <td id="L1045" class="blob-num js-line-number" data-line-number="1045"></td> + <td id="LC1045" class="blob-code blob-code-inner js-file-line">:1041400030E0280F311D2F3F310524F4680F6093B4
</td> + </tr> + <tr> + <td id="L1046" class="blob-num js-line-number" data-line-number="1046"></td> + <td id="LC1046" class="blob-code blob-code-inner js-file-line">:10415000110108958FEF809311010895809110014E
</td> + </tr> + <tr> + <td id="L1047" class="blob-num js-line-number" data-line-number="1047"></td> + <td id="LC1047" class="blob-code blob-code-inner js-file-line">:10416000262F30E0280F311D2F3F310524F4680F32
</td> + </tr> + <tr> + <td id="L1048" class="blob-num js-line-number" data-line-number="1048"></td> + <td id="LC1048" class="blob-code blob-code-inner js-file-line">:104170006093100108958FEF8093100108958330AC
</td> + </tr> + <tr> + <td id="L1049" class="blob-num js-line-number" data-line-number="1049"></td> + <td id="LC1049" class="blob-code blob-code-inner js-file-line">:1041800011F128F4813049F0823091F008958530A2
</td> + </tr> + <tr> + <td id="L1050" class="blob-num js-line-number" data-line-number="1050"></td> + <td id="LC1050" class="blob-code blob-code-inner js-file-line">:1041900081F120F18630C1F10895809115016817F1
</td> + </tr> + <tr> + <td id="L1051" class="blob-num js-line-number" data-line-number="1051"></td> + <td id="LC1051" class="blob-code blob-code-inner js-file-line">:1041A00020F4861B8093150108951092150108953F
</td> + </tr> + <tr> + <td id="L1052" class="blob-num js-line-number" data-line-number="1052"></td> + <td id="LC1052" class="blob-code blob-code-inner js-file-line">:1041B00080911401681720F4861B809314010895E0
</td> + </tr> + <tr> + <td id="L1053" class="blob-num js-line-number" data-line-number="1053"></td> + <td id="LC1053" class="blob-code blob-code-inner js-file-line">:1041C00010921401089580911301681720F4861B42
</td> + </tr> + <tr> + <td id="L1054" class="blob-num js-line-number" data-line-number="1054"></td> + <td id="LC1054" class="blob-code blob-code-inner js-file-line">:1041D00080931301089510921301089580911201A4
</td> + </tr> + <tr> + <td id="L1055" class="blob-num js-line-number" data-line-number="1055"></td> + <td id="LC1055" class="blob-code blob-code-inner js-file-line">:1041E000681720F4861B8093120108951092120123
</td> + </tr> + <tr> + <td id="L1056" class="blob-num js-line-number" data-line-number="1056"></td> + <td id="LC1056" class="blob-code blob-code-inner js-file-line">:1041F000089580911101681720F4861B80931101A6
</td> + </tr> + <tr> + <td id="L1057" class="blob-num js-line-number" data-line-number="1057"></td> + <td id="LC1057" class="blob-code blob-code-inner js-file-line">:10420000089510921101089580911001681720F40B
</td> + </tr> + <tr> + <td id="L1058" class="blob-num js-line-number" data-line-number="1058"></td> + <td id="LC1058" class="blob-code blob-code-inner js-file-line">:10421000861B8093100108951092100108950F934A
</td> + </tr> + <tr> + <td id="L1059" class="blob-num js-line-number" data-line-number="1059"></td> + <td id="LC1059" class="blob-code blob-code-inner js-file-line">:104220001F938D3109F46BC008F03FC08E3009F444
</td> + </tr> + <tr> + <td id="L1060" class="blob-num js-line-number" data-line-number="1060"></td> + <td id="LC1060" class="blob-code blob-code-inner js-file-line">:104230007FC0C0F4873009F469C068F4863009F0A3
</td> + </tr> + <tr> + <td id="L1061" class="blob-num js-line-number" data-line-number="1061"></td> + <td id="LC1061" class="blob-code blob-code-inner js-file-line">:10424000B1C08091CF01817F8E7F8093CF0181E0CB
</td> + </tr> + <tr> + <td id="L1062" class="blob-num js-line-number" data-line-number="1062"></td> + <td id="LC1062" class="blob-code blob-code-inner js-file-line">:104250008093DF01A8C0883009F4A2C08B3009F434
</td> + </tr> + <tr> + <td id="L1063" class="blob-num js-line-number" data-line-number="1063"></td> + <td id="LC1063" class="blob-code blob-code-inner js-file-line">:104260009FC0A0C0863109F49BC078F4803109F466
</td> + </tr> + <tr> + <td id="L1064" class="blob-num js-line-number" data-line-number="1064"></td> + <td id="LC1064" class="blob-code blob-code-inner js-file-line">:1042700072C0813109F096C00E94141590910D0111
</td> + </tr> + <tr> + <td id="L1065" class="blob-num js-line-number" data-line-number="1065"></td> + <td id="LC1065" class="blob-code blob-code-inner js-file-line">:1042800081E0892780930D018BC0893109F488C0B2
</td> + </tr> + <tr> + <td id="L1066" class="blob-num js-line-number" data-line-number="1066"></td> + <td id="LC1066" class="blob-code blob-code-inner js-file-line">:104290008B3109F087C08091CF0181FB222720F963
</td> + </tr> + <tr> + <td id="L1067" class="blob-num js-line-number" data-line-number="1067"></td> + <td id="LC1067" class="blob-code blob-code-inner js-file-line">:1042A00091E0922790FB81F94CC0853309F470C0EE
</td> + </tr> + <tr> + <td id="L1068" class="blob-num js-line-number" data-line-number="1068"></td> + <td id="LC1068" class="blob-code blob-code-inner js-file-line">:1042B00048F4873209F46CC008F459C0893209F413
</td> + </tr> + <tr> + <td id="L1069" class="blob-num js-line-number" data-line-number="1069"></td> + <td id="LC1069" class="blob-code blob-code-inner js-file-line">:1042C00067C070C0833438F48A3308F04EC0883336
</td> + </tr> + <tr> + <td id="L1070" class="blob-num js-line-number" data-line-number="1070"></td> + <td id="LC1070" class="blob-code blob-code-inner js-file-line">:1042D00009F466C067C0833409F45AC0883409F011
</td> + </tr> + <tr> + <td id="L1071" class="blob-num js-line-number" data-line-number="1071"></td> + <td id="LC1071" class="blob-code blob-code-inner js-file-line">:1042E00061C00E9414150FEF13ED20E30150104040
</td> + </tr> + <tr> + <td id="L1072" class="blob-num js-line-number" data-line-number="1072"></td> + <td id="LC1072" class="blob-code blob-code-inner js-file-line">:1042F0002040E1F700C000000E944F1C51C00E9406
</td> + </tr> + <tr> + <td id="L1073" class="blob-num js-line-number" data-line-number="1073"></td> + <td id="LC1073" class="blob-code blob-code-inner js-file-line">:1043000093220E94840F0E947A084AC09091CF01A4
</td> + </tr> + <tr> + <td id="L1074" class="blob-num js-line-number" data-line-number="1074"></td> + <td id="LC1074" class="blob-code blob-code-inner js-file-line">:10431000892F8095817080FB90F929F096609860D4
</td> + </tr> + <tr> + <td id="L1075" class="blob-num js-line-number" data-line-number="1075"></td> + <td id="LC1075" class="blob-code blob-code-inner js-file-line">:104320009093CF0140C0997F977F9093CF0138C081
</td> + </tr> + <tr> + <td id="L1076" class="blob-num js-line-number" data-line-number="1076"></td> + <td id="LC1076" class="blob-code blob-code-inner js-file-line">:104330008091CF0182FB222720F991E0922790FB08
</td> + </tr> + <tr> + <td id="L1077" class="blob-num js-line-number" data-line-number="1077"></td> + <td id="LC1077" class="blob-code blob-code-inner js-file-line">:1043400082F98093CF01992359F18091CF01816047
</td> + </tr> + <tr> + <td id="L1078" class="blob-num js-line-number" data-line-number="1078"></td> + <td id="LC1078" class="blob-code blob-code-inner js-file-line">:104350008093CF0125C08091CF0183FB222720F9D4
</td> + </tr> + <tr> + <td id="L1079" class="blob-num js-line-number" data-line-number="1079"></td> + <td id="LC1079" class="blob-code blob-code-inner js-file-line">:1043600091E0922790FB83F9ECCF895301C08D51E6
</td> + </tr> + <tr> + <td id="L1080" class="blob-num js-line-number" data-line-number="1080"></td> + <td id="LC1080" class="blob-code blob-code-inner js-file-line">:1043700041E050E060E070E08A019B0104C0000F62
</td> + </tr> + <tr> + <td id="L1081" class="blob-num js-line-number" data-line-number="1081"></td> + <td id="LC1081" class="blob-code blob-code-inner js-file-line">:10438000111F221F331F8A95D2F7C901B80104C03B
</td> + </tr> + <tr> + <td id="L1082" class="blob-num js-line-number" data-line-number="1082"></td> + <td id="LC1082" class="blob-code blob-code-inner js-file-line">:1043900061E070E080E090E00E94D0180E94141567
</td> + </tr> + <tr> + <td id="L1083" class="blob-num js-line-number" data-line-number="1083"></td> + <td id="LC1083" class="blob-code blob-code-inner js-file-line">:1043A00081E001C080E01F910F91089580E00895A1
</td> + </tr> + <tr> + <td id="L1084" class="blob-num js-line-number" data-line-number="1084"></td> + <td id="LC1084" class="blob-code blob-code-inner js-file-line">:1043B00080E00895CF93C82F8091DF01813079F09C
</td> + </tr> + <tr> + <td id="L1085" class="blob-num js-line-number" data-line-number="1085"></td> + <td id="LC1085" class="blob-code blob-code-inner js-file-line">:1043C00018F08230E9F187C0E0910E01F0910F0101
</td> + </tr> + <tr> + <td id="L1086" class="blob-num js-line-number" data-line-number="1086"></td> + <td id="LC1086" class="blob-code blob-code-inner js-file-line">:1043D0008081813169F0823209F07FC009C0E091AB
</td> + </tr> + <tr> + <td id="L1087" class="blob-num js-line-number" data-line-number="1087"></td> + <td id="LC1087" class="blob-code blob-code-inner js-file-line">:1043E0000E01F0910F018081813111F0823261F470
</td> + </tr> + <tr> + <td id="L1088" class="blob-num js-line-number" data-line-number="1088"></td> + <td id="LC1088" class="blob-code blob-code-inner js-file-line">:1043F0008C2F0E94D621811104C08C2F0E940F2186
</td> + </tr> + <tr> + <td id="L1089" class="blob-num js-line-number" data-line-number="1089"></td> + <td id="LC1089" class="blob-code blob-code-inner js-file-line">:104400001DC081E090E01AC08C2F0E94D82181113C
</td> + </tr> + <tr> + <td id="L1090" class="blob-num js-line-number" data-line-number="1090"></td> + <td id="LC1090" class="blob-code blob-code-inner js-file-line">:1044100014C0C43179F048F4CB3079F0C03109F0E0
</td> + </tr> + <tr> + <td id="L1091" class="blob-num js-line-number" data-line-number="1091"></td> + <td id="LC1091" class="blob-code blob-code-inner js-file-line">:1044200060C082E08093DF0108C0C93219F0C83350
</td> + </tr> + <tr> + <td id="L1092" class="blob-num js-line-number" data-line-number="1092"></td> + <td id="LC1092" class="blob-code blob-code-inner js-file-line">:1044300021F057C01092DF0154C081E0817053C059
</td> + </tr> + <tr> + <td id="L1093" class="blob-num js-line-number" data-line-number="1093"></td> + <td id="LC1093" class="blob-code blob-code-inner js-file-line">:10444000C93289F118F5C43171F1A8F4C73009F007
</td> + </tr> + <tr> + <td id="L1094" class="blob-num js-line-number" data-line-number="1094"></td> + <td id="LC1094" class="blob-code blob-code-inner js-file-line">:1044500046C08AE08093150194E19093140193E0A3
</td> + </tr> + <tr> + <td id="L1095" class="blob-num js-line-number" data-line-number="1095"></td> + <td id="LC1095" class="blob-code blob-code-inner js-file-line">:10446000909313018093120188E08093110188E2F8
</td> + </tr> + <tr> + <td id="L1096" class="blob-num js-line-number" data-line-number="1096"></td> + <td id="LC1096" class="blob-code blob-code-inner js-file-line">:104470008093100134C0CE51C63088F5EC2FF0E0A7
</td> + </tr> + <tr> + <td id="L1097" class="blob-num js-line-number" data-line-number="1097"></td> + <td id="LC1097" class="blob-code blob-code-inner js-file-line">:10448000E65DFE4F80818093DE0129C0CE34E9F0E5
</td> + </tr> + <tr> + <td id="L1098" class="blob-num js-line-number" data-line-number="1098"></td> + <td id="LC1098" class="blob-code blob-code-inner js-file-line">:1044900020F4CB3421F56AE013C0C13579F0C23580
</td> + </tr> + <tr> + <td id="L1099" class="blob-num js-line-number" data-line-number="1099"></td> + <td id="LC1099" class="blob-code blob-code-inner js-file-line">:1044A000F1F461E00DC08091DE01882319F01092D3
</td> + </tr> + <tr> + <td id="L1100" class="blob-num js-line-number" data-line-number="1100"></td> + <td id="LC1100" class="blob-code blob-code-inner js-file-line">:1044B000DE0115C081E08093DF0115C061E006C018
</td> + </tr> + <tr> + <td id="L1101" class="blob-num js-line-number" data-line-number="1101"></td> + <td id="LC1101" class="blob-code blob-code-inner js-file-line">:1044C0008091DE010E9449200AC06AE08091DE01ED
</td> + </tr> + <tr> + <td id="L1102" class="blob-num js-line-number" data-line-number="1102"></td> + <td id="LC1102" class="blob-code blob-code-inner js-file-line">:1044D0000E94BF2004C01092DF0180E004C081E090
</td> + </tr> + <tr> + <td id="L1103" class="blob-num js-line-number" data-line-number="1103"></td> + <td id="LC1103" class="blob-code blob-code-inner js-file-line">:1044E00002C080E0ABCFCF910895E1E8F0E0808199
</td> + </tr> + <tr> + <td id="L1104" class="blob-num js-line-number" data-line-number="1104"></td> + <td id="LC1104" class="blob-code blob-code-inner js-file-line">:1044F000886080838081816080838FB7F89493E0A7
</td> + </tr> + <tr> + <td id="L1105" class="blob-num js-line-number" data-line-number="1105"></td> + <td id="LC1105" class="blob-code blob-code-inner js-file-line">:104500009093890090ED909388008FBF0895EFE617
</td> + </tr> + <tr> + <td id="L1106" class="blob-num js-line-number" data-line-number="1106"></td> + <td id="LC1106" class="blob-code blob-code-inner js-file-line">:10451000F0E08081826080830895EFE6F0E08081A2
</td> + </tr> + <tr> + <td id="L1107" class="blob-num js-line-number" data-line-number="1107"></td> + <td id="LC1107" class="blob-code blob-code-inner js-file-line">:104520008D7F80830895EFE6F0E0908182E0892717
</td> + </tr> + <tr> + <td id="L1108" class="blob-num js-line-number" data-line-number="1108"></td> + <td id="LC1108" class="blob-code blob-code-inner js-file-line">:10453000808308951F920F920FB60F9211242F932C
</td> + </tr> + <tr> + <td id="L1109" class="blob-num js-line-number" data-line-number="1109"></td> + <td id="LC1109" class="blob-code blob-code-inner js-file-line">:104540003F934F935F936F937F938F939F93AF931B
</td> + </tr> + <tr> + <td id="L1110" class="blob-num js-line-number" data-line-number="1110"></td> + <td id="LC1110" class="blob-code blob-code-inner js-file-line">:10455000BF93EF93FF938091E0019091E101019669
</td> + </tr> + <tr> + <td id="L1111" class="blob-num js-line-number" data-line-number="1111"></td> + <td id="LC1111" class="blob-code blob-code-inner js-file-line">:104560009093E1018093E001811103C082E00E94F9
</td> + </tr> + <tr> + <td id="L1112" class="blob-num js-line-number" data-line-number="1112"></td> + <td id="LC1112" class="blob-code blob-code-inner js-file-line">:104570007A08E091E101E695E695F0E0E657FB4F19
</td> + </tr> + <tr> + <td id="L1113" class="blob-num js-line-number" data-line-number="1113"></td> + <td id="LC1113" class="blob-code blob-code-inner js-file-line">:10458000E4918091E0018E1303C080E00E947A08DC
</td> + </tr> + <tr> + <td id="L1114" class="blob-num js-line-number" data-line-number="1114"></td> + <td id="LC1114" class="blob-code blob-code-inner js-file-line">:10459000FF91EF91BF91AF919F918F917F916F911B
</td> + </tr> + <tr> + <td id="L1115" class="blob-num js-line-number" data-line-number="1115"></td> + <td id="LC1115" class="blob-code blob-code-inner js-file-line">:1045A0005F914F913F912F910F900FBE0F901F90F1
</td> + </tr> + <tr> + <td id="L1116" class="blob-num js-line-number" data-line-number="1116"></td> + <td id="LC1116" class="blob-code blob-code-inner js-file-line">:1045B00018950E94E0226894B1110C946F2308951D
</td> + </tr> + <tr> + <td id="L1117" class="blob-num js-line-number" data-line-number="1117"></td> + <td id="LC1117" class="blob-code blob-code-inner js-file-line">:1045C0000E94542388F09F5798F0B92F9927B7512C
</td> + </tr> + <tr> + <td id="L1118" class="blob-num js-line-number" data-line-number="1118"></td> + <td id="LC1118" class="blob-code blob-code-inner js-file-line">:1045D000B0F0E1F0660F771F881F991F1AF0BA95A7
</td> + </tr> + <tr> + <td id="L1119" class="blob-num js-line-number" data-line-number="1119"></td> + <td id="LC1119" class="blob-code blob-code-inner js-file-line">:1045E000C9F714C0B13091F00E946E23B1E0089574
</td> + </tr> + <tr> + <td id="L1120" class="blob-num js-line-number" data-line-number="1120"></td> + <td id="LC1120" class="blob-code blob-code-inner js-file-line">:1045F0000C946E23672F782F8827B85F39F0B93F66
</td> + </tr> + <tr> + <td id="L1121" class="blob-num js-line-number" data-line-number="1121"></td> + <td id="LC1121" class="blob-code blob-code-inner js-file-line">:10460000CCF3869577956795B395D9F73EF4909559
</td> + </tr> + <tr> + <td id="L1122" class="blob-num js-line-number" data-line-number="1122"></td> + <td id="LC1122" class="blob-code blob-code-inner js-file-line">:104610008095709561957F4F8F4F9F4F0895E894D7
</td> + </tr> + <tr> + <td id="L1123" class="blob-num js-line-number" data-line-number="1123"></td> + <td id="LC1123" class="blob-code blob-code-inner js-file-line">:1046200009C097FB3EF490958095709561957F4FFA
</td> + </tr> + <tr> + <td id="L1124" class="blob-num js-line-number" data-line-number="1124"></td> + <td id="LC1124" class="blob-code blob-code-inner js-file-line">:104630008F4F9F4F9923A9F0F92F96E9BB279395A8
</td> + </tr> + <tr> + <td id="L1125" class="blob-num js-line-number" data-line-number="1125"></td> + <td id="LC1125" class="blob-code blob-code-inner js-file-line">:10464000F695879577956795B795F111F8CFFAF4B8
</td> + </tr> + <tr> + <td id="L1126" class="blob-num js-line-number" data-line-number="1126"></td> + <td id="LC1126" class="blob-code blob-code-inner js-file-line">:10465000BB0F11F460FF1BC06F5F7F4F8F4F9F4FE9
</td> + </tr> + <tr> + <td id="L1127" class="blob-num js-line-number" data-line-number="1127"></td> + <td id="LC1127" class="blob-code blob-code-inner js-file-line">:1046600016C0882311F096E911C0772321F09EE847
</td> + </tr> + <tr> + <td id="L1128" class="blob-num js-line-number" data-line-number="1128"></td> + <td id="LC1128" class="blob-code blob-code-inner js-file-line">:10467000872F762F05C0662371F096E8862F70E0AD
</td> + </tr> + <tr> + <td id="L1129" class="blob-num js-line-number" data-line-number="1129"></td> + <td id="LC1129" class="blob-code blob-code-inner js-file-line">:1046800060E02AF09A95660F771F881FDAF7880F87
</td> + </tr> + <tr> + <td id="L1130" class="blob-num js-line-number" data-line-number="1130"></td> + <td id="LC1130" class="blob-code blob-code-inner js-file-line">:104690009695879597F9089557FD9058440F551FA3
</td> + </tr> + <tr> + <td id="L1131" class="blob-num js-line-number" data-line-number="1131"></td> + <td id="LC1131" class="blob-code blob-code-inner js-file-line">:1046A00059F05F3F71F04795880F97FB991F61F0B4
</td> + </tr> + <tr> + <td id="L1132" class="blob-num js-line-number" data-line-number="1132"></td> + <td id="LC1132" class="blob-code blob-code-inner js-file-line">:1046B0009F3F79F087950895121613061406551F2B
</td> + </tr> + <tr> + <td id="L1133" class="blob-num js-line-number" data-line-number="1133"></td> + <td id="LC1133" class="blob-code blob-code-inner js-file-line">:1046C000F2CF4695F1DF08C0161617061806991F97
</td> + </tr> + <tr> + <td id="L1134" class="blob-num js-line-number" data-line-number="1134"></td> + <td id="LC1134" class="blob-code blob-code-inner js-file-line">:1046D000F1CF86957105610508940895E894BB278C
</td> + </tr> + <tr> + <td id="L1135" class="blob-num js-line-number" data-line-number="1135"></td> + <td id="LC1135" class="blob-code blob-code-inner js-file-line">:1046E00066277727CB0197F908950E9488230C94B9
</td> + </tr> + <tr> + <td id="L1136" class="blob-num js-line-number" data-line-number="1136"></td> + <td id="LC1136" class="blob-code blob-code-inner js-file-line">:1046F000F9230E94EB2338F00E94F22320F0952347
</td> + </tr> + <tr> + <td id="L1137" class="blob-num js-line-number" data-line-number="1137"></td> + <td id="LC1137" class="blob-code blob-code-inner js-file-line">:1047000011F00C94E2230C94E82311240C946F23F1
</td> + </tr> + <tr> + <td id="L1138" class="blob-num js-line-number" data-line-number="1138"></td> + <td id="LC1138" class="blob-code blob-code-inner js-file-line">:104710000E944C2370F3959FC1F3950F50E0551FF5
</td> + </tr> + <tr> + <td id="L1139" class="blob-num js-line-number" data-line-number="1139"></td> + <td id="LC1139" class="blob-code blob-code-inner js-file-line">:10472000629FF001729FBB27F00DB11D639FAA2706
</td> + </tr> + <tr> + <td id="L1140" class="blob-num js-line-number" data-line-number="1140"></td> + <td id="LC1140" class="blob-code blob-code-inner js-file-line">:10473000F00DB11DAA1F649F6627B00DA11D661F55
</td> + </tr> + <tr> + <td id="L1141" class="blob-num js-line-number" data-line-number="1141"></td> + <td id="LC1141" class="blob-code blob-code-inner js-file-line">:10474000829F2227B00DA11D621F739FB00DA11D76
</td> + </tr> + <tr> + <td id="L1142" class="blob-num js-line-number" data-line-number="1142"></td> + <td id="LC1142" class="blob-code blob-code-inner js-file-line">:10475000621F839FA00D611D221F749F3327A00D30
</td> + </tr> + <tr> + <td id="L1143" class="blob-num js-line-number" data-line-number="1143"></td> + <td id="LC1143" class="blob-code blob-code-inner js-file-line">:10476000611D231F849F600D211D822F762F6A2FCC
</td> + </tr> + <tr> + <td id="L1144" class="blob-num js-line-number" data-line-number="1144"></td> + <td id="LC1144" class="blob-code blob-code-inner js-file-line">:1047700011249F5750409AF0F1F088234AF0EE0F31
</td> + </tr> + <tr> + <td id="L1145" class="blob-num js-line-number" data-line-number="1145"></td> + <td id="LC1145" class="blob-code blob-code-inner js-file-line">:10478000FF1FBB1F661F771F881F91505040A9F75E
</td> + </tr> + <tr> + <td id="L1146" class="blob-num js-line-number" data-line-number="1146"></td> + <td id="LC1146" class="blob-code blob-code-inner js-file-line">:104790009E3F510580F00C94E2230C946F235F3F01
</td> + </tr> + <tr> + <td id="L1147" class="blob-num js-line-number" data-line-number="1147"></td> + <td id="LC1147" class="blob-code blob-code-inner js-file-line">:1047A000E4F3983ED4F3869577956795B795F7959A
</td> + </tr> + <tr> + <td id="L1148" class="blob-num js-line-number" data-line-number="1148"></td> + <td id="LC1148" class="blob-code blob-code-inner js-file-line">:1047B000E7959F5FC1F7FE2B880F911D9695879512
</td> + </tr> + <tr> + <td id="L1149" class="blob-num js-line-number" data-line-number="1149"></td> + <td id="LC1149" class="blob-code blob-code-inner js-file-line">:1047C00097F9089597F99F6780E870E060E0089591
</td> + </tr> + <tr> + <td id="L1150" class="blob-num js-line-number" data-line-number="1150"></td> + <td id="LC1150" class="blob-code blob-code-inner js-file-line">:1047D0009FEF80EC089500240A9416161706180619
</td> + </tr> + <tr> + <td id="L1151" class="blob-num js-line-number" data-line-number="1151"></td> + <td id="LC1151" class="blob-code blob-code-inner js-file-line">:1047E0000906089500240A941216130614060506F5
</td> + </tr> + <tr> + <td id="L1152" class="blob-num js-line-number" data-line-number="1152"></td> + <td id="LC1152" class="blob-code blob-code-inner js-file-line">:1047F0000895092E0394000C11F4882352F0BB0F86
</td> + </tr> + <tr> + <td id="L1153" class="blob-num js-line-number" data-line-number="1153"></td> + <td id="LC1153" class="blob-code blob-code-inner js-file-line">:1048000040F4BF2B11F460FF04C06F5F7F4F8F4FE8
</td> + </tr> + <tr> + <td id="L1154" class="blob-num js-line-number" data-line-number="1154"></td> + <td id="LC1154" class="blob-code blob-code-inner js-file-line">:104810009F4F089597FB072E16F4009407D077FD5D
</td> + </tr> + <tr> + <td id="L1155" class="blob-num js-line-number" data-line-number="1155"></td> + <td id="LC1155" class="blob-code blob-code-inner js-file-line">:1048200009D00E94242407FC05D03EF49095819580
</td> + </tr> + <tr> + <td id="L1156" class="blob-num js-line-number" data-line-number="1156"></td> + <td id="LC1156" class="blob-code blob-code-inner js-file-line">:104830009F4F0895709561957F4F0895EE0FFF1F6C
</td> + </tr> + <tr> + <td id="L1157" class="blob-num js-line-number" data-line-number="1157"></td> + <td id="LC1157" class="blob-code blob-code-inner js-file-line">:104840000590F491E02D0994AA1BBB1B51E107C010
</td> + </tr> + <tr> + <td id="L1158" class="blob-num js-line-number" data-line-number="1158"></td> + <td id="LC1158" class="blob-code blob-code-inner js-file-line">:10485000AA1FBB1FA617B70710F0A61BB70B881F10
</td> + </tr> + <tr> + <td id="L1159" class="blob-num js-line-number" data-line-number="1159"></td> + <td id="LC1159" class="blob-code blob-code-inner js-file-line">:10486000991F5A95A9F780959095BC01CD0108959F
</td> + </tr> + <tr> + <td id="L1160" class="blob-num js-line-number" data-line-number="1160"></td> + <td id="LC1160" class="blob-code blob-code-inner js-file-line">:10487000F999FECF92BD81BDF89A992780B5089528
</td> + </tr> + <tr> + <td id="L1161" class="blob-num js-line-number" data-line-number="1161"></td> + <td id="LC1161" class="blob-code blob-code-inner js-file-line">:10488000A8E1B0E042E050E00C946024262FF999B2
</td> + </tr> + <tr> + <td id="L1162" class="blob-num js-line-number" data-line-number="1162"></td> + <td id="LC1162" class="blob-code blob-code-inner js-file-line">:10489000FECF92BD81BDF89A019700B4021639F09F
</td> + </tr> + <tr> + <td id="L1163" class="blob-num js-line-number" data-line-number="1163"></td> + <td id="LC1163" class="blob-code blob-code-inner js-file-line">:1048A0001FBA20BD0FB6F894FA9AF99A0FBE089570
</td> + </tr> + <tr> + <td id="L1164" class="blob-num js-line-number" data-line-number="1164"></td> + <td id="LC1164" class="blob-code blob-code-inner js-file-line">:1048B0000196272F0E9447240C944624DC01CB014B
</td> + </tr> + <tr> + <td id="L1165" class="blob-num js-line-number" data-line-number="1165"></td> + <td id="LC1165" class="blob-code blob-code-inner js-file-line">:1048C000FC01F999FECF06C0F2BDE1BDF89A319620
</td> + </tr> + <tr> + <td id="L1166" class="blob-num js-line-number" data-line-number="1166"></td> + <td id="LC1166" class="blob-code blob-code-inner js-file-line">:1048D00000B40D9241505040B8F70895F894FFCFBE
</td> + </tr> + <tr> + <td id="L1167" class="blob-num js-line-number" data-line-number="1167"></td> + <td id="LC1167" class="blob-code blob-code-inner js-file-line">:1048E00020027C080A09E708B3087F080101BC011F
</td> + </tr> + <tr> + <td id="L1168" class="blob-num js-line-number" data-line-number="1168"></td> + <td id="LC1168" class="blob-code blob-code-inner js-file-line">:1048F00028080A03140A3F4D36394B04FE03C80347
</td> + </tr> + <tr> + <td id="L1169" class="blob-num js-line-number" data-line-number="1169"></td> + <td id="LC1169" class="blob-code blob-code-inner js-file-line">:104900008F0322033B0354036D03010203040506D6
</td> + </tr> + <tr> + <td id="L1170" class="blob-num js-line-number" data-line-number="1170"></td> + <td id="LC1170" class="blob-code blob-code-inner js-file-line">:04491000070809008B
</td> + </tr> + <tr> + <td id="L1171" class="blob-num js-line-number" data-line-number="1171"></td> + <td id="LC1171" class="blob-code blob-code-inner js-file-line">:00000001FF
</td> + </tr> +</table> + + </div> + +</div> + +<button type="button" data-facebox="#jump-to-line" data-facebox-class="linejump" data-hotkey="l" class="hidden">Jump to Line</button> +<div id="jump-to-line" style="display:none"> + <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div> + <input class="form-control linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus> + <button type="submit" class="btn">Go</button> +</form></div> + + </div> + <div class="modal-backdrop"></div> +</div> + + + </div> + </div> + + </div> + + <div class="container site-footer-container"> + <div class="site-footer" role="contentinfo"> + <ul class="site-footer-links right"> + <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> + <li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li> + <li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li> + <li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li> + <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> + <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li> + + </ul> + + <a href="https://github.com" aria-label="Homepage" class="site-footer-mark" title="GitHub"> + <svg aria-hidden="true" class="octicon octicon-mark-github" height="24" version="1.1" viewBox="0 0 16 16" width="24"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59 0.4 0.07 0.55-0.17 0.55-0.38 0-0.19-0.01-0.82-0.01-1.49-2.01 0.37-2.53-0.49-2.69-0.94-0.09-0.23-0.48-0.94-0.82-1.13-0.28-0.15-0.68-0.52-0.01-0.53 0.63-0.01 1.08 0.58 1.23 0.82 0.72 1.21 1.87 0.87 2.33 0.66 0.07-0.52 0.28-0.87 0.51-1.07-1.78-0.2-3.64-0.89-3.64-3.95 0-0.87 0.31-1.59 0.82-2.15-0.08-0.2-0.36-1.02 0.08-2.12 0 0 0.67-0.21 2.2 0.82 0.64-0.18 1.32-0.27 2-0.27 0.68 0 1.36 0.09 2 0.27 1.53-1.04 2.2-0.82 2.2-0.82 0.44 1.1 0.16 1.92 0.08 2.12 0.51 0.56 0.82 1.27 0.82 2.15 0 3.07-1.87 3.75-3.65 3.95 0.29 0.25 0.54 0.73 0.54 1.48 0 1.07-0.01 1.93-0.01 2.2 0 0.21 0.15 0.46 0.55 0.38C13.71 14.53 16 11.53 16 8 16 3.58 12.42 0 8 0z"></path></svg> +</a> + <ul class="site-footer-links"> + <li>© 2016 <span title="0.18057s from github-fe155-cp1-prd.iad.github.net">GitHub</span>, Inc.</li> + <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li> + <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li> + <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li> + <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact</a></li> + <li><a href="https://help.github.com" data-ga-click="Footer, go to help, text:help">Help</a></li> + </ul> + </div> +</div> + + + + + + <div id="ajax-error-message" class="ajax-error-message flash flash-error"> + <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M15.72 12.5l-6.85-11.98C8.69 0.21 8.36 0.02 8 0.02s-0.69 0.19-0.87 0.5l-6.85 11.98c-0.18 0.31-0.18 0.69 0 1C0.47 13.81 0.8 14 1.15 14h13.7c0.36 0 0.69-0.19 0.86-0.5S15.89 12.81 15.72 12.5zM9 12H7V10h2V12zM9 9H7V5h2V9z"></path></svg> + <button type="button" class="flash-close js-flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> + <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75-1.48-1.48 3.75-3.75L0.77 4.25l1.48-1.48 3.75 3.75 3.75-3.75 1.48 1.48-3.75 3.75z"></path></svg> + </button> + Something went wrong with that request. Please try again. + </div> + + + + <script crossorigin="anonymous" integrity="sha256-6lu7KoNzd//eU+EJnlkJyN9NNsxekMBa6zaUsVfffk0=" src="https://assets-cdn.github.com/assets/frameworks-ea5bbb2a837377ffde53e1099e5909c8df4d36cc5e90c05aeb3694b157df7e4d.js"></script> + <script async="async" crossorigin="anonymous" integrity="sha256-ORgpFF28BxWN3hEqpja3rItY93JlJ85xC9VhGK4dL1c=" src="https://assets-cdn.github.com/assets/github-391829145dbc07158dde112aa636b7ac8b58f7726527ce710bd56118ae1d2f57.js"></script> + + + + + + + <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner hidden"> + <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M15.72 12.5l-6.85-11.98C8.69 0.21 8.36 0.02 8 0.02s-0.69 0.19-0.87 0.5l-6.85 11.98c-0.18 0.31-0.18 0.69 0 1C0.47 13.81 0.8 14 1.15 14h13.7c0.36 0 0.69-0.19 0.86-0.5S15.89 12.81 15.72 12.5zM9 12H7V10h2V12zM9 9H7V5h2V9z"></path></svg> + <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span> + <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span> + </div> + <div class="facebox" id="facebox" style="display:none;"> + <div class="facebox-popup"> + <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description"> + </div> + <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> + <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75-1.48-1.48 3.75-3.75L0.77 4.25l1.48-1.48 3.75 3.75 3.75-3.75 1.48 1.48-3.75 3.75z"></path></svg> + </button> + </div> +</div> + + </body> +</html> + diff --git a/keyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c b/keyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c new file mode 100755 index 0000000000..33a0480c94 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_spanish/keymap.c @@ -0,0 +1,284 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +/****************************************************************************************** + * SPANISH DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/) + * Layer 1: auxiliary keys + * Layer 2: full qwerty layout + ****************************************************************************************** + * IMPORTANT: Software layout must be set to SPANISH QWERTY to work properly + *****************************************************************************************/ + +// LAYERS +#define BASE 0 // dvorak layout (default) +#define AUX 1 // auxiliary keys +#define QWERTY 2 // qwerty layout + +// MACROS +#define OBRACE 0 // key { or shift +#define CBRACE 1 // key } or shift +#define OBRACK 2 // key [ or left alt +#define CBRACK 3 // key ] or left alt +#define CAPS 4 // caps lock + +// LEDS +#define USB_LED_NUM_LOCK 0 +#define USB_LED_CAPS_LOCK 1 +#define USB_LED_SCROLL_LOCK 2 +#define USB_LED_COMPOSE 3 +#define USB_LED_KANA 4 + +// TIMERS +#define KEY_TAP_FAST 85 +#define KEY_TAP_SLOW 95 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Base layer + * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | F1/~L1 | . | , | Ñ | P | Y |MEH_T | | L1 | F | G | C | H | L |ALL_T/+ | + * |--------+------+------+------+------+------| DEL | | ~L1 |------+------+------+------+------+--------| + * |Esc/Ctrl| A | O | E | U | I |------| |------| D | R | T | N | S |'/RCtrl | + * |--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------| + * | {/LSft | - | Q | J | K | X | | | | B | M | W | V | Z | }/RSft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |F5/CAG|F6/~L1| |F7/~L1|F8/CAG| + * ,------|------|------| |------+--------+------. + * | | |F4/CA | |F11/CA| | | + * | ENTER| TAB |------| |------| BSPC | SPACE| + * | | |F3/SA | |F12/SA| | | + * `--------------------' `----------------------' + * CAG = CTRL-ALT-GUI + * CA = CTRL-ALT + * SA = SHIFT-ALT + * + */ +[BASE] = KEYMAP( + // left hand + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NONUS_BSLASH, + LT(AUX, KC_F1), KC_DOT, KC_COMM,KC_SCLN,KC_P, KC_Y, MEH_T(KC_DEL), + CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, + M(OBRACE), KC_SLSH,KC_Q, KC_J, KC_K, KC_X, KC_LGUI, + M(OBRACK), KC_HOME,KC_PGDN,KC_PGUP,KC_END, + LCAG_T(KC_F5), LT(AUX, KC_F6), + MT(MOD_LALT | MOD_LCTL, KC_F4), + KC_ENT,KC_TAB,MT((MOD_LALT | MOD_LSFT), KC_F3), + // right hand + KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_FN1, KC_F, KC_G, KC_C, KC_H, KC_L, ALL_T(KC_RBRACKET), + KC_D, KC_R, KC_T, KC_N, KC_S, CTL_T(KC_QUOTE), + KC_RALT, KC_B, KC_M, KC_W, KC_V, KC_Z, M(CBRACE), + KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,M(CBRACK), + LT(AUX, KC_F7), LCAG_T(KC_F8), + MT(MOD_LALT | MOD_LCTL, KC_F11), + MT(MOD_LALT | MOD_LSFT, KC_F12),KC_BSPC, KC_SPC + ), +/* Keymap 1: Aux layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | SLEEP | PWR | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | < | > | MsUp | | | | | ~L0 | | 7 | 8 | 9 | * | `^ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | 4 | 5 | 6 | + | Ç | + * |--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------| + * |CAPSLOCK| | | | | | | | | | 1 | 2 | 3 | / | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |CTRL-S|CTRL-Z|CTRL-X|CTRL-C|CTRL-V| | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | Play | + * ,------|------|------| |------+------+------. + * | | | | | VolUp| | | + * | Lclk | Rclk |------| |------| Prev | Next | + * | | | L2 | | VolDn| | | + * `--------------------' `--------------------' + */ +[AUX] = KEYMAP( + // left hand + KC_NO , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_SLEP, + KC_TRNS, KC_NONUS_BSLASH, LSFT(KC_NONUS_BSLASH), KC_MS_U, KC_NO, KC_NO, KC_NO, + KC_NO , KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO , + M(CAPS), KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO, + LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), + KC_NO , KC_TRNS, + KC_NO, + KC_BTN1, KC_BTN2, TG(QWERTY), + // right hand + KC_PWR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_NO, KC_7, KC_8, KC_9, KC_PAST, KC_LBRACKET, + KC_NO, KC_4, KC_5, KC_6, KC_PPLS, KC_BSLASH, + KC_PSCR, KC_NO, KC_1, KC_2, KC_3, KC_PSLS, KC_NO, + KC_NO ,KC_DOT, KC_0, KC_PEQL, KC_NO, + KC_TRNS, KC_MPLY, + KC_VOLU, + KC_VOLD, KC_MPRV, KC_MNXT +), +/* Keymap 2: QWERTY layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | 1 | 2 | 3 | 4 | 5 | <> | | ¡ | 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | TRANS | Q | W | E | R | T |MEH_T | | TRANS| Y | U | I | O | P |ALL_T/+ | + * |--------+------+------+------+------+------| DEL | | |------+------+------+------+------+--------| + * |Esc/Ctrl| A | S | D | F | G |------| |------| H | J | K | L | Ñ |'/RCtrl | + * |--------+------+------+------+------+------| LGUI | | RALT |------+------+------+------+------+--------| + * | {/LSft | Z | X | C | V | B | | | | N | M | , | . | - | }/RSft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |[/LALT| HOME |PGDOWN| PGUP | END | | LEFT | DOWN | UP |RIGHT |]/LALT| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |F5/CAG| TRANS| | TRANS|F8/CAG| + * ,------|------|------| |------+--------+------. + * | | |F4/CA | |F11/CA| | | + * | ENTER| TAB |------| |------| BSPC | SPACE| + * | | | TRANS| |F12/SA| | | + * `--------------------' `----------------------' + * CAG = CTRL-ALT-GUI + * CA = CTRL-ALT + * SA = SHIFT-ALT + * + */ +[QWERTY] = KEYMAP( + // left hand + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NONUS_BSLASH, + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_DEL), + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + M(OBRACE), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, + M(OBRACK), KC_HOME,KC_PGDN,KC_PGUP,KC_END, + LCAG_T(KC_F5), KC_TRNS, + MT(MOD_LALT | MOD_LCTL, KC_F4), + KC_ENT,KC_TAB,KC_TRNS, + // right hand + KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, ALL_T(KC_RBRACKET), + KC_H, KC_J, KC_K, KC_L, KC_SCLN,CTL_T(KC_QUOTE), + KC_RALT, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,M(CBRACE), + KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,M(CBRACK), + KC_TRNS, LCAG_T(KC_F8), + MT(MOD_LALT | MOD_LCTL, KC_F11), + MT(MOD_LALT | MOD_LSFT, KC_F12),KC_BSPC, KC_SPC +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(AUX) // FN1 - Momentary Layer 1 (Aux) +}; + +static uint16_t key_timer; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case OBRACE: { + if (record->event.pressed) { + key_timer = timer_read(); + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { + register_code(KC_RALT); + register_code(KC_QUOTE); + unregister_code(KC_QUOTE); + unregister_code(KC_RALT); + } + } + break; + } + case CBRACE: { + if (record->event.pressed) { + key_timer = timer_read(); + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { + register_code(KC_RALT); + register_code(KC_BSLS); + unregister_code(KC_BSLS); + unregister_code(KC_RALT); + } + } + break; + } + case OBRACK: { + if (record->event.pressed) { + key_timer = timer_read(); + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { + register_code(KC_RALT); + register_code(KC_LBRACKET); + unregister_code(KC_LBRACKET); + unregister_code(KC_RALT); + } + } + break; + } + case CBRACK: { + if (record->event.pressed) { + key_timer = timer_read(); + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + if (timer_elapsed(key_timer) < KEY_TAP_SLOW) { + register_code(KC_RALT); + register_code(KC_RBRACKET); + unregister_code(KC_RBRACKET); + unregister_code(KC_RALT); + } + } + break; + } + case CAPS: { + if (record->event.pressed) { + register_code(KC_CAPSLOCK); + } else { + unregister_code(KC_CAPSLOCK); + } + break; + } + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case 1: + ergodox_right_led_3_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + + // Turn the caps lock led on + if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { + ergodox_right_led_1_on(); + } + +} + diff --git a/keyboard/ergodox_ez/matrix.c b/keyboard/ergodox_ez/matrix.c index c4f5b179f0..7266cca985 100644 --- a/keyboard/ergodox_ez/matrix.c +++ b/keyboard/ergodox_ez/matrix.c @@ -50,7 +50,7 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS]; static matrix_row_t read_cols(uint8_t row); static void init_cols(void); -static void unselect_rows(); +static void unselect_rows(void); static void select_row(uint8_t row); static uint8_t mcp23018_reset_loop; diff --git a/keyboard/ergodox_ez/readme.md b/keyboard/ergodox_ez/readme.md index 97a10ff4d8..78b825aaa2 100644 --- a/keyboard/ergodox_ez/readme.md +++ b/keyboard/ergodox_ez/readme.md @@ -4,7 +4,7 @@ There are two main ways you could customize the ErgoDox EZ. ## The Easy Way: Use an existing firmware file and just flash it -1. Download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) +1. Download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). Some Linux distributions already provide a binary (may be called `teensy-loader-cli`), so you may prefer to use this. 2. Find a firmware file you like. You can find a few if these in the keymaps subdirectory right here. The file you need ends with .hex, and you can look at its .c counterpart (or its PNG image) to see what you'll be getting. You can also use the [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) to create a firmware Hex file you like. 3. Download the firmware file 4. Connect the keyboard, press its Reset button (gently insert a paperclip into the hole in the top-right corner) and flash it using the Teensy loader you installed on step 1 and the firmware you downloaded. @@ -15,12 +15,12 @@ This requires a little bit of familiarity with coding. 1. Go to https://github.com/jackhumbert/qmk_firmware and read the Readme at the base of this repository, top to bottom. Then come back here :) 2. Clone the repository (download it) -3. Set up a build environment as per [the build guide](/BUILD_GUIDE.md) +3. Set up a build environment as per [the build guide](/doc/BUILD_GUIDE.md) - Using a Mac and have homebrew? just run `brew tap osx-cross/avr && brew install avr-libc` 4. Copy `keyboard/ergodox_ez/keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`) 5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work. 6. Compile your firmware by running `make clean` followed by `make KEYMAP=your_name`. For example, `make KEYMAP=german`. This will result in a hex file, which will always be called `ergodox_ez.hex`, regardless of your keymap name. -6. Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. +6. Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successfull build by running `make teensy KEYMAP=your_name`. 7. Submit your work as a pull request to this repository, so others can also use it. :) See below on specifics. Good luck! :) diff --git a/keyboard/ergodox_ez/util/compile_keymap.py b/keyboard/ergodox_ez/util/compile_keymap.py new file mode 100644 index 0000000000..7076a6ecb2 --- /dev/null +++ b/keyboard/ergodox_ez/util/compile_keymap.py @@ -0,0 +1,710 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Compiler for keymap.c files + +This scrip will generate a keymap.c file from a simple +markdown file with a specific layout. + +Usage: + python compile_keymap.py INPUT_PATH [OUTPUT_PATH] +""" +from __future__ import division +from __future__ import print_function +from __future__ import absolute_import +from __future__ import unicode_literals + +import os +import io +import re +import sys +import json +import unicodedata +import collections +import itertools as it + +PY2 = sys.version_info.major == 2 + +if PY2: + chr = unichr + + +KEYBOARD_LAYOUTS = { + # These map positions in the parsed layout to + # positions in the KEYMAP MATRIX + 'ergodox_ez': [ + [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44], + [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51], + [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57], + [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64], + [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69], + [ 32, 33], [70, 71 ], + [ 34], [72 ], + [ 35, 36, 37], [73, 74, 75 ], + ] +} + +ROW_INDENTS = { + 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0] +} + +BLANK_LAYOUTS = [ +# Compact Layout +""" +.------------------------------------.------------------------------------. +| | | | | | | | | | | | | | | +!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +| | | | | | | | | | | | | | | +!-----+----+----+----x----x----! ! !----x----x----+----+----+-----! +| | | | | | |-----!-----! | | | | | | +!-----+----+----+----x----x----! ! !----x----x----+----+----+-----! +| | | | | | | | | | | | | | | +'-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' +""", + +# Wide Layout +""" +.---------------------------------------------. .---------------------------------------------. +| | | | | | | | ! | | | | | | | +!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! +| | | | | | | | ! | | | | | | | +!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! +| | | | | | |-------! !-------! | | | | | | +!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! +| | | | | | | | ! | | | | | | | +'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' + | | | | | | ! | | | | | + '------------------------------' '------------------------------' + .---------------. .---------------. + | | | ! | | + .-------+-------+-------! !-------+-------+-------. + ! ! | | ! | ! ! + ! ! !-------! !-------! ! ! + | | | | ! | | | + '-----------------------' '-----------------------' +""", +] + + +DEFAULT_CONFIG = { + "keymaps_includes": [ + "keymap_common.h", + ], + 'filler': "-+.'!:x", + 'separator': "|", + 'default_key_prefix': ["KC_"], +} + + +SECTIONS = [ + 'layout_config', + 'layers', +] + + +# Markdown Parsing + +ONELINE_COMMENT_RE = re.compile(r""" + ^ # comment must be at the start of the line + \s* # arbitrary whitespace + // # start of the comment + (.*) # the comment + $ # until the end of line +""", re.MULTILINE | re.VERBOSE +) + +INLINE_COMMENT_RE = re.compile(r""" + ([\,\"\[\]\{\}\d]) # anythig that might end a expression + \s+ # comment must be preceded by whitespace + // # start of the comment + \s # and succeded by whitespace + (?:[^\"\]\}\{\[]*) # the comment (except things which might be json) + $ # until the end of line +""", re.MULTILINE | re.VERBOSE) + +TRAILING_COMMA_RE = re.compile(r""" + , # the comma + (?:\s*) # arbitrary whitespace + $ # only works if the trailing comma is followed by newline + (\s*) # arbitrary whitespace + ([\]\}]) # end of an array or object +""", re.MULTILINE | re.VERBOSE) + + +def loads(raw_data): + if isinstance(raw_data, bytes): + raw_data = raw_data.decode('utf-8') + + raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data) + raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data) + raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data) + return json.loads(raw_data) + + +def parse_config(path): + def reset_section(): + section.update({ + 'name': section.get('name', ""), + 'sub_name': "", + 'start_line': -1, + 'end_line': -1, + 'code_lines': [], + }) + + def start_section(line_index, line): + end_section() + if line.startswith("# "): + name = line[2:] + elif line.startswith("## "): + name = line[3:] + else: + name = "" + + name = name.strip().replace(" ", "_").lower() + if name in SECTIONS: + section['name'] = name + else: + section['sub_name'] = name + section['start_line'] = line_index + + def end_section(): + if section['start_line'] >= 0: + if section['name'] == 'layout_config': + config.update(loads("\n".join( + section['code_lines'] + ))) + elif section['sub_name'].startswith('layer'): + layer_name = section['sub_name'] + config['layer_lines'][layer_name] = section['code_lines'] + + reset_section() + + def amend_section(line_index, line): + section['end_line'] = line_index + section['code_lines'].append(line) + + config = DEFAULT_CONFIG.copy() + config.update({ + 'layer_lines': collections.OrderedDict(), + 'macro_ids': {'UM'}, + 'unicode_macros': {}, + }) + + section = {} + reset_section() + + with io.open(path, encoding="utf-8") as fh: + for i, line in enumerate(fh): + if line.startswith("#"): + start_section(i, line) + elif line.startswith(" "): + amend_section(i, line[4:]) + else: + # TODO: maybe parse description + pass + + end_section() + assert 'layout' in config + return config + +# header file parsing + +IF0_RE = re.compile(r""" + ^ + #if 0 + $.*? + #endif +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +COMMENT_RE = re.compile(r""" + /\* + .*? + \*/" +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +def read_header_file(path): + with io.open(path, encoding="utf-8") as fh: + data = fh.read() + data, _ = COMMENT_RE.subn("", data) + data, _ = IF0_RE.subn("", data) + return data + + +def regex_partial(re_str_fmt, flags): + def partial(*args, **kwargs): + re_str = re_str_fmt.format(*args, **kwargs) + return re.compile(re_str, flags) + return partial + + +KEYDEF_REP = regex_partial(r""" + #define + \s + ( + (?:{}) # the prefixes + (?:\w+) # the key name + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +ENUM_RE = re.compile(r""" + ( + enum + \s\w+\s + \{ + .*? # the enum content + \} + ; + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +ENUM_KEY_REP = regex_partial(r""" + ( + {} # the prefixes + \w+ # the key name + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +def parse_keydefs(config, data): + prefix_options = "|".join(config['key_prefixes']) + keydef_re = KEYDEF_REP(prefix_options) + enum_key_re = ENUM_KEY_REP(prefix_options) + for match in keydef_re.finditer(data): + yield match.groups()[0] + + for enum_match in ENUM_RE.finditer(data): + enum = enum_match.groups()[0] + for key_match in enum_key_re.finditer(enum): + yield key_match.groups()[0] + + +def parse_valid_keys(config, out_path): + basepath = os.path.abspath(os.path.join(os.path.dirname(out_path))) + dirpaths = [] + subpaths = [] + while len(subpaths) < 6: + path = os.path.join(basepath, *subpaths) + dirpaths.append(path) + dirpaths.append(os.path.join(path, "tmk_core", "common")) + dirpaths.append(os.path.join(path, "quantum")) + subpaths.append('..') + + includes = set(config['keymaps_includes']) + includes.add("keycode.h") + + valid_keycodes = set() + for dirpath, include in it.product(dirpaths, includes): + include_path = os.path.join(dirpath, include) + if os.path.exists(include_path): + header_data = read_header_file(include_path) + valid_keycodes.update( + parse_keydefs(config, header_data) + ) + return valid_keycodes + + +# Keymap Parsing + +def iter_raw_codes(layer_lines, filler, separator): + filler_re = re.compile("[" + filler + " ]") + for line in layer_lines: + line, _ = filler_re.subn("", line.strip()) + if not line: + continue + codes = line.split(separator) + for code in codes[1:-1]: + yield code + + +def iter_indexed_codes(raw_codes, key_indexes): + key_rows = {} + key_indexes_flat = [] + + for row_index, key_indexes in enumerate(key_indexes): + for key_index in key_indexes: + key_rows[key_index] = row_index + key_indexes_flat.extend(key_indexes) + assert len(raw_codes) == len(key_indexes_flat) + for raw_code, key_index in zip(raw_codes, key_indexes_flat): + # we keep track of the row mostly for layout purposes + yield raw_code, key_index, key_rows[key_index] + + +LAYER_CHANGE_RE = re.compile(r""" + (DF|TG|MO)\(\d+\) +""", re.VERBOSE) + + +MACRO_RE = re.compile(r""" + M\(\w+\) +""", re.VERBOSE) + + +UNICODE_RE = re.compile(r""" + U[0-9A-F]{4} +""", re.VERBOSE) + + +NON_CODE = re.compile(r""" + ^[^A-Z0-9_]$ +""", re.VERBOSE) + + +def parse_uni_code(raw_code): + macro_id = "UC_" + ( + unicodedata.name(raw_code) + .replace(" ", "_") + .replace("-", "_") + ) + code = "M({})".format(macro_id) + uc_hex = "{:04X}".format(ord(raw_code)) + return code, macro_id, uc_hex + + +def parse_key_code(raw_code, key_prefixes, valid_keycodes): + if raw_code in valid_keycodes: + return raw_code + + for prefix in key_prefixes: + code = prefix + raw_code + if code in valid_keycodes: + return code + + +def parse_code(raw_code, key_prefixes, valid_keycodes): + if not raw_code: + return 'KC_TRNS', None, None + + if LAYER_CHANGE_RE.match(raw_code): + return raw_code, None, None + + if MACRO_RE.match(raw_code): + macro_id = raw_code[2:-1] + return raw_code, macro_id, None + + if UNICODE_RE.match(raw_code): + hex_code = raw_code[1:] + return parse_uni_code(chr(int(hex_code, 16))) + + if NON_CODE.match(raw_code): + return parse_uni_code(raw_code) + + code = parse_key_code(raw_code, key_prefixes, valid_keycodes) + return code, None, None + + +def parse_keymap(config, key_indexes, layer_lines, valid_keycodes): + keymap = {} + raw_codes = list(iter_raw_codes( + layer_lines, config['filler'], config['separator'] + )) + indexed_codes = iter_indexed_codes(raw_codes, key_indexes) + key_prefixes = config['key_prefixes'] + for raw_code, key_index, row_index in indexed_codes: + code, macro_id, uc_hex = parse_code( + raw_code, key_prefixes, valid_keycodes + ) + # TODO: line numbers for invalid codes + err_msg = "Could not parse key '{}' on row {}".format( + raw_code, row_index + ) + assert code is not None, err_msg + # print(repr(raw_code), repr(code), macro_id, uc_hex) + if macro_id: + config['macro_ids'].add(macro_id) + if uc_hex: + config['unicode_macros'][macro_id] = uc_hex + keymap[key_index] = (code, row_index) + return keymap + + +def parse_keymaps(config, valid_keycodes): + keymaps = collections.OrderedDict() + key_indexes = config.get( + 'key_indexes', KEYBOARD_LAYOUTS[config['layout']] + ) + # TODO: maybe validate key_indexes + + for layer_name, layer_lines, in config['layer_lines'].items(): + keymaps[layer_name] = parse_keymap( + config, key_indexes, layer_lines, valid_keycodes + ) + return keymaps + +# keymap.c output + +USERCODE = """ +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case L1: + ergodox_right_led_1_on(); + break; + case L2: + ergodox_right_led_2_on(); + break; + case L3: + ergodox_right_led_3_on(); + break; + case L4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case L5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + // case L6: + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + // case L7: + // ergodox_right_led_1_on(); + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + default: + ergodox_board_led_off(); + break; + } +}; +""" + +MACROCODE = """ +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 + +// TODO: allow default mode to be configured +static uint16_t unicode_mode = UC_MODE_WIN; + +uint16_t hextokeycode(uint8_t hex) {{ + if (hex == 0x0) {{ + return KC_P0; + }} + if (hex < 0xA) {{ + return KC_P1 + (hex - 0x1); + }} + return KC_A + (hex - 0xA); +}} + +void unicode_action_function(uint16_t hi, uint16_t lo) {{ + switch (unicode_mode) {{ + case UC_MODE_WIN: + register_code(KC_LALT); + + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LALT); + break; + case UC_MODE_LINUX: + register_code(KC_LCTL); + register_code(KC_LSFT); + + register_code(KC_U); + unregister_code(KC_U); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + case UC_MODE_OSX: + break; + }} +}} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ + if (!record->event.pressed) {{ + return MACRO_NONE; + }} + // MACRODOWN only works in this function + switch(id) {{ + case UM: + unicode_mode = (unicode_mode + 1) % 2; + break; +{macro_cases} +{unicode_macro_cases} + default: + break; + }} + return MACRO_NONE; +}}; +""" + + +UNICODE_MACRO_TEMPLATE = """ +case {macro_id}: + unicode_action_function(0x{hi:02x}, 0x{lo:02x}); + break; +""".strip() + + +def unicode_macro_cases(config): + for macro_id, uc_hex in config['unicode_macros'].items(): + hi = int(uc_hex, 16) >> 8 + lo = int(uc_hex, 16) & 0xFF + unimacro_keys = ", ".join( + "T({})".format( + "KP_" + digit if digit.isdigit() else digit + ) for digit in uc_hex + ) + yield UNICODE_MACRO_TEMPLATE.format( + macro_id=macro_id, hi=hi, lo=lo + ) + + +def iter_keymap_lines(keymap, row_indents=None): + col_widths = {} + col = 0 + # first pass, figure out the column widths + prev_row_index = None + for code, row_index in keymap.values(): + if row_index != prev_row_index: + col = 0 + if row_indents: + col = row_indents[row_index] + col_widths[col] = max(len(code), col_widths.get(col, 0)) + prev_row_index = row_index + col += 1 + + # second pass, yield the cell values + col = 0 + prev_row_index = None + for key_index in sorted(keymap): + code, row_index = keymap[key_index] + if row_index != prev_row_index: + col = 0 + yield "\n" + if row_indents: + for indent_col in range(row_indents[row_index]): + pad = " " * (col_widths[indent_col] - 4) + yield (" /*-*/" + pad) + col = row_indents[row_index] + else: + yield pad + yield " {}".format(code) + if key_index < len(keymap) - 1: + yield "," + # This will be yielded on the next iteration when + # we know that we're not at the end of a line. + pad = " " * (col_widths[col] - len(code)) + prev_row_index = row_index + col += 1 + + +def iter_keymap_parts(config, keymaps): + # includes + for include_path in config['keymaps_includes']: + yield '#include "{}"\n'.format(include_path) + + yield "\n" + + # definitions + for i, macro_id in enumerate(sorted(config['macro_ids'])): + yield "#define {} {}\n".format(macro_id, i) + + yield "\n" + + for i, layer_name in enumerate(config['layer_lines']): + yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) + + yield "\n" + + # keymaps + yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" + + for i, layer_name in enumerate(config['layer_lines']): + # comment + layer_lines = config['layer_lines'][layer_name] + prefixed_lines = " * " + " * ".join(layer_lines) + yield "/*\n{} */\n".format(prefixed_lines) + + # keymap codes + keymap = keymaps[layer_name] + row_indents = ROW_INDENTS.get(config['layout']) + keymap_lines = "".join(iter_keymap_lines(keymap, row_indents)) + yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines) + + yield "};\n\n" + + # no idea what this is for + yield "const uint16_t PROGMEM fn_actions[] = {};\n" + + # macros + yield MACROCODE.format( + macro_cases="", + unicode_macro_cases="\n".join(unicode_macro_cases(config)), + ) + + # TODO: dynamically create blinking lights + yield USERCODE + + +def main(argv=sys.argv[1:]): + if not argv or '-h' in argv or '--help' in argv: + print(__doc__) + return 0 + + in_path = os.path.abspath(argv[0]) + if not os.path.exists(in_path): + print("No such file '{}'".format(in_path)) + return 1 + + if len(argv) > 1: + out_path = os.path.abspath(argv[1]) + else: + dirname = os.path.dirname(in_path) + out_path = os.path.join(dirname, "keymap.c") + + config = parse_config(in_path) + valid_keys = parse_valid_keys(config, out_path) + keymaps = parse_keymaps(config, valid_keys) + + with io.open(out_path, mode="w", encoding="utf-8") as fh: + for part in iter_keymap_parts(config, keymaps): + fh.write(part) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/keyboard/ergodox_ez/util/readme.md b/keyboard/ergodox_ez/util/readme.md new file mode 100644 index 0000000000..26c5e5d99c --- /dev/null +++ b/keyboard/ergodox_ez/util/readme.md @@ -0,0 +1,3 @@ +# ErgoDox EZ Utilities + +The Python script in this directory, by [mbarkhau](https://github.com/mbarkhau) allows you to write out a basic ErgoDox EZ keymap using Markdown notation, and then transpile it to C, which you can then compile. It's experimental, but if you're not comfortable using C, it's a nice option. diff --git a/keyboard/planck/CYGWIN_GUIDE.md b/keyboard/planck/CYGWIN_GUIDE.md deleted file mode 100755 index ac13e745d7..0000000000 --- a/keyboard/planck/CYGWIN_GUIDE.md +++ /dev/null @@ -1,352 +0,0 @@ -#Planck Advanced (but not too advanced) `cygwin` Users Guide -If you are a user of the [cygwin environment](https://cygwin.com) in Windows and want the freedom to use the latest tools available, then this is the guide for you. If compiling your own copy of the latest and greatest Gnu C Compiler makes you super happy, then this is the guide for you. If the command line make you smile, then this is the guide for you. - -This guide was written step by step as I went through the process on a `Windows 10` `x86_64` and a `Windows 7` `amd k10` based system. This should be generally applicable to to any `Windows` environment with `cygwin`. - -#####Do not skip steps. Do not move past a step until the previous step finishes successfully. - -Based on [avr-libc installation guide](http://www.nongnu.org/avr-libc/user-manual/install_tools.html) - -##Get the Required Packages -Download the `cygwin` setup ([x86_64](https://cygwin.com/setup-x86_64.exe)) and install the default system plus the following if they are not already selected: -- devel/git -- devel/gcc-core -- devel/gcc-g++ -- devel/flex -- devel/bison -- devel/make -- devel/texinfo -- devel/gettext-devel -- devel/automake -- devel/autoconfig -- devel/libtool -- text/gettext -- libs/libgcc1 -- interpreters/m4 -- web/wget -- archive/unzip - -The following sources will be required: -- [gmp](https://gmplib.org/) (6.1.0) -- [mpfr](http://www.mpfr.org/) (3.1.4) -- [mpc](http://www.multiprecision.org/) (1.0.3) -- [binutils](https://www.sourceware.org/binutils/) (2.26) -- [gcc](https://gcc.gnu.org/) (5.3.0) -- [avr-libc](http://www.nongnu.org/avr-libc/) (2.0.0) - -The `dfu-programmer` will be required to flash the new firmware -- [dfu-programmer](https://dfu-programmer.github.io/) (0.7.2) - -The set of commands below will create a directory (`~/local/avr`) for the sources you compile to be installed on the machine and a directory (`~/src`) for these source files to be stored. The commands then download the sources of the needed packages and unpack them. Note: the expand commands are different depending on if the packages are offered as a `bz2` or `gz` archive -``` -$ mkdir ~/local -$ mkdir ~/local/avr -$ mkdir ~/src -$ cd ~/src -$ wget https://gmplib.org/download/gmp/gmp-6.1.0.tar.bz2 -$ wget http://www.mpfr.org/mpfr-3.1.4/mpfr-3.1.4.tar.bz2 -$ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz -$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.gz -$ wget http://mirror0.babylon.network/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.gz -$ wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2 -$ tar -xjf gmp-6.1.0.tar.bz2 -$ tar -xjf mpfr-3.1.4.tar.bz2 -$ tar -zxf mpc-1.0.3.tar.gz -$ tar -zxf binutils-2.26.tar.gz -$ tar -zxf gcc-5.3.0.tar.gz -$ tar -xjf avr-libc-2.0.0.tar.bz2 -``` - -##Setup the Build Environment -These commands will set up the install directory and the `PATH` variable, which will allow you to access your installed packages. Note: if you close the `cygwin` terminal window, you will need to rerun these commands, they are not permanent. -``` -$ PREFIX=$HOME/local/avr -$ export PREFIX -$ PATH=/usr/local/bin:/usr/local/lib:/usr/local/include:/bin:/lib:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS -$ PATH=$PATH:$PREFIX/bin:$PREFIX/lib -$ export PATH -``` - -##The `gcc` Required Math Library Packages -The following packages are required to be complied and installed in order to compile `gcc`. They are not sufficiently available through the `cygwin` package system, so we have to make them ourselves. They must be complied in this order because each one depends on the previous. Verfiy that for each package, `make check` returns all passing and no fails. - -###Build and Install `gmp` -``` -$ cd ~/src/gmp-6.1.0 -$ ./configure --enable-static --disable-shared -$ make -$ make check -$ make install -``` - -###Build and Install `mpfr` -``` -$ cd ~/src/mpfr-3.1.4 -$ ./configure --with-gmp-build=../gmp-6.1.0 --enable-static --disable-shared -$ make -$ make check -$ make install -``` - -###Build and Install `mpc` -``` -$ cd ~/src/mpc-1.0.3 -$ ./configure --with-gmp=/usr/local --with-mpfr=/usr/local --enable-static --disable-shared -$ make -$ make check -$ make install -``` - -##OPTIONAL Part -You can build and install a brand new `gcc` or you can use the one supplied by `cygwin`. This will take about 4-5 hours to compile (It is a "native build", so it does the entire build **3 times**. This takes a long while). - -###Build and Install `gcc` for Your Machine -``` -$ cd ~/src/gcc-5.3.0 -$ mkdir obj-local -$ cd obj-local -$ ../configure --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-static --disable-shared -$ make -$ make install -``` -##End OPTIONAL Part - -###Build and Install `binutils` for Your Machine -``` -$ cd ~/src/binutils-2.26 -$ mkdir obj-local -$ cd obj-local -$ ../configure -$ make -$ make install -``` - -##Buliding `binutils`, `gcc`, and `avr-libc` for the AVR system -Now we can make the critical stuff for compiling our firmware: `binutils`, `gcc`, and `avr-libc` for the AVR architecture. These allow us to build and manipulate the firmware for the keyboard. - -###Build `binutils` for AVR -If you plan to build and install `avr-gdb` also, use the `gdb` install at the end of this guide as it also builds the `binutils` -``` -$ cd ~/src/binutils-2.26 -$ mkdir obj-avr -$ cd obj-avr -$ ../configure --prefix=$PREFIX --target=avr --disable-nls -$ make -$ make install -``` - -###Build `gcc` for AVR -``` -$ cd ~/src/gcc-5.3.0 -$ mkdir obj-avr -$ cd obj-avr -$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-static --disable-shared --disable-nls --disable-libssp --with-dwarf2 -$ make -$ make install -``` - -###Build `avr-libc` for AVR -For building the `avr-libc`, we have to specify the host build system. In my case it is `x86_64-unknown-cygwin`. You can look for build system type in the `gcc` configure notes for the proper `--build` specification to pass when you configure `avr-libc`. -``` -$ cd ~/src/avr-libc-2.0.0 -$ ./configure --prefix=$PREFIX --build=x86_64-unknown-cygwin --host=avr -$ make -$ make install -``` - -##Building 'dfu-programmer' for flashing the firmware via USB and installing the drivers -We can either build our own, or use the precomplied binaries. The precompiled binaries don't play well with `cygwin` so it is better to build them ourselves. The procedure for the precompiled binaries is included at the end of this guide. - -### Build and Install the `libusb` -The `dfu-programmer` requires `libusb` so that it can interact with the USB system. These repos must be bootstrapped in order to create an appropriate `./configure` and `Makefile` for your system. -``` -$ cd ~/src -$ git clone https://github.com/libusb/libusb.git -$ cd libusb -$ ./bootstrap.sh -$ ./configure -$ make -$ make install -``` - -### Build and Install the `dfu-programmer` -``` -$ cd ~/src -$ git clone https://github.com/dfu-programmer/dfu-programmer.git -$ cd dfu-programmer -$ ./bootstrap.sh -$ ./configure -$ make -$ make install -``` - -Verify the installation with: -``` -$ which dfu-programmer -/usr/local/bin/dfu-programmer - -$ dfu-programmer -dfu-programmer 0.7.2 -https://github.com/dfu-programmer/dfu-programmer -Type 'dfu-programmer --help' for a list of commands - 'dfu-programmer --targets' to list supported target devices -``` -If you are not getting the above result, you will not be able to flash the firmware! - -###Install the USB drivers -The drivers are included in the windows binary version of [`dfu-programmer` 0.7.2](http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip). -``` -$ cd ~/src -$ wget http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip -$ unzip dfu-programmer-win-0.7.2.zip -d dfu-programmer-win-0.7.2 -``` - -or - -The official drivers are found in [Atmel's `FLIP` installer](http://www.atmel.com/images/Flip%20Installer%20-%203.4.7.112.exe). Download and then install `FLIP`. Upon installation, the drivers will be found in `C:\Program Files (x86)\Atmel\Flip 3.4.7\usb`. - -Then, from an **administrator-privileged** `Windows` terminal, run the following command (adjust the path for username, etc. as necessary) and accept the prompt that pops up: -``` -C:\> pnputil -i -a C:\cygwin64\home\Kevin\src\dfu-programmer-win-0.7.2\dfu-prog-usb-1.2.2\atmel_usb_dfu.inf -or -C:\> pnputil -i -a "C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf" -``` - -This should be the result: -``` -Microsoft PnP Utility - -Processing inf : atmel_usb_dfu.inf -Successfully installed the driver on a device on the system. -Driver package added successfully. -Published name : oem104.inf - - -Total attempted: 1 -Number successfully imported: 1 -``` - -Alternatively, the `Windows` driver can be installed when prompted by `Windows` when the keyboard is attached. Do not let `Windows` search for a driver; specify the path to search for a driver and point it to the `atmel_usb_dfu.inf` file. - -##Building and Flashing the Planck firmware! -If you did everything else right. This part should be a snap! Grab the latest sources from `github`, make the Plank firmware, then flash it. - -###Build Planck and Load the Firmware -``` -$ cd ~/src -$ git clone https://github.com/jackhumbert/qmk_firmware.git -$ cd qmk_firmware/keyboard/planck -$ make -``` - -Make sure there are no errors. You should end up with this or something similar: -``` -Creating load file for Flash: planck.hex -avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature planck.elf planck.hex - -Creating load file for EEPROM: planck.eep -avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ ---change-section-lma .eeprom=0 --no-change-warnings -O ihex planck.elf planck.eep || exit 0 - -Creating Extended Listing: planck.lss -avr-objdump -h -S -z planck.elf > planck.lss - -Creating Symbol Table: planck.sym -avr-nm -n planck.elf > planck.sym - -Size after: - text data bss dec hex filename - 18602 82 155 18839 4997 planck.elf - --------- end -------- -``` - -If you do not get the above, you **did not** build the firmware, and you will have nothing to flash. If you have the fresh clone from `github`, it was probably something gone wrong in this install process, go check and see what didn't work and threw errors or what steps you might have missed. - -But if everything went OK, you are ready to flash! Press the reset button on the bottom of the Planck, wait two seconds, then: -``` -$ make dfu -``` -. -. -. -profit!!! - - - - - -##extra bits... - -###Installing Precompiled `dfu-programmer` Binaries (not recommended for `cygwin`) -To install the `dfu-programmer` from the binaries, we must get if from [the `dfu-programmer` website](https://dfu-programmer.github.io/) ([0.7.2](http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip)). - -Copy this file into your `cygwin` home\src directory. (For me, it is `C:\cygwin64\home\Kevin\src`), extract the files, move `dfu-programmer.exe` to `~/local/avr/bin`. Most obnoxiously, the `libusb0_x86.dll` and `libusb0.sys` need to be moved from `./dfu-prog-usb-1.2.2/x86/` to a directory in the `Windows` `PATH` and the `cygwin` `PATH`. This is because the `dfu-programmer` binary is `mingw` based, not `cygwin` based, so the `dlls` do not cooperate. I achieved acceptable pathing by moving the files to `C:\cygwin64\home\Kevin\local\avr\bin` Then, in a `WINDOWS` command prompt running (Adjusting your path for username, etc. as needed): -``` -C:\> set PATH=%PATH%;C:\cygwin64\home\Kevin\local\avr\bin -``` - -Then, rename `libusb0_x86.dll` to `libusb0.dll`. - -You can tell that you were successful by trying to execute 'dfu-programmer' from the 'cygwin' prompt: -``` -$ which dfu-programmer -/home/Kevin/local/avr/bin/dfu-programmer - -$ dfu-programmer -dfu-programmer 0.7.2 -https://github.com/dfu-programmer/dfu-programmer -Type 'dfu-programmer --help' for a list of commands - 'dfu-programmer --targets' to list supported target devices -``` - -If you are not getting the above result, you will not be able to flash the firmware! -- Try making sure your `PATH` variables are set correctly for both `Windows` and `cygwin`. -- Make sure the `dll` is named correctly. -- Do not extract it with `cygwin`'s `unzip` as it does not set the executable permission. If you did it anyway, do `chmod +x dfu-programmer.exe`. -- Still have problems? Try building it instead. - - -##Debugging Tools - -These tools are for debugging your firmware, etc. before flashing. Theoretically, it can save your memory from wearing out. However, these tool do not work 100% for the Planck firmware. - -### `gdb` for AVR -`gdb` has a simulator for AVR but it does not support all instructions (like WDT), so it immediately crashes when running the Planck firmware (because `lufa.c` disables the WDT in the first few lines of execution). But it can still be useful in debugging example code and test cases, if you know how to use it. - -``` -$ cd ~/src -$ git clone git://sourceware.org/git/binutils-gdb.git -$ cd binutils-gdb -$ mkdir obj-avr -$ cd obj-avr -$ ../configure --prefix=$PREFIX --target=avr --build=x86_64-unknown-cygwin --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --disable-nls --enable-static -$ make -$ make install -``` - -### `simulavr` -`simulavr` is an AVR simulator. It runs the complied AVR elfs. `simulavr` does not support the `atmega32u4` device... it does `atmega32` but that is not good enough for the firmware (no PORTE and other things), so you cannot run the Planck firmware. I use it to simulate ideas I have for features in separate test projects. - -This one is a major pain in the butt because it has a lot of dependencies and it is buggy. I will do my best to explain it but... it was hard to figure out. A few things need to be changed in the 'Makefile' to make it work in `cygwin`. - - -``` -$ cd ~/src -$ git clone https://github.com/Traumflug/simulavr.git -$ cd simulavr -$ ./bootstrap -$ ./configure --prefix=$PREFIX --enable-static --disable-tcl --disable-doxygen-doc -``` - Edit `src/Makefile.am` now so that `-no-undefined` is included (I did this by removing the SYS_MINGW conditional surrounding `libsim_la_LDFLAGS += -no-undefined` and `libsimulavr_la_LDFLAGS += -no-undefined \ libsimulavr_la_LIBADD += $(TCL_LIB)`. Also, `$(EXEEXT)` is added after `kbdgentables` in two places. - -``` -$ make -$ make install -``` - - -TODO: -- git repos for all sources -- command line magic for cygwin setup -- better options for `dfu-drivers` diff --git a/keyboard/planck/PCB_GUIDE.md b/keyboard/planck/PCB_GUIDE.md deleted file mode 100644 index b36d8fb64c..0000000000 --- a/keyboard/planck/PCB_GUIDE.md +++ /dev/null @@ -1,151 +0,0 @@ -# Planck Firmware Guide - -## Setting up the environment - -### Windows -1. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. -2. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. -3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -5. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! - - -### Mac - -If you're using homebrew, you can use the following commands: - - brew tap osx-cross/avr - brew install avr-libc - brew install dfu-programmer - -Otherwise, these instructions will work: - -1. Install Xcode from the App Store. -2. Install the Command Line Tools from `Xcode->Preferences->Downloads`. -3. Install [DFU-Programmer][dfu-prog]. - -### Linux -1. Install AVR GCC with your favorite package manager. -2. Install [DFU-Programmer][dfu-prog]. - -Note that, since it will be directly accessing USB hardware, the -`dfu-programmer` program needs to be run as root. - -## Verify Your Installation -1. Clone the following repository: https://github.com/jackhumbert/qmk_firmware -2. Open a Terminal and `cd` into `qmk_firmware/keyboard/planck` -3. Run `make`. This should output a lot of information about the build process. - -## Using the built-in functions - -Here is a list of some of the functions available from the command line: - -* `make clean`: clean the environment - may be required in-between builds -* `make`: compile the code -* `make KEYMAP=<keymap>`: compile with the extended keymap file `extended_keymaps/extended_keymap_<keymap>.c` -* `make dfu`: build and flash the layout to the PCB -* `make dfu-force`: build and force-flash the layout to the PCB (may be require for first flash) - -Generally, the instructions to flash the PCB are as follows: - -1. Make changes to the appropriate keymap file -2. Save the file -3. `make clean` -4. Press the reset button on the PCB/press the key with the `RESET` keycode -5. `make <arguments> dfu` - use the necessary `KEYMAP=<keymap>` and/or `COMMON=true` arguments here. - -## Troubleshooting -If you see something like this - - 0 [main] sh 13384 sync_with_child: child 9716(0x178) died before initialization with status code 0xC0000142 - 440 [main] sh 13384 sync_with_child: *** child state waiting for longjmp - /usr/bin/sh: fork: Resource temporarily unavailable - -after running 'make' on Windows than you are encountering a very popular issue with WinAVR on Windows 8.1 and 10. -You can easily fix this problem by replacing msys-1.0.dll in WinAVR/utils/bin with [this one](http://www.madwizard.org/download/electronics/msys-1.0-vista64.zip). -Restart your system and everything should work fine! - - -If you see this - - dfu-programmer atmega32u4 erase - process_begin: CreateProcess(NULL, dfu-programmer atmega32u4 erase, ...) failed. - make (e=2): The system cannot find the file specified. - make: *** [dfu] Error 2 - -when trying to 'make dfu' on Windows you need to copy the dfu-programmer.exe to qmk_firmware/keyboard/planck. - - -## Quantum MK Firmware - -### Keymap - -Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/qmk_firmware/blob/master/quantum/keymap_common.h). - -You can use modifiers with keycodes like this: - - LCTL(KC_C) - -Which will generate Ctrl+c. These are daisy-chainable, meaning you can do things like: - - LCTL(LALT(KC_C)) - -That will generate Ctrl+Alt+c. The entire list of these functions is here: - -* `LCTL()`: Left control -* `LSFT()` / `S()`: Left shift -* `LALT()`: Left alt/opt -* `LGUI()`: Left win/cmd -* `RCTL()`: Right control -* `RSFT()`: Right shift -* `RALT()`: Right alt/opt -* `RGUI()`: Right win/cmd - -`S(KC_1)`-like entries are useful in writing keymaps for the Planck. - -### Other keycodes - -A number of other keycodes have been added that you may find useful: - -* `CM_<key>`: the Colemak equivalent of a key (in place of `KC_<key>`), when using Colemak in software (`CM_O` generates `KC_SCLN`) -* `RESET`: jump to bootloader for flashing (same as press the reset button) -* `BL_STEP`: step through the backlight brightnesses -* `BL_<0-15>`: set backlight brightness to 0-15 -* `BL_DEC`: lower the backlight brightness -* `BL_INC`: raise the backlight brightness -* `BL_TOGG`: toggle the backlight on/off - -### Function layers - -The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN<num>` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC(<num>)` notation. `F(<num>)` is a shortcut for this. - -The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action). - -### Macros - -Macros have been setup in the `keymaps/keymap_default.c` file so that you can use `M(<num>)` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`): - - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_A), END); - break; - case 1: - return MACRODOWN(TYPE(KC_B), END); - break; - case 2: - return MACRODOWN(TYPE(KC_C), END); - break; - case 3: - return MACRODOWN(TYPE(KC_D), END); - break; - } - return MACRO_NONE; - -`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke. - -[cygwin]: https://www.cygwin.com/ -[mingw]: http://www.mingw.org/ -[mhv]: https://infernoembedded.com/products/avr-tools -[winavr]: http://winavr.sourceforge.net/ -[crosspack]: http://www.obdev.at/products/crosspack/index.html -[dfu-prog]: http://dfu-programmer.sourceforge.net/ diff --git a/keyboard/planck/flash-pcb.sh b/keyboard/planck/flash-pcb.sh deleted file mode 100755 index 2ae15458c0..0000000000 --- a/keyboard/planck/flash-pcb.sh +++ /dev/null @@ -1,3 +0,0 @@ -dfu-programmer atmega32u4 erase --force -dfu-programmer atmega32u4 flash planck_pcb.hex -dfu-programmer atmega32u4 reset
\ No newline at end of file diff --git a/keyboard/planck/keymaps/README.md b/keyboard/planck/keymaps/README.md new file mode 100644 index 0000000000..9152353017 --- /dev/null +++ b/keyboard/planck/keymaps/README.md @@ -0,0 +1,22 @@ +# How to add your own keymap + +Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`: + + _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author] + +\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements + +and contain the following files: + +* `keymap.c` +* `readme.md` *recommended* +* `config_user.h` *optional*, found automatically when compiling +* `makefile.mk` *optional*, found automatically when compling + +When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format: + + * **folder_name** description + +# List of Planck keymaps + +* **default** default Planck layout
\ No newline at end of file diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c index 4b9c15e084..0968f61335 100644 --- a/keyboard/planck/keymaps/experimental/keymap.c +++ b/keyboard/planck/keymaps/experimental/keymap.c @@ -316,8 +316,7 @@ void matrix_scan_user(void) { leader_end(); SEQ_ONE_KEY(KC_F) { - register_code(KC_S); - unregister_code(KC_S); + send_string("if yes\n\tpeanut butter\nelse\n\trice snacks"); } SEQ_TWO_KEYS(KC_A, KC_S) { register_code(KC_H); diff --git a/keyboard/preonic/flash-pcb.sh b/keyboard/preonic/flash-pcb.sh deleted file mode 100755 index 8b59b83f5e..0000000000 --- a/keyboard/preonic/flash-pcb.sh +++ /dev/null @@ -1,3 +0,0 @@ -dfu-programmer atmega32u4 erase --force -dfu-programmer atmega32u4 flash preonic_pcb.hex -dfu-programmer atmega32u4 reset
\ No newline at end of file |