.vagrant/
.DS_STORE
-# Eclipse Settings
+# Eclipse/PyCharm/Other IDE Settings
.cproject
.project
.settings/
-
+.idea
-@echo off
-setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1
-if NOT ["%errorlevel%"]==["0"] (
- echo FAILED. Rerun with administrator privileges.
- pause
-) else (
- echo Success!
- pause
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
+
+SET NEWPATH1="C:\MinGW\msys\1.0\bin"
+SET NEWPATH2="C:\MinGW\bin"
+
+:: Make sure we're running with administrator privileges
+NET SESSION >nul 2>&1
+IF ERRORLEVEL 1 (
+ ECHO FAILED. Run this script with administrator privileges.
+ GOTO ExitBatch
)
+
+:: Make sure the second path exists. The first path won't be created until the second script is run
+IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
+
+:: Add paths
+CALL :AddPath %NEWPATH1%
+CALL :AddPath %NEWPATH2%
+
+:: Branch to UpdateEnv if we need to update
+IF DEFINED UPDATE (GOTO UpdateEnv)
+
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:UpdateEnv
+ECHO Making updated PATH go live . . .
+REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
+setx TEMPVAR 1 > nul 2>&1
+REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
+IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer)
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:ExitBatch
+ENDLOCAL
+PAUSE
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:AddPath <pathToAdd>
+ECHO %PATH% | FINDSTR /C:"%~1" > nul
+IF ERRORLEVEL 1 (
+ REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1" > nul 2>&1
+ IF ERRORLEVEL 0 (
+ ECHO Adding %1 . . . Success!
+ SET "PATH=%PATH%;%~1"
+ SET UPDATE=1
+ ) ELSE (
+ ECHO Adding %1 . . . FAILED. Run this script with administrator privileges.
+ )
+) ELSE (
+ ECHO Skipping %1 - Already in PATH
+ )
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:KillExplorer
+
+ECHO Your desktop is being restarted, please wait. . .
+ping -n 5 127.0.0.1 > NUL 2>&1
+ECHO Killing process Explorer.exe. . .
+taskkill /f /im explorer.exe
+ECHO.
+ECHO Your desktop is now loading. . .
+ping -n 5 127.0.0.1 > NUL 2>&1
+ECHO.
+ping -n 5 127.0.0.1 > NUL 2>&1
+START explorer.exe
+START explorer.exe %CD%
+EXIT /b
\ No newline at end of file
-@echo off
-setx /M test test > nul 2>&1
-if NOT ["%errorlevel%"]==["0"] (
- echo FAILED. Rerun with administrator privileges.
- pause
- exit
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+
+SET STARTINGDIR=%CD%
+
+:: Check for admin privilages
+SETX /M test test > nul 2>&1
+IF NOT ["%ERRORLEVEL%"]==["0"] (
+ ECHO FAILED. Rerun with administrator privileges.
+ GOTO ExitBatch
)
-echo ------------------------------------------
-echo Installing wget and unzip
-echo ------------------------------------------
+:: Make sure path to MinGW exists - if so, CD to it
+SET MINGWPATH="C:\MinGW\bin"
+IF NOT EXIST !MINGWPATH! (ECHO Path not found: %MINGWPATH% && GOTO ExitBatch)
+CD /D %MINGWPATH%
+
+
+ECHO ------------------------------------------
+ECHO Installing wget and unzip
+ECHO ------------------------------------------
mingw-get install msys-wget-bin msys-unzip-bin
-cd \MinGW\bin
-mkdir temp
-cd temp
-echo ------------------------------------------
-echo Installing dfu-programmer.
-echo ------------------------------------------
+MKDIR temp
+CD temp
+
+ECHO ------------------------------------------
+ECHO Installing dfu-programmer.
+ECHO ------------------------------------------
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
-copy dfu-programmer.exe ..
+COPY dfu-programmer.exe ..
-echo ------------------------------------------
-echo Downloading driver
-echo ------------------------------------------
+ECHO ------------------------------------------
+ECHO Downloading driver
+ECHO ------------------------------------------
wget http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
unzip libusb-win32-bin-1.2.6.0.zip
-cp libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+COPY libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+
+ECHO ------------------------------------------
+ECHO Installing driver. Accept prompt.
+ECHO ------------------------------------------
+IF EXIST "%WinDir%\System32\PnPUtil.exe" (%WinDir%\System32\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
+IF EXIST "%WinDir%\Sysnative\PnPUtil.exe" (%WinDir%\Sysnative\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
+
+ECHO FAILED. Could not find PnPUtil.exe in "%WinDir%\System32" or "%WinDir%\Sysnative".
+
+:PNPUTILFOUND
-echo ------------------------------------------
-echo Installing driver. Accept prompt.
-echo ------------------------------------------
-pnputil -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf
+:: Wait then delete directory
+ping -n 5 127.0.0.1 > NUL 2>&1
+CD ..
+RD /s /q temp
-cd ..
-rm -rf temp
+ECHO ------------------------------------------
+ECHO Finished!
-echo ------------------------------------------
-echo Finished!
-pause
\ No newline at end of file
+:ExitBatch
+CD /D %STARTINGDIR%
+ENDLOCAL
+PAUSE
+EXIT /b
\ No newline at end of file
## Build Environment Setup
### 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!
+1. If you have ever installed WinAVR, uninstall it.
+2. 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**.
+3. 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.
+4. 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.
+5. 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.
+6. 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!
+7. Future build commands should be run from the standard Windows command prompt, which you can find by searching for "command prompt" from the start menu or start screen. Ignore the "MHV AVR Shell".
### Mac
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
3. Install [DFU-Programmer][dfu-prog].
### Linux
-Install AVR GCC and dfu-progammer with your favorite package manager.
+Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager.
Debian/Ubuntu example:
sudo apt-get update
- sudo apt-get install gcc-avr dfu-programmer
+ sudo apt-get install gcc-avr avr-libc dfu-programmer
### Vagrant
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process.
## Customizing, Building, and Deploying Your Firmware
-1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
+
+Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly.
+
+1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
2. To build a keymap other than the default, type `KEYMAP=<name>` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`.
3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html)
## Troubleshooting
1. Try running `make clean` if the make command fails.
- WIP
\ No newline at end of file
+ WIP
-# Quantum MK Firmware
+# Quantum Mechanical Keyboard Firmware
-This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.co) and the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard.
+This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.co), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/).
QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, TMK.
This documentation is edited and maintained by Erez Zukerman of ErgoDox EZ. If you spot any typos or inaccuracies, please [open an issue](https://github.com/jackhumbert/qmk_firmware/issues/new).
+The OLKB product firmwares are maintained by Jack, the Ergodox EZ by Erez, and the Clueboard by [Zach White](https://github.com/skullydazed).
+
## Important background info: TMK documentation
The documentation below explains QMK customizations and elaborates on some of the more useful features of TMK. To understand the base firmware, and especially what *layers* are and how they work, please see [TMK_README.md](/TMK_README.md).
* If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there.
* If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh <project_name>`, which will create `/keyboard/<project_name>` with all the necessary components for a Quantum project.
+### Makefile Options
+
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI controls
- # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not //
+ UNICODE_ENABLE = no # <-- This is how you disable an option, just set it to "no"
BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+### Customizing Makefile options on a per-keymap basis
+
+If your keymap directory has a file called `makefile.mk` (note the lowercase filename, and the `.mk` extension), any Makefile options you set in that file will take precedence over other Makefile options (those set for Quantum as a whole or for your particular keyboard).
+
+So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`.
+
## Quick aliases to common actions
Your keymap can include shortcuts to common operations (called "function actions" in tmk).
`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
+### Prevent stuck modifiers
+
+Consider the following scenario:
+
+1. Layer 0 has a key defined as Shift.
+2. The same key is defined on layer 1 as the letter A.
+3. User presses Shift.
+4. User switches to layer 1 for whatever reason.
+5. User releases Shift, or rather the letter A.
+6. User switches back to layer 0.
+
+Shift was actually never released and is still considered pressed.
+
+If such situation bothers you add this to your `config.h`:
+
+ #define PREVENT_STUCK_MODIFIERS
+
+This option uses 5 bytes of memory per every 8 keys on the keyboard
+rounded up (5 bits per key). For example on Planck (48 keys) it uses
+(48/8)\*5 = 30 bytes.
+
### Remember: These are just aliases
These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
This will clear all keys besides the mods currently pressed.
+* `update_tri_layer(layer_1, layer_2, layer_3);`
+
+If the user attempts to activate layer 1 AND layer 2 at the same time (for example, by hitting their respective layer keys), layer 3 will be activated. Layers 1 and 2 will _also_ be activated, for the purposes of fallbacks (so a given key will fall back from 3 to 2, to 1 -- and only then to 0).
+
+#### Naming your macros
+
+If you have a bunch of macros you want to refer to from your keymap, while keeping the keymap easily readable, you can just name them like so:
+
+```
+#define AUD_OFF M(6)
+#define AUD_ON M(7)
+#define MUS_OFF M(8)
+#define MUS_ON M(9)
+#define VC_IN M(10)
+#define VC_DE M(11)
+#define PLOVER M(12)
+#define EXT_PLV M(13)
+```
+
+As was done on the [Planck default keymap](/keyboard/planck/keymaps/default/keymap.c#L33-L40)
+
#### Timer functionality
It's possible to start timers and read values for time-specific events - here's an example:
It's best to declare the `static uint16_t key_timer;` outside of the macro block (top of file, etc).
+#### Example 1: Single-key copy/paste (hold to copy, tap to paste)
+
+With QMK, it's easy to make one key do two things, as long as one of those things is being a modifier. :) So if you want a key to act as Ctrl when held and send the letter R when tapped, that's easy: `CTL_T(KC_R)`. But what do you do when you want that key to send Ctrl-V (paste) when tapped, and Ctrl-C (copy) when held?
+
+Here's what you do:
+
+
+```
+static uint16_t key_timer;
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch(id) {
+ case 0: {
+ if (record->event.pressed) {
+ key_timer = timer_read(); // if the key is being pressed, we start the timer.
+ }
+ else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
+ if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap.
+ return MACRO( D(LCTL), T(C), U(LCTL), END );
+ }
+ else {
+ return MACRO( D(LCTL), T(V), U(LCTL), END );
+ }
+ }
+ break;
+ }
+ }
+ return MACRO_NONE;
+};
+```
+
+And then, to assign this macro to a key on your keyboard layout, you just use `M(0)` on the key you want to press for copy/paste.
+
+#### Example 2: Space Cadet Shift (making it easy to send opening and closing parentheses)
+
+In the [Modern Space Cadet Keyboard](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses), one of cooler features is the Shift Parentheses. To quote Steve Losh:
+
+ > When held while pressing other keys, act like Shift.
+ > When pressed and released on their own, type an opening or closing parenthesis (left and right shift respectively).
+
+```
+static uint16_t key_timer;
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch(id) {
+ case 0: {
+ if (record->event.pressed) {
+ key_timer = timer_read(); // if the key is being pressed, we start the timer.
+ register_code(KC_LSFT); // we're now holding down Shift.
+ } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
+ if (timer_elapsed(key_timer) < 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap.
+ register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren
+ unregister_code(KC_9); // now let's let go of that key
+ }
+ unregister_code(KC_LSFT); // let's release the Shift key now.
+ }
+ break;
+ }
+ case 1: {
+ if (record->event.pressed) {
+ key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key
+ register_code(KC_RSFT);
+ } else {
+ if (timer_elapsed(key_timer) < 150) {
+ register_code(KC_0);
+ unregister_code(KC_0);
+ }
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ }
+ return MACRO_NONE;
+};
+```
+
+And then, to assign this macro to a key on your keyboard layout, you just use `M(0)` on the key you want to press for left shift/opening parens, and `M(1)` for right shift/closing parens.
+
## Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc)
Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap:
- #include <keymap_extras/keymap_colemak.h>
+ #include <keymap_colemak.h>
If you use Dvorak, use `keymap_dvorak.h` instead of `keymap_colemak.h` for this line. After including this line, you will get access to:
## International Characters on Windows
-[AutoHotkey](https://autohotkey.com) allows Windows users to create custom hotkeys amont others.
+[AutoHotkey](https://autohotkey.com) allows Windows users to create custom hotkeys among others.
The method does not require Unicode support in the keyboard itself but depends instead of AutoHotkey running in the background.
RGBLIGHT_ENABLE = yes
-Please note that the underglow is not compatible with MIDI functions. So you cannot enable both of them at the same time.
+Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time.
-Please add the following options into your config.h, and set them up according your hardware configuration.
+Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the F4 by default:
#define ws2812_PORTREG PORTF
#define ws2812_DDRREG DDRF
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
+You'll need to edit `PORTF`, `DDRF`, and `PF4` on the first three lines to the port/pin you have your LED(s) wired to, eg for B3 change things to:
+
+ #define ws2812_PORTREG PORTB
+ #define ws2812_DDRREG DDRB
+ #define ws2812_pin PB3
+
The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboard/planck/keymaps/yang/keymap.c`
### WS2812 Wiring
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.
-
\ No newline at end of file
+
led.c
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
- SRC := keymap_plain.c $(SRC)
+ SRC := keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
+++ /dev/null
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Default Layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ |
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
- * |-----------------------------------------------------------|
- * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|FN1 |
- * |-----------------------------------------------------------|
- * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |
- * |-----------------------------------------------------------|
- * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
- * `-----------------------------------------------------------'
- */
- [0] = KEYMAP_AEK( \
- ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
- LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN1, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT, \
- LCTL,LGUI,LALT, FN4, RALT,FN5, FN0),
-
- /* HHKB mode[HHKB Fn]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` |
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Del |
- * |-----------------------------------------------------------|
- * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
- * |-----------------------------------------------------------|
- * |Shift | | | | | | +| -|End|PgD|Dow|Shift |
- * |-----------------------------------------------------------|
- * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
- * `-----------------------------------------------------------'
- */
- [1] = KEYMAP_AEK( \
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
- CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, DEL, \
- LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
- LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT, \
- LCTL,LGUI,LALT, TRNS, RALT,RGUI,TRNS),
-
- /* Vi mode[Slash]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del |
- * |-----------------------------------------------------------|
- * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs|
- * |-----------------------------------------------------------|
- * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift |
- * |-----------------------------------------------------------|
- * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
- * `-----------------------------------------------------------'
- */
- [2] = KEYMAP_AEK( \
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
- TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, DEL, \
- LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \
- LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,RCTL),
-
- /* Mouse mode(IJKL)[Semicolon]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
- * |-----------------------------------------------------------|
- * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
- * |-----------------------------------------------------------|
- * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
- * `-----------------------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- [3] = KEYMAP_AEK( \
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
- FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
- LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, ENT, \
- LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \
- LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS),
-
- /* Layer 4: Mouse mode(IJKL)[Space]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
- * |-----------------------------------------------------------|
- * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
- * |-----------------------------------------------------------|
- * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
- * `-----------------------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- [4] = KEYMAP_AEK( \
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
- FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
- LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \
- LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \
- LCTL,LGUI,LALT, TRNS, TRNS,TRNS,TRNS),
-};
-
-
-/* id for user defined function/macro */
-enum function_id {
- NONE,
-};
-
-enum macro_id {
- ALT_TAB,
-};
-
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_MOMENTARY(1), // HHKB layer
- [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER), // HHKB layer
- [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
- [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
- [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space
- [5] = ACTION_LAYER_MOMENTARY(3), // Mousekey layer(IJKL)
- [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter
- [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift
- [8] = ACTION_MACRO(ALT_TAB), // Application switching
- [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
- [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
-};
-
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch (id) {
- case ALT_TAB:
- return (record->event.pressed ?
- MACRO( D(LALT), D(TAB), END ) :
- MACRO( U(TAB), END ));
- }
- return MACRO_NONE;
-}
+++ /dev/null
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: qwerty */
- KEYMAP( \
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
- LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,ESC, \
- LCTL,LGUI,LALT, SPC, APP, RALT,RGUI,RCTL),
-};
-const uint16_t PROGMEM fn_actions[] = {};
--- /dev/null
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ KEYMAP( \
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
+ LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,ESC, \
+ LCTL,LGUI,LALT, SPC, APP, RALT,RGUI,RCTL),
+};
+const uint16_t PROGMEM fn_actions[] = {};
--- /dev/null
+#include "keymap_common.h"
+
+/*
+ * Hasu
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
+ * |-----------------------------------------------------------|
+ * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|FN1 |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+ [0] = KEYMAP_AEK( \
+ ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
+ LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN1, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT, \
+ LCTL,LGUI,LALT, FN4, RALT,FN5, FN0),
+
+ /* HHKB mode[HHKB Fn]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` |
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Del |
+ * |-----------------------------------------------------------|
+ * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | | | +| -|End|PgD|Dow|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+ [1] = KEYMAP_AEK( \
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
+ CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, DEL, \
+ LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
+ LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT, \
+ LCTL,LGUI,LALT, TRNS, RALT,RGUI,TRNS),
+
+ /* Vi mode[Slash]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del |
+ * |-----------------------------------------------------------|
+ * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs|
+ * |-----------------------------------------------------------|
+ * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+ [2] = KEYMAP_AEK( \
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
+ TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, DEL, \
+ LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \
+ LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,RCTL),
+
+ /* Mouse mode(IJKL)[Semicolon]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+ * |-----------------------------------------------------------|
+ * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
+ * |-----------------------------------------------------------|
+ * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
+ * `-----------------------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ [3] = KEYMAP_AEK( \
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
+ FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
+ LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, ENT, \
+ LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \
+ LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS),
+
+ /* Layer 4: Mouse mode(IJKL)[Space]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+ * |-----------------------------------------------------------|
+ * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
+ * |-----------------------------------------------------------|
+ * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
+ * `-----------------------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ [4] = KEYMAP_AEK( \
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
+ FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
+ LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \
+ LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \
+ LCTL,LGUI,LALT, TRNS, TRNS,TRNS,TRNS),
+};
+
+
+/* id for user defined function/macro */
+enum function_id {
+ NONE,
+};
+
+enum macro_id {
+ ALT_TAB,
+};
+
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_MOMENTARY(1), // HHKB layer
+ [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER), // HHKB layer
+ [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
+ [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
+ [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space
+ [5] = ACTION_LAYER_MOMENTARY(3), // Mousekey layer(IJKL)
+ [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter
+ [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift
+ [8] = ACTION_MACRO(ALT_TAB), // Application switching
+ [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
+ [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
+};
+
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch (id) {
+ case ALT_TAB:
+ return (record->event.pressed ?
+ MACRO( D(LALT), D(TAB), END ) :
+ MACRO( U(TAB), END ));
+ }
+ return MACRO_NONE;
+}
# 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,
+# 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.
# Target file name (without extension).
TARGET = atomic
-
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
TARGET_DIR = .
# # project specific files
-SRC = atomic.c \
- backlight.c
+SRC = atomic.c
+
+ifdef keymap
+ KEYMAP = $(keymap)
+endif
ifdef KEYMAP
- SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP).c
+else
+ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
+ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
+ include keymaps/$(KEYMAP)/makefile.mk
+endif
else
- SRC := keymaps/keymap_default.c $(SRC)
+$(error Keymap file does not exist)
+endif
endif
+else
+
+ifneq ("$(wildcard keymaps/default.c)","")
+ KEYMAP_FILE = keymaps/default.c
+else
+ KEYMAP_FILE = keymaps/default/keymap.c
+endif
+
+ifneq ("$(wildcard keymaps/default/makefile.mk)","")
+ include keymaps/default/makefile.mk
+endif
+
+endif
+
+SRC := $(KEYMAP_FILE) $(SRC)
+
CONFIG_H = config.h
# MCU name
# software delays.
F_CPU = 16000000
-
#
# LUFA specific
#
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+# change to "no" to disable the options, or define them in the makefile.mk in
+# the appropriate keymap folder that will get included automatically
+#
+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 = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # 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 = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-# MIDI_ENABLE = YES # MIDI controls
-# UNICODE_ENABLE = YES # Unicode
-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+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
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
-include $(TOP_DIR)/quantum/quantum.mk
-
+include $(TOP_DIR)/quantum/quantum.mk
\ No newline at end of file
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 `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` 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 **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
__attribute__ ((weak))
void matrix_init_user(void) {
- // leave these blank
-}
+ // leave this function blank - it can be defined in a keymap file
+};
__attribute__ ((weak))
void matrix_scan_user(void) {
- // leave these blank
+ // leave this function blank - it can be defined in a keymap file
+}
+
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {
+ // leave this function blank - it can be defined in a keymap file
+}
+
+__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) {
// runs every cycle (a lot)
matrix_scan_user();
-}
\ No newline at end of file
+}
+
+void process_action_kb(keyrecord_t *record) {
+ // put your per-action keyboard code here
+ // runs for every action, just before processing by the firmware
+
+ 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
#include "matrix.h"
#include "keymap_common.h"
-#include "backlight.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
#include <stddef.h>
+#include <avr/io.h>
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
void matrix_init_user(void);
void matrix_scan_user(void);
+void process_action_user(keyrecord_t *record);
+void led_set_user(uint8_t usb_led);
+void backlight_init_ports(void);
#endif
\ No newline at end of file
+++ /dev/null
-
-#include <avr/io.h>
-#include "backlight.h"
-
-#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));
- }
-}
\ No newline at end of file
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
-// Planck PCB default pin-out
-// Change this to how you wired your keyboard
-// COLS: Left to right, ROWS: Top to bottom
+/*
+ * 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 COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
#define ROWS (int []){ D0, D5, B5, B6, C6 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
-/* define if matrix has ghost */
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
-/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */
#define BACKLIGHT_LEVELS 3
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/* key combination for command */
+/*
+ * 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 B
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
/*
* Feature disable options
--- /dev/null
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Colemak */
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO },
+ { KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, KC_NO, KC_PGUP },
+ { KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
+ { KC_LCTL, KC_LGUI, KC_NO, KC_LALT, FUNC(1), KC_SPC, KC_NO, KC_RALT, FUNC(2), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+ [1] = { /* function */
+ { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO },
+ { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+ { KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+ { KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY },
+ { KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, FUNC(1), KC_TRNS, KC_NO, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT },
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(1),
+ [2] = ACTION_LAYER_MOMENTARY(1),
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ return MACRODOWN(TYPE(KC_T), END);
+ break;
+ }
+ return MACRO_NONE;
+};
+
--- /dev/null
+#include "atomic.h"
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define ___T___ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Layer shorthand
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+#define _FN 5
+
+/* ROW 1 OPTIONS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ * .- 2u ------------.
+ * | KEY . XXXXXX |
+ * '-----------------'
+ */
+
+/* ROW 2 OPTIONS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ * .- 2u ------------. .- 2u ------------.
+ * | KEY . XXXXXX | | KEY . XXXXXX |
+ * '-----------------' '-----------------'
+ */
+
+/* ROW 3 OPTIONS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ * .- 2u ------------. .- 2u ------------.
+ * | KEY . XXXXXX | | X |
+ * '-----------------' '-----------------'
+ * .- 2u ------------.
+ * | X |
+ * '-----------------'
+ */
+
+/* ROW 4 OPTIONS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ * .- 2u ------------.
+ * | KEY . XXXXXX |
+ * '-----------------'
+ * .- 2u ------------. .- 2u ------------.
+ * | KEY . XXXXXX | | KEY . XXXXXX |
+ * '-----------------' '-----------------'
+ * .- 2u ------------.
+ * | KEY . XXXXXX |
+ * '-----------------'
+ */
+
+/* ROW 5 OPTIONS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ * .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u .
+ * | X | X | X | X | X | X | X | X | X |
+ * '-----------------------------------------------------------------------------------------------------------'
+ * .- 2u ------------.
+ * | X |
+ * '-----------------'
+ * .--------------------- 6.25u ----------------------------.
+ * | X |
+ * '--------------------------------------------------------'
+ * .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --.
+ * | X | X | X | X | X | X |
+ * '----------------------------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY - MIT ENHANCED / GRID COMPATIBLE
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_QW] = { /* QWERTY */
+ { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
+ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
+ { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+
+/* COLEMAK - MIT ENHANCED / GRID COMPATIBLE
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | ESC | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_CM] = { /* COLEMAK */
+ { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
+ { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
+ { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+
+/* DVORAK - MIT ENHANCED / GRID COMPATIBLE
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | ' | , | . | P | Y | F | G | C | R | L | [ | ] | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | ESC | A | O | E | U | I | D | H | T | N | S | / | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_DV] = { /* DVORAK */
+ { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
+ { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_ENT, KC_ENT, KC_PGUP },
+ { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
+ { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+
+/* LOWERED
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | | | | | | XXXXXX . | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_LW] = { /* LOWERED */
+ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
+ { _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS },
+ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______ },
+ { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+
+/* RAISED
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | | | | | | XXXXXX . | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_RS] = { /* RAISED */
+ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
+ { _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_INS },
+ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___, _______ },
+ { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+
+/* FUNCTION
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | | | QWERTY | COLEMK | DVORAK | | | | | | | XXXXXX . | MOUS U | WHEEL- |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | | | | | | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_FN] = { /* FUNCTION */
+ { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
+ { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR },
+ { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U },
+ { _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D },
+ { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
+ },
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+++ /dev/null
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Colemak */
- { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO },
- { KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
- { KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, KC_NO, KC_PGUP },
- { KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
- { KC_LCTL, KC_LGUI, KC_NO, KC_LALT, FUNC(1), KC_SPC, KC_NO, KC_RALT, FUNC(2), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
- },
- [1] = { /* function */
- { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO },
- { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
- { KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
- { KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY },
- { KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, FUNC(1), KC_TRNS, KC_NO, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT },
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(1),
- [2] = ACTION_LAYER_MOMENTARY(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- return MACRODOWN(TYPE(KC_T), END);
- break;
- }
- return MACRO_NONE;
-};
-
+++ /dev/null
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Qwerty */
- { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
- { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌───────────────────── 6.25u ────────────────────────────┐
-// │ X │
-// └────────────────────────────────────────────────────────┘
-// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-// │ X │ X │ X │ X │ X │ X │
-// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
- [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
-
- [3] = ACTION_DEFAULT_LAYER_SET(0),
- [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- return MACRODOWN(TYPE(KC_T), END);
- break;
- }
- return MACRO_NONE;
-};
+++ /dev/null
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Dvorak */
- { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
- { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LCTL, MO(1), KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌───────────────────── 6.25u ────────────────────────────┐
-// │ X │
-// └────────────────────────────────────────────────────────┘
-// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-// │ X │ X │ X │ X │ X │ X │
-// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
- [1] = { /* Qwerty + F keys */
- { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_INS, KC_DEL },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
- { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌───────────────────── 6.25u ────────────────────────────┐
-// │ X │
-// └────────────────────────────────────────────────────────┘
-// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-// │ X │ X │ X │ X │ X │ X │
-// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
- [2] = { /* Numpad + qwerty shortcut keys */
- { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_P4, KC_P5, KC_P6, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
- { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_P1, KC_P2, KC_P3, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_X, KC_B, KC_P0, KC_P0, KC_PENT, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
-// │ X │ │ X │
-// └─────────────────┘ └─────────────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
- { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-// ┌─ 2u ────────────┐
-// │ X │
-// └─────────────────┘
-// ┌───────────────────── 6.25u ────────────────────────────┐
-// │ X │
-// └────────────────────────────────────────────────────────┘
-// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-// │ X │ X │ X │ X │ X │ X │
-// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- return MACRODOWN(TYPE(KC_T), END);
- break;
- }
- return MACRO_NONE;
-};
--- /dev/null
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Dvorak */
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+ { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_LCTL, MO(1), KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+// ┌───────────────────── 6.25u ────────────────────────────┐
+// │ X │
+// └────────────────────────────────────────────────────────┘
+// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+// │ X │ X │ X │ X │ X │ X │
+// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+ [1] = { /* Qwerty + F keys */
+ { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_INS, KC_DEL },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+ { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+// ┌───────────────────── 6.25u ────────────────────────────┐
+// │ X │
+// └────────────────────────────────────────────────────────┘
+// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+// │ X │ X │ X │ X │ X │ X │
+// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+ [2] = { /* Numpad + qwerty shortcut keys */
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_P4, KC_P5, KC_P6, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+ { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_P1, KC_P2, KC_P3, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_X, KC_B, KC_P0, KC_P0, KC_PENT, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐
+// │ X │ │ X │
+// └─────────────────┘ └─────────────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+ { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │ X │ X │ X │ X │ X │ X │ X │ X │ X │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+// ┌─ 2u ────────────┐
+// │ X │
+// └─────────────────┘
+// ┌───────────────────── 6.25u ────────────────────────────┐
+// │ X │
+// └────────────────────────────────────────────────────────┘
+// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+// │ X │ X │ X │ X │ X │ X │
+// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ return MACRODOWN(TYPE(KC_T), END);
+ break;
+ }
+ return MACRO_NONE;
+};
--- /dev/null
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ortholinear Keyboards
+#define PRODUCT The Atomic Keyboard
+#define DESCRIPTION A compact ortholinear keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * 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 COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
+#define ROWS (int []){ D0, D5, B5, B6, B3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 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
+
+// Enable Keyboard Locking via magic key
+#define KEYBOARD_LOCK_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 B
+//#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
--- /dev/null
+#include "atomic.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#include "led.h"
+
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+ #include "song_list.h"
+#endif
+
+#define LAYER_QWERTY 0
+#define LAYER_COLEMAK 1
+#define LAYER_DVORAK 2
+#define LAYER_LOWER 3
+#define LAYER_RAISE 4
+#define LAYER_FUNCTION 5
+#define LAYER_MOUSE 6
+#define LAYER_MUSIC 7
+#define LAYER_ADJUST 8
+
+#define MACRO_QWERTY 0
+#define MACRO_COLEMAK 1
+#define MACRO_DVORAK 2
+#define MACRO_LOWER 3
+#define MACRO_RAISE 4
+#define MACRO_FUNCTION 5
+#define MACRO_MOUSE 6
+#define MACRO_TIMBRE_1 7
+#define MACRO_TIMBRE_2 8
+#define MACRO_TIMBRE_3 9
+#define MACRO_TIMBRE_4 10
+#define MACRO_TEMPO_U 11
+#define MACRO_TEMPO_D 12
+#define MACRO_TONE_DEFAULT 13
+#define MACRO_MUSIC_ON 14
+#define MACRO_MUSIC_OFF 15
+#define MACRO_AUDIO_ON 16
+#define MACRO_AUDIO_OFF 17
+#define MACRO_INC_VOICE 18
+#define MACRO_DEC_VOICE 19
+
+#define M_QWRTY M(MACRO_QWERTY)
+#define M_COLMK M(MACRO_COLEMAK)
+#define M_DVORK M(MACRO_DVORAK)
+#define M_LOWER M(MACRO_LOWER)
+#define M_RAISE M(MACRO_RAISE)
+#define M_FUNCT M(MACRO_FUNCTION)
+#define M_MOUSE M(MACRO_MOUSE)
+#define TIMBR_1 M(MACRO_TIMBRE_1)
+#define TIMBR_2 M(MACRO_TIMBRE_2)
+#define TIMBR_3 M(MACRO_TIMBRE_3)
+#define TIMBR_4 M(MACRO_TIMBRE_4)
+#define TMPO_UP M(MACRO_TEMPO_U)
+#define TMPO_DN M(MACRO_TEMPO_D)
+#define TMPO_DF M(MACRO_TONE_DEFAULT)
+
+
+#define MUS_ON M(MACRO_MUSIC_ON)
+#define MUS_OFF M(MACRO_MUSIC_OFF)
+#define AUD_OFF M(MACRO_AUDIO_OFF)
+#define AUD_ON M(MACRO_AUDIO_ON)
+#define VC_UP M(MACRO_INC_VOICE)
+#define VC_DOWN M(MACRO_DEC_VOICE)
+
+
+#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
+#define ________________ _______, _______
+#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_QWERTY] = { /* QWERTY */
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
+ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+
+ /* COLEMAK
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_COLEMAK] = { /* COLEMAK */
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
+ { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+
+/* DVORAK
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_DVORAK] = { /* DVORAK */
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC },
+ { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL },
+ { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP },
+ { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+
+
+ [LAYER_LOWER] = { /* LOWERED */
+ { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ },
+ { _______, _______, _______, _______, SC_CCLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME },
+ { _______, SC_REDO, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END },
+ { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+
+ [LAYER_RAISE] = { /* RAISED */
+ { KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ },
+ { _______, _______, _______, _______, SC_ACLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS },
+ { _______, SC_SELA, SC_SAVE, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME },
+ { _______, SC_UNDO, SC_CUT, SC_COPY, SC_PSTE, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END },
+ { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+
+ [LAYER_FUNCTION] = { /* FUNCTION */
+ { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ },
+ { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS },
+ { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_VOLU, KC_MUTE },
+ { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT },
+ },
+
+#ifdef MOUSEKEY_ENABLE
+
+ [LAYER_MOUSE] = { /* MOUSE */
+ { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U },
+ { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D },
+ { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
+ },
+
+#endif
+
+ [LAYER_MUSIC] = { /* MUSIC */
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ },
+
+ [LAYER_ADJUST] = { /* ADJUST */
+ { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF, ________________ },
+ { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ },
+ { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ },
+ { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______ },
+ },
+
+
+/*
+ [LAYER_EMPTY] = {
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ },
+ { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+*/
+
+};
+
+#ifdef AUDIO_ENABLE
+
+float tone_my_startup[][2] = SONG(ODE_TO_JOY);
+float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY);
+
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+
+float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE);
+float tone_music_on[][2] = SONG(DOE_A_DEER);
+float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
+float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
+float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND);
+float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND);
+float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND);
+float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+
+#endif /* AUDIO_ENABLE */
+
+void persistant_default_layer_set(uint16_t default_layer)
+{
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+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_QWERTY:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_QWERTY);
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
+ #endif /* AUDIO_ENABLE */
+ }
+ break;
+
+ case MACRO_COLEMAK:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_COLEMAK);
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
+ #endif /* AUDIO_ENABLE */
+ }
+ break;
+
+ case MACRO_DVORAK:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_DVORAK);
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
+ #endif /* AUDIO_ENABLE */
+ }
+ break;
+
+ case MACRO_LOWER:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_LOWER);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ else
+ {
+ layer_off(LAYER_LOWER);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ break;
+
+ case MACRO_RAISE:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_RAISE);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ else
+ {
+ layer_off(LAYER_RAISE);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ break;
+
+ case MACRO_FUNCTION:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_FUNCTION);
+ }
+ else
+ {
+ layer_off(LAYER_FUNCTION);
+ }
+ break;
+
+#ifdef MOUSEKEY_ENABLE
+
+ case MACRO_MOUSE:
+ if (record->event.pressed)
+ {
+ layer_invert(LAYER_MOUSE);
+ }
+ break;
+
+#endif /* MOUSEKEY_ENABLE */
+
+#ifdef AUDIO_ENABLE
+
+ case MACRO_TIMBRE_1:
+ if (record->event.pressed) set_timbre(TIMBRE_12);
+ break;
+
+ case MACRO_TIMBRE_2:
+ if (record->event.pressed) set_timbre(TIMBRE_25);
+ break;
+
+ case MACRO_TIMBRE_3:
+ if (record->event.pressed) set_timbre(TIMBRE_50);
+ break;
+
+ case MACRO_TIMBRE_4:
+ if (record->event.pressed) set_timbre(TIMBRE_75);
+ break;
+
+ case MACRO_TEMPO_U:
+ if (record->event.pressed) increase_tempo(10);
+ break;
+
+ case MACRO_TEMPO_D:
+ if (record->event.pressed) decrease_tempo(10);
+ break;
+
+ case MACRO_TONE_DEFAULT:
+ if (record->event.pressed)
+ {
+ set_timbre(TIMBRE_DEFAULT);
+ set_tempo(TEMPO_DEFAULT);
+ }
+ break;
+
+ case MACRO_AUDIO_OFF:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ audio_off();
+ #endif
+ }
+ break;
+
+ case MACRO_AUDIO_ON:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ audio_on();
+ PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO);
+ #endif
+ }
+ break;
+
+ case MACRO_MUSIC_ON:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO);
+ layer_on(LAYER_MUSIC);
+ #endif
+ }
+ break;
+
+ case MACRO_MUSIC_OFF:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ layer_off(LAYER_MUSIC);
+ stop_all_notes();
+ #endif
+ }
+ break;
+
+ case MACRO_INC_VOICE:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ voice_iterate();
+ PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
+ #endif
+ }
+ break;
+
+ case MACRO_DEC_VOICE:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ voice_deiterate();
+ PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
+ #endif
+ }
+ break;
+
+#endif /* AUDIO_ENABLE */
+
+ default:
+ break;
+
+ }
+ return MACRO_NONE;
+};
+
+
+#ifdef AUDIO_ENABLE
+
+
+void process_action_user(keyrecord_t *record)
+{
+
+ uint8_t starting_note = 0x0C;
+ int offset = 7;
+
+ if (IS_LAYER_ON(LAYER_MUSIC))
+ {
+ if (record->event.pressed)
+ {
+ play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
+ }
+ else
+ {
+ stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+ }
+ }
+}
+
+
+void matrix_init_user(void)
+{
+ set_voice(default_voice);
+ play_startup_tone();
+ println("Matrix Init");
+}
+
+void led_set_user(uint8_t usb_led)
+{
+ static uint8_t old_usb_led = 0;
+
+ _delay_ms(10); // gets rid of tick
+
+ if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+ {
+ // If CAPS LK LED is turning on...
+ PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO);
+ }
+ else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+ {
+ // If CAPS LK LED is turning off...
+ PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO);
+ }
+ else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
+ {
+ // If NUM LK LED is turning on...
+ PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO);
+ }
+ else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
+ {
+ // If NUM LED is turning off...
+ PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO);
+ }
+ else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+ {
+ // If SCROLL LK LED is turning on...
+ PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO);
+ }
+ else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+ {
+ // If SCROLL LED is turning off...
+ PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO);
+ }
+ old_usb_led = usb_led;
+}
+
+
+void play_startup_tone()
+{
+ _delay_ms(10); // gets rid of tick
+ PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);
+}
+
+void play_goodbye_tone()
+{
+ PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
+ _delay_ms(1000);
+}
+
+#endif /* AUDIO_ENABLE */
\ No newline at end of file
--- /dev/null
+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 = 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 = yes # 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
SRC = atreus.c
ifdef KEYMAP
- SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
- SRC := keymaps/keymap_default.c $(SRC)
+ SRC := keymaps/default.c $(SRC)
endif
ifdef TEENSY2
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 `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+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` 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 **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
--- /dev/null
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _RS 1
+#define _LW 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+ {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P },
+ {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN },
+ {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH },
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT }
+},
+[_RS] = { /* [> RAISE <] */
+ {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR},
+ {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS},
+ {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS},
+ {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL}
+},
+[_LW] = { /* [> LOWER <] */
+ {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10},
+ {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12},
+ {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET}
+}};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
--- /dev/null
+// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
+// with the Colemak and Dvorak support yet, but everything else works nicely.
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _L1 3
+#define _L2 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QW] = { /* Qwerty */
+ {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P },
+ {KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
+ {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+ },
+ [_CM] = { /* Colemak */
+ {KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
+ {KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O },
+ {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH},
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+ },
+ [_DV] = { /* Dvorak */
+ {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L },
+ {KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S },
+ {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z },
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
+ },
+ [_L1] = { /* LAYER 1 */
+ {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC},
+ {KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC},
+ {KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS},
+ {TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL }
+ },
+ [_L2] = { /* LAYER 2 */
+ {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 },
+ {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 },
+ {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 },
+ {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET }
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+++ /dev/null
-// this is the style you want to emulate.
-// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
-
-#include "atreus.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _RS 1
-#define _LW 2
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_QW] = { /* Qwerty */
- {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P },
- {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN },
- {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH },
- {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT }
-},
-[_RS] = { /* [> RAISE <] */
- {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR},
- {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS},
- {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS},
- {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL}
-},
-[_LW] = { /* [> LOWER <] */
- {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10},
- {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12},
- {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET}
-}};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
- }
- break;
- }
- return MACRO_NONE;
-};
+++ /dev/null
-// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
-// with the Colemak and Dvorak support yet, but everything else works nicely.
-
-#include "atreus.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _DV 2
-#define _L1 3
-#define _L2 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QW] = { /* Qwerty */
- {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P },
- {KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
- {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
- {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
- },
- [_CM] = { /* Colemak */
- {KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
- {KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O },
- {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH},
- {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
- },
- [_DV] = { /* Dvorak */
- {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L },
- {KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S },
- {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z },
- {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
- },
- [_L1] = { /* LAYER 1 */
- {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC},
- {KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC},
- {KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS},
- {TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL }
- },
- [_L2] = { /* LAYER 2 */
- {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 },
- {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 },
- {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 },
- {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET }
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
- }
- break;
- }
- return MACRO_NONE;
-};
--- /dev/null
+#----------------------------------------------------------------------------
+# 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 = clueboard1
+
+
+# Directory common source filess exist
+TOP_DIR = ../..
+TMK_DIR = ../../tmk_core
+
+# Directory keyboard dependent files exist
+TARGET_DIR = .
+
+# # project specific files
+SRC = clueboard1.c \
+ led.c
+
+ifdef KEYMAP
+ SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+else
+ SRC := keymaps/keymap_default.c $(SRC)
+endif
+
+CONFIG_H = config.h
+
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
+MIDI_ENABLE = no # MIDI controls
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+
+
+# 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
--- /dev/null
+#include "clueboard1.h"
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+ // leave these blank
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+ // leave these blank
+}
+
+void matrix_init_kb(void) {
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_init();
+ #endif
+
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
--- /dev/null
+#ifndef CLUEBOARD1_H
+#define CLUEBOARD1_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#include <stddef.h>
+
+
+/* Clueboard matrix layout
+ * ,-----------------------------------------------------------. ,---.
+ * | 00| 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E| | 0F|
+ * |-----------------------------------------------------------| |---|
+ * | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| 1C| 1D| | 1F|
+ * |-----------------------------------------------------------| `---'
+ * | 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 2A| 2B| 2C| 2D|
+ * |------------------------------------------------------------.
+ * | 30| 31| 32| 33| 34| 35| 36| 37| 38| 39| 3A| 3B| 3C| 3D|3E|
+ * |------------------------------------------------------------------.
+ * | 40| 41| 42| 43| 45| 46| 49| 4A| 4B| 4C| 4D| 4E| 4F|
+ * `------------------------------------------------------------------'
+ * ,-----------------------------------------------------------. ,---.
+ * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
+ * |-----------------------------------------------------------| |---|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
+ * |-----------------------------------------------------------| `---'
+ * |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
+ * |--------------------------------------------------------------.
+ * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
+ * |------------------------------------------------------------------.
+ * |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
+ * `------------------------------------------------------------------'
+ */
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k45, k46, k49, k4A, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, KC_NO, k45, k46, KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D, k4E, k4F } \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
--- /dev/null
+/*
+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 0xC1ED
+#define PRODUCT_ID 0x2301
+#define DEVICE_VER 0x0003
+#define MANUFACTURER Clueboard
+#define PRODUCT Clueboard
+#define DESCRIPTION QMK keyboard firmware for Clueboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+// COLS: Left to right, ROWS: Top to bottom
+
+/* Column pin configuration
+ * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ * pin: B3 F1 F4 F5 F6 C7 C6 B6 B5 B4 D7 D6 D4 F7 B0 B1
+ */
+#define COLS (int []){ B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 }
+
+ /* Row pin configuration
+ * row: 0 1 2 3 4
+ * pin: D1 D0 D2 D5 D3
+ */
+#define ROWS (int []){ D1, D0, D2, D5, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* Underlight configuration
+ */
+ #define ws2812_PORTREG PORTB
+ #define ws2812_DDRREG DDRB
+ #define ws2812_pin 2
+ #define RGBLED_NUM 14 // Number of LEDs
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
--- /dev/null
+#include "clueboard1.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+#endif
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+#define _RS 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP|
+ * |--------------------------------------------------------------------------| |----|
+ * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN|
+ * |--------------------------------------------------------------------------| `----'
+ * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
+ * |-----------------------------------------------------------------------------.
+ * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP|
+ * |------------------------------------------------------------------------|----|----.
+ * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT|
+ * `----------------------------------------------------------------------------------'
+ */
+[_BL] = KEYMAP(
+ F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | |PGUP|
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL|HOME|PGDN| END|
+ * `----------------------------------------------------------------------------------'
+ */
+[_FL] = KEYMAP(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, BL_STEP, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END),
+
+ /* Keymap _RS: Reset layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | | | | | | | | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | |RESET| | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL| | | |
+ * `----------------------------------------------------------------------------------'
+ */
+[_RS] = KEYMAP(
+ #ifdef RGBLIGHT_ENABLE
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), F(7), \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(8), \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(5), \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(2), F(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(4), F(6), F(3)),
+ #else
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_TRNS, KC_TRNS, KC_TRNS),
+ #endif
+};
+
+enum function_id {
+ SHIFT_ESC,
+ #ifdef RGBLIGHT_ENABLE
+ RGBLED_TOGGLE,
+ RGBLED_STEP_MODE,
+ RGBLED_INCREASE_HUE,
+ RGBLED_DECREASE_HUE,
+ RGBLED_INCREASE_SAT,
+ RGBLED_DECREASE_SAT,
+ RGBLED_INCREASE_VAL,
+ RGBLED_DECREASE_VAL
+ #endif
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(SHIFT_ESC),
+ #ifdef RGBLIGHT_ENABLE
+ [1] = ACTION_FUNCTION(RGBLED_TOGGLE),
+ [2] = ACTION_FUNCTION(RGBLED_STEP_MODE),
+ [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+ [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+ [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+ [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+ [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+ [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+ #endif
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ static uint8_t shift_esc_shift_mask;
+ switch (id) {
+ case SHIFT_ESC:
+ shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (shift_esc_shift_mask) {
+ add_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ add_key(KC_ESC);
+ send_keyboard_report();
+ }
+ } else {
+ if (shift_esc_shift_mask) {
+ del_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ESC);
+ send_keyboard_report();
+ }
+ }
+ break;
+ //led operations
+ #ifdef RGBLIGHT_ENABLE
+ case RGBLED_TOGGLE:
+ if (record->event.pressed) {
+ rgblight_toggle();
+ }
+
+ break;
+ case RGBLED_INCREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ break;
+ case RGBLED_DECREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_decrease_hue();
+ }
+ break;
+ case RGBLED_INCREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_increase_sat();
+ }
+ break;
+ case RGBLED_DECREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_decrease_sat();
+ }
+ break;
+ case RGBLED_INCREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_increase_val();
+ }
+ break;
+ case RGBLED_DECREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_decrease_val();
+ }
+ break;
+ case RGBLED_STEP_MODE:
+ if (record->event.pressed) {
+ rgblight_step();
+ }
+ break;
+ #endif
+ }
+}
--- /dev/null
+ /*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <avr/io.h>
+#include "stdint.h"
+#include "led.h"
+
+
+void led_set_kb(uint8_t usb_led) {
+ DDRF |= (1<<0);
+ if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+ // Turn capslock on
+ PORTF |= (1<<0);
+ } else {
+ // Turn capslock off
+ PORTF &= ~(1<<0);
+ }
+}
--- /dev/null
+#----------------------------------------------------------------------------
+# 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 = clueboard2
+
+
+# Directory common source filess exist
+TOP_DIR = ../..
+TMK_DIR = ../../tmk_core
+
+# Directory keyboard dependent files exist
+TARGET_DIR = .
+
+# # project specific files
+SRC = clueboard2.c led.c
+
+ifdef KEYMAP
+ SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+else
+ SRC := keymaps/keymap_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=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+
+#ifdef BACKLIGHT_ENABLE
+ SRC := backlight.c $(SRC)
+#endif
+
+# 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
--- /dev/null
+
+#include <avr/io.h>
+#include "backlight.h"
+#include "print.h"
+
+/* Clueboard 2.0 LED locations:
+ *
+ * Capslock: B4, pull high to turn on
+ * LCtrl: Shared with Capslock, DO NOT INSTALL LED'S IN BOTH
+ * Page Up: B7, pull high to turn on
+ * Escape: D6, pull high to turn on
+ * Arrows: D4, pull high to turn on
+ */
+
+void init_backlight_pin(void) {
+ print("init_backlight_pin()\n");
+ // Set our LED pins as output
+ DDRD |= (1<<6); // Esc
+ DDRB |= (1<<7); // Page Up
+ DDRD |= (1<<4); // Arrows
+
+ // Set our LED pins low
+ PORTD &= ~(1<<6); // Esc
+ PORTB &= ~(1<<7); // Page Up
+ PORTD &= ~(1<<4); // Arrows
+}
+
+void backlight_set(uint8_t level) {
+ if ( level == 0 ) {
+ // Turn off light
+ PORTD |= (1<<6); // Esc
+ PORTB |= (1<<7); // Page Up
+ PORTD |= (1<<4); // Arrows
+ } else {
+ // Turn on light
+ PORTD &= ~(1<<6); // Esc
+ PORTB &= ~(1<<7); // Page Up
+ PORTD &= ~(1<<4); // Arrows
+ }
+}
+
--- /dev/null
+#include "clueboard2.h"
+
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+#endif
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+ // leave these blank
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+ // leave these blank
+};
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ if (matrix_init_user) {
+ (*matrix_init_user)();
+ }
+ led_init_ports();
+
+ #ifdef BACKLIGHT_ENABLE
+ init_backlight_pin();
+ #endif
+
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_init();
+ #endif
+
+ // JTAG disable for PORT F. write JTD bit twice within four cycles.
+ MCUCR |= (1<<JTD);
+ MCUCR |= (1<<JTD);
+};
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+ if (matrix_scan_user) {
+ (*matrix_scan_user)();
+ }
+};
--- /dev/null
+#ifndef CLUEBOARD2_H
+#define CLUEBOARD2_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#include <stddef.h>
+
+
+/* Clueboard matrix layout
+ * ,-----------------------------------------------------------. ,---.
+ * | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 55| 56| | 57|
+ * |-----------------------------------------------------------| |---|
+ * | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
+ * |-----------------------------------------------------------| `---'
+ * | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75|
+ * |------------------------------------------------------------.
+ * | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86|
+ * |------------------------------------------------------------------.
+ * | 40| 41| 42| 43| 45| 46| 90| 91| 92| 93| 94| 95| 96|
+ * `------------------------------------------------------------------'
+ * ,-----------------------------------------------------------. ,---.
+ * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
+ * |-----------------------------------------------------------| |---|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
+ * |-----------------------------------------------------------| `---'
+ * |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
+ * |--------------------------------------------------------------.
+ * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
+ * |------------------------------------------------------------------.
+ * |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
+ * `------------------------------------------------------------------'
+ */
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
+ k40, k41, k42, k43, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, KC_NO, k45, k46, KC_NO }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
+ { k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
+ { k80, k81, k82, k83, k84, k85, k86, KC_NO }, \
+ { k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
--- /dev/null
+/*
+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 0xC1ED
+#define PRODUCT_ID 0x2320
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Clueboard
+#define PRODUCT Clueboard with RGB Underlighting
+#define DESCRIPTION QMK keyboard firmware for Clueboard
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+// COLS: Left to right, ROWS: Top to bottom
+
+/* Column pin configuration
+ * col: 0 1 2 3 4 5 6 7
+ * pin: F0 F1 F4 F5 F6 F7 E6 B1
+ */
+#define COLS (int []){ F0, F1, F4, F5, F6, F7, E6, B1 }
+
+ /* Row pin configuration
+ * row: 0 1 2 3 4 5 6 7 8 9
+ * pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2
+ */
+#define ROWS (int []){ B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* Backlight configuration
+ */
+#define BACKLIGHT_LEVELS 1
+
+/* Underlight configuration
+ */
+ #define ws2812_PORTREG PORTD
+ #define ws2812_DDRREG DDRD
+ #define ws2812_pin 7
+ #define RGBLED_NUM 14 // Number of LEDs
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
--- /dev/null
+#include "clueboard2.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+#endif
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+#define _RS 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP|
+ * |--------------------------------------------------------------------------| |----|
+ * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN|
+ * |--------------------------------------------------------------------------| `----'
+ * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
+ * |-----------------------------------------------------------------------------.
+ * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP|
+ * |------------------------------------------------------------------------|----|----.
+ * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT|
+ * `----------------------------------------------------------------------------------'
+ */
+[_BL] = KEYMAP(
+ F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | |PGUP|
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL|HOME|PGDN| END|
+ * `----------------------------------------------------------------------------------'
+ */
+[_FL] = KEYMAP(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, BL_STEP, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END),
+
+ /* Keymap _RS: Reset layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | | | | | | | | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | |RESET| | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL| | | |
+ * `----------------------------------------------------------------------------------'
+ */
+[_RS] = KEYMAP(
+ #ifdef RGBLIGHT_ENABLE
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), F(7), \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(8), \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(5), \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(2), F(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(4), F(6), F(3)),
+ #else
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_TRNS, KC_TRNS, KC_TRNS),
+ #endif
+};
+
+enum function_id {
+ SHIFT_ESC,
+ #ifdef RGBLIGHT_ENABLE
+ RGBLED_TOGGLE,
+ RGBLED_STEP_MODE,
+ RGBLED_INCREASE_HUE,
+ RGBLED_DECREASE_HUE,
+ RGBLED_INCREASE_SAT,
+ RGBLED_DECREASE_SAT,
+ RGBLED_INCREASE_VAL,
+ RGBLED_DECREASE_VAL
+ #endif
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(SHIFT_ESC),
+ #ifdef RGBLIGHT_ENABLE
+ [1] = ACTION_FUNCTION(RGBLED_TOGGLE),
+ [2] = ACTION_FUNCTION(RGBLED_STEP_MODE),
+ [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+ [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+ [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+ [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+ [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+ [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+ #endif
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ static uint8_t shift_esc_shift_mask;
+ switch (id) {
+ case SHIFT_ESC:
+ shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (shift_esc_shift_mask) {
+ add_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ add_key(KC_ESC);
+ send_keyboard_report();
+ }
+ } else {
+ if (shift_esc_shift_mask) {
+ del_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ESC);
+ send_keyboard_report();
+ }
+ }
+ break;
+ //led operations
+ #ifdef RGBLIGHT_ENABLE
+ case RGBLED_TOGGLE:
+ if (record->event.pressed) {
+ rgblight_toggle();
+ }
+ break;
+ case RGBLED_INCREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ break;
+ case RGBLED_DECREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_decrease_hue();
+ }
+ break;
+ case RGBLED_INCREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_increase_sat();
+ }
+ break;
+ case RGBLED_DECREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_decrease_sat();
+ }
+ break;
+ case RGBLED_INCREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_increase_val();
+ }
+ break;
+ case RGBLED_DECREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_decrease_val();
+ }
+ break;
+ case RGBLED_STEP_MODE:
+ if (record->event.pressed) {
+ rgblight_step();
+ }
+ break;
+ #endif
+ }
+}
--- /dev/null
+#include "clueboard2.h"
+
+#ifdef ENABLE_RGBLIGHT
+#include "rgblight.h"
+#endif
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+#define _RS 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| ~| BS| |PgUp|
+ * |--------------------------------------------------------------------------| |----|
+ * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PgDn|
+ * |--------------------------------------------------------------------------| `----'
+ * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
+ * |-----------------------------------------------------------------------------.
+ * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| Up|
+ * |------------------------------------------------------------------------|----|----.
+ * | Ctrl| Alt| Gui| MHen| Space| Space| Hen| Gui| Alt| Ctrl|Left|Down|Rght|
+ * `----------------------------------------------------------------------------------'
+ */
+[_BL] = KEYMAP(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
+ MO(_FL), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), KC_UP, \
+ KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | |PGUP|
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL|HOME|PGDN| END|
+ * `----------------------------------------------------------------------------------'
+ */
+[_FL] = KEYMAP(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, BL_STEP, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_PGUP, \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END),
+
+ /* Keymap _RS: Reset/Underlight layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | | | | | | | | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | |RESET| | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL| | | |
+ * `----------------------------------------------------------------------------------'
+ */
+[_RS] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(0), F(6), \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(7), \
+ KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(4), \
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(1), F(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(3), F(5), F(2)),
+};
+
+enum function_id {
+ RGBLED_TOGGLE,
+ RGBLED_STEP_MODE,
+ RGBLED_INCREASE_HUE,
+ RGBLED_DECREASE_HUE,
+ RGBLED_INCREASE_SAT,
+ RGBLED_DECREASE_SAT,
+ RGBLED_INCREASE_VAL,
+ RGBLED_DECREASE_VAL,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(RGBLED_TOGGLE),
+ [1] = ACTION_FUNCTION(RGBLED_STEP_MODE),
+ [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+ [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+ [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+ [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+ [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+ [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ switch (id) {
+ case RGBLED_TOGGLE:
+ //led operations
+ if (record->event.pressed) {
+ rgblight_toggle();
+ }
+
+ break;
+ case RGBLED_INCREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ break;
+ case RGBLED_DECREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_decrease_hue();
+ }
+ break;
+ case RGBLED_INCREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_increase_sat();
+ }
+ break;
+ case RGBLED_DECREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_decrease_sat();
+ }
+ break;
+ case RGBLED_INCREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_increase_val();
+ }
+ break;
+ case RGBLED_DECREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_decrease_val();
+ }
+ break;
+ case RGBLED_STEP_MODE:
+ if (record->event.pressed) {
+ rgblight_step();
+ }
+ break;
+ }
+}
--- /dev/null
+#include "clueboard2.h"
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+#define _RS 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP|
+ * |--------------------------------------------------------------------------| |----|
+ * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN|
+ * |--------------------------------------------------------------------------| `----'
+ * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
+ * |-----------------------------------------------------------------------------.
+ * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP|
+ * |------------------------------------------------------------------------|----|----.
+ * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT|
+ * `----------------------------------------------------------------------------------'
+ */
+[_BL] = KEYMAP(
+ F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
+ KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
+ KC_LCTL,KC_LALT,KC_LGUI,MO(_FL), KC_SPC, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | |PGUP|
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL|HOME|PGDN| END|
+ * `----------------------------------------------------------------------------------'
+ */
+[_FL] = KEYMAP(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,KC_DEL, BL_STEP, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_PGUP, \
+ KC_TRNS,KC_TRNS,KC_TRNS,MO(_FL), KC_TRNS,KC_TRNS, MO(_FL),KC_TRNS,KC_TRNS,MO(_FL),KC_HOME,KC_PGDN,KC_END),
+
+ /* Keymap _RS: Reset layer
+ * ,--------------------------------------------------------------------------. ,----.
+ * | | | | | | | | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| |----|
+ * | | | | |RESET| | | | | | | | | | | |
+ * |--------------------------------------------------------------------------| `----'
+ * | | | _RS| | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |------------------------------------------------------------------------|----|----.
+ * | | | | | | | | | | _FL| | | |
+ * `----------------------------------------------------------------------------------'
+ */
+[_RS] = KEYMAP(
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,MO(_FL),KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+enum function_id {
+ SHIFT_ESC,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(SHIFT_ESC),
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ static uint8_t shift_esc_shift_mask;
+ switch (id) {
+ case SHIFT_ESC:
+ shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (shift_esc_shift_mask) {
+ add_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ add_key(KC_ESC);
+ send_keyboard_report();
+ }
+ } else {
+ if (shift_esc_shift_mask) {
+ del_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ESC);
+ send_keyboard_report();
+ }
+ }
+ break;
+ }
+}
--- /dev/null
+ /*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <avr/io.h>
+#include "stdint.h"
+#include "led.h"
+
+
+void led_init_ports() {
+ // * Set our LED pins as output
+ DDRB |= (1<<4);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+ // Turn capslock on
+ PORTB |= (1<<4);
+ } else {
+ // Turn capslock off
+ PORTB &= ~(1<<4);
+ }
+}
--- /dev/null
+#----------------------------------------------------------------------------
+# 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 = cluepad
+
+
+# Directory common source filess exist
+TOP_DIR = ../..
+TMK_DIR = ../../tmk_core
+
+# Directory keyboard dependent files exist
+TARGET_DIR = .
+
+# # project specific files
+SRC = cluepad.c backlight.c
+
+ifdef KEYMAP
+ SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+else
+ SRC := keymaps/keymap_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=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+# MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+# EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+# CONSOLE_ENABLE = yes # Console for debug(+400)
+# COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable numpad's backlight functionality
+RGBLIGHT_ENABLE = yes
+# MIDI_ENABLE = YES # MIDI controls
+# UNICODE_ENABLE = YES # Unicode
+# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+
+# 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
--- /dev/null
+#include <avr/io.h>
+#include "backlight.h"
+#include "led.h"
+
+#include "print.h"
+
+int pwm_level;
+
+void led_set_kb(uint8_t usb_led)
+{
+ print("led_set\n");
+}
+
+void init_backlight_pin(void)
+{
+ // Set C7 to output
+ DDRC |= (1<<7);
+
+ // Initialize the timer
+ TC4H = 0x03;
+ OCR4C = 0xFF;
+ TCCR4A = 0b10000010;
+ TCCR4B = 0b00000001;
+}
+
+void backlight_set(uint8_t level)
+{
+ // Determine the PWM level
+ switch (level)
+ {
+ case 0:
+ // 33%
+ pwm_level = 0x54;
+ break;
+ case 1:
+ // 66%
+ pwm_level = 0xA8;
+ break;
+ case 2:
+ // 100%
+ pwm_level = 0xFF;
+ break;
+ case 3:
+ // 0%
+ pwm_level = 0x00;
+ break;
+ default:
+ xprintf("Unknown level: %d\n", level);
+ }
+
+ // Write the PWM level to the timer
+ TC4H = pwm_level >> 8;
+ OCR4A = 0xFF & pwm_level;
+}
--- /dev/null
+#include "cluepad.h"
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+ // leave these blank
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+ // leave these blank
+};
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ if (matrix_init_user) {
+ (*matrix_init_user)();
+ }
+
+ #ifdef BACKLIGHT_ENABLE
+ init_backlight_pin();
+ #endif
+
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_init();
+ #endif
+
+ // JTAG disable for PORT F. write JTD bit twice within four cycles.
+ MCUCR |= (1<<JTD);
+ MCUCR |= (1<<JTD);
+};
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+ if (matrix_scan_user) {
+ (*matrix_scan_user)();
+ }
+};
--- /dev/null
+#ifndef CLUEPAD_H
+#define CLUEPAD_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#include <stddef.h>
+
+
+/* Cluepad matrix layout
+ * .-------------------.
+ * |NLCK| /| *| -|
+ * |-------------------|
+ * | 7| 8| 9| |
+ * |--------------| |
+ * | 4| 5| 6| +|
+ * |-------------------|
+ * | 1| 2| 3| |
+ * |--------------| |
+ * | 0| .| Ent|
+ * '-------------------'
+ */
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k33, \
+ k40, k42 \
+) { \
+ { k00, k01, k02, k03, }, \
+ { k10, k11, k12, k13, }, \
+ { k20, k21, k22, KC_NO, }, \
+ { k30, k31, k32, k33, }, \
+ { k40, KC_NO, k42, KC_NO } \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
--- /dev/null
+/*
+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 0xC1ED
+#define PRODUCT_ID 0x2312
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Clueboard
+#define PRODUCT Cluepad with RGB Underlighting
+#define DESCRIPTION QMK keyboard firmware for Cluepad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+// COLS: Left to right, ROWS: Top to bottom
+
+/* Column pin configuration
+ * col: 0 1 2 3
+ * pin: F4 E6 B1 D2
+ */
+#define COLS (int []){ F4, E6, B1, D2 }
+
+ /* Row pin configuration
+ * row: 0 1 2 3 4
+ * pin:
+ */
+#define ROWS (int []){ B0, D3, D5, D4, D6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Number of backlighting 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* Underlight configuration
+ */
+ #define ws2812_PORTREG PORTF
+ #define ws2812_DDRREG DDRF
+ #define ws2812_pin 6
+ #define RGBLED_NUM 4 // Number of LEDs
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* Debug forcibly enabled */
+#define ALWAYS_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
--- /dev/null
+#include "cluepad.h"
+
+#include "backlight.h"
+#include "rgblight.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+#define _RS 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * .-------------------.
+ * |NL F| /| *| -|
+ * |-------------------|
+ * | 7| 8| 9| |
+ * |--------------| |
+ * | 4| 5| 6| +|
+ * |-------------------|
+ * | 1| 2| 3| |
+ * |--------------| |
+ * | 0| .| Ent|
+ * '-------------------'
+ */
+[_BL] = KEYMAP(
+ LT(_FL, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS, \
+ KC_P7, KC_P8, KC_P9, KC_PPLS, \
+ KC_P4, KC_P5, KC_P6, \
+ KC_P1, KC_P2, KC_P3, KC_PENT, \
+ KC_P0, KC_PDOT),
+
+ /* Keymap _FL: Function Layer
+ * .-------------------.
+ * |NL F| | | Fn0|
+ * |-------------------|
+ * | | Fn4| | |
+ * |--------------| |
+ * | Fn3|BL_S| Fn2| Fn6|
+ * |-------------------|
+ * | | Fn5| | |
+ * |--------------| |
+ * | Fn1| | Fn7|
+ * '-------------------'
+ */
+[_FL] = KEYMAP(
+ LT(_FL, KC_NLCK), KC_TRNS, KC_TRNS, F(0), \
+ KC_TRNS, F(4), KC_TRNS, F(6), \
+ F(3), BL_STEP, F(2), \
+ KC_TRNS, F(5), KC_TRNS, F(7), \
+ F(1), KC_TRNS)
+};
+
+enum function_id {
+ RGBLED_TOGGLE,
+ RGBLED_STEP_MODE,
+ RGBLED_INCREASE_HUE,
+ RGBLED_DECREASE_HUE,
+ RGBLED_INCREASE_SAT,
+ RGBLED_DECREASE_SAT,
+ RGBLED_INCREASE_VAL,
+ RGBLED_DECREASE_VAL,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(RGBLED_TOGGLE),
+ [1] = ACTION_FUNCTION(RGBLED_STEP_MODE),
+ [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+ [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+ [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+ [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+ [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+ [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ switch (id) {
+ case RGBLED_TOGGLE:
+ if (record->event.pressed) {
+ rgblight_toggle();
+ }
+ break;
+ case RGBLED_INCREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ break;
+ case RGBLED_DECREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_decrease_hue();
+ }
+ break;
+ case RGBLED_INCREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_increase_sat();
+ }
+ break;
+ case RGBLED_DECREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_decrease_sat();
+ }
+ break;
+ case RGBLED_INCREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_increase_val();
+ }
+ break;
+ case RGBLED_DECREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_decrease_val();
+ }
+ break;
+ case RGBLED_STEP_MODE:
+ if (record->event.pressed) {
+ rgblight_step();
+ }
+ break;
+ }
+}
+
--- /dev/null
+:100000000C940F020C9453020C9453020C94530260\r
+:100010000C9453020C9453020C9453020C9453020C\r
+:100020000C9453020C9453020C94190C0C94EB0C8A\r
+:100030000C9453020C9453020C9453020C945302EC\r
+:100040000C9453020C94CF210C9453020C94530241\r
+:100050000C9453020C94631B0C9453020C945302A3\r
+:100060000C9453020C9453020C9453020C945302BC\r
+:100070000C9453020C9453020C9453020C945302AC\r
+:100080000C9453020C9453020C9453020C9453029C\r
+:100090000C9453020C9453020C9453020C9453028C\r
+:1000A0000C9453020C9453020C945302500D720D95\r
+:1000B0005D0E720D5D0EB40DD70D5D0E2C0E3F0E54\r
+:1000C000391139117A117A11BC11F811F813F8139A\r
+:1000D0001012F81307130713D213F813F813E613CB\r
+:1000E00035002B003971E100E00000001E00140013\r
+:1000F00004001D0029002F001F001A0016001B001D\r
+:10010000E3004C002000080007000600E2002C007D\r
+:100110002100150009001900E20026022200170044\r
+:100120000A000500000006012300B60000004B0095\r
+:1001300000002F022400B70000004E000000300233\r
+:1001400025001C000B0011000000190126001800FA\r
+:100150000D0010005200270227000C000E00360090\r
+:1001600050002A002D0012000F0037004F00280019\r
+:100170002E00130033003800510030002A003100F7\r
+:100180002800340001540000290001000100010092\r
+:10019000010000003A00010001000100010001001F\r
+:1001A0003B000100F2000100010001003C00F000F2\r
+:1001B000F1000100F40000503D000100F3000100D7\r
+:1001C000F50001003E0001000100010000000100F7\r
+:1001D0003F0001000000010000000100400001009C\r
+:1001E00000000100000001004100010001000100C9\r
+:1001F00000000100420001000100010001000100B7\r
+:100200004300010001000100AA00010044000100B8\r
+:1002100001000100A90001004500010001000100EA\r
+:10022000A80001002A000100AE000100010000004A\r
+:1002300016034500720067006F0044006F007800ED\r
+:10024000200045005A0000001603450072006700B8\r
+:100250006F0044006F007800200045005A00000045\r
+:100260000403090409026D00040100A0FA09040056\r
+:10027000000103010100092111010001223F0007D3\r
+:1002800005810308000A09040100010301020009B5\r
+:100290002111010001224D000705820308000A090F\r
+:1002A00004020001030000000921110100012236AF\r
+:1002B000000705830308000A090403000103000086\r
+:1002C00000092111010001223900070584031000F3\r
+:1002D000011201100100000008EDFE0713010001EA\r
+:1002E00002000105010906A101050719E029E7152A\r
+:1002F0000025019508750181020508190129059558\r
+:1003000005750191029501750391010507190029F1\r
+:100310007715002501957875018102C005010980D6\r
+:10032000A101850216010026B7001A01002AB700B4\r
+:10033000751095018100C0050C0901A10185031606\r
+:100340000100269C021A01002A9C02751095018169\r
+:1003500000C005010902A1010901A1000509190157\r
+:100360002905150025019505750181029501750383\r
+:1003700081010501093009311581257F9502750834\r
+:10038000810609381581257F950175088106050CC0\r
+:100390000A38021581257F950175088106C0C005C0\r
+:1003A000010906A101050719E029E71500250195B6\r
+:1003B0000875018102950175088101050819012957\r
+:1003C00005950575019102950175039101050719C0\r
+:1003D0000029FF150025FF950675088100C0000063\r
+:1003E000000000000000000000010204060A0F17D0\r
+:1003F000202C3A4A5D71879DB3C7DAE9F5FCFFFC12\r
+:10040000F5E9DAC7B39D87715D4A3A2C20170F0AC8\r
+:10041000060402010000000000000000000011249A\r
+:100420001FBECFEFDAE0DEBFCDBF04B603FE24C0AF\r
+:100430008091EE019091EF01A091F001B091F10156\r
+:100440008730904BA740B04BB9F41092EE01109258\r
+:10045000EF011092F0011092F10114BE84B7877F72\r
+:1004600084BF88E10FB6F89480936000109260001A\r
+:100470000FBEE0E0FFE3099511E0A0E0B1E0EAE49F\r
+:10048000F7E402C005900D92A433B107D9F721E03B\r
+:10049000A4E3B1E001C01D92AE3EB207E1F70E94B5\r
+:1004A0005F090C94A3230C94000061110BC0FC01A4\r
+:1004B0008281882321F085EE0E94C10F03C085EE62\r
+:1004C0000E94891080E090E0089508956091B10144\r
+:1004D0007091B2018091B3019091B4010E948A1A87\r
+:1004E00056985E9825982D9826982E9827982F989C\r
+:1004F000813019F0823021F00895259A2D9A0895BF\r
+:10050000269A2E9A08950C94660256985E9825981D\r
+:100510002D9826982E9827982F988FEF90E09093FB\r
+:1005200089008093880090938B0080938A00909339\r
+:100530008D0080938C00259A2D9A2FEF80E792E012\r
+:10054000215080409040E1F700C00000269A2E9A8A\r
+:100550002FEF80E792E0215080409040E1F700C00B\r
+:100560000000279A2F9A2FEF80E792E021508040D9\r
+:100570009040E1F700C0000025982D982FEF80E70C\r
+:1005800092E0215080409040E1F700C000002698A2\r
+:100590002E982FEF80E792E0215080409040E1F7C5\r
+:1005A00000C0000027982F9856985E9825982D989F\r
+:1005B00026982E9827982F98089589EA809380008E\r
+:1005C00089E08093810024982C983F988AB18F7499\r
+:1005D0008AB96E98479A8BB1806B8BB9769A0E94D4\r
+:1005E00085020C94650280E28093000180913401C1\r
+:1005F00081110EC00E94420381E0809334012FEFED\r
+:1006000083ED90E3215080409040E1F700C000006E\r
+:1006100080E40E9448038093000181112EC00E9453\r
+:10062000720380930001811128C00E94720380939D\r
+:100630000001811122C08FE30E94720380930001A8\r
+:1006400081111BC00E946A0380E40E9448038093CA\r
+:100650000001811112C08CE00E947203809300019E\r
+:1006600081110BC00E94720380930001811105C0AB\r
+:100670008FE30E947203809300010E946A038091BD\r
+:10068000000108951092B9008AE08093B80008959F\r
+:1006900094EA9093BC009091BC0097FFFCCF90919E\r
+:1006A000B900987F983021F0903111F081E00895E1\r
+:1006B0008093BB0084E88093BC008091BC0087FFDE\r
+:1006C000FCCF8091B900887F883111F0803471F7B8\r
+:1006D00080E0089584E98093BC008091BC0084FD93\r
+:1006E000FCCF08958093BB0084E88093BC00809188\r
+:1006F000BC0087FFFCCF9091B900987F81E09832D1\r
+:1007000009F480E0089584E88093BC008091BC00E7\r
+:1007100087FFFCCF8091BB0008958091000181117B\r
+:1007200015C080E40E9448038093000181110CC031\r
+:1007300082E10E94720380930001811105C08FEF56\r
+:100740000E947203809300010E946A0384B1807F3B\r
+:1007500084B985B1807F85B98AB1837F8AB98BB12D\r
+:10076000837F8BB93E98469808950E94F302809348\r
+:1007700000010E948D0380B38C7080BB81B3836FB6\r
+:1007800081BBA6E3B1E0E4E4F1E08EE08E0F1192CC\r
+:100790001D928E13FCCF0C94DD02BF92CF92DF929C\r
+:1007A000EF92FF920F931F93CF93DF9380910001FD\r
+:1007B000882379F0809135018F5F80933501811115\r
+:1007C00008C00E94F30280930001811102C00E94C0\r
+:1007D000850206E311E0C0E0D0E0DD24D39482E09E\r
+:1007E000C82EEE24E394F12CC730D10500F580919A\r
+:1007F0000001811164C080E40E94480380930001DD\r
+:10080000811112C082E10E94720380930001811164\r
+:100810000BC0C7010C2E01C0880F0A94EAF780951F\r
+:100820000E947203809300010E946A0348C0CA308C\r
+:10083000A1F028F4C83059F0C93061F005C0CC30BF\r
+:1008400089F070F0CD3089F0209A289810C0219A54\r
+:1008500029980DC0229A2A980AC0239A2B9807C07B\r
+:10086000529A01C0539A5B9802C03E9A469890EA09\r
+:100870009A95F1F79FB1799902C082E001C080E0BA\r
+:1008800091709D25982B7C9902C084E001C080E086\r
+:10089000892B7D9902C038E001C030E0832B7E991E\r
+:1008A00002C020E101C020E0822B9FB19095991FEA\r
+:1008B0009927991F9295990F907E892B0FC080914F\r
+:1008C0000001811149C080E40E9448038093000127\r
+:1008D000882379F1B12C0E946A038B2DF801908155\r
+:1008E000981719F08083C09201010E948D03219610\r
+:1008F0000F5F1F4FCE30D10509F076CF80910101F7\r
+:10090000882361F1815080930101882339F08FE9B8\r
+:100910009FE00197F1F700C0000020C0A4E4B1E01F\r
+:10092000E6E3F1E0CF01825F91919D938E13FCCFBE\r
+:1009300015C083E10E947203809300018111CACF28\r
+:1009400081E40E944803809300018111C3CF0E947B\r
+:100950008303B82EB094BFCF80E0C0CF0E94830243\r
+:1009600081E0DF91CF911F910F91FF90EF90DF9089\r
+:10097000CF90BF900895E82FF0E0EC5BFE4F8081B0\r
+:1009800008950895089596E0799FF001112494E563\r
+:10099000899FE00DF11D1124E60FF11DEE0FFF1FE1\r
+:1009A000E052FF4F859194910895880F991FFC01A3\r
+:1009B000E05AF040859194910895880F991FFC01A9\r
+:1009C000E052FF4F8591949108950F931F93CF9319\r
+:1009D000DF93EC018115904350F5C11580E2D807F3\r
+:1009E00008F0B3C0CB3BD10590F4C83AD10508F06C\r
+:1009F0005AC0C53AD10508F04BC0C430D10508F043\r
+:100A0000BBC1219709F0B5C101E010E0F5C1CF3FAE\r
+:100A1000D10511F008F0B0C1C03FD10508F092C077\r
+:100A2000CE01805E9109089708F4A6C1A2C1C11544\r
+:100A300091E5D907A8F4C23020E5D20708F09EC09E\r
+:100A4000C11580E5D80709F485C008F091C0C1152B\r
+:100A500020E4D20708F08DC1DD278E01106CCCC1D7\r
+:100A6000C11580E8D80758F4C11590E7D90708F0F8\r
+:100A70007CC1C11520E6D20708F422C17AC1C11594\r
+:100A800080E9D80708F075C1DF708E01106AB4C123\r
+:100A9000C53AD10509F472C1C63AD10509F071C150\r
+:100AA00002E810E4A9C1C83AD10509F46DC1C93AF8\r
+:100AB000D10509F46CC1CA3AD10509F46BC1CB3A2E\r
+:100AC000D10509F46AC1CC3AD10509F469C1CD3A1E\r
+:100AD000D10509F468C1C03BD10509F467C1CE3A1C\r
+:100AE000D10509F466C1CF3AD10509F465C1C13B0E\r
+:100AF000D10509F464C1C23BD10509F463C1C33B0C\r
+:100B0000D10509F462C1C43BD10509F461C1C53BFB\r
+:100B1000D10509F460C1C63BD10509F45FC1C73BEB\r
+:100B2000D10509F45EC1C83BD10509F45DC1C93BDB\r
+:100B3000D10509F45CC1CA3BD10509F45BC100E0F1\r
+:100B400014E45AC18E01106557C1CE019F700E94F6\r
+:100B5000DD0453C10E941B149FEF24E38CE09150ED\r
+:100B600020408040E1F700C000000E94881B44C183\r
+:100B70008091CD0181608093CD013EC10E94321DE4\r
+:100B8000811102C00E94181D0E944F1D90E0909399\r
+:100B9000EE018093ED01C23090E5D90721F48091F8\r
+:100BA000ED01816086C0C43020E5D20721F4809138\r
+:100BB000ED0182607EC0C63080E5D80721F48091C7\r
+:100BC000ED01846076C0C83090E5D90719F48091B2\r
+:100BD000ED0127C0CA3020E5D20721F48091ED0154\r
+:100BE000806167C0CC3080E5D80721F48091ED01A9\r
+:100BF00080625FC0CE3090E5D90721F48091ED018D\r
+:100C0000806457C0C03120E5D20721F48091ED0106\r
+:100C100080684FC0C23180E5D80729F48091ED018A\r
+:100C20008460886046C0C33090E5D90721F4809184\r
+:100C3000ED018E7F3EC0C53020E5D20721F48091C2\r
+:100C4000ED018D7F36C0C73080E5D80721F4809153\r
+:100C5000ED018B7F2EC0C93090E5D90719F4809142\r
+:100C6000ED0126C0CB3020E5D20721F48091ED01C3\r
+:100C70008F7E1FC0CD3080E5D80721F48091ED0133\r
+:100C80008F7D17C0CF3090E5D90721F48091ED0119\r
+:100C90008F7B0FC0C13120E5D20721F48091ED0197\r
+:100CA0008F7707C0C331D04531F48091ED018B7F40\r
+:100CB000877F8093ED018091ED010E94531D9CC0C0\r
+:100CC0008D2F99278F70992781309105D9F49E0136\r
+:100CD0002370332702C0880F991F2A95E2F79C687A\r
+:100CE0008E0144E0000F111F4A95E1F700271370B1\r
+:100CF000802B912B53E0CC0FDD1F5A95E1F7C07686\r
+:100D0000DD272FC08230910531F4DC2FCC278E01F6\r
+:100D1000016F106A71C08330910569F4CE01837050\r
+:100D2000992701E010E002C0000F111F8A95E2F739\r
+:100D3000C8019C680FC0049709F05EC0CE018370A3\r
+:100D4000992701E010E002C0000F111F8A95E2F719\r
+:100D5000C8019A6823E0CC0FDD1F2A95E1F7C07E19\r
+:100D6000D7708C010C2B1D2B47C0DF708E011062D9\r
+:100D700043C000E010E040C08E013EC001E810E436\r
+:100D80003BC003E810E438C002EE14E435C009EEBD\r
+:100D900014E432C00AEE14E42FC005EB14E42CC0B6\r
+:100DA00006EB14E429C007EB14E426C00CEC14E4B1\r
+:100DB00023C00DEC14E420C003E815E41DC00AE8CC\r
+:100DC00015E41AC002E915E417C004E915E414C0DB\r
+:100DD00001E216E411C003E216E40EC004E216E4D8\r
+:100DE0000BC005E216E408C006E216E405C007E2FF\r
+:100DF00016E402C00AE216E4C801DF91CF911F9108\r
+:100E00000F91089596E0799FF001112494E5899F50\r
+:100E1000E00DF11D1124E60FF11DEE0FFF1FE05252\r
+:100E2000FF4F85919491803E9105E0F4803C9105BF\r
+:100E300058F58133910509F46FC048F48932910562\r
+:100E400009F463C08A32910509F46DC072C0893318\r
+:100E50009105E9F082389105D1F08533910509F4C7\r
+:100E60004DC067C0833E910581F138F4803E910505\r
+:100E7000B9F0823E9105D9F05CC0863E910561F1E2\r
+:100E8000873E9105A1F155C00E94D5040895209197\r
+:100E9000ED0120FD02C021FF4CC080EE90E049C072\r
+:100EA0008091ED0180FFF9CF89E390E042C080910D\r
+:100EB000ED0182FF0EC08091ED0184FF03C080E050\r
+:100EC00090E037C083EE90E034C08091ED0182FF66\r
+:100ED000F2CF82EE90E02DC08091ED0183FF0BC038\r
+:100EE0008091ED0184FDEBCF87EE90E022C08091F0\r
+:100EF000ED0183FFF5CF86EE90E01BC08091ED0100\r
+:100F000085FF07C089E290E014C08091ED0185FF64\r
+:100F1000F9CF85E390E00DC08091ED0186FF07C019\r
+:100F20008AE290E006C08091ED0186FFF9CF81E36F\r
+:100F300090E00E94E504089508950C949C07809128\r
+:100F400062010895CF93DF9300D01F92CDB7DEB733\r
+:100F50002091E401243019F523E029839B838A83BF\r
+:100F60002093E9008FEF9091E800815095FD06C035\r
+:100F700095ED9A95F1F700008111F5CF8091E80089\r
+:100F800085FF0DC040E050E063E070E0CE010196C7\r
+:100F90000E940C0A8091E8008E778093E8000F9001\r
+:100FA0000F900F90DF91CF910895CF93DF9300D0F2\r
+:100FB0001F92CDB7DEB72091E401243021F522E065\r
+:100FC00029839B838A8383E08093E9008FEF90914C\r
+:100FD000E800815095FD06C095ED9A95F1F7000067\r
+:100FE0008111F5CF8091E80085FF0DC040E050E011\r
+:100FF00063E070E0CE0101960E940C0A8091E80047\r
+:101000008E778093E8000F900F900F90DF91CF9133\r
+:1010100008952091E4012430F1F422E02093E900C6\r
+:101020002FEF3091E800215035FD06C035ED3A959F\r
+:10103000F1F700002111F5CF2091E80025FF0BC04A\r
+:1010400040E050E065E070E00E940C0A8091E8000A\r
+:101050008E778093E8000895CF93DF93EC01809121\r
+:10106000E401843009F046C090910C019923D9F035\r
+:1010700090910D019923B9F08093E9008FEF909141\r
+:10108000E800815095FD06C095E19A95F1F70000C2\r
+:101090008111F5CF8091E80085FF2CC040E050E041\r
+:1010A00060E170E017C081E08093E9008FEF9091DC\r
+:1010B000E800815095FD06C095ED9A95F1F7000086\r
+:1010C0008111F5CF8091E80085FF14C040E050E029\r
+:1010D00068E070E0CE010E940C0A8091E8008E77F3\r
+:1010E0008093E80080E1FE01A2E5B1E001900D925D\r
+:1010F0008A95E1F7DF91CF9108958091E301811105\r
+:1011000009C00E949E0B0E94FB0B8091E20084604C\r
+:101110008093E20008951092E301089508950C94DD\r
+:10112000BC210E941F1B0E94C2210E94980E0C9499\r
+:101130009D0742E061EC81E00E94180B42E061EC07\r
+:1011400082E00E94180B42E061EC83E00E94180BE1\r
+:1011500042E161EC84E00C94180B8091E60183304D\r
+:1011600009F455C030F4813071F0823009F48EC03A\r
+:1011700008958A3009F47AC08B3009F460C0893050\r
+:1011800009F09CC020C08091E501813A09F096C029\r
+:101190008091E800877F8093E8008091E901909139\r
+:1011A000EA01892B21F060E080E090E003C060E17B\r
+:1011B00082E591E070E00E94550A8091E8008B770B\r
+:1011C0008093E80008958091E501813209F076C0AE\r
+:1011D0008091E9019091EA01009719F0039709F0D5\r
+:1011E0006DC08091E800877F8093E8008091E800DF\r
+:1011F00082FD05C08091E4018111F8CF5FC080912C\r
+:10120000F100809362018091E8008B7753C0809158\r
+:10121000E501813A09F052C08091E9019091EA011B\r
+:10122000892B09F04BC08091E800877F8093E8000C\r
+:101230008091E80080FFFCCF80910C0136C0809146\r
+:10124000E5018132D9F58091E9019091EA01892B7C\r
+:10125000A9F58091E800877F8093E8000E944D0BFC\r
+:101260008091E70180930C010C941B148091E5019F\r
+:10127000813221F58091E800877F8093E8000E9409\r
+:101280004D0B8091E8018093630108958091E50101\r
+:10129000813AA1F48091E800877F8093E8008091F3\r
+:1012A000E80080FFFCCF809163018093F100809182\r
+:1012B000E8008E778093E8000C944D0B089584B776\r
+:1012C000877F84BF88E10FB6F89480936000109206\r
+:1012D00060000FBE90E080E80FB6F8948093610044\r
+:1012E000909361000FBE0E94E70E0E949E0B0E9429\r
+:1012F000FB0B8091E20084608093E20078940E946E\r
+:10130000760E0E94E90E82E091E00E94930E0E9408\r
+:10131000AA218091E401853069F40E94DD1A809150\r
+:10132000E2018823B1F30E940B1B882391F30E94F2\r
+:10133000F609EFCF0E94EF0EECCF292F3327233091\r
+:101340003105A9F06CF42130310509F442C0223096\r
+:10135000310509F043C08DE690E024E632E042C05A\r
+:1013600021323105C9F02232310519F137C09927F0\r
+:101370008130910541F08230910541F0892B71F562\r
+:10138000E0E6F2E005C0E8E4F2E002C0E0E3F2E00B\r
+:10139000849190E09F0126C0643000F5E62FF0E0D4\r
+:1013A000EE0FFF1FEE5DFE4F2081318189E090E05E\r
+:1013B00019C0643098F4E62FF0E0DF01AA0FBB1FDC\r
+:1013C000A65EBE4F2D913C91EA5EFE4F808190E07B\r
+:1013D00009C082E190E021ED32E004C080E090E0BD\r
+:1013E00020E030E0FA0131832083089580E189BD57\r
+:1013F00082E189BD09B400FEFDCF8091D8008F7DC8\r
+:101400008093D8008091E00082608093E00080911A\r
+:10141000E00081FDFCCF0895CF92DF92EF92FF9222\r
+:101420000F931F93CF93DF937C018B01EA010E94FE\r
+:101430006E0B811131C0209731F088819981081B92\r
+:10144000190BE80EF91EC12CD12C0115110519F14B\r
+:101450008091E80085FD14C08091E8008E7780932C\r
+:10146000E800209741F0888199818C0D9D1D99831A\r
+:10147000888385E011C00E946E0B882331F30CC075\r
+:10148000F70181917F018093F10001501109FFEF75\r
+:10149000CF1ADF0ADACF80E0DF91CF911F910F9151\r
+:1014A000FF90EF90DF90CF9008952091EB01309165\r
+:1014B000EC012617370748F06115710539F42091C2\r
+:1014C000E8002E772093E80001C0B901FC0120E07C\r
+:1014D00061157105B9F18091E401882309F440C0D8\r
+:1014E000853009F43FC08091E80083FD3DC08091C4\r
+:1014F000E80082FF06C08091E80082FF26C080E0FD\r
+:1015000008958091E80080FFE3CF2091F30080915F\r
+:10151000F20090E0922B6115710551F08830910531\r
+:1015200038F421912093F100615071090196F3CFB5\r
+:1015300021E0089709F020E08091E8008E77809301\r
+:10154000E800C6CF2111C7CFD6CF8091E401882310\r
+:1015500039F0853039F08091E80083FFCCCF04C0AA\r
+:1015600082E0089583E0089581E008952091EB01E1\r
+:101570003091EC012617370748F06115710539F4F1\r
+:101580002091E8002E772093E80001C0B901FC010A\r
+:1015900020E061157105C1F18091E401882309F40F\r
+:1015A00041C0853009F440C08091E80083FD3EC011\r
+:1015B0008091E80082FF06C08091E80082FF27C08A\r
+:1015C00080E008958091E80080FFE3CF2091F30050\r
+:1015D0008091F20090E0922B6115710559F08830EE\r
+:1015E000910540F424912093F100319661507109E6\r
+:1015F0000196F2CF21E0089709F020E08091E80001\r
+:101600008E778093E800C5CF2111C6CFD5CF8091CA\r
+:10161000E401882339F0853039F08091E80083FFB8\r
+:10162000CBCF04C082E0089583E0089581E008955F\r
+:10163000982F973058F59093E900981739F07091EA\r
+:10164000EC002091ED005091F00003C0242F762F84\r
+:1016500050E021FF19C03091EB003E7F3093EB004A\r
+:101660003091ED003D7F3093ED003091EB00316023\r
+:101670003093EB007093EC002093ED005093F0005A\r
+:101680002091EE0027FF07C09F5FD3CF8F7080931C\r
+:10169000E90081E0089580E008958091E50187FDEB\r
+:1016A00005C08091E80080FF0EC012C08091E80064\r
+:1016B00082FD05C08091E4018111F8CF08958091E9\r
+:1016C000E8008B7708C08091E4018111EACF08958A\r
+:1016D0008091E8008E778093E80008958091E4007F\r
+:1016E0009091E50045E62091EC0020FF21C020917B\r
+:1016F000E80020FD21C02091E401222389F025305B\r
+:1017000089F02091EB0025FD0FC02091E40030917D\r
+:10171000E5002817390739F3415041F0C901E3CFFB\r
+:1017200082E0089583E0089581E0089584E00895BB\r
+:101730002091E80022FFDFCF80E008950E940C0C8A\r
+:101740000E94140CE0EEF0E0808181608083E8ED7F\r
+:10175000F0E080818F77808319BCA7EDB0E08C9199\r
+:101760008E7F8C9380818F7E80831092E301089519\r
+:101770000F931F93CF93DF930E940C0C0E94140CC5\r
+:10178000C8EDD0E088818F778883888180688883DE\r
+:1017900088818F7D888319BC1092E4011092E0014A\r
+:1017A0001092E2011092E10100EE10E0F801808158\r
+:1017B0008B7F808388818160888342E060E080E065\r
+:1017C0000E94180BE1EEF0E080818E7F8083E2EED4\r
+:1017D000F0E0808181608083808188608083F8016F\r
+:1017E00080818E7F8083888180618883DF91CF9123\r
+:1017F0001F910F910895E8EDF0E080818F7E808346\r
+:10180000E7EDF0E080818160808384E082BF81E049\r
+:101810008093E3010C94B80BE8EDF0E080818E7FBB\r
+:1018200080831092E20008951092DA001092E10095\r
+:1018300008951F920F920FB60F9211242F933F938A\r
+:101840004F935F936F937F938F939F93AF93BF93C8\r
+:10185000EF93FF938091E10082FF0BC08091E20043\r
+:1018600082FF07C08091E1008B7F8093E1000E949E\r
+:10187000750E8091DA0080FF1FC08091D80080FF34\r
+:101880001BC08091DA008E7F8093DA008091D900AE\r
+:1018900080FF0DC080E189BD82E189BD09B400FEF1\r
+:1018A000FDCF81E08093E4010E947D0805C019BC52\r
+:1018B0001092E4010E948B088091E10080FF19C022\r
+:1018C0008091E20080FF15C08091E2008E7F8093BE\r
+:1018D000E2008091E20080618093E2008091D80074\r
+:1018E00080628093D80019BC85E08093E4010E9457\r
+:1018F0008F088091E10084FF30C08091E20084FF76\r
+:101900002CC080E189BD82E189BD09B400FEFDCF14\r
+:101910008091D8008F7D8093D8008091E1008F7EE8\r
+:101920008093E1008091E2008F7E8093E2008091BD\r
+:10193000E20081608093E2008091E001882311F051\r
+:1019400084E007C08091E30087FF02C083E001C00C\r
+:1019500081E08093E4010E9491088091E10083FF7F\r
+:1019600029C08091E20083FF25C08091E100877F3C\r
+:101970008093E10082E08093E4011092E001809185\r
+:10198000E1008E7F8093E1008091E2008E7F809362\r
+:10199000E2008091E20080618093E20042E060E03A\r
+:1019A00080E00E94180B8091F00088608093F00026\r
+:1019B0000E948E08FF91EF91BF91AF919F918F91FF\r
+:1019C0007F916F915F914F913F912F910F900FBE3B\r
+:1019D0000F901F9018951F920F920FB60F9211241F\r
+:1019E0002F933F934F935F936F937F938F939F9327\r
+:1019F000AF93BF93CF93EF93FF93C091E900CF7064\r
+:101A00008091EC001092E9008091F000877F809334\r
+:101A1000F00078940E94270D1092E9008091F00068\r
+:101A200088608093F000C093E900FF91EF91CF911F\r
+:101A3000BF91AF919F918F917F916F915F914F91E6\r
+:101A40003F912F910F900FBE0F901F9018951F93ED\r
+:101A5000CF93DF93CDB7DEB7AA970FB6F894DEBF6A\r
+:101A60000FBECDBFE5EEF1E08091F100819321E062\r
+:101A7000ED3EF207C9F70E94AD088091E80083FFB0\r
+:101A80001CC12091E5013091E601832F90E08A305E\r
+:101A9000910508F012C1FC01EA5AFF4F0C94532340\r
+:101AA000203881F0223809F008C18091E9018F7057\r
+:101AB0008093E9008091EB0085FB882780F91092E4\r
+:101AC000E90006C08091E1019091E20191118260EC\r
+:101AD0009091E800977F9093E8008093F100109236\r
+:101AE000F100C5C0822F8D7F09F0E7C0222319F0D5\r
+:101AF000223061F0E2C08091E701813009F0DDC061\r
+:101B0000333009F080E08093E20128C08091E70142\r
+:101B1000811124C02091E9012F7009F4CEC02093D7\r
+:101B2000E9008091EB0080FF19C08091EB00333019\r
+:101B300011F4806211C080618093EB0081E090E03D\r
+:101B4000022E01C0880F0A94EAF78093EA001092EF\r
+:101B5000EA008091EB0088608093EB001092E9002E\r
+:101B60008091E800877F86C02111A7C01091E7010E\r
+:101B70001F778091E3008078812B8093E300809130\r
+:101B8000E800877F8093E8000E944D0B8091E80079\r
+:101B900080FFFCCF8091E30080688093E3001123F5\r
+:101BA00011F083E001C082E08093E40186C02058F8\r
+:101BB000223008F082C08091E7019091E8018C3DCD\r
+:101BC00023E0920779F583E08A838AE289834FB71D\r
+:101BD000F894DE01139620E03EE051E2E32FF0E0BE\r
+:101BE00050935700E49120FF03C0E295EF703F5FF0\r
+:101BF000EF708E2F90E0EA3010F0C79601C0C096CB\r
+:101C00008D939D932F5F243149F74FBF8091E8005A\r
+:101C1000877F8093E8006AE270E0CE0101960E941F\r
+:101C2000550A14C0AE014F5F5F4F6091E9010E94F9\r
+:101C30009D09009709F441C02091E800277F209377\r
+:101C4000E800BC0189819A810E94B60A8091E8006F\r
+:101C50008B778093E80031C0203879F58091E800D7\r
+:101C6000877F8093E8008091E0018093F10080916C\r
+:101C7000E8008E778093E8000E944D0B1EC0211172\r
+:101C80001CC09091E7019230C0F48091E800877FFA\r
+:101C90008093E8009093E0010E944D0B8091E00159\r
+:101CA000811104C08091E30087FF02C084E001C07D\r
+:101CB00081E08093E4010E9499088091E80083FF0D\r
+:101CC0000AC08091E800877F8093E8008091EB0054\r
+:101CD00080628093EB00AA960FB6F894DEBF0FBE29\r
+:101CE000CDBFDF91CF911F9108950895CF9380913B\r
+:101CF000E4018823B1F08091E9008F709091EC00AD\r
+:101D000090FF02C090E801C090E0C92FC82B10924C\r
+:101D1000E9008091E80083FD0E94270DCF70C093F9\r
+:101D2000E900CF9108959093690180936801089527\r
+:101D3000E0916801F0916901309721F00190F08104\r
+:101D4000E02D099480E00895E0916801F091690127\r
+:101D5000309721F00280F381E02D09940895E091FD\r
+:101D60006801F0916901309721F00480F581E02D40\r
+:101D700009940895209166013091670182179307B5\r
+:101D800071F09093670180936601E0916801F09192\r
+:101D90006901309721F00680F781E02D09940895BC\r
+:101DA00020916401309165018217930771F090933F\r
+:101DB000650180936401E0916801F09169013097B9\r
+:101DC00021F00084F185E02D0994089508950C9484\r
+:101DD000E60E0E94251B0E94B5030C94EB1BCF92CC\r
+:101DE000DF92EF92FF920F931F93CF93DF93CDB7C4\r
+:101DF000DEB72B970FB6F894DEBF0FBECDBF0E94A3\r
+:101E0000CD038BE6C82E81E0D82E00E010E0E02E56\r
+:101E1000802F0E94BB04F60141916F01F42EF82639\r
+:101E2000B1F40F5F1F4F0E30110589F78FEF8983D3\r
+:101E30008A831B820E942E1B8160782F9D838C8356\r
+:101E400049815A816B818D810E94920F40C090918F\r
+:101E5000CD0191FF04C08B870E94C1048B8520E0D7\r
+:101E600030E04F2D50E0922FBA01022E02C075953E\r
+:101E700067950A94E2F760FF24C02E83EF8221E089\r
+:101E800030E0690102C0CC0CDD1C9A95E2F790E0CD\r
+:101E90008C219D21892B09F420E028870E942E1B8C\r
+:101EA0008160782F9A8789874E815F8168858A85CE\r
+:101EB0000E94920FF801E559FE4F8081C826C0822A\r
+:101EC00006C02F5F3F4F2630310569F6AACF0E942A\r
+:101ED000D11E10916A010E94980E1817A1F00E945D\r
+:101EE000980E80936A012B960FB6F894DEBF0FBE52\r
+:101EF000CDBFDF91CF911F910F91FF90EF90DF90B9\r
+:101F0000CF900C949D072B960FB6F894DEBF0FBEB2\r
+:101F1000CDBFDF91CF911F910F91FF90EF90DF9098\r
+:101F2000CF900895CF93DF93CDB7DEB72B970FB641\r
+:101F3000F894DEBF0FBECDBF4F83588769877A877D\r
+:101F40008B87DE01119686E0FD0111928A95E9F7F3\r
+:101F500085E0FE01379601900D928A95E1F749815F\r
+:101F60005A816B817C818D819E810E94E7162B9620\r
+:101F70000FB6F894DEBF0FBECDBFDF91CF910895AD\r
+:101F80000895CF93C82F882309F4C1C0823859F42B\r
+:101F90000E94980E81FDBBC089E30E9491190E94A6\r
+:101FA0005B1A89E30CC0833879F40E94980E80FD97\r
+:101FB000AEC083E50E9491190E945B1A83E50E94DE\r
+:101FC000D119CF910C945B1A843859F40E94980E61\r
+:101FD00082FD9DC087E40E9491190E945B1A87E4EC\r
+:101FE000EECF8CEF8C0F813A48F48C2F0E940F219A\r
+:101FF00081118DC08C2F0E949119E3CF80E28C0F4C\r
+:10200000883048F4C77081E001C0880FCA95EAF7AC\r
+:102010000E94121AD6CF8BE58C0F833078F4C53A24\r
+:1020200029F0C63A31F482E890E005C081E890E0FA\r
+:1020300002C083E890E0CF910C94BA0E88E58C0F33\r
+:10204000833108F064C0C83A39F1C93A41F1CA3A5B\r
+:1020500049F1CB3A51F1CC3A59F1CD3A61F1C03B5B\r
+:1020600069F1CE3A71F1CF3A79F1C13B81F1C23BCE\r
+:1020700089F1C33B91F1C43B99F1C53BA1F1C63B4A\r
+:10208000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BAA\r
+:10209000C9F58AE292E038C082EE90E035C089EE60\r
+:1020A00090E032C08AEE90E02FC085EB90E02CC02B\r
+:1020B00086EB90E029C087EB90E026C08CEC90E0A6\r
+:1020C00023C08DEC90E020C083E891E01DC08AE839\r
+:1020D00091E01AC082E991E017C084E991E014C050\r
+:1020E00081E292E011C083E292E00EC084E292E0CD\r
+:1020F0000BC085E292E008C086E292E005C087E26C\r
+:1021000092E002C080E090E0CF910C94D00ECF918D\r
+:102110000895882309F44BC0823859F40E94980E20\r
+:1021200081FF45C089E30E9491190E945B1A89E3EF\r
+:102130000CC0833871F40E94980E80FF38C083E58C\r
+:102140000E9491190E945B1A83E50E94D1190C9498\r
+:102150005B1A843859F40E94980E82FF28C087E4E5\r
+:102160000E9491190E945B1A87E4EFCF9CEF980FB1\r
+:10217000913A58F390E2980F983050F4877091E0BC\r
+:1021800001C0990F8A95EAF7892F0E94181ADFCFAC\r
+:102190009BE5980F933020F480E090E00C94BA0E09\r
+:1021A000885A833120F480E090E00C94D00E08959A\r
+:1021B000882321F00E94121A0C945B1A0895882338\r
+:1021C00021F00E94181A0C945B1A0895CF92DF92A6\r
+:1021D000EF92FF920F931F93CF93DF93CDB7DEB7AC\r
+:1021E00028970FB6F894DEBF0FBECDBF8C0185E0F7\r
+:1021F000F801DE01119601900D928A95E1F7F80140\r
+:10220000D080E180F280558152955F7023813481C6\r
+:10221000232B39F0FFEFEF1206C081E0DF1203C07D\r
+:1022200003C081E001C080E080FDE2C2C8015F839D\r
+:102230000E94C00FD982EA8269817A818F2D0E9423\r
+:102240008D199E8388870E9441190E9414184E811F\r
+:102250005F816885FF2029F00E942F1A68855F81C1\r
+:102260004E81E42FE295EF70F0E0E05AFF4F0C94BE\r
+:102270005323842F807F142F1F70882311F0129511\r
+:10228000107FFF20B1F0112309F467C280E2860FAE\r
+:10229000883028F4812F68870E94121A04C0812F89\r
+:1022A00068870E94221A688568870E945B1A688581\r
+:1022B00054C2862F68870E9489106885112309F40B\r
+:1022C00097C2605E812F683018F40E94181A02C00D\r
+:1022D0000E94281A28960FB6F894DEBF0FBECDBF15\r
+:1022E000DF91CF911F910F91FF90EF90DF90CF90F2\r
+:1022F0000C945B1A242F207F842F8F70203211F0D2\r
+:102300008295807F662319F0613019F12BC0FF2080\r
+:10231000B1F0552309F493C1513009F090C12896CA\r
+:102320000FB6F894DEBF0FBECDBFDF91CF911F91E6\r
+:102330000F91FF90EF90DF90CF900C94421A5523AD\r
+:1023400019F0513009F454C28E830E94451A8E81CF\r
+:1023500089C1FF2021F0523008F04AC270C15111EA\r
+:1023600047C280C1FF2021F0552309F468C1F5C19F\r
+:10237000552309F477C105C2242F2695269523708D\r
+:1023800030E02115310521F021303105C9F030C28E\r
+:10239000FF2021F0862F942F937002C080E090E000\r
+:1023A00028960FB6F894DEBF0FBECDBFDF91CF9158\r
+:1023B0001F910F91FF90EF90DF90CF900C94BA0E89\r
+:1023C000FF2021F0862F942F937002C080E090E0D0\r
+:1023D00028960FB6F894DEBF0FBECDBFDF91CF9128\r
+:1023E0001F910F91FF90EF90DF90CF900C94D00E43\r
+:1023F000862FFF2019F00E94D91D02C00E94411EA5\r
+:1024000028960FB6F894DEBF0FBECDBFDF91CF91F7\r
+:102410001F910F91FF90EF90DF90CF900C94C61E0C\r
+:10242000842F837009F076C0F110E2C1262F229527\r
+:1024300026952770220F220F862F8F70C82ED12C41\r
+:10244000E12CF12C022E04C0CC0CDD1CEE1CFF1C78\r
+:102450000A94D2F764FF10C06FE070E080E090E073\r
+:1024600004C0660F771F881F991F2A95D2F76095C1\r
+:1024700070958095909503C060E070E0CB01242FAB\r
+:10248000269526952370422F50E042305105D1F019\r
+:102490004330510559F16C297D298E299F294130FE\r
+:1024A000510541F128960FB6F894DEBF0FBECDBF9F\r
+:1024B000DF91CF911F910F91FF90EF90DF90CF9020\r
+:1024C0000C9439186C297D298E299F2928960FB6DE\r
+:1024D000F894DEBF0FBECDBFDF91CF911F910F915A\r
+:1024E000FF90EF90DF90CF900C9453180E94391812\r
+:1024F000C701B60128960FB6F894DEBF0FBECDBF58\r
+:10250000DF91CF911F910F91FF90EF90DF90CF90CF\r
+:102510000C941F18FF2019F0842F817001C086953C\r
+:10252000882309F465C1262F229526952770220F4E\r
+:10253000220F862F8F70C82ED12CE12CF12C022E69\r
+:1025400004C0CC0CDD1CEE1CFF1C0A94D2F764FF07\r
+:1025500010C06FE070E080E090E004C0660F771F6D\r
+:10256000881F991F2A95D2F7609570958095909550\r
+:1025700003C060E070E0CB01242F269526952370E0\r
+:10258000422F50E042305105D1F04330510559F10E\r
+:102590006C297D298E299F294130510541F12896CA\r
+:1025A0000FB6F894DEBF0FBECDBFDF91CF911F9164\r
+:1025B0000F91FF90EF90DF90CF900C940D196C2944\r
+:1025C0007D298E299F2928960FB6F894DEBF0FBE6D\r
+:1025D000CDBFDF91CF911F910F91FF90EF90DF90D2\r
+:1025E000CF900C9427190E940D19C701B6012896A7\r
+:1025F0000FB6F894DEBF0FBECDBFDF91CF911F9114\r
+:102600000F91FF90EF90DF90CF900C94F318603F04\r
+:10261000C9F118F4603E50F49BC0623F09F460C0F9\r
+:1026200008F44AC0633F09F46FC092C0162F1F70B0\r
+:10263000842F8F71FF2099F00E948C18812F28968B\r
+:102640000FB6F894DEBF0FBECDBFDF91CF911F91C3\r
+:102650000F91FF90EF90DF90CF900C94D8100E94D4\r
+:10266000AD18812F28960FB6F894DEBF0FBECDBFF0\r
+:10267000DF91CF911F910F91FF90EF90DF90CF905E\r
+:102680000C94DF10FF20A1F05111B2C0842F8F7184\r
+:1026900028960FB6F894DEBF0FBECDBFDF91CF9165\r
+:1026A0001F910F91FF90EF90DF90CF900C94D21874\r
+:1026B000523008F09DC0EACFFF20A1F0842F8F7127\r
+:1026C00028960FB6F894DEBF0FBECDBFDF91CF9135\r
+:1026D0001F910F91FF90EF90DF90CF900C948C188A\r
+:1026E000FF2061F3842F8F7128960FB6F894DEBF18\r
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053\r
+:10270000DF90CF900C94AD18FF2091F0842F8F7143\r
+:1027100028960FB6F894DEBF0FBECDBFDF91CF91E4\r
+:102720001F910F91FF90EF90DF90CF900C9477184E\r
+:1027300028960FB6F894DEBF0FBECDBFDF91CF91C4\r
+:102740001F910F91FF90EF90DF90CF900C946D1838\r
+:10275000FF20A1F0552309F4B1CF862F28960FB69C\r
+:10276000F894DEBF0FBECDBFDF91CF911F910F91C7\r
+:10277000FF90EF90DF90CF900C94C10F552309F498\r
+:10278000B1CF862F28960FB6F894DEBF0FBECDBF0F\r
+:10279000DF91CF911F910F91FF90EF90DF90CF903D\r
+:1027A0000C9489104F70C8010E94550228960FB6EC\r
+:1027B000F894DEBF0FBECDBFDF91CF911F910F9177\r
+:1027C000FF90EF90DF90CF900C9494174F70C8015A\r
+:1027D00028960FB6F894DEBF0FBECDBFDF91CF9124\r
+:1027E0001F910F91FF90EF90DF90CF900C94C20457\r
+:1027F00028960FB6F894DEBF0FBECDBFDF91CF9104\r
+:102800001F910F91FF90EF90DF90CF9008950E945D\r
+:102810002F1A0E943F1A0E94041A0E945B1A0E94FB\r
+:10282000721F0E94C61E80E090E00E94BA0E80E0F7\r
+:1028300090E00C94D00E0E941F1A0C9407140E9472\r
+:102840008219292F22952F7030E02C3031054CF45D\r
+:102850002A3031056CF4225031092230310590F4D0\r
+:1028600007C02C30310551F02F30310539F00AC046\r
+:10287000803E10F0803F31F481E0089593FB88277B\r
+:1028800080F9089580E00895CF93DF9300D000D0C1\r
+:102890001F92CDB7DEB70F900F900F900F900F9053\r
+:1028A000DF91CF910895CF93DF9300D000D000D077\r
+:1028B000CDB7DEB726960FB6F894DEBF0FBECDBFFC\r
+:1028C000DF91CF9108951F93CF93DF93C09179014A\r
+:1028D00016E080917A01C81799F0D0E01C9FF001B2\r
+:1028E0001D9FF00D1124E558FE4F408151816281FA\r
+:1028F0007381848195810E9453142196C770E9CF1A\r
+:10290000DF91CF911F9108954091AB015091AC019F\r
+:102910006091AD017091AE018091AF019091B001D5\r
+:102920000C945314CF938091B00182958F7009F06D\r
+:102930005FC08091AD01882309F45AC020917901CC\r
+:10294000A0917A016091AB017091AC018091AE01D0\r
+:102950009091AF0131E06F3F09F030E0B32FC6E056\r
+:102960002A1709F445C0009721F07F3F21F44B2F2F\r
+:1029700003C041E001C040E030E040FD35C0C29FEF\r
+:10298000F001C39FF00D1124E558FE4F41817413EF\r
+:102990002BC04081641328C04281411125C043816E\r
+:1029A00054814817590710F441505109481B590BDD\r
+:1029B000483C5105C8F48091B0018F7080618093CC\r
+:1029C000B00186E0829FF001839FF00D1124E05852\r
+:1029D000FE4F80818F70806180838BEA91E00E943E\r
+:1029E000E610CF910C9463142F5F3F4F2770B8CF40\r
+:1029F000CF910895CF92DF92EF92FF920F931F93A2\r
+:102A0000CF93DF93CDB7DEB762970FB6F894DEBFF2\r
+:102A10000FBECDBF8C0185E0F801DE011D9601904F\r
+:102A20000D928A95E1F7D8014C9111965C9111971E\r
+:102A300012966C9112971396ED90FC9014977091EA\r
+:102A4000AB01E091AC012091AE013091AF012115B5\r
+:102A5000310531F0EF3F31F481E07F3F19F403C0DD\r
+:102A600081E001C080E0B82FB170CB2E80FD6CC139\r
+:102A7000D090AD01DD2009F4F5C0F091B001E2166F\r
+:102A8000F30638F0C701821B930B883C910548F090\r
+:102A90009BC0209530952E0D3F1D283C310508F038\r
+:102AA00093C08F2F807F09F052C0E51314C07413B8\r
+:102AB00012C0D62E61110FC0FF70F061F093B0010B\r
+:102AC0000E9484148BEA91E00E94E6108091B0018C\r
+:102AD000F80185836CC1EF2831F05F3F31F481E06C\r
+:102AE0004F3F19F403C081E001C080E080FD03C0C6\r
+:102AF00081E0862701C080E0F82FF170FF2E80FF73\r
+:102B00001CC08091790120917A0136E0821709F486\r
+:102B100028C190E0389FF001399FF00D1124E5584D\r
+:102B2000FE4F7181571306C07081471303C0728135\r
+:102B3000671303C001968770E9CFD62E662309F488\r
+:102B400036C18091B00181608093B00153C0E5131C\r
+:102B500008C0741306C0611104C0D8011596FC9317\r
+:102B6000AEC04D875E878D859E856A8B0E941F143F\r
+:102B70006A89882329F1D62E662311F12091B001AC\r
+:102B8000822F82958F7090E002970CF460C0809144\r
+:102B9000AB019091AC0198878F831986FB86EA86FA\r
+:102BA0002C87CE01079651C0E51731F14D875E871E\r
+:102BB0008D859E856A8B0E941F146A8981112EC0A3\r
+:102BC000C8010E94E610A4C08F2F807F69F77E2D78\r
+:102BD000F98AE88A89890E9444148BEA91E00E946C\r
+:102BE000E610EBEAF1E086E0DF011D928A95E9F755\r
+:102BF0000E948414D12CDBC07413D8CF6111D6CFBE\r
+:102C0000D8011596FC93C8010E94E610EBEAF1E0AA\r
+:102C100086E0DF011D928A95E9F7C9C0D62E6623AA\r
+:102C200079F22091B001822F82958F7090E0029707\r
+:102C300074F08091AB019091AC019A8389831B82DF\r
+:102C4000FD82EC822E83CE0101960E94E61086E082\r
+:102C5000F801ABEAB1E001900D928A95E1F70E948C\r
+:102C600092146FC0E216F30628F0C701821B930B83\r
+:102C70009C0104C0209530952E0D3F1D283C310548\r
+:102C800008F052C0D62E662309F49ACFE5132CC063\r
+:102C900074132AC08091B00180FD1DC0982F9295B9\r
+:102CA0009F70C9F0D80115968C9315979F3039F015\r
+:102CB0009F5F9295907F8F70892B15968C93C8019A\r
+:102CC0000E94E61086E0F801ABEAB1E001900D92B7\r
+:102CD0008A95E1F736C086E0F801ABEAB1E00190F1\r
+:102CE0000D928A95E1F763C04D875E878D859E853D\r
+:102CF0000E941F14882379F086E0F801ABEAB1E066\r
+:102D000001900D928A95E1F70E9492140E9484141A\r
+:102D1000DD24D3944CC08091B00181608093B001D8\r
+:102D2000C8010E94E61043C07E2DF98AE88A89898D\r
+:102D30000E944414EBEAF1E086E0DF011D928A95DF\r
+:102D4000E9F70E94841433C0662309F439CF4D8714\r
+:102D50005E878D859E850E941F14882309F430CFDD\r
+:102D6000CBCF4D875E878D859E850E948219292F46\r
+:102D700022952F7030E0223031052CF49F7041F005\r
+:102D8000811106C00CC0243031052CF49F7049F429\r
+:102D9000805E883020F0C8010E94E610CF2CDC2C29\r
+:102DA00006C0D80115969C91907F91F7F8CF8D2D94\r
+:102DB00062960FB6F894DEBF0FBECDBFDF91CF9104\r
+:102DC0001F910F91FF90EF90DF90CF9008951F9388\r
+:102DD000CF93DF93CDB7DEB72C970FB6F894DEBF55\r
+:102DE0000FBECDBF4F83588769877A878B879C87B3\r
+:102DF000CE0107960E94FA148823C1F02F813885EE\r
+:102E00008A859B85892B31F03F3F11F080E003C01C\r
+:102E10002F3FE1F781E0811147C04F8158856985D7\r
+:102E20007A858B859C850E9453143EC086E0FE0106\r
+:102E30003796DE01119601900D928A95E1F7FF8198\r
+:102E4000E8854A855B854115510531F0EF3F31F446\r
+:102E500081E0FF3F19F403C081E001C080E080FD04\r
+:102E600023C020917A0130E0C9010196877099272B\r
+:102E70006091790170E086179707F1F1F983EA8391\r
+:102E80005D834C8396E0929FD001939FB00D1124F7\r
+:102E9000A558BE4FFE01319601900D929A95E1F72B\r
+:102EA00080937A010E94631416E0809179019091D9\r
+:102EB0007A01891779F1189FC001112485589E4F16\r
+:102EC0000E94FA14882331F1E09179011E9FF001EC\r
+:102ED0001124E558FE4F40815181628173818481C4\r
+:102EE00095810E9453148091790190E0019687703A\r
+:102EF000992780937901D9CF0E941B1410927A01EF\r
+:102F000010927901EBEAF1E086E0DF011D928A95EB\r
+:102F1000E9F7CACF2C960FB6F894DEBF0FBECDBF2F\r
+:102F2000DF91CF911F910895EF92FF920F931F931E\r
+:102F3000CF93DF93FC01009709F46FC0F12CEE24CE\r
+:102F4000E394EF0121968491843740F4843008F0B3\r
+:102F500055C0813081F0823021F15FC0853709F49E\r
+:102F600047C0C0F19CE7980F903708F056C08F77A4\r
+:102F70000E94891045C08F010E5F1F4FFE01849192\r
+:102F800090E2980F983050F48770FE2D01C0FF0F2B\r
+:102F90008A95EAF78F2F0E94321A15C00E94C10F3E\r
+:102FA00014C08F010E5F1F4FFE01849190E2980FB5\r
+:102FB000983068F48770FE2D01C0FF0F8A95EAF7FC\r
+:102FC0008F2F0E94381A0E945B1AE80119C00E94D4\r
+:102FD0008910FBCFCF010296FE01C491CC2361F092\r
+:102FE000EFE9FFE03197F1F700C00000C150F6CFE4\r
+:102FF000CF010296FE01F490EC0102C00E94C10FC5\r
+:103000008F2D882341F0EFE9FFE03197F1F700C001\r
+:1030100000008150F6CFFE0194CFDF91CF911F9138\r
+:103020000F91FF90EF90089508956093B50170930C\r
+:10303000B6018093B7019093B8010C9407140F93D5\r
+:103040001F930091B5011091B6012091B701309105\r
+:10305000B801062B172B282B392B0093B5011093A1\r
+:10306000B6012093B7013093B8011F910F910C94D2\r
+:1030700007140F931F930091B5011091B601209191\r
+:10308000B7013091B8010623172328233923009371\r
+:10309000B5011093B6012093B7013093B8011F9189\r
+:1030A0000F910C9407140F931F930091B501109189\r
+:1030B000B6012091B7013091B801062717272827BC\r
+:1030C00039270093B5011093B6012093B7013093CF\r
+:1030D000B8011F910F910C9407141092B101109236\r
+:1030E000B2011092B3011092B4010C94071441E0A4\r
+:1030F00050E060E070E004C0440F551F661F771F6A\r
+:103100008A95D2F74093B1015093B2016093B30115\r
+:103110007093B4010C94071441E050E060E070E05B\r
+:1031200004C0440F551F661F771F8A95D2F7809100\r
+:10313000B1019091B201A091B301B091B401842B7F\r
+:10314000952BA62BB72B8093B1019093B201A0933E\r
+:10315000B301B093B4010C94071441E050E060E077\r
+:1031600070E004C0440F551F661F771F8A95D2F781\r
+:1031700040955095609570958091B1019091B20104\r
+:10318000A091B301B091B40184239523A623B72362\r
+:103190008093B1019093B201A093B301B093B401B5\r
+:1031A0000C94071441E050E060E070E004C0440F6C\r
+:1031B000551F661F771F8A95D2F78091B1019091B4\r
+:1031C000B201A091B301B091B40184279527A6273D\r
+:1031D000B7278093B1019093B201A093B301B0934C\r
+:1031E000B4010C9407140F931F930091B101109137\r
+:1031F000B2012091B3013091B401062B172B282B7B\r
+:10320000392B0093B1011093B2012093B301309395\r
+:10321000B4011F910F910C9407140F931F93009109\r
+:10322000B1011091B2012091B3013091B401062394\r
+:103230001723282339230093B1011093B20120935F\r
+:10324000B3013093B4011F910F910C9407140F93A5\r
+:103250001F930091B1011091B2012091B3013091FF\r
+:10326000B40106271727282739270093B1011093A7\r
+:10327000B2012093B3013093B4011F910F910C94CC\r
+:1032800007140895CF92DF92EF92FF920F931F934E\r
+:10329000CF93DF93EC01C090B501D090B601E090E0\r
+:1032A000B701F090B8018091B1019091B201A09165\r
+:1032B000B301B091B401C82AD92AEA2AFB2A0FE146\r
+:1032C00010E0B701A601002E04C0769567955795CA\r
+:1032D00047950A94D2F740FD05C00150110988F7BF\r
+:1032E00080E007C0BE01802F0E9402070197A9F36A\r
+:1032F000802FDF91CF911F910F91FF90EF90DF9082\r
+:10330000CF900895CF93DF93EC010E944219BE0144\r
+:103310000E940207DF91CF910895CB010E9482198C\r
+:10332000089590910C019923D9F090910D01992362\r
+:10333000B9F0982F9695969596959F3088F5E091DF\r
+:103340000E01F0910F01E90FF11D877021E030E0CF\r
+:1033500001C0220F8A95EAF78181822B818308952B\r
+:1033600040910E0150910F0120E030E09FEFFA01F3\r
+:10337000E20FF31F6281681799F09F3F19F4611102\r
+:1033800001C0922F2F5F3F4F2E30310581F79F3FB5\r
+:1033900039F0FA01E90FF11D97FDFA95828308953E\r
+:1033A000089590910C019923E1F090910D019923DA\r
+:1033B000C1F0982F9695969596959F3020F5E091BF\r
+:1033C0000E01F0910F01E90FF11D877021E030E04F\r
+:1033D00001C0220F8A95EAF7209581812823218355\r
+:1033E000089540910E0150910F0120E030E0FA0164\r
+:1033F000E20FF31F9281981301C012822F5F3F4F9B\r
+:103400002E303105A1F7089581E090E0E0910E01A2\r
+:10341000F0910F01E80FF91F10820196803191059C\r
+:10342000A9F708959091CC01982B9093CC01089521\r
+:1034300080959091CC0198239093CC01089510929F\r
+:10344000CC0108959091CB01982B9093CB010895D6\r
+:1034500080959091CB0198239093CB010895109281\r
+:10346000CB0108959091CA01982B9093CA010895B9\r
+:1034700080959091CA0198239093CA010895109263\r
+:10348000CA0108958093B90108951092B901089571\r
+:1034900040910E0150910F0120E030E080E0FA01F0\r
+:1034A000E20FF31F918191118F5F2F5F3F4F2F30FC\r
+:1034B0003105A9F70895E0910E01F0910F01809177\r
+:1034C000CC018083E0910E01F0910F0180819091F9\r
+:1034D000CB01892B8083E0910E01F0910F01808157\r
+:1034E0009091CA01892B80839091B901992361F051\r
+:1034F000E0910E01F0910F018081892B80830E9461\r
+:10350000481A81111092B90180910E0190910F011A\r
+:103510000C94A40ECF92DF92EF92FF920F931F9321\r
+:103520006C01EE24FF24C114D104E104F10421F460\r
+:103530006B017C0180E001C080E133272F2D1E2D1F\r
+:103540000D2D011511052105310519F0885F680160\r
+:10355000790197018601A4E036952795179507957F\r
+:10356000AA95D1F7011511052105310519F08C5FD8\r
+:103570006801790197018601F2E036952795179544\r
+:103580000795FA95D1F7011511052105310519F0B7\r
+:103590008E5F68017901B701A60176956795579509\r
+:1035A0004795452B462B472B09F08F5F1F910F91B5\r
+:1035B000FF90EF90DF90CF9008958091E4018430E8\r
+:1035C00039F11092CE0120E488E190E00FB6F89432\r
+:1035D000A895809360000FBE2093600080E00E9459\r
+:1035E0009D0783B7817F846083BF83B7816083BF7A\r
+:1035F0007894889583B78E7F83BF0FB6F894A8958B\r
+:1036000080916000886180936000109260000FBE1E\r
+:10361000089508950895CF930E94091B0E94CD0339\r
+:103620000E940A1BC0E08C2F0E94BB04811104C0C1\r
+:10363000CF5FCE30C1F701C081E0CF9108950E94E5\r
+:103640001B140E94980E0C949D0782E084BD93E0A9\r
+:1036500095BD9AEF97BD80936E0008952FB7F894AB\r
+:103660008091CF019091D001A091D101B091D20170\r
+:103670002FBF0895CF92DF92EF92FF920F931F9387\r
+:103680002FB7F8944091CF015091D0016091D101B2\r
+:103690007091D2012FBF6A017B01EE24FF248C01BF\r
+:1036A00020E030E0C016D106E206F30610F44150E7\r
+:1036B0005109481B590BCA011F910F91FF90EF90C0\r
+:1036C000DF90CF9008951F920F920FB60F921124A2\r
+:1036D0008F939F93AF93BF938091CF019091D0012F\r
+:1036E000A091D101B091D2010196A11DB11D80938D\r
+:1036F000CF019093D001A093D101B093D201BF919B\r
+:10370000AF919F918F910F900FBE0F901F901895C2\r
+:103710000E949E0BF8942FEF87EA91E6215080409B\r
+:103720009040E1F700C0000087E090EBDC0180935F\r
+:10373000EE019093EF01A093F001B093F1012CE022\r
+:1037400088E190E00FB6F894A895809360000FBED2\r
+:1037500020936000FFCFEF92FF920F931F93CF93C0\r
+:10376000DF93D82FC0E08C2F0E94BB0400E010E054\r
+:10377000E82EF12CC701002E02C0959587950A947A\r
+:10378000E2F780FD06C00F5F1F4F0630110591F76D\r
+:1037900009C0602F7C2F80E00E94C304D813F3CFB0\r
+:1037A00081E004C0CF5FCE30F1F680E0DF91CF91B1\r
+:1037B0001F910F91FF90EF900895CF93C82F8CE247\r
+:1037C0000E94AB1B882321F08C2FCF910C94AB1B54\r
+:1037D00080E0CF910895CF930E94321D811102C0E5\r
+:1037E0000E94181DC5E6C15049F00E94CD038FE329\r
+:1037F0009CE90197F1F700C00000F5CF89E20E9433\r
+:10380000DD1B811113C18AE20E94DD1B81110E9420\r
+:10381000181D85E00E94DD1B81110E94881B0E94FB\r
+:103820003D1D8093CD0187E00E94DD1B8823A9F117\r
+:103830008BE10E94DD1B882351F08091CD0181FB3B\r
+:10384000222720F991E0922790FB81F90EC08EE0AB\r
+:103850000E94DD1B882361F08091CD0182FB22272D\r
+:1038600020F991E0922790FB82F98093CD0115C059\r
+:1038700080E10E94DD1B9091CD01882341F093FBF4\r
+:10388000222720F981E0822780FB93F904C0892F49\r
+:10389000809580FB90F99093CD018091CD010E949D\r
+:1038A000411D0E944F1D8093ED0180EE0E94DD1BA3\r
+:1038B000882341F08091ED01982F909590FB80F93D\r
+:1038C0008093ED0189E30E94DD1B882359F08091EC\r
+:1038D000ED0181FB222720F991E0922790FB81F9ED\r
+:1038E0008093ED0182EE0E94DD1B882359F08091C8\r
+:1038F000ED0182FB222720F991E0922790FB82F9CB\r
+:103900008093ED0186EE0E94DD1B882359F08091A3\r
+:10391000ED0183FB222720F991E0922790FB83F9A8\r
+:103920008093ED0183EE0E94DD1B882359F0809186\r
+:10393000ED0184FB222720F991E0922790FB84F986\r
+:103940008093ED0185E30E94DD1B882359F080916F\r
+:10395000ED0185FB222720F991E0922790FB85F964\r
+:103960008093ED0181E30E94DD1B882359F0809153\r
+:10397000ED0186FB222720F991E0922790FB86F942\r
+:103980008093ED0181E10E94DD1B882359F0809135\r
+:10399000ED0187FB222720F991E0922790FB87F920\r
+:1039A0008093ED018091ED010E94531D8091ED0106\r
+:1039B00087FB882780F980930D0187E20E94DD1B39\r
+:1039C000C82F8EE10E94DD1B8111C2608FE10E9431\r
+:1039D000DD1B8111C46080E20E94DD1B8111C86083\r
+:1039E00081E20E94DD1B8111C06182E20E94DD1B29\r
+:1039F0008111C06283E20E94DD1B8111C06484E2F8\r
+:103A00000E94DD1B882311F0C06802C0CC2329F07E\r
+:103A10008C2F0E944A1D6C2F03C00E94461D682FE8\r
+:103A200070E080E090E0CF910C941518CF9108954C\r
+:103A30006DEE7EEF80E090E00E948D2360E082E0FA\r
+:103A400090E00E947B2360E083E090E00E947B2373\r
+:103A500060E084E090E00E947B2360E085E090E0FD\r
+:103A60000C947B2380E090E00E94752321E08D3E42\r
+:103A70009E4F09F020E0822F089582E090E00C94A0\r
+:103A80006D23682F82E090E00C947B2383E090E02C\r
+:103A90000C946D23682F83E090E00C947B2384E0EA\r
+:103AA00090E00C946D23682F84E090E00C947B23CD\r
+:103AB0008091D50180FF0BC06091130185E0689F64\r
+:103AC000B001112475956795759567952AC081FF9A\r
+:103AD00009C06091130185E0689FB00111247595BC\r
+:103AE00067951FC082FF07C06091130185E0689F42\r
+:103AF000B001112416C04091D6014423C9F0609151\r
+:103B00001201461788F72091130185E0289F900144\r
+:103B10001124429FC001439F900D112470E00E9428\r
+:103B20003F236038710540F46115710539F002C01A\r
+:103B300065E070E0862F08958FE7089581E008958D\r
+:103B40008091D50180FF08C06091110170E07595EA\r
+:103B500067957595679521C081FF06C06091110139\r
+:103B600070E07595679519C082FF04C060911101DE\r
+:103B700070E010C08091D6018823C1F060911001DF\r
+:103B80008617A0F790911101989FC001112470E051\r
+:103B90000E943F236038710528F46115710521F0FA\r
+:103BA000862F08958FE7089581E0089561E070E021\r
+:103BB000F4CF803F21F40E94581D819504C0813FBD\r
+:103BC00029F40E94581D8093D9010895823F21F461\r
+:103BD0000E94581D819504C0833F29F40E94581DFE\r
+:103BE0008093D8010895893F19F40E94A01D05C053\r
+:103BF0008A3F31F40E94A01D81958093DA010895D7\r
+:103C00008B3F21F40E94A01D819504C08C3F29F4B4\r
+:103C10000E94A01D8093DB010895843F21F48091D0\r
+:103C2000D701816017C0853F21F48091D701826060\r
+:103C300011C0863F21F48091D70184600BC0873F7B\r
+:103C400021F48091D701886005C0883F31F48091CC\r
+:103C5000D70180618093D70108958D3F21F4809131\r
+:103C6000D50181600BC08E3F21F48091D501826027\r
+:103C700005C08F3F29F48091D50184608093D501E0\r
+:103C80000895803F39F48091D90187FF6CC010926C\r
+:103C9000D90169C0813F29F48091D9011816BCF37C\r
+:103CA00062C09091D801823F29F497FF5CC01092C6\r
+:103CB000D80159C0833F19F41916CCF354C0893F79\r
+:103CC00041F48091DA0118160CF04DC01092DA011F\r
+:103CD0004AC08A3F29F48091DA0187FF44C0F6CFB9\r
+:103CE0008B3F39F48091DB0187FF3DC01092DB01EF\r
+:103CF0003AC08C3F29F48091DB011816BCF333C025\r
+:103D0000843F21F48091D7018E7F17C0853F21F435\r
+:103D10008091D7018D7F11C0863F21F48091D7011A\r
+:103D20008B7F0BC0873F21F48091D701877F05C02F\r
+:103D3000883F31F48091D7018F7E8093D70113C0E3\r
+:103D40008D3F21F48091D5018E7F0BC08E3F21F4F1\r
+:103D50008091D5018D7F05C08F3F29F48091D501D9\r
+:103D60008B7F8093D5018091D80181110EC0809105\r
+:103D7000D90181110AC08091DA01811106C08091B8\r
+:103D8000DB01811102C01092D601089587ED91E008\r
+:103D90000E94AF0E0E942E1B9093D4018093D301FA\r
+:103DA00008951F93CF93DF938091D3019091D40115\r
+:103DB0000E943A1B4091D601442321F02091140126\r
+:103DC00030E006C0209115015AE0259F9001112492\r
+:103DD0008217930708F482C08091D8011091D9010D\r
+:103DE000D091DA01C091DB01811107C0111105C02A\r
+:103DF000D11103C0CC2309F471C04F3F19F04F5FBC\r
+:103E00004093D601181624F40E94581D8093D801BF\r
+:103E10008091D80187FF05C00E94581D819580932D\r
+:103E2000D801111624F40E94581D8093D901809165\r
+:103E3000D90187FF05C00E94581D81958093D90143\r
+:103E40006091D801662339F11091D901112319F13C\r
+:103E5000772767FD7095872F972F0E94462223E3CF\r
+:103E600033E343E35FE30E94AA220E940E226093A1\r
+:103E7000D801612F772767FD7095872F972F0E94B4\r
+:103E8000462223E333E343E35FE30E94AA220E9436\r
+:103E90000E226093D9011D1624F40E94A01D809368\r
+:103EA000DA018091DA0187FF05C00E94A01D81958B\r
+:103EB0008093DA011C1624F40E94A01D8093DB017C\r
+:103EC0008091DB0187FF05C00E94A01D8195809332\r
+:103ED000DB01DF91CF911F910C94C61EDF91CF9132\r
+:103EE0001F910895E7EDF1E085E0DF011D928A95CD\r
+:103EF000E9F71092D6011092D5010895833081F12F\r
+:103F000028F4813059F08230D1F00895853009F4D9\r
+:103F100049C0B8F1863009F456C008958091150162\r
+:103F2000262F30E0280F311D2F3F310524F4680F74\r
+:103F30006093150108958FEF809315010895809186\r
+:103F40001401262F30E0280F311D2F3F310524F4B6\r
+:103F5000680F6093140108958FEF80931401089502\r
+:103F600080911301262F30E0280F311D2F3F31059E\r
+:103F700024F4680F6093130108958FEF8093130169\r
+:103F8000089580911201262F30E0280F311D2F3F18\r
+:103F9000310524F4680F6093120108958FEF809328\r
+:103FA0001201089580911101262F30E0280F311D54\r
+:103FB0002F3F310524F4680F6093110108958FEFAE\r
+:103FC00080931101089580911001262F30E0280F71\r
+:103FD000311D2F3F310524F4680F609310010895BF\r
+:103FE0008FEF809310010895833011F128F4813010\r
+:103FF00049F0823091F00895853081F120F18630CA\r
+:10400000C1F1089580911501681720F4861B8093F3\r
+:1040100015010895109215010895809114016817F3\r
+:1040200020F4861B809314010895109214010895C2\r
+:1040300080911301681720F4861B80931301089563\r
+:1040400010921301089580911201681720F4861BC5\r
+:104050008093120108951092120108958091110128\r
+:10406000681720F4861B80931101089510921101A6\r
+:10407000089580911001681720F4861B8093100129\r
+:1040800008951092100108950F931F938D3109F434\r
+:104090006BC008F03FC08E3009F47FC0C0F4873099\r
+:1040A00009F469C068F4863009F0B1C08091CD018F\r
+:1040B000817F8E7F8093CD0181E08093DD01A8C058\r
+:1040C000883009F4A2C08B3009F49FC0A0C08631AB\r
+:1040D00009F49BC078F4803109F472C0813109F091\r
+:1040E00096C00E941B1490910D0181E08927809356\r
+:1040F0000D018BC0893109F488C08B3109F087C06C\r
+:104100008091CD0181FB222720F991E0922790FB3D\r
+:1041100081F94CC0853309F470C048F4873209F442\r
+:104120006CC008F459C0893209F467C070C0833488\r
+:1041300038F48A3308F04EC0883309F466C067C08B\r
+:10414000833409F45AC0883409F061C00E941B14FA\r
+:104150000FEF13ED20E3015010402040E1F700C0C5\r
+:1041600000000E94881B51C00E94C8210E94980E26\r
+:104170000E949D074AC09091CD01892F8095817042\r
+:1041800080FB90F929F0966098609093CD0140C033\r
+:10419000997F977F9093CD0138C08091CD0182FBAC\r
+:1041A000222720F991E0922790FB82F98093CD019C\r
+:1041B000992359F18091CD0181608093CD0125C073\r
+:1041C0008091CD0183FB222720F991E0922790FB7B\r
+:1041D00083F9ECCF895301C08D5141E050E060E09C\r
+:1041E00070E08A019B0104C0000F111F221F331FC2\r
+:1041F0008A95D2F7C901B80104C061E070E080E09F\r
+:1042000090E00E9415180E941B1481E001C080E01C\r
+:104210001F910F91089580E0089580E00895CF9355\r
+:10422000C82F8091DD01813079F018F08230E9F1FA\r
+:1042300087C0E0910E01F0910F018081813169F01A\r
+:10424000823209F07FC009C0E0910E01F0910F01A8\r
+:104250008081813111F0823261F48C2F0E940B2118\r
+:10426000811104C08C2F0E9444201DC081E090E089\r
+:104270001AC08C2F0E940D21811114C0C43179F015\r
+:1042800048F4CB3079F0C03109F060C082E080930F\r
+:10429000DD0108C0C93219F0C83321F057C01092AF\r
+:1042A000DD0154C081E0817053C0C93289F118F535\r
+:1042B000C43171F1A8F4C73009F046C08AE0809398\r
+:1042C000150194E19093140193E09093130180936E\r
+:1042D000120188E08093110188E28093100134C0BC\r
+:1042E000CE51C63088F5EC2FF0E0E65DFE4F8081C0\r
+:1042F0008093DC0129C0CE34E9F020F4CB3421F5E1\r
+:104300006AE013C0C13579F0C235F1F461E00DC047\r
+:104310008091DC01882319F01092DC0115C081E046\r
+:104320008093DD0115C061E006C08091DC010E9430\r
+:104330007E1F0AC06AE08091DC010E94F41F04C065\r
+:104340001092DD0180E004C081E002C080E0ABCFCC\r
+:10435000CF910895E1E8F0E08081886080838081DA\r
+:10436000816080838FB7F89493E09093890090EDFB\r
+:10437000909388008FBF0895EFE6F0E0808182601F\r
+:1043800080830895EFE6F0E080818D7F808308953B\r
+:10439000EFE6F0E0808192E08927808308951F9204\r
+:1043A0000F920FB60F9211242F933F934F935F9369\r
+:1043B0006F937F938F939F93AF93BF93EF93FF93ED\r
+:1043C0008091DE019091DF0101969093DF0180934F\r
+:1043D000DE01811103C082E00E949D07E091DF01B0\r
+:1043E000E695E695F0E0E252FC4FE4918091DE0123\r
+:1043F0008E1303C080E00E949D07FF91EF91BF9153\r
+:10440000AF919F918F917F916F915F914F913F916C\r
+:104410002F910F900FBE0F901F9018950E9415229C\r
+:104420006894B1110C94A42208950E94892288F006\r
+:104430009F5798F0B92F9927B751B0F0E1F0660F68\r
+:10444000771F881F991F1AF0BA95C9F714C0B130A9\r
+:1044500091F00E94A322B1E008950C94A322672F4B\r
+:10446000782F8827B85F39F0B93FCCF386957795D8\r
+:104470006795B395D9F73EF49095809570956195C1\r
+:104480007F4F8F4F9F4F0895E89409C097FB3EF4EC\r
+:1044900090958095709561957F4F8F4F9F4F992391\r
+:1044A000A9F0F92F96E9BB279395F695879577950F\r
+:1044B0006795B795F111F8CFFAF4BB0F11F460FFCF\r
+:1044C0001BC06F5F7F4F8F4F9F4F16C0882311F027\r
+:1044D00096E911C0772321F09EE8872F762F05C03B\r
+:1044E000662371F096E8862F70E060E02AF09A95D6\r
+:1044F000660F771F881FDAF7880F9695879597F9CB\r
+:10450000089557FD9058440F551F59F05F3F71F0C3\r
+:104510004795880F97FB991F61F09F3F79F087952A\r
+:104520000895121613061406551FF2CF4695F1DFB3\r
+:1045300008C0161617061806991FF1CF8695710543\r
+:10454000610508940895E894BB2766277727CB0177\r
+:1045500097F908950E94BD220C942E230E942023D7\r
+:1045600038F00E94272320F0952311F00C94172394\r
+:104570000C941D2311240C94A4220E94812270F318\r
+:10458000959FC1F3950F50E0551F629FF001729FF8\r
+:10459000BB27F00DB11D639FAA27F00DB11DAA1F07\r
+:1045A000649F6627B00DA11D661F829F2227B00D54\r
+:1045B000A11D621F739FB00DA11D621F839FA00DDF\r
+:1045C000611D221F749F3327A00D611D231F849F2F\r
+:1045D000600D211D822F762F6A2F11249F57504086\r
+:1045E0009AF0F1F088234AF0EE0FFF1FBB1F661F01\r
+:1045F000771F881F91505040A9F79E3F510580F0CA\r
+:104600000C9417230C94A4225F3FE4F3983ED4F358\r
+:10461000869577956795B795F795E7959F5FC1F76D\r
+:10462000FE2B880F911D9695879597F9089597F918\r
+:104630009F6780E870E060E008959FEF80EC089548\r
+:1046400000240A9416161706180609060895002471\r
+:104650000A9412161306140605060895092E0394EB\r
+:10466000000C11F4882352F0BB0F40F4BF2B11F45F\r
+:1046700060FF04C06F5F7F4F8F4F9F4F089597FB80\r
+:10468000072E16F4009407D077FD09D00E94592315\r
+:1046900007FC05D03EF4909581959F4F0895709545\r
+:1046A00061957F4F0895EE0FFF1F0590F491E02D67\r
+:1046B0000994AA1BBB1B51E107C0AA1FBB1FA61769\r
+:1046C000B70710F0A61BB70B881F991F5A95A9F7BB\r
+:1046D00080959095BC01CD010895F999FECF92BDCA\r
+:1046E00081BDF89A992780B50895A8E1B0E042E02D\r
+:1046F00050E00C949523262FF999FECF92BD81BDF1\r
+:10470000F89A019700B4021639F01FBA20BD0FB60F\r
+:10471000F894FA9AF99A0FBE08950196272F0E94ED\r
+:104720007C230C947B23DC01CB01FC01F999FECFA7\r
+:1047300006C0F2BDE1BDF89A319600B40D92415029\r
+:0A4740005040B8F70895F894FFCF39\r
+:10474A0020029F072C080908D507A2070101BA0110\r
+:10475A0028080A03140A3F4D36399F0352031C03E3\r
+:10476A00E30276028F02A802C102010203040506CF\r
+:04477A000708090023\r
+:00000001FF\r
--- /dev/null
+[
+ {
+ "name": "Beginner's Keymap for Ergodox-EZ",
+ "author": "Anand Babu Periasamy"
+ },
+ [
+ {
+ "x": 3.5
+ },
+ "#\n3\n\n\nF3",
+ {
+ "x": 10.5
+ },
+ ")\n0\n\n\nF10"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 2.5
+ },
+ "@\n2\n\n\nF2",
+ {
+ "x": 1
+ },
+ "$\n4\n\n\nF4",
+ {
+ "x": 8.5
+ },
+ "(\n9\n\n\nF9",
+ {
+ "x": 1
+ },
+ "_\n-\n\n\nF11"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5.5
+ },
+ "%\n5\n\n\nF5",
+ "^\n6\n\n\nF6",
+ {
+ "x": 4.5
+ },
+ "&\n7\n\n\nF7",
+ "*\n8\n\n\nF8"
+ ],
+ [
+ {
+ "y": -0.875,
+ "w": 1.5
+ },
+ "~\n`\n\n\nEsc",
+ "!\n1\n\n\nF1",
+ {
+ "x": 14.5
+ },
+ "+\n=\n\n\nF12",
+ {
+ "a": 7,
+ "w": 1.5
+ },
+ "Backspace\n\n\n\nBackspace"
+ ],
+ [
+ {
+ "y": -0.375,
+ "x": 3.5
+ },
+ "E\n\n\n\n<i class=\"fa fa-caret-up\" aria-hidden=\"true\"></i>",
+ {
+ "x": 10.5
+ },
+ "I"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 2.5
+ },
+ "W"
+ ],
+ [
+ {
+ "y": -0.9950000000000001,
+ "x": 4.5,
+ "a": 4
+ },
+ "R",
+ {
+ "x": 8.5,
+ "a": 7
+ },
+ "U",
+ {
+ "x": 1
+ },
+ "O"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5.5
+ },
+ "T",
+ {
+ "h": 1.5
+ },
+ "<i class=\"fa fa-chevron-circle-left\" aria-hidden=\"true\"></i>",
+ {
+ "x": 4.5,
+ "h": 1.5
+ },
+ "<i class=\"fa fa-chevron-circle-right\" aria-hidden=\"true\"></i>",
+ "Y"
+ ],
+ [
+ {
+ "y": -0.875,
+ "a": 6,
+ "w": 1.5
+ },
+ "Tab",
+ {
+ "a": 7
+ },
+ "Q",
+ {
+ "x": 14.5
+ },
+ "P",
+ {
+ "a": 4,
+ "w": 1.5
+ },
+ "|\n\\"
+ ],
+ [
+ {
+ "y": -0.375,
+ "x": 3.5,
+ "a": 7
+ },
+ "D\n\n\n\n<i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>",
+ {
+ "x": 10.5
+ },
+ "K"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 2.5
+ },
+ "S\n\n\n\n<i class=\"fa fa-caret-left\" aria-hidden=\"true\"></i>",
+ {
+ "x": 1
+ },
+ "F\n\n\n\n<i class=\"fa fa-caret-right\" aria-hidden=\"true\"></i>",
+ {
+ "x": 8.5
+ },
+ "J",
+ {
+ "x": 1
+ },
+ "L"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5.5
+ },
+ "G",
+ {
+ "x": 6.5
+ },
+ "H"
+ ],
+ [
+ {
+ "y": -0.875,
+ "a": 4,
+ "fa": [
+ 0,
+ 0,
+ 0,
+ 2
+ ],
+ "w": 1.5
+ },
+ "\n\n\nCtrl\n\n\nCaps",
+ {
+ "a": 7
+ },
+ "A",
+ {
+ "x": 14.5,
+ "a": 4
+ },
+ ":\n;",
+ {
+ "a": 7,
+ "w": 1.5
+ },
+ "Enter"
+ ],
+ [
+ {
+ "y": -0.625,
+ "x": 6.5,
+ "h": 1.5
+ },
+ "PgUp",
+ {
+ "x": 4.5,
+ "h": 1.5
+ },
+ "PgDn"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3.5
+ },
+ "C",
+ {
+ "x": 10.5,
+ "a": 4
+ },
+ "<\n,"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 2.5,
+ "a": 7
+ },
+ "X",
+ {
+ "x": 1
+ },
+ "V",
+ {
+ "x": 8.5
+ },
+ "M",
+ {
+ "x": 1,
+ "a": 4
+ },
+ ">\n."
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5.5,
+ "a": 7
+ },
+ "B",
+ {
+ "x": 6.5
+ },
+ "N"
+ ],
+ [
+ {
+ "y": -0.875,
+ "w": 1.5
+ },
+ "Shift",
+ "Z",
+ {
+ "x": 14.5,
+ "a": 4
+ },
+ "?\n/",
+ {
+ "w": 1.5
+ },
+ "\"\n'"
+ ],
+ [
+ {
+ "y": -0.375,
+ "x": 3.5,
+ "a": 7
+ },
+ "Alt\n\n\n\n<i class=\"fa fa-hand-o-left\" aria-hidden=\"true\"></i>",
+ {
+ "x": 10.5
+ },
+ "<i class=\"fa fa-long-arrow-down\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-down'></i>"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 2.5
+ },
+ "<i class='fa fa-linux'></i>",
+ {
+ "x": 1
+ },
+ "Alt\n\n\n\n<i class=\"fa fa-hand-o-right\" aria-hidden=\"true\"></i>",
+ {
+ "x": 8.5
+ },
+ "<i class=\"fa fa-long-arrow-left\" aria-hidden=\"true\"></i>",
+ {
+ "x": 1
+ },
+ "<i class=\"fa fa-long-arrow-up\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-up'></i>"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 0.5
+ },
+ "Ctrl\n\n\n\n<i class='fa fa-download'></i>",
+ "Esc",
+ {
+ "x": 14.5
+ },
+ "<i class=\"fa fa-long-arrow-right\" aria-hidden=\"true\"></i>\n\n\n\n<i class='fa fa-volume-off'></i>",
+ "Fn"
+ ],
+ [
+ {
+ "r": 30,
+ "rx": 6.5,
+ "ry": 4.25,
+ "y": -1,
+ "x": 1
+ },
+ "<i class=\"fa fa-clone\" aria-hidden=\"true\"></i>",
+ "("
+ ],
+ [
+ {
+ "h": 2
+ },
+ "Space",
+ {
+ "h": 2
+ },
+ "Del",
+ "["
+ ],
+ [
+ {
+ "x": 2
+ },
+ "{"
+ ],
+ [
+ {
+ "r": -30,
+ "rx": 13,
+ "y": -1,
+ "x": -3
+ },
+ ")",
+ "<i class=\"fa fa-paste\" aria-hidden=\"true\"></i>"
+ ],
+ [
+ {
+ "x": -3
+ },
+ "]",
+ {
+ "h": 2
+ },
+ "Enter",
+ {
+ "h": 2
+ },
+ "<i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i>"
+ ],
+ [
+ {
+ "x": -3
+ },
+ "}"
+ ]
+]
\ No newline at end of file
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define FN1 1 // media layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BSpace |
+ * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | Fwd | | Back | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * |Caps/Ctl| A | S | D | F | G |------| |------| H | J | K | L | ; | Enter |
+ * |--------+------+------+------+------+------| PgUp | | PgDn |------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | ' |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Ctrl | Esc | LGui | Alt | Alt | | Left | Up | Dn | Right| Fn |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Copy | ( | | ) | Paste|
+ * ,------|------+------| |------+------+------.
+ * | | | [ | | ] | | |
+ * |Space | Del |------| |------| Enter|BSpace|
+ * | | | { | | } | | |
+ * `--------------------' `--------------------'
+ */
+// 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_WBAK,
+ CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP,
+ KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, KC_LALT,
+ LCTL(KC_C), KC_LCBR,
+ KC_LPRN,
+ KC_SPC, KC_DEL, KC_LBRC,
+ // right hand
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_WFWD, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ KC_UP, KC_LEFT, KC_RIGHT,KC_DOWN, TG(FN1),
+ KC_RCBR, LCTL(KC_V),
+ KC_RPRN,
+ KC_RBRC, KC_ENT, KC_BSPC
+ ),
+/* Keymap 1: Fn Keys, media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | BSpace |
+ * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |Teensy| | | Lclk | Rclk | | |VolUp |VolDn | Mute | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------+------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// FN1 Layer
+ [FN1] = KEYMAP(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ RESET, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+# Beginner's keymap for Ergodox-EZ
+Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get comfortable with the Ergodox-EZ, you may fork this keymap and customize it for your own needs or find a suitable one from the community contributed keymaps.
+
+![Beginner's Keymap](keyboard-layout.png)
+
+#### Pros
+* Easier to switch between regular keyboards and Ergodox-EZ.
+* Easy on beginners. It has everything you need for your day to day usage.
+
+#### Cons
+* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/jackhumbert/qmk_firmware/blob/master/keyboard/ergodox_ez/keymaps/default/readme.md)
+* While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys.
+
+#### Notes
+* Ideally number key [6] should have started from the right-hand side of the keyboard. Doing so breaks the familiar QWERTY layout.
+* Quote key ['] should have been placed between [:] and [Enter]. Due to lack of key space, it is placed below [Enter].
+* Double [Alt] keys are placed adjacent to each other for convenience.
+* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users.
+* Additional bracket keys are placed in the center of the keyboard for programmer's convenience.
+
+
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define UNIC 3 // unicode entry layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | 1! | 2@ | 3# | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | -_ | += | BkSp |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | |\ |
+ * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
+ * | Win | A | S | D | F | G |------| |------| H | J | K | L | :; | '" |
+ * |--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
+ * | LShift |Z/Alt | X | C | V | B | | | | N | M | , | . | Alt | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |LCtrl | COPY | PASTE| Left | Right| | Down | Up |Hyper | `~ | RCtrl |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * Hyper = Ctrl+Super+Alt+Shift | ~L3 | F5 | | F2 | ~L2 |
+ * ,------|------|------| |------+------+------.
+ * | | | PgUp | | Ins | | |
+ * | Enter| BkSp |------| |------| ~L1 |Space |
+ * | | | PgDn | | Del | | |
+ * `--------------------' `--------------------'
+ */
+// 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,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
+ KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_HOME,
+ KC_LCTRL, LCTL(KC_C), LCTL(KC_V), KC_LEFT,KC_RGHT,
+ KC_FN3, KC_F5,
+ KC_PGUP,
+ KC_ENT,KC_BSPC,KC_PGDN,
+ // right hand
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
+ KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+ KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV, KC_RCTRL,
+ KC_F2, KC_FN2,
+ KC_INS,
+ KC_DELT,KC_FN1, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |PrintScr|
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | £ | | | | | | . | 0 | = |Alt+F4|
+ * `----------------------------------' `----------------------------------'
+ * ↑ ,-------------. ,-------------.
+ * THERE! | | | | | |
+ * ,------|------|------| |------+------+------.
+ * CAD = Ctrl + Alt + Delete | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | CAD | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,M(3),KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, LALT(KC_F4),
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ LCTL(LALT(KC_DEL)), KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | TEENSY | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | Prev | Next | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Lclk | Rclk | |VolDn |VolUp | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | |Brwser|
+ * | | |------| |------| |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+/* Keymap 3: Unicode Entry
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Alt | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | + | + | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Alt | | | E | | | | | | | 7 | 8 | 9 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Alt | A | | D | F | |------| |------| | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Alt | | | C | | B | | | | | 1 | 2 | 3 | + | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Alt | Alt | Alt | | | | 0 | 0 | 0 | + | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * WINDOWS ONLY SETUP!! | ~L3 | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | Alt | Alt |------| |------| Alt | Alt |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[UNIC] = KEYMAP( // layer 3 : Unicode Entry
+ // left hand
+ KC_LALT, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6,
+ KC_LALT, KC_TRNS, KC_TRNS, KC_E, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LALT, KC_A, KC_TRNS, KC_D, KC_F, KC_TRNS,
+ KC_LALT, KC_TRNS, KC_TRNS, KC_C, KC_TRNS, KC_B, KC_TRNS,
+ KC_LALT, KC_LALT, KC_LALT, KC_TRNS,KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_LALT,KC_LALT, KC_TRNS,
+ // right hand
+ KC_P7, KC_P8, KC_P9, KC_P0, KC_PPLS,KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_TRNS,
+ KC_P0, KC_P0, KC_P0, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_LALT, KC_LALT
+ ),
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols)
+ [2] = ACTION_LAYER_TAP_TOGGLE(MDIA), // FN2 - Momentary Layer 2 (Media)
+ [3] = ACTION_LAYER_TAP_TOGGLE(UNIC) // FN3 - Momentary Layer 3 (Unicode entry)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ case 3: // this would trigger when you hit a key mapped as M(3)
+ if (record->event.pressed) {
+ return MACRO( I(255), D(LALT), T(P1), T(P5), T(P6), 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) {
+
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ case 3:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+:100000000C94C5020C940C030C940C030C940C037C\r
+:100010000C940C030C940C030C940C030C940C0324\r
+:100020000C940C030C940C030C94380C0C940A0DD7\r
+:100030000C940C030C940C030C940C030C940C0304\r
+:100040000C940C030C94AC210C940C030C940C0336\r
+:100050000C940C030C94381B0C940C030C940C03A0\r
+:100060000C940C030C940C030C940C030C940C03D4\r
+:100070000C940C030C940C030C940C030C940C03C4\r
+:100080000C940C030C940C030C940C030C940C03B4\r
+:100090000C940C030C940C030C940C030C940C03A4\r
+:1000A0000C940C030C940C030C940C03770D990D19\r
+:1000B0008C0E990D8C0EDE0D010E8C0E560E690EF7\r
+:1000C0005D115D118C118C11CF11091216141614CB\r
+:1000D0002212161417131713EA1316141614011408\r
+:1000E00075FF01E201590259015D025D015E025E88\r
+:1000F00002E2000000F0A1F0A2F0A329002B00E32F\r
+:1001000000E100E00000001E00140004001D740661\r
+:10011000014E001F001A0016001B0019012A0020C2\r
+:100120000008000700060050002800210015000903\r
+:100130000019004F004B00220017000A00050000C4\r
+:1001400000C30023002F0000004A0000003E0024EE\r
+:1001500000300000004D0000003B0025001C000B9B\r
+:100160000011000000C200260018000D0010005110\r
+:1001700000490027000C000E00360052002C002D14\r
+:100180000012000F003700007FC1002E0013003363\r
+:1001900000380035004C002A0031003400E500E44E\r
+:1001A0000000000100010001000100010000003A10\r
+:1001B000001E0220022202033001003B001F022128\r
+:1001C000022302010001003C002F0226022F000141\r
+:1001D0000001003D00300227023000010001003E16\r
+:1001E00000310235003502000001003F000100002F\r
+:1001F00000010000000100400001000000010000BB\r
+:1002000000010041005200510024020000010042A0\r
+:1002100000240021001E00010001004300250022EF\r
+:10022000001F0037000100440026002300200027A3\r
+:10023000000100450025022E0231002E004C05462B\r
+:10024000000100010001003D040000005001000118\r
+:100250000001000100000001000100010001000197\r
+:1002600000010001000100F2000100010001000195\r
+:1002700000F000F1000100F400010001000100F3B2\r
+:10028000000100F500010001000100010001000073\r
+:100290000001000100010000000100000001000158\r
+:1002A0000001000000010000000100010001000148\r
+:1002B000000100000001000100010001000100AA8E\r
+:1002C000000100010001000100AC00A900B600011E\r
+:1002D0000001000100AB00A80001000100010001C5\r
+:1002E0000001000100010001000100AE0001000159\r
+:1002F000000000E200E200E200E200E2000000593B\r
+:1003000000010004000100E20001005A00010001A8\r
+:10031000000100E200E2005B0008000700060001A7\r
+:1003200000E2005C00010009000100010001005D25\r
+:1003300000010001000500000001005E0001000056\r
+:10034000000100000001005F00010000000100004A\r
+:1003500000010060000100010001000000010061D7\r
+:10036000005F005C00590062000100620060005DF7\r
+:10037000005A006200E200570061005E005B00620C\r
+:1003800000E20057005700570057005700010001D6\r
+:100390000001000100010001000000160345007289\r
+:1003A0000067006F0044006F007800200045005A8D\r
+:1003B00000000016034500720067006F0044006FE4\r
+:1003C000007800200045005A0000000403090409D9\r
+:1003D000026D00040100A0FA0904000001030101FC\r
+:1003E00000092111010001223F00070581030800D7\r
+:1003F0000A090401000103010200092111010001A1\r
+:10040000224D000705820308000A090402000103C7\r
+:1004100000000009211101000122360007058303B5\r
+:1004200008000A090403000103000000092111016A\r
+:100430000001223900070584031000011201100198\r
+:1004400000000008EDFE0713010001020001050194\r
+:100450000906A101050719E029E7150025019508FE\r
+:10046000750181020508190129059505750191029B\r
+:1004700095017503910105071900297715002501DC\r
+:10048000957875018102C005010980A101850216D8\r
+:10049000010026B7001A01002AB7007510950181E6\r
+:1004A00000C0050C0901A1018503160100269C026C\r
+:1004B0001A01002A9C02751095018100C0050109EE\r
+:1004C00002A1010901A1000509190129051500254D\r
+:1004D00001950575018102950175038101050109E9\r
+:1004E0003009311581257F95027508810609381577\r
+:1004F00081257F950175088106050C0A3802158152\r
+:10050000257F950175088106C0C005010906A10176\r
+:10051000050719E029E715002501950875018102F5\r
+:1005200095017508810105081901290595057501D1\r
+:1005300091029501750391010507190029FF150026\r
+:1005400025FF950675088100C0000000000000002E\r
+:1005500000000000010204060A0F17202C3A4A5D31\r
+:1005600071879DB3C7DAE9F5FCFFFCF5E9DAC7B39B\r
+:100570009D87715D4A3A2C20170F0A06040201007C\r
+:100580000000000000000000000011241FBECFEF9B\r
+:10059000DAE0DEBFCDBF04B603FE27C08091EE01D6\r
+:1005A0009091EF01A091F001B091F1018730904B53\r
+:1005B000A740B04BD1F41092EE011092EF011092CF\r
+:1005C000F0011092F10114BE84B7877F84BF0FB68B\r
+:1005D000F894A895809160008861809360001092E3\r
+:1005E00060000FBEE0E0FFE3099511E0A0E0B1E09C\r
+:1005F000EAEFF6E402C005900D92A433B107D9F7F3\r
+:1006000021E0A4E3B1E001C01D92AE3EB207E1F7E4\r
+:100610000E947F090C947B230C940000CF93DF93FE\r
+:10062000EC01662319F0633059F00DC08A818823EC\r
+:1006300021F085EE0E94EE0F03C085EE0E94B610F9\r
+:100640008A81811103C080E090E002C080EE90E0DA\r
+:10065000DF91CF91089508956091B1017091B20139\r
+:100660008091B3019091B4010E94621A56985E98ED\r
+:1006700025982D9826982E9827982F98823039F013\r
+:10068000833041F0813041F4259A2D9A0895269ABD\r
+:100690002E9A0895279A2F9A08950C942C03569811\r
+:1006A0005E9825982D9826982E9827982F988FEF4A\r
+:1006B00090E0909389008093880090938B008093C2\r
+:1006C0008A0090938D0080938C00259A2D9A2FEFAD\r
+:1006D00080E792E0215080409040E1F700C00000A8\r
+:1006E000269A2E9A2FEF80E792E02150804090408A\r
+:1006F000E1F700C00000279A2F9A2FEF80E792E0E1\r
+:10070000215080409040E1F700C0000025982D98CE\r
+:100710002FEF80E792E0215080409040E1F700C049\r
+:10072000000026982E982FEF80E792E0215080401D\r
+:100730009040E1F700C0000027982F9856985E98E7\r
+:1007400025982D9826982E9827982F98089589EA0D\r
+:100750008093800089E08093810024982C983F98B2\r
+:100760008AB18F748AB96E98479A8BB1806B8BB9B6\r
+:10077000769A0E944F030C942B0380E28093000131\r
+:100780008091340181110EC00E940C0481E080939D\r
+:1007900034012FEF83ED90E3215080409040E1F74A\r
+:1007A00000C0000080E40E941204809300018111C7\r
+:1007B0002EC00E943C0480930001811128C00E9439\r
+:1007C0003C0480930001811122C08FE30E943C040D\r
+:1007D0008093000181111BC00E94340480E40E94B8\r
+:1007E000120480930001811112C08CE00E943C042D\r
+:1007F0008093000181110BC00E943C048093000192\r
+:10080000811105C08FE30E943C04809300010E9487\r
+:1008100034048091000108951092B9008AE0809319\r
+:10082000B800089594EA9093BC009091BC0097FFA3\r
+:10083000FCCF9091B900987F983021F0903111F061\r
+:1008400081E008958093BB0084E88093BC00809190\r
+:10085000BC0087FFFCCF8091B900887F883111F000\r
+:10086000803471F780E0089584E98093BC00809122\r
+:10087000BC0084FDFCCF08958093BB0084E8809386\r
+:10088000BC008091BC0087FFFCCF9091B900987F9D\r
+:1008900081E0983209F480E0089584E88093BC00F8\r
+:1008A0008091BC0087FFFCCF8091BB0008958091B0\r
+:1008B0000001811115C080E40E94120480930001A0\r
+:1008C00081110CC082E10E943C04809300018111DF\r
+:1008D00005C08FEF0E943C04809300010E94340405\r
+:1008E00084B1807F84B985B1807F85B98AB1837FE7\r
+:1008F0008AB98BB1837F8BB93E98469808950E9440\r
+:10090000BD03809300010E94570480B38C7080BBAC\r
+:1009100081B3836F81BBE4E4F1E0A6E3B1E011921F\r
+:100920001D9281E0E235F807D1F70C94A7039F925E\r
+:10093000AF92BF92CF92DF92EF92FF920F931F93ED\r
+:10094000CF93DF9380910001882379F08091350166\r
+:100950008F5F80933501811108C00E94BD03809391\r
+:100960000001811102C00E944F0386E3E82E81E05E\r
+:10097000F82E8701C0E0D0E0BB24B39492E0A92E0A\r
+:10098000CC24C394D12CC730D10500F5809100014F\r
+:10099000811164C080E40E941204809300018111DF\r
+:1009A00012C082E10E943C048093000181110BC0BF\r
+:1009B000C6010C2E01C0880F0A94EAF780950E94A8\r
+:1009C0003C04809300010E94340448C0CA30A1F066\r
+:1009D00028F4C83059F0C93061F005C0CC3089F036\r
+:1009E00070F0CD3089F0209A289810C0219A29986B\r
+:1009F0000DC0229A2A980AC0239A2B9807C0529AAF\r
+:100A000001C0539A5B9802C03E9A4698E0EAEA9584\r
+:100A1000F1F78FB181708B25799902C032E001C066\r
+:100A200030E0832B7C9902C034E001C030E0832B9E\r
+:100A30007D9902C028E001C020E0822B7E9902C08F\r
+:100A400090E101C090E0892B9FB19095991F992763\r
+:100A5000991F9295990F907E892B0FC0809100016C\r
+:100A600081114AC080E40E9412048093000188230F\r
+:100A700081F1912C0E943404892DD8019C91981702\r
+:100A800019F08C93A09201010E94570421960F5FE8\r
+:100A90001F4FCE30D10509F076CF80910101882318\r
+:100AA00069F1815080930101882339F0EFE9FFE07B\r
+:100AB0003197F1F700C0000021C0E4E4F1E0D70174\r
+:100AC0008D917D018193B4E4EB16B1E0FB06B9F79B\r
+:100AD00015C083E10E943C04809300018111C9CFBD\r
+:100AE00081E40E941204809300018111C2CF0E9410\r
+:100AF0004D04982E9094BECF80E0BFCF0E944D034E\r
+:100B000081E0DF91CF911F910F91FF90EF90DF90E7\r
+:100B1000CF90BF90AF909F900895E82FF0E0EC5BEE\r
+:100B2000FE4F8081089508958B3B910580F4883AAB\r
+:100B3000910548F5853A9105D8F48430910508F07F\r
+:100B4000B2C0019709F06EC081E090E00895803E48\r
+:100B5000910508F467C0883E910508F4A4C09C0183\r
+:100B6000205F31092031310508F05CC0906508959F\r
+:100B7000853A910509F459C0863A910509F058C0A3\r
+:100B800082E890E40895883A910509F454C0893ABE\r
+:100B9000910509F453C08A3A910509F452C08B3A81\r
+:100BA000910509F451C08C3A910509F450C08D3A71\r
+:100BB000910509F44FC0803B910509F44EC08E3A6F\r
+:100BC000910509F44DC08F3A910509F44CC0813B61\r
+:100BD000910509F44BC0823B910509F44AC0833B5F\r
+:100BE000910509F449C0843B910509F448C0853B4F\r
+:100BF000910509F447C0863B910509F446C0873B3F\r
+:100C0000910509F445C0883B910509F444C0893B2E\r
+:100C1000910509F443C08A3B910509F442C080E084\r
+:100C200094E4089580E090E0089581E890E40895C8\r
+:100C300083E890E4089582EE94E4089589EE94E4C4\r
+:100C400008958AEE94E4089585EB94E4089586EB84\r
+:100C500094E4089587EB94E408958CEC94E408956B\r
+:100C60008DEC94E4089583E895E408958AE895E48A\r
+:100C7000089582E995E4089584E995E4089581E270\r
+:100C800096E4089583E296E4089584E296E4089554\r
+:100C900085E296E4089586E296E4089587E296E474\r
+:100CA00008958AE296E40895089524E5829FC0019C\r
+:100CB0001124FC0126E0729FE00DF11D1124E60FC6\r
+:100CC000F11DEE0FFF1FE550FF4F859194910895A0\r
+:100CD000880F991FFC01ED58F0408591949108957B\r
+:100CE000880F991FFC01ED50FF4F85919491089555\r
+:100CF00024E5829FC0011124FC0146E0749FE00DB1\r
+:100D0000F11D1124E60FF11DEE0FFF1FE550FF4FFF\r
+:100D1000859194919C013A9521154FE1340708F48F\r
+:100D200027C13F512115304120F49F700E94700669\r
+:100D300008959C0130532115304118F49927906C87\r
+:100D40000895811520E5920771F40E943A144FEF3F\r
+:100D500084E39CE0415080409040E1F700C00000F7\r
+:100D60000E945D1B05C1813020E5920731F480911E\r
+:100D7000CD0181608093CD01FBC09C0130552115D0\r
+:100D8000304108F05CC0292F33272F7033272130E2\r
+:100D90003105E9F4AC0164E0440F551F6A95E1F7B1\r
+:100DA00044275370BC016370772702C0220F331FA2\r
+:100DB0006A95E2F73C68242B352B73E0880F991F66\r
+:100DC0007A95E1F780769927822B932B089522302C\r
+:100DD000310529F4982F8827816F906A0895233070\r
+:100DE0003105A1F4AC0133E0440F551F3A95E1F70A\r
+:100DF000407E57708370992721E030E002C0220FB7\r
+:100E0000331F8A95E2F7C9019C6816C0243031056A\r
+:100E100031F5AC0123E0440F551F2A95E1F7407EE0\r
+:100E200057708370992721E030E002C0220F331FF2\r
+:100E30008A95E2F7C9019A68842B952B08959C0145\r
+:100E400030572115304118F49F70906208959C012D\r
+:100E500030582115304118F49F70906A0895803EF3\r
+:100E60009105E0F4803C910558F58133910509F432\r
+:100E70006FC048F48932910509F463C08A32910544\r
+:100E800009F46DC072C089339105E9F0823891058B\r
+:100E9000D1F08533910509F44DC067C0833E9105BB\r
+:100EA00081F138F4803E9105B9F0823E9105D9F088\r
+:100EB0005CC0863E910561F1873E9105A1F155C068\r
+:100EC0000E94680608952091DF0120FD02C021FFE5\r
+:100ED0004CC080EE90E049C08091DF0180FFF9CFE7\r
+:100EE00089E390E042C08091DF0182FF0EC08091D3\r
+:100EF000DF0184FF03C080E090E037C083EE90E024\r
+:100F000034C08091DF0182FFF2CF82EE90E02DC0ED\r
+:100F10008091DF0183FF0BC08091DF0184FDEBCF67\r
+:100F200087EE90E022C08091DF0183FFF5CF86EE4F\r
+:100F300090E01BC08091DF0185FF07C089E290E04F\r
+:100F400014C08091DF0185FFF9CF85E390E00DC0EB\r
+:100F50008091DF0186FF07C08AE290E006C08091A1\r
+:100F6000DF0186FFF9CF81E390E00E9494050895A8\r
+:100F7000089508950C94B907809162010895CF9364\r
+:100F8000DF9300D01F92CDB7DEB79C018091E501C1\r
+:100F9000843019F593E099833B832A839093E90089\r
+:100FA0008FEF9091E800815095FD06C095ED9A95E0\r
+:100FB000F1F700008111F5CF8091E80085FF0DC0A9\r
+:100FC00040E050E063E070E0CE0101960E942C0A00\r
+:100FD0008091E8008E778093E8000F900F900F903B\r
+:100FE000DF91CF910895CF93DF9300D01F92CDB7BB\r
+:100FF000DEB72091E501243021F522E029839B838F\r
+:101000008A8383E08093E9008FEF9091E80081501C\r
+:1010100095FD06C095ED9A95F1F700008111F5CF89\r
+:101020008091E80085FF0DC040E050E063E070E093\r
+:10103000CE0101960E942C0A8091E8008E77809361\r
+:10104000E8000F900F900F90DF91CF9108959C01D1\r
+:101050008091E5018430F9F482E08093E9009FEF0C\r
+:101060008091E800915085FD06C085ED8A95F1F7E5\r
+:1010700000009111F5CF8091E80085FF0CC040E0A1\r
+:1010800050E065E070E0C9010E942C0A8091E80000\r
+:101090008E778093E8000895CF93DF93EC018091E1\r
+:1010A000E501843009F046C090910C019923D9F0F4\r
+:1010B00090910D019923B9F08093E9008FEF909101\r
+:1010C000E800815095FD06C095E19A95F1F7000082\r
+:1010D0008111F5CF8091E80085FF2CC040E050E001\r
+:1010E00060E170E017C081E08093E9008FEF90919C\r
+:1010F000E800815095FD06C095ED9A95F1F7000046\r
+:101100008111F5CF8091E80085FF14C040E050E0E8\r
+:1011100068E070E0CE010E942C0A8091E8008E7792\r
+:101120008093E80080E1FE01A2E5B1E001900D921C\r
+:101130008A95E1F7DF91CF9108958091E4018111C3\r
+:1011400009C00E94BD0B0E941A0C8091E2008460CD\r
+:101150008093E20008951092E401089508950C949C\r
+:1011600099210E94F31A0E949F210E94C50E0C949F\r
+:10117000BA0742E061EC81E00E94360B42E061EC8C\r
+:1011800082E00E94360B42E061EC83E00E94360B65\r
+:1011900042E161EC84E00C94360B8091E7018330EE\r
+:1011A00009F455C030F4813071F0823009F48EC0FA\r
+:1011B00008958A3009F47AC08B3009F460C0893010\r
+:1011C00009F09CC020C08091E601813A09F096C0E8\r
+:1011D0008091E800877F8093E8008091EA019091F8\r
+:1011E000EB01892B21F460E182E591E003C060E02E\r
+:1011F00080E090E070E00E94770A8091E8008B77B1\r
+:101200008093E80008958091E601813209F076C06C\r
+:101210008091EA019091EB01009719F0039709F092\r
+:101220006DC08091E800877F8093E8008091E8009E\r
+:1012300082FD05C08091E5018111F8CF5FC08091EA\r
+:10124000F100809362018091E8008B7753C0809118\r
+:10125000E601813A09F052C08091EA019091EB01D8\r
+:10126000892B09F04BC08091E800877F8093E800CC\r
+:101270008091E80080FFFCCF80910C0136C0809106\r
+:10128000E6018132D9F58091EA019091EB01892B39\r
+:10129000A9F58091E800877F8093E8000E946B0B9E\r
+:1012A0008091E80180930C010C943A148091E6013E\r
+:1012B000813221F58091E800877F8093E8000E94C9\r
+:1012C0006B0B8091E9018093630108958091E601A1\r
+:1012D000813AA1F48091E800877F8093E8008091B3\r
+:1012E000E80080FFFCCF809163018093F100809142\r
+:1012F000E8008E778093E8000C946B0B089584B718\r
+:10130000877F84BF0FB6F894A895809160008861AC\r
+:1013100080936000109260000FBE90E080E80FB6EE\r
+:10132000F89480936100909361000FBE0E94140FA7\r
+:101330000E94BD0B0E941A0C8091E2008460809391\r
+:10134000E20078940E94A50E0E94160F82E091E0C0\r
+:101350000E94C00E0E9487218091E501853069F4CA\r
+:101360000E94B21A8091E3018823B1F30E94DF1A30\r
+:10137000882391F30E94160AEFCF0E941C0FECCF36\r
+:10138000292F332723303105C9F060F4213031058E\r
+:1013900081F02230310509F041C08DE690E02FEC5C\r
+:1013A00033E040C021323105E1F02232310531F124\r
+:1013B00035C082E190E02CE334E034C099278130DD\r
+:1013C000910549F028F0029749F5EBE9F3E005C0F3\r
+:1013D000EBECF3E002C0E3EBF3E0849190E09F01DB\r
+:1013E00021C06430D8F4E62FF0E0EE0FFF1FEE5D71\r
+:1013F000FE4F2081318189E090E014C0643070F4A8\r
+:1014000070E0FB01EE0FFF1FE65EFE4F2081318191\r
+:10141000FB01EA5EFE4F808190E004C080E090E036\r
+:1014200020E030E0FA0131832083089580E189BD16\r
+:1014300082E189BD09B400FEFDCF8091D8008F7D87\r
+:101440008093D8008091E00082608093E0008091DA\r
+:10145000E00081FDFCCF0895CF92DF92EF92FF92E2\r
+:101460000F931F93CF93DF93EC018B016A010E94CE\r
+:101470008A0B811133C0C114D10439F0F601808187\r
+:101480009181081B190BC80FD91FE12CF12C0115F4\r
+:10149000110519F18091E80085FD16C08091E800E2\r
+:1014A0008E778093E800C114D10449F0F601808161\r
+:1014B0009181E80EF91EF182E08285E00FC00E9462\r
+:1014C0008A0B882321F30AC089918093F10001508F\r
+:1014D0001109FFEFEF1AFF0ADACF80E0DF91CF9119\r
+:1014E0001F910F91FF90EF90DF90CF900895209182\r
+:1014F000EC013091ED012617370748F061157105B1\r
+:1015000039F42091E8002E772093E80001C0B9015A\r
+:10151000FC0120E06115710579F18091E5018823D6\r
+:10152000F1F18530F1F18091E80083FD3CC08091BC\r
+:10153000E80082FD2EC08091E80080FFEBCF209173\r
+:10154000F3008091F20090E0922B6115710551F04B\r
+:101550008830910538F421912093F1006150710990\r
+:101560000196F3CF21E0089709F020E08091E80090\r
+:101570008E778093E800CECF2111CFCF0AC0809123\r
+:10158000E501882361F0853061F08091E80083FDFA\r
+:101590000AC08091E80082FFF2CF80E0089582E0E7\r
+:1015A000089583E0089581E008952091EC01309141\r
+:1015B000ED012617370748F06115710539F42091C0\r
+:1015C000E8002E772093E80001C0B901FC0120E07B\r
+:1015D0006115710591F18091E501882309F440C0FE\r
+:1015E000853009F43FC08091E80083FD3DC08091C3\r
+:1015F000E80082FD2FC08091E80080FFE9CF2091B4\r
+:10160000F3008091F20090E0922B6115710559F082\r
+:101610008830910540F424912093F1003196615077\r
+:1016200071090196F2CF21E0089709F020E080913E\r
+:10163000E8008E778093E800CBCF2111CCCF0AC091\r
+:101640008091E501882361F0853061F08091E800A8\r
+:1016500083FD0AC08091E80082FFF2CF80E0089508\r
+:1016600082E0089583E0089581E00895982F9730EF\r
+:1016700068F59093E900981739F07091EC0020918B\r
+:10168000ED005091F00003C0242F762F50E021FD93\r
+:1016900002C09F5FECCF3091EB003E7F3093EB00B8\r
+:1016A0003091ED003D7F3093ED003091EB003160E3\r
+:1016B0003093EB007093EC002093ED005093F0001A\r
+:1016C0002091EE0027FDE5CF80E008958F70809394\r
+:1016D000E90081E008958091E60187FF11C08091C3\r
+:1016E000E80082FD05C08091E5018111F8CF11C0AD\r
+:1016F0008091E8008B770BC08091E501882349F049\r
+:101700008091E80080FFF8CF8091E8008E77809389\r
+:10171000E80008952091E4003091E50095E64091BD\r
+:10172000EC00842F817040FF23C08091E80080FD91\r
+:101730001DC08091E501882399F0853099F0809152\r
+:10174000EB0085FD11C04091E4005091E5002417A5\r
+:10175000350729F3915011F09A01E1CF84E0089503\r
+:1017600082E0089583E0089581E0089580E008957F\r
+:101770004091E80042FFDDCF08950E942B0C0E94AB\r
+:10178000330CE0EEF0E0808181608083E8EDF0E0F2\r
+:1017900080818F77808319BCA7EDB0E08C918E7F1C\r
+:1017A0008C9380818F7E80831092E40108950F9343\r
+:1017B0001F93CF93DF930E942B0C0E94330CC8ED34\r
+:1017C000D0E088818F77888388818068888388814A\r
+:1017D0008F7D888319BC1092E5011092E10110926F\r
+:1017E000E3011092E20100EE10E0F80180818B7FAE\r
+:1017F000808388818160888342E060E080E00E948D\r
+:10180000360BE1EEF0E080818E7F8083E2EEF0E047\r
+:10181000808181608083808188608083F8018081FD\r
+:101820008E7F8083888180618883DF91CF911F9133\r
+:101830000F910895E8EDF0E080818F7E8083E7EDE1\r
+:10184000F0E080818160808384E082BF81E08093CA\r
+:10185000E4010C94D70BE8EDF0E080818E7F80836B\r
+:101860001092E20008951092DA001092E1000895BB\r
+:101870001F920F920FB60F9211242F933F934F9305\r
+:101880005F936F937F938F939F93AF93BF93EF93E8\r
+:10189000FF938091E10082FF0BC08091E20082FF04\r
+:1018A00007C08091E1008B7F8093E1000E94A40E2D\r
+:1018B0008091DA0080FF1FC08091D80080FF1BC09C\r
+:1018C0008091DA008E7F8093DA008091D90080FFCA\r
+:1018D0000DC080E189BD82E189BD09B400FEFDCF64\r
+:1018E00081E08093E5010E949D0805C019BC10921B\r
+:1018F000E5010E94AB088091E10080FF19C0809152\r
+:10190000E20080FF15C08091E2008E7F8093E200AC\r
+:101910008091E20080618093E2008091D800806233\r
+:101920008093D80019BC85E08093E5010E94AF0840\r
+:101930008091E10084FF30C08091E20084FF2CC0E0\r
+:1019400080E189BD82E189BD09B400FEFDCF8091AF\r
+:10195000D8008F7D8093D8008091E1008F7E8093A6\r
+:10196000E1008091E2008F7E8093E2008091E200AE\r
+:1019700081608093E2008091E101882311F084E08E\r
+:1019800007C08091E30087FD02C081E001C083E0D1\r
+:101990008093E5010E94B1088091E10083FF29C096\r
+:1019A0008091E20083FF25C08091E100877F8093D2\r
+:1019B000E10082E08093E5011092E1018091E10075\r
+:1019C0008E7F8093E1008091E2008E7F8093E20021\r
+:1019D0008091E20080618093E20042E060E080E07C\r
+:1019E0000E94360B8091F00088608093F0000E9486\r
+:1019F000AE08FF91EF91BF91AF919F918F917F9131\r
+:101A00006F915F914F913F912F910F900FBE0F906B\r
+:101A10001F9018951F920F920FB60F9211242F93BB\r
+:101A20003F934F935F936F937F938F939F93AF9366\r
+:101A3000BF93CF93DF93EF93FF93C091E900CF70F3\r
+:101A40008091EC00D82FD17080FDD0E81092E90091\r
+:101A50008091F000877F8093F00078940E944E0D73\r
+:101A60001092E9008091F00088608093F000CD2B07\r
+:101A7000CF70C093E900FF91EF91DF91CF91BF91BB\r
+:101A8000AF919F918F917F916F915F914F913F9116\r
+:101A90002F910F900FBE0F901F9018951F93CF930B\r
+:101AA000DF93CDB7DEB7AA970FB6F894DEBF0FBEAF\r
+:101AB000CDBFE6EEF1E08091F100819321E0EE3EB2\r
+:101AC000F207C9F70E94CD088091E80083FF24C186\r
+:101AD0008091E6019091E701492F50E04A3051058D\r
+:101AE00008F01AC1FA01EA5AFF4F0C9430238038EB\r
+:101AF00081F0823809F010C18091EA018F708093E3\r
+:101B0000E9008091EB0085FB882780F91092E900BD\r
+:101B100006C08091E2019091E30191118260909161\r
+:101B2000E800977F9093E8008093F1001092F10015\r
+:101B3000C8C0282F2D7F09F0EFC0882319F082300C\r
+:101B400061F0EAC08091E801813009F0E5C093308E\r
+:101B500009F080E08093E3012BC08091E8018111BE\r
+:101B600027C08091EA018F7009F4D6C08093E90004\r
+:101B70002091EB0020FF1CC0933021F48091EB00FA\r
+:101B8000806214C09091EB0090619093EB0021E093\r
+:101B900030E0A90102C0440F551F8A95E2F7409337\r
+:101BA000EA001092EA008091EB0088608093EB00DD\r
+:101BB0001092E9008091E800877F86C08111ACC057\r
+:101BC0001091E8011F778091E3008078812B80934A\r
+:101BD000E3008091E800877F8093E8000E946B0B10\r
+:101BE0008091E80080FFFCCF8091E30080688093C3\r
+:101BF000E300111102C082E001C083E08093E5019F\r
+:101C00008BC08058823008F087C08091E8019091A5\r
+:101C1000E9018C3D53E0950779F583E08A838AE2F8\r
+:101C200089834FB7F894DE01139620E03EE051E23D\r
+:101C3000E32FF0E050935700E49120FF03C0E295BA\r
+:101C4000EF703F5FEF708E2F90E0EA3010F0C79694\r
+:101C500001C0C0968D939D932F5F243149F74FBFEC\r
+:101C60008091E800877F8093E8006AE270E0CE010F\r
+:101C700001960E94770A14C0AE014F5F5F4F6091DA\r
+:101C8000EA010E94C009BC01892B09F445C090916A\r
+:101C9000E800977F9093E80089819A810E94D50A95\r
+:101CA0008091E8008B778093E80036C08038A1F5FA\r
+:101CB0008091E800877F8093E8008091E101809324\r
+:101CC000F1008091E8008E778093E8000E946B0B12\r
+:101CD00023C0811121C08091E8019091E9019927E9\r
+:101CE0000297D4F48091E800877F8093E800809188\r
+:101CF000E8018093E1010E946B0B8091E101811169\r
+:101D000006C08091E30087FD02C081E001C084E04D\r
+:101D10008093E5010E94B9088091E80083FF0AC022\r
+:101D20008091E800877F8093E8008091EB008062DB\r
+:101D30008093EB00AA960FB6F894DEBF0FBECDBF1E\r
+:101D4000DF91CF911F9108950895CF938091E50180\r
+:101D50008823A1F0C091E900CF709091EC00892F09\r
+:101D6000817090FD80E8C82B1092E9008091E80016\r
+:101D700083FD0E944E0DCF70C093E900CF9108956E\r
+:101D800090936901809368010895E0916801F09152\r
+:101D90006901309721F00190F081E02D099480E0F5\r
+:101DA0000895E0916801F0916901309721F0028077\r
+:101DB000F381E02D09940895E0916801F0916901A3\r
+:101DC000309721F00480F581E02D09940895209149\r
+:101DD0006601309167012817390771F09093670108\r
+:101DE00080936601E0916801F0916901309721F0DC\r
+:101DF0000680F781E02D09940895209164013091C7\r
+:101E000065012817390771F090936501809364018B\r
+:101E1000E0916801F0916901309721F00084F1852B\r
+:101E2000E02D0994089508950C94130F0E94F91A57\r
+:101E30000E947F040C94BF1BCF92DF92EF92FF921F\r
+:101E40000F931F93CF93DF93CDB7DEB72B970FB6CA\r
+:101E5000F894DEBF0FBECDBF0E9497048BE6C82E5C\r
+:101E600081E0D82E00E010E0E02E802F0E948D054A\r
+:101E7000F60141916F01F82EF426B1F40F5F1F4F68\r
+:101E80000E30110589F78FEF89838A831B820E94A8\r
+:101E9000021B8160782F9D838C8349815A816B81DD\r
+:101EA0008D810E94BF0F40C09091CD0191FF04C071\r
+:101EB0008B870E9493058B8520E030E04F2D50E00A\r
+:101EC000922FBA01022E02C0759567950A94E2F727\r
+:101ED00060FF24C02E83EF8221E030E0690102C060\r
+:101EE000CC0CDD1C9A95E2F790E08C219D21892B8A\r
+:101EF00009F420E028870E94021B8160782F9A87CE\r
+:101F000089874E815F8168858A850E94BF0FF801AD\r
+:101F1000E559FE4F8081C826C08206C02F5F3F4F23\r
+:101F20002630310569F6AACF0E94A61E0E94C50E72\r
+:101F300090916A018917A1F00E94C50E80936A01F1\r
+:101F40002B960FB6F894DEBF0FBECDBFDF91CF91B9\r
+:101F50001F910F91FF90EF90DF90CF900C94BA07F4\r
+:101F60002B960FB6F894DEBF0FBECDBFDF91CF9199\r
+:101F70001F910F91FF90EF90DF90CF900895CF9336\r
+:101F8000DF93CDB7DEB72B970FB6F894DEBF0FBE49\r
+:101F9000CDBF4F83588769877A878B87DE0111967B\r
+:101FA00086E0FD0111928A95E9F785E0FE013796FA\r
+:101FB00001900D928A95E1F749815A816B817C816C\r
+:101FC0008D819E810E94CE162B960FB6F894DEBFAF\r
+:101FD0000FBECDBFDF91CF9108950895CF93C82F45\r
+:101FE000882309F4C1C0823859F40E94C50E81FDCE\r
+:101FF000BBC089E30E946B190E94331A89E30CC0AD\r
+:10200000833879F40E94C50E80FDAEC083E50E943E\r
+:102010006B190E94331A83E50E94AA19CF910C9480\r
+:10202000331A843859F40E94C50E82FD9DC087E49E\r
+:102030000E946B190E94331A87E4EECF8CEF8C0F4D\r
+:10204000813A48F48C2F0E94EC2081118DC08C2F96\r
+:102050000E946B19E3CF80E28C0F883048F4C77080\r
+:1020600081E001C0880FCA95EAF70E94EC19D6CF2B\r
+:102070008BE58C0F833078F4C53A29F0C63A31F0FD\r
+:1020800083E890E005C081E890E002C082E890E03B\r
+:10209000CF910C94E70E88E58C0F833108F064C073\r
+:1020A000C83A39F1C93A41F1CA3A49F1CB3A51F14A\r
+:1020B000CC3A59F1CD3A61F1C03B69F1CE3A71F1B8\r
+:1020C000CF3A79F1C13B81F1C23B89F1C33B91F138\r
+:1020D000C43B99F1C53BA1F1C63BA9F1C73BB1F1A6\r
+:1020E000C83BB9F1C93BC1F1CA3BC9F180E090E0FE\r
+:1020F00038C082EE90E035C089EE90E032C08AEEC2\r
+:1021000090E02FC085EB90E02CC086EB90E029C0DA\r
+:1021100087EB90E026C08CEC90E023C08DEC90E043\r
+:1021200020C083E891E01DC08AE891E01AC082E9EE\r
+:1021300091E017C084E991E014C081E292E011C0FF\r
+:1021400083E292E00EC084E292E00BC085E292E06E\r
+:1021500008C086E292E005C087E292E002C08AE20F\r
+:1021600092E0CF910C94FD0ECF910895882309F44D\r
+:102170004BC0823859F40E94C50E81FF45C089E3E7\r
+:102180000E946B190E94331A89E30CC0833871F4E2\r
+:102190000E94C50E80FF38C083E50E946B190E9423\r
+:1021A000331A83E50E94AA190C94331A843859F41F\r
+:1021B0000E94C50E82FF28C087E40E946B190E940E\r
+:1021C000331A87E4EFCF9CEF980F913A58F390E2DF\r
+:1021D000980F983050F4877091E001C0990F8A955C\r
+:1021E000EAF7892F0E94F219DFCF9BE5980F933011\r
+:1021F00020F480E090E00C94E70E885A833120F4BC\r
+:1022000080E090E00C94FD0E0895882321F00E9458\r
+:10221000EC190C94331A0895882321F00E94F219C6\r
+:102220000C94331A0895BF92CF92DF92EF92FF92EF\r
+:102230000F931F93CF93DF9300D000D000D0CDB782\r
+:10224000DEB77C0185E0F701DE01119601900D9269\r
+:102250008A95E1F7F70183819481892B09F4E6C21D\r
+:10226000D08011811F3F21F4FFEFDF1609F4DEC299\r
+:10227000F7010281258122952F70C7012E830E94CC\r
+:10228000ED0FD9821A8389819A810E942A19182F09\r
+:10229000B92E0E9429190E94F0172E81002319F0EF\r
+:1022A0000E94091A2E81EB2DE295EF704E2F50E01F\r
+:1022B000FA01E05AFF4F0C9430238B2D807F9B2D29\r
+:1022C0009F70F92E882319F0F29480EFF8220023F2\r
+:1022D00049F0FF2009F457C28F2D0E94FC190E947B\r
+:1022E000331A51C2812F0E94B610FF2009F49EC2FA\r
+:1022F0008F2D0E94021A26960FB6F894DEBF0FBEED\r
+:10230000CDBFDF91CF911F910F91FF90EF90DF90A4\r
+:10231000CF90BF900C94331A3B2D307F8B2D8F7054\r
+:10232000303211F08295807F112319F0113021F1A4\r
+:102330002CC00023B9F0222309F490C1213009F008\r
+:102340008DC126960FB6F894DEBF0FBECDBFDF91CC\r
+:10235000CF911F910F91FF90EF90DF90CF90BF90A2\r
+:102360000C941C1A222319F0213009F45FC28E83C9\r
+:102370000E941F1A8E8186C1002321F0223008F0AE\r
+:1023800055C26CC1211152C27DC1002321F022230C\r
+:1023900009F464C1F8C1222309F474C109C28B2D68\r
+:1023A00086958695837019F08130D1F03FC2002365\r
+:1023B00021F0812F9B2D937002C080E090E0269643\r
+:1023C0000FB6F894DEBF0FBECDBFDF91CF911F9146\r
+:1023D0000F91FF90EF90DF90CF90BF900C94E70E9D\r
+:1023E000002321F0812F9B2D937002C080E090E0AC\r
+:1023F00026960FB6F894DEBF0FBECDBFDF91CF910A\r
+:102400001F910F91FF90EF90DF90CF90BF900C94B1\r
+:10241000FD0E812F002319F00E94AE1D02C00E9404\r
+:10242000161E26960FB6F894DEBF0FBECDBFDF9105\r
+:10243000CF911F910F91FF90EF90DF90CF90BF90C1\r
+:102440000C949B1E8B2D837009F075C00111EEC199\r
+:10245000812F829586958770880F880F912F9F70A6\r
+:10246000C92ED12CE12CF12C082E04C0CC0CDD1C83\r
+:10247000EE1CFF1C0A94D2F714FF12C00FE010E00C\r
+:1024800020E030E004C0000F111F221F331F8A9587\r
+:10249000D2F7C901B801609570958095909503C0F9\r
+:1024A00060E070E0CB014B2D46954695437042307D\r
+:1024B000C1F060F56C297D298E299F29413051F1A9\r
+:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139\r
+:1024D0001F910F91FF90EF90DF90CF90BF900C94E1\r
+:1024E00017186C297D298E299F2926960FB6F894F6\r
+:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037\r
+:10250000EF90DF90CF90BF900C9433180E94171873\r
+:10251000C701B60126960FB6F894DEBF0FBECDBF39\r
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF\r
+:10253000BF900C94FB17002319F08B2D817001C004\r
+:102540008695882309F472C1812F829586958770BC\r
+:10255000880F880F912F9F70C92ED12CE12CF12C60\r
+:10256000082E04C0CC0CDD1CEE1CFF1C0A94D2F714\r
+:1025700014FF12C00FE010E020E030E004C0000FB4\r
+:10258000111F221F331F8A95D2F7C901B801609528\r
+:1025900070958095909503C060E070E0CB014B2D65\r
+:1025A0004695469543704230C1F060F56C297D290F\r
+:1025B0008E299F29413051F126960FB6F894DEBF3F\r
+:1025C0000FBECDBFDF91CF911F910F91FF90EF9084\r
+:1025D000DF90CF90BF900C94F1186C297D298E2943\r
+:1025E0009F2926960FB6F894DEBF0FBECDBFDF91B0\r
+:1025F000CF911F910F91FF90EF90DF90CF90BF9000\r
+:102600000C940D190E94F118C701B60126960FB659\r
+:10261000F894DEBF0FBECDBFDF91CF911F910F9118\r
+:10262000FF90EF90DF90CF90BF900C94D518103FA3\r
+:10263000D1F118F4103E50F4A1C0123F09F463C068\r
+:1026400008F44CC0133F09F473C098C01F708B2D61\r
+:102650008F710023A1F00E946E18812F26960FB66D\r
+:10266000F894DEBF0FBECDBFDF91CF911F910F91C8\r
+:10267000FF90EF90DF90CF90BF900C9405110E94D7\r
+:102680008F18812F26960FB6F894DEBF0FBECDBFF0\r
+:10269000DF91CF911F910F91FF90EF90DF90CF903E\r
+:1026A000BF900C940C110023A9F02111BFC08B2DF9\r
+:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7\r
+:1026C000CF911F910F91FF90EF90DF90CF90BF902F\r
+:1026D0000C94B418223008F0A9C0E9CF0023A9F067\r
+:1026E0008B2D8F7126960FB6F894DEBF0FBECDBF2F\r
+:1026F000DF91CF911F910F91FF90EF90DF90CF90DE\r
+:10270000BF900C946E18002359F38B2D8F71269671\r
+:102710000FB6F894DEBF0FBECDBFDF91CF911F91F2\r
+:102720000F91FF90EF90DF90CF90BF900C948F1897\r
+:10273000002399F08B2D8F7126960FB6F894DEBF8B\r
+:102740000FBECDBFDF91CF911F910F91FF90EF9002\r
+:10275000DF90CF90BF900C94591826960FB6F8943E\r
+:10276000DEBF0FBECDBFDF91CF911F910F91FF90C4\r
+:10277000EF90DF90CF90BF900C944F180023A9F0FA\r
+:10278000222309F4ADCF812F26960FB6F894DEBF31\r
+:102790000FBECDBFDF91CF911F910F91FF90EF90B2\r
+:1027A000DF90CF90BF900C94EE0F222309F4ADCFB1\r
+:1027B000812F26960FB6F894DEBF0FBECDBFDF91F6\r
+:1027C000CF911F910F91FF90EF90DF90CF90BF902E\r
+:1027D0000C94B6104B2D4F70612FC7010E940E0351\r
+:1027E00026960FB6F894DEBF0FBECDBFDF91CF9116\r
+:1027F0001F910F91FF90EF90DF90CF90BF900C94BE\r
+:1028000073174B2D4F70612FC70126960FB6F894A2\r
+:10281000DEBF0FBECDBFDF91CF911F910F91FF9013\r
+:10282000EF90DF90CF90BF900C94540626960FB691\r
+:10283000F894DEBF0FBECDBFDF91CF911F910F91F6\r
+:10284000FF90EF90DF90CF90BF9008950E94091AFB\r
+:102850000E94191A0E94DE190E94331A0E944B1F0F\r
+:102860000E949B1E80E090E00E94E70E80E090E0D6\r
+:102870000C94FD0E0E94F9190C9426140E942A193A\r
+:10288000292F22952F702C3030F42A3048F4225012\r
+:10289000223078F405C02C3041F02F3031F009C0DF\r
+:1028A000803E48F0803F29F406C093FB882780F9DA\r
+:1028B000089580E0089581E00895CF93DF9300D0DC\r
+:1028C00000D01F92CDB7DEB70F900F900F900F90F2\r
+:1028D0000F90DF91CF910895CF93DF9300D000D078\r
+:1028E00000D0CDB7DEB726960FB6F894DEBF0FBE88\r
+:1028F000CDBFDF91CF9108951F93CF93DF93C09108\r
+:10290000790116E080917A01C81799F0D0E01C9FF8\r
+:10291000F0011D9FF00D1124E558FE4F40815181BB\r
+:1029200062817381848195810E946C142196C770A5\r
+:10293000E9CFDF91CF911F9108954091AB01509164\r
+:10294000AC016091AD017091AE018091AF019091A9\r
+:10295000B0010C946C148091B00182958F7009F0D5\r
+:1029600054C08091AD01882309F44FC08091790152\r
+:10297000A0917A014091AE015091AF016091AB01FD\r
+:102980007091AC01B6E08A1709F43FC090E04115A0\r
+:102990005105C1F17F3F11F46F3FA1F1B89FF001E4\r
+:1029A000B99FF00D1124E558FE4F218127132AC04D\r
+:1029B0002081261327C02281211124C02381348144\r
+:1029C0002417350710F421503109241B350B283CFE\r
+:1029D0003105C0F42091B0012F7020612093B00127\r
+:1029E00026E0289FF001299FF00D1124E058FE4FAA\r
+:1029F00080818F70806180838BEA91E00E94131147\r
+:102A00000C947C1401968770BECF0895CF92DF920C\r
+:102A1000EF92FF920F931F93CF93DF93CDB7DEB763\r
+:102A200062970FB6F894DEBF0FBECDBF8C0185E074\r
+:102A3000F801DE011D9601900D928A95E1F7D8010B\r
+:102A40004C9111965C91119712966C918091AE0108\r
+:102A50009091AF01009709F475C13091AB0170916D\r
+:102A6000AC017F3F19F43F3F09F46CC1F801C3800A\r
+:102A7000D480E090AD01EE2009F4BEC02091B001F9\r
+:102A8000C816D90628F0D601A81BB90BCD0104C081\r
+:102A9000809590958C0D9D1DFF24F394883C9105A5\r
+:102AA00078F0F12C207F09F0C4C07C2DD98AC88A27\r
+:102AB00089890E945D148BEA91E00E941311AFC0D6\r
+:102AC000822F807F09F045C0571313C0431311C0F4\r
+:102AD00061110FC02F7020612093B0010E949D14DE\r
+:102AE0008BEA91E00E9413118091B001F801858377\r
+:102AF0002EC0CD2819F15F3F11F44F3FF9F0F62EAB\r
+:102B000061111CC08091790120917A0136E0821711\r
+:102B100009F45BC090E0389FF001399FF00D11245B\r
+:102B2000E558FE4F7181571306C07081471303C0EB\r
+:102B30007281711103C001968770E9CFF62E66236A\r
+:102B400009F41CC18091B00181608093B001F12C27\r
+:102B500015C1571309C0431307C0611105C0809107\r
+:102B6000B001F8018583C8C04D875E878D859E853D\r
+:102B70006A8B0E943E146A898823D1F16623C1F1D1\r
+:102B80002091B001822F82958F7090E0029774F0AF\r
+:102B90008091AB019091AC0198878F831986DB8679\r
+:102BA000CA862C87CE0107960E94131186E0F80191\r
+:102BB000ABEAB1E001900D928A95E1F70E94AB1467\r
+:102BC0000E949D14FF24F394D9C04D875E878D85A4\r
+:102BD0009E850E942A19292F22952F70223008F0F5\r
+:102BE000C1C09F7009F0BBC0805E883008F4C6C0C9\r
+:102BF000C8010E941311E6CFC816D90608F453C0C5\r
+:102C0000F601E81BF90BCF01883C910508F450C090\r
+:102C1000F12C7C2DD98AC88A89890E945D14EBEA3F\r
+:102C2000F1E086E0DF011D928A95E9F70E949D148C\r
+:102C3000A5C0571314C0431312C0611110C0809176\r
+:102C4000B001F8018583C8010E94131186E0EBEA08\r
+:102C5000F1E0DF011D928A95E9F7FE2C8FC04D87C8\r
+:102C60005E878D859E856A8B0E943E146A898823C3\r
+:102C700009F4BECF662309F4BBCF2091B001822FA7\r
+:102C800082958F7090E002970CF490CF8091AB0109\r
+:102C90009091AC019A8389831B82DD82CC822E8342\r
+:102CA000CE01019681CF809590958C0D9D1DACCF66\r
+:102CB000F62E662309F49CCF571333C0431331C05B\r
+:102CC0002091B00120FD24C0822F82958F70482F63\r
+:102CD00050E041155105E1F0D80115962C93159758\r
+:102CE0004F30510549F08F5F982F9295907F822F3A\r
+:102CF0008F70892B15968C93C8010E94131186E062\r
+:102D0000F801ABEAB1E001900D928A95E1F78ECF20\r
+:102D100086E0F801ABEAB1E001900D928A95E1F707\r
+:102D20002DC04D875E878D859E850E943E14811142\r
+:102D30003DCF8091B00181608093B001C8010E94B5\r
+:102D400013111CC0662309F453CF4D875E878D8510\r
+:102D50009E850E943E14882309F44ACF27CF811113\r
+:102D600043CF0CC0243008F043CF9F7009F43CCF10\r
+:102D7000D80115969C91907F09F036CF8F2D6296E1\r
+:102D80000FB6F894DEBF0FBECDBFDF91CF911F917C\r
+:102D90000F91FF90EF90DF90CF9008951F93CF9306\r
+:102DA000DF93CDB7DEB72C970FB6F894DEBF0FBE1A\r
+:102DB000CDBF4F83588769877A878B879C87CE01E1\r
+:102DC00007960E940615882371F08A859B85892BBA\r
+:102DD00009F441C088858F3F09F065C08F818F3F1E\r
+:102DE00009F061C038C086E0FE013796DE01119619\r
+:102DF00001900D928A95E1F76A857B8561157105D1\r
+:102E000051F1FF81E885EF3F11F4FF3F21F120915F\r
+:102E10007A0130E0C90101968770992740917901C4\r
+:102E200050E08417950709F447C0F983EA837D834E\r
+:102E30006C8396E0929FD001939FB00D1124A5580A\r
+:102E4000BE4FFE01319601900D929A95E1F7809365\r
+:102E50007A010E947C1416E08091790190917A01A8\r
+:102E60008917B9F1189FC001112485589E4F0E94FF\r
+:102E70000615882371F1E09179011E9FF00111245C\r
+:102E8000E558FE4F40815181628173818481958133\r
+:102E90000E946C148091790190E0019687709927C7\r
+:102EA00080937901D9CF4F81588569857A858B8543\r
+:102EB0009C850E946C14CFCF0E943A1410927A0124\r
+:102EC00010927901EBEAF1E086E0DF011D928A952C\r
+:102ED000E9F72C960FB6F894DEBF0FBECDBFDF9199\r
+:102EE000CF911F910895EF92FF920F931F93CF936D\r
+:102EF000DF938C01892B09F46CC0F12CEE24E39450\r
+:102F0000E8012196F8018491843740F4843008F078\r
+:102F100051C0813081F0823019F15BC0853709F4EE\r
+:102F200044C0A8F19CE7980F903708F052C08F7703\r
+:102F30000E94B61041C00E5F1F4FFE01849190E2C7\r
+:102F4000980F983050F48770FE2D01C0FF0F8A95BE\r
+:102F5000EAF78F2F0E940C1A14C00E94EE0F2DC0AA\r
+:102F60000E5F1F4FFE01849190E2980F983060F43D\r
+:102F70008770FE2D01C0FF0F8A95EAF78F2F0E9400\r
+:102F8000121A0E94331A19C00E94B61016C00E5FA2\r
+:102F90001F4FFE01C491CC2381F08FE99FE0019780\r
+:102FA000F1F700C00000C150F6CF0E5F1F4FFE01C9\r
+:102FB000F49003C00E94EE0F8E018F2D882309F438\r
+:102FC0009FCFEFE9FFE03197F1F700C0000081509B\r
+:102FD000F5CFDF91CF911F910F91FF90EF90089562\r
+:102FE00008956093B5017093B6018093B7019093F3\r
+:102FF000B8010C9426140F931F930091B501109102\r
+:10300000B6012091B7013091B801DC01CB01802BD2\r
+:10301000912BA22BB32B8093B5019093B601A09373\r
+:10302000B701B093B8011F910F910C9426140F9320\r
+:103030001F930091B5011091B6012091B701309115\r
+:10304000B801DC01CB0180239123A223B323809319\r
+:10305000B5019093B601A093B701B093B8011F9149\r
+:103060000F910C9426140F931F930091B5011091AA\r
+:10307000B6012091B7013091B801DC01CB01802766\r
+:103080009127A227B3278093B5019093B601A0930F\r
+:10309000B701B093B8011F910F910C9426141092B0\r
+:1030A000B1011092B2011092B3011092B4010C94CC\r
+:1030B000261441E050E060E070E004C0440F551F6A\r
+:1030C000661F771F8A95D2F74093B1015093B201E2\r
+:1030D0006093B3017093B4010C94261441E050E066\r
+:1030E00060E070E004C0440F551F661F771F8A958B\r
+:1030F000D2F78091B1019091B201A091B301B0914A\r
+:10310000B401482B592B6A2B7B2B4093B101509370\r
+:10311000B2016093B3017093B4010C94261441E0A2\r
+:1031200050E060E070E004C0440F551F661F771F39\r
+:103130008A95D2F740955095609570958091B10130\r
+:103140009091B201A091B301B091B40148235923E9\r
+:103150006A237B234093B1015093B2016093B30182\r
+:103160007093B4010C94261441E050E060E070E0EC\r
+:1031700004C0440F551F661F771F8A95D2F78091B0\r
+:10318000B1019091B201A091B301B091B40148276F\r
+:1031900059276A277B274093B1015093B20160936E\r
+:1031A000B3017093B4010C9426140F931F930091F4\r
+:1031B000B1011091B2012091B3013091B401DC0151\r
+:1031C000CB01802B912BA22BB32B8093B101909339\r
+:1031D000B201A093B301B093B4011F910F910C946D\r
+:1031E00026140F931F930091B1011091B201209109\r
+:1031F000B3013091B401DC01CB0180239123A223E0\r
+:10320000B3238093B1019093B201A093B301B09323\r
+:10321000B4011F910F910C9426140F931F930091EA\r
+:10322000B1011091B2012091B3013091B401DC01E0\r
+:10323000CB0180279127A227B3278093B1019093D8\r
+:10324000B201A093B301B093B4011F910F910C94FC\r
+:1032500026140895CF92DF92EF92FF920F931F935F\r
+:10326000CF93DF938C01C090B101D090B201E09078\r
+:10327000B301F090B4018091B5019091B601A09195\r
+:10328000B701B091B801C82AD92AEA2AFB2ACFE1AE\r
+:10329000D0E0D701C6010C2E04C0B695A79597952E\r
+:1032A00087950A94D2F780FF07C0B8018C2F0E943F\r
+:1032B00078068130910531F4219758F7B80180E004\r
+:1032C0000E947806DF91CF911F910F91FF90EF90B0\r
+:1032D000DF90CF90089590910C019923F1F0909197\r
+:1032E0000D019923D1F0982F9695969596959F303C\r
+:1032F00080F5E0910E01F0910F01E90FF11D87704B\r
+:1033000021E030E0A90102C0440F551F8A95E2F781\r
+:10331000CA019181892B8183089520910E013091FA\r
+:103320000F01F90132969FEF40E05191851789F026\r
+:103330009F3F19F4511101C0942F4F5F4E30A9F7F0\r
+:103340009F3F39F0F901E90FF11D97FDFA9582834E\r
+:103350000895089590910C019923F9F090910D0131\r
+:103360009923D9F0982F9695969596959F3028F5A4\r
+:10337000E0910E01F0910F01E90FF11D877021E03E\r
+:1033800030E0A90102C0440F551F8A95E2F7CA0137\r
+:103390008095918189238183089520910E01309138\r
+:1033A0000F01F9013296205F3F4F9081891301C0D0\r
+:1033B00010823196E217F307C1F7089581E090E09B\r
+:1033C000E0910E01F0910F01E80FF91F10820196B4\r
+:1033D00080319105A9F708959091CC01892B8093B4\r
+:1033E000CC01089580959091CC0189238093CC01E4\r
+:1033F00008951092CC0108959091CB01892B809370\r
+:10340000CB01089580959091CB0189238093CB01C6\r
+:1034100008951092CB0108959091CA01892B809351\r
+:10342000CA01089580959091CA0189238093CA01A9\r
+:1034300008951092CA0108958093B90108951092D9\r
+:10344000B901089580910E0190910F01FC01319610\r
+:103450009C01205F3F4F80E0919191118F5FE217B7\r
+:10346000F307D1F70895E0910E01F0910F018091DB\r
+:10347000CC018083E0910E01F0910F019081809149\r
+:10348000CB01892B8083E0910E01F0910F01908197\r
+:103490008091CA01892B80838091B901882361F0D2\r
+:1034A000E0910E01F0910F019081892B80830E94A1\r
+:1034B000221A81111092B90180910E0190910F0191\r
+:1034C0000C94D10ECF92DF92EF92FF926C01EE241A\r
+:1034D000FF24C114D104E104F10421F0C701B601B5\r
+:1034E00020E101C020E0C72ED82EE92EFF24C11410\r
+:1034F000D104E104F10419F0285FC701B6016B01A2\r
+:103500007C0154E0F694E794D794C7945A95D1F788\r
+:10351000C114D104E104F10419F02C5FC701B60114\r
+:103520006B017C0142E0F694E794D794C7944A95E6\r
+:10353000D1F7C114D104E104F10419F02E5FC701E1\r
+:10354000B601DC01CB01B695A79597958795892B98\r
+:103550008A2B8B2B09F02F5F822FFF90EF90DF904B\r
+:10356000CF9008958091E501843029F120E488E12D\r
+:1035700090E00FB6F894A895809360000FBE20935A\r
+:10358000600080E00E94BA0783B7817F846083BFB8\r
+:1035900083B7816083BF7894889583B78E7F83BF1C\r
+:1035A0000FB6F894A89580916000886180936000C0\r
+:1035B000109260000FBE089508950C94DC1ACF930A\r
+:1035C0000E94DD1A0E9497040E94DC1AC0E08C2F32\r
+:1035D0000E948D05811104C0CF5FCE30C1F701C0BC\r
+:1035E00081E0CF9108950E943A140E94C50E0C9478\r
+:1035F000BA0782E084BD93E095BD9AEF97BD8093B2\r
+:103600006E0008952FB7F8948091CE019091CF016C\r
+:10361000A091D001B091D1012FBF0895CF92DF9238\r
+:10362000EF92FF920F931F932FB7F8944091CE0122\r
+:103630005091CF016091D0017091D1012FBF6A01EB\r
+:103640007B01EE24FF248C0120E030E0C016D1067F\r
+:10365000E206F30610F4415051099A01281B390B78\r
+:10366000C9011F910F91FF90EF90DF90CF900895C7\r
+:103670001F920F920FB60F9211248F939F93AF93C7\r
+:10368000BF938091CE019091CF01A091D001B091D4\r
+:10369000D1010196A11DB11D8093CE019093CF0160\r
+:1036A000A093D001B093D101BF91AF919F918F9121\r
+:1036B0000F900FBE0F901F9018950E94BD0BF894AD\r
+:1036C0002FEF87EA91E6215080409040E1F700C05B\r
+:1036D000000087E090EBDC018093EE019093EF0116\r
+:1036E000A093F001B093F1019CE088E10FB6F8944B\r
+:1036F000A895809360000FBE90936000FFCFEF927B\r
+:10370000FF920F931F93CF93DF93D82FC0E08C2F9E\r
+:103710000E948D0500E010E0E82EF12CC701002E7C\r
+:1037200002C0959587950A94E2F780FD06C00F5F69\r
+:103730001F4F0630110591F709C0602F7C2F80E0E4\r
+:103740000E9455068D13F3CF81E004C0CF5FCE30C9\r
+:10375000F1F680E0DF91CF911F910F91FF90EF90F4\r
+:103760000895CF93C82F8CE20E947F1B882321F0FD\r
+:103770008C2FCF910C947F1B80E0CF910895CF9335\r
+:103780000E94061D811102C00E94EC1CC5E6C150BA\r
+:1037900049F00E9497048FE39CE90197F1F700C07C\r
+:1037A0000000F5CF89E20E94B11B811113C18AE2AA\r
+:1037B0000E94B11B81110E94EC1C85E00E94B11B8C\r
+:1037C00081110E945D1B0E94111D8093CD0187E035\r
+:1037D0000E94B11B8823A9F18BE10E94B11B8823B1\r
+:1037E00051F08091CD0181FB222720F991E09227B1\r
+:1037F00090FB81F90EC08EE00E94B11B882361F01E\r
+:103800008091CD0182FB222720F991E0922790FB45\r
+:1038100082F98093CD0115C080E10E94B11B909187\r
+:10382000CD01882341F093FB222720F981E08227F4\r
+:1038300080FB93F904C0892F809580FB90F99093C9\r
+:10384000CD018091CD010E94151D0E94231D809302\r
+:10385000DF0180EE0E94B11B882341F08091DF01DF\r
+:10386000982F909590FB80F98093DF0189E30E9467\r
+:10387000B11B882359F08091DF0181FB222720F9B9\r
+:1038800091E0922790FB81F98093DF0182EE0E9404\r
+:10389000B11B882359F08091DF0182FB222720F998\r
+:1038A00091E0922790FB82F98093DF0186EE0E94DF\r
+:1038B000B11B882359F08091DF0183FB222720F977\r
+:1038C00091E0922790FB83F98093DF0183EE0E94C1\r
+:1038D000B11B882359F08091DF0184FB222720F956\r
+:1038E00091E0922790FB84F98093DF0185E30E94A9\r
+:1038F000B11B882359F08091DF0185FB222720F935\r
+:1039000091E0922790FB85F98093DF0181E30E948B\r
+:10391000B11B882359F08091DF0186FB222720F913\r
+:1039200091E0922790FB86F98093DF0181E10E946C\r
+:10393000B11B882359F08091DF0187FB222720F9F2\r
+:1039400091E0922790FB87F98093DF018091DF015E\r
+:103950000E94271D8091DF0187FB882780F98093D3\r
+:103960000D0187E20E94B11BC82F8EE10E94B11B9E\r
+:103970008111C2608FE10E94B11B8111C46080E29D\r
+:103980000E94B11B8111C86081E20E94B11B8111AC\r
+:10399000C06182E20E94B11B8111C06283E20E9479\r
+:1039A000B11B8111C06484E20E94B11B882311F015\r
+:1039B000C06802C0CC2329F08C2F0E941E1D6C2FE2\r
+:1039C00003C00E941A1D682F70E080E090E0CF9144\r
+:1039D0000C94F117CF9108956DEE7EEF80E090E0AA\r
+:1039E0000E94662360E082E090E00E94582360E03D\r
+:1039F00083E090E00E94582360E084E090E00E9421\r
+:103A0000582360E085E090E00C94582380E090E03B\r
+:103A10000E94522321E08D3E9E4F09F020E0822F2C\r
+:103A2000089582E090E00C944A23682F82E090E0B1\r
+:103A30000C94582383E090E00C944A23682F83E091\r
+:103A400090E00C94582384E090E00C944A23682F73\r
+:103A500084E090E00C9458238091D40180FF0BC047\r
+:103A60006091130185E0689FB001112475956795F9\r
+:103A7000759567952BC081FF09C06091130185E0A2\r
+:103A8000689FB00111247595679520C082FF07C01B\r
+:103A90006091130185E0689FB001112417C09091D7\r
+:103AA000D5019923D1F060911201961788F72091E2\r
+:103AB000130185E0289F90011124929FA001939FFC\r
+:103AC000500D112470E0CA010E941C23603871055A\r
+:103AD00040F46115710519F406C065E070E0862FA9\r
+:103AE00008958FE7089581E008958091D40180FFC3\r
+:103AF00008C06091110170E075956795759567959F\r
+:103B000021C081FF06C06091110170E07595679535\r
+:103B100019C082FF04C06091110170E010C0909143\r
+:103B2000D501992399F0609110019617A0F7809123\r
+:103B30001101899FC001112470E00E941C2360388C\r
+:103B4000710540F46115710519F406C061E070E07B\r
+:103B5000862F08958FE7089581E00895803F21F42E\r
+:103B60000E942C1D819504C0813F29F40E942C1DC8\r
+:103B70008093D8010895823F21F40E942C1D8195E5\r
+:103B800004C0833F29F40E942C1D8093D70108951F\r
+:103B9000893F19F40E94751D05C08A3F31F40E94C7\r
+:103BA000751D81958093D90108958B3F21F40E9462\r
+:103BB000751D819504C08C3F29F40E94751D80936A\r
+:103BC000DA010895843F21F48091D601816017C005\r
+:103BD000853F21F48091D601826011C0863F21F497\r
+:103BE0008091D60184600BC0873F21F48091D6017B\r
+:103BF000886005C0883F31F48091D6018061809350\r
+:103C0000D60108958D3F21F48091D40181600BC0CD\r
+:103C10008E3F21F48091D401826005C08F3F29F44A\r
+:103C20008091D40184608093D4010895803F39F459\r
+:103C30008091D80187FF6CC01092D80169C0813F84\r
+:103C400029F48091D8011816BCF362C09091D70175\r
+:103C5000823F29F497FF5CC01092D70159C0833F7F\r
+:103C600019F41916CCF354C0893F41F48091D9015D\r
+:103C700018160CF04DC01092D9014AC08A3F29F4A1\r
+:103C80008091D90187FF44C0F6CF8B3F39F48091F2\r
+:103C9000DA0187FF3DC01092DA013AC08C3F29F467\r
+:103CA0008091DA011816BCF333C0843F21F480916F\r
+:103CB000D6018E7F17C0853F21F48091D6018D7F7C\r
+:103CC00011C0863F21F48091D6018B7F0BC0873FC6\r
+:103CD00021F48091D601877F05C0883F31F480911F\r
+:103CE000D6018F7E8093D60113C08D3F21F4809141\r
+:103CF000D4018E7F0BC08E3F21F48091D4018D7F43\r
+:103D000005C08F3F29F48091D4018B7F8093D4012B\r
+:103D10008091D70181110EC08091D80181110AC014\r
+:103D20008091D901811106C08091DA01811102C010\r
+:103D30001092D501089586ED91E00E94DC0E0E945C\r
+:103D4000021B9093D3018093D20108951F93CF93C8\r
+:103D5000DF938091D2019091D3010E940E1BAC01A0\r
+:103D60009091D501992321F02091140130E006C0F3\r
+:103D7000209115018AE0289F9001112442175307D2\r
+:103D800008F485C08091D701C091D801D091D901A4\r
+:103D90001091DA01811107C0C11175C0D11173C032\r
+:103DA000111171C074C09F3F19F09F5F9093D501AE\r
+:103DB000181624F40E942C1D8093D7018091D701FE\r
+:103DC00087FF05C00E942C1D81958093D7011C168A\r
+:103DD00024F40E942C1D8093D8018091D80187FF84\r
+:103DE00005C00E942C1D81958093D8016091D70158\r
+:103DF000662331F1C091D801CC2311F1062E000CBD\r
+:103E0000770B880B990B0E94232223E333E343E3D0\r
+:103E10005FE30E9487220E94EB216093D7016C2F01\r
+:103E2000CC0F770B880B990B0E94232223E333E3FB\r
+:103E300043E35FE30E9487220E94EB216093D80155\r
+:103E40001D1624F40E94751D8093D9018091D9011B\r
+:103E500087FF05C00E94751D81958093D9011116B9\r
+:103E600024F40E94751D8093DA018091DA0187FFA6\r
+:103E700005C00E94751D81958093DA01DF91CF9175\r
+:103E80001F910C949B1E9F3F09F08FCFA0CFDF9115\r
+:103E9000CF911F910895E6EDF1E085E0DF011D92DD\r
+:103EA0008A95E9F71092D5011092D40108958330D4\r
+:103EB00081F128F4813059F08230D1F008958530B5\r
+:103EC00009F449C0B8F1863009F456C008958091CC\r
+:103ED0001501262F30E0280F311D2F3F310524F426\r
+:103EE000680F6093150108958FEF80931501089571\r
+:103EF00080911401262F30E0280F311D2F3F31050E\r
+:103F000024F4680F6093140108958FEF80931401D7\r
+:103F1000089580911301262F30E0280F311D2F3F87\r
+:103F2000310524F4680F6093130108958FEF809397\r
+:103F30001301089580911201262F30E0280F311DC2\r
+:103F40002F3F310524F4680F6093120108958FEF1D\r
+:103F500080931201089580911101262F30E0280FDF\r
+:103F6000311D2F3F310524F4680F6093110108952E\r
+:103F70008FEF80931101089580911001262F30E07A\r
+:103F8000280F311D2F3F310524F4680F6093100175\r
+:103F900008958FEF809310010895833011F128F474\r
+:103FA000813049F0823091F00895853081F120F11F\r
+:103FB0008630C1F1089580911501681720F4861BA1\r
+:103FC00080931501089510921501089580911401B0\r
+:103FD000681720F4861B8093140108951092140131\r
+:103FE000089580911301681720F4861B80931301B4\r
+:103FF000089510921301089580911201681720F41A\r
+:10400000861B8093120108951092120108958091E9\r
+:104010001101681720F4861B8093110108951092F6\r
+:104020001101089580911001681720F4861B809378\r
+:10403000100108951092100108950F931F938D3170\r
+:1040400009F46AC008F03FC08E3009F484C0C0F49F\r
+:10405000873009F46DC068F4863009F0B5C08091EE\r
+:10406000CD01817F8E7F8093CD0181E08093DC0143\r
+:10407000ACC0883009F457C08B3009F46AC0A4C0C2\r
+:10408000863109F466C078F4803109F477C0813153\r
+:1040900009F09AC00E943A1490910D0181E089279D\r
+:1040A00080930D0156C0893109F453C08B3109F05A\r
+:1040B0008BC08091CD0181FB222720F991E09227CE\r
+:1040C00090FB81F951C0853309F475C048F48732FB\r
+:1040D00009F471C008F45EC0893209F46CC074C080\r
+:1040E000833430F48A3308F053C0883391F16CC0C4\r
+:1040F000833409F460C0883409F066C00E943A1421\r
+:104100000FEF13ED20E3015010402040E1F700C015\r
+:1041100000000E945D1B1DC00E94A5210E94C50ECB\r
+:104120000E94BA0716C00E94111D0E94231D11C0D3\r
+:104130009091CD01892F8095817080FB90F929F0B5\r
+:10414000966098609093CD0140C0997F977F90933F\r
+:10415000CD0181E03AC08091CD0182FB222720F978\r
+:1041600091E0922790FB82F98093CD01992389F306\r
+:104170008091CD0181608093CD01EBCF8091CD0105\r
+:1041800083FB222720F991E0922790FB83F9ECCF63\r
+:10419000895301C08D5141E050E060E070E08A0138\r
+:1041A0009B0104C0000F111F221F331F8A95D2F7F5\r
+:1041B000C901B80104C061E070E080E090E00E94B5\r
+:1041C000F1170E943A14C5CF80E01F910F91089516\r
+:1041D00080E008950C94E820CF93C82F8091DC01F3\r
+:1041E000813079F018F08230E9F187C0E0910E015A\r
+:1041F000F0910F018081813169F0823209F07FC036\r
+:1042000009C0E0910E01F0910F018081813111F020\r
+:10421000823261F48C2F0E94EA20811104C08C2F1D\r
+:104220000E941D201DC081E090E01AC08C2F0E94CA\r
+:10423000E820811114C0C43179F048F4CB3079F012\r
+:10424000C03109F060C082E08093DC0108C0C9324F\r
+:1042500019F0C83321F057C01092DC0154C081E03E\r
+:10426000817053C0C93289F118F5C43171F1A8F4D5\r
+:10427000C73009F046C08AE08093150194E190931D\r
+:10428000140193E0909313018093120188E08093CE\r
+:10429000110188E28093100134C0CE51C63088F5F8\r
+:1042A000EC2FF0E0E65DFE4F80818093DB0129C0BA\r
+:1042B000CE34E9F020F4CB3421F56AE013C0C135E7\r
+:1042C00079F0C235F1F461E00DC08091DB01882303\r
+:1042D00019F01092DB0115C081E08093DC0115C05C\r
+:1042E00061E006C08091DB010E94571F0AC06AE0AE\r
+:1042F0008091DB010E94CD1F04C01092DC0180E0A0\r
+:1043000004C081E002C080E0ABCFCF910895E1E826\r
+:10431000F0E08081886080838081816080838FB7B6\r
+:10432000F89493E09093890090ED909388008FBF6C\r
+:104330000895EFE6F0E08081826080830895EFE6E3\r
+:10434000F0E080818D7F80830895EFE6F0E090813A\r
+:1043500082E08927808308951F920F920FB60F92F3\r
+:1043600011242F933F934F935F936F937F938F937A\r
+:104370009F93AF93BF93EF93FF938091DD01909153\r
+:10438000DE0101969093DE018093DD01811103C06F\r
+:1043900082E00E94BA07E091DE01E695E695F0E042\r
+:1043A000E75BFA4FE4918091DD018E1303C080E05A\r
+:1043B0000E94BA07FF91EF91BF91AF919F918F91AA\r
+:1043C0007F916F915F914F913F912F910F900FBE11\r
+:1043D0000F901F9018950E94F2216894B1110C94CF\r
+:1043E000812208950E94662288F09F5798F0B92F85\r
+:1043F0009927B751B0F0E1F0660F771F881F991F1A\r
+:104400001AF0BA95C9F714C0B13091F00E94802219\r
+:10441000B1E008950C948022672F782F8827B85F29\r
+:1044200039F0B93FCCF3869577956795B395D9F771\r
+:104430003EF490958095709561957F4F8F4F9F4F7B\r
+:104440000895E89409C097FB3EF490958095709587\r
+:1044500061957F4F8F4F9F4F9923A9F0F92F96E9D0\r
+:10446000BB279395F695879577956795B795F11145\r
+:10447000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE2\r
+:104480008F4F9F4F16C0882311F096E911C07723F4\r
+:1044900021F09EE8872F762F05C0662371F096E8FD\r
+:1044A000862F70E060E02AF09A95660F771F881FCC\r
+:1044B000DAF7880F9695879597F9089557FD9058E4\r
+:1044C000440F551F59F05F3F71F04795880F97FBD8\r
+:1044D000991F61F09F3F79F0879508951216130692\r
+:1044E0001406551FF2CF4695F1DF08C016161706C1\r
+:1044F0001806991FF1CF86957105610508940895F6\r
+:10450000E894BB2766277727CB0197F908950E9487\r
+:104510009A220C940B230E94FD2238F00E9404235F\r
+:1045200020F0952311F00C94F4220C94FA2211241B\r
+:104530000C9481220E945E2270F3959FC1F3950F27\r
+:1045400050E0551F629FF001729FBB27F00DB11D17\r
+:10455000639FAA27F00DB11DAA1F649F6627B00DA7\r
+:10456000A11D661F829F2227B00DA11D621F739F90\r
+:10457000B00DA11D621F839FA00D611D221F749F9E\r
+:104580003327A00D611D231F849F600D211D822FE5\r
+:10459000762F6A2F11249F5750409AF0F1F088230C\r
+:1045A0004AF0EE0FFF1FBB1F661F771F881F915039\r
+:1045B0005040A9F79E3F510580F00C94F4220C94D2\r
+:1045C00081225F3FE4F3983ED4F386957795679513\r
+:1045D000B795F795E7959F5FC1F7FE2B880F911D63\r
+:1045E0009695879597F9089597F99F6780E870E009\r
+:1045F00060E008959FEF80EC089500240A94161659\r
+:10460000170618060906089500240A9412161306C0\r
+:10461000140605060895092E0394000C11F488234E\r
+:1046200052F0BB0F40F4BF2B11F460FF04C06F5F6A\r
+:104630007F4F8F4F9F4F089597FB072E16F40094DE\r
+:1046400007D077FD09D00E94362307FC05D03EF441\r
+:10465000909581959F4F0895709561957F4F08952E\r
+:10466000EE0FFF1F0590F491E02D0994AA1BBB1BD0\r
+:1046700051E107C0AA1FBB1FA617B70710F0A61B62\r
+:10468000B70B881F991F5A95A9F780959095BC0183\r
+:10469000CD010895F999FECF92BD81BDF89A992771\r
+:1046A00080B50895A8E1B0E042E050E00C946D239D\r
+:1046B000262FF999FECF1FBA92BD81BD20BD0FB63E\r
+:1046C000F894FA9AF99A0FBE019608950E94582319\r
+:1046D000272F0C945923DC01CB01FC01F999FECF63\r
+:1046E00006C0F2BDE1BDF89A319600B40D9241507A\r
+:0A46F0005040B8F70895F894FFCF8A\r
+:1046FA002002BC074C082708F307BF070101BA01CB\r
+:10470A0028080A03140A3F4D36390A05BD048704EE\r
+:10471A004E04E103FA0313042C0401020304050600\r
+:04472A000708090073\r
+:00000001FF\r
--- /dev/null
+Englishman in New York
+===========================
+
+:microphone: :tea:
+
+About
+------
+
+After using the massdrop configurator to get the basics, I wanted to add a
+little extra to my ergodox. Notably the Hyper hotkey, the press and hold,
+and a way to have my beloved £ :pound: symbol available<sup>[1](#unicode)</sup>. Why not switch to a GB
+layout? Well the computers I use are US keymap'd and I can't always change
+that. Plus I've got used to 2/@ and 3/# and moving to the ergodox was hard
+enough. :sweat_smile:
+
+I started from the default and edited from there as I needed. It's somewhat
+similar to a regular layout, particularly R1 and shift/controls. I ended up
+with a few keys that were blank, so I'm testing out some shortcuts. Alt+F4 for
+quitting things in Windows, is one example, but I felt it was better placed on
+the 1st layer - in case of fat fingers.
+
+Layout
+-------
+
+![Layout](rl-layout.jpg "Isn't it lovely")
+
+### Base Layer
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| ESC | 1! | 2@ | 3# | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | -_ | += | BkSp |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | |\ |
+|--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
+| Win | A | S | D | F | G |------| |------| H | J | K | L | :; | '" |
+|--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
+| LShift |Z/Alt | X | C | V | B | | | | N | M | , | . | Alt | RShift |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ |LCtrl | COPY | PASTE| Left | Right| | Down | Up |Hyper | `~ | RCtrl |
+ `----------------------------------' `----------------------------------'
+ ,-------------. ,-------------.
+ Hyper = Ctrl+Super+Alt+Shift | ~L3 | F5 | | F2 | ~L2 |
+ ,------|------|------| |------+------+------.
+ | | | PgUp | | Ins | | |
+ | Enter| BkSp |------| |------| ~L1 |Space |
+ | | | PgDn | | Del | | |
+ `--------------------' `--------------------'
+```
+
+### Symbol Layer
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |PrintScr|
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ | | £ | | | | | | . | 0 | = |Alt+F4|
+ `----------------------------------' `----------------------------------'
+ ↑ ,-------------. ,-------------.
+ THERE! | | | | | |
+ ,------|------|------| |------+------+------.
+ CAD = Ctrl + Alt + Delete | | | | | | | |
+ | | |------| |------| | |
+ | | | | | CAD | | |
+ `--------------------' `--------------------'
+```
+### Media Layer
+
+Not touched this, not used either.
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| TEENSY | | | | | | | | | | | | | | |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| | | | MsUp | | | | | | | | | | | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | | | | | | | | | | | Prev | Next | | |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ | | | | Lclk | Rclk | |VolDn |VolUp | Mute | | |
+ `----------------------------------' `----------------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | |Brwser|
+ | | |------| |------| |Back |
+ | | | | | | | |
+ `--------------------' `--------------------'
+```
+### Unicode Layer
+
+Used to enter/test unicode input on Windows. All numbers are numpad keys.
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| Alt | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | + | + | |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| Alt | | | E | | | | | | | 7 | 8 | 9 | + | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| Alt | A | | D | F | |------| |------| | 4 | 5 | 6 | + | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| Alt | | | C | | B | | | | | 1 | 2 | 3 | + | |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ | Alt | Alt | Alt | | | | 0 | 0 | 0 | + | |
+ `----------------------------------' `----------------------------------'
+ ,-------------. ,-------------.
+ WINDOWS ONLY SETUP!! | ~L3 | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | Alt | Alt |------| |------| Alt | Alt |
+ | | | | | | | |
+ `--------------------' `--------------------'
+```
+
+
+Usage
+------
+
+~L1 / L2 / L3 will momentarily switch to a layer if held and another key is pressed.
+If pressed and released will remain on layer until pressed again.
+
+### Unicode
+
+This layout is for Windows only. To enter a character Press and Hold Alt, type + and hex code then release Alt.
+
+Changelog
+-----------
+
+### [0.2.1] - 2016-04-05
+
+* Changed £ to alt code in Windows. Windows sucks at unicode.
+
+### [0.2.0] - 2016-03-27
+
+* Added unicode layer
+* Moved Copy/Paste to left hand side
+* Switched Enter and Space (again)
+* Added L3 (unicode layer) toggle
+* Removed Press and Hold for Alt on right hand size (/)
+* Swapped Volume Up/Down to match arrows
+* Tried fixing £ macro
+* Removed * in the matrix function things (upstream change)
+
+### [0.1.1] - 2016-03-23
+
+* Changed £ input to a macro
+
+
+### [0.1.0] - 2016-03-22
+
+After actually using the keyboard, I've made some changes:
+
+* Swapped Enter and Space
+* Moved backspace to thumb keys (top right still remains)
+* Added Ctrl+Alt+Delete
+* Added Teensy Reset on 2nd layer
+* Switched Up and Down
+* Changed copy/paste to be Ctrl+c and Ctrl+v as KC_COPY/PASTE didn't work (in Windows)
+* Moved ~L2 to replace +L1 after learning how the function works (notes above)
+* Hopefully fixed GBP symbol (unicode enabled in MakeFile)
+
+### [0.0.1] - 2016-03-21
+
+First version
+
+
+Issues
+-------
+
+Space for feedback and notes for future improvements
+
+----
+<sup><a name="unicode">1</a></sup>: For Windows only, and you have to edit the [registry](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input).
--- /dev/null
+# ErgoDox EZ Dvorak International Squisher
+
+Dvorak layout adjusted with several (linux) applications in mind:
+
+* Easier Escape for VIM
+* Windows/Super key for awesome WM
+* Alt+Shift for international characters
+* PrintScreen for sys-rq
+* Insert for the X11 clip-board
+
+Major layer changes:
+
+* Common multimedia keys are integrated into layer 0, less common into layer 1
+* No mouse keys
+* Layer 2 is qwerty (for easier gaming & less fortunate keyboard users)
+
+Known issues:
+
+* Alt+Shift does not work reliably (depends on the X11 kb layout? Not
+ entirely clear...)
+
+![layer0](keyboard-layout0.png)
+![layer1](keyboard-layout1.png)
+![layer2](keyboard-layout2.png)
+
+## Changelog
+
+* 2016-03-29
+ * Initial release
--- /dev/null
+:100000000C9465020C94AC020C94AC020C94AC02FF\r
+:100010000C94AC020C94AC020C94AC020C94AC02A8\r
+:100020000C94AC020C94AC020C94B50B0C94870CA1\r
+:100030000C94AC020C94AC020C94AC020C94AC0288\r
+:100040000C94AC020C943B210C94AC020C94AC02CA\r
+:100050000C94AC020C94C71A0C94AC020C94AC0235\r
+:100060000C94AC020C94AC020C94AC020C94AC0258\r
+:100070000C94AC020C94AC020C94AC020C94AC0248\r
+:100080000C94AC020C94AC020C94AC020C94AC0238\r
+:100090000C94AC020C94AC020C94AC020C94AC0228\r
+:1000A0000C94AC020C94AC020C94AC02F40C160D43\r
+:1000B000040E160D040E5B0D7E0D040ED30DE60D21\r
+:1000C000D110D11000110011431181119A139A130C\r
+:1000D0009A119A139B129B126E139A139A138513FB\r
+:1000E0000000F0A12E0029002A00E1003581000067\r
+:1000F0001E00340004003371E2004D001F00360082\r
+:1001000012001400E3002B002000370008000D004F\r
+:1001100050002C002100130018000E004F004A0070\r
+:1001200022001C000C001B0000006571B6004C0092\r
+:100130000000007F00000154AE004900000000777D\r
+:1001400000000254230009000700050000004600DB\r
+:1001500024000A000B00100052004B00250006008E\r
+:1001600017001A0051002800260015001100190080\r
+:100170002F00E51427000F0016001D7130004E00FF\r
+:10018000318238002D00E500C100000001000100AF\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00AC0001003D0030025F\r
+:1001C00027023000AB0001003E003102350035024D\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:100200000100A9004100250022001F003700010065\r
+:1002100042002600230020002700A80043002502FA\r
+:100220002E0231002E00AA0044004500010001000A\r
+:1002300001000000010001000100010001000000B8\r
+:100240000100140004001D710100010001001A00EA\r
+:1002500016001B0001000100010008000700060055\r
+:100260000100010001001500090019000100010052\r
+:10027000010017000A000500000001000100010054\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001001C000B0011000000010023\r
+:1002A000010018000D0010000100010001000C0009\r
+:1002B0000E00360001000100010012000F0037009F\r
+:1002C00001000100010013003382387101000100B8\r
+:1002D00001000100010001000100000016034500BB\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE27C08091EF0196\r
+:1004E0009091F001A091F101B091F2018730904B11\r
+:1004F000A740B04BD1F41092EF011092F00110928E\r
+:10050000F1011092F20114BE84B7877F84BF0FB649\r
+:10051000F894A895809160008861809360001092A3\r
+:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C\r
+:10053000E8E1F6E402C005900D92A433B107D9F7C3\r
+:1005400021E0A4E3B1E001C01D92AF3EB207E1F7A4\r
+:100550000E94F6080C940A230C94000061110BC051\r
+:10056000FC018281882321F085EE0E94660F03C082\r
+:1005700085EE0E942E1080E090E00895089560912D\r
+:10058000B1017091B2018091B3019091B4010E94C8\r
+:10059000F01956985E9825982D9826982E982798A9\r
+:1005A0002F98813019F0823021F00895259A2D9AE4\r
+:1005B0000895269A2E9A08950C94BF0256985E9834\r
+:1005C00025982D9826982E9827982F988FEF90E0B1\r
+:1005D000909389008093880090938B0080938A0089\r
+:1005E00090938D0080938C00259A2D9A2FEF80E7B1\r
+:1005F00092E0215080409040E1F700C00000269A30\r
+:100600002E9A2FEF80E792E0215080409040E1F752\r
+:1006100000C00000279A2F9A2FEF80E792E0215028\r
+:1006200080409040E1F700C0000025982D982FEF02\r
+:1006300080E792E0215080409040E1F700C0000048\r
+:1006400026982E982FEF80E792E02150804090402E\r
+:10065000E1F700C0000027982F9856985E982598DB\r
+:100660002D9826982E9827982F98089589EA809398\r
+:10067000800089E08093810024982C983F988AB16B\r
+:100680008F748AB96E98479A8BB1806B8BB9769AC2\r
+:100690000E94DE020C94BE0280E2809300018091F1\r
+:1006A000340181110EC00E949B0381E080933401CC\r
+:1006B0002FEF83ED90E3215080409040E1F700C0A0\r
+:1006C000000080E40E94A1038093000181112EC0EC\r
+:1006D0000E94CB0380930001811128C00E94CB03AC\r
+:1006E00080930001811122C08FE30E94CB0380938D\r
+:1006F000000181111BC00E94C30380E40E94A1037A\r
+:1007000080930001811112C08CE00E94CB03809382\r
+:10071000000181110BC00E94CB0380930001811165\r
+:1007200005C08FE30E94CB03809300010E94C303A6\r
+:100730008091000108951092B9008AE08093B8007A\r
+:10074000089594EA9093BC009091BC0097FFFCCF71\r
+:100750009091B900987F983021F0903111F081E0AC\r
+:1007600008958093BB0084E88093BC008091BC0016\r
+:1007700087FFFCCF8091B900887F883111F08034E9\r
+:1007800071F780E0089584E98093BC008091BC00FB\r
+:1007900084FDFCCF08958093BB0084E88093BC0067\r
+:1007A0008091BC0087FFFCCF9091B900987F81E0D9\r
+:1007B000983209F480E0089584E88093BC00809129\r
+:1007C000BC0087FFFCCF8091BB00089580910001A1\r
+:1007D000811115C080E40E94A10380930001811162\r
+:1007E0000CC082E10E94CB0380930001811105C0FF\r
+:1007F0008FEF0E94CB03809300010E94C30384B15A\r
+:10080000807F84B985B1807F85B98AB1837F8AB9B9\r
+:100810008BB1837F8BB93E98469808950E944C0314\r
+:10082000809300010E94E60380B38C7080BB81B38B\r
+:10083000836F81BBA6E3B1E0E4E4F1E08EE08E0FCC\r
+:1008400011921D928E13FCCF0C943603BF92CF925F\r
+:10085000DF92EF92FF920F931F93CF93DF938091DC\r
+:100860000001882379F0809135018F5F80933501F5\r
+:10087000811108C00E944C0380930001811102C0C5\r
+:100880000E94DE0206E311E0C0E0D0E0DD24D39454\r
+:1008900082E0C82EEE24E394F12CC730D10500F598\r
+:1008A00080910001811164C080E40E94A1038093C3\r
+:1008B0000001811112C082E10E94CB0380930001EC\r
+:1008C00081110BC0C7010C2E01C0880F0A94EAF7F2\r
+:1008D00080950E94CB03809300010E94C30348C00F\r
+:1008E000CA30A1F028F4C83059F0C93061F005C011\r
+:1008F000CC3089F070F0CD3089F0209A289810C063\r
+:10090000219A29980DC0229A2A980AC0239A2B98D6\r
+:1009100007C0529A01C0539A5B9802C03E9A46980B\r
+:1009200090EA9A95F1F79FB1799902C082E001C0EF\r
+:1009300080E091709D25982B7C9902C084E001C0D5\r
+:1009400080E0892B7D9902C038E001C030E0832B24\r
+:100950007E9902C020E101C020E0822B9FB19095DA\r
+:10096000991F9927991F9295990F907E892B0FC0F7\r
+:1009700080910001811149C080E40E94A10380930D\r
+:100980000001882379F1B12C0E94C3038B2DF8015B\r
+:100990009081981719F08083C09201010E94E603AC\r
+:1009A00021960F5F1F4FCE30D10509F076CF809191\r
+:1009B0000101882361F1815080930101882339F07E\r
+:1009C0008FE99FE00197F1F700C0000020C0A4E488\r
+:1009D000B1E0E6E3F1E0CF01825F91919D938E1348\r
+:1009E000FCCF15C083E10E94CB03809300018111ED\r
+:1009F000CACF81E40E94A103809300018111C3CF7B\r
+:100A00000E94DC03B82EB094BFCF80E0C0CF0E941C\r
+:100A1000DC0281E0DF91CF911F910F91FF90EF9069\r
+:100A2000DF90CF90BF900895E82FF0E0EC5BFE4F91\r
+:100A30008081089508958B3B910578F4883A91055B\r
+:100A400040F5853A9105D0F48430910508F0B1C0A5\r
+:100A50008130910509F4ADC06BC0803E910508F46A\r
+:100A600067C0883E910508F4A4C09C01205F31094D\r
+:100A70002031310508F05CC090650895853A9105F4\r
+:100A800009F459C0863A910509F058C082E890E40B\r
+:100A90000895883A910509F454C0893A910509F4FA\r
+:100AA00053C08A3A910509F452C08B3A910509F472\r
+:100AB00051C08C3A910509F450C08D3A910509F462\r
+:100AC0004FC0803B910509F44EC08E3A910509F460\r
+:100AD0004DC08F3A910509F44CC0813B910509F452\r
+:100AE0004BC0823B910509F44AC0833B910509F450\r
+:100AF00049C0843B910509F448C0853B910509F440\r
+:100B000047C0863B910509F446C0873B910509F42F\r
+:100B100045C0883B910509F444C0893B910509F41F\r
+:100B200043C08A3B910509F442C080E094E40895F3\r
+:100B300080E090E0089581E890E4089583E890E4EF\r
+:100B4000089582EE94E4089589EE94E408958AEE7F\r
+:100B500094E4089585EB94E4089586EB94E4089575\r
+:100B600087EB94E408958CEC94E408958DEC94E480\r
+:100B7000089583E895E408958AE895E4089582E964\r
+:100B800095E4089584E995E4089581E296E4089552\r
+:100B900083E296E4089584E296E4089585E296E47B\r
+:100BA000089586E296E4089587E296E408958AE23D\r
+:100BB00096E40895089596E0799FF001112494E554\r
+:100BC000899FE00DF11D1124E60FF11DEE0FFF1FAF\r
+:100BD000EC51FF4F859194910895880F991FFC0166\r
+:100BE000E05AF040859194910895880F991FFC0177\r
+:100BF000E052FF4F85919491089526E0729FF00195\r
+:100C0000112444E5849FE00DF11D1124E60FF11D30\r
+:100C1000EE0FFF1FEC51FF4F859194919C013A9587\r
+:100C200021154FE1340708F41CC13F512115304113\r
+:100C300020F49F700E94F50508959C013053211502\r
+:100C4000304118F49927906C0895811520E592079A\r
+:100C500071F40E94BE134FEF84E39CE0415080404A\r
+:100C60009040E1F700C000000E94EC1AFAC0813009\r
+:100C700020E5920731F48091CD0181608093CD0110\r
+:100C8000F0C09C0130552115304108F051C0292F8A\r
+:100C900033272F70332721303105D9F4AC0143704D\r
+:100CA000552702C0220F331F4A95E2F73C68AC017A\r
+:100CB00064E0440F551F6A95E1F744275370242BD5\r
+:100CC000352B73E0880F991F7A95E1F78076992785\r
+:100CD0001DC02230310529F4982F8827816F906A32\r
+:100CE000089523303105A9F4AC014370552721E064\r
+:100CF00030E002C0220F331F4A95E2F73C6843E020\r
+:100D0000880F991F4A95E1F7807E9770822B932B6D\r
+:100D1000089524303105E1F4AC014370552721E0FA\r
+:100D200030E002C0220F331F4A95E2F73A68E7CF5E\r
+:100D30009C0130572115304118F49F70906208953E\r
+:100D40009C0130582115304118F49F70906A089525\r
+:100D5000803E9105E0F4803C910558F58133910582\r
+:100D600009F46FC048F48932910509F463C08A32EE\r
+:100D7000910509F46DC072C089339105E9F082389C\r
+:100D80009105D1F08533910509F44DC067C0833ECC\r
+:100D9000910581F138F4803E9105B9F0823E9105CC\r
+:100DA000D9F05CC0863E910561F1873E9105A1F1C5\r
+:100DB00055C00E94ED0508952091E00120FD02C07C\r
+:100DC00021FF4CC080EE90E049C08091E00180FF9F\r
+:100DD000F9CF89E390E042C08091E00182FF0EC02C\r
+:100DE0008091E00184FF03C080E090E037C083EE93\r
+:100DF00090E034C08091E00182FFF2CF82EE90E07B\r
+:100E00002DC08091E00183FF0BC08091E00184FD43\r
+:100E1000EBCF87EE90E022C08091E00183FFF5CF19\r
+:100E200086EE90E01BC08091E00185FF07C089E25B\r
+:100E300090E014C08091E00185FFF9CF85E390E058\r
+:100E40000DC08091E00186FF07C08AE290E006C0F5\r
+:100E50008091E00186FFF9CF81E390E00E941B05BD\r
+:100E60000895089508950C943207809162010895C1\r
+:100E7000CF93DF9300D01F92CDB7DEB79C01809156\r
+:100E8000E601843019F593E099833B832A8390939C\r
+:100E9000E9008FEF9091E800815095FD06C095ED37\r
+:100EA0009A95F1F700008111F5CF8091E80085FF58\r
+:100EB0000DC040E050E063E070E0CE0101960E947A\r
+:100EC000A5098091E8008E778093E8000F900F903D\r
+:100ED0000F90DF91CF910895CF93DF9300D01F92B1\r
+:100EE000CDB7DEB72091E601243021F522E0298339\r
+:100EF0009B838A8383E08093E9008FEF9091E800E1\r
+:100F0000815095FD06C095ED9A95F1F7000081118D\r
+:100F1000F5CF8091E80085FF0DC040E050E063E030\r
+:100F200070E0CE0101960E94A5098091E8008E77BD\r
+:100F30008093E8000F900F900F90DF91CF9108956C\r
+:100F40002091E6012430F1F422E02093E9002FEF14\r
+:100F50003091E800215035FD06C035ED3A95F1F7A6\r
+:100F600000002111F5CF2091E80025FF0BC040E0E3\r
+:100F700050E065E070E00E94A5098091E8008E775E\r
+:100F80008093E8000895CF93DF93EC019091E60100\r
+:100F9000943009F046C080910C018823D9F08091EB\r
+:100FA0000D018823B9F09093E9008FEF9091E8004C\r
+:100FB000815095FD06C095E19A95F1F700008111E9\r
+:100FC000F5CF8091E80085FF2CC040E050E060E163\r
+:100FD00070E017C081E08093E9008FEF9091E80006\r
+:100FE000815095FD06C095ED9A95F1F700008111AD\r
+:100FF000F5CF8091E80085FF14C040E050E068E044\r
+:1010000070E0CE010E94A5098091E8008E77809360\r
+:10101000E80080E1FE01A2E5B1E001900D928A9521\r
+:10102000E1F7DF91CF9108958091E501811109C029\r
+:101030000E943A0B0E94970B8091E200846080939B\r
+:10104000E20008951092E501089508950C94282176\r
+:101050000E94821A0E942E210E943D0E0C9433079A\r
+:1010600042E061EC81E00E94B40A42E061EC82E07F\r
+:101070000E94B40A42E061EC83E00E94B40A42E1BB\r
+:1010800061EC84E00C94B40A8091E801833009F4A7\r
+:1010900055C030F4813071F0823009F48EC008956B\r
+:1010A0008A3009F47AC08B3009F460C0893009F0C5\r
+:1010B0009CC020C08091E701813A09F096C08091E0\r
+:1010C000E800877F8093E8008091EB019091EC012C\r
+:1010D000892B21F460E182E591E003C060E080E0CB\r
+:1010E00090E070E00E94F0098091E8008B77809397\r
+:1010F000E80008958091E701813209F076C080917F\r
+:10110000EB019091EC01009719F0039709F06DC085\r
+:101110008091E800877F8093E8008091E80082FD5D\r
+:1011200005C08091E6018111F8CF5FC08091F10088\r
+:10113000809362018091E8008B7753C08091E70132\r
+:10114000813A09F052C08091EB019091EC01892B1A\r
+:1011500009F04BC08091E800877F8093E800809180\r
+:10116000E80080FFFCCF80910C0136C08091E70140\r
+:101170008132D9F58091EB019091EC01892BA9F591\r
+:101180008091E800877F8093E8000E94E90A8091BF\r
+:10119000E90180930C010C94BE138091E701813228\r
+:1011A00021F58091E800877F8093E8000E94E90A9A\r
+:1011B0008091EA018093630108958091E701813A6B\r
+:1011C000A1F48091E800877F8093E8008091E80097\r
+:1011D00080FFFCCF809163018093F1008091E80053\r
+:1011E0008E778093E8000C94E90A089584B7877F8E\r
+:1011F00084BF0FB6F894A8958091600088618093B1\r
+:101200006000109260000FBE90E080E80FB6F89486\r
+:1012100080936100909361000FBE0E948C0E0E942B\r
+:101220003A0B0E94970B8091E20084608093E20069\r
+:1012300078940E941D0E0E948E0E82E091E00E9422\r
+:10124000380E0E9416218091E601853069F40E94D3\r
+:10125000401A8091E4018823B1F30E946E1A88231A\r
+:1012600091F30E948F09EFCF0E94940EECCF292FAB\r
+:10127000332723303105C9F064F42130310581F082\r
+:101280002230310509F043C08DE690E020E133E0E3\r
+:1012900042C021323105F1F02232310541F137C02F\r
+:1012A00082E190E02DE733E036C099278130910547\r
+:1012B00041F08230910541F0892B49F5ECE0F3E0F3\r
+:1012C00005C0E4EFF2E002C0ECEDF2E0849190E0C2\r
+:1012D0009F0121C06430D8F4E62FF0E0EE0FFF1F2D\r
+:1012E000EE5DFE4F2081318189E090E014C06430D2\r
+:1012F00070F470E0FB01EE0FFF1FE65EFE4F2081F1\r
+:101300003181FB01EA5EFE4F808190E004C080E005\r
+:1013100090E020E030E0FA0131832083089580E1FD\r
+:1013200089BD82E189BD09B400FEFDCF8091D8005E\r
+:101330008F7D8093D8008091E00082608093E000F0\r
+:101340008091E00081FDFCCF0895CF92DF92EF9273\r
+:10135000FF920F931F93CF93DF93EC018B016A01F0\r
+:101360000E94080B811133C0C114D10439F0F60179\r
+:1013700080819181081B190BC80FD91FE12CF12C1A\r
+:101380000115110519F18091E80085FD16C08091C5\r
+:10139000E8008E778093E800C114D10449F0F6018B\r
+:1013A00080819181E80EF91EF182E08285E00FC014\r
+:1013B0000E94080B882321F30AC089918093F100D1\r
+:1013C00001501109FFEFEF1AFF0ADACF80E0DF9139\r
+:1013D000CF911F910F91FF90EF90DF90CF900895E4\r
+:1013E0002091ED013091EE012617370748F0611585\r
+:1013F000710539F42091E8002E772093E80001C0B0\r
+:10140000B90140E061157105A9F12091E60122239F\r
+:1014100009F443C0253009F442C02091E80023FDBF\r
+:1014200040C02091E80022FD32C02091E80020FF5A\r
+:10143000E9CF4091F3002091F20030E0342BFC0121\r
+:10144000CF016115710559F02830310540F48191C3\r
+:101450008093F100615071092F5F3F4FF1CF41E060\r
+:101460002830310509F040E02091E8002E772093E4\r
+:10147000E800C8CF4111C9CF0AC08091E601882396\r
+:1014800061F0853061F08091E80083FD0AC08091B1\r
+:10149000E80082FFF2CF80E0089582E0089583E0C3\r
+:1014A000089581E008952091ED013091EE01261715\r
+:1014B000370748F06115710539F42091E8002E775F\r
+:1014C0002093E80001C0B901FC0120E0611571051D\r
+:1014D00091F18091E601882309F440C0853009F438\r
+:1014E0003FC08091E80083FD3DC08091E80082FD0F\r
+:1014F0002FC08091E80080FFE9CF2091F300809118\r
+:10150000F20090E0922B6115710559F08830910539\r
+:1015100040F424912093F1003196615071090196B5\r
+:10152000F2CF21E0089709F020E08091E8008E7763\r
+:101530008093E800CBCF2111CCCF0AC08091E60187\r
+:10154000882361F0853061F08091E80083FD0AC056\r
+:101550008091E80082FFF2CF80E0089582E0089554\r
+:1015600083E0089581E00895982F973058F590937F\r
+:10157000E900981739F07091EC002091ED0050913E\r
+:10158000F00003C0242F762F50E021FF19C03091C6\r
+:10159000EB003E7F3093EB003091ED003D7F3093C8\r
+:1015A000ED003091EB0031603093EB007093EC0074\r
+:1015B0002093ED005093F0002091EE0027FF07C02C\r
+:1015C0009F5FD3CF8F708093E90081E0089580E022\r
+:1015D00008958091E70187FF11C08091E80082FDA6\r
+:1015E00005C08091E6018111F8CF11C08091E8001B\r
+:1015F0008B770BC08091E601882349F08091E80049\r
+:1016000080FFF8CF8091E8008E778093E8000895FE\r
+:101610002091E4003091E50095E64091EC00842FA4\r
+:10162000817040FF22C08091E80080FD1CC0809145\r
+:10163000E601882391F0853091F08091EB0085FDE3\r
+:1016400010C04091E4005091E5004217530729F380\r
+:101650009A01915011F784E0089582E0089583E0A3\r
+:10166000089581E0089580E008954091E80042FFE8\r
+:10167000DECF08950E94A80B0E94B00BE0EEF0E0D0\r
+:10168000808181608083E8EDF0E080818F778083C6\r
+:1016900019BCA7EDB0E08C918E7F8C9380818F7EFA\r
+:1016A00080831092E50108950F931F93CF93DF93EA\r
+:1016B0000E94A80B0E94B00BC8EDD0E088818F7704\r
+:1016C000888388818068888388818F7D888319BC1E\r
+:1016D0001092E6011092E2011092E4011092E301EF\r
+:1016E00000EE10E0F80180818B7F8083888181602B\r
+:1016F000888342E060E080E00E94B40AE1EEF0E01E\r
+:1017000080818E7F8083E2EEF0E080818160808343\r
+:10171000808188608083F80180818E7F80838881CA\r
+:1017200080618883DF91CF911F910F910895E8ED3B\r
+:10173000F0E080818F7E8083E7EDF0E08081816042\r
+:10174000808384E082BF81E08093E5010C94540B98\r
+:10175000E8EDF0E080818E7F80831092E2000895B2\r
+:101760001092DA001092E10008951F920F920FB6C6\r
+:101770000F9211242F933F934F935F936F937F9317\r
+:101780008F939F93AF93BF93EF93FF938091E1006B\r
+:1017900082FF0BC08091E20082FF07C08091E100D0\r
+:1017A0008B7F8093E1000E941C0E8091DA0080FF05\r
+:1017B0001FC08091D80080FF1BC08091DA008E7F0F\r
+:1017C0008093DA008091D90080FF0DC080E189BD4F\r
+:1017D00082E189BD09B400FEFDCF81E08093E6017E\r
+:1017E0000E94140805C019BC1092E6010E9422084C\r
+:1017F0008091E10080FF19C08091E20080FF15C058\r
+:101800008091E2008E7F8093E2008091E20080610F\r
+:101810008093E2008091D80080628093D80019BC48\r
+:1018200085E08093E6010E9426088091E10084FF14\r
+:1018300030C08091E20084FF2CC080E189BD82E14C\r
+:1018400089BD09B400FEFDCF8091D8008F7D8093C3\r
+:10185000D8008091E1008F7E8093E1008091E200CA\r
+:101860008F7E8093E2008091E20081608093E200AD\r
+:101870008091E201882311F084E007C08091E300A9\r
+:1018800087FD02C081E001C083E08093E6010E94F1\r
+:1018900028088091E10083FF29C08091E20083FF46\r
+:1018A00025C08091E100877F8093E10082E08093F2\r
+:1018B000E6011092E2018091E1008E7F8093E100C9\r
+:1018C0008091E2008E7F8093E2008091E20080614F\r
+:1018D0008093E20042E060E080E00E94B40A8091E0\r
+:1018E000F00088608093F0000E942508FF91EF913E\r
+:1018F000BF91AF919F918F917F916F915F914F9128\r
+:101900003F912F910F900FBE0F901F9018951F922F\r
+:101910000F920FB60F9211242F933F934F935F9323\r
+:101920006F937F938F939F93AF93BF93CF93DF93E7\r
+:10193000EF93FF93C091E900CF708091EC00D82F16\r
+:10194000D17080FDD0E81092E9008091F000877F8F\r
+:101950008093F00078940E94CB0C1092E900809163\r
+:10196000F00088608093F000CD2BCF70C093E90029\r
+:10197000FF91EF91DF91CF91BF91AF919F918F91A7\r
+:101980007F916F915F914F913F912F910F900FBE7B\r
+:101990000F901F9018951F93CF93DF93CDB7DEB7AD\r
+:1019A000AA970FB6F894DEBF0FBECDBFE7EEF1E009\r
+:1019B00088E08E0F9091F10091938E13FBCF0E94DF\r
+:1019C00044088091E80083FF1FC18091E701909156\r
+:1019D000E801492F50E04A30510508F015C1FA01DD\r
+:1019E000EA5AFF4F0C94BF22803881F0823809F008\r
+:1019F0000BC18091EB018F708093E9008091EB0027\r
+:101A000085FB882780F91092E90006C08091E301E8\r
+:101A10009091E401911182609091E800977F9093FA\r
+:101A2000E8008093F1001092F100C8C0282F2D7FAC\r
+:101A300009F0EAC0882319F0823061F0E5C0809196\r
+:101A4000E901813009F0E0C0933009F080E0809333\r
+:101A5000E4012BC08091E901811127C08091EB0145\r
+:101A60008F7009F4D1C08093E9002091EB0020FF32\r
+:101A70001CC0933021F48091EB00806214C09091DF\r
+:101A8000EB0090619093EB0021E030E0A90102C0EF\r
+:101A9000440F551F8A95E2F74093EA001092EA003E\r
+:101AA0008091EB0088608093EB001092E9008091B8\r
+:101AB000E800877F86C08111A7C01091E9011F77D8\r
+:101AC0008091E3008078812B8093E3008091E8008F\r
+:101AD000877F8093E8000E94E90A8091E80080FFF8\r
+:101AE000FCCF8091E30080688093E300111102C075\r
+:101AF00082E001C083E08093E60186C08058823096\r
+:101B000008F082C08091E9019091EA018C3D53E098\r
+:101B1000950779F583E08A838AE289834FB7F89441\r
+:101B2000DE01139620E03EE051E2E32FF0E0509317\r
+:101B30005700E49120FF03C0E295EF703F5FEF7024\r
+:101B40008E2F90E0EA3010F0C79601C0C0968D93BA\r
+:101B50009D932F5F243149F74FBF8091E800877F25\r
+:101B60008093E8006AE270E0CE0101960E94F009DD\r
+:101B700014C0AE014F5F5F4F6091EB010E943709C7\r
+:101B8000BC01892B09F440C09091E800977F9093A5\r
+:101B9000E80089819A810E94530A8091E8008B773E\r
+:101BA0008093E80031C0803879F58091E800877F24\r
+:101BB0008093E8008091E2018093F1008091E80039\r
+:101BC0008E778093E8000E94E90A1EC081111CC034\r
+:101BD0009091E9019230C0F48091E800877F809372\r
+:101BE000E8009093E2010E94E90A8091E2018111EC\r
+:101BF00006C08091E30087FD02C081E001C084E05F\r
+:101C00008093E6010E9430088091E80083FF0AC0BB\r
+:101C10008091E800877F8093E8008091EB008062EC\r
+:101C20008093EB00AA960FB6F894DEBF0FBECDBF2F\r
+:101C3000DF91CF911F9108950895CF938091E60190\r
+:101C40008823A1F0C091E900CF709091EC00892F1A\r
+:101C5000817090FD80E8C82B1092E9008091E80027\r
+:101C600083FD0E94CB0CCF70C093E900CF91089503\r
+:101C700090936901809368010895E0916801F09163\r
+:101C80006901309721F00190F081E02D099480E006\r
+:101C90000895E0916801F0916901309721F0028088\r
+:101CA000F381E02D09940895E0916801F0916901B4\r
+:101CB000309721F00480F581E02D0994089520915A\r
+:101CC0006601309167018217930771F09093670165\r
+:101CD00080936601E0916801F0916901309721F0ED\r
+:101CE0000680F781E02D09940895209164013091D8\r
+:101CF00065018217930771F09093650180936401E9\r
+:101D0000E0916801F0916901309721F00084F1853C\r
+:101D1000E02D0994089508950C948B0E0E94881A62\r
+:101D20000E940E040C944E1BCF92DF92EF92FF9212\r
+:101D30000F931F93CF93DF93CDB7DEB72B970FB6DB\r
+:101D4000F894DEBF0FBECDBF0E9426048BE6C82EDE\r
+:101D500081E0D82E00E010E0E02E802F0E941405D4\r
+:101D6000F60141916F01F42EF826B1F40F5F1F4F79\r
+:101D70000E30110589F78FEF89838A831B820E94B9\r
+:101D8000911A8160782F9D838C8349815A816B8160\r
+:101D90008D810E94370F40C09091CD0191FF04C00A\r
+:101DA0008B870E941A058B8520E030E04F2D50E094\r
+:101DB000922FBA01022E02C0759567950A94E2F738\r
+:101DC00060FF24C02E83EF8221E030E0690102C071\r
+:101DD000CC0CDD1C9A95E2F790E08C219D21892B9B\r
+:101DE00009F420E028870E94911A8160782F9A8751\r
+:101DF00089874E815F8168858A850E94370FF80147\r
+:101E0000E559FE4F8081C826C08206C02F5F3F4F34\r
+:101E10002630310569F6AACF0E94351E10916A015D\r
+:101E20000E943D0E1817A1F00E943D0E80936A019A\r
+:101E30002B960FB6F894DEBF0FBECDBFDF91CF91CA\r
+:101E40001F910F91FF90EF90DF90CF900C9433078C\r
+:101E50002B960FB6F894DEBF0FBECDBFDF91CF91AA\r
+:101E60001F910F91FF90EF90DF90CF900895CF9347\r
+:101E7000DF93CDB7DEB72B970FB6F894DEBF0FBE5A\r
+:101E8000CDBF4F83588769877A878B87DE0111968C\r
+:101E900086E0FD0111928A95E9F785E0FE0137960B\r
+:101EA00001900D928A95E1F749815A816B817C817D\r
+:101EB0008D819E810E9458162B960FB6F894DEBF36\r
+:101EC0000FBECDBFDF91CF9108950895CF938823A2\r
+:101ED00009F4C2C0C82F823859F40E943D0E81FD1A\r
+:101EE000BBC089E30E94F4180E94C11989E30CC0A9\r
+:101EF000833879F40E943D0E80FDAEC083E50E94D8\r
+:101F0000F4180E94C11983E50E943619CF910C94F0\r
+:101F1000C119843859F40E943D0E82FD9DC087E4AA\r
+:101F20000E94F4180E94C11987E4EECF8CEF8C0F49\r
+:101F3000813A48F48C2F0E947B2081118DC08C2F18\r
+:101F40000E94F418E3CF80E28C0F883048F4C77009\r
+:101F500081E001C0880FCA95EAF70E947A19D6CFAE\r
+:101F60008BE58C0F833078F4C53A29F0C63A31F00E\r
+:101F700083E890E005C081E890E002C082E890E04C\r
+:101F8000CF910C945F0E88E58C0F833108F064C00C\r
+:101F9000C83A39F1C93A41F1CA3A49F1CB3A51F15B\r
+:101FA000CC3A59F1CD3A61F1C03B69F1CE3A71F1C9\r
+:101FB000CF3A79F1C13B81F1C23B89F1C33B91F149\r
+:101FC000C43B99F1C53BA1F1C63BA9F1C73BB1F1B7\r
+:101FD000C83BB9F1C93BC1F1CA3BC9F180E090E00F\r
+:101FE00038C082EE90E035C089EE90E032C08AEED3\r
+:101FF00090E02FC085EB90E02CC086EB90E029C0EC\r
+:1020000087EB90E026C08CEC90E023C08DEC90E054\r
+:1020100020C083E891E01DC08AE891E01AC082E9FF\r
+:1020200091E017C084E991E014C081E292E011C010\r
+:1020300083E292E00EC084E292E00BC085E292E07F\r
+:1020400008C086E292E005C087E292E002C08AE220\r
+:1020500092E0CF910C94750ECF910895882309F4E6\r
+:102060004BC0823859F40E943D0E81FF45C089E380\r
+:102070000E94F4180E94C11989E30CC0833871F4DE\r
+:102080000E943D0E80FF38C083E50E94F4180E9434\r
+:10209000C11983E50E9436190C94C119843859F48A\r
+:1020A0000E943D0E82FF28C087E40E94F4180E941F\r
+:1020B000C11987E4EFCF9CEF980F913A58F390E263\r
+:1020C000980F983050F4877091E001C0990F8A956D\r
+:1020D000EAF7892F0E948019DFCF9BE5980F933094\r
+:1020E00020F480E090E00C945F0E885A833120F455\r
+:1020F00080E090E00C94750E0895882321F00E94F2\r
+:102100007A190C94C1190895882321F00E9480192E\r
+:102110000C94C1190895BF92CF92DF92EF92FF9273\r
+:102120000F931F93CF93DF9300D000D000D0CDB793\r
+:10213000DEB725E0FC01DE01119601900D922A9593\r
+:10214000E1F7FC01D08011810281258122952F7059\r
+:1021500043815481452B09F4EDC21F3F21F4FFEF69\r
+:10216000DF1609F4E7C27C012E830E94650FD98235\r
+:102170001A8389819A810E94B318182FB92E0E9460\r
+:10218000B2180E9479172E81002319F00E94971926\r
+:102190002E81EB2DE295EF70F0E0E05AFF4F0C94AA\r
+:1021A000BF228B2D807F9B2D9F70F92E882319F0E5\r
+:1021B000F29480EFF822002349F0FF2009F467C26F\r
+:1021C0008F2D0E948A190E94C11961C2812F0E941D\r
+:1021D0002E10FF2009F4AEC28F2D0E949019269672\r
+:1021E0000FB6F894DEBF0FBECDBFDF91CF911F9128\r
+:1021F0000F91FF90EF90DF90CF90BF900C94C1199A\r
+:102200003B2D307F8B2D8F70303211F08295807F87\r
+:10221000112319F0113021F12CC00023B9F0222331\r
+:1022200009F4A0C1213009F09DC126960FB6F8949B\r
+:10223000DEBF0FBECDBFDF91CF911F910F91FF90F9\r
+:10224000EF90DF90CF90BF900C94AA19222319F041\r
+:10225000213009F46FC28E830E94AD198E8196C120\r
+:10226000002321F0223008F065C27CC1211162C236\r
+:102270008DC1002321F0222309F474C108C2222356\r
+:1022800009F484C119C22B2D26952695237030E0C0\r
+:102290002115310521F021303105D1F04BC2002349\r
+:1022A00021F0812F9B2D937002C080E090E0269654\r
+:1022B0000FB6F894DEBF0FBECDBFDF91CF911F9157\r
+:1022C0000F91FF90EF90DF90CF90BF900C945F0E36\r
+:1022D000002321F0812F9B2D937002C080E090E0BD\r
+:1022E00026960FB6F894DEBF0FBECDBFDF91CF911B\r
+:1022F0001F910F91FF90EF90DF90CF90BF900C94C3\r
+:10230000750E812F002319F00E943D1D02C00E940E\r
+:10231000A51D26960FB6F894DEBF0FBECDBFDF9188\r
+:10232000CF911F910F91FF90EF90DF90CF90BF90D2\r
+:102330000C942A1E8B2D837009F07BC00111FAC109\r
+:10234000812F829586958770880F880F912F9F70B7\r
+:10235000C92ED12CE12CF12C082E04C0CC0CDD1C94\r
+:10236000EE1CFF1C0A94D2F714FF12C04FE050E09D\r
+:1023700060E070E004C0440F551F661F771F8A9508\r
+:10238000D2F7CB01BA01609570958095909503C006\r
+:1023900060E070E0CB012B2D269526952370422F0F\r
+:1023A00050E042305105D9F04330510569F16C29B4\r
+:1023B0007D298E299F294130510551F126960FB66E\r
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B\r
+:1023D000FF90EF90DF90CF90BF900C94A0176C29E6\r
+:1023E0007D298E299F2926960FB6F894DEBF0FBE51\r
+:1023F000CDBFDF91CF911F910F91FF90EF90DF90B4\r
+:10240000CF90BF900C94BC170E94A017C701B601D3\r
+:1024100026960FB6F894DEBF0FBECDBFDF91CF91E9\r
+:102420001F910F91FF90EF90DF90CF90BF900C9491\r
+:102430008417002319F08B2D817001C086958823A5\r
+:1024400009F478C1812F829586958770880F880F4F\r
+:10245000912F9F70C92ED12CE12CF12C082E04C095\r
+:10246000CC0CDD1CEE1CFF1C0A94D2F714FF12C02A\r
+:102470004FE050E060E070E004C0440F551F661F5D\r
+:10248000771F8A95D2F7CB01BA0160957095809538\r
+:10249000909503C060E070E0CB012B2D269526952A\r
+:1024A0002370422F50E042305105D9F0433051059E\r
+:1024B00069F16C297D298E299F294130510551F1FF\r
+:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139\r
+:1024D0001F910F91FF90EF90DF90CF90BF900C94E1\r
+:1024E0007A186C297D298E299F2926960FB6F89493\r
+:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037\r
+:10250000EF90DF90CF90BF900C9496180E947A18AD\r
+:10251000C701B60126960FB6F894DEBF0FBECDBF39\r
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF\r
+:10253000BF900C945E18103FD1F118F4103E50F487\r
+:10254000A1C0123F09F463C008F44CC0133F09F462\r
+:1025500073C098C01F708B2D8F710023A1F00E9453\r
+:10256000F717812F26960FB6F894DEBF0FBECDBFAA\r
+:10257000DF91CF911F910F91FF90EF90DF90CF905F\r
+:10258000BF900C947D100E941818812F26960FB6CC\r
+:10259000F894DEBF0FBECDBFDF91CF911F910F9199\r
+:1025A000FF90EF90DF90CF90BF900C9484100023A9\r
+:1025B000A9F02111BFC08B2D8F7126960FB6F8940C\r
+:1025C000DEBF0FBECDBFDF91CF911F910F91FF9066\r
+:1025D000EF90DF90CF90BF900C943D18223008F020\r
+:1025E000A9C0E9CF0023A9F08B2D8F7126960FB6D5\r
+:1025F000F894DEBF0FBECDBFDF91CF911F910F9139\r
+:10260000FF90EF90DF90CF90BF900C94F7170023CE\r
+:1026100059F38B2D8F7126960FB6F894DEBF0FBE3F\r
+:10262000CDBFDF91CF911F910F91FF90EF90DF9081\r
+:10263000CF90BF900C941818002399F08B2D8F71B8\r
+:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7\r
+:102650001F910F91FF90EF90DF90CF90BF900C945F\r
+:10266000E21726960FB6F894DEBF0FBECDBFDF91FE\r
+:10267000CF911F910F91FF90EF90DF90CF90BF907F\r
+:102680000C94D8170023A9F0222309F4ADCF812F91\r
+:1026900026960FB6F894DEBF0FBECDBFDF91CF9167\r
+:1026A0001F910F91FF90EF90DF90CF90BF900C940F\r
+:1026B000660F222309F4ADCF812F26960FB6F8942A\r
+:1026C000DEBF0FBECDBFDF91CF911F910F91FF9065\r
+:1026D000EF90DF90CF90BF900C942E104B2D4F7049\r
+:1026E000612FC7010E94AE0226960FB6F894DEBF96\r
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053\r
+:10270000DF90CF90BF900C94FC164B2D4F70612F33\r
+:10271000C70126960FB6F894DEBF0FBECDBFDF917E\r
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE\r
+:102730000C94DA0526960FB6F894DEBF0FBECDBF17\r
+:10274000DF91CF911F910F91FF90EF90DF90CF908D\r
+:10275000BF9008950E9497190E94A7190E946C19B2\r
+:102760000E94C1190E94DA1E0E942A1E80E090E099\r
+:102770000E945F0E80E090E00C94750E0E94871915\r
+:102780000C94AA130E94B318292F22952F7030E0C1\r
+:102790002C3031054CF42A3031056CF422503109CB\r
+:1027A0002230310588F407C02C30310549F02F3034\r
+:1027B000310531F009C0803E48F0803F29F406C061\r
+:1027C00093FB882780F9089580E0089581E00895BB\r
+:1027D000CF93DF9300D000D01F92CDB7DEB70F901C\r
+:1027E0000F900F900F900F90DF91CF910895CF939E\r
+:1027F000DF9300D000D000D0CDB7DEB726960FB65D\r
+:10280000F894DEBF0FBECDBFDF91CF9108951F9327\r
+:10281000CF93DF93C091790116E080917A01C817B8\r
+:1028200099F0D0E01C9FF0011D9FF00D1124E55898\r
+:10283000FE4F4081518162817381848195810E9424\r
+:10284000F7132196C770E9CFDF91CF911F910895BB\r
+:102850004091AB015091AC016091AD017091AE011E\r
+:102860008091AF019091B0010C94F7138091B00169\r
+:1028700082958F7009F054C08091AD01882309F4CE\r
+:102880004FC080917901A0917A016091AB01709164\r
+:10289000AC014091AE015091AF01B6E08A1709F446\r
+:1028A0003FC090E041155105C1F17F3F11F46F3FEA\r
+:1028B000A1F1B89FF001B99FF00D1124E558FE4F2A\r
+:1028C000218172132AC02081621327C02281211125\r
+:1028D00024C0238134812417350710F42150310995\r
+:1028E000241B350B283C3105C0F42091B0012F701A\r
+:1028F00020612093B00126E0289FF001299FF00D70\r
+:102900001124E058FE4F80818F70806180838BEAB4\r
+:1029100091E00E948B100C94071401968770BECF33\r
+:102920000895CF92DF92EF92FF920F931F93CF9370\r
+:10293000DF93CDB7DEB762970FB6F894DEBF0FBE58\r
+:10294000CDBF8C0185E0F801DE011D9601900D924E\r
+:102950008A95E1F7D8014C9111965C9111971296E6\r
+:102960006C9112971396CD90DC9014973091AB0137\r
+:102970007091AC018091AE019091AF01009709F484\r
+:102980006BC17F3F19F43F3F09F466C1E090AD0190\r
+:10299000EE2009F4C0C02091B001C816D90628F075\r
+:1029A000F601E81BF90BCF0104C0809590958C0DC2\r
+:1029B0009D1DFF24F394883C910578F0F12C207F35\r
+:1029C00009F0C6C07C2DD98AC88A89890E94E8137B\r
+:1029D0008BEA91E00E948B10B1C0822F807F09F0BA\r
+:1029E00046C0751314C0341312C0611110C02F708B\r
+:1029F00020612093B0010E9428148BEA91E00E948C\r
+:102A00008B108091B001D80115968C932EC0CD28E3\r
+:102A100019F15F3F11F44F3FF9F0F62E61111CC020\r
+:102A20008091790120917A0136E0821709F45AC029\r
+:102A300090E0389FF001399FF00D1124E558FE4FCA\r
+:102A40007181571306C07081471303C072817111E1\r
+:102A500003C001968770E9CFF62E662309F418C1EA\r
+:102A60008091B00181608093B001F12C11C1751388\r
+:102A700008C0341306C0611104C08091B001D801B0\r
+:102A8000C3C04D875E878D859E856A8B0E94C21369\r
+:102A90006A898823E1F16623D1F12091B001822F68\r
+:102AA00082958F7090E0029774F08091AB019091C5\r
+:102AB000AC0198878F831986DB86CA862C87CE0166\r
+:102AC00007960E948B1086E0F801ABEAB1E0019016\r
+:102AD0000D928A95E1F70E9436140E942814FF2473\r
+:102AE000F394D6C04D875E878D859E850E94B3186E\r
+:102AF000292F22952F7030E0223031050CF0BCC018\r
+:102B00009F7009F0B6C0805E883008F4C1C0C8016B\r
+:102B10000E948B10E4CFC816D90608F453C0F60102\r
+:102B2000E81BF90BCF01883C910508F450C0F12C4B\r
+:102B30007C2DD98AC88A89890E94E813EBEAF1E0E2\r
+:102B400086E0DF011D928A95E9F70E942814A0C053\r
+:102B5000751314C0341312C0611110C08091B001FC\r
+:102B6000F8018583C8010E948B1086E0EBEAF1E052\r
+:102B7000DF011D928A95E9F7FE2C8AC04D875E879A\r
+:102B80008D859E856A8B0E94C2136A89882309F409\r
+:102B9000BECF662309F4BBCF2091B001822F82956E\r
+:102BA0008F7090E002970CF48ECF8091AB019091E2\r
+:102BB000AC019A8389831B82DD82CC822E83CE0175\r
+:102BC00001967FCF809590958C0D9D1DACCFF62EF4\r
+:102BD000662309F49CCF75132EC034132CC02091AA\r
+:102BE000B00120FD1FC0822F82958F70D9F0D801CF\r
+:102BF00015962C9315978F3049F08F5F982F9295EB\r
+:102C0000907F822F8F70892B15968C93C8010E941C\r
+:102C10008B1086E0F801ABEAB1E001900D928A9545\r
+:102C2000E1F793CF86E0F801ABEAB1E001900D92B5\r
+:102C30008A95E1F72DC04D875E878D859E850E9420\r
+:102C4000C213811140CF8091B00181608093B001A7\r
+:102C5000C8010E948B101CC0662309F458CF4D8711\r
+:102C60005E878D859E850E94C213882309F44FCF0D\r
+:102C70002ACF811148CF0CC0243031050CF047CF4A\r
+:102C80009F7009F440CFF8019581907F09F03BCF08\r
+:102C90008F2D62960FB6F894DEBF0FBECDBFDF91C9\r
+:102CA000CF911F910F91FF90EF90DF90CF900895FB\r
+:102CB0001F93CF93DF93CDB7DEB72C970FB6F89461\r
+:102CC000DEBF0FBECDBF4F83588769877A878B875A\r
+:102CD0009C87CE0107960E949114882369F08F810A\r
+:102CE00098852A853B85232BF1F19F3F09F063C02E\r
+:102CF0008F3F09F060C037C086E0FE013796DE01E5\r
+:102D0000119601900D928A95E1F76F817885EA8599\r
+:102D1000FB85309741F17F3F11F46F3F21F1209106\r
+:102D20007A0130E0C90101968770992740917901B5\r
+:102D300050E08417950709F447C069837A83FD83BF\r
+:102D4000EC8396E0929FD001939FB00D1124A5587B\r
+:102D5000BE4FFE01319601900D929A95E1F7809356\r
+:102D60007A010E94071416E08091790190917A010E\r
+:102D70008917C1F1189FC001112485589E4F0E94E8\r
+:102D80009114882379F1E09179011E9FF0011124BB\r
+:102D9000E558FE4F40815181628173818481958124\r
+:102DA0000E94F7138091790190E00196877099272E\r
+:102DB00080937901D9CF4F81588569857A858B8534\r
+:102DC0009C850E94F713CFCF0E94BE1310927A0108\r
+:102DD00010927901EBEAF1E086E0DF011D928A951D\r
+:102DE000E9F7C1CF2C960FB6F894DEBF0FBECDBF6A\r
+:102DF000DF91CF911F910895EF92FF920F931F9350\r
+:102E0000CF93DF938C01892B09F46CC0F12CEE2455\r
+:102E1000E394E8012196F8018491843740F48430EA\r
+:102E200008F051C0813081F0823019F15BC08537E4\r
+:102E300009F444C0A8F19CE7980F903708F052C0FD\r
+:102E40008F770E942E1041C00E5F1F4FFE01C4916C\r
+:102E500080E28C0F883048F4C7708E2D01C0880F37\r
+:102E6000CA95EAF70E949A1914C08C2F0E94660F27\r
+:102E70002DC00E5F1F4FFE01C49180E28C0F883081\r
+:102E800058F4C7708E2D01C0880FCA95EAF70E94CA\r
+:102E9000A0190E94C1191AC08C2F0E942E1016C0B2\r
+:102EA0000E5F1F4FFE01C491CC2381F08FE99FE09C\r
+:102EB0000197F1F700C00000C150F6CF0E5F1F4F21\r
+:102EC000FE01F49003C00E94660F8E018F2D8823AF\r
+:102ED00009F49FCFEFE9FFE03197F1F700C0000060\r
+:102EE0008150F5CFDF91CF911F910F91FF90EF901F\r
+:102EF000089508956093B5017093B6018093B7016A\r
+:102F00009093B8010C94AA130F931F930091B501ED\r
+:102F10001091B6012091B7013091B801DC01CB01CD\r
+:102F2000802B912BA22BB32B8093B5019093B601EC\r
+:102F3000A093B701B093B8011F910F910C94AA13FD\r
+:102F40000F931F930091B5011091B6012091B70125\r
+:102F50003091B801DC01CB0180239123A223B3235C\r
+:102F60008093B5019093B601A093B701B093B801D7\r
+:102F70001F910F910C94AA130F931F930091B50109\r
+:102F80001091B6012091B7013091B801DC01CB015D\r
+:102F900080279127A227B3278093B5019093B6018C\r
+:102FA000A093B701B093B8011F910F910C94AA138D\r
+:102FB0001092B1011092B2011092B3011092B401BB\r
+:102FC0000C94AA1341E050E060E070E004C0440FAC\r
+:102FD000551F661F771F8A95D2F74093B101509312\r
+:102FE000B2016093B3017093B4010C94AA1341E051\r
+:102FF00050E060E070E004C0440F551F661F771F6B\r
+:103000008A95D2F78091B1019091B201A091B3015C\r
+:10301000B091B401482B592B6A2B7B2B4093B10103\r
+:103020005093B2016093B3017093B4010C94AA134E\r
+:1030300041E050E060E070E004C0440F551F661F9F\r
+:10304000771F8A95D2F7409550956095709580913D\r
+:10305000B1019091B201A091B301B091B4014823A4\r
+:1030600059236A237B234093B1015093B2016093AB\r
+:10307000B3017093B4010C94AA1341E050E060E0F6\r
+:1030800070E004C0440F551F661F771F8A95D2F762\r
+:103090008091B1019091B201A091B301B091B401BE\r
+:1030A000482759276A277B274093B1015093B201E3\r
+:1030B0006093B3017093B4010C94AA130F931F9300\r
+:1030C0000091B1011091B2012091B3013091B4018E\r
+:1030D000DC01CB01802B912BA22BB32B8093B10170\r
+:1030E0009093B201A093B301B093B4011F910F91DB\r
+:1030F0000C94AA130F931F930091B1011091B20188\r
+:103100002091B3013091B401DC01CB0180239123E4\r
+:10311000A223B3238093B1019093B201A093B30192\r
+:10312000B093B4011F910F910C94AA130F931F93A6\r
+:103130000091B1011091B2012091B3013091B4011D\r
+:10314000DC01CB0180279127A227B3278093B1010F\r
+:103150009093B201A093B301B093B4011F910F916A\r
+:103160000C94AA130895CF92DF92EF92FF920F93DF\r
+:103170001F93CF93DF938C01C090B501D090B6011F\r
+:10318000E090B701F090B8014091B1015091B201C7\r
+:103190006091B3017091B401C42AD52AE62AF72AB6\r
+:1031A000CFE1D0E0D701C6010C2E04C0B695A7959B\r
+:1031B000979587950A94D2F780FF07C0B8018C2FA6\r
+:1031C0000E94FD058130910531F4219758F7B8012F\r
+:1031D00080E00E94FD05DF91CF911F910F91FF903C\r
+:1031E000EF90DF90CF90089590910C01992321F0FA\r
+:1031F00090910D01911109C020910E0130910F01A4\r
+:10320000F90132969FEF40E01FC0982F9695969552\r
+:1032100096959F3050F5E0910E01F0910F01E90F66\r
+:10322000F11D877021E030E0A90102C0440F551F55\r
+:103230008A95E2F7CA019181892B818308959F3F86\r
+:1032400039F04F5F4E3041F051915813F8CF0DC017\r
+:103250005111F7CF942FF5CF9F3F39F0F901E90FC6\r
+:10326000F11D97FDFA9582830895089590910C01C0\r
+:10327000992321F090910D01911109C020910E0127\r
+:1032800030910F01F9013296205F3F4F1FC0982FF8\r
+:103290009695969596959F30F0F4E0910E01F091F9\r
+:1032A0000F01E90FF11D877021E030E0A90102C094\r
+:1032B000440F551F8A95E2F7CA01809591818923B1\r
+:1032C000818308953196E217F30729F090819813CE\r
+:1032D000F9CF1082F7CF089581E090E0E0910E01E0\r
+:1032E000F0910F01E80FF91F1082019680319105CE\r
+:1032F000A9F708959091CC01892B8093CC01089572\r
+:1033000080959091CC0189238093CC0108951092EF\r
+:10331000CC0108959091CB01892B8093CB01089526\r
+:1033200080959091CB0189238093CB0108951092D1\r
+:10333000CB0108959091CA01892B8093CA01089509\r
+:1033400080959091CA0189238093CA0108951092B3\r
+:10335000CA0108958093B90108951092B9010895A2\r
+:1033600080910E0190910F01FC0131969C01205F2C\r
+:103370003F4F80E0919191118F5FE217F307D1F7F2\r
+:103380000895E0910E01F0910F018091CC018083AE\r
+:10339000E0910E01F0910F0190818091CB01892B7A\r
+:1033A0008083E0910E01F0910F0190818091CA011C\r
+:1033B000892B80838091B901882361F0E0910E010F\r
+:1033C000F0910F019081892B80830E94B0198111A7\r
+:1033D0001092B90180910E0190910F010C94490E49\r
+:1033E000CF92DF92EF92FF926C01EE24FF24C11482\r
+:1033F000D104E104F10421F0C701B60120E101C0CC\r
+:1034000020E0C72ED82EE92EFF24C114D104E104F8\r
+:10341000F10419F0285FC701B6016B017C0154E08B\r
+:10342000F694E794D794C7945A95D1F7C114D10470\r
+:10343000E104F10419F02C5FC701B6016B017C01B6\r
+:1034400042E0F694E794D794C7944A95D1F7C11413\r
+:10345000D104E104F10419F02E5FC701B601DC01CB\r
+:10346000CB01B695A79597958795892B8A2B8B2BA2\r
+:1034700009F02F5F822FFF90EF90DF90CF9008959B\r
+:103480008091E601843039F11092CE0120E488E188\r
+:1034900090E00FB6F894A895809360000FBE20933B\r
+:1034A000600080E00E94330783B7817F846083BF20\r
+:1034B00083B7816083BF7894889583B78E7F83BFFD\r
+:1034C0000FB6F894A89580916000886180936000A1\r
+:1034D000109260000FBE089508950895CF930E9442\r
+:1034E0006C1A0E9426040E946D1AC0E08C2F0E9464\r
+:1034F0001405811104C0CF5FCE30C1F701C081E057\r
+:10350000CF9108950E94BE130E943D0E0C94330784\r
+:1035100082E084BD93E095BD9AEF97BD80936E00E5\r
+:1035200008952FB7F8948091CF019091D001A09188\r
+:10353000D101B091D2012FBF0895CF92DF92EF92C7\r
+:10354000FF920F931F932FB7F8944091CF015091A2\r
+:10355000D0016091D1017091D2012FBF6A017B012E\r
+:10356000EE24FF248C0120E030E0C016D106E206F4\r
+:10357000F30610F4415051099A01281B390BC90177\r
+:103580001F910F91FF90EF90DF90CF9008951F92C1\r
+:103590000F920FB60F9211248F939F93AF93BF9307\r
+:1035A0008091CF019091D001A091D101B091D20131\r
+:1035B0000196A11DB11D8093CF019093D001A093DE\r
+:1035C000D101B093D201BF91AF919F918F910F9094\r
+:1035D0000FBE0F901F9018950E943A0BF8942FEF92\r
+:1035E00087EA91E6215080409040E1F700C000005A\r
+:1035F00087E090EBDC018093EF019093F001A093C2\r
+:10360000F101B093F2019CE088E10FB6F894A8951F\r
+:10361000809360000FBE90936000FFCFEF92FF9207\r
+:103620000F931F93CF93DF93D82FC0E08C2F0E946E\r
+:10363000140500E010E0E82EF12CC701002E02C0B6\r
+:10364000959587950A94E2F780FD06C00F5F1F4F9E\r
+:103650000630110591F709C0602F7C2F80E00E9491\r
+:10366000DB05D813F3CF81E004C0CF5FCE30F1F695\r
+:1036700080E0DF91CF911F910F91FF90EF9008951F\r
+:10368000CF93C82F8CE20E940E1B882321F08C2F31\r
+:10369000CF910C940E1B80E0CF910895CF930E94A0\r
+:1036A000951C811102C00E947B1CC5E6C15049F0E7\r
+:1036B0000E9426048FE39CE90197F1F700C0000007\r
+:1036C000F5CF89E20E94401B811113C18AE20E945A\r
+:1036D000401B81110E947B1C85E00E94401B8111D0\r
+:1036E0000E94EC1A0E94A01C8093CD0187E00E94EA\r
+:1036F000401B8823A9F18BE10E94401B882351F0D5\r
+:103700008091CD0181FB222720F991E0922790FB47\r
+:1037100081F90EC08EE00E94401B882361F08091E9\r
+:10372000CD0182FB222720F991E0922790FB82F9BC\r
+:103730008093CD0115C080E10E94401B9091CD0186\r
+:10374000882341F093FB222720F981E0822780FB28\r
+:1037500093F904C0892F809580FB90F99093CD0157\r
+:103760008091CD010E94A41C0E94B21C8093E001B4\r
+:1037700080EE0E94401B882341F08091E001982F49\r
+:10378000909590FB80F98093E00189E30E94401BB3\r
+:10379000882359F08091E00181FB222720F991E0F4\r
+:1037A000922790FB81F98093E00182EE0E94401BFA\r
+:1037B000882359F08091E00182FB222720F991E0D3\r
+:1037C000922790FB82F98093E00186EE0E94401BD5\r
+:1037D000882359F08091E00183FB222720F991E0B2\r
+:1037E000922790FB83F98093E00183EE0E94401BB7\r
+:1037F000882359F08091E00184FB222720F991E091\r
+:10380000922790FB84F98093E00185E30E94401B9E\r
+:10381000882359F08091E00185FB222720F991E06F\r
+:10382000922790FB85F98093E00181E30E94401B81\r
+:10383000882359F08091E00186FB222720F991E04E\r
+:10384000922790FB86F98093E00181E10E94401B62\r
+:10385000882359F08091E00187FB222720F991E02D\r
+:10386000922790FB87F98093E0018091E0010E940C\r
+:10387000B61C8091E00187FB882780F980930D01B9\r
+:1038800087E20E94401BC82F8EE10E94401B8111DD\r
+:10389000C2608FE10E94401B8111C46080E20E94DF\r
+:1038A000401B8111C86081E20E94401B8111C061F0\r
+:1038B00082E20E94401B8111C06283E20E94401B91\r
+:1038C0008111C06484E20E94401B882311F0C0680B\r
+:1038D00002C0CC2329F08C2F0E94AD1C6C2F03C09A\r
+:1038E0000E94A91C682F70E080E090E0CF910C94BA\r
+:1038F0007A17CF9108956DEE7EEF80E090E00E9400\r
+:10390000F52260E082E090E00E94E72260E083E040\r
+:1039100090E00E94E72260E084E090E00E94E722CD\r
+:1039200060E085E090E00C94E72280E090E00E9467\r
+:10393000E12221E08D3E9E4F09F020E0822F089584\r
+:1039400082E090E00C94D922682F82E090E00C9401\r
+:10395000E72283E090E00C94D922682F83E090E086\r
+:103960000C94E72284E090E00C94D922682F84E044\r
+:1039700090E00C94E7228091D50180FF0BC060910C\r
+:10398000130185E0689FB0011124759567957595C1\r
+:1039900067952BC081FF09C06091130185E0689F86\r
+:1039A000B00111247595679520C082FF07C0609112\r
+:1039B000130185E0689FB001112417C09091D601D2\r
+:1039C0009923D1F060911201961788F72091130185\r
+:1039D00085E0289F90011124929FA001939F500D94\r
+:1039E000112470E0CA010E94AB226038710540F4D6\r
+:1039F0006115710539F002C065E070E0862F089509\r
+:103A00008FE7089581E008958091D50180FF08C077\r
+:103A10006091110170E0759567957595679521C066\r
+:103A200081FF06C06091110170E07595679519C01E\r
+:103A300082FF04C06091110170E010C09091D60126\r
+:103A40009923C1F0609110019617A0F780911101A0\r
+:103A5000899FC001112470E00E94AB22603871057B\r
+:103A600028F46115710521F0862F08958FE70895D8\r
+:103A700081E0089561E070E0F4CF803F21F40E947E\r
+:103A8000BB1C819504C0813F29F40E94BB1C80931C\r
+:103A9000D9010895823F21F40E94BB1C819504C086\r
+:103AA000833F29F40E94BB1C8093D8010895893F6D\r
+:103AB00019F40E94041D05C08A3F31F40E94041DC0\r
+:103AC00081958093DA0108958B3F21F40E94041DB3\r
+:103AD000819504C08C3F29F40E94041D8093DB0172\r
+:103AE0000895843F21F48091D701816017C0853FFC\r
+:103AF00021F48091D701826011C0863F21F480912A\r
+:103B0000D70184600BC0873F21F48091D701886082\r
+:103B100005C0883F31F48091D70180618093D7013F\r
+:103B200008958D3F21F48091D50181600BC08E3FB7\r
+:103B300021F48091D501826005C08F3F29F48091E6\r
+:103B4000D50184608093D5010895803F39F4809138\r
+:103B5000D90187FF6CC01092D90169C0813F29F457\r
+:103B60008091D9011816BCF362C09091D801823FB0\r
+:103B700029F497FF5CC01092D80159C0833F19F413\r
+:103B80001916CCF354C0893F41F48091DA0118161C\r
+:103B90000CF04DC01092DA014AC08A3F29F480919E\r
+:103BA000DA0187FF44C0F6CF8B3F39F48091DB0107\r
+:103BB00087FF3DC01092DB013AC08C3F29F4809111\r
+:103BC000DB011816BCF333C0843F21F48091D70188\r
+:103BD0008E7F17C0853F21F48091D7018D7F11C062\r
+:103BE000863F21F48091D7018B7F0BC0873F21F462\r
+:103BF0008091D701877F05C0883F31F48091D7013C\r
+:103C00008F7E8093D70113C08D3F21F48091D50121\r
+:103C10008E7F0BC08E3F21F48091D5018D7F05C032\r
+:103C20008F3F29F48091D5018B7F8093D5018091BE\r
+:103C3000D80181110EC08091D90181110AC08091F3\r
+:103C4000DA01811106C08091DB01811102C010925E\r
+:103C5000D601089587ED91E00E94540E0E94911ABA\r
+:103C60009093D4018093D30108951F93CF93DF9352\r
+:103C70008091D3019091D4010E949D1AAC01909142\r
+:103C8000D601992321F02091140130E006C0209143\r
+:103C900015018AE0289F900111244217530708F468\r
+:103CA00085C08091D801C091D901D091DA011091DD\r
+:103CB000DB01811107C0C11175C0D11173C0111191\r
+:103CC00071C074C09F3F19F09F5F9093D601181682\r
+:103CD00024F40E94BB1C8093D8018091D80187FFF7\r
+:103CE00005C00E94BB1C81958093D8011C1624F44A\r
+:103CF0000E94BB1C8093D9018091D90187FF05C028\r
+:103D00000E94BB1C81958093D9016091D8016623E4\r
+:103D100031F1C091D901CC2311F1062E000C770BA3\r
+:103D2000880B990B0E94B22123E333E343E35FE363\r
+:103D30000E9416220E947A216093D8016C2FCC0F2A\r
+:103D4000770B880B990B0E94B22123E333E343E303\r
+:103D50005FE30E9416220E947A216093D9011D160A\r
+:103D600024F40E94041D8093DA018091DA0187FF18\r
+:103D700005C00E94041D81958093DA01111624F478\r
+:103D80000E94041D8093DB018091DB0187FF05C049\r
+:103D90000E94041D81958093DB01DF91CF911F91DB\r
+:103DA0000C942A1E9F3F09F08FCF97CFDF91CF91C0\r
+:103DB0001F910895E7EDF1E085E0DF011D928A95FE\r
+:103DC000E9F71092D6011092D5010895833081F160\r
+:103DD00028F4813059F08230D1F00895853009F40B\r
+:103DE00049C0B8F1863009F456C008958091150194\r
+:103DF000262F30E0280F311D2F3F310524F4680FA6\r
+:103E00006093150108958FEF8093150108958091B7\r
+:103E10001401262F30E0280F311D2F3F310524F4E7\r
+:103E2000680F6093140108958FEF80931401089533\r
+:103E300080911301262F30E0280F311D2F3F3105CF\r
+:103E400024F4680F6093130108958FEF809313019A\r
+:103E5000089580911201262F30E0280F311D2F3F49\r
+:103E6000310524F4680F6093120108958FEF809359\r
+:103E70001201089580911101262F30E0280F311D85\r
+:103E80002F3F310524F4680F6093110108958FEFDF\r
+:103E900080931101089580911001262F30E0280FA2\r
+:103EA000311D2F3F310524F4680F609310010895F0\r
+:103EB0008FEF809310010895833011F128F4813041\r
+:103EC00049F0823091F00895853081F120F18630FB\r
+:103ED000C1F1089580911501681720F4861B809325\r
+:103EE0001501089510921501089580911401681725\r
+:103EF00020F4861B809314010895109214010895F4\r
+:103F000080911301681720F4861B80931301089594\r
+:103F100010921301089580911201681720F4861BF6\r
+:103F20008093120108951092120108958091110159\r
+:103F3000681720F4861B80931101089510921101D7\r
+:103F4000089580911001681720F4861B809310015A\r
+:103F500008951092100108950F931F938D3109F465\r
+:103F60006AC008F03FC08E3009F484C0C0F48730C6\r
+:103F700009F46DC068F4863009F0B5C08091CD01B8\r
+:103F8000817F8E7F8093CD0181E08093DD01ACC085\r
+:103F9000883009F457C08B3009F46AC0A4C0863158\r
+:103FA00009F466C078F4803109F477C0813109F0F2\r
+:103FB0009AC00E94BE1390910D0181E089278093E1\r
+:103FC0000D0156C0893109F453C08B3109F08BC003\r
+:103FD0008091CD0181FB222720F991E0922790FB6F\r
+:103FE00081F951C0853309F475C048F4873209F46A\r
+:103FF00071C008F45EC0893209F46CC074C08334A7\r
+:1040000030F48A3308F053C0883391F16CC08334A4\r
+:1040100009F460C0883409F066C00E94BE130FEF37\r
+:1040200013ED20E3015010402040E1F700C00000F4\r
+:104030000E94EC1A1DC00E9434210E943D0E0E9475\r
+:10404000330716C00E94A01C0E94B21C11C09091A0\r
+:10405000CD01892F8095817080FB90F929F09660C1\r
+:1040600098609093CD0140C0997F977F9093CD0148\r
+:1040700081E03AC08091CD0182FB222720F991E0B6\r
+:10408000922790FB82F98093CD01992389F3809147\r
+:10409000CD0181608093CD01EBCF8091CD0183FB79\r
+:1040A000222720F991E0922790FB83F9ECCF8953E6\r
+:1040B00001C08D5141E050E060E070E08A019B0159\r
+:1040C00004C0000F111F221F331F8A95D2F7C901A8\r
+:1040D000B80104C061E070E080E090E00E947A17CF\r
+:1040E0000E94BE13C5CF80E01F910F91089580E01C\r
+:1040F000089580E00895CF93C82F8091DD0181302D\r
+:1041000079F018F08230E9F187C0E0910E01F0916A\r
+:104110000F018081813169F0823209F07FC009C0CE\r
+:10412000E0910E01F0910F018081813111F0823216\r
+:1041300061F48C2F0E947720811104C08C2F0E9483\r
+:10414000AC1F1DC081E090E01AC08C2F0E94792026\r
+:10415000811114C0C43179F048F4CB3079F0C0310A\r
+:1041600009F060C082E08093DD0108C0C93219F017\r
+:10417000C83321F057C01092DD0154C081E0817036\r
+:1041800053C0C93289F118F5C43171F1A8F4C730B0\r
+:1041900009F046C08AE08093150194E190931401E0\r
+:1041A00093E0909313018093120188E080931101B2\r
+:1041B00088E28093100134C0CE51C63088F5EC2FD0\r
+:1041C000F0E0E65DFE4F80818093DC0129C0CE34B3\r
+:1041D000E9F020F4CB3421F56AE013C0C13579F061\r
+:1041E000C235F1F461E00DC08091DC01882319F043\r
+:1041F0001092DC0115C081E08093DD0115C061E003\r
+:1042000006C08091DC010E94E61E0AC06AE080912F\r
+:10421000DC010E945C1F04C01092DD0180E004C03C\r
+:1042200081E002C080E0ABCFCF910895E1E8F0E0FB\r
+:104230008081886080838081816080838FB7F894DB\r
+:1042400093E09093890090ED909388008FBF08953C\r
+:10425000EFE6F0E08081826080830895EFE6F0E091\r
+:1042600080818D7F80830895EFE6F0E0908182E089\r
+:104270008927808308951F920F920FB60F92112401\r
+:104280002F933F934F935F936F937F938F939F935E\r
+:10429000AF93BF93EF93FF938091DE019091DF0185\r
+:1042A00001969093DF018093DE01811103C082E0CB\r
+:1042B0000E943307E091DF01E695E695F0E0E657CE\r
+:1042C000FB4FE4918091DE018E1303C080E00E94D9\r
+:1042D0003307FF91EF91BF91AF919F918F917F91A4\r
+:1042E0006F915F914F913F912F910F900FBE0F9063\r
+:1042F0001F9018950E9481216894B1110C9410228E\r
+:1043000008950E94F52188F09F5798F0B92F9927BA\r
+:10431000B751B0F0E1F0660F771F881F991F1AF0B0\r
+:10432000BA95C9F714C0B13091F00E940F22B1E0E4\r
+:1043300008950C940F22672F782F8827B85F39F0E3\r
+:10434000B93FCCF3869577956795B395D9F73EF449\r
+:1043500090958095709561957F4F8F4F9F4F0895F1\r
+:10436000E89409C097FB3EF490958095709561950F\r
+:104370007F4F8F4F9F4F9923A9F0F92F96E9BB27C5\r
+:104380009395F695879577956795B795F111F8CF41\r
+:10439000FAF4BB0F11F460FF1BC06F5F7F4F8F4FAC\r
+:1043A0009F4F16C0882311F096E911C0772321F0A2\r
+:1043B0009EE8872F762F05C0662371F096E8862F3A\r
+:1043C00070E060E02AF09A95660F771F881FDAF791\r
+:1043D000880F9695879597F9089557FD9058440F43\r
+:1043E000551F59F05F3F71F04795880F97FB991F54\r
+:1043F00061F09F3F79F08795089512161306140611\r
+:10440000551FF2CF4695F1DF08C01616170618069D\r
+:10441000991FF1CF86957105610508940895E89478\r
+:10442000BB2766277727CB0197F908950E94292299\r
+:104430000C949A220E948C2238F00E94932220F041\r
+:10444000952311F00C9483220C94892211240C944E\r
+:1044500010220E94ED2170F3959FC1F3950F50E05B\r
+:10446000551F629FF001729FBB27F00DB11D639F26\r
+:10447000AA27F00DB11DAA1F649F6627B00DA11DCC\r
+:10448000661F829F2227B00DA11D621F739FB00D72\r
+:10449000A11D621F839FA00D611D221F749F3327E2\r
+:1044A000A00D611D231F849F600D211D822F762F7B\r
+:1044B0006A2F11249F5750409AF0F1F088234AF058\r
+:1044C000EE0FFF1FBB1F661F771F881F91505040C4\r
+:1044D000A9F79E3F510580F00C9483220C94102282\r
+:1044E0005F3FE4F3983ED4F3869577956795B7954B\r
+:1044F000F795E7959F5FC1F7FE2B880F911D969565\r
+:10450000879597F9089597F99F6780E870E060E0D4\r
+:1045100008959FEF80EC089500240A94161617065C\r
+:1045200018060906089500240A94121613061406A4\r
+:1045300005060895092E0394000C11F4882352F007\r
+:10454000BB0F40F4BF2B11F460FF04C06F5F7F4FBF\r
+:104550008F4F9F4F089597FB072E16F4009407D0B6\r
+:1045600077FD09D00E94C52207FC05D03EF4909546\r
+:1045700081959F4F0895709561957F4F0895EE0F37\r
+:10458000FF1F0590F491E02D0994AA1BBB1B51E17C\r
+:1045900007C0AA1FBB1FA617B70710F0A61BB70BB3\r
+:1045A000881F991F5A95A9F780959095BC01CD0158\r
+:1045B0000895F999FECF92BD81BDF89A992780B5EB\r
+:1045C0000895A8E1B0E042E050E00C94FC22262FD0\r
+:1045D000F999FECF1FBA92BD81BD20BD0FB6F894E8\r
+:1045E000FA9AF99A0FBE019608950E94E722272FA2\r
+:1045F0000C94E822DC01CB01FC01F999FECF06C046\r
+:10460000F2BDE1BDF89A319600B40D924150504090\r
+:08461000B8F70895F894FFCFFC\r
+:1046180020023507C307A0076C0738070101BA0154\r
+:1046280028080A03140A3F4D36394B04FE03C80311\r
+:104638008F0322033B0354036D03010203040506A1\r
+:044648000708090056\r
+:00000001FF\r
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | BrBck| | Play | 6 | 7 | 8 | 9 | 0 | \ / L2 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Esc | ' | , | . | P | Y | Del | | Ins | F | G | C | R | L | / |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | BkSp | A | O | E | U | I |------| |------| D | H | T | N | S | - |
+ * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl| Q | J | K | X | | | | B | M | W | V |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |Grv/L1| LAlt | LGui | Left | Right| | Up | Down | [ | ] | ~L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,---------------.
+ * | App | L1 | | L2 |PrntScr |
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * | Space| Tab |------| |------| AltShf |Enter |
+ * | | | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ */
+// 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_WBAK,
+ KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_DELT,
+ KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
+ KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO),
+ LT(SYMB,KC_GRV),KC_LALT, KC_LGUI, KC_LEFT,KC_RGHT,
+ CTL_T(KC_APP), TG(1),
+ KC_HOME,
+ KC_SPC,KC_TAB,KC_END,
+ // right hand
+ KC_MPLY, KC_6, KC_7, KC_8, KC_9, KC_0, LT(MDIA, KC_BSLS),
+ KC_INS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
+ KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
+ MEH_T(KC_NO),KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSFT,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
+ TG(2), KC_PSCREEN,
+ KC_PGUP,
+ KC_PGDN,RALT(KC_RSFT), KC_ENT
+ ),
+/* Keymap 1: Symbol & Media Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Prev | Next | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | |VolUp | | |
+ * | | |------| |------| Mute | |
+ * | | | | |VolDn | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MNXT,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_VOLU,
+ KC_VOLD, KC_MUTE, KC_TRNS
+),
+/* Keymap 2: QWERTY Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | A | S | D | F | G |------| |------| H | J | K | L | ; | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+KEYMAP( // layer 0 : default
+ // left hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS,
+ KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_TRNS, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
+ KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_TRNS,
+ KC_TRNS, KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
-:100000000C9465020C94AC020C94AC020C94AC02FF\r
-:100010000C94AC020C94AC020C94AC020C94AC02A8\r
-:100020000C94AC020C94AC020C94C30B0C94950C85\r
-:100030000C94AC020C94AC020C94AC020C94AC0288\r
-:100040000C94AC020C9409210C94AC020C94AC02FC\r
-:100050000C94AC020C949B1A0C94AC020C94AC0261\r
-:100060000C94AC020C94AC020C94AC020C94AC0258\r
-:100070000C94AC020C94AC020C94AC020C94AC0248\r
-:100080000C94AC020C94AC020C94AC020C94AC0238\r
-:100090000C94AC020C94AC020C94AC020C94AC0228\r
-:1000A0000C94AC020C94AC020C94AC02020D240D26\r
-:1000B000170E240D170E690D8C0D170EE10DF40DA2\r
-:1000C000DE10DE100D110D1150118A1197139713C8\r
-:1000D000A3119713981298126B1397139713821307\r
-:1000E0000000F0A12E004C002A00E1003581000044\r
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94A00C0C94720DCF\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C9446220C94A9020C94A902C7\r
+:100050000C94A9020C94EA1B0C94A9020C94A9021A\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902D70DF90D85\r
+:1000B000E40EF90DE40E3B0E5E0EE40EB30EC60E1A\r
+:1000C000C011C0110112011243127F127F147F145C\r
+:1000D00097127F148E138E1359147F147F146D148E\r
+:1000E0000000F0A12E004C002A00003035810000F5\r
:1000F0001E00140004001D7134004D001F001A0082\r
:1001000016001B00E104C1002000080007000600E3\r
:1001100050002C0021001500090019004F004A0072\r
:10012000220017000A000500000065745000015409\r
-:100130000000007F0000E3004F0001540000007742\r
+:1001300000002F7F0000E3004F00015400003077E3\r
:100140000000E20023001C000B00110000002971D8\r
:10015000240018000D74100052004B0025000C0004\r
:100160000E00360051002800260012000F00370054\r
:100170002F002B81270013003382387130004E008E\r
-:100180002D0031003478E500C100000001000100BD\r
+:100180002D003100347801302D0000000100010005\r
:1001900001000100010000003A001E0022002602BA\r
:1001A000010001003B001F002300270201000100A5\r
:1001B0003C00200024002F004B0101003D002100E5\r
:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
:1004B000B39D87715D4A3A2C20170F0A060402018A\r
:1004C0000000000000000000000011241FBECFEF5C\r
-:1004D000DAE0DEBFCDBF04B603FE27C08091ED0198\r
-:1004E0009091EE01A091EF01B091F0018730904B17\r
-:1004F000A740B04BD1F41092ED011092EE01109292\r
-:10050000EF011092F00114BE84B7877F84BF0FB64D\r
-:10051000F894A895809160008861809360001092A3\r
-:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C\r
-:10053000E4EBF5E402C005900D92A433B107D9F7BE\r
-:1005400021E0A4E3B1E001C01D92AD3EB207E1F7A6\r
-:100550000E940A090C94D8220C94000061110BC06F\r
-:10056000FC018281882321F085EE0E94780F03C070\r
-:1005700085EE0E94401080E090E00895089560911B\r
-:10058000B1017091B2018091B3019091B4010E94C8\r
-:10059000C81956985E9825982D9826982E982798D1\r
-:1005A0002F98813019F0823021F00895259A2D9AE4\r
-:1005B0000895269A2E9A08950C94BF0256985E9834\r
-:1005C00025982D9826982E9827982F988FEF90E0B1\r
-:1005D000909389008093880090938B0080938A0089\r
-:1005E00090938D0080938C00259A2D9A2FEF80E7B1\r
-:1005F00092E0215080409040E1F700C00000269A30\r
-:100600002E9A2FEF80E792E0215080409040E1F752\r
-:1006100000C00000279A2F9A2FEF80E792E0215028\r
-:1006200080409040E1F700C0000025982D982FEF02\r
-:1006300080E792E0215080409040E1F700C0000048\r
-:1006400026982E982FEF80E792E02150804090402E\r
-:10065000E1F700C0000027982F9856985E982598DB\r
-:100660002D9826982E9827982F98089589EA809398\r
-:10067000800089E08093810024982C983F988AB16B\r
-:100680008F748AB96E98479A8BB1806B8BB9769AC2\r
-:100690000E94DE020C94BE0280E2809300018091F1\r
-:1006A000340181110EC00E949B0381E080933401CC\r
-:1006B0002FEF83ED90E3215080409040E1F700C0A0\r
-:1006C000000080E40E94A1038093000181112EC0EC\r
-:1006D0000E94CB0380930001811128C00E94CB03AC\r
-:1006E00080930001811122C08FE30E94CB0380938D\r
-:1006F000000181111BC00E94C30380E40E94A1037A\r
-:1007000080930001811112C08CE00E94CB03809382\r
-:10071000000181110BC00E94CB0380930001811165\r
-:1007200005C08FE30E94CB03809300010E94C303A6\r
-:100730008091000108951092B9008AE08093B8007A\r
-:10074000089594EA9093BC009091BC0097FFFCCF71\r
-:100750009091B900987F983021F0903111F081E0AC\r
-:1007600008958093BB0084E88093BC008091BC0016\r
-:1007700087FFFCCF8091B900887F883111F08034E9\r
-:1007800071F780E0089584E98093BC008091BC00FB\r
-:1007900084FDFCCF08958093BB0084E88093BC0067\r
-:1007A0008091BC0087FFFCCF9091B900987F81E0D9\r
-:1007B000983209F480E0089584E88093BC00809129\r
-:1007C000BC0087FFFCCF8091BB00089580910001A1\r
-:1007D000811115C080E40E94A10380930001811162\r
-:1007E0000CC082E10E94CB0380930001811105C0FF\r
-:1007F0008FEF0E94CB03809300010E94C30384B15A\r
-:10080000807F84B985B1807F85B98AB1837F8AB9B9\r
-:100810008BB1837F8BB93E98469808950E944C0314\r
-:10082000809300010E94E60380B38C7080BB81B38B\r
-:10083000836F81BBE4E4F1E0A6E3B1E011921D9285\r
-:1008400081E0E235F807D1F70C9436039F92AF921E\r
-:10085000BF92CF92DF92EF92FF920F931F93CF93AD\r
-:10086000DF9380910001882379F0809135018F5FBB\r
-:1008700080933501811108C00E944C0380930001D0\r
-:10088000811102C00E94DE0286E3E82E81E0F82E8C\r
-:100890008701C0E0D0E0BB24B39492E0A92ECC2421\r
-:1008A000C394D12CC730D10500F58091000181118E\r
-:1008B00064C080E40E94A10380930001811112C0F2\r
-:1008C00082E10E94CB038093000181110BC0C6011D\r
-:1008D0000C2E01C0880F0A94EAF780950E94CB0382\r
-:1008E000809300010E94C30348C0CA30A1F028F4DD\r
-:1008F000C83059F0C93061F005C0CC3089F070F0D3\r
-:10090000CD3089F0209A289810C0219A29980DC0DE\r
-:10091000229A2A980AC0239A2B9807C0529A01C09B\r
-:10092000539A5B9802C03E9A4698E0EAEA95F1F73E\r
-:100930008FB181708B25799902C032E001C030E01F\r
-:10094000832B7C9902C034E001C030E0832B7D9979\r
-:1009500002C028E001C020E0822B7E9902C090E115\r
-:1009600001C090E0892B9FB19095991F9927991FFD\r
-:100970009295990F907E892B0FC080910001811173\r
-:100980004AC080E40E94A10380930001882381F182\r
-:10099000912C0E94C303892DD8019C91981719F0BE\r
-:1009A0008C93A09201010E94E60321960F5F1F4FD6\r
-:1009B000CE30D10509F076CF80910101882369F10D\r
-:1009C000815080930101882339F0EFE9FFE03197EE\r
-:1009D000F1F700C0000021C0E4E4F1E0D7018D91FF\r
-:1009E0007D018193B4E4EB16B1E0FB06B9F715C0C5\r
-:1009F00083E10E94CB03809300018111C9CF81E480\r
-:100A00000E94A103809300018111C2CF0E94DC03E8\r
-:100A1000982E9094BECF80E0BFCF0E94DC0281E090\r
-:100A2000DF91CF911F910F91FF90EF90DF90CF90CA\r
-:100A3000BF90AF909F900895E82FF0E0EC5BFE4FE1\r
-:100A40008081089508958B3B910580F4883A910543\r
-:100A500048F5853A9105D8F48430910508F0B2C084\r
-:100A6000019709F06EC081E090E00895803E910505\r
-:100A700008F467C0883E910508F4A4C09C01205F7B\r
-:100A800031092031310508F05CC090650895853A40\r
-:100A9000910509F459C0863A910509F058C082E8D9\r
-:100AA00090E40895883A910509F454C0893A910573\r
-:100AB00009F453C08A3A910509F452C08B3A910562\r
-:100AC00009F451C08C3A910509F450C08D3A910552\r
-:100AD00009F44FC0803B910509F44EC08E3A910550\r
-:100AE00009F44DC08F3A910509F44CC0813B910542\r
-:100AF00009F44BC0823B910509F44AC0833B910540\r
-:100B000009F449C0843B910509F448C0853B91052F\r
-:100B100009F447C0863B910509F446C0873B91051F\r
-:100B200009F445C0883B910509F444C0893B91050F\r
-:100B300009F443C08A3B910509F442C080E094E483\r
-:100B4000089580E090E0089581E890E4089583E8B6\r
-:100B500090E4089582EE94E4089589EE94E4089573\r
-:100B60008AEE94E4089585EB94E4089586EB94E48A\r
-:100B7000089587EB94E408958CEC94E408958DEC4B\r
-:100B800094E4089583E895E408958AE895E4089547\r
-:100B900082E995E4089584E995E4089581E296E474\r
-:100BA000089583E296E4089584E296E4089585E248\r
-:100BB00096E4089586E296E4089587E296E408951F\r
-:100BC0008AE296E40895089524E5829FC0011124E5\r
-:100BD000FC0126E0729FE00DF11D1124E60FF11DCE\r
-:100BE000EE0FFF1FEC51FF4F859194910895880FF0\r
-:100BF000991FFC01E05AF040859194910895880F67\r
-:100C0000991FFC01E052FF4F85919491089524E5CE\r
-:100C1000829FC0011124FC0146E0749FE00DF11D8C\r
-:100C20001124E60FF11DEE0FFF1FEC51FF4F8591D0\r
-:100C300094919C013A9521154FE1340708F425C1A0\r
-:100C40003F512115304120F49F700E94FF05089507\r
-:100C50009C0130532115304118F49927906C089568\r
-:100C6000811520E5920769F40E94B9134FEF84E3E0\r
-:100C70009CE0415080409040E1F700C000000C949F\r
-:100C8000C01A813020E5920731F48091CC01816057\r
-:100C90008093CC0108959C0130552115304108F016\r
-:100CA0005CC0292F33272F70332721303105E9F419\r
-:100CB000AC0164E0440F551F6A95E1F74427537077\r
-:100CC000BC016370772702C0220F331F6A95E2F7D9\r
-:100CD0003C68242B352B73E0880F991F7A95E1F738\r
-:100CE00080769927822B932B08952230310529F4A1\r
-:100CF000982F8827816F906A089523303105A1F4D9\r
-:100D0000AC0133E0440F551F3A95E1F7407E577030\r
-:100D10008370992721E030E002C0220F331F8A95AB\r
-:100D2000E2F7C9019C6816C02430310531F5AC01E9\r
-:100D300023E0440F551F2A95E1F7407E57708370DA\r
-:100D4000992721E030E002C0220F331F8A95E2F795\r
-:100D5000C9019A68842B952B08959C013057211561\r
-:100D6000304118F49F70906208959C01305821150D\r
-:100D7000304118F49F70906A0895803E9105E0F428\r
-:100D8000803C910558F58133910509F46FC048F412\r
-:100D90008932910509F463C08A32910509F46DC066\r
-:100DA00072C089339105E9F082389105D1F085331D\r
-:100DB000910509F44DC067C0833E910581F138F477\r
-:100DC000803E9105B9F0823E9105D9F05CC0863E27\r
-:100DD000910561F1873E9105A1F155C00E94F7058B\r
-:100DE00008952091DE0120FD02C021FF4CC080EE5D\r
-:100DF00090E049C08091DE0180FFF9CF89E390E067\r
-:100E000042C08091DE0182FF0EC08091DE0184FF2E\r
-:100E100003C080E090E037C083EE90E034C0809162\r
-:100E2000DE0182FFF2CF82EE90E02DC08091DE01E4\r
-:100E300083FF0BC08091DE0184FDEBCF87EE90E055\r
-:100E400022C08091DE0183FFF5CF86EE90E01BC0CB\r
-:100E50008091DE0185FF07C089E290E014C0809197\r
-:100E6000DE0185FFF9CF85E390E00DC08091DE01C2\r
-:100E700086FF07C08AE290E006C08091DE0186FF0F\r
-:100E8000F9CF81E390E00E942305089508958091B1\r
-:100E900062010895CF93DF9300D01F92CDB7DEB7E4\r
-:100EA0009C018091E401843019F593E099833B83A0\r
-:100EB0002A839093E9008FEF9091E800815095FD8F\r
-:100EC00006C095ED9A95F1F700008111F5CF80915C\r
-:100ED000E80085FF0DC040E050E063E070E0CE0127\r
-:100EE00001960E94B7098091E8008E778093E80010\r
-:100EF0000F900F900F90DF91CF910895CF93DF93D4\r
-:100F000000D01F92CDB7DEB72091E401243021F547\r
-:100F100022E029839B838A8383E08093E9008FEF1B\r
-:100F20009091E800815095FD06C095ED9A95F1F7F6\r
-:100F300000008111F5CF8091E80085FF0DC040E0F1\r
-:100F400050E063E070E0CE0101960E94B709809105\r
-:100F5000E8008E778093E8000F900F900F90DF915C\r
-:100F6000CF9108959C018091E4018430F9F482E0EE\r
-:100F70008093E9009FEF8091E800915085FD06C0C5\r
-:100F800085ED8A95F1F700009111F5CF8091E80089\r
-:100F900085FF0CC040E050E065E070E0C9010E94B0\r
-:100FA000B7098091E8008E778093E8000895CF9389\r
-:100FB000DF93EC018091E401843009F046C0909108\r
-:100FC0000C019923D9F090910D019923B9F08093E8\r
-:100FD000E9008FEF9091E800815095FD06C095E102\r
-:100FE0009A95F1F700008111F5CF8091E80085FF17\r
-:100FF0002CC040E050E060E170E017C081E08093D9\r
-:10100000E9008FEF9091E800815095FD06C095EDC5\r
-:101010009A95F1F700008111F5CF8091E80085FFE6\r
-:1010200014C040E050E068E070E0CE010E94B709D3\r
-:101030008091E8008E778093E80080E1FE01A2E5D0\r
-:10104000B1E001900D928A95E1F7DF91CF9108957B\r
-:101050008091E301811109C00E94480B0E94A50BF9\r
-:101060008091E20084608093E20008951092E30191\r
-:10107000089508950C94F6200E94561A0E94FC20B0\r
-:101080000E94500E0C94460742E061EC81E00E9401\r
-:10109000C10A42E061EC82E00E94C10A42E061ECD8\r
-:1010A00083E00E94C10A42E161EC84E00C94C10A31\r
-:1010B0008091E601833009F455C030F4813071F03D\r
-:1010C000823009F48EC008958A3009F47AC08B30DA\r
-:1010D00009F460C0893009F09CC020C08091E5010E\r
-:1010E000813A09F096C08091E800877F8093E800FC\r
-:1010F0008091E9019091EA01892B21F460E182E578\r
-:1011000091E003C060E080E090E070E00E94020A9D\r
-:101110008091E8008B778093E80008958091E50145\r
-:10112000813209F076C08091E9019091EA0100973F\r
-:1011300019F0039709F06DC08091E800877F8093D4\r
-:10114000E8008091E80082FD05C08091E4018111F2\r
-:10115000F8CF5FC08091F100809362018091E80038\r
-:101160008B7753C08091E501813A09F052C080919C\r
-:10117000E9019091EA01892B09F04BC08091E800C8\r
-:10118000877F8093E8008091E80080FFFCCF80910A\r
-:101190000C0136C08091E5018132D9F58091E901D9\r
-:1011A0009091EA01892BA9F58091E800877F8093CF\r
-:1011B000E8000E94F60A8091E70180930C010C94EC\r
-:1011C000B9138091E501813221F58091E800877F94\r
-:1011D0008093E8000E94F60A8091E8018093630101\r
-:1011E00008958091E501813AA1F48091E800877F1C\r
-:1011F0008093E8008091E80080FFFCCF809163013C\r
-:101200008093F1008091E8008E778093E8000C9441\r
-:10121000F60A089584B7877F84BF0FB6F894A8951F\r
-:1012200080916000886180936000109260000FBE22\r
-:1012300090E080E80FB6F89480936100909361008D\r
-:101240000FBE0E949F0E0E94480B0E94A50B80912A\r
-:10125000E20084608093E20078940E94300E0E9445\r
-:10126000A10E82E091E00E944B0E0E94E42080914A\r
-:10127000E401853069F40E94181A8091E201882304\r
-:10128000B1F30E94421A882391F30E94A109EFCF83\r
-:101290000E94A70EECCF292F332723303105C9F048\r
-:1012A00060F42130310581F02230310509F041C070\r
-:1012B0008DE690E020E133E040C021323105E1F0DD\r
-:1012C0002232310531F135C082E190E02DE733E083\r
-:1012D00034C099278130910549F028F0029749F5EB\r
-:1012E000ECEDF2E005C0ECE0F3E002C0E4EFF2E088\r
-:1012F000849190E09F0121C06430D8F4E62FF0E0A3\r
-:10130000EE0FFF1FEE5DFE4F2081318189E090E0FE\r
-:1013100014C0643070F470E0FB01EE0FFF1FE65E56\r
-:10132000FE4F20813181FB01EA5EFE4F808190E01B\r
-:1013300004C080E090E020E030E0FA0131832083B7\r
-:10134000089580E189BD82E189BD09B400FEFDCF29\r
-:101350008091D8008F7D8093D8008091E0008260DA\r
-:101360008093E0008091E00081FDFCCF0895CF9252\r
-:10137000DF92EF92FF920F931F93CF93DF93EC01D5\r
-:101380008B016A010E94150B811133C0C114D10475\r
-:1013900039F0F60180819181081B190BC80FD91F04\r
-:1013A000E12CF12C0115110519F18091E80085FD62\r
-:1013B00016C08091E8008E778093E800C114D104B4\r
-:1013C00049F0F60180819181E80EF91EF182E082F8\r
-:1013D00085E00FC00E94150B882321F30AC0899174\r
-:1013E0008093F10001501109FFEFEF1AFF0ADACFE5\r
-:1013F00080E0DF91CF911F910F91FF90EF90DF90F0\r
-:10140000CF9008952091EB013091EC01261737071A\r
-:1014100048F06115710539F42091E8002E7720938A\r
-:10142000E80001C0B901FC0120E06115710579F106\r
-:101430008091E4018823F1F18530F1F18091E80099\r
-:1014400083FD3CC08091E80082FD2EC08091E800C1\r
-:1014500080FFEBCF2091F3008091F20090E0922B7F\r
-:101460006115710551F08830910538F42191209370\r
-:10147000F100615071090196F3CF21E0089709F05E\r
-:1014800020E08091E8008E778093E800CECF211194\r
-:10149000CFCF0AC08091E401882361F0853061F0EC\r
-:1014A0008091E80083FD0AC08091E80082FFF2CFBE\r
-:1014B00080E0089582E0089583E0089581E0089532\r
-:1014C0002091EB013091EC012617370748F06115A8\r
-:1014D000710539F42091E8002E772093E80001C0CF\r
-:1014E000B901FC0120E06115710591F18091E401E1\r
-:1014F000882309F440C0853009F43FC08091E8009A\r
-:1015000083FD3DC08091E80082FD2FC08091E800FE\r
-:1015100080FFE9CF2091F3008091F20090E0922BC0\r
-:101520006115710559F08830910540F4249120939C\r
-:10153000F1003196615071090196F2CF21E00897D0\r
-:1015400009F020E08091E8008E778093E800CBCF0F\r
-:101550002111CCCF0AC08091E401882361F085304D\r
-:1015600061F08091E80083FD0AC08091E80082FF6D\r
-:10157000F2CF80E0089582E0089583E0089581E04D\r
-:101580000895982F973068F59093E900981739F0EF\r
-:101590007091EC002091ED005091F00003C0242FD9\r
-:1015A000762F50E021FD02C09F5FECCF3091EB0021\r
-:1015B0003E7F3093EB003091ED003D7F3093ED00A6\r
-:1015C0003091EB0031603093EB007093EC0020938E\r
-:1015D000ED005093F0002091EE0027FDE5CF80E074\r
-:1015E00008958F708093E90081E008958091E5016E\r
-:1015F00087FF11C08091E80082FD05C08091E40161\r
-:101600008111F8CF11C08091E8008B770BC08091D9\r
-:10161000E401882349F08091E80080FFF8CF8091B1\r
-:10162000E8008E778093E80008952091E4003091DF\r
-:10163000E50095E64091EC00842F817040FF23C0C7\r
-:101640008091E80080FD1DC08091E401882399F01D\r
-:10165000853099F08091EB0085FD11C04091E40048\r
-:101660005091E5002417350729F3915011F09A01A4\r
-:10167000E1CF84E0089582E0089583E0089581E059\r
-:10168000089580E008954091E80042FFDDCF08957D\r
-:101690000E94B60B0E94BE0BE0EEF0E080818160FC\r
-:1016A0008083E8EDF0E080818F77808319BCA7ED1F\r
-:1016B000B0E08C918E7F8C9380818F7E808310929E\r
-:1016C000E30108950F931F93CF93DF930E94B60B0E\r
-:1016D0000E94BE0BC8EDD0E088818F778883888117\r
-:1016E0008068888388818F7D888319BC1092E4018B\r
-:1016F0001092E0011092E2011092E10100EE10E080\r
-:10170000F80180818B7F808388818160888342E0BB\r
-:1017100060E080E00E94C10AE1EEF0E080818E7F0F\r
-:101720008083E2EEF0E08081816080838081886048\r
-:101730008083F80180818E7F8083888180618883A7\r
-:10174000DF91CF911F910F910895E8EDF0E0808136\r
-:101750008F7E8083E7EDF0E080818160808384E08C\r
-:1017600082BF81E08093E3010C94620BE8EDF0E02E\r
-:1017700080818E7F80831092E20008951092DA00BB\r
-:101780001092E10008951F920F920FB60F9211244C\r
-:101790002F933F934F935F936F937F938F939F9379\r
-:1017A000AF93BF93EF93FF938091E10082FF0BC053\r
-:1017B0008091E20082FF07C08091E1008B7F8093DF\r
-:1017C000E1000E942F0E8091DA0080FF1FC08091FF\r
-:1017D000D80080FF1BC08091DA008E7F8093DA00F2\r
-:1017E0008091D90080FF0DC080E189BD82E189BD73\r
-:1017F00009B400FEFDCF81E08093E4010E94280837\r
-:1018000005C019BC1092E4010E9436088091E100E5\r
-:1018100080FF19C08091E20080FF15C08091E20036\r
-:101820008E7F8093E2008091E20080618093E200ED\r
-:101830008091D80080628093D80019BC85E08093A5\r
-:10184000E4010E943A088091E10084FF30C0809159\r
-:10185000E20084FF2CC080E189BD82E189BD09B42A\r
-:1018600000FEFDCF8091D8008F7D8093D8008091BD\r
-:10187000E1008F7E8093E1008091E2008F7E809373\r
-:10188000E2008091E20081608093E2008091E001BB\r
-:10189000882311F084E007C08091E30087FD02C037\r
-:1018A00081E001C083E08093E4010E943C088091C4\r
-:1018B000E10083FF29C08091E20083FF25C0809171\r
-:1018C000E100877F8093E10082E08093E401109241\r
-:1018D000E0018091E1008E7F8093E1008091E20041\r
-:1018E0008E7F8093E2008091E20080618093E2002D\r
-:1018F00042E060E080E00E94C10A8091F0008860D0\r
-:101900008093F0000E943908FF91EF91BF91AF9151\r
-:101910009F918F917F916F915F914F913F912F9107\r
-:101920000F900FBE0F901F9018951F920F920FB639\r
-:101930000F9211242F933F934F935F936F937F9355\r
-:101940008F939F93AF93BF93CF93DF93EF93FF93C7\r
-:10195000C091E900CF708091EC00D82FD17080FD4C\r
-:10196000D0E81092E9008091F000877F8093F0002A\r
-:1019700078940E94D90C1092E9008091F000886060\r
-:101980008093F000CD2BCF70C093E900FF91EF91D1\r
-:10199000DF91CF91BF91AF919F918F917F916F9187\r
-:1019A0005F914F913F912F910F900FBE0F901F901D\r
-:1019B00018951F93CF93DF93CDB7DEB7AA970FB6D5\r
-:1019C000F894DEBF0FBECDBFE5EEF1E08091F100EF\r
-:1019D000819321E0ED3EF207C9F70E9458088091FB\r
-:1019E000E80083FF24C18091E5019091E601492F31\r
-:1019F00050E04A30510508F01AC1FA01EA5AFF4F87\r
-:101A00000C948D22803881F0823809F010C18091C9\r
-:101A1000E9018F708093E9008091EB0085FB8827B6\r
-:101A200080F91092E90006C08091E1019091E201F5\r
-:101A3000911182609091E800977F9093E8008093E5\r
-:101A4000F1001092F100C8C0282F2D7F09F0EFC0DF\r
-:101A5000882319F0823061F0EAC08091E70181307B\r
-:101A600009F0E5C0933009F080E08093E2012BC0DB\r
-:101A70008091E701811127C08091E9018F7009F4FD\r
-:101A8000D6C08093E9002091EB0020FF1CC093306A\r
-:101A900021F48091EB00806214C09091EB00906182\r
-:101AA0009093EB0021E030E0A90102C0440F551FE4\r
-:101AB0008A95E2F74093EA001092EA008091EB00E9\r
-:101AC00088608093EB001092E9008091E800877FA6\r
-:101AD00086C08111ACC01091E7011F778091E300AF\r
-:101AE0008078812B8093E3008091E800877F80934A\r
-:101AF000E8000E94F60A8091E80080FFFCCF809108\r
-:101B0000E30080688093E300111102C082E001C00D\r
-:101B100083E08093E4018BC08058823008F087C056\r
-:101B20008091E7019091E8018C3D53E0950779F5AC\r
-:101B300083E08A838AE289834FB7F894DE011396A3\r
-:101B400020E03EE051E2E32FF0E050935700E491B3\r
-:101B500020FF03C0E295EF703F5FEF708E2F90E0A3\r
-:101B6000EA3010F0C79601C0C0968D939D932F5F09\r
-:101B7000243149F74FBF8091E800877F8093E800C8\r
-:101B80006AE270E0CE0101960E94020A14C0AE0122\r
-:101B90004F5F5F4F6091E9010E944B09BC01892BA7\r
-:101BA00009F445C09091E800977F9093E8008981FF\r
-:101BB0009A810E94600A8091E8008B778093E80008\r
-:101BC00036C08038A1F58091E800877F8093E800D7\r
-:101BD0008091E0018093F1008091E8008E778093FE\r
-:101BE000E8000E94F60A23C0811121C08091E7011C\r
-:101BF0009091E80199270297D4F48091E800877FBB\r
-:101C00008093E8008091E7018093E0010E94F60A4A\r
-:101C10008091E001811106C08091E30087FD02C040\r
-:101C200081E001C084E08093E4010E944408809137\r
-:101C3000E80083FF0AC08091E800877F8093E80076\r
-:101C40008091EB0080628093EB00AA960FB6F89427\r
-:101C5000DEBF0FBECDBFDF91CF911F9108950895D4\r
-:101C6000CF938091E4018823A1F0C091E900CF7067\r
-:101C70009091EC00892F817090FD80E8C82B109224\r
-:101C8000E9008091E80083FD0E94D90CCF70C093D9\r
-:101C9000E900CF91089590936901809368010895B8\r
-:101CA000E0916801F0916901309721F00190F08195\r
-:101CB000E02D099480E00895E0916801F0916901B8\r
-:101CC000309721F00280F381E02D09940895E0918E\r
-:101CD0006801F0916901309721F00480F581E02DD1\r
-:101CE00009940895209166013091670128173907FA\r
-:101CF00071F09093670180936601E0916801F09123\r
-:101D00006901309721F00680F781E02D099408954C\r
-:101D100020916401309165012817390771F0909383\r
-:101D2000650180936401E0916801F0916901309749\r
-:101D300021F00084F185E02D0994089508950C9414\r
-:101D40009E0E0E945C1A0E940E040C94221BCF92DD\r
-:101D5000DF92EF92FF920F931F93CF93DF93CDB754\r
-:101D6000DEB72B970FB6F894DEBF0FBECDBF0E9433\r
-:101D700026048BE6C82E81E0D82E00E010E0E02E8D\r
-:101D8000802F0E941C05F60141916F01F82EF42668\r
-:101D9000B1F40F5F1F4F0E30110589F78FEF898364\r
-:101DA0008A831B820E94651A8160782F9D838C83B1\r
-:101DB00049815A816B818D810E944A0F40C0909168\r
-:101DC000CC0191FF04C08B870E9422058B8520E007\r
-:101DD00030E04F2D50E0922FBA01022E02C07595CF\r
-:101DE00067950A94E2F760FF24C02E83EF8221E01A\r
-:101DF00030E0690102C0CC0CDD1C9A95E2F790E05E\r
-:101E00008C219D21892B09F420E028870E94651AE6\r
-:101E10008160782F9A8789874E815F8168858A855E\r
-:101E20000E944A0FF801E559FE4F8081C826C08202\r
-:101E300006C02F5F3F4F2630310569F6AACF0E94BA\r
-:101E4000091E0E94500E90916A018917A1F00E940C\r
-:101E5000500E80936A012B960FB6F894DEBF0FBE2A\r
-:101E6000CDBFDF91CF911F910F91FF90EF90DF9049\r
-:101E7000CF900C9446072B960FB6F894DEBF0FBE9A\r
-:101E8000CDBFDF91CF911F910F91FF90EF90DF9029\r
-:101E9000CF900895CF93DF93CDB7DEB72B970FB6D2\r
-:101EA000F894DEBF0FBECDBF4F83588769877A870E\r
-:101EB0008B87DE01119686E0FD0111928A95E9F784\r
-:101EC00085E0FE01379601900D928A95E1F74981F0\r
-:101ED0005A816B817C818D819E810E944D162B964B\r
-:101EE0000FB6F894DEBF0FBECDBFDF91CF9108953E\r
-:101EF000CF93C82F882309F4C1C0823859F40E94B7\r
-:101F0000500E81FDBBC089E30E94EA180E94A2190D\r
-:101F100089E30CC0833879F40E94500E80FDAEC076\r
-:101F200083E50E94EA180E94A21983E50E942919FC\r
-:101F3000CF910C94A219843859F40E94500E82FD5E\r
-:101F40009DC087E40E94EA180E94A21987E4EECFA0\r
-:101F50008CEF8C0F813A48F48C2F0E94492081111C\r
-:101F60008DC08C2F0E94EA18E3CF80E28C0F88305E\r
-:101F700048F4C77081E001C0880FCA95EAF70E9453\r
-:101F80006B19D6CF8BE58C0F833078F4C53A29F0E6\r
-:101F9000C63A31F083E890E005C081E890E002C0E5\r
-:101FA00082E890E0CF910C94720E88E58C0F83311B\r
-:101FB00008F064C0C83A39F1C93A41F1CA3A49F166\r
-:101FC000CB3A51F1CC3A59F1CD3A61F1C03B69F1CC\r
-:101FD000CE3A71F1CF3A79F1C13B81F1C23B89F13F\r
-:101FE000C33B91F1C43B99F1C53BA1F1C63BA9F1BB\r
-:101FF000C73BB1F1C83BB9F1C93BC1F1CA3BC9F11B\r
-:1020000080E090E038C082EE90E035C089EE90E04C\r
-:1020100032C08AEE90E02FC085EB90E02CC086EBBA\r
-:1020200090E029C087EB90E026C08CEC90E023C0C4\r
-:102030008DEC90E020C083E891E01DC08AE891E03B\r
-:102040001AC082E991E017C084E991E014C081E2EE\r
-:1020500092E011C083E292E00EC084E292E00BC0F5\r
-:1020600085E292E008C086E292E005C087E292E055\r
-:1020700002C08AE292E0CF910C94880ECF9108952D\r
-:10208000882309F44BC0823859F40E94500E81FF16\r
-:1020900045C089E30E94EA180E94A21989E30CC096\r
-:1020A000833871F40E94500E80FF38C083E50E948F\r
-:1020B000EA180E94A21983E50E9429190C94A2191A\r
-:1020C000843859F40E94500E82FF28C087E40E9491\r
-:1020D000EA180E94A21987E4EFCF9CEF980F913A7B\r
-:1020E00058F390E2980F983050F4877091E001C057\r
-:1020F000990F8A95EAF7892F0E947119DFCF9BE526\r
-:10210000980F933020F480E090E00C94720E885A7F\r
-:10211000833120F480E090E00C94880E08958823A9\r
-:1021200021F00E946B190C94A2190895882321F0C4\r
-:102130000E9471190C94A2190895BF92CF92DF9258\r
-:10214000EF92FF920F931F93CF93DF9300D000D0B5\r
-:1021500000D0CDB7DEB77C0185E0F701DE01119636\r
-:1021600001900D928A95E1F7F70183819481892B83\r
-:1021700009F4DDC2908181818F3F19F49F3F09F4FA\r
-:10218000D6C2F7010281258122952F7099838A8317\r
-:1021900089819A812E830E94A918182FB92E0E9436\r
-:1021A000A8180E946F17EB2DE295EF704E2F50E0AC\r
-:1021B000FA01E05AFF4F2E810C948D228B2D807FE7\r
-:1021C0009B2D9F70F92E882319F0F29480EFF8224E\r
-:1021D000002349F0FF2009F457C28F2D0E947B197C\r
-:1021E0000E94A21951C2812F0E944010FF2009F4C1\r
-:1021F0009EC28F2D0E94811926960FB6F894DEBFDD\r
-:102200000FBECDBFDF91CF911F910F91FF90EF9047\r
-:10221000DF90CF90BF900C94A2193B2D307F8B2D77\r
-:102220008F70303211F08295807F112319F01130B8\r
-:1022300021F12CC00023B9F0222309F490C12130F0\r
-:1022400009F08DC126960FB6F894DEBF0FBECDBF44\r
-:10225000DF91CF911F910F91FF90EF90DF90CF9082\r
-:10226000BF900C948B19222319F0213009F45FC21E\r
-:102270008E830E948E198E8186C1002321F0223028\r
-:1022800008F055C26CC1211152C27DC1002321F05A\r
-:10229000222309F464C1F8C1222309F474C109C2DC\r
-:1022A0008B2D86958695837019F08130D1F03FC2D1\r
-:1022B000002321F0812F9B2D937002C080E090E0DD\r
-:1022C00026960FB6F894DEBF0FBECDBFDF91CF913B\r
-:1022D0001F910F91FF90EF90DF90CF90BF900C94E3\r
-:1022E000720E002321F0812F9B2D937002C080E09D\r
-:1022F00090E026960FB6F894DEBF0FBECDBFDF91FB\r
-:10230000CF911F910F91FF90EF90DF90CF90BF90F2\r
-:102310000C94880E812F002319F00E94111D02C019\r
-:102320000E94791D26960FB6F894DEBF0FBECDBF72\r
-:10233000DF91CF911F910F91FF90EF90DF90CF90A1\r
-:10234000BF900C94FE1D8B2D837009F075C0011198\r
-:10235000EEC1812F829586958770880F880F912F07\r
-:102360009F70C92ED12CE12CF12C082E04C0CC0C6E\r
-:10237000DD1CEE1CFF1C0A94D2F714FF12C00FE004\r
-:1023800010E020E030E004C0000F111F221F331FB7\r
-:102390008A95D2F7C901B80160957095809590959E\r
-:1023A00003C060E070E0CB014B2D4695469543702D\r
-:1023B0004230C1F060F56C297D298E299F2941307A\r
-:1023C00051F126960FB6F894DEBF0FBECDBFDF9158\r
-:1023D000CF911F910F91FF90EF90DF90CF90BF9022\r
-:1023E0000C9496176C297D298E299F2926960FB665\r
-:1023F000F894DEBF0FBECDBFDF91CF911F910F913B\r
-:10240000FF90EF90DF90CF90BF900C94B2170E9496\r
-:102410009617C701B60126960FB6F894DEBF0FBE19\r
-:10242000CDBFDF91CF911F910F91FF90EF90DF9083\r
-:10243000CF90BF900C947A17002319F08B2D8170E8\r
-:1024400001C08695882309F472C1812F82958695F3\r
-:102450008770880F880F912F9F70C92ED12CE12C87\r
-:10246000F12C082E04C0CC0CDD1CEE1CFF1C0A94C1\r
-:10247000D2F714FF12C00FE010E020E030E004C0FB\r
-:10248000000F111F221F331F8A95D2F7C901B8010F\r
-:10249000609570958095909503C060E070E0CB01E9\r
-:1024A0004B2D4695469543704230C1F060F56C293E\r
-:1024B0007D298E299F29413051F126960FB6F89437\r
-:1024C000DEBF0FBECDBFDF91CF911F910F91FF9067\r
-:1024D000EF90DF90CF90BF900C9470186C297D29FD\r
-:1024E0008E299F2926960FB6F894DEBF0FBECDBF6A\r
-:1024F000DF91CF911F910F91FF90EF90DF90CF90E0\r
-:10250000BF900C948C180E947018C701B6012696D3\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091F00198\r
+:1004E0009091F101A091F201B091F3018730904B0E\r
+:1004F000A740B04BB9F41092F0011092F1011092A4\r
+:10050000F2011092F30114BE84B7877F84BF88E1A3\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0EAE1F8E402C0E0\r
+:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
+:1005400001C01D92A03FB107E1F70E94E6090C949B\r
+:100550000B240C940000662319F06130F1F03DC0CB\r
+:10056000FC018281882341F00E94B51B90933501E4\r
+:100570008093340181EE1CC080913401909135014B\r
+:100580000E94C11B8634910534F486E20E94481013\r
+:1005900086E20E94101181EE1EC0FC018281882338\r
+:1005A00051F00E94B51B909335018093340185EE84\r
+:1005B0000E94481012C080913401909135010E9430\r
+:1005C000C11B8634910534F487E20E94481087E20B\r
+:1005D0000E94101185EE0E94101180E090E00895B5\r
+:1005E00008956091B3017091B4018091B50190912B\r
+:1005F000B6010E94131B56985E9825982D98269850\r
+:100600002E9827982F98813019F0823021F0089584\r
+:10061000259A2D9A0895269A2E9A08950C94F102FF\r
+:1006200056985E9825982D9826982E9827982F985A\r
+:100630008FEF90E0909389008093880090938B00D7\r
+:1006400080938A0090938D0080938C00259A2D9A38\r
+:100650002FEF80E792E0215080409040E1F700C00A\r
+:100660000000269A2E9A2FEF80E792E021508040DA\r
+:100670009040E1F700C00000279A2F9A2FEF80E703\r
+:1006800092E0215080409040E1F700C000002598A2\r
+:100690002D982FEF80E792E0215080409040E1F7C5\r
+:1006A00000C0000026982E982FEF80E792E021509E\r
+:1006B00080409040E1F700C0000027982F9856989E\r
+:1006C0005E9825982D9826982E9827982F9808950B\r
+:1006D00089EA8093800089E08093810024982C9897\r
+:1006E0003F988AB18F748AB96E98479A8BB1806BA4\r
+:1006F0008BB9769A0E9410030C94F00280E28093EA\r
+:1007000000018091360181110EC00E94CD0381E06D\r
+:10071000809336012FEF83ED90E32150804090408D\r
+:10072000E1F700C0000080E40E94D3038093000141\r
+:1007300081112EC00E94FD0380930001811128C009\r
+:100740000E94FD0380930001811122C08FE30E946B\r
+:10075000FD038093000181111BC00E94F50380E41A\r
+:100760000E94D30380930001811112C08CE00E948B\r
+:10077000FD038093000181110BC00E94FD03809353\r
+:100780000001811105C08FE30E94FD0380930001E9\r
+:100790000E94F5038091000108951092B9008AE04B\r
+:1007A0008093B800089594EA9093BC009091BC00A7\r
+:1007B00097FFFCCF9091B900987F983021F090314D\r
+:1007C00011F081E008958093BB0084E88093BC0021\r
+:1007D0008091BC0087FFFCCF8091B900887F883171\r
+:1007E00011F0803471F780E0089584E98093BC00B3\r
+:1007F0008091BC0084FDFCCF08958093BB0084E809\r
+:100800008093BC008091BC0087FFFCCF9091B90021\r
+:10081000987F81E0983209F480E0089584E880931D\r
+:10082000BC008091BC0087FFFCCF8091BB00089585\r
+:1008300080910001811115C080E40E94D303809350\r
+:10084000000181110CC082E10E94FD038093000130\r
+:10085000811105C08FEF0E94FD03809300010E946B\r
+:10086000F50384B1807F84B985B1807F85B98AB171\r
+:10087000837F8AB98BB1837F8BB93E984698089560\r
+:100880000E947E03809300010E94180480B38C7044\r
+:1008900080BB81B3836F81BBE6E4F1E0A8E3B1E004\r
+:1008A00011921D9281E0E435F807D1F70C946803AA\r
+:1008B000BF92CF92DF92EF92FF920F931F93CF934D\r
+:1008C000DF9380910001882379F0809137018F5F59\r
+:1008D00080933701811108C00E947E03809300013C\r
+:1008E000811102C00E94100308E311E0C0E0D0E0D3\r
+:1008F000DD24D39482E0C82EEE24E394F12CC7309B\r
+:1009000000F580910001811162C080E40E94D30350\r
+:1009100080930001811112C082E10E94FD03809347\r
+:10092000000181110BC0C7010C2E01C0880F0A9471\r
+:10093000EAF780950E94FD03809300010E94F50371\r
+:1009400046C0CA30A1F028F4C83059F0C93061F06F\r
+:1009500005C0CC3089F070F0CD3089F0209A28980D\r
+:1009600010C0219A29980DC0229A2A980AC0239A69\r
+:100970002B9807C0529A01C0539A5B9802C03E9AC6\r
+:100980004698E0EAEA95F1F78FB179995AC092E07A\r
+:1009900081708D25892B7C9B02C090E001C094E082\r
+:1009A000892B7D9B02C090E001C098E0892B7E9B43\r
+:1009B00002C090E001C090E1892B9FB19095991FF2\r
+:1009C0009927991F9295990F907E892B0FC080913E\r
+:1009D000000181114BC080E40E94D3038093000189\r
+:1009E000882389F1B12C0E94F5038B2DF8019081A9\r
+:1009F000981719F08083C09201010E941804219673\r
+:100A00000F5F1F4FCE30D10509F079CF80910101E2\r
+:100A1000882371F1815080930101882339F08FE997\r
+:100A20009FE00197F1F700C0000022C0A6E4B1E00A\r
+:100A3000E8E3F1E081918D9391E0E634F907D1F795\r
+:100A400017C090E0A5CF83E10E94FD0380930001D1\r
+:100A50008111C8CF81E40E94D303809300018111EA\r
+:100A6000C1CF0E940E04B82EB094BDCF80E0BECF9F\r
+:100A70000E940E0381E0DF91CF911F910F91FF90B3\r
+:100A8000EF90DF90CF90BF900895E82FF0E0EA5B01\r
+:100A9000FE4F808108950895089596E0799FF001B2\r
+:100AA000112494E5899FE00DF11D1124E60FF11D3D\r
+:100AB000EE0FFF1FEC51FF4F859194910895880F21\r
+:100AC000991F805A9040FC01859194910895880F58\r
+:100AD000991F80529F4FFC018591949108950F9327\r
+:100AE0001F93CF93DF93EC01811520E3920730F53C\r
+:100AF000811530E2930708F0B1C08B3B910588F473\r
+:100B0000883A910508F058C0853A910508F049C027\r
+:100B10008430910508F043C08130910509F4B2C1D9\r
+:100B2000AEC18F3F910509F0D0F5803F910508F0E7\r
+:100B300092C0805E9109089790F1A1C1C11581E52D\r
+:100B4000D807A8F4C23090E5D90708F09FC0C115B6\r
+:100B500020E5D20709F486C008F092C0C11580E4F0\r
+:100B6000D80708F08CC18E011127106CCCC1C115BB\r
+:100B700090E8D90758F4C11520E7D20708F07BC1E7\r
+:100B8000C11530E6D30708F423C179C1C11580E946\r
+:100B9000D80708F074C18E011F70106AB4C18E01AD\r
+:100BA000B2C1853A910509F470C1863A910509F4FC\r
+:100BB0006FC103E810E4A7C1883A910509F46BC13D\r
+:100BC000893A910509F46AC18A3A910509F469C123\r
+:100BD0008B3A910509F468C18C3A910509F467C113\r
+:100BE0008D3A910509F466C1803B910509F465C110\r
+:100BF0008E3A910509F464C18F3A910509F463C1F5\r
+:100C0000813B910509F462C1823B910509F461C100\r
+:100C1000833B910509F460C1843B910509F45FC1F0\r
+:100C2000853B910509F45EC1863B910509F45DC1E0\r
+:100C3000873B910509F45CC1883B910509F45BC1D0\r
+:100C4000893B910509F45AC18A3B910509F059C1C4\r
+:100C50000AE216E458C18C01106555C19F700E94CC\r
+:100C6000670552C10E94A2149FEF24E33CE091501B\r
+:100C700020403040E1F700C000000E940F1C43C13B\r
+:100C80008091CF0181608093CF013DC10E94B71D4B\r
+:100C9000811102C00E949D1D0E94D41D90E090937E\r
+:100CA000F0018093EF01C23080E5D80721F48091F4\r
+:100CB000EF01816086C0C43090E5D90721F48091AE\r
+:100CC000EF0182607EC0C63020E5D20721F480911A\r
+:100CD000EF01846076C0C83030E5D30719F4809105\r
+:100CE000EF0127C0CA3080E5D80721F48091EF01D9\r
+:100CF000806167C0CC3090E5D90721F48091EF0185\r
+:100D000080625FC0CE3020E5D20721F48091EF01F0\r
+:100D1000806457C0C03130E5D30721F48091EF01E2\r
+:100D200080684FC0C23180E5D80729F48091EF0177\r
+:100D30008460886046C0C33090E5D90721F4809173\r
+:100D4000EF018E7F3EC0C53020E5D20721F48091AF\r
+:100D5000EF018D7F36C0C73030E5D30721F4809195\r
+:100D6000EF018B7F2EC0C93080E5D80719F4809140\r
+:100D7000EF0126C0CB3090E5D90721F48091EF0137\r
+:100D80008F7E1FC0CD3020E5D20721F48091EF0186\r
+:100D90008F7D17C0CF3030E5D30721F48091EF016C\r
+:100DA0008F7B0FC0C13180E5D80721F48091EF011E\r
+:100DB0008F7707C0C331D04531F48091EF018B7F2D\r
+:100DC000877F8093EF018091EF010E94D81D9BC027\r
+:100DD0008D2F99278F70992781309105E9F48E0125\r
+:100DE000037011279C0102C0220F331F0A95E2F7FE\r
+:100DF00089011C68CE0164E0880F991F6A95E1F7AC\r
+:100E000088279370082B192B73E0CC0FDD1F7A9580\r
+:100E1000E1F7C076DD272CC08230910529F41C2F24\r
+:100E20000027016F106A6FC08330910561F4CE0115\r
+:100E30008370992701E010E002C0000F111F8A950E\r
+:100E4000E2F71C680EC0049709F05DC0CE01837004\r
+:100E5000992701E010E002C0000F111F8A95E2F708\r
+:100E60001A6843E0CC0FDD1F4A95E1F7C07ED770CA\r
+:100E70000C2B1D2B48C08E011F70106244C000E077\r
+:100E800010E041C001E010E03EC001E810E43BC0CA\r
+:100E900002E810E438C002EE14E435C009EE14E4B0\r
+:100EA00032C00AEE14E42FC005EB14E42CC006EBAC\r
+:100EB00014E429C007EB14E426C00CEC14E423C0AE\r
+:100EC0000DEC14E420C003E815E41DC00AE815E4A5\r
+:100ED0001AC002E915E417C004E915E414C001E2E0\r
+:100EE00016E411C003E216E40EC004E216E40BC0DF\r
+:100EF00005E216E408C006E216E405C007E216E4BF\r
+:100F000002C000E014E4C801DF91CF911F910F915E\r
+:100F1000089596E0799FF001112494E5899FE00DF2\r
+:100F2000F11D1124E60FF11DEE0FFF1FEC51FF4FD5\r
+:100F300085919491803E9105E0F4803C910558F5AF\r
+:100F40008133910509F46FC048F48932910509F4A1\r
+:100F500063C08A32910509F46DC072C0893391056E\r
+:100F6000E9F082389105D1F08533910509F44DC03F\r
+:100F700067C0833E910581F138F4803E9105B9F058\r
+:100F8000823E9105D9F05CC0863E910561F1873EB5\r
+:100F90009105A1F155C00E945F0508952091EF01D0\r
+:100FA00020FD02C021FF4CC080EE90E049C080913E\r
+:100FB000EF0180FFF9CF89E390E042C08091EF011B\r
+:100FC00082FF0EC08091EF0184FF03C080E090E0BB\r
+:100FD00037C083EE90E034C08091EF0182FFF2CF02\r
+:100FE00082EE90E02DC08091EF0183FF0BC08091D5\r
+:100FF000EF0184FDEBCF87EE90E022C08091EF01FE\r
+:1010000083FFF5CF86EE90E01BC08091EF0185FF56\r
+:1010100007C089E290E014C08091EF0185FFF9CF0D\r
+:1010200085E390E00DC08091EF0186FF07C08AE262\r
+:1010300090E006C08091EF0186FFF9CF81E390E058\r
+:101040000E946F05089508950C942308809164010F\r
+:101050000895CF93DF9300D01F92CDB7DEB72091D4\r
+:10106000E601243019F523E029839B838A832093AA\r
+:10107000E9008FEF9091E800815095FD06C095ED55\r
+:101080009A95F1F700008111F5CF8091E80085FF76\r
+:101090000DC040E050E063E070E0CE0101960E9498\r
+:1010A000930A8091E8008E778093E8000F900F906C\r
+:1010B0000F90DF91CF910895CF93DF9300D01F92CF\r
+:1010C000CDB7DEB72091E601243021F522E0298357\r
+:1010D0009B838A8383E08093E9008FEF9091E800FF\r
+:1010E000815095FD06C095ED9A95F1F700008111AC\r
+:1010F000F5CF8091E80085FF0DC040E050E063E04F\r
+:1011000070E0CE0101960E94930A8091E8008E77EC\r
+:101110008093E8000F900F900F90DF91CF9108958A\r
+:101120002091E6012430F1F422E02093E9002FEF32\r
+:101130003091E800215035FD06C035ED3A95F1F7C4\r
+:1011400000002111F5CF2091E80025FF0BC040E001\r
+:1011500050E065E070E00E94930A8091E8008E778D\r
+:101160008093E8000895CF93DF93EC018091E6012E\r
+:10117000843009F046C090910C019923D9F09091E8\r
+:101180000D019923B9F08093E9008FEF9091E80069\r
+:10119000815095FD06C095E19A95F1F70000811107\r
+:1011A000F5CF8091E80085FF2CC040E050E060E181\r
+:1011B00070E017C081E08093E9008FEF9091E80024\r
+:1011C000815095FD06C095ED9A95F1F700008111CB\r
+:1011D000F5CF8091E80085FF14C040E050E068E062\r
+:1011E00070E0CE010E94930A8091E8008E77809390\r
+:1011F000E80080E1FE01A4E5B1E001900D928A953E\r
+:10120000E1F7DF91CF9108958091E501811109C047\r
+:101210000E94250C0E94820C8091E20084608093E1\r
+:10122000E20008951092E501089508950C94332288\r
+:101230000E94A61B0E9439220E941F0F0C942408B2\r
+:1012400042E061EC81E00E949F0B42E061EC82E0B1\r
+:101250000E949F0B42E061EC83E00E949F0B42E101\r
+:1012600061EC84E00C949F0B8091E801833009F4D9\r
+:1012700055C030F4813071F0823009F48EC0089589\r
+:101280008A3009F47AC08B3009F460C0893009F0E3\r
+:101290009CC020C08091E701813A09F096C08091FE\r
+:1012A000E800877F8093E8008091EB019091EC014A\r
+:1012B000892B21F060E080E090E003C060E184E5EC\r
+:1012C00091E070E00E94DC0A8091E8008B778093C7\r
+:1012D000E80008958091E701813209F076C080919D\r
+:1012E000EB019091EC01009719F0039709F06DC0A4\r
+:1012F0008091E800877F8093E8008091E80082FD7C\r
+:1013000005C08091E6018111F8CF5FC08091F100A6\r
+:10131000809364018091E8008B7753C08091E7014E\r
+:10132000813A09F052C08091EB019091EC01892B38\r
+:1013300009F04BC08091E800877F8093E80080919E\r
+:10134000E80080FFFCCF80910C0136C08091E7015E\r
+:101350008132D9F58091EB019091EC01892BA9F5AF\r
+:101360008091E800877F8093E8000E94D40B8091F1\r
+:10137000E90180930C010C94A2148091E701813261\r
+:1013800021F58091E800877F8093E8000E94D40BCC\r
+:101390008091EA018093650108958091E701813A87\r
+:1013A000A1F48091E800877F8093E8008091E800B5\r
+:1013B00080FFFCCF809165018093F1008091E8006F\r
+:1013C0008E778093E8000C94D40B089584B7877FC0\r
+:1013D00084BF88E10FB6F89480936000109260009B\r
+:1013E0000FBE90E080E80FB6F89480936100909370\r
+:1013F00061000FBE0E946E0F0E94250C0E94820C9D\r
+:101400008091E20084608093E20078940E94FD0E57\r
+:101410000E94700F82E091E00E941A0F0E94212228\r
+:101420008091E601853069F40E94661B8091E40199\r
+:101430008823B1F30E94911B882391F30E947D0AB7\r
+:10144000EFCF0E94760FECCF292F332723303105C1\r
+:10145000A9F06CF42130310509F442C02230310585\r
+:1014600009F043C08DE690E020E133E042C0213234\r
+:101470003105C9F02232310519F137C09927813081\r
+:10148000910541F08230910541F0892B71F5ECE036\r
+:10149000F3E005C0E4EFF2E002C0ECEDF2E084918D\r
+:1014A00090E09F0126C0643000F5E62FF0E0EE0FDB\r
+:1014B000FF1FEE5DFE4F2081318189E090E019C071\r
+:1014C000643098F4E62FF0E0DF01AA0FBB1FA65EA0\r
+:1014D000BE4F2D913C91EA5EFE4F808190E009C0A5\r
+:1014E00082E190E02DE733E004C080E090E020E06E\r
+:1014F00030E0FA0131832083089580E189BD82E1E3\r
+:1015000089BD09B400FEFDCF8091D8008F7D809306\r
+:10151000D8008091E00082608093E0008091E0003C\r
+:1015200081FDFCCF0895CF92DF92EF92FF920F934F\r
+:101530001F93CF93DF937C018B01EA010E94F50B8F\r
+:10154000811131C0209731F088819981081B190BD6\r
+:10155000E80EF91EC12CD12C0115110519F180914D\r
+:10156000E80085FD14C08091E8008E778093E80044\r
+:10157000209741F0888199818C0D9D1D99838883E6\r
+:1015800085E011C00E94F50B882331F30CC0F701F0\r
+:1015900081917F018093F10001501109FFEFCF1A73\r
+:1015A000DF0ADACF80E0DF91CF911F910F91FF909A\r
+:1015B000EF90DF90CF9008952091ED013091EE01F2\r
+:1015C0002617370748F06115710539F42091E800B6\r
+:1015D0002E772093E80001C0B901FC0120E06115DD\r
+:1015E0007105B9F18091E601882309F440C0853086\r
+:1015F00009F43FC08091E80083FD3DC08091E80080\r
+:1016000082FF06C08091E80082FF26C080E0089536\r
+:101610008091E80080FFE3CF2091F3008091F200F9\r
+:1016200090E0922B6115710551F08830910538F4E6\r
+:1016300021912093F100615071090196F3CF21E0CF\r
+:10164000089709F020E08091E8008E778093E80009\r
+:10165000C6CF2111C7CFD6CF8091E601882339F0BC\r
+:10166000853039F08091E80083FFCCCF04C082E060\r
+:10167000089583E0089581E008952091ED0130916F\r
+:10168000EE012617370748F06115710539F42091EE\r
+:10169000E8002E772093E80001C0B901FC0120E0AA\r
+:1016A00061157105C1F18091E601882309F441C0FB\r
+:1016B000853009F440C08091E80083FD3EC08091F0\r
+:1016C000E80082FF06C08091E80082FF27C080E02A\r
+:1016D00008958091E80080FFE3CF2091F30080918E\r
+:1016E000F20090E0922B6115710559F08830910558\r
+:1016F00040F424912093F1003196615071090196D4\r
+:10170000F2CF21E0089709F020E08091E8008E7781\r
+:101710008093E800C5CF2111C6CFD5CF8091E601D7\r
+:10172000882339F0853039F08091E80083FFCBCFF2\r
+:1017300004C082E0089583E0089581E00895982F21\r
+:10174000973058F59093E900981739F07091EC00B4\r
+:101750002091ED005091F00003C0242F762F50E02F\r
+:1017600021FF19C03091EB003E7F3093EB003091A8\r
+:10177000ED003D7F3093ED003091EB003160309310\r
+:10178000EB007093EC002093ED005093F00020915B\r
+:10179000EE0027FF07C09F5FD3CF8F708093E900D3\r
+:1017A00081E0089580E008958091E70187FD05C0FC\r
+:1017B0008091E80080FF0EC012C08091E80082FD99\r
+:1017C00005C08091E6018111F8CF08958091E8006D\r
+:1017D0008B7708C08091E6018111EACF089580914E\r
+:1017E000E8008E778093E80008958091E40090915E\r
+:1017F000E50045E62091EC0020FF21C02091E800A3\r
+:1018000020FD21C02091E601222389F0253089F0B6\r
+:101810002091EB0025FD0FC02091E4003091E50000\r
+:101820002817390739F3415041F0C901E3CF82E06D\r
+:10183000089583E0089581E0089584E0089520915B\r
+:10184000E80022FFDFCF80E008950E94930C0E9401\r
+:101850009B0CE0EEF0E0808181608083E8EDF0E0B9\r
+:1018600080818F77808319BCA7EDB0E08C918E7F4B\r
+:101870008C9380818F7E80831092E50108950F9371\r
+:101880001F93CF93DF930E94930C0E949B0CC8ED93\r
+:10189000D0E088818F778883888180688883888179\r
+:1018A0008F7D888319BC1092E6011092E20110929C\r
+:1018B000E4011092E30100EE10E0F80180818B7FDB\r
+:1018C000808388818160888342E060E080E00E94BC\r
+:1018D0009F0BE1EEF0E080818E7F8083E2EEF0E00E\r
+:1018E000808181608083808188608083F80180812D\r
+:1018F0008E7F8083888180618883DF91CF911F9163\r
+:101900000F910895E8EDF0E080818F7E8083E7ED10\r
+:10191000F0E080818160808384E082BF81E08093F9\r
+:10192000E5010C943F0CE8EDF0E080818E7F808330\r
+:101930001092E20008951092DA001092E1000895EA\r
+:101940001F920F920FB60F9211242F933F934F9334\r
+:101950005F936F937F938F939F93AF93BF93EF9317\r
+:10196000FF938091E10082FF0BC08091E20082FF33\r
+:1019700007C08091E1008B7F8093E1000E94FC0E04\r
+:101980008091DA0080FF1FC08091D80080FF1BC0CB\r
+:101990008091DA008E7F8093DA008091D90080FFF9\r
+:1019A0000DC080E189BD82E189BD09B400FEFDCF93\r
+:1019B00081E08093E6010E94040905C019BC1092E1\r
+:1019C000E6010E9412098091E10080FF19C0809118\r
+:1019D000E20080FF15C08091E2008E7F8093E200DC\r
+:1019E0008091E20080618093E2008091D800806263\r
+:1019F0008093D80019BC85E08093E6010E94160907\r
+:101A00008091E10084FF30C08091E20084FF2CC00F\r
+:101A100080E189BD82E189BD09B400FEFDCF8091DE\r
+:101A2000D8008F7D8093D8008091E1008F7E8093D5\r
+:101A3000E1008091E2008F7E8093E2008091E200DD\r
+:101A400081608093E2008091E201882311F084E0BC\r
+:101A500007C08091E30087FF02C083E001C081E0FE\r
+:101A60008093E6010E9418098091E10083FF29C05C\r
+:101A70008091E20083FF25C08091E100877F809301\r
+:101A8000E10082E08093E6011092E2018091E100A2\r
+:101A90008E7F8093E1008091E2008E7F8093E20050\r
+:101AA0008091E20080618093E20042E060E080E0AB\r
+:101AB0000E949F0B8091F00088608093F0000E944C\r
+:101AC0001509FF91EF91BF91AF919F918F917F91F8\r
+:101AD0006F915F914F913F912F910F900FBE0F909B\r
+:101AE0001F9018951F920F920FB60F9211242F93EB\r
+:101AF0003F934F935F936F937F938F939F93AF9396\r
+:101B0000BF93CF93EF93FF93C091E900CF70809183\r
+:101B1000EC001092E9008091F000877F8093F00044\r
+:101B200078940E94AE0D1092E9008091F0008860D8\r
+:101B30008093F000C093E900FF91EF91CF91BF91A6\r
+:101B4000AF919F918F917F916F915F914F913F9155\r
+:101B50002F910F900FBE0F901F9018951F93CF934A\r
+:101B6000DF93CDB7DEB7AA970FB6F894DEBF0FBEEE\r
+:101B7000CDBFE7EEF1E08091F100819321E0EF3EEF\r
+:101B8000F207C9F70E9434098091E80083FF1CC165\r
+:101B90002091E7013091E801832F90E08A30910590\r
+:101BA00008F012C1FC01EA5AFF4F0C94BB23203805\r
+:101BB00081F0223809F008C18091EB018F70809389\r
+:101BC000E9008091EB0085FB882780F91092E900FD\r
+:101BD00006C08091E3019091E4019111826090919F\r
+:101BE000E800977F9093E8008093F1001092F10055\r
+:101BF000C5C0822F8D7F09F0E7C0222319F0223063\r
+:101C000061F0E2C08091E901813009F0DDC033303C\r
+:101C100009F080E08093E40128C08091E9018111FE\r
+:101C200024C02091EB012F7009F4CEC02093E9006D\r
+:101C30008091EB0080FF19C08091EB00333011F4EC\r
+:101C4000806211C080618093EB0081E090E0022E01\r
+:101C500001C0880F0A94EAF78093EA001092EA0024\r
+:101C60008091EB0088608093EB001092E9008091F6\r
+:101C7000E800877F86C02111A7C01091E9011F7776\r
+:101C80008091E3008078812B8093E3008091E800CD\r
+:101C9000877F8093E8000E94D40B8091E80080FF4A\r
+:101CA000FCCF8091E30080688093E300112311F062\r
+:101CB00083E001C082E08093E60186C02058223094\r
+:101CC00008F082C08091E9019091EA018C3D23E007\r
+:101CD000920779F583E08A838AE289834FB7F89483\r
+:101CE000DE01139620E03EE051E2E32FF0E0509356\r
+:101CF0005700E49120FF03C0E295EF703F5FEF7063\r
+:101D00008E2F90E0EA3010F0C79601C0C0968D93F8\r
+:101D10009D932F5F243149F74FBF8091E800877F63\r
+:101D20008093E8006AE270E0CE0101960E94DC0A2E\r
+:101D300014C0AE014F5F5F4F6091EB010E94240A17\r
+:101D4000009709F441C02091E800277F2093E80024\r
+:101D5000BC0189819A810E943D0B8091E8008B77BC\r
+:101D60008093E80031C0203879F58091E800877FC2\r
+:101D70008093E8008091E2018093F1008091E80077\r
+:101D80008E778093E8000E94D40B1EC021111CC0E6\r
+:101D90009091E9019230C0F48091E800877F8093B0\r
+:101DA000E8009093E2010E94D40B8091E20181113E\r
+:101DB00004C08091E30087FF02C084E001C081E09D\r
+:101DC0008093E6010E9420098091E80083FF0AC009\r
+:101DD0008091E800877F8093E8008091EB0080622B\r
+:101DE0008093EB00AA960FB6F894DEBF0FBECDBF6E\r
+:101DF000DF91CF911F9108950895CF938091E601CF\r
+:101E00008823B1F08091E9008F709091EC0090FFF1\r
+:101E100002C090E801C090E0C92FC82B1092E900E1\r
+:101E20008091E80083FD0E94AE0DCF70C093E90061\r
+:101E3000CF91089590936B0180936A010895E0918A\r
+:101E40006A01F0916B01309721F00190F081E02D53\r
+:101E5000099480E00895E0916A01F0916B01309758\r
+:101E600021F00280F381E02D09940895E0916A0148\r
+:101E7000F0916B01309721F00480F581E02D0994F9\r
+:101E8000089520916801309169018217930771F0DC\r
+:101E90009093690180936801E0916A01F0916B0170\r
+:101EA000309721F00680F781E02D09940895209164\r
+:101EB0006601309167018217930771F09093670173\r
+:101EC00080936601E0916A01F0916B01309721F0F7\r
+:101ED0000084F185E02D0994089508950C946D0F08\r
+:101EE0000E94AC1B0E9440040C94721CCF92DF92A3\r
+:101EF000EF92FF920F931F93CF93DF93CDB7DEB78F\r
+:101F00002B970FB6F894DEBF0FBECDBF0E945804CA\r
+:101F10003DE6E32E31E0F32E00E010E0C02E802FEE\r
+:101F20000E944505F701D1907F01D826B1F40F5FDB\r
+:101F30001F4F0E30110591F78FEF89838A831B8223\r
+:101F40000E94B51B8160782F9D838C8349815A81C3\r
+:101F50006B818D810E94191041C09091CF0191FF3A\r
+:101F600004C08B870E944B058B8520E030E04D2D0F\r
+:101F700050E0922FBA01022E02C0759567950A941F\r
+:101F8000E2F760FF25C02E83CF82EE24E394F12C8C\r
+:101F900002C0EE0CFF1C9A95E2F790E08E219F2183\r
+:101FA00021E0892B09F420E028870E94B51B81607D\r
+:101FB000782F9A8789874E815F8168858A850E94FC\r
+:101FC0001910F801E359FE4F80818E25808306C0E9\r
+:101FD0002F5F3F4F2630310561F6A9CF0E94561F73\r
+:101FE00010916C010E941F0F1817A1F00E941F0F83\r
+:101FF00080936C012B960FB6F894DEBF0FBECDBF59\r
+:10200000DF91CF911F910F91FF90EF90DF90CF90D4\r
+:102010000C9424082B960FB6F894DEBF0FBECDBFEC\r
+:10202000DF91CF911F910F91FF90EF90DF90CF90B4\r
+:102030000895CF93DF93CDB7DEB72B970FB6F89403\r
+:10204000DEBF0FBECDBF4F83588769877A878B87E6\r
+:10205000DE01119686E0FD0111928A95E9F785E08F\r
+:10206000FE01379601900D928A95E1F749815A81D8\r
+:102070006B817C818D819E810E946E172B960FB69D\r
+:10208000F894DEBF0FBECDBFDF91CF9108950895C4\r
+:10209000CF93C82F882309F4C1C0823859F40E9415\r
+:1020A0001F0F81FDBBC089E30E941A1A0E94E41A27\r
+:1020B00089E30CC0833879F40E941F0F80FDAEC005\r
+:1020C00083E50E941A1A0E94E41A83E50E945A1AB4\r
+:1020D000CF910C94E41A843859F40E941F0F82FDAA\r
+:1020E0009DC087E40E941A1A0E94E41A87E4EECF8A\r
+:1020F0008CEF8C0F813A48F48C2F0E94892181113A\r
+:102100008DC08C2F0E941A1AE3CF80E28C0F88308A\r
+:1021100048F4C77081E001C0880FCA95EAF70E94B1\r
+:102120009B1AD6CF8BE58C0F833078F4C53A29F013\r
+:10213000C63A31F482E890E005C081E890E002C040\r
+:1021400083E890E0CF910C94410F88E58C0F8331A8\r
+:1021500008F064C0C83A39F1C93A41F1CA3A49F1C4\r
+:10216000CB3A51F1CC3A59F1CD3A61F1C03B69F12A\r
+:10217000CE3A71F1CF3A79F1C13B81F1C23B89F19D\r
+:10218000C33B91F1C43B99F1C53BA1F1C63BA9F119\r
+:10219000C73BB1F1C83BB9F1C93BC1F1CA3BC9F575\r
+:1021A0008AE292E038C082EE90E035C089EE90E09D\r
+:1021B00032C08AEE90E02FC085EB90E02CC086EB19\r
+:1021C00090E029C087EB90E026C08CEC90E023C023\r
+:1021D0008DEC90E020C083E891E01DC08AE891E09A\r
+:1021E0001AC082E991E017C084E991E014C081E24D\r
+:1021F00092E011C083E292E00EC084E292E00BC054\r
+:1022000085E292E008C086E292E005C087E292E0B3\r
+:1022100002C080E090E0CF910C94570FCF910895C9\r
+:10222000882309F44BC0823859F40E941F0F81FFA4\r
+:1022300045C089E30E941A1A0E94E41A89E30CC07F\r
+:10224000833871F40E941F0F80FF38C083E50E941D\r
+:102250001A1A0E94E41A83E50E945A1A0C94E41A8E\r
+:10226000843859F40E941F0F82FF28C087E40E941F\r
+:102270001A1A0E94E41A87E4EFCF9CEF980F913A64\r
+:1022800058F390E2980F983050F4877091E001C0B5\r
+:10229000990F8A95EAF7892F0E94A11ADFCF9BE553\r
+:1022A000980F933020F480E090E00C94410F885A0E\r
+:1022B000833120F480E090E00C94570F0895882338\r
+:1022C00021F00E949B1A0C94E41A0895882321F0AF\r
+:1022D0000E94A11A0C94E41A0895CF92DF92EF9213\r
+:1022E000FF920F931F93CF93DF93CDB7DEB728975D\r
+:1022F0000FB6F894DEBF0FBECDBF8C0185E0F801AC\r
+:10230000DE01119601900D928A95E1F7F801D080D7\r
+:10231000E180F280558152955F7023813481232BB7\r
+:1023200039F0FFEFEF1206C081E0DF1203C003C0F7\r
+:1023300081E001C080E080FDE2C2C8015F830E94AD\r
+:102340004710D982EA8269817A818F2D0E94161AFC\r
+:102350009E8388870E94CA190E949D184E815F81C2\r
+:102360006885FF2029F00E94B81A68855F814E8138\r
+:10237000E42FE295EF70F0E0E05AFF4F0C94BB239E\r
+:10238000842F807F142F1F70882311F01295107FE7\r
+:10239000FF20B1F0112309F467C280E2860F883074\r
+:1023A00028F4812F68870E949B1A04C0812F6887B8\r
+:1023B0000E94AB1A688568870E94E41A688554C237\r
+:1023C000862F68870E9410116885112309F497C22F\r
+:1023D000605E812F683018F40E94A11A02C00E942A\r
+:1023E000B11A28960FB6F894DEBF0FBECDBFDF91AD\r
+:1023F000CF911F910F91FF90EF90DF90CF900C94B1\r
+:10240000E41A242F207F842F8F70203211F08295C0\r
+:10241000807F662319F0613019F12BC0FF20B1F0E5\r
+:10242000552309F493C1513009F090C128960FB695\r
+:10243000F894DEBF0FBECDBFDF91CF911F910F91FA\r
+:10244000FF90EF90DF90CF900C94CB1A552319F0AA\r
+:10245000513009F454C28E830E94CE1A8E8189C1F4\r
+:10246000FF2021F0523008F04AC270C1511147C21A\r
+:1024700080C1FF2021F0552309F468C1F5C155231F\r
+:1024800009F477C105C2242F26952695237030E0E4\r
+:102490002115310521F021303105C9F030C2FF206E\r
+:1024A00021F0862F942F937002C080E090E0289650\r
+:1024B0000FB6F894DEBF0FBECDBFDF91CF911F9155\r
+:1024C0000F91FF90EF90DF90CF900C94410FFF2081\r
+:1024D00021F0862F942F937002C080E090E0289620\r
+:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125\r
+:1024F0000F91FF90EF90DF90CF900C94570F862FA5\r
+:10250000FF2019F00E945E1E02C00E94C61E28967F\r
:102510000FB6F894DEBF0FBECDBFDF91CF911F91F4\r
-:102520000F91FF90EF90DF90CF90BF900C945418D4\r
-:10253000103FD1F118F4103E50F4A1C0123F09F43D\r
-:1025400063C008F44CC0133F09F473C098C01F70F7\r
-:102550008B2D8F710023A1F00E94ED17812F2696FD\r
-:102560000FB6F894DEBF0FBECDBFDF91CF911F91A4\r
-:102570000F91FF90EF90DF90CF90BF900C948F1051\r
-:102580000E940E18812F26960FB6F894DEBF0FBE5C\r
-:10259000CDBFDF91CF911F910F91FF90EF90DF9012\r
-:1025A000CF90BF900C9496100023A9F02111BFC0CA\r
-:1025B0008B2D8F7126960FB6F894DEBF0FBECDBF60\r
-:1025C000DF91CF911F910F91FF90EF90DF90CF900F\r
-:1025D000BF900C943318223008F0A9C0E9CF002333\r
-:1025E000A9F08B2D8F7126960FB6F894DEBF0FBE23\r
-:1025F000CDBFDF91CF911F910F91FF90EF90DF90B2\r
-:10260000CF90BF900C94ED17002359F38B2D8F7151\r
-:1026100026960FB6F894DEBF0FBECDBFDF91CF91E7\r
-:102620001F910F91FF90EF90DF90CF90BF900C948F\r
-:102630000E18002399F08B2D8F7126960FB6F89403\r
-:10264000DEBF0FBECDBFDF91CF911F910F91FF90E5\r
-:10265000EF90DF90CF90BF900C94D81726960FB6CE\r
-:10266000F894DEBF0FBECDBFDF91CF911F910F91C8\r
-:10267000FF90EF90DF90CF90BF900C94CE17002387\r
-:10268000A9F0222309F4ADCF812F26960FB6F89436\r
-:10269000DEBF0FBECDBFDF91CF911F910F91FF9095\r
-:1026A000EF90DF90CF90BF900C94780F222309F425\r
-:1026B000ADCF812F26960FB6F894DEBF0FBECDBFEB\r
-:1026C000DF91CF911F910F91FF90EF90DF90CF900E\r
-:1026D000BF900C9440104B2D4F70612FC7010E948A\r
-:1026E000AE0226960FB6F894DEBF0FBECDBFDF91C7\r
-:1026F000CF911F910F91FF90EF90DF90CF90BF90FF\r
-:102700000C94F2164B2D4F70612FC70126960FB611\r
-:10271000F894DEBF0FBECDBFDF91CF911F910F9117\r
-:10272000FF90EF90DF90CF90BF900C94E30526963A\r
-:102730000FB6F894DEBF0FBECDBFDF91CF911F91D2\r
-:102740000F91FF90EF90DF90CF90BF9008950E947F\r
-:1027500088190E945D190E94A2190E94AE1E0E9453\r
-:10276000FE1D80E090E00E94720E80E090E00C94EC\r
-:10277000880E0E9478190C94A7130E94A918292F7B\r
-:1027800022952F702C3030F42A3048F42250223019\r
-:1027900078F405C02C3041F02F3031F009C0803E74\r
-:1027A00048F0803F29F406C093FB882780F90895FC\r
-:1027B00080E0089581E00895CF93DF9300D000D0AA\r
-:1027C0001F92CDB7DEB70F900F900F900F900F9024\r
-:1027D000DF91CF910895CF93DF9300D000D000D048\r
-:1027E000CDB7DEB726960FB6F894DEBF0FBECDBFCD\r
-:1027F000DF91CF9108951F93CF93DF93C09179011B\r
-:1028000016E080917A01C81799F0D0E01C9FF00182\r
-:102810001D9FF00D1124E558FE4F408151816281CA\r
-:102820007381848195810E94EB132196C770E9CF53\r
-:10283000DF91CF911F9108954091AB015091AC0170\r
-:102840006091AD017091AE018091AF019091B001A6\r
-:102850000C94EB138091B00182958F7009F054C0F5\r
-:102860008091AD01882309F44FC080917901A09136\r
-:102870007A014091AE015091AF016091AB0170912E\r
-:10288000AC01B6E08A1709F43FC090E0411551054C\r
-:10289000C1F17F3F11F46F3FA1F1B89FF001B99FE3\r
-:1028A000F00D1124E558FE4F218127132AC0208105\r
-:1028B000261327C02281211124C0238134812417AB\r
-:1028C000350710F421503109241B350B283C310504\r
-:1028D000C0F42091B0012F7020612093B00126E058\r
-:1028E000289FF001299FF00D1124E058FE4F8081B0\r
-:1028F0008F70806180838BEA91E00E949D100C9420\r
-:10290000FB1301968770BECF0895CF92DF92EF92AE\r
-:10291000FF920F931F93CF93DF93CDB7DEB76297EC\r
-:102920000FB6F894DEBF0FBECDBF8C0185E0F80175\r
-:10293000DE011D9601900D928A95E1F7D8014C9128\r
-:1029400011965C91119712966C918091AE019091C5\r
-:10295000AF01009709F475C13091AB017091AC01E2\r
-:102960007F3F19F43F3F09F46CC1F801C380D48064\r
-:10297000E090AD01EE2009F4BEC02091B001C81670\r
-:10298000D90628F0D601A81BB90BCD0104C080954B\r
-:1029900090958C0D9D1DFF24F394883C910578F053\r
-:1029A000F12C207F09F0C4C07C2DD98AC88A89897E\r
-:1029B0000E94DC138BEA91E00E949D10AFC0822F31\r
-:1029C000807F09F045C0571313C0431311C0611134\r
-:1029D0000FC02F7020612093B0010E941C148BEA5D\r
-:1029E00091E00E949D108091B001F80185832EC076\r
-:1029F000CD2819F15F3F11F44F3FF9F0F62E611128\r
-:102A00001CC08091790120917A0136E0821709F487\r
-:102A10005BC090E0389FF001399FF00D1124E5581C\r
-:102A2000FE4F7181571306C07081471303C0728136\r
-:102A3000711103C001968770E9CFF62E662309F461\r
-:102A40001CC18091B00181608093B001F12C15C14F\r
-:102A5000571309C0431307C0611105C08091B0012D\r
-:102A6000F8018583C8C04D875E878D859E856A8BFA\r
-:102A70000E94BD136A898823D1F16623C1F1209198\r
-:102A8000B001822F82958F7090E0029774F0809150\r
-:102A9000AB019091AC0198878F831986DB86CA863B\r
-:102AA0002C87CE0107960E949D1086E0F801ABEAC4\r
-:102AB000B1E001900D928A95E1F70E942A140E94DC\r
-:102AC0001C14FF24F394D9C04D875E878D859E85A5\r
-:102AD0000E94A918292F22952F70223008F0C1C01A\r
-:102AE0009F7009F0BBC0805E883008F4C6C0C80182\r
-:102AF0000E949D10E6CFC816D90608F453C0F6010F\r
-:102B0000E81BF90BCF01883C910508F450C0F12C6B\r
-:102B10007C2DD98AC88A89890E94DC13EBEAF1E00E\r
-:102B200086E0DF011D928A95E9F70E941C14A5C07A\r
-:102B3000571314C0431312C0611110C08091B0012B\r
-:102B4000F8018583C8010E949D1086E0EBEAF1E060\r
-:102B5000DF011D928A95E9F7FE2C8FC04D875E87B5\r
-:102B60008D859E856A8B0E94BD136A89882309F42E\r
-:102B7000BECF662309F4BBCF2091B001822F82958E\r
-:102B80008F7090E002970CF490CF8091AB01909100\r
-:102B9000AC019A8389831B82DD82CC822E83CE0195\r
-:102BA000019681CF809590958C0D9D1DACCFF62E12\r
-:102BB000662309F49CCF571333C0431331C02091CF\r
-:102BC000B00120FD24C0822F82958F70482F50E0E5\r
-:102BD00041155105E1F0D80115962C9315974F300A\r
-:102BE000510549F08F5F982F9295907F822F8F70BB\r
-:102BF000892B15968C93C8010E949D1086E0F801E0\r
-:102C0000ABEAB1E001900D928A95E1F78ECF86E0B4\r
-:102C1000F801ABEAB1E001900D928A95E1F72DC081\r
-:102C20004D875E878D859E850E94BD1381113DCFA6\r
-:102C30008091B00181608093B001C8010E949D1015\r
-:102C40001CC0662309F453CF4D875E878D859E8512\r
-:102C50000E94BD13882309F44ACF27CF811143CFA7\r
-:102C60000CC0243008F043CF9F7009F43CCFD8014A\r
-:102C700015969C91907F09F036CF8F2D62960FB6F6\r
-:102C8000F894DEBF0FBECDBFDF91CF911F910F91A2\r
-:102C9000FF90EF90DF90CF9008951F93CF93DF9335\r
-:102CA000CDB7DEB72C970FB6F894DEBF0FBECDBF01\r
-:102CB0004F83588769877A878B879C87CE010796D1\r
-:102CC0000E948514882371F08A859B85892B09F4DD\r
-:102CD00041C088858F3F09F065C08F818F3F09F023\r
-:102CE00061C038C086E0FE013796DE011196019082\r
-:102CF0000D928A95E1F76A857B856115710551F121\r
-:102D0000FF81E885EF3F11F4FF3F21F120917A0127\r
-:102D100030E0C9010196877099274091790150E010\r
-:102D20008417950709F447C0F983EA837D836C8390\r
-:102D300096E0929FD001939FB00D1124A558BE4FED\r
-:102D4000FE01319601900D929A95E1F780937A01F8\r
-:102D50000E94FB1316E08091790190917A01891706\r
-:102D6000B9F1189FC001112485589E4F0E94851407\r
-:102D7000882371F1E09179011E9FF0011124E5583B\r
-:102D8000FE4F4081518162817381848195810E94CF\r
-:102D9000EB138091790190E00196877099278093D9\r
-:102DA0007901D9CF4F81588569857A858B859C8536\r
-:102DB0000E94EB13CFCF0E94B91310927A011092A8\r
-:102DC0007901EBEAF1E086E0DF011D928A95E9F7EF\r
-:102DD0002C960FB6F894DEBF0FBECDBFDF91CF911A\r
-:102DE0001F910895EF92FF920F931F93CF93DF935C\r
-:102DF0008C01892B09F46CC0F12CEE24E394E801DA\r
-:102E00002196F8018491843740F4843008F051C051\r
-:102E1000813081F0823019F15BC0853709F444C0FC\r
-:102E2000A8F19CE7980F903708F052C08F770E9466\r
-:102E3000401041C00E5F1F4FFE01849190E2980F39\r
-:102E4000983050F48770FE2D01C0FF0F8A95EAF785\r
-:102E50008F2F0E947B1914C00E94780F2DC00E5F27\r
-:102E60001F4FFE01849190E2980F983060F48770B4\r
-:102E7000FE2D01C0FF0F8A95EAF78F2F0E9481195E\r
-:102E80000E94A21919C00E94401016C00E5F1F4F69\r
-:102E9000FE01C491CC2381F08FE99FE00197F1F707\r
-:102EA00000C00000C150F6CF0E5F1F4FFE01F4902E\r
-:102EB00003C00E94780F8E018F2D882309F49FCFC5\r
-:102EC000EFE9FFE03197F1F700C000008150F5CF46\r
-:102ED000DF91CF911F910F91FF90EF90089508958A\r
-:102EE0006093B5017093B6018093B7019093B801D8\r
-:102EF0000C94A7130F931F930091B5011091B60185\r
-:102F00002091B7013091B801DC01CB01802B912BCE\r
-:102F1000A22BB32B8093B5019093B601A093B70178\r
-:102F2000B093B8011F910F910C94A7130F931F93A7\r
-:102F30000091B5011091B6012091B7013091B8010F\r
-:102F4000DC01CB0180239123A223B3238093B5011D\r
-:102F50009093B601A093B701B093B8011F910F9160\r
-:102F60000C94A7130F931F930091B5011091B60114\r
-:102F70002091B7013091B801DC01CB018027912766\r
-:102F8000A227B3278093B5019093B601A093B70110\r
-:102F9000B093B8011F910F910C94A7131092B10137\r
-:102FA0001092B2011092B3011092B4010C94A713C5\r
-:102FB00041E050E060E070E004C0440F551F661F20\r
-:102FC000771F8A95D2F74093B1015093B201609375\r
-:102FD000B3017093B4010C94A71341E050E060E09A\r
-:102FE00070E004C0440F551F661F771F8A95D2F703\r
-:102FF0008091B1019091B201A091B301B091B4015F\r
-:10300000482B592B6A2B7B2B4093B1015093B20173\r
-:103010006093B3017093B4010C94A71341E050E0A6\r
-:1030200060E070E004C0440F551F661F771F8A954B\r
-:10303000D2F740955095609570958091B10190912F\r
-:10304000B201A091B301B091B401482359236A237E\r
-:103050007B234093B1015093B2016093B30170930D\r
-:10306000B4010C94A71341E050E060E070E004C0AC\r
-:10307000440F551F661F771F8A95D2F78091B101C3\r
-:103080009091B201A091B301B091B40148275927A2\r
-:103090006A277B274093B1015093B2016093B3013B\r
-:1030A0007093B4010C94A7130F931F930091B10177\r
-:1030B0001091B2012091B3013091B401DC01CB0138\r
-:1030C000802B912BA22BB32B8093B1019093B20153\r
-:1030D000A093B301B093B4011F910F910C94A71367\r
-:1030E0000F931F930091B1011091B2012091B30190\r
-:1030F0003091B401DC01CB0180239123A223B323BF\r
-:103100008093B1019093B201A093B301B093B40145\r
-:103110001F910F910C94A7130F931F930091B1016E\r
-:103120001091B2012091B3013091B401DC01CB01C7\r
-:1031300080279127A227B3278093B1019093B201F2\r
-:10314000A093B301B093B4011F910F910C94A713F6\r
-:103150000895CF92DF92EF92FF920F931F93CF9338\r
-:10316000DF938C01C090B101D090B201E090B30127\r
-:10317000F090B4018091B5019091B601A091B70192\r
-:10318000B091B801C82AD92AEA2AFB2ACFE1D0E0B7\r
-:10319000D701C6010C2E04C0B695A79597958795C3\r
-:1031A0000A94D2F780FF07C0B8018C2F0E9407064F\r
-:1031B0008130910531F4219758F7B80180E00E94E1\r
-:1031C0000706DF91CF911F910F91FF90EF90DF9055\r
-:1031D000CF90089590910C019923F1F090910D01F9\r
-:1031E0009923D1F0982F9695969596959F3080F5D6\r
-:1031F000E0910E01F0910F01E90FF11D877021E0C0\r
-:1032000030E0A90102C0440F551F8A95E2F7CA01B8\r
-:103210009181892B8183089520910E0130910F01B6\r
-:10322000F90132969FEF40E05191851789F09F3F59\r
-:1032300019F4511101C0942F4F5F4E30A9F79F3FF1\r
-:1032400039F0F901E90FF11D97FDFA958283089590\r
-:10325000089590910C019923F9F090910D01992313\r
-:10326000D9F0982F9695969596959F3028F5E091F0\r
-:103270000E01F0910F01E90FF11D877021E030E0A0\r
-:10328000A90102C0440F551F8A95E2F7CA01809533\r
-:10329000918189238183089520910E0130910F013E\r
-:1032A000F9013296205F3F4F9081891301C010824F\r
-:1032B0003196E217F307C1F7089581E090E0E091BD\r
-:1032C0000E01F0910F01E80FF91F10820196803175\r
-:1032D0009105A9F708959091CB01892B8093CB019B\r
-:1032E000089580959091CB0189238093CB01089517\r
-:1032F0001092CB0108959091CA01892B8093CA0145\r
-:10330000089580959091CA0189238093CA010895F8\r
-:103310001092CA0108958093B90108951092B901DD\r
-:10332000089580910E0190910F01FC0131969C014E\r
-:10333000205F3F4F80E0919191118F5FE217F3077B\r
-:10334000D1F70895E0910E01F0910F018091CB012A\r
-:103350008083E0910E01F0910F0190818091CA016C\r
-:10336000892B80838091B901882361F0E0910E015F\r
-:10337000F0910F019081892B80830E949119811116\r
-:103380001092B90180910E0190910F010C945C0E86\r
-:10339000CF92DF92EF92FF926C01EE24FF24C114D2\r
-:1033A000D104E104F10421F0C701B60120E101C01C\r
-:1033B00020E0C72ED82EE92EFF24C114D104E10449\r
-:1033C000F10419F0285FC701B6016B017C0154E0DC\r
-:1033D000F694E794D794C7945A95D1F7C114D104C1\r
-:1033E000E104F10419F02C5FC701B6016B017C0107\r
-:1033F00042E0F694E794D794C7944A95D1F7C11464\r
-:10340000D104E104F10419F02E5FC701B601DC011B\r
-:10341000CB01B695A79597958795892B8A2B8B2BF2\r
-:1034200009F02F5F822FFF90EF90DF90CF900895EB\r
-:103430008091E401843011F120E488E190E00FB63E\r
-:10344000F894A895809360000FBE2093600083B726\r
-:10345000817F846083BF83B7816083BF78948895C0\r
-:1034600083B78E7F83BF0FB6F894A89580916000D4\r
-:10347000886180936000109260000FBE08950895E7\r
-:103480000C943F1ACF930E94401A0E9426040E9477\r
-:103490003F1AC0E08C2F0E941C05811104C0CF5F31\r
-:1034A000CE30C1F701C081E0CF9108950E94B913D9\r
-:1034B0000E94500E0C94460782E084BD93E095BDB7\r
-:1034C0009AEF97BD80936E0008952FB7F89480917E\r
-:1034D000CD019091CE01A091CF01B091D0012FBF2D\r
-:1034E0000895CF92DF92EF92FF920F931F932FB721\r
-:1034F000F8944091CD015091CE016091CF0170912F\r
-:10350000D0012FBF6A017B01EE24FF248C0120E053\r
-:1035100030E0C016D106E206F30610F4415051091E\r
-:103520009A01281B390BC9011F910F91FF90EF9051\r
-:10353000DF90CF9008951F920F920FB60F92112433\r
-:103540008F939F93AF93BF938091CD019091CE01C4\r
-:10355000A091CF01B091D0010196A11DB11D809322\r
-:10356000CD019093CE01A093CF01B093D001BF9134\r
-:10357000AF919F918F910F900FBE0F901F90189554\r
-:103580000E94480BF8942FEF87EA91E62150804083\r
-:103590009040E1F700C0000087E090EBDC018093F1\r
-:1035A000ED019093EE01A093EF01B093F0019CE048\r
-:1035B00088E10FB6F894A895809360000FBE9093B1\r
-:1035C0006000FFCFEF92FF920F931F93CF93DF9393\r
-:1035D000D82FC0E08C2F0E941C0500E010E0E82EE0\r
-:1035E000F12CC701002E02C0959587950A94E2F749\r
-:1035F00080FD06C00F5F1F4F0630110591F709C00F\r
-:10360000602F7C2F80E00E94E4058D13F3CF81E0D2\r
-:1036100004C0CF5FCE30F1F680E0DF91CF911F91F3\r
-:103620000F91FF90EF900895CF93C82F8CE20E94E6\r
-:10363000E21A882321F08C2FCF910C94E21A80E0BB\r
-:10364000CF910895CF930E94691C811102C00E94FE\r
-:103650004F1CC5E6C15049F00E9426048FE39CE947\r
-:103660000197F1F700C00000F5CF89E20E94141B1A\r
-:10367000811113C18AE20E94141B81110E944F1C08\r
-:1036800085E00E94141B81110E94C01A0E94741CC4\r
-:103690008093CC0187E00E94141B8823A9F18BE161\r
-:1036A0000E94141B882351F08091CC0181FB2227BA\r
-:1036B00020F991E0922790FB81F90EC08EE00E94E4\r
-:1036C000141B882361F08091CC0182FB222720F912\r
-:1036D00091E0922790FB82F98093CC0115C080E1A4\r
-:1036E0000E94141B9091CC01882341F093FB222768\r
-:1036F00020F981E0822780FB93F904C0892F80950F\r
-:1037000080FB90F99093CC018091CC010E94781CB1\r
-:103710000E94861C8093DE0180EE0E94141B882389\r
-:1037200041F08091DE01982F909590FB80F9809375\r
-:10373000DE0189E30E94141B882359F08091DE0189\r
-:1037400081FB222720F991E0922790FB81F9809359\r
-:10375000DE0182EE0E94141B882359F08091DE0165\r
-:1037600082FB222720F991E0922790FB82F9809337\r
-:10377000DE0186EE0E94141B882359F08091DE0141\r
-:1037800083FB222720F991E0922790FB83F9809315\r
-:10379000DE0183EE0E94141B882359F08091DE0124\r
-:1037A00084FB222720F991E0922790FB84F98093F3\r
-:1037B000DE0185E30E94141B882359F08091DE010D\r
-:1037C00085FB222720F991E0922790FB85F98093D1\r
-:1037D000DE0181E30E94141B882359F08091DE01F1\r
-:1037E00086FB222720F991E0922790FB86F98093AF\r
-:1037F000DE0181E10E94141B882359F08091DE01D3\r
-:1038000087FB222720F991E0922790FB87F980938C\r
-:10381000DE018091DE010E948A1C8091DE0187FB1F\r
-:10382000882780F980930D0187E20E94141BC82F1E\r
-:103830008EE10E94141B8111C2608FE10E94141B53\r
-:103840008111C46080E20E94141B8111C86081E272\r
-:103850000E94141B8111C06182E20E94141B81111D\r
-:10386000C06283E20E94141B8111C06484E20E9442\r
-:10387000141B882311F0C06802C0CC2329F08C2FC0\r
-:103880000E94811C6C2F03C00E947D1C682F70E079\r
-:1038900080E090E0CF910C947017CF9108956DEE79\r
-:1038A0007EEF80E090E00E94C32260E082E090E042\r
-:1038B0000E94B52260E083E090E00E94B52260E0C3\r
-:1038C00084E090E00E94B52260E085E090E00C94F6\r
-:1038D000B52280E090E00E94AF2221E08D3E9E4F15\r
-:1038E00009F020E0822F089582E090E00C94A72256\r
-:1038F000682F82E090E00C94B52283E090E00C9475\r
-:10390000A722682F83E090E00C94B52284E090E039\r
-:103910000C94A722682F84E090E00C94B52280914B\r
-:10392000D30180FF0BC06091130185E0689FB00157\r
-:10393000112475956795759567952BC081FF09C012\r
-:103940006091130185E0689FB0011124759567951A\r
-:1039500020C082FF07C06091130185E0689FB0011D\r
-:10396000112417C09091D4019923D1F060911201D4\r
-:10397000961788F72091130185E0289F9001112464\r
-:10398000929FA001939F500D112470E0CA010E94E4\r
-:1039900079226038710540F46115710519F406C08B\r
-:1039A00065E070E0862F08958FE7089581E008951F\r
-:1039B0008091D30180FF08C06091110170E075957E\r
-:1039C00067957595679521C081FF06C060911101CB\r
-:1039D00070E07595679519C082FF04C06091110170\r
-:1039E00070E010C09091D401992399F0609110017A\r
-:1039F0009617A0F780911101899FC001112470E0F2\r
-:103A00000E9479226038710540F46115710519F43E\r
-:103A100006C061E070E0862F08958FE7089581E089\r
-:103A20000895803F21F40E948F1C819504C0813F3E\r
-:103A300029F40E948F1C8093D7010895823F21F4BE\r
-:103A40000E948F1C819504C0833F29F40E948F1C23\r
-:103A50008093D6010895893F19F40E94D81C05C0AF\r
-:103A60008A3F31F40E94D81C81958093D801089533\r
-:103A70008B3F21F40E94D81C819504C08C3F29F40F\r
-:103A80000E94D81C8093D9010895843F21F480912D\r
-:103A9000D501816017C0853F21F48091D5018260F6\r
-:103AA00011C0863F21F48091D50184600BC0873F0F\r
-:103AB00021F48091D501886005C0883F31F4809160\r
-:103AC000D50180618093D50108958D3F21F48091C7\r
-:103AD000D30181600BC08E3F21F48091D3018260BD\r
-:103AE00005C08F3F29F48091D30184608093D30176\r
-:103AF0000895803F39F48091D70187FF6CC0109200\r
-:103B0000D70169C0813F29F48091D7011816BCF311\r
-:103B100062C09091D601823F29F497FF5CC0109259\r
-:103B2000D60159C0833F19F41916CCF354C0893F0C\r
-:103B300041F48091D80118160CF04DC01092D801B4\r
-:103B40004AC08A3F29F48091D80187FF44C0F6CF4C\r
-:103B50008B3F39F48091D90187FF3DC01092D90184\r
-:103B60003AC08C3F29F48091D9011816BCF333C0B8\r
-:103B7000843F21F48091D5018E7F17C0853F21F4C9\r
-:103B80008091D5018D7F11C0863F21F48091D501B0\r
-:103B90008B7F0BC0873F21F48091D501877F05C0C3\r
-:103BA000883F31F48091D5018F7E8093D50113C079\r
-:103BB0008D3F21F48091D3018E7F0BC08E3F21F485\r
-:103BC0008091D3018D7F05C08F3F29F48091D3016F\r
-:103BD0008B7F8093D3018091D60181110EC080919B\r
-:103BE000D70181110AC08091D801811106C080914E\r
-:103BF000D901811102C01092D401089585ED91E0A0\r
-:103C00000E94670E0E94651A9093D2018093D101A1\r
-:103C100008951F93CF93DF938091D1019091D201AA\r
-:103C20000E94711AAC019091D401992321F0209146\r
-:103C3000140130E006C0209115018AE0289F900110\r
-:103C400011244217530708F485C08091D601C09112\r
-:103C5000D701D091D8011091D901811107C0C111AC\r
-:103C600075C0D11173C0111171C074C09F3F19F09C\r
-:103C70009F5F9093D401181624F40E948F1C8093A8\r
-:103C8000D6018091D60187FF05C00E948F1C8195C7\r
-:103C90008093D6011C1624F40E948F1C8093D701B8\r
-:103CA0008091D70187FF05C00E948F1C819580936A\r
-:103CB000D7016091D601662331F1C091D701CC23A1\r
-:103CC00011F1062E000C770B880B990B0E948021B6\r
-:103CD00023E333E343E35FE30E94E4210E944821AE\r
-:103CE0006093D6016C2FCC0F770B880B990B0E9439\r
-:103CF000802123E333E343E35FE30E94E4210E9456\r
-:103D000048216093D7011D1624F40E94D81C80938B\r
-:103D1000D8018091D80187FF05C00E94D81C8195E9\r
-:103D20008093D801111624F40E94D81C8093D901E5\r
-:103D30008091D90187FF05C00E94D81C819580938E\r
-:103D4000D901DF91CF911F910C94FE1D9F3F09F087\r
-:103D50008FCFA0CFDF91CF911F910895E5EDF1E0D6\r
-:103D600085E0DF011D928A95E9F71092D401109247\r
-:103D7000D3010895833081F128F4813059F08230E5\r
-:103D8000D1F00895853009F449C0B8F1863009F4BE\r
-:103D900056C0089580911501262F30E0280F311D5F\r
-:103DA0002F3F310524F4680F6093150108958FEFBC\r
-:103DB00080931501089580911401262F30E0280F7B\r
-:103DC000311D2F3F310524F4680F609314010895CD\r
-:103DD0008FEF80931401089580911301262F30E016\r
-:103DE000280F311D2F3F310524F4680F6093130114\r
-:103DF00008958FEF80931301089580911201262F6B\r
-:103E000030E0280F311D2F3F310524F4680F6093F7\r
-:103E1000120108958FEF809312010895809111018E\r
-:103E2000262F30E0280F311D2F3F310524F4680F75\r
-:103E30006093110108958FEF80931101089580918F\r
-:103E40001001262F30E0280F311D2F3F310524F4BB\r
-:103E5000680F6093100108958FEF8093100108950B\r
-:103E6000833011F128F4813049F0823091F00895C7\r
-:103E7000853081F120F18630C1F1089580911501DE\r
-:103E8000681720F4861B8093150108951092150180\r
-:103E9000089580911401681720F4861B8093140103\r
-:103EA000089510921401089580911301681720F469\r
-:103EB000861B809313010895109213010895809139\r
-:103EC0001201681720F4861B809312010895109246\r
-:103ED0001201089580911101681720F4861B8093C8\r
-:103EE0001101089510921101089580911001681731\r
-:103EF00020F4861B809310010895109210010895FC\r
-:103F00000F931F938D3109F46BC008F03FC08E30C2\r
-:103F100009F47DC0C0F4873009F46EC068F48630BF\r
-:103F200009F0AFC08091CC01817F8E7F8093CC015E\r
-:103F300081E08093DB01A6C0883009F458C08B3043\r
-:103F400009F49BC09EC0863109F497C078F4803193\r
-:103F500009F470C0813109F094C00E94B9139091A6\r
-:103F60000D0181E0892780930D0187C0893109F413\r
-:103F700084C08B3109F085C08091CC0181FB222760\r
-:103F800020F991E0922790FB81F94AC0853309F42A\r
-:103F90005BC048F4873209F457C008F45AC089322C\r
-:103FA00009F452C06EC0833438F48A3308F067C015\r
-:103FB000883309F462C065C0833409F445C088348D\r
-:103FC00009F05FC00E94B9130FEF13ED20E3015019\r
-:103FD00010402040E1F700C000000E94C01A4DC010\r
-:103FE0000E9402210E94500E0E94460746C00E9475\r
-:103FF000741C0E94861C41C09091CC01892F817055\r
-:1040000090FF12C0917F9E7F9093CC013BC0809126\r
-:10401000CC0182FB222720F991E0922790FB82F9C4\r
-:104020008093CC01992349F18091CC0181608093E8\r
-:10403000CC0123C08091CC0183FB222720F991E0A1\r
-:10404000922790FB83F9ECCF61E070E080E090E094\r
-:1040500010C08D5141E050E060E070E08A019B01AA\r
-:1040600004C0000F111F221F331F8A95D2F7C90108\r
-:10407000B8010E9470170E94B91381E003C08953F0\r
-:10408000E9CF80E01F910F91089580E008950C948E\r
-:104090004520CF93C82F8091DB01813079F018F053\r
-:1040A0008230E9F187C0E0910E01F0910F0180812B\r
-:1040B000813169F0823209F07FC009C0E0910E01C0\r
-:1040C000F0910F018081813111F0823261F48C2FE7\r
-:1040D0000E944720811104C08C2F0E94801F1DC0A8\r
-:1040E00081E090E01AC08C2F0E944520811114C0FD\r
-:1040F000C43179F048F4CB3079F0C03109F060C0B8\r
-:1041000082E08093DB0108C0C93219F0C83321F086\r
-:1041100057C01092DB0154C081E0817053C0C93296\r
-:1041200089F118F5C43171F1A8F4C73009F046C01F\r
-:104130008AE08093150194E19093140193E09093A9\r
-:1041400013018093120188E08093110188E280932B\r
-:10415000100134C0CE51C63088F5EC2FF0E0E65D9A\r
-:10416000FE4F80818093DA0129C0CE34E9F020F43B\r
-:10417000CB3421F56AE013C0C13579F0C235F1F4D2\r
-:1041800061E00DC08091DA01882319F01092DA0104\r
-:1041900015C081E08093DB0115C061E006C080910D\r
-:1041A000DA010E94BA1E0AC06AE08091DA010E9418\r
-:1041B000301F04C01092DB0180E004C081E002C027\r
-:1041C00080E0ABCFCF910895E1E8F0E08081886096\r
-:1041D00080838081816080838FB7F89493E090938F\r
-:1041E000890090ED909388008FBF0895EFE6F0E08E\r
-:1041F0008081826080830895EFE6F0E080818D7F8A\r
-:1042000080830895EFE6F0E0908182E08927808343\r
-:1042100008951F920F920FB60F9211242F933F9380\r
-:104220004F935F936F937F938F939F93AF93BF93BE\r
-:10423000EF93FF938091DC019091DD0101969093C3\r
-:10424000DD018093DC01811103C082E00E944607FA\r
-:10425000E091DD01E695E695F0E0E657FB4FE4914D\r
-:104260008091DC018E1303C080E00E944607FF911D\r
-:10427000EF91BF91AF919F918F917F916F915F91DE\r
-:104280004F913F912F910F900FBE0F901F90189557\r
-:104290000E944F216894B1110C94DE2108950E9470\r
-:1042A000C32188F09F5798F0B92F9927B751B0F0E4\r
-:1042B000E1F0660F771F881F991F1AF0BA95C9F7AA\r
-:1042C00014C0B13091F00E94DD21B1E008950C944A\r
-:1042D000DD21672F782F8827B85F39F0B93FCCF3FD\r
-:1042E000869577956795B395D9F73EF49095809527\r
-:1042F000709561957F4F8F4F9F4F0895E89409C047\r
-:1043000097FB3EF490958095709561957F4F8F4F08\r
-:104310009F4F9923A9F0F92F96E9BB279395F6951E\r
-:10432000879577956795B795F111F8CFFAF4BB0F9C\r
-:1043300011F460FF1BC06F5F7F4F8F4F9F4F16C000\r
-:10434000882311F096E911C0772321F09EE8872F8A\r
-:10435000762F05C0662371F096E8862F70E060E046\r
-:104360002AF09A95660F771F881FDAF7880F9695BF\r
-:10437000879597F9089557FD9058440F551F59F0A8\r
-:104380005F3F71F04795880F97FB991F61F09F3F42\r
-:1043900079F087950895121613061406551FF2CF6B\r
-:1043A0004695F1DF08C0161617061806991FF1CFBB\r
-:1043B00086957105610508940895E894BB276627E2\r
-:1043C0007727CB0197F908950E94F7210C94682272\r
-:1043D0000E945A2238F00E94612220F0952311F0A9\r
-:1043E0000C9451220C94572211240C94DE210E942B\r
-:1043F000BB2170F3959FC1F3950F50E0551F629F4D\r
-:10440000F001729FBB27F00DB11D639FAA27F00D2D\r
-:10441000B11DAA1F649F6627B00DA11D661F829F54\r
-:104420002227B00DA11D621F739FB00DA11D621F39\r
-:10443000839FA00D611D221F749F3327A00D611D56\r
-:10444000231F849F600D211D822F762F6A2F112438\r
-:104450009F5750409AF0F1F088234AF0EE0FFF1F6B\r
-:10446000BB1F661F771F881F91505040A9F79E3FC2\r
-:10447000510580F00C9451220C94DE215F3FE4F34F\r
-:10448000983ED4F3869577956795B795F795E79518\r
-:104490009F5FC1F7FE2B880F911D9695879597F921\r
-:1044A000089597F99F6780E870E060E008959FEFB6\r
-:1044B00080EC089500240A941616170618060906BB\r
-:1044C000089500240A94121613061406050608958A\r
-:1044D000092E0394000C11F4882352F0BB0F40F412\r
-:1044E000BF2B11F460FF04C06F5F7F4F8F4F9F4F52\r
-:1044F000089597FB072E16F4009407D077FD09D096\r
-:104500000E94932207FC05D03EF4909581959F4F21\r
-:104510000895709561957F4F0895EE0FFF1F0590E8\r
-:10452000F491E02D0994AA1BBB1B51E107C0AA1FFF\r
-:10453000BB1FA617B70710F0A61BB70B881F991F44\r
-:104540005A95A9F780959095BC01CD010895F999E8\r
-:10455000FECF92BD81BDF89A992780B50895A8E154\r
-:10456000B0E042E050E00C94CA22262FF999FECF29\r
-:104570001FBA92BD81BD20BD0FB6F894FA9AF99A80\r
-:104580000FBE019608950E94B522272F0C94B622E3\r
-:10459000DC01CB01FC01F999FECF06C0F2BDE1BD03\r
-:1045A000F89A319600B40D9241505040B8F70895F2\r
-:0445B000F894FFCFAD\r
-:1045B40020024707D707B2077E074A070101BA015D\r
-:1045C40028080A03140A3F4D36394B04FE03C80376\r
-:1045D4008F0322033B0354036D0301020304050606\r
-:0445E40007080900BB\r
+:102520000F91FF90EF90DF90CF900C944B1F842F72\r
+:10253000837009F076C0F110E2C1262F229526950E\r
+:102540002770220F220F862F8F70C82ED12CE12CDE\r
+:10255000F12C022E04C0CC0CDD1CEE1CFF1C0A94D6\r
+:10256000D2F764FF10C06FE070E080E090E004C03C\r
+:10257000660F771F881F991F2A95D2F7609570956F\r
+:102580008095909503C060E070E0CB01242F2695E4\r
+:1025900026952370422F50E042305105D1F0433050\r
+:1025A000510559F16C297D298E299F29413051050A\r
+:1025B00041F128960FB6F894DEBF0FBECDBFDF9174\r
+:1025C000CF911F910F91FF90EF90DF90CF900C94DF\r
+:1025D000C2186C297D298E299F2928960FB6F89458\r
+:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046\r
+:1025F000EF90DF90CF900C94DC180E94C218C701B6\r
+:10260000B60128960FB6F894DEBF0FBECDBFDF919E\r
+:10261000CF911F910F91FF90EF90DF90CF900C948E\r
+:10262000A818FF2019F0842F817001C08695882397\r
+:1026300009F465C1262F229526952770220F220FB7\r
+:10264000862F8F70C82ED12CE12CF12C022E04C0C5\r
+:10265000CC0CDD1CEE1CFF1C0A94D2F764FF10C0EA\r
+:102660006FE070E080E090E004C0660F771F881F85\r
+:10267000991F2A95D2F7609570958095909503C023\r
+:1026800060E070E0CB01242F269526952370422F21\r
+:1026900050E042305105D1F04330510559F16C29D9\r
+:1026A0007D298E299F294130510541F128960FB689\r
+:1026B000F894DEBF0FBECDBFDF91CF911F910F9178\r
+:1026C000FF90EF90DF90CF900C9496196C297D29A4\r
+:1026D0008E299F2928960FB6F894DEBF0FBECDBF76\r
+:1026E000DF91CF911F910F91FF90EF90DF90CF90EE\r
+:1026F0000C94B0190E949619C701B60128960FB61E\r
+:10270000F894DEBF0FBECDBFDF91CF911F910F9127\r
+:10271000FF90EF90DF90CF900C947C19603FC9F14F\r
+:1027200018F4603E50F49BC0623F09F460C008F4A6\r
+:102730004AC0633F09F46FC092C0162F1F70842FE8\r
+:102740008F71FF2099F00E941519812F28960FB6DE\r
+:10275000F894DEBF0FBECDBFDF91CF911F910F91D7\r
+:10276000FF90EF90DF90CF900C945F110E9436198C\r
+:10277000812F28960FB6F894DEBF0FBECDBFDF9134\r
+:10278000CF911F910F91FF90EF90DF90CF900C941D\r
+:102790006611FF20A1F05111B2C0842F8F712896CD\r
+:1027A0000FB6F894DEBF0FBECDBFDF91CF911F9162\r
+:1027B0000F91FF90EF90DF90CF900C945B19523007\r
+:1027C00008F09DC0EACFFF20A1F0842F8F712896DA\r
+:1027D0000FB6F894DEBF0FBECDBFDF91CF911F9132\r
+:1027E0000F91FF90EF90DF90CF900C941519FF2080\r
+:1027F00061F3842F8F7128960FB6F894DEBF0FBE59\r
+:10280000CDBFDF91CF911F910F91FF90EF90DF909F\r
+:10281000CF900C943619FF2091F0842F8F71289659\r
+:102820000FB6F894DEBF0FBECDBFDF91CF911F91E1\r
+:102830000F91FF90EF90DF90CF900C9400192896A5\r
+:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1\r
+:102850000F91FF90EF90DF90CF900C94F618FF202F\r
+:10286000A1F0552309F4B1CF862F28960FB6F8941E\r
+:10287000DEBF0FBECDBFDF91CF911F910F91FF90B3\r
+:10288000EF90DF90CF900C944810552309F4B1CF0E\r
+:10289000862F28960FB6F894DEBF0FBECDBFDF910E\r
+:1028A000CF911F910F91FF90EF90DF90CF900C94FC\r
+:1028B00010114F70C8010E94AB0228960FB6F89411\r
+:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063\r
+:1028D000EF90DF90CF900C941B184F70C801289692\r
+:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121\r
+:1028F0000F91FF90EF90DF90CF900C944C052896AD\r
+:102900000FB6F894DEBF0FBECDBFDF91CF911F9100\r
+:102910000F91FF90EF90DF90CF9008950E94B81A2A\r
+:102920000E94C81A0E948D1A0E94E41A0E94F71F82\r
+:102930000E944B1F80E090E00E94410F80E090E0F9\r
+:102940000C94570F0E94A81A0C948E140E940B1A14\r
+:10295000292F22952F7030E02C3031054CF42A308D\r
+:1029600031056CF4225031092230310590F407C052\r
+:102970002C30310551F02F30310539F00AC0803E3E\r
+:1029800010F0803F31F481E0089593FB882780F9AF\r
+:10299000089580E00895CF93DF9300D000D01F9278\r
+:1029A000CDB7DEB70F900F900F900F900F90DF9183\r
+:1029B000CF910895CF93DF9300D000D000D0CDB752\r
+:1029C000DEB726960FB6F894DEBF0FBECDBFDF91FF\r
+:1029D000CF9108951F93CF93DF93C0917B0116E0B1\r
+:1029E00080917C01C81799F0D0E01C9FF0011D9FD9\r
+:1029F000F00D1124E358FE4F4081518162817381B3\r
+:102A0000848195810E94DA142196C770E9CFDF9105\r
+:102A1000CF911F9108954091AD015091AE01609109\r
+:102A2000AF017091B0018091B1019091B2010C940D\r
+:102A3000DA14CF938091B20182958F7009F05FC054\r
+:102A40008091AF01882309F45AC020917B01A091A5\r
+:102A50007C016091AD017091AE018091B0019091C7\r
+:102A6000B10131E06F3F09F030E0B32FC6E02A1723\r
+:102A700009F445C0009721F07F3F21F44B2F03C09C\r
+:102A800041E001C040E030E040FD35C0C29FF001B0\r
+:102A9000C39FF00D1124E358FE4F418174132BC0E6\r
+:102AA0004081641328C04281411125C04381548173\r
+:102AB0004817590710F441505109481B590B483C1D\r
+:102AC0005105C8F48091B2018F7080618093B2018A\r
+:102AD00086E0829FF001839FF00D1124EE57FE4F98\r
+:102AE00080818F70806180838DEA91E00E946D11FA\r
+:102AF000CF910C94EA142F5F3F4F2770B8CFCF913E\r
+:102B00000895CF92DF92EF92FF920F931F93CF938E\r
+:102B1000DF93CDB7DEB762970FB6F894DEBF0FBE76\r
+:102B2000CDBF8C0185E0F801DE011D9601900D926C\r
+:102B30008A95E1F7D8014C9111965C911197129604\r
+:102B40006C9112971396ED90FC9014977091AD01D3\r
+:102B5000E091AE012091B0013091B1012115310514\r
+:102B600031F0EF3F31F481E07F3F19F403C081E0A1\r
+:102B700001C080E0B82FB170CB2E80FD6CC1D09029\r
+:102B8000AF01DD2009F4F5C0F091B201E216F306C1\r
+:102B900038F0C701821B930B883C910548F09BC01D\r
+:102BA000209530952E0D3F1D283C310508F093C02F\r
+:102BB0008F2F807F09F052C0E51314C0741312C028\r
+:102BC000D62E61110FC0FF70F061F093B2010E9428\r
+:102BD0000B158DEA91E00E946D118091B201F80110\r
+:102BE00085836CC1EF2831F05F3F31F481E04F3FC6\r
+:102BF00019F403C081E001C080E080FD03C081E0E2\r
+:102C0000862701C080E0F82FF170FF2E80FF1CC0E6\r
+:102C100080917B0120917C0136E0821709F428C164\r
+:102C200090E0389FF001399FF00D1124E358FE4FDA\r
+:102C30007181571306C07081471303C072816713F7\r
+:102C400003C001968770E9CFD62E662309F436C1FA\r
+:102C50008091B20181608093B20153C0E51308C036\r
+:102C6000741306C0611104C0D8011596FC93AEC060\r
+:102C70004D875E878D859E856A8B0E94A6146A8922\r
+:102C8000882329F1D62E662311F12091B201822FDB\r
+:102C900082958F7090E002970CF460C08091AD0136\r
+:102CA0009091AE0198878F831986FB86EA862C87E0\r
+:102CB000CE01079651C0E51731F14D875E878D85AE\r
+:102CC0009E856A8B0E94A6146A8981112EC0C80154\r
+:102CD0000E946D11A4C08F2F807F69F77E2DF98A25\r
+:102CE000E88A89890E94CB148DEA91E00E946D11D7\r
+:102CF000EDEAF1E086E0DF011D928A95E9F70E9496\r
+:102D00000B15D12CDBC07413D8CF6111D6CFD801ED\r
+:102D10001596FC93C8010E946D11EDEAF1E086E082\r
+:102D2000DF011D928A95E9F7C9C0D62E662379F294\r
+:102D30002091B201822F82958F7090E0029774F0FB\r
+:102D40008091AD019091AE019A8389831B82FD82AF\r
+:102D5000EC822E83CE0101960E946D1186E0F8016F\r
+:102D6000ADEAB1E001900D928A95E1F70E94191544\r
+:102D70006FC0E216F30628F0C701821B930B9C017B\r
+:102D800004C0209530952E0D3F1D283C310508F0DC\r
+:102D900052C0D62E662309F49ACFE5132CC07413C3\r
+:102DA0002AC08091B20180FD1DC0982F92959F701E\r
+:102DB000C9F0D80115968C9315979F3039F09F5F15\r
+:102DC0009295907F8F70892B15968C93C8010E94E5\r
+:102DD0006D1186E0F801ADEAB1E001900D928A959F\r
+:102DE000E1F736C086E0F801ADEAB1E001900D925E\r
+:102DF0008A95E1F763C04D875E878D859E850E9429\r
+:102E0000A614882379F086E0F801ADEAB1E00190DC\r
+:102E10000D928A95E1F70E9419150E940B15DD2489\r
+:102E2000D3944CC08091B20181608093B201C801FB\r
+:102E30000E946D1143C07E2DF98AE88A89890E941B\r
+:102E4000CB14EDEAF1E086E0DF011D928A95E9F707\r
+:102E50000E940B1533C0662309F439CF4D875E8776\r
+:102E60008D859E850E94A614882309F430CFCBCF90\r
+:102E70004D875E878D859E850E940B1A292F22958E\r
+:102E80002F7030E0223031052CF49F7041F0811119\r
+:102E900006C00CC0243031052CF49F7049F4805ECC\r
+:102EA000883020F0C8010E946D11CF2CDC2C06C0A8\r
+:102EB000D80115969C91907F91F7F8CF8D2D629651\r
+:102EC0000FB6F894DEBF0FBECDBFDF91CF911F913B\r
+:102ED0000F91FF90EF90DF90CF9008951F93CF93C5\r
+:102EE000DF93CDB7DEB72C970FB6F894DEBF0FBED9\r
+:102EF000CDBF4F83588769877A878B879C87CE01A0\r
+:102F000007960E9481158823C1F02F8138858A8514\r
+:102F10009B85892B31F03F3F11F080E003C02F3FAC\r
+:102F2000E1F781E0811147C04F81588569857A8535\r
+:102F30008B859C850E94DA143EC086E0FE013796A0\r
+:102F4000DE01119601900D928A95E1F7FF81E885E7\r
+:102F50004A855B854115510531F0EF3F31F481E041\r
+:102F6000FF3F19F403C081E001C080E080FD23C071\r
+:102F700020917C0130E0C90101968770992760910A\r
+:102F80007B0170E086179707F1F1F983EA835D838F\r
+:102F90004C8396E0929FD001939FB00D1124A358CB\r
+:102FA000BE4FFE01319601900D929A95E1F7809304\r
+:102FB0007C010E94EA1416E080917B0190917C01D3\r
+:102FC000891779F1189FC001112483589E4F0E94E0\r
+:102FD0008115882331F1E0917B011E9FF0011124BE\r
+:102FE000E358FE4F408151816281738184819581D4\r
+:102FF0000E94DA1480917B0190E0019687709927F6\r
+:1030000080937B01D9CF0E94A21410927C01109270\r
+:103010007B01EDEAF1E086E0DF011D928A95E9F798\r
+:10302000CACF2C960FB6F894DEBF0FBECDBFDF918E\r
+:10303000CF911F910895EF92FF920F931F93CF931B\r
+:10304000DF939C01009709F471C0F12CEE24E39406\r
+:10305000E9012196F9018491843740F4843008F025\r
+:1030600056C0813081F0823021F160C0853709F48B\r
+:1030700049C0C0F19CE7980F903708F057C08F7790\r
+:103080000E94101146C089010E5F1F4FFE018491FE\r
+:1030900090E2980F983050F48770FE2D01C0FF0F1A\r
+:1030A0008A95EAF78F2F0E94BB1A15C00E9448101C\r
+:1030B00014C089010E5F1F4FFE01849190E2980FAA\r
+:1030C000983068F48770FE2D01C0FF0F8A95EAF7EB\r
+:1030D0008F2F0E94C11A0E94E41AE8011AC00E94B0\r
+:1030E0001011FBCF2E5F3F4FFE01C491CC2341F066\r
+:1030F0008FE99FE00197F1F700C00000C150F6CFC3\r
+:10310000E90107C0FE01F490E901229602C00E9485\r
+:1031100048108F2D882341F0EFE9FFE03197F1F758\r
+:1031200000C000008150F6CF9E0192CFDF91CF9179\r
+:103130001F910F91FF90EF90089508956093B7014C\r
+:103140007093B8018093B9019093BA010C948E14D6\r
+:103150000F931F930091B7011091B8012091B9010D\r
+:103160003091BA01062B172B282B392B0093B7016E\r
+:103170001093B8012093B9013093BA011F910F91B8\r
+:103180000C948E140F931F930091B7011091B80106\r
+:103190002091B9013091BA0106231723282339233E\r
+:1031A0000093B7011093B8012093B9013093BA018D\r
+:1031B0001F910F910C948E140F931F930091B701E0\r
+:1031C0001091B8012091B9013091BA010627172753\r
+:1031D000282739270093B7011093B8012093B9012C\r
+:1031E0003093BA011F910F910C948E141092B30179\r
+:1031F0001092B4011092B5011092B6010C948E1485\r
+:1032000041E050E060E070E004C0440F551F661FCD\r
+:10321000771F8A95D2F74093B3015093B40160931E\r
+:10322000B5017093B6010C948E1441E050E060E05B\r
+:1032300070E004C0440F551F661F771F8A95D2F7B0\r
+:103240008091B3019091B401A091B501B091B60104\r
+:10325000842B952BA62BB72B8093B3019093B401AD\r
+:10326000A093B501B093B6010C948E1441E050E0E8\r
+:1032700060E070E004C0440F551F661F771F8A95F9\r
+:10328000D2F740955095609570958091B3019091DB\r
+:10329000B401A091B501B091B60184239523A62372\r
+:1032A000B7238093B3019093B401A093B501B09379\r
+:1032B000B6010C948E1441E050E060E070E004C070\r
+:1032C000440F551F661F771F8A95D2F78091B3016F\r
+:1032D0009091B401A091B501B091B60184279527D2\r
+:1032E000A627B7278093B3019093B401A093B501AB\r
+:1032F000B093B6010C948E140F931F930091B301F9\r
+:103300001091B4012091B5013091B601062B172B15\r
+:10331000282B392B0093B3011093B4012093B501EE\r
+:103320003093B6011F910F910C948E140F931F933D\r
+:103330000091B3011091B4012091B5013091B60113\r
+:1033400006231723282339230093B3011093B401D4\r
+:103350002093B5013093B6011F910F910C948E14F8\r
+:103360000F931F930091B3011091B4012091B50107\r
+:103370003091B60106271727282739270093B30174\r
+:103380001093B4012093B5013093B6011F910F91B2\r
+:103390000C948E140895CF92DF92EF92FF920F93C8\r
+:1033A0001F93CF93DF93EC01C090B701D090B80189\r
+:1033B000E090B901F090BA018091B3019091B4010D\r
+:1033C000A091B501B091B601C82AD92AEA2AFB2AF0\r
+:1033D0000FE110E0B701A601002E04C076956795B5\r
+:1033E000579547950A94D2F740FD05C00150110941\r
+:1033F00088F780E007C0BE01802F0E9489070197EF\r
+:10340000A9F3802FDF91CF911F910F91FF90EF9043\r
+:10341000DF90CF900895CF93DF93EC010E94CB19FA\r
+:10342000BE010E948907DF91CF910895CB010E94D0\r
+:103430000B1A089590910C019923D9F090910D01E8\r
+:103440009923B9F0982F9695969596959F3088F583\r
+:10345000E0910E01F0910F01E90FF11D877021E05D\r
+:1034600030E001C0220F8A95EAF78181822B8183A7\r
+:10347000089540910E0150910F0120E030E09FEF40\r
+:10348000FA01E20FF31F6281681799F09F3F19F468\r
+:10349000611101C0922F2F5F3F4F2E30310581F710\r
+:1034A0009F3F39F0FA01E90FF11D97FDFA958283EC\r
+:1034B0000895089590910C019923E1F090910D01E8\r
+:1034C0009923C1F0982F9695969596959F3020F563\r
+:1034D000E0910E01F0910F01E90FF11D877021E0DD\r
+:1034E00030E001C0220F8A95EAF7209581812823D8\r
+:1034F0002183089540910E0150910F0120E030E0AA\r
+:10350000FA01E20FF31F9281981301C012822F5F1C\r
+:103510003F4F2E303105A1F7089581E090E0E09112\r
+:103520000E01F0910F01E80FF91F10820196803112\r
+:103530009105A9F708959091CE01982B9093CE0113\r
+:10354000089580959091CE0198239093CE0108958F\r
+:103550001092CE0108959091CD01982B9093CD01BA\r
+:10356000089580959091CD0198239093CD01089571\r
+:103570001092CD0108959091CC01982B9093CC019D\r
+:10358000089580959091CC0198239093CC01089553\r
+:103590001092CC0108958093BB0108951092BB0155\r
+:1035A000089540910E0150910F0120E030E080E03D\r
+:1035B000FA01E20FF31F918191118F5F2F5F3F4F4F\r
+:1035C0002F303105A9F70895E0910E01F0910F0118\r
+:1035D0008091CE018083E0910E01F0910F018081F6\r
+:1035E0009091CD01892B8083E0910E01F0910F0124\r
+:1035F00080819091CC01892B80839091BB0199238C\r
+:1036000061F0E0910E01F0910F018081892B8083A0\r
+:103610000E94D11A81111092BB0180910E019091EC\r
+:103620000F010C942B0FCF92DF92EF92FF920F932A\r
+:103630001F936C01EE24FF24C114D104E104F104B2\r
+:1036400021F46B017C0180E001C080E133272F2D44\r
+:103650001E2D0D2D011511052105310519F0885F6D\r
+:103660006801790197018601A4E0369527951795A1\r
+:103670000795AA95D1F7011511052105310519F016\r
+:103680008C5F6801790197018601F2E036952795F4\r
+:1036900017950795FA95D1F7011511052105310503\r
+:1036A00019F08E5F68017901B701A60176956795DB\r
+:1036B00057954795452B462B472B09F08F5F1F9158\r
+:1036C0000F91FF90EF90DF90CF9008958091E601E9\r
+:1036D000843021F11092D00120E488E190E00FB60F\r
+:1036E000F894A895809360000FBE2093600080E05E\r
+:1036F0000E94240883B7817F846083BF83B7816081\r
+:1037000083BF7894889583B78E7F83BF88E10FB697\r
+:10371000F89480936000109260000FBE08950895A1\r
+:103720000895CF930E948F1B0E9458040E94901B03\r
+:10373000C0E08C2F0E944505811105C0CF5FCE30BF\r
+:10374000C1F780E001C081E0CF9108950E94A214EA\r
+:103750000E941F0F0C94240882E084BD93E095BD65\r
+:103760009AEF97BD80936E0008952FB7F8948091DB\r
+:10377000D1019091D201A091D301B091D4012FBF7A\r
+:103780000895CF92DF92EF92FF920F931F932FB77E\r
+:10379000F8944091D1015091D2016091D301709180\r
+:1037A000D4012FBF6A017B01EE24FF248C0120E0AD\r
+:1037B00030E0C016D106E206F30610F4415051097C\r
+:1037C000481B590BCA011F910F91FF90EF90DF909A\r
+:1037D000CF9008951F920F920FB60F9211248F93DE\r
+:1037E0009F93AF93BF938091D1019091D201A0910B\r
+:1037F000D301B091D4010196A11DB11D8093D101D7\r
+:103800009093D201A093D301B093D401BF91AF9113\r
+:103810009F918F910F900FBE0F901F9018950E944F\r
+:10382000250CF8942FEF87EA91E6215080409040D4\r
+:10383000E1F700C0000087E090EBDC018093F0012D\r
+:103840009093F101A093F201B093F3012CE088E191\r
+:1038500090E00FB6F894A895809360000FBE209377\r
+:103860006000FFCFEF92FF920F931F93CF93DF93F0\r
+:10387000E82EF12C8F2D0E944505C0E0D0E0082FE6\r
+:1038800010E098010C2E02C0359527950A94E2F7B6\r
+:1038900020FD05C02196C630D10599F709C06C2FCF\r
+:1038A0007F2D80E00E944D05E812F4CF81E005C035\r
+:1038B000F3948EE0F812DECF80E0DF91CF911F917C\r
+:1038C0000F91FF90EF900895CF93C82F8CE20E9444\r
+:1038D000321C882321F08C2FCF910C94321C80E075\r
+:1038E000CF910895CF930E94B71D811102C00E940D\r
+:1038F0009D1DC5E6C15049F00E9458048FE39CE924\r
+:103900000197F1F700C00000F5CF89E20E94641C26\r
+:10391000811111C18AE20E94641C81110E949D1DC7\r
+:1039200085E00E94641C81110E940F1C0E94C21D30\r
+:103930008093CF0187E00E94641C882399F18BE17A\r
+:103940000E94641C882351F09091CF0191FB88273D\r
+:1039500080F921E0822780FB91F922C08EE00E944D\r
+:10396000641C882351F09091CF0192FB882780F945\r
+:1039700021E0822780FB92F913C080E10E94641C41\r
+:103980009091CF01882341F093FB882780F921E0B3\r
+:10399000822780FB93F904C0892F809580FB90F9E2\r
+:1039A0009093CF018091CF010E94C61D0E94D41D2B\r
+:1039B0008093EF0180EE0E94641C882341F0809187\r
+:1039C000EF01982F909590FB80F98093EF0189E3A8\r
+:1039D0000E94641C882359F09091EF0191FB882785\r
+:1039E00080F921E0822780FB91F99093EF0182EE2C\r
+:1039F0000E94641C882359F09091EF0192FB882764\r
+:103A000080F921E0822780FB92F99093EF0186EE06\r
+:103A10000E94641C882359F09091EF0193FB882742\r
+:103A200080F921E0822780FB93F99093EF0183EEE8\r
+:103A30000E94641C882359F09091EF0194FB882721\r
+:103A400080F921E0822780FB94F99093EF0185E3D0\r
+:103A50000E94641C882359F09091EF0195FB882700\r
+:103A600080F921E0822780FB95F99093EF0181E3B3\r
+:103A70000E94641C882359F09091EF0196FB8827DF\r
+:103A800080F921E0822780FB96F99093EF0181E194\r
+:103A90000E94641C882359F09091EF0197FB8827BE\r
+:103AA00080F921E0822780FB97F99093EF018091C4\r
+:103AB000EF010E94D81D8091EF0187FB882780F9D4\r
+:103AC00080930D0187E20E94641CC82F8EE10E9442\r
+:103AD000641C8111C2608FE10E94641C8111C4606A\r
+:103AE00080E20E94641C8111C86081E20E94641C13\r
+:103AF0008111C06182E20E94641C8111C06283E274\r
+:103B00000E94641C8111C06484E20E94641C8823AA\r
+:103B100011F0C06802C0CC2329F08C2F0E94CF1D69\r
+:103B20006C2F03C00E94CB1D682F70E080E090E0F6\r
+:103B3000CF910C949E18CF9108956DEE7EEF80E0AA\r
+:103B400090E00E94F52360E082E090E00E94E32391\r
+:103B500060E083E090E00E94E32360E084E090E096\r
+:103B60000E94E32360E085E090E00C94E32380E092\r
+:103B700090E00E94DD2321E08D3E9E4F09F020E081\r
+:103B8000822F089582E090E00C94D523682F82E084\r
+:103B900090E00C94E32383E090E00C94D523682F0D\r
+:103BA00083E090E00C94E32384E090E00C94D52330\r
+:103BB000682F84E090E00C94E3238091D70180FF8C\r
+:103BC0000BC06091130185E0689FB00111247595C9\r
+:103BD0006795759567952AC081FF09C060911301AB\r
+:103BE00085E0689FB0011124759567951FC082FF1D\r
+:103BF00007C06091130185E0689FB001112416C0D1\r
+:103C00004091D8014423C9F060911201461788F70A\r
+:103C10002091130185E0289F90011124429FC0014B\r
+:103C2000439F900D112470E00E94A7236038710516\r
+:103C300040F46115710539F002C065E070E0862F2F\r
+:103C400008958FE7089581E008958091D70180FF5E\r
+:103C500008C06091110170E075956795759567953D\r
+:103C600021C081FF06C06091110170E075956795D4\r
+:103C700019C082FF04C06091110170E010C08091F2\r
+:103C8000D8018823C1F0609110018617A0F79091A8\r
+:103C90001101989FC001112470E00E94A723603891\r
+:103CA000710528F46115710521F0862F08958FE7BD\r
+:103CB000089581E0089561E070E0F4CF803F21F441\r
+:103CC0000E94DD1D819504C0813F29F40E94DD1D05\r
+:103CD0008093DB010895823F21F40E94DD1D8195D0\r
+:103CE00004C0833F29F40E94DD1D8093DA0108950A\r
+:103CF000893F19F40E94251E05C08A3F31F40E94B5\r
+:103D0000251E81958093DC0108958B3F21F40E944C\r
+:103D1000251E819504C08C3F29F40E94251E8093A6\r
+:103D2000DD010895843F21F48091D901816017C09D\r
+:103D3000853F21F48091D901826011C0863F21F432\r
+:103D40008091D90184600BC0873F21F48091D90113\r
+:103D5000886005C0883F31F48091D90180618093EB\r
+:103D6000D90108958D3F21F48091D70181600BC066\r
+:103D70008E3F21F48091D701826005C08F3F29F4E6\r
+:103D80008091D70184608093D7010895803F39F4F2\r
+:103D90008091DB0187FF6CC01092DB0169C0813F1D\r
+:103DA00029F48091DB011816BCF362C09091DA010E\r
+:103DB000823F29F497FF5CC01092DA0159C0833F1B\r
+:103DC00019F41916CCF354C0893F41F48091DC01F9\r
+:103DD00018160CF04DC01092DC014AC08A3F29F43D\r
+:103DE0008091DC0187FF44C0F6CF8B3F39F480918E\r
+:103DF000DD0187FF3DC01092DD013AC08C3F29F400\r
+:103E00008091DD011816BCF333C0843F21F480910A\r
+:103E1000D9018E7F17C0853F21F48091D9018D7F14\r
+:103E200011C0863F21F48091D9018B7F0BC0873F61\r
+:103E300021F48091D901877F05C0883F31F48091BA\r
+:103E4000D9018F7E8093D90113C08D3F21F48091D9\r
+:103E5000D7018E7F0BC08E3F21F48091D7018D7FDB\r
+:103E600005C08F3F29F48091D7018B7F8093D701C4\r
+:103E70008091DA0181110EC08091DB0181110AC0AD\r
+:103E80008091DC01811106C08091DD01811102C0A9\r
+:103E90001092D801089589ED91E00E94360F0E949A\r
+:103EA000B51B9093D6018093D50108951F93CF93AE\r
+:103EB000DF938091D5019091D6010E94C11B409162\r
+:103EC000D801442321F02091140130E006C0209154\r
+:103ED00015015AE0259F900111248217930708F4D9\r
+:103EE00082C08091DA011091DB01D091DC01C09198\r
+:103EF000DD01811107C0111105C0D11103C0CC2310\r
+:103F000009F471C04F3F19F04F5F4093D801181664\r
+:103F100024F40E94DD1D8093DA018091DA0187FF8D\r
+:103F200005C00E94DD1D81958093DA01111624F4ED\r
+:103F30000E94DD1D8093DB018091DB0187FF05C0BE\r
+:103F40000E94DD1D81958093DB016091DA0166237B\r
+:103F500039F11091DB01112319F1772767FD709575\r
+:103F6000872F972F0E94B82223E333E343E35FE3D5\r
+:103F70000E941C230E9485226093DA01612F77271B\r
+:103F800067FD7095872F972F0E94B82223E333E3B4\r
+:103F900043E35FE30E941C230E9485226093DB01C0\r
+:103FA0001D1624F40E94251E8093DC018091DC0103\r
+:103FB00087FF05C00E94251E81958093DC011C1699\r
+:103FC00024F40E94251E8093DD018091DD0187FF8E\r
+:103FD00005C00E94251E81958093DD01DF91CF9160\r
+:103FE0001F910C944B1FDF91CF911F910895E9ED24\r
+:103FF000F1E085E0DF011D928A95E9F71092D80182\r
+:104000001092D7010895833081F128F4813059F05E\r
+:104010008230D1F00895853009F449C0B8F1863076\r
+:1040200009F456C0089520911501862F90E0820F63\r
+:10403000911D8F3F910520F4620F60931501089543\r
+:104040008FEF80931501089520911401862F90E041\r
+:10405000820F911D8F3F910520F4620F6093140130\r
+:1040600008958FEF80931401089520911301862FF6\r
+:1040700090E0820F911D8F3F910520F4620F6093B5\r
+:10408000130108958FEF8093130108952091120179\r
+:10409000862F90E0820F911D8F3F910520F4620FD3\r
+:1040A0006093120108958FEF80931201089520917B\r
+:1040B0001101862F90E0820F911D8F3F910520F412\r
+:1040C000620F6093110108958FEF8093110108959D\r
+:1040D00020911001862F90E0820F911D8F3F910556\r
+:1040E00020F4620F6093100108958FEF8093100108\r
+:1040F0000895833011F128F4813049F0823091F035\r
+:104100000895853081F120F18630C1F108958091C4\r
+:104110001501681720F4861B8093150108951092ED\r
+:104120001501089580911401681720F4861B80936F\r
+:1041300014010895109214010895809113016817D5\r
+:1041400020F4861B809313010895109213010895A3\r
+:1041500080911201681720F4861B80931201089544\r
+:1041600010921201089580911101681720F4861BA6\r
+:10417000809311010895109211010895809110010A\r
+:10418000681720F4861B8093100108951092100187\r
+:1041900008958D3109F442C020F58E3009F477C0BE\r
+:1041A00070F4873009F459C018F48630F1F134C046\r
+:1041B000883009F4A8C08B3009F4A5C02DC0863121\r
+:1041C00009F4A1C038F4803109F472C0813109F4D6\r
+:1041D00079C022C0893109F496C08B3109F44DC0F1\r
+:1041E0001BC0853309F487C048F4873209F483C0C3\r
+:1041F00008F473C0893209F47EC00EC0833438F4E9\r
+:104200008A3308F068C0883309F47DC005C0833460\r
+:1042100009F471C0883499F080E008950E943F222B\r
+:104220000E941F0F0E9424086EC08091CF01817FE1\r
+:104230008E7F8093CF0181E08093DF0108950E94FB\r
+:10424000A2142FEF83ED90E3215080409040E1F7DE\r
+:1042500000C000000E940F1C56C09091CF01892F12\r
+:104260008095817080FB90F919F0966098601DC070\r
+:10427000997F977F9093CF0146C09091CF0191FB9A\r
+:10428000882780F921E0822780FB91F909C090916D\r
+:10429000CF0192FB882780F921E0822780FB92F9E9\r
+:1042A0009093CF01882379F191609093CF01089585\r
+:1042B0009091CF0193FB882780F921E0822780FB32\r
+:1042C00093F9EECF0E94A21480910D0191E089270D\r
+:1042D00080930D0118C027EC01C023EE280F61E088\r
+:1042E00070E080E090E004C0660F771F881F991F80\r
+:1042F0002A95D2F704C061E070E080E090E00E946F\r
+:104300009E180E94A21481E0089580E0089580E044\r
+:104310000895CF93C82F8091DF01813079F018F094\r
+:104320008230D1F184C0A0910E01B0910F018C9127\r
+:10433000813169F0823209F07CC009C0A0910E0180\r
+:10434000B0910F018C91813111F0823249F48C2FA0\r
+:104350000E94852181111DC08C2F0E94C9201AC086\r
+:104360008C2F0E948721811114C0C43179F048F448\r
+:10437000CB3079F0C03109F060C082E08093DF017A\r
+:1043800008C0C93219F0C83321F057C01092DF01BC\r
+:1043900054C081E0817053C0C93289F118F5C4312D\r
+:1043A00071F1A8F4C73009F046C08AE08093150186\r
+:1043B00094E19093140193E0909313018093120180\r
+:1043C00088E08093110188E28093100134C0CE51BF\r
+:1043D000C63088F5EC2FF0E0E65DFE4F80818093DB\r
+:1043E000DE0129C0CE34E9F020F4CB3421F56AE0B7\r
+:1043F00013C0C13579F0C235F1F461E00DC0809190\r
+:10440000DE01882319F01092DE0115C081E080934F\r
+:10441000DF0115C061E006C08091DE010E9403202B\r
+:104420000AC06AE08091DE010E94792004C01092E7\r
+:10443000DF0180E004C081E002C080E0ABCFCF911B\r
+:104440000895E1E8F0E08081886080838081816068\r
+:1044500080838FB7F89493E09093890090ED9093C8\r
+:1044600088008FBF0895EFE6F0E08081826080834E\r
+:104470000895EFE6F0E080818D7F80830895EFE678\r
+:10448000F0E0808192E08927808308951F920F9247\r
+:104490000FB60F9211242F933F934F935F936F9317\r
+:1044A0007F938F939F93AF93BF93EF93FF938091ED\r
+:1044B000E0019091E10101969093E1018093E00188\r
+:1044C000811103C082E00E942408E091E101E69599\r
+:1044D000E695F0E0E657FB4FE4918091E0018E1302\r
+:1044E00003C080E00E942408FF91EF91BF91AF913B\r
+:1044F0009F918F917F916F915F914F913F912F91FC\r
+:104500000F900FBE0F901F90189504D06894B111B2\r
+:104510008DC0089570D088F09F5790F0B92F9927DB\r
+:10452000B751A0F0D1F0660F771F881F991F1AF0BE\r
+:10453000BA95C9F712C0B13081F077D0B1E00895D3\r
+:1045400074C0672F782F8827B85F39F0B93FCCF354\r
+:10455000869577956795B395D9F73EF490958095B4\r
+:10456000709561957F4F8F4F9F4F0895E89409C0D4\r
+:1045700097FB3EF490958095709561957F4F8F4F96\r
+:104580009F4F9923A9F0F92F96E9BB279395F695AC\r
+:10459000879577956795B795F111F8CFFAF4BB0F2A\r
+:1045A00011F460FF1BC06F5F7F4F8F4F9F4F16C08E\r
+:1045B000882311F096E911C0772321F09EE8872F18\r
+:1045C000762F05C0662371F096E8862F70E060E0D4\r
+:1045D0002AF09A95660F771F881FDAF7880F96954D\r
+:1045E000879597F9089557FD9058440F551F59F036\r
+:1045F0005F3F71F04795880F97FB991F61F09F3FD0\r
+:1046000079F087950895121613061406551FF2CFF8\r
+:104610004695F1DF08C0161617061806991FF1CF48\r
+:1046200086957105610508940895E894BB2766276F\r
+:104630007727CB0197F908950BD078C069D028F07F\r
+:104640006ED018F0952309F05AC05FC01124EECF48\r
+:10465000CADFA0F3959FD1F3950F50E0551F629FDD\r
+:10466000F001729FBB27F00DB11D639FAA27F00DCB\r
+:10467000B11DAA1F649F6627B00DA11D661F829FF2\r
+:104680002227B00DA11D621F739FB00DA11D621FD7\r
+:10469000839FA00D611D221F749F3327A00D611DF4\r
+:1046A000231F849F600D211D822F762F6A2F1124D6\r
+:1046B0009F5750408AF0E1F088234AF0EE0FFF1F29\r
+:1046C000BB1F661F771F881F91505040A9F79E3F60\r
+:1046D000510570F014C0AACF5F3FECF3983EDCF3B5\r
+:1046E000869577956795B795F795E7959F5FC1F79D\r
+:1046F000FE2B880F911D9695879597F9089597F948\r
+:104700009F6780E870E060E008959FEF80EC089577\r
+:1047100000240A94161617061806090608950024A0\r
+:104720000A9412161306140605060895092E03941A\r
+:10473000000C11F4882352F0BB0F40F4BF2B11F48E\r
+:1047400060FF04C06F5F7F4F8F4F9F4F089597FBAF\r
+:10475000072E16F4009407D077FD09D00E94C123DC\r
+:1047600007FC05D03EF4909581959F4F0895709574\r
+:1047700061957F4F0895EE0FFF1F0590F491E02D96\r
+:104780000994AA1BBB1B51E107C0AA1FBB1FA61798\r
+:10479000B70710F0A61BB70B881F991F5A95A9F7EA\r
+:1047A00080959095BC01CD010895F999FECF92BDF9\r
+:1047B00081BDF89A992780B50895A8E1B0E042E05C\r
+:1047C00050E00C94FD23262FF999FECF92BD81BDB8\r
+:1047D000F89A019700B4021639F01FBA20BD0FB63F\r
+:1047E000F894FA9AF99A0FBE08950196272F0E941D\r
+:1047F000E4230C94E323DC01CB01FC01F999FECF07\r
+:1048000006C0F2BDE1BDF89A319600B40D92415058\r
+:0A4810005040B8F70895F894FFCF68\r
+:10481A0020022608B30890085C0829080101BC0197\r
+:10482A0028080A03140A3F4D36394B04FE03C8030D\r
+:10483A008F0322033B0354036D030102030405069D\r
+:04484A000708090052\r
:00000001FF\r
#define SYMB 1 // symbols
#define MDIA 2 // media keys
+#define LSFTO M(0) // Left shift, open parens when tapped
+#define RSFTC M(1) // Right shift, close parens when tapped
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | Alt/J| K | L |; / L2| LGui/' |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
+ * |LShift/(|Z/Ctrl| X | C | V | B | [ | | ] | N | M | , | . |//Ctrl|RShift/)|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
+ * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | - |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
+ LSFTO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_LBRC),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
KC_HOME,
- KC_SPC,KC_FN1,KC_END,
+ KC_SPC,KC_FN1,KC_END,
// right hand
- KC_RGHT, KC_6,KC_7, KC_8, KC_9, KC_0, KC_MINS,
- TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS,
- KC_H,ALT_T(KC_J),KC_K, KC_L, LT(MDIA,KC_SCLN),GUI_T(KC_QUOT),
- MEH_T(KC_NO),KC_N,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
- KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
- KC_LALT, CTL_T(KC_ESC),
+ KC_RGHT, KC_6,KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H,ALT_T(KC_J),KC_K, KC_L, LT(MDIA,KC_SCLN),GUI_T(KC_QUOT),
+ MEH_T(KC_RBRC),KC_N,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), RSFTC,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_MINS,
+ KC_LALT, CTL_T(KC_ESC),
KC_PGUP,
KC_PGDN,LT(SYMB, KC_TAB), KC_ENT
),
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
};
+static uint16_t key_timer;
+
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
- // MACRODOWN only works in this function
switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
+ case 0: {
+ if (record->event.pressed) {
+ key_timer = timer_read(); // if the key is being pressed, we start the timer.
+ register_code(KC_LSFT); // we're now holding down Shift.
+ } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
+ if (timer_elapsed(key_timer) < 70) { // the threshhold we pick for counting something as a tap.
+ register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren
+ unregister_code(KC_9); // now let's let go of that key
+ }
+ unregister_code(KC_LSFT); // let's release the Shift key now.
+ }
+ break;
+ }
+ case 1: {
+ if (record->event.pressed) {
+ key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key
+ register_code(KC_RSFT);
+ } else {
+ if (timer_elapsed(key_timer) < 70) {
+ register_code(KC_0);
+ unregister_code(KC_0);
+ }
+ unregister_code(KC_RSFT);
+ }
+ break;
}
- break;
}
return MACRO_NONE;
};
}
};
+
+
Changelog:
+## Apr 29, 2016:
+
+* Tweaks the Hyper and Meh key to send brackets when tapped
+* Turns bottom-right key into a minus/underscore (easy to reach with the right pinky)
+
+## Apr 25, 2016:
+
+* Made it so that the right and left Shift keys send opening and closing parens ( ) when tapped
+
## Feb 11, 2016:
* Updated ASCII legend for thumb clusters
--- /dev/null
+#!/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())
--- /dev/null
+:100000000C9412040C9456040C9456040C9456044C\r
+:100010000C9456040C9456040C9456040C945604F8\r
+:100020000C9456040C9456040C944F0F0C9421100D\r
+:100030000C9456040C9456040C9456040C945604D8\r
+:100040000C9456040C94D6240C9456040C94560428\r
+:100050000C9456040C94751E0C9456040C9456047F\r
+:100060000C9456040C9456040C9456040C945604A8\r
+:100070000C9456040C9456040C9456040C94560498\r
+:100080000C9456040C9456040C9456040C94560488\r
+:100090000C9456040C9456040C9456040C94560478\r
+:1000A0000C9456040C9456040C945604A305700545\r
+:1000B0005B05B505DC050F06F105F7050C063A06EC\r
+:1000C0002F06FA0532064605EB0523062C066D05BC\r
+:1000D0006405B205A905910567052605BE05140648\r
+:1000E0001D0629069705C705A60540051A06E5055C\r
+:1000F00088059D0594057C0520068B053105E805DE\r
+:100100008205C1052005AC055E054C057605730525\r
+:10011000CA059A05060637058505AF052305B80506\r
+:1001200003060906D3055505EE0543056A054F0587\r
+:10013000C405F40535062905A005BB05FD05CD055B\r
+:1001400052052606E2053D058E055805D9056105CF\r
+:1001500000063A05D005DF052C0549053F061706C0\r
+:1001600079053405D6057F0514058610A81093116E\r
+:10017000A8109311EA100D119311621175116E14EC\r
+:100180006E149C149C14DE141A151A171A173215C3\r
+:100190001A1729162916F4161A171A1708170552CE\r
+:1001A000045201520352010000001E001B001800FF\r
+:1001B0002F00010029001F0013000C003300E30092\r
+:1001C000E1002000090004003400E2002A002100C0\r
+:1001D0001A0008000600E000650022000A00120074\r
+:1001E0001900000049002E004A0000004D000000E8\r
+:1001F00002542E02025400002B0000005E30230047\r
+:100200000B001600050000004C0024000D0011003A\r
+:100210001000E4004B0025000E0015003600E6003B\r
+:100220002C0026000F001700370050002800270080\r
+:1002300014000700520051004E0035001C002D0034\r
+:100240001D004F000000010001000100010001003D\r
+:1002500000001E02300238020100010001001F02EE\r
+:10026000641438003000010001002002240223023F\r
+:1002700027020100010001002414251401000100DF\r
+:1002800001000100271426140100000001000100F4\r
+:100290000100000001000000010001000100000059\r
+:1002A0000100000001000100310021022D140000B6\r
+:1002B000010001006400250222020100010001008A\r
+:1002C0006402260236020100010001000100301420\r
+:1002D00037023830010035021F023102553002303A\r
+:1002E0000100010001002D0201003D30000001006D\r
+:1002F000010001000100010000003A0001000100BE\r
+:100300000100010001003B000100010001000100AB\r
+:1003100001003C00010001000100010001003D005E\r
+:10032000010001000100010001003E000100010088\r
+:100330000100000001004400010000000100000075\r
+:1003400001004500010000005300000001003F00D3\r
+:100350000100010001000000010040005F005C009E\r
+:10036000590062000100410060005D005A008500F4\r
+:100370000100420061005E005B0063000100430079\r
+:100380005500560057005800010067005400560001\r
+:1003900057005800000001000100010001000100A9\r
+:1003A00000004D30393001005B3001000100513058\r
+:1003B00058303C303B300100010050300130141403\r
+:1003C0005D30010001004A30593008145C300100F2\r
+:1003D0000100493057300430003000000100053082\r
+:1003E0000100000001000000010001000100000008\r
+:1003F0000100000001004F305A3037301E0200006B\r
+:1004000001004E3001004B30010001000100483076\r
+:10041000563054305330010001004C30010003309D\r
+:100420003A300100010052300100010001000100DA\r
+:1004300001000100010001000100010000000100B5\r
+:100440000100010001000100000042302030343082\r
+:1004500001000100010046302E302630333001000B\r
+:10046000010045302D301E300100010001004030F8\r
+:100470002B3022300100010001003F3025302C30AC\r
+:100480000100000001000100010000000100000067\r
+:1004900001000100010000000100000001004430E3\r
+:1004A000233031301F3000000100433035302A3016\r
+:1004B0002930010001003E302730303001000100BA\r
+:1004C0000100413028303230010001000100473086\r
+:1004D000010021300100010001000100363024300C\r
+:1004E0002F300100000001000100010001000100A7\r
+:1004F0000000010008301B30010001000100010074\r
+:1005000015300D301A3001000100010014300630A2\r
+:10051000010001000100010012300A300100010059\r
+:10052000010001000C301330010000000100010047\r
+:1005300001000000010000000100010001000000B6\r
+:1005400001000000010001000B30183007300000EE\r
+:10055000010001001C3011301030010001000100C9\r
+:100560000E30173001000100010001000F3019307A\r
+:10057000010001000100010001000930010001003B\r
+:10058000010001001D3001001630010000000100D3\r
+:100590000100010001000100000001000100010054\r
+:1005A0000100010001000100010001000100010043\r
+:1005B0000100010001000100010001000100010033\r
+:1005C0000100010001000100010001000100010023\r
+:1005D0000100000001000100010000000100000016\r
+:1005E0000100010001000000010000000100010005\r
+:1005F00001000100010000000100010001000100F4\r
+:1006000001000100010001000100010001000100E2\r
+:1006100001000100010001000100010001000100D2\r
+:1006200001000100010001000100010001000100C2\r
+:1006300001000100000016034500720067006F0012\r
+:1006400044006F007800200045005A0000001603A7\r
+:100650004500720067006F0044006F0078002000C2\r
+:1006600045005A0000000403090409026D0004015A\r
+:1006700000A0FA0904000001030101000921110191\r
+:100680000001223F000705810308000A0904010058\r
+:100690000103010200092111010001224D0007059B\r
+:1006A000820308000A090402000103000000092176\r
+:1006B000110100012236000705830308000A09041E\r
+:1006C000030001030000000921110100012239008B\r
+:1006D000070584031000011201100100000008ED5D\r
+:1006E000FE071301000102000105010906A1010531\r
+:1006F0000719E029E7150025019508750181020514\r
+:100700000819012905950575019102950175039157\r
+:1007100001050719002977150025019578750181D4\r
+:1007200002C005010980A101850216010026B7005B\r
+:100730001A01002AB700751095018100C0050C0947\r
+:1007400001A1018503160100269C021A01002A9CC2\r
+:1007500002751095018100C005010902A10109017E\r
+:10076000A100050919012905150025019505750147\r
+:100770008102950175038101050109300931158157\r
+:10078000257F95027508810609381581257F950119\r
+:1007900075088106050C0A38021581257F950175BB\r
+:1007A000088106C0C005010906A101050719E02955\r
+:1007B000E7150025019508750181029501750881ED\r
+:1007C0000105081901290595057501910295017525\r
+:1007D0000391010507190029FF150025FF950675EE\r
+:1007E000088100C0000000000000000000000001BF\r
+:1007F0000204060A0F17202C3A4A5D71879DB3C781\r
+:10080000DAE9F5FCFFFCF5E9DAC7B39D87715D4ACB\r
+:100810003A2C20170F0A0604020100000000000015\r
+:100820000000000011241FBECFEFDAE0DEBFCDBF15\r
+:1008300004B603FE24C08091F1019091F201A091D1\r
+:10084000F301B091F4018730904BA740B04BB9F45D\r
+:100850001092F1011092F2011092F3011092F40142\r
+:1008600014BE84B7877F84BF88E10FB6F894809365\r
+:100870006000109260000FBEE0E0FFE3099511E018\r
+:10088000A0E0B1E0E0E3FDE402C005900D92A433E6\r
+:10089000B107D9F711E0A4E3B1E001C01D92A13F77\r
+:1008A000B107E1F70E94950C0C9496260C94000079\r
+:1008B000282F882341F090E02A3018F4885A9F4F5F\r
+:1008C00008950697089582E690E008950F931F9388\r
+:1008D000CF93DF938C01EB0180913401909135012E\r
+:1008E000009709F448C0019709F089C080EE0E9482\r
+:1008F000F71281EE0E94F71288E10E94F71288E158\r
+:100900000E94BF13C801807F992724E096958795A0\r
+:100910002A95E1F70E945804182F0E94F712812FA0\r
+:100920000E94BF13802F8F700E945804182F0E94BE\r
+:10093000F712812F0E94BF13CE01807F992734E0E8\r
+:10094000969587953A95E1F70E945804D82F0E9412\r
+:10095000F7128D2F0E94BF138C2F8F700E945804A6\r
+:10096000C82F0E94F7128C2F0E94BF1380EE0E94A6\r
+:10097000BF1381EE3EC082EE0E94F71287E50E940F\r
+:10098000F71287E50E94BF13C801807F992744E0D2\r
+:10099000969587954A95E1F70E945804182F0E9472\r
+:1009A000F712812F0E94BF13802F8F700E9458046E\r
+:1009B000182F0E94F712812F0E94BF13CE01807F53\r
+:1009C000992754E0969587955A95E1F70E94580427\r
+:1009D000D82F0E94F7128D2F0E94BF138C2F8F707B\r
+:1009E0000E945804C82F0E94F7128C2F0E94BF1338\r
+:1009F00082EEDF91CF911F910F910C94BF13DF9185\r
+:100A0000CF911F910F910895FC018281882309F4F1\r
+:100A10003CC1862F90E08F35910508F036C1FC016E\r
+:100A2000EA5AFF4F0C944B26809134019091350186\r
+:100A3000019681709927909335018093340125C1E7\r
+:100A40006FEB70E019C160E970E008C061EA70E026\r
+:100A500013C163E870E00BC16BE570E081E290E0E8\r
+:100A600012C16BEB70E008C163E570E0F7CF6EEB8D\r
+:100A700070E002C164E070E0D4C069EB70E001C1D5\r
+:100A800062EB70E0F9C065E870E0F1C069E970E020\r
+:100A9000F3C065E570E0E2CF68EC70E0EDC069E8B6\r
+:100AA00070E0E5C064E770E0E2C062E970E0D6CFD4\r
+:100AB00066E770E0DCC063E970E0D0CF60EC70E026\r
+:100AC000DBC062EB70E0DDC069EA70E0D5C068EAC7\r
+:100AD00070E0D2C064E870E0CAC06DE970E0CCC0DC\r
+:100AE00067EF70E0CEC063EC70E0C6C061EC70E010\r
+:100AF000C3C069E570E0B2CF63EB70E0BDC064E5F0\r
+:100B000070E0ACCF6DEB70E0B7C066EB70E0B4C0E6\r
+:100B100065EB70E0B1C06AEB70E0AEC067E770E013\r
+:100B2000A6C060EA70E0A8C062EC70E0A5C06EE903\r
+:100B300070E0A2C068EB70E09FC067EB70E09CC003\r
+:100B400062E870E094C063E470E06BC061EB70E059\r
+:100B500093C066EA70E090C066EC70E08DC06EE114\r
+:100B600070E05FC06FE970E087C068E070E059C076\r
+:100B700067ED70E086C060E870E079C063EA70E01D\r
+:100B80007BC069EC70E078C061E870E070C066E935\r
+:100B900070E072C064EC70E06FC065E770E067C041\r
+:100BA00063E070E03EC061EB70E06BC06EEB70E044\r
+:100BB00068C063EB70E065C065E070E032C061E979\r
+:100BC00070E04CCF69E770E052C064EB70E054C055\r
+:100BD0006CEB70E051C06AE970E04EC068E870E00C\r
+:100BE00046C061E970E048C067E870E040C062E973\r
+:100BF00070E042C067E970E03FC068E770E037C06E\r
+:100C000060E770E034C069E070E00BC065EC70E054\r
+:100C100033C060E670E005C067EA70E02DC060E0B8\r
+:100C200070E082E290E02FC064EA70E025C06CEBD7\r
+:100C300070E027C067EC70E01FC068E970E01CC07E\r
+:100C400069EB70E019C06BE970E016C06FE770E007\r
+:100C50000EC065EA70E010C06CE970E00DC065E997\r
+:100C600070E00AC063E970E007C066E870E080E207\r
+:100C700090E009C064E970E083E090E004C06DEBAF\r
+:100C800070E080E090E00E94660480E090E00895CB\r
+:100C900008956091B3017091B4018091B501909174\r
+:100CA000B6010E94A11D56985E9825982D98269809\r
+:100CB0002E9827982F988330A9F028F4813051F08E\r
+:100CC000823069F012C0843041F0853071F4259A89\r
+:100CD0002D9A08C0259A2D9A0895259A2D9A269A1C\r
+:100CE0002E9A0895279A2F9A089556985E980895F7\r
+:100CF0000C94490656985E9825982D9826982E981B\r
+:100D000027982F988FEF90E0909389008093880028\r
+:100D100090938B0080938A0090938D0080938C0039\r
+:100D2000259A2D9A2FEF80E792E021508040904045\r
+:100D3000E1F700C00000269A2E9A2FEF80E792E09C\r
+:100D4000215080409040E1F700C00000279A2F9A80\r
+:100D50002FEF80E792E0215080409040E1F700C003\r
+:100D6000000025982D982FEF80E792E021508040D9\r
+:100D70009040E1F700C0000026982E982FEF80E702\r
+:100D800092E0215080409040E1F700C00000279899\r
+:100D90002F9856985E9825982D9826982E982798E3\r
+:100DA0002F98089589EA8093800089E080938100DC\r
+:100DB00024982C983F988AB18F748AB96E98479A74\r
+:100DC0008BB1806B8BB9769A0E947A060C94480698\r
+:100DD00080E2809300018091360181110EC00E9453\r
+:100DE000370781E0809336012FEF83ED90E32150A8\r
+:100DF00080409040E1F700C0000080E40E943D0781\r
+:100E00008093000181112EC00E946707809300012A\r
+:100E1000811128C00E94670780930001811122C0C0\r
+:100E20008FE30E9467078093000181111BC00E941D\r
+:100E30005F0780E40E943D0780930001811112C08A\r
+:100E40008CE00E9467078093000181110BC00E9413\r
+:100E5000670780930001811105C08FE30E94670737\r
+:100E6000809300010E945F07809100010895109215\r
+:100E7000B9008AE08093B800089594EA9093BC008A\r
+:100E80009091BC0097FFFCCF9091B900987F98306B\r
+:100E900021F0903111F081E008958093BB0084E847\r
+:100EA0008093BC008091BC0087FFFCCF8091B9008B\r
+:100EB000887F883111F0803471F780E0089584E9EB\r
+:100EC0008093BC008091BC0084FDFCCF089580938A\r
+:100ED000BB0084E88093BC008091BC0087FFFCCFFE\r
+:100EE0009091B900987F81E0983209F480E00895EC\r
+:100EF00084E88093BC008091BC0087FFFCCF809188\r
+:100F0000BB00089580910001811115C080E40E940A\r
+:100F10003D078093000181110CC082E10E946707A8\r
+:100F200080930001811105C08FEF0E9467078093B5\r
+:100F300000010E945F0784B1807F84B985B1807F02\r
+:100F400085B98AB1837F8AB98BB1837F8BB93E988B\r
+:100F5000469808950E94E806809300010E94820747\r
+:100F600080B38C7080BB81B3836F81BBE6E4F1E01A\r
+:100F7000A8E3B1E011921D9281E0E435F807D1F7C2\r
+:100F80000C94D206BF92CF92DF92EF92FF920F9312\r
+:100F90001F93CF93DF9380910001882379F0809194\r
+:100FA00037018F5F80933701811108C00E94E806E6\r
+:100FB00080930001811102C00E947A0608E311E0CB\r
+:100FC000C0E0D0E0DD24D39482E0C82EEE24E39488\r
+:100FD000F12CC73000F580910001811162C080E4DE\r
+:100FE0000E943D0780930001811112C082E10E949E\r
+:100FF00067078093000181110BC0C7010C2E01C04F\r
+:10100000880F0A94EAF780950E9467078093000191\r
+:101010000E945F0746C0CA30A1F028F4C83059F0DA\r
+:10102000C93061F005C0CC3089F070F0CD3089F066\r
+:10103000209A289810C0219A29980DC0229A2A989F\r
+:101040000AC0239A2B9807C0529A01C0539A5B9802\r
+:1010500002C03E9A4698E0EAEA95F1F78FB1799995\r
+:101060005AC092E081708D25892B7C9B02C090E054\r
+:1010700001C094E0892B7D9B02C090E001C098E004\r
+:10108000892B7E9B02C090E001C090E1892B9FB12B\r
+:101090009095991F9927991F9295990F907E892B6A\r
+:1010A0000FC08091000181114BC080E40E943D0778\r
+:1010B00080930001882389F1B12C0E945F078B2D5A\r
+:1010C000F8019081981719F08083C09201010E9465\r
+:1010D000820721960F5F1F4FCE30D10509F079CFDF\r
+:1010E00080910101882371F181508093010188234F\r
+:1010F00039F08FE99FE00197F1F700C0000022C0AE\r
+:10110000A6E4B1E0E8E3F1E081918D9391E0E6346B\r
+:10111000F907D1F717C090E0A5CF83E10E946707D8\r
+:10112000809300018111C8CF81E40E943D07809324\r
+:1011300000018111C1CF0E947807B82EB094BDCFB5\r
+:1011400080E0BECF0E94780681E0DF91CF911F91B1\r
+:101150000F91FF90EF90DF90CF90BF900895E82F10\r
+:10116000F0E0EA5BFE4F8081089508958B3B910586\r
+:1011700078F4883A910540F5853A9105D0F48430A9\r
+:10118000910508F0B1C08130910509F4ADC06BC084\r
+:10119000803E910508F467C0883E910508F4A4C01C\r
+:1011A0009C01205F31092031310508F05CC0906559\r
+:1011B0000895853A910509F459C0863A910509F4D4\r
+:1011C00058C083E890E40895883A910509F454C022\r
+:1011D000893A910509F453C08A3A910509F452C03D\r
+:1011E0008B3A910509F451C08C3A910509F450C02D\r
+:1011F0008D3A910509F44FC0803B910509F44EC02A\r
+:101200008E3A910509F44DC08F3A910509F44CC00E\r
+:10121000813B910509F44BC0823B910509F44AC01A\r
+:10122000833B910509F449C0843B910509F448C00A\r
+:10123000853B910509F447C0863B910509F446C0FA\r
+:10124000873B910509F445C0883B910509F444C0EA\r
+:10125000893B910509F443C08A3B910509F042C0DE\r
+:101260008AE296E4089580E090E0089581E890E4B1\r
+:10127000089582E890E4089582EE94E4089589EE5A\r
+:1012800094E408958AEE94E4089585EB94E4089537\r
+:1012900086EB94E4089587EB94E408958CEC94E451\r
+:1012A00008958DEC94E4089583E895E408958AE820\r
+:1012B00095E4089582E995E4089584E995E4089514\r
+:1012C00081E296E4089583E296E4089584E296E448\r
+:1012D000089585E296E4089586E296E4089587E20B\r
+:1012E00096E4089580E094E40895089596E0799F47\r
+:1012F000F001112494E5899FE00DF11D1124E60F02\r
+:10130000F11DEE0FFF1FE256FE4F85919491089557\r
+:10131000880F991F825E9F4FFC01859194910895DB\r
+:10132000880F991F82569E4FFC01859194910895D4\r
+:1013300026E0729FF001112444E5849FE00DF11D29\r
+:101340001124E60FF11DEE0FFF1FE256FE4F25910F\r
+:101350003491C9019A9581159F4110F4C9010895EE\r
+:10136000C90190528115904128F4C9019F700E94D3\r
+:1013700090090895C90190538115904120F4C90145\r
+:101380009927906C0895211580E5380769F40E942B\r
+:101390003D179FEF24E34CE0915020404040E1F79F\r
+:1013A00000C000000C949A1E213080E5380731F40B\r
+:1013B0008091CF0181608093CF010895C90190553C\r
+:1013C0008115904108F050C0832F99278F7099277D\r
+:1013D00081309105D9F4A9014370552702C0880FC7\r
+:1013E000991F4A95E2F79C68A90164E0440F551FD4\r
+:1013F0006A95E1F744275370842B952B73E0220FF5\r
+:10140000331F7A95E1F7207633271DC0823091058E\r
+:1014100029F4922F8827816F906A0895833091056F\r
+:10142000A9F4A9014370552781E090E002C0880F1C\r
+:10143000991F4A95E2F79C6843E0220F331F4A95B3\r
+:10144000E1F7207E3770822B932B08950497F1F4F7\r
+:10145000A9014370552781E090E002C0880F991FD1\r
+:101460004A95E2F79A68E8CFC901905781159041F3\r
+:1014700020F4C9019F7090620895C90190588115A8\r
+:10148000904120F4C9019F70906A0895203E310573\r
+:10149000E0F4203C310558F52133310509F470C0E2\r
+:1014A00048F42932310509F464C02A32310509F4BF\r
+:1014B0006EC074C029333105F1F022383105D9F0FE\r
+:1014C0002533310509F44EC069C0233E310589F149\r
+:1014D00038F4203E3105C1F0223E3105E1F05EC016\r
+:1014E000263E310569F1273E3105A9F157C0C901F2\r
+:1014F0000E94880908958091E20180FD02C081FF69\r
+:101500004DC080EE90E04BC08091E20180FFF9CFAA\r
+:1015100089E390E044C08091E20182FF0EC0809197\r
+:10152000E20184FF03C080E090E039C083EE90E0E8\r
+:1015300036C08091E20182FFF2CF82EE90E02FC0B0\r
+:101540008091E20183FF0BC08091E20184FDEBCF2B\r
+:1015500087EE90E024C08091E20183FFF5CF86EE14\r
+:1015600090E01DC08091E20185FF07C089E290E014\r
+:1015700016C08091E20185FFF9CF85E390E00FC0AE\r
+:101580008091E20186FF07C08AE290E008C0809166\r
+:10159000E20186FFF9CF81E390E001C0C9010E941A\r
+:1015A000B608089508950C94D20A809164010895B4\r
+:1015B000CF93DF9300D01F92CDB7DEB72091E80123\r
+:1015C000243019F523E029839B838A832093E90043\r
+:1015D0008FEF9091E800815095FD06C095ED9A95AA\r
+:1015E000F1F700008111F5CF8091E80085FF0DC073\r
+:1015F00040E050E063E070E0CE0101960E94420DB1\r
+:101600008091E8008E778093E8000F900F900F9004\r
+:10161000DF91CF910895CF93DF9300D01F92CDB784\r
+:10162000DEB72091E801243021F522E029839B8355\r
+:101630008A8383E08093E9008FEF9091E8008150E6\r
+:1016400095FD06C095ED9A95F1F700008111F5CF53\r
+:101650008091E80085FF0DC040E050E063E070E05D\r
+:10166000CE0101960E94420D8091E8008E77809312\r
+:10167000E8000F900F900F90DF91CF910895209187\r
+:10168000E8012430F1F422E02093E9002FEF3091BB\r
+:10169000E800215035FD06C035ED3A95F1F7000020\r
+:1016A0002111F5CF2091E80025FF0BC040E050E06C\r
+:1016B00065E070E00E94420D8091E8008E77809393\r
+:1016C000E8000895CF93DF93EC018091E801843026\r
+:1016D00009F046C090910C019923D9F090910D0129\r
+:1016E0009923B9F08093E9008FEF9091E800815041\r
+:1016F00095FD06C095E19A95F1F700008111F5CFAF\r
+:101700008091E80085FF2CC040E050E060E170E08F\r
+:1017100017C081E08093E9008FEF9091E80081503D\r
+:1017200095FD06C095ED9A95F1F700008111F5CF72\r
+:101730008091E80085FF14C040E050E068E070E070\r
+:10174000CE010E94420D8091E8008E778093E800E0\r
+:1017500080E1FE01A4E5B1E001900D928A95E1F7E8\r
+:10176000DF91CF9108958091E701811109C00E9416\r
+:10177000D40E0E94310F8091E20084608093E200D9\r
+:1017800008951092E701089508950C94C3240E94CF\r
+:10179000311E0E94C9240E94CE110C94D30A42E04B\r
+:1017A00061EC81E00E944E0E42E061EC82E00E941A\r
+:1017B0004E0E42E061EC83E00E944E0E42E161EC8D\r
+:1017C00084E00C944E0E8091EA01833009F455C0F8\r
+:1017D00030F4813071F0823009F48EC008958A307F\r
+:1017E00009F47AC08B3009F460C0893009F09CC0DC\r
+:1017F00020C08091E901813A09F096C08091E8000B\r
+:10180000877F8093E8008091ED019091EE01892B14\r
+:1018100021F060E080E090E003C060E184E591E0C9\r
+:1018200070E00E948B0D8091E8008B778093E80038\r
+:1018300008958091E901813209F076C08091ED012F\r
+:101840009091EE01009719F0039709F06DC0809117\r
+:10185000E800877F8093E8008091E80082FD05C062\r
+:101860008091E8018111F8CF5FC08091F1008093F1\r
+:1018700064018091E8008B7753C08091E901813A3F\r
+:1018800009F052C08091ED019091EE01892B09F091\r
+:101890004BC08091E800877F8093E8008091E8004A\r
+:1018A00080FFFCCF80910C0136C08091E90181322C\r
+:1018B000D9F58091ED019091EE01892BA9F58091E8\r
+:1018C000E800877F8093E8000E94830E8091EB01FF\r
+:1018D00080930C010C943D178091E901813221F530\r
+:1018E0008091E800877F8093E8000E94830E8091BA\r
+:1018F000EC018093650108958091E901813AA1F49A\r
+:101900008091E800877F8093E8008091E80080FF65\r
+:10191000FCCF809165018093F1008091E8008E7783\r
+:101920008093E8000C94830E089584B7877F84BF6A\r
+:1019300088E10FB6F89480936000109260000FBEAB\r
+:1019400090E080E80FB6F894809361009093610076\r
+:101950000FBE0E941D120E94D40E0E94310F809172\r
+:10196000E20084608093E20078940E94AC110E94AF\r
+:101970001F1282E091E00E94C9110E94B12480915F\r
+:10198000E801853069F40E94F41D8091E601882306\r
+:10199000B1F30E941C1E882391F30E942C0DEFCFFF\r
+:1019A0000E942512ECCF292F332723303105A9F0CF\r
+:1019B0006CF42130310509F442C02230310509F0C0\r
+:1019C00043C08DE690E02AE636E042C02132310580\r
+:1019D000C9F02232310519F137C0992781309105BC\r
+:1019E00041F08230910541F0892B71F5E6E6F6E091\r
+:1019F00005C0EEE4F6E002C0E6E3F6E0849190E094\r
+:101A00009F0126C0643000F5E62FF0E0EE0FFF1FC7\r
+:101A1000EE5DFE4F2081318189E090E019C0643095\r
+:101A200098F4E62FF0E0DF01AA0FBB1FA65EBE4FC1\r
+:101A30002D913C91EA5EFE4F808190E009C082E1E9\r
+:101A400090E027ED36E004C080E090E020E030E058\r
+:101A5000FA0131832083089580E189BD82E189BD47\r
+:101A600009B400FEFDCF8091D8008F7D8093D8000F\r
+:101A70008091E00082608093E0008091E00081FD31\r
+:101A8000FCCF0895CF92DF92EF92FF920F931F93B6\r
+:101A9000CF93DF937C018B01EA010E94A40E811198\r
+:101AA00031C0209731F088819981081B190BE80E0D\r
+:101AB000F91EC12CD12C0115110519F18091E800F6\r
+:101AC00085FD14C08091E8008E778093E800209710\r
+:101AD00041F0888199818C0D9D1D9983888385E0D3\r
+:101AE00011C00E94A40E882331F30CC0F70181912C\r
+:101AF0007F018093F10001501109FFEFCF1ADF0A37\r
+:101B0000DACF80E0DF91CF911F910F91FF90EF909E\r
+:101B1000DF90CF9008952091EF013091F0012617CA\r
+:101B2000370748F06115710539F42091E8002E77E8\r
+:101B30002093E80001C0B901FC0120E061157105A6\r
+:101B4000B9F18091E801882309F440C0853009F497\r
+:101B50003FC08091E80083FD3DC08091E80082FF96\r
+:101B600006C08091E80082FF26C080E00895809141\r
+:101B7000E80080FFE3CF2091F3008091F20090E035\r
+:101B8000922B6115710551F08830910538F421913F\r
+:101B90002093F100615071090196F3CF21E008977D\r
+:101BA00009F020E08091E8008E778093E800C6CFAE\r
+:101BB0002111C7CFD6CF8091E801882339F0853035\r
+:101BC00039F08091E80083FFCCCF04C082E0089513\r
+:101BD00083E0089581E008952091EF013091F001B4\r
+:101BE0002617370748F06115710539F42091E80090\r
+:101BF0002E772093E80001C0B901FC0120E06115B7\r
+:101C00007105C1F18091E801882309F441C0853054\r
+:101C100009F440C08091E80083FD3EC08091E80057\r
+:101C200082FF06C08091E80082FF27C080E008950F\r
+:101C30008091E80080FFE3CF2091F3008091F200D3\r
+:101C400090E0922B6115710559F08830910540F4B0\r
+:101C500024912093F1003196615071090196F2CFE1\r
+:101C600021E0089709F020E08091E8008E778093CA\r
+:101C7000E800C5CF2111C6CFD5CF8091E8018823D8\r
+:101C800039F0853039F08091E80083FFCBCF04C074\r
+:101C900082E0089583E0089581E00895982F9730B9\r
+:101CA00058F59093E900981739F07091EC00209165\r
+:101CB000ED005091F00003C0242F762F50E021FF5B\r
+:101CC00019C03091EB003E7F3093EB003091ED0076\r
+:101CD0003D7F3093ED003091EB0031603093EB00AD\r
+:101CE0007093EC002093ED005093F0002091EE00F3\r
+:101CF00027FF07C09F5FD3CF8F708093E90081E0FB\r
+:101D0000089580E008958091E90187FD05C08091E4\r
+:101D1000E80080FF0EC012C08091E80082FD05C07F\r
+:101D20008091E8018111F8CF08958091E8008B77C8\r
+:101D300008C08091E8018111EACF08958091E80000\r
+:101D40008E778093E80008958091E4009091E500FB\r
+:101D500045E62091EC0020FF21C02091E80020FD05\r
+:101D600021C02091E801222389F0253089F02091BB\r
+:101D7000EB0025FD0FC02091E4003091E50028170D\r
+:101D8000390739F3415041F0C901E3CF82E00895AA\r
+:101D900083E0089581E0089584E008952091E800AB\r
+:101DA00022FFDFCF80E008950E94420F0E944A0F79\r
+:101DB000E0EEF0E0808181608083E8EDF0E08081FA\r
+:101DC0008F77808319BCA7EDB0E08C918E7F8C93C8\r
+:101DD00080818F7E80831092E70108950F931F9377\r
+:101DE000CF93DF930E94420F0E944A0FC8EDD0E0CC\r
+:101DF00088818F77888388818068888388818F7DB8\r
+:101E0000888319BC1092E8011092E4011092E60157\r
+:101E10001092E50100EE10E0F80180818B7F808355\r
+:101E200088818160888342E060E080E00E944E0EFD\r
+:101E3000E1EEF0E080818E7F8083E2EEF0E0808151\r
+:101E400081608083808188608083F80180818E7FBB\r
+:101E50008083888180618883DF91CF911F910F916A\r
+:101E60000895E8EDF0E080818F7E8083E7EDF0E07B\r
+:101E700080818160808384E082BF81E08093E7017C\r
+:101E80000C94EE0EE8EDF0E080818E7F808310925E\r
+:101E9000E20008951092DA001092E10008951F9276\r
+:101EA0000F920FB60F9211242F933F934F935F938E\r
+:101EB0006F937F938F939F93AF93BF93EF93FF9312\r
+:101EC0008091E10082FF0BC08091E20082FF07C099\r
+:101ED0008091E1008B7F8093E1000E94AB118091A3\r
+:101EE000DA0080FF1FC08091D80080FF1BC0809166\r
+:101EF000DA008E7F8093DA008091D90080FF0DC0D8\r
+:101F000080E189BD82E189BD09B400FEFDCF81E099\r
+:101F10008093E8010E94B30B05C019BC1092E80140\r
+:101F20000E94C10B8091E10080FF19C08091E20006\r
+:101F300080FF15C08091E2008E7F8093E200809147\r
+:101F4000E20080618093E2008091D80080628093FB\r
+:101F5000D80019BC85E08093E8010E94C50B8091F0\r
+:101F6000E10084FF30C08091E20084FF2CC080E15A\r
+:101F700089BD82E189BD09B400FEFDCF8091D80002\r
+:101F80008F7D8093D8008091E1008F7E8093E10067\r
+:101F90008091E2008F7E8093E2008091E200816078\r
+:101FA0008093E2008091E401882311F084E007C06F\r
+:101FB0008091E30087FF02C083E001C081E080934D\r
+:101FC000E8010E94C70B8091E10083FF29C0809146\r
+:101FD000E20083FF25C08091E100877F8093E100CC\r
+:101FE00082E08093E8011092E4018091E1008E7F0D\r
+:101FF0008093E1008091E2008E7F8093E2008091E7\r
+:10200000E20080618093E20042E060E080E00E94B4\r
+:102010004E0E8091F00088608093F0000E94C40B07\r
+:10202000FF91EF91BF91AF919F918F917F916F91B0\r
+:102030005F914F913F912F910F900FBE0F901F9086\r
+:1020400018951F920F920FB60F9211242F933F9362\r
+:102050004F935F936F937F938F939F93AF93BF93B0\r
+:10206000CF93EF93FF93C091E900CF708091EC0084\r
+:102070001092E9008091F000877F8093F0007894BF\r
+:102080000E945D101092E9008091F00088608093BA\r
+:10209000F000C093E900FF91EF91CF91BF91AF9114\r
+:1020A0009F918F917F916F915F914F913F912F9170\r
+:1020B0000F900FBE0F901F9018951F93CF93DF9333\r
+:1020C000CDB7DEB7AA970FB6F894DEBF0FBECDBF6F\r
+:1020D000E9EEF1E08091F100819321E0E13FF20728\r
+:1020E000C9F70E94E30B8091E80083FF1CC1209197\r
+:1020F000E9013091EA01832F90E08A30910508F0E0\r
+:1021000012C1FC01EB54FF4F0C944B26203881F098\r
+:10211000223809F008C18091ED018F708093E900A9\r
+:102120008091EB0085FB882780F91092E90006C0BA\r
+:102130008091E5019091E601911182609091E80013\r
+:10214000977F9093E8008093F1001092F100C5C052\r
+:10215000822F8D7F09F0E7C0222319F0223061F031\r
+:10216000E2C08091EB01813009F0DDC0333009F02D\r
+:1021700080E08093E60128C08091EB01811124C0AA\r
+:102180002091ED012F7009F4CEC02093E9008091D9\r
+:10219000EB0080FF19C08091EB00333011F48062B6\r
+:1021A00011C080618093EB0081E090E0022E01C0BD\r
+:1021B000880F0A94EAF78093EA001092EA0080916F\r
+:1021C000EB0088608093EB001092E9008091E800BA\r
+:1021D000877F86C02111A7C01091EB011F778091E6\r
+:1021E000E3008078812B8093E3008091E800877F73\r
+:1021F0008093E8000E94830E8091E80080FFFCCF6E\r
+:102200008091E30080688093E300112311F083E064\r
+:1022100001C082E08093E80186C02058223008F097\r
+:1022200082C08091EB019091EC018C3D23E09207FC\r
+:1022300079F583E08A838AE289834FB7F894DE01D7\r
+:10224000139620E03EE051E2E32FF0E05093570078\r
+:10225000E49120FF03C0E295EF703F5FEF708E2F97\r
+:1022600090E0EA3010F0C79601C0C0968D939D9320\r
+:102270002F5F243149F74FBF8091E800877F80931B\r
+:10228000E8006AE270E0CE0101960E948B0D14C056\r
+:10229000AE014F5F5F4F6091ED010E94D30C00973C\r
+:1022A00009F441C02091E800277F2093E800BC0199\r
+:1022B00089819A810E94EC0D8091E8008B77809350\r
+:1022C000E80031C0203879F58091E800877F80935D\r
+:1022D000E8008091E4018093F1008091E8008E771E\r
+:1022E0008093E8000E94830E1EC021111CC09091B3\r
+:1022F000EB019230C0F48091E800877F8093E80082\r
+:102300009093E4010E94830E8091E401811104C046\r
+:102310008091E30087FF02C084E001C081E08093E8\r
+:10232000E8010E94CF0B8091E80083FF0AC08091F2\r
+:10233000E800877F8093E8008091EB0080628093C3\r
+:10234000EB00AA960FB6F894DEBF0FBECDBFDF91AB\r
+:10235000CF911F9108950895CF938091E80188232C\r
+:10236000B1F08091E9008F709091EC0090FF02C075\r
+:1023700090E801C090E0C92FC82B1092E90080912D\r
+:10238000E80083FD0E945D10CF70C093E900CF91FB\r
+:10239000089590936B0180936A010895E0916A011A\r
+:1023A000F0916B01309721F00190F081E02D0994BC\r
+:1023B00080E00895E0916A01F0916B01309721F07F\r
+:1023C0000280F381E02D09940895E0916A01F09173\r
+:1023D0006B01309721F00480F581E02D0994089578\r
+:1023E00020916801309169018217930771F09093F1\r
+:1023F000690180936801E0916A01F0916B01309767\r
+:1024000021F00680F781E02D09940895209166015E\r
+:10241000309167018217930771F090936701809361\r
+:102420006601E0916A01F0916B01309721F0008420\r
+:10243000F185E02D0994089508950C941C120E94D2\r
+:10244000371E0E94AA070C94FD1ECF92DF92EF92D6\r
+:10245000FF920F931F93CF93DF93CDB7DEB72B97E8\r
+:102460000FB6F894DEBF0FBECDBF0E94C2073DE697\r
+:10247000E32E31E0F32E00E010E0C02E802F0E940A\r
+:10248000AF08F701D1907F01D826B1F40F5F1F4F3D\r
+:102490000E30110591F78FEF89838A831B820E948A\r
+:1024A000401E8160782F9D838C8349815A816B8186\r
+:1024B0008D810E94C81241C09091CF0191FF04C04C\r
+:1024C0008B870E94B5088B8520E030E04D2D50E0D1\r
+:1024D000922FBA01022E02C0759567950A94E2F711\r
+:1024E00060FF25C02E83CF82EE24E394F12C02C03E\r
+:1024F000EE0CFF1C9A95E2F790E08E219F2121E0DF\r
+:10250000892B09F420E028870E94401E8160782FE3\r
+:102510009A8789874E815F8168858A850E94C81263\r
+:10252000F801E359FE4F80818E25808306C02F5F1E\r
+:102530003F4F2630310561F6A9CF0E94E12110916D\r
+:102540006C010E94CE111817A1F00E94CE11809349\r
+:102550006C012B960FB6F894DEBF0FBECDBFDF9196\r
+:10256000CF911F910F91FF90EF90DF90CF900C943F\r
+:10257000D30A2B960FB6F894DEBF0FBECDBFDF9106\r
+:10258000CF911F910F91FF90EF90DF90CF90089522\r
+:10259000CF93DF93CDB7DEB72B970FB6F894DEBF9E\r
+:1025A0000FBECDBF4F83588769877A878B87DE013F\r
+:1025B000119686E0FD0111928A95E9F785E0FE010A\r
+:1025C000379601900D928A95E1F749815A816B8186\r
+:1025D0007C818D819E810E94091A2B960FB6F894FA\r
+:1025E000DEBF0FBECDBFDF91CF9108950895CF9389\r
+:1025F000C82F882309F4C1C0823859F40E94CE1133\r
+:1026000081FDBBC089E30E94A81C0E94721D89E362\r
+:102610000CC0833879F40E94CE1180FDAEC083E5F2\r
+:102620000E94A81C0E94721D83E50E94E81CCF91A5\r
+:102630000C94721D843859F40E94CE1182FD9DC005\r
+:1026400087E40E94A81C0E94721D87E4EECF8CEFE5\r
+:102650008C0F813A48F48C2F0E94192481118DC06F\r
+:102660008C2F0E94A81CE3CF80E28C0F883048F4A6\r
+:10267000C77081E001C0880FCA95EAF70E94291D42\r
+:10268000D6CF8BE58C0F833078F4C53A29F0C63A63\r
+:1026900031F482E890E005C081E890E002C083E870\r
+:1026A00090E0CF910C94F01188E58C0F833108F005\r
+:1026B00064C0C83A39F1C93A41F1CA3A49F1CB3A52\r
+:1026C00051F1CC3A59F1CD3A61F1C03B69F1CE3AC2\r
+:1026D00071F1CF3A79F1C13B81F1C23B89F1C33B42\r
+:1026E00091F1C43B99F1C53BA1F1C63BA9F1C73BB0\r
+:1026F000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2A6\r
+:1027000092E038C082EE90E035C089EE90E032C0B1\r
+:102710008AEE90E02FC085EB90E02CC086EB90E035\r
+:1027200029C087EB90E026C08CEC90E023C08DECB4\r
+:1027300090E020C083E891E01DC08AE891E01AC0D3\r
+:1027400082E991E017C084E991E014C081E292E04F\r
+:1027500011C083E292E00EC084E292E00BC085E2F9\r
+:1027600092E008C086E292E005C087E292E002C0F3\r
+:1027700080E090E0CF910C940612CF9108958823C9\r
+:1027800009F44BC0823859F40E94CE1181FF45C034\r
+:1027900089E30E94A81C0E94721D89E30CC0833843\r
+:1027A00071F40E94CE1180FF38C083E50E94A81CFE\r
+:1027B0000E94721D83E50E94E81C0C94721D8438EF\r
+:1027C00059F40E94CE1182FF28C087E40E94A81C01\r
+:1027D0000E94721D87E4EFCF9CEF980F913A58F357\r
+:1027E00090E2980F983050F4877091E001C0990FF3\r
+:1027F0008A95EAF7892F0E942F1DDFCF9BE5980F5E\r
+:10280000933020F480E090E00C94F011885A8331EA\r
+:1028100020F480E090E00C9406120895882321F0C3\r
+:102820000E94291D0C94721D0895882321F00E9496\r
+:102830002F1D0C94721D0895CF92DF92EF92FF929C\r
+:102840000F931F93CF93DF93CDB7DEB728970FB6C3\r
+:10285000F894DEBF0FBECDBF8C0185E0F801DE012C\r
+:10286000119601900D928A95E1F7F801D080E180F0\r
+:10287000F280258122952F7083819481892B39F0F4\r
+:10288000FFEFEF1206C081E0DF1203C003C081E05A\r
+:1028900001C080E080FDCEC2C8012F830E94F612E5\r
+:1028A000D982EA8289819A810E94661C9E838887E8\r
+:1028B0000E94651C0E94381B2F814E816885FF2075\r
+:1028C00029F00E94461D68854E812F81E42FE295F4\r
+:1028D000EF70F0E0E154FF4F0C944B26842F807F83\r
+:1028E000142F1F70882311F01295107FFF2059F0CC\r
+:1028F000112309F454C2812F68870E94391D0E9458\r
+:10290000721D68854CC2862F0E94BF13112309F4E3\r
+:1029100091C2812F0E943F1D28960FB6F894DEBF0A\r
+:102920000FBECDBFDF91CF911F910F91FF90EF9020\r
+:10293000DF90CF900C94721D342F307F842F8F70D6\r
+:10294000303211F08295807F662319F0613019F1E1\r
+:102950002BC0FF20B1F0222309F493C1213009F0EC\r
+:1029600090C128960FB6F894DEBF0FBECDBFDF91A1\r
+:10297000CF911F910F91FF90EF90DF90CF900C942B\r
+:10298000591D222319F0213009F454C28E830E946C\r
+:102990005C1D8E8189C1FF2021F0223008F04AC2DF\r
+:1029A00070C1211147C280C1FF2021F0222309F408\r
+:1029B00068C1F5C1222309F477C105C2242F2695E9\r
+:1029C0002695237030E02115310521F021303105A5\r
+:1029D000C9F030C2FF2021F0862F942F937002C0DF\r
+:1029E00080E090E028960FB6F894DEBF0FBECDBF12\r
+:1029F000DF91CF911F910F91FF90EF90DF90CF90DB\r
+:102A00000C94F011FF2021F0862F942F937002C0B8\r
+:102A100080E090E028960FB6F894DEBF0FBECDBFE1\r
+:102A2000DF91CF911F910F91FF90EF90DF90CF90AA\r
+:102A30000C940612862FFF2019F00E94E92002C094\r
+:102A40000E94512128960FB6F894DEBF0FBECDBF6D\r
+:102A5000DF91CF911F910F91FF90EF90DF90CF907A\r
+:102A60000C94D621842F837009F076C0F110E2C156\r
+:102A7000262F229526952770220F220F862F8F70E2\r
+:102A8000C82ED12CE12CF12C022E04C0CC0CDD1C64\r
+:102A9000EE1CFF1C0A94D2F764FF10C06FE070E0D8\r
+:102AA00080E090E004C0660F771F881F991F2A9569\r
+:102AB000D2F7609570958095909503C060E070E0C6\r
+:102AC000CB01242F269526952370422F50E04230CB\r
+:102AD0005105D1F04330510559F16C297D298E29DA\r
+:102AE0009F294130510541F128960FB6F894DEBF79\r
+:102AF0000FBECDBFDF91CF911F910F91FF90EF904F\r
+:102B0000DF90CF900C945D1B6C297D298E299F2925\r
+:102B100028960FB6F894DEBF0FBECDBFDF91CF91E0\r
+:102B20001F910F91FF90EF90DF90CF900C94771B47\r
+:102B30000E945D1BC701B60128960FB6F894DEBF50\r
+:102B40000FBECDBFDF91CF911F910F91FF90EF90FE\r
+:102B5000DF90CF900C94431BFF2019F0842F8170DD\r
+:102B600001C08695882309F465C1262F22952695F4\r
+:102B70002770220F220F862F8F70C82ED12CE12CA8\r
+:102B8000F12C022E04C0CC0CDD1CEE1CFF1C0A94A0\r
+:102B9000D2F764FF10C06FE070E080E090E004C006\r
+:102BA000660F771F881F991F2A95D2F76095709539\r
+:102BB0008095909503C060E070E0CB01242F2695AE\r
+:102BC00026952370422F50E042305105D1F043301A\r
+:102BD000510559F16C297D298E299F2941305105D4\r
+:102BE00041F128960FB6F894DEBF0FBECDBFDF913E\r
+:102BF000CF911F910F91FF90EF90DF90CF900C94A9\r
+:102C0000311C6C297D298E299F2928960FB6F894AE\r
+:102C1000DEBF0FBECDBFDF91CF911F910F91FF900F\r
+:102C2000EF90DF90CF900C944B1C0E94311CC70199\r
+:102C3000B60128960FB6F894DEBF0FBECDBFDF9168\r
+:102C4000CF911F910F91FF90EF90DF90CF900C9458\r
+:102C5000171C603FC9F118F4603E50F49BC0623FFE\r
+:102C600009F460C008F44AC0633F09F46FC092C021\r
+:102C7000162F1F70842F8F71FF2099F00E94B01BB8\r
+:102C8000812F28960FB6F894DEBF0FBECDBFDF911F\r
+:102C9000CF911F910F91FF90EF90DF90CF900C9408\r
+:102CA0000E140E94D11B812F28960FB6F894DEBF18\r
+:102CB0000FBECDBFDF91CF911F910F91FF90EF908D\r
+:102CC000DF90CF900C941514FF20A1F02111B2C019\r
+:102CD000842F8F7128960FB6F894DEBF0FBECDBF3C\r
+:102CE000DF91CF911F910F91FF90EF90DF90CF90E8\r
+:102CF0000C94F61B223008F09DC0EACFFF20A1F013\r
+:102D0000842F8F7128960FB6F894DEBF0FBECDBF0B\r
+:102D1000DF91CF911F910F91FF90EF90DF90CF90B7\r
+:102D20000C94B01BFF2061F3842F8F7128960FB68F\r
+:102D3000F894DEBF0FBECDBFDF91CF911F910F91F1\r
+:102D4000FF90EF90DF90CF900C94D11BFF2091F07B\r
+:102D5000842F8F7128960FB6F894DEBF0FBECDBFBB\r
+:102D6000DF91CF911F910F91FF90EF90DF90CF9067\r
+:102D70000C949B1B28960FB6F894DEBF0FBECDBFF8\r
+:102D8000DF91CF911F910F91FF90EF90DF90CF9047\r
+:102D90000C94911BFF20A1F0222309F4B1CF862FC0\r
+:102DA00028960FB6F894DEBF0FBECDBFDF91CF914E\r
+:102DB0001F910F91FF90EF90DF90CF900C94F7123E\r
+:102DC000222309F4B1CF862F28960FB6F894DEBFE0\r
+:102DD0000FBECDBFDF91CF911F910F91FF90EF906C\r
+:102DE000DF90CF900C94BF134F70C8010E94040570\r
+:102DF00028960FB6F894DEBF0FBECDBFDF91CF91FE\r
+:102E00001F910F91FF90EF90DF90CF900C94B61A26\r
+:102E10004F70C80128960FB6F894DEBF0FBECDBF25\r
+:102E2000DF91CF911F910F91FF90EF90DF90CF90A6\r
+:102E30000C94750928960FB6F894DEBF0FBECDBF6F\r
+:102E4000DF91CF911F910F91FF90EF90DF90CF9086\r
+:102E500008950E94461D0E94561D0E941B1D0E943F\r
+:102E6000721D0E9482220E94D62180E090E00E9482\r
+:102E7000F01180E090E00C9406120E94361D0C9434\r
+:102E800029170E94661C292F22952F7030E02C30C4\r
+:102E900031054CF42A3031056CF4225031092230CE\r
+:102EA000310590F407C02C30310551F02F30310539\r
+:102EB00039F00AC0803E10F0803F31F481E008957F\r
+:102EC00093FB882780F9089580E00895CF93DF93DE\r
+:102ED00000D000D01F92CDB7DEB70F900F900F90AB\r
+:102EE0000F900F90DF91CF910895CF93DF9300D093\r
+:102EF00000D000D0CDB7DEB726960FB6F894DEBF6F\r
+:102F00000FBECDBFDF91CF9108951F93CF93DF9375\r
+:102F1000C0917B0116E080917C01C81799F0D0E048\r
+:102F20001C9FF0011D9FF00D1124E358FE4F4081BE\r
+:102F3000518162817381848195810E9475172196E8\r
+:102F4000C770E9CFDF91CF911F9108954091AD01F6\r
+:102F50005091AE016091AF017091B0018091B101CB\r
+:102F60009091B2010C947517CF938091B201829524\r
+:102F70008F7009F05FC08091AF01882309F45AC0B7\r
+:102F800020917B01A0917C016091AD017091AE0117\r
+:102F90008091B0019091B10131E06F3F09F030E0D4\r
+:102FA000B32FC6E02A1709F445C0009721F07F3FF0\r
+:102FB00021F44B2F03C041E001C040E030E040FD70\r
+:102FC00035C0C29FF001C39FF00D1124E358FE4F9E\r
+:102FD000418174132BC04081641328C04281411188\r
+:102FE00025C0438154814817590710F441505109B5\r
+:102FF000481B590B483C5105C8F48091B2018F70B1\r
+:1030000080618093B20186E0829FF001839FF00D82\r
+:103010001124EE57FE4F80818F70806180838DEA8E\r
+:1030200091E00E941C14CF910C9485172F5F3F4FA5\r
+:103030002770B8CFCF910895CF92DF92EF92FF9291\r
+:103040000F931F93CF93DF93CDB7DEB762970FB681\r
+:10305000F894DEBF0FBECDBF8C0185E0F801DE0124\r
+:103060001D9601900D928A95E1F7D8014C91119629\r
+:103070005C91119712966C9112971396ED90FC90BB\r
+:1030800014977091AD01E091AE012091B0013091A3\r
+:10309000B1012115310531F0EF3F31F481E07F3F7F\r
+:1030A00019F403C081E001C080E0B82FB170CB2ECD\r
+:1030B00080FD6CC1D090AF01DD2009F4F5C0F09126\r
+:1030C000B201E216F30638F0C701821B930B883C6D\r
+:1030D000910548F09BC0209530952E0D3F1D283C52\r
+:1030E000310508F093C08F2F807F09F052C0E5139F\r
+:1030F00014C0741312C0D62E61110FC0FF70F0619E\r
+:10310000F093B2010E94A6178DEA91E00E941C1470\r
+:103110008091B201F80185836CC1EF2831F05F3FE7\r
+:1031200031F481E04F3F19F403C081E001C080E039\r
+:1031300080FD03C081E0862701C080E0F82FF17098\r
+:10314000FF2E80FF1CC080917B0120917C0136E026\r
+:10315000821709F428C190E0389FF001399FF00DE3\r
+:103160001124E358FE4F7181571306C07081471335\r
+:1031700003C07281671303C001968770E9CFD62E12\r
+:10318000662309F436C18091B20181608093B20157\r
+:1031900053C0E51308C0741306C0611104C0D80100\r
+:1031A0001596FC93AEC04D875E878D859E856A8B94\r
+:1031B0000E9441176A89882329F1D62E662311F1CE\r
+:1031C0002091B201822F82958F7090E002970CF4CB\r
+:1031D00060C08091AD019091AE0198878F83198670\r
+:1031E000FB86EA862C87CE01079651C0E51731F1A0\r
+:1031F0004D875E878D859E856A8B0E9441176A89FF\r
+:1032000081112EC0C8010E941C14A4C08F2F807F82\r
+:1032100069F77E2DF98AE88A89890E9466178DEA06\r
+:1032200091E00E941C14EDEAF1E086E0DF011D92BE\r
+:103230008A95E9F70E94A617D12CDBC07413D8CF6A\r
+:103240006111D6CFD8011596FC93C8010E941C14B9\r
+:10325000EDEAF1E086E0DF011D928A95E9F7C9C049\r
+:10326000D62E662379F22091B201822F82958F703B\r
+:1032700090E0029774F08091AD019091AE019A8335\r
+:1032800089831B82FD82EC822E83CE0101960E94EF\r
+:103290001C1486E0F801ADEAB1E001900D928A9528\r
+:1032A000E1F70E94B4176FC0E216F30628F0C701D9\r
+:1032B000821B930B9C0104C0209530952E0D3F1D61\r
+:1032C000283C310508F052C0D62E662309F49ACF67\r
+:1032D000E5132CC074132AC08091B20180FD1DC07B\r
+:1032E000982F92959F70C9F0D80115968C931597D9\r
+:1032F0009F3039F09F5F9295907F8F70892B159644\r
+:103300008C93C8010E941C1486E0F801ADEAB1E07C\r
+:1033100001900D928A95E1F736C086E0F801ADEA9A\r
+:10332000B1E001900D928A95E1F763C04D875E8709\r
+:103330008D859E850E944117882379F086E0F801EB\r
+:10334000ADEAB1E001900D928A95E1F70E94B417C1\r
+:103350000E94A617DD24D3944CC08091B2018160F5\r
+:103360008093B201C8010E941C1443C07E2DF98ACB\r
+:10337000E88A89890E946617EDEAF1E086E0DF01BC\r
+:103380001D928A95E9F70E94A61733C0662309F4B7\r
+:1033900039CF4D875E878D859E850E944117882392\r
+:1033A00009F430CFCBCF4D875E878D859E850E94F7\r
+:1033B000661C292F22952F7030E0223031052CF425\r
+:1033C0009F7041F0811106C00CC0243031052CF4EF\r
+:1033D0009F7049F4805E883020F0C8010E941C1460\r
+:1033E000CF2CDC2C06C0D80115969C91907F91F7CC\r
+:1033F000F8CF8D2D62960FB6F894DEBF0FBECDBF0D\r
+:10340000DF91CF911F910F91FF90EF90DF90CF90C0\r
+:1034100008951F93CF93DF93CDB7DEB72C970FB6E8\r
+:10342000F894DEBF0FBECDBF4F83588769877A8778\r
+:103430008B879C87CE0107960E941C188823C1F0B9\r
+:103440002F8138858A859B85892B31F03F3F11F08C\r
+:1034500080E003C02F3FE1F781E0811147C04F8139\r
+:10346000588569857A858B859C850E9475173EC035\r
+:1034700086E0FE013796DE01119601900D928A9545\r
+:10348000E1F7FF81E8854A855B854115510531F0FB\r
+:10349000EF3F31F481E0FF3F19F403C081E001C048\r
+:1034A00080E080FD23C020917C0130E0C9010196BD\r
+:1034B0008770992760917B0170E086179707F1F17B\r
+:1034C000F983EA835D834C8396E0929FD001939FBA\r
+:1034D000B00D1124A358BE4FFE01319601900D92FC\r
+:1034E0009A95E1F780937C010E94851716E0809100\r
+:1034F0007B0190917C01891779F1189FC0011124FB\r
+:1035000083589E4F0E941C18882331F1E0917B0163\r
+:103510001E9FF0011124E358FE4F408151816281CA\r
+:103520007381848195810E94751780917B0190E061\r
+:1035300001968770992780937B01D9CF0E943D1710\r
+:1035400010927C0110927B01EDEAF1E086E0DF0150\r
+:103550001D928A95E9F7CACF2C960FB6F894DEBF74\r
+:103560000FBECDBFDF91CF911F910895EF92FF92D3\r
+:103570000F931F93CF93DF939C01009709F471C0C1\r
+:10358000F12CEE24E394E9012196F901849184372A\r
+:1035900040F4843008F056C0813081F0823021F14F\r
+:1035A00060C0853709F449C0C0F19CE7980F903797\r
+:1035B00008F057C08F770E94BF1346C089010E5F85\r
+:1035C0001F4FFE01849190E2980F983050F487705D\r
+:1035D000FE2D01C0FF0F8A95EAF78F2F0E94491D2B\r
+:1035E00015C00E94F71214C089010E5F1F4FFE0123\r
+:1035F000849190E2980F983068F48770FE2D01C096\r
+:10360000FF0F8A95EAF78F2F0E944F1D0E94721DAF\r
+:10361000E8011AC00E94BF13FBCF2E5F3F4FFE018F\r
+:10362000C491CC2341F08FE99FE00197F1F700C0EE\r
+:103630000000C150F6CFE90107C0FE01F490E90196\r
+:10364000229602C00E94F7128F2D882341F0EFE9E5\r
+:10365000FFE03197F1F700C000008150F6CF9E01E6\r
+:1036600092CFDF91CF911F910F91FF90EF9008952E\r
+:1036700008956093B7017093B8018093B901909356\r
+:10368000BA010C9429170F931F930091B701109161\r
+:10369000B8012091B9013091BA01062B172B282BC4\r
+:1036A000392B0093B7011093B8012093B9013093DF\r
+:1036B000BA011F910F910C9429170F931F9300913A\r
+:1036C000B7011091B8012091B9013091BA010623D8\r
+:1036D0001723282339230093B7011093B8012093AF\r
+:1036E000B9013093BA011F910F910C9429170F93D0\r
+:1036F0001F930091B7011091B8012091B901309149\r
+:10370000BA0106271727282739270093B7011093F6\r
+:10371000B8012093B9013093BA011F910F910C9415\r
+:1037200029171092B3011092B4011092B5011092B2\r
+:10373000B6010C94291741E050E060E070E004C04D\r
+:10374000440F551F661F771F8A95D2F74093B30128\r
+:103750005093B4016093B5017093B6010C9429178E\r
+:1037600041E050E060E070E004C0440F551F661F68\r
+:10377000771F8A95D2F78091B3019091B401A091FF\r
+:10378000B501B091B601842B952BA62BB72B809356\r
+:10379000B3019093B401A093B501B093B6010C941A\r
+:1037A000291741E050E060E070E004C0440F551F6D\r
+:1037B000661F771F8A95D2F7409550956095709552\r
+:1037C0008091B3019091B401A091B501B091B6017F\r
+:1037D00084239523A623B7238093B3019093B40148\r
+:1037E000A093B501B093B6010C94291741E050E0C5\r
+:1037F00060E070E004C0440F551F661F771F8A9574\r
+:10380000D2F78091B3019091B401A091B501B0912C\r
+:10381000B60184279527A627B7278093B3019093F5\r
+:10382000B401A093B501B093B6010C9429170F937E\r
+:103830001F930091B3011091B4012091B501309113\r
+:10384000B601062B172B282B392B0093B3011093AD\r
+:10385000B4012093B5013093B6011F910F910C94E0\r
+:1038600029170F931F930091B3011091B401209178\r
+:10387000B5013091B601062317232823392300937D\r
+:10388000B3011093B4012093B5013093B6011F9199\r
+:103890000F910C9429170F931F930091B30110916E\r
+:1038A000B4012091B5013091B601062717272827CA\r
+:1038B00039270093B3011093B4012093B5013093DD\r
+:1038C000B6011F910F910C9429170895CF92DF92A2\r
+:1038D000EF92FF920F931F93CF93DF93EC01C09071\r
+:1038E000B701D090B801E090B901F090BA01809191\r
+:1038F000B3019091B401A091B501B091B601C82A6D\r
+:10390000D92AEA2AFB2A0FE110E0B701A601002E0E\r
+:1039100004C076956795579547950A94D2F740FF6E\r
+:1039200007C0BE01802F0E9498098130910539F4AB\r
+:103930000150110950F7BE0180E00E949809DF9103\r
+:10394000CF911F910F91FF90EF90DF90CF9008954E\r
+:1039500090910C019923D9F090910D019923B9F020\r
+:10396000982F9695969596959F3088F5E0910E0143\r
+:10397000F0910F01E90FF11D877021E030E001C0E7\r
+:10398000220F8A95EAF78181822B818308954091E5\r
+:103990000E0150910F0120E030E09FEFFA01E20F9D\r
+:1039A000F31F6281681799F09F3F19F4611101C0FC\r
+:1039B000922F2F5F3F4F2E30310581F79F3F39F017\r
+:1039C000FA01E90FF11D97FDFA9582830895089594\r
+:1039D00090910C019923E1F090910D019923C1F090\r
+:1039E000982F9695969596959F3020F5E0910E012B\r
+:1039F000F0910F01E90FF11D877021E030E001C067\r
+:103A0000220F8A95EAF72095818128232183089542\r
+:103A100040910E0150910F0120E030E0FA01E20FD9\r
+:103A2000F31F9281981301C012822F5F3F4F2E30F7\r
+:103A30003105A1F7089581E090E0E0910E01F09149\r
+:103A40000F01E80FF91F1082019680319105A9F747\r
+:103A500008959091CE01982B9093CE010895809572\r
+:103A60009091CE0198239093CE0108951092CE01AB\r
+:103A700008959091CD01982B9093CD010895809554\r
+:103A80009091CD0198239093CD0108951092CD018E\r
+:103A900008959091CC01982B9093CC010895809536\r
+:103AA0009091CC0198239093CC0108951092CC0171\r
+:103AB00008958093BB0108951092BB010895409131\r
+:103AC0000E0150910F0120E030E080E0FA01E20F9A\r
+:103AD000F31F918191118F5F2F5F3F4F2F30310581\r
+:103AE000A9F70895E0910E01F0910F018091CE01A8\r
+:103AF0008083E0910E01F0910F0180819091CD01C2\r
+:103B0000892B8083E0910E01F0910F0180819091CB\r
+:103B1000CC01892B80839091BB01992361F0E091C6\r
+:103B20000E01F0910F018081892B80830E945F1D1F\r
+:103B300081111092BB0180910E0190910F010C94A4\r
+:103B4000DA11CF92DF92EF92FF920F931F936C01E5\r
+:103B5000EE24FF24C114D104E104F10421F46B012B\r
+:103B60007C0180E001C080E133272F2D1E2D0D2D1B\r
+:103B7000011511052105310519F0885F68017901EA\r
+:103B800097018601A4E03695279517950795AA9584\r
+:103B9000D1F7011511052105310519F08C5F680178\r
+:103BA000790197018601F2E03695279517950795DB\r
+:103BB000FA95D1F7011511052105310519F08E5F30\r
+:103BC00068017901B701A6017695679557954795E4\r
+:103BD000452B462B472B09F08F5F1F910F91FF90CC\r
+:103BE000EF90DF90CF9008958091E801843009F143\r
+:103BF0001092D00120E488E190E00FB6F894A895E7\r
+:103C0000809360000FBE2093600083B7817F846043\r
+:103C100083BF83B7816083BF7894889583B78E7F95\r
+:103C200083BF88E10FB6F894809360001092600023\r
+:103C30000FBE089508950895CF930E941A1E0E9402\r
+:103C4000C2070E941B1EC0E08C2F0E94AF0881118A\r
+:103C500005C0CF5FCE30C1F780E001C081E0CF91D9\r
+:103C600008950E943D170E94CE110C94D30A82E061\r
+:103C700084BD93E095BD9AEF97BD80936E00089543\r
+:103C80002FB7F8948091D1019091D201A091D301E6\r
+:103C9000B091D4012FBF0895CF92DF92EF92FF929F\r
+:103CA0000F931F932FB7F8944091D1015091D201F7\r
+:103CB0006091D3017091D4012FBF6A017B01EE2482\r
+:103CC000FF248C0120E030E0C016D106E206F306A6\r
+:103CD00010F441505109481B590BCA011F910F9113\r
+:103CE000FF90EF90DF90CF9008951F920F920FB644\r
+:103CF0000F9211248F939F93AF93BF938091D10123\r
+:103D00009091D201A091D301B091D4010196A11D4F\r
+:103D1000B11D8093D1019093D201A093D301B093B0\r
+:103D2000D401BF91AF919F918F910F900FBE0F90D3\r
+:103D30001F9018950E94D40EF8942FEF87EA91E611\r
+:103D4000215080409040E1F700C0000087E090EBF8\r
+:103D5000DC018093F1019093F201A093F301B09301\r
+:103D6000F4012CE088E190E00FB6F894A8958093D8\r
+:103D700060000FBE20936000FFCFEF92FF920F9381\r
+:103D80001F93CF93DF93E82EF12C8F2D0E94AF0865\r
+:103D9000C0E0D0E0082F10E098010C2E02C035954D\r
+:103DA00027950A94E2F720FD05C02196C630D1057B\r
+:103DB00099F709C06C2F7F2D80E00E947609E812E8\r
+:103DC000F4CF81E005C0F3948EE0F812DECF80E0FE\r
+:103DD000DF91CF911F910F91FF90EF900895CF93B6\r
+:103DE000C82F8CE20E94BD1E882321F08C2FCF911A\r
+:103DF0000C94BD1E80E0CF910895CF930E94422085\r
+:103E0000811102C00E942820C5E6C15049F00E94DD\r
+:103E1000C2078FE39CE90197F1F700C00000F5CFDE\r
+:103E200089E20E94EF1E811111C18AE20E94EF1EF9\r
+:103E300081110E94282085E00E94EF1E81110E94BE\r
+:103E40009A1E0E944D208093CF0187E00E94EF1EB2\r
+:103E5000882399F18BE10E94EF1E882351F0909105\r
+:103E6000CF0191FB882780F921E0822780FB91F91F\r
+:103E700022C08EE00E94EF1E882351F09091CF0166\r
+:103E800092FB882780F921E0822780FB92F913C0FA\r
+:103E900080E10E94EF1E9091CF01882341F093FBB7\r
+:103EA000882780F921E0822780FB93F904C0892FBD\r
+:103EB000809580FB90F99093CF018091CF010E9473\r
+:103EC00051200E945F208093E20180EE0E94EF1E4D\r
+:103ED000882341F08091E201982F909590FB80F922\r
+:103EE0008093E20189E30E94EF1E882359F09091AC\r
+:103EF000E20191FB882780F921E0822780FB91F97C\r
+:103F00009093E20182EE0E94EF1E882359F0909177\r
+:103F1000E20192FB882780F921E0822780FB92F959\r
+:103F20009093E20186EE0E94EF1E882359F0909153\r
+:103F3000E20193FB882780F921E0822780FB93F937\r
+:103F40009093E20183EE0E94EF1E882359F0909136\r
+:103F5000E20194FB882780F921E0822780FB94F915\r
+:103F60009093E20185E30E94EF1E882359F090911F\r
+:103F7000E20195FB882780F921E0822780FB95F9F3\r
+:103F80009093E20181E30E94EF1E882359F0909103\r
+:103F9000E20196FB882780F921E0822780FB96F9D1\r
+:103FA0009093E20181E10E94EF1E882359F09091E5\r
+:103FB000E20197FB882780F921E0822780FB97F9AF\r
+:103FC0009093E2018091E2010E9463208091E201DE\r
+:103FD00087FB882780F980930D0187E20E94EF1EFE\r
+:103FE000C82F8EE10E94EF1E8111C2608FE10E94F6\r
+:103FF000EF1E8111C46080E20E94EF1E8111C86033\r
+:1040000081E20E94EF1E8111C06182E20E94EF1ED8\r
+:104010008111C06283E20E94EF1E8111C06484E2BC\r
+:104020000E94EF1E882311F0C06802C0CC2329F043\r
+:104030008C2F0E945A206C2F03C00E945620682F9C\r
+:1040400070E080E090E0CF910C94391BCF910895FF\r
+:104050006DEE7EEF80E090E00E94812660E082E0DD\r
+:1040600090E00E94732660E083E090E00E94732657\r
+:1040700060E084E090E00E94732660E085E090E0DC\r
+:104080000C94732680E090E00E946D2621E08D3E26\r
+:104090009E4F09F020E0822F089582E090E00C947A\r
+:1040A0006526682F82E090E00C94732683E090E010\r
+:1040B0000C946526682F83E090E00C94732684E0CE\r
+:1040C00090E00C946526682F84E090E00C947326B1\r
+:1040D0008091D70180FF0BC06091130185E0689F3C\r
+:1040E000B001112475956795759567952AC081FF74\r
+:1040F00009C06091130185E0689FB0011124759596\r
+:1041000067951FC082FF07C06091130185E0689F1B\r
+:10411000B001112416C04091D8014423C9F0609128\r
+:104120001201461788F72091130185E0289F90011E\r
+:104130001124429FC001439F900D112470E00E9402\r
+:1041400037266038710540F46115710539F002C0F9\r
+:1041500065E070E0862F08958FE7089581E0089567\r
+:104160008091D70180FF08C06091110170E07595C2\r
+:1041700067957595679521C081FF06C06091110113\r
+:1041800070E07595679519C082FF04C060911101B8\r
+:1041900070E010C08091D8018823C1F060911001B7\r
+:1041A0008617A0F790911101989FC001112470E02B\r
+:1041B0000E9437266038710528F46115710521F0D9\r
+:1041C000862F08958FE7089581E0089561E070E0FB\r
+:1041D000F4CF803F21F40E946820819504C0813F84\r
+:1041E00029F40E9468208093DB010895823F21F426\r
+:1041F0000E946820819504C0833F29F40E946820B2\r
+:104200008093DA010895893F19F40E94B02005C017\r
+:104210008A3F31F40E94B02081958093DC0108959B\r
+:104220008B3F21F40E94B020819504C08C3F29F47B\r
+:104230000E94B0208093DD010895843F21F4809195\r
+:10424000D901816017C0853F21F48091D901826036\r
+:1042500011C0863F21F48091D90184600BC0873F53\r
+:1042600021F48091D901886005C0883F31F48091A4\r
+:10427000D90180618093D90108958D3F21F4809107\r
+:10428000D70181600BC08E3F21F48091D7018260FD\r
+:1042900005C08F3F29F48091D70184608093D701B6\r
+:1042A0000895803F39F48091DB0187FF6CC0109244\r
+:1042B000DB0169C0813F29F48091DB011816BCF352\r
+:1042C00062C09091DA01823F29F497FF5CC010929E\r
+:1042D000DA0159C0833F19F41916CCF354C0893F51\r
+:1042E00041F48091DC0118160CF04DC01092DC01F5\r
+:1042F0004AC08A3F29F48091DC0187FF44C0F6CF91\r
+:104300008B3F39F48091DD0187FF3DC01092DD01C4\r
+:104310003AC08C3F29F48091DD011816BCF333C0FC\r
+:10432000843F21F48091D9018E7F17C0853F21F40D\r
+:104330008091D9018D7F11C0863F21F48091D901F0\r
+:104340008B7F0BC0873F21F48091D901877F05C007\r
+:10435000883F31F48091D9018F7E8093D90113C0B9\r
+:104360008D3F21F48091D7018E7F0BC08E3F21F4C9\r
+:104370008091D7018D7F05C08F3F29F48091D701AF\r
+:104380008B7F8093D7018091DA0181110EC08091DB\r
+:10439000DB0181110AC08091DC01811106C080918E\r
+:1043A000DD01811102C01092D801089589ED91E0DC\r
+:1043B0000E94E5110E94401E9093D6018093D50182\r
+:1043C00008951F93CF93DF938091D5019091D601EB\r
+:1043D0000E944C1E4091D801442321F020911401E9\r
+:1043E00030E006C0209115015AE0259F900111246C\r
+:1043F0008217930708F482C08091DA011091DB01E3\r
+:10440000D091DC01C091DD01811107C0111105C0FF\r
+:10441000D11103C0CC2309F471C04F3F19F04F5F95\r
+:104420004093D801181624F40E9468208093DA0182\r
+:104430008091DA0187FF05C00E94682081958093F2\r
+:10444000DA01111624F40E9468208093DB01809128\r
+:10445000DB0187FF05C00E94682081958093DB0106\r
+:104460006091DA01662339F11091DB01112319F112\r
+:10447000772767FD7095872F972F0E94482523E3A4\r
+:1044800033E343E35FE30E94AC250E94152560936C\r
+:10449000DA01612F772767FD7095872F972F0E948C\r
+:1044A000482523E333E343E35FE30E94AC250E9406\r
+:1044B00015256093DB011D1624F40E94B020809323\r
+:1044C000DC018091DC0187FF05C00E94B02081954E\r
+:1044D0008093DC011C1624F40E94B0208093DD013F\r
+:1044E0008091DD0187FF05C00E94B02081958093F7\r
+:1044F000DD01DF91CF911F910C94D621DF91CF91F7\r
+:104500001F910895E9EDF1E085E0DF011D928A95A4\r
+:10451000E9F71092D8011092D7010895833081F104\r
+:1045200028F4813059F08230D1F00895853009F4B3\r
+:1045300049C0B8F1863009F456C00895209115019C\r
+:10454000862F90E0820F911D8F3F910520F4620F1E\r
+:104550006093150108958FEF8093150108952091C0\r
+:104560001401862F90E0820F911D8F3F910520F45A\r
+:10457000620F6093140108958FEF809314010895E2\r
+:1045800020911301862F90E0820F911D8F3F91059E\r
+:1045900020F4620F6093130108958FEF809313014D\r
+:1045A000089520911201862F90E0820F911D8F3F78\r
+:1045B000910520F4620F6093120108958FEF8093AC\r
+:1045C0001201089520911101862F90E0820F911D14\r
+:1045D0008F3F910520F4620F6093110108958FEFD2\r
+:1045E00080931101089520911001862F90E0820F91\r
+:1045F000911D8F3F910520F4620F60931001089583\r
+:104600008FEF809310010895833011F128F48130E9\r
+:1046100049F0823091F00895853081F120F18630A3\r
+:10462000C1F1089580911501681720F4861B8093CD\r
+:1046300015010895109215010895809114016817CD\r
+:1046400020F4861B8093140108951092140108959C\r
+:1046500080911301681720F4861B8093130108953D\r
+:1046600010921301089580911201681720F4861B9F\r
+:104670008093120108951092120108958091110102\r
+:10468000681720F4861B8093110108951092110180\r
+:10469000089580911001681720F4861B8093100103\r
+:1046A00008951092100108958D3109F442C020F54B\r
+:1046B0008E3009F47CC070F4873009F45EC020F4B9\r
+:1046C000863009F442C033C08830D1F18B3009F410\r
+:1046D000AAC02DC0863109F4A6C038F4803109F48F\r
+:1046E00070C0813109F47EC022C0893109F49BC0B9\r
+:1046F0008B3109F452C01BC0853309F48CC048F4D7\r
+:10470000873209F488C008F478C0893209F483C07C\r
+:104710000EC0833438F48A3308F06DC0883309F44E\r
+:1047200082C005C0833409F476C08834C1F080E0CB\r
+:1047300008950E94CF240E94CE110E94D30A73C014\r
+:104740000E944D200E945F206EC08091CF01817F2A\r
+:104750008E7F8093CF0181E08093DF0108950E94D6\r
+:104760003D172FEF83ED90E3215080409040E1F71B\r
+:1047700000C000000E949A1E56C09091CF01892F60\r
+:104780008095817080FB90F919F09660986027C041\r
+:10479000997F977F9093CF0146C09091CF0191FB75\r
+:1047A000882780F921E0822780FB91F913C090913E\r
+:1047B000CF0192FB882780F921E0822780FB92F9C4\r
+:1047C00009C09091CF0193FB882780F921E08227CF\r
+:1047D00080FB93F99093CF01882329F19160909306\r
+:1047E000CF0108950E943D1780910D0191E0892726\r
+:1047F00080930D0118C027EC01C023EE280F61E063\r
+:1048000070E080E090E004C0660F771F881F991F5A\r
+:104810002A95D2F704C061E070E080E090E00E9449\r
+:10482000391B0E943D1781E0089580E0089580E0E3\r
+:104830000895CF93C82F8091DF01813079F018F06F\r
+:104840008230D1F184C0A0910E01B0910F018C9102\r
+:10485000813169F0823209F07CC009C0A0910E015B\r
+:10486000B0910F018C91813111F0823249F48C2F7B\r
+:104870000E94152481111DC08C2F0E9454231AC040\r
+:104880008C2F0E941724811114C0C43179F048F490\r
+:10489000CB3079F0C03109F060C082E08093DF0155\r
+:1048A00008C0C93219F0C83321F057C01092DF0197\r
+:1048B00054C081E0817053C0C93289F118F5C43108\r
+:1048C00071F1A8F4C73009F046C08AE08093150161\r
+:1048D00094E19093140193E090931301809312015B\r
+:1048E00088E08093110188E28093100134C0CE519A\r
+:1048F000C63088F5EC2FF0E0E65DFE4F80818093B6\r
+:10490000DE0129C0CE34E9F020F4CB3421F56AE091\r
+:1049100013C0C13579F0C235F1F461E00DC080916A\r
+:10492000DE01882319F01092DE0115C081E080932A\r
+:10493000DF0115C061E006C08091DE010E948E2279\r
+:104940000AC06AE08091DE010E94042304C0109234\r
+:10495000DF0180E004C081E002C080E0ABCFCF91F6\r
+:104960000895E1E8F0E08081886080838081816043\r
+:1049700080838FB7F89493E09093890090ED9093A3\r
+:1049800088008FBF0895EFE6F0E080818260808329\r
+:104990000895EFE6F0E080818D7F80830895EFE653\r
+:1049A000F0E0808192E08927808308951F920F9222\r
+:1049B0000FB60F9211242F933F934F935F936F93F2\r
+:1049C0007F938F939F93AF93BF93EF93FF938091C8\r
+:1049D000E0019091E10101969093E1018093E00163\r
+:1049E000811103C082E00E94D30AE091E101E695C3\r
+:1049F000E695F0E0EC51F84FE4918091E0018E13E0\r
+:104A000003C080E00E94D30AFF91EF91BF91AF9164\r
+:104A10009F918F917F916F915F914F913F912F91D6\r
+:104A20000F900FBE0F901F90189504D06894B1118D\r
+:104A30008DC0089570D088F09F5790F0B92F9927B6\r
+:104A4000B751A0F0D1F0660F771F881F991F1AF099\r
+:104A5000BA95C9F712C0B13081F077D0B1E00895AE\r
+:104A600074C0672F782F8827B85F39F0B93FCCF32F\r
+:104A7000869577956795B395D9F73EF4909580958F\r
+:104A8000709561957F4F8F4F9F4F0895E89409C0AF\r
+:104A900097FB3EF490958095709561957F4F8F4F71\r
+:104AA0009F4F9923A9F0F92F96E9BB279395F69587\r
+:104AB000879577956795B795F111F8CFFAF4BB0F05\r
+:104AC00011F460FF1BC06F5F7F4F8F4F9F4F16C069\r
+:104AD000882311F096E911C0772321F09EE8872FF3\r
+:104AE000762F05C0662371F096E8862F70E060E0AF\r
+:104AF0002AF09A95660F771F881FDAF7880F969528\r
+:104B0000879597F9089557FD9058440F551F59F010\r
+:104B10005F3F71F04795880F97FB991F61F09F3FAA\r
+:104B200079F087950895121613061406551FF2CFD3\r
+:104B30004695F1DF08C0161617061806991FF1CF23\r
+:104B400086957105610508940895E894BB2766274A\r
+:104B50007727CB0197F908950BD078C069D028F05A\r
+:104B60006ED018F0952309F05AC05FC01124EECF23\r
+:104B7000CADFA0F3959FD1F3950F50E0551F629FB8\r
+:104B8000F001729FBB27F00DB11D639FAA27F00DA6\r
+:104B9000B11DAA1F649F6627B00DA11D661F829FCD\r
+:104BA0002227B00DA11D621F739FB00DA11D621FB2\r
+:104BB000839FA00D611D221F749F3327A00D611DCF\r
+:104BC000231F849F600D211D822F762F6A2F1124B1\r
+:104BD0009F5750408AF0E1F088234AF0EE0FFF1F04\r
+:104BE000BB1F661F771F881F91505040A9F79E3F3B\r
+:104BF000510570F014C0AACF5F3FECF3983EDCF390\r
+:104C0000869577956795B795F795E7959F5FC1F777\r
+:104C1000FE2B880F911D9695879597F9089597F922\r
+:104C20009F6780E870E060E008959FEF80EC089552\r
+:104C300000240A941616170618060906089500247B\r
+:104C40000A9412161306140605060895092E0394F5\r
+:104C5000000C11F4882352F0BB0F40F4BF2B11F469\r
+:104C600060FF04C06F5F7F4F8F4F9F4F089597FB8A\r
+:104C7000072E16F4009407D077FD09D00E94512624\r
+:104C800007FC05D03EF4909581959F4F089570954F\r
+:104C900061957F4F0895EE0FFF1F0590F491E02D71\r
+:104CA0000994AA1BBB1B51E107C0AA1FBB1FA61773\r
+:104CB000B70710F0A61BB70B881F991F5A95A9F7C5\r
+:104CC00080959095BC01CD010895F999FECF92BDD4\r
+:104CD00081BDF89A992780B50895A8E1B0E042E037\r
+:104CE00050E00C948826262FF999FECF1FBA92BD6A\r
+:104CF00081BD20BD0FB6F894FA9AF99A0FBE0196BD\r
+:104D000008950E947326272F0C947426DC01CB0192\r
+:104D1000FC01F999FECF06C0F2BDE1BDF89A3196CB\r
+:104D200000B40D9241505040B8F70895F894FFCF69\r
+:104D30002002D50A620B3F0B0B0BD80A0101BC0104\r
+:104D400028080A03140A3F4D3639A50758072207D9\r
+:104D5000E9067C069506AE06C706010203040506B1\r
+:044D60000708090037\r
+:00000001FF\r
--- /dev/null
+#include "ergodox_ez.h"
+#include "action_layer.h"
+#include "keymap_common.h"
+#include "keymap_extras/keymap_german.h"
+
+#define UC_ASYMPTOTICALLY_EQUAL_TO 0
+#define UC_DIVISION_SIGN 1
+#define UC_DOWNWARDS_ARROW 2
+#define UC_ELEMENT_OF 3
+#define UC_EMPTY_SET 4
+#define UC_FOR_ALL 5
+#define UC_GREEK_CAPITAL_LETTER_ALPHA 6
+#define UC_GREEK_CAPITAL_LETTER_BETA 7
+#define UC_GREEK_CAPITAL_LETTER_CHI 8
+#define UC_GREEK_CAPITAL_LETTER_DELTA 9
+#define UC_GREEK_CAPITAL_LETTER_EPSILON 10
+#define UC_GREEK_CAPITAL_LETTER_ETA 11
+#define UC_GREEK_CAPITAL_LETTER_GAMMA 12
+#define UC_GREEK_CAPITAL_LETTER_IOTA 13
+#define UC_GREEK_CAPITAL_LETTER_KAPPA 14
+#define UC_GREEK_CAPITAL_LETTER_LAMDA 15
+#define UC_GREEK_CAPITAL_LETTER_MU 16
+#define UC_GREEK_CAPITAL_LETTER_NU 17
+#define UC_GREEK_CAPITAL_LETTER_OMEGA 18
+#define UC_GREEK_CAPITAL_LETTER_OMICRON 19
+#define UC_GREEK_CAPITAL_LETTER_PHI 20
+#define UC_GREEK_CAPITAL_LETTER_PI 21
+#define UC_GREEK_CAPITAL_LETTER_PSI 22
+#define UC_GREEK_CAPITAL_LETTER_RHO 23
+#define UC_GREEK_CAPITAL_LETTER_SIGMA 24
+#define UC_GREEK_CAPITAL_LETTER_TAU 25
+#define UC_GREEK_CAPITAL_LETTER_THETA 26
+#define UC_GREEK_CAPITAL_LETTER_UPSILON 27
+#define UC_GREEK_CAPITAL_LETTER_XI 28
+#define UC_GREEK_CAPITAL_LETTER_ZETA 29
+#define UC_GREEK_SMALL_LETTER_ALPHA 30
+#define UC_GREEK_SMALL_LETTER_BETA 31
+#define UC_GREEK_SMALL_LETTER_CHI 32
+#define UC_GREEK_SMALL_LETTER_DELTA 33
+#define UC_GREEK_SMALL_LETTER_EPSILON 34
+#define UC_GREEK_SMALL_LETTER_ETA 35
+#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
+#define UC_GREEK_SMALL_LETTER_GAMMA 37
+#define UC_GREEK_SMALL_LETTER_IOTA 38
+#define UC_GREEK_SMALL_LETTER_KAPPA 39
+#define UC_GREEK_SMALL_LETTER_LAMDA 40
+#define UC_GREEK_SMALL_LETTER_MU 41
+#define UC_GREEK_SMALL_LETTER_NU 42
+#define UC_GREEK_SMALL_LETTER_OMEGA 43
+#define UC_GREEK_SMALL_LETTER_OMICRON 44
+#define UC_GREEK_SMALL_LETTER_PHI 45
+#define UC_GREEK_SMALL_LETTER_PI 46
+#define UC_GREEK_SMALL_LETTER_PSI 47
+#define UC_GREEK_SMALL_LETTER_RHO 48
+#define UC_GREEK_SMALL_LETTER_SIGMA 49
+#define UC_GREEK_SMALL_LETTER_TAU 50
+#define UC_GREEK_SMALL_LETTER_THETA 51
+#define UC_GREEK_SMALL_LETTER_UPSILON 52
+#define UC_GREEK_SMALL_LETTER_XI 53
+#define UC_GREEK_SMALL_LETTER_ZETA 54
+#define UC_INFINITY 55
+#define UC_LEFTWARDS_ARROW 56
+#define UC_MULTIPLICATION_SIGN 57
+#define UC_NOT_AN_ELEMENT_OF 58
+#define UC_NOT_EQUAL_TO 59
+#define UC_PLUS_MINUS_SIGN 60
+#define UC_RIGHTWARDS_ARROW 61
+#define UC_SUBSCRIPT_EIGHT 62
+#define UC_SUBSCRIPT_FIVE 63
+#define UC_SUBSCRIPT_FOUR 64
+#define UC_SUBSCRIPT_NINE 65
+#define UC_SUBSCRIPT_ONE 66
+#define UC_SUBSCRIPT_SEVEN 67
+#define UC_SUBSCRIPT_SIX 68
+#define UC_SUBSCRIPT_THREE 69
+#define UC_SUBSCRIPT_TWO 70
+#define UC_SUBSCRIPT_ZERO 71
+#define UC_SUPERSCRIPT_EIGHT 72
+#define UC_SUPERSCRIPT_FIVE 73
+#define UC_SUPERSCRIPT_FOUR 74
+#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
+#define UC_SUPERSCRIPT_NINE 76
+#define UC_SUPERSCRIPT_ONE 77
+#define UC_SUPERSCRIPT_SEVEN 78
+#define UC_SUPERSCRIPT_SIX 79
+#define UC_SUPERSCRIPT_THREE 80
+#define UC_SUPERSCRIPT_TWO 81
+#define UC_SUPERSCRIPT_ZERO 82
+#define UC_THERE_DOES_NOT_EXIST 83
+#define UC_THERE_EXISTS 84
+#define UC_UPWARDS_ARROW 85
+#define UC_VULGAR_FRACTION_ONE_EIGHTH 86
+#define UC_VULGAR_FRACTION_ONE_FIFTH 87
+#define UC_VULGAR_FRACTION_ONE_HALF 88
+#define UC_VULGAR_FRACTION_ONE_QUARTER 89
+#define UC_VULGAR_FRACTION_ONE_SIXTH 90
+#define UC_VULGAR_FRACTION_ONE_THIRD 91
+#define UC_VULGAR_FRACTION_THREE_QUARTERS 92
+#define UC_VULGAR_FRACTION_TWO_THIRDS 93
+#define UM 94
+
+#define L0 0 // layer_0
+#define L1 1 // layer_1
+#define L2 2 // layer_2
+#define L3 3 // layer_3
+#define L4 4 // layer_4
+#define L5 5 // layer_5
+#define L6 6 // layer_6
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * .------------------------------------.------------------------------------.
+ * |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT|
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * |INS |TG(2)| !M(UM)|DELT |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | APP | ! PGUP| ! !
+ * ! ! !-----! !-----! ! !
+ * |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+ * '-----------------' '-----------------'
+ */
+[L0] = KEYMAP(
+ MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT,
+ MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME,
+ MO(1), DE_U, DE_I, DE_A, DE_E, DE_O,
+ MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END,
+ KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_INS, TG(2),
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_APP,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, KC_LSFT, KC_ESC,
+ DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC,
+ TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z,
+ /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS,
+ KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y,
+ /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT,
+ M(UM), KC_DELT,
+ KC_PGUP,
+ KC_PGDN, KC_ENTER, KC_SPACE
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | |EXLM|DQOT|PARA| | | | | | | | |RING| |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | ← | ↓ | → |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L1] = KEYMAP(
+ KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS,
+ KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC,
+ KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS,
+ KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS,
+ /*-*/ DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST,
+ KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L2] = KEYMAP(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL,
+ KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS,
+ /*-*/ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS,
+ KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS,
+ /*-*/ /*-*/ KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L3] = KEYMAP(
+ KC_TRNS, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL),
+ KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
+ KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET),
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS,
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | θ | | | | | | β | μ | | | | ψ |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L4] = KEYMAP(
+ KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA),
+ /*-*/ M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI),
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | | | | | | | | | | | | | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | Θ | | | | | | Β | Μ | | | | Ψ |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L5] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA),
+ /*-*/ M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI),
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | | | | | | | | | | | | | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | | | | | | | | | | | | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | |-----!-----! | | | | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | | | | | | | | | |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L6] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {};
+
+#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;
+
+case UC_GREEK_SMALL_LETTER_OMICRON:
+ unicode_action_function(0x03, 0xbf);
+ break;
+case UC_LEFTWARDS_ARROW:
+ unicode_action_function(0x21, 0x90);
+ break;
+case UC_GREEK_CAPITAL_LETTER_RHO:
+ unicode_action_function(0x03, 0xa1);
+ break;
+case UC_SUBSCRIPT_THREE:
+ unicode_action_function(0x20, 0x83);
+ break;
+case UC_VULGAR_FRACTION_ONE_EIGHTH:
+ unicode_action_function(0x21, 0x5b);
+ break;
+case UC_GREEK_SMALL_LETTER_LAMDA:
+ unicode_action_function(0x03, 0xbb);
+ break;
+case UC_VULGAR_FRACTION_ONE_THIRD:
+ unicode_action_function(0x21, 0x53);
+ break;
+case UC_GREEK_SMALL_LETTER_XI:
+ unicode_action_function(0x03, 0xbe);
+ break;
+case UC_THERE_DOES_NOT_EXIST:
+ unicode_action_function(0x22, 0x04);
+ break;
+case UC_SUPERSCRIPT_ONE:
+ unicode_action_function(0x00, 0xb9);
+ break;
+case UC_GREEK_SMALL_LETTER_BETA:
+ unicode_action_function(0x03, 0xb2);
+ break;
+case UC_SUBSCRIPT_FIVE:
+ unicode_action_function(0x20, 0x85);
+ break;
+case UC_GREEK_CAPITAL_LETTER_IOTA:
+ unicode_action_function(0x03, 0x99);
+ break;
+case UC_VULGAR_FRACTION_ONE_FIFTH:
+ unicode_action_function(0x21, 0x55);
+ break;
+case UC_GREEK_SMALL_LETTER_PSI:
+ unicode_action_function(0x03, 0xc8);
+ break;
+case UC_SUBSCRIPT_NINE:
+ unicode_action_function(0x20, 0x89);
+ break;
+case UC_SUPERSCRIPT_FOUR:
+ unicode_action_function(0x20, 0x74);
+ break;
+case UC_RIGHTWARDS_ARROW:
+ unicode_action_function(0x21, 0x92);
+ break;
+case UC_SUPERSCRIPT_SIX:
+ unicode_action_function(0x20, 0x76);
+ break;
+case UC_DOWNWARDS_ARROW:
+ unicode_action_function(0x21, 0x93);
+ break;
+case UC_GREEK_SMALL_LETTER_PI:
+ unicode_action_function(0x03, 0xc0);
+ break;
+case UC_SUPERSCRIPT_TWO:
+ unicode_action_function(0x00, 0xb2);
+ break;
+case UC_GREEK_CAPITAL_LETTER_OMEGA:
+ unicode_action_function(0x03, 0xa9);
+ break;
+case UC_GREEK_CAPITAL_LETTER_PSI:
+ unicode_action_function(0x03, 0xa8);
+ break;
+case UC_SUBSCRIPT_FOUR:
+ unicode_action_function(0x20, 0x84);
+ break;
+case UC_GREEK_CAPITAL_LETTER_NU:
+ unicode_action_function(0x03, 0x9d);
+ break;
+case UC_DIVISION_SIGN:
+ unicode_action_function(0x00, 0xf7);
+ break;
+case UC_GREEK_SMALL_LETTER_SIGMA:
+ unicode_action_function(0x03, 0xc3);
+ break;
+case UC_GREEK_SMALL_LETTER_RHO:
+ unicode_action_function(0x03, 0xc1);
+ break;
+case UC_VULGAR_FRACTION_ONE_SIXTH:
+ unicode_action_function(0x21, 0x59);
+ break;
+case UC_GREEK_SMALL_LETTER_GAMMA:
+ unicode_action_function(0x03, 0xb3);
+ break;
+case UC_VULGAR_FRACTION_TWO_THIRDS:
+ unicode_action_function(0x21, 0x54);
+ break;
+case UC_GREEK_SMALL_LETTER_NU:
+ unicode_action_function(0x03, 0xbd);
+ break;
+case UC_GREEK_SMALL_LETTER_ZETA:
+ unicode_action_function(0x03, 0xb6);
+ break;
+case UC_GREEK_SMALL_LETTER_EPSILON:
+ unicode_action_function(0x03, 0xb5);
+ break;
+case UC_GREEK_SMALL_LETTER_KAPPA:
+ unicode_action_function(0x03, 0xba);
+ break;
+case UC_SUPERSCRIPT_SEVEN:
+ unicode_action_function(0x20, 0x77);
+ break;
+case UC_GREEK_CAPITAL_LETTER_PI:
+ unicode_action_function(0x03, 0xa0);
+ break;
+case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
+ unicode_action_function(0x03, 0xc2);
+ break;
+case UC_GREEK_CAPITAL_LETTER_XI:
+ unicode_action_function(0x03, 0x9e);
+ break;
+case UC_GREEK_SMALL_LETTER_THETA:
+ unicode_action_function(0x03, 0xb8);
+ break;
+case UC_GREEK_SMALL_LETTER_ETA:
+ unicode_action_function(0x03, 0xb7);
+ break;
+case UC_SUBSCRIPT_TWO:
+ unicode_action_function(0x20, 0x82);
+ break;
+case UC_ASYMPTOTICALLY_EQUAL_TO:
+ unicode_action_function(0x22, 0x43);
+ break;
+case UC_GREEK_SMALL_LETTER_ALPHA:
+ unicode_action_function(0x03, 0xb1);
+ break;
+case UC_GREEK_CAPITAL_LETTER_PHI:
+ unicode_action_function(0x03, 0xa6);
+ break;
+case UC_GREEK_SMALL_LETTER_PHI:
+ unicode_action_function(0x03, 0xc6);
+ break;
+case UC_INFINITY:
+ unicode_action_function(0x22, 0x1e);
+ break;
+case UC_GREEK_CAPITAL_LETTER_OMICRON:
+ unicode_action_function(0x03, 0x9f);
+ break;
+case UC_ELEMENT_OF:
+ unicode_action_function(0x22, 0x08);
+ break;
+case UC_MULTIPLICATION_SIGN:
+ unicode_action_function(0x00, 0xd7);
+ break;
+case UC_SUBSCRIPT_ZERO:
+ unicode_action_function(0x20, 0x80);
+ break;
+case UC_GREEK_CAPITAL_LETTER_SIGMA:
+ unicode_action_function(0x03, 0xa3);
+ break;
+case UC_GREEK_SMALL_LETTER_OMEGA:
+ unicode_action_function(0x03, 0xc9);
+ break;
+case UC_SUBSCRIPT_ONE:
+ unicode_action_function(0x20, 0x81);
+ break;
+case UC_GREEK_CAPITAL_LETTER_ZETA:
+ unicode_action_function(0x03, 0x96);
+ break;
+case UC_GREEK_SMALL_LETTER_TAU:
+ unicode_action_function(0x03, 0xc4);
+ break;
+case UC_SUPERSCRIPT_FIVE:
+ unicode_action_function(0x20, 0x75);
+ break;
+case UC_THERE_EXISTS:
+ unicode_action_function(0x22, 0x03);
+ break;
+case UC_PLUS_MINUS_SIGN:
+ unicode_action_function(0x00, 0xb1);
+ break;
+case UC_VULGAR_FRACTION_THREE_QUARTERS:
+ unicode_action_function(0x00, 0xbe);
+ break;
+case UC_SUPERSCRIPT_THREE:
+ unicode_action_function(0x00, 0xb3);
+ break;
+case UC_EMPTY_SET:
+ unicode_action_function(0x22, 0x05);
+ break;
+case UC_UPWARDS_ARROW:
+ unicode_action_function(0x21, 0x91);
+ break;
+case UC_SUPERSCRIPT_NINE:
+ unicode_action_function(0x20, 0x79);
+ break;
+case UC_GREEK_SMALL_LETTER_DELTA:
+ unicode_action_function(0x03, 0xb4);
+ break;
+case UC_GREEK_SMALL_LETTER_MU:
+ unicode_action_function(0x03, 0xbc);
+ break;
+case UC_GREEK_CAPITAL_LETTER_KAPPA:
+ unicode_action_function(0x03, 0x9a);
+ break;
+case UC_SUBSCRIPT_EIGHT:
+ unicode_action_function(0x20, 0x88);
+ break;
+case UC_GREEK_CAPITAL_LETTER_ALPHA:
+ unicode_action_function(0x03, 0x91);
+ break;
+case UC_SUBSCRIPT_SEVEN:
+ unicode_action_function(0x20, 0x87);
+ break;
+case UC_GREEK_CAPITAL_LETTER_BETA:
+ unicode_action_function(0x03, 0x92);
+ break;
+case UC_GREEK_CAPITAL_LETTER_ETA:
+ unicode_action_function(0x03, 0x97);
+ break;
+case UC_SUPERSCRIPT_EIGHT:
+ unicode_action_function(0x20, 0x78);
+ break;
+case UC_SUPERSCRIPT_ZERO:
+ unicode_action_function(0x20, 0x70);
+ break;
+case UC_NOT_AN_ELEMENT_OF:
+ unicode_action_function(0x22, 0x09);
+ break;
+case UC_GREEK_SMALL_LETTER_UPSILON:
+ unicode_action_function(0x03, 0xc5);
+ break;
+case UC_NOT_EQUAL_TO:
+ unicode_action_function(0x22, 0x60);
+ break;
+case UC_GREEK_CAPITAL_LETTER_CHI:
+ unicode_action_function(0x03, 0xa7);
+ break;
+case UC_FOR_ALL:
+ unicode_action_function(0x22, 0x00);
+ break;
+case UC_GREEK_CAPITAL_LETTER_TAU:
+ unicode_action_function(0x03, 0xa4);
+ break;
+case UC_VULGAR_FRACTION_ONE_QUARTER:
+ unicode_action_function(0x00, 0xbc);
+ break;
+case UC_GREEK_SMALL_LETTER_CHI:
+ unicode_action_function(0x03, 0xc7);
+ break;
+case UC_GREEK_CAPITAL_LETTER_THETA:
+ unicode_action_function(0x03, 0x98);
+ break;
+case UC_GREEK_SMALL_LETTER_IOTA:
+ unicode_action_function(0x03, 0xb9);
+ break;
+case UC_GREEK_CAPITAL_LETTER_LAMDA:
+ unicode_action_function(0x03, 0x9b);
+ break;
+case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
+ unicode_action_function(0x20, 0x7f);
+ break;
+case UC_GREEK_CAPITAL_LETTER_UPSILON:
+ unicode_action_function(0x03, 0xa5);
+ break;
+case UC_GREEK_CAPITAL_LETTER_MU:
+ unicode_action_function(0x03, 0x9c);
+ break;
+case UC_GREEK_CAPITAL_LETTER_EPSILON:
+ unicode_action_function(0x03, 0x95);
+ break;
+case UC_GREEK_CAPITAL_LETTER_GAMMA:
+ unicode_action_function(0x03, 0x93);
+ break;
+case UC_SUBSCRIPT_SIX:
+ unicode_action_function(0x20, 0x86);
+ break;
+case UC_GREEK_CAPITAL_LETTER_DELTA:
+ unicode_action_function(0x03, 0x94);
+ break;
+case UC_VULGAR_FRACTION_ONE_HALF:
+ unicode_action_function(0x00, 0xbd);
+ break;
+ default:
+ 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 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;
+ }
+};
--- /dev/null
+# ManuNeo Ergodox Keyboard Layout
+
+Compile this file to a `keymap.c` file using `compile_keymap.py`
+
+ python compile_keymap.py keymaps/german-manuneo/keymap.md
+
+Tested with python 2.7 and python 3.4
+
+
+# Layout Config
+
+ {
+ "layout": "ergodox_ez",
+ "keymaps_includes": [
+ "ergodox_ez.h",
+ "action_layer.h",
+ "keymap_common.h",
+ "keymap_extras/keymap_german.h",
+ ],
+ "key_prefixes": ["DE_", "KC_"],
+ "macros": {
+ // TODO: implement macros
+ // "MUC": "",
+ },
+ // TODO: implement default unicode mode
+ }
+
+
+# Layers
+
+
+## Layer 0
+
+ .------------------------------------.------------------------------------.
+ |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT|
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ |INS |TG(2)| !M(UM)|DELT |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | APP | ! PGUP| ! !
+ ! ! !-----! !-----! ! !
+ |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+ '-----------------' '-----------------'
+
+
+## Layer 1
+
+ .------------------------------------.------------------------------------.
+ | |EXLM|DQOT|PARA| | | | | | | | |RING| |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | ← | ↓ | → |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 2
+
+ .------------------------------------.------------------------------------.
+ | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+
+## Layer 3
+
+http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html
+
+ .------------------------------------.------------------------------------.
+ | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 4
+
+
+ .------------------------------------.------------------------------------.
+ | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | θ | | | | | | β | μ | | | | ψ |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 5
+
+ .------------------------------------.------------------------------------.
+ | | | | | | | | | | | | | | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | Θ | | | | | | Β | Μ | | | | Ψ |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 6
+
+ .------------------------------------.------------------------------------.
+ | | | | | | | | | | | | | | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | | | | | | | | | | | | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | |-----!-----! | | | | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | | | | | | | | | |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' |
+ * |Ctrl/Esc|A / L2| S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | ~L1 | '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
+ * | ~L1 | ~L2 |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | Home | | PgUp |Ctrl/Esc|
// left hand
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS,
- CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
+ CTL_T(KC_ESC), LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
- KC_FN1, KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_HOME,
KC_END,
// right hand
KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
- KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_QUOT,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | MsUp | | | | | | | | | | | |
+ * | | | | | | | | | | | | Lclk | Rclk | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
+ * | | | | | | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
-KEYMAP(
+[MDIA] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS,
+ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
};
const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols)
+ [2] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN2 - Momentary Layer 2 (Media)
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-# J3RN's Mac-centric Ergodox EZ keymap
+# J3RN's Mac-centric ErgoDox EZ keymap
## Motivation
-Essentially, I wanted to switch to a layout that was less jarring than the default Ergodox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key).
+Essentially, I wanted to switch to a layout that was less jarring than the default ErgoDox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key).
-## How is it different from the default Ergodox EZ layout?
+## How is it different from the default ErgoDox EZ layout?
This layout more closely resembles that of the Mac keyboard, and has some other goodness baked in. Here is a rundown of what that means:
### Other changes
- **The button to the left of "A" is Ctrl/Esc instead of Backspace.** This is actually how I have the keyboard on my Macbook set up to be, since it's loads more convenient than a CAPS LOCK key. This is the Ctrl key I find myself using most.
+- **Mouse uses Vim-style navigation**. To activate "Media mode," hold the 'a' key. This allows you to move the mouse around with hjkl just like in Vim. Additionally, right and left click are the conveniently placed 'i' and 'o' keys.
- **The key to the right of "5" and the key to left of "6" are "[" and "]", respectively, instead of Left and Right.** There is a more convenient set of Left and Right already present. Truth be told, I don't really use these keys, as they are a stretch to reach.
- **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better.
- **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold."
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | BkSp | A | S | D | F | G |------| |------| H | J | K | L | ; |' / Cmd |
+ * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Cmd | Alt |AltShf| Left | Right| | Left | Down | Up |Right | L2 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | App | LGui | | Alt |Ctrl/Esc|
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * | Space|Backsp|------| |------| Tab |Enter |
+ * | |ace | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ */
+// 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
+ KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
+ KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
+ KC_LGUI,KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ ALT_T(KC_APP), KC_LGUI,
+ KC_HOME,
+ KC_SPC,KC_BSPC,KC_END,
+ // right hand
+ KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN,GUI_T(KC_QUOT),
+ MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(MDIA),
+ KC_LALT, CTL_T(KC_ESC),
+ KC_PGUP,
+ KC_PGDN,KC_TAB, KC_ENT
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | Mute | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | Prev |VolDn |VolUp | Next | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | |Brwser|
+ * | Lclk | Rclk |------| |------| |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_BTN1, KC_BTN2, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94AD0B0C947F0CB7\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C9404210C94A9020C94A9020A\r
+:100050000C94A9020C94951A0C94A9020C94A90270\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902EC0C0E0D5C\r
+:1000B000FC0D0E0DFC0D530D760DFC0DCB0DDE0D64\r
+:1000C000C010C010EF10EF10321170118913891396\r
+:1000D000891189138A128A125D1389138913741383\r
+:1000E0000000F0A12E004C002A00E100E300000017\r
+:1000F0001E00140004001D71E2004D001F001A00D4\r
+:1001000016001B00E1042A0020000800070006007A\r
+:1001100050002C0021001500090019004F004A0072\r
+:10012000220017000A000500000065745000015409\r
+:100130000000007F0000E3004F0001540000007742\r
+:100140000000E20023001C000B00110000002971D8\r
+:10015000240018000D00100050004B0025000C007A\r
+:100160000E00360051002800260012000F00370054\r
+:1001700052002B0027001300330038714F004E004F\r
+:100180002D0031003478E500025400000100010028\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00010001003D0030020A\r
+:1001C00027023000010001003E00310235003502F7\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:10020000010001004100250022001F00370001000D\r
+:1002100042002600230020002700010043002502A1\r
+:100220002E0231002E0001004400450001000100B3\r
+:1002300001000000010001000100010001000000B8\r
+:1002400001000100010001000100010001000100A6\r
+:10025000F20001000100F5000100F000F1000100D2\r
+:100260000100F40001000100F300010001000100A1\r
+:100270000100010001000100000001000100010077\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001000100010001000000010058\r
+:1002A000010001000100A800AC00010001000100F4\r
+:1002B00001000100AA00B6000100010001000100D8\r
+:1002C000A90001000100010001000100AB000100D4\r
+:1002D00001000100AE00010001000000160345000E\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A\r
+:1004E0009091EF01A091F001B091F1018730904B14\r
+:1004F000A740B04BB9F41092EE011092EF011092A8\r
+:10050000F0011092F10114BE84B7877F84BF88E1A7\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0ECE8F5E402C0DA\r
+:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
+:1005400001C01D92AE3EB107E1F70E94F1080C9484\r
+:10055000C4220C94000061110BC0FC01828188232D\r
+:1005600021F085EE0E945D0F03C085EE0E942510EC\r
+:1005700080E090E0089508956091B1017091B2011A\r
+:100580008091B3019091B4010E94C41956985E986D\r
+:1005900025982D9826982E9827982F98813019F015\r
+:1005A000823021F00895259A2D9A0895269A2E9A40\r
+:1005B00008950C94BC0256985E9825982D9826981C\r
+:1005C0002E9827982F988FEF90E090938900809332\r
+:1005D000880090938B0080938A0090938D00809385\r
+:1005E0008C00259A2D9A2FEF80E792E021508040D1\r
+:1005F0009040E1F700C00000269A2E9A2FEF80E786\r
+:1006000092E0215080409040E1F700C00000279A1E\r
+:100610002F9A2FEF80E792E0215080409040E1F741\r
+:1006200000C0000025982D982FEF80E792E0215020\r
+:1006300080409040E1F700C0000026982E982FEFF0\r
+:1006400080E792E0215080409040E1F700C0000038\r
+:1006500027982F9856985E9825982D9826982E982A\r
+:1006600027982F98089589EA8093800089E08093E5\r
+:10067000810024982C983F988AB18F748AB96E981B\r
+:10068000479A8BB1806B8BB9769A0E94DB020C94EF\r
+:10069000BB0280E2809300018091340181110EC081\r
+:1006A0000E94980381E0809334012FEF83ED90E363\r
+:1006B000215080409040E1F700C0000080E40E949B\r
+:1006C0009E038093000181112EC00E94C803809375\r
+:1006D0000001811128C00E94C8038093000181118C\r
+:1006E00022C08FE30E94C8038093000181111BC0C8\r
+:1006F0000E94C00380E40E949E0380930001811148\r
+:1007000012C08CE00E94C8038093000181110BC0CD\r
+:100710000E94C80380930001811105C08FE30E94ED\r
+:10072000C803809300010E94C003809100010895D6\r
+:100730001092B9008AE08093B800089594EA9093EB\r
+:10074000BC009091BC0097FFFCCF9091B900987FBE\r
+:10075000983021F0903111F081E008958093BB0032\r
+:1007600084E88093BC008091BC0087FFFCCF80911F\r
+:10077000B900887F883111F0803471F780E00895E6\r
+:1007800084E98093BC008091BC0084FDFCCF089577\r
+:100790008093BB0084E88093BC008091BC0087FFFD\r
+:1007A000FCCF9091B900987F81E0983209F480E005\r
+:1007B000089584E88093BC008091BC0087FFFCCF43\r
+:1007C0008091BB00089580910001811115C080E4E3\r
+:1007D0000E949E038093000181110CC082E10E945F\r
+:1007E000C80380930001811105C08FEF0E94C803E8\r
+:1007F000809300010E94C00384B1807F84B985B1D9\r
+:10080000807F85B98AB1837F8AB98BB1837F8BB9A9\r
+:100810003E98469808950E944903809300010E94E3\r
+:10082000E30380B38C7080BB81B3836F81BBA6E38D\r
+:10083000B1E0E4E4F1E08EE08E0F11921D928E1390\r
+:10084000FCCF0C943303BF92CF92DF92EF92FF92D2\r
+:100850000F931F93CF93DF9380910001882379F04A\r
+:10086000809135018F5F80933501811108C00E940E\r
+:10087000490380930001811102C00E94DB0206E35C\r
+:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455\r
+:10089000E394F12CC730D10500F58091000181115E\r
+:1008A00064C080E40E949E0380930001811112C005\r
+:1008B00082E10E94C8038093000181110BC0C7012F\r
+:1008C0000C2E01C0880F0A94EAF780950E94C80395\r
+:1008D000809300010E94C00348C0CA30A1F028F4F0\r
+:1008E000C83059F0C93061F005C0CC3089F070F0E3\r
+:1008F000CD3089F0209A289810C0219A29980DC0EF\r
+:10090000229A2A980AC0239A2B9807C0529A01C0AB\r
+:10091000539A5B9802C03E9A469890EA9A95F1F7EE\r
+:100920009FB1799902C082E001C080E091709D255D\r
+:10093000982B7C9902C084E001C080E0892B7D99CE\r
+:1009400002C038E001C030E0832B7E9902C020E174\r
+:1009500001C020E0822B9FB19095991F9927991F84\r
+:100960009295990F907E892B0FC080910001811183\r
+:1009700049C080E40E949E0380930001882379F19E\r
+:10098000B12C0E94C0038B2DF8019081981719F0AB\r
+:100990008083C09201010E94E30321960F5F1F4FE5\r
+:1009A000CE30D10509F076CF80910101882361F125\r
+:1009B000815080930101882339F08FE99FE00197EE\r
+:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC\r
+:1009D000CF01825F91919D938E13FCCF15C083E16F\r
+:1009E0000E94C803809300018111CACF81E40E9454\r
+:1009F0009E03809300018111C3CF0E94D903B82EBA\r
+:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7\r
+:100A1000CF911F910F91FF90EF90DF90CF90BF90FB\r
+:100A20000895E82FF0E0EC5BFE4F80810895089573\r
+:100A30008B3B910578F4883A910540F5853A91050C\r
+:100A4000D0F48430910508F0B1C08130910509F4EB\r
+:100A5000ADC06BC0803E910508F467C0883E91052B\r
+:100A600008F4A4C09C01205F31092031310508F051\r
+:100A70005CC090650895853A910509F459C0863A9D\r
+:100A8000910509F058C082E890E40895883A9105EC\r
+:100A900009F454C0893A910509F453C08A3A910582\r
+:100AA00009F452C08B3A910509F451C08C3A910572\r
+:100AB00009F450C08D3A910509F44FC0803B91056F\r
+:100AC00009F44EC08E3A910509F44DC08F3A910554\r
+:100AD00009F44CC0813B910509F44BC0823B910560\r
+:100AE00009F44AC0833B910509F449C0843B910550\r
+:100AF00009F448C0853B910509F447C0863B910540\r
+:100B000009F446C0873B910509F445C0883B91052F\r
+:100B100009F444C0893B910509F443C08A3B91051F\r
+:100B200009F442C080E094E4089580E090E00895E4\r
+:100B300081E890E4089583E890E4089582EE94E4D7\r
+:100B4000089589EE94E408958AEE94E4089585EB7F\r
+:100B500094E4089586EB94E4089587EB94E4089573\r
+:100B60008CEC94E408958DEC94E4089583E895E486\r
+:100B700008958AE895E4089582E995E4089584E962\r
+:100B800095E4089581E296E4089583E296E4089559\r
+:100B900084E296E4089585E296E4089586E296E478\r
+:100BA000089587E296E408958AE296E40895089508\r
+:100BB00096E0799FF001112494E5899FE00DF11DE5\r
+:100BC0001124E60FF11DEE0FFF1FEC51FF4F859131\r
+:100BD00094910895880F991FFC01E05AF040859187\r
+:100BE00094910895880F991FFC01E052FF4F859161\r
+:100BF0009491089526E0729FF001112444E5849FAA\r
+:100C0000E00DF11D1124E60FF11DEE0FFF1FEC5159\r
+:100C1000FF4F859194919C013A9521154FE134073E\r
+:100C200008F41AC13F512115304120F49F700E94F1\r
+:100C3000F20508959C0130532115304118F499278D\r
+:100C4000906C0895811520E5920769F40E94AB131A\r
+:100C50004FEF84E39CE0415080409040E1F700C0BA\r
+:100C600000000C94BA1A813020E5920731F480918B\r
+:100C7000CC0181608093CC0108959C0130552115F1\r
+:100C8000304108F051C0292F33272F7033272130EE\r
+:100C90003105D9F4AC014370552702C0220F331F30\r
+:100CA0004A95E2F73C68AC0164E0440F551F6A9531\r
+:100CB000E1F744275370242B352B73E0880F991FDD\r
+:100CC0007A95E1F7807699271DC02230310529F405\r
+:100CD000982F8827816F906A089523303105A9F4F1\r
+:100CE000AC014370552721E030E002C0220F331FD2\r
+:100CF0004A95E2F73C6843E0880F991F4A95E1F76F\r
+:100D0000807E9770822B932B089524303105E1F477\r
+:100D1000AC014370552721E030E002C0220F331FA1\r
+:100D20004A95E2F73A68E7CF9C01305721153041E8\r
+:100D300018F49F70906208959C013058211530413D\r
+:100D400018F49F70906A0895803E9105E0F4803C0D\r
+:100D5000910558F58133910509F46FC048F4893243\r
+:100D6000910509F463C08A32910509F46DC072C01F\r
+:100D700089339105E9F082389105D1F085339105E9\r
+:100D800009F44DC067C0833E910581F138F4803E7F\r
+:100D90009105B9F0823E9105D9F05CC0863E91057F\r
+:100DA00061F1873E9105A1F155C00E94EA050895C1\r
+:100DB0002091DF0120FD02C021FF4CC080EE90E0B9\r
+:100DC00049C08091DF0180FFF9CF89E390E042C004\r
+:100DD0008091DF0182FF0EC08091DF0184FF03C09C\r
+:100DE00080E090E037C083EE90E034C08091DF0176\r
+:100DF00082FFF2CF82EE90E02DC08091DF0183FF71\r
+:100E00000BC08091DF0184FDEBCF87EE90E022C024\r
+:100E10008091DF0183FFF5CF86EE90E01BC08091CB\r
+:100E2000DF0185FF07C089E290E014C08091DF01F7\r
+:100E300085FFF9CF85E390E00DC08091DF0186FF4B\r
+:100E400007C08AE290E006C08091DF0186FFF9CFFB\r
+:100E500081E390E00E941805089508950C942D07F1\r
+:100E6000809162010895CF93DF9300D01F92CDB798\r
+:100E7000DEB79C018091E501843019F593E09983F8\r
+:100E80003B832A839093E9008FEF9091E800815093\r
+:100E900095FD06C095ED9A95F1F700008111F5CF0B\r
+:100EA0008091E80085FF0DC040E050E063E070E015\r
+:100EB000CE0101960E949D098091E8008E77809373\r
+:100EC000E8000F900F900F90DF91CF910895CF938E\r
+:100ED000DF9300D01F92CDB7DEB72091E50124301B\r
+:100EE00021F522E029839B838A8383E08093E900B4\r
+:100EF0008FEF9091E800815095FD06C095ED9A9591\r
+:100F0000F1F700008111F5CF8091E80085FF0DC059\r
+:100F100040E050E063E070E0CE0101960E949D0940\r
+:100F20008091E8008E778093E8000F900F900F90EB\r
+:100F3000DF91CF9108952091E5012430F1F422E072\r
+:100F40002093E9002FEF3091E800215035FD06C0D5\r
+:100F500035ED3A95F1F700002111F5CF2091E80029\r
+:100F600025FF0BC040E050E065E070E00E949D0965\r
+:100F70008091E8008E778093E8000895CF93DF9307\r
+:100F8000EC019091E501943009F046C080910C018C\r
+:100F90008823D9F080910D018823B9F09093E9005E\r
+:100FA0008FEF9091E800815095FD06C095E19A95EC\r
+:100FB000F1F700008111F5CF8091E80085FF2CC08A\r
+:100FC00040E050E060E170E017C081E08093E9000C\r
+:100FD0008FEF9091E800815095FD06C095ED9A95B0\r
+:100FE000F1F700008111F5CF8091E80085FF14C072\r
+:100FF00040E050E068E070E0CE010E949D098091E1\r
+:10100000E8008E778093E80080E1FE01A2E5B1E080\r
+:1010100001900D928A95E1F7DF91CF91089580912B\r
+:10102000E401811109C00E94320B0E948F0B809154\r
+:10103000E20084608093E20008951092E401089534\r
+:1010400008950C94F1200E94501A0E94F7200E94EB\r
+:10105000350E0C942E0742E061EC81E00E94AC0A50\r
+:1010600042E061EC82E00E94AC0A42E061EC83E085\r
+:101070000E94AC0A42E161EC84E00C94AC0A8091DD\r
+:10108000E701833009F455C030F4813071F08230CB\r
+:1010900009F48EC008958A3009F47AC08B3009F4BF\r
+:1010A00060C0893009F09CC020C08091E601813A7F\r
+:1010B00009F096C08091E800877F8093E8008091D6\r
+:1010C000EA019091EB01892B21F460E182E591E046\r
+:1010D00003C060E080E090E070E00E94E809809149\r
+:1010E000E8008B778093E80008958091E6018132D3\r
+:1010F00009F076C08091EA019091EB01009719F018\r
+:10110000039709F06DC08091E800877F8093E80025\r
+:101110008091E80082FD05C08091E5018111F8CF42\r
+:101120005FC08091F100809362018091E8008B772D\r
+:1011300053C08091E601813A09F052C08091EA01E2\r
+:101140009091EB01892B09F04BC08091E800877FDB\r
+:101150008093E8008091E80080FFFCCF80910C0133\r
+:1011600036C08091E6018132D9F58091EA019091F3\r
+:10117000EB01892BA9F58091E800877F8093E80037\r
+:101180000E94E10A8091E80180930C010C94AB135A\r
+:101190008091E601813221F58091E800877F80937C\r
+:1011A000E8000E94E10A8091E901809363010895BB\r
+:1011B0008091E601813AA1F48091E800877F8093D5\r
+:1011C000E8008091E80080FFFCCF8091630180936C\r
+:1011D000F1008091E8008E778093E8000C94E10A9A\r
+:1011E000089584B7877F84BF88E10FB6F894809311\r
+:1011F0006000109260000FBE90E080E80FB6F89497\r
+:1012000080936100909361000FBE0E94840E0E9443\r
+:10121000320B0E948F0B8091E20084608093E20089\r
+:1012200078940E94150E0E94860E82E091E00E9442\r
+:10123000300E0E94DF208091E501853069F40E9424\r
+:10124000141A8091E3018823B1F30E943C1A882389\r
+:1012500091F30E948709EFCF0E948C0EECCF292FCB\r
+:10126000332723303105C9F064F42130310581F092\r
+:101270002230310509F043C08DE690E020E133E0F3\r
+:1012800042C021323105F1F02232310541F137C03F\r
+:1012900082E190E02DE733E036C099278130910557\r
+:1012A00041F08230910541F0892B49F5ECE0F3E003\r
+:1012B00005C0E4EFF2E002C0ECEDF2E0849190E0D2\r
+:1012C0009F0121C06430D8F4E62FF0E0EE0FFF1F3D\r
+:1012D000EE5DFE4F2081318189E090E014C06430E2\r
+:1012E00070F470E0FB01EE0FFF1FE65EFE4F208101\r
+:1012F0003181FB01EA5EFE4F808190E004C080E016\r
+:1013000090E020E030E0FA0131832083089580E10D\r
+:1013100089BD82E189BD09B400FEFDCF8091D8006E\r
+:101320008F7D8093D8008091E00082608093E00000\r
+:101330008091E00081FDFCCF0895CF92DF92EF9283\r
+:10134000FF920F931F93CF93DF93EC018B016A0100\r
+:101350000E94000B811133C0C114D10439F0F60191\r
+:1013600080819181081B190BC80FD91FE12CF12C2A\r
+:101370000115110519F18091E80085FD16C08091D5\r
+:10138000E8008E778093E800C114D10449F0F6019B\r
+:1013900080819181E80EF91EF182E08285E00FC024\r
+:1013A0000E94000B882321F30AC089918093F100E9\r
+:1013B00001501109FFEFEF1AFF0ADACF80E0DF9149\r
+:1013C000CF911F910F91FF90EF90DF90CF900895F4\r
+:1013D0002091EC013091ED012617370748F0611597\r
+:1013E000710539F42091E8002E772093E80001C0C0\r
+:1013F000B90140E061157105A9F12091E5012223B1\r
+:1014000009F443C0253009F442C02091E80023FDCF\r
+:1014100040C02091E80022FD32C02091E80020FF6A\r
+:10142000E9CF4091F3002091F20030E0342BFC0131\r
+:10143000CF016115710559F02830310540F48191D3\r
+:101440008093F100615071092F5F3F4FF1CF41E070\r
+:101450002830310509F040E02091E8002E772093F4\r
+:10146000E800C8CF4111C9CF0AC08091E5018823A7\r
+:1014700061F0853061F08091E80083FD0AC08091C1\r
+:10148000E80082FFF2CF80E0089582E0089583E0D3\r
+:10149000089581E008952091EC013091ED01261727\r
+:1014A000370748F06115710539F42091E8002E776F\r
+:1014B0002093E80001C0B901FC0120E0611571052D\r
+:1014C00091F18091E501882309F440C0853009F449\r
+:1014D0003FC08091E80083FD3DC08091E80082FD1F\r
+:1014E0002FC08091E80080FFE9CF2091F300809128\r
+:1014F000F20090E0922B6115710559F0883091054A\r
+:1015000040F424912093F1003196615071090196C5\r
+:10151000F2CF21E0089709F020E08091E8008E7773\r
+:101520008093E800CBCF2111CCCF0AC08091E50198\r
+:10153000882361F0853061F08091E80083FD0AC066\r
+:101540008091E80082FFF2CF80E0089582E0089564\r
+:1015500083E0089581E00895982F973058F590938F\r
+:10156000E900981739F07091EC002091ED0050914E\r
+:10157000F00003C0242F762F50E021FF19C03091D6\r
+:10158000EB003E7F3093EB003091ED003D7F3093D8\r
+:10159000ED003091EB0031603093EB007093EC0084\r
+:1015A0002093ED005093F0002091EE0027FF07C03C\r
+:1015B0009F5FD3CF8F708093E90081E0089580E032\r
+:1015C00008958091E60187FF11C08091E80082FDB7\r
+:1015D00005C08091E5018111F8CF11C08091E8002C\r
+:1015E0008B770BC08091E501882349F08091E8005A\r
+:1015F00080FFF8CF8091E8008E778093E80008950F\r
+:101600002091E4003091E50095E64091EC00842FB4\r
+:10161000817040FF22C08091E80080FD1CC0809155\r
+:10162000E501882391F0853091F08091EB0085FDF4\r
+:1016300010C04091E4005091E5004217530729F390\r
+:101640009A01915011F784E0089582E0089583E0B3\r
+:10165000089581E0089580E008954091E80042FFF8\r
+:10166000DECF08950E94A00B0E94A80BE0EEF0E0F0\r
+:10167000808181608083E8EDF0E080818F778083D6\r
+:1016800019BCA7EDB0E08C918E7F8C9380818F7E0A\r
+:1016900080831092E40108950F931F93CF93DF93FB\r
+:1016A0000E94A00B0E94A80BC8EDD0E088818F7724\r
+:1016B000888388818068888388818F7D888319BC2E\r
+:1016C0001092E5011092E1011092E3011092E20103\r
+:1016D00000EE10E0F80180818B7F8083888181603B\r
+:1016E000888342E060E080E00E94AC0AE1EEF0E036\r
+:1016F00080818E7F8083E2EEF0E080818160808354\r
+:10170000808188608083F80180818E7F80838881DA\r
+:1017100080618883DF91CF911F910F910895E8ED4B\r
+:10172000F0E080818F7E8083E7EDF0E08081816052\r
+:10173000808384E082BF81E08093E4010C944C0BB1\r
+:10174000E8EDF0E080818E7F80831092E2000895C2\r
+:101750001092DA001092E10008951F920F920FB6D6\r
+:101760000F9211242F933F934F935F936F937F9327\r
+:101770008F939F93AF93BF93EF93FF938091E1007B\r
+:1017800082FF0BC08091E20082FF07C08091E100E0\r
+:101790008B7F8093E1000E94140E8091DA0080FF1D\r
+:1017A0001FC08091D80080FF1BC08091DA008E7F1F\r
+:1017B0008093DA008091D90080FF0DC080E189BD5F\r
+:1017C00082E189BD09B400FEFDCF81E08093E5018F\r
+:1017D0000E940F0805C019BC1092E5010E941D0867\r
+:1017E0008091E10080FF19C08091E20080FF15C068\r
+:1017F0008091E2008E7F8093E2008091E200806120\r
+:101800008093E2008091D80080628093D80019BC58\r
+:1018100085E08093E5010E9421088091E10084FF2A\r
+:1018200030C08091E20084FF2CC080E189BD82E15C\r
+:1018300089BD09B400FEFDCF8091D8008F7D8093D3\r
+:10184000D8008091E1008F7E8093E1008091E200DA\r
+:101850008F7E8093E2008091E20081608093E200BD\r
+:101860008091E101882311F084E007C08091E300BA\r
+:1018700087FD02C081E001C083E08093E5010E9402\r
+:1018800023088091E10083FF29C08091E20083FF5B\r
+:1018900025C08091E100877F8093E10082E0809302\r
+:1018A000E5011092E1018091E1008E7F8093E100DB\r
+:1018B0008091E2008E7F8093E2008091E20080615F\r
+:1018C0008093E20042E060E080E00E94AC0A8091F8\r
+:1018D000F00088608093F0000E942008FF91EF9153\r
+:1018E000BF91AF919F918F917F916F915F914F9138\r
+:1018F0003F912F910F900FBE0F901F9018951F9240\r
+:101900000F920FB60F9211242F933F934F935F9333\r
+:101910006F937F938F939F93AF93BF93CF93DF93F7\r
+:10192000EF93FF93C091E900CF708091EC00D82F26\r
+:10193000D17080FDD0E81092E9008091F000877F9F\r
+:101940008093F00078940E94C30C1092E90080917B\r
+:10195000F00088608093F000CD2BCF70C093E90039\r
+:10196000FF91EF91DF91CF91BF91AF919F918F91B7\r
+:101970007F916F915F914F913F912F910F900FBE8B\r
+:101980000F901F9018951F93CF93DF93CDB7DEB7BD\r
+:10199000AA970FB6F894DEBF0FBECDBFE6EEF1E01A\r
+:1019A00088E08E0F9091F10091938E13FBCF0E94EF\r
+:1019B0003F088091E80083FF1FC18091E60190916C\r
+:1019C000E701492F50E04A30510508F015C1FA01EE\r
+:1019D000EA5AFF4F0C947922803881F0823809F05E\r
+:1019E0000BC18091EA018F708093E9008091EB0038\r
+:1019F00085FB882780F91092E90006C08091E201FA\r
+:101A00009091E301911182609091E800977F90930B\r
+:101A1000E8008093F1001092F100C8C0282F2D7FBC\r
+:101A200009F0EAC0882319F0823061F0E5C08091A6\r
+:101A3000E801813009F0E0C0933009F080E0809344\r
+:101A4000E3012BC08091E801811127C08091EA0158\r
+:101A50008F7009F4D1C08093E9002091EB0020FF42\r
+:101A60001CC0933021F48091EB00806214C09091EF\r
+:101A7000EB0090619093EB0021E030E0A90102C0FF\r
+:101A8000440F551F8A95E2F74093EA001092EA004E\r
+:101A90008091EB0088608093EB001092E9008091C8\r
+:101AA000E800877F86C08111A7C01091E8011F77E9\r
+:101AB0008091E3008078812B8093E3008091E8009F\r
+:101AC000877F8093E8000E94E10A8091E80080FF10\r
+:101AD000FCCF8091E30080688093E300111102C085\r
+:101AE00082E001C083E08093E50186C080588230A7\r
+:101AF00008F082C08091E8019091E9018C3D53E0AB\r
+:101B0000950779F583E08A838AE289834FB7F89451\r
+:101B1000DE01139620E03EE051E2E32FF0E0509327\r
+:101B20005700E49120FF03C0E295EF703F5FEF7034\r
+:101B30008E2F90E0EA3010F0C79601C0C0968D93CA\r
+:101B40009D932F5F243149F74FBF8091E800877F35\r
+:101B50008093E8006AE270E0CE0101960E94E809F5\r
+:101B600014C0AE014F5F5F4F6091EA010E942F09E0\r
+:101B7000BC01892B09F440C09091E800977F9093B5\r
+:101B8000E80089819A810E944B0A8091E8008B7756\r
+:101B90008093E80031C0803879F58091E800877F34\r
+:101BA0008093E8008091E1018093F1008091E8004A\r
+:101BB0008E778093E8000E94E10A1EC081111CC04C\r
+:101BC0009091E8019230C0F48091E800877F809383\r
+:101BD000E8009093E1010E94E10A8091E101811106\r
+:101BE00006C08091E30087FD02C081E001C084E06F\r
+:101BF0008093E5010E942B088091E80083FF0AC0D2\r
+:101C00008091E800877F8093E8008091EB008062FC\r
+:101C10008093EB00AA960FB6F894DEBF0FBECDBF3F\r
+:101C2000DF91CF911F9108950895CF938091E501A1\r
+:101C30008823A1F0C091E900CF709091EC00892F2A\r
+:101C4000817090FD80E8C82B1092E9008091E80037\r
+:101C500083FD0E94C30CCF70C093E900CF9108951B\r
+:101C600090936901809368010895E0916801F09173\r
+:101C70006901309721F00190F081E02D099480E016\r
+:101C80000895E0916801F0916901309721F0028098\r
+:101C9000F381E02D09940895E0916801F0916901C4\r
+:101CA000309721F00480F581E02D0994089520916A\r
+:101CB0006601309167018217930771F09093670175\r
+:101CC00080936601E0916801F0916901309721F0FD\r
+:101CD0000680F781E02D09940895209164013091E8\r
+:101CE00065018217930771F09093650180936401F9\r
+:101CF000E0916801F0916901309721F00084F1854D\r
+:101D0000E02D0994089508950C94830E0E94561AAC\r
+:101D10000E940B040C941C1BCF92DF92EF92FF9257\r
+:101D20000F931F93CF93DF93CDB7DEB72B970FB6EB\r
+:101D3000F894DEBF0FBECDBF0E9423048BE6C82EF1\r
+:101D400081E0D82E00E010E0E02E802F0E941105E7\r
+:101D5000F60141916F01F42EF826B1F40F5F1F4F89\r
+:101D60000E30110589F78FEF89838A831B820E94C9\r
+:101D70005F1A8160782F9D838C8349815A816B81A2\r
+:101D80008D810E942F0F40C09091CC0191FF04C023\r
+:101D90008B870E9417058B8520E030E04F2D50E0A7\r
+:101DA000922FBA01022E02C0759567950A94E2F748\r
+:101DB00060FF24C02E83EF8221E030E0690102C081\r
+:101DC000CC0CDD1C9A95E2F790E08C219D21892BAB\r
+:101DD00009F420E028870E945F1A8160782F9A8793\r
+:101DE00089874E815F8168858A850E942F0FF8015F\r
+:101DF000E559FE4F8081C826C08206C02F5F3F4F45\r
+:101E00002630310569F6AACF0E94031E10916A019F\r
+:101E10000E94350E1817A1F00E94350E80936A01BA\r
+:101E20002B960FB6F894DEBF0FBECDBFDF91CF91DA\r
+:101E30001F910F91FF90EF90DF90CF900C942E07A1\r
+:101E40002B960FB6F894DEBF0FBECDBFDF91CF91BA\r
+:101E50001F910F91FF90EF90DF90CF900895CF9357\r
+:101E6000DF93CDB7DEB72B970FB6F894DEBF0FBE6A\r
+:101E7000CDBF4F83588769877A878B87DE0111969C\r
+:101E800086E0FD0111928A95E9F785E0FE0137961B\r
+:101E900001900D928A95E1F749815A816B817C818D\r
+:101EA0008D819E810E9445162B960FB6F894DEBF59\r
+:101EB0000FBECDBFDF91CF910895CF93882309F452\r
+:101EC000C2C0C82F823859F40E94350E81FDBBC0B4\r
+:101ED00089E30E94E1180E949E1989E30CC08338AF\r
+:101EE00079F40E94350E80FDAEC083E50E94E118B2\r
+:101EF0000E949E1983E50E942319CF910C949E198C\r
+:101F0000843859F40E94350E82FD9DC087E40E94FA\r
+:101F1000E1180E949E1987E4EECF8CEF8C0F813A76\r
+:101F200048F48C2F0E94442081118DC08C2F0E9478\r
+:101F3000E118E3CF80E28C0F883048F4C77081E06D\r
+:101F400001C0880FCA95EAF70E946719D6CF8BE5C2\r
+:101F50008C0F833078F4C53A29F0C63A31F083E823\r
+:101F600090E005C081E890E002C082E890E0CF9167\r
+:101F70000C94570E88E58C0F833108F064C0C83A82\r
+:101F800039F1C93A41F1CA3A49F1CB3A51F1CC3A67\r
+:101F900059F1CD3A61F1C03B69F1CE3A71F1CF3AD6\r
+:101FA00079F1C13B81F1C23B89F1C33B91F1C43B63\r
+:101FB00099F1C53BA1F1C63BA9F1C73BB1F1C83BC3\r
+:101FC000B9F1C93BC1F1CA3BC9F180E090E038C02A\r
+:101FD00082EE90E035C089EE90E032C08AEE90E06B\r
+:101FE0002FC085EB90E02CC086EB90E029C087EBFA\r
+:101FF00090E026C08CEC90E023C08DEC90E020C0F7\r
+:1020000083E891E01DC08AE891E01AC082E991E07E\r
+:1020100017C084E991E014C081E292E011C083E22C\r
+:1020200092E00EC084E292E00BC085E292E008C02C\r
+:1020300086E292E005C087E292E002C08AE292E086\r
+:10204000CF910C946D0ECF910895882309F44BC065\r
+:10205000823859F40E94350E81FF45C089E30E9401\r
+:10206000E1180E949E1989E30CC0833871F40E9424\r
+:10207000350E80FF38C083E50E94E1180E949E194A\r
+:1020800083E50E9423190C949E19843859F40E9408\r
+:10209000350E82FF28C087E40E94E1180E949E1935\r
+:1020A00087E4EFCF9CEF980F913A58F390E2980FA6\r
+:1020B000983050F4877091E001C0990F8A95EAF743\r
+:1020C000892F0E946D19DFCF9BE5980F933020F484\r
+:1020D00080E090E00C94570E885A833120F480E021\r
+:1020E00090E00C946D0E0895882321F00E946719EA\r
+:1020F0000C949E190895882321F00E946D190C9468\r
+:102100009E190895BF92CF92DF92EF92FF920F93A4\r
+:102110001F93CF93DF9300D000D000D0CDB7DEB7B0\r
+:1021200025E0FC01DE01119601900D922A95E1F760\r
+:10213000FC01408131810281258122952F706381CC\r
+:102140007481672B09F4E5C23F3F19F44F3F09F44E\r
+:10215000E0C27C0149833A8389819A812E830E945F\r
+:10216000A018182FB92E0E949F180E946617EB2DF9\r
+:10217000E295EF70F0E0E05AFF4F2E810C94792247\r
+:102180008B2D807F9B2D9F70F92E882319F0F29460\r
+:1021900080EFF822002349F0FF2009F467C28F2D59\r
+:1021A0000E9477190E949E1961C2812F0E942510FA\r
+:1021B000FF2009F4AEC28F2D0E947D1926960FB61E\r
+:1021C000F894DEBF0FBECDBFDF91CF911F910F916D\r
+:1021D000FF90EF90DF90CF90BF900C949E193B2D15\r
+:1021E000307F8B2D8F70303211F08295807F1123DC\r
+:1021F00019F0113021F12CC00023B9F0222309F489\r
+:10220000A0C1213009F09DC126960FB6F894DEBF1B\r
+:102210000FBECDBFDF91CF911F910F91FF90EF9037\r
+:10222000DF90CF90BF900C948719222319F02130B2\r
+:1022300009F46FC28E830E948A198E8196C1002391\r
+:1022400021F0223008F065C27CC1211162C28DC12B\r
+:10225000002321F0222309F474C108C2222309F4C7\r
+:1022600084C119C22B2D26952695237030E02115A7\r
+:10227000310521F021303105D1F04BC2002321F08E\r
+:10228000812F9B2D937002C080E090E026960FB6C0\r
+:10229000F894DEBF0FBECDBFDF91CF911F910F919C\r
+:1022A000FF90EF90DF90CF90BF900C94570E0023DB\r
+:1022B00021F0812F9B2D937002C080E090E0269644\r
+:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147\r
+:1022D0000F91FF90EF90DF90CF90BF900C946D0E18\r
+:1022E000812F002319F00E940B1D02C00E94731D54\r
+:1022F00026960FB6F894DEBF0FBECDBFDF91CF910B\r
+:102300001F910F91FF90EF90DF90CF90BF900C94B2\r
+:10231000F81D8B2D837009F07BC00111FAC1812F4C\r
+:10232000829586958770880F880F912F9F70C92E90\r
+:10233000D12CE12CF12C082E04C0CC0CDD1CEE1CA1\r
+:10234000FF1C0A94D2F714FF12C04FE050E060E087\r
+:1023500070E004C0440F551F661F771F8A95D2F79F\r
+:10236000CB01BA01609570958095909503C060E0AF\r
+:1023700070E0CB012B2D269526952370422F50E03F\r
+:1023800042305105D9F04330510569F16C297D295E\r
+:102390008E299F294130510551F126960FB6F894A8\r
+:1023A000DEBF0FBECDBFDF91CF911F910F91FF9088\r
+:1023B000EF90DF90CF90BF900C948D176C297D2902\r
+:1023C0008E299F2926960FB6F894DEBF0FBECDBF8B\r
+:1023D000DF91CF911F910F91FF90EF90DF90CF9001\r
+:1023E000BF900C94A9170E948D17C701B6012696BD\r
+:1023F0000FB6F894DEBF0FBECDBFDF91CF911F9116\r
+:102400000F91FF90EF90DF90CF90BF900C947117D9\r
+:10241000002319F08B2D817001C08695882309F463\r
+:1024200078C1812F829586958770880F880F912FAC\r
+:102430009F70C92ED12CE12CF12C082E04C0CC0C9D\r
+:10244000DD1CEE1CFF1C0A94D2F714FF12C04FE0F3\r
+:1024500050E060E070E004C0440F551F661F771F16\r
+:102460008A95D2F7CB01BA016095709580959095C9\r
+:1024700003C060E070E0CB012B2D269526952370DC\r
+:10248000422F50E042305105D9F04330510569F1F7\r
+:102490006C297D298E299F294130510551F12696BD\r
+:1024A0000FB6F894DEBF0FBECDBFDF91CF911F9165\r
+:1024B0000F91FF90EF90DF90CF90BF900C94671832\r
+:1024C0006C297D298E299F2926960FB6F894DEBFA8\r
+:1024D0000FBECDBFDF91CF911F910F91FF90EF9075\r
+:1024E000DF90CF90BF900C9483180E946718C701AB\r
+:1024F000B60126960FB6F894DEBF0FBECDBFDF91B2\r
+:10250000CF911F910F91FF90EF90DF90CF90BF90F0\r
+:102510000C944B18103FD1F118F4103E50F4A1C0A8\r
+:10252000123F09F463C008F44CC0133F09F473C0B0\r
+:1025300098C01F708B2D8F710023A1F00E94E417AB\r
+:10254000812F26960FB6F894DEBF0FBECDBFDF9168\r
+:10255000CF911F910F91FF90EF90DF90CF90BF90A0\r
+:102560000C9474100E940518812F26960FB6F894CB\r
+:10257000DEBF0FBECDBFDF91CF911F910F91FF90B6\r
+:10258000EF90DF90CF90BF900C947B100023A9F0C8\r
+:102590002111BFC08B2D8F7126960FB6F894DEBF28\r
+:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4\r
+:1025B000DF90CF90BF900C942A18223008F0A9C069\r
+:1025C000E9CF0023A9F08B2D8F7126960FB6F894D2\r
+:1025D000DEBF0FBECDBFDF91CF911F910F91FF9056\r
+:1025E000EF90DF90CF90BF900C94E417002359F345\r
+:1025F0008B2D8F7126960FB6F894DEBF0FBECDBF20\r
+:10260000DF91CF911F910F91FF90EF90DF90CF90CE\r
+:10261000BF900C940518002399F08B2D8F7126968E\r
+:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3\r
+:102630000F91FF90EF90DF90CF90BF900C94CF1749\r
+:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7\r
+:102650001F910F91FF90EF90DF90CF90BF900C945F\r
+:10266000C5170023A9F0222309F4ADCF812F2696A8\r
+:102670000FB6F894DEBF0FBECDBFDF91CF911F9193\r
+:102680000F91FF90EF90DF90CF90BF900C945D0F73\r
+:10269000222309F4ADCF812F26960FB6F894DEBF22\r
+:1026A0000FBECDBFDF91CF911F910F91FF90EF90A3\r
+:1026B000DF90CF90BF900C9425104B2D4F70612F61\r
+:1026C000C7010E94AB0226960FB6F894DEBF0FBE7C\r
+:1026D000CDBFDF91CF911F910F91FF90EF90DF90D1\r
+:1026E000CF90BF900C94E9164B2D4F70612FC7010E\r
+:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107\r
+:102700001F910F91FF90EF90DF90CF90BF900C94AE\r
+:10271000D70526960FB6F894DEBF0FBECDBFDF916A\r
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE\r
+:1027300008950E9484190E9459190E949E190E94AE\r
+:10274000A91E0E94F81D80E090E00E94570E80E0D4\r
+:1027500090E00C946D0E0E9474190C9499130E94D1\r
+:10276000A018292F22952F7030E02C3031054CF421\r
+:102770002A3031056CF4225031092230310588F4B9\r
+:1027800007C02C30310549F02F30310531F009C038\r
+:10279000803E48F0803F29F406C093FB882780F9EB\r
+:1027A000089580E0089581E00895CF93DF9300D0ED\r
+:1027B00000D01F92CDB7DEB70F900F900F900F9003\r
+:1027C0000F90DF91CF910895CF93DF9300D000D089\r
+:1027D00000D0CDB7DEB726960FB6F894DEBF0FBE99\r
+:1027E000CDBFDF91CF9108951F93CF93DF93C09119\r
+:1027F000790116E080917A01C81799F0D0E01C9F0A\r
+:10280000F0011D9FF00D1124E558FE4F40815181CC\r
+:1028100062817381848195810E94E4132196C7703F\r
+:10282000E9CFDF91CF911F9108954091AB01509175\r
+:10283000AC016091AD017091AE018091AF019091BA\r
+:10284000B0010C94E4138091B00182958F7009F06F\r
+:1028500054C08091AD01882309F44FC08091790163\r
+:10286000A0917A016091AB017091AC014091AE01F1\r
+:102870005091AF01B6E08A1709F43FC090E04115CE\r
+:102880005105C1F17F3F11F46F3FA1F1B89FF001F5\r
+:10289000B99FF00D1124E558FE4F218172132AC013\r
+:1028A0002081621327C02281211124C02381348119\r
+:1028B0002417350710F421503109241B350B283C0F\r
+:1028C0003105C0F42091B0012F7020612093B00138\r
+:1028D00026E0289FF001299FF00D1124E058FE4FBB\r
+:1028E00080818F70806180838BEA91E00E948210EA\r
+:1028F0000C94F41301968770BECF0895CF92DF92A7\r
+:10290000EF92FF920F931F93CF93DF93CDB7DEB774\r
+:1029100062970FB6F894DEBF0FBECDBF8C0185E085\r
+:10292000F801DE011D9601900D928A95E1F7D8011C\r
+:102930004C9111965C91119712966C911297139687\r
+:10294000CD90DC9014973091AB017091AC018091E7\r
+:10295000AE019091AF01009709F46BC17F3F19F46C\r
+:102960003F3F09F466C1E090AD01EE2009F4C0C01C\r
+:102970002091B001C816D90628F0F601E81BF90B22\r
+:10298000CF0104C0809590958C0D9D1DFF24F3947C\r
+:10299000883C910578F0F12C207F09F0C6C07C2D91\r
+:1029A000D98AC88A89890E94D5138BEA91E00E944E\r
+:1029B0008210B1C0822F807F09F046C0751314C009\r
+:1029C000341312C0611110C02F7020612093B00128\r
+:1029D0000E9415148BEA91E00E9482108091B00150\r
+:1029E000D80115968C932EC0CD2819F15F3F11F4B4\r
+:1029F0004F3FF9F0F62E61111CC0809179012091B2\r
+:102A00007A0136E0821709F45AC090E0389FF0014D\r
+:102A1000399FF00D1124E558FE4F7181571306C000\r
+:102A20007081471303C07281711103C001968770D2\r
+:102A3000E9CFF62E662309F418C18091B0018160B8\r
+:102A40008093B001F12C11C1751308C0341306C076\r
+:102A5000611104C08091B001D801C3C04D875E8769\r
+:102A60008D859E856A8B0E94AF136A898823E1F168\r
+:102A70006623D1F12091B001822F82958F7090E072\r
+:102A8000029774F08091AB019091AC0198878F838D\r
+:102A90001986DB86CA862C87CE0107960E94821093\r
+:102AA00086E0F801ABEAB1E001900D928A95E1F77A\r
+:102AB0000E9423140E941514FF24F394D6C04D875E\r
+:102AC0005E878D859E850E94A018292F22952F70E4\r
+:102AD00030E0223031050CF0BCC09F7009F0B6C068\r
+:102AE000805E883008F4C1C0C8010E948210E4CF23\r
+:102AF000C816D90608F453C0F601E81BF90BCF013C\r
+:102B0000883C910508F450C0F12C7C2DD98AC88AE4\r
+:102B100089890E94D513EBEAF1E086E0DF011D927E\r
+:102B20008A95E9F70E941514A0C0751314C03413D8\r
+:102B300012C0611110C08091B001F8018583C801F5\r
+:102B40000E94821086E0EBEAF1E0DF011D928A9597\r
+:102B5000E9F7FE2C8AC04D875E878D859E856A8B3E\r
+:102B60000E94AF136A89882309F4BECF662309F453\r
+:102B7000BBCF2091B001822F82958F7090E0029799\r
+:102B80000CF48ECF8091AB019091AC019A83898334\r
+:102B90001B82DD82CC822E83CE0101967FCF809571\r
+:102BA00090958C0D9D1DACCFF62E662309F49CCF1D\r
+:102BB00075132EC034132CC02091B00120FD1FC00E\r
+:102BC000822F82958F70D9F0D80115962C93159786\r
+:102BD0008F3049F08F5F982F9295907F822F8F7062\r
+:102BE000892B15968C93C8010E94821086E0F8010B\r
+:102BF000ABEAB1E001900D928A95E1F793CF86E0C0\r
+:102C0000F801ABEAB1E001900D928A95E1F72DC091\r
+:102C10004D875E878D859E850E94AF13811140CFC1\r
+:102C20008091B00181608093B001C8010E94821040\r
+:102C30001CC0662309F458CF4D875E878D859E851D\r
+:102C40000E94AF13882309F44FCF2ACF811148CFB8\r
+:102C50000CC0243031050CF047CF9F7009F440CFF1\r
+:102C6000F8019581907F09F03BCF8F2D62960FB6CA\r
+:102C7000F894DEBF0FBECDBFDF91CF911F910F91B2\r
+:102C8000FF90EF90DF90CF9008951F93CF93DF9345\r
+:102C9000CDB7DEB72C970FB6F894DEBF0FBECDBF11\r
+:102CA0004F83588769877A878B879C87CE010796E1\r
+:102CB0000E947E14882369F08F8198852A853B8540\r
+:102CC000232BF1F19F3F09F063C08F3F09F060C0F3\r
+:102CD00037C086E0FE013796DE01119601900D9215\r
+:102CE0008A95E1F76F817885EA85FB85309741F118\r
+:102CF0007F3F11F46F3F21F120917A0130E0C9014B\r
+:102D00000196877099274091790150E084179507C3\r
+:102D100009F447C069837A83FD83EC8396E0929F30\r
+:102D2000D001939FB00D1124A558BE4FFE013196DE\r
+:102D300001900D929A95E1F780937A010E94F41325\r
+:102D400016E08091790190917A018917C1F1189F5D\r
+:102D5000C001112485589E4F0E947E14882379F16A\r
+:102D6000E09179011E9FF0011124E558FE4F40814A\r
+:102D7000518162817381848195810E94E4138091E5\r
+:102D8000790190E001968770992780937901D9CFD6\r
+:102D90004F81588569857A858B859C850E94E413CF\r
+:102DA000CFCF0E94AB1310927A0110927901EBEA17\r
+:102DB000F1E086E0DF011D928A95E9F7C1CF2C96FC\r
+:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C\r
+:102DD0000895EF92FF920F931F93CF93DF938C018F\r
+:102DE000892B09F46CC0F12CEE24E394E8012196C0\r
+:102DF000F8018491843740F4843008F051C0813068\r
+:102E000081F0823019F15BC0853709F444C0A8F124\r
+:102E10009CE7980F903708F052C08F770E942510DA\r
+:102E200041C00E5F1F4FFE01C49180E28C0F8830BD\r
+:102E300048F4C7708E2D01C0880FCA95EAF70E942A\r
+:102E4000771914C08C2F0E945D0F2DC00E5F1F4F8D\r
+:102E5000FE01C49180E28C0F883058F4C7708E2D2B\r
+:102E600001C0880FCA95EAF70E947D190E949E1939\r
+:102E70001AC08C2F0E94251016C00E5F1F4FFE0136\r
+:102E8000C491CC2381F08FE99FE00197F1F700C056\r
+:102E90000000C150F6CF0E5F1F4FFE01F49003C03B\r
+:102EA0000E945D0F8E018F2D882309F49FCFEFE9DB\r
+:102EB000FFE03197F1F700C000008150F5CFDF91BE\r
+:102EC000CF911F910F91FF90EF9008950895609317\r
+:102ED000B5017093B6018093B7019093B8010C943B\r
+:102EE00099130F931F930091B5011091B601209192\r
+:102EF000B7013091B801DC01CB01802B912BA22BC3\r
+:102F0000B32B8093B5019093B601A093B701B09312\r
+:102F1000B8011F910F910C9499130F931F93009177\r
+:102F2000B5011091B6012091B7013091B801DC01D3\r
+:102F3000CB0180239123A223B3238093B5019093E7\r
+:102F4000B601A093B701B093B8011F910F910C94F3\r
+:102F500099130F931F930091B5011091B601209121\r
+:102F6000B7013091B801DC01CB0180279127A2275E\r
+:102F7000B3278093B5019093B601A093B701B093A6\r
+:102F8000B8011F910F910C9499131092B1011092F6\r
+:102F9000B2011092B3011092B4010C94991341E064\r
+:102FA00050E060E070E004C0440F551F661F771FBB\r
+:102FB0008A95D2F74093B1015093B2016093B30167\r
+:102FC0007093B4010C94991341E050E060E070E01C\r
+:102FD00004C0440F551F661F771F8A95D2F7809152\r
+:102FE000B1019091B201A091B301B091B401482B0D\r
+:102FF000592B6A2B7B2B4093B1015093B201609304\r
+:10300000B3017093B4010C94991341E050E060E077\r
+:1030100070E004C0440F551F661F771F8A95D2F7D2\r
+:1030200040955095609570958091B1019091B20155\r
+:10303000A091B301B091B401482359236A237B23A3\r
+:103040004093B1015093B2016093B3017093B40106\r
+:103050000C94991341E050E060E070E004C0440F2C\r
+:10306000551F661F771F8A95D2F78091B101909105\r
+:10307000B201A091B301B091B401482759276A2742\r
+:103080007B274093B1015093B2016093B3017093D9\r
+:10309000B4010C9499130F931F930091B1011091F7\r
+:1030A000B2012091B3013091B401DC01CB01802B3E\r
+:1030B000912BA22BB32B8093B1019093B201A093DB\r
+:1030C000B301B093B4011F910F910C9499130F9316\r
+:1030D0001F930091B1011091B2012091B301309181\r
+:1030E000B401DC01CB0180239123A223B32380937D\r
+:1030F000B1019093B201A093B301B093B4011F91B9\r
+:103100000F910C9499130F931F930091B10110919B\r
+:10311000B2012091B3013091B401DC01CB018027D1\r
+:103120009127A227B3278093B1019093B201A09376\r
+:10313000B301B093B4011F910F910C9499130895AA\r
+:10314000CF92DF92EF92FF920F931F93CF93DF9373\r
+:103150008C01C090B501D090B601E090B701F0901D\r
+:10316000B8014091B1015091B2016091B3017091E9\r
+:10317000B401C42AD52AE62AF72ACFE1D0E0D70144\r
+:10318000C6010C2E04C0B695A795979587950A940D\r
+:10319000D2F780FF07C0B8018C2F0E94FA0581305A\r
+:1031A000910531F4219758F7B80180E00E94FA05A3\r
+:1031B000DF91CF911F910F91FF90EF90DF90CF9013\r
+:1031C000089590910C01992321F090910D01911196\r
+:1031D00009C020910E0130910F01F90132969FEF45\r
+:1031E00040E01FC0982F9695969596959F3050F584\r
+:1031F000E0910E01F0910F01E90FF11D877021E0C0\r
+:1032000030E0A90102C0440F551F8A95E2F7CA01B8\r
+:103210009181892B818308959F3F39F04F5F4E3014\r
+:1032200041F051915813F8CF0DC05111F7CF942FA1\r
+:10323000F5CF9F3F39F0F901E90FF11D97FDFA95A0\r
+:1032400082830895089590910C01992321F0909123\r
+:103250000D01911109C020910E0130910F01F9016A\r
+:103260003296205F3F4F1FC0982F96959695969562\r
+:103270009F30F0F4E0910E01F0910F01E90FF11D84\r
+:10328000877021E030E0A90102C0440F551F8A95E4\r
+:10329000E2F7CA018095918189238183089531964F\r
+:1032A000E217F30729F090819813F9CF1082F7CF36\r
+:1032B000089581E090E0E0910E01F0910F01E80F98\r
+:1032C000F91F1082019680319105A9F70895909118\r
+:1032D000CB01892B8093CB01089580959091CB01F0\r
+:1032E00089238093CB0108951092CB01089590918A\r
+:1032F000CA01892B8093CA01089580959091CA01D3\r
+:1033000089238093CA0108951092CA010895809379\r
+:10331000B90108951092B901089580910E0190911C\r
+:103320000F01FC0131969C01205F3F4F80E091919D\r
+:1033300091118F5FE217F307D1F70895E0910E0125\r
+:10334000F0910F018091CB018083E0910E01F0910B\r
+:103350000F0190818091CA01892B80838091B901EE\r
+:10336000882361F0E0910E01F0910F019081892B8B\r
+:1033700080830E948D1981111092B90180910E01F4\r
+:1033800090910F010C94410ECF92DF92EF92FF9239\r
+:103390006C01EE24FF24C114D104E104F10421F0F6\r
+:1033A000C701B60120E101C020E0C72ED82EE92ECA\r
+:1033B000FF24C114D104E104F10419F0285FC7010E\r
+:1033C000B6016B017C0154E0F694E794D794C7945E\r
+:1033D0005A95D1F7C114D104E104F10419F02C5F1E\r
+:1033E000C701B6016B017C0142E0F694E794D794E3\r
+:1033F000C7944A95D1F7C114D104E104F10419F03E\r
+:103400002E5FC701B601DC01CB01B695A795979554\r
+:103410008795892B8A2B8B2B09F02F5F822FFF90AA\r
+:10342000EF90DF90CF9008958091E501843009F10D\r
+:103430001092CD0120E488E190E00FB6F894A895B1\r
+:10344000809360000FBE2093600083B7817F84600B\r
+:1034500083BF83B7816083BF7894889583B78E7F5D\r
+:1034600083BF88E10FB6F8948093600010926000EB\r
+:103470000FBE089508950895CF930E943A1A0E94AE\r
+:1034800023040E943B1AC0E08C2F0E941105811179\r
+:1034900004C0CF5FCE30C1F701C081E0CF91089565\r
+:1034A0000E94AB130E94350E0C942E0782E084BD5F\r
+:1034B00093E095BD9AEF97BD80936E0008952FB766\r
+:1034C000F8948091CE019091CF01A091D001B0915C\r
+:1034D000D1012FBF0895CF92DF92EF92FF920F9309\r
+:1034E0001F932FB7F8944091CE015091CF01609176\r
+:1034F000D0017091D1012FBF6A017B01EE24FF241E\r
+:103500008C0120E030E0C016D106E206F30610F48C\r
+:10351000415051099A01281B390BC9011F910F9184\r
+:10352000FF90EF90DF90CF9008951F920F920FB60B\r
+:103530000F9211248F939F93AF93BF938091CE01ED\r
+:103540009091CF01A091D001B091D1010196A11D20\r
+:10355000B11D8093CE019093CF01A093D001B09381\r
+:10356000D101BF91AF919F918F910F900FBE0F909E\r
+:103570001F9018950E94320BF8942FEF87EA91E67E\r
+:10358000215080409040E1F700C0000087E090EBC0\r
+:10359000DC018093EE019093EF01A093F001B093D2\r
+:1035A000F1019CE088E10FB6F894A8958093600043\r
+:1035B0000FBE90936000FFCFEF92FF920F931F9387\r
+:1035C000CF93DF93D82FC0E08C2F0E94110500E02D\r
+:1035D00010E0E82EF12CC701002E02C095958795CA\r
+:1035E0000A94E2F780FD06C00F5F1F4F06301105F9\r
+:1035F00091F709C0602F7C2F80E00E94D805D81376\r
+:10360000F3CF81E004C0CF5FCE30F1F680E0DF91F0\r
+:10361000CF911F910F91FF90EF900895CF93C82FF6\r
+:103620008CE20E94DC1A882321F08C2FCF910C941D\r
+:10363000DC1A80E0CF910895CF930E94631C811122\r
+:1036400002C00E94491CC5E6C15049F00E942304F3\r
+:103650008FE39CE90197F1F700C00000F5CF89E204\r
+:103660000E940E1B811113C18AE20E940E1B811160\r
+:103670000E94491C85E00E940E1B81110E94BA1A0B\r
+:103680000E946E1C8093CC0187E00E940E1B882351\r
+:10369000A9F18BE10E940E1B882351F08091CC018F\r
+:1036A00081FB222720F991E0922790FB81F90EC03F\r
+:1036B0008EE00E940E1B882361F08091CC0182FB7A\r
+:1036C000222720F991E0922790FB82F98093CC0188\r
+:1036D00015C080E10E940E1B9091CC01882341F01F\r
+:1036E00093FB222720F981E0822780FB93F904C015\r
+:1036F000892F809580FB90F99093CC018091CC012B\r
+:103700000E94721C0E94801C8093DF0180EE0E9448\r
+:103710000E1B882341F08091DF01982F909590FB3C\r
+:1037200080F98093DF0189E30E940E1B882359F002\r
+:103730008091DF0181FB222720F991E0922790FB05\r
+:1037400081F98093DF0182EE0E940E1B882359F0DD\r
+:103750008091DF0182FB222720F991E0922790FBE4\r
+:1037600082F98093DF0186EE0E940E1B882359F0B8\r
+:103770008091DF0183FB222720F991E0922790FBC3\r
+:1037800083F98093DF0183EE0E940E1B882359F09A\r
+:103790008091DF0184FB222720F991E0922790FBA2\r
+:1037A00084F98093DF0185E30E940E1B882359F082\r
+:1037B0008091DF0185FB222720F991E0922790FB81\r
+:1037C00085F98093DF0181E30E940E1B882359F065\r
+:1037D0008091DF0186FB222720F991E0922790FB60\r
+:1037E00086F98093DF0181E10E940E1B882359F046\r
+:1037F0008091DF0187FB222720F991E0922790FB3F\r
+:1038000087F98093DF018091DF010E94841C809101\r
+:10381000DF0187FB882780F980930D0187E20E94F2\r
+:103820000E1BC82F8EE10E940E1B8111C2608FE11A\r
+:103830000E940E1B8111C46080E20E940E1B811148\r
+:10384000C86081E20E940E1B8111C06182E20E9469\r
+:103850000E1B8111C06283E20E940E1B8111C064A5\r
+:1038600084E20E940E1B882311F0C06802C0CC23A2\r
+:1038700029F08C2F0E947B1C6C2F03C00E94771CA8\r
+:10388000682F70E080E090E0CF910C946717CF91A3\r
+:1038900008956DEE7EEF80E090E00E94AF2260E040\r
+:1038A00082E090E00E94A12260E083E090E00E942C\r
+:1038B000A12260E084E090E00E94A12260E085E027\r
+:1038C00090E00C94A12280E090E00E949B2221E0F5\r
+:1038D0008D3E9E4F09F020E0822F089582E090E017\r
+:1038E0000C949322682F82E090E00C94A12283E054\r
+:1038F00090E00C949322682F83E090E00C94A12236\r
+:1039000084E090E00C949322682F84E090E00C9483\r
+:10391000A1228091D40180FF0BC06091130185E04A\r
+:10392000689FB001112475956795759567952BC0B3\r
+:1039300081FF09C06091130185E0689FB0011124E7\r
+:103940007595679520C082FF07C06091130185E0DF\r
+:10395000689FB001112417C09091D5019923D1F02F\r
+:1039600060911201961788F72091130185E0289F36\r
+:1039700090011124929FA001939F500D112470E09B\r
+:10398000CA010E9465226038710540F46115710515\r
+:1039900039F002C065E070E0862F08958FE7089542\r
+:1039A00081E008958091D40180FF08C060911101E9\r
+:1039B00070E0759567957595679521C081FF06C084\r
+:1039C0006091110170E07595679519C082FF04C080\r
+:1039D0006091110170E010C09091D5019923C1F060\r
+:1039E000609110019617A0F780911101899FC00185\r
+:1039F000112470E00E9465226038710528F4611579\r
+:103A0000710521F0862F08958FE7089581E00895CC\r
+:103A100061E070E0F4CF803F21F40E94891C819521\r
+:103A200004C0813F29F40E94891C8093D801089525\r
+:103A3000823F21F40E94891C819504C0833F29F4B0\r
+:103A40000E94891C8093D7010895893F19F40E9430\r
+:103A5000D21C05C08A3F31F40E94D21C819580930C\r
+:103A6000D90108958B3F21F40E94D21C819504C096\r
+:103A70008C3F29F40E94D21C8093DA010895843F80\r
+:103A800021F48091D601816017C0853F21F4809197\r
+:103A9000D601826011C0863F21F48091D6018460F6\r
+:103AA0000BC0873F21F48091D601886005C0883F14\r
+:103AB00031F48091D60180618093D60108958D3FC5\r
+:103AC00021F48091D40181600BC08E3F21F480915C\r
+:103AD000D401826005C08F3F29F48091D4018460B5\r
+:103AE0008093D4010895803F39F48091D80187FFF5\r
+:103AF0006CC01092D80169C0813F29F48091D8012F\r
+:103B00001816BCF362C09091D701823F29F497FF49\r
+:103B10005CC01092D70159C0833F19F41916CCF339\r
+:103B200054C0893F41F48091D90118160CF04DC062\r
+:103B30001092D9014AC08A3F29F48091D90187FFA8\r
+:103B400044C0F6CF8B3F39F48091DA0187FF3DC046\r
+:103B50001092DA013AC08C3F29F48091DA011816EC\r
+:103B6000BCF333C0843F21F48091D6018E7F17C00F\r
+:103B7000853F21F48091D6018D7F11C0863F21F4CD\r
+:103B80008091D6018B7F0BC0873F21F48091D601B5\r
+:103B9000877F05C0883F31F48091D6018F7E809366\r
+:103BA000D60113C08D3F21F48091D4018E7F0BC0CC\r
+:103BB0008E3F21F48091D4018D7F05C08F3F29F481\r
+:103BC0008091D4018B7F8093D4018091D7018111A2\r
+:103BD0000EC08091D80181110AC08091D901811154\r
+:103BE00006C08091DA01811102C01092D5010895BA\r
+:103BF00086ED91E00E944C0E0E945F1A9093D301D3\r
+:103C00008093D20108951F93CF93DF938091D201C7\r
+:103C10009091D3010E946B1AAC019091D501992328\r
+:103C200021F02091140130E006C0209115018AE0B6\r
+:103C3000289F900111244217530708F486C08091F1\r
+:103C4000D701C091D801D091D9011091DA01811129\r
+:103C500007C0C11176C0D11174C0111172C075C0F6\r
+:103C60009F3F19F09F5F9093D501181624F40E948E\r
+:103C7000891C8093D7018091D70187FF05C00E94DE\r
+:103C8000891C81958093D7011C1624F40E94891CFD\r
+:103C90008093D8018091D80187FF05C00E94891CBC\r
+:103CA00081958093D8016091D701662339F1C09145\r
+:103CB000D801CC2319F1772767FD7095872F972FAF\r
+:103CC0000E94762123E333E343E35FE30E94DA219A\r
+:103CD0000E9443216093D7016C2F772767FD709571\r
+:103CE000872F972F0E94762123E333E343E35FE39B\r
+:103CF0000E94DA210E9443216093D8011D1624F40A\r
+:103D00000E94D21C8093D9018091D90187FF05C000\r
+:103D10000E94D21C81958093D901111624F40E942F\r
+:103D2000D21C8093DA018091DA0187FF05C00E94DE\r
+:103D3000D21C81958093DA01DF91CF911F910C9471\r
+:103D4000F81D9F3F09F08ECF96CFDF91CF911F9145\r
+:103D50000895E6EDF1E085E0DF011D928A95E9F72F\r
+:103D60001092D5011092D4010895833081F128F486\r
+:103D7000813059F08230D1F00895853009F449C07E\r
+:103D8000B8F1863009F456C0089580911501262FA8\r
+:103D900030E0280F311D2F3F310524F4680F609368\r
+:103DA000150108958FEF80931501089580911401F6\r
+:103DB000262F30E0280F311D2F3F310524F4680FE6\r
+:103DC0006093140108958FEF8093140108958091FA\r
+:103DD0001301262F30E0280F311D2F3F310524F429\r
+:103DE000680F6093130108958FEF80931301089576\r
+:103DF00080911201262F30E0280F311D2F3F310511\r
+:103E000024F4680F6093120108958FEF80931201DC\r
+:103E1000089580911101262F30E0280F311D2F3F8A\r
+:103E2000310524F4680F6093110108958FEF80939A\r
+:103E30001101089580911001262F30E0280F311DC7\r
+:103E40002F3F310524F4680F6093100108958FEF20\r
+:103E5000809310010895833011F128F4813049F0E6\r
+:103E6000823091F00895853081F120F18630C1F1E2\r
+:103E7000089580911501681720F4861B8093150121\r
+:103E8000089510921501089580911401681720F487\r
+:103E9000861B809314010895109214010895809157\r
+:103EA0001301681720F4861B809313010895109264\r
+:103EB0001301089580911201681720F4861B8093E6\r
+:103EC000120108951092120108958091110168174E\r
+:103ED00020F4861B8093110108951092110108951A\r
+:103EE00080911001681720F4861B809310010895BB\r
+:103EF0001092100108950F931F938D3109F46BC038\r
+:103F000008F03FC08E3009F47DC0C0F4873009F45A\r
+:103F10006EC068F4863009F0AFC08091CC01817F1B\r
+:103F20008E7F8093CC0181E08093DC01A6C0883035\r
+:103F300009F458C08B3009F49BC09EC0863109F447\r
+:103F400097C078F4803109F470C0813109F094C0D1\r
+:103F50000E94AB1390910D0181E0892780930D01A0\r
+:103F600087C0893109F484C08B3109F085C0809104\r
+:103F7000CC0181FB222720F991E0922790FB81F967\r
+:103F80004AC0853309F45BC048F4873209F457C04E\r
+:103F900008F45AC0893209F452C06EC0833438F430\r
+:103FA0008A3308F067C0883309F462C065C083347F\r
+:103FB00009F445C0883409F05FC00E94AB130FEFCD\r
+:103FC00013ED20E3015010402040E1F700C0000055\r
+:103FD0000E94BA1A4DC00E94FD200E94350E0E9418\r
+:103FE0002E0746C00E946E1C0E94801C41C090910A\r
+:103FF000CC01892F817090FF12C0917F9E7F90939A\r
+:10400000CC013BC08091CC0182FB222720F991E0BA\r
+:10401000922790FB82F98093CC01992349F18091FA\r
+:10402000CC0181608093CC0123C08091CC0183FBC3\r
+:10403000222720F991E0922790FB83F9ECCF61E0F1\r
+:1040400070E080E090E010C08D5141E050E060E011\r
+:1040500070E08A019B0104C0000F111F221F331F53\r
+:104060008A95D2F7C901B8010E9467170E94AB1365\r
+:1040700081E003C08953E9CF80E01F910F9108953B\r
+:1040800080E0089580E00895CF93C82F8091DC01EF\r
+:10409000813079F018F08230E9F187C0E0910E01AB\r
+:1040A000F0910F018081813169F0823209F07FC087\r
+:1040B00009C0E0910E01F0910F018081813111F072\r
+:1040C000823261F48C2F0E944020811104C08C2F19\r
+:1040D0000E947B1F1DC081E090E01AC08C2F0E94BF\r
+:1040E0004220811114C0C43179F048F4CB3079F00A\r
+:1040F000C03109F060C082E08093DC0108C0C932A1\r
+:1041000019F0C83321F057C01092DC0154C081E08F\r
+:10411000817053C0C93289F118F5C43171F1A8F426\r
+:10412000C73009F046C08AE08093150194E190936E\r
+:10413000140193E0909313018093120188E080931F\r
+:10414000110188E28093100134C0CE51C63088F549\r
+:10415000EC2FF0E0E65DFE4F80818093DB0129C00B\r
+:10416000CE34E9F020F4CB3421F56AE013C0C13538\r
+:1041700079F0C235F1F461E00DC08091DB01882354\r
+:1041800019F01092DB0115C081E08093DC0115C0AD\r
+:1041900061E006C08091DB010E94B51E0AC06AE0A2\r
+:1041A0008091DB010E942B1F04C01092DC0180E093\r
+:1041B00004C081E002C080E0ABCFCF910895E1E878\r
+:1041C000F0E08081886080838081816080838FB708\r
+:1041D000F89493E09093890090ED909388008FBFBE\r
+:1041E0000895EFE6F0E08081826080830895EFE635\r
+:1041F000F0E080818D7F80830895EFE6F0E090818C\r
+:1042000082E08927808308951F920F920FB60F9244\r
+:1042100011242F933F934F935F936F937F938F93CB\r
+:104220009F93AF93BF93EF93FF938091DD019091A4\r
+:10423000DE0101969093DE018093DD01811103C0C0\r
+:1042400082E00E942E07E091DE01E695E695F0E01F\r
+:10425000E657FB4FE4918091DD018E1303C080E0AF\r
+:104260000E942E07FF91EF91BF91AF919F918F9187\r
+:104270007F916F915F914F913F912F910F900FBE62\r
+:104280000F901F90189504D06894B1118DC00895B7\r
+:1042900070D088F09F5790F0B92F9927B751A0F0B0\r
+:1042A000D1F0660F771F881F991F1AF0BA95C9F7CA\r
+:1042B00012C0B13081F077D0B1E0089574C0672F9B\r
+:1042C000782F8827B85F39F0B93FCCF3869577957A\r
+:1042D0006795B395D9F73EF4909580957095619563\r
+:1042E0007F4F8F4F9F4F0895E89409C097FB3EF48E\r
+:1042F00090958095709561957F4F8F4F9F4F992333\r
+:10430000A9F0F92F96E9BB279395F69587957795B0\r
+:104310006795B795F111F8CFFAF4BB0F11F460FF70\r
+:104320001BC06F5F7F4F8F4F9F4F16C0882311F0C8\r
+:1043300096E911C0772321F09EE8872F762F05C0DC\r
+:10434000662371F096E8862F70E060E02AF09A9577\r
+:10435000660F771F881FDAF7880F9695879597F96C\r
+:10436000089557FD9058440F551F59F05F3F71F065\r
+:104370004795880F97FB991F61F09F3F79F08795CC\r
+:104380000895121613061406551FF2CF4695F1DF55\r
+:1043900008C0161617061806991FF1CF86957105E5\r
+:1043A000610508940895E894BB2766277727CB0119\r
+:1043B00097F908950BD078C069D028F06ED018F026\r
+:1043C000952309F05AC05FC01124EECFCADFA0F3D5\r
+:1043D000959FD1F3950F50E0551F629FF001729F9A\r
+:1043E000BB27F00DB11D639FAA27F00DB11DAA1FB9\r
+:1043F000649F6627B00DA11D661F829F2227B00D06\r
+:10440000A11D621F739FB00DA11D621F839FA00D90\r
+:10441000611D221F749F3327A00D611D231F849FE0\r
+:10442000600D211D822F762F6A2F11249F57504037\r
+:104430008AF0E1F088234AF0EE0FFF1FBB1F661FD2\r
+:10444000771F881F91505040A9F79E3F510570F08B\r
+:1044500014C0AACF5F3FECF3983EDCF386957795C6\r
+:104460006795B795F795E7959F5FC1F7FE2B880F86\r
+:10447000911D9695879597F9089597F99F6780E81C\r
+:1044800070E060E008959FEF80EC089500240A94A6\r
+:104490001616170618060906089500240A9412161F\r
+:1044A0001306140605060895092E0394000C11F452\r
+:1044B000882352F0BB0F40F4BF2B11F460FF04C0FF\r
+:1044C0006F5F7F4F8F4F9F4F089597FB072E16F416\r
+:1044D000009407D077FD09D00E947F2207FC05D009\r
+:1044E0003EF4909581959F4F0895709561957F4F0B\r
+:1044F0000895EE0FFF1F0590F491E02D0994AA1B7B\r
+:10450000BB1B51E107C0AA1FBB1FA617B70710F0BE\r
+:10451000A61BB70B881F991F5A95A9F780959095F0\r
+:10452000BC01CD010895F999FECF92BD81BDF89AE5\r
+:10453000992780B50895A8E1B0E042E050E00C94DE\r
+:10454000B622262FF999FECF1FBA92BD81BD20BD9C\r
+:104550000FB6F894FA9AF99A0FBE019608950E9440\r
+:10456000A122272F0C94A222DC01CB01FC01F99996\r
+:10457000FECF06C0F2BDE1BDF89A319600B40D92AF\r
+:0C45800041505040B8F70895F894FFCF68\r
+:10458C0020023007BE079B07670733070101BA01FA\r
+:10459C0028080A03140A3F4D36394B04FE03C8039E\r
+:1045AC008F0322033B0354036D030102030405062E\r
+:0445BC0007080900E3\r
+:00000001FF\r
--- /dev/null
+# MSC Configuration
+
+### Based mostly on the ErgoDox EZ default layout with optimizations for coding on osx.
+
+#### Expecting the user to rely on Coder Layer this keymap removes some of the duplicate symbol keys in the lower portions of the board and replaces them with arrow keys and modifiers. The Media Layer is also updated to match the change in the arrow keys and the left and right click buttons are moved under the thumb position. The Media layer is now reached with toggle button in the lower right.
+
+### Main Layer
+
+![Main Layer](img/main_layer.png)
+
+### Code Layer
+
+![Code Layer](img/code_layer.png)
+
+### Media Layer
+
+![Media Layer](img/media_layer.png)
+
+## Changelog
+
+Version 1.0
+
+- Changed the temp code layer key in the bottom right to toggle media layer
+- Changed the temp media key to only be ";"
+- Changed right hand bottom row to match vim home row nav directions
+- Changed media keys to match arrow key changes
+- Changed media left and right click to spacebar and backspace locations
+- Changed bottom left to Cmd
+- Changed single quote on left bottom row to alt
+
+#### Coming Soon:
+- A new layer for Blender editing with a focus on left hand shortcut and a righthand num pad to control the view in Blender.
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
+#include "keymap_extras/keymap_french.h"
+#include "keymap_extras/keymap_neo2.h"
+#include "keymap_extras/keymap_uk.h"
+#include "keymap_extras/keymap_colemak.h"
+#include "keymap_extras/keymap_french_osx.h"
+#include "keymap_extras/keymap_nordic.h"
+#include "keymap_extras/keymap_dvorak.h"
+#include "keymap_extras/keymap_german.h"
+#include "keymap_extras/keymap_norwegian.c"
+#include "keymap_extras/keymap_fr_ch.h"
#include "keymap_extras/keymap_german_osx.h"
+#include "keymap_extras/keymap_spanish.h"
+#include "keymap_extras/keymap_bepo.h"
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define SMLY 3 // media keys
-#define NUMB 4 // number keys
-#define EGOS 5 // Egoshooter layer
-
-#define M_CTRL_CMDV 1
-#define M_CTRL_CMDC 2
-#define M_MEH_SH_ACUT 3
-#define M_DE_PLUS_CTRLALT 12
-#define M_DE_CIRC_CTRLCMD 13
-#define M_TOGGLE_5 14
-
-#define SM_SMILE 4
-#define SM_SMIRK 5
-#define SM_FROWN 6
-#define SM_CRY 7
-#define SM_KISS 8
-#define SM_HEART 9
-#define SM_LAUGH 10
-#define SM_SAD 11
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define SMLY 3
+#define NUMB 4
+#define EGOS 5
+#define M_CTRL_CMDV 0
+#define M_CTRL_CMDC 1
+#define M_MEH_SH_ACUT 2
+#define M_LGUI_SHFT 3
+#define M_CTL_SFT_HASH 4
+#define M_DE_OSX_CIRC_CTRLCMD 5
+#define M_DE_OSX_PLUS_CTRLALT 6
+#define SM_SMILE 7
+#define SM_SMIRK 8
+#define SM_CRY 9
+#define SM_SAD 10
+#define SM_HEART 11
+#define SM_LAUGH 12
+#define SM_KISS 13
+#define SM_FROWN 14
+#define M_TOGGLE_5 15
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | LALT | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/RALT|
- * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
- * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |</L1| ^° |AltShf| Left | Right| | Up | Down | CMD-SHIFT | + | #/L1 |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,---------------.
- * | MDIA | Meh | | Hyper| NUM |
- * ,------|------|------| |------+--------+------.
- * | | | Home | | PgUp | | |
- * | Back-| Del |------| |------| Enter | Space|
- * | Space| | End | | PgDn | | |
- * `--------------------' `----------------------'
- */
-// 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, DE_1, DE_2, DE_3, DE_4, DE_5, M(M_CTRL_CMDV),
- KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI,
- KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G,
- KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT,
- LT(SYMB,DE_LESS), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), LALT(KC_LSFT), LGUI(KC_LSFT),
- M(M_MEH_SH_ACUT), TG(2),
- KC_HOME,
- KC_BSPC,KC_DEL, LT(SMLY,KC_END),
- // right hand
- M(M_CTRL_CMDC), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS,
- KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UE,
- DE_H, DE_J, DE_K, DE_L, DE_OE, ALT_T(DE_AE),
- KC_RALT, DE_N, DE_M, DE_COMM,DE_DOT, CTL_T(DE_MINS), KC_RSFT,
- KC_LEFT, KC_UP,KC_DOWN,KC_RIGHT, LT(SYMB,DE_HASH),
- TG(4), ALL_T(DE_ACUT),
- KC_PGUP,
- KC_PGDN,KC_ENT, KC_SPC
- ),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | | L5 | F6 | F7 | F8 | F9 | F10 | F11 |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | < | > | ! | ? | | | | | \ | [ | ] | | | # | F12 |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | . | ! | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
- // left hand
- KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS,
- KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT,
- KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS,
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
- KC_TRNS,KC_TRNS,
- KC_TRNS,
- KC_TRNS,KC_DEL,KC_TRNS,
- // right hand
- M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12,
- DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS,
- KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST,
- KC_TRNS,KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | Mute | | | | | | EGOS |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | Lclk | MsUp | Rclk | WlUp | | | | | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | |MsLeft|MsDown|MsRght| WlDw |------| |------|VolUp | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | MClk | | | |VolDn | | Prev | Next | Up | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | Left | Down | Right |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | |Brwser|
- * | | |------| |------| |Back |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
- KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_WBAK
-),
-/* Keymap 3: Smiley layer
- * making it easier to type smileys... tipp: on osx you can easily replace those smileys with the UTF-8 character using
- * keyboard short commands...
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | :-) | ;-) | :-D | | | | |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | | | | | | | :-{ | :-( | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | |------| |------| <3 | :-* | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | | | | | | | | | | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | | | r|
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+--------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | | | |
- * `--------------------' `----------------------'
- */
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
- M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-//number pad
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
- KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS,
- KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
- KC_0,KC_DOT, KC_0, DE_EQL, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-
-/* Keymap 3: Egoshooter layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | L5 | | | | | | |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | | | | | | | | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | SHIFT | | | | | |------| |------| | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | | | | | | | | | | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | CTRL | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | F1 | F2 | | | |
- * ,------|------|------| |------+--------+------.
- * | | | F3 | | | | |
- * | SPACE| CTRL|------| |------| | |
- * | | | F4 | | | | |
- * `--------------------' `----------------------'
- */
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_F1, KC_F2,
- KC_F3,
- KC_SPC, KC_LCTL, KC_F4,
- // right hand
- M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
+[BASE]=KEYMAP(
+//left half
+ KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH),
+ KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI,
+ KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G,
+ KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT,
+ LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN,
+ M(M_MEH_SH_ACUT), TG(MDIA),
+ KC_HOME,
+ KC_BSPC, KC_DEL, LT(SMLY,KC_END),
+ //right half
+ M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS,
+ KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE,
+ DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE),
+ KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT,
+ KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS),
+ TG(NUMB), ALL_T(DE_OSX_ACUT),
+ KC_PGUP,
+ KC_PGDN, KC_ENT, KC_SPC),
+[SYMB]=KEYMAP(
+//left half
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
+ //right half
+ M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM,
+ DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH,
+ KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4),
+ DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_F13, KC_F12,
+ KC_F14,
+ KC_F15, KC_TRNS, KC_TRNS),
+[MDIA]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
+ KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK),
+[SMLY]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
+ M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[NUMB]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS,
+ KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
+ KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[EGOS]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F1, KC_F2,
+ KC_F3,
+ KC_SPC, KC_LCTL, KC_F4,
+ //right half
+ M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
};
const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols)
- [2] = ACTION_LAYER_TAP_TOGGLE(SMLY) // FN2 - Momentary Layer 2 (Smiley)
+
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
- static uint16_t start;
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
- }
- break;
- case 1:
- if (record->event.pressed) {
+static uint16_t start;
+switch(id) {
+case M_TOGGLE_5:
+//Macro: M_TOGGLE_5//-----------------------
+ if (record->event.pressed){
+ layer_state ^= (1<<5);
+ layer_state &= (1<<5);
+ }
+
+break;
+case M_CTRL_CMDC:
+//Macro: M_CTRL_CMDC//-----------------------
+if (record->event.pressed) {
start = timer_read();
- return MACRO(D(LCTRL), END);
+ return MACRO(D(LCTRL),END);
} else {
- if (timer_elapsed(start) > 150) {
- return MACRO(U(LCTRL), END);
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),END);
} else {
- return MACRO(U(LCTRL), D(LGUI), T(V), U(LGUI), END);
+ return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END);
}
}
- break;
- case 2:
- if (record->event.pressed) {
+
+break;
+case M_DE_OSX_PLUS_CTRLALT:
+//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
+if (record->event.pressed) {
start = timer_read();
- return MACRO(D(LCTRL),END);
+ return MACRO(D(LCTRL),D(LALT),END);
} else {
- if (timer_elapsed(start) > 150){
- return MACRO(U(LCTRL),END);
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LALT),END);
} else {
- return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END);
+ return MACRO(U(LCTRL),U(LALT),T(RBRC),END);
}
}
- break;
- case 3:
- if (record->event.pressed) {
+
+break;
+case SM_KISS:
+//Macro: SM_KISS//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END);
+ }
+
+break;
+case SM_FROWN:
+//Macro: SM_FROWN//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END);
+ }
+
+break;
+case SM_CRY:
+//Macro: SM_CRY//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
+ }
+
+break;
+case SM_SMILE:
+//Macro: SM_SMILE//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
+ }
+
+break;
+case SM_SMIRK:
+//Macro: SM_SMIRK//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
+ }
+
+break;
+case M_LGUI_SHFT:
+//Macro: M_LGUI_SHFT//-----------------------
+if (record->event.pressed){
+ return MACRO(D(LGUI),D(LSFT),END);
+ }else{
+ return MACRO(U(LGUI),U(LSFT),END);
+ }
+
+break;
+case SM_HEART:
+//Macro: SM_HEART//-----------------------
+if (record->event.pressed) {
+ return MACRO(T(GRV),T(3),END);
+ }
+
+break;
+case SM_LAUGH:
+//Macro: SM_LAUGH//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END);
+ }
+
+break;
+case M_CTL_SFT_HASH:
+//Macro: M_CTL_SFT_HASH//-----------------------
+if (record->event.pressed) {
start = timer_read();
- return MACRO(D(LCTRL),D(LSFT),D(LALT),END);
+ return MACRO(D(LCTRL),D(LSFT),END);
} else {
- if (timer_elapsed(start) > 150){
- return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LSFT),END);
} else {
- return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix
+ return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
}
}
- break;
- case M_DE_CIRC_CTRLCMD:
- if (record->event.pressed) {
+
+break;
+case SM_SAD:
+//Macro: SM_SAD//-----------------------
+if (record->event.pressed) {
+ return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
+ }
+
+break;
+case M_DE_OSX_CIRC_CTRLCMD:
+//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
+if (record->event.pressed) {
start = timer_read();
return MACRO(D(LCTRL),D(LGUI),END);
} else {
- if (timer_elapsed(start) > 150){
+ if (timer_elapsed(start) >150) {
return MACRO(U(LCTRL),U(LGUI),END);
} else {
- return MACRO(U(LCTRL),U(LGUI),T(NUBS),END);
+ return MACRO(U(LCTRL),U(LGUI),T(NUBS),END);
}
}
- break;
- case M_DE_PLUS_CTRLALT:
- if (record->event.pressed) {
+
+break;
+case M_CTRL_CMDV:
+//Macro: M_CTRL_CMDV//-----------------------
+if (record->event.pressed) {
start = timer_read();
- return MACRO(D(LCTRL),D(LALT),END);
+ return MACRO(D(LCTRL),END);
} else {
- if (timer_elapsed(start) > 150){
- return MACRO(U(LCTRL),U(LALT),END);
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),END);
} else {
- return MACRO(U(LCTRL),U(LALT),T(RBRC),END);
+ return MACRO(U(LCTRL),D(LGUI),T(V),U(LGUI),END);
}
}
- break;
- case SM_SMILE:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
- }
- break;
- case SM_SMIRK:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END);
- }
- break;
- case SM_CRY:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
- }
- break;
-
- case SM_SAD:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END);
- }
- break;
-
- case SM_HEART:
- if (record->event.pressed) {
- return MACRO(T(GRV),T(3),END);
- }
- break;
- case SM_LAUGH:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END);
- }
- break;
- case SM_KISS:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END);
- }
- break;
- case SM_FROWN:
- if (record->event.pressed) {
- return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END);
+break;
+case M_MEH_SH_ACUT:
+//Macro: M_MEH_SH_ACUT//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(D(LCTRL),D(LSFT),D(LALT),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
+ } else {
+ return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END);
+ }
}
- break;
- case M_TOGGLE_5:
- if (record->event.pressed){
- layer_state ^= (1<<5);
- layer_state &= (1<<5);
- }
- break;
- }
- return MACRO_NONE;
+
+break;
+}
+return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+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) {
- // TODO: Make this relevant to the ErgoDox EZ.
- case 1:
- ergodox_right_led_1_on();
- break;
- case 2:
- ergodox_right_led_2_on();
- break;
- case 3:
- ergodox_right_led_3_on();
- break;
- case 4:
- ergodox_right_led_1_on();
- ergodox_right_led_3_on();
- //ergodox_board_led_on();
- break;
- case 5:
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- ergodox_right_led_3_on();
- break;
- default:
- // none
- break;
- }
+ergodox_board_led_off();
+ergodox_right_led_1_off();
+ergodox_right_led_2_off();
+ergodox_right_led_3_off();
+switch (layer) {
+
+ case SYMB:
+ ergodox_right_led_1_on();
+
+
+ break;
+ case MDIA:
+
+ ergodox_right_led_2_on();
+
+ break;
+ case SMLY:
+
+
+ ergodox_right_led_3_on();
+ break;
+ case NUMB:
+ ergodox_right_led_1_on();
+
+ ergodox_right_led_3_on();
+ break;
+ case EGOS:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+ break;
+default:
+// none
+break;
+}
};
+
-:100000000C94F0030C9437040C9437040C943704CC\r
-:100010000C9437040C9437040C9437040C94370474\r
-:100020000C9437040C9437040C94370E0C94090F7D\r
-:100030000C9437040C9437040C9437040C94370454\r
-:100040000C9437040C947D230C9437040C943704DF\r
-:100050000C9437040C940F1D0C9437040C94370443\r
-:100060000C9437040C9437040C9437040C94370424\r
-:100070000C9437040C9437040C9437040C94370414\r
-:100080000C9437040C9437040C9437040C94370404\r
-:100090000C9437040C9437040C9437040C943704F4\r
-:1000A0000C9437040C9437040C943704470451041F\r
-:1000B00069048104C904CF04F004D504EB04E1040D\r
-:1000C000E604DB04B1049904F504760F980F8B1055\r
-:1000D000980F8B10DD0F00108B1055106810521305\r
-:1000E000521381138113C413FE130B160B1617142E\r
-:1000F0000B160C150C15DF150B160B16F61501E17A\r
-:100100000137023702E10138023801E201250225F8\r
-:1001100002E20001E10137023702E1013802380151\r
-:10012000E10130023002E10001E10137023702E172\r
-:100130000138023801E10107020702E1000135023E\r
-:1001400035012002200001E10137023702E10138C8\r
-:10015000023801E10125022502E10001E101360238\r
-:100160003602E10138023801E10125022502E100F1\r
-:1001700001E10136023602E10138023801E10126CF\r
-:10018000022602E10001E10137023702E1013802F3\r
-:100190003801E10126022602E10002E002E201301C\r
-:1001A00002300002E002E20001E001E20002E002AF\r
-:1001B000E3016402640002E002E30001E001E30005\r
-:1001C00002E002E2012E022E02E10002E002E10260\r
-:1001D000E20001E001E101E20002E001E3010602C8\r
-:1001E0000602E30002E00001E00002E001E3011981\r
-:1001F000021902E30002E00001E0000000F0A1F0BB\r
-:10020000A329002B00E200E100358100001E00144C\r
-:100210000004001D710D304D831F001A0016001BD5\r
-:10022000000C304C002000080007000600E1042A02\r
-:10023000002100150009001900E1084A00220017FA\r
-:10024000000A000500000003300130E3000000E276\r
-:1002500000000002540230E7000000E60000000445\r
-:100260005423001C000B00110000002E7F240018F6\r
-:10027000000D00100050004B0025000C000E003651\r
-:100280000052002C00260012000F003700510028F9\r
-:100290000027001300330038714F004E002D002F4F\r
-:1002A000003474E50031810000010001000100010B\r
-:1002B00000010000003A003500310001000100019A\r
-:1002C000003B0035022102350001004C003C001EBD\r
-:1002D0000224062202010001003D002D0224022416\r
-:1002E00004010001003E000100370011040000017C\r
-:1002F000000100010000000100000001000E3001BB\r
-:100300000000000100000001003F00240624022339\r
-:100310000200000100400022042502350001000116\r
-:100320000041002304260235023700010042002468\r
-:100330000425041F021E020100430031002604317F\r
-:1003400002010001004400450001002D02010000EF\r
-:100350000001000100010001000100000001000196\r
-:100360000001000100010001000100F400F200FBA7\r
-:1003700000010001000100F000F100FA000100019D\r
-:10038000000100F500F300FC00010001000100F98C\r
-:1003900000FA00F600000001000100010000000169\r
-:1003A0000000000100A800010000000100000001A1\r
-:1003B0000001000100A900AA0000000100010001E5\r
-:1003C000000100010001000100010001000100AC7A\r
-:1003D000000100B600010001000100AB0050000167\r
-:1003E00000010001000100520051000100AE0001B7\r
-:1003F00000010001004F00000001000100010001A8\r
-:1004000000010000000100010001000100010001E5\r
-:1004100000010001000100010001000100010001D4\r
-:1004200000010001000100010001000100010001C4\r
-:1004300000010001000100010001000100000001B5\r
-:100440000001000100000001000000010004300173\r
-:1004500000000001000000010005300630093001F5\r
-:1004600000000001000A300B3008300100010001DB\r
-:10047000000100073001000100010001000100013E\r
-:100480000001000100010001000100010001000164\r
-:100490000001000100010001000100010001000055\r
-:1004A0000001000100010001000100000001000145\r
-:1004B00000010001000100010001000100500001E5\r
-:1004C0000001000100010052005100010001000183\r
-:1004D00000010001004F00010001000100010001C6\r
-:1004E0000001000100000001000100010000000106\r
-:1004F00000000001000100010000000100000001F7\r
-:10050000003F00520051002302000001004000247F\r
-:100510000021001E00270001004100250022001FCD\r
-:1005200000370001004200260023002000270001C0\r
-:10053000004300300230002402270201004400453D\r
-:1005400000380001000100000001000100E100018D\r
-:1005500000E0000000010001000100010001003D79\r
-:100560000001000100010001000100E000010001A4\r
-:10057000000100010001002C000100010001000148\r
-:100580000001003C00010001000100010000003AF0\r
-:1005900000010001000000010000003B000E3001DE\r
-:1005A0000000000100000001000100010001000145\r
-:1005B0000000000100010001000100010001000134\r
-:1005C0000001000100010001000100010001000123\r
-:1005D0000001000100010001000100010001000113\r
-:1005E0000001000100010001000100010001000004\r
-:1005F0000016034500720067006F0044006F00782A\r
-:1006000000200045005A00000016034500720067F4\r
-:10061000006F0044006F007800200045005A000081\r
-:10062000000403090409026D00040100A0FA090492\r
-:1006300000000103010100092111010001223F0016\r
-:100640000705810308000A090401000103010200F3\r
-:10065000092111010001224D000705820308000A4B\r
-:100660000904020001030000000921110100012218\r
-:1006700036000705830308000A090403000103008C\r
-:10068000000009211101000122390007058403102F\r
-:1006900000011201100100000008EDFE0713010027\r
-:1006A0000102000105010906A101050719E029E77A\r
-:1006B0001500250195087501810205081901290514\r
-:1006C00095057501910295017503910105071900C2\r
-:1006D000297715002501957875018102C00501096A\r
-:1006E00080A101850216010026B7001A01002AB771\r
-:1006F00000751095018100C0050C0901A101850359\r
-:10070000160100269C021A01002A9C027510950110\r
-:100710008100C005010902A1010901A10005091913\r
-:1007200001290515002501950575018102950175C1\r
-:100730000381010501093009311581257F95027575\r
-:1007400008810609381581257F9501750881060500\r
-:100750000C0A38021581257F950175088106C0C0F5\r
-:1007600005010906A101050719E029E71500250182\r
-:100770009508750181029501750881010508190127\r
-:1007800029059505750191029501750391010507EC\r
-:10079000190029FF150025FF950675088100C00086\r
-:1007A00000000000000000000000010204060A0F23\r
-:1007B00017202C3A4A5D71879DB3C7DAE9F5FCFF33\r
-:1007C000FCF5E9DAC7B39D87715D4A3A2C20170F13\r
-:1007D0000A06040201000000000000000000000002\r
-:1007E00011241FBECFEFDAE0DEBFCDBF04B603FE9B\r
-:1007F00027C08091EF019091F001A091F101B0919B\r
-:10080000F2018730904BA740B04BD1F41092EF012A\r
-:100810001092F0011092F1011092F20114BE84B70F\r
-:10082000877F84BF0FB6F894A89580916000886197\r
-:1008300080936000109260000FBEE0E0FFE3099536\r
-:1008400011E0A0E0B1E0ECE9FAE402C005900D92FD\r
-:10085000A433B107D9F721E0A4E3B1E001C01D92B0\r
-:10086000AF3EB207E1F70E947E0B0C944C250C942E\r
-:100870000000462F50E04F30510508F0DEC0FA016D\r
-:10088000EA5AFF4FDC0112968C910C9401258823C3\r
-:1008900021F085EE0E94EC11D0C085EE0E94B412CA\r
-:1008A000CCC0882349F00E94D91C909335018093D5\r
-:1008B000340188EF91E008958091340190913501E1\r
-:1008C0000E94E51C873991050CF0A8C08AEE91E0E2\r
-:1008D0000895882349F00E94D91C90933501809394\r
-:1008E000340187EE91E008958091340190913501B3\r
-:1008F0000E94E51C873991050CF093C089ED91E0C9\r
-:100900000895882349F00E94D91C90933501809363\r
-:10091000340182ED91E00895809134019091350188\r
-:100920000E94E51C873991050CF07EC080EC91E0B7\r
-:100930000895882349F00E94D91C90933501809333\r
-:1009400034018BEB91E00895809134019091350151\r
-:100950000E94E51C873991050CF069C08DEA91E091\r
-:100960000895882349F00E94D91C90933501809303\r
-:10097000340188EA91E00895809134019091350125\r
-:100980000E94E51C873991050CF054C08AE991E07A\r
-:100990000895882309F451C085E891E008958823DB\r
-:1009A00009F44BC080E791E00895882309F445C01D\r
-:1009B0008BE591E00895882309F43FC086E491E037\r
-:1009C00008958823D1F18DE391E008958823A9F15A\r
-:1009D00088E291E00895882381F183E191E0089510\r
-:1009E000882359F18EEF90E00895882331F18091AA\r
-:1009F000B3019091B401A091B501B091B60120E28C\r
-:100A0000822780729927AA27BB278093B3019093EE\r
-:100A1000B401A093B501B093B6010FC085EF91E08A\r
-:100A2000089584EE91E008958BEC91E0089586EBB3\r
-:100A300091E0089583EA91E0089580E090E00895C0\r
-:100A400008956091B3017091B4018091B5019091C6\r
-:100A5000B6010E943C1C56985E9825982D982698C1\r
-:100A60002E9827982F988330C1F028F4813041F0D8\r
-:100A7000823049F00895843049F0853051F008956E\r
-:100A8000259A2D9A0895269A2E9A0895259A2D9A98\r
-:100A900004C0259A2D9A269A2E9A279A2F9A08955D\r
-:100AA0000C94210556985E9825982D9826982E9896\r
-:100AB00027982F988FEF90E090938900809388007B\r
-:100AC00090938B0080938A0090938D0080938C008C\r
-:100AD000259A2D9A2FEF80E792E021508040904098\r
-:100AE000E1F700C00000269A2E9A2FEF80E792E0EF\r
-:100AF000215080409040E1F700C00000279A2F9AD3\r
-:100B00002FEF80E792E0215080409040E1F700C055\r
-:100B1000000025982D982FEF80E792E0215080402B\r
-:100B20009040E1F700C0000026982E982FEF80E754\r
-:100B300092E0215080409040E1F700C000002798EB\r
-:100B40002F9856985E9825982D9826982E98279835\r
-:100B50002F98089589EA8093800089E0809381002E\r
-:100B600024982C983F988AB18F748AB96E98479AC6\r
-:100B70008BB1806B8BB9769A0E9452050C9420053C\r
-:100B800080E2809300018091360181110EC00E94A5\r
-:100B90000F0681E0809336012FEF83ED90E3215023\r
-:100BA00080409040E1F700C0000080E40E941506FC\r
-:100BB0008093000181112EC00E943F0680930001A6\r
-:100BC000811128C00E943F0680930001811122C03C\r
-:100BD0008FE30E943F068093000181111BC00E9499\r
-:100BE000370680E40E94150680930001811112C02F\r
-:100BF0008CE00E943F068093000181110BC00E948F\r
-:100C00003F0680930001811105C08FE30E943F06DB\r
-:100C1000809300010E943706809100010895109290\r
-:100C2000B9008AE08093B800089594EA9093BC00DC\r
-:100C30009091BC0097FFFCCF9091B900987F9830BD\r
-:100C400021F0903111F081E008958093BB0084E899\r
-:100C50008093BC008091BC0087FFFCCF8091B900DD\r
-:100C6000887F883111F0803471F780E0089584E93D\r
-:100C70008093BC008091BC0084FDFCCF08958093DC\r
-:100C8000BB0084E88093BC008091BC0087FFFCCF50\r
-:100C90009091B900987F81E0983209F480E008953E\r
-:100CA00084E88093BC008091BC0087FFFCCF8091DA\r
-:100CB000BB00089580910001811115C080E40E945D\r
-:100CC00015068093000181110CC082E10E943F064D\r
-:100CD00080930001811105C08FEF0E943F06809331\r
-:100CE00000010E94370684B1807F84B985B1807F7E\r
-:100CF00085B98AB1837F8AB98BB1837F8BB93E98DE\r
-:100D0000469808950E94C005809300010E945A06EB\r
-:100D100080B38C7080BB81B3836F81BBE6E4F1E06C\r
-:100D2000A8E3B1E011921D9281E0E435F807D1F714\r
-:100D30000C94AA059F92AF92BF92CF92DF92EF924E\r
-:100D4000FF920F931F93CF93DF938091000188232D\r
-:100D500079F0809137018F5F80933701811108C04E\r
-:100D60000E94C00580930001811102C00E945205BB\r
-:100D700088E3E82E81E0F82E8701C0E0D0E0BB24B4\r
-:100D8000B39492E0A92ECC24C394D12CC730D105C2\r
-:100D900000F580910001811164C080E40E94150675\r
-:100DA00080930001811112C082E10E943F0680936E\r
-:100DB000000181110BC0C6010C2E01C0880F0A94DE\r
-:100DC000EAF780950E943F06809300010E94370653\r
-:100DD00048C0CA30A1F028F4C83059F0C93061F0D9\r
-:100DE00005C0CC3089F070F0CD3089F0209A289879\r
-:100DF00010C0219A29980DC0229A2A980AC0239AD5\r
-:100E00002B9807C0529A01C0539A5B9802C03E9A31\r
-:100E10004698E0EAEA95F1F78FB181708B257999D0\r
-:100E200002C032E001C030E0832B7C9902C034E084\r
-:100E300001C030E0832B7D9902C028E001C020E092\r
-:100E4000822B7E9902C090E101C090E0892B9FB176\r
-:100E50009095991F9927991F9295990F907E892BAC\r
-:100E60000FC08091000181114AC080E40E941506E4\r
-:100E700080930001882381F1912C0E943706892DEF\r
-:100E8000D8019C91981719F08C93A09201010E94AF\r
-:100E90005A0621960F5F1F4FCE30D10509F076CF4D\r
-:100EA00080910101882369F1815080930101882399\r
-:100EB00039F0EFE9FFE03197F1F700C0000021C001\r
-:100EC000E6E4F1E0D7018D917D018193B6E4EB1664\r
-:100ED000B1E0FB06B9F715C083E10E943F0680939D\r
-:100EE00000018111C9CF81E40E94150680930001A1\r
-:100EF0008111C2CF0E945006982E9094BECF80E000\r
-:100F0000BFCF0E94500581E0DF91CF911F910F91DB\r
-:100F1000FF90EF90DF90CF90BF90AF909F9008959B\r
-:100F2000E82FF0E0EA5BFE4F8081089508958B3B47\r
-:100F3000910580F4883A910548F5853A9105D8F4F1\r
-:100F40008430910508F0B2C0019709F06EC081E0CD\r
-:100F500090E00895803E910508F467C0883E9105B1\r
-:100F600008F4A4C09C01205F31092031310508F04C\r
-:100F70005CC090650895853A910509F459C0863A98\r
-:100F8000910509F058C082E890E40895883A9105E7\r
-:100F900009F454C0893A910509F453C08A3A91057D\r
-:100FA00009F452C08B3A910509F451C08C3A91056D\r
-:100FB00009F450C08D3A910509F44FC0803B91056A\r
-:100FC00009F44EC08E3A910509F44DC08F3A91054F\r
-:100FD00009F44CC0813B910509F44BC0823B91055B\r
-:100FE00009F44AC0833B910509F449C0843B91054B\r
-:100FF00009F448C0853B910509F447C0863B91053B\r
-:1010000009F446C0873B910509F445C0883B91052A\r
-:1010100009F444C0893B910509F443C08A3B91051A\r
-:1010200009F442C080E094E4089580E090E00895DF\r
-:1010300081E890E4089583E890E4089582EE94E4D2\r
-:10104000089589EE94E408958AEE94E4089585EB7A\r
-:1010500094E4089586EB94E4089587EB94E408956E\r
-:101060008CEC94E408958DEC94E4089583E895E481\r
-:1010700008958AE895E4089582E995E4089584E95D\r
-:1010800095E4089581E296E4089583E296E4089554\r
-:1010900084E296E4089585E296E4089586E296E473\r
-:1010A000089587E296E408958AE296E40895089503\r
-:1010B00024E5829FC0011124FC0126E0729FE00D0F\r
-:1010C000F11D1124E60FF11DEE0FFF1FEF5FFD4F25\r
-:1010D000859194910895880F991FFC01E558FF4F61\r
-:1010E000859194910895880F991FFC01E550FE4F5A\r
-:1010F00085919491089524E5829FC0011124FC01FB\r
-:1011000046E0749FE00DF11D1124E60FF11DEE0F76\r
-:10111000FF1FEF5FFD4F859194919C013A9521153A\r
-:101120004FE1340708F425C13F512115304120F427\r
-:101130009F700E94730808959C013053211530411F\r
-:1011400018F49927906C0895811520E5920769F4A9\r
-:101150000E942D164FEF84E39CE041508040904068\r
-:10116000E1F700C000000C94341D813020E59207A7\r
-:1011700031F48091CE0181608093CE0108959C016D\r
-:1011800030552115304108F05CC0292F33272F70CE\r
-:10119000332721303105E9F4AC0164E0440F551FD9\r
-:1011A0006A95E1F744275370BC016370772702C04A\r
-:1011B000220F331F6A95E2F73C68242B352B73E02E\r
-:1011C000880F991F7A95E1F780769927822B932BC8\r
-:1011D00008952230310529F4982F8827816F906A6D\r
-:1011E000089523303105A1F4AC0133E0440F551FBD\r
-:1011F0003A95E1F7407E57708370992721E030E0FF\r
-:1012000002C0220F331F8A95E2F7C9019C6816C0FD\r
-:101210002430310531F5AC0123E0440F551F2A95E8\r
-:10122000E1F7407E57708370992721E030E002C0DB\r
-:10123000220F331F8A95E2F7C9019A68842B952BF8\r
-:1012400008959C0130572115304118F49F70906229\r
-:1012500008959C0130582115304118F49F70906A10\r
-:101260000895803E9105E0F4803C910558F5813366\r
-:10127000910509F46FC048F48932910509F463C0FF\r
-:101280008A32910509F46DC072C089339105E9F085\r
-:1012900082389105D1F08533910509F44DC067C0BE\r
-:1012A000833E910581F138F4803E9105B9F0823E8C\r
-:1012B0009105D9F05CC0863E910561F1873E9105AC\r
-:1012C000A1F155C00E946B0808952091E00120FD16\r
-:1012D00002C021FF4CC080EE90E049C08091E00147\r
-:1012E00080FFF9CF89E390E042C08091E00182FF66\r
-:1012F0000EC08091E00184FF03C080E090E037C021\r
-:1013000083EE90E034C08091E00182FFF2CF82EE64\r
-:1013100090E02DC08091E00183FF0BC08091E0013F\r
-:1013200084FDEBCF87EE90E022C08091E00183FF47\r
-:10133000F5CF86EE90E01BC08091E00185FF07C0ED\r
-:1013400089E290E014C08091E00185FFF9CF85E348\r
-:1013500090E00DC08091E00186FF07C08AE290E036\r
-:1013600006C08091E00186FFF9CF81E390E00E9402\r
-:10137000970708950895809164010895CF93DF93AE\r
-:1013800000D01F92CDB7DEB79C018091E60184307A\r
-:1013900019F593E099833B832A839093E9008FEFBB\r
-:1013A0009091E800815095FD06C095ED9A95F1F772\r
-:1013B00000008111F5CF8091E80085FF0DC040E06D\r
-:1013C00050E063E070E0CE0101960E942B0C80910A\r
-:1013D000E8008E778093E8000F900F900F90DF91D8\r
-:1013E000CF910895CF93DF9300D01F92CDB7DEB792\r
-:1013F0002091E601243021F522E029839B838A8312\r
-:1014000083E08093E9008FEF9091E800815095FD93\r
-:1014100006C095ED9A95F1F700008111F5CF809106\r
-:10142000E80085FF0DC040E050E063E070E0CE01D1\r
-:1014300001960E942B0C8091E8008E778093E80043\r
-:101440000F900F900F90DF91CF9108959C018091A4\r
-:10145000E6018430F9F482E08093E9009FEF809107\r
-:10146000E800915085FD06C085ED8A95F1F70000F2\r
-:101470009111F5CF8091E80085FF0CC040E050E06D\r
-:1014800065E070E0C9010E942B0C8091E8008E7726\r
-:101490008093E8000895CF93DF93EC018091E601FB\r
-:1014A000843009F046C090910C019923D9F09091B5\r
-:1014B0000D019923B9F08093E9008FEF9091E80036\r
-:1014C000815095FD06C095E19A95F1F700008111D4\r
-:1014D000F5CF8091E80085FF2CC040E050E060E14E\r
-:1014E00070E017C081E08093E9008FEF9091E800F1\r
-:1014F000815095FD06C095ED9A95F1F70000811198\r
-:10150000F5CF8091E80085FF14C040E050E068E02E\r
-:1015100070E0CE010E942B0C8091E8008E778093C2\r
-:10152000E80080E1FE01A4E5B1E001900D928A950A\r
-:10153000E1F7DF91CF9108958091E501811109C014\r
-:101540000E94BC0D0E94190E8091E200846080937D\r
-:10155000E20008951092E501089508950C946A231D\r
-:101560000E94CA1C0E9470230E94C4100C94BA09E5\r
-:1015700042E061EC81E00E94350D42E061EC82E0E6\r
-:101580000E94350D42E061EC83E00E94350D42E19E\r
-:1015900061EC84E00C94350D8091E801833009F40E\r
-:1015A00055C030F4813071F0823009F48EC0089556\r
-:1015B0008A3009F47AC08B3009F460C0893009F0B0\r
-:1015C0009CC020C08091E701813A09F096C08091CB\r
-:1015D000E800877F8093E8008091EB019091EC0117\r
-:1015E000892B21F460E184E591E003C060E080E0B4\r
-:1015F00090E070E00E94760C8091E8008B778093F9\r
-:10160000E80008958091E701813209F076C0809169\r
-:10161000EB019091EC01009719F0039709F06DC070\r
-:101620008091E800877F8093E8008091E80082FD48\r
-:1016300005C08091E6018111F8CF5FC08091F10073\r
-:10164000809364018091E8008B7753C08091E7011B\r
-:10165000813A09F052C08091EB019091EC01892B05\r
-:1016600009F04BC08091E800877F8093E80080916B\r
-:10167000E80080FFFCCF80910C0136C08091E7012B\r
-:101680008132D9F58091EB019091EC01892BA9F57C\r
-:101690008091E800877F8093E8000E946A0D809126\r
-:1016A000E90180930C010C942D168091E7018132A1\r
-:1016B00021F58091E800877F8093E8000E946A0D01\r
-:1016C0008091EA018093650108958091E701813A54\r
-:1016D000A1F48091E800877F8093E8008091E80082\r
-:1016E00080FFFCCF809165018093F1008091E8003C\r
-:1016F0008E778093E8000C946A0D089584B7877FF5\r
-:1017000084BF0FB6F894A89580916000886180939B\r
-:101710006000109260000FBE90E080E80FB6F89471\r
-:1017200080936100909361000FBE0E9413110E948C\r
-:10173000BC0D0E94190E8091E20084608093E2004B\r
-:1017400078940E94A4100E94151182E091E00E94FA\r
-:10175000BF100E9458238091E601853069F40E94F1\r
-:101760008C1C8091E4018823B1F30E94B61C88236D\r
-:1017700091F30E94150CEFCF0E941B11ECCF292F83\r
-:10178000332723303105C9F060F42130310581F071\r
-:101790002230310509F041C08DE690E025E236E0C7\r
-:1017A00040C021323105E1F02232310531F135C03E\r
-:1017B00082E190E022E936E034C09927813091053A\r
-:1017C00049F028F0029749F5E1EFF5E005C0E1E2C4\r
-:1017D000F6E002C0E9E0F6E0849190E09F0121C0CC\r
-:1017E0006430D8F4E62FF0E0EE0FFF1FEE5DFE4F01\r
-:1017F0002081318189E090E014C0643070F470E0A1\r
-:10180000FB01EE0FFF1FE65EFE4F20813181FB01E1\r
-:10181000EA5EFE4F808190E004C080E090E020E02E\r
-:1018200030E0FA0131832083089580E189BD82E1AF\r
-:1018300089BD09B400FEFDCF8091D8008F7D8093D3\r
-:10184000D8008091E00082608093E0008091E00009\r
-:1018500081FDFCCF0895CF92DF92EF92FF920F931C\r
-:101860001F93CF93DF93EC018B016A010E94890DD6\r
-:10187000811133C0C114D10439F0F6018081918106\r
-:10188000081B190BC80FD91FE12CF12C01151105EC\r
-:1018900019F18091E80085FD16C08091E8008E77EF\r
-:1018A0008093E800C114D10449F0F6018081918150\r
-:1018B000E80EF91EF182E08285E00FC00E94890DDA\r
-:1018C000882321F30AC089918093F1000150110906\r
-:1018D000FFEFEF1AFF0ADACF80E0DF91CF911F917F\r
-:1018E0000F91FF90EF90DF90CF9008952091ED0140\r
-:1018F0003091EE012617370748F06115710539F46C\r
-:101900002091E8002E772093E80001C0B901FC0186\r
-:1019100020E06115710579F18091E6018823F1F1EC\r
-:101920008530F1F18091E80083FD3CC08091E800B2\r
-:1019300082FD2EC08091E80080FFEBCF2091F30064\r
-:101940008091F20090E0922B6115710551F0883082\r
-:10195000910538F421912093F100615071090196AD\r
-:10196000F3CF21E0089709F020E08091E8008E771E\r
-:101970008093E800CECF2111CFCF0AC08091E6013D\r
-:10198000882361F0853061F08091E80083FD0AC012\r
-:101990008091E80082FFF2CF80E0089582E0089510\r
-:1019A00083E0089581E008952091ED013091EE01EA\r
-:1019B0002617370748F06115710539F42091E800C2\r
-:1019C0002E772093E80001C0B901FC0120E06115E9\r
-:1019D000710591F18091E601882309F440C08530BA\r
-:1019E00009F43FC08091E80083FD3DC08091E8008C\r
-:1019F00082FD2FC08091E80080FFE9CF2091F300A5\r
-:101A00008091F20090E0922B6115710559F08830B9\r
-:101A1000910540F424912093F100319661507109B1\r
-:101A20000196F2CF21E0089709F020E08091E800CC\r
-:101A30008E778093E800CBCF2111CCCF0AC0809164\r
-:101A4000E601882361F0853061F08091E80083FD34\r
-:101A50000AC08091E80082FFF2CF80E0089582E022\r
-:101A6000089583E0089581E00895982F973068F5F0\r
-:101A70009093E900981739F07091EC002091ED00F7\r
-:101A80005091F00003C0242F762F50E021FD02C0BA\r
-:101A90009F5FECCF3091EB003E7F3093EB003091B5\r
-:101AA000ED003D7F3093ED003091EB0031603093DD\r
-:101AB000EB007093EC002093ED005093F000209128\r
-:101AC000EE0027FDE5CF80E008958F708093E90058\r
-:101AD00081E008958091E70187FF11C08091E800BF\r
-:101AE00082FD05C08091E6018111F8CF11C080917F\r
-:101AF000E8008B770BC08091E601882349F0809144\r
-:101B0000E80080FFF8CF8091E8008E778093E800AE\r
-:101B100008952091E4003091E50095E64091EC00B5\r
-:101B2000842F817040FF23C08091E80080FD1DC09C\r
-:101B30008091E601882399F0853099F08091EB003F\r
-:101B400085FD11C04091E4005091E5002417350750\r
-:101B500029F3915011F09A01E1CF84E0089582E0D9\r
-:101B6000089583E0089581E0089580E0089540910C\r
-:101B7000E80042FFDDCF08950E942A0E0E94320E37\r
-:101B8000E0EEF0E0808181608083E8EDF0E080812C\r
-:101B90008F77808319BCA7EDB0E08C918E7F8C93FA\r
-:101BA00080818F7E80831092E50108950F931F93AB\r
-:101BB000CF93DF930E942A0E0E94320EC8EDD0E030\r
-:101BC00088818F77888388818068888388818F7DEA\r
-:101BD000888319BC1092E6011092E2011092E40190\r
-:101BE0001092E30100EE10E0F80180818B7F80838A\r
-:101BF00088818160888342E060E080E00E94350D4A\r
-:101C0000E1EEF0E080818E7F8083E2EEF0E0808183\r
-:101C100081608083808188608083F80180818E7FED\r
-:101C20008083888180618883DF91CF911F910F919C\r
-:101C30000895E8EDF0E080818F7E8083E7EDF0E0AD\r
-:101C400080818160808384E082BF81E08093E501B0\r
-:101C50000C94D60DE8EDF0E080818E7F80831092A9\r
-:101C6000E20008951092DA001092E10008951F92A8\r
-:101C70000F920FB60F9211242F933F934F935F93C0\r
-:101C80006F937F938F939F93AF93BF93EF93FF9344\r
-:101C90008091E10082FF0BC08091E20082FF07C0CB\r
-:101CA0008091E1008B7F8093E1000E94A3108091DE\r
-:101CB000DA0080FF1FC08091D80080FF1BC0809198\r
-:101CC000DA008E7F8093DA008091D90080FF0DC00A\r
-:101CD00080E189BD82E189BD09B400FEFDCF81E0CC\r
-:101CE0008093E6010E949C0A05C019BC1092E6018F\r
-:101CF0000E94AA0A8091E10080FF19C08091E20051\r
-:101D000080FF15C08091E2008E7F8093E200809179\r
-:101D1000E20080618093E2008091D800806280932D\r
-:101D2000D80019BC85E08093E6010E94AE0A80913C\r
-:101D3000E10084FF30C08091E20084FF2CC080E18C\r
-:101D400089BD82E189BD09B400FEFDCF8091D80034\r
-:101D50008F7D8093D8008091E1008F7E8093E10099\r
-:101D60008091E2008F7E8093E2008091E2008160AA\r
-:101D70008093E2008091E201882311F084E007C0A3\r
-:101D80008091E30087FD02C081E001C083E0809381\r
-:101D9000E6010E94B00A8091E10083FF29C0809192\r
-:101DA000E20083FF25C08091E100877F8093E100FE\r
-:101DB00082E08093E6011092E2018091E1008E7F43\r
-:101DC0008093E1008091E2008E7F8093E200809119\r
-:101DD000E20080618093E20042E060E080E00E94E7\r
-:101DE000350D8091F00088608093F0000E94AD0A6C\r
-:101DF000FF91EF91BF91AF919F918F917F916F91E3\r
-:101E00005F914F913F912F910F900FBE0F901F90B8\r
-:101E100018951F920F920FB60F9211242F933F9394\r
-:101E20004F935F936F937F938F939F93AF93BF93E2\r
-:101E3000CF93DF93EF93FF93C091E900CF70809130\r
-:101E4000EC00D82FD17080FDD0E81092E90080918D\r
-:101E5000F000877F8093F00078940E944D0F1092DD\r
-:101E6000E9008091F00088608093F000CD2BCF7066\r
-:101E7000C093E900FF91EF91DF91CF91BF91AF91B6\r
-:101E80009F918F917F916F915F914F913F912F9192\r
-:101E90000F900FBE0F901F9018951F93CF93DF9355\r
-:101EA000CDB7DEB7AA970FB6F894DEBF0FBECDBF91\r
-:101EB000E7EEF1E08091F100819321E0EF3EF2073F\r
-:101EC000C9F70E94CC0A8091E80083FF24C1809169\r
-:101ED000E7019091E801492F50E04A30510508F0A0\r
-:101EE0001AC1FA01EB59FF4F0C940125803881F09B\r
-:101EF000823809F010C18091EB018F708093E90066\r
-:101F00008091EB0085FB882780F91092E90006C0DC\r
-:101F10008091E3019091E401911182609091E80039\r
-:101F2000977F9093E8008093F1001092F100C8C071\r
-:101F3000282F2D7F09F0EFC0882319F0823061F03F\r
-:101F4000EAC08091E901813009F0E5C0933009F0E1\r
-:101F500080E08093E4012BC08091E901811127C0CA\r
-:101F60008091EB018F7009F4D6C08093E900209135\r
-:101F7000EB0020FF1CC0933021F48091EB008062C5\r
-:101F800014C09091EB0090619093EB0021E030E061\r
-:101F9000A90102C0440F551F8A95E2F74093EA0059\r
-:101FA0001092EA008091EB0088608093EB00109221\r
-:101FB000E9008091E800877F86C08111ACC0109154\r
-:101FC000E9011F778091E3008078812B8093E30003\r
-:101FD0008091E800877F8093E8000E946A0D8091DD\r
-:101FE000E80080FFFCCF8091E30080688093E300ED\r
-:101FF000111102C082E001C083E08093E6018BC032\r
-:102000008058823008F087C08091E9019091EA0100\r
-:102010008C3D53E0950779F583E08A838AE28983D2\r
-:102020004FB7F894DE01139620E03EE051E2E32F33\r
-:10203000F0E050935700E49120FF03C0E295EF7069\r
-:102040003F5FEF708E2F90E0EA3010F0C79601C02E\r
-:10205000C0968D939D932F5F243149F74FBF809198\r
-:10206000E800877F8093E8006AE270E0CE01019685\r
-:102070000E94760C14C0AE014F5F5F4F6091EB0180\r
-:102080000E94BF0BBC01892B09F445C09091E80068\r
-:10209000977F9093E80089819A810E94D40C809167\r
-:1020A000E8008B778093E80036C08038A1F58091F6\r
-:1020B000E800877F8093E8008091E2018093F1003F\r
-:1020C0008091E8008E778093E8000E946A0D23C01B\r
-:1020D000811121C08091E9019091EA01992702972D\r
-:1020E000D4F48091E800877F8093E8008091E90133\r
-:1020F0008093E2010E946A0D8091E201811106C085\r
-:102100008091E30087FD02C081E001C084E08093FC\r
-:10211000E6010E94B80A8091E80083FF0AC080911E\r
-:10212000E800877F8093E8008091EB0080628093D5\r
-:10213000EB00AA960FB6F894DEBF0FBECDBFDF91BD\r
-:10214000CF911F9108950895CF938091E601882340\r
-:10215000A1F0C091E900CF709091EC00892F8170BF\r
-:1021600090FD80E8C82B1092E9008091E80083FD83\r
-:102170000E944D0FCF70C093E900CF9108959093C6\r
-:102180006B0180936A010895E0916A01F0916B01FF\r
-:10219000309721F00190F081E02D099480E00895BE\r
-:1021A000E0916A01F0916B01309721F00280F38198\r
-:1021B000E02D09940895E0916A01F0916B01309748\r
-:1021C00021F00480F581E02D0994089520916801A3\r
-:1021D000309169012817390771F090936901809354\r
-:1021E0006801E0916A01F0916B01309721F006805F\r
-:1021F000F781E02D099408952091660130916701DF\r
-:102200002817390771F09093670180936601E09178\r
-:102210006A01F0916B01309721F00084F185E02D87\r
-:102220000994089508950C9412110E94D01C0E94E4\r
-:1022300082060C94961DCF92DF92EF92FF920F933D\r
-:102240001F93CF93DF93CDB7DEB72B970FB6F894DC\r
-:10225000DEBF0FBECDBF0E949A068DE6C82E81E07C\r
-:10226000D82E00E010E0E02E802F0E949007F601AB\r
-:1022700041916F01F82EF426B1F40F5F1F4F0E301D\r
-:10228000110589F78FEF89838A831B820E94D91CED\r
-:102290008160782F9D838C8349815A816B818D81E8\r
-:1022A0000E94BE1140C09091CE0191FF04C08B8767\r
-:1022B0000E9496078B8520E030E04F2D50E0922F52\r
-:1022C000BA01022E02C0759567950A94E2F760FF85\r
-:1022D00024C02E83EF8221E030E0690102C0CC0CE3\r
-:1022E000DD1C9A95E2F790E08C219D21892B09F461\r
-:1022F00020E028870E94D91C8160782F9A878987DF\r
-:102300004E815F8168858A850E94BE11F801E3597C\r
-:10231000FE4F8081C826C08206C02F5F3F4F263007\r
-:10232000310569F6AACF0E947D200E94C4109091C9\r
-:102330006C018917A1F00E94C41080936C012B9648\r
-:102340000FB6F894DEBF0FBECDBFDF91CF911F91C6\r
-:102350000F91FF90EF90DF90CF900C94BA092B96DD\r
-:102360000FB6F894DEBF0FBECDBFDF91CF911F91A6\r
-:102370000F91FF90EF90DF90CF900895CF93DF9370\r
-:10238000CDB7DEB72B970FB6F894DEBF0FBECDBF2B\r
-:102390004F83588769877A878B87DE01119686E09D\r
-:1023A000FD0111928A95E9F785E0FE0137960190CB\r
-:1023B0000D928A95E1F749815A816B817C818D81EB\r
-:1023C0009E810E94C1182B960FB6F894DEBF0FBEF7\r
-:1023D000CDBFDF91CF910895CF93C82F882309F403\r
-:1023E000C1C0823859F40E94C41081FDBBC089E38A\r
-:1023F0000E945E1B0E94161C89E30CC0833879F48E\r
-:102400000E94C41080FDAEC083E50E945E1B0E9446\r
-:10241000161C83E50E949D1BCF910C94161C8438DA\r
-:1024200059F40E94C41082FD9DC087E40E945E1B87\r
-:102430000E94161C87E4EECF8CEF8C0F813A48F493\r
-:102440008C2F0E94BD2281118DC08C2F0E945E1B9B\r
-:10245000E3CF80E28C0F883048F4C77081E001C080\r
-:10246000880FCA95EAF70E94DF1BD6CF8BE58C0F49\r
-:10247000833078F4C53A29F0C63A31F083E890E029\r
-:1024800005C081E890E002C082E890E0CF910C9412\r
-:10249000E61088E58C0F833108F064C0C83A39F142\r
-:1024A000C93A41F1CA3A49F1CB3A51F1CC3A59F122\r
-:1024B000CD3A61F1C03B69F1CE3A71F1CF3A79F191\r
-:1024C000C13B81F1C23B89F1C33B91F1C43B99F11E\r
-:1024D000C53BA1F1C63BA9F1C73BB1F1C83BB9F17E\r
-:1024E000C93BC1F1CA3BC9F180E090E038C082EE3F\r
-:1024F00090E035C089EE90E032C08AEE90E02FC0C7\r
-:1025000085EB90E02CC086EB90E029C087EB90E053\r
-:1025100026C08CEC90E023C08DEC90E020C083E8D6\r
-:1025200091E01DC08AE891E01AC082E991E017C0ED\r
-:1025300084E991E014C081E292E011C083E292E06C\r
-:102540000EC084E292E00BC085E292E008C086E211\r
-:1025500092E005C087E292E002C08AE292E0CF9169\r
-:102560000C94FC10CF910895882309F44BC0823855\r
-:1025700059F40E94C41081FF45C089E30E945E1B8C\r
-:102580000E94161C89E30CC0833871F40E94C410A9\r
-:1025900080FF38C083E50E945E1B0E94161C83E505\r
-:1025A0000E949D1B0C94161C843859F40E94C41080\r
-:1025B00082FF28C087E40E945E1B0E94161C87E4ED\r
-:1025C000EFCF9CEF980F913A58F390E2980F983024\r
-:1025D00050F4877091E001C0990F8A95EAF7892F2E\r
-:1025E0000E94E51BDFCF9BE5980F933020F480E03D\r
-:1025F00090E00C94E610885A833120F480E090E05B\r
-:102600000C94FC100895882321F00E94DF1B0C9489\r
-:10261000161C0895882321F00E94E51B0C94161CBB\r
-:102620000895BF92CF92DF92EF92FF920F931F9384\r
-:10263000CF93DF9300D000D000D0CDB7DEB77C01C0\r
-:1026400085E0F701DE01119601900D928A95E1F780\r
-:10265000F70183819481892B09F4DDC29081818106\r
-:102660008F3F19F49F3F09F4D6C2F70102812581FB\r
-:1026700022952F7099838A8389819A812E830E9463\r
-:102680001D1B182FB92E0E941C1B0E94E319EB2D55\r
-:10269000E295EF704E2F50E0FA01E159FF4F2E8185\r
-:1026A0000C9401258B2D807F9B2D9F70F92E882304\r
-:1026B00019F0F29480EFF822002349F0FF2009F48A\r
-:1026C00057C28F2D0E94EF1B0E94161C51C2812FF2\r
-:1026D0000E94B412FF2009F49EC28F2D0E94F51BA8\r
-:1026E00026960FB6F894DEBF0FBECDBFDF91CF9117\r
-:1026F0001F910F91FF90EF90DF90CF90BF900C94BF\r
-:10270000161C3B2D307F8B2D8F70303211F082954F\r
-:10271000807F112319F0113021F12CC00023B9F072\r
-:10272000222309F490C1213009F08DC126960FB6FD\r
-:10273000F894DEBF0FBECDBFDF91CF911F910F91F7\r
-:10274000FF90EF90DF90CF90BF900C94FF1B22235F\r
-:1027500019F0213009F45FC28E830E94021C8E8121\r
-:1027600086C1002321F0223008F055C26CC121112E\r
-:1027700052C27DC1002321F0222309F464C1F8C1B3\r
-:10278000222309F474C109C28B2D86958695837026\r
-:1027900019F08130D1F03FC2002321F0812F9B2D11\r
-:1027A000937002C080E090E026960FB6F894DEBFEA\r
-:1027B0000FBECDBFDF91CF911F910F91FF90EF9092\r
-:1027C000DF90CF90BF900C94E610002321F0812F72\r
-:1027D0009B2D937002C080E090E026960FB6F8948F\r
-:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044\r
-:1027F000EF90DF90CF90BF900C94FC10812F0023BE\r
-:1028000019F00E94851F02C00E94ED1F26960FB688\r
-:10281000F894DEBF0FBECDBFDF91CF911F910F9116\r
-:10282000FF90EF90DF90CF90BF900C9472208B2D93\r
-:10283000837009F075C00111EEC1812F82958695D4\r
-:102840008770880F880F912F9F70C92ED12CE12C93\r
-:10285000F12C082E04C0CC0CDD1CEE1CFF1C0A94CD\r
-:10286000D2F714FF12C00FE010E020E030E004C007\r
-:10287000000F111F221F331F8A95D2F7C901B8011B\r
-:10288000609570958095909503C060E070E0CB01F5\r
-:102890004B2D4695469543704230C1F060F56C294A\r
-:1028A0007D298E299F29413051F126960FB6F89443\r
-:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073\r
-:1028C000EF90DF90CF90BF900C940A1A6C297D296D\r
-:1028D0008E299F2926960FB6F894DEBF0FBECDBF76\r
-:1028E000DF91CF911F910F91FF90EF90DF90CF90EC\r
-:1028F000BF900C94261A0E940A1AC701B6012696A8\r
-:102900000FB6F894DEBF0FBECDBFDF91CF911F9100\r
-:102910000F91FF90EF90DF90CF90BF900C94EE1945\r
-:10292000002319F08B2D817001C08695882309F44E\r
-:1029300072C1812F829586958770880F880F912F9D\r
-:102940009F70C92ED12CE12CF12C082E04C0CC0C88\r
-:10295000DD1CEE1CFF1C0A94D2F714FF12C00FE01E\r
-:1029600010E020E030E004C0000F111F221F331FD1\r
-:102970008A95D2F7C901B8016095709580959095B8\r
-:1029800003C060E070E0CB014B2D46954695437047\r
-:102990004230C1F060F56C297D298E299F29413094\r
-:1029A00051F126960FB6F894DEBF0FBECDBFDF9172\r
-:1029B000CF911F910F91FF90EF90DF90CF90BF903C\r
-:1029C0000C94E41A6C297D298E299F2926960FB62E\r
-:1029D000F894DEBF0FBECDBFDF91CF911F910F9155\r
-:1029E000FF90EF90DF90CF90BF900C94001B0E945F\r
-:1029F000E41AC701B60126960FB6F894DEBF0FBEE3\r
-:102A0000CDBFDF91CF911F910F91FF90EF90DF909D\r
-:102A1000CF90BF900C94C81A103FD1F118F4103E1B\r
-:102A200050F4A1C0123F09F463C008F44CC0133F36\r
-:102A300009F473C098C01F708B2D8F710023A1F013\r
-:102A40000E94611A812F26960FB6F894DEBF0FBE42\r
-:102A5000CDBFDF91CF911F910F91FF90EF90DF904D\r
-:102A6000CF90BF900C9403130E94821A812F269658\r
-:102A70000FB6F894DEBF0FBECDBFDF91CF911F918F\r
-:102A80000F91FF90EF90DF90CF90BF900C940A13BE\r
-:102A90000023A9F02111BFC08B2D8F7126960FB690\r
-:102AA000F894DEBF0FBECDBFDF91CF911F910F9184\r
-:102AB000FF90EF90DF90CF90BF900C94A71A223038\r
-:102AC00008F0A9C0E9CF0023A9F08B2D8F712696BD\r
-:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F\r
-:102AE0000F91FF90EF90DF90CF90BF900C94611A00\r
-:102AF000002359F38B2D8F7126960FB6F894DEBF05\r
-:102B00000FBECDBFDF91CF911F910F91FF90EF903E\r
-:102B1000DF90CF90BF900C94821A002399F08B2DF8\r
-:102B20008F7126960FB6F894DEBF0FBECDBFDF9132\r
-:102B3000CF911F910F91FF90EF90DF90CF90BF90BA\r
-:102B40000C944C1A26960FB6F894DEBF0FBECDBF7C\r
-:102B5000DF91CF911F910F91FF90EF90DF90CF9079\r
-:102B6000BF900C94421A0023A9F0222309F4ADCFA0\r
-:102B7000812F26960FB6F894DEBF0FBECDBFDF9132\r
-:102B8000CF911F910F91FF90EF90DF90CF90BF906A\r
-:102B90000C94EC11222309F4ADCF812F26960FB6A9\r
-:102BA000F894DEBF0FBECDBFDF91CF911F910F9183\r
-:102BB000FF90EF90DF90CF90BF900C94B4124B2D0C\r
-:102BC0004F70612FC7010E94390426960FB6F89402\r
-:102BD000DEBF0FBECDBFDF91CF911F910F91FF9050\r
-:102BE000EF90DF90CF90BF900C9466194B2D4F70F3\r
-:102BF000612FC70126960FB6F894DEBF0FBECDBF7A\r
-:102C0000DF91CF911F910F91FF90EF90DF90CF90C8\r
-:102C1000BF900C94570826960FB6F894DEBF0FBEEF\r
-:102C2000CDBFDF91CF911F910F91FF90EF90DF907B\r
-:102C3000CF90BF9008950E94FC1B0E94D11B0E9460\r
-:102C4000161C0E9422210E94722080E090E00E94C7\r
-:102C5000E61080E090E00C94FC100E94EC1B0C94B9\r
-:102C60001B160E941D1B292F22952F702C3030F42B\r
-:102C70002A3048F42250223078F405C02C3041F03C\r
-:102C80002F3031F009C0803E48F0803F29F406C063\r
-:102C900093FB882780F9089580E0089581E00895E6\r
-:102CA000CF93DF9300D000D01F92CDB7DEB70F9047\r
-:102CB0000F900F900F900F90DF91CF910895CF93C9\r
-:102CC000DF9300D000D000D0CDB7DEB726960FB688\r
-:102CD000F894DEBF0FBECDBFDF91CF9108951F9353\r
-:102CE000CF93DF93C0917B0116E080917C01C817E0\r
-:102CF00099F0D0E01C9FF0011D9FF00D1124E358C6\r
-:102D0000FE4F4081518162817381848195810E944F\r
-:102D10005F162196C770E9CFDF91CF911F9108957B\r
-:102D20004091AD015091AE016091AF017091B00141\r
-:102D30008091B1019091B2010C945F168091B20123\r
-:102D400082958F7009F054C08091AF01882309F4F7\r
-:102D50004FC080917B01A0917C014091B0015091C6\r
-:102D6000B1016091AD017091AE01B6E08A1709F42E\r
-:102D70003FC090E041155105C1F17F3F11F46F3F15\r
-:102D8000A1F1B89FF001B99FF00D1124E358FE4F57\r
-:102D9000218127132AC02081261327C022812111D7\r
-:102DA00024C0238134812417350710F421503109C0\r
-:102DB000241B350B283C3105C0F42091B2012F7043\r
-:102DC00020612093B20126E0289FF001299FF00D99\r
-:102DD0001124EE57FE4F80818F70806180838DEAD1\r
-:102DE00091E00E9411130C946F1601968770BECF6C\r
-:102DF0000895CF92DF92EF92FF920F931F93CF939C\r
-:102E0000DF93CDB7DEB762970FB6F894DEBF0FBE83\r
-:102E1000CDBF8C0185E0F801DE011D9601900D9279\r
-:102E20008A95E1F7D8014C9111965C911197129611\r
-:102E30006C918091B0019091B101009709F475C136\r
-:102E40003091AD017091AE017F3F19F43F3F09F41D\r
-:102E50006CC1F801C380D480E090AF01EE2009F48A\r
-:102E6000BEC02091B201C816D90628F0D601A81B11\r
-:102E7000B90BCD0104C0809590958C0D9D1DFF244C\r
-:102E8000F394883C910578F0F12C207F09F0C4C0C0\r
-:102E90007C2DD98AC88A89890E9450168DEA91E0D2\r
-:102EA0000E941113AFC0822F807F09F045C05713D5\r
-:102EB00013C0431311C061110FC02F702061209304\r
-:102EC000B2010E9490168DEA91E00E941113809148\r
-:102ED000B201F80185832EC0CD2819F15F3F11F4AE\r
-:102EE0004F3FF9F0F62E61111CC080917B012091BB\r
-:102EF0007C0136E0821709F45BC090E0389FF00156\r
-:102F0000399FF00D1124E358FE4F7181571306C00D\r
-:102F10007081471303C07281711103C001968770DD\r
-:102F2000E9CFF62E662309F41CC18091B2018160BD\r
-:102F30008093B201F12C15C1571309C0431307C088\r
-:102F4000611105C08091B201F8018583C8C04D8729\r
-:102F50005E878D859E856A8B0E9431166A898823DB\r
-:102F6000D1F16623C1F12091B201822F82958F7039\r
-:102F700090E0029774F08091AD019091AE01988736\r
-:102F80008F831986DB86CA862C87CE0107960E941E\r
-:102F9000111386E0F801ADEAB1E001900D928A9537\r
-:102FA000E1F70E949E160E949016FF24F394D9C068\r
-:102FB0004D875E878D859E850E941D1B292F22953A\r
-:102FC0002F70223008F0C1C09F7009F0BBC0805E36\r
-:102FD000883008F4C6C0C8010E941113E6CFC81695\r
-:102FE000D90608F453C0F601E81BF90BCF01883C61\r
-:102FF000910508F450C0F12C7C2DD98AC88A8989A2\r
-:103000000E945016EDEAF1E086E0DF011D928A95FC\r
-:10301000E9F70E949016A5C0571314C0431312C0BD\r
-:10302000611110C08091B201F8018583C8010E942E\r
-:10303000111386E0EDEAF1E0DF011D928A95E9F7D0\r
-:10304000FE2C8FC04D875E878D859E856A8B0E9482\r
-:1030500031166A89882309F4BECF662309F4BBCFF1\r
-:103060002091B201822F82958F7090E002970CF42C\r
-:1030700090CF8091AD019091AE019A8389831B829C\r
-:10308000DD82CC822E83CE01019681CF80959095F2\r
-:103090008C0D9D1DACCFF62E662309F49CCF5713E3\r
-:1030A00033C0431331C02091B20120FD24C0822FD0\r
-:1030B00082958F70482F50E041155105E1F0D801FD\r
-:1030C00015962C9315974F30510549F08F5F982F27\r
-:1030D0009295907F822F8F70892B15968C93C801C3\r
-:1030E0000E94111386E0F801ADEAB1E001900D9263\r
-:1030F0008A95E1F78ECF86E0F801ADEAB1E0019064\r
-:103100000D928A95E1F72DC04D875E878D859E854E\r
-:103110000E94311681113DCF8091B2018160809370\r
-:10312000B201C8010E9411131CC0662309F453CFD9\r
-:103130004D875E878D859E850E943116882309F410\r
-:103140004ACF27CF811143CF0CC0243008F043CFA2\r
-:103150009F7009F43CCFD80115969C91907F09F09F\r
-:1031600036CF8F2D62960FB6F894DEBF0FBECDBF5F\r
-:10317000DF91CF911F910F91FF90EF90DF90CF9053\r
-:1031800008951F93CF93DF93CDB7DEB72C970FB67B\r
-:10319000F894DEBF0FBECDBF4F83588769877A870B\r
-:1031A0008B879C87CE0107960E94F916882371F0C1\r
-:1031B0008A859B85892B09F441C088858F3F09F05A\r
-:1031C00065C08F818F3F09F061C038C086E0FE0185\r
-:1031D0003796DE01119601900D928A95E1F76A8586\r
-:1031E0007B856115710551F1FF81E885EF3F11F491\r
-:1031F000FF3F21F120917C0130E0C90101968770E9\r
-:10320000992740917B0150E08417950709F447C046\r
-:10321000F983EA837D836C8396E0929FD001939F2C\r
-:10322000B00D1124A358BE4FFE01319601900D92AE\r
-:103230009A95E1F780937C010E946F1616E08091C9\r
-:103240007B0190917C018917B9F1189FC00111246D\r
-:1032500083589E4F0E94F916882371F1E0917B01FB\r
-:103260001E9FF0011124E358FE4F4081518162817D\r
-:103270007381848195810E945F1680917B0190E02B\r
-:1032800001968770992780937B01D9CF4F8158850C\r
-:1032900069857A858B859C850E945F16CFCF0E94B9\r
-:1032A0002D1610927C0110927B01EDEAF1E086E090\r
-:1032B000DF011D928A95E9F72C960FB6F894DEBFD0\r
-:1032C0000FBECDBFDF91CF911F910895EF92FF9276\r
-:1032D0000F931F93CF93DF938C01892B09F46CC05C\r
-:1032E000F12CEE24E394E8012196F80184918437CF\r
-:1032F00040F4843008F051C0813081F0823019F1FF\r
-:103300005BC0853709F444C0A8F19CE7980F90375B\r
-:1033100008F052C08F770E94B41241C00E5F1F4F59\r
-:10332000FE01849190E2980F983050F48770FE2D42\r
-:1033300001C0FF0F8A95EAF78F2F0E94EF1B14C080\r
-:103340000E94EC112DC00E5F1F4FFE01849190E290\r
-:10335000980F983060F48770FE2D01C0FF0F8A959A\r
-:10336000EAF78F2F0E94F51B0E94161C19C00E94BD\r
-:10337000B41216C00E5F1F4FFE01C491CC2381F022\r
-:103380008FE99FE00197F1F700C00000C150F6CF30\r
-:103390000E5F1F4FFE01F49003C00E94EC118E01DE\r
-:1033A0008F2D882309F49FCFEFE9FFE03197F1F7E4\r
-:1033B00000C000008150F5CFDF91CF911F910F9198\r
-:1033C000FF90EF90089508956093B7017093B8014E\r
-:1033D0008093B9019093BA010C941B160F931F931D\r
-:1033E0000091B7011091B8012091B9013091BA0153\r
-:1033F000DC01CB01802B912BA22BB32B8093B70147\r
-:103400009093B801A093B901B093BA011F910F91A5\r
-:103410000C941B160F931F930091B7011091B801E4\r
-:103420002091B9013091BA01DC01CB0180239123B5\r
-:10343000A223B3238093B7019093B801A093B9015D\r
-:10344000B093BA011F910F910C941B160F931F9309\r
-:103450000091B7011091B8012091B9013091BA01E2\r
-:10346000DC01CB0180279127A227B3278093B701E6\r
-:103470009093B801A093B901B093BA011F910F9135\r
-:103480000C941B161092B3011092B4011092B50166\r
-:103490001092B6010C941B1641E050E060E070E021\r
-:1034A00004C0440F551F661F771F8A95D2F74093BB\r
-:1034B000B3015093B4016093B5017093B6010C94BD\r
-:1034C0001B1641E050E060E070E004C0440F551F5F\r
-:1034D000661F771F8A95D2F78091B3019091B4014E\r
-:1034E000A091B501B091B601482B592B6A2B7B2BCB\r
-:1034F0004093B3015093B4016093B5017093B6014A\r
-:103500000C941B1641E050E060E070E004C0440FF2\r
-:10351000551F661F771F8A95D2F740955095609585\r
-:1035200070958091B3019091B401A091B501B091D3\r
-:10353000B601482359236A237B234093B301509358\r
-:10354000B4016093B5017093B6010C941B1641E071\r
-:1035500050E060E070E004C0440F551F661F771F05\r
-:103560008A95D2F78091B3019091B401A091B501F1\r
-:10357000B091B601482759276A277B274093B301AA\r
-:103580005093B4016093B5017093B6010C941B166F\r
-:103590000F931F930091B3011091B4012091B501D5\r
-:1035A0003091B601DC01CB01802B912BA22BB32BE8\r
-:1035B0008093B3019093B401A093B501B093B60189\r
-:1035C0001F910F910C941B160F931F930091B30141\r
-:1035D0001091B4012091B5013091B601DC01CB010D\r
-:1035E00080239123A223B3238093B3019093B4014A\r
-:1035F000A093B501B093B6011F910F910C941B16C7\r
-:103600000F931F930091B3011091B4012091B50164\r
-:103610003091B601DC01CB0180279127A227B32787\r
-:103620008093B3019093B401A093B501B093B60118\r
-:103630001F910F910C941B160895CF92DF92EF9279\r
-:10364000FF920F931F93CF93DF938C01C090B30130\r
-:10365000D090B401E090B501F090B6018091B7012F\r
-:103660009091B801A091B901B091BA01C82AD92AA4\r
-:10367000EA2AFB2ACFE1D0E0D701C6010C2E04C014\r
-:10368000B695A795979587950A94D2F780FF07C0BE\r
-:10369000B8018C2F0E947B088130910531F421976D\r
-:1036A00058F7B80180E00E947B08DF91CF911F910D\r
-:1036B0000F91FF90EF90DF90CF90089590910C01C3\r
-:1036C0009923F1F090910D019923D1F0982F9695BF\r
-:1036D000969596959F3080F5E0910E01F0910F013F\r
-:1036E000E90FF11D877021E030E0A90102C0440F0D\r
-:1036F000551F8A95E2F7CA019181892B818308952C\r
-:1037000020910E0130910F01F90132969FEF40E0B8\r
-:103710005191851789F09F3F19F4511101C0942FE1\r
-:103720004F5F4E30A9F79F3F39F0F901E90FF11DC6\r
-:1037300097FDFA9582830895089590910C0199233D\r
-:10374000F9F090910D019923D9F0982F96959695BF\r
-:1037500096959F3028F5E0910E01F0910F01E90F49\r
-:10376000F11D877021E030E0A90102C0440F551F10\r
-:103770008A95E2F7CA018095918189238183089512\r
-:1037800020910E0130910F01F9013296205F3F4FD9\r
-:103790009081891301C010823196E217F307C1F7B7\r
-:1037A000089581E090E0E0910E01F0910F01E80FA3\r
-:1037B000F91F1082019680319105A9F70895909123\r
-:1037C000CD01892B8093CD01089580959091CD01F5\r
-:1037D00089238093CD0108951092CD010895909191\r
-:1037E000CC01892B8093CC01089580959091CC01D8\r
-:1037F00089238093CC0108951092CC010895809381\r
-:10380000BB0108951092BB01089580910E01909123\r
-:103810000F01FC0131969C01205F3F4F80E09191A8\r
-:1038200091118F5FE217F307D1F70895E0910E0130\r
-:10383000F0910F018091CD018083E0910E01F09114\r
-:103840000F0190818091CC01892B80838091BB01F5\r
-:10385000882361F0E0910E01F0910F019081892B96\r
-:1038600080830E94051C81111092BB0180910E0182\r
-:1038700090910F010C94D010CF92DF92EF92FF92B3\r
-:103880006C01EE24FF24C114D104E104F10421F001\r
-:10389000C701B60120E101C020E0C72ED82EE92ED5\r
-:1038A000FF24C114D104E104F10419F0285FC70119\r
-:1038B000B6016B017C0154E0F694E794D794C79469\r
-:1038C0005A95D1F7C114D104E104F10419F02C5F29\r
-:1038D000C701B6016B017C0142E0F694E794D794EE\r
-:1038E000C7944A95D1F7C114D104E104F10419F049\r
-:1038F0002E5FC701B601DC01CB01B695A795979560\r
-:103900008795892B8A2B8B2B09F02F5F822FFF90B5\r
-:10391000EF90DF90CF9008958091E601843011F10F\r
-:1039200020E488E190E00FB6F894A89580936000B9\r
-:103930000FBE2093600083B7817F846083BF83B70D\r
-:10394000816083BF7894889583B78E7F83BF0FB6DD\r
-:10395000F894A8958091600088618093600010922F\r
-:1039600060000FBE089508950C94B31CCF930E947D\r
-:10397000B41C0E949A060E94B31CC0E08C2F0E94C7\r
-:103980009007811104C0CF5FCE30C1F701C081E044\r
-:10399000CF9108950E942D160E94C4100C94BA096C\r
-:1039A00082E084BD93E095BD9AEF97BD80936E0051\r
-:1039B00008952FB7F8948091CF019091D001A091F4\r
-:1039C000D101B091D2012FBF0895CF92DF92EF9233\r
-:1039D000FF920F931F932FB7F8944091CF0150910E\r
-:1039E000D0016091D1017091D2012FBF6A017B019A\r
-:1039F000EE24FF248C0120E030E0C016D106E20660\r
-:103A0000F30610F4415051099A01281B390BC901E2\r
-:103A10001F910F91FF90EF90DF90CF9008951F922C\r
-:103A20000F920FB60F9211248F939F93AF93BF9372\r
-:103A30008091CF019091D001A091D101B091D2019C\r
-:103A40000196A11DB11D8093CF019093D001A09349\r
-:103A5000D101B093D201BF91AF919F918F910F90FF\r
-:103A60000FBE0F901F9018950E94BC0DF8942FEF79\r
-:103A700087EA91E6215080409040E1F700C00000C5\r
-:103A800087E090EBDC018093EF019093F001A0932D\r
-:103A9000F101B093F2019CE088E10FB6F894A8958B\r
-:103AA000809360000FBE90936000FFCFEF92FF9273\r
-:103AB0000F931F93CF93DF93D82FC0E08C2F0E94DA\r
-:103AC000900700E010E0E82EF12CC701002E02C0A4\r
-:103AD000959587950A94E2F780FD06C00F5F1F4F0A\r
-:103AE0000630110591F709C0602F7C2F80E00E94FD\r
-:103AF00058088D13F3CF81E004C0CF5FCE30F1F6CC\r
-:103B000080E0DF91CF911F910F91FF90EF9008958A\r
-:103B1000CF93C82F8CE20E94561D882321F08C2F52\r
-:103B2000CF910C94561D80E0CF910895CF930E94C1\r
-:103B3000DD1E811102C00E94C31EC5E6C15049F0BE\r
-:103B40000E949A068FE39CE90197F1F700C00000FC\r
-:103B5000F5CF89E20E94881D811113C18AE20E947B\r
-:103B6000881D81110E94C31E85E00E94881D81115D\r
-:103B70000E94341D0E94E81E8093CE0187E00E94BF\r
-:103B8000881D8823A9F18BE10E94881D882351F0AC\r
-:103B90008091CE0181FB222720F991E0922790FBB2\r
-:103BA00081F90EC08EE00E94881D882361F080910B\r
-:103BB000CE0182FB222720F991E0922790FB82F927\r
-:103BC0008093CE0115C080E10E94881D9091CE01A6\r
-:103BD000882341F093FB222720F981E0822780FB94\r
-:103BE00093F904C0892F809580FB90F99093CE01C2\r
-:103BF0008091CE010E94EC1E0E94FA1E8093E0018B\r
-:103C000080EE0E94881D882341F08091E001982F6A\r
-:103C1000909590FB80F98093E00189E30E94881DD4\r
-:103C2000882359F08091E00181FB222720F991E05F\r
-:103C3000922790FB81F98093E00182EE0E94881D1B\r
-:103C4000882359F08091E00182FB222720F991E03E\r
-:103C5000922790FB82F98093E00186EE0E94881DF6\r
-:103C6000882359F08091E00183FB222720F991E01D\r
-:103C7000922790FB83F98093E00183EE0E94881DD8\r
-:103C8000882359F08091E00184FB222720F991E0FC\r
-:103C9000922790FB84F98093E00185E30E94881DC0\r
-:103CA000882359F08091E00185FB222720F991E0DB\r
-:103CB000922790FB85F98093E00181E30E94881DA3\r
-:103CC000882359F08091E00186FB222720F991E0BA\r
-:103CD000922790FB86F98093E00181E10E94881D84\r
-:103CE000882359F08091E00187FB222720F991E099\r
-:103CF000922790FB87F98093E0018091E0010E9478\r
-:103D0000FE1E8091E00187FB882780F980930D01DA\r
-:103D100087E20E94881DC82F8EE10E94881D8111B4\r
-:103D2000C2608FE10E94881D8111C46080E20E9400\r
-:103D3000881D8111C86081E20E94881D8111C061C7\r
-:103D400082E20E94881D8111C06283E20E94881D68\r
-:103D50008111C06484E20E94881D882311F0C0682C\r
-:103D600002C0CC2329F08C2F0E94F51E6C2F03C0BB\r
-:103D70000E94F11E682F70E080E090E0CF910C94DB\r
-:103D8000E419CF9108956DEE7EEF80E090E00E94FF\r
-:103D9000372560E082E090E00E94292560E083E022\r
-:103DA00090E00E94292560E084E090E00E942925AF\r
-:103DB00060E085E090E00C94292580E090E00E948E\r
-:103DC000232521E08D3E9E4F09F020E0822F0895AB\r
-:103DD00082E090E00C941B25682F82E090E00C9428\r
-:103DE000292583E090E00C941B25682F83E090E068\r
-:103DF0000C94292584E090E00C941B25682F84E026\r
-:103E000090E00C9429258091D50180FF0BC0609132\r
-:103E1000130185E0689FB00111247595679575952C\r
-:103E200067952BC081FF09C06091130185E0689FF1\r
-:103E3000B00111247595679520C082FF07C060917D\r
-:103E4000130185E0689FB001112417C09091D6013D\r
-:103E50009923D1F060911201961788F720911301F0\r
-:103E600085E0289F90011124929FA001939F500DFF\r
-:103E7000112470E0CA010E94ED246038710540F4FD\r
-:103E80006115710519F406C065E070E0862F08958C\r
-:103E90008FE7089581E008958091D50180FF08C0E3\r
-:103EA0006091110170E0759567957595679521C0D2\r
-:103EB00081FF06C06091110170E07595679519C08A\r
-:103EC00082FF04C06091110170E010C09091D60192\r
-:103ED000992399F0609110019617A0F78091110134\r
-:103EE000899FC001112470E00E94ED2460387105A3\r
-:103EF00040F46115710519F406C061E070E0862F89\r
-:103F000008958FE7089581E00895803F21F40E948D\r
-:103F1000031F819504C0813F29F40E94031F8093F1\r
-:103F2000D9010895823F21F40E94031F819504C0A6\r
-:103F3000833F29F40E94031F8093D8010895893F8D\r
-:103F400019F40E944C1F05C08A3F31F40E944C1F97\r
-:103F500081958093DA0108958B3F21F40E944C1FD4\r
-:103F6000819504C08C3F29F40E944C1F8093DB0193\r
-:103F70000895843F21F48091D701816017C0853F67\r
-:103F800021F48091D701826011C0863F21F4809195\r
-:103F9000D70184600BC0873F21F48091D7018860EE\r
-:103FA00005C0883F31F48091D70180618093D701AB\r
-:103FB00008958D3F21F48091D50181600BC08E3F23\r
-:103FC00021F48091D501826005C08F3F29F4809152\r
-:103FD000D50184608093D5010895803F39F48091A4\r
-:103FE000D90187FF6CC01092D90169C0813F29F4C3\r
-:103FF0008091D9011816BCF362C09091D801823F1C\r
-:1040000029F497FF5CC01092D80159C0833F19F47E\r
-:104010001916CCF354C0893F41F48091DA01181687\r
-:104020000CF04DC01092DA014AC08A3F29F4809109\r
-:10403000DA0187FF44C0F6CF8B3F39F48091DB0172\r
-:1040400087FF3DC01092DB013AC08C3F29F480917C\r
-:10405000DB011816BCF333C0843F21F48091D701F3\r
-:104060008E7F17C0853F21F48091D7018D7F11C0CD\r
-:10407000863F21F48091D7018B7F0BC0873F21F4CD\r
-:104080008091D701877F05C0883F31F48091D701A7\r
-:104090008F7E8093D70113C08D3F21F48091D5018D\r
-:1040A0008E7F0BC08E3F21F48091D5018D7F05C09E\r
-:1040B0008F3F29F48091D5018B7F8093D50180912A\r
-:1040C000D80181110EC08091D90181110AC080915F\r
-:1040D000DA01811106C08091DB01811102C01092CA\r
-:1040E000D601089587ED91E00E94DB100E94D91C53\r
-:1040F0009093D4018093D30108951F93CF93DF93BE\r
-:104100008091D3019091D4010E94E51CAC01909163\r
-:10411000D601992321F02091140130E006C02091AE\r
-:1041200015018AE0289F900111244217530708F4D3\r
-:1041300085C08091D801C091D901D091DA01109148\r
-:10414000DB01811107C0C11175C0D11173C01111FC\r
-:1041500071C074C09F3F19F09F5F9093D6011816ED\r
-:1041600024F40E94031F8093D8018091D80187FF17\r
-:1041700005C00E94031F81958093D8011C1624F46A\r
-:104180000E94031F8093D9018091D90187FF05C048\r
-:104190000E94031F81958093D9016091D801662305\r
-:1041A00031F1C091D901CC2311F1062E000C770B0F\r
-:1041B000880B990B0E94F42323E333E343E35FE38B\r
-:1041C0000E9458240E94BC236093D8016C2FCC0F0E\r
-:1041D000770B880B990B0E94F42323E333E343E32B\r
-:1041E0005FE30E9458240E94BC236093D9011D16EE\r
-:1041F00024F40E944C1F8093DA018091DA0187FF3A\r
-:1042000005C00E944C1F81958093DA01111624F499\r
-:104210000E944C1F8093DB018091DB0187FF05C06A\r
-:104220000E944C1F81958093DB01DF91CF911F91FC\r
-:104230000C9472209F3F09F08FCFA0CFDF91CF91D8\r
-:104240001F910895E7EDF1E085E0DF011D928A9569\r
-:10425000E9F71092D6011092D5010895833081F1CB\r
-:1042600028F4813059F08230D1F00895853009F476\r
-:1042700049C0B8F1863009F456C0089580911501FF\r
-:10428000262F30E0280F311D2F3F310524F4680F11\r
-:104290006093150108958FEF809315010895809123\r
-:1042A0001401262F30E0280F311D2F3F310524F453\r
-:1042B000680F6093140108958FEF8093140108959F\r
-:1042C00080911301262F30E0280F311D2F3F31053B\r
-:1042D00024F4680F6093130108958FEF8093130106\r
-:1042E000089580911201262F30E0280F311D2F3FB5\r
-:1042F000310524F4680F6093120108958FEF8093C5\r
-:104300001201089580911101262F30E0280F311DF0\r
-:104310002F3F310524F4680F6093110108958FEF4A\r
-:1043200080931101089580911001262F30E0280F0D\r
-:10433000311D2F3F310524F4680F6093100108955B\r
-:104340008FEF809310010895833011F128F48130AC\r
-:1043500049F0823091F00895853081F120F1863066\r
-:10436000C1F1089580911501681720F4861B809390\r
-:104370001501089510921501089580911401681790\r
-:1043800020F4861B8093140108951092140108955F\r
-:1043900080911301681720F4861B80931301089500\r
-:1043A00010921301089580911201681720F4861B62\r
-:1043B00080931201089510921201089580911101C5\r
-:1043C000681720F4861B8093110108951092110143\r
-:1043D000089580911001681720F4861B80931001C6\r
-:1043E00008951092100108950F931F938D3109F4D1\r
-:1043F0006BC008F03FC08E3009F47DC0C0F4873038\r
-:1044000009F46EC068F4863009F0AFC08091CE0127\r
-:10441000817F8E7F8093CE0181E08093DD01A6C0F5\r
-:10442000883009F458C08B3009F49BC09EC0863197\r
-:1044300009F497C078F4803109F470C0813109F033\r
-:1044400094C00E942D1690910D0181E089278093E0\r
-:104450000D0187C0893109F484C08B3109F085C012\r
-:104460008091CE0181FB222720F991E0922790FBD9\r
-:1044700081F94AC0853309F45BC048F4873209F4F6\r
-:1044800057C008F45AC0893209F452C06EC0833450\r
-:1044900038F48A3308F067C0883309F462C065C015\r
-:1044A000833409F445C0883409F05FC00E942D169A\r
-:1044B0000FEF13ED20E3015010402040E1F700C062\r
-:1044C00000000E94341D4DC00E9476230E94C4103B\r
-:1044D0000E94BA0946C00E94E81E0E94FA1E41C00E\r
-:1044E0009091CE01892F817090FF12C0917F9E7FA5\r
-:1044F0009093CE013BC08091CE0182FB222720F910\r
-:1045000091E0922790FB82F98093CE01992349F1A3\r
-:104510008091CE0181608093CE0123C08091CE0135\r
-:1045200083FB222720F991E0922790FB83F9ECCFBF\r
-:1045300061E070E080E090E010C08D5141E050E01B\r
-:1045400060E070E08A019B0104C0000F111F221F70\r
-:10455000331F8A95D2F7C901B8010E94E4190E945D\r
-:104560002D1681E003C08953E9CF80E01F910F91A0\r
-:10457000089580E008950C94B922CF93C82F8091BC\r
-:10458000DD01813079F018F08230E9F187C0E091E7\r
-:104590000E01F0910F018081813169F0823209F0C2\r
-:1045A0007FC009C0E0910E01F0910F01808181313F\r
-:1045B00011F0823261F48C2F0E94BB22811104C061\r
-:1045C0008C2F0E94F4211DC081E090E01AC08C2F36\r
-:1045D0000E94B922811114C0C43179F048F4CB3063\r
-:1045E00079F0C03109F060C082E08093DD0108C03D\r
-:1045F000C93219F0C83321F057C01092DD0154C000\r
-:1046000081E0817053C0C93289F118F5C43171F16C\r
-:10461000A8F4C73009F046C08AE08093150194E100\r
-:104620009093140193E0909313018093120188E01A\r
-:104630008093110188E28093100134C0CE51C630BE\r
-:1046400088F5EC2FF0E0E65DFE4F80818093DC0181\r
-:1046500029C0CE34E9F020F4CB3421F56AE013C050\r
-:10466000C13579F0C235F1F461E00DC08091DC0113\r
-:10467000882319F01092DC0115C081E08093DD01E0\r
-:1046800015C061E006C08091DC010E942E210AC0A5\r
-:104690006AE08091DC010E94A42104C01092DD0137\r
-:1046A00080E004C081E002C080E0ABCFCF910895EC\r
-:1046B000E1E8F0E080818860808380818160808390\r
-:1046C0008FB7F89493E09093890090ED90938800D1\r
-:1046D0008FBF0895EFE6F0E08081826080830895C7\r
-:1046E000EFE6F0E080818D7F80830895EFE6F0E0D3\r
-:1046F000908182E08927808308951F920F920FB6E0\r
-:104700000F9211242F933F934F935F936F937F9357\r
-:104710008F939F93AF93BF93EF93FF938091DE01AD\r
-:104720009091DF0101969093DF018093DE0181116A\r
-:1047300003C082E00E94BA09E091DF01E695E695A8\r
-:10474000F0E0E156F84FE4918091DE018E1303C052\r
-:1047500080E00E94BA09FF91EF91BF91AF919F91C4\r
-:104760008F917F916F915F914F913F912F910F901A\r
-:104770000FBE0F901F9018950E94C3236894B1112B\r
-:104780000C94522408950E94372488F09F5798F083\r
-:10479000B92F9927B751B0F0E1F0660F771F881F46\r
-:1047A000991F1AF0BA95C9F714C0B13091F00E9460\r
-:1047B0005124B1E008950C945124672F782F882755\r
-:1047C000B85F39F0B93FCCF3869577956795B39587\r
-:1047D000D9F73EF490958095709561957F4F8F4FF6\r
-:1047E0009F4F0895E89409C097FB3EF490958095FB\r
-:1047F000709561957F4F8F4F9F4F9923A9F0F92FA7\r
-:1048000096E9BB279395F695879577956795B79524\r
-:10481000F111F8CFFAF4BB0F11F460FF1BC06F5F0A\r
-:104820007F4F8F4F9F4F16C0882311F096E911C01C\r
-:10483000772321F09EE8872F762F05C0662371F03D\r
-:1048400096E8862F70E060E02AF09A95660F771F51\r
-:10485000881FDAF7880F9695879597F9089557FD81\r
-:104860009058440F551F59F05F3F71F04795880FDE\r
-:1048700097FB991F61F09F3F79F087950895121675\r
-:1048800013061406551FF2CF4695F1DF08C0161621\r
-:1048900017061806991FF1CF8695710561050894D2\r
-:1048A0000895E894BB2766277727CB0197F90895E9\r
-:1048B0000E946B240C94DC240E94CE2438F00E94C9\r
-:1048C000D52420F0952311F00C94C5240C94CB240E\r
-:1048D00011240C9452240E942F2470F3959FC1F34D\r
-:1048E000950F50E0551F629FF001729FBB27F00D9E\r
-:1048F000B11D639FAA27F00DB11DAA1F649F6627F3\r
-:10490000B00DA11D661F829F2227B00DA11D621F41\r
-:10491000739FB00DA11D621F839FA00D611D221FFB\r
-:10492000749F3327A00D611D231F849F600D211DDF\r
-:10493000822F762F6A2F11249F5750409AF0F1F062\r
-:1049400088234AF0EE0FFF1FBB1F661F771F881FCB\r
-:1049500091505040A9F79E3F510580F00C94C5241A\r
-:104960000C9452245F3FE4F3983ED4F386957795F8\r
-:104970006795B795F795E7959F5FC1F7FE2B880F71\r
-:10498000911D9695879597F9089597F99F6780E807\r
-:1049900070E060E008959FEF80EC089500240A9491\r
-:1049A0001616170618060906089500240A9412160A\r
-:1049B0001306140605060895092E0394000C11F43D\r
-:1049C000882352F0BB0F40F4BF2B11F460FF04C0EA\r
-:1049D0006F5F7F4F8F4F9F4F089597FB072E16F401\r
-:1049E000009407D077FD09D00E94072507FC05D069\r
-:1049F0003EF4909581959F4F0895709561957F4FF6\r
-:104A00000895EE0FFF1F0590F491E02D0994AA1B65\r
-:104A1000BB1B51E107C0AA1FBB1FA617B70710F0A9\r
-:104A2000A61BB70B881F991F5A95A9F780959095DB\r
-:104A3000BC01CD010895F999FECF92BD81BDF89AD0\r
-:104A4000992780B50895A8E1B0E042E050E00C94C9\r
-:104A50003E25262FF999FECF1FBA92BD81BD20BDFC\r
-:104A60000FB6F894FA9AF99A0FBE019608950E942B\r
-:104A70002925272F0C942A25DC01CB01FC01F9996B\r
-:104A8000FECF06C0F2BDE1BDF89A319600B40D929A\r
-:0C4A900041505040B8F70895F894FFCF53\r
-:104A9C002002BB094B0A260AF209BE090101BC011E\r
-:104AAC0028080A03140A3F4D363960071307DD0640\r
-:104ABC00A4063706500669068206010203040506A1\r
-:044ACC0007080900CE\r
-:00000001FF\r
+:100000000C94FC030C9440040C9440040C944004A5
+:100010000C9440040C9440040C9440040C94400450
+:100020000C9440040C9440040C940E0F0C94E00FBC
+:100030000C9440040C9440040C9440040C94400430
+:100040000C9440040C94AA240C9440040C94400496
+:100050000C9440040C94391E0C9440040C944004FD
+:100060000C9440040C9440040C9440040C94400400
+:100070000C9440040C9440040C9440040C944004F0
+:100080000C9440040C9440040C9440040C944004E0
+:100090000C9440040C9440040C9440040C944004D0
+:1000A0000C9440040C9440040C944004FF046A0433
+:1000B0001605B804C904E7048204AC04B204A6041B
+:1000C000E104BD04C3049A04A00450044D106F1051
+:1000D0005D116F105D11B410D7105D112C113F111F
+:1000E0002B142B1468146814AB14E91402170217AC
+:1000F0000215021703160316D61602170217ED167D
+:1001000002E002E2012E022E02E10002E002E10220
+:10011000E20001E001E101E20002E001E301190275
+:100120001902E30002E00001E00002E002E30164E2
+:1001300002640002E002E30001E001E30001E101EA
+:1001400037023702E10138023801E10125022502B8
+:10015000E10002E002E1013102310002E002E100CF
+:1001600001E001E10001E10137023702E10138025B
+:100170003801E10107020702E100013502350120E3
+:1001800002200002E302E10001E301E10001E101DC
+:1001900036023602E10138023801E1012602260268
+:1001A000E10001E10137023702E10138023801E1E3
+:1001B0000126022602E10001E10136023602E101D8
+:1001C00038023801E10125022502E10001E1013791
+:1001D000023702E10138023801E20125022502E27C
+:1001E0000001E10137023702E10138023801E10183
+:1001F00030023002E10002E002E20130023000028F
+:10020000E002E20001E001E20002E001E301060297
+:100210000602E30002E00001E00029002B00E200FA
+:10022000E100358100001E00140004001D7105303E
+:100230004D831F001A0016001B0006304C002000E2
+:1002400008000700060052002A00210015000900DE
+:10025000190051004A00220017000A0005000000A2
+:1002600002300430E3000000E200000002540430D9
+:10027000E7000000E6000000045423001C000B000F
+:10028000110000002E7F240018000D001000500007
+:100290004B0025000C000E0036004F002C002600FD
+:1002A00012000F003700E108280027001300330078
+:1002B0003871E1044E002D002F003474E5003081C8
+:1002C00000000100010001000100010000003A00EF
+:1002D000350031000100010001003B003502210220
+:1002E000350001004C003C001E02240622020100E1
+:1002F00001003D002D0224022404010001003E0003
+:10030000010037001104000001000100010000009D
+:100310000100000001000F3001000000010000009A
+:1003200068003F0024062402240400004500400029
+:10033000220425021104310269004100230426022F
+:1003400064005000010042003500250452005100B5
+:10035000010043003502260438004F006A004400C3
+:100360001E02310021020100000001000100010015
+:100370000100010000000100010001000100010076
+:1003800001000100F400F200FB0001000100010087
+:10039000F000F100FA00010001000100F500F30097
+:1003A000FC00010001000100F900FA00F600000065
+:1003B0000100010001000000010000000100A80090
+:1003C0000100000001000000010001000100A9007F
+:1003D000AA0000000100010001000100010001006D
+:1003E0000100010001000100AC000100B6000100A5
+:1003F00001000100AB0050000100010001000100FC
+:10040000520051000100AE000100010001004F0048
+:1004100000000100010001000100010000000100D6
+:1004200001000100010001000100010001000100C4
+:1004300001000100010001000100010001000100B4
+:1004400001000100010001000100010001000100A4
+:100450000100010001000000010001000100000096
+:100460000100000001000730010000000100000051
+:10047000010008300E300B300100000001000C308C
+:100480000A300D30010001000100010009300100B7
+:100490000100010001000100010001000100010054
+:1004A0000100010001000100010001000100010044
+:1004B0000100010001000100000001000100010035
+:1004C0000100010000000100010001000100010025
+:1004D00001000100010050000100010001000100C5
+:1004E00052005100010001000100010001004F0015
+:1004F00001000100010001000100010001000000F5
+:1005000001000100010000000100000001000100E5
+:10051000010000000100000001003F0052005100F6
+:100520002302000001004000240021001E002700DB
+:1005300001004100250022001F0037000100420099
+:100540002600230020003600010043003002300066
+:100550002402270201004400450038000100010088
+:10056000000001000100E1000100E00000000100C6
+:1005700001000100010001003D0001000100010037
+:1005800001000100E0000100010001000100010084
+:100590002C00010001000100010001003C000100ED
+:1005A00001000100010000003A000100010000000C
+:1005B000010000003B000F300100000001000000BE
+:1005C0000100010001000100010000000100010024
+:1005D0000100010001000100010001000100010013
+:1005E0000100010001000100010001000100010003
+:1005F00001000100010001000100010001000100F3
+:100600000100010001000100000016034500720016
+:1006100067006F0044006F007800200045005A001A
+:10062000000016034500720067006F0044006F0071
+:100630007800200045005A00000004030904090264
+:100640006D00040100A0FA0904000001030101008B
+:10065000092111010001223F000705810308000A5A
+:100660000904010001030102000921110100012216
+:100670004D000705820308000A0904020001030077
+:10068000000009211101000122360007058303083B
+:10069000000A090403000103000000092111010000
+:1006A0000122390007058403100001120110010026
+:1006B000000008EDFE071301000102000105010919
+:1006C00006A101050719E029E71500250195087520
+:1006D0000181020508190129059505750191029509
+:1006E000017503910105071900297715002501956A
+:1006F0007875018102C005010980A10185021601FA
+:100700000026B7001A01002AB70075109501810074
+:10071000C0050C0901A1018503160100269C021ADF
+:1007200001002A9C02751095018100C00501090293
+:10073000A1010901A10005091901290515002501DB
+:100740009505750181029501750381010501093047
+:1007500009311581257F95027508810609381581B3
+:10076000257F950175088106050C0A38021581253B
+:100770007F950175088106C0C005010906A1010524
+:100780000719E029E71500250195087501810295F3
+:100790000175088101050819012905950575019163
+:1007A000029501750391010507190029FF15002520
+:1007B000FF950675088100C00000000000000000E1
+:1007C000000000010204060A0F17202C3A4A5D714E
+:1007D000879DB3C7DAE9F5FCFFFCF5E9DAC7B39DFD
+:1007E00087715D4A3A2C20170F0A060402010000A7
+:1007F000000000000000000011241FBECFEFDAE06F
+:10080000DEBFCDBF04B603FE24C08091F0019091FD
+:10081000F101A091F201B091F3018730904BA74014
+:10082000B04BB9F41092F0011092F1011092F20164
+:100830001092F30114BE84B7877F84BF88E10FB69E
+:10084000F89480936000109260000FBEE0E0FFE338
+:10085000099511E0A0E0B1E0E8EDFCE402C00590EC
+:100860000D92A433B107D9F711E0A4E3B1E001C0C0
+:100870001D92A03FB107E1F70E94520C0C946A262A
+:100880000C940000462F50E04031510508F0F1C0B3
+:10089000DC01FA01EA5AFF4F12968C910C941F2644
+:1008A000882309F4E6C08091B3019091B401A0912E
+:1008B000B501B091B60120E2822780729927AA275C
+:1008C000BB278093B3019093B401A093B501B0937B
+:1008D000B601CFC0882349F00E94031E90933501D2
+:1008E0008093340187E192E00895809134019091E2
+:1008F00035010E940F1E873991050CF0AEC089E0CA
+:1009000092E00895882349F00E94031E90933501D8
+:100910008093340184E092E00895809134019091B5
+:1009200035010E940F1E873991050CF099C086EFA2
+:1009300091E00895882309F49CC081EE91E0089528
+:10094000882309F496C08CEC91E00895882309F47B
+:1009500090C087EB91E00895882309F48AC082EA69
+:1009600091E00895882309F484C08DE891E008950A
+:10097000811179C083E891E00895882309F479C052
+:100980008AE791E00895882309F473C085E691E031
+:100990000895882349F00E94031E909335018093A7
+:1009A000340180E691E00895809134019091350101
+:1009B0000E940F1E873991050CF058C082E591E026
+:1009C0000895882309F455C08DE391E008958823A4
+:1009D00049F00E94031E909335018093340188E30F
+:1009E00091E0089580913401909135010E940F1E8D
+:1009F000873991050CF040C08AE291E00895882380
+:100A000049F00E94031E909335018093340187E2E0
+:100A100091E0089580913401909135010E940F1E5C
+:100A20008739910564F589E191E00895882349F0BB
+:100A30000E94031E909335018093340182E191E07E
+:100A4000089580913401909135010E940F1E8739DD
+:100A50009105C4F480E091E0089584E192E0089566
+:100A60008FEF91E0089588E891E008958BE591E09B
+:100A7000089580E090E0089583E391E0089584E292
+:100A800091E008958BE091E0089508956091B3019D
+:100A90007091B4018091B5019091B6010E94651DDD
+:100AA00056985E9825982D9826982E9827982F98D6
+:100AB0008330C1F028F4813041F0823049F008954C
+:100AC000843049F0853051F00895259A2D9A089583
+:100AD000269A2E9A0895259A2D9A04C0259A2D9A21
+:100AE000269A2E9A279A2F9A08950C94460556987E
+:100AF0005E9825982D9826982E9827982F988FEFF6
+:100B000090E0909389008093880090938B0080936D
+:100B10008A0090938D0080938C00259A2D9A2FEF58
+:100B200080E792E0215080409040E1F700C0000053
+:100B3000269A2E9A2FEF80E792E021508040904035
+:100B4000E1F700C00000279A2F9A2FEF80E792E08C
+:100B5000215080409040E1F700C0000025982D987A
+:100B60002FEF80E792E0215080409040E1F700C0F5
+:100B7000000026982E982FEF80E792E021508040C9
+:100B80009040E1F700C0000027982F9856985E9893
+:100B900025982D9826982E9827982F98089589EAB9
+:100BA0008093800089E08093810024982C983F985E
+:100BB0008AB18F748AB96E98479A8BB1806B8BB962
+:100BC000769A0E9477050C94450580E28093000197
+:100BD0008091360181110EC00E94340681E080931D
+:100BE00036012FEF83ED90E3215080409040E1F7F4
+:100BF00000C0000080E40E943A0680930001811149
+:100C00002EC00E94640680930001811128C00E94BA
+:100C1000640680930001811122C08FE30E94640664
+:100C20008093000181111BC00E945C0680E40E9439
+:100C30003A0680930001811112C08CE00E94640684
+:100C40008093000181110BC00E9464068093000113
+:100C5000811105C08FE30E946406809300010E9409
+:100C60005C068091000108951092B9008AE080939B
+:100C7000B800089594EA9093BC009091BC0097FF4F
+:100C8000FCCF9091B900987F983021F0903111F00D
+:100C900081E008958093BB0084E88093BC0080913C
+:100CA000BC0087FFFCCF8091B900887F883111F0AC
+:100CB000803471F780E0089584E98093BC008091CE
+:100CC000BC0084FDFCCF08958093BB0084E8809332
+:100CD000BC008091BC0087FFFCCF9091B900987F49
+:100CE00081E0983209F480E0089584E88093BC00A4
+:100CF0008091BC0087FFFCCF8091BB00089580915C
+:100D00000001811115C080E40E943A068093000121
+:100D100081110CC082E10E94640680930001811160
+:100D200005C08FEF0E946406809300010E945C065C
+:100D300084B1807F84B985B1807F85B98AB1837F92
+:100D40008AB98BB1837F8BB93E98469808950E94EB
+:100D5000E505809300010E947F0680B38C7080BB04
+:100D600081B3836F81BBA8E3B1E0E6E4F1E08EE0FC
+:100D70008E0F11921D928E13FCCF0C94CF05BF9253
+:100D8000CF92DF92EF92FF920F931F93CF93DF9357
+:100D900080910001882379F0809137018F5F8093E3
+:100DA0003701811108C00E94E5058093000181117F
+:100DB00002C00E94770508E311E0C0E0D0E0DD2426
+:100DC000D39482E0C82EEE24E394F12CC730D105F1
+:100DD00000F580910001811164C080E40E943A0610
+:100DE00080930001811112C082E10E946406809309
+:100DF000000181110BC0C7010C2E01C0880F0A949D
+:100E0000EAF780950E946406809300010E945C06C8
+:100E100048C0CA30A1F028F4C83059F0C93061F098
+:100E200005C0CC3089F070F0CD3089F0209A289838
+:100E300010C0219A29980DC0229A2A980AC0239A94
+:100E40002B9807C0529A01C0539A5B9802C03E9AF1
+:100E5000469890EA9A95F1F79FB1799902C082E09D
+:100E600001C080E091709D25982B7C9902C084E0A0
+:100E700001C080E0892B7D9902C038E001C030E0DC
+:100E8000832B7E9902C020E101C020E0822B9FB11C
+:100E90009095991F9927991F9295990F907E892B6C
+:100EA0000FC080910001811149C080E40E943A0680
+:100EB00080930001882379F1B12C0E945C068B2D70
+:100EC000F8019081981719F08083C09201010E9467
+:100ED0007F0621960F5F1F4FCE30D10509F076CFE8
+:100EE00080910101882361F1815080930101882361
+:100EF00039F08FE99FE00197F1F700C0000020C0B2
+:100F0000A6E4B1E0E8E3F1E0CF01825F91919D9327
+:100F10008E13FCCF15C083E10E946406809300010C
+:100F20008111CACF81E40E943A06809300018111A9
+:100F3000C3CF0E947506B82EB094BFCF80E0C0CF5B
+:100F40000E94750581E0DF91CF911F910F91FF9075
+:100F5000EF90DF90CF90BF900895E82FF0E0EA5B2C
+:100F6000FE4F808108950895089596E0799FF001DD
+:100F7000112494E5899FE00DF11D1124E60FF11D68
+:100F8000EE0FFF1FE65EFD4F859194910895880F47
+:100F9000991FFC01E656FF4F859194910895880FA3
+:100FA000991FFC01E65EFD4F8591949108950F9382
+:100FB0001F93CF93DF93EC018115904350F5C1153A
+:100FC00080E2D80708F0B3C0CB3BD10590F4C83A13
+:100FD000D10508F05AC0C53AD10508F04BC0C4305D
+:100FE000D10508F0BBC1219709F0B5C101E010E0BF
+:100FF000F5C1CF3FD10511F008F0B0C1C03FD10518
+:1010000008F092C0CE01805E9109089708F4A6C14D
+:10101000A2C1C11591E5D907A8F4C23020E5D207D5
+:1010200008F09EC0C11580E5D80709F485C008F016
+:1010300091C0C11520E4D20708F08DC1DD278E01D3
+:10104000106CCCC1C11580E8D80758F4C11590E7E1
+:10105000D90708F07CC1C11520E6D20708F422C1E7
+:101060007AC1C11580E9D80708F075C1DF708E011B
+:10107000106AB4C1C53AD10509F472C1C63AD105A6
+:1010800009F071C102E810E4A9C1C83AD10509F418
+:101090006DC1C93AD10509F46CC1CA3AD10509F448
+:1010A0006BC1CB3AD10509F46AC1CC3AD10509F438
+:1010B00069C1CD3AD10509F468C1C03BD10509F435
+:1010C00067C1CE3AD10509F466C1CF3AD10509F41A
+:1010D00065C1C13BD10509F464C1C23BD10509F426
+:1010E00063C1C33BD10509F462C1C43BD10509F416
+:1010F00061C1C53BD10509F460C1C63BD10509F406
+:101100005FC1C73BD10509F45EC1C83BD10509F4F5
+:101110005DC1C93BD10509F45CC1CA3BD10509F4E5
+:101120005BC100E014E45AC18E01106557C1CE01C5
+:101130009F700E94CF0753C10E9426179FEF24E3A0
+:101140008CE0915020408040E1F700C000000E94F8
+:101150005E1E44C18091CF0181608093CF013EC16A
+:101160000E940720811102C00E94ED1F0E942420CE
+:1011700090E09093F0018093EF01C23090E5D907A1
+:1011800021F48091EF01816086C0C43020E5D20750
+:1011900021F48091EF0182607EC0C63080E5D807DF
+:1011A00021F48091EF01846076C0C83090E5D907C2
+:1011B00019F48091EF0127C0CA3020E5D20721F44D
+:1011C0008091EF01806167C0CC3080E5D80721F4C1
+:1011D0008091EF0180625FC0CE3090E5D90721F4A5
+:1011E0008091EF01806457C0C03120E5D20721F41F
+:1011F0008091EF0180684FC0C23180E5D80729F4A3
+:101200008091EF018460886046C0C33090E5D907C3
+:1012100021F48091EF018E7F3EC0C53020E5D207DA
+:1012200021F48091EF018D7F36C0C73080E5D8076B
+:1012300021F48091EF018B7F2EC0C93090E5D90752
+:1012400019F48091EF0126C0CB3020E5D20721F4BC
+:101250008091EF018F7E1FC0CD3080E5D80721F44B
+:101260008091EF018F7D17C0CF3090E5D90721F431
+:101270008091EF018F7B0FC0C13120E5D20721F4AF
+:101280008091EF018F7707C0C331D04531F4809151
+:10129000EF018B7F877F8093EF018091EF010E94A8
+:1012A00028209CC08D2F99278F7099278130910518
+:1012B000D9F49E012370332702C0880F991F2A9505
+:1012C000E2F79C688E0144E0000F111F4A95E1F798
+:1012D00000271370802B912B53E0CC0FDD1F5A9504
+:1012E000E1F7C076DD272FC08230910531F4DC2F85
+:1012F000CC278E01016F106A71C08330910569F4AB
+:10130000CE018370992701E010E002C0000F111F89
+:101310008A95E2F7C8019C680FC0049709F05EC087
+:10132000CE018370992701E010E002C0000F111F69
+:101330008A95E2F7C8019A6823E0CC0FDD1F2A9551
+:10134000E1F7C07ED7708C010C2B1D2B47C0DF70DE
+:101350008E01106243C000E010E040C08E013EC02C
+:1013600001E810E43BC003E810E438C002EE14E4E6
+:1013700035C009EE14E432C00AEE14E42FC005EBC8
+:1013800014E42CC006EB14E429C007EB14E426C0D7
+:101390000CEC14E423C00DEC14E420C003E815E4C5
+:1013A0001DC00AE815E41AC002E915E417C004E9F3
+:1013B00015E414C001E216E411C003E216E40EC005
+:1013C00004E216E40BC005E216E408C006E216E4E7
+:1013D00005C007E216E402C00AE216E4C801DF9184
+:1013E000CF911F910F91089596E0799FF0011124FC
+:1013F00094E5899FE00DF11D1124E60FF11DEE0F1C
+:10140000FF1FE65EFD4F85919491803E9105E0F4CB
+:10141000803C910558F58133910509F46FC048F47B
+:101420008932910509F463C08A32910509F46DC0CF
+:1014300072C089339105E9F082389105D1F0853386
+:10144000910509F44DC067C0833E910581F138F4E0
+:10145000803E9105B9F0823E9105D9F05CC0863E90
+:10146000910561F1873E9105A1F155C00E94C70722
+:1014700008952091EF0120FD02C021FF4CC080EEB5
+:1014800090E049C08091EF0180FFF9CF89E390E0BF
+:1014900042C08091EF0182FF0EC08091EF0184FF76
+:1014A00003C080E090E037C083EE90E034C08091CC
+:1014B000EF0182FFF2CF82EE90E02DC08091EF012C
+:1014C00083FF0BC08091EF0184FDEBCF87EE90E0AE
+:1014D00022C08091EF0183FFF5CF86EE90E01BC024
+:1014E0008091EF0185FF07C089E290E014C08091F0
+:1014F000EF0185FFF9CF85E390E00DC08091EF010A
+:1015000086FF07C08AE290E006C08091EF0186FF67
+:10151000F9CF81E390E00E94D707089508950C94D5
+:101520008E0A809164010895CF93DF9300D01F92BB
+:10153000CDB7DEB79C018091E601843019F593E0C8
+:1015400099833B832A839093E9008FEF9091E80081
+:10155000815095FD06C095ED9A95F1F70000811137
+:10156000F5CF8091E80085FF0DC040E050E063E0DA
+:1015700070E0CE0101960E94FE0C8091E8008E770B
+:101580008093E8000F900F900F90DF91CF91089516
+:10159000CF93DF9300D01F92CDB7DEB72091E60145
+:1015A000243021F522E029839B838A8383E0809382
+:1015B000E9008FEF9091E800815095FD06C095ED10
+:1015C0009A95F1F700008111F5CF8091E80085FF31
+:1015D0000DC040E050E063E070E0CE0101960E9453
+:1015E000FE0C8091E8008E778093E8000F900F90BA
+:1015F0000F90DF91CF9108952091E6012430F1F40E
+:1016000022E02093E9002FEF3091E800215035FDD2
+:1016100006C035ED3A95F1F700002111F5CF209184
+:10162000E80025FF0BC040E050E065E070E00E945C
+:10163000FE0C8091E8008E778093E8000895CF93A8
+:10164000DF93EC019091E601943009F046C080915F
+:101650000C018823D9F080910D018823B9F0909373
+:10166000E9008FEF9091E800815095FD06C095E16B
+:101670009A95F1F700008111F5CF8091E80085FF80
+:101680002CC040E050E060E170E017C081E0809342
+:10169000E9008FEF9091E800815095FD06C095ED2F
+:1016A0009A95F1F700008111F5CF8091E80085FF50
+:1016B00014C040E050E068E070E0CE010E94FE0CF3
+:1016C0008091E8008E778093E80080E1FE01A4E538
+:1016D000B1E001900D928A95E1F7DF91CF910895E5
+:1016E0008091E501811109C00E94930E0E94F00EC5
+:1016F0008091E20084608093E20008951092E501F9
+:10170000089508950C9497240E94F41D0E949D242E
+:101710000E9496110C948F0A42E061EC81E00E94D5
+:101720000D0E42E061EC82E00E940D0E42E061ECA1
+:1017300083E00E940D0E42E161EC84E00C940D0EFA
+:101740008091E801833009F455C030F4813071F0A4
+:10175000823009F48EC008958A3009F47AC08B3043
+:1017600009F460C0893009F09CC020C08091E70175
+:10177000813A09F096C08091E800877F8093E80065
+:101780008091EB019091EC01892B21F460E184E5DB
+:1017900091E003C060E080E090E070E00E94490DBD
+:1017A0008091E8008B778093E80008958091E701AD
+:1017B000813209F076C08091EB019091EC010097A5
+:1017C00019F0039709F06DC08091E800877F80933E
+:1017D000E8008091E80082FD05C08091E60181115A
+:1017E000F8CF5FC08091F100809364018091E800A0
+:1017F0008B7753C08091E701813A09F052C0809104
+:10180000EB019091EC01892B09F04BC08091E8002D
+:10181000877F8093E8008091E80080FFFCCF809173
+:101820000C0136C08091E7018132D9F58091EB013E
+:101830009091EC01892BA9F58091E800877F809336
+:10184000E8000E94420E8091E90180930C010C9403
+:1018500026178091E701813221F58091E800877F8A
+:101860008093E8000E94420E8091EA018093650116
+:1018700008958091E701813AA1F48091E800877F83
+:101880008093E8008091E80080FFFCCF80916501A3
+:101890008093F1008091E8008E778093E8000C94AB
+:1018A000420E089584B7877F84BF88E10FB6F8940D
+:1018B00080936000109260000FBE90E080E80FB649
+:1018C000F89480936100909361000FBE0E94E5112F
+:1018D0000E94930E0E94F00E8091E200846080933B
+:1018E000E20078940E9476110E94E71182E091E074
+:1018F0000E9491110E9485248091E601853069F44F
+:101900000E94B51D8091E4018823B1F30E94E01D7F
+:10191000882391F30E94E80CEFCF0E94ED11ECCFE9
+:10192000292F332723303105C9F064F421303105E4
+:1019300081F02230310509F043C08DE690E02EE3BE
+:1019400036E042C021323105F1F02232310541F159
+:1019500037C082E190E02BEA36E036C0992781302B
+:10196000910541F08230910541F0892B49F5EAE378
+:10197000F6E005C0E2E2F6E002C0EAE0F6E08491BB
+:1019800090E09F0121C06430D8F4E62FF0E0EE0F24
+:10199000FF1FEE5DFE4F2081318189E090E014C091
+:1019A000643070F470E0FB01EE0FFF1FE65EFE4F47
+:1019B00020813181FB01EA5EFE4F808190E004C00E
+:1019C00080E090E020E030E0FA0131832083089548
+:1019D00080E189BD82E189BD09B400FEFDCF80911F
+:1019E000D8008F7D8093D8008091E0008260809342
+:1019F000E0008091E00081FDFCCF0895CF92DF925E
+:101A0000EF92FF920F931F93CF93DF93EC018B0123
+:101A10006A010E94610E811133C0C114D10439F0F2
+:101A2000F60180819181081B190BC80FD91FE12C89
+:101A3000F12C0115110519F18091E80085FD16C002
+:101A40008091E8008E778093E800C114D10449F0BA
+:101A5000F60180819181E80EF91EF182E08285E035
+:101A60000FC00E94610E882321F30AC089918093E0
+:101A7000F10001501109FFEFEF1AFF0ADACF80E001
+:101A8000DF91CF911F910F91FF90EF90DF90CF905A
+:101A900008952091ED013091EE012617370748F0A7
+:101AA0006115710539F42091E8002E772093E80044
+:101AB00001C0B90140E061157105A9F12091E6016D
+:101AC000222309F443C0253009F442C02091E800E4
+:101AD00023FD40C02091E80022FD32C02091E800A3
+:101AE00020FFE9CF4091F3002091F20030E0342B49
+:101AF000FC01CF016115710559F02830310540F422
+:101B000081918093F100615071092F5F3F4FF1CFB8
+:101B100041E02830310509F040E02091E8002E77BF
+:101B20002093E800C8CF4111C9CF0AC08091E601D7
+:101B3000882361F0853061F08091E80083FD0AC060
+:101B40008091E80082FFF2CF80E0089582E008955E
+:101B500083E0089581E008952091ED013091EE0138
+:101B60002617370748F06115710539F42091E80010
+:101B70002E772093E80001C0B901FC0120E0611537
+:101B8000710591F18091E601882309F440C0853008
+:101B900009F43FC08091E80083FD3DC08091E800DA
+:101BA00082FD2FC08091E80080FFE9CF2091F300F3
+:101BB0008091F20090E0922B6115710559F0883008
+:101BC000910540F424912093F10031966150710900
+:101BD0000196F2CF21E0089709F020E08091E8001B
+:101BE0008E778093E800CBCF2111CCCF0AC08091B3
+:101BF000E601882361F0853061F08091E80083FD83
+:101C00000AC08091E80082FFF2CF80E0089582E070
+:101C1000089583E0089581E00895982F973058F54E
+:101C20009093E900981739F07091EC002091ED0045
+:101C30005091F00003C0242F762F50E021FF19C0EF
+:101C40003091EB003E7F3093EB003091ED003D7F13
+:101C50003093ED003091EB0031603093EB007093E6
+:101C6000EC002093ED005093F0002091EE0027FF50
+:101C700007C09F5FD3CF8F708093E90081E0089504
+:101C800080E008958091E70187FF11C08091E8000E
+:101C900082FD05C08091E6018111F8CF11C08091CD
+:101CA000E8008B770BC08091E601882349F0809192
+:101CB000E80080FFF8CF8091E8008E778093E800FD
+:101CC00008952091E4003091E50095E64091EC0004
+:101CD000842F817040FF22C08091E80080FD1CC0ED
+:101CE0008091E601882391F0853091F08091EB009E
+:101CF00085FD10C04091E4005091E5004217530764
+:101D000029F39A01915011F784E0089582E0089533
+:101D100083E0089581E0089580E008954091E8000F
+:101D200042FFDECF08950E94010F0E94090FE0EEEE
+:101D3000F0E0808181608083E8EDF0E080818F7742
+:101D4000808319BCA7EDB0E08C918E7F8C9380814D
+:101D50008F7E80831092E50108950F931F93CF9398
+:101D6000DF930E94010F0E94090FC8EDD0E0888127
+:101D70008F77888388818068888388818F7D888336
+:101D800019BC1092E6011092E2011092E401109247
+:101D9000E30100EE10E0F80180818B7F8083888171
+:101DA0008160888342E060E080E00E940D0EE1EEF9
+:101DB000F0E080818E7F8083E2EEF0E080818160C0
+:101DC0008083808188608083F80180818E7F80831A
+:101DD000888180618883DF91CF911F910F91089551
+:101DE000E8EDF0E080818F7E8083E7EDF0E0808198
+:101DF0008160808384E082BF81E08093E5010C9460
+:101E0000AD0EE8EDF0E080818E7F80831092E200DD
+:101E100008951092DA001092E10008951F920F9237
+:101E20000FB60F9211242F933F934F935F936F93AD
+:101E30007F938F939F93AF93BF93EF93FF93809183
+:101E4000E10082FF0BC08091E20082FF07C0809119
+:101E5000E1008B7F8093E1000E9475118091DA0090
+:101E600080FF1FC08091D80080FF1BC08091DA00E6
+:101E70008E7F8093DA008091D90080FF0DC080E1D1
+:101E800089BD82E189BD09B400FEFDCF81E0809368
+:101E9000E6010E94700B05C019BC1092E6010E9479
+:101EA0007E0B8091E10080FF19C08091E20080FFED
+:101EB00015C08091E2008E7F8093E2008091E20065
+:101EC00080618093E2008091D80080628093D80086
+:101ED00019BC85E08093E6010E94820B8091E100AD
+:101EE00084FF30C08091E20084FF2CC080E189BD76
+:101EF00082E189BD09B400FEFDCF8091D8008F7DBD
+:101F00008093D8008091E1008F7E8093E1008091E2
+:101F1000E2008F7E8093E2008091E20081608093F6
+:101F2000E2008091E201882311F084E007C08091F3
+:101F3000E30087FD02C081E001C083E08093E601F9
+:101F40000E94840B8091E10083FF29C08091E20010
+:101F500083FF25C08091E100877F8093E10082E0CC
+:101F60008093E6011092E2018091E1008E7F8093E0
+:101F7000E1008091E2008E7F8093E2008091E20098
+:101F800080618093E20042E060E080E00E940D0EFC
+:101F90008091F00088608093F0000E94810BFF9197
+:101FA000EF91BF91AF919F918F917F916F915F91D1
+:101FB0004F913F912F910F900FBE0F901F9018954A
+:101FC0001F920F920FB60F9211242F933F934F93AE
+:101FD0005F936F937F938F939F93AF93BF93CF93B1
+:101FE000DF93EF93FF93C091E900CF708091EC00F5
+:101FF000D82FD17080FDD0E81092E9008091F000D8
+:10200000877F8093F00078940E9424101092E9005A
+:102010008091F00088608093F000CD2BCF70C0934A
+:10202000E900FF91EF91DF91CF91BF91AF919F9127
+:102030008F917F916F915F914F913F912F910F9071
+:102040000FBE0F901F9018951F93CF93DF93CDB7BE
+:10205000DEB7AA970FB6F894DEBF0FBECDBFE7EE8E
+:10206000F1E088E08E0F9091F10091938E13FBCFF9
+:102070000E94A00B8091E80083FF1FC18091E701BF
+:102080009091E801492F50E04A30510508F015C100
+:10209000FA01EA59FF4F0C941F26803881F08238EC
+:1020A00009F00BC18091EB018F708093E900809162
+:1020B000EB0085FB882780F91092E90006C080912B
+:1020C000E3019091E401911182609091E800977F83
+:1020D0009093E8008093F1001092F100C8C0282F7F
+:1020E0002D7F09F0EAC0882319F0823061F0E5C045
+:1020F0008091E901813009F0E0C0933009F080E07F
+:102100008093E4012BC08091E901811127C0809167
+:10211000EB018F7009F4D1C08093E9002091EB00AE
+:1021200020FF1CC0933021F48091EB00806214C02A
+:102130009091EB0090619093EB0021E030E0A901D9
+:1021400002C0440F551F8A95E2F74093EA001092AF
+:10215000EA008091EB0088608093EB001092E90028
+:102160008091E800877F86C08111A7C01091E901A6
+:102170001F778091E3008078812B8093E30080912A
+:10218000E800877F8093E8000E94420E8091E8007B
+:1021900080FFFCCF8091E30080688093E300111101
+:1021A00002C082E001C083E08093E60186C08058CF
+:1021B000823008F082C08091E9019091EA018C3D63
+:1021C00053E0950779F583E08A838AE289834FB7E4
+:1021D000F894DE01139620E03EE051E2E32FF0E0B8
+:1021E00050935700E49120FF03C0E295EF703F5FEA
+:1021F000EF708E2F90E0EA3010F0C79601C0C096C5
+:102200008D939D932F5F243149F74FBF8091E80054
+:10221000877F8093E8006AE270E0CE0101960E9419
+:10222000490D14C0AE014F5F5F4F6091EB010E94FA
+:10223000900CBC01892B09F440C09091E800977F75
+:102240009093E80089819A810E94AC0D8091E8000A
+:102250008B778093E80031C0803879F58091E80071
+:10226000877F8093E8008091E2018093F100809164
+:10227000E8008E778093E8000E94420E1EC0811114
+:102280001CC09091E9019230C0F48091E800877FF2
+:102290008093E8009093E2010E94420E8091E20157
+:1022A000811106C08091E30087FD02C081E001C07A
+:1022B00084E08093E6010E948C0B8091E80083FF0C
+:1022C0000AC08091E800877F8093E8008091EB004E
+:1022D00080628093EB00AA960FB6F894DEBF0FBE23
+:1022E000CDBFDF91CF911F9108950895CF93809135
+:1022F000E6018823A1F0C091E900CF709091EC0035
+:10230000892F817090FD80E8C82B1092E9008091A0
+:10231000E80083FD0E942410CF70C093E900CF91A4
+:10232000089590936B0180936A010895E0916A018A
+:10233000F0916B01309721F00190F081E02D09942C
+:1023400080E00895E0916A01F0916B01309721F0EF
+:102350000280F381E02D09940895E0916A01F091E3
+:102360006B01309721F00480F581E02D09940895E8
+:1023700020916801309169018217930771F0909361
+:10238000690180936801E0916A01F0916B013097D7
+:1023900021F00680F781E02D0994089520916601CF
+:1023A000309167018217930771F0909367018093D2
+:1023B0006601E0916A01F0916B01309721F0008491
+:1023C000F185E02D0994089508950C94E4110E947C
+:1023D000FA1D0E94A7060C94C01ECF92DF92EF92C6
+:1023E000FF920F931F93CF93DF93CDB7DEB72B9759
+:1023F0000FB6F894DEBF0FBECDBF0E94BF068DE6BC
+:10240000C82E81E0D82E00E010E0E02E802F0E9440
+:10241000AD07F60141916F01F42EF826B1F40F5F7C
+:102420001F4F0E30110589F78FEF89838A831B8236
+:102430000E94031E8160782F9D838C8349815A817D
+:102440006B818D810E94901240C09091CF0191FFCD
+:1024500004C08B870E94B3078B8520E030E04F2DAE
+:1024600050E0922FBA01022E02C0759567950A942A
+:10247000E2F760FF24C02E83EF8221E030E06901A3
+:1024800002C0CC0CDD1C9A95E2F790E08C219D21D6
+:10249000892B09F420E028870E94031E8160782F91
+:1024A0009A8789874E815F8168858A850E9490120C
+:1024B000F801E359FE4F8081C826C08206C02F5F15
+:1024C0003F4F2630310569F6AACF0E94A72110910F
+:1024D0006C010E9496111817A1F00E94961180932A
+:1024E0006C012B960FB6F894DEBF0FBECDBFDF9107
+:1024F000CF911F910F91FF90EF90DF90CF900C94B0
+:102500008F0A2B960FB6F894DEBF0FBECDBFDF91BA
+:10251000CF911F910F91FF90EF90DF90CF90089592
+:10252000CF93DF93CDB7DEB72B970FB6F894DEBF0E
+:102530000FBECDBF4F83588769877A878B87DE01AF
+:10254000119686E0FD0111928A95E9F785E0FE017A
+:10255000379601900D928A95E1F749815A816B81F6
+:102560007C818D819E810E94C0192B960FB6F894B4
+:10257000DEBF0FBECDBFDF91CF9108950895CF93F9
+:10258000882309F4C2C0C82F823859F40E949611DA
+:1025900081FDBBC089E30E94691C0E94361D89E34E
+:1025A0000CC0833879F40E94961180FDAEC083E59B
+:1025B0000E94691C0E94361D83E50E94AB1CCF91CE
+:1025C0000C94361D843859F40E94961182FD9DC0EA
+:1025D00087E40E94691C0E94361D87E4EECF8CEFD1
+:1025E0008C0F813A48F48C2F0E94EA2381118DC010
+:1025F0008C2F0E94691CE3CF80E28C0F883048F456
+:10260000C77081E001C0880FCA95EAF70E94EF1CED
+:10261000D6CF8BE58C0F833078F4C53A29F0C63AD3
+:1026200031F083E890E005C081E890E002C082E8E4
+:1026300090E0CF910C94B81188E58C0F833108F0AD
+:1026400064C0C83A39F1C93A41F1CA3A49F1CB3AC2
+:1026500051F1CC3A59F1CD3A61F1C03B69F1CE3A32
+:1026600071F1CF3A79F1C13B81F1C23B89F1C33BB2
+:1026700091F1C43B99F1C53BA1F1C63BA9F1C73B20
+:10268000B1F1C83BB9F1C93BC1F1CA3BC9F180E026
+:1026900090E038C082EE90E035C089EE90E032C024
+:1026A0008AEE90E02FC085EB90E02CC086EB90E0A6
+:1026B00029C087EB90E026C08CEC90E023C08DEC25
+:1026C00090E020C083E891E01DC08AE891E01AC044
+:1026D00082E991E017C084E991E014C081E292E0C0
+:1026E00011C083E292E00EC084E292E00BC085E26A
+:1026F00092E008C086E292E005C087E292E002C064
+:102700008AE292E0CF910C94CE11CF910895882364
+:1027100009F44BC0823859F40E94961181FF45C0DC
+:1027200089E30E94691C0E94361D89E30CC083382E
+:1027300071F40E94961180FF38C083E50E94691CE5
+:102740000E94361D83E50E94AB1C0C94361D843814
+:1027500059F40E94961182FF28C087E40E94691CE8
+:102760000E94361D87E4EFCF9CEF980F913A58F303
+:1027700090E2980F983050F4877091E001C0990F63
+:102780008A95EAF7892F0E94F51CDFCF9BE5980F09
+:10279000933020F480E090E00C94B811885A833193
+:1027A00020F480E090E00C94CE110895882321F06D
+:1027B0000E94EF1C0C94361D0895882321F00E947E
+:1027C000F51C0C94361D0895BF92CF92DF92EF92C4
+:1027D000FF920F931F93CF93DF9300D000D000D0D0
+:1027E000CDB7DEB725E0FC01DE01119601900D9218
+:1027F0002A95E1F7FC01D080118102812581229583
+:102800002F7043815481452B09F4FCC21F3F21F4F2
+:10281000FFEFDF1609F4F6C27C012E830E94BE1280
+:10282000D9821A8369817A81802F0E94651C182FB2
+:10283000B92E0E941A1C0E94E11A2E81002319F061
+:102840000E940C1D2E81EB2DE295EF70F0E0E05917
+:10285000FF4F0C941F268B2D807F9B2D9F70F92E90
+:10286000882319F0F29480EFF822002389F0FF20EA
+:1028700009F475C280E2810F883020F48F2D0E9408
+:10288000EF1C03C08F2D0E94FF1C0E94361D67C2E3
+:10289000812F0E948713FF2009F4B4C2105E8F2D90
+:1028A000183018F40E94F51C02C00E94051D2696DF
+:1028B0000FB6F894DEBF0FBECDBFDF91CF911F9151
+:1028C0000F91FF90EF90DF90CF90BF900C94361D4A
+:1028D0003B2D307F8B2D8F70303211F08295807FB1
+:1028E000112319F0113021F12CC00023B9F022235B
+:1028F00009F4A0C1213009F09DC126960FB6F894C5
+:10290000DEBF0FBECDBFDF91CF911F910F91FF9022
+:10291000EF90DF90CF90BF900C941F1D222319F0F1
+:10292000213009F46FC28E830E94221D8E8196C1D0
+:10293000002321F0223008F065C27CC1211162C25F
+:102940008DC1002321F0222309F474C108C222237F
+:1029500009F484C119C22B2D26952695237030E0E9
+:102960002115310521F021303105D1F04BC2002372
+:1029700021F0812F9B2D937002C080E090E026967D
+:102980000FB6F894DEBF0FBECDBFDF91CF911F9180
+:102990000F91FF90EF90DF90CF90BF900C94B81103
+:1029A000002321F0812F9B2D937002C080E090E0E6
+:1029B00026960FB6F894DEBF0FBECDBFDF91CF9144
+:1029C0001F910F91FF90EF90DF90CF90BF900C94EC
+:1029D000CE11812F002319F00E94AF2002C00E9467
+:1029E000172126960FB6F894DEBF0FBECDBFDF913C
+:1029F000CF911F910F91FF90EF90DF90CF90BF90FC
+:102A00000C949C218B2D837009F07BC00111FAC1BD
+:102A1000812F829586958770880F880F912F9F70E0
+:102A2000C92ED12CE12CF12C082E04C0CC0CDD1CBD
+:102A3000EE1CFF1C0A94D2F714FF12C04FE050E0C6
+:102A400060E070E004C0440F551F661F771F8A9531
+:102A5000D2F7CB01BA01609570958095909503C02F
+:102A600060E070E0CB012B2D269526952370422F38
+:102A700050E042305105D9F04330510569F16C29DD
+:102A80007D298E299F294130510551F126960FB697
+:102A9000F894DEBF0FBECDBFDF91CF911F910F9194
+:102AA000FF90EF90DF90CF90BF900C94081B6C29A3
+:102AB0007D298E299F2926960FB6F894DEBF0FBE7A
+:102AC000CDBFDF91CF911F910F91FF90EF90DF90DD
+:102AD000CF90BF900C94241B0E94081BC701B60125
+:102AE00026960FB6F894DEBF0FBECDBFDF91CF9113
+:102AF0001F910F91FF90EF90DF90CF90BF900C94BB
+:102B0000EC1A002319F08B2D817001C08695882363
+:102B100009F478C1812F829586958770880F880F78
+:102B2000912F9F70C92ED12CE12CF12C082E04C0BE
+:102B3000CC0CDD1CEE1CFF1C0A94D2F714FF12C053
+:102B40004FE050E060E070E004C0440F551F661F86
+:102B5000771F8A95D2F7CB01BA0160957095809561
+:102B6000909503C060E070E0CB012B2D2695269553
+:102B70002370422F50E042305105D9F043305105C7
+:102B800069F16C297D298E299F294130510551F128
+:102B900026960FB6F894DEBF0FBECDBFDF91CF9162
+:102BA0001F910F91FF90EF90DF90CF90BF900C940A
+:102BB000E21B6C297D298E299F2926960FB6F89451
+:102BC000DEBF0FBECDBFDF91CF911F910F91FF9060
+:102BD000EF90DF90CF90BF900C94FE1B0E94E21B01
+:102BE000C701B60126960FB6F894DEBF0FBECDBF63
+:102BF000DF91CF911F910F91FF90EF90DF90CF90D9
+:102C0000BF900C94C61B103FD1F118F4103E50F445
+:102C1000A1C0123F09F463C008F44CC0133F09F48B
+:102C200073C098C01F708B2D8F710023A1F00E947C
+:102C30005F1B812F26960FB6F894DEBF0FBECDBF67
+:102C4000DF91CF911F910F91FF90EF90DF90CF9088
+:102C5000BF900C94D6130E94801B812F26960FB62E
+:102C6000F894DEBF0FBECDBFDF91CF911F910F91C2
+:102C7000FF90EF90DF90CF90BF900C94DD13002376
+:102C8000A9F02111BFC08B2D8F7126960FB6F89435
+:102C9000DEBF0FBECDBFDF91CF911F910F91FF908F
+:102CA000EF90DF90CF90BF900C94A51B223008F0DE
+:102CB000A9C0E9CF0023A9F08B2D8F7126960FB6FE
+:102CC000F894DEBF0FBECDBFDF91CF911F910F9162
+:102CD000FF90EF90DF90CF90BF900C945F1B00238C
+:102CE00059F38B2D8F7126960FB6F894DEBF0FBE69
+:102CF000CDBFDF91CF911F910F91FF90EF90DF90AB
+:102D0000CF90BF900C94801B002399F08B2D8F7176
+:102D100026960FB6F894DEBF0FBECDBFDF91CF91E0
+:102D20001F910F91FF90EF90DF90CF90BF900C9488
+:102D30004A1B26960FB6F894DEBF0FBECDBFDF91BB
+:102D4000CF911F910F91FF90EF90DF90CF90BF90A8
+:102D50000C94401B0023A9F0222309F4ADCF812F4E
+:102D600026960FB6F894DEBF0FBECDBFDF91CF9190
+:102D70001F910F91FF90EF90DF90CF90BF900C9438
+:102D8000BF12222309F4ADCF812F26960FB6F894F7
+:102D9000DEBF0FBECDBFDF91CF911F910F91FF908E
+:102DA000EF90DF90CF90BF900C9487134B2D4F7016
+:102DB000612FC7010E94420426960FB6F894DEBF29
+:102DC0000FBECDBFDF91CF911F910F91FF90EF907C
+:102DD000DF90CF90BF900C94641A4B2D4F70612FF1
+:102DE000C70126960FB6F894DEBF0FBECDBFDF91A8
+:102DF000CF911F910F91FF90EF90DF90CF90BF90F8
+:102E00000C94B40726960FB6F894DEBF0FBECDBF64
+:102E1000DF91CF911F910F91FF90EF90DF90CF90B6
+:102E2000BF9008950E940C1D0E941C1D0E94E11C71
+:102E30000E94361D0E944D220E949C2180E090E05D
+:102E40000E94B81180E090E00C94CE110E94FC1C0E
+:102E50000C9412170E945A1C292F22952F7030E0D3
+:102E60002C3031054CF42A3031056CF422503109F4
+:102E70002230310588F407C02C30310549F02F305D
+:102E8000310531F009C0803E48F0803F29F406C08A
+:102E900093FB882780F9089580E0089581E00895E4
+:102EA000CF93DF9300D000D01F92CDB7DEB70F9045
+:102EB0000F900F900F900F90DF91CF910895CF93C7
+:102EC000DF9300D000D000D0CDB7DEB726960FB686
+:102ED000F894DEBF0FBECDBFDF91CF9108951F9351
+:102EE000CF93DF93C0917B0116E080917C01C817DE
+:102EF00099F0D0E01C9FF0011D9FF00D1124E358C4
+:102F0000FE4F4081518162817381848195810E944D
+:102F10005F172196C770E9CFDF91CF911F91089578
+:102F20004091AD015091AE016091AF017091B0013F
+:102F30008091B1019091B2010C945F178091B20120
+:102F400082958F7009F054C08091AF01882309F4F5
+:102F50004FC080917B01A0917C016091AD01709187
+:102F6000AE014091B0015091B101B6E08A1709F469
+:102F70003FC090E041155105C1F17F3F11F46F3F13
+:102F8000A1F1B89FF001B99FF00D1124E358FE4F55
+:102F9000218172132AC02081621327C0228121114E
+:102FA00024C0238134812417350710F421503109BE
+:102FB000241B350B283C3105C0F42091B2012F7041
+:102FC00020612093B20126E0289FF001299FF00D97
+:102FD0001124EE57FE4F80818F70806180838DEACF
+:102FE00091E00E94E4130C946F1701968770BECF96
+:102FF0000895CF92DF92EF92FF920F931F93CF939A
+:10300000DF93CDB7DEB762970FB6F894DEBF0FBE81
+:10301000CDBF8C0185E0F801DE011D9601900D9277
+:103020008A95E1F7D8014C9111965C91119712960F
+:103030006C9112971396CD90DC9014973091AD015E
+:103040007091AE018091B0019091B101009709F4A7
+:103050006BC17F3F19F43F3F09F466C1E090AF01B7
+:10306000EE2009F4C0C02091B201C816D90628F09C
+:10307000F601E81BF90BCF0104C0809590958C0DEB
+:103080009D1DFF24F394883C910578F0F12C207F5E
+:1030900009F0C6C07C2DD98AC88A89890E94501738
+:1030A0008DEA91E00E94E413B1C0822F807F09F085
+:1030B00046C0751314C0341312C0611110C02F70B4
+:1030C00020612093B2010E9490178DEA91E00E9446
+:1030D000E4138091B201D80115968C932EC0CD28AF
+:1030E00019F15F3F11F44F3FF9F0F62E61111CC04A
+:1030F00080917B0120917C0136E0821709F45AC04F
+:1031000090E0389FF001399FF00D1124E358FE4FF5
+:103110007181571306C07081471303C0728171110A
+:1031200003C001968770E9CFF62E662309F418C113
+:103130008091B20181608093B201F12C11C17513AD
+:1031400008C0341306C0611104C08091B201D801D7
+:10315000C3C04D875E878D859E856A8B0E942A1726
+:103160006A898823E1F16623D1F12091B201822F8F
+:1031700082958F7090E0029774F08091AD019091EC
+:10318000AE0198878F831986DB86CA862C87CE018D
+:1031900007960E94E41386E0F801ADEAB1E00190E1
+:1031A0000D928A95E1F70E949E170E949017FF24C6
+:1031B000F394D6C04D875E878D859E850E945A1CEC
+:1031C000292F22952F7030E0223031050CF0BCC041
+:1031D0009F7009F0B6C0805E883008F4C1C0C80195
+:1031E0000E94E413E4CFC816D90608F453C0F601D0
+:1031F000E81BF90BCF01883C910508F450C0F12C75
+:103200007C2DD98AC88A89890E945017EDEAF1E09D
+:1032100086E0DF011D928A95E9F70E949017A0C011
+:10322000751314C0341312C0611110C08091B20123
+:10323000F8018583C8010E94E41386E0EDEAF1E01D
+:10324000DF011D928A95E9F7FE2C8AC04D875E87C3
+:103250008D859E856A8B0E942A176A89882309F4C6
+:10326000BECF662309F4BBCF2091B201822F829595
+:103270008F7090E002970CF48ECF8091AD01909109
+:10328000AE019A8389831B82DD82CC822E83CE019C
+:1032900001967FCF809590958C0D9D1DACCFF62E1D
+:1032A000662309F49CCF75132EC034132CC02091D3
+:1032B000B20120FD1FC0822F82958F70D9F0D801F6
+:1032C00015962C9315978F3049F08F5F982F929514
+:1032D000907F822F8F70892B15968C93C8010E9446
+:1032E000E41386E0F801ADEAB1E001900D928A9511
+:1032F000E1F793CF86E0F801ADEAB1E001900D92DD
+:103300008A95E1F72DC04D875E878D859E850E9449
+:103310002A17811140CF8091B20181608093B20160
+:10332000C8010E94E4131CC0662309F458CF4D87DE
+:103330005E878D859E850E942A17882309F44FCFCA
+:103340002ACF811148CF0CC0243031050CF047CF73
+:103350009F7009F440CFF8019581907F09F03BCF31
+:103360008F2D62960FB6F894DEBF0FBECDBFDF91F2
+:10337000CF911F910F91FF90EF90DF90CF90089524
+:103380001F93CF93DF93CDB7DEB72C970FB6F8948A
+:10339000DEBF0FBECDBF4F83588769877A878B8783
+:1033A0009C87CE0107960E94F917882369F08F81C8
+:1033B00098852A853B85232BF1F19F3F09F063C057
+:1033C0008F3F09F060C037C086E0FE013796DE010E
+:1033D000119601900D928A95E1F76F817885EA85C3
+:1033E000FB85309741F17F3F11F46F3F21F1209130
+:1033F0007C0130E0C90101968770992740917B01DB
+:1034000050E08417950709F447C069837A83FD83E8
+:10341000EC8396E0929FD001939FB00D1124A358A6
+:10342000BE4FFE01319601900D929A95E1F780937F
+:103430007C010E946F1716E080917B0190917C01C6
+:103440008917C1F1189FC001112483589E4F0E9413
+:10345000F917882379F1E0917B011E9FF001112477
+:10346000E358FE4F4081518162817381848195814F
+:103470000E945F1780917B0190E0019687709927E9
+:1034800080937B01D9CF4F81588569857A858B855B
+:103490009C850E945F17CFCF0E94261710927C0157
+:1034A00010927B01EDEAF1E086E0DF011D928A9542
+:1034B000E9F7C1CF2C960FB6F894DEBF0FBECDBF93
+:1034C000DF91CF911F910895EF92FF920F931F9379
+:1034D000CF93DF938C01892B09F46CC0F12CEE247F
+:1034E000E394E8012196F8018491843740F4843014
+:1034F00008F051C0813081F0823019F15BC085370E
+:1035000009F444C0A8F19CE7980F903708F052C026
+:103510008F770E94871341C00E5F1F4FFE01C49139
+:1035200080E28C0F883048F4C7708E2D01C0880F60
+:10353000CA95EAF70E940F1D14C08C2F0E94BF127B
+:103540002DC00E5F1F4FFE01C49180E28C0F8830AA
+:1035500058F4C7708E2D01C0880FCA95EAF70E94F3
+:10356000151D0E94361D1AC08C2F0E94871316C08D
+:103570000E5F1F4FFE01C491CC2381F08FE99FE0C5
+:103580000197F1F700C00000C150F6CF0E5F1F4F4A
+:10359000FE01F49003C00E94BF128E018F2D88237C
+:1035A00009F49FCFEFE9FFE03197F1F700C0000089
+:1035B0008150F5CFDF91CF911F910F91FF90EF9048
+:1035C000089508956093B7017093B8018093B9018D
+:1035D0009093BA010C9412170F931F930091B701A7
+:1035E0001091B8012091B9013091BA01DC01CB01F1
+:1035F000802B912BA22BB32B8093B7019093B80112
+:10360000A093B901B093BA011F910F910C941217B6
+:103610000F931F930091B7011091B8012091B90148
+:103620003091BA01DC01CB0180239123A223B32383
+:103630008093B7019093B801A093B901B093BA01F8
+:103640001F910F910C9412170F931F930091B701C4
+:103650001091B8012091B9013091BA01DC01CB0180
+:1036600080279127A227B3278093B7019093B801B1
+:10367000A093B901B093BA011F910F910C94121746
+:103680001092B3011092B4011092B5011092B601DC
+:103690000C94121741E050E060E070E004C0440F69
+:1036A000551F661F771F8A95D2F74093B301509339
+:1036B000B4016093B5017093B6010C94121741E008
+:1036C00050E060E070E004C0440F551F661F771F94
+:1036D0008A95D2F78091B3019091B401A091B50180
+:1036E000B091B601482B592B6A2B7B2B4093B30129
+:1036F0005093B4016093B5017093B6010C94121706
+:1037000041E050E060E070E004C0440F551F661FC8
+:10371000771F8A95D2F74095509560957095809166
+:10372000B3019091B401A091B501B091B6014823C5
+:1037300059236A237B234093B3015093B4016093D0
+:10374000B5017093B6010C94121741E050E060E0AF
+:1037500070E004C0440F551F661F771F8A95D2F78B
+:103760008091B3019091B401A091B501B091B601DF
+:10377000482759276A277B274093B3015093B40108
+:103780006093B5017093B6010C9412170F931F93B9
+:103790000091B3011091B4012091B5013091B601AF
+:1037A000DC01CB01802B912BA22BB32B8093B30197
+:1037B0009093B401A093B501B093B6011F910F91FE
+:1037C0000C9412170F931F930091B3011091B40141
+:1037D0002091B5013091B601DC01CB01802391230A
+:1037E000A223B3238093B3019093B401A093B501B6
+:1037F000B093B6011F910F910C9412170F931F9362
+:103800000091B3011091B4012091B5013091B6013E
+:10381000DC01CB0180279127A227B3278093B30136
+:103820009093B401A093B501B093B6011F910F918D
+:103830000C9412170895CF92DF92EF92FF920F939C
+:103840001F93CF93DF938C01C090B701D090B80144
+:10385000E090B901F090BA018091B3019091B40168
+:10386000A091B501B091B601C82AD92AEA2AFB2A4B
+:10387000CFE1D0E0D701C6010C2E04C0B695A795C4
+:10388000979587950A94D2F780FF06C0B8018C2FD0
+:103890000E94F409019721F4219760F780E001C0AC
+:1038A0008C2FDF91CF911F910F91FF90EF90DF90C0
+:1038B000CF900895CF93DF93EC010E941B1CBE01B3
+:1038C0000E94F409DF91CF910895CB010E945A1C08
+:1038D000089590910C01992321F090910D0191117F
+:1038E00009C020910E0130910F01F90132969FEF2E
+:1038F00040E01FC0982F9695969596959F3050F56D
+:10390000E0910E01F0910F01E90FF11D877021E0A8
+:1039100030E0A90102C0440F551F8A95E2F7CA01A1
+:103920009181892B818308959F3F39F04F5F4E30FD
+:1039300041F051915813F8CF0DC05111F7CF942F8A
+:10394000F5CF9F3F39F0F901E90FF11D97FDFA9589
+:1039500082830895089590910C01992321F090910C
+:103960000D01911109C020910E0130910F01F90153
+:103970003296205F3F4F1FC0982F9695969596954B
+:103980009F30F0F4E0910E01F0910F01E90FF11D6D
+:10399000877021E030E0A90102C0440F551F8A95CD
+:1039A000E2F7CA0180959181892381830895319638
+:1039B000E217F30729F090819813F9CF1082F7CF1F
+:1039C000089581E090E0E0910E01F0910F01E80F81
+:1039D000F91F1082019680319105A9F70895909101
+:1039E000CE01892B8093CE01089580959091CE01D0
+:1039F00089238093CE0108951092CE01089590916D
+:103A0000CD01892B8093CD01089580959091CD01B2
+:103A100089238093CD0108951092CD01089590914E
+:103A2000CC01892B8093CC01089580959091CC0195
+:103A300089238093CC0108951092CC01089580933E
+:103A4000BB0108951092BB01089580910E019091E1
+:103A50000F01FC0131969C01205F3F4F80E0919166
+:103A600091118F5FE217F307D1F70895E0910E01EE
+:103A7000F0910F018091CE018083E0910E01F091D1
+:103A80000F0190818091CD01892B8083E0910E01FF
+:103A9000F0910F0190818091CC01892B80838091DE
+:103AA000BB01882361F0E0910E01F0910F0190813C
+:103AB000892B80830E94251D81111092BB0180916A
+:103AC0000E0190910F010C94A211CF92DF92EF9210
+:103AD000FF926C01EE24FF24C114D104E104F1042F
+:103AE00021F0C701B60120E101C020E0C72ED82E89
+:103AF000E92EFF24C114D104E104F10419F0285F78
+:103B0000C701B6016B017C0154E0F694E794D794A9
+:103B1000C7945A95D1F7C114D104E104F10419F006
+:103B20002C5FC701B6016B017C0142E0F694E7947B
+:103B3000D794C7944A95D1F7C114D104E104F10494
+:103B400019F02E5FC701B601DC01CB01B695A79530
+:103B500097958795892B8A2B8B2B09F02F5F822FC6
+:103B6000FF90EF90DF90CF9008958091E601843030
+:103B700021F11092D00120E488E190E00FB6F89492
+:103B8000A895809360000FBE2093600080E00E94A3
+:103B90008F0A83B7817F846083BF83B7816083BFCF
+:103BA0007894889583B78E7F83BF88E10FB6F894A9
+:103BB00080936000109260000FBE089508950895EC
+:103BC000CF930E94DE1D0E94BF060E94DF1DC0E051
+:103BD0008C2F0E94AD07811104C0CF5FCE30C1F79A
+:103BE00001C081E0CF9108950E9426170E9496118E
+:103BF0000C948F0A82E084BD93E095BD9AEF97BD47
+:103C000080936E0008952FB7F8948091D101909120
+:103C1000D201A091D301B091D4012FBF0895CF92CA
+:103C2000DF92EF92FF920F931F932FB7F89440917A
+:103C3000D1015091D2016091D3017091D4012FBF75
+:103C40006A017B01EE24FF248C0120E030E0C016E5
+:103C5000D106E206F30610F4415051099A01281BDF
+:103C6000390BC9011F910F91FF90EF90DF90CF901A
+:103C700008951F920F920FB60F9211248F939F9366
+:103C8000AF93BF938091D1019091D201A091D301C4
+:103C9000B091D4010196A11DB11D8093D1019093E3
+:103CA000D201A093D301B093D401BF91AF919F9162
+:103CB0008F910F900FBE0F901F9018950E94930E3A
+:103CC000F8942FEF87EA91E6215080409040E1F789
+:103CD00000C0000087E090EBDC018093F00190933E
+:103CE000F101A093F201B093F3019CE088E10FB6DB
+:103CF000F894A895809360000FBE90936000FFCF6A
+:103D0000EF92FF920F931F93CF93DF93D82FC0E0D2
+:103D10008C2F0E94AD0700E010E0E82EF12CC701C7
+:103D2000002E02C0959587950A94E2F780FD06C0A3
+:103D30000F5F1F4F0630110591F709C0602F7C2FD0
+:103D400080E00E94B507D813F3CF81E004C0CF5FB5
+:103D5000CE30F1F680E0DF91CF911F910F91FF906F
+:103D6000EF900895CF93C82F8CE20E94801E882385
+:103D700021F08C2FCF910C94801E80E0CF9108957C
+:103D8000CF930E940720811102C00E94ED1FC5E65B
+:103D9000C15049F00E94BF068FE39CE90197F1F7FB
+:103DA00000C00000F5CF89E20E94B21E811113C14C
+:103DB0008AE20E94B21E81110E94ED1F85E00E94DE
+:103DC000B21E81110E945E1E0E9412208093CF01BC
+:103DD00087E00E94B21E8823A9F18BE10E94B21EE7
+:103DE000882351F08091CF0181FB222720F991E0B7
+:103DF000922790FB81F90EC08EE00E94B21E8823AC
+:103E000061F08091CF0182FB222720F991E0922777
+:103E100090FB82F98093CF0115C080E10E94B21E11
+:103E20009091CF01882341F093FB222720F981E074
+:103E3000822780FB93F904C0892F809580FB90F93D
+:103E40009093CF018091CF010E9416200E942420E0
+:103E50008093EF0180EE0E94B21E882341F0809192
+:103E6000EF01982F909590FB80F98093EF0189E303
+:103E70000E94B21E882359F08091EF0181FB222716
+:103E800020F991E0922790FB81F98093EF0182EE77
+:103E90000E94B21E882359F08091EF0182FB2227F5
+:103EA00020F991E0922790FB82F98093EF0186EE52
+:103EB0000E94B21E882359F08091EF0183FB2227D4
+:103EC00020F991E0922790FB83F98093EF0183EE34
+:103ED0000E94B21E882359F08091EF0184FB2227B3
+:103EE00020F991E0922790FB84F98093EF0185E31C
+:103EF0000E94B21E882359F08091EF0185FB222792
+:103F000020F991E0922790FB85F98093EF0181E3FE
+:103F10000E94B21E882359F08091EF0186FB222770
+:103F200020F991E0922790FB86F98093EF0181E1DF
+:103F30000E94B21E882359F08091EF0187FB22274F
+:103F400020F991E0922790FB87F98093EF0180910F
+:103F5000EF010E9428208091EF0187FB882780F9DC
+:103F600080930D0187E20E94B21EC82F8EE10E944D
+:103F7000B21E8111C2608FE10E94B21E8111C46025
+:103F800080E20E94B21E8111C86081E20E94B21ECE
+:103F90008111C06182E20E94B21E8111C06283E27F
+:103FA0000E94B21E8111C06484E20E94B21E882366
+:103FB00011F0C06802C0CC2329F08C2F0E941F2072
+:103FC0006C2F03C00E941B20682F70E080E090E0FF
+:103FD000CF910C94E21ACF9108956DEE7EEF80E0C0
+:103FE00090E00E94552660E082E090E00E94472623
+:103FF00060E083E090E00E94472660E084E090E08B
+:104000000E94472660E085E090E00C94472680E01F
+:1040100090E00E94412621E08D3E9E4F09F020E075
+:10402000822F089582E090E00C943926682F82E078
+:1040300090E00C94472683E090E00C943926682F9A
+:1040400083E090E00C94472684E090E00C943926BD
+:10405000682F84E090E00C9447268091D70180FF80
+:104060000BC06091130185E0689FB0011124759524
+:104070006795759567952BC081FF09C06091130105
+:1040800085E0689FB00111247595679520C082FF77
+:1040900007C06091130185E0689FB001112417C02B
+:1040A0009091D8019923D1F060911201961788F769
+:1040B0002091130185E0289F90011124929FA00177
+:1040C000939F500D112470E0CA010E940B266038A6
+:1040D000710540F46115710539F002C065E070E0CA
+:1040E000862F08958FE7089581E008958091D70184
+:1040F00080FF08C06091110170E075956795759516
+:10410000679521C081FF06C06091110170E075952F
+:10411000679519C082FF04C06091110170E010C062
+:104120009091D8019923C1F0609110019617A0F7E2
+:1041300080911101899FC001112470E00E940B261B
+:104140006038710528F46115710521F0862F0895F6
+:104150008FE7089581E0089561E070E0F4CF803F3B
+:1041600021F40E942D20819504C0813F29F40E94F2
+:104170002D208093DB010895823F21F40E942D20A1
+:10418000819504C0833F29F40E942D208093DA0199
+:104190000895893F19F40E94762005C08A3F31F4C2
+:1041A0000E94762081958093DC0108958B3F21F455
+:1041B0000E947620819504C08C3F29F40E947620CD
+:1041C0008093DD010895843F21F48091D9018160BD
+:1041D00017C0853F21F48091D901826011C0863FCC
+:1041E00021F48091D90184600BC0873F21F4809134
+:1041F000D901886005C0883F31F48091D901806180
+:104200008093D90108958D3F21F48091D701816079
+:104210000BC08E3F21F48091D701826005C08F3F93
+:1042200029F48091D70184608093D7010895803F5D
+:1042300039F48091DB0187FF6CC01092DB0169C00B
+:10424000813F29F48091DB011816BCF362C0909184
+:10425000DA01823F29F497FF5CC01092DA0159C05D
+:10426000833F19F41916CCF354C0893F41F480916F
+:10427000DC0118160CF04DC01092DC014AC08A3FD8
+:1042800029F48091DC0187FF44C0F6CF8B3F39F4DD
+:104290008091DD0187FF3DC01092DD013AC08C3F67
+:1042A00029F48091DD011816BCF333C0843F21F45A
+:1042B0008091D9018E7F17C0853F21F48091D9016B
+:1042C0008D7F11C0863F21F48091D9018B7F0BC077
+:1042D000873F21F48091D901877F05C0883F31F461
+:1042E0008091D9018F7E8093D90113C08D3F21F435
+:1042F0008091D7018E7F0BC08E3F21F48091D70132
+:104300008D7F05C08F3F29F48091D7018B7F8093EB
+:10431000D7018091DA0181110EC08091DB018111FA
+:104320000AC08091DC01811106C08091DD018111FC
+:1043300002C01092D801089589ED91E00E94AD115C
+:104340000E94031E9093D6018093D50108951F9378
+:10435000CF93DF938091D5019091D6010E940F1EDB
+:10436000AC019091D801992321F02091140130E003
+:1043700006C0209115018AE0289F90011124421760
+:10438000530708F486C08091DA01C091DB01D09117
+:10439000DC011091DD01811107C0C11176C0D1117E
+:1043A00074C0111172C075C09F3F19F09F5F909348
+:1043B000D801181624F40E942D208093DA018091F0
+:1043C000DA0187FF05C00E942D2081958093DA01D4
+:1043D0001C1624F40E942D208093DB018091DB01C8
+:1043E00087FF05C00E942D2081958093DB0160919D
+:1043F000DA01662339F1C091DB01CC2319F177276B
+:1044000067FD7095872F972F0E941C2523E333E3C8
+:1044100043E35FE30E9480250E94E9246093DA0170
+:104420006C2F772767FD7095872F972F0E941C258B
+:1044300023E333E343E35FE30E9480250E94E92402
+:104440006093DB011D1624F40E9476208093DC012A
+:104450008091DC0187FF05C00E94762081958093C2
+:10446000DC01111624F40E9476208093DD018091F6
+:10447000DD0187FF05C00E94762081958093DD01D4
+:10448000DF91CF911F910C949C219F3F09F08ECF1B
+:1044900096CFDF91CF911F910895E9EDF1E085E08E
+:1044A000DF011D928A95E9F71092D8011092D70189
+:1044B0000895833081F128F4813059F08230D1F0B1
+:1044C0000895853009F449C0B8F1863009F456C022
+:1044D000089580911501262F30E0280F311D2F3FC0
+:1044E000310524F4680F6093150108958FEF8093D0
+:1044F0001501089580911401262F30E0280F311DF9
+:104500002F3F310524F4680F6093140108958FEF55
+:1045100080931401089580911301262F30E0280F15
+:10452000311D2F3F310524F4680F60931301089566
+:104530008FEF80931301089580911201262F30E0B0
+:10454000280F311D2F3F310524F4680F60931201AD
+:1045500008958FEF80931201089580911101262F05
+:1045600030E0280F311D2F3F310524F4680F609390
+:10457000110108958FEF809311010895809110012A
+:10458000262F30E0280F311D2F3F310524F4680F0E
+:104590006093100108958FEF809310010895833088
+:1045A00011F128F4813049F0823091F0089585307E
+:1045B00081F120F18630C1F10895809115016817CD
+:1045C00020F4861B8093150108951092150108951B
+:1045D00080911401681720F4861B809314010895BC
+:1045E00010921401089580911301681720F4861B1E
+:1045F0008093130108951092130108958091120180
+:10460000681720F4861B80931201089510921201FE
+:10461000089580911101681720F4861B8093110181
+:10462000089510921101089580911001681720F4E7
+:10463000861B8093100108951092100108950F9326
+:104640001F938D3109F46BC008F03FC08E3009F420
+:104650007FC0C0F4873009F469C068F4863009F07F
+:10466000B1C08091CF01817F8E7F8093CF0181E0A7
+:104670008093DF01A8C0883009F4A2C08B3009F410
+:104680009FC0A0C0863109F49BC078F4803109F442
+:1046900072C0813109F096C00E94261790910D01D9
+:1046A00081E0892780930D018BC0893109F488C08E
+:1046B0008B3109F087C08091CF0181FB222720F93F
+:1046C00091E0922790FB81F94CC0853309F470C0CA
+:1046D00048F4873209F46CC008F459C0893209F4EF
+:1046E00067C070C0833438F48A3308F04EC0883312
+:1046F00009F466C067C0833409F45AC0883409F0ED
+:1047000061C00E9426170FEF13ED20E30150104007
+:104710002040E1F700C000000E945E1E51C00E94D0
+:10472000A3240E9496110E948F0A4AC09091CF0143
+:10473000892F8095817080FB90F929F096609860B0
+:104740009093CF0140C0997F977F9093CF0138C05D
+:104750008091CF0182FB222720F991E0922790FBE4
+:1047600082F98093CF01992359F18091CF01816023
+:104770008093CF0125C08091CF0183FB222720F9B0
+:1047800091E0922790FB83F9ECCF895301C08D51C2
+:1047900041E050E060E070E08A019B0104C0000F3E
+:1047A000111F221F331F8A95D2F7C901B80104C017
+:1047B00061E070E080E090E00E94E21A0E9426171B
+:1047C00081E001C080E01F910F91089580E008957D
+:1047D00080E00895CF93C82F8091DF01813079F078
+:1047E00018F08230E9F187C0E0910E01F0910F01DD
+:1047F0008081813169F0823209F07FC009C0E09187
+:104800000E01F0910F018081813111F0823261F44B
+:104810008C2F0E94E623811104C08C2F0E941F233D
+:104820001DC081E090E01AC08C2F0E94E823811106
+:1048300014C0C43179F048F4CB3079F0C03109F0BC
+:1048400060C082E08093DF0108C0C93219F0C8332C
+:1048500021F057C01092DF0154C081E0817053C035
+:10486000C93289F118F5C43171F1A8F4C73009F0E3
+:1048700046C08AE08093150194E19093140193E07F
+:10488000909313018093120188E08093110188E2D4
+:104890008093100134C0CE51C63088F5EC2FF0E083
+:1048A000E65DFE4F80818093DE0129C0CE34E9F0C1
+:1048B00020F4CB3421F56AE013C0C13579F0C2355C
+:1048C000F1F461E00DC08091DE01882319F01092AF
+:1048D000DE0115C081E08093DF0115C061E006C0F4
+:1048E0008091DE010E9459220AC06AE08091DE01B7
+:1048F0000E94CF2204C01092DF0180E004C081E05A
+:1049000002C080E0ABCFCF910895E1E8F0E0808174
+:10491000886080838081816080838FB7F89493E082
+:104920009093890090ED909388008FBF0895EFE6F3
+:10493000F0E08081826080830895EFE6F0E080817E
+:104940008D7F80830895EFE6F0E0908182E08927F3
+:10495000808308951F920F920FB60F9211242F9308
+:104960003F934F935F936F937F938F939F93AF93F7
+:10497000BF93EF93FF938091E0019091E101019645
+:104980009093E1018093E001811103C082E00E94D5
+:104990008F0AE091E101E695E695F0E0E854F84FE2
+:1049A000E4918091E0018E1303C080E00E948F0AA1
+:1049B000FF91EF91BF91AF919F918F917F916F91F7
+:1049C0005F914F913F912F910F900FBE0F901F90CD
+:1049D000189504D06894B1118DC0089570D088F0F6
+:1049E0009F5790F0B92F9927B751A0F0D1F0660FDB
+:1049F000771F881F991F1AF0BA95C9F712C0B130F6
+:104A000081F077D0B1E0089574C0672F782F8827A0
+:104A1000B85F39F0B93FCCF3869577956795B39534
+:104A2000D9F73EF490958095709561957F4F8F4FA3
+:104A30009F4F0895E89409C097FB3EF490958095A8
+:104A4000709561957F4F8F4F9F4F9923A9F0F92F54
+:104A500096E9BB279395F695879577956795B795D2
+:104A6000F111F8CFFAF4BB0F11F460FF1BC06F5FB8
+:104A70007F4F8F4F9F4F16C0882311F096E911C0CA
+:104A8000772321F09EE8872F762F05C0662371F0EB
+:104A900096E8862F70E060E02AF09A95660F771FFF
+:104AA000881FDAF7880F9695879597F9089557FD2F
+:104AB0009058440F551F59F05F3F71F04795880F8C
+:104AC00097FB991F61F09F3F79F087950895121623
+:104AD00013061406551FF2CF4695F1DF08C01616CF
+:104AE00017061806991FF1CF869571056105089480
+:104AF0000895E894BB2766277727CB0197F9089597
+:104B00000BD078C069D028F06ED018F0952309F04A
+:104B10005AC05FC01124EECFCADFA0F3959FD1F336
+:104B2000950F50E0551F629FF001729FBB27F00D5B
+:104B3000B11D639FAA27F00DB11DAA1F649F6627B0
+:104B4000B00DA11D661F829F2227B00DA11D621FFF
+:104B5000739FB00DA11D621F839FA00D611D221FB9
+:104B6000749F3327A00D611D231F849F600D211D9D
+:104B7000822F762F6A2F11249F5750408AF0E1F040
+:104B800088234AF0EE0FFF1FBB1F661F771F881F89
+:104B900091505040A9F79E3F510570F014C0AACF24
+:104BA0005F3FECF3983EDCF3869577956795B79574
+:104BB000F795E7959F5FC1F7FE2B880F911D96959E
+:104BC000879597F9089597F99F6780E870E060E00E
+:104BD00008959FEF80EC089500240A941616170696
+:104BE00018060906089500240A94121613061406DE
+:104BF00005060895092E0394000C11F4882352F041
+:104C0000BB0F40F4BF2B11F460FF04C06F5F7F4FF8
+:104C10008F4F9F4F089597FB072E16F4009407D0EF
+:104C200077FD09D00E94252607FC05D03EF490951B
+:104C300081959F4F0895709561957F4F0895EE0F70
+:104C4000FF1F0590F491E02D0994AA1BBB1B51E1B5
+:104C500007C0AA1FBB1FA617B70710F0A61BB70BEC
+:104C6000881F991F5A95A9F780959095BC01CD0191
+:104C70000895F999FECF92BD81BDF89A992780B524
+:104C80000895A8E1B0E042E050E00C945C26262FA5
+:104C9000F999FECF1FBA92BD81BD20BD0FB6F89421
+:104CA000FA9AF99A0FBE019608950E944726272F77
+:104CB0000C944826DC01CB01FC01F999FECF06C01B
+:104CC000F2BDE1BDF89A319600B40D9241505040CA
+:084CD000B8F70895F894FFCF36
+:104CD8002002910A1F0BFC0AC80A940A0101BC01B0
+:104CE80028080A03140A3F4D363979072C07F606B7
+:104CF800BD065006690682069B06010203040506E6
+:044D0800070809008F
+:00000001FF
- der Zehnerblock wurde in eine eigene Layer umgezogen
- die Meh und Hyper-Tasten wurden in die Daumenblöcke umgezogen
+# Erstellt Mit Dem ErgodoxLayoutGenerator
+
+Der ErgodoxLayoutGenerator ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
+Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
+
+
------------------------------
- the symbollayer now has only symbols
- the number block was moved to a special layer
- meh and hyper went down to the thumb block
+
+# Created Using the ErgodoxLayoutGenerator
+
+The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
+
+The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/).
+
-// Netable differences vs. the default firmware for the ErgoDox EZ:
-// 1. The Cmd key is now on the right side, making Cmd+Space easier.
-// 2. The media keys work on OSX (But not on Windows).
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
+#include "keymap_extras/keymap_french.h"
+#include "keymap_extras/keymap_neo2.h"
+#include "keymap_extras/keymap_uk.h"
+#include "keymap_extras/keymap_colemak.h"
+#include "keymap_extras/keymap_french_osx.h"
+#include "keymap_extras/keymap_nordic.h"
+#include "keymap_extras/keymap_dvorak.h"
#include "keymap_extras/keymap_german.h"
+#include "keymap_extras/keymap_norwegian.c"
+#include "keymap_extras/keymap_fr_ch.h"
+#include "keymap_extras/keymap_german_osx.h"
+#include "keymap_extras/keymap_spanish.h"
+#include "keymap_extras/keymap_bepo.h"
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
-#define ADNW 3 // media keys
-#define NUMB 4 // number keys
-
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define QWERTZ 3
+#define NUMB 4
+#define UNUSED 0
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-
-/* Keymap 0: ADNW-Koy layer
- * ADNW-Koy is a special layout designed to be ergonomic. Was created using software to determine the most ergonomic way to type German and English texts.
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 |Lctrl | |Rctrl | 6 | 7 | 8 | 9 | 0 | - |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | TAB | K | . | O | , | Y | CMD | | CMD | V | G | C | L | ß | Z |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | ADNW | H | A | E | I | U |------| |------| D | T | R | N | S | F/L2 |
- * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
- * | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M |J/Ctrl| RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |</L1| ^ |AltShf| Left | Right| | Up | Down | CMD-SHIFT | ´ | //L1 |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | L1 | LGui | | Alt |Ctrl/Esc|
- * ,------|------|------| |------+--------+------.
- * | | | Home | | PgUp | | |
- * | Space|Backsp|------| |------| Enter | Space|
- * | |ace | End | | PgDn | | |
- * `--------------------' `----------------------'
- */
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_TRNS,
- KC_TRNS, KC_H, KC_A, KC_E, KC_I, KC_U,
- KC_TRNS, CTL_T(KC_X),KC_Q, DE_AE, DE_UE, DE_OE, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH,
- KC_TRNS, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y,
- KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F),
- KC_TRNS, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | ! | ? | | | | | \ | [ | ] | | | # | F12 |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | . | ! | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// SYMBOLS
-[SYMB] = KEYMAP(
- // left hand
- KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS,KC_GRV,LSFT(KC_GRV),DE_EXLM,DE_QST,KC_TRNS,KC_TRNS,
- KC_TRNS,DE_HASH,DE_DLR, LALT(LSFT(KC_7)),DE_SLSH,KC_DOT,
- KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,LALT(KC_7),LALT(KC_N),KC_TRNS,
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
- KC_TRNS,KC_TRNS,
- KC_TRNS,
- KC_TRNS,KC_DEL,KC_TRNS,
- // right hand
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12,
- DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS,
- KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST,
- KC_TRNS,KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | | | | | | | Play |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | MsUp | | | | | | | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | | | | | | | Prev | Next | | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | |Brwser|
- * | | |------| |------| |Back |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
- KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
- KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RIGHT,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_WBAK
-),
-/* Keymap 3: qwertz layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | ADNW | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/L2 |
- * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
- * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |</L1| ^° |AltShf| Left | Right| | Up | Down | CMD-SHIFT | + | #/L1 |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,---------------.
- * | MDIA | Meh | | Hyper| NUM |
- * ,------|------|------| |------+--------+------.
- * | | | Home | | PgUp | | |
- * | Back-| Del |------| |------| Enter | Space|
- * | Space| | End | | PgDn | | |
- * `--------------------' `----------------------'
- */
-
-[BASE] = KEYMAP( // layer 3 : default qwertz layout
- // left hand
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V),
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI,
- TG(3), KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT,
- LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
- TG(2), MEH_T(LSFT(DE_ACUT)),
- KC_HOME,
- KC_BSPC,KC_DEL,KC_END,
- // right hand
- LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
- KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE,
- KC_H, KC_J, KC_K, KC_L, KC_SCLN,LT(MDIA,DE_AE),
- KC_RALT,KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
- KC_UP, KC_DOWN,LGUI(KC_LSFT),KC_RBRC, LT(SYMB,KC_BSLS),
- ALL_T(DE_ACUT), TG(4),
- KC_PGUP,
- KC_PGDN,KC_ENT, KC_SPC
- ),
-//numblock
-KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
- KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, KC_TRNS,
- KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
- KC_0,KC_DOT, KC_0, KC_EQL, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
+[BASE]=KEYMAP(
+//left half
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCTL,
+ KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_LGUI,
+ TG(QWERTZ), KC_H, KC_A, KC_E, KC_I, KC_U,
+ KC_LSFT, CTL_T(KC_X), KC_Q, DE_AE, DE_UE, DE_OE, KC_LALT,
+ LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+ TG(MDIA), MEH_T(LSFT(DE_ACUT)),
+ KC_HOME,
+ KC_BSPC, KC_DEL, KC_END,
+ //right half
+ KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_OSX_MINS,
+ KC_RGUI, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y,
+ KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F),
+ KC_RALT, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT,
+ KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS),
+ ALL_T(DE_ACUT), TG(NUMB),
+ KC_PGUP,
+ KC_PGDN, KC_ENT, KC_SPC),
+[SYMB]=KEYMAP(
+//left half
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QST, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_HASH, DE_DLR, LALT(LSFT(KC_7)), DE_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_LESS, DE_PERC, LALT(KC_7), LALT(KC_N), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
+ //right half
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12,
+ DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS,
+ KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST,
+ KC_TRNS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[MDIA]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK),
+[QWERTZ]=KEYMAP(
+//left half
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V),
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI,
+ KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT,
+ LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+ KC_TRNS, MEH_T(LSFT(DE_ACUT)),
+ KC_HOME,
+ KC_BSPC, KC_DEL, KC_END,
+ //right half
+ LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_AE),
+ KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS),
+ ALL_T(DE_ACUT), KC_TRNS,
+ KC_PGUP,
+ KC_PGDN, KC_ENT, KC_SPC),
+[NUMB]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, KC_TRNS,
+ KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
+ KC_0, KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
};
const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols)
- [2] = ACTION_LAYER_TAP_TOGGLE(ADNW) // FN2 - Momentary Layer 2 (ADNW)
+
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
+static uint16_t start;
+switch(id) {
+case UNUSED:
+//Macro: UNUSED//-----------------------
+
+
+
+
+
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
- break;
- }
- return MACRO_NONE;
+
+
+
+break;
+}
+return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+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) {
- ergodox_board_led_off();
- ergodox_right_led_1_off();
- ergodox_right_led_2_off();
- ergodox_right_led_3_off();
- switch (layer) {
- // TODO: Make this relevant to the ErgoDox EZ.
- case 1:
- ergodox_right_led_1_on();
- break;
- case 2:
- ergodox_right_led_2_on();
- break;
- case 3:
- ergodox_right_led_3_on();
- break;
- case 4:
- ergodox_right_led_1_on();
- ergodox_right_led_3_on();
- //ergodox_board_led_on();
- break;
- default:
- // none
- break;
- }
+default:
+// none
+break;
+}
};
+
-:100000000C9466020C94AD020C94AD020C94AD02FB\r
-:100010000C94AD020C94AD020C94AD020C94AD02A4\r
-:100020000C94AD020C94AD020C94CF0B0C94A10C6B\r
-:100030000C94AD020C94AD020C94AD020C94AD0284\r
-:100040000C94AD020C9415210C94AD020C94AD02ED\r
-:100050000C94AD020C94A71A0C94AD020C94AD0252\r
-:100060000C94AD020C94AD020C94AD020C94AD0254\r
-:100070000C94AD020C94AD020C94AD020C94AD0244\r
-:100080000C94AD020C94AD020C94AD020C94AD0234\r
-:100090000C94AD020C94AD020C94AD020C94AD0224\r
-:1000A0000C94AD020C94AD020C94AD020E0D300D0B\r
-:1000B000230E300D230E750D980D230EED0D000E41\r
-:1000C000EA10EA10191119115C119611A313A31368\r
-:1000D000AF11A313A412A4127713A313A3138E13A7\r
-:1000E0000000F0A1F0A329002B000354E1003581AA\r
-:1000F00000001E00140004001D7164004D001F006C\r
-:100100001A0016001B00E1044C0020000800070044\r
-:10011000060050002A0021001500090019004F00B8\r
-:100120004A00220017000A000500000002541908C6\r
-:10013000E3000000E20000002E770608E700000060\r
-:10014000E60000002E7F23001C000B0011000000C1\r
-:100150000454240018000D00100052004B0025002C\r
-:100160000C000E00360051002C00260012000F007B\r
-:100170003700E108280027001300330038713000F1\r
-:100180004E002D002F003482E50031810000010077\r
-:100190000100010001000100000001000100010058\r
-:1001A00001000100010001000100500001000100F8\r
-:1001B0000100010052005100010001000100010096\r
-:1001C00001004F00010001000100010001000100D9\r
-:1001D000010000000100010001000000010000001A\r
-:1001E00001000100010000000100000001003F00CB\r
-:1001F00052005100230200000100400024002100B1\r
-:100200001E00270001004100250022001F003700CA\r
-:1002100001004200260023002000270001004300C7\r
-:100220003002300024022E0001004400450001008D\r
-:1002300001000100000001000100010001000100B7\r
-:100240000000010001000100FB00010001000100AD\r
-:100250000100F200F900010001000100F000F100CE\r
-:10026000FA00F400010001000100F300FC00F500B9\r
-:100270000100010001000100F60000000100010082\r
-:100280000100000001000000010001000100000069\r
-:100290000100000001000100010001000100000058\r
-:1002A0000100010001000100A800A90001000100F7\r
-:1002B00001000100AC00AA00B6000100010001002D\r
-:1002C000AB0050000100010001000100520051008C\r
-:1002D0000100AE000100010001004F000000160304\r
-:1002E0004500720067006F0044006F007800200036\r
-:1002F00045005A00000016034500720067006F00B9\r
-:1003000044006F007800200045005A0000000403FC\r
-:10031000090409026D00040100A0FA0904000001AB\r
-:1003200003010100092111010001223F000705819D\r
-:100330000308000A09040100010301020009211158\r
-:10034000010001224D000705820308000A0904028A\r
-:1003500000010300000009211101000122360007FD\r
-:1003600005830308000A09040300010300000009D3\r
-:100370002111010001223900070584031000011238\r
-:1003800001100100000008EDFE071301000102004A\r
-:100390000105010906A101050719E029E715002556\r
-:1003A0000195087501810205081901290595057552\r
-:1003B000019102950175039101050719002977152F\r
-:1003C000002501957875018102C005010980A10110\r
-:1003D000850216010026B7001A01002AB700751021\r
-:1003E00095018100C0050C0901A1018503160100DA\r
-:1003F000269C021A01002A9C02751095018100C0FA\r
-:1004000005010902A1010901A10005091901290538\r
-:10041000150025019505750181029501750381017E\r
-:100420000501093009311581257F9502750881067E\r
-:1004300009381581257F950175088106050C0A3854\r
-:10044000021581257F950175088106C0C005010947\r
-:1004500006A101050719E029E71500250195087592\r
-:100460000181029501750881010508190129059589\r
-:100470000575019102950175039101050719002980\r
-:10048000FF150025FF950675088100C000000000DB\r
-:1004900000000000000000010204060A0F17202CD3\r
-:1004A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9CF\r
-:1004B000DAC7B39D87715D4A3A2C20170F0A0604EC\r
-:1004C00002010000000000000000000011241FBE17\r
-:1004D000CFEFDAE0DEBFCDBF04B603FE27C08091C8\r
-:1004E000ED019091EE01A091EF01B091F001873004\r
-:1004F000904BA740B04BD1F41092ED011092EE0159\r
-:100500001092EF011092F00114BE84B7877F84BF70\r
-:100510000FB6F894A8958091600088618093600080\r
-:10052000109260000FBEE0E0FFE3099511E0A0E04B\r
-:10053000B1E0ECECF5E402C005900D92A433B107F4\r
-:10054000D9F721E0A4E3B1E001C01D92AD3EB207AE\r
-:10055000E1F70E9416090C94E4220C94000061114A\r
-:100560000BC0FC018281882321F085EE0E94840F5C\r
-:1005700003C085EE0E944C1080E090E0089508953D\r
-:100580006091B1017091B2018091B3019091B40179\r
-:100590000E94D41956985E9825982D9826982E98E2\r
-:1005A00027982F98823061F018F4813031F0089547\r
-:1005B000833059F0843039F00895259A2D9A0895A2\r
-:1005C000269A2E9A0895259A2D9A279A2F9A089559\r
-:1005D0000C94C00256985E9825982D9826982E98CF\r
-:1005E00027982F988FEF90E0909389008093880050\r
-:1005F00090938B0080938A0090938D0080938C0061\r
-:10060000259A2D9A2FEF80E792E02150804090406C\r
-:10061000E1F700C00000269A2E9A2FEF80E792E0C3\r
-:10062000215080409040E1F700C00000279A2F9AA7\r
-:100630002FEF80E792E0215080409040E1F700C02A\r
-:10064000000025982D982FEF80E792E02150804000\r
-:100650009040E1F700C0000026982E982FEF80E729\r
-:1006600092E0215080409040E1F700C000002798C0\r
-:100670002F9856985E9825982D9826982E9827980A\r
-:100680002F98089589EA8093800089E08093810003\r
-:1006900024982C983F988AB18F748AB96E98479A9B\r
-:1006A0008BB1806B8BB9769A0E94EA020C94BF02E0\r
-:1006B00080E2809300018091340181110EC00E947C\r
-:1006C000A70381E0809334012FEF83ED90E3215065\r
-:1006D00080409040E1F700C0000080E40E94AD033C\r
-:1006E0008093000181112EC00E94D70380930001E6\r
-:1006F000811128C00E94D70380930001811122C07C\r
-:100700008FE30E94D7038093000181111BC00E94D8\r
-:10071000CF0380E40E94AD0380930001811112C0D9\r
-:100720008CE00E94D7038093000181110BC00E94CE\r
-:10073000D70380930001811105C08FE30E94D70386\r
-:10074000809300010E94CF038091000108951092D0\r
-:10075000B9008AE08093B800089594EA9093BC00B1\r
-:100760009091BC0097FFFCCF9091B900987F983092\r
-:1007700021F0903111F081E008958093BB0084E86E\r
-:100780008093BC008091BC0087FFFCCF8091B900B2\r
-:10079000887F883111F0803471F780E0089584E912\r
-:1007A0008093BC008091BC0084FDFCCF08958093B1\r
-:1007B000BB0084E88093BC008091BC0087FFFCCF25\r
-:1007C0009091B900987F81E0983209F480E0089513\r
-:1007D00084E88093BC008091BC0087FFFCCF8091AF\r
-:1007E000BB00089580910001811115C080E40E9432\r
-:1007F000AD038093000181110CC082E10E94D703F8\r
-:1008000080930001811105C08FEF0E94D703809370\r
-:1008100000010E94CF0384B1807F84B985B1807FBD\r
-:1008200085B98AB1837F8AB98BB1837F8BB93E98B2\r
-:10083000469808950E945803809300010E94F20395\r
-:1008400080B38C7080BB81B3836F81BBE4E4F1E043\r
-:10085000A6E3B1E011921D9281E0E235F807D1F7ED\r
-:100860000C9442039F92AF92BF92CF92DF92EF928D\r
-:10087000FF920F931F93CF93DF9380910001882302\r
-:1008800079F0809135018F5F80933501811108C027\r
-:100890000E94580380930001811102C00E94EA0265\r
-:1008A00086E3E82E81E0F82E8701C0E0D0E0BB248B\r
-:1008B000B39492E0A92ECC24C394D12CC730D10597\r
-:1008C00000F580910001811164C080E40E94AD03B5\r
-:1008D00080930001811112C082E10E94D7038093AE\r
-:1008E000000181110BC0C6010C2E01C0880F0A94B3\r
-:1008F000EAF780950E94D703809300010E94CF03FE\r
-:1009000048C0CA30A1F028F4C83059F0C93061F0AD\r
-:1009100005C0CC3089F070F0CD3089F0209A28984D\r
-:1009200010C0219A29980DC0229A2A980AC0239AA9\r
-:100930002B9807C0529A01C0539A5B9802C03E9A06\r
-:100940004698E0EAEA95F1F78FB181708B257999A5\r
-:1009500002C032E001C030E0832B7C9902C034E059\r
-:1009600001C030E0832B7D9902C028E001C020E067\r
-:10097000822B7E9902C090E101C090E0892B9FB14B\r
-:100980009095991F9927991F9295990F907E892B81\r
-:100990000FC08091000181114AC080E40E94AD0324\r
-:1009A00080930001882381F1912C0E94CF03892D2F\r
-:1009B000D8019C91981719F08C93A09201010E9484\r
-:1009C000F20321960F5F1F4FCE30D10509F076CF8D\r
-:1009D00080910101882369F181508093010188236E\r
-:1009E00039F0EFE9FFE03197F1F700C0000021C0D6\r
-:1009F000E4E4F1E0D7018D917D018193B4E4EB163D\r
-:100A0000B1E0FB06B9F715C083E10E94D7038093DC\r
-:100A100000018111C9CF81E40E94AD0380930001E0\r
-:100A20008111C2CF0E94E803982E9094BECF80E03F\r
-:100A3000BFCF0E94E80281E0DF91CF911F910F911B\r
-:100A4000FF90EF90DF90CF90BF90AF909F90089570\r
-:100A5000E82FF0E0EC5BFE4F8081089508958B3B1A\r
-:100A6000910580F4883A910548F5853A9105D8F4C6\r
-:100A70008430910508F0B2C0019709F06EC081E0A2\r
-:100A800090E00895803E910508F467C0883E910586\r
-:100A900008F4A4C09C01205F31092031310508F021\r
-:100AA0005CC090650895853A910509F459C0863A6D\r
-:100AB000910509F058C082E890E40895883A9105BC\r
-:100AC00009F454C0893A910509F453C08A3A910552\r
-:100AD00009F452C08B3A910509F451C08C3A910542\r
-:100AE00009F450C08D3A910509F44FC0803B91053F\r
-:100AF00009F44EC08E3A910509F44DC08F3A910524\r
-:100B000009F44CC0813B910509F44BC0823B91052F\r
-:100B100009F44AC0833B910509F449C0843B91051F\r
-:100B200009F448C0853B910509F447C0863B91050F\r
-:100B300009F446C0873B910509F445C0883B9105FF\r
-:100B400009F444C0893B910509F443C08A3B9105EF\r
-:100B500009F442C080E094E4089580E090E00895B4\r
-:100B600081E890E4089583E890E4089582EE94E4A7\r
-:100B7000089589EE94E408958AEE94E4089585EB4F\r
-:100B800094E4089586EB94E4089587EB94E4089543\r
-:100B90008CEC94E408958DEC94E4089583E895E456\r
-:100BA00008958AE895E4089582E995E4089584E932\r
-:100BB00095E4089581E296E4089583E296E4089529\r
-:100BC00084E296E4089585E296E4089586E296E448\r
-:100BD000089587E296E408958AE296E408950895D8\r
-:100BE00024E5829FC0011124FC0126E0729FE00DE4\r
-:100BF000F11D1124E60FF11DEE0FFF1FEA51FF4F0B\r
-:100C0000859194910895880F991FFC01E05AF04056\r
-:100C1000859194910895880F991FFC01E052FF4F30\r
-:100C200085919491089524E5829FC0011124FC01CF\r
-:100C300046E0749FE00DF11D1124E60FF11DEE0F4B\r
-:100C4000FF1FEA51FF4F859194919C013A95211520\r
-:100C50004FE1340708F425C13F512115304120F4FC\r
-:100C60009F700E940B0608959C013053211530415E\r
-:100C700018F49927906C0895811520E5920769F47E\r
-:100C80000E94C5134FEF84E39CE0415080409040A8\r
-:100C9000E1F700C000000C94CC1A813020E59207E7\r
-:100CA00031F48091CC0181608093CC0108959C0146\r
-:100CB00030552115304108F05CC0292F33272F70A3\r
-:100CC000332721303105E9F4AC0164E0440F551FAE\r
-:100CD0006A95E1F744275370BC016370772702C01F\r
-:100CE000220F331F6A95E2F73C68242B352B73E003\r
-:100CF000880F991F7A95E1F780769927822B932B9D\r
-:100D000008952230310529F4982F8827816F906A41\r
-:100D1000089523303105A1F4AC0133E0440F551F91\r
-:100D20003A95E1F7407E57708370992721E030E0D3\r
-:100D300002C0220F331F8A95E2F7C9019C6816C0D2\r
-:100D40002430310531F5AC0123E0440F551F2A95BD\r
-:100D5000E1F7407E57708370992721E030E002C0B0\r
-:100D6000220F331F8A95E2F7C9019A68842B952BCD\r
-:100D700008959C0130572115304118F49F709062FE\r
-:100D800008959C0130582115304118F49F70906AE5\r
-:100D90000895803E9105E0F4803C910558F581333B\r
-:100DA000910509F46FC048F48932910509F463C0D4\r
-:100DB0008A32910509F46DC072C089339105E9F05A\r
-:100DC00082389105D1F08533910509F44DC067C093\r
-:100DD000833E910581F138F4803E9105B9F0823E61\r
-:100DE0009105D9F05CC0863E910561F1873E910581\r
-:100DF000A1F155C00E94030608952091DE0120FD57\r
-:100E000002C021FF4CC080EE90E049C08091DE011D\r
-:100E100080FFF9CF89E390E042C08091DE0182FF3C\r
-:100E20000EC08091DE0184FF03C080E090E037C0F7\r
-:100E300083EE90E034C08091DE0182FFF2CF82EE3B\r
-:100E400090E02DC08091DE0183FF0BC08091DE0118\r
-:100E500084FDEBCF87EE90E022C08091DE0183FF1E\r
-:100E6000F5CF86EE90E01BC08091DE0185FF07C0C4\r
-:100E700089E290E014C08091DE0185FFF9CF85E31F\r
-:100E800090E00DC08091DE0186FF07C08AE290E00D\r
-:100E900006C08091DE0186FFF9CF81E390E00E94D9\r
-:100EA0002F0508950895809162010895CF93DF93EF\r
-:100EB00000D01F92CDB7DEB79C018091E401843051\r
-:100EC00019F593E099833B832A839093E9008FEF90\r
-:100ED0009091E800815095FD06C095ED9A95F1F747\r
-:100EE00000008111F5CF8091E80085FF0DC040E042\r
-:100EF00050E063E070E0CE0101960E94C30980914A\r
-:100F0000E8008E778093E8000F900F900F90DF91AC\r
-:100F1000CF910895CF93DF9300D01F92CDB7DEB766\r
-:100F20002091E401243021F522E029839B838A83E8\r
-:100F300083E08093E9008FEF9091E800815095FD68\r
-:100F400006C095ED9A95F1F700008111F5CF8091DB\r
-:100F5000E80085FF0DC040E050E063E070E0CE01A6\r
-:100F600001960E94C3098091E8008E778093E80083\r
-:100F70000F900F900F90DF91CF9108959C01809179\r
-:100F8000E4018430F9F482E08093E9009FEF8091DE\r
-:100F9000E800915085FD06C085ED8A95F1F70000C7\r
-:100FA0009111F5CF8091E80085FF0CC040E050E042\r
-:100FB00065E070E0C9010E94C3098091E8008E7766\r
-:100FC0008093E8000895CF93DF93EC018091E401D2\r
-:100FD000843009F046C090910C019923D9F090918A\r
-:100FE0000D019923B9F08093E9008FEF9091E8000B\r
-:100FF000815095FD06C095E19A95F1F700008111A9\r
-:10100000F5CF8091E80085FF2CC040E050E060E122\r
-:1010100070E017C081E08093E9008FEF9091E800C5\r
-:10102000815095FD06C095ED9A95F1F7000081116C\r
-:10103000F5CF8091E80085FF14C040E050E068E003\r
-:1010400070E0CE010E94C3098091E8008E77809302\r
-:10105000E80080E1FE01A2E5B1E001900D928A95E1\r
-:10106000E1F7DF91CF9108958091E301811109C0EB\r
-:101070000E94540B0E94B10B8091E2008460809327\r
-:10108000E20008951092E301089508950C9402215E\r
-:101090000E94621A0E9408210E945C0E0C94520762\r
-:1010A00042E061EC81E00E94CD0A42E061EC82E026\r
-:1010B0000E94CD0A42E061EC83E00E94CD0A42E149\r
-:1010C00061EC84E00C94CD0A8091E601833009F450\r
-:1010D00055C030F4813071F0823009F48EC008952B\r
-:1010E0008A3009F47AC08B3009F460C0893009F085\r
-:1010F0009CC020C08091E501813A09F096C08091A2\r
-:10110000E800877F8093E8008091E9019091EA01EF\r
-:10111000892B21F460E182E591E003C060E080E08A\r
-:1011200090E070E00E940E0A8091E8008B77809337\r
-:10113000E80008958091E501813209F076C0809140\r
-:10114000E9019091EA01009719F0039709F06DC049\r
-:101150008091E800877F8093E8008091E80082FD1D\r
-:1011600005C08091E4018111F8CF5FC08091F1004A\r
-:10117000809362018091E8008B7753C08091E501F4\r
-:10118000813A09F052C08091E9019091EA01892BDE\r
-:1011900009F04BC08091E800877F8093E800809140\r
-:1011A000E80080FFFCCF80910C0136C08091E50102\r
-:1011B0008132D9F58091E9019091EA01892BA9F555\r
-:1011C0008091E800877F8093E8000E94020B809165\r
-:1011D000E70180930C010C94C5138091E5018132E5\r
-:1011E00021F58091E800877F8093E8000E94020B40\r
-:1011F0008091E8018093630108958091E501813A2F\r
-:10120000A1F48091E800877F8093E8008091E80056\r
-:1012100080FFFCCF809163018093F1008091E80012\r
-:101220008E778093E8000C94020B089584B7877F33\r
-:1012300084BF0FB6F894A895809160008861809370\r
-:101240006000109260000FBE90E080E80FB6F89446\r
-:1012500080936100909361000FBE0E94AB0E0E94CC\r
-:10126000540B0E94B10B8091E20084608093E200F5\r
-:1012700078940E943C0E0E94AD0E82E091E00E94A4\r
-:10128000570E0E94F0208091E401853069F40E949D\r
-:10129000241A8091E2018823B1F30E944E1A882318\r
-:1012A00091F30E94AD09EFCF0E94B30EECCF292F2E\r
-:1012B000332723303105C9F060F42130310581F046\r
-:1012C0002230310509F041C08DE690E022E133E0A3\r
-:1012D00040C021323105E1F02232310531F135C013\r
-:1012E00082E190E02FE733E034C099278130910507\r
-:1012F00049F028F0029749F5EEEDF2E005C0EEE086\r
-:10130000F3E002C0E6EFF2E0849190E09F0121C09B\r
-:101310006430D8F4E62FF0E0EE0FFF1FEE5DFE4FD5\r
-:101320002081318189E090E014C0643070F470E075\r
-:10133000FB01EE0FFF1FE65EFE4F20813181FB01B6\r
-:10134000EA5EFE4F808190E004C080E090E020E003\r
-:1013500030E0FA0131832083089580E189BD82E184\r
-:1013600089BD09B400FEFDCF8091D8008F7D8093A8\r
-:10137000D8008091E00082608093E0008091E000DE\r
-:1013800081FDFCCF0895CF92DF92EF92FF920F93F1\r
-:101390001F93CF93DF93EC018B016A010E94210B15\r
-:1013A000811133C0C114D10439F0F60180819181DB\r
-:1013B000081B190BC80FD91FE12CF12C01151105C1\r
-:1013C00019F18091E80085FD16C08091E8008E77C4\r
-:1013D0008093E800C114D10449F0F6018081918125\r
-:1013E000E80EF91EF182E08285E00FC00E94210B19\r
-:1013F000882321F30AC089918093F10001501109DB\r
-:10140000FFEFEF1AFF0ADACF80E0DF91CF911F9153\r
-:101410000F91FF90EF90DF90CF9008952091EB0116\r
-:101420003091EC012617370748F06115710539F442\r
-:101430002091E8002E772093E80001C0B901FC015B\r
-:1014400020E06115710579F18091E4018823F1F1C3\r
-:101450008530F1F18091E80083FD3CC08091E80087\r
-:1014600082FD2EC08091E80080FFEBCF2091F30039\r
-:101470008091F20090E0922B6115710551F0883057\r
-:10148000910538F421912093F10061507109019682\r
-:10149000F3CF21E0089709F020E08091E8008E77F3\r
-:1014A0008093E800CECF2111CFCF0AC08091E40114\r
-:1014B000882361F0853061F08091E80083FD0AC0E7\r
-:1014C0008091E80082FFF2CF80E0089582E00895E5\r
-:1014D00083E0089581E008952091EB013091EC01C3\r
-:1014E0002617370748F06115710539F42091E80097\r
-:1014F0002E772093E80001C0B901FC0120E06115BE\r
-:10150000710591F18091E401882309F440C0853090\r
-:1015100009F43FC08091E80083FD3DC08091E80060\r
-:1015200082FD2FC08091E80080FFE9CF2091F30079\r
-:101530008091F20090E0922B6115710559F088308E\r
-:10154000910540F424912093F10031966150710986\r
-:101550000196F2CF21E0089709F020E08091E800A1\r
-:101560008E778093E800CBCF2111CCCF0AC0809139\r
-:10157000E401882361F0853061F08091E80083FD0B\r
-:101580000AC08091E80082FFF2CF80E0089582E0F7\r
-:10159000089583E0089581E00895982F973068F5C5\r
-:1015A0009093E900981739F07091EC002091ED00CC\r
-:1015B0005091F00003C0242F762F50E021FD02C08F\r
-:1015C0009F5FECCF3091EB003E7F3093EB0030918A\r
-:1015D000ED003D7F3093ED003091EB0031603093B2\r
-:1015E000EB007093EC002093ED005093F0002091FD\r
-:1015F000EE0027FDE5CF80E008958F708093E9002D\r
-:1016000081E008958091E50187FF11C08091E80095\r
-:1016100082FD05C08091E4018111F8CF11C0809155\r
-:10162000E8008B770BC08091E401882349F080911A\r
-:10163000E80080FFF8CF8091E8008E778093E80083\r
-:1016400008952091E4003091E50095E64091EC008A\r
-:10165000842F817040FF23C08091E80080FD1DC071\r
-:101660008091E401882399F0853099F08091EB0016\r
-:1016700085FD11C04091E4005091E5002417350725\r
-:1016800029F3915011F09A01E1CF84E0089582E0AE\r
-:10169000089583E0089581E0089580E008954091E1\r
-:1016A000E80042FFDDCF08950E94C20B0E94CA0BE2\r
-:1016B000E0EEF0E0808181608083E8EDF0E0808101\r
-:1016C0008F77808319BCA7EDB0E08C918E7F8C93CF\r
-:1016D00080818F7E80831092E30108950F931F9382\r
-:1016E000CF93DF930E94C20B0E94CA0BC8EDD0E0DB\r
-:1016F00088818F77888388818068888388818F7DBF\r
-:10170000888319BC1092E4011092E0011092E2016A\r
-:101710001092E10100EE10E0F80180818B7F808360\r
-:1017200088818160888342E060E080E00E94CD0A89\r
-:10173000E1EEF0E080818E7F8083E2EEF0E0808158\r
-:1017400081608083808188608083F80180818E7FC2\r
-:101750008083888180618883DF91CF911F910F9171\r
-:101760000895E8EDF0E080818F7E8083E7EDF0E082\r
-:1017700080818160808384E082BF81E08093E30187\r
-:101780000C946E0BE8EDF0E080818E7F80831092E8\r
-:10179000E20008951092DA001092E10008951F927D\r
-:1017A0000F920FB60F9211242F933F934F935F9395\r
-:1017B0006F937F938F939F93AF93BF93EF93FF9319\r
-:1017C0008091E10082FF0BC08091E20082FF07C0A0\r
-:1017D0008091E1008B7F8093E1000E943B0E80911D\r
-:1017E000DA0080FF1FC08091D80080FF1BC080916D\r
-:1017F000DA008E7F8093DA008091D90080FF0DC0DF\r
-:1018000080E189BD82E189BD09B400FEFDCF81E0A0\r
-:101810008093E4010E94340805C019BC1092E401D1\r
-:101820000E9442088091E10080FF19C08091E2008F\r
-:1018300080FF15C08091E2008E7F8093E20080914E\r
-:10184000E20080618093E2008091D8008062809302\r
-:10185000D80019BC85E08093E4010E94460880917D\r
-:10186000E10084FF30C08091E20084FF2CC080E161\r
-:1018700089BD82E189BD09B400FEFDCF8091D80009\r
-:101880008F7D8093D8008091E1008F7E8093E1006E\r
-:101890008091E2008F7E8093E2008091E20081607F\r
-:1018A0008093E2008091E001882311F084E007C07A\r
-:1018B0008091E30087FD02C081E001C083E0809356\r
-:1018C000E4010E9448088091E10083FF29C08091D3\r
-:1018D000E20083FF25C08091E100877F8093E100D3\r
-:1018E00082E08093E4011092E0018091E1008E7F1C\r
-:1018F0008093E1008091E2008E7F8093E2008091EE\r
-:10190000E20080618093E20042E060E080E00E94BB\r
-:10191000CD0A8091F00088608093F0000E94450815\r
-:10192000FF91EF91BF91AF919F918F917F916F91B7\r
-:101930005F914F913F912F910F900FBE0F901F908D\r
-:1019400018951F920F920FB60F9211242F933F9369\r
-:101950004F935F936F937F938F939F93AF93BF93B7\r
-:10196000CF93DF93EF93FF93C091E900CF70809105\r
-:10197000EC00D82FD17080FDD0E81092E900809162\r
-:10198000F000877F8093F00078940E94E50C10921D\r
-:10199000E9008091F00088608093F000CD2BCF703B\r
-:1019A000C093E900FF91EF91DF91CF91BF91AF918B\r
-:1019B0009F918F917F916F915F914F913F912F9167\r
-:1019C0000F900FBE0F901F9018951F93CF93DF932A\r
-:1019D000CDB7DEB7AA970FB6F894DEBF0FBECDBF66\r
-:1019E000E5EEF1E08091F100819321E0ED3EF20718\r
-:1019F000C9F70E9464088091E80083FF24C18091A8\r
-:101A0000E5019091E601492F50E04A30510508F078\r
-:101A10001AC1FA01EA5AFF4F0C949922803881F0DA\r
-:101A2000823809F010C18091E9018F708093E9003C\r
-:101A30008091EB0085FB882780F91092E90006C0B1\r
-:101A40008091E1019091E201911182609091E80012\r
-:101A5000977F9093E8008093F1001092F100C8C046\r
-:101A6000282F2D7F09F0EFC0882319F0823061F014\r
-:101A7000EAC08091E701813009F0E5C0933009F0B8\r
-:101A800080E08093E2012BC08091E701811127C0A3\r
-:101A90008091E9018F7009F4D6C08093E90020910C\r
-:101AA000EB0020FF1CC0933021F48091EB0080629A\r
-:101AB00014C09091EB0090619093EB0021E030E036\r
-:101AC000A90102C0440F551F8A95E2F74093EA002E\r
-:101AD0001092EA008091EB0088608093EB001092F6\r
-:101AE000E9008091E800877F86C08111ACC0109129\r
-:101AF000E7011F778091E3008078812B8093E300DA\r
-:101B00008091E800877F8093E8000E94020B80911B\r
-:101B1000E80080FFFCCF8091E30080688093E300C1\r
-:101B2000111102C082E001C083E08093E4018BC008\r
-:101B30008058823008F087C08091E7019091E801D9\r
-:101B40008C3D53E0950779F583E08A838AE28983A7\r
-:101B50004FB7F894DE01139620E03EE051E2E32F08\r
-:101B6000F0E050935700E49120FF03C0E295EF703E\r
-:101B70003F5FEF708E2F90E0EA3010F0C79601C003\r
-:101B8000C0968D939D932F5F243149F74FBF80916D\r
-:101B9000E800877F8093E8006AE270E0CE0101965A\r
-:101BA0000E940E0A14C0AE014F5F5F4F6091E901C1\r
-:101BB0000E945709BC01892B09F445C09091E800A7\r
-:101BC000977F9093E80089819A810E946C0A8091A6\r
-:101BD000E8008B778093E80036C08038A1F58091CB\r
-:101BE000E800877F8093E8008091E0018093F10016\r
-:101BF0008091E8008E778093E8000E94020B23C05A\r
-:101C0000811121C08091E7019091E8019927029705\r
-:101C1000D4F48091E800877F8093E8008091E70109\r
-:101C20008093E0010E94020B8091E001811106C0C7\r
-:101C30008091E30087FD02C081E001C084E08093D1\r
-:101C4000E4010E9450088091E80083FF0AC080915F\r
-:101C5000E800877F8093E8008091EB0080628093AA\r
-:101C6000EB00AA960FB6F894DEBF0FBECDBFDF9192\r
-:101C7000CF911F9108950895CF938091E401882317\r
-:101C8000A1F0C091E900CF709091EC00892F817094\r
-:101C900090FD80E8C82B1092E9008091E80083FD58\r
-:101CA0000E94E50CCF70C093E900CF910895909306\r
-:101CB0006901809368010895E0916801F0916901DC\r
-:101CC000309721F00190F081E02D099480E0089593\r
-:101CD000E0916801F0916901309721F00280F38171\r
-:101CE000E02D09940895E0916801F0916901309721\r
-:101CF00021F00480F581E02D09940895209166017A\r
-:101D0000309167012817390771F09093670180932C\r
-:101D10006601E0916801F0916901309721F0068039\r
-:101D2000F781E02D099408952091640130916501B7\r
-:101D30002817390771F09093650180936401E09151\r
-:101D40006801F0916901309721F00084F185E02D60\r
-:101D50000994089508950C94AA0E0E94681A0E948E\r
-:101D60001A040C942E1BCF92DF92EF92FF920F93E6\r
-:101D70001F93CF93DF93CDB7DEB72B970FB6F894B1\r
-:101D8000DEBF0FBECDBF0E9432048BE6C82E81E0BD\r
-:101D9000D82E00E010E0E02E802F0E942805F601EA\r
-:101DA00041916F01F82EF426B1F40F5F1F4F0E30F2\r
-:101DB000110589F78FEF89838A831B820E94711A2C\r
-:101DC0008160782F9D838C8349815A816B818D81BD\r
-:101DD0000E94560F40C09091CC0191FF04C08B87A8\r
-:101DE0000E942E058B8520E030E04F2D50E0922F91\r
-:101DF000BA01022E02C0759567950A94E2F760FF5A\r
-:101E000024C02E83EF8221E030E0690102C0CC0CB7\r
-:101E1000DD1C9A95E2F790E08C219D21892B09F435\r
-:101E200020E028870E94711A8160782F9A8789871D\r
-:101E30004E815F8168858A850E94560FF801E559B9\r
-:101E4000FE4F8081C826C08206C02F5F3F4F2630DC\r
-:101E5000310569F6AACF0E94151E0E945C0E909172\r
-:101E60006A018917A1F00E945C0E80936A012B968B\r
-:101E70000FB6F894DEBF0FBECDBFDF91CF911F919B\r
-:101E80000F91FF90EF90DF90CF900C9452072B961C\r
-:101E90000FB6F894DEBF0FBECDBFDF91CF911F917B\r
-:101EA0000F91FF90EF90DF90CF900895CF93DF9345\r
-:101EB000CDB7DEB72B970FB6F894DEBF0FBECDBF00\r
-:101EC0004F83588769877A878B87DE01119686E072\r
-:101ED000FD0111928A95E9F785E0FE0137960190A0\r
-:101EE0000D928A95E1F749815A816B817C818D81C0\r
-:101EF0009E810E9459162B960FB6F894DEBF0FBE36\r
-:101F0000CDBFDF91CF910895CF93C82F882309F4D7\r
-:101F1000C1C0823859F40E945C0E81FDBBC089E3C8\r
-:101F20000E94F6180E94AE1989E30CC0833879F438\r
-:101F30000E945C0E80FDAEC083E50E94F6180E94F0\r
-:101F4000AE1983E50E943519CF910C94AE198438EF\r
-:101F500059F40E945C0E82FD9DC087E40E94F61831\r
-:101F60000E94AE1987E4EECF8CEF8C0F813A48F4D3\r
-:101F70008C2F0E94552081118DC08C2F0E94F61845\r
-:101F8000E3CF80E28C0F883048F4C77081E001C055\r
-:101F9000880FCA95EAF70E947719D6CF8BE58C0F88\r
-:101FA000833078F4C53A29F0C63A31F083E890E0FE\r
-:101FB00005C081E890E002C082E890E0CF910C94E7\r
-:101FC0007E0E88E58C0F833108F064C0C83A39F181\r
-:101FD000C93A41F1CA3A49F1CB3A51F1CC3A59F1F7\r
-:101FE000CD3A61F1C03B69F1CE3A71F1CF3A79F166\r
-:101FF000C13B81F1C23B89F1C33B91F1C43B99F1F3\r
-:10200000C53BA1F1C63BA9F1C73BB1F1C83BB9F152\r
-:10201000C93BC1F1CA3BC9F180E090E038C082EE13\r
-:1020200090E035C089EE90E032C08AEE90E02FC09B\r
-:1020300085EB90E02CC086EB90E029C087EB90E028\r
-:1020400026C08CEC90E023C08DEC90E020C083E8AB\r
-:1020500091E01DC08AE891E01AC082E991E017C0C2\r
-:1020600084E991E014C081E292E011C083E292E041\r
-:102070000EC084E292E00BC085E292E008C086E2E6\r
-:1020800092E005C087E292E002C08AE292E0CF913E\r
-:102090000C94940ECF910895882309F44BC0823894\r
-:1020A00059F40E945C0E81FF45C089E30E94F61836\r
-:1020B0000E94AE1989E30CC0833871F40E945C0E53\r
-:1020C00080FF38C083E50E94F6180E94AE1983E5B0\r
-:1020D0000E9435190C94AE19843859F40E945C0E94\r
-:1020E00082FF28C087E40E94F6180E94AE1987E498\r
-:1020F000EFCF9CEF980F913A58F390E2980F9830F9\r
-:1021000050F4877091E001C0990F8A95EAF7892F02\r
-:102110000E947D19DFCF9BE5980F933020F480E07B\r
-:1021200090E00C947E0E885A833120F480E090E099\r
-:102130000C94940E0895882321F00E9477190C9432\r
-:10214000AE190895882321F00E947D190C94AE19D0\r
-:102150000895BF92CF92DF92EF92FF920F931F9359\r
-:10216000CF93DF9300D000D000D0CDB7DEB77C0195\r
-:1021700085E0F701DE01119601900D928A95E1F755\r
-:10218000F70183819481892B09F4DDC290818181DB\r
-:102190008F3F19F49F3F09F4D6C2F70102812581D0\r
-:1021A00022952F7099838A8389819A812E830E9438\r
-:1021B000B518182FB92E0E94B4180E947B17EB2D6A\r
-:1021C000E295EF704E2F50E0FA01E05AFF4F2E815A\r
-:1021D0000C9499228B2D807F9B2D9F70F92E882344\r
-:1021E00019F0F29480EFF822002349F0FF2009F45F\r
-:1021F00057C28F2D0E9487190E94AE1951C2812F9C\r
-:102200000E944C10FF2009F49EC28F2D0E948D1950\r
-:1022100026960FB6F894DEBF0FBECDBFDF91CF91EB\r
-:102220001F910F91FF90EF90DF90CF90BF900C9493\r
-:10223000AE193B2D307F8B2D8F70303211F082958F\r
-:10224000807F112319F0113021F12CC00023B9F047\r
-:10225000222309F490C1213009F08DC126960FB6D2\r
-:10226000F894DEBF0FBECDBFDF91CF911F910F91CC\r
-:10227000FF90EF90DF90CF90BF900C94971922239E\r
-:1022800019F0213009F45FC28E830E949A198E8161\r
-:1022900086C1002321F0223008F055C26CC1211103\r
-:1022A00052C27DC1002321F0222309F464C1F8C188\r
-:1022B000222309F474C109C28B2D869586958370FB\r
-:1022C00019F08130D1F03FC2002321F0812F9B2DE6\r
-:1022D000937002C080E090E026960FB6F894DEBFBF\r
-:1022E0000FBECDBFDF91CF911F910F91FF90EF9067\r
-:1022F000DF90CF90BF900C947E0E002321F0812FB1\r
-:102300009B2D937002C080E090E026960FB6F89463\r
-:10231000DEBF0FBECDBFDF91CF911F910F91FF9018\r
-:10232000EF90DF90CF90BF900C94940E812F0023FC\r
-:1023300019F00E941D1D02C00E94851D26960FB631\r
-:10234000F894DEBF0FBECDBFDF91CF911F910F91EB\r
-:10235000FF90EF90DF90CF90BF900C940A1E8B2DD2\r
-:10236000837009F075C00111EEC1812F82958695A9\r
-:102370008770880F880F912F9F70C92ED12CE12C68\r
-:10238000F12C082E04C0CC0CDD1CEE1CFF1C0A94A2\r
-:10239000D2F714FF12C00FE010E020E030E004C0DC\r
-:1023A000000F111F221F331F8A95D2F7C901B801F0\r
-:1023B000609570958095909503C060E070E0CB01CA\r
-:1023C0004B2D4695469543704230C1F060F56C291F\r
-:1023D0007D298E299F29413051F126960FB6F89418\r
-:1023E000DEBF0FBECDBFDF91CF911F910F91FF9048\r
-:1023F000EF90DF90CF90BF900C94A2176C297D29AD\r
-:102400008E299F2926960FB6F894DEBF0FBECDBF4A\r
-:10241000DF91CF911F910F91FF90EF90DF90CF90C0\r
-:10242000BF900C94BE170E94A217C701B601269652\r
-:102430000FB6F894DEBF0FBECDBFDF91CF911F91D5\r
-:102440000F91FF90EF90DF90CF90BF900C94861784\r
-:10245000002319F08B2D817001C08695882309F423\r
-:1024600072C1812F829586958770880F880F912F72\r
-:102470009F70C92ED12CE12CF12C082E04C0CC0C5D\r
-:10248000DD1CEE1CFF1C0A94D2F714FF12C00FE0F3\r
-:1024900010E020E030E004C0000F111F221F331FA6\r
-:1024A0008A95D2F7C901B80160957095809590958D\r
-:1024B00003C060E070E0CB014B2D4695469543701C\r
-:1024C0004230C1F060F56C297D298E299F29413069\r
-:1024D00051F126960FB6F894DEBF0FBECDBFDF9147\r
-:1024E000CF911F910F91FF90EF90DF90CF90BF9011\r
-:1024F0000C947C186C297D298E299F2926960FB66D\r
-:10250000F894DEBF0FBECDBFDF91CF911F910F9129\r
-:10251000FF90EF90DF90CF90BF900C9498180E949E\r
-:102520007C18C701B60126960FB6F894DEBF0FBE21\r
-:10253000CDBFDF91CF911F910F91FF90EF90DF9072\r
-:10254000CF90BF900C946018103FD1F118F4103E5A\r
-:1025500050F4A1C0123F09F463C008F44CC0133F0B\r
-:1025600009F473C098C01F708B2D8F710023A1F0E8\r
-:102570000E94F917812F26960FB6F894DEBF0FBE82\r
-:10258000CDBFDF91CF911F910F91FF90EF90DF9022\r
-:10259000CF90BF900C949B100E941A18812F269602\r
-:1025A0000FB6F894DEBF0FBECDBFDF91CF911F9164\r
-:1025B0000F91FF90EF90DF90CF90BF900C94A210FE\r
-:1025C0000023A9F02111BFC08B2D8F7126960FB665\r
-:1025D000F894DEBF0FBECDBFDF91CF911F910F9159\r
-:1025E000FF90EF90DF90CF90BF900C943F18223077\r
-:1025F00008F0A9C0E9CF0023A9F08B2D8F71269692\r
-:102600000FB6F894DEBF0FBECDBFDF91CF911F9103\r
-:102610000F91FF90EF90DF90CF90BF900C94F9173F\r
-:10262000002359F38B2D8F7126960FB6F894DEBFD9\r
-:102630000FBECDBFDF91CF911F910F91FF90EF9013\r
-:10264000DF90CF90BF900C941A18002399F08B2D37\r
-:102650008F7126960FB6F894DEBF0FBECDBFDF9107\r
-:10266000CF911F910F91FF90EF90DF90CF90BF908F\r
-:102670000C94E41726960FB6F894DEBF0FBECDBFBC\r
-:10268000DF91CF911F910F91FF90EF90DF90CF904E\r
-:10269000BF900C94DA170023A9F0222309F4ADCFE0\r
-:1026A000812F26960FB6F894DEBF0FBECDBFDF9107\r
-:1026B000CF911F910F91FF90EF90DF90CF90BF903F\r
-:1026C0000C94840F222309F4ADCF812F26960FB6E8\r
-:1026D000F894DEBF0FBECDBFDF91CF911F910F9158\r
-:1026E000FF90EF90DF90CF90BF900C944C104B2D4B\r
-:1026F0004F70612FC7010E94AF0226960FB6F89463\r
-:10270000DEBF0FBECDBFDF91CF911F910F91FF9024\r
-:10271000EF90DF90CF90BF900C94FE164B2D4F7032\r
-:10272000612FC70126960FB6F894DEBF0FBECDBF4E\r
-:10273000DF91CF911F910F91FF90EF90DF90CF909D\r
-:10274000BF900C94EF0526960FB6F894DEBF0FBE2F\r
-:10275000CDBFDF91CF911F910F91FF90EF90DF9050\r
-:10276000CF90BF9008950E9494190E9469190E9409\r
-:10277000AE190E94BA1E0E940A1E80E090E00E94DC\r
-:102780007E0E80E090E00C94940E0E9484190C94CC\r
-:10279000B3130E94B518292F22952F702C3030F4D6\r
-:1027A0002A3048F42250223078F405C02C3041F011\r
-:1027B0002F3031F009C0803E48F0803F29F406C038\r
-:1027C00093FB882780F9089580E0089581E00895BB\r
-:1027D000CF93DF9300D000D01F92CDB7DEB70F901C\r
-:1027E0000F900F900F900F90DF91CF910895CF939E\r
-:1027F000DF9300D000D000D0CDB7DEB726960FB65D\r
-:10280000F894DEBF0FBECDBFDF91CF9108951F9327\r
-:10281000CF93DF93C091790116E080917A01C817B8\r
-:1028200099F0D0E01C9FF0011D9FF00D1124E55898\r
-:10283000FE4F4081518162817381848195810E9424\r
-:10284000F7132196C770E9CFDF91CF911F910895BB\r
-:102850004091AB015091AC016091AD017091AE011E\r
-:102860008091AF019091B0010C94F7138091B00169\r
-:1028700082958F7009F054C08091AD01882309F4CE\r
-:102880004FC080917901A0917A014091AE015091A1\r
-:10289000AF016091AB017091AC01B6E08A1709F409\r
-:1028A0003FC090E041155105C1F17F3F11F46F3FEA\r
-:1028B000A1F1B89FF001B99FF00D1124E558FE4F2A\r
-:1028C000218127132AC02081261327C022812111AC\r
-:1028D00024C0238134812417350710F42150310995\r
-:1028E000241B350B283C3105C0F42091B0012F701A\r
-:1028F00020612093B00126E0289FF001299FF00D70\r
-:102900001124E058FE4F80818F70806180838BEAB4\r
-:1029100091E00E94A9100C94071401968770BECF15\r
-:102920000895CF92DF92EF92FF920F931F93CF9370\r
-:10293000DF93CDB7DEB762970FB6F894DEBF0FBE58\r
-:10294000CDBF8C0185E0F801DE011D9601900D924E\r
-:102950008A95E1F7D8014C9111965C9111971296E6\r
-:102960006C918091AE019091AF01009709F475C10F\r
-:102970003091AB017091AC017F3F19F43F3F09F4F6\r
-:102980006CC1F801C380D480E090AD01EE2009F461\r
-:10299000BEC02091B001C816D90628F0D601A81BE8\r
-:1029A000B90BCD0104C0809590958C0D9D1DFF2421\r
-:1029B000F394883C910578F0F12C207F09F0C4C095\r
-:1029C0007C2DD98AC88A89890E94E8138BEA91E014\r
-:1029D0000E94A910AFC0822F807F09F045C0571315\r
-:1029E00013C0431311C061110FC02F7020612093D9\r
-:1029F000B0010E9428148BEA91E00E94A9108091F6\r
-:102A0000B001F80185832EC0CD2819F15F3F11F484\r
-:102A10004F3FF9F0F62E61111CC080917901209191\r
-:102A20007A0136E0821709F45BC090E0389FF0012C\r
-:102A3000399FF00D1124E558FE4F7181571306C0E0\r
-:102A40007081471303C07281711103C001968770B2\r
-:102A5000E9CFF62E662309F41CC18091B001816094\r
-:102A60008093B001F12C15C1571309C0431307C05F\r
-:102A7000611105C08091B001F8018583C8C04D8700\r
-:102A80005E878D859E856A8B0E94C9136A8988231B\r
-:102A9000D1F16623C1F12091B001822F82958F7010\r
-:102AA00090E0029774F08091AB019091AC0198870F\r
-:102AB0008F831986DB86CA862C87CE0107960E94F3\r
-:102AC000A91086E0F801ABEAB1E001900D928A9579\r
-:102AD000E1F70E9436140E942814FF24F394D9C011\r
-:102AE0004D875E878D859E850E94B518292F22957A\r
-:102AF0002F70223008F0C1C09F7009F0BBC0805E0B\r
-:102B0000883008F4C6C0C8010E94A910E6CFC816D4\r
-:102B1000D90608F453C0F601E81BF90BCF01883C35\r
-:102B2000910508F450C0F12C7C2DD98AC88A898976\r
-:102B30000E94E813EBEAF1E086E0DF011D928A953E\r
-:102B4000E9F70E942814A5C0571314C0431312C0FC\r
-:102B5000611110C08091B001F8018583C8010E9405\r
-:102B6000A91086E0EBEAF1E0DF011D928A95E9F712\r
-:102B7000FE2C8FC04D875E878D859E856A8B0E9457\r
-:102B8000C9136A89882309F4BECF662309F4BBCF31\r
-:102B90002091B001822F82958F7090E002970CF403\r
-:102BA00090CF8091AB019091AC019A8389831B8275\r
-:102BB000DD82CC822E83CE01019681CF80959095C7\r
-:102BC0008C0D9D1DACCFF62E662309F49CCF5713B8\r
-:102BD00033C0431331C02091B00120FD24C0822FA7\r
-:102BE00082958F70482F50E041155105E1F0D801D2\r
-:102BF00015962C9315974F30510549F08F5F982FFC\r
-:102C00009295907F822F8F70892B15968C93C80197\r
-:102C10000E94A91086E0F801ABEAB1E001900D92A4\r
-:102C20008A95E1F78ECF86E0F801ABEAB1E001903A\r
-:102C30000D928A95E1F72DC04D875E878D859E8523\r
-:102C40000E94C91381113DCF8091B00181608093B2\r
-:102C5000B001C8010E94A9101CC0662309F453CF1B\r
-:102C60004D875E878D859E850E94C913882309F450\r
-:102C70004ACF27CF811143CF0CC0243008F043CF77\r
-:102C80009F7009F43CCFD80115969C91907F09F074\r
-:102C900036CF8F2D62960FB6F894DEBF0FBECDBF34\r
-:102CA000DF91CF911F910F91FF90EF90DF90CF9028\r
-:102CB00008951F93CF93DF93CDB7DEB72C970FB650\r
-:102CC000F894DEBF0FBECDBF4F83588769877A87E0\r
-:102CD0008B879C87CE0107960E949114882371F000\r
-:102CE0008A859B85892B09F441C088858F3F09F02F\r
-:102CF00065C08F818F3F09F061C038C086E0FE015A\r
-:102D00003796DE01119601900D928A95E1F76A855A\r
-:102D10007B856115710551F1FF81E885EF3F11F465\r
-:102D2000FF3F21F120917A0130E0C90101968770BF\r
-:102D300099274091790150E08417950709F447C01D\r
-:102D4000F983EA837D836C8396E0929FD001939F01\r
-:102D5000B00D1124A558BE4FFE01319601900D9281\r
-:102D60009A95E1F780937A010E94071416E080910A\r
-:102D7000790190917A018917B9F1189FC001112446\r
-:102D800085589E4F0E949114882371F1E09179013A\r
-:102D90001E9FF0011124E558FE4F40815181628150\r
-:102DA0007381848195810E94F7138091790190E06D\r
-:102DB00001968770992780937901D9CF4F815885E3\r
-:102DC00069857A858B859C850E94F713CFCF0E94F9\r
-:102DD000C51310927A0110927901EBEAF1E086E0D6\r
-:102DE000DF011D928A95E9F72C960FB6F894DEBFA5\r
-:102DF0000FBECDBFDF91CF911F910895EF92FF924B\r
-:102E00000F931F93CF93DF938C01892B09F46CC030\r
-:102E1000F12CEE24E394E8012196F80184918437A3\r
-:102E200040F4843008F051C0813081F0823019F1D3\r
-:102E30005BC0853709F444C0A8F19CE7980F903730\r
-:102E400008F052C08F770E944C1041C00E5F1F4F98\r
-:102E5000FE01849190E2980F983050F48770FE2D17\r
-:102E600001C0FF0F8A95EAF78F2F0E94871914C0BF\r
-:102E70000E94840F2DC00E5F1F4FFE01849190E2CF\r
-:102E8000980F983060F48770FE2D01C0FF0F8A956F\r
-:102E9000EAF78F2F0E948D190E94AE1919C00E9467\r
-:102EA0004C1016C00E5F1F4FFE01C491CC2381F061\r
-:102EB0008FE99FE00197F1F700C00000C150F6CF05\r
-:102EC0000E5F1F4FFE01F49003C00E94840F8E011D\r
-:102ED0008F2D882309F49FCFEFE9FFE03197F1F7B9\r
-:102EE00000C000008150F5CFDF91CF911F910F916D\r
-:102EF000FF90EF90089508956093B5017093B60127\r
-:102F00008093B7019093B8010C94B3130F931F9360\r
-:102F10000091B5011091B6012091B7013091B8012F\r
-:102F2000DC01CB01802B912BA22BB32B8093B5011D\r
-:102F30009093B601A093B701B093B8011F910F9180\r
-:102F40000C94B3130F931F930091B5011091B60128\r
-:102F50002091B7013091B801DC01CB01802391238E\r
-:102F6000A223B3238093B5019093B601A093B70138\r
-:102F7000B093B8011F910F910C94B3130F931F934B\r
-:102F80000091B5011091B6012091B7013091B801BF\r
-:102F9000DC01CB0180279127A227B3278093B501BD\r
-:102FA0009093B601A093B701B093B8011F910F9110\r
-:102FB0000C94B3131092B1011092B2011092B301AC\r
-:102FC0001092B4010C94B31341E050E060E070E063\r
-:102FD00004C0440F551F661F771F8A95D2F7409390\r
-:102FE000B1015093B2016093B3017093B4010C949A\r
-:102FF000B31341E050E060E070E004C0440F551F9F\r
-:10300000661F771F8A95D2F78091B1019091B20126\r
-:10301000A091B301B091B401482B592B6A2B7B2BA3\r
-:103020004093B1015093B2016093B3017093B40126\r
-:103030000C94B31341E050E060E070E004C0440F32\r
-:10304000551F661F771F8A95D2F74095509560955A\r
-:1030500070958091B1019091B201A091B301B091AE\r
-:10306000B401482359236A237B234093B101509331\r
-:10307000B2016093B3017093B4010C94B31341E0B7\r
-:1030800050E060E070E004C0440F551F661F771FDA\r
-:103090008A95D2F78091B1019091B201A091B301CC\r
-:1030A000B091B401482759276A277B274093B10183\r
-:1030B0005093B2016093B3017093B4010C94B313B5\r
-:1030C0000F931F930091B1011091B2012091B301B0\r
-:1030D0003091B401DC01CB01802B912BA22BB32BBF\r
-:1030E0008093B1019093B201A093B301B093B40166\r
-:1030F0001F910F910C94B3130F931F930091B10183\r
-:103100001091B2012091B3013091B401DC01CB01E7\r
-:1031100080239123A223B3238093B1019093B20122\r
-:10312000A093B301B093B4011F910F910C94B3130A\r
-:103130000F931F930091B1011091B2012091B3013F\r
-:103140003091B401DC01CB0180279127A227B3275E\r
-:103150008093B1019093B201A093B301B093B401F5\r
-:103160001F910F910C94B3130895CF92DF92EF92B9\r
-:10317000FF920F931F93CF93DF938C01C090B10107\r
-:10318000D090B201E090B301F090B4018091B5010C\r
-:103190009091B601A091B701B091B801C82AD92A7F\r
-:1031A000EA2AFB2ACFE1D0E0D701C6010C2E04C0E9\r
-:1031B000B695A795979587950A94D2F780FF07C093\r
-:1031C000B8018C2F0E9413068130910531F42197AC\r
-:1031D00058F7B80180E00E941306DF91CF911F914C\r
-:1031E0000F91FF90EF90DF90CF90089590910C0198\r
-:1031F0009923F1F090910D019923D1F0982F969594\r
-:10320000969596959F3080F5E0910E01F0910F0113\r
-:10321000E90FF11D877021E030E0A90102C0440FE1\r
-:10322000551F8A95E2F7CA019181892B8183089500\r
-:1032300020910E0130910F01F90132969FEF40E08D\r
-:103240005191851789F09F3F19F4511101C0942FB6\r
-:103250004F5F4E30A9F79F3F39F0F901E90FF11D9B\r
-:1032600097FDFA9582830895089590910C01992312\r
-:10327000F9F090910D019923D9F0982F9695969594\r
-:1032800096959F3028F5E0910E01F0910F01E90F1E\r
-:10329000F11D877021E030E0A90102C0440F551FE5\r
-:1032A0008A95E2F7CA0180959181892381830895E7\r
-:1032B00020910E0130910F01F9013296205F3F4FAE\r
-:1032C0009081891301C010823196E217F307C1F78C\r
-:1032D000089581E090E0E0910E01F0910F01E80F78\r
-:1032E000F91F1082019680319105A9F708959091F8\r
-:1032F000CB01892B8093CB01089580959091CB01D0\r
-:1033000089238093CB0108951092CB010895909169\r
-:10331000CA01892B8093CA01089580959091CA01B2\r
-:1033200089238093CA0108951092CA010895809359\r
-:10333000B90108951092B901089580910E019091FC\r
-:103340000F01FC0131969C01205F3F4F80E091917D\r
-:1033500091118F5FE217F307D1F70895E0910E0105\r
-:10336000F0910F018091CB018083E0910E01F091EB\r
-:103370000F0190818091CA01892B80838091B901CE\r
-:10338000882361F0E0910E01F0910F019081892B6B\r
-:1033900080830E949D1981111092B90180910E01C4\r
-:1033A00090910F010C94680ECF92DF92EF92FF92F2\r
-:1033B0006C01EE24FF24C114D104E104F10421F0D6\r
-:1033C000C701B60120E101C020E0C72ED82EE92EAA\r
-:1033D000FF24C114D104E104F10419F0285FC701EE\r
-:1033E000B6016B017C0154E0F694E794D794C7943E\r
-:1033F0005A95D1F7C114D104E104F10419F02C5FFE\r
-:10340000C701B6016B017C0142E0F694E794D794C2\r
-:10341000C7944A95D1F7C114D104E104F10419F01D\r
-:103420002E5FC701B601DC01CB01B695A795979534\r
-:103430008795892B8A2B8B2B09F02F5F822FFF908A\r
-:10344000EF90DF90CF9008958091E401843011F1E6\r
-:1034500020E488E190E00FB6F894A895809360008E\r
-:103460000FBE2093600083B7817F846083BF83B7E2\r
-:10347000816083BF7894889583B78E7F83BF0FB6B2\r
-:10348000F894A89580916000886180936000109204\r
-:1034900060000FBE089508950C944B1ACF930E94BC\r
-:1034A0004C1A0E9432040E944B1AC0E08C2F0E94DA\r
-:1034B0002805811104C0CF5FCE30C1F701C081E083\r
-:1034C000CF9108950E94C5130E945C0E0C94520780\r
-:1034D00082E084BD93E095BD9AEF97BD80936E0026\r
-:1034E00008952FB7F8948091CD019091CE01A091CD\r
-:1034F000CF01B091D0012FBF0895CF92DF92EF920C\r
-:10350000FF920F931F932FB7F8944091CD015091E4\r
-:10351000CE016091CF017091D0012FBF6A017B0174\r
-:10352000EE24FF248C0120E030E0C016D106E20634\r
-:10353000F30610F4415051099A01281B390BC901B7\r
-:103540001F910F91FF90EF90DF90CF9008951F9201\r
-:103550000F920FB60F9211248F939F93AF93BF9347\r
-:103560008091CD019091CE01A091CF01B091D00179\r
-:103570000196A11DB11D8093CD019093CE01A09322\r
-:10358000CF01B093D001BF91AF919F918F910F90D8\r
-:103590000FBE0F901F9018950E94540BF8942FEFB8\r
-:1035A00087EA91E6215080409040E1F700C000009A\r
-:1035B00087E090EBDC018093ED019093EE01A09306\r
-:1035C000EF01B093F0019CE088E10FB6F894A89564\r
-:1035D000809360000FBE90936000FFCFEF92FF9248\r
-:1035E0000F931F93CF93DF93D82FC0E08C2F0E94AF\r
-:1035F000280500E010E0E82EF12CC701002E02C0E3\r
-:10360000959587950A94E2F780FD06C00F5F1F4FDE\r
-:103610000630110591F709C0602F7C2F80E00E94D1\r
-:10362000F0058D13F3CF81E004C0CF5FCE30F1F60B\r
-:1036300080E0DF91CF911F910F91FF90EF9008955F\r
-:10364000CF93C82F8CE20E94EE1A882321F08C2F92\r
-:10365000CF910C94EE1A80E0CF910895CF930E9401\r
-:10366000751C811102C00E945B1CC5E6C15049F067\r
-:103670000E9432048FE39CE90197F1F700C000003B\r
-:10368000F5CF89E20E94201B811113C18AE20E94BA\r
-:10369000201B81110E945B1C85E00E94201B811170\r
-:1036A0000E94CC1A0E94801C8093CC0187E00E946B\r
-:1036B000201B8823A9F18BE10E94201B882351F055\r
-:1036C0008091CC0181FB222720F991E0922790FB89\r
-:1036D00081F90EC08EE00E94201B882361F080914A\r
-:1036E000CC0182FB222720F991E0922790FB82F9FE\r
-:1036F0008093CC0115C080E10E94201B9091CC01E9\r
-:10370000882341F093FB222720F981E0822780FB68\r
-:1037100093F904C0892F809580FB90F99093CC0198\r
-:103720008091CC010E94841C0E94921C8093DE0137\r
-:1037300080EE0E94201B882341F08091DE01982FAB\r
-:10374000909590FB80F98093DE0189E30E94201B15\r
-:10375000882359F08091DE0181FB222720F991E036\r
-:10376000922790FB81F98093DE0182EE0E94201B5C\r
-:10377000882359F08091DE0182FB222720F991E015\r
-:10378000922790FB82F98093DE0186EE0E94201B37\r
-:10379000882359F08091DE0183FB222720F991E0F4\r
-:1037A000922790FB83F98093DE0183EE0E94201B19\r
-:1037B000882359F08091DE0184FB222720F991E0D3\r
-:1037C000922790FB84F98093DE0185E30E94201B01\r
-:1037D000882359F08091DE0185FB222720F991E0B2\r
-:1037E000922790FB85F98093DE0181E30E94201BE4\r
-:1037F000882359F08091DE0186FB222720F991E091\r
-:10380000922790FB86F98093DE0181E10E94201BC4\r
-:10381000882359F08091DE0187FB222720F991E06F\r
-:10382000922790FB87F98093DE018091DE010E9450\r
-:10383000961C8091DE0187FB882780F980930D011B\r
-:1038400087E20E94201BC82F8EE10E94201B81115D\r
-:10385000C2608FE10E94201B8111C46080E20E943F\r
-:10386000201B8111C86081E20E94201B8111C06170\r
-:1038700082E20E94201B8111C06283E20E94201B11\r
-:103880008111C06484E20E94201B882311F0C0686B\r
-:1038900002C0CC2329F08C2F0E948D1C6C2F03C0FA\r
-:1038A0000E94891C682F70E080E090E0CF910C941A\r
-:1038B0007C17CF9108956DEE7EEF80E090E00E943E\r
-:1038C000CF2260E082E090E00E94C12260E083E0CD\r
-:1038D00090E00E94C12260E084E090E00E94C1225A\r
-:1038E00060E085E090E00C94C12280E090E00E94CE\r
-:1038F000BB2221E08D3E9E4F09F020E0822F0895EB\r
-:1039000082E090E00C94B322682F82E090E00C9467\r
-:10391000C12283E090E00C94B322682F83E090E012\r
-:103920000C94C12284E090E00C94B322682F84E0D0\r
-:1039300090E00C94C1228091D30180FF0BC0609174\r
-:10394000130185E0689FB001112475956795759501\r
-:1039500067952BC081FF09C06091130185E0689FC6\r
-:10396000B00111247595679520C082FF07C0609152\r
-:10397000130185E0689FB001112417C09091D40114\r
-:103980009923D1F060911201961788F720911301C5\r
-:1039900085E0289F90011124929FA001939F500DD4\r
-:1039A000112470E0CA010E9485226038710540F43C\r
-:1039B0006115710519F406C065E070E0862F089561\r
-:1039C0008FE7089581E008958091D30180FF08C0BA\r
-:1039D0006091110170E0759567957595679521C0A7\r
-:1039E00081FF06C06091110170E07595679519C05F\r
-:1039F00082FF04C06091110170E010C09091D40169\r
-:103A0000992399F0609110019617A0F78091110108\r
-:103A1000899FC001112470E00E94852260387105E1\r
-:103A200040F46115710519F406C061E070E0862F5D\r
-:103A300008958FE7089581E00895803F21F40E9462\r
-:103A40009B1C819504C0813F29F40E949B1C80939C\r
-:103A5000D7010895823F21F40E949B1C819504C0E8\r
-:103A6000833F29F40E949B1C8093D6010895893FCF\r
-:103A700019F40E94E41C05C08A3F31F40E94E41C42\r
-:103A800081958093D80108958B3F21F40E94E41C16\r
-:103A9000819504C08C3F29F40E94E41C8093D901D5\r
-:103AA0000895843F21F48091D501816017C0853F3E\r
-:103AB00021F48091D501826011C0863F21F480916C\r
-:103AC000D50184600BC0873F21F48091D5018860C7\r
-:103AD00005C0883F31F48091D50180618093D50184\r
-:103AE00008958D3F21F48091D30181600BC08E3FFA\r
-:103AF00021F48091D301826005C08F3F29F4809129\r
-:103B0000D30184608093D3010895803F39F480917C\r
-:103B1000D70187FF6CC01092D70169C0813F29F49B\r
-:103B20008091D7011816BCF362C09091D601823FF4\r
-:103B300029F497FF5CC01092D60159C0833F19F455\r
-:103B40001916CCF354C0893F41F48091D80118165E\r
-:103B50000CF04DC01092D8014AC08A3F29F48091E0\r
-:103B6000D80187FF44C0F6CF8B3F39F48091D9014B\r
-:103B700087FF3DC01092D9013AC08C3F29F4809153\r
-:103B8000D9011816BCF333C0843F21F48091D501CC\r
-:103B90008E7F17C0853F21F48091D5018D7F11C0A4\r
-:103BA000863F21F48091D5018B7F0BC0873F21F4A4\r
-:103BB0008091D501877F05C0883F31F48091D50180\r
-:103BC0008F7E8093D50113C08D3F21F48091D30166\r
-:103BD0008E7F0BC08E3F21F48091D3018D7F05C075\r
-:103BE0008F3F29F48091D3018B7F8093D301809103\r
-:103BF000D60181110EC08091D70181110AC0809138\r
-:103C0000D801811106C08091D901811102C01092A2\r
-:103C1000D401089585ED91E00E94730E0E94711AFF\r
-:103C20009093D2018093D10108951F93CF93DF9396\r
-:103C30008091D1019091D2010E947D1AAC019091A6\r
-:103C4000D401992321F02091140130E006C0209185\r
-:103C500015018AE0289F900111244217530708F4A8\r
-:103C600085C08091D601C091D701D091D801109123\r
-:103C7000D901811107C0C11175C0D11173C01111D3\r
-:103C800071C074C09F3F19F09F5F9093D4011816C4\r
-:103C900024F40E949B1C8093D6018091D60187FF5B\r
-:103CA00005C00E949B1C81958093D6011C1624F4AC\r
-:103CB0000E949B1C8093D7018091D70187FF05C08C\r
-:103CC0000E949B1C81958093D7016091D601662349\r
-:103CD00031F1C091D701CC2311F1062E000C770BE6\r
-:103CE000880B990B0E948C2123E333E343E35FE3CA\r
-:103CF0000E94F0210E9454216093D6016C2FCC0FBA\r
-:103D0000770B880B990B0E948C2123E333E343E369\r
-:103D10005FE30E94F0210E9454216093D7011D1699\r
-:103D200024F40E94E41C8093D8018091D80187FF7D\r
-:103D300005C00E94E41C81958093D801111624F4DB\r
-:103D40000E94E41C8093D9018091D90187FF05C0AE\r
-:103D50000E94E41C81958093D901DF91CF911F913E\r
-:103D60000C940A1E9F3F09F08FCFA0CFDF91CF9117\r
-:103D70001F910895E5EDF1E085E0DF011D928A9540\r
-:103D8000E9F71092D4011092D3010895833081F1A4\r
-:103D900028F4813059F08230D1F00895853009F44B\r
-:103DA00049C0B8F1863009F456C0089580911501D4\r
-:103DB000262F30E0280F311D2F3F310524F4680FE6\r
-:103DC0006093150108958FEF8093150108958091F8\r
-:103DD0001401262F30E0280F311D2F3F310524F428\r
-:103DE000680F6093140108958FEF80931401089574\r
-:103DF00080911301262F30E0280F311D2F3F310510\r
-:103E000024F4680F6093130108958FEF80931301DA\r
-:103E1000089580911201262F30E0280F311D2F3F89\r
-:103E2000310524F4680F6093120108958FEF809399\r
-:103E30001201089580911101262F30E0280F311DC5\r
-:103E40002F3F310524F4680F6093110108958FEF1F\r
-:103E500080931101089580911001262F30E0280FE2\r
-:103E6000311D2F3F310524F4680F60931001089530\r
-:103E70008FEF809310010895833011F128F4813081\r
-:103E800049F0823091F00895853081F120F186303B\r
-:103E9000C1F1089580911501681720F4861B809365\r
-:103EA0001501089510921501089580911401681765\r
-:103EB00020F4861B80931401089510921401089534\r
-:103EC00080911301681720F4861B809313010895D5\r
-:103ED00010921301089580911201681720F4861B37\r
-:103EE000809312010895109212010895809111019A\r
-:103EF000681720F4861B8093110108951092110118\r
-:103F0000089580911001681720F4861B809310019A\r
-:103F100008951092100108950F931F938D3109F4A5\r
-:103F20006BC008F03FC08E3009F47DC0C0F487300C\r
-:103F300009F46EC068F4863009F0AFC08091CC01FE\r
-:103F4000817F8E7F8093CC0181E08093DB01A6C0CE\r
-:103F5000883009F458C08B3009F49BC09EC086316C\r
-:103F600009F497C078F4803109F470C0813109F008\r
-:103F700094C00E94C51390910D0181E08927809320\r
-:103F80000D0187C0893109F484C08B3109F085C0E7\r
-:103F90008091CC0181FB222720F991E0922790FBB0\r
-:103FA00081F94AC0853309F45BC048F4873209F4CB\r
-:103FB00057C008F45AC0893209F452C06EC0833425\r
-:103FC00038F48A3308F067C0883309F462C065C0EA\r
-:103FD000833409F445C0883409F05FC00E94C513DA\r
-:103FE0000FEF13ED20E3015010402040E1F700C037\r
-:103FF00000000E94CC1A4DC00E940E210E945C0E4F\r
-:104000000E94520746C00E94801C0E94921C41C020\r
-:104010009091CC01892F817090FF12C0917F9E7F7B\r
-:104020009093CC013BC08091CC0182FB222720F9E8\r
-:1040300091E0922790FB82F98093CC01992349F17A\r
-:104040008091CC0181608093CC0123C08091CC0110\r
-:1040500083FB222720F991E0922790FB83F9ECCF94\r
-:1040600061E070E080E090E010C08D5141E050E0F0\r
-:1040700060E070E08A019B0104C0000F111F221F45\r
-:10408000331F8A95D2F7C901B8010E947C170E949C\r
-:10409000C51381E003C08953E9CF80E01F910F91E0\r
-:1040A000089580E008950C945120CF93C82F8091FB\r
-:1040B000DB01813079F018F08230E9F187C0E091BE\r
-:1040C0000E01F0910F018081813169F0823209F097\r
-:1040D0007FC009C0E0910E01F0910F018081813114\r
-:1040E00011F0823261F48C2F0E945320811104C0A0\r
-:1040F0008C2F0E948C1F1DC081E090E01AC08C2F75\r
-:104100000E945120811114C0C43179F048F4CB30A1\r
-:1041100079F0C03109F060C082E08093DB0108C013\r
-:10412000C93219F0C83321F057C01092DB0154C0D6\r
-:1041300081E0817053C0C93289F118F5C43171F141\r
-:10414000A8F4C73009F046C08AE08093150194E1D5\r
-:104150009093140193E0909313018093120188E0EF\r
-:104160008093110188E28093100134C0CE51C63093\r
-:1041700088F5EC2FF0E0E65DFE4F80818093DA0158\r
-:1041800029C0CE34E9F020F4CB3421F56AE013C025\r
-:10419000C13579F0C235F1F461E00DC08091DA01EA\r
-:1041A000882319F01092DA0115C081E08093DB01B9\r
-:1041B00015C061E006C08091DA010E94C61E0AC0E7\r
-:1041C0006AE08091DA010E943C1F04C01092DB017A\r
-:1041D00080E004C081E002C080E0ABCFCF910895C1\r
-:1041E000E1E8F0E080818860808380818160808365\r
-:1041F0008FB7F89493E09093890090ED90938800A6\r
-:104200008FBF0895EFE6F0E080818260808308959B\r
-:10421000EFE6F0E080818D7F80830895EFE6F0E0A7\r
-:10422000908182E08927808308951F920F920FB6B4\r
-:104230000F9211242F933F934F935F936F937F932C\r
-:104240008F939F93AF93BF93EF93FF938091DC0184\r
-:104250009091DD0101969093DD018093DC01811145\r
-:1042600003C082E00E945207E091DD01E695E695E9\r
-:10427000F0E0E457FB4FE4918091DC018E1303C022\r
-:1042800080E00E945207FF91EF91BF91AF919F9103\r
-:104290008F917F916F915F914F913F912F910F90EF\r
-:1042A0000FBE0F901F9018950E945B216894B1116A\r
-:1042B0000C94EA2108950E94CF2188F09F5798F02E\r
-:1042C000B92F9927B751B0F0E1F0660F771F881F1B\r
-:1042D000991F1AF0BA95C9F714C0B13091F00E9435\r
-:1042E000E921B1E008950C94E921672F782F882700\r
-:1042F000B85F39F0B93FCCF3869577956795B3955C\r
-:10430000D9F73EF490958095709561957F4F8F4FCA\r
-:104310009F4F0895E89409C097FB3EF490958095CF\r
-:10432000709561957F4F8F4F9F4F9923A9F0F92F7B\r
-:1043300096E9BB279395F695879577956795B795F9\r
-:10434000F111F8CFFAF4BB0F11F460FF1BC06F5FDF\r
-:104350007F4F8F4F9F4F16C0882311F096E911C0F1\r
-:10436000772321F09EE8872F762F05C0662371F012\r
-:1043700096E8862F70E060E02AF09A95660F771F26\r
-:10438000881FDAF7880F9695879597F9089557FD56\r
-:104390009058440F551F59F05F3F71F04795880FB3\r
-:1043A00097FB991F61F09F3F79F08795089512164A\r
-:1043B00013061406551FF2CF4695F1DF08C01616F6\r
-:1043C00017061806991FF1CF8695710561050894A7\r
-:1043D0000895E894BB2766277727CB0197F90895BE\r
-:1043E0000E9403220C9474220E94662238F00E94DC\r
-:1043F0006D2220F0952311F00C945D220C94632221\r
-:1044000011240C94EA210E94C72170F3959FC1F3F7\r
-:10441000950F50E0551F629FF001729FBB27F00D72\r
-:10442000B11D639FAA27F00DB11DAA1F649F6627C7\r
-:10443000B00DA11D661F829F2227B00DA11D621F16\r
-:10444000739FB00DA11D621F839FA00D611D221FD0\r
-:10445000749F3327A00D611D231F849F600D211DB4\r
-:10446000822F762F6A2F11249F5750409AF0F1F037\r
-:1044700088234AF0EE0FFF1FBB1F661F771F881FA0\r
-:1044800091505040A9F79E3F510580F00C945D2259\r
-:104490000C94EA215F3FE4F3983ED4F38695779538\r
-:1044A0006795B795F795E7959F5FC1F7FE2B880F46\r
-:1044B000911D9695879597F9089597F99F6780E8DC\r
-:1044C00070E060E008959FEF80EC089500240A9466\r
-:1044D0001616170618060906089500240A941216DF\r
-:1044E0001306140605060895092E0394000C11F412\r
-:1044F000882352F0BB0F40F4BF2B11F460FF04C0BF\r
-:104500006F5F7F4F8F4F9F4F089597FB072E16F4D5\r
-:10451000009407D077FD09D00E949F2207FC05D0A8\r
-:104520003EF4909581959F4F0895709561957F4FCA\r
-:104530000895EE0FFF1F0590F491E02D0994AA1B3A\r
-:10454000BB1B51E107C0AA1FBB1FA617B70710F07E\r
-:10455000A61BB70B881F991F5A95A9F780959095B0\r
-:10456000BC01CD010895F999FECF92BD81BDF89AA5\r
-:10457000992780B50895A8E1B0E042E050E00C949E\r
-:10458000D622262FF999FECF1FBA92BD81BD20BD3C\r
-:104590000FB6F894FA9AF99A0FBE019608950E9400\r
-:1045A000C122272F0C94C222DC01CB01FC01F99916\r
-:1045B000FECF06C0F2BDE1BDF89A319600B40D926F\r
-:0C45C00041505040B8F70895F894FFCF28\r
-:1045CC0020025307E307BE078A0756070101BA0109\r
-:1045DC0028080A03140A3F4D36394D040004CA0357\r
-:1045EC00910324033D0356036F03010203040506E4\r
-:0445FC0007080900A3\r
+:100000000C940B030C944F030C944F030C944F036C\r
+:100010000C944F030C944F030C944F030C944F0318\r
+:100020000C944F030C944F030C940E0D0C94E00DA4\r
+:100030000C944F030C944F030C944F030C944F03F8\r
+:100040000C944F030C94AA220C944F030C944F036E\r
+:100050000C944F030C94391C0C944F030C944F03D5\r
+:100060000C944F030C944F030C944F030C944F03C8\r
+:100070000C944F030C944F030C944F030C944F03B8\r
+:100080000C944F030C944F030C944F030C944F03A8\r
+:100090000C944F030C944F030C944F030C944F0398\r
+:1000A0000C944F030C944F030C944F034D0E6F0EA2\r
+:1000B0005D0F6F0E5D0FB40ED70E5D0F2C0F3F0F4F\r
+:1000C0002B122B1268126812AB12E91202150215DC\r
+:1000D0000213021503140314D61402150215ED14AD\r
+:1000E00029002B000354E100358100001E000E00A2\r
+:1000F0000B001B7164004D001F003700040014004A\r
+:10010000E1044C00200012000800340050002A00D6\r
+:10011000210036000C002F004F004A0022001D0075\r
+:100120001800330000000254E000E3000000E20089\r
+:1001300000002E77E400E7000000E60000002E7FBC\r
+:1001400023001900070005000000045424000A00E1\r
+:100150001700130052004B002500060015001A007E\r
+:1001600051002C0026000F0011001000E1082800AB\r
+:1001700027002D0016000D7130004E0038001C00C5\r
+:100180000982E50031810000010001000100010049\r
+:10019000010000003A0035003100010001000100BB\r
+:1001A0003B0035022102640001004C003C001E02AD\r
+:1001B00024062202010001003D002D022402240435\r
+:1001C000010001003E0001003700110400000100A1\r
+:1001D0000100010000000100000001000100010019\r
+:1001E00000000100000001003F0024062402230259\r
+:1001F000000001004000220425023500010001003A\r
+:100200004100230426023502370001004200240485\r
+:1002100025041F021E0201004300310026043102A2\r
+:10022000010001004400450001002D020100000012\r
+:1002300001000100010001000100000001000100B7\r
+:100240000100FB000100010001000100F200F900C3\r
+:10025000010001000100F000F100FA00F4000100CB\r
+:1002600001000100F300FC00F500010001000100A5\r
+:100270000100F60000000100010001000000010083\r
+:100280000000010001000100000001000000010069\r
+:100290000100010001000100000001000100010057\r
+:1002A0000100A800A9000100010001000100AC004C\r
+:1002B000AA00B600010001000100AB0050000100DF\r
+:1002C000010001000100520051000100AE000100D8\r
+:1002D000010001004F00000029002B000100E10097\r
+:1002E000358100001E00140004001D7164004D00E3\r
+:1002F0001F001A0016001B00E1044C00200008003B\r
+:100300000700060050002A0021001500090019000E\r
+:100310004F004A00220017000A00050000000100FB\r
+:100320001908E3000000E20000002E770608E7004D\r
+:100330000000E60000002E7F23001C000B001100CF\r
+:1003400000000100240018000D00100052004B00B6\r
+:1003500025000C000E00360051002C002600120073\r
+:100360000F003700E1082800270013003300387120\r
+:1003700030004E002D002F003482E5003181000056\r
+:100380000100010001000100010000000100010066\r
+:100390000100010001000100010001005000010006\r
+:1003A00001000100010052005100010001000100A4\r
+:1003B000010001004F0001000100010001000100E7\r
+:1003C0000100010000000100010001000000010027\r
+:1003D0000000010001000100000001000000010018\r
+:1003E0003F005200510023020000010040002400A1\r
+:1003F00021001E00270001004100250022001F00EF\r
+:1004000037000100420026002300200027000100E1\r
+:1004100043003002300024022E0001004400450059\r
+:100420000100010001000000160345007200670092\r
+:100430006F0044006F007800200045005A00000063\r
+:1004400016034500720067006F0044006F007800DB\r
+:10045000200045005A0000000403090409026D0051\r
+:10046000040100A0FA0904000001030101000921B0\r
+:1004700011010001223F000705810308000A090459\r
+:1004800001000103010200092111010001224D00B8\r
+:100490000705820308000A090402000103000000A6\r
+:1004A0000921110100012236000705830308000A13\r
+:1004B00009040300010300000009211101000122C9\r
+:1004C000390007058403100001120110010000002B\r
+:1004D00008EDFE071301000102000105010906A154\r
+:1004E00001050719E029E715002501950875018127\r
+:1004F00002050819012905950575019102950175F7\r
+:1005000003910105071900297715002501957875D4\r
+:10051000018102C005010980A101850216010026A2\r
+:10052000B7001A01002AB700751095018100C005B7\r
+:100530000C0901A1018503160100269C021A010085\r
+:100540002A9C02751095018100C005010902A101D4\r
+:100550000901A100050919012905150025019505C5\r
+:100560007501810295017503810105010930093189\r
+:100570001581257F95027508810609381581257F2B\r
+:10058000950175088106050C0A38021581257F95AD\r
+:100590000175088106C0C005010906A101050719FA\r
+:1005A000E029E7150025019508750181029501757F\r
+:1005B0000881010508190129059505750191029524\r
+:1005C00001750391010507190029FF150025FF9505\r
+:1005D0000675088100C00000000000000000000057\r
+:1005E00000010204060A0F17202C3A4A5D71879D0C\r
+:1005F000B3C7DAE9F5FCFFFCF5E9DAC7B39D87710B\r
+:100600005D4A3A2C20170F0A060402010000000080\r
+:1006100000000000000011241FBECFEFDAE0DEBFB3\r
+:10062000CDBF04B603FE24C08091EE019091EF018E\r
+:10063000A091F001B091F1018730904BA740B04BF1\r
+:10064000B9F41092EE011092EF011092F0011092A5\r
+:10065000F10114BE84B7877F84BF88E10FB6F89498\r
+:1006600080936000109260000FBEE0E0FFE3099508\r
+:1006700011E0A0E0B1E0E8EDF8E402C005900D92D1\r
+:10068000A433B107D9F711E0A4E3B1E001C01D9292\r
+:10069000AE3EB107E1F70E94520A0C946A240C9412\r
+:1006A000000061110BC0FC018281882321F085EEDE\r
+:1006B0000E94BF1003C085EE0E94871180E090E089\r
+:1006C000089508956091B1017091B2018091B301D4\r
+:1006D0009091B4010E94651B56985E9825982D98BC\r
+:1006E00026982E9827982F9808950C946203569870\r
+:1006F0005E9825982D9826982E9827982F988FEFFA\r
+:1007000090E0909389008093880090938B00809371\r
+:100710008A0090938D0080938C00259A2D9A2FEF5C\r
+:1007200080E792E0215080409040E1F700C0000057\r
+:10073000269A2E9A2FEF80E792E021508040904039\r
+:10074000E1F700C00000279A2F9A2FEF80E792E090\r
+:10075000215080409040E1F700C0000025982D987E\r
+:100760002FEF80E792E0215080409040E1F700C0F9\r
+:10077000000026982E982FEF80E792E021508040CD\r
+:100780009040E1F700C0000027982F9856985E9897\r
+:1007900025982D9826982E9827982F98089589EABD\r
+:1007A0008093800089E08093810024982C983F9862\r
+:1007B0008AB18F748AB96E98479A8BB1806B8BB966\r
+:1007C000769A0E9477030C94610380E28093000183\r
+:1007D0008091340181110EC00E94340481E0809325\r
+:1007E00034012FEF83ED90E3215080409040E1F7FA\r
+:1007F00000C0000080E40E943A048093000181114F\r
+:100800002EC00E94640480930001811128C00E94C0\r
+:10081000640480930001811122C08FE30E9464046C\r
+:100820008093000181111BC00E945C0480E40E943F\r
+:100830003A0480930001811112C08CE00E9464048C\r
+:100840008093000181110BC00E9464048093000119\r
+:10085000811105C08FE30E946404809300010E940F\r
+:100860005C048091000108951092B9008AE08093A1\r
+:10087000B800089594EA9093BC009091BC0097FF53\r
+:10088000FCCF9091B900987F983021F0903111F011\r
+:1008900081E008958093BB0084E88093BC00809140\r
+:1008A000BC0087FFFCCF8091B900887F883111F0B0\r
+:1008B000803471F780E0089584E98093BC008091D2\r
+:1008C000BC0084FDFCCF08958093BB0084E8809336\r
+:1008D000BC008091BC0087FFFCCF9091B900987F4D\r
+:1008E00081E0983209F480E0089584E88093BC00A8\r
+:1008F0008091BC0087FFFCCF8091BB000895809160\r
+:100900000001811115C080E40E943A048093000127\r
+:1009100081110CC082E10E94640480930001811166\r
+:1009200005C08FEF0E946404809300010E945C0464\r
+:1009300084B1807F84B985B1807F85B98AB1837F96\r
+:100940008AB98BB1837F8BB93E98469808950E94EF\r
+:10095000E503809300010E947F0480B38C7080BB0C\r
+:1009600081B3836F81BBA6E3B1E0E4E4F1E08EE004\r
+:100970008E0F11921D928E13FCCF0C94CF03BF9259\r
+:10098000CF92DF92EF92FF920F931F93CF93DF935B\r
+:1009900080910001882379F0809135018F5F8093E9\r
+:1009A0003501811108C00E94E50380930001811187\r
+:1009B00002C00E94770306E311E0C0E0D0E0DD242E\r
+:1009C000D39482E0C82EEE24E394F12CC730D105F5\r
+:1009D00000F580910001811164C080E40E943A0416\r
+:1009E00080930001811112C082E10E94640480930F\r
+:1009F000000181110BC0C7010C2E01C0880F0A94A1\r
+:100A0000EAF780950E946404809300010E945C04D0\r
+:100A100048C0CA30A1F028F4C83059F0C93061F09C\r
+:100A200005C0CC3089F070F0CD3089F0209A28983C\r
+:100A300010C0219A29980DC0229A2A980AC0239A98\r
+:100A40002B9807C0529A01C0539A5B9802C03E9AF5\r
+:100A5000469890EA9A95F1F79FB1799902C082E0A1\r
+:100A600001C080E091709D25982B7C9902C084E0A4\r
+:100A700001C080E0892B7D9902C038E001C030E0E0\r
+:100A8000832B7E9902C020E101C020E0822B9FB120\r
+:100A90009095991F9927991F9295990F907E892B70\r
+:100AA0000FC080910001811149C080E40E943A0486\r
+:100AB00080930001882379F1B12C0E945C048B2D76\r
+:100AC000F8019081981719F08083C09201010E946B\r
+:100AD0007F0421960F5F1F4FCE30D10509F076CFEE\r
+:100AE00080910101882361F1815080930101882365\r
+:100AF00039F08FE99FE00197F1F700C0000020C0B6\r
+:100B0000A4E4B1E0E6E3F1E0CF01825F91919D932F\r
+:100B10008E13FCCF15C083E10E9464048093000112\r
+:100B20008111CACF81E40E943A04809300018111AF\r
+:100B3000C3CF0E947504B82EB094BFCF80E0C0CF61\r
+:100B40000E94750381E0DF91CF911F910F91FF907B\r
+:100B5000EF90DF90CF90BF900895E82FF0E0EC5B2E\r
+:100B6000FE4F808108950895089596E0799FF001E1\r
+:100B7000112494E5899FE00DF11D1124E60FF11D6C\r
+:100B8000EE0FFF1FE052FF4F859194910895880F5B\r
+:100B9000991FFC01E05AF040859194910895880FC7\r
+:100BA000991FFC01E052FF4F8591949108950F9396\r
+:100BB0001F93CF93DF93EC018115904350F5C1153E\r
+:100BC00080E2D80708F0B3C0CB3BD10590F4C83A17\r
+:100BD000D10508F05AC0C53AD10508F04BC0C43061\r
+:100BE000D10508F0BBC1219709F0B5C101E010E0C3\r
+:100BF000F5C1CF3FD10511F008F0B0C1C03FD1051C\r
+:100C000008F092C0CE01805E9109089708F4A6C151\r
+:100C1000A2C1C11591E5D907A8F4C23020E5D207D9\r
+:100C200008F09EC0C11580E5D80709F485C008F01A\r
+:100C300091C0C11520E4D20708F08DC1DD278E01D7\r
+:100C4000106CCCC1C11580E8D80758F4C11590E7E5\r
+:100C5000D90708F07CC1C11520E6D20708F422C1EB\r
+:100C60007AC1C11580E9D80708F075C1DF708E011F\r
+:100C7000106AB4C1C53AD10509F472C1C63AD105AA\r
+:100C800009F071C102E810E4A9C1C83AD10509F41C\r
+:100C90006DC1C93AD10509F46CC1CA3AD10509F44C\r
+:100CA0006BC1CB3AD10509F46AC1CC3AD10509F43C\r
+:100CB00069C1CD3AD10509F468C1C03BD10509F439\r
+:100CC00067C1CE3AD10509F466C1CF3AD10509F41E\r
+:100CD00065C1C13BD10509F464C1C23BD10509F42A\r
+:100CE00063C1C33BD10509F462C1C43BD10509F41A\r
+:100CF00061C1C53BD10509F460C1C63BD10509F40A\r
+:100D00005FC1C73BD10509F45EC1C83BD10509F4F9\r
+:100D10005DC1C93BD10509F45CC1CA3BD10509F4E9\r
+:100D20005BC100E014E45AC18E01106557C1CE01C9\r
+:100D30009F700E94CF0553C10E9426159FEF24E3A8\r
+:100D40008CE0915020408040E1F700C000000E94FC\r
+:100D50005E1C44C18091CD0181608093CD013EC174\r
+:100D60000E94071E811102C00E94ED1D0E94241ED8\r
+:100D700090E09093EE018093ED01C23090E5D907A9\r
+:100D800021F48091ED01816086C0C43020E5D20756\r
+:100D900021F48091ED0182607EC0C63080E5D807E5\r
+:100DA00021F48091ED01846076C0C83090E5D907C8\r
+:100DB00019F48091ED0127C0CA3020E5D20721F453\r
+:100DC0008091ED01806167C0CC3080E5D80721F4C7\r
+:100DD0008091ED0180625FC0CE3090E5D90721F4AB\r
+:100DE0008091ED01806457C0C03120E5D20721F425\r
+:100DF0008091ED0180684FC0C23180E5D80729F4A9\r
+:100E00008091ED018460886046C0C33090E5D907C9\r
+:100E100021F48091ED018E7F3EC0C53020E5D207E0\r
+:100E200021F48091ED018D7F36C0C73080E5D80771\r
+:100E300021F48091ED018B7F2EC0C93090E5D90758\r
+:100E400019F48091ED0126C0CB3020E5D20721F4C2\r
+:100E50008091ED018F7E1FC0CD3080E5D80721F451\r
+:100E60008091ED018F7D17C0CF3090E5D90721F437\r
+:100E70008091ED018F7B0FC0C13120E5D20721F4B5\r
+:100E80008091ED018F7707C0C331D04531F4809157\r
+:100E9000ED018B7F877F8093ED018091ED010E94B2\r
+:100EA000281E9CC08D2F99278F709927813091051E\r
+:100EB000D9F49E012370332702C0880F991F2A9509\r
+:100EC000E2F79C688E0144E0000F111F4A95E1F79C\r
+:100ED00000271370802B912B53E0CC0FDD1F5A9508\r
+:100EE000E1F7C076DD272FC08230910531F4DC2F89\r
+:100EF000CC278E01016F106A71C08330910569F4AF\r
+:100F0000CE018370992701E010E002C0000F111F8D\r
+:100F10008A95E2F7C8019C680FC0049709F05EC08B\r
+:100F2000CE018370992701E010E002C0000F111F6D\r
+:100F30008A95E2F7C8019A6823E0CC0FDD1F2A9555\r
+:100F4000E1F7C07ED7708C010C2B1D2B47C0DF70E2\r
+:100F50008E01106243C000E010E040C08E013EC030\r
+:100F600001E810E43BC003E810E438C002EE14E4EA\r
+:100F700035C009EE14E432C00AEE14E42FC005EBCC\r
+:100F800014E42CC006EB14E429C007EB14E426C0DB\r
+:100F90000CEC14E423C00DEC14E420C003E815E4C9\r
+:100FA0001DC00AE815E41AC002E915E417C004E9F7\r
+:100FB00015E414C001E216E411C003E216E40EC009\r
+:100FC00004E216E40BC005E216E408C006E216E4EB\r
+:100FD00005C007E216E402C00AE216E4C801DF9188\r
+:100FE000CF911F910F91089596E0799FF001112400\r
+:100FF00094E5899FE00DF11D1124E60FF11DEE0F20\r
+:10100000FF1FE052FF4F85919491803E9105E0F4DF\r
+:10101000803C910558F58133910509F46FC048F47F\r
+:101020008932910509F463C08A32910509F46DC0D3\r
+:1010300072C089339105E9F082389105D1F085338A\r
+:10104000910509F44DC067C0833E910581F138F4E4\r
+:10105000803E9105B9F0823E9105D9F05CC0863E94\r
+:10106000910561F1873E9105A1F155C00E94C70528\r
+:1010700008952091ED0120FD02C021FF4CC080EEBB\r
+:1010800090E049C08091ED0180FFF9CF89E390E0C5\r
+:1010900042C08091ED0182FF0EC08091ED0184FF7E\r
+:1010A00003C080E090E037C083EE90E034C08091D0\r
+:1010B000ED0182FFF2CF82EE90E02DC08091ED0134\r
+:1010C00083FF0BC08091ED0184FDEBCF87EE90E0B4\r
+:1010D00022C08091ED0183FFF5CF86EE90E01BC02A\r
+:1010E0008091ED0185FF07C089E290E014C08091F6\r
+:1010F000ED0185FFF9CF85E390E00DC08091ED0112\r
+:1011000086FF07C08AE290E006C08091ED0186FF6D\r
+:10111000F9CF81E390E00E94D705089508950C94DB\r
+:101120008E08809162010895CF93DF9300D01F92C3\r
+:10113000CDB7DEB79C018091E401843019F593E0CE\r
+:1011400099833B832A839093E9008FEF9091E80085\r
+:10115000815095FD06C095ED9A95F1F7000081113B\r
+:10116000F5CF8091E80085FF0DC040E050E063E0DE\r
+:1011700070E0CE0101960E94FE0A8091E8008E7711\r
+:101180008093E8000F900F900F90DF91CF9108951A\r
+:10119000CF93DF9300D01F92CDB7DEB72091E4014B\r
+:1011A000243021F522E029839B838A8383E0809386\r
+:1011B000E9008FEF9091E800815095FD06C095ED14\r
+:1011C0009A95F1F700008111F5CF8091E80085FF35\r
+:1011D0000DC040E050E063E070E0CE0101960E9457\r
+:1011E000FE0A8091E8008E778093E8000F900F90C0\r
+:1011F0000F90DF91CF9108952091E4012430F1F414\r
+:1012000022E02093E9002FEF3091E800215035FDD6\r
+:1012100006C035ED3A95F1F700002111F5CF209188\r
+:10122000E80025FF0BC040E050E065E070E00E9460\r
+:10123000FE0A8091E8008E778093E8000895CF93AE\r
+:10124000DF93EC019091E401943009F046C0809165\r
+:101250000C018823D9F080910D018823B9F0909377\r
+:10126000E9008FEF9091E800815095FD06C095E16F\r
+:101270009A95F1F700008111F5CF8091E80085FF84\r
+:101280002CC040E050E060E170E017C081E0809346\r
+:10129000E9008FEF9091E800815095FD06C095ED33\r
+:1012A0009A95F1F700008111F5CF8091E80085FF54\r
+:1012B00014C040E050E068E070E0CE010E94FE0AF9\r
+:1012C0008091E8008E778093E80080E1FE01A2E53E\r
+:1012D000B1E001900D928A95E1F7DF91CF910895E9\r
+:1012E0008091E301811109C00E94930C0E94F00CCF\r
+:1012F0008091E20084608093E20008951092E301FF\r
+:10130000089508950C9497220E94F41B0E949D2238\r
+:101310000E94960F0C948F0842E061EC81E00E94DD\r
+:101320000D0C42E061EC82E00E940D0C42E061ECA9\r
+:1013300083E00E940D0C42E161EC84E00C940D0C02\r
+:101340008091E601833009F455C030F4813071F0AA\r
+:10135000823009F48EC008958A3009F47AC08B3047\r
+:1013600009F460C0893009F09CC020C08091E5017B\r
+:10137000813A09F096C08091E800877F8093E80069\r
+:101380008091E9019091EA01892B21F460E182E5E5\r
+:1013900091E003C060E080E090E070E00E94490BC3\r
+:1013A0008091E8008B778093E80008958091E501B3\r
+:1013B000813209F076C08091E9019091EA010097AD\r
+:1013C00019F0039709F06DC08091E800877F809342\r
+:1013D000E8008091E80082FD05C08091E401811160\r
+:1013E000F8CF5FC08091F100809362018091E800A6\r
+:1013F0008B7753C08091E501813A09F052C080910A\r
+:10140000E9019091EA01892B09F04BC08091E80035\r
+:10141000877F8093E8008091E80080FFFCCF809177\r
+:101420000C0136C08091E5018132D9F58091E90146\r
+:101430009091EA01892BA9F58091E800877F80933C\r
+:10144000E8000E94420C8091E70180930C010C940B\r
+:1014500026158091E501813221F58091E800877F92\r
+:101460008093E8000E94420C8091E8018093630120\r
+:1014700008958091E501813AA1F48091E800877F89\r
+:101480008093E8008091E80080FFFCCF80916301A9\r
+:101490008093F1008091E8008E778093E8000C94AF\r
+:1014A000420C089584B7877F84BF88E10FB6F89413\r
+:1014B00080936000109260000FBE90E080E80FB64D\r
+:1014C000F89480936100909361000FBE0E94E50F35\r
+:1014D0000E94930C0E94F00C8091E2008460809343\r
+:1014E000E20078940E94760F0E94E70F82E091E07C\r
+:1014F0000E94910F0E9485228091E401853069F459\r
+:101500000E94B51B8091E2018823B1F30E94E01B89\r
+:10151000882391F30E94E80AEFCF0E94ED0FECCFF1\r
+:10152000292F332723303105C9F064F421303105E8\r
+:1015300081F02230310509F043C08DE690E02CE5C2\r
+:1015400034E042C021323105F1F02232310541F15F\r
+:1015500037C082E190E029EC34E036C09927813031\r
+:10156000910541F08230910541F0892B49F5E8E57C\r
+:10157000F4E005C0E0E4F4E002C0E8E2F4E08491C5\r
+:1015800090E09F0121C06430D8F4E62FF0E0EE0F28\r
+:10159000FF1FEE5DFE4F2081318189E090E014C095\r
+:1015A000643070F470E0FB01EE0FFF1FE65EFE4F4B\r
+:1015B00020813181FB01EA5EFE4F808190E004C012\r
+:1015C00080E090E020E030E0FA013183208308954C\r
+:1015D00080E189BD82E189BD09B400FEFDCF809123\r
+:1015E000D8008F7D8093D8008091E0008260809346\r
+:1015F000E0008091E00081FDFCCF0895CF92DF9262\r
+:10160000EF92FF920F931F93CF93DF93EC018B0127\r
+:101610006A010E94610C811133C0C114D10439F0F8\r
+:10162000F60180819181081B190BC80FD91FE12C8D\r
+:10163000F12C0115110519F18091E80085FD16C006\r
+:101640008091E8008E778093E800C114D10449F0BE\r
+:10165000F60180819181E80EF91EF182E08285E039\r
+:101660000FC00E94610C882321F30AC089918093E6\r
+:10167000F10001501109FFEFEF1AFF0ADACF80E005\r
+:10168000DF91CF911F910F91FF90EF90DF90CF905E\r
+:1016900008952091EB013091EC012617370748F0AF\r
+:1016A0006115710539F42091E8002E772093E80048\r
+:1016B00001C0B90140E061157105A9F12091E40173\r
+:1016C000222309F443C0253009F442C02091E800E8\r
+:1016D00023FD40C02091E80022FD32C02091E800A7\r
+:1016E00020FFE9CF4091F3002091F20030E0342B4D\r
+:1016F000FC01CF016115710559F02830310540F426\r
+:1017000081918093F100615071092F5F3F4FF1CFBC\r
+:1017100041E02830310509F040E02091E8002E77C3\r
+:101720002093E800C8CF4111C9CF0AC08091E401DD\r
+:10173000882361F0853061F08091E80083FD0AC064\r
+:101740008091E80082FFF2CF80E0089582E0089562\r
+:1017500083E0089581E008952091EB013091EC0140\r
+:101760002617370748F06115710539F42091E80014\r
+:101770002E772093E80001C0B901FC0120E061153B\r
+:10178000710591F18091E401882309F440C085300E\r
+:1017900009F43FC08091E80083FD3DC08091E800DE\r
+:1017A00082FD2FC08091E80080FFE9CF2091F300F7\r
+:1017B0008091F20090E0922B6115710559F088300C\r
+:1017C000910540F424912093F10031966150710904\r
+:1017D0000196F2CF21E0089709F020E08091E8001F\r
+:1017E0008E778093E800CBCF2111CCCF0AC08091B7\r
+:1017F000E401882361F0853061F08091E80083FD89\r
+:101800000AC08091E80082FFF2CF80E0089582E074\r
+:10181000089583E0089581E00895982F973058F552\r
+:101820009093E900981739F07091EC002091ED0049\r
+:101830005091F00003C0242F762F50E021FF19C0F3\r
+:101840003091EB003E7F3093EB003091ED003D7F17\r
+:101850003093ED003091EB0031603093EB007093EA\r
+:10186000EC002093ED005093F0002091EE0027FF54\r
+:1018700007C09F5FD3CF8F708093E90081E0089508\r
+:1018800080E008958091E50187FF11C08091E80014\r
+:1018900082FD05C08091E4018111F8CF11C08091D3\r
+:1018A000E8008B770BC08091E401882349F0809198\r
+:1018B000E80080FFF8CF8091E8008E778093E80001\r
+:1018C00008952091E4003091E50095E64091EC0008\r
+:1018D000842F817040FF22C08091E80080FD1CC0F1\r
+:1018E0008091E401882391F0853091F08091EB00A4\r
+:1018F00085FD10C04091E4005091E5004217530768\r
+:1019000029F39A01915011F784E0089582E0089537\r
+:1019100083E0089581E0089580E008954091E80013\r
+:1019200042FFDECF08950E94010D0E94090DE0EEF6\r
+:10193000F0E0808181608083E8EDF0E080818F7746\r
+:10194000808319BCA7EDB0E08C918E7F8C93808151\r
+:101950008F7E80831092E30108950F931F93CF939E\r
+:10196000DF930E94010D0E94090DC8EDD0E088812F\r
+:101970008F77888388818068888388818F7D88833A\r
+:1019800019BC1092E4011092E0011092E201109251\r
+:10199000E10100EE10E0F80180818B7F8083888177\r
+:1019A0008160888342E060E080E00E940D0CE1EEFF\r
+:1019B000F0E080818E7F8083E2EEF0E080818160C4\r
+:1019C0008083808188608083F80180818E7F80831E\r
+:1019D000888180618883DF91CF911F910F91089555\r
+:1019E000E8EDF0E080818F7E8083E7EDF0E080819C\r
+:1019F0008160808384E082BF81E08093E3010C9466\r
+:101A0000AD0CE8EDF0E080818E7F80831092E200E3\r
+:101A100008951092DA001092E10008951F920F923B\r
+:101A20000FB60F9211242F933F934F935F936F93B1\r
+:101A30007F938F939F93AF93BF93EF93FF93809187\r
+:101A4000E10082FF0BC08091E20082FF07C080911D\r
+:101A5000E1008B7F8093E1000E94750F8091DA0096\r
+:101A600080FF1FC08091D80080FF1BC08091DA00EA\r
+:101A70008E7F8093DA008091D90080FF0DC080E1D5\r
+:101A800089BD82E189BD09B400FEFDCF81E080936C\r
+:101A9000E4010E94700905C019BC1092E4010E9483\r
+:101AA0007E098091E10080FF19C08091E20080FFF3\r
+:101AB00015C08091E2008E7F8093E2008091E20069\r
+:101AC00080618093E2008091D80080628093D8008A\r
+:101AD00019BC85E08093E4010E9482098091E100B5\r
+:101AE00084FF30C08091E20084FF2CC080E189BD7A\r
+:101AF00082E189BD09B400FEFDCF8091D8008F7DC1\r
+:101B00008093D8008091E1008F7E8093E1008091E6\r
+:101B1000E2008F7E8093E2008091E20081608093FA\r
+:101B2000E2008091E001882311F084E007C08091F9\r
+:101B3000E30087FD02C081E001C083E08093E401FF\r
+:101B40000E9484098091E10083FF29C08091E20016\r
+:101B500083FF25C08091E100877F8093E10082E0D0\r
+:101B60008093E4011092E0018091E1008E7F8093E8\r
+:101B7000E1008091E2008E7F8093E2008091E2009C\r
+:101B800080618093E20042E060E080E00E940D0C02\r
+:101B90008091F00088608093F0000E948109FF919D\r
+:101BA000EF91BF91AF919F918F917F916F915F91D5\r
+:101BB0004F913F912F910F900FBE0F901F9018954E\r
+:101BC0001F920F920FB60F9211242F933F934F93B2\r
+:101BD0005F936F937F938F939F93AF93BF93CF93B5\r
+:101BE000DF93EF93FF93C091E900CF708091EC00F9\r
+:101BF000D82FD17080FDD0E81092E9008091F000DC\r
+:101C0000877F8093F00078940E94240E1092E90060\r
+:101C10008091F00088608093F000CD2BCF70C0934E\r
+:101C2000E900FF91EF91DF91CF91BF91AF919F912B\r
+:101C30008F917F916F915F914F913F912F910F9075\r
+:101C40000FBE0F901F9018951F93CF93DF93CDB7C2\r
+:101C5000DEB7AA970FB6F894DEBF0FBECDBFE5EE94\r
+:101C6000F1E088E08E0F9091F10091938E13FBCFFD\r
+:101C70000E94A0098091E80083FF1FC18091E501C7\r
+:101C80009091E601492F50E04A30510508F015C106\r
+:101C9000FA01EA5AFF4F0C941F24803881F08238F1\r
+:101CA00009F00BC18091E9018F708093E900809168\r
+:101CB000EB0085FB882780F91092E90006C080912F\r
+:101CC000E1019091E201911182609091E800977F8B\r
+:101CD0009093E8008093F1001092F100C8C0282F83\r
+:101CE0002D7F09F0EAC0882319F0823061F0E5C049\r
+:101CF0008091E701813009F0E0C0933009F080E085\r
+:101D00008093E2012BC08091E701811127C080916F\r
+:101D1000E9018F7009F4D1C08093E9002091EB00B4\r
+:101D200020FF1CC0933021F48091EB00806214C02E\r
+:101D30009091EB0090619093EB0021E030E0A901DD\r
+:101D400002C0440F551F8A95E2F74093EA001092B3\r
+:101D5000EA008091EB0088608093EB001092E9002C\r
+:101D60008091E800877F86C08111A7C01091E701AC\r
+:101D70001F778091E3008078812B8093E30080912E\r
+:101D8000E800877F8093E8000E94420C8091E80081\r
+:101D900080FFFCCF8091E30080688093E300111105\r
+:101DA00002C082E001C083E08093E40186C08058D5\r
+:101DB000823008F082C08091E7019091E8018C3D6B\r
+:101DC00053E0950779F583E08A838AE289834FB7E8\r
+:101DD000F894DE01139620E03EE051E2E32FF0E0BC\r
+:101DE00050935700E49120FF03C0E295EF703F5FEE\r
+:101DF000EF708E2F90E0EA3010F0C79601C0C096C9\r
+:101E00008D939D932F5F243149F74FBF8091E80058\r
+:101E1000877F8093E8006AE270E0CE0101960E941D\r
+:101E2000490B14C0AE014F5F5F4F6091E9010E9402\r
+:101E3000900ABC01892B09F440C09091E800977F7B\r
+:101E40009093E80089819A810E94AC0B8091E80010\r
+:101E50008B778093E80031C0803879F58091E80075\r
+:101E6000877F8093E8008091E0018093F10080916A\r
+:101E7000E8008E778093E8000E94420C1EC081111A\r
+:101E80001CC09091E7019230C0F48091E800877FF8\r
+:101E90008093E8009093E0010E94420C8091E00161\r
+:101EA000811106C08091E30087FD02C081E001C07E\r
+:101EB00084E08093E4010E948C098091E80083FF14\r
+:101EC0000AC08091E800877F8093E8008091EB0052\r
+:101ED00080628093EB00AA960FB6F894DEBF0FBE27\r
+:101EE000CDBFDF91CF911F9108950895CF93809139\r
+:101EF000E4018823A1F0C091E900CF709091EC003B\r
+:101F0000892F817090FD80E8C82B1092E9008091A4\r
+:101F1000E80083FD0E94240ECF70C093E900CF91AA\r
+:101F2000089590936901809368010895E091680194\r
+:101F3000F0916901309721F00190F081E02D099432\r
+:101F400080E00895E0916801F0916901309721F0F7\r
+:101F50000280F381E02D09940895E0916801F091E9\r
+:101F60006901309721F00480F581E02D09940895EE\r
+:101F700020916601309167018217930771F0909369\r
+:101F8000670180936601E0916801F09169013097E3\r
+:101F900021F00680F781E02D0994089520916401D5\r
+:101FA000309165018217930771F0909365018093DA\r
+:101FB0006401E0916801F0916901309721F000849B\r
+:101FC000F185E02D0994089508950C94E40F0E9482\r
+:101FD000FA1B0E94A7040C94C01CCF92DF92EF92D0\r
+:101FE000FF920F931F93CF93DF93CDB7DEB72B975D\r
+:101FF0000FB6F894DEBF0FBECDBF0E94BF048BE6C4\r
+:10200000C82E81E0D82E00E010E0E02E802F0E9444\r
+:10201000AD05F60141916F01F42EF826B1F40F5F82\r
+:102020001F4F0E30110589F78FEF89838A831B823A\r
+:102030000E94031C8160782F9D838C8349815A8183\r
+:102040006B818D810E94901040C09091CD0191FFD5\r
+:1020500004C08B870E94B3058B8520E030E04F2DB4\r
+:1020600050E0922FBA01022E02C0759567950A942E\r
+:10207000E2F760FF24C02E83EF8221E030E06901A7\r
+:1020800002C0CC0CDD1C9A95E2F790E08C219D21DA\r
+:10209000892B09F420E028870E94031C8160782F97\r
+:1020A0009A8789874E815F8168858A850E94901012\r
+:1020B000F801E559FE4F8081C826C08206C02F5F17\r
+:1020C0003F4F2630310569F6AACF0E94A71F109115\r
+:1020D0006A010E94960F1817A1F00E94960F809334\r
+:1020E0006A012B960FB6F894DEBF0FBECDBFDF910D\r
+:1020F000CF911F910F91FF90EF90DF90CF900C94B4\r
+:102100008F082B960FB6F894DEBF0FBECDBFDF91C0\r
+:10211000CF911F910F91FF90EF90DF90CF90089596\r
+:10212000CF93DF93CDB7DEB72B970FB6F894DEBF12\r
+:102130000FBECDBF4F83588769877A878B87DE01B3\r
+:10214000119686E0FD0111928A95E9F785E0FE017E\r
+:10215000379601900D928A95E1F749815A816B81FA\r
+:102160007C818D819E810E94C0172B960FB6F894BA\r
+:10217000DEBF0FBECDBFDF91CF9108950895CF93FD\r
+:10218000882309F4C2C0C82F823859F40E94960FE0\r
+:1021900081FDBBC089E30E94691A0E94361B89E356\r
+:1021A0000CC0833879F40E94960F80FDAEC083E5A1\r
+:1021B0000E94691A0E94361B83E50E94AB1ACF91D8\r
+:1021C0000C94361B843859F40E94960F82FD9DC0F2\r
+:1021D00087E40E94691A0E94361B87E4EECF8CEFD9\r
+:1021E0008C0F813A48F48C2F0E94EA2181118DC016\r
+:1021F0008C2F0E94691AE3CF80E28C0F883048F45C\r
+:10220000C77081E001C0880FCA95EAF70E94EF1AF3\r
+:10221000D6CF8BE58C0F833078F4C53A29F0C63AD7\r
+:1022200031F083E890E005C081E890E002C082E8E8\r
+:1022300090E0CF910C94B80F88E58C0F833108F0B3\r
+:1022400064C0C83A39F1C93A41F1CA3A49F1CB3AC6\r
+:1022500051F1CC3A59F1CD3A61F1C03B69F1CE3A36\r
+:1022600071F1CF3A79F1C13B81F1C23B89F1C33BB6\r
+:1022700091F1C43B99F1C53BA1F1C63BA9F1C73B24\r
+:10228000B1F1C83BB9F1C93BC1F1CA3BC9F180E02A\r
+:1022900090E038C082EE90E035C089EE90E032C028\r
+:1022A0008AEE90E02FC085EB90E02CC086EB90E0AA\r
+:1022B00029C087EB90E026C08CEC90E023C08DEC29\r
+:1022C00090E020C083E891E01DC08AE891E01AC048\r
+:1022D00082E991E017C084E991E014C081E292E0C4\r
+:1022E00011C083E292E00EC084E292E00BC085E26E\r
+:1022F00092E008C086E292E005C087E292E002C068\r
+:102300008AE292E0CF910C94CE0FCF91089588236A\r
+:1023100009F44BC0823859F40E94960F81FF45C0E2\r
+:1023200089E30E94691A0E94361B89E30CC0833836\r
+:1023300071F40E94960F80FF38C083E50E94691AED\r
+:102340000E94361B83E50E94AB1A0C94361B84381E\r
+:1023500059F40E94960F82FF28C087E40E94691AF0\r
+:102360000E94361B87E4EFCF9CEF980F913A58F309\r
+:1023700090E2980F983050F4877091E001C0990F67\r
+:102380008A95EAF7892F0E94F51ADFCF9BE5980F0F\r
+:10239000933020F480E090E00C94B80F885A833199\r
+:1023A00020F480E090E00C94CE0F0895882321F073\r
+:1023B0000E94EF1A0C94361B0895882321F00E9486\r
+:1023C000F51A0C94361B0895BF92CF92DF92EF92CC\r
+:1023D000FF920F931F93CF93DF9300D000D000D0D4\r
+:1023E000CDB7DEB725E0FC01DE01119601900D921C\r
+:1023F0002A95E1F7FC01D080118102812581229587\r
+:102400002F7043815481452B09F4FCC21F3F21F4F6\r
+:10241000FFEFDF1609F4F6C27C012E830E94BE1086\r
+:10242000D9821A8369817A81802F0E94651A182FB8\r
+:10243000B92E0E941A1A0E94E1182E81002319F069\r
+:102440000E940C1B2E81EB2DE295EF70F0E0E05A1C\r
+:10245000FF4F0C941F248B2D807F9B2D9F70F92E96\r
+:10246000882319F0F29480EFF822002389F0FF20EE\r
+:1024700009F475C280E2810F883020F48F2D0E940C\r
+:10248000EF1A03C08F2D0E94FF1A0E94361B67C2ED\r
+:10249000812F0E948711FF2009F4B4C2105E8F2D96\r
+:1024A000183018F40E94F51A02C00E94051B2696E7\r
+:1024B0000FB6F894DEBF0FBECDBFDF91CF911F9155\r
+:1024C0000F91FF90EF90DF90CF90BF900C94361B50\r
+:1024D0003B2D307F8B2D8F70303211F08295807FB5\r
+:1024E000112319F0113021F12CC00023B9F022235F\r
+:1024F00009F4A0C1213009F09DC126960FB6F894C9\r
+:10250000DEBF0FBECDBFDF91CF911F910F91FF9026\r
+:10251000EF90DF90CF90BF900C941F1B222319F0F7\r
+:10252000213009F46FC28E830E94221B8E8196C1D6\r
+:10253000002321F0223008F065C27CC1211162C263\r
+:102540008DC1002321F0222309F474C108C2222383\r
+:1025500009F484C119C22B2D26952695237030E0ED\r
+:102560002115310521F021303105D1F04BC2002376\r
+:1025700021F0812F9B2D937002C080E090E0269681\r
+:102580000FB6F894DEBF0FBECDBFDF91CF911F9184\r
+:102590000F91FF90EF90DF90CF90BF900C94B80F09\r
+:1025A000002321F0812F9B2D937002C080E090E0EA\r
+:1025B00026960FB6F894DEBF0FBECDBFDF91CF9148\r
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0\r
+:1025D000CE0F812F002319F00E94AF1E02C00E946F\r
+:1025E000171F26960FB6F894DEBF0FBECDBFDF9142\r
+:1025F000CF911F910F91FF90EF90DF90CF90BF9000\r
+:102600000C949C1F8B2D837009F07BC00111FAC1C3\r
+:10261000812F829586958770880F880F912F9F70E4\r
+:10262000C92ED12CE12CF12C082E04C0CC0CDD1CC1\r
+:10263000EE1CFF1C0A94D2F714FF12C04FE050E0CA\r
+:1026400060E070E004C0440F551F661F771F8A9535\r
+:10265000D2F7CB01BA01609570958095909503C033\r
+:1026600060E070E0CB012B2D269526952370422F3C\r
+:1026700050E042305105D9F04330510569F16C29E1\r
+:102680007D298E299F294130510551F126960FB69B\r
+:10269000F894DEBF0FBECDBFDF91CF911F910F9198\r
+:1026A000FF90EF90DF90CF90BF900C9408196C29A9\r
+:1026B0007D298E299F2926960FB6F894DEBF0FBE7E\r
+:1026C000CDBFDF91CF911F910F91FF90EF90DF90E1\r
+:1026D000CF90BF900C9424190E940819C701B6012D\r
+:1026E00026960FB6F894DEBF0FBECDBFDF91CF9117\r
+:1026F0001F910F91FF90EF90DF90CF90BF900C94BF\r
+:10270000EC18002319F08B2D817001C08695882369\r
+:1027100009F478C1812F829586958770880F880F7C\r
+:10272000912F9F70C92ED12CE12CF12C082E04C0C2\r
+:10273000CC0CDD1CEE1CFF1C0A94D2F714FF12C057\r
+:102740004FE050E060E070E004C0440F551F661F8A\r
+:10275000771F8A95D2F7CB01BA0160957095809565\r
+:10276000909503C060E070E0CB012B2D2695269557\r
+:102770002370422F50E042305105D9F043305105CB\r
+:1027800069F16C297D298E299F294130510551F12C\r
+:1027900026960FB6F894DEBF0FBECDBFDF91CF9166\r
+:1027A0001F910F91FF90EF90DF90CF90BF900C940E\r
+:1027B000E2196C297D298E299F2926960FB6F89457\r
+:1027C000DEBF0FBECDBFDF91CF911F910F91FF9064\r
+:1027D000EF90DF90CF90BF900C94FE190E94E21909\r
+:1027E000C701B60126960FB6F894DEBF0FBECDBF67\r
+:1027F000DF91CF911F910F91FF90EF90DF90CF90DD\r
+:10280000BF900C94C619103FD1F118F4103E50F44B\r
+:10281000A1C0123F09F463C008F44CC0133F09F48F\r
+:1028200073C098C01F708B2D8F710023A1F00E9480\r
+:102830005F19812F26960FB6F894DEBF0FBECDBF6D\r
+:10284000DF91CF911F910F91FF90EF90DF90CF908C\r
+:10285000BF900C94D6110E948019812F26960FB636\r
+:10286000F894DEBF0FBECDBFDF91CF911F910F91C6\r
+:10287000FF90EF90DF90CF90BF900C94DD1100237C\r
+:10288000A9F02111BFC08B2D8F7126960FB6F89439\r
+:10289000DEBF0FBECDBFDF91CF911F910F91FF9093\r
+:1028A000EF90DF90CF90BF900C94A519223008F0E4\r
+:1028B000A9C0E9CF0023A9F08B2D8F7126960FB602\r
+:1028C000F894DEBF0FBECDBFDF91CF911F910F9166\r
+:1028D000FF90EF90DF90CF90BF900C945F19002392\r
+:1028E00059F38B2D8F7126960FB6F894DEBF0FBE6D\r
+:1028F000CDBFDF91CF911F910F91FF90EF90DF90AF\r
+:10290000CF90BF900C948019002399F08B2D8F717C\r
+:1029100026960FB6F894DEBF0FBECDBFDF91CF91E4\r
+:102920001F910F91FF90EF90DF90CF90BF900C948C\r
+:102930004A1926960FB6F894DEBF0FBECDBFDF91C1\r
+:10294000CF911F910F91FF90EF90DF90CF90BF90AC\r
+:102950000C9440190023A9F0222309F4ADCF812F54\r
+:1029600026960FB6F894DEBF0FBECDBFDF91CF9194\r
+:102970001F910F91FF90EF90DF90CF90BF900C943C\r
+:10298000BF10222309F4ADCF812F26960FB6F894FD\r
+:10299000DEBF0FBECDBFDF91CF911F910F91FF9092\r
+:1029A000EF90DF90CF90BF900C9487114B2D4F701C\r
+:1029B000612FC7010E94510326960FB6F894DEBF1F\r
+:1029C0000FBECDBFDF91CF911F910F91FF90EF9080\r
+:1029D000DF90CF90BF900C9464184B2D4F70612FF7\r
+:1029E000C70126960FB6F894DEBF0FBECDBFDF91AC\r
+:1029F000CF911F910F91FF90EF90DF90CF90BF90FC\r
+:102A00000C94B40526960FB6F894DEBF0FBECDBF6A\r
+:102A1000DF91CF911F910F91FF90EF90DF90CF90BA\r
+:102A2000BF9008950E940C1B0E941C1B0E94E11A7B\r
+:102A30000E94361B0E944D200E949C1F80E090E067\r
+:102A40000E94B80F80E090E00C94CE0F0E94FC1A18\r
+:102A50000C9412150E945A1A292F22952F7030E0DB\r
+:102A60002C3031054CF42A3031056CF422503109F8\r
+:102A70002230310588F407C02C30310549F02F3061\r
+:102A8000310531F009C0803E48F0803F29F406C08E\r
+:102A900093FB882780F9089580E0089581E00895E8\r
+:102AA000CF93DF9300D000D01F92CDB7DEB70F9049\r
+:102AB0000F900F900F900F90DF91CF910895CF93CB\r
+:102AC000DF9300D000D000D0CDB7DEB726960FB68A\r
+:102AD000F894DEBF0FBECDBFDF91CF9108951F9355\r
+:102AE000CF93DF93C091790116E080917A01C817E6\r
+:102AF00099F0D0E01C9FF0011D9FF00D1124E558C6\r
+:102B0000FE4F4081518162817381848195810E9451\r
+:102B10005F152196C770E9CFDF91CF911F9108957E\r
+:102B20004091AB015091AC016091AD017091AE014B\r
+:102B30008091AF019091B0010C945F158091B0012C\r
+:102B400082958F7009F054C08091AD01882309F4FB\r
+:102B50004FC080917901A0917A016091AB01709191\r
+:102B6000AC014091AE015091AF01B6E08A1709F473\r
+:102B70003FC090E041155105C1F17F3F11F46F3F17\r
+:102B8000A1F1B89FF001B99FF00D1124E558FE4F57\r
+:102B9000218172132AC02081621327C02281211152\r
+:102BA00024C0238134812417350710F421503109C2\r
+:102BB000241B350B283C3105C0F42091B0012F7047\r
+:102BC00020612093B00126E0289FF001299FF00D9D\r
+:102BD0001124E058FE4F80818F70806180838BEAE2\r
+:102BE00091E00E94E4110C946F1501968770BECF9E\r
+:102BF0000895CF92DF92EF92FF920F931F93CF939E\r
+:102C0000DF93CDB7DEB762970FB6F894DEBF0FBE85\r
+:102C1000CDBF8C0185E0F801DE011D9601900D927B\r
+:102C20008A95E1F7D8014C9111965C911197129613\r
+:102C30006C9112971396CD90DC9014973091AB0164\r
+:102C40007091AC018091AE019091AF01009709F4B1\r
+:102C50006BC17F3F19F43F3F09F466C1E090AD01BD\r
+:102C6000EE2009F4C0C02091B001C816D90628F0A2\r
+:102C7000F601E81BF90BCF0104C0809590958C0DEF\r
+:102C80009D1DFF24F394883C910578F0F12C207F62\r
+:102C900009F0C6C07C2DD98AC88A89890E9450153E\r
+:102CA0008BEA91E00E94E411B1C0822F807F09F08D\r
+:102CB00046C0751314C0341312C0611110C02F70B8\r
+:102CC00020612093B0010E9490158BEA91E00E9450\r
+:102CD000E4118091B001D80115968C932EC0CD28B7\r
+:102CE00019F15F3F11F44F3FF9F0F62E61111CC04E\r
+:102CF0008091790120917A0136E0821709F45AC057\r
+:102D000090E0389FF001399FF00D1124E558FE4FF7\r
+:102D10007181571306C07081471303C0728171110E\r
+:102D200003C001968770E9CFF62E662309F418C117\r
+:102D30008091B00181608093B001F12C11C17513B5\r
+:102D400008C0341306C0611104C08091B001D801DD\r
+:102D5000C3C04D875E878D859E856A8B0E942A152C\r
+:102D60006A898823E1F16623D1F12091B001822F95\r
+:102D700082958F7090E0029774F08091AB019091F2\r
+:102D8000AC0198878F831986DB86CA862C87CE0193\r
+:102D900007960E94E41186E0F801ABEAB1E00190E9\r
+:102DA0000D928A95E1F70E949E150E949015FF24CE\r
+:102DB000F394D6C04D875E878D859E850E945A1AF2\r
+:102DC000292F22952F7030E0223031050CF0BCC045\r
+:102DD0009F7009F0B6C0805E883008F4C1C0C80199\r
+:102DE0000E94E411E4CFC816D90608F453C0F601D6\r
+:102DF000E81BF90BCF01883C910508F450C0F12C79\r
+:102E00007C2DD98AC88A89890E945015EBEAF1E0A5\r
+:102E100086E0DF011D928A95E9F70E949015A0C017\r
+:102E2000751314C0341312C0611110C08091B00129\r
+:102E3000F8018583C8010E94E41186E0EBEAF1E025\r
+:102E4000DF011D928A95E9F7FE2C8AC04D875E87C7\r
+:102E50008D859E856A8B0E942A156A89882309F4CC\r
+:102E6000BECF662309F4BBCF2091B001822F82959B\r
+:102E70008F7090E002970CF48ECF8091AB0190910F\r
+:102E8000AC019A8389831B82DD82CC822E83CE01A2\r
+:102E900001967FCF809590958C0D9D1DACCFF62E21\r
+:102EA000662309F49CCF75132EC034132CC02091D7\r
+:102EB000B00120FD1FC0822F82958F70D9F0D801FC\r
+:102EC00015962C9315978F3049F08F5F982F929518\r
+:102ED000907F822F8F70892B15968C93C8010E944A\r
+:102EE000E41186E0F801ABEAB1E001900D928A9519\r
+:102EF000E1F793CF86E0F801ABEAB1E001900D92E3\r
+:102F00008A95E1F72DC04D875E878D859E850E944D\r
+:102F10002A15811140CF8091B00181608093B0016A\r
+:102F2000C8010E94E4111CC0662309F458CF4D87E4\r
+:102F30005E878D859E850E942A15882309F44FCFD0\r
+:102F40002ACF811148CF0CC0243031050CF047CF77\r
+:102F50009F7009F440CFF8019581907F09F03BCF35\r
+:102F60008F2D62960FB6F894DEBF0FBECDBFDF91F6\r
+:102F7000CF911F910F91FF90EF90DF90CF90089528\r
+:102F80001F93CF93DF93CDB7DEB72C970FB6F8948E\r
+:102F9000DEBF0FBECDBF4F83588769877A878B8787\r
+:102FA0009C87CE0107960E94F915882369F08F81CE\r
+:102FB00098852A853B85232BF1F19F3F09F063C05B\r
+:102FC0008F3F09F060C037C086E0FE013796DE0112\r
+:102FD000119601900D928A95E1F76F817885EA85C7\r
+:102FE000FB85309741F17F3F11F46F3F21F1209134\r
+:102FF0007A0130E0C90101968770992740917901E3\r
+:1030000050E08417950709F447C069837A83FD83EC\r
+:10301000EC8396E0929FD001939FB00D1124A558A8\r
+:10302000BE4FFE01319601900D929A95E1F7809383\r
+:103030007A010E946F1516E08091790190917A01D2\r
+:103040008917C1F1189FC001112485589E4F0E9415\r
+:10305000F915882379F1E09179011E9FF00111247F\r
+:10306000E558FE4F40815181628173818481958151\r
+:103070000E945F158091790190E0019687709927F1\r
+:1030800080937901D9CF4F81588569857A858B8561\r
+:103090009C850E945F15CFCF0E94261510927A0161\r
+:1030A00010927901EBEAF1E086E0DF011D928A954A\r
+:1030B000E9F7C1CF2C960FB6F894DEBF0FBECDBF97\r
+:1030C000DF91CF911F910895EF92FF920F931F937D\r
+:1030D000CF93DF938C01892B09F46CC0F12CEE2483\r
+:1030E000E394E8012196F8018491843740F4843018\r
+:1030F00008F051C0813081F0823019F15BC0853712\r
+:1031000009F444C0A8F19CE7980F903708F052C02A\r
+:103110008F770E94871141C00E5F1F4FFE01C4913F\r
+:1031200080E28C0F883048F4C7708E2D01C0880F64\r
+:10313000CA95EAF70E940F1B14C08C2F0E94BF1083\r
+:103140002DC00E5F1F4FFE01C49180E28C0F8830AE\r
+:1031500058F4C7708E2D01C0880FCA95EAF70E94F7\r
+:10316000151B0E94361B1AC08C2F0E94871116C097\r
+:103170000E5F1F4FFE01C491CC2381F08FE99FE0C9\r
+:103180000197F1F700C00000C150F6CF0E5F1F4F4E\r
+:10319000FE01F49003C00E94BF108E018F2D882382\r
+:1031A00009F49FCFEFE9FFE03197F1F700C000008D\r
+:1031B0008150F5CFDF91CF911F910F91FF90EF904C\r
+:1031C000089508956093B5017093B6018093B70197\r
+:1031D0009093B8010C9412150F931F930091B501B1\r
+:1031E0001091B6012091B7013091B801DC01CB01FB\r
+:1031F000802B912BA22BB32B8093B5019093B6011A\r
+:10320000A093B701B093B8011F910F910C941215C0\r
+:103210000F931F930091B5011091B6012091B70152\r
+:103220003091B801DC01CB0180239123A223B32389\r
+:103230008093B5019093B601A093B701B093B80104\r
+:103240001F910F910C9412150F931F930091B501CC\r
+:103250001091B6012091B7013091B801DC01CB018A\r
+:1032600080279127A227B3278093B5019093B601B9\r
+:10327000A093B701B093B8011F910F910C94121550\r
+:103280001092B1011092B2011092B3011092B401E8\r
+:103290000C94121541E050E060E070E004C0440F6F\r
+:1032A000551F661F771F8A95D2F74093B10150933F\r
+:1032B000B2016093B3017093B4010C94121541E014\r
+:1032C00050E060E070E004C0440F551F661F771F98\r
+:1032D0008A95D2F78091B1019091B201A091B3018A\r
+:1032E000B091B401482B592B6A2B7B2B4093B10131\r
+:1032F0005093B2016093B3017093B4010C94121512\r
+:1033000041E050E060E070E004C0440F551F661FCC\r
+:10331000771F8A95D2F7409550956095709580916A\r
+:10332000B1019091B201A091B301B091B4014823D1\r
+:1033300059236A237B234093B1015093B2016093D8\r
+:10334000B3017093B4010C94121541E050E060E0B9\r
+:1033500070E004C0440F551F661F771F8A95D2F78F\r
+:103360008091B1019091B201A091B301B091B401EB\r
+:10337000482759276A277B274093B1015093B20110\r
+:103380006093B3017093B4010C9412150F931F93C3\r
+:103390000091B1011091B2012091B3013091B401BB\r
+:1033A000DC01CB01802B912BA22BB32B8093B1019D\r
+:1033B0009093B201A093B301B093B4011F910F9108\r
+:1033C0000C9412150F931F930091B1011091B2014B\r
+:1033D0002091B3013091B401DC01CB018023912312\r
+:1033E000A223B3238093B1019093B201A093B301C0\r
+:1033F000B093B4011F910F910C9412150F931F936A\r
+:103400000091B1011091B2012091B3013091B4014A\r
+:10341000DC01CB0180279127A227B3278093B1013C\r
+:103420009093B201A093B301B093B4011F910F9197\r
+:103430000C9412150895CF92DF92EF92FF920F93A2\r
+:103440001F93CF93DF938C01C090B501D090B6014C\r
+:10345000E090B701F090B8018091B1019091B20174\r
+:10346000A091B301B091B401C82AD92AEA2AFB2A53\r
+:10347000CFE1D0E0D701C6010C2E04C0B695A795C8\r
+:10348000979587950A94D2F780FF06C0B8018C2FD4\r
+:103490000E94F407019721F4219760F780E001C0B2\r
+:1034A0008C2FDF91CF911F910F91FF90EF90DF90C4\r
+:1034B000CF900895CF93DF93EC010E941B1ABE01B9\r
+:1034C0000E94F407DF91CF910895CB010E945A1A10\r
+:1034D000089590910C01992321F090910D01911183\r
+:1034E00009C020910E0130910F01F90132969FEF32\r
+:1034F00040E01FC0982F9695969596959F3050F571\r
+:10350000E0910E01F0910F01E90FF11D877021E0AC\r
+:1035100030E0A90102C0440F551F8A95E2F7CA01A5\r
+:103520009181892B818308959F3F39F04F5F4E3001\r
+:1035300041F051915813F8CF0DC05111F7CF942F8E\r
+:10354000F5CF9F3F39F0F901E90FF11D97FDFA958D\r
+:1035500082830895089590910C01992321F0909110\r
+:103560000D01911109C020910E0130910F01F90157\r
+:103570003296205F3F4F1FC0982F9695969596954F\r
+:103580009F30F0F4E0910E01F0910F01E90FF11D71\r
+:10359000877021E030E0A90102C0440F551F8A95D1\r
+:1035A000E2F7CA018095918189238183089531963C\r
+:1035B000E217F30729F090819813F9CF1082F7CF23\r
+:1035C000089581E090E0E0910E01F0910F01E80F85\r
+:1035D000F91F1082019680319105A9F70895909105\r
+:1035E000CC01892B8093CC01089580959091CC01DA\r
+:1035F00089238093CC0108951092CC010895909175\r
+:10360000CB01892B8093CB01089580959091CB01BC\r
+:1036100089238093CB0108951092CB010895909156\r
+:10362000CA01892B8093CA01089580959091CA019F\r
+:1036300089238093CA0108951092CA010895809346\r
+:10364000B90108951092B901089580910E019091E9\r
+:103650000F01FC0131969C01205F3F4F80E091916A\r
+:1036600091118F5FE217F307D1F70895E0910E01F2\r
+:10367000F0910F018091CC018083E0910E01F091D7\r
+:103680000F0190818091CB01892B8083E0910E0105\r
+:10369000F0910F0190818091CA01892B80838091E4\r
+:1036A000B901882361F0E0910E01F0910F01908142\r
+:1036B000892B80830E94251B81111092B901809172\r
+:1036C0000E0190910F010C94A20FCF92DF92EF9216\r
+:1036D000FF926C01EE24FF24C114D104E104F10433\r
+:1036E00021F0C701B60120E101C020E0C72ED82E8D\r
+:1036F000E92EFF24C114D104E104F10419F0285F7C\r
+:10370000C701B6016B017C0154E0F694E794D794AD\r
+:10371000C7945A95D1F7C114D104E104F10419F00A\r
+:103720002C5FC701B6016B017C0142E0F694E7947F\r
+:10373000D794C7944A95D1F7C114D104E104F10498\r
+:1037400019F02E5FC701B601DC01CB01B695A79534\r
+:1037500097958795892B8A2B8B2B09F02F5F822FCA\r
+:10376000FF90EF90DF90CF9008958091E401843036\r
+:1037700021F11092CE0120E488E190E00FB6F89498\r
+:10378000A895809360000FBE2093600080E00E94A7\r
+:103790008F0883B7817F846083BF83B7816083BFD5\r
+:1037A0007894889583B78E7F83BF88E10FB6F894AD\r
+:1037B00080936000109260000FBE089508950895F0\r
+:1037C000CF930E94DE1B0E94BF040E94DF1BC0E05B\r
+:1037D0008C2F0E94AD05811104C0CF5FCE30C1F7A0\r
+:1037E00001C081E0CF9108950E9426150E94960F96\r
+:1037F0000C948F0882E084BD93E095BD9AEF97BD4D\r
+:1038000080936E0008952FB7F8948091CF01909126\r
+:10381000D001A091D101B091D2012FBF0895CF92D4\r
+:10382000DF92EF92FF920F931F932FB7F89440917E\r
+:10383000CF015091D0016091D1017091D2012FBF81\r
+:103840006A017B01EE24FF248C0120E030E0C016E9\r
+:10385000D106E206F30610F4415051099A01281BE3\r
+:10386000390BC9011F910F91FF90EF90DF90CF901E\r
+:1038700008951F920F920FB60F9211248F939F936A\r
+:10388000AF93BF938091CF019091D001A091D101CE\r
+:10389000B091D2010196A11DB11D8093CF019093EB\r
+:1038A000D001A093D101B093D201BF91AF919F916C\r
+:1038B0008F910F900FBE0F901F9018950E94930C40\r
+:1038C000F8942FEF87EA91E6215080409040E1F78D\r
+:1038D00000C0000087E090EBDC018093EE01909344\r
+:1038E000EF01A093F001B093F1019CE088E10FB6E5\r
+:1038F000F894A895809360000FBE90936000FFCF6E\r
+:10390000EF92FF920F931F93CF93DF93D82FC0E0D6\r
+:103910008C2F0E94AD0500E010E0E82EF12CC701CD\r
+:10392000002E02C0959587950A94E2F780FD06C0A7\r
+:103930000F5F1F4F0630110591F709C0602F7C2FD4\r
+:1039400080E00E94B505D813F3CF81E004C0CF5FBB\r
+:10395000CE30F1F680E0DF91CF911F910F91FF9073\r
+:10396000EF900895CF93C82F8CE20E94801C88238B\r
+:1039700021F08C2FCF910C94801C80E0CF91089582\r
+:10398000CF930E94071E811102C00E94ED1DC5E663\r
+:10399000C15049F00E94BF048FE39CE90197F1F701\r
+:1039A00000C00000F5CF89E20E94B21C811113C152\r
+:1039B0008AE20E94B21C81110E94ED1D85E00E94E6\r
+:1039C000B21C81110E945E1C0E94121E8093CD01C8\r
+:1039D00087E00E94B21C8823A9F18BE10E94B21CEF\r
+:1039E000882351F08091CD0181FB222720F991E0BD\r
+:1039F000922790FB81F90EC08EE00E94B21C8823B2\r
+:103A000061F08091CD0182FB222720F991E092277D\r
+:103A100090FB82F98093CD0115C080E10E94B21C19\r
+:103A20009091CD01882341F093FB222720F981E07A\r
+:103A3000822780FB93F904C0892F809580FB90F941\r
+:103A40009093CD018091CD010E94161E0E94241EEC\r
+:103A50008093ED0180EE0E94B21C882341F080919A\r
+:103A6000ED01982F909590FB80F98093ED0189E30B\r
+:103A70000E94B21C882359F08091ED0181FB22271E\r
+:103A800020F991E0922790FB81F98093ED0182EE7D\r
+:103A90000E94B21C882359F08091ED0182FB2227FD\r
+:103AA00020F991E0922790FB82F98093ED0186EE58\r
+:103AB0000E94B21C882359F08091ED0183FB2227DC\r
+:103AC00020F991E0922790FB83F98093ED0183EE3A\r
+:103AD0000E94B21C882359F08091ED0184FB2227BB\r
+:103AE00020F991E0922790FB84F98093ED0185E322\r
+:103AF0000E94B21C882359F08091ED0185FB22279A\r
+:103B000020F991E0922790FB85F98093ED0181E304\r
+:103B10000E94B21C882359F08091ED0186FB222778\r
+:103B200020F991E0922790FB86F98093ED0181E1E5\r
+:103B30000E94B21C882359F08091ED0187FB222757\r
+:103B400020F991E0922790FB87F98093ED01809115\r
+:103B5000ED010E94281E8091ED0187FB882780F9E6\r
+:103B600080930D0187E20E94B21CC82F8EE10E9453\r
+:103B7000B21C8111C2608FE10E94B21C8111C4602D\r
+:103B800080E20E94B21C8111C86081E20E94B21CD6\r
+:103B90008111C06182E20E94B21C8111C06283E285\r
+:103BA0000E94B21C8111C06484E20E94B21C88236E\r
+:103BB00011F0C06802C0CC2329F08C2F0E941F1E78\r
+:103BC0006C2F03C00E941B1E682F70E080E090E005\r
+:103BD000CF910C94E218CF9108956DEE7EEF80E0C6\r
+:103BE00090E00E94552460E082E090E00E9447242B\r
+:103BF00060E083E090E00E94472460E084E090E091\r
+:103C00000E94472460E085E090E00C94472480E027\r
+:103C100090E00E94412421E08D3E9E4F09F020E07B\r
+:103C2000822F089582E090E00C943924682F82E07E\r
+:103C300090E00C94472483E090E00C943924682FA2\r
+:103C400083E090E00C94472484E090E00C943924C5\r
+:103C5000682F84E090E00C9447248091D50180FF88\r
+:103C60000BC06091130185E0689FB0011124759528\r
+:103C70006795759567952BC081FF09C06091130109\r
+:103C800085E0689FB00111247595679520C082FF7B\r
+:103C900007C06091130185E0689FB001112417C02F\r
+:103CA0009091D6019923D1F060911201961788F76F\r
+:103CB0002091130185E0289F90011124929FA0017B\r
+:103CC000939F500D112470E0CA010E940B246038AC\r
+:103CD000710540F46115710539F002C065E070E0CE\r
+:103CE000862F08958FE7089581E008958091D5018A\r
+:103CF00080FF08C06091110170E07595679575951A\r
+:103D0000679521C081FF06C06091110170E0759533\r
+:103D1000679519C082FF04C06091110170E010C066\r
+:103D20009091D6019923C1F0609110019617A0F7E8\r
+:103D300080911101899FC001112470E00E940B2421\r
+:103D40006038710528F46115710521F0862F0895FA\r
+:103D50008FE7089581E0089561E070E0F4CF803F3F\r
+:103D600021F40E942D1E819504C0813F29F40E94F8\r
+:103D70002D1E8093D9010895823F21F40E942D1EAB\r
+:103D8000819504C0833F29F40E942D1E8093D801A1\r
+:103D90000895893F19F40E94761E05C08A3F31F4C8\r
+:103DA0000E94761E81958093DA0108958B3F21F45D\r
+:103DB0000E94761E819504C08C3F29F40E94761ED5\r
+:103DC0008093DB010895843F21F48091D7018160C5\r
+:103DD00017C0853F21F48091D701826011C0863FD2\r
+:103DE00021F48091D70184600BC0873F21F480913A\r
+:103DF000D701886005C0883F31F48091D701806188\r
+:103E00008093D70108958D3F21F48091D501816081\r
+:103E10000BC08E3F21F48091D501826005C08F3F99\r
+:103E200029F48091D50184608093D5010895803F65\r
+:103E300039F48091D90187FF6CC01092D90169C013\r
+:103E4000813F29F48091D9011816BCF362C090918A\r
+:103E5000D801823F29F497FF5CC01092D80159C065\r
+:103E6000833F19F41916CCF354C0893F41F4809173\r
+:103E7000DA0118160CF04DC01092DA014AC08A3FE0\r
+:103E800029F48091DA0187FF44C0F6CF8B3F39F4E3\r
+:103E90008091DB0187FF3DC01092DB013AC08C3F6F\r
+:103EA00029F48091DB011816BCF333C0843F21F460\r
+:103EB0008091D7018E7F17C0853F21F48091D70173\r
+:103EC0008D7F11C0863F21F48091D7018B7F0BC07D\r
+:103ED000873F21F48091D701877F05C0883F31F467\r
+:103EE0008091D7018F7E8093D70113C08D3F21F43D\r
+:103EF0008091D5018E7F0BC08E3F21F48091D5013A\r
+:103F00008D7F05C08F3F29F48091D5018B7F8093F1\r
+:103F1000D5018091D80181110EC08091D901811104\r
+:103F20000AC08091DA01811106C08091DB01811104\r
+:103F300002C01092D601089587ED91E00E94AD0F66\r
+:103F40000E94031C9093D4018093D30108951F9382\r
+:103F5000CF93DF938091D3019091D4010E940F1CE5\r
+:103F6000AC019091D601992321F02091140130E009\r
+:103F700006C0209115018AE0289F90011124421764\r
+:103F8000530708F486C08091D801C091D901D0911F\r
+:103F9000DA011091DB01811107C0C11176C0D11186\r
+:103FA00074C0111172C075C09F3F19F09F5F90934C\r
+:103FB000D601181624F40E942D1E8093D8018091FA\r
+:103FC000D80187FF05C00E942D1E81958093D801DE\r
+:103FD0001C1624F40E942D1E8093D9018091D901D2\r
+:103FE00087FF05C00E942D1E81958093D9016091A5\r
+:103FF000D801662339F1C091D901CC2319F1772773\r
+:1040000067FD7095872F972F0E941C2323E333E3CE\r
+:1040100043E35FE30E9480230E94E9226093D8017A\r
+:104020006C2F772767FD7095872F972F0E941C2391\r
+:1040300023E333E343E35FE30E9480230E94E9220A\r
+:104040006093D9011D1624F40E94761E8093DA0134\r
+:104050008091DA0187FF05C00E94761E81958093CA\r
+:10406000DA01111624F40E94761E8093DB01809100\r
+:10407000DB0187FF05C00E94761E81958093DB01DE\r
+:10408000DF91CF911F910C949C1F9F3F09F08ECF21\r
+:1040900096CFDF91CF911F910895E7EDF1E085E094\r
+:1040A000DF011D928A95E9F71092D6011092D50191\r
+:1040B0000895833081F128F4813059F08230D1F0B5\r
+:1040C0000895853009F449C0B8F1863009F456C026\r
+:1040D000089580911501262F30E0280F311D2F3FC4\r
+:1040E000310524F4680F6093150108958FEF8093D4\r
+:1040F0001501089580911401262F30E0280F311DFD\r
+:104100002F3F310524F4680F6093140108958FEF59\r
+:1041100080931401089580911301262F30E0280F19\r
+:10412000311D2F3F310524F4680F6093130108956A\r
+:104130008FEF80931301089580911201262F30E0B4\r
+:10414000280F311D2F3F310524F4680F60931201B1\r
+:1041500008958FEF80931201089580911101262F09\r
+:1041600030E0280F311D2F3F310524F4680F609394\r
+:10417000110108958FEF809311010895809110012E\r
+:10418000262F30E0280F311D2F3F310524F4680F12\r
+:104190006093100108958FEF80931001089583308C\r
+:1041A00011F128F4813049F0823091F00895853082\r
+:1041B00081F120F18630C1F10895809115016817D1\r
+:1041C00020F4861B8093150108951092150108951F\r
+:1041D00080911401681720F4861B809314010895C0\r
+:1041E00010921401089580911301681720F4861B22\r
+:1041F0008093130108951092130108958091120184\r
+:10420000681720F4861B8093120108951092120102\r
+:10421000089580911101681720F4861B8093110185\r
+:10422000089510921101089580911001681720F4EB\r
+:10423000861B8093100108951092100108950F932A\r
+:104240001F938D3109F46BC008F03FC08E3009F424\r
+:104250007FC0C0F4873009F469C068F4863009F083\r
+:10426000B1C08091CD01817F8E7F8093CD0181E0AF\r
+:104270008093DD01A8C0883009F4A2C08B3009F416\r
+:104280009FC0A0C0863109F49BC078F4803109F446\r
+:1042900072C0813109F096C00E94261590910D01DF\r
+:1042A00081E0892780930D018BC0893109F488C092\r
+:1042B0008B3109F087C08091CD0181FB222720F945\r
+:1042C00091E0922790FB81F94CC0853309F470C0CE\r
+:1042D00048F4873209F46CC008F459C0893209F4F3\r
+:1042E00067C070C0833438F48A3308F04EC0883316\r
+:1042F00009F466C067C0833409F45AC0883409F0F1\r
+:1043000061C00E9426150FEF13ED20E3015010400D\r
+:104310002040E1F700C000000E945E1C51C00E94D6\r
+:10432000A3220E94960F0E948F084AC09091CD014F\r
+:10433000892F8095817080FB90F929F096609860B4\r
+:104340009093CD0140C0997F977F9093CD0138C065\r
+:104350008091CD0182FB222720F991E0922790FBEA\r
+:1043600082F98093CD01992359F18091CD0181602B\r
+:104370008093CD0125C08091CD0183FB222720F9B8\r
+:1043800091E0922790FB83F9ECCF895301C08D51C6\r
+:1043900041E050E060E070E08A019B0104C0000F42\r
+:1043A000111F221F331F8A95D2F7C901B80104C01B\r
+:1043B00061E070E080E090E00E94E2180E94261523\r
+:1043C00081E001C080E01F910F91089580E0089581\r
+:1043D00080E00895CF93C82F8091DD01813079F07E\r
+:1043E00018F08230E9F187C0E0910E01F0910F01E1\r
+:1043F0008081813169F0823209F07FC009C0E0918B\r
+:104400000E01F0910F018081813111F0823261F44F\r
+:104410008C2F0E94E621811104C08C2F0E941F2145\r
+:104420001DC081E090E01AC08C2F0E94E82181110C\r
+:1044300014C0C43179F048F4CB3079F0C03109F0C0\r
+:1044400060C082E08093DD0108C0C93219F0C83332\r
+:1044500021F057C01092DD0154C081E0817053C03B\r
+:10446000C93289F118F5C43171F1A8F4C73009F0E7\r
+:1044700046C08AE08093150194E19093140193E083\r
+:10448000909313018093120188E08093110188E2D8\r
+:104490008093100134C0CE51C63088F5EC2FF0E087\r
+:1044A000E65DFE4F80818093DC0129C0CE34E9F0C7\r
+:1044B00020F4CB3421F56AE013C0C13579F0C23560\r
+:1044C000F1F461E00DC08091DC01882319F01092B5\r
+:1044D000DC0115C081E08093DD0115C061E006C0FC\r
+:1044E0008091DC010E9459200AC06AE08091DC01C1\r
+:1044F0000E94CF2004C01092DD0180E004C081E062\r
+:1045000002C080E0ABCFCF910895E1E8F0E0808178\r
+:10451000886080838081816080838FB7F89493E086\r
+:104520009093890090ED909388008FBF0895EFE6F7\r
+:10453000F0E08081826080830895EFE6F0E0808182\r
+:104540008D7F80830895EFE6F0E0908182E08927F7\r
+:10455000808308951F920F920FB60F9211242F930C\r
+:104560003F934F935F936F937F938F939F93AF93FB\r
+:10457000BF93EF93FF938091DE019091DF0101964D\r
+:104580009093DF018093DE01811103C082E00E94DD\r
+:104590008F08E091DF01E695E695F0E0EA52FA4FE8\r
+:1045A000E4918091DE018E1303C080E00E948F08A9\r
+:1045B000FF91EF91BF91AF919F918F917F916F91FB\r
+:1045C0005F914F913F912F910F900FBE0F901F90D1\r
+:1045D000189504D06894B1118DC0089570D088F0FA\r
+:1045E0009F5790F0B92F9927B751A0F0D1F0660FDF\r
+:1045F000771F881F991F1AF0BA95C9F712C0B130FA\r
+:1046000081F077D0B1E0089574C0672F782F8827A4\r
+:10461000B85F39F0B93FCCF3869577956795B39538\r
+:10462000D9F73EF490958095709561957F4F8F4FA7\r
+:104630009F4F0895E89409C097FB3EF490958095AC\r
+:10464000709561957F4F8F4F9F4F9923A9F0F92F58\r
+:1046500096E9BB279395F695879577956795B795D6\r
+:10466000F111F8CFFAF4BB0F11F460FF1BC06F5FBC\r
+:104670007F4F8F4F9F4F16C0882311F096E911C0CE\r
+:10468000772321F09EE8872F762F05C0662371F0EF\r
+:1046900096E8862F70E060E02AF09A95660F771F03\r
+:1046A000881FDAF7880F9695879597F9089557FD33\r
+:1046B0009058440F551F59F05F3F71F04795880F90\r
+:1046C00097FB991F61F09F3F79F087950895121627\r
+:1046D00013061406551FF2CF4695F1DF08C01616D3\r
+:1046E00017061806991FF1CF869571056105089484\r
+:1046F0000895E894BB2766277727CB0197F908959B\r
+:104700000BD078C069D028F06ED018F0952309F04E\r
+:104710005AC05FC01124EECFCADFA0F3959FD1F33A\r
+:10472000950F50E0551F629FF001729FBB27F00D5F\r
+:10473000B11D639FAA27F00DB11DAA1F649F6627B4\r
+:10474000B00DA11D661F829F2227B00DA11D621F03\r
+:10475000739FB00DA11D621F839FA00D611D221FBD\r
+:10476000749F3327A00D611D231F849F600D211DA1\r
+:10477000822F762F6A2F11249F5750408AF0E1F044\r
+:1047800088234AF0EE0FFF1FBB1F661F771F881F8D\r
+:1047900091505040A9F79E3F510570F014C0AACF28\r
+:1047A0005F3FECF3983EDCF3869577956795B79578\r
+:1047B000F795E7959F5FC1F7FE2B880F911D9695A2\r
+:1047C000879597F9089597F99F6780E870E060E012\r
+:1047D00008959FEF80EC089500240A94161617069A\r
+:1047E00018060906089500240A94121613061406E2\r
+:1047F00005060895092E0394000C11F4882352F045\r
+:10480000BB0F40F4BF2B11F460FF04C06F5F7F4FFC\r
+:104810008F4F9F4F089597FB072E16F4009407D0F3\r
+:1048200077FD09D00E94252407FC05D03EF4909521\r
+:1048300081959F4F0895709561957F4F0895EE0F74\r
+:10484000FF1F0590F491E02D0994AA1BBB1B51E1B9\r
+:1048500007C0AA1FBB1FA617B70710F0A61BB70BF0\r
+:10486000881F991F5A95A9F780959095BC01CD0195\r
+:104870000895F999FECF92BD81BDF89A992780B528\r
+:104880000895A8E1B0E042E050E00C945C24262FAB\r
+:10489000F999FECF1FBA92BD81BD20BD0FB6F89425\r
+:1048A000FA9AF99A0FBE019608950E944724272F7D\r
+:1048B0000C944824DC01CB01FC01F999FECF06C021\r
+:1048C000F2BDE1BDF89A319600B40D9241505040CE\r
+:0848D000B8F70895F894FFCF3A\r
+:1048D800200291081F09FC08C80894080101BA01C0\r
+:1048E80028080A03140A3F4D363997054A05140566\r
+:1048F800DB046E048704A004B9040102030405065E\r
+:044908000708090093\r
:00000001FF\r
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_extras/keymap_french.h"
+#include "keymap_extras/keymap_neo2.h"
+#include "keymap_extras/keymap_uk.h"
+#include "keymap_extras/keymap_colemak.h"
+#include "keymap_extras/keymap_french_osx.h"
+#include "keymap_extras/keymap_nordic.h"
+#include "keymap_extras/keymap_dvorak.h"
+#include "keymap_extras/keymap_german.h"
+#include "keymap_extras/keymap_norwegian.c"
+#include "keymap_extras/keymap_fr_ch.h"
+#include "keymap_extras/keymap_german_osx.h"
+#include "keymap_extras/keymap_spanish.h"
+#include "keymap_extras/keymap_bepo.h"
+
+#define BASE 0
+#define SYMB 1
+#define MDIA 2
+#define SMLY 3
+#define NUMB 4
+#define EGOS 5
+
+#define SMLY_TOG_QUOT 0
+#define M_TOGGLE_5 1
+#define TGH_NUM 2
+#define M_DE_OSX_PLUS_CTRLALT 3
+#define SM_KISS 4
+#define SM_FROWN 5
+#define SM_CRY 6
+#define SM_SMILE 7
+#define SM_SMIRK 8
+#define M_LGUI_SHFT 9
+#define SM_HEART 10
+#define TOG_HLD_MDIA 11
+#define SM_LAUGH 12
+#define SM_SAD 13
+#define M_DE_OSX_CIRC_CTRLCMD 14
+#define M_MEH_SH_ACUT 15
+
+//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[BASE]=KEYMAP(
+//left half
+ KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM),
+ KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI,
+ KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G,
+ KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT,
+ LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT),
+ KC_HOME, KC_END,
+ KC_PGUP,
+ KC_BSPC, KC_DEL, KC_PGDN,
+ //right half
+ M(TOG_HLD_MDIA), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS,
+ KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE,
+ DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE),
+ KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT,
+ MEH_T(DE_OSX_HASH), ALL_T(DE_OSX_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS),
+ KC_LEFT, KC_RIGHT,
+ KC_UP,
+ KC_DOWN, KC_ENT, KC_SPC),
+[SYMB]=KEYMAP(
+//left half
+ KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5,
+ KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
+ //right half
+ KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, DE_OSX_BSLS, DE_OSX_LBRC, DE_OSX_RBRC, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM,
+ DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, DE_OSX_LCBR, DE_OSX_RCBR, DE_OSX_HASH,
+ KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ DE_OSX_QUOT, DE_OSX_DQOT, KC_TRNS, M(M_TOGGLE_5), KC_TRNS,
+ KC_F13, KC_F12,
+ KC_F14,
+ KC_F15, KC_TRNS, KC_TRNS),
+[MDIA]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
+ KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
+ KC_MUTE, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK),
+[SMLY]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
+ M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[NUMB]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ //right half
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, DE_OSX_SLSH, KC_7, KC_8, KC_9, DE_OSX_ASTR, KC_F12,
+ DE_OSX_SLSH, KC_4, KC_5, KC_6, DE_OSX_PLUS, DE_OSX_MINS,
+ KC_TRNS, DE_OSX_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS,
+ KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+[EGOS]=KEYMAP(
+//left half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F1, KC_F2,
+ KC_F3,
+ KC_SPC, KC_LCTL, KC_F4,
+ //right half
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, M(M_TOGGLE_5), KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+static uint16_t start;
+switch(id) {
+case SMLY_TOG_QUOT:
+//Macro: SMLY_TOG_QUOT//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ layer_state ^= (1<<SMLY);
+ layer_state &= (1<<SMLY);
+ return MACRO_NONE; } else {
+ layer_state ^= (1<<SMLY);
+ layer_state &= (1<<SMLY);
+ if (timer_elapsed(start) >150) {
+ return MACRO_NONE;
+ } else {
+ return MACRO(DOWN(KC_LSFT),TYPE(DE_OSX_HASH),UP(KC_LSFT),END);
+ }
+ }
+
+break;
+case M_TOGGLE_5:
+//Macro: M_TOGGLE_5//-----------------------
+ if (record->event.pressed){
+ layer_state ^= (1<<5);
+ layer_state &= (1<<5);
+ }
+
+break;
+case TGH_NUM:
+//Macro: TGH_NUM//-----------------------
+if (record->event.pressed){
+ start = timer_read();
+ layer_state ^=(1<<NUMB);
+ layer_state &=(1<<NUMB);
+ } else {
+ if (timer_elapsed(start) > 150) {
+ layer_state^=(1<<NUMB);
+ layer_state&=(1<<NUMB);
+ }
+ }
+return MACRO_NONE;
+
+break;
+case M_DE_OSX_PLUS_CTRLALT:
+//Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(DOWN(KC_LCTRL),DOWN(KC_LALT),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LALT),END);
+ } else {
+ return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(KC_RBRC),END);
+ }
+ }
+
+break;
+case SM_KISS:
+//Macro: SM_KISS//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_RBRC),UP(KC_LSFT),END);
+ }
+
+break;
+case SM_FROWN:
+//Macro: SM_FROWN//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LALT),TYPE(KC_8),UP(KC_LALT),END);
+ }
+
+break;
+case SM_CRY:
+//Macro: SM_CRY//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
+ }
+
+break;
+case SM_SMILE:
+//Macro: SM_SMILE//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
+ }
+
+break;
+case SM_SMIRK:
+//Macro: SM_SMIRK//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
+ }
+
+break;
+case M_LGUI_SHFT:
+//Macro: M_LGUI_SHFT//-----------------------
+if (record->event.pressed){
+ return MACRO(DOWN(KC_LGUI),DOWN(KC_LSFT),END);
+ }else{
+ return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END);
+ }
+
+break;
+case SM_HEART:
+//Macro: SM_HEART//-----------------------
+if (record->event.pressed) {
+ return MACRO(TYPE(KC_GRV),TYPE(KC_3),END);
+ }
+
+break;
+case TOG_HLD_MDIA:
+//Macro: TOG_HLD_MDIA//-----------------------
+if (record->event.pressed){
+ start = timer_read();
+ layer_state ^=(1<<MDIA);
+ layer_state &=(1<<MDIA);
+ } else {
+ if (timer_elapsed(start) > 150) {
+ layer_state^=(1<<MDIA);
+ layer_state&=(1<<MDIA);
+ }
+ }
+return MACRO_NONE;
+
+break;
+case SM_LAUGH:
+//Macro: SM_LAUGH//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_D),UP(KC_LSFT),END);
+ }
+
+break;
+case SM_SAD:
+//Macro: SM_SAD//-----------------------
+if (record->event.pressed) {
+ return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
+ }
+
+break;
+case M_DE_OSX_CIRC_CTRLCMD:
+//Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(DOWN(KC_LCTRL),DOWN(KC_LGUI),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LGUI),END);
+ } else {
+ return MACRO(UP(KC_LCTRL),UP(KC_LGUI),TYPE(KC_NUBS),END);
+ }
+ }
+
+break;
+case M_MEH_SH_ACUT:
+//Macro: M_MEH_SH_ACUT//-----------------------
+if (record->event.pressed) {
+ start = timer_read();
+ return MACRO(DOWN(KC_LCTRL),DOWN(KC_LSFT),DOWN(KC_LALT),END);
+ } else {
+ if (timer_elapsed(start) >150) {
+ return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
+ } else {
+ return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(DE_OSX_ACUT),UP(KC_LSFT),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) {
+
+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 SYMB:
+ ergodox_right_led_1_on();
+
+
+ break;
+ case MDIA:
+
+ ergodox_right_led_2_on();
+
+ break;
+ case NUMB:
+
+
+ ergodox_right_led_3_on();
+ break;
+ case EGOS:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+ break;
+default:
+// none
+break;
+}
+
+};
+
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | F5 | |Hypr+M| 6 | 7 | 8 | 9 | 0 | Mute |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | LGui | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
+ * |--------+------+------+------+------+------| SYMB | | MDIA |------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |Ca/Ctl| { | ( | | | : | | - | = | ) | } |C`/Ctl|
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LGA | LAlt | | RAlt | Play |
+ * ,------|------|------| |------+------+------.
+ * | | | Home | | PgUp | | |
+ * |Backsp| Esc |------| |------|Enter |Space |
+ * |ace | | End | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+// 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
+ KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, TG(SYMB),
+ F(0), KC_LCBR, KC_LPRN,KC_PIPE,KC_COLN,
+ LGUI(KC_LALT), KC_LALT,
+ KC_HOME,
+ KC_BSPC, KC_ESC, KC_END,
+ // right hand
+ HYPR(KC_M), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MUTE,
+ KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ TG(MDIA), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_MINS, KC_EQL, KC_RPRN, KC_RCBR, F(1),
+ KC_RALT, KC_MPLY,
+ KC_PGUP,
+ KC_PGDN, KC_ENT, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | | | | | | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Left | Down | Up | Right| | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |VolUp |VolDn | Prev | Next | | | LClk | RClk | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_MACRO_TAP(0), // FN0 - Ctrl + a (For screen/tmux)
+ [1] = ACTION_MACRO_TAP(1) // FN1 - Ctrl + ` (For quake style console)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
+{
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ if (record->tap.count) {
+ if (record->tap.interrupted) {
+ record->tap.count = 0;
+ // hold press action
+ register_code(KC_LCTL);
+ } else {
+ // tap press action
+ return MACRO( D(LCTL), T(A), U(LCTL), END );
+ }
+ } else {
+ // hold press action
+ register_code(KC_LCTL);
+ }
+ } else {
+ if (record->tap.count) {
+ // tap release action
+ } else {
+ // hold release action
+ unregister_code(KC_LCTL);
+ }
+ record->tap.count = 0;
+ }
+ break;
+ case 1:
+ if (record->event.pressed) {
+ if (record->tap.count) {
+ if (record->tap.interrupted) {
+ record->tap.count = 0;
+ // hold press action
+ register_code(KC_RCTL);
+ } else {
+ // tap press action
+ return MACRO( DOWN(KC_RCTL), TYPE(KC_GRV), UP(KC_RCTL), END );
+ }
+ } else {
+ // hold press action
+ register_code(KC_RCTL);
+ }
+ } else {
+ if (record->tap.count) {
+ // tap release action
+ } else {
+ // hold release action
+ unregister_code(KC_RCTL);
+ }
+ record->tap.count = 0;
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+:100000000C946E020C94B2020C94B2020C94B202E4\r
+:100010000C94B2020C94B2020C94B2020C94B20290\r
+:100020000C94B2020C94B2020C94A60C0C94780DB1\r
+:100030000C94B2020C94B2020C94B2020C94B20270\r
+:100040000C94B2020C9442220C94B2020C94B202B0\r
+:100050000C94B2020C94D11B0C94B2020C94B20218\r
+:100060000C94B2020C94B2020C94B2020C94B20240\r
+:100070000C94B2020C94B2020C94B2020C94B20230\r
+:100080000C94B2020C94B2020C94B2020C94B20220\r
+:100090000C94B2020C94B2020C94B2020C94B20210\r
+:1000A0000C94B2020C94B2020C94B202E50D070E4D\r
+:1000B000F50E070EF50E4C0E6F0EF50EC40ED70E94\r
+:1000C000C311C31100120012431281129A149A1420\r
+:1000D0009A129A149B139B136E149A149A148514F3\r
+:1000E00001E40135023502E40001E00104020402EA\r
+:1000F000E00000C801C835002B00E300E10000204B\r
+:1001000000001E00140004001D002F024D001F00FF\r
+:100110001A0016001B002602290020000800070014\r
+:10012000060031022A0021001500090019003302DF\r
+:100130004A00220017000A0005000000E2083E0005\r
+:100140002F00000001540000E200100F30000000FA\r
+:1001500002540000E60023001C000B001100000008\r
+:10016000AE00240018000D0010002D004B002500EB\r
+:100170000C000E0036002E002C00260012000F008E\r
+:100180003700270228002700130033003800300210\r
+:100190004E00A80031003400E500012000000100FD\r
+:1001A000010001000100010000003A001E022002CF\r
+:1001B0002202010001003B001F0221022302010074\r
+:1001C00001003C002F0226022F00010001003D002B\r
+:1001D000300227023000010001003E0031023500EC\r
+:1001E00035020000010001000100000001000000D4\r
+:1001F00001000100010000000100000001003F00BB\r
+:100200000100500001000000010040000100510009\r
+:100210000100010001004100010052000100010045\r
+:100220000100420001004F000100010001004300F5\r
+:10023000010001000100010001004400450001002F\r
+:100240000100010000000100010001000100A900FF\r
+:1002500000000100010001000100AA0001000100EE\r
+:10026000010001000100AC000100010001000100DB\r
+:100270000100AB00010001000100010001000100CC\r
+:100280000100010001000100010000000100010067\r
+:100290000100000001000000010001000100000059\r
+:1002A00001000000010001000100F2000100000057\r
+:1002B000010001000100F1000100F4000100010053\r
+:1002C0000100F0000100F500B60001000100F3009C\r
+:1002D0000100010001000100010001000100010016\r
+:1002E00001000100010001000100010000001603EF\r
+:1002F0004500720067006F0044006F007800200026\r
+:1003000045005A00000016034500720067006F00A8\r
+:1003100044006F007800200045005A0000000403EC\r
+:10032000090409026D00040100A0FA09040000019B\r
+:1003300003010100092111010001223F000705818D\r
+:100340000308000A09040100010301020009211148\r
+:10035000010001224D000705820308000A0904027A\r
+:1003600000010300000009211101000122360007ED\r
+:1003700005830308000A09040300010300000009C3\r
+:100380002111010001223900070584031000011228\r
+:1003900001100100000008EDFE071301000102003A\r
+:1003A0000105010906A101050719E029E715002546\r
+:1003B0000195087501810205081901290595057542\r
+:1003C000019102950175039101050719002977151F\r
+:1003D000002501957875018102C005010980A10100\r
+:1003E000850216010026B7001A01002AB700751011\r
+:1003F00095018100C0050C0901A1018503160100CA\r
+:10040000269C021A01002A9C02751095018100C0E9\r
+:1004100005010902A1010901A10005091901290528\r
+:10042000150025019505750181029501750381016E\r
+:100430000501093009311581257F9502750881066E\r
+:1004400009381581257F950175088106050C0A3844\r
+:10045000021581257F950175088106C0C005010937\r
+:1004600006A101050719E029E71500250195087582\r
+:100470000181029501750881010508190129059579\r
+:100480000575019102950175039101050719002970\r
+:10049000FF150025FF950675088100C000000000CB\r
+:1004A00000000000000000010204060A0F17202CC3\r
+:1004B0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9BF\r
+:1004C000DAC7B39D87715D4A3A2C20170F0A0604DC\r
+:1004D00002010000000000000000000011241FBE07\r
+:1004E000CFEFDAE0DEBFCDBF04B603FE24C08091BB\r
+:1004F000EE019091EF01A091F001B091F1018730F0\r
+:10050000904BA740B04BB9F41092EE011092EF015E\r
+:100510001092F0011092F10114BE84B7877F84BF5E\r
+:1005200088E10FB6F89480936000109260000FBECF\r
+:10053000E0E0FFE3099511E0A0E0B1E0E2E1F8E4DA\r
+:1005400002C005900D92A433B107D9F711E0A4E3DE\r
+:10055000B1E001C01D92AE3EB107E1F70E94EA0989\r
+:100560000C9407240C940000CF93DF93EC016623D6\r
+:1005700019F06130C9F015C09A818D81992349F035\r
+:10058000982F907F21F080FF22C08F708D8380EEA6\r
+:1005900017C0807F19F480EE0E941F118D818F702B\r
+:1005A0008D8380E090E018C09A818D81992359F065\r
+:1005B000982F907F21F080FF0DC08F708D8384EE87\r
+:1005C0000E945710EECF807F49F784EEE5CF89EE89\r
+:1005D00090E002C080EE90E0DF91CF910895089501\r
+:1005E0006091B1017091B2018091B3019091B40119\r
+:1005F0000E94FD1A56985E9825982D9826982E9858\r
+:1006000027982F98813019F0823021F00895259A8B\r
+:100610002D9A0895269A2E9A08950C94F0025698D1\r
+:100620005E9825982D9826982E9827982F988FEFCA\r
+:1006300090E0909389008093880090938B00809342\r
+:100640008A0090938D0080938C00259A2D9A2FEF2D\r
+:1006500080E792E0215080409040E1F700C0000028\r
+:10066000269A2E9A2FEF80E792E02150804090400A\r
+:10067000E1F700C00000279A2F9A2FEF80E792E061\r
+:10068000215080409040E1F700C0000025982D984F\r
+:100690002FEF80E792E0215080409040E1F700C0CA\r
+:1006A000000026982E982FEF80E792E0215080409E\r
+:1006B0009040E1F700C0000027982F9856985E9868\r
+:1006C00025982D9826982E9827982F98089589EA8E\r
+:1006D0008093800089E08093810024982C983F9833\r
+:1006E0008AB18F748AB96E98479A8BB1806B8BB937\r
+:1006F000769A0E940F030C94EF0280E2809300012F\r
+:100700008091340181110EC00E94CC0381E080935E\r
+:1007100034012FEF83ED90E3215080409040E1F7CA\r
+:1007200000C0000080E40E94D20380930001811188\r
+:100730002EC00E94FC0380930001811128C00E94FA\r
+:10074000FC0380930001811122C08FE30E94FC030F\r
+:100750008093000181111BC00E94F40380E40E9479\r
+:10076000D20380930001811112C08CE00E94FC032F\r
+:100770008093000181110BC00E94FC038093000153\r
+:10078000811105C08FE30E94FC03809300010E9449\r
+:10079000F4038091000108951092B9008AE08093DB\r
+:1007A000B800089594EA9093BC009091BC0097FF24\r
+:1007B000FCCF9091B900987F983021F0903111F0E2\r
+:1007C00081E008958093BB0084E88093BC00809111\r
+:1007D000BC0087FFFCCF8091B900887F883111F081\r
+:1007E000803471F780E0089584E98093BC008091A3\r
+:1007F000BC0084FDFCCF08958093BB0084E8809307\r
+:10080000BC008091BC0087FFFCCF9091B900987F1D\r
+:1008100081E0983209F480E0089584E88093BC0078\r
+:100820008091BC0087FFFCCF8091BB000895809130\r
+:100830000001811115C080E40E94D2038093000161\r
+:1008400081110CC082E10E94FC03809300018111A0\r
+:1008500005C08FEF0E94FC03809300010E94F40307\r
+:1008600084B1807F84B985B1807F85B98AB1837F67\r
+:100870008AB98BB1837F8BB93E98469808950E94C0\r
+:100880007D03809300010E94170480B38C7080BBAD\r
+:1008900081B3836F81BBA6E3B1E0E4E4F1E08EE0D5\r
+:1008A0008E0F11921D928E13FCCF0C946703BF9292\r
+:1008B000CF92DF92EF92FF920F931F93CF93DF932C\r
+:1008C00080910001882379F0809135018F5F8093BA\r
+:1008D0003501811108C00E947D03809300018111C0\r
+:1008E00002C00E940F0306E311E0C0E0D0E0DD2467\r
+:1008F000D39482E0C82EEE24E394F12CC730D105C6\r
+:1009000000F580910001811164C080E40E94D2034F\r
+:1009100080930001811112C082E10E94FC03809348\r
+:10092000000181110BC0C7010C2E01C0880F0A9471\r
+:10093000EAF780950E94FC03809300010E94F40373\r
+:1009400048C0CA30A1F028F4C83059F0C93061F06D\r
+:1009500005C0CC3089F070F0CD3089F0209A28980D\r
+:1009600010C0219A29980DC0229A2A980AC0239A69\r
+:100970002B9807C0529A01C0539A5B9802C03E9AC6\r
+:10098000469890EA9A95F1F79FB1799902C082E072\r
+:1009900001C080E091709D25982B7C9902C084E075\r
+:1009A00001C080E0892B7D9902C038E001C030E0B1\r
+:1009B000832B7E9902C020E101C020E0822B9FB1F1\r
+:1009C0009095991F9927991F9295990F907E892B41\r
+:1009D0000FC080910001811149C080E40E94D203C0\r
+:1009E00080930001882379F1B12C0E94F4038B2DB0\r
+:1009F000F8019081981719F08083C09201010E943C\r
+:100A0000170421960F5F1F4FCE30D10509F076CF26\r
+:100A100080910101882361F1815080930101882335\r
+:100A200039F08FE99FE00197F1F700C0000020C086\r
+:100A3000A4E4B1E0E6E3F1E0CF01825F91919D9300\r
+:100A40008E13FCCF15C083E10E94FC03809300014C\r
+:100A50008111CACF81E40E94D203809300018111E9\r
+:100A6000C3CF0E940D04B82EB094BFCF80E0C0CF9A\r
+:100A70000E940D0381E0DF91CF911F910F91FF90B4\r
+:100A8000EF90DF90CF90BF900895E82FF0E0EC5BFF\r
+:100A9000FE4F808108950895089596E0799FF001B2\r
+:100AA000112494E5899FE00DF11D1124E60FF11D3D\r
+:100AB000EE0FFF1FEA50FF4F859194910895880F24\r
+:100AC000991FFC01EE58F040859194910895880F8C\r
+:100AD000991FFC01EE50FF4F8591949108950F935B\r
+:100AE0001F93CF93DF93EC018115904350F5C1150F\r
+:100AF00080E2D80708F0B3C0CB3BD10590F4C83AE8\r
+:100B0000D10508F05AC0C53AD10508F04BC0C43031\r
+:100B1000D10508F0BBC1219709F0B5C101E010E093\r
+:100B2000F5C1CF3FD10511F008F0B0C1C03FD105EC\r
+:100B300008F092C0CE01805E9109089708F4A6C122\r
+:100B4000A2C1C11591E5D907A8F4C23020E5D207AA\r
+:100B500008F09EC0C11580E5D80709F485C008F0EB\r
+:100B600091C0C11520E4D20708F08DC1DD278E01A8\r
+:100B7000106CCCC1C11580E8D80758F4C11590E7B6\r
+:100B8000D90708F07CC1C11520E6D20708F422C1BC\r
+:100B90007AC1C11580E9D80708F075C1DF708E01F0\r
+:100BA000106AB4C1C53AD10509F472C1C63AD1057B\r
+:100BB00009F071C102E810E4A9C1C83AD10509F4ED\r
+:100BC0006DC1C93AD10509F46CC1CA3AD10509F41D\r
+:100BD0006BC1CB3AD10509F46AC1CC3AD10509F40D\r
+:100BE00069C1CD3AD10509F468C1C03BD10509F40A\r
+:100BF00067C1CE3AD10509F466C1CF3AD10509F4EF\r
+:100C000065C1C13BD10509F464C1C23BD10509F4FA\r
+:100C100063C1C33BD10509F462C1C43BD10509F4EA\r
+:100C200061C1C53BD10509F460C1C63BD10509F4DA\r
+:100C30005FC1C73BD10509F45EC1C83BD10509F4CA\r
+:100C40005DC1C93BD10509F45CC1CA3BD10509F4BA\r
+:100C50005BC100E014E45AC18E01106557C1CE019A\r
+:100C60009F700E94670553C10E94BE149FEF24E34A\r
+:100C70008CE0915020408040E1F700C000000E94CD\r
+:100C8000F61B44C18091CD0181608093CD013EC1AE\r
+:100C90000E949F1D811102C00E94851D0E94BC1DE3\r
+:100CA00090E09093EE018093ED01C23090E5D9077A\r
+:100CB00021F48091ED01816086C0C43020E5D20727\r
+:100CC00021F48091ED0182607EC0C63080E5D807B6\r
+:100CD00021F48091ED01846076C0C83090E5D90799\r
+:100CE00019F48091ED0127C0CA3020E5D20721F424\r
+:100CF0008091ED01806167C0CC3080E5D80721F498\r
+:100D00008091ED0180625FC0CE3090E5D90721F47B\r
+:100D10008091ED01806457C0C03120E5D20721F4F5\r
+:100D20008091ED0180684FC0C23180E5D80729F479\r
+:100D30008091ED018460886046C0C33090E5D9079A\r
+:100D400021F48091ED018E7F3EC0C53020E5D207B1\r
+:100D500021F48091ED018D7F36C0C73080E5D80742\r
+:100D600021F48091ED018B7F2EC0C93090E5D90729\r
+:100D700019F48091ED0126C0CB3020E5D20721F493\r
+:100D80008091ED018F7E1FC0CD3080E5D80721F422\r
+:100D90008091ED018F7D17C0CF3090E5D90721F408\r
+:100DA0008091ED018F7B0FC0C13120E5D20721F486\r
+:100DB0008091ED018F7707C0C331D04531F4809128\r
+:100DC000ED018B7F877F8093ED018091ED010E9483\r
+:100DD000C01D9CC08D2F99278F7099278130910558\r
+:100DE000D9F49E012370332702C0880F991F2A95DA\r
+:100DF000E2F79C688E0144E0000F111F4A95E1F76D\r
+:100E000000271370802B912B53E0CC0FDD1F5A95D8\r
+:100E1000E1F7C076DD272FC08230910531F4DC2F59\r
+:100E2000CC278E01016F106A71C08330910569F47F\r
+:100E3000CE018370992701E010E002C0000F111F5E\r
+:100E40008A95E2F7C8019C680FC0049709F05EC05C\r
+:100E5000CE018370992701E010E002C0000F111F3E\r
+:100E60008A95E2F7C8019A6823E0CC0FDD1F2A9526\r
+:100E7000E1F7C07ED7708C010C2B1D2B47C0DF70B3\r
+:100E80008E01106243C000E010E040C08E013EC001\r
+:100E900001E810E43BC003E810E438C002EE14E4BB\r
+:100EA00035C009EE14E432C00AEE14E42FC005EB9D\r
+:100EB00014E42CC006EB14E429C007EB14E426C0AC\r
+:100EC0000CEC14E423C00DEC14E420C003E815E49A\r
+:100ED0001DC00AE815E41AC002E915E417C004E9C8\r
+:100EE00015E414C001E216E411C003E216E40EC0DA\r
+:100EF00004E216E40BC005E216E408C006E216E4BC\r
+:100F000005C007E216E402C00AE216E4C801DF9158\r
+:100F1000CF911F910F91089596E0799FF0011124D0\r
+:100F200094E5899FE00DF11D1124E60FF11DEE0FF0\r
+:100F3000FF1FEA50FF4F85919491803E9105E0F4A8\r
+:100F4000803C910558F58133910509F46FC048F450\r
+:100F50008932910509F463C08A32910509F46DC0A4\r
+:100F600072C089339105E9F082389105D1F085335B\r
+:100F7000910509F44DC067C0833E910581F138F4B5\r
+:100F8000803E9105B9F0823E9105D9F05CC0863E65\r
+:100F9000910561F1873E9105A1F155C00E945F0561\r
+:100FA00008952091ED0120FD02C021FF4CC080EE8C\r
+:100FB00090E049C08091ED0180FFF9CF89E390E096\r
+:100FC00042C08091ED0182FF0EC08091ED0184FF4F\r
+:100FD00003C080E090E037C083EE90E034C08091A1\r
+:100FE000ED0182FFF2CF82EE90E02DC08091ED0105\r
+:100FF00083FF0BC08091ED0184FDEBCF87EE90E085\r
+:1010000022C08091ED0183FFF5CF86EE90E01BC0FA\r
+:101010008091ED0185FF07C089E290E014C08091C6\r
+:10102000ED0185FFF9CF85E390E00DC08091ED01E2\r
+:1010300086FF07C08AE290E006C08091ED0186FF3E\r
+:10104000F9CF81E390E00E946F05089508950C9414\r
+:101050002608809162010895CF93DF9300D01F92FC\r
+:10106000CDB7DEB79C018091E401843019F593E09F\r
+:1010700099833B832A839093E9008FEF9091E80056\r
+:10108000815095FD06C095ED9A95F1F7000081110C\r
+:10109000F5CF8091E80085FF0DC040E050E063E0AF\r
+:1010A00070E0CE0101960E94960A8091E8008E774A\r
+:1010B0008093E8000F900F900F90DF91CF910895EB\r
+:1010C000CF93DF9300D01F92CDB7DEB72091E4011C\r
+:1010D000243021F522E029839B838A8383E0809357\r
+:1010E000E9008FEF9091E800815095FD06C095EDE5\r
+:1010F0009A95F1F700008111F5CF8091E80085FF06\r
+:101100000DC040E050E063E070E0CE0101960E9427\r
+:10111000960A8091E8008E778093E8000F900F90F8\r
+:101120000F90DF91CF9108952091E4012430F1F4E4\r
+:1011300022E02093E9002FEF3091E800215035FDA7\r
+:1011400006C035ED3A95F1F700002111F5CF209159\r
+:10115000E80025FF0BC040E050E065E070E00E9431\r
+:10116000960A8091E8008E778093E8000895CF93E7\r
+:10117000DF93EC019091E401943009F046C0809136\r
+:101180000C018823D9F080910D018823B9F0909348\r
+:10119000E9008FEF9091E800815095FD06C095E140\r
+:1011A0009A95F1F700008111F5CF8091E80085FF55\r
+:1011B0002CC040E050E060E170E017C081E0809317\r
+:1011C000E9008FEF9091E800815095FD06C095ED04\r
+:1011D0009A95F1F700008111F5CF8091E80085FF25\r
+:1011E00014C040E050E068E070E0CE010E94960A32\r
+:1011F0008091E8008E778093E80080E1FE01A2E50F\r
+:10120000B1E001900D928A95E1F7DF91CF910895B9\r
+:101210008091E301811109C00E942B0C0E94880C6F\r
+:101220008091E20084608093E20008951092E301CF\r
+:10123000089508950C942F220E948C1B0E94352241\r
+:101240000E942E0F0C94270842E061EC81E00E947E\r
+:10125000A50B42E061EC82E00E94A50B42E061EC4C\r
+:1012600083E00E94A50B42E161EC84E00C94A50BA5\r
+:101270008091E601833009F455C030F4813071F07B\r
+:10128000823009F48EC008958A3009F47AC08B3018\r
+:1012900009F460C0893009F09CC020C08091E5014C\r
+:1012A000813A09F096C08091E800877F8093E8003A\r
+:1012B0008091E9019091EA01892B21F460E182E5B6\r
+:1012C00091E003C060E080E090E070E00E94E10AFD\r
+:1012D0008091E8008B778093E80008958091E50184\r
+:1012E000813209F076C08091E9019091EA0100977E\r
+:1012F00019F0039709F06DC08091E800877F809313\r
+:10130000E8008091E80082FD05C08091E401811130\r
+:10131000F8CF5FC08091F100809362018091E80076\r
+:101320008B7753C08091E501813A09F052C08091DA\r
+:10133000E9019091EA01892B09F04BC08091E80006\r
+:10134000877F8093E8008091E80080FFFCCF809148\r
+:101350000C0136C08091E5018132D9F58091E90117\r
+:101360009091EA01892BA9F58091E800877F80930D\r
+:10137000E8000E94DA0B8091E70180930C010C9445\r
+:10138000BE148091E501813221F58091E800877FCC\r
+:101390008093E8000E94DA0B8091E801809363015A\r
+:1013A00008958091E501813AA1F48091E800877F5A\r
+:1013B0008093E8008091E80080FFFCCF809163017A\r
+:1013C0008093F1008091E8008E778093E8000C9480\r
+:1013D000DA0B089584B7877F84BF88E10FB6F8944D\r
+:1013E00080936000109260000FBE90E080E80FB61E\r
+:1013F000F89480936100909361000FBE0E947D0F6E\r
+:101400000E942B0C0E94880C8091E20084608093E3\r
+:10141000E20078940E940E0F0E947F0F82E091E01C\r
+:101420000E94290F0E941D228091E401853069F4F9\r
+:101430000E944D1B8091E2018823B1F30E94781B2A\r
+:10144000882391F30E94800AEFCF0E94850FECCF92\r
+:10145000292F332723303105C9F064F421303105B9\r
+:1014600081F02230310509F043C08DE690E022E2A0\r
+:1014700033E042C021323105F1F02232310541F131\r
+:1014800037C082E190E02FE833E036C09927813001\r
+:10149000910541F08230910541F0892B49F5EEE14B\r
+:1014A000F3E005C0E6E0F3E002C0EEEEF2E0849186\r
+:1014B00090E09F0121C06430D8F4E62FF0E0EE0FF9\r
+:1014C000FF1FEE5DFE4F2081318189E090E014C066\r
+:1014D000643070F470E0FB01EE0FFF1FE65EFE4F1C\r
+:1014E00020813181FB01EA5EFE4F808190E004C0E3\r
+:1014F00080E090E020E030E0FA013183208308951D\r
+:1015000080E189BD82E189BD09B400FEFDCF8091F3\r
+:10151000D8008F7D8093D8008091E0008260809316\r
+:10152000E0008091E00081FDFCCF0895CF92DF9232\r
+:10153000EF92FF920F931F93CF93DF93EC018B01F8\r
+:101540006A010E94F90B811133C0C114D10439F032\r
+:10155000F60180819181081B190BC80FD91FE12C5E\r
+:10156000F12C0115110519F18091E80085FD16C0D7\r
+:101570008091E8008E778093E800C114D10449F08F\r
+:10158000F60180819181E80EF91EF182E08285E00A\r
+:101590000FC00E94F90B882321F30AC08991809320\r
+:1015A000F10001501109FFEFEF1AFF0ADACF80E0D6\r
+:1015B000DF91CF911F910F91FF90EF90DF90CF902F\r
+:1015C00008952091EB013091EC012617370748F080\r
+:1015D0006115710539F42091E8002E772093E80019\r
+:1015E00001C0B90140E061157105A9F12091E40144\r
+:1015F000222309F443C0253009F442C02091E800B9\r
+:1016000023FD40C02091E80022FD32C02091E80077\r
+:1016100020FFE9CF4091F3002091F20030E0342B1D\r
+:10162000FC01CF016115710559F02830310540F4F6\r
+:1016300081918093F100615071092F5F3F4FF1CF8D\r
+:1016400041E02830310509F040E02091E8002E7794\r
+:101650002093E800C8CF4111C9CF0AC08091E401AE\r
+:10166000882361F0853061F08091E80083FD0AC035\r
+:101670008091E80082FFF2CF80E0089582E0089533\r
+:1016800083E0089581E008952091EB013091EC0111\r
+:101690002617370748F06115710539F42091E800E5\r
+:1016A0002E772093E80001C0B901FC0120E061150C\r
+:1016B000710591F18091E401882309F440C08530DF\r
+:1016C00009F43FC08091E80083FD3DC08091E800AF\r
+:1016D00082FD2FC08091E80080FFE9CF2091F300C8\r
+:1016E0008091F20090E0922B6115710559F08830DD\r
+:1016F000910540F424912093F100319661507109D5\r
+:101700000196F2CF21E0089709F020E08091E800EF\r
+:101710008E778093E800CBCF2111CCCF0AC0809187\r
+:10172000E401882361F0853061F08091E80083FD59\r
+:101730000AC08091E80082FFF2CF80E0089582E045\r
+:10174000089583E0089581E00895982F973058F523\r
+:101750009093E900981739F07091EC002091ED001A\r
+:101760005091F00003C0242F762F50E021FF19C0C4\r
+:101770003091EB003E7F3093EB003091ED003D7FE8\r
+:101780003093ED003091EB0031603093EB007093BB\r
+:10179000EC002093ED005093F0002091EE0027FF25\r
+:1017A00007C09F5FD3CF8F708093E90081E00895D9\r
+:1017B00080E008958091E50187FF11C08091E800E5\r
+:1017C00082FD05C08091E4018111F8CF11C08091A4\r
+:1017D000E8008B770BC08091E401882349F0809169\r
+:1017E000E80080FFF8CF8091E8008E778093E800D2\r
+:1017F00008952091E4003091E50095E64091EC00D9\r
+:10180000842F817040FF22C08091E80080FD1CC0C1\r
+:101810008091E401882391F0853091F08091EB0074\r
+:1018200085FD10C04091E4005091E5004217530738\r
+:1018300029F39A01915011F784E0089582E0089508\r
+:1018400083E0089581E0089580E008954091E800E4\r
+:1018500042FFDECF08950E94990C0E94A10CE0EE99\r
+:10186000F0E0808181608083E8EDF0E080818F7717\r
+:10187000808319BCA7EDB0E08C918E7F8C93808122\r
+:101880008F7E80831092E30108950F931F93CF936F\r
+:10189000DF930E94990C0E94A10CC8EDD0E08881D2\r
+:1018A0008F77888388818068888388818F7D88830B\r
+:1018B00019BC1092E4011092E0011092E201109222\r
+:1018C000E10100EE10E0F80180818B7F8083888148\r
+:1018D0008160888342E060E080E00E94A50BE1EE39\r
+:1018E000F0E080818E7F8083E2EEF0E08081816095\r
+:1018F0008083808188608083F80180818E7F8083EF\r
+:10190000888180618883DF91CF911F910F91089525\r
+:10191000E8EDF0E080818F7E8083E7EDF0E080816C\r
+:101920008160808384E082BF81E08093E3010C9436\r
+:10193000450CE8EDF0E080818E7F80831092E2001C\r
+:1019400008951092DA001092E10008951F920F920C\r
+:101950000FB60F9211242F933F934F935F936F9382\r
+:101960007F938F939F93AF93BF93EF93FF93809158\r
+:10197000E10082FF0BC08091E20082FF07C08091EE\r
+:10198000E1008B7F8093E1000E940D0F8091DA00CF\r
+:1019900080FF1FC08091D80080FF1BC08091DA00BB\r
+:1019A0008E7F8093DA008091D90080FF0DC080E1A6\r
+:1019B00089BD82E189BD09B400FEFDCF81E080933D\r
+:1019C000E4010E94080905C019BC1092E4010E94BC\r
+:1019D00016098091E10080FF19C08091E20080FF2C\r
+:1019E00015C08091E2008E7F8093E2008091E2003A\r
+:1019F00080618093E2008091D80080628093D8005B\r
+:101A000019BC85E08093E4010E941A098091E100ED\r
+:101A100084FF30C08091E20084FF2CC080E189BD4A\r
+:101A200082E189BD09B400FEFDCF8091D8008F7D91\r
+:101A30008093D8008091E1008F7E8093E1008091B7\r
+:101A4000E2008F7E8093E2008091E20081608093CB\r
+:101A5000E2008091E001882311F084E007C08091CA\r
+:101A6000E30087FD02C081E001C083E08093E401D0\r
+:101A70000E941C098091E10083FF29C08091E2004F\r
+:101A800083FF25C08091E100877F8093E10082E0A1\r
+:101A90008093E4011092E0018091E1008E7F8093B9\r
+:101AA000E1008091E2008E7F8093E2008091E2006D\r
+:101AB00080618093E20042E060E080E00E94A50B3C\r
+:101AC0008091F00088608093F0000E941909FF91D6\r
+:101AD000EF91BF91AF919F918F917F916F915F91A6\r
+:101AE0004F913F912F910F900FBE0F901F9018951F\r
+:101AF0001F920F920FB60F9211242F933F934F9383\r
+:101B00005F936F937F938F939F93AF93BF93CF9385\r
+:101B1000DF93EF93FF93C091E900CF708091EC00C9\r
+:101B2000D82FD17080FDD0E81092E9008091F000AC\r
+:101B3000877F8093F00078940E94BC0D1092E9009A\r
+:101B40008091F00088608093F000CD2BCF70C0931F\r
+:101B5000E900FF91EF91DF91CF91BF91AF919F91FC\r
+:101B60008F917F916F915F914F913F912F910F9046\r
+:101B70000FBE0F901F9018951F93CF93DF93CDB793\r
+:101B8000DEB7AA970FB6F894DEBF0FBECDBFE5EE65\r
+:101B9000F1E088E08E0F9091F10091938E13FBCFCE\r
+:101BA0000E9438098091E80083FF1FC18091E50100\r
+:101BB0009091E601492F50E04A30510508F015C1D7\r
+:101BC000FA01EA5AFF4F0C94B723803881F082382B\r
+:101BD00009F00BC18091E9018F708093E900809139\r
+:101BE000EB0085FB882780F91092E90006C0809100\r
+:101BF000E1019091E201911182609091E800977F5C\r
+:101C00009093E8008093F1001092F100C8C0282F53\r
+:101C10002D7F09F0EAC0882319F0823061F0E5C019\r
+:101C20008091E701813009F0E0C0933009F080E055\r
+:101C30008093E2012BC08091E701811127C0809140\r
+:101C4000E9018F7009F4D1C08093E9002091EB0085\r
+:101C500020FF1CC0933021F48091EB00806214C0FF\r
+:101C60009091EB0090619093EB0021E030E0A901AE\r
+:101C700002C0440F551F8A95E2F74093EA00109284\r
+:101C8000EA008091EB0088608093EB001092E900FD\r
+:101C90008091E800877F86C08111A7C01091E7017D\r
+:101CA0001F778091E3008078812B8093E3008091FF\r
+:101CB000E800877F8093E8000E94DA0B8091E800BB\r
+:101CC00080FFFCCF8091E30080688093E3001111D6\r
+:101CD00002C082E001C083E08093E40186C08058A6\r
+:101CE000823008F082C08091E7019091E8018C3D3C\r
+:101CF00053E0950779F583E08A838AE289834FB7B9\r
+:101D0000F894DE01139620E03EE051E2E32FF0E08C\r
+:101D100050935700E49120FF03C0E295EF703F5FBE\r
+:101D2000EF708E2F90E0EA3010F0C79601C0C09699\r
+:101D30008D939D932F5F243149F74FBF8091E80029\r
+:101D4000877F8093E8006AE270E0CE0101960E94EE\r
+:101D5000E10A14C0AE014F5F5F4F6091E9010E943C\r
+:101D6000280ABC01892B09F440C09091E800977FB4\r
+:101D70009093E80089819A810E94440B8091E80049\r
+:101D80008B778093E80031C0803879F58091E80046\r
+:101D9000877F8093E8008091E0018093F10080913B\r
+:101DA000E8008E778093E8000E94DA0B1EC0811154\r
+:101DB0001CC09091E7019230C0F48091E800877FC9\r
+:101DC0008093E8009093E0010E94DA0B8091E0019B\r
+:101DD000811106C08091E30087FD02C081E001C04F\r
+:101DE00084E08093E4010E9424098091E80083FF4D\r
+:101DF0000AC08091E800877F8093E8008091EB0023\r
+:101E000080628093EB00AA960FB6F894DEBF0FBEF7\r
+:101E1000CDBFDF91CF911F9108950895CF93809109\r
+:101E2000E4018823A1F0C091E900CF709091EC000B\r
+:101E3000892F817090FD80E8C82B1092E900809175\r
+:101E4000E80083FD0E94BC0DCF70C093E900CF91E4\r
+:101E5000089590936901809368010895E091680165\r
+:101E6000F0916901309721F00190F081E02D099403\r
+:101E700080E00895E0916801F0916901309721F0C8\r
+:101E80000280F381E02D09940895E0916801F091BA\r
+:101E90006901309721F00480F581E02D09940895BF\r
+:101EA00020916601309167018217930771F090933A\r
+:101EB000670180936601E0916801F09169013097B4\r
+:101EC00021F00680F781E02D0994089520916401A6\r
+:101ED000309165018217930771F0909365018093AB\r
+:101EE0006401E0916801F0916901309721F000846C\r
+:101EF000F185E02D0994089508950C947C0F0E94BB\r
+:101F0000921B0E943F040C94581CCF92DF92EF92D8\r
+:101F1000FF920F931F93CF93DF93CDB7DEB72B972D\r
+:101F20000FB6F894DEBF0FBECDBF0E9457048BE6FC\r
+:101F3000C82E81E0D82E00E010E0E02E802F0E9415\r
+:101F40004505F60141916F01F42EF826B1F40F5FBB\r
+:101F50001F4F0E30110589F78FEF89838A831B820B\r
+:101F60000E949B1B8160782F9D838C8349815A81BD\r
+:101F70006B818D810E94281040C09091CD0191FF0E\r
+:101F800004C08B870E944B058B8520E030E04F2DED\r
+:101F900050E0922FBA01022E02C0759567950A94FF\r
+:101FA000E2F760FF24C02E83EF8221E030E0690178\r
+:101FB00002C0CC0CDD1C9A95E2F790E08C219D21AB\r
+:101FC000892B09F420E028870E949B1B8160782FD1\r
+:101FD0009A8789874E815F8168858A850E9428104B\r
+:101FE000F801E559FE4F8081C826C08206C02F5FE8\r
+:101FF0003F4F2630310569F6AACF0E943F1F10914E\r
+:102000006A010E942E0F1817A1F00E942E0F8093D4\r
+:102010006A012B960FB6F894DEBF0FBECDBFDF91DD\r
+:10202000CF911F910F91FF90EF90DF90CF900C9484\r
+:1020300027082B960FB6F894DEBF0FBECDBFDF91F9\r
+:10204000CF911F910F91FF90EF90DF90CF90089567\r
+:10205000CF93DF93CDB7DEB72B970FB6F894DEBFE3\r
+:102060000FBECDBF4F83588769877A878B87DE0184\r
+:10207000119686E0FD0111928A95E9F785E0FE014F\r
+:10208000379601900D928A95E1F749815A816B81CB\r
+:102090007C818D819E810E9458172B960FB6F894F3\r
+:1020A000DEBF0FBECDBFDF91CF9108950895CF93CE\r
+:1020B000882309F4C2C0C82F823859F40E942E0F19\r
+:1020C00081FDBBC089E30E94011A0E94CE1A89E3F8\r
+:1020D0000CC0833879F40E942E0F80FDAEC083E5DA\r
+:1020E0000E94011A0E94CE1A83E50E94431ACF91E2\r
+:1020F0000C94CE1A843859F40E942E0F82FD9DC094\r
+:1021000087E40E94011A0E94CE1A87E4EECF8CEF7A\r
+:102110008C0F813A48F48C2F0E94822181118DC04E\r
+:102120008C2F0E94011AE3CF80E28C0F883048F494\r
+:10213000C77081E001C0880FCA95EAF70E94871A2C\r
+:10214000D6CF8BE58C0F833078F4C53A29F0C63AA8\r
+:1021500031F083E890E005C081E890E002C082E8B9\r
+:1021600090E0CF910C94500F88E58C0F833108F0EC\r
+:1021700064C0C83A39F1C93A41F1CA3A49F1CB3A97\r
+:1021800051F1CC3A59F1CD3A61F1C03B69F1CE3A07\r
+:1021900071F1CF3A79F1C13B81F1C23B89F1C33B87\r
+:1021A00091F1C43B99F1C53BA1F1C63BA9F1C73BF5\r
+:1021B000B1F1C83BB9F1C93BC1F1CA3BC9F180E0FB\r
+:1021C00090E038C082EE90E035C089EE90E032C0F9\r
+:1021D0008AEE90E02FC085EB90E02CC086EB90E07B\r
+:1021E00029C087EB90E026C08CEC90E023C08DECFA\r
+:1021F00090E020C083E891E01DC08AE891E01AC019\r
+:1022000082E991E017C084E991E014C081E292E094\r
+:1022100011C083E292E00EC084E292E00BC085E23E\r
+:1022200092E008C086E292E005C087E292E002C038\r
+:102230008AE292E0CF910C94660FCF9108958823A3\r
+:1022400009F44BC0823859F40E942E0F81FF45C01B\r
+:1022500089E30E94011A0E94CE1A89E30CC08338D8\r
+:1022600071F40E942E0F80FF38C083E50E94011A8E\r
+:102270000E94CE1A83E50E94431A0C94CE1A843829\r
+:1022800059F40E942E0F82FF28C087E40E94011A91\r
+:102290000E94CE1A87E4EFCF9CEF980F913A58F343\r
+:1022A00090E2980F983050F4877091E001C0990F38\r
+:1022B0008A95EAF7892F0E948D1ADFCF9BE5980F48\r
+:1022C000933020F480E090E00C94500F885A8331D2\r
+:1022D00020F480E090E00C94660F0895882321F0AC\r
+:1022E0000E94871A0C94CE1A0895882321F00E9428\r
+:1022F0008D1A0C94CE1A0895BF92CF92DF92EF926E\r
+:10230000FF920F931F93CF93DF9300D000D000D0A4\r
+:10231000CDB7DEB725E0FC01DE01119601900D92EC\r
+:102320002A95E1F7FC01D080118102812581229557\r
+:102330002F7043815481452B09F4FCC21F3F21F4C7\r
+:10234000FFEFDF1609F4F6C27C012E830E945610BF\r
+:10235000D9821A8369817A81802F0E94FD19182FF2\r
+:10236000B92E0E94B2190E9479182E81002319F00B\r
+:102370000E94A41A2E81EB2DE295EF70F0E0E05A56\r
+:10238000FF4F0C94B7238B2D807F9B2D9F70F92ED0\r
+:10239000882319F0F29480EFF822002389F0FF20BF\r
+:1023A00009F475C280E2810F883020F48F2D0E94DD\r
+:1023B000871A03C08F2D0E94971A0E94CE1A67C2F7\r
+:1023C000812F0E941F11FF2009F4B4C2105E8F2DCF\r
+:1023D000183018F40E948D1A02C00E949D1A269689\r
+:1023E0000FB6F894DEBF0FBECDBFDF91CF911F9126\r
+:1023F0000F91FF90EF90DF90CF90BF900C94CE1A8A\r
+:102400003B2D307F8B2D8F70303211F08295807F85\r
+:10241000112319F0113021F12CC00023B9F022232F\r
+:1024200009F4A0C1213009F09DC126960FB6F89499\r
+:10243000DEBF0FBECDBFDF91CF911F910F91FF90F7\r
+:10244000EF90DF90CF90BF900C94B71A222319F031\r
+:10245000213009F46FC28E830E94BA1A8E8196C110\r
+:10246000002321F0223008F065C27CC1211162C234\r
+:102470008DC1002321F0222309F474C108C2222354\r
+:1024800009F484C119C22B2D26952695237030E0BE\r
+:102490002115310521F021303105D1F04BC2002347\r
+:1024A00021F0812F9B2D937002C080E090E0269652\r
+:1024B0000FB6F894DEBF0FBECDBFDF91CF911F9155\r
+:1024C0000F91FF90EF90DF90CF90BF900C94500F42\r
+:1024D000002321F0812F9B2D937002C080E090E0BB\r
+:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119\r
+:1024F0001F910F91FF90EF90DF90CF90BF900C94C1\r
+:10250000660F812F002319F00E94471E02C00E940F\r
+:10251000AF1E26960FB6F894DEBF0FBECDBFDF917B\r
+:10252000CF911F910F91FF90EF90DF90CF90BF90D0\r
+:102530000C94341F8B2D837009F07BC00111FAC1FC\r
+:10254000812F829586958770880F880F912F9F70B5\r
+:10255000C92ED12CE12CF12C082E04C0CC0CDD1C92\r
+:10256000EE1CFF1C0A94D2F714FF12C04FE050E09B\r
+:1025700060E070E004C0440F551F661F771F8A9506\r
+:10258000D2F7CB01BA01609570958095909503C004\r
+:1025900060E070E0CB012B2D269526952370422F0D\r
+:1025A00050E042305105D9F04330510569F16C29B2\r
+:1025B0007D298E299F294130510551F126960FB66C\r
+:1025C000F894DEBF0FBECDBFDF91CF911F910F9169\r
+:1025D000FF90EF90DF90CF90BF900C94A0186C29E3\r
+:1025E0007D298E299F2926960FB6F894DEBF0FBE4F\r
+:1025F000CDBFDF91CF911F910F91FF90EF90DF90B2\r
+:10260000CF90BF900C94BC180E94A018C701B601CF\r
+:1026100026960FB6F894DEBF0FBECDBFDF91CF91E7\r
+:102620001F910F91FF90EF90DF90CF90BF900C948F\r
+:102630008418002319F08B2D817001C086958823A2\r
+:1026400009F478C1812F829586958770880F880F4D\r
+:10265000912F9F70C92ED12CE12CF12C082E04C093\r
+:10266000CC0CDD1CEE1CFF1C0A94D2F714FF12C028\r
+:102670004FE050E060E070E004C0440F551F661F5B\r
+:10268000771F8A95D2F7CB01BA0160957095809536\r
+:10269000909503C060E070E0CB012B2D2695269528\r
+:1026A0002370422F50E042305105D9F0433051059C\r
+:1026B00069F16C297D298E299F294130510551F1FD\r
+:1026C00026960FB6F894DEBF0FBECDBFDF91CF9137\r
+:1026D0001F910F91FF90EF90DF90CF90BF900C94DF\r
+:1026E0007A196C297D298E299F2926960FB6F89490\r
+:1026F000DEBF0FBECDBFDF91CF911F910F91FF9035\r
+:10270000EF90DF90CF90BF900C9496190E947A19A9\r
+:10271000C701B60126960FB6F894DEBF0FBECDBF37\r
+:10272000DF91CF911F910F91FF90EF90DF90CF90AD\r
+:10273000BF900C945E19103FD1F118F4103E50F484\r
+:10274000A1C0123F09F463C008F44CC0133F09F460\r
+:1027500073C098C01F708B2D8F710023A1F00E9451\r
+:10276000F718812F26960FB6F894DEBF0FBECDBFA7\r
+:10277000DF91CF911F910F91FF90EF90DF90CF905D\r
+:10278000BF900C946E110E941819812F26960FB6D7\r
+:10279000F894DEBF0FBECDBFDF91CF911F910F9197\r
+:1027A000FF90EF90DF90CF90BF900C9475110023B5\r
+:1027B000A9F02111BFC08B2D8F7126960FB6F8940A\r
+:1027C000DEBF0FBECDBFDF91CF911F910F91FF9064\r
+:1027D000EF90DF90CF90BF900C943D19223008F01D\r
+:1027E000A9C0E9CF0023A9F08B2D8F7126960FB6D3\r
+:1027F000F894DEBF0FBECDBFDF91CF911F910F9137\r
+:10280000FF90EF90DF90CF90BF900C94F7180023CB\r
+:1028100059F38B2D8F7126960FB6F894DEBF0FBE3D\r
+:10282000CDBFDF91CF911F910F91FF90EF90DF907F\r
+:10283000CF90BF900C941819002399F08B2D8F71B5\r
+:1028400026960FB6F894DEBF0FBECDBFDF91CF91B5\r
+:102850001F910F91FF90EF90DF90CF90BF900C945D\r
+:10286000E21826960FB6F894DEBF0FBECDBFDF91FB\r
+:10287000CF911F910F91FF90EF90DF90CF90BF907D\r
+:102880000C94D8180023A9F0222309F4ADCF812F8E\r
+:1028900026960FB6F894DEBF0FBECDBFDF91CF9165\r
+:1028A0001F910F91FF90EF90DF90CF90BF900C940D\r
+:1028B0005710222309F4ADCF812F26960FB6F89436\r
+:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063\r
+:1028D000EF90DF90CF90BF900C941F114B2D4F7055\r
+:1028E000612FC7010E94B40226960FB6F894DEBF8E\r
+:1028F0000FBECDBFDF91CF911F910F91FF90EF9051\r
+:10290000DF90CF90BF900C94FC174B2D4F70612F30\r
+:10291000C70126960FB6F894DEBF0FBECDBFDF917C\r
+:10292000CF911F910F91FF90EF90DF90CF90BF90CC\r
+:102930000C944C0526960FB6F894DEBF0FBECDBFA3\r
+:10294000DF91CF911F910F91FF90EF90DF90CF908B\r
+:10295000BF9008950E94A41A0E94B41A0E94791A86\r
+:102960000E94CE1A0E94E51F0E94341F80E090E072\r
+:102970000E94500F80E090E00C94660F0E94941A21\r
+:102980000C94AA140E94F219292F22952F7030E07E\r
+:102990002C3031054CF42A3031056CF422503109C9\r
+:1029A0002230310588F407C02C30310549F02F3032\r
+:1029B000310531F009C0803E48F0803F29F406C05F\r
+:1029C00093FB882780F9089580E0089581E00895B9\r
+:1029D000CF93DF9300D000D01F92CDB7DEB70F901A\r
+:1029E0000F900F900F900F90DF91CF910895CF939C\r
+:1029F000DF9300D000D000D0CDB7DEB726960FB65B\r
+:102A0000F894DEBF0FBECDBFDF91CF9108951F9325\r
+:102A1000CF93DF93C091790116E080917A01C817B6\r
+:102A200099F0D0E01C9FF0011D9FF00D1124E55896\r
+:102A3000FE4F4081518162817381848195810E9422\r
+:102A4000F7142196C770E9CFDF91CF911F910895B8\r
+:102A50004091AB015091AC016091AD017091AE011C\r
+:102A60008091AF019091B0010C94F7148091B00166\r
+:102A700082958F7009F054C08091AD01882309F4CC\r
+:102A80004FC080917901A0917A016091AB01709162\r
+:102A9000AC014091AE015091AF01B6E08A1709F444\r
+:102AA0003FC090E041155105C1F17F3F11F46F3FE8\r
+:102AB000A1F1B89FF001B99FF00D1124E558FE4F28\r
+:102AC000218172132AC02081621327C02281211123\r
+:102AD00024C0238134812417350710F42150310993\r
+:102AE000241B350B283C3105C0F42091B0012F7018\r
+:102AF00020612093B00126E0289FF001299FF00D6E\r
+:102B00001124E058FE4F80818F70806180838BEAB2\r
+:102B100091E00E947C110C94071501968770BECF3E\r
+:102B20000895CF92DF92EF92FF920F931F93CF936E\r
+:102B3000DF93CDB7DEB762970FB6F894DEBF0FBE56\r
+:102B4000CDBF8C0185E0F801DE011D9601900D924C\r
+:102B50008A95E1F7D8014C9111965C9111971296E4\r
+:102B60006C9112971396CD90DC9014973091AB0135\r
+:102B70007091AC018091AE019091AF01009709F482\r
+:102B80006BC17F3F19F43F3F09F466C1E090AD018E\r
+:102B9000EE2009F4C0C02091B001C816D90628F073\r
+:102BA000F601E81BF90BCF0104C0809590958C0DC0\r
+:102BB0009D1DFF24F394883C910578F0F12C207F33\r
+:102BC00009F0C6C07C2DD98AC88A89890E94E81478\r
+:102BD0008BEA91E00E947C11B1C0822F807F09F0C6\r
+:102BE00046C0751314C0341312C0611110C02F7089\r
+:102BF00020612093B0010E9428158BEA91E00E9489\r
+:102C00007C118091B001D80115968C932EC0CD28EF\r
+:102C100019F15F3F11F44F3FF9F0F62E61111CC01E\r
+:102C20008091790120917A0136E0821709F45AC027\r
+:102C300090E0389FF001399FF00D1124E558FE4FC8\r
+:102C40007181571306C07081471303C072817111DF\r
+:102C500003C001968770E9CFF62E662309F418C1E8\r
+:102C60008091B00181608093B001F12C11C1751386\r
+:102C700008C0341306C0611104C08091B001D801AE\r
+:102C8000C3C04D875E878D859E856A8B0E94C21466\r
+:102C90006A898823E1F16623D1F12091B001822F66\r
+:102CA00082958F7090E0029774F08091AB019091C3\r
+:102CB000AC0198878F831986DB86CA862C87CE0164\r
+:102CC00007960E947C1186E0F801ABEAB1E0019022\r
+:102CD0000D928A95E1F70E9436150E942815FF246F\r
+:102CE000F394D6C04D875E878D859E850E94F2192C\r
+:102CF000292F22952F7030E0223031050CF0BCC016\r
+:102D00009F7009F0B6C0805E883008F4C1C0C80169\r
+:102D10000E947C11E4CFC816D90608F453C0F6010E\r
+:102D2000E81BF90BCF01883C910508F450C0F12C49\r
+:102D30007C2DD98AC88A89890E94E814EBEAF1E0DF\r
+:102D400086E0DF011D928A95E9F70E942815A0C050\r
+:102D5000751314C0341312C0611110C08091B001FA\r
+:102D6000F8018583C8010E947C1186E0EBEAF1E05E\r
+:102D7000DF011D928A95E9F7FE2C8AC04D875E8798\r
+:102D80008D859E856A8B0E94C2146A89882309F406\r
+:102D9000BECF662309F4BBCF2091B001822F82956C\r
+:102DA0008F7090E002970CF48ECF8091AB019091E0\r
+:102DB000AC019A8389831B82DD82CC822E83CE0173\r
+:102DC00001967FCF809590958C0D9D1DACCFF62EF2\r
+:102DD000662309F49CCF75132EC034132CC02091A8\r
+:102DE000B00120FD1FC0822F82958F70D9F0D801CD\r
+:102DF00015962C9315978F3049F08F5F982F9295E9\r
+:102E0000907F822F8F70892B15968C93C8010E941A\r
+:102E10007C1186E0F801ABEAB1E001900D928A9551\r
+:102E2000E1F793CF86E0F801ABEAB1E001900D92B3\r
+:102E30008A95E1F72DC04D875E878D859E850E941E\r
+:102E4000C214811140CF8091B00181608093B001A4\r
+:102E5000C8010E947C111CC0662309F458CF4D871D\r
+:102E60005E878D859E850E94C214882309F44FCF0A\r
+:102E70002ACF811148CF0CC0243031050CF047CF48\r
+:102E80009F7009F440CFF8019581907F09F03BCF06\r
+:102E90008F2D62960FB6F894DEBF0FBECDBFDF91C7\r
+:102EA000CF911F910F91FF90EF90DF90CF900895F9\r
+:102EB0001F93CF93DF93CDB7DEB72C970FB6F8945F\r
+:102EC000DEBF0FBECDBF4F83588769877A878B8758\r
+:102ED0009C87CE0107960E949115882369F08F8107\r
+:102EE00098852A853B85232BF1F19F3F09F063C02C\r
+:102EF0008F3F09F060C037C086E0FE013796DE01E3\r
+:102F0000119601900D928A95E1F76F817885EA8597\r
+:102F1000FB85309741F17F3F11F46F3F21F1209104\r
+:102F20007A0130E0C90101968770992740917901B3\r
+:102F300050E08417950709F447C069837A83FD83BD\r
+:102F4000EC8396E0929FD001939FB00D1124A55879\r
+:102F5000BE4FFE01319601900D929A95E1F7809354\r
+:102F60007A010E94071516E08091790190917A010B\r
+:102F70008917C1F1189FC001112485589E4F0E94E6\r
+:102F80009115882379F1E09179011E9FF0011124B8\r
+:102F9000E558FE4F40815181628173818481958122\r
+:102FA0000E94F7148091790190E00196877099272B\r
+:102FB00080937901D9CF4F81588569857A858B8532\r
+:102FC0009C850E94F714CFCF0E94BE1410927A0104\r
+:102FD00010927901EBEAF1E086E0DF011D928A951B\r
+:102FE000E9F7C1CF2C960FB6F894DEBF0FBECDBF68\r
+:102FF000DF91CF911F910895EF92FF920F931F934E\r
+:10300000CF93DF938C01892B09F46CC0F12CEE2453\r
+:10301000E394E8012196F8018491843740F48430E8\r
+:1030200008F051C0813081F0823019F15BC08537E2\r
+:1030300009F444C0A8F19CE7980F903708F052C0FB\r
+:103040008F770E941F1141C00E5F1F4FFE01C49178\r
+:1030500080E28C0F883048F4C7708E2D01C0880F35\r
+:10306000CA95EAF70E94A71A14C08C2F0E94571025\r
+:103070002DC00E5F1F4FFE01C49180E28C0F88307F\r
+:1030800058F4C7708E2D01C0880FCA95EAF70E94C8\r
+:10309000AD1A0E94CE1A1AC08C2F0E941F1116C0A2\r
+:1030A0000E5F1F4FFE01C491CC2381F08FE99FE09A\r
+:1030B0000197F1F700C00000C150F6CF0E5F1F4F1F\r
+:1030C000FE01F49003C00E9457108E018F2D8823BB\r
+:1030D00009F49FCFEFE9FFE03197F1F700C000005E\r
+:1030E0008150F5CFDF91CF911F910F91FF90EF901D\r
+:1030F000089508956093B5017093B6018093B70168\r
+:103100009093B8010C94AA140F931F930091B501EA\r
+:103110001091B6012091B7013091B801DC01CB01CB\r
+:10312000802B912BA22BB32B8093B5019093B601EA\r
+:10313000A093B701B093B8011F910F910C94AA14FA\r
+:103140000F931F930091B5011091B6012091B70123\r
+:103150003091B801DC01CB0180239123A223B3235A\r
+:103160008093B5019093B601A093B701B093B801D5\r
+:103170001F910F910C94AA140F931F930091B50106\r
+:103180001091B6012091B7013091B801DC01CB015B\r
+:1031900080279127A227B3278093B5019093B6018A\r
+:1031A000A093B701B093B8011F910F910C94AA148A\r
+:1031B0001092B1011092B2011092B3011092B401B9\r
+:1031C0000C94AA1441E050E060E070E004C0440FA9\r
+:1031D000551F661F771F8A95D2F74093B101509310\r
+:1031E000B2016093B3017093B4010C94AA1441E04E\r
+:1031F00050E060E070E004C0440F551F661F771F69\r
+:103200008A95D2F78091B1019091B201A091B3015A\r
+:10321000B091B401482B592B6A2B7B2B4093B10101\r
+:103220005093B2016093B3017093B4010C94AA144B\r
+:1032300041E050E060E070E004C0440F551F661F9D\r
+:10324000771F8A95D2F7409550956095709580913B\r
+:10325000B1019091B201A091B301B091B4014823A2\r
+:1032600059236A237B234093B1015093B2016093A9\r
+:10327000B3017093B4010C94AA1441E050E060E0F3\r
+:1032800070E004C0440F551F661F771F8A95D2F760\r
+:103290008091B1019091B201A091B301B091B401BC\r
+:1032A000482759276A277B274093B1015093B201E1\r
+:1032B0006093B3017093B4010C94AA140F931F93FD\r
+:1032C0000091B1011091B2012091B3013091B4018C\r
+:1032D000DC01CB01802B912BA22BB32B8093B1016E\r
+:1032E0009093B201A093B301B093B4011F910F91D9\r
+:1032F0000C94AA140F931F930091B1011091B20185\r
+:103300002091B3013091B401DC01CB0180239123E2\r
+:10331000A223B3238093B1019093B201A093B30190\r
+:10332000B093B4011F910F910C94AA140F931F93A3\r
+:103330000091B1011091B2012091B3013091B4011B\r
+:10334000DC01CB0180279127A227B3278093B1010D\r
+:103350009093B201A093B301B093B4011F910F9168\r
+:103360000C94AA140895CF92DF92EF92FF920F93DC\r
+:103370001F93CF93DF938C01C090B501D090B6011D\r
+:10338000E090B701F090B8018091B1019091B20145\r
+:10339000A091B301B091B401C82AD92AEA2AFB2A24\r
+:1033A000CFE1D0E0D701C6010C2E04C0B695A79599\r
+:1033B000979587950A94D2F780FF06C0B8018C2FA5\r
+:1033C0000E948C07019721F4219760F780E001C0EB\r
+:1033D0008C2FDF91CF911F910F91FF90EF90DF9095\r
+:1033E000CF900895CF93DF93EC010E94B319BE01F3\r
+:1033F0000E948C07DF91CF910895CB010E94F219B2\r
+:10340000089590910C01992321F090910D01911153\r
+:1034100009C020910E0130910F01F90132969FEF02\r
+:1034200040E01FC0982F9695969596959F3050F541\r
+:10343000E0910E01F0910F01E90FF11D877021E07D\r
+:1034400030E0A90102C0440F551F8A95E2F7CA0176\r
+:103450009181892B818308959F3F39F04F5F4E30D2\r
+:1034600041F051915813F8CF0DC05111F7CF942F5F\r
+:10347000F5CF9F3F39F0F901E90FF11D97FDFA955E\r
+:1034800082830895089590910C01992321F09091E1\r
+:103490000D01911109C020910E0130910F01F90128\r
+:1034A0003296205F3F4F1FC0982F96959695969520\r
+:1034B0009F30F0F4E0910E01F0910F01E90FF11D42\r
+:1034C000877021E030E0A90102C0440F551F8A95A2\r
+:1034D000E2F7CA018095918189238183089531960D\r
+:1034E000E217F30729F090819813F9CF1082F7CFF4\r
+:1034F000089581E090E0E0910E01F0910F01E80F56\r
+:10350000F91F1082019680319105A9F708959091D5\r
+:10351000CC01892B8093CC01089580959091CC01AA\r
+:1035200089238093CC0108951092CC010895909145\r
+:10353000CB01892B8093CB01089580959091CB018D\r
+:1035400089238093CB0108951092CB010895909127\r
+:10355000CA01892B8093CA01089580959091CA0170\r
+:1035600089238093CA0108951092CA010895809317\r
+:10357000B90108951092B901089580910E019091BA\r
+:103580000F01FC0131969C01205F3F4F80E091913B\r
+:1035900091118F5FE217F307D1F70895E0910E01C3\r
+:1035A000F0910F018091CC018083E0910E01F091A8\r
+:1035B0000F0190818091CB01892B8083E0910E01D6\r
+:1035C000F0910F0190818091CA01892B80838091B5\r
+:1035D000B901882361F0E0910E01F0910F01908113\r
+:1035E000892B80830E94BD1A81111092B9018091AC\r
+:1035F0000E0190910F010C943A0FCF92DF92EF924F\r
+:10360000FF926C01EE24FF24C114D104E104F10403\r
+:1036100021F0C701B60120E101C020E0C72ED82E5D\r
+:10362000E92EFF24C114D104E104F10419F0285F4C\r
+:10363000C701B6016B017C0154E0F694E794D7947E\r
+:10364000C7945A95D1F7C114D104E104F10419F0DB\r
+:103650002C5FC701B6016B017C0142E0F694E79450\r
+:10366000D794C7944A95D1F7C114D104E104F10469\r
+:1036700019F02E5FC701B601DC01CB01B695A79505\r
+:1036800097958795892B8A2B8B2B09F02F5F822F9B\r
+:10369000FF90EF90DF90CF9008958091E401843007\r
+:1036A00021F11092CE0120E488E190E00FB6F89469\r
+:1036B000A895809360000FBE2093600080E00E9478\r
+:1036C000270883B7817F846083BF83B7816083BF0E\r
+:1036D0007894889583B78E7F83BF88E10FB6F8947E\r
+:1036E00080936000109260000FBE089508950895C1\r
+:1036F000CF930E94761B0E9457040E94771BC0E064\r
+:103700008C2F0E944505811104C0CF5FCE30C1F7D8\r
+:1037100001C081E0CF9108950E94BE140E942E0F37\r
+:103720000C94270882E084BD93E095BD9AEF97BD85\r
+:1037300080936E0008952FB7F8948091CF019091F7\r
+:10374000D001A091D101B091D2012FBF0895CF92A5\r
+:10375000DF92EF92FF920F931F932FB7F89440914F\r
+:10376000CF015091D0016091D1017091D2012FBF52\r
+:103770006A017B01EE24FF248C0120E030E0C016BA\r
+:10378000D106E206F30610F4415051099A01281BB4\r
+:10379000390BC9011F910F91FF90EF90DF90CF90EF\r
+:1037A00008951F920F920FB60F9211248F939F933B\r
+:1037B000AF93BF938091CF019091D001A091D1019F\r
+:1037C000B091D2010196A11DB11D8093CF019093BC\r
+:1037D000D001A093D101B093D201BF91AF919F913D\r
+:1037E0008F910F900FBE0F901F9018950E942B0C79\r
+:1037F000F8942FEF87EA91E6215080409040E1F75E\r
+:1038000000C0000087E090EBDC018093EE01909314\r
+:10381000EF01A093F001B093F1019CE088E10FB6B5\r
+:10382000F894A895809360000FBE90936000FFCF3E\r
+:10383000EF92FF920F931F93CF93DF93D82FC0E0A7\r
+:103840008C2F0E94450500E010E0E82EF12CC70106\r
+:10385000002E02C0959587950A94E2F780FD06C078\r
+:103860000F5F1F4F0630110591F709C0602F7C2FA5\r
+:1038700080E00E944D05D813F3CF81E004C0CF5FF4\r
+:10388000CE30F1F680E0DF91CF911F910F91FF9044\r
+:10389000EF900895CF93C82F8CE20E94181C8823C4\r
+:1038A00021F08C2FCF910C94181C80E0CF910895BB\r
+:1038B000CF930E949F1D811102C00E94851DC5E605\r
+:1038C000C15049F00E9457048FE39CE90197F1F73A\r
+:1038D00000C00000F5CF89E20E944A1C811113C18B\r
+:1038E0008AE20E944A1C81110E94851D85E00E9487\r
+:1038F0004A1C81110E94F61B0E94AA1D8093CD01D3\r
+:1039000087E00E944A1C8823A9F18BE10E944A1C8F\r
+:10391000882351F08091CD0181FB222720F991E08D\r
+:10392000922790FB81F90EC08EE00E944A1C8823EA\r
+:1039300061F08091CD0182FB222720F991E092274E\r
+:1039400090FB82F98093CD0115C080E10E944A1C52\r
+:103950009091CD01882341F093FB222720F981E04B\r
+:10396000822780FB93F904C0892F809580FB90F912\r
+:103970009093CD018091CD010E94AE1D0E94BC1D8F\r
+:103980008093ED0180EE0E944A1C882341F08091D3\r
+:10399000ED01982F909590FB80F98093ED0189E3DC\r
+:1039A0000E944A1C882359F08091ED0181FB222757\r
+:1039B00020F991E0922790FB81F98093ED0182EE4E\r
+:1039C0000E944A1C882359F08091ED0182FB222736\r
+:1039D00020F991E0922790FB82F98093ED0186EE29\r
+:1039E0000E944A1C882359F08091ED0183FB222715\r
+:1039F00020F991E0922790FB83F98093ED0183EE0B\r
+:103A00000E944A1C882359F08091ED0184FB2227F3\r
+:103A100020F991E0922790FB84F98093ED0185E3F2\r
+:103A20000E944A1C882359F08091ED0185FB2227D2\r
+:103A300020F991E0922790FB85F98093ED0181E3D5\r
+:103A40000E944A1C882359F08091ED0186FB2227B1\r
+:103A500020F991E0922790FB86F98093ED0181E1B6\r
+:103A60000E944A1C882359F08091ED0187FB222790\r
+:103A700020F991E0922790FB87F98093ED018091E6\r
+:103A8000ED010E94C01D8091ED0187FB882780F920\r
+:103A900080930D0187E20E944A1CC82F8EE10E948C\r
+:103AA0004A1C8111C2608FE10E944A1C8111C460CE\r
+:103AB00080E20E944A1C8111C86081E20E944A1C77\r
+:103AC0008111C06182E20E944A1C8111C06283E2BE\r
+:103AD0000E944A1C8111C06484E20E944A1C88230F\r
+:103AE00011F0C06802C0CC2329F08C2F0E94B71DB2\r
+:103AF0006C2F03C00E94B31D682F70E080E090E03F\r
+:103B0000CF910C947A18CF9108956DEE7EEF80E0FE\r
+:103B100090E00E94F12360E082E090E00E94DF23C9\r
+:103B200060E083E090E00E94DF2360E084E090E0CA\r
+:103B30000E94DF2360E085E090E00C94DF2380E0CA\r
+:103B400090E00E94D92321E08D3E9E4F09F020E0B5\r
+:103B5000822F089582E090E00C94D123682F82E0B8\r
+:103B600090E00C94DF2383E090E00C94D123682F45\r
+:103B700083E090E00C94DF2384E090E00C94D12368\r
+:103B8000682F84E090E00C94DF238091D50180FFC2\r
+:103B90000BC06091130185E0689FB00111247595F9\r
+:103BA0006795759567952BC081FF09C060911301DA\r
+:103BB00085E0689FB00111247595679520C082FF4C\r
+:103BC00007C06091130185E0689FB001112417C000\r
+:103BD0009091D6019923D1F060911201961788F740\r
+:103BE0002091130185E0289F90011124929FA0014C\r
+:103BF000939F500D112470E0CA010E94A3236038E6\r
+:103C0000710540F46115710539F002C065E070E09E\r
+:103C1000862F08958FE7089581E008958091D5015A\r
+:103C200080FF08C06091110170E0759567957595EA\r
+:103C3000679521C081FF06C06091110170E0759504\r
+:103C4000679519C082FF04C06091110170E010C037\r
+:103C50009091D6019923C1F0609110019617A0F7B9\r
+:103C600080911101899FC001112470E00E94A3235B\r
+:103C70006038710528F46115710521F0862F0895CB\r
+:103C80008FE7089581E0089561E070E0F4CF803F10\r
+:103C900021F40E94C51D819504C0813F29F40E9432\r
+:103CA000C51D8093D9010895823F21F40E94C51D4E\r
+:103CB000819504C0833F29F40E94C51D8093D801DB\r
+:103CC0000895893F19F40E940E1E05C08A3F31F401\r
+:103CD0000E940E1E81958093DA0108958B3F21F496\r
+:103CE0000E940E1E819504C08C3F29F40E940E1E76\r
+:103CF0008093DB010895843F21F48091D701816096\r
+:103D000017C0853F21F48091D701826011C0863FA2\r
+:103D100021F48091D70184600BC0873F21F480910A\r
+:103D2000D701886005C0883F31F48091D701806158\r
+:103D30008093D70108958D3F21F48091D501816052\r
+:103D40000BC08E3F21F48091D501826005C08F3F6A\r
+:103D500029F48091D50184608093D5010895803F36\r
+:103D600039F48091D90187FF6CC01092D90169C0E4\r
+:103D7000813F29F48091D9011816BCF362C090915B\r
+:103D8000D801823F29F497FF5CC01092D80159C036\r
+:103D9000833F19F41916CCF354C0893F41F4809144\r
+:103DA000DA0118160CF04DC01092DA014AC08A3FB1\r
+:103DB00029F48091DA0187FF44C0F6CF8B3F39F4B4\r
+:103DC0008091DB0187FF3DC01092DB013AC08C3F40\r
+:103DD00029F48091DB011816BCF333C0843F21F431\r
+:103DE0008091D7018E7F17C0853F21F48091D70144\r
+:103DF0008D7F11C0863F21F48091D7018B7F0BC04E\r
+:103E0000873F21F48091D701877F05C0883F31F437\r
+:103E10008091D7018F7E8093D70113C08D3F21F40D\r
+:103E20008091D5018E7F0BC08E3F21F48091D5010A\r
+:103E30008D7F05C08F3F29F48091D5018B7F8093C2\r
+:103E4000D5018091D80181110EC08091D9018111D5\r
+:103E50000AC08091DA01811106C08091DB018111D5\r
+:103E600002C01092D601089587ED91E00E94450F9F\r
+:103E70000E949B1B9093D4018093D30108951F93BC\r
+:103E8000CF93DF938091D3019091D4010E94A71B1F\r
+:103E9000AC019091D601992321F02091140130E0DA\r
+:103EA00006C0209115018AE0289F90011124421735\r
+:103EB000530708F486C08091D801C091D901D091F0\r
+:103EC000DA011091DB01811107C0C11176C0D11157\r
+:103ED00074C0111172C075C09F3F19F09F5F90931D\r
+:103EE000D601181624F40E94C51D8093D801809134\r
+:103EF000D80187FF05C00E94C51D81958093D80118\r
+:103F00001C1624F40E94C51D8093D9018091D9010B\r
+:103F100087FF05C00E94C51D81958093D9016091DE\r
+:103F2000D801662339F1C091D901CC2319F1772743\r
+:103F300067FD7095872F972F0E94B42223E333E308\r
+:103F400043E35FE30E9418230E9481226093D8011B\r
+:103F50006C2F772767FD7095872F972F0E94B422CB\r
+:103F600023E333E343E35FE30E9418230E948122AB\r
+:103F70006093D9011D1624F40E940E1E8093DA016D\r
+:103F80008091DA0187FF05C00E940E1E8195809303\r
+:103F9000DA01111624F40E940E1E8093DB01809139\r
+:103FA000DB0187FF05C00E940E1E81958093DB0117\r
+:103FB000DF91CF911F910C94341F9F3F09F08ECF5A\r
+:103FC00096CFDF91CF911F910895E7EDF1E085E065\r
+:103FD000DF011D928A95E9F71092D6011092D50162\r
+:103FE0000895833081F128F4813059F08230D1F086\r
+:103FF0000895853009F449C0B8F1863009F456C0F7\r
+:10400000089580911501262F30E0280F311D2F3F94\r
+:10401000310524F4680F6093150108958FEF8093A4\r
+:104020001501089580911401262F30E0280F311DCD\r
+:104030002F3F310524F4680F6093140108958FEF2A\r
+:1040400080931401089580911301262F30E0280FEA\r
+:10405000311D2F3F310524F4680F6093130108953B\r
+:104060008FEF80931301089580911201262F30E085\r
+:10407000280F311D2F3F310524F4680F6093120182\r
+:1040800008958FEF80931201089580911101262FDA\r
+:1040900030E0280F311D2F3F310524F4680F609365\r
+:1040A000110108958FEF80931101089580911001FF\r
+:1040B000262F30E0280F311D2F3F310524F4680FE3\r
+:1040C0006093100108958FEF80931001089583305D\r
+:1040D00011F128F4813049F0823091F00895853053\r
+:1040E00081F120F18630C1F10895809115016817A2\r
+:1040F00020F4861B809315010895109215010895F0\r
+:1041000080911401681720F4861B80931401089590\r
+:1041100010921401089580911301681720F4861BF2\r
+:104120008093130108951092130108958091120154\r
+:10413000681720F4861B80931201089510921201D3\r
+:10414000089580911101681720F4861B8093110156\r
+:10415000089510921101089580911001681720F4BC\r
+:10416000861B8093100108951092100108950F93FB\r
+:104170001F938D3109F46BC008F03FC08E3009F4F5\r
+:104180007FC0C0F4873009F469C068F4863009F054\r
+:10419000B1C08091CD01817F8E7F8093CD0181E080\r
+:1041A0008093DD01A8C0883009F4A2C08B3009F4E7\r
+:1041B0009FC0A0C0863109F49BC078F4803109F417\r
+:1041C00072C0813109F096C00E94BE1490910D0119\r
+:1041D00081E0892780930D018BC0893109F488C063\r
+:1041E0008B3109F087C08091CD0181FB222720F916\r
+:1041F00091E0922790FB81F94CC0853309F470C09F\r
+:1042000048F4873209F46CC008F459C0893209F4C3\r
+:1042100067C070C0833438F48A3308F04EC08833E6\r
+:1042200009F466C067C0833409F45AC0883409F0C1\r
+:1042300061C00E94BE140FEF13ED20E30150104047\r
+:104240002040E1F700C000000E94F61B51C00E9410\r
+:104250003B220E942E0F0E9427084AC09091CD0158\r
+:10426000892F8095817080FB90F929F09660986085\r
+:104270009093CD0140C0997F977F9093CD0138C036\r
+:104280008091CD0182FB222720F991E0922790FBBB\r
+:1042900082F98093CD01992359F18091CD018160FC\r
+:1042A0008093CD0125C08091CD0183FB222720F989\r
+:1042B00091E0922790FB83F9ECCF895301C08D5197\r
+:1042C00041E050E060E070E08A019B0104C0000F13\r
+:1042D000111F221F331F8A95D2F7C901B80104C0EC\r
+:1042E00061E070E080E090E00E947A180E94BE14C5\r
+:1042F00081E001C080E01F910F91089580E0089552\r
+:1043000080E00895CF93C82F8091DD01813079F04E\r
+:1043100018F08230E9F187C0E0910E01F0910F01B1\r
+:104320008081813169F0823209F07FC009C0E0915B\r
+:104330000E01F0910F018081813111F0823261F420\r
+:104340008C2F0E947E21811104C08C2F0E94B720E7\r
+:104350001DC081E090E01AC08C2F0E948021811145\r
+:1043600014C0C43179F048F4CB3079F0C03109F091\r
+:1043700060C082E08093DD0108C0C93219F0C83303\r
+:1043800021F057C01092DD0154C081E0817053C00C\r
+:10439000C93289F118F5C43171F1A8F4C73009F0B8\r
+:1043A00046C08AE08093150194E19093140193E054\r
+:1043B000909313018093120188E08093110188E2A9\r
+:1043C0008093100134C0CE51C63088F5EC2FF0E058\r
+:1043D000E65DFE4F80818093DC0129C0CE34E9F098\r
+:1043E00020F4CB3421F56AE013C0C13579F0C23531\r
+:1043F000F1F461E00DC08091DC01882319F0109286\r
+:10440000DC0115C081E08093DD0115C061E006C0CC\r
+:104410008091DC010E94F11F0AC06AE08091DC01FA\r
+:104420000E94672004C01092DD0180E004C081E09A\r
+:1044300002C080E0ABCFCF910895E1E8F0E0808149\r
+:10444000886080838081816080838FB7F89493E057\r
+:104450009093890090ED909388008FBF0895EFE6C8\r
+:10446000F0E08081826080830895EFE6F0E0808153\r
+:104470008D7F80830895EFE6F0E0908182E08927C8\r
+:10448000808308951F920F920FB60F9211242F93DD\r
+:104490003F934F935F936F937F938F939F93AF93CC\r
+:1044A000BF93EF93FF938091DE019091DF0101961E\r
+:1044B0009093DF018093DE01811103C082E00E94AE\r
+:1044C0002708E091DF01E695E695F0E0E456FB4F22\r
+:1044D000E4918091DE018E1303C080E00E942708E2\r
+:1044E000FF91EF91BF91AF919F918F917F916F91CC\r
+:1044F0005F914F913F912F910F900FBE0F901F90A2\r
+:10450000189504D06894B1118DC0089570D088F0CA\r
+:104510009F5790F0B92F9927B751A0F0D1F0660FAF\r
+:10452000771F881F991F1AF0BA95C9F712C0B130CA\r
+:1045300081F077D0B1E0089574C0672F782F882775\r
+:10454000B85F39F0B93FCCF3869577956795B39509\r
+:10455000D9F73EF490958095709561957F4F8F4F78\r
+:104560009F4F0895E89409C097FB3EF4909580957D\r
+:10457000709561957F4F8F4F9F4F9923A9F0F92F29\r
+:1045800096E9BB279395F695879577956795B795A7\r
+:10459000F111F8CFFAF4BB0F11F460FF1BC06F5F8D\r
+:1045A0007F4F8F4F9F4F16C0882311F096E911C09F\r
+:1045B000772321F09EE8872F762F05C0662371F0C0\r
+:1045C00096E8862F70E060E02AF09A95660F771FD4\r
+:1045D000881FDAF7880F9695879597F9089557FD04\r
+:1045E0009058440F551F59F05F3F71F04795880F61\r
+:1045F00097FB991F61F09F3F79F0879508951216F8\r
+:1046000013061406551FF2CF4695F1DF08C01616A3\r
+:1046100017061806991FF1CF869571056105089454\r
+:104620000895E894BB2766277727CB0197F908956B\r
+:104630000BD078C069D028F06ED018F0952309F01F\r
+:104640005AC05FC01124EECFCADFA0F3959FD1F30B\r
+:10465000950F50E0551F629FF001729FBB27F00D30\r
+:10466000B11D639FAA27F00DB11DAA1F649F662785\r
+:10467000B00DA11D661F829F2227B00DA11D621FD4\r
+:10468000739FB00DA11D621F839FA00D611D221F8E\r
+:10469000749F3327A00D611D231F849F600D211D72\r
+:1046A000822F762F6A2F11249F5750408AF0E1F015\r
+:1046B00088234AF0EE0FFF1FBB1F661F771F881F5E\r
+:1046C00091505040A9F79E3F510570F014C0AACFF9\r
+:1046D0005F3FECF3983EDCF3869577956795B79549\r
+:1046E000F795E7959F5FC1F7FE2B880F911D969573\r
+:1046F000879597F9089597F99F6780E870E060E0E3\r
+:1047000008959FEF80EC089500240A94161617066A\r
+:1047100018060906089500240A94121613061406B2\r
+:1047200005060895092E0394000C11F4882352F015\r
+:10473000BB0F40F4BF2B11F460FF04C06F5F7F4FCD\r
+:104740008F4F9F4F089597FB072E16F4009407D0C4\r
+:1047500077FD09D00E94BD2307FC05D03EF490955B\r
+:1047600081959F4F0895709561957F4F0895EE0F45\r
+:10477000FF1F0590F491E02D0994AA1BBB1B51E18A\r
+:1047800007C0AA1FBB1FA617B70710F0A61BB70BC1\r
+:10479000881F991F5A95A9F780959095BC01CD0166\r
+:1047A0000895F999FECF92BD81BDF89A992780B5F9\r
+:1047B0000895A8E1B0E042E050E00C94F923262FE0\r
+:1047C000F999FECF92BD81BDF89A019700B4021607\r
+:1047D00039F01FBA20BD0FB6F894FA9AF99A0FBEB5\r
+:1047E00008950196272F0E94E0230C94DF23DC011B\r
+:1047F000CB01FC01F999FECF06C0F2BDE1BDF89AEC\r
+:10480000319600B40D9241505040B8F70895F89495\r
+:02481000FFCFD8\r
+:1048120020022908B708940860082C080101BA018F\r
+:1048220028080A03140A3F4D36395D041004DA03DE\r
+:10483200A10334034D0366037F030102030405064B\r
+:04484200070809005A\r
+:00000001FF\r
--- /dev/null
+# ErgoDox EZ Plums Configuration
+
+## Changelog
+
+* Apr 23, 2016 (v0.1.0):
+ * Shortcut for iTerm2 quake style dropdown (Ctrl+`)
+ * Shortcut for screen/tmux (Ctrl+a)
+ * Shortcut for shush (Hyper+m)
+ * Combo modifier for LGUI + LALT
+
+![Plums](plums.png)
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = KEYMAP(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5,
+ KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT,
+ //
+ /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ /*-*/ KC_NO, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS,
+ /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT,
+ /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_MPLY, KC_MNXT,
+ KC_MPRV,
+ KC_RALT, KC_QUOT, KC_SPC
+ )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+};
--- /dev/null
+# Roman's Layout
+
+There is only one layer based on [Norman layout](https://normanlayout.info/).
+
+Looking for multiple-layer layouts?
+
+- [Symbols, arrows, plover, HJKL arrows](../romanzolotarev-norman-plover-osx-hjkl/)
+- [Same with IJKL arrows](../romanzolotarev-norman-plover-osx/)
+
+[![keyboard-layout](romanzolotarev-norman-osx.png)](http://www.keyboard-layout-editor.com/#/gists/9e89d54f1ea6eeeb7dab1b2d19d28195)
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+
+## CTRL/ESC
+
+CTRL and ESC are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- Hold left `SHIFT` and right `SHIRT` and then tap `N`.
--- /dev/null
+:100000000C94BB010C94FF010C94FF010C94FF01B4\r
+:100010000C94FF010C94FF010C94FF010C94FF0160\r
+:100020000C94FF010C94FF010C94E20A0C94B40BA5\r
+:100030000C94FF010C94FF010C94FF010C94FF0140\r
+:100040000C94FF010C9432200C94FF010C94FF01DE\r
+:100050000C94FF010C94BD190C94FF010C94FF014A\r
+:100060000C94FF010C94FF010C94FF010C94FF0110\r
+:100070000C94FF010C94FF010C94FF010C94FF0100\r
+:100080000C94FF010C94FF010C94FF010C94FF01F0\r
+:100090000C94FF010C94FF010C94FF010C94FF01E0\r
+:1000A0000C94FF010C94FF010C94FF01210C430CF4\r
+:1000B000310D430C310D880CAB0C310D000D130DBF\r
+:1000C000FF0FFF0F3C103C107F10BD10D612D61250\r
+:1000D000D610D612D711D711AA12D612D612C11223\r
+:1000E00035002B002971E1003A0000001E001400C9\r
+:1000F00004001D003B00E2001F001A0016001B0058\r
+:100100003C00297120000700080006003D002A007D\r
+:100110002100090017001900E300A90022000E00C9\r
+:100120000A0005000000AA003E00310000002F0078\r
+:100130000000A8003F000000000030000000AE00FA\r
+:1001400023000D001C0013000000AB002400180069\r
+:1001500011001000E700AC00250015000C0036006F\r
+:1001600050002C0026000F00120037005100340010\r
+:10017000270033000B0038005200E6002E002D004F\r
+:100180002800E5004F0000001603450072006700DC\r
+:100190006F0044006F007800200045005A00000006\r
+:1001A00016034500720067006F0044006F0078007E\r
+:1001B000200045005A0000000403090409026D00F4\r
+:1001C000040100A0FA090400000103010100092153\r
+:1001D00011010001223F000705810308000A0904FC\r
+:1001E00001000103010200092111010001224D005B\r
+:1001F0000705820308000A09040200010300000049\r
+:100200000921110100012236000705830308000AB5\r
+:10021000090403000103000000092111010001226B\r
+:1002200039000705840310000112011001000000CD\r
+:1002300008EDFE071301000102000105010906A1F6\r
+:1002400001050719E029E7150025019508750181C9\r
+:100250000205081901290595057501910295017599\r
+:100260000391010507190029771500250195787577\r
+:10027000018102C005010980A10185021601002645\r
+:10028000B7001A01002AB700751095018100C0055A\r
+:100290000C0901A1018503160100269C021A010028\r
+:1002A0002A9C02751095018100C005010902A10177\r
+:1002B0000901A10005091901290515002501950568\r
+:1002C000750181029501750381010501093009312C\r
+:1002D0001581257F95027508810609381581257FCE\r
+:1002E000950175088106050C0A38021581257F9550\r
+:1002F0000175088106C0C005010906A1010507199D\r
+:10030000E029E71500250195087501810295017521\r
+:1003100008810105081901290595057501910295C6\r
+:1003200001750391010507190029FF150025FF95A7\r
+:100330000675088100C000000000000000000000F9\r
+:1003400000010204060A0F17202C3A4A5D71879DAE\r
+:10035000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AD\r
+:100360005D4A3A2C20170F0A060402010000000023\r
+:1003700000000000000011241FBECFEFDAE0DEBF56\r
+:10038000CDBF04B603FE24C08091EF019091F0012F\r
+:10039000A091F101B091F2018730904BA740B04B92\r
+:1003A000B9F41092EF011092F0011092F101109245\r
+:1003B000F20114BE84B7877F84BF88E10FB6F8943A\r
+:1003C00080936000109260000FBEE0E0FFE30995AB\r
+:1003D00011E0A0E0B1E0E8EEF3E402C005900D9278\r
+:1003E000A433B107D9F711E0A4E3B1E001C01D9235\r
+:1003F000AF3EB107E1F70E9426080C94F2210C945D\r
+:100400000000089556985E9825982D9826982E9865\r
+:1004100027982F98089508950C940B0256985E988B\r
+:1004200025982D9826982E9827982F988FEF90E052\r
+:10043000909389008093880090938B0080938A002A\r
+:1004400090938D0080938C00259A2D9A2FEF80E752\r
+:1004500092E0215080409040E1F700C00000269AD1\r
+:100460002E9A2FEF80E792E0215080409040E1F7F4\r
+:1004700000C00000279A2F9A2FEF80E792E02150CA\r
+:1004800080409040E1F700C0000025982D982FEFA4\r
+:1004900080E792E0215080409040E1F700C00000EA\r
+:1004A00026982E982FEF80E792E0215080409040D0\r
+:1004B000E1F700C0000027982F9856985E9825987D\r
+:1004C0002D9826982E9827982F98089589EA80933A\r
+:1004D000800089E08093810024982C983F988AB10D\r
+:1004E0008F748AB96E98479A8BB1806B8BB9769A64\r
+:1004F0000E940E020C94020280E28093000180911F\r
+:10050000340181110EC00E94CB0281E0809334013E\r
+:100510002FEF83ED90E3215080409040E1F700C041\r
+:10052000000080E40E94D1028093000181112EC05E\r
+:100530000E94FB0280930001811128C00E94FB02EF\r
+:1005400080930001811122C08FE30E94FB028093FF\r
+:10055000000181111BC00E94F30280E40E94D102BD\r
+:1005600080930001811112C08CE00E94FB028093F5\r
+:10057000000181110BC00E94FB02809300018111D8\r
+:1005800005C08FE30E94FB02809300010E94F302EA\r
+:100590008091000108951092B9008AE08093B8001C\r
+:1005A000089594EA9093BC009091BC0097FFFCCF13\r
+:1005B0009091B900987F983021F0903111F081E04E\r
+:1005C00008958093BB0084E88093BC008091BC00B8\r
+:1005D00087FFFCCF8091B900887F883111F080348B\r
+:1005E00071F780E0089584E98093BC008091BC009D\r
+:1005F00084FDFCCF08958093BB0084E88093BC0009\r
+:100600008091BC0087FFFCCF9091B900987F81E07A\r
+:10061000983209F480E0089584E88093BC008091CA\r
+:10062000BC0087FFFCCF8091BB0008958091000142\r
+:10063000811115C080E40E94D102809300018111D4\r
+:100640000CC082E10E94FB0280930001811105C071\r
+:100650008FEF0E94FB02809300010E94F30284B19D\r
+:10066000807F84B985B1807F85B98AB1837F8AB95B\r
+:100670008BB1837F8BB93E98469808950E947C0287\r
+:10068000809300010E94160380B38C7080BB81B3FD\r
+:10069000836F81BBA6E3B1E0E4E4F1E08EE08E0F6E\r
+:1006A00011921D928E13FCCF0C946602BF92CF92D2\r
+:1006B000DF92EF92FF920F931F93CF93DF9380917E\r
+:1006C0000001882379F0809135018F5F8093350197\r
+:1006D000811108C00E947C0280930001811102C038\r
+:1006E0000E940E0206E311E0C0E0D0E0DD24D394C6\r
+:1006F00082E0C82EEE24E394F12CC730D10500F53A\r
+:1007000080910001811164C080E40E94D102809335\r
+:100710000001811112C082E10E94FB02809300015E\r
+:1007200081110BC0C7010C2E01C0880F0A94EAF793\r
+:1007300080950E94FB02809300010E94F30248C052\r
+:10074000CA30A1F028F4C83059F0C93061F005C0B2\r
+:10075000CC3089F070F0CD3089F0209A289810C004\r
+:10076000219A29980DC0229A2A980AC0239A2B9878\r
+:1007700007C0529A01C0539A5B9802C03E9A4698AD\r
+:1007800090EA9A95F1F79FB1799902C082E001C091\r
+:1007900080E091709D25982B7C9902C084E001C077\r
+:1007A00080E0892B7D9902C038E001C030E0832BC6\r
+:1007B0007E9902C020E101C020E0822B9FB190957C\r
+:1007C000991F9927991F9295990F907E892B0FC099\r
+:1007D00080910001811149C080E40E94D102809380\r
+:1007E0000001882379F1B12C0E94F3028B2DF801CE\r
+:1007F0009081981719F08083C09201010E9416031E\r
+:1008000021960F5F1F4FCE30D10509F076CF809132\r
+:100810000101882361F1815080930101882339F01F\r
+:100820008FE99FE00197F1F700C0000020C0A4E429\r
+:10083000B1E0E6E3F1E0CF01825F91919D938E13E9\r
+:10084000FCCF15C083E10E94FB028093000181115F\r
+:10085000CACF81E40E94D102809300018111C3CFED\r
+:100860000E940C03B82EB094BFCF80E0C0CF0E948E\r
+:100870000C0281E0DF91CF911F910F91FF90EF90DB\r
+:10088000DF90CF90BF900895E82FF0E0EC5BFE4F33\r
+:100890008081089508958B3B910578F4883A9105FD\r
+:1008A00040F5853A9105D0F48430910508F0B1C047\r
+:1008B0008130910509F4ADC06BC0803E910508F40C\r
+:1008C00067C0883E910508F4A4C09C01205F3109EF\r
+:1008D0002031310508F05CC090650895853A910596\r
+:1008E00009F459C0863A910509F058C082E890E4AD\r
+:1008F0000895883A910509F454C0893A910509F49C\r
+:1009000053C08A3A910509F452C08B3A910509F413\r
+:1009100051C08C3A910509F450C08D3A910509F403\r
+:100920004FC0803B910509F44EC08E3A910509F401\r
+:100930004DC08F3A910509F44CC0813B910509F4F3\r
+:100940004BC0823B910509F44AC0833B910509F4F1\r
+:1009500049C0843B910509F448C0853B910509F4E1\r
+:1009600047C0863B910509F446C0873B910509F4D1\r
+:1009700045C0883B910509F444C0893B910509F4C1\r
+:1009800043C08A3B910509F442C080E094E4089595\r
+:1009900080E090E0089581E890E4089583E890E491\r
+:1009A000089582EE94E4089589EE94E408958AEE21\r
+:1009B00094E4089585EB94E4089586EB94E4089517\r
+:1009C00087EB94E408958CEC94E408958DEC94E422\r
+:1009D000089583E895E408958AE895E4089582E906\r
+:1009E00095E4089584E995E4089581E296E40895F4\r
+:1009F00083E296E4089584E296E4089585E296E41D\r
+:100A0000089586E296E4089587E296E408958AE2DE\r
+:100A100096E40895089596E0799FF001112494E5F5\r
+:100A2000899FE00DF11D1124E60FF11DEE0FFF1F50\r
+:100A3000E052FF4F859194910895880F991FFC0112\r
+:100A4000E05AF040859194910895880F991FFC0118\r
+:100A5000E052FF4F85919491089526E0729FF00136\r
+:100A6000112444E5849FE00DF11D1124E60FF11DD2\r
+:100A7000EE0FFF1FE052FF4F859194919C013A9534\r
+:100A800021154FE1340708F41CC13F5121153041B5\r
+:100A900020F49F700E94250508959C013053211574\r
+:100AA000304118F49927906C0895811520E592073C\r
+:100AB00071F40E94FA124FEF84E39CE041508040B1\r
+:100AC0009040E1F700C000000E94E219FAC08130B6\r
+:100AD00020E5920731F48091CD0181608093CD01B2\r
+:100AE000F0C09C0130552115304108F051C0292F2C\r
+:100AF00033272F70332721303105D9F4AC014370EF\r
+:100B0000552702C0220F331F4A95E2F73C68AC011B\r
+:100B100064E0440F551F6A95E1F744275370242B76\r
+:100B2000352B73E0880F991F7A95E1F78076992726\r
+:100B30001DC02230310529F4982F8827816F906AD3\r
+:100B4000089523303105A9F4AC014370552721E005\r
+:100B500030E002C0220F331F4A95E2F73C6843E0C1\r
+:100B6000880F991F4A95E1F7807E9770822B932B0F\r
+:100B7000089524303105E1F4AC014370552721E09C\r
+:100B800030E002C0220F331F4A95E2F73A68E7CF00\r
+:100B90009C0130572115304118F49F7090620895E0\r
+:100BA0009C0130582115304118F49F70906A0895C7\r
+:100BB000803E9105E0F4803C910558F58133910524\r
+:100BC00009F46FC048F48932910509F463C08A3290\r
+:100BD000910509F46DC072C089339105E9F082383E\r
+:100BE0009105D1F08533910509F44DC067C0833E6E\r
+:100BF000910581F138F4803E9105B9F0823E91056E\r
+:100C0000D9F05CC0863E910561F1873E9105A1F166\r
+:100C100055C00E941D0508952091E00120FD02C0ED\r
+:100C200021FF4CC080EE90E049C08091E00180FF40\r
+:100C3000F9CF89E390E042C08091E00182FF0EC0CD\r
+:100C40008091E00184FF03C080E090E037C083EE34\r
+:100C500090E034C08091E00182FFF2CF82EE90E01C\r
+:100C60002DC08091E00183FF0BC08091E00184FDE5\r
+:100C7000EBCF87EE90E022C08091E00183FFF5CFBB\r
+:100C800086EE90E01BC08091E00185FF07C089E2FD\r
+:100C900090E014C08091E00185FFF9CF85E390E0FA\r
+:100CA0000DC08091E00186FF07C08AE290E006C097\r
+:100CB0008091E00186FFF9CF81E390E00E944B0430\r
+:100CC0000895089508950C94620680916201089534\r
+:100CD000CF93DF9300D01F92CDB7DEB79C018091F8\r
+:100CE000E601843019F593E099833B832A8390933E\r
+:100CF000E9008FEF9091E800815095FD06C095EDD9\r
+:100D00009A95F1F700008111F5CF8091E80085FFF9\r
+:100D10000DC040E050E063E070E0CE0101960E941B\r
+:100D2000D2088091E8008E778093E8000F900F90B2\r
+:100D30000F90DF91CF910895CF93DF9300D01F9252\r
+:100D4000CDB7DEB72091E601243021F522E02983DA\r
+:100D50009B838A8383E08093E9008FEF9091E80082\r
+:100D6000815095FD06C095ED9A95F1F7000081112F\r
+:100D7000F5CF8091E80085FF0DC040E050E063E0D2\r
+:100D800070E0CE0101960E94D2088091E8008E7733\r
+:100D90008093E8000F900F900F90DF91CF9108950E\r
+:100DA0002091E6012430F1F422E02093E9002FEFB6\r
+:100DB0003091E800215035FD06C035ED3A95F1F748\r
+:100DC00000002111F5CF2091E80025FF0BC040E085\r
+:100DD00050E065E070E00E94D2088091E8008E77D4\r
+:100DE0008093E8000895CF93DF93EC019091E601A2\r
+:100DF000943009F046C080910C018823D9F080918D\r
+:100E00000D018823B9F09093E9008FEF9091E800ED\r
+:100E1000815095FD06C095E19A95F1F7000081118A\r
+:100E2000F5CF8091E80085FF2CC040E050E060E104\r
+:100E300070E017C081E08093E9008FEF9091E800A7\r
+:100E4000815095FD06C095ED9A95F1F7000081114E\r
+:100E5000F5CF8091E80085FF14C040E050E068E0E5\r
+:100E600070E0CE010E94D2088091E8008E778093D6\r
+:100E7000E80080E1FE01A2E5B1E001900D928A95C3\r
+:100E8000E1F7DF91CF9108958091E501811109C0CB\r
+:100E90000E94670A0E94C40A8091E20084608093E5\r
+:100EA000E20008951092E501089508950C941F2022\r
+:100EB0000E9478190E9425200E946A0D0C946306F6\r
+:100EC00042E061EC81E00E94E10942E061EC82E0F5\r
+:100ED0000E94E10942E061EC83E00E94E10942E105\r
+:100EE00061EC84E00C94E1098091E801833009F41D\r
+:100EF00055C030F4813071F0823009F48EC008950D\r
+:100F00008A3009F47AC08B3009F460C0893009F066\r
+:100F10009CC020C08091E701813A09F096C0809181\r
+:100F2000E800877F8093E8008091EB019091EC01CD\r
+:100F3000892B21F460E182E591E003C060E080E06C\r
+:100F400090E070E00E941D098091E8008B7780930B\r
+:100F5000E80008958091E701813209F076C0809120\r
+:100F6000EB019091EC01009719F0039709F06DC027\r
+:100F70008091E800877F8093E8008091E80082FDFF\r
+:100F800005C08091E6018111F8CF5FC08091F1002A\r
+:100F9000809362018091E8008B7753C08091E701D4\r
+:100FA000813A09F052C08091EB019091EC01892BBC\r
+:100FB00009F04BC08091E800877F8093E800809122\r
+:100FC000E80080FFFCCF80910C0136C08091E701E2\r
+:100FD0008132D9F58091EB019091EC01892BA9F533\r
+:100FE0008091E800877F8093E8000E94160A809134\r
+:100FF000E90180930C010C94FA128091E70181328F\r
+:1010000021F58091E800877F8093E8000E94160A0E\r
+:101010008091EA018093630108958091E701813A0C\r
+:10102000A1F48091E800877F8093E8008091E80038\r
+:1010300080FFFCCF809163018093F1008091E800F4\r
+:101040008E778093E8000C94160A089584B7877F02\r
+:1010500084BF88E10FB6F89480936000109260001E\r
+:101060000FBE90E080E80FB6F894809361009093F3\r
+:1010700061000FBE0E94B90D0E94670A0E94C40A57\r
+:101080008091E20084608093E20078940E944A0D8F\r
+:101090000E94BB0D82E091E00E94650D0E940D2030\r
+:1010A0008091E601853069F40E9439198091E4014C\r
+:1010B0008823B1F30E946419882391F30E94BC082D\r
+:1010C000EFCF0E94C10DECCF292F332723303105FC\r
+:1010D000C9F064F42130310581F02230310509F086\r
+:1010E00043C08DE690E02CEB31E042C02132310567\r
+:1010F000F1F02232310541F137C082E190E029E27E\r
+:1011000032E036C099278130910541F08230910557\r
+:1011100041F0892B49F5E8EBF1E005C0E0EAF1E0A8\r
+:1011200002C0E8E8F1E0849190E09F0121C06430C2\r
+:10113000D8F4E62FF0E0EE0FFF1FEE5DFE4F2081AA\r
+:10114000318189E090E014C0643070F470E0FB01FC\r
+:10115000EE0FFF1FE65EFE4F20813181FB01EA5E4C\r
+:10116000FE4F808190E004C080E090E020E030E01D\r
+:10117000FA0131832083089580E189BD82E189BD30\r
+:1011800009B400FEFDCF8091D8008F7D8093D800F8\r
+:101190008091E00082608093E0008091E00081FD1A\r
+:1011A000FCCF0895CF92DF92EF92FF920F931F939F\r
+:1011B000CF93DF93EC018B016A010E94350A811104\r
+:1011C00033C0C114D10439F0F60180819181081B2C\r
+:1011D000190BC80FD91FE12CF12C0115110519F1BC\r
+:1011E0008091E80085FD16C08091E8008E7780939D\r
+:1011F000E800C114D10449F0F60180819181E80E24\r
+:10120000F91EF182E08285E00FC00E94350A882332\r
+:1012100021F30AC089918093F10001501109FFEF79\r
+:10122000EF1AFF0ADACF80E0DF91CF911F910F9183\r
+:10123000FF90EF90DF90CF9008952091ED013091D5\r
+:10124000EE012617370748F06115710539F4209132\r
+:10125000E8002E772093E80001C0B90140E0611555\r
+:101260007105A9F12091E601222309F443C025303C\r
+:1012700009F442C02091E80023FD40C02091E8001D\r
+:1012800022FD32C02091E80020FFE9CF4091F30019\r
+:101290002091F20030E0342BFC01CF016115710583\r
+:1012A00059F02830310540F481918093F10061506C\r
+:1012B00071092F5F3F4FF1CF41E02830310509F030\r
+:1012C00040E02091E8002E772093E800C8CF41113C\r
+:1012D000C9CF0AC08091E601882361F0853061F0B2\r
+:1012E0008091E80083FD0AC08091E80082FFF2CF80\r
+:1012F00080E0089582E0089583E0089581E00895F4\r
+:101300002091ED013091EE012617370748F0611565\r
+:10131000710539F42091E8002E772093E80001C090\r
+:10132000B901FC0120E06115710591F18091E601A0\r
+:10133000882309F440C0853009F43FC08091E8005B\r
+:1013400083FD3DC08091E80082FD2FC08091E800C0\r
+:1013500080FFE9CF2091F3008091F20090E0922B82\r
+:101360006115710559F08830910540F4249120935E\r
+:10137000F1003196615071090196F2CF21E0089792\r
+:1013800009F020E08091E8008E778093E800CBCFD1\r
+:101390002111CCCF0AC08091E601882361F085300D\r
+:1013A00061F08091E80083FD0AC08091E80082FF2F\r
+:1013B000F2CF80E0089582E0089583E0089581E00F\r
+:1013C0000895982F973058F59093E900981739F0C1\r
+:1013D0007091EC002091ED005091F00003C0242F9B\r
+:1013E000762F50E021FF19C03091EB003E7F309303\r
+:1013F000EB003091ED003D7F3093ED003091EB003C\r
+:1014000031603093EB007093EC002093ED0050932B\r
+:10141000F0002091EE0027FF07C09F5FD3CF8F70B1\r
+:101420008093E90081E0089580E008958091E701CC\r
+:1014300087FF11C08091E80082FD05C08091E60120\r
+:101440008111F8CF11C08091E8008B770BC080919B\r
+:10145000E601882349F08091E80080FFF8CF809171\r
+:10146000E8008E778093E80008952091E4003091A1\r
+:10147000E50095E64091EC00842F817040FF22C08A\r
+:101480008091E80080FD1CC08091E601882391F0E6\r
+:10149000853091F08091EB0085FD10C04091E40013\r
+:1014A0005091E5004217530729F39A01915011F723\r
+:1014B00084E0089582E0089583E0089581E008952E\r
+:1014C00080E008954091E80042FFDECF08950E9439\r
+:1014D000D50A0E94DD0AE0EEF0E080818160808321\r
+:1014E000E8EDF0E080818F77808319BCA7EDB0E054\r
+:1014F0008C918E7F8C9380818F7E80831092E5010A\r
+:1015000008950F931F93CF93DF930E94D50A0E94F3\r
+:10151000DD0AC8EDD0E088818F7788838881806874\r
+:10152000888388818F7D888319BC1092E601109290\r
+:10153000E2011092E4011092E30100EE10E0F801E4\r
+:1015400080818B7F808388818160888342E060E036\r
+:1015500080E00E94E109E1EEF0E080818E7F8083EF\r
+:10156000E2EEF0E08081816080838081886080830A\r
+:10157000F80180818E7F8083888180618883DF91FC\r
+:10158000CF911F910F910895E8EDF0E080818F7E5B\r
+:101590008083E7EDF0E080818160808384E082BF1A\r
+:1015A00081E08093E5010C94810AE8EDF0E0808110\r
+:1015B0008E7F80831092E20008951092DA001092DC\r
+:1015C000E10008951F920F920FB60F9211242F93EE\r
+:1015D0003F934F935F936F937F938F939F93AF93BB\r
+:1015E000BF93EF93FF938091E10082FF0BC0809146\r
+:1015F000E20082FF07C08091E1008B7F8093E100D1\r
+:101600000E94490D8091DA0080FF1FC08091D800B0\r
+:1016100080FF1BC08091DA008E7F8093DA0080917A\r
+:10162000D90080FF0DC080E189BD82E189BD09B488\r
+:1016300000FEFDCF81E08093E6010E94440705C0D3\r
+:1016400019BC1092E6010E9452078091E10080FFD0\r
+:1016500019C08091E20080FF15C08091E2008E7F6A\r
+:101660008093E2008091E20080618093E2008091AB\r
+:10167000D80080628093D80019BC85E08093E60191\r
+:101680000E9456078091E10084FF30C08091E20003\r
+:1016900084FF2CC080E189BD82E189BD09B400FED0\r
+:1016A000FDCF8091D8008F7D8093D8008091E1009C\r
+:1016B0008F7E8093E1008091E2008F7E8093E20034\r
+:1016C0008091E20081608093E2008091E2018823B2\r
+:1016D00011F084E007C08091E30087FD02C081E043\r
+:1016E00001C083E08093E6010E9458078091E100E9\r
+:1016F00083FF29C08091E20083FF25C08091E10033\r
+:10170000877F8093E10082E08093E6011092E201FE\r
+:101710008091E1008E7F8093E1008091E2008E7FD6\r
+:101720008093E2008091E20080618093E20042E0D9\r
+:1017300060E080E00E94E1098091F0008860809381\r
+:10174000F0000E945507FF91EF91BF91AF919F91DB\r
+:101750008F917F916F915F914F913F912F910F905A\r
+:101760000FBE0F901F9018951F920F920FB60F92F9\r
+:1017700011242F933F934F935F936F937F938F9396\r
+:101780009F93AF93BF93CF93DF93EF93FF93C0915A\r
+:10179000E900CF708091EC00D82FD17080FDD0E8A7\r
+:1017A0001092E9008091F000877F8093F000789498\r
+:1017B0000E94F80B1092E9008091F00088608093FD\r
+:1017C000F000CD2BCF70C093E900FF91EF91DF9136\r
+:1017D000CF91BF91AF919F918F917F916F915F91C9\r
+:1017E0004F913F912F910F900FBE0F901F90189522\r
+:1017F0001F93CF93DF93CDB7DEB7AA970FB6F894B8\r
+:10180000DEBF0FBECDBFE7EEF1E088E08E0F909116\r
+:10181000F10091938E13FBCF0E9474078091E80032\r
+:1018200083FF1FC18091E7019091E801492F50E0AB\r
+:101830004A30510508F015C1FA01EA5AFF4F0C94DD\r
+:10184000A721803881F0823809F00BC18091EB012B\r
+:101850008F708093E9008091EB0085FB882780F9E9\r
+:101860001092E90006C08091E3019091E40191118A\r
+:1018700082609091E800977F9093E8008093F10058\r
+:101880001092F100C8C0282F2D7F09F0EAC08823EC\r
+:1018900019F0823061F0E5C08091E901813009F0F2\r
+:1018A000E0C0933009F080E08093E4012BC0809188\r
+:1018B000E901811127C08091EB018F7009F4D1C03B\r
+:1018C0008093E9002091EB0020FF1CC0933021F4AD\r
+:1018D0008091EB00806214C09091EB009061909336\r
+:1018E000EB0021E030E0A90102C0440F551F8A95AA\r
+:1018F000E2F74093EA001092EA008091EB008860E2\r
+:101900008093EB001092E9008091E800877F86C009\r
+:101910008111A7C01091E9011F778091E3008078C1\r
+:10192000812B8093E3008091E800877F8093E8001B\r
+:101930000E94160A8091E80080FFFCCF8091E300AE\r
+:1019400080688093E300111102C082E001C083E04F\r
+:101950008093E60186C08058823008F082C0809172\r
+:10196000E9019091EA018C3D53E0950779F583E018\r
+:101970008A838AE289834FB7F894DE01139620E0C8\r
+:101980003EE051E2E32FF0E050935700E49120FF56\r
+:1019900003C0E295EF703F5FEF708E2F90E0EA306A\r
+:1019A00010F0C79601C0C0968D939D932F5F243190\r
+:1019B00049F74FBF8091E800877F8093E8006AE293\r
+:1019C00070E0CE0101960E941D0914C0AE014F5F68\r
+:1019D0005F4F6091EB010E946408BC01892B09F400\r
+:1019E00040C09091E800977F9093E80089819A81A8\r
+:1019F0000E9480098091E8008B778093E80031C0D5\r
+:101A0000803879F58091E800877F8093E8008091A5\r
+:101A1000E2018093F1008091E8008E778093E800E6\r
+:101A20000E94160A1EC081111CC09091E9019230DB\r
+:101A3000C0F48091E800877F8093E8009093E201F2\r
+:101A40000E94160A8091E201811106C08091E30094\r
+:101A500087FD02C081E001C084E08093E6010E941E\r
+:101A600060078091E80083FF0AC08091E800877FCB\r
+:101A70008093E8008091EB0080628093EB00AA964F\r
+:101A80000FB6F894DEBF0FBECDBFDF91CF911F918F\r
+:101A900008950895CF938091E6018823A1F0C09125\r
+:101AA000E900CF709091EC00892F817090FD80E863\r
+:101AB000C82B1092E9008091E80083FD0E94F80B8A\r
+:101AC000CF70C093E900CF910895909369018093FE\r
+:101AD00068010895E0916801F0916901309721F063\r
+:101AE0000190F081E02D099480E00895E091680173\r
+:101AF000F0916901309721F00280F381E02D099483\r
+:101B00000895E0916801F0916901309721F0048017\r
+:101B1000F581E02D099408952091660130916701C7\r
+:101B20008217930771F09093670180936601E091AB\r
+:101B30006801F0916901309721F00680F781E02D6E\r
+:101B400009940895209164013091650182179307EB\r
+:101B500071F09093650180936401E0916801F091C8\r
+:101B60006901309721F00084F185E02D09940895F2\r
+:101B700008950C94B80D0E947E190E943E030C94A7\r
+:101B8000441ACF92DF92EF92FF920F931F93CF935D\r
+:101B9000DF93CDB7DEB72B970FB6F894DEBF0FBE3D\r
+:101BA000CDBF0E9456038BE6C82E81E0D82E00E000\r
+:101BB00010E0E02E802F0E944404F60141916F0155\r
+:101BC000F42EF826B1F40F5F1F4F0E30110589F780\r
+:101BD0008FEF89838A831B820E9487198160782F07\r
+:101BE0009D838C8349815A816B818D810E94640E13\r
+:101BF00040C09091CD0191FF04C08B870E944A04A0\r
+:101C00008B8520E030E04F2D50E0922FBA01022E5C\r
+:101C100002C0759567950A94E2F760FF24C02E8391\r
+:101C2000EF8221E030E0690102C0CC0CDD1C9A9506\r
+:101C3000E2F790E08C219D21892B09F420E0288790\r
+:101C40000E9487198160782F9A8789874E815F81EA\r
+:101C500068858A850E94640EF801E559FE4F8081EF\r
+:101C6000C826C08206C02F5F3F4F2630310569F677\r
+:101C7000AACF0E942B1D10916A010E946A0D1817AD\r
+:101C8000A1F00E946A0D80936A012B960FB6F8941A\r
+:101C9000DEBF0FBECDBFDF91CF911F910F91FF909F\r
+:101CA000EF90DF90CF900C9463062B960FB6F894CC\r
+:101CB000DEBF0FBECDBFDF91CF911F910F91FF907F\r
+:101CC000EF90DF90CF900895CF93DF93CDB7DEB73D\r
+:101CD0002B970FB6F894DEBF0FBECDBF4F8358874A\r
+:101CE00069877A878B87DE01119686E0FD01119264\r
+:101CF0008A95E9F785E0FE01379601900D928A9565\r
+:101D0000E1F749815A816B817C818D819E810E949E\r
+:101D100094152B960FB6F894DEBF0FBECDBFDF91A2\r
+:101D2000CF9108950895CF93882309F4C2C0C82F96\r
+:101D3000823859F40E946A0D81FDBBC089E30E947C\r
+:101D40003D180E940A1989E30CC0833879F40E9477\r
+:101D50006A0D80FDAEC083E50E943D180E940A19FD\r
+:101D600083E50E947F18CF910C940A19843859F4A6\r
+:101D70000E946A0D82FD9DC087E40E943D180E946A\r
+:101D80000A1987E4EECF8CEF8C0F813A48F48C2F40\r
+:101D90000E94721F81118DC08C2F0E943D18E3CFCD\r
+:101DA00080E28C0F883048F4C77081E001C0880F52\r
+:101DB000CA95EAF70E94C318D6CF8BE58C0F833003\r
+:101DC00078F4C53A29F0C63A31F083E890E005C0CE\r
+:101DD00081E890E002C082E890E0CF910C948C0DF5\r
+:101DE00088E58C0F833108F064C0C83A39F1C93AEC\r
+:101DF00041F1CA3A49F1CB3A51F1CC3A59F1CD3AD5\r
+:101E000061F1C03B69F1CE3A71F1CF3A79F1C13B52\r
+:101E100081F1C23B89F1C33B91F1C43B99F1C53BD0\r
+:101E2000A1F1C63BA9F1C73BB1F1C83BB9F1C93B30\r
+:101E3000C1F1CA3BC9F180E090E038C082EE90E089\r
+:101E400035C089EE90E032C08AEE90E02FC085EB7D\r
+:101E500090E02CC086EB90E029C087EB90E026C094\r
+:101E60008CEC90E023C08DEC90E020C083E891E002\r
+:101E70001DC08AE891E01AC082E991E017C084E9A8\r
+:101E800091E014C081E292E011C083E292E00EC0C2\r
+:101E900084E292E00BC085E292E008C086E292E024\r
+:101EA00005C087E292E002C08AE292E0CF910C94F2\r
+:101EB000A20DCF910895882309F44BC0823859F4BC\r
+:101EC0000E946A0D81FF45C089E30E943D180E946F\r
+:101ED0000A1989E30CC0833871F40E946A0D80FFEF\r
+:101EE00038C083E50E943D180E940A1983E50E94CC\r
+:101EF0007F180C940A19843859F40E946A0D82FFE5\r
+:101F000028C087E40E943D180E940A1987E4EFCF99\r
+:101F10009CEF980F913A58F390E2980F983050F454\r
+:101F2000877091E001C0990F8A95EAF7892F0E9486\r
+:101F3000C918DFCF9BE5980F933020F480E090E044\r
+:101F40000C948C0D885A833120F480E090E00C943E\r
+:101F5000A20D0895882321F00E94C3180C940A1939\r
+:101F60000895882321F00E94C9180C940A19089535\r
+:101F7000BF92CF92DF92EF92FF920F931F93CF9376\r
+:101F8000DF9300D000D000D0CDB7DEB725E0FC0154\r
+:101F9000DE01119601900D922A95E1F7FC01D080A7\r
+:101FA00011810281258122952F7043815481452B17\r
+:101FB00009F4FCC21F3F21F4FFEFDF1609F4F6C25B\r
+:101FC0007C012E830E94920ED9821A8369817A81C4\r
+:101FD000802F0E943918182FB92E0E94EE170E94E8\r
+:101FE000B5162E81002319F00E94E0182E81EB2DEA\r
+:101FF000E295EF70F0E0E05AFF4F0C94A7218B2D93\r
+:10200000807F9B2D9F70F92E882319F0F29480EF2A\r
+:10201000F822002389F0FF2009F475C280E2810FC5\r
+:10202000883020F48F2D0E94C31803C08F2D0E948A\r
+:10203000D3180E940A1967C2812F0E945B0FFF20EC\r
+:1020400009F4B4C2105E8F2D183018F40E94C9181C\r
+:1020500002C00E94D91826960FB6F894DEBF0FBEB4\r
+:10206000CDBFDF91CF911F910F91FF90EF90DF9047\r
+:10207000CF90BF900C940A193B2D307F8B2D8F7021\r
+:10208000303211F08295807F112319F0113021F147\r
+:102090002CC00023B9F0222309F4A0C1213009F09B\r
+:1020A0009DC126960FB6F894DEBF0FBECDBFDF915F\r
+:1020B000CF911F910F91FF90EF90DF90CF90BF9045\r
+:1020C0000C94F318222319F0213009F46FC28E8387\r
+:1020D0000E94F6188E8196C1002321F0223008F06C\r
+:1020E00065C27CC1211162C28DC1002321F022236F\r
+:1020F00009F474C108C2222309F484C119C22B2D2A\r
+:1021000026952695237030E02115310521F02130E8\r
+:102110003105D1F04BC2002321F0812F9B2D93700C\r
+:1021200002C080E090E026960FB6F894DEBF0FBEA6\r
+:10213000CDBFDF91CF911F910F91FF90EF90DF9076\r
+:10214000CF90BF900C948C0D002321F0812F9B2DFC\r
+:10215000937002C080E090E026960FB6F894DEBF40\r
+:102160000FBECDBFDF91CF911F910F91FF90EF90E8\r
+:10217000DF90CF90BF900C94A20D812F002319F017\r
+:102180000E94331C02C00E949B1C26960FB6F89436\r
+:10219000DEBF0FBECDBFDF91CF911F910F91FF909A\r
+:1021A000EF90DF90CF90BF900C94201D8B2D83700B\r
+:1021B00009F07BC00111FAC1812F82958695877045\r
+:1021C000880F880F912F9F70C92ED12CE12CF12CF4\r
+:1021D000082E04C0CC0CDD1CEE1CFF1C0A94D2F7A8\r
+:1021E00014FF12C04FE050E060E070E004C0440F04\r
+:1021F000551F661F771F8A95D2F7CB01BA016095EC\r
+:1022000070958095909503C060E070E0CB012B2D18\r
+:10221000269526952370422F50E042305105D9F083\r
+:102220004330510569F16C297D298E299F29413060\r
+:10223000510551F126960FB6F894DEBF0FBECDBF03\r
+:10224000DF91CF911F910F91FF90EF90DF90CF9092\r
+:10225000BF900C94DC166C297D298E299F29269627\r
+:102260000FB6F894DEBF0FBECDBFDF91CF911F91A7\r
+:102270000F91FF90EF90DF90CF90BF900C94F816E5\r
+:102280000E94DC16C701B60126960FB6F894DEBF91\r
+:102290000FBECDBFDF91CF911F910F91FF90EF90B7\r
+:1022A000DF90CF90BF900C94C016002319F08B2DB7\r
+:1022B000817001C08695882309F478C1812F8295A9\r
+:1022C00086958770880F880F912F9F70C92ED12C0B\r
+:1022D000E12CF12C082E04C0CC0CDD1CEE1CFF1CE4\r
+:1022E0000A94D2F714FF12C04FE050E060E070E0B3\r
+:1022F00004C0440F551F661F771F8A95D2F7CB0184\r
+:10230000BA01609570958095909503C060E070E08B\r
+:10231000CB012B2D269526952370422F50E042307D\r
+:102320005105D9F04330510569F16C297D298E2979\r
+:102330009F294130510551F126960FB6F894DEBF22\r
+:102340000FBECDBFDF91CF911F910F91FF90EF9006\r
+:10235000DF90CF90BF900C94B6176C297D298E2901\r
+:102360009F2926960FB6F894DEBF0FBECDBFDF9132\r
+:10237000CF911F910F91FF90EF90DF90CF90BF9082\r
+:102380000C94D2170E94B617C701B60126960FB655\r
+:10239000F894DEBF0FBECDBFDF91CF911F910F919B\r
+:1023A000FF90EF90DF90CF90BF900C949A17103F62\r
+:1023B000D1F118F4103E50F4A1C0123F09F463C0EB\r
+:1023C00008F44CC0133F09F473C098C01F708B2DE4\r
+:1023D0008F710023A1F00E943317812F26960FB62C\r
+:1023E000F894DEBF0FBECDBFDF91CF911F910F914B\r
+:1023F000FF90EF90DF90CF90BF900C94AA0F0E94B7\r
+:102400005417812F26960FB6F894DEBF0FBECDBFAE\r
+:10241000DF91CF911F910F91FF90EF90DF90CF90C0\r
+:10242000BF900C94B10F0023A9F02111BFC08B2DD8\r
+:102430008F7126960FB6F894DEBF0FBECDBFDF9129\r
+:10244000CF911F910F91FF90EF90DF90CF90BF90B1\r
+:102450000C947917223008F0A9C0E9CF0023A9F025\r
+:102460008B2D8F7126960FB6F894DEBF0FBECDBFB1\r
+:10247000DF91CF911F910F91FF90EF90DF90CF9060\r
+:10248000BF900C943317002359F38B2D8F71269630\r
+:102490000FB6F894DEBF0FBECDBFDF91CF911F9175\r
+:1024A0000F91FF90EF90DF90CF90BF900C94541756\r
+:1024B000002399F08B2D8F7126960FB6F894DEBF0E\r
+:1024C0000FBECDBFDF91CF911F910F91FF90EF9085\r
+:1024D000DF90CF90BF900C941E1726960FB6F894FD\r
+:1024E000DEBF0FBECDBFDF91CF911F910F91FF9047\r
+:1024F000EF90DF90CF90BF900C9414170023A9F0B9\r
+:10250000222309F4ADCF812F26960FB6F894DEBFB3\r
+:102510000FBECDBFDF91CF911F910F91FF90EF9034\r
+:10252000DF90CF90BF900C94930E222309F4ADCF8F\r
+:10253000812F26960FB6F894DEBF0FBECDBFDF9178\r
+:10254000CF911F910F91FF90EF90DF90CF90BF90B0\r
+:102550000C945B0F4B2D4F70612FC7010E9401023D\r
+:1025600026960FB6F894DEBF0FBECDBFDF91CF9198\r
+:102570001F910F91FF90EF90DF90CF90BF900C9440\r
+:1025800038164B2D4F70612FC70126960FB6F89461\r
+:10259000DEBF0FBECDBFDF91CF911F910F91FF9096\r
+:1025A000EF90DF90CF90BF900C940A0526960FB65F\r
+:1025B000F894DEBF0FBECDBFDF91CF911F910F9179\r
+:1025C000FF90EF90DF90CF90BF9008950E94E018A9\r
+:1025D0000E94F0180E94B5180E940A190E94D11D8D\r
+:1025E0000E94201D80E090E00E948C0D80E090E031\r
+:1025F0000C94A20D0E94D0180C94E6120E942E1882\r
+:10260000292F22952F7030E02C3031054CF42A30E0\r
+:1026100031056CF4225031092230310588F407C0AD\r
+:102620002C30310549F02F30310531F009C0803EA2\r
+:1026300048F0803F29F406C093FB882780F908956D\r
+:1026400080E0089581E00895CF93DF9300D000D01B\r
+:102650001F92CDB7DEB70F900F900F900F900F9095\r
+:10266000DF91CF910895CF93DF9300D000D000D0B9\r
+:10267000CDB7DEB726960FB6F894DEBF0FBECDBF3E\r
+:10268000DF91CF9108951F93CF93DF93C09179018C\r
+:1026900016E080917A01C81799F0D0E01C9FF001F4\r
+:1026A0001D9FF00D1124E558FE4F4081518162813C\r
+:1026B0007381848195810E9433132196C770E9CF7D\r
+:1026C000DF91CF911F9108954091AB015091AC01E2\r
+:1026D0006091AD017091AE018091AF019091B00118\r
+:1026E0000C9433138091B00182958F7009F054C01F\r
+:1026F0008091AD01882309F44FC080917901A091A8\r
+:102700007A016091AB017091AC014091AE015091A2\r
+:10271000AF01B6E08A1709F43FC090E041155105BA\r
+:10272000C1F17F3F11F46F3FA1F1B89FF001B99F54\r
+:10273000F00D1124E558FE4F218172132AC020812B\r
+:10274000621327C02281211124C0238134812417E0\r
+:10275000350710F421503109241B350B283C310575\r
+:10276000C0F42091B0012F7020612093B00126E0C9\r
+:10277000289FF001299FF00D1124E058FE4F808121\r
+:102780008F70806180838BEA91E00E94B80F0C9477\r
+:10279000431301968770BECF0895CF92DF92EF92D8\r
+:1027A000FF920F931F93CF93DF93CDB7DEB762975E\r
+:1027B0000FB6F894DEBF0FBECDBF8C0185E0F801E7\r
+:1027C000DE011D9601900D928A95E1F7D8014C919A\r
+:1027D00011965C91119712966C9112971396CD9069\r
+:1027E000DC9014973091AB017091AC018091AE01F7\r
+:1027F0009091AF01009709F46BC17F3F19F43F3FFF\r
+:1028000009F466C1E090AD01EE2009F4C0C020914A\r
+:10281000B001C816D90628F0F601E81BF90BCF0164\r
+:1028200004C0809590958C0D9D1DFF24F394883CE9\r
+:10283000910578F0F12C207F09F0C6C07C2DD98A53\r
+:10284000C88A89890E9424138BEA91E00E94B80FFC\r
+:10285000B1C0822F807F09F046C0751314C03413B5\r
+:1028600012C0611110C02F7020612093B0010E942E\r
+:1028700064138BEA91E00E94B80F8091B001D801F7\r
+:1028800015968C932EC0CD2819F15F3F11F44F3F60\r
+:10289000F9F0F62E61111CC08091790120917A0126\r
+:1028A00036E0821709F45AC090E0389FF001399F52\r
+:1028B000F00D1124E558FE4F7181571306C0708149\r
+:1028C000471303C07281711103C001968770E9CF6D\r
+:1028D000F62E662309F418C18091B00181608093BF\r
+:1028E000B001F12C11C1751308C0341306C0611179\r
+:1028F00004C08091B001D801C3C04D875E878D852B\r
+:102900009E856A8B0E94FE126A898823E1F1662304\r
+:10291000D1F12091B001822F82958F7090E00297C3\r
+:1029200074F08091AB019091AC0198878F831986E8\r
+:10293000DB86CA862C87CE0107960E94B80F86E0F8\r
+:10294000F801ABEAB1E001900D928A95E1F70E949F\r
+:1029500072130E946413FF24F394D6C04D875E87E0\r
+:102960008D859E850E942E18292F22952F7030E08C\r
+:10297000223031050CF0BCC09F7009F0B6C0805EFB\r
+:10298000883008F4C1C0C8010E94B80FE4CFC8164F\r
+:10299000D90608F453C0F601E81BF90BCF01883CB7\r
+:1029A000910508F450C0F12C7C2DD98AC88A8989F8\r
+:1029B0000E942413EBEAF1E086E0DF011D928A9584\r
+:1029C000E9F70E946413A0C0751314C0341312C039\r
+:1029D000611110C08091B001F8018583C8010E9487\r
+:1029E000B80F86E0EBEAF1E0DF011D928A95E9F786\r
+:1029F000FE2C8AC04D875E878D859E856A8B0E94DE\r
+:102A0000FE126A89882309F4BECF662309F4BBCF7E\r
+:102A10002091B001822F82958F7090E002970CF484\r
+:102A20008ECF8091AB019091AC019A8389831B82F8\r
+:102A3000DD82CC822E83CE0101967FCF809590954A\r
+:102A40008C0D9D1DACCFF62E662309F49CCF75131B\r
+:102A50002EC034132CC02091B00120FD1FC0822F46\r
+:102A600082958F70D9F0D80115962C9315978F30D9\r
+:102A700049F08F5F982F9295907F822F8F70892BCE\r
+:102A800015968C93C8010E94B80F86E0F801ABEA56\r
+:102A9000B1E001900D928A95E1F793CF86E0F801BD\r
+:102AA000ABEAB1E001900D928A95E1F72DC04D8718\r
+:102AB0005E878D859E850E94FE12811140CF809198\r
+:102AC000B00181608093B001C8010E94B80F1CC0A2\r
+:102AD000662309F458CF4D875E878D859E850E94B9\r
+:102AE000FE12882309F44FCF2ACF811148CF0CC0A2\r
+:102AF000243031050CF047CF9F7009F440CFF80126\r
+:102B00009581907F09F03BCF8F2D62960FB6F89498\r
+:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010\r
+:102B2000EF90DF90CF9008951F93CF93DF93CDB7B1\r
+:102B3000DEB72C970FB6F894DEBF0FBECDBF4F8324\r
+:102B4000588769877A878B879C87CE0107960E9472\r
+:102B5000CD13882369F08F8198852A853B85232BA7\r
+:102B6000F1F19F3F09F063C08F3F09F060C037C0AB\r
+:102B700086E0FE013796DE01119601900D928A954E\r
+:102B8000E1F76F817885EA85FB85309741F17F3FDA\r
+:102B900011F46F3F21F120917A0130E0C9010196D3\r
+:102BA000877099274091790150E08417950709F4BF\r
+:102BB00047C069837A83FD83EC8396E0929FD001BE\r
+:102BC000939FB00D1124A558BE4FFE013196019080\r
+:102BD0000D929A95E1F780937A010E94431316E0D3\r
+:102BE0008091790190917A018917C1F1189FC001F4\r
+:102BF000112485589E4F0E94CD13882379F1E091CE\r
+:102C000079011E9FF0011124E558FE4F408151814A\r
+:102C100062817381848195810E943313809179014F\r
+:102C200090E001968770992780937901D9CF4F81E1\r
+:102C3000588569857A858B859C850E943313CFCF13\r
+:102C40000E94FA1210927A0110927901EBEAF1E0F7\r
+:102C500086E0DF011D928A95E9F7C1CF2C960FB669\r
+:102C6000F894DEBF0FBECDBFDF91CF911F910895C5\r
+:102C7000EF92FF920F931F93CF93DF938C01892BD9\r
+:102C800009F46CC0F12CEE24E394E8012196F801DC\r
+:102C90008491843740F4843008F051C0813081F051\r
+:102CA000823019F15BC0853709F444C0A8F19CE774\r
+:102CB000980F903708F052C08F770E945B0F41C089\r
+:102CC0000E5F1F4FFE01C49180E28C0F883048F4E4\r
+:102CD000C7708E2D01C0880FCA95EAF70E94E318CD\r
+:102CE00014C08C2F0E94930E2DC00E5F1F4FFE014B\r
+:102CF000C49180E28C0F883058F4C7708E2D01C0CB\r
+:102D0000880FCA95EAF70E94E9180E940A191AC0AA\r
+:102D10008C2F0E945B0F16C00E5F1F4FFE01C491E7\r
+:102D2000CC2381F08FE99FE00197F1F700C000000C\r
+:102D3000C150F6CF0E5F1F4FFE01F49003C00E94FA\r
+:102D4000930E8E018F2D882309F49FCFEFE9FFE0CA\r
+:102D50003197F1F700C000008150F5CFDF91CF919E\r
+:102D60001F910F91FF90EF90089508956093B50122\r
+:102D70007093B6018093B7019093B8010C94E6125A\r
+:102D80000F931F930091B5011091B6012091B701E7\r
+:102D90003091B801DC01CB01802B912BA22BB32BFE\r
+:102DA0008093B5019093B601A093B701B093B80199\r
+:102DB0001F910F910C94E6120F931F930091B50190\r
+:102DC0001091B6012091B7013091B801DC01CB011F\r
+:102DD00080239123A223B3238093B5019093B6015E\r
+:102DE000A093B701B093B8011F910F910C94E61214\r
+:102DF0000F931F930091B5011091B6012091B70177\r
+:102E00003091B801DC01CB0180279127A227B3279D\r
+:102E10008093B5019093B601A093B701B093B80128\r
+:102E20001F910F910C94E6121092B1011092B20111\r
+:102E30001092B3011092B4010C94E61241E050E0FC\r
+:102E400060E070E004C0440F551F661F771F8A952D\r
+:102E5000D2F74093B1015093B2016093B3017093E4\r
+:102E6000B4010C94E61241E050E060E070E004C070\r
+:102E7000440F551F661F771F8A95D2F78091B101C5\r
+:102E80009091B201A091B301B091B401482B592B9C\r
+:102E90006A2B7B2B4093B1015093B2016093B30135\r
+:102EA0007093B4010C94E61241E050E060E070E0F1\r
+:102EB00004C0440F551F661F771F8A95D2F74095AF\r
+:102EC0005095609570958091B1019091B201A0915B\r
+:102ED000B301B091B401482359236A237B23409363\r
+:102EE000B1015093B2016093B3017093B4010C949B\r
+:102EF000E61241E050E060E070E004C0440F551F6E\r
+:102F0000661F771F8A95D2F78091B1019091B20127\r
+:102F1000A091B301B091B401482759276A277B27B4\r
+:102F20004093B1015093B2016093B3017093B40127\r
+:102F30000C94E6120F931F930091B1011091B2010E\r
+:102F40002091B3013091B401DC01CB01802B912B96\r
+:102F5000A22BB32B8093B1019093B201A093B30144\r
+:102F6000B093B4011F910F910C94E6120F931F932D\r
+:102F70000091B1011091B2012091B3013091B401DF\r
+:102F8000DC01CB0180239123A223B3238093B101E1\r
+:102F90009093B201A093B301B093B4011F910F912C\r
+:102FA0000C94E6120F931F930091B1011091B2019E\r
+:102FB0002091B3013091B401DC01CB01802791272E\r
+:102FC000A227B3278093B1019093B201A093B301DC\r
+:102FD000B093B4011F910F910C94E6120895CF9213\r
+:102FE000DF92EF92FF920F931F93CF93DF938C01A9\r
+:102FF000C090B501D090B601E090B701F090B80153\r
+:103000008091B1019091B201A091B301B091B4014E\r
+:10301000C82AD92AEA2AFB2ACFE1D0E0D701C60183\r
+:103020000C2E04C0B695A795979587950A94D2F76C\r
+:1030300080FF06C0B8018C2F0E942D05019721F456\r
+:10304000219760F780E001C08C2FDF91CF911F9115\r
+:103050000F91FF90EF90DF90CF900895CF93DF9383\r
+:10306000EC010E94EF17BE010E942D05DF91CF9168\r
+:103070000895CB010E942E18089590910C01992378\r
+:1030800021F090910D01911109C020910E01309114\r
+:103090000F01F90132969FEF40E01FC0982F9695DF\r
+:1030A000969596959F3050F5E0910E01F0910F01A5\r
+:1030B000E90FF11D877021E030E0A90102C0440F43\r
+:1030C000551F8A95E2F7CA019181892B8183089562\r
+:1030D0009F3F39F04F5F4E3041F051915813F8CF78\r
+:1030E0000DC05111F7CF942FF5CF9F3F39F0F90163\r
+:1030F000E90FF11D97FDFA95828308950895909147\r
+:103100000C01992321F090910D01911109C020919A\r
+:103110000E0130910F01F9013296205F3F4F1FC021\r
+:10312000982F9695969596959F30F0F4E0910E0124\r
+:10313000F0910F01E90FF11D877021E030E0A90146\r
+:1031400002C0440F551F8A95E2F7CA01809591810C\r
+:103150008923818308953196E217F30729F090813E\r
+:103160009813F9CF1082F7CF089581E090E0E091B5\r
+:103170000E01F0910F01E80FF91F108201968031C6\r
+:103180009105A9F708959091CC01892B8093CC01EA\r
+:10319000089580959091CC0189238093CC01089566\r
+:1031A0001092CC0108959091CB01892B8093CB0193\r
+:1031B000089580959091CB0189238093CB01089548\r
+:1031C0001092CB0108959091CA01892B8093CA0176\r
+:1031D000089580959091CA0189238093CA0108952A\r
+:1031E0001092CA0108958093B90108951092B9010F\r
+:1031F000089580910E0190910F01FC0131969C0180\r
+:10320000205F3F4F80E0919191118F5FE217F307AC\r
+:10321000D1F70895E0910E01F0910F018091CC015A\r
+:103220008083E0910E01F0910F0190818091CB019C\r
+:10323000892B8083E0910E01F0910F0190818091A4\r
+:10324000CA01892B80838091B901882361F0E091C4\r
+:103250000E01F0910F019081892B80830E94F91853\r
+:1032600081111092B90180910E0190910F010C947F\r
+:10327000760D8091E601843021F11092CE0120E498\r
+:1032800088E190E00FB6F894A895809360000FBE97\r
+:103290002093600080E00E94630683B7817F846092\r
+:1032A00083BF83B7816083BF7894889583B78E7F0F\r
+:1032B00083BF88E10FB6F89480936000109260009D\r
+:1032C0000FBE089508950895CF930E9462190E9439\r
+:1032D00056030E946319C0E08C2F0E9444048111A0\r
+:1032E00004C0CF5FCE30C1F701C081E0CF91089517\r
+:1032F0000E94FA120E946A0D0C94630682E084BD5B\r
+:1033000093E095BD9AEF97BD80936E0008952FB717\r
+:10331000F8948091CF019091D001A091D101B0910A\r
+:10332000D2012FBF0895CF92DF92EF92FF920F93B9\r
+:103330001F932FB7F8944091CF015091D001609125\r
+:10334000D1017091D2012FBF6A017B01EE24FF24CD\r
+:103350008C0120E030E0C016D106E206F30610F43E\r
+:10336000415051099A01281B390BC9011F910F9136\r
+:10337000FF90EF90DF90CF9008951F920F920FB6BD\r
+:103380000F9211248F939F93AF93BF938091CF019E\r
+:103390009091D001A091D101B091D2010196A11DCF\r
+:1033A000B11D8093CF019093D001A093D101B09330\r
+:1033B000D201BF91AF919F918F910F900FBE0F904F\r
+:1033C0001F9018950E94670AF8942FEF87EA91E6FC\r
+:1033D000215080409040E1F700C0000087E090EB72\r
+:1033E000DC018093EF019093F001A093F101B09381\r
+:1033F000F2019CE088E10FB6F894A89580936000F4\r
+:103400000FBE90936000FFCFEF92FF920F931F9338\r
+:10341000CF93DF93D82FC0E08C2F0E94440400E0AC\r
+:1034200010E0E82EF12CC701002E02C0959587957B\r
+:103430000A94E2F780FD06C00F5F1F4F06301105AA\r
+:1034400091F709C0602F7C2F80E00E940B05D813F4\r
+:10345000F3CF81E004C0CF5FCE30F1F680E0DF91A2\r
+:10346000CF911F910F91FF90EF900895CF93C82FA8\r
+:103470008CE20E94041A882321F08C2FCF910C94A7\r
+:10348000041A80E0CF910895CF930E948B1B811185\r
+:1034900002C00E94711BC5E6C15049F00E9456034C\r
+:1034A0008FE39CE90197F1F700C00000F5CF89E2B6\r
+:1034B0000E94361A811113C18AE20E94361A8111C4\r
+:1034C0000E94711B85E00E94361A81110E94E21948\r
+:1034D0000E94961B8093CD0187E00E94361A8823B4\r
+:1034E000A9F18BE10E94361A882351F08091CD0119\r
+:1034F00081FB222720F991E0922790FB81F90EC0F1\r
+:103500008EE00E94361A882361F08091CD0182FB03\r
+:10351000222720F991E0922790FB82F98093CD0138\r
+:1035200015C080E10E94361A9091CD01882341F0A8\r
+:1035300093FB222720F981E0822780FB93F904C0C6\r
+:10354000892F809580FB90F99093CD018091CD01DA\r
+:103550000E949A1B0E94A81B8093E00180EE0E94AB\r
+:10356000361A882341F08091E001982F909590FBC6\r
+:1035700080F98093E00189E30E94361A882359F08C\r
+:103580008091E00181FB222720F991E0922790FBB6\r
+:1035900081F98093E00182EE0E94361A882359F067\r
+:1035A0008091E00182FB222720F991E0922790FB95\r
+:1035B00082F98093E00186EE0E94361A882359F042\r
+:1035C0008091E00183FB222720F991E0922790FB74\r
+:1035D00083F98093E00183EE0E94361A882359F024\r
+:1035E0008091E00184FB222720F991E0922790FB53\r
+:1035F00084F98093E00185E30E94361A882359F00C\r
+:103600008091E00185FB222720F991E0922790FB31\r
+:1036100085F98093E00181E30E94361A882359F0EE\r
+:103620008091E00186FB222720F991E0922790FB10\r
+:1036300086F98093E00181E10E94361A882359F0CF\r
+:103640008091E00187FB222720F991E0922790FBEF\r
+:1036500087F98093E0018091E0010E94AC1B80918A\r
+:10366000E00187FB882780F980930D0187E20E94A3\r
+:10367000361AC82F8EE10E94361A8111C2608FE17E\r
+:103680000E94361A8111C46080E20E94361A8111AC\r
+:10369000C86081E20E94361A8111C06182E20E94F4\r
+:1036A000361A8111C06283E20E94361A8111C06409\r
+:1036B00084E20E94361A882311F0C06802C0CC232D\r
+:1036C00029F08C2F0E94A31B6C2F03C00E949F1B0C\r
+:1036D000682F70E080E090E0CF910C94B616CF9107\r
+:1036E00008956DEE7EEF80E090E00E94DD2160E0C5\r
+:1036F00082E090E00E94CF2160E083E090E00E94B1\r
+:10370000CF2160E084E090E00E94CF2160E085E07E\r
+:1037100090E00C94CF2180E090E00E94C92121E04C\r
+:103720008D3E9E4F09F020E0822F089582E090E0C8\r
+:103730000C94C121682F82E090E00C94CF2183E0AB\r
+:1037400090E00C94C121682F83E090E00C94CF218D\r
+:1037500084E090E00C94C121682F84E090E00C9408\r
+:10376000CF218091D50180FF0BC06091130185E0CE\r
+:10377000689FB001112475956795759567952BC065\r
+:1037800081FF09C06091130185E0689FB001112499\r
+:103790007595679520C082FF07C06091130185E091\r
+:1037A000689FB001112417C09091D6019923D1F0E0\r
+:1037B00060911201961788F72091130185E0289FE8\r
+:1037C00090011124929FA001939F500D112470E04D\r
+:1037D000CA010E9493216038710540F4611571059A\r
+:1037E00039F002C065E070E0862F08958FE70895F4\r
+:1037F00081E008958091D50180FF08C0609111019A\r
+:1038000070E0759567957595679521C081FF06C035\r
+:103810006091110170E07595679519C082FF04C031\r
+:103820006091110170E010C09091D6019923C1F010\r
+:10383000609110019617A0F780911101899FC00136\r
+:10384000112470E00E9493216038710528F46115FD\r
+:10385000710521F0862F08958FE7089581E008957E\r
+:1038600061E070E0F4CF803F21F40E94B11B8195AC\r
+:1038700004C0813F29F40E94B11B8093D9010895AF\r
+:10388000823F21F40E94B11B819504C0833F29F43B\r
+:103890000E94B11B8093D8010895893F19F40E94BA\r
+:1038A000FA1B05C08A3F31F40E94FA1B8195809370\r
+:1038B000DA0108958B3F21F40E94FA1B819504C020\r
+:1038C0008C3F29F40E94FA1B8093DB010895843F0A\r
+:1038D00021F48091D701816017C0853F21F4809148\r
+:1038E000D701826011C0863F21F48091D7018460A6\r
+:1038F0000BC0873F21F48091D701886005C0883FC5\r
+:1039000031F48091D70180618093D70108958D3F74\r
+:1039100021F48091D50181600BC08E3F21F480910C\r
+:10392000D501826005C08F3F29F48091D501846064\r
+:103930008093D5010895803F39F48091D90187FFA4\r
+:103940006CC01092D90169C0813F29F48091D901DE\r
+:103950001816BCF362C09091D801823F29F497FFFA\r
+:103960005CC01092D80159C0833F19F41916CCF3EA\r
+:1039700054C0893F41F48091DA0118160CF04DC013\r
+:103980001092DA014AC08A3F29F48091DA0187FF58\r
+:1039900044C0F6CF8B3F39F48091DB0187FF3DC0F7\r
+:1039A0001092DB013AC08C3F29F48091DB0118169C\r
+:1039B000BCF333C0843F21F48091D7018E7F17C0C0\r
+:1039C000853F21F48091D7018D7F11C0863F21F47E\r
+:1039D0008091D7018B7F0BC0873F21F48091D70165\r
+:1039E000877F05C0883F31F48091D7018F7E809317\r
+:1039F000D70113C08D3F21F48091D5018E7F0BC07C\r
+:103A00008E3F21F48091D5018D7F05C08F3F29F431\r
+:103A10008091D5018B7F8093D5018091D801811150\r
+:103A20000EC08091D90181110AC08091DA01811103\r
+:103A300006C08091DB01811102C01092D601089569\r
+:103A400087ED91E00E94810D0E9487199093D40127\r
+:103A50008093D30108951F93CF93DF938091D30177\r
+:103A60009091D4010E949319AC019091D6019923B1\r
+:103A700021F02091140130E006C0209115018AE068\r
+:103A8000289F900111244217530708F486C08091A3\r
+:103A9000D801C091D901D091DA011091DB018111D7\r
+:103AA00007C0C11176C0D11174C0111172C075C0A8\r
+:103AB0009F3F19F09F5F9093D601181624F40E943F\r
+:103AC000B11B8093D8018091D80187FF05C00E9467\r
+:103AD000B11B81958093D8011C1624F40E94B11B60\r
+:103AE0008093D9018091D90187FF05C00E94B11B45\r
+:103AF00081958093D9016091D801662339F1C091F5\r
+:103B0000D901CC2319F1772767FD7095872F972F5F\r
+:103B10000E94A42023E333E343E35FE30E940821F0\r
+:103B20000E9471206093D8016C2F772767FD7095F4\r
+:103B3000872F972F0E94A42023E333E343E35FE31F\r
+:103B40000E9408210E9471206093D9011D1624F45F\r
+:103B50000E94FA1B8093DA018091DA0187FF05C089\r
+:103B60000E94FA1B81958093DA01111624F40E94B9\r
+:103B7000FA1B8093DB018091DB0187FF05C00E9467\r
+:103B8000FA1B81958093DB01DF91CF911F910C94FB\r
+:103B9000201D9F3F09F08ECF96CFDF91CF911F91CF\r
+:103BA0000895E7EDF1E085E0DF011D928A95E9F7E0\r
+:103BB0001092D6011092D5010895833081F128F436\r
+:103BC000813059F08230D1F00895853009F449C030\r
+:103BD000B8F1863009F456C0089580911501262F5A\r
+:103BE00030E0280F311D2F3F310524F4680F60931A\r
+:103BF000150108958FEF80931501089580911401A8\r
+:103C0000262F30E0280F311D2F3F310524F4680F97\r
+:103C10006093140108958FEF8093140108958091AB\r
+:103C20001301262F30E0280F311D2F3F310524F4DA\r
+:103C3000680F6093130108958FEF80931301089527\r
+:103C400080911201262F30E0280F311D2F3F3105C2\r
+:103C500024F4680F6093120108958FEF809312018E\r
+:103C6000089580911101262F30E0280F311D2F3F3C\r
+:103C7000310524F4680F6093110108958FEF80934C\r
+:103C80001101089580911001262F30E0280F311D79\r
+:103C90002F3F310524F4680F6093100108958FEFD2\r
+:103CA000809310010895833011F128F4813049F098\r
+:103CB000823091F00895853081F120F18630C1F194\r
+:103CC000089580911501681720F4861B80931501D3\r
+:103CD000089510921501089580911401681720F439\r
+:103CE000861B809314010895109214010895809109\r
+:103CF0001301681720F4861B809313010895109216\r
+:103D00001301089580911201681720F4861B809397\r
+:103D100012010895109212010895809111016817FF\r
+:103D200020F4861B809311010895109211010895CB\r
+:103D300080911001681720F4861B8093100108956C\r
+:103D40001092100108950F931F938D3109F46AC0EA\r
+:103D500008F03FC08E3009F484C0C0F4873009F405\r
+:103D60006DC068F4863009F0B5C08091CD01817FC7\r
+:103D70008E7F8093CD0181E08093DD01ACC08830DF\r
+:103D800009F457C08B3009F46AC0A4C0863109F425\r
+:103D900066C078F4803109F477C0813109F09AC0A7\r
+:103DA0000E94FA1290910D0181E0892780930D0104\r
+:103DB00056C0893109F453C08B3109F08BC0809112\r
+:103DC000CD0181FB222720F991E0922790FB81F918\r
+:103DD00051C0853309F475C048F4873209F471C0C5\r
+:103DE00008F45EC0893209F46CC074C0833430F4C6\r
+:103DF0008A3308F053C0883391F16CC0833409F4DE\r
+:103E000060C0883409F066C00E94FA120FEF13ED0B\r
+:103E100020E3015010402040E1F700C000000E9464\r
+:103E2000E2191DC00E942B200E946A0D0E946306A9\r
+:103E300016C00E94961B0E94A81B11C09091CD0134\r
+:103E4000892F8095817080FB90F929F096609860A9\r
+:103E50009093CD0140C0997F977F9093CD0181E0F1\r
+:103E60003AC08091CD0182FB222720F991E0922770\r
+:103E700090FB82F98093CD01992389F38091CD0144\r
+:103E800081608093CD01EBCF8091CD0183FB222710\r
+:103E900020F991E0922790FB83F9ECCF895301C080\r
+:103EA0008D5141E050E060E070E08A019B0104C068\r
+:103EB000000F111F221F331F8A95D2F7C901B801C5\r
+:103EC00004C061E070E080E090E00E94B6160E94BD\r
+:103ED000FA12C5CF80E01F910F91089580E00895F8\r
+:103EE00080E00895CF93C82F8091DD01813079F073\r
+:103EF00018F08230E9F187C0E0910E01F0910F01D6\r
+:103F00008081813169F0823209F07FC009C0E0917F\r
+:103F10000E01F0910F018081813111F0823261F444\r
+:103F20008C2F0E946E1F811104C08C2F0E94A31E33\r
+:103F30001DC081E090E01AC08C2F0E94701F81117B\r
+:103F400014C0C43179F048F4CB3079F0C03109F0B5\r
+:103F500060C082E08093DD0108C0C93219F0C83327\r
+:103F600021F057C01092DD0154C081E0817053C030\r
+:103F7000C93289F118F5C43171F1A8F4C73009F0DC\r
+:103F800046C08AE08093150194E19093140193E078\r
+:103F9000909313018093120188E08093110188E2CD\r
+:103FA0008093100134C0CE51C63088F5EC2FF0E07C\r
+:103FB000E65DFE4F80818093DC0129C0CE34E9F0BC\r
+:103FC00020F4CB3421F56AE013C0C13579F0C23555\r
+:103FD000F1F461E00DC08091DC01882319F01092AA\r
+:103FE000DC0115C081E08093DD0115C061E006C0F1\r
+:103FF0008091DC010E94DD1D0AC06AE08091DC0135\r
+:104000000E94531E04C01092DD0180E004C081E0D4\r
+:1040100002C080E0ABCFCF910895E1E8F0E080816D\r
+:10402000886080838081816080838FB7F89493E07B\r
+:104030009093890090ED909388008FBF0895EFE6EC\r
+:10404000F0E08081826080830895EFE6F0E0808177\r
+:104050008D7F80830895EFE6F0E0908182E08927EC\r
+:10406000808308951F920F920FB60F9211242F9301\r
+:104070003F934F935F936F937F938F939F93AF93F0\r
+:10408000BF93EF93FF938091DE019091DF01019642\r
+:104090009093DF018093DE01811103C082E00E94D2\r
+:1040A0006306E091DF01E695E695F0E0EA5CFC4FFF\r
+:1040B000E4918091DE018E1303C080E00E946306CC\r
+:1040C000FF91EF91BF91AF919F918F917F916F91F0\r
+:1040D0005F914F913F912F910F900FBE0F901F90C6\r
+:1040E000189504D06894B1118DC0089570D088F0EF\r
+:1040F0009F5790F0B92F9927B751A0F0D1F0660FD4\r
+:10410000771F881F991F1AF0BA95C9F712C0B130EE\r
+:1041100081F077D0B1E0089574C0672F782F882799\r
+:10412000B85F39F0B93FCCF3869577956795B3952D\r
+:10413000D9F73EF490958095709561957F4F8F4F9C\r
+:104140009F4F0895E89409C097FB3EF490958095A1\r
+:10415000709561957F4F8F4F9F4F9923A9F0F92F4D\r
+:1041600096E9BB279395F695879577956795B795CB\r
+:10417000F111F8CFFAF4BB0F11F460FF1BC06F5FB1\r
+:104180007F4F8F4F9F4F16C0882311F096E911C0C3\r
+:10419000772321F09EE8872F762F05C0662371F0E4\r
+:1041A00096E8862F70E060E02AF09A95660F771FF8\r
+:1041B000881FDAF7880F9695879597F9089557FD28\r
+:1041C0009058440F551F59F05F3F71F04795880F85\r
+:1041D00097FB991F61F09F3F79F08795089512161C\r
+:1041E00013061406551FF2CF4695F1DF08C01616C8\r
+:1041F00017061806991FF1CF869571056105089479\r
+:104200000895E894BB2766277727CB0197F908958F\r
+:104210000BD078C069D028F06ED018F0952309F043\r
+:104220005AC05FC01124EECFCADFA0F3959FD1F32F\r
+:10423000950F50E0551F629FF001729FBB27F00D54\r
+:10424000B11D639FAA27F00DB11DAA1F649F6627A9\r
+:10425000B00DA11D661F829F2227B00DA11D621FF8\r
+:10426000739FB00DA11D621F839FA00D611D221FB2\r
+:10427000749F3327A00D611D231F849F600D211D96\r
+:10428000822F762F6A2F11249F5750408AF0E1F039\r
+:1042900088234AF0EE0FFF1FBB1F661F771F881F82\r
+:1042A00091505040A9F79E3F510570F014C0AACF1D\r
+:1042B0005F3FECF3983EDCF3869577956795B7956D\r
+:1042C000F795E7959F5FC1F7FE2B880F911D969597\r
+:1042D000879597F9089597F99F6780E870E060E007\r
+:1042E00008959FEF80EC089500240A94161617068F\r
+:1042F00018060906089500240A94121613061406D7\r
+:1043000005060895092E0394000C11F4882352F039\r
+:10431000BB0F40F4BF2B11F460FF04C06F5F7F4FF1\r
+:104320008F4F9F4F089597FB072E16F4009407D0E8\r
+:1043300077FD09D00E94AD2107FC05D03EF4909591\r
+:1043400081959F4F0895709561957F4F0895EE0F69\r
+:10435000FF1F0590F491E02D0994AA1BBB1B51E1AE\r
+:1043600007C0AA1FBB1FA617B70710F0A61BB70BE5\r
+:10437000881F991F5A95A9F780959095BC01CD018A\r
+:104380000895F999FECF92BD81BDF89A992780B51D\r
+:104390000895A8E1B0E042E050E00C94E421262F1B\r
+:1043A000F999FECF1FBA92BD81BD20BD0FB6F8941A\r
+:1043B000FA9AF99A0FBE019608950E94CF21272FED\r
+:1043C0000C94D021DC01CB01FC01F999FECF06C091\r
+:1043D000F2BDE1BDF89A319600B40D9241505040C3\r
+:0843E000B8F70895F894FFCF2F\r
+:1043E80020026506F306D0069C0668060101BA019C\r
+:1043F80028080A03140A3F4D3639F702AA02740244\r
+:104408003B02CE01E701000219020102030405067E\r
+:044418000708090088\r
+:00000001FF\r
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = KEYMAP(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F14,
+ KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, TG(PLVR),
+ CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC,
+ KC_F1, KC_F2, KC_F3, KC_LALT, KC_LGUI,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_FN1,
+ //
+ /*-*/ KC_F15, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ /*-*/ KC_BSLS, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS,
+ /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT,
+ /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ /*-*/ /*-*/ /*-*/ KC_RGUI, KC_RALT, KC_F4, KC_F5, KC_F6,
+ KC_MPLY, KC_MNXT,
+ KC_MPRV,
+ KC_FN3, KC_QUOT, KC_SPC
+ ),
+ [SYMB] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ //
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ /*-*/ /*-*/ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [PLVR] = KEYMAP(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
+ KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_C, KC_V, KC_NO,
+ //
+ /*-*/ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /*-*/ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ /*-*/ /*-*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ /*-*/ KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ /*-*/ /*-*/ /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_NO, KC_N, KC_M
+ ),
+ [ARRW] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ //
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+ [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+ [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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 SYMB:
+ ergodox_right_led_1_on();
+ break;
+ case PLVR:
+ ergodox_right_led_2_on();
+ break;
+ case ARRW:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ break;
+ }
+};
--- /dev/null
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **SYMB** for numbers and symbols.
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **ARRW** for navigation (same fingers for arrows as HJKL on QWERTY).
+
+Looking for IJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx/).
+
+[![keyboard-layout](romanzolotarev-norman-plover-osx-hjkl.png)](rttp://www.keyboard-layout-editor.com/#/gists/56ffedceb0668dda47c993e7271563e0)
+
+## Switching
+
+- Tap `SYMB` to toggle **SYMB**.
+- Tap `ARRW` to toggle **ARRW**.
+- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `PLVR` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+- Tap `F14`, `F15` to adjust display brightness.
+
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.
--- /dev/null
+:100000000C94BB020C94FF020C94FF020C94FF02B0\r
+:100010000C94FF020C94FF020C94FF020C94FF025C\r
+:100020000C94FF020C94FF020C94090C0C94DB0C52\r
+:100030000C94FF020C94FF020C94FF020C94FF023C\r
+:100040000C94FF020C94A9210C94FF020C94FF0263\r
+:100050000C94FF020C94341B0C94FF020C94FF02CE\r
+:100060000C94FF020C94FF020C94FF020C94FF020C\r
+:100070000C94FF020C94FF020C94FF020C94FF02FC\r
+:100080000C94FF020C94FF020C94FF020C94FF02EC\r
+:100090000C94FF020C94FF020C94FF020C94FF02DC\r
+:1000A0000C94FF020C94FF020C94FF02480D6A0DA1\r
+:1000B000580E6A0D580EAF0DD20D580E270E3A0E7F\r
+:1000C0002611261163116311A611E411FD13FD130E\r
+:1000D000FD11FD13FE12FE12D113FD13FD13E813E3\r
+:1000E0000000F0A1F0A2F0A335002B002971E1007F\r
+:1000F0003A0000001E00140004001D003B00C10077\r
+:100100001F001A0016001B003C0029712000070088\r
+:1001100008000600E2002A0021000900170019006B\r
+:10012000E300A90022000E000A0005000000AA005A\r
+:100130006900025400002F000000A8006A0031008E\r
+:10014000000030000000AE0023000D001C00130072\r
+:100150000000AB002400180011001000E700AC0004\r
+:10016000250015000C003600E6002C0026000F00CC\r
+:10017000120037003D003400270033000B00380028\r
+:100180003E00C3002E002D002800E5003F000000C7\r
+:1001900001000100010001000100000001001E003B\r
+:1001A0001E0201000100010001001F001F020100EA\r
+:1001B00001000100010020002002010001000100F7\r
+:1001C00001002100210201000100010001002200C4\r
+:1001D00022020100000001000100010000000100F6\r
+:1001E000000001000100010000000100000001000A\r
+:1001F000010023002302010000000100010024008F\r
+:100200002402010001000100010025002502010077\r
+:10021000010001000100260026020100010001008A\r
+:100220000100270027020100010001000100010078\r
+:1002300001000100010000000000000000000000BB\r
+:100240000100000000001E00140004000100000076\r
+:1002500000001F001A001600010019000000200015\r
+:10026000080007000000060000002100150009003A\r
+:10027000000001000000220017000A000000010039\r
+:10028000010001000000000000000100010000006A\r
+:100290000000000000000100000023001C000B0013\r
+:1002A000000001000000240018000D000000010003\r
+:1002B000000025000C000E000000100000002600C9\r
+:1002C00012000F000000110000002700130033008F\r
+:1002D00000000000000000002F00340000000000BB\r
+:1002E0000100010001000100010000000100010007\r
+:1002F000010001000100010001000100F200010005\r
+:100300000100010001000100F000010001000100F6\r
+:1003100001000100F100F4000100010001000100F2\r
+:10032000F300F500000001000100010000000100E1\r
+:1003300000000100010001000000010000000100B8\r
+:100340000100010050000100000001000100010057\r
+:1003500051000100010001000100010052000100F4\r
+:1003600001000100010001004F0001000100010037\r
+:100370000100010001000100010001000100010075\r
+:100380000100010001000000160345007200670033\r
+:100390006F0044006F007800200045005A00000004\r
+:1003A00016034500720067006F0044006F0078007C\r
+:1003B000200045005A0000000403090409026D00F2\r
+:1003C000040100A0FA090400000103010100092151\r
+:1003D00011010001223F000705810308000A0904FA\r
+:1003E00001000103010200092111010001224D0059\r
+:1003F0000705820308000A09040200010300000047\r
+:100400000921110100012236000705830308000AB3\r
+:100410000904030001030000000921110100012269\r
+:1004200039000705840310000112011001000000CB\r
+:1004300008EDFE071301000102000105010906A1F4\r
+:1004400001050719E029E7150025019508750181C7\r
+:100450000205081901290595057501910295017597\r
+:100460000391010507190029771500250195787575\r
+:10047000018102C005010980A10185021601002643\r
+:10048000B7001A01002AB700751095018100C00558\r
+:100490000C0901A1018503160100269C021A010026\r
+:1004A0002A9C02751095018100C005010902A10175\r
+:1004B0000901A10005091901290515002501950566\r
+:1004C000750181029501750381010501093009312A\r
+:1004D0001581257F95027508810609381581257FCC\r
+:1004E000950175088106050C0A38021581257F954E\r
+:1004F0000175088106C0C005010906A1010507199B\r
+:10050000E029E7150025019508750181029501751F\r
+:1005100008810105081901290595057501910295C4\r
+:1005200001750391010507190029FF150025FF95A5\r
+:100530000675088100C000000000000000000000F7\r
+:1005400000010204060A0F17202C3A4A5D71879DAC\r
+:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB\r
+:100560005D4A3A2C20170F0A060402010000000021\r
+:1005700000000000000011241FBECFEFDAE0DEBF54\r
+:10058000CDBF04B603FE24C08091EF019091F0012D\r
+:10059000A091F101B091F2018730904BA740B04B90\r
+:1005A000B9F41092EF011092F0011092F101109243\r
+:1005B000F20114BE84B7877F84BF88E10FB6F89438\r
+:1005C00080936000109260000FBEE0E0FFE30995A9\r
+:1005D00011E0A0E0B1E0E6EDF6E402C005900D9276\r
+:1005E000A433B107D9F711E0A4E3B1E001C01D9233\r
+:1005F000AF3EB107E1F70E944D090C9469230C94BA\r
+:10060000000061110BC0FC018281882321F085EE7E\r
+:100610000E94BA0F03C085EE0E94821080E090E035\r
+:10062000089508956091B1017091B2018091B30174\r
+:100630009091B4010E94601A56985E9825982D9862\r
+:1006400026982E9827982F98823039F0833041F0E1\r
+:10065000813041F4259A2D9A0895269A2E9A08956C\r
+:10066000279A2F9A08950C94120356985E9825980D\r
+:100670002D9826982E9827982F988FEF90E090939A\r
+:1006800089008093880090938B0080938A009093D8\r
+:100690008D0080938C00259A2D9A2FEF80E792E0B1\r
+:1006A000215080409040E1F700C00000269A2E9A29\r
+:1006B0002FEF80E792E0215080409040E1F700C0AA\r
+:1006C0000000279A2F9A2FEF80E792E02150804078\r
+:1006D0009040E1F700C0000025982D982FEF80E7AB\r
+:1006E00092E0215080409040E1F700C00000269841\r
+:1006F0002E982FEF80E792E0215080409040E1F764\r
+:1007000000C0000027982F9856985E9825982D983D\r
+:1007100026982E9827982F98089589EA809380002C\r
+:1007200089E08093810024982C983F988AB18F7437\r
+:100730008AB96E98479A8BB1806B8BB9769A0E9472\r
+:1007400035030C94110380E2809300018091340101\r
+:1007500081110EC00E94F20381E0809334012FEFDB\r
+:1007600083ED90E3215080409040E1F700C000000D\r
+:1007700080E40E94F8038093000181112EC00E9442\r
+:10078000220480930001811128C00E9422048093DA\r
+:100790000001811122C08FE30E9422048093000196\r
+:1007A00081111BC00E941A0480E40E94F803809308\r
+:1007B0000001811112C08CE00E942204809300018C\r
+:1007C00081110BC00E94220480930001811105C099\r
+:1007D0008FE30E942204809300010E941A048091FA\r
+:1007E000000108951092B9008AE08093B80008953E\r
+:1007F00094EA9093BC009091BC0097FFFCCF90913D\r
+:10080000B900987F983021F0903111F081E008957F\r
+:100810008093BB0084E88093BC008091BC0087FF7C\r
+:10082000FCCF8091B900887F883111F0803471F756\r
+:1008300080E0089584E98093BC008091BC0084FD31\r
+:10084000FCCF08958093BB0084E88093BC00809126\r
+:10085000BC0087FFFCCF9091B900987F81E098326F\r
+:1008600009F480E0089584E88093BC008091BC0086\r
+:1008700087FFFCCF8091BB0008958091000181111A\r
+:1008800015C080E40E94F8038093000181110CC020\r
+:1008900082E10E94220480930001811105C08FEF44\r
+:1008A0000E942204809300010E941A0484B1807F78\r
+:1008B00084B985B1807F85B98AB1837F8AB98BB1CC\r
+:1008C000837F8BB93E98469808950E94A303809336\r
+:1008D00000010E943D0480B38C7080BB81B3836FA4\r
+:1008E00081BBA6E3B1E0E4E4F1E08EE08E0F11926B\r
+:1008F0001D928E13FCCF0C948D03BF92CF92DF928A\r
+:10090000EF92FF920F931F93CF93DF93809100019B\r
+:10091000882379F0809135018F5F809335018111B3\r
+:1009200008C00E94A30380930001811102C00E94AD\r
+:10093000350306E311E0C0E0D0E0DD24D39482E08B\r
+:10094000C82EEE24E394F12CC730D10500F5809138\r
+:100950000001811164C080E40E94F80380930001CB\r
+:10096000811112C082E10E94220480930001811152\r
+:100970000BC0C7010C2E01C0880F0A94EAF78095BE\r
+:100980000E942204809300010E941A0448C0CA30C9\r
+:10099000A1F028F4C83059F0C93061F005C0CC305E\r
+:1009A00089F070F0CD3089F0209A289810C0219AF3\r
+:1009B00029980DC0229A2A980AC0239A2B9807C01A\r
+:1009C000529A01C0539A5B9802C03E9A469890EAA8\r
+:1009D0009A95F1F79FB1799902C082E001C080E059\r
+:1009E00091709D25982B7C9902C084E001C080E025\r
+:1009F000892B7D9902C038E001C030E0832B7E99BD\r
+:100A000002C020E101C020E0822B9FB19095991F88\r
+:100A10009927991F9295990F907E892B0FC08091ED\r
+:100A20000001811149C080E40E94F8038093000115\r
+:100A3000882379F1B12C0E941A048B2DF801908142\r
+:100A4000981719F08083C09201010E943D042196FD\r
+:100A50000F5F1F4FCE30D10509F076CF8091010195\r
+:100A6000882361F1815080930101882339F08FE957\r
+:100A70009FE00197F1F700C0000020C0A4E4B1E0BE\r
+:100A8000E6E3F1E0CF01825F91919D938E13FCCF5D\r
+:100A900015C083E10E942204809300018111CACF16\r
+:100AA00081E40E94F803809300018111C3CF0E946A\r
+:100AB0003304B82EB094BFCF80E0C0CF0E94330380\r
+:100AC00081E0DF91CF911F910F91FF90EF90DF9028\r
+:100AD000CF90BF900895E82FF0E0EC5BFE4F80814F\r
+:100AE000089508958B3B910578F4883A910540F577\r
+:100AF000853A9105D0F48430910508F0B1C0813079\r
+:100B0000910509F4ADC06BC0803E910508F467C043\r
+:100B1000883E910508F4A4C09C01205F3109203172\r
+:100B2000310508F05CC090650895853A910509F497\r
+:100B300059C0863A910509F058C082E890E40895BA\r
+:100B4000883A910509F454C0893A910509F453C0D3\r
+:100B50008A3A910509F452C08B3A910509F451C0C3\r
+:100B60008C3A910509F450C08D3A910509F44FC0B3\r
+:100B7000803B910509F44EC08E3A910509F44DC0B1\r
+:100B80008F3A910509F44CC0813B910509F44BC0A3\r
+:100B9000823B910509F44AC0833B910509F449C0A1\r
+:100BA000843B910509F448C0853B910509F447C091\r
+:100BB000863B910509F446C0873B910509F445C081\r
+:100BC000883B910509F444C0893B910509F443C071\r
+:100BD0008A3B910509F442C080E094E4089580E0E6\r
+:100BE00090E0089581E890E4089583E890E4089502\r
+:100BF00082EE94E4089589EE94E408958AEE94E4F4\r
+:100C0000089585EB94E4089586EB94E4089587EBCA\r
+:100C100094E408958CEC94E408958DEC94E40895A4\r
+:100C200083E895E408958AE895E4089582E995E4D7\r
+:100C3000089584E995E4089581E296E4089583E2B5\r
+:100C400096E4089584E296E4089585E296E4089592\r
+:100C500086E296E4089587E296E408958AE296E4AF\r
+:100C60000895089596E0799FF001112494E5899FF5\r
+:100C7000E00DF11D1124E60FF11DEE0FFF1FE851ED\r
+:100C8000FF4F859194910895880F991FFC01E05AB8\r
+:100C9000F040859194910895880F991FFC01E052CE\r
+:100CA000FF4F85919491089526E0729FF0011124E1\r
+:100CB00044E5849FE00DF11D1124E60FF11DEE0FB8\r
+:100CC000FF1FE851FF4F859194919C013A952115A2\r
+:100CD0004FE1340708F41CC13F512115304120F485\r
+:100CE0009F700E944C0608959C013053211530419D\r
+:100CF00018F49927906C0895811520E5920771F4F6\r
+:100D00000E9421144FEF84E39CE0415080409040CA\r
+:100D1000E1F700C000000E94591BFAC0813020E5B5\r
+:100D2000920731F48091CD0181608093CD01F0C0B4\r
+:100D30009C0130552115304108F051C0292F33272F\r
+:100D40002F70332721303105D9F4AC01437055277A\r
+:100D500002C0220F331F4A95E2F73C68AC0164E001\r
+:100D6000440F551F6A95E1F744275370242B352B08\r
+:100D700073E0880F991F7A95E1F7807699271DC057\r
+:100D80002230310529F4982F8827816F906A0895C1\r
+:100D900023303105A9F4AC014370552721E030E040\r
+:100DA00002C0220F331F4A95E2F73C6843E0880FE8\r
+:100DB000991F4A95E1F7807E9770822B932B0895B7\r
+:100DC00024303105E1F4AC014370552721E030E0D7\r
+:100DD00002C0220F331F4A95E2F73A68E7CF9C0121\r
+:100DE00030572115304118F49F70906208959C018E\r
+:100DF00030582115304118F49F70906A0895803E54\r
+:100E00009105E0F4803C910558F58133910509F492\r
+:100E10006FC048F48932910509F463C08A329105A4\r
+:100E200009F46DC072C089339105E9F082389105EB\r
+:100E3000D1F08533910509F44DC067C0833E91051B\r
+:100E400081F138F4803E9105B9F0823E9105D9F0E8\r
+:100E50005CC0863E910561F1873E9105A1F155C0C8\r
+:100E60000E94440608952091E00120FD02C021FF68\r
+:100E70004CC080EE90E049C08091E00180FFF9CF46\r
+:100E800089E390E042C08091E00182FF0EC0809132\r
+:100E9000E00184FF03C080E090E037C083EE90E083\r
+:100EA00034C08091E00182FFF2CF82EE90E02DC04D\r
+:100EB0008091E00183FF0BC08091E00184FDEBCFC6\r
+:100EC00087EE90E022C08091E00183FFF5CF86EEAF\r
+:100ED00090E01BC08091E00185FF07C089E290E0AF\r
+:100EE00014C08091E00185FFF9CF85E390E00DC04B\r
+:100EF0008091E00186FF07C08AE290E006C0809101\r
+:100F0000E00186FFF9CF81E390E00E947205089529\r
+:100F1000089508950C948907809162010895CF93F4\r
+:100F2000DF9300D01F92CDB7DEB79C018091E60120\r
+:100F3000843019F593E099833B832A839093E900E9\r
+:100F40008FEF9091E800815095FD06C095ED9A9540\r
+:100F5000F1F700008111F5CF8091E80085FF0DC009\r
+:100F600040E050E063E070E0CE0101960E94F90994\r
+:100F70008091E8008E778093E8000F900F900F909B\r
+:100F8000DF91CF910895CF93DF9300D01F92CDB71B\r
+:100F9000DEB72091E601243021F522E029839B83EE\r
+:100FA0008A8383E08093E9008FEF9091E80081507D\r
+:100FB00095FD06C095ED9A95F1F700008111F5CFEA\r
+:100FC0008091E80085FF0DC040E050E063E070E0F4\r
+:100FD000CE0101960E94F9098091E8008E778093F6\r
+:100FE000E8000F900F900F90DF91CF91089520911E\r
+:100FF000E6012430F1F422E02093E9002FEF309154\r
+:10100000E800215035FD06C035ED3A95F1F70000B6\r
+:101010002111F5CF2091E80025FF0BC040E050E002\r
+:1010200065E070E00E94F9098091E8008E77809376\r
+:10103000E8000895CF93DF93EC019091E60194309E\r
+:1010400009F046C080910C018823D9F080910D01F0\r
+:101050008823B9F09093E9008FEF9091E8008150D8\r
+:1010600095FD06C095E19A95F1F700008111F5CF45\r
+:101070008091E80085FF2CC040E050E060E170E026\r
+:1010800017C081E08093E9008FEF9091E8008150D4\r
+:1010900095FD06C095ED9A95F1F700008111F5CF09\r
+:1010A0008091E80085FF14C040E050E068E070E007\r
+:1010B000CE010E94F9098091E8008E778093E800C4\r
+:1010C00080E1FE01A2E5B1E001900D928A95E1F781\r
+:1010D000DF91CF9108958091E501811109C00E94AF\r
+:1010E0008E0B0E94EB0B8091E20084608093E20003\r
+:1010F00008951092E501089508950C9496210E9498\r
+:10110000EF1A0E949C210E94910E0C948A0742E0E3\r
+:1011100061EC81E00E94080B42E061EC82E00E94F9\r
+:10112000080B42E061EC83E00E94080B42E161ECB5\r
+:1011300084E00C94080B8091E801833009F455C0D9\r
+:1011400030F4813071F0823009F48EC008958A3015\r
+:1011500009F47AC08B3009F460C0893009F09CC072\r
+:1011600020C08091E701813A09F096C08091E800A3\r
+:10117000877F8093E8008091EB019091EC01892BAF\r
+:1011800021F460E182E591E003C060E080E090E05E\r
+:1011900070E00E94440A8091E8008B778093E80019\r
+:1011A00008958091E701813209F076C08091EB01CA\r
+:1011B0009091EC01009719F0039709F06DC08091B0\r
+:1011C000E800877F8093E8008091E80082FD05C0F9\r
+:1011D0008091E6018111F8CF5FC08091F10080938A\r
+:1011E00062018091E8008B7753C08091E701813ADA\r
+:1011F00009F052C08091EB019091EC01892B09F02C\r
+:101200004BC08091E800877F8093E8008091E800E0\r
+:1012100080FFFCCF80910C0136C08091E7018132C4\r
+:10122000D9F58091EB019091EC01892BA9F5809182\r
+:10123000E800877F8093E8000E943D0B8091E901E0\r
+:1012400080930C010C9421148091E701813221F5E7\r
+:101250008091E800877F8093E8000E943D0B809199\r
+:10126000EA018093630108958091E701813AA1F436\r
+:101270008091E800877F8093E8008091E80080FFFC\r
+:10128000FCCF809163018093F1008091E8008E771C\r
+:101290008093E8000C943D0B089584B7877F84BF4A\r
+:1012A00088E10FB6F89480936000109260000FBE42\r
+:1012B00090E080E80FB6F89480936100909361000D\r
+:1012C0000FBE0E94E00E0E948E0B0E94EB0B8091DD\r
+:1012D000E20084608093E20078940E94710E0E9484\r
+:1012E000E20E82E091E00E948C0E0E9484218091A7\r
+:1012F000E601853069F40E94B01A8091E4018823E8\r
+:10130000B1F30E94DB1A882391F30E94E309EFCF27\r
+:101310000E94E80EECCF292F332723303105C9F086\r
+:1013200064F42130310581F02230310509F043C0E9\r
+:101330008DE690E02CEB33E042C021323105F1F034\r
+:101340002232310541F137C082E190E029E234E0F8\r
+:1013500036C099278130910541F08230910541F0E6\r
+:10136000892B49F5E8EBF3E005C0E0EAF3E002C0C1\r
+:10137000E8E8F3E0849190E09F0121C06430D8F464\r
+:10138000E62FF0E0EE0FFF1FEE5DFE4F2081318172\r
+:1013900089E090E014C0643070F470E0FB01EE0F5F\r
+:1013A000FF1FE65EFE4F20813181FB01EA5EFE4FAA\r
+:1013B000808190E004C080E090E020E030E0FA011D\r
+:1013C00031832083089580E189BD82E189BD09B41C\r
+:1013D00000FEFDCF8091D8008F7D8093D800809152\r
+:1013E000E00082608093E0008091E00081FDFCCF0E\r
+:1013F0000895CF92DF92EF92FF920F931F93CF93B6\r
+:10140000DF93EC018B016A010E945C0B811133C0F8\r
+:10141000C114D10439F0F60180819181081B190BA8\r
+:10142000C80FD91FE12CF12C0115110519F180917C\r
+:10143000E80085FD16C08091E8008E778093E80073\r
+:10144000C114D10449F0F60180819181E80EF91EA2\r
+:10145000F182E08285E00FC00E945C0B882321F3BB\r
+:101460000AC089918093F10001501109FFEFEF1A32\r
+:10147000FF0ADACF80E0DF91CF911F910F91FF90AB\r
+:10148000EF90DF90CF9008952091ED013091EE0123\r
+:101490002617370748F06115710539F42091E800E7\r
+:1014A0002E772093E80001C0B90140E06115710575\r
+:1014B000A9F12091E601222309F443C0253009F463\r
+:1014C00042C02091E80023FD40C02091E80022FDA9\r
+:1014D00032C02091E80020FFE9CF4091F300209135\r
+:1014E000F20030E0342BFC01CF016115710559F099\r
+:1014F0002830310540F481918093F10061507109E9\r
+:101500002F5F3F4FF1CF41E02830310509F040E037\r
+:101510002091E8002E772093E800C8CF4111C9CF71\r
+:101520000AC08091E601882361F0853061F08091E6\r
+:10153000E80083FD0AC08091E80082FFF2CF80E0DE\r
+:10154000089582E0089583E0089581E00895209150\r
+:10155000ED013091EE012617370748F0611571054E\r
+:1015600039F42091E8002E772093E80001C0B901FA\r
+:10157000FC0120E06115710591F18091E60188235D\r
+:1015800009F440C0853009F43FC08091E80083FD34\r
+:101590003DC08091E80082FD2FC08091E80080FF6F\r
+:1015A000E9CF2091F3008091F20090E0922B611539\r
+:1015B000710559F08830910540F424912093F10091\r
+:1015C0003196615071090196F2CF21E0089709F038\r
+:1015D00020E08091E8008E778093E800CBCF211146\r
+:1015E000CCCF0AC08091E601882361F0853061F09C\r
+:1015F0008091E80083FD0AC08091E80082FFF2CF6D\r
+:1016000080E0089582E0089583E0089581E00895E0\r
+:10161000982F973058F59093E900981739F070910A\r
+:10162000EC002091ED005091F00003C0242F762FA4\r
+:1016300050E021FF19C03091EB003E7F3093EB006A\r
+:101640003091ED003D7F3093ED003091EB00316043\r
+:101650003093EB007093EC002093ED005093F0007A\r
+:101660002091EE0027FF07C09F5FD3CF8F7080933C\r
+:10167000E90081E0089580E008958091E70187FF07\r
+:1016800011C08091E80082FD05C08091E6018111C2\r
+:10169000F8CF11C08091E8008B770BC08091E601F4\r
+:1016A000882349F08091E80080FFF8CF8091E8001E\r
+:1016B0008E778093E80008952091E4003091E50052\r
+:1016C00095E64091EC00842F817040FF22C080910C\r
+:1016D000E80080FD1CC08091E601882391F08530F0\r
+:1016E00091F08091EB0085FD10C04091E400509195\r
+:1016F000E5004217530729F39A01915011F784E04E\r
+:10170000089582E0089583E0089581E0089580E0DF\r
+:1017100008954091E80042FFDECF08950E94FC0B3F\r
+:101720000E94040CE0EEF0E0808181608083E8EDAF\r
+:10173000F0E080818F77808319BCA7EDB0E08C91B9\r
+:101740008E7F8C9380818F7E80831092E501089537\r
+:101750000F931F93CF93DF930E94FC0B0E94040C06\r
+:10176000C8EDD0E088818F778883888180688883FE\r
+:1017700088818F7D888319BC1092E6011092E20166\r
+:101780001092E4011092E30100EE10E0F801808174\r
+:101790008B7F808388818160888342E060E080E085\r
+:1017A0000E94080BE1EEF0E080818E7F8083E2EE04\r
+:1017B000F0E0808181608083808188608083F8018F\r
+:1017C00080818E7F8083888180618883DF91CF9143\r
+:1017D0001F910F910895E8EDF0E080818F7E808366\r
+:1017E000E7EDF0E080818160808384E082BF81E06A\r
+:1017F0008093E5010C94A80BE8EDF0E080818E7FEA\r
+:1018000080831092E20008951092DA001092E100B5\r
+:1018100008951F920F920FB60F9211242F933F93AA\r
+:101820004F935F936F937F938F939F93AF93BF93E8\r
+:10183000EF93FF938091E10082FF0BC08091E20063\r
+:1018400082FF07C08091E1008B7F8093E1000E94BE\r
+:10185000700E8091DA0080FF1FC08091D80080FF59\r
+:101860001BC08091DA008E7F8093DA008091D900CE\r
+:1018700080FF0DC080E189BD82E189BD09B400FE11\r
+:10188000FDCF81E08093E6010E946B0805C019BC82\r
+:101890001092E6010E9479088091E10080FF19C052\r
+:1018A0008091E20080FF15C08091E2008E7F8093DE\r
+:1018B000E2008091E20080618093E2008091D80094\r
+:1018C00080628093D80019BC85E08093E6010E9475\r
+:1018D0007D088091E10084FF30C08091E20084FFA8\r
+:1018E0002CC080E189BD82E189BD09B400FEFDCF35\r
+:1018F0008091D8008F7D8093D8008091E1008F7E09\r
+:101900008093E1008091E2008F7E8093E2008091DD\r
+:10191000E20081608093E2008091E201882311F06F\r
+:1019200084E007C08091E30087FD02C081E001C030\r
+:1019300083E08093E6010E947F088091E10083FFAD\r
+:1019400029C08091E20083FF25C08091E100877F5C\r
+:101950008093E10082E08093E6011092E2018091A1\r
+:10196000E1008E7F8093E1008091E2008E7F809382\r
+:10197000E2008091E20080618093E20042E060E05A\r
+:1019800080E00E94080B8091F00088608093F00056\r
+:101990000E947C08FF91EF91BF91AF919F918F9131\r
+:1019A0007F916F915F914F913F912F910F900FBE5B\r
+:1019B0000F901F9018951F920F920FB60F9211243F\r
+:1019C0002F933F934F935F936F937F938F939F9347\r
+:1019D000AF93BF93CF93DF93EF93FF93C091E90051\r
+:1019E000CF708091EC00D82FD17080FDD0E810929C\r
+:1019F000E9008091F000877F8093F00078940E9446\r
+:101A00001F0D1092E9008091F00088608093F00033\r
+:101A1000CD2BCF70C093E900FF91EF91DF91CF9173\r
+:101A2000BF91AF919F918F917F916F915F914F91F6\r
+:101A30003F912F910F900FBE0F901F9018951F93FD\r
+:101A4000CF93DF93CDB7DEB7AA970FB6F894DEBF7A\r
+:101A50000FBECDBFE7EEF1E088E08E0F9091F10070\r
+:101A600091938E13FBCF0E949B088091E80083FF27\r
+:101A70001FC18091E7019091E801492F50E04A3061\r
+:101A8000510508F015C1FA01EA5AFF4F0C941E23C4\r
+:101A9000803881F0823809F00BC18091EB018F70A2\r
+:101AA0008093E9008091EB0085FB882780F91092F4\r
+:101AB000E90006C08091E3019091E40191118260F8\r
+:101AC0009091E800977F9093E8008093F100109246\r
+:101AD000F100C8C0282F2D7F09F0EAC0882319F033\r
+:101AE000823061F0E5C08091E901813009F0E0C009\r
+:101AF000933009F080E08093E4012BC08091E901EC\r
+:101B0000811127C08091EB018F7009F4D1C08093BF\r
+:101B1000E9002091EB0020FF1CC0933021F480915C\r
+:101B2000EB00806214C09091EB0090619093EB0009\r
+:101B300021E030E0A90102C0440F551F8A95E2F769\r
+:101B40004093EA001092EA008091EB008860809355\r
+:101B5000EB001092E9008091E800877F86C0811138\r
+:101B6000A7C01091E9011F778091E3008078812B55\r
+:101B70008093E3008091E800877F8093E8000E94D3\r
+:101B80003D0B8091E80080FFFCCF8091E3008068EE\r
+:101B90008093E300111102C082E001C083E08093D2\r
+:101BA000E60186C08058823008F082C08091E90149\r
+:101BB0009091EA018C3D53E0950779F583E08A83A3\r
+:101BC0008AE289834FB7F894DE01139620E03EE065\r
+:101BD00051E2E32FF0E050935700E49120FF03C05F\r
+:101BE000E295EF703F5FEF708E2F90E0EA3010F0DB\r
+:101BF000C79601C0C0968D939D932F5F243149F7FE\r
+:101C00004FBF8091E800877F8093E8006AE270E030\r
+:101C1000CE0101960E94440A14C0AE014F5F5F4F8F\r
+:101C20006091EB010E948B09BC01892B09F440C033\r
+:101C30009091E800977F9093E80089819A810E94B3\r
+:101C4000A70A8091E8008B778093E80031C0803844\r
+:101C500079F58091E800877F8093E8008091E20128\r
+:101C60008093F1008091E8008E778093E8000E94D5\r
+:101C70003D0B1EC081111CC09091E9019230C0F44F\r
+:101C80008091E800877F8093E8009093E2010E94B2\r
+:101C90003D0B8091E201811106C08091E30087FD38\r
+:101CA00002C081E001C084E08093E6010E948708C1\r
+:101CB0008091E80083FF0AC08091E800877F8093CD\r
+:101CC000E8008091EB0080628093EB00AA960FB64B\r
+:101CD000F894DEBF0FBECDBFDF91CF911F91089565\r
+:101CE0000895CF938091E6018823A1F0C091E90087\r
+:101CF000CF709091EC00892F817090FD80E8C82B07\r
+:101D00001092E9008091E80083FD0E941F0DCF70C2\r
+:101D1000C093E900CF910895909369018093680181\r
+:101D20000895E0916801F0916901309721F00190E8\r
+:101D3000F081E02D099480E00895E0916801F09130\r
+:101D40006901309721F00280F381E02D0994089514\r
+:101D5000E0916801F0916901309721F00480F581EC\r
+:101D6000E02D099408952091660130916701821752\r
+:101D7000930771F09093670180936601E091680189\r
+:101D8000F0916901309721F00680F781E02D0994E8\r
+:101D9000089520916401309165018217930771F0D5\r
+:101DA0009093650180936401E0916801F09169016D\r
+:101DB000309721F00084F185E02D0994089508956D\r
+:101DC0000C94DF0E0E94F51A0E9465040C94BB1B54\r
+:101DD000CF92DF92EF92FF920F931F93CF93DF93F7\r
+:101DE000CDB7DEB72B970FB6F894DEBF0FBECDBFD1\r
+:101DF0000E947D048BE6C82E81E0D82E00E010E022\r
+:101E0000E02E802F0E946B05F60141916F01F42EA8\r
+:101E1000F826B1F40F5F1F4F0E30110589F78FEFD1\r
+:101E200089838A831B820E94FE1A8160782F9D839A\r
+:101E30008C8349815A816B818D810E948B0F40C0B8\r
+:101E40009091CD0191FF04C08B870E9471058B8515\r
+:101E500020E030E04F2D50E0922FBA01022E02C058\r
+:101E6000759567950A94E2F760FF24C02E83EF8290\r
+:101E700021E030E0690102C0CC0CDD1C9A95E2F74C\r
+:101E800090E08C219D21892B09F420E028870E9475\r
+:101E9000FE1A8160782F9A8789874E815F816885D5\r
+:101EA0008A850E948B0FF801E559FE4F8081C82674\r
+:101EB000C08206C02F5F3F4F2630310569F6AACF9A\r
+:101EC0000E94A21E10916A010E94910E1817A1F0A3\r
+:101ED0000E94910E80936A012B960FB6F894DEBF94\r
+:101EE0000FBECDBFDF91CF911F910F91FF90EF906B\r
+:101EF000DF90CF900C948A072B960FB6F894DEBF34\r
+:101F00000FBECDBFDF91CF911F910F91FF90EF904A\r
+:101F1000DF90CF900895CF93DF93CDB7DEB72B97A7\r
+:101F20000FB6F894DEBF0FBECDBF4F8358876987C9\r
+:101F30007A878B87DE01119686E0FD0111928A95E2\r
+:101F4000E9F785E0FE01379601900D928A95E1F759\r
+:101F500049815A816B817C818D819E810E94BB1653\r
+:101F60002B960FB6F894DEBF0FBECDBFDF91CF9199\r
+:101F700008950895CF93882309F4C2C0C82F8238EA\r
+:101F800059F40E94910E81FDBBC089E30E9464193F\r
+:101F90000E94311A89E30CC0833879F40E94910EB3\r
+:101FA00080FDAEC083E50E9464190E94311A83E56A\r
+:101FB0000E94A619CF910C94311A843859F40E94CA\r
+:101FC000910E82FD9DC087E40E9464190E94311A1F\r
+:101FD00087E4EECF8CEF8C0F813A48F48C2F0E946F\r
+:101FE000E92081118DC08C2F0E946419E3CF80E21B\r
+:101FF0008C0F883048F4C77081E001C0880FCA9503\r
+:10200000EAF70E94EA19D6CF8BE58C0F833078F47B\r
+:10201000C53A29F0C63A31F083E890E005C081E87E\r
+:1020200090E002C082E890E0CF910C94B30E88E576\r
+:102030008C0F833108F064C0C83A39F1C93A41F1D4\r
+:10204000CA3A49F1CB3A51F1CC3A59F1CD3A61F162\r
+:10205000C03B69F1CE3A71F1CF3A79F1C13B81F1E0\r
+:10206000C23B89F1C33B91F1C43B99F1C53BA1F15E\r
+:10207000C63BA9F1C73BB1F1C83BB9F1C93BC1F1BE\r
+:10208000CA3BC9F180E090E038C082EE90E035C0F4\r
+:1020900089EE90E032C08AEE90E02FC085EB90E0B0\r
+:1020A0002CC086EB90E029C087EB90E026C08CEC3A\r
+:1020B00090E023C08DEC90E020C083E891E01DC04B\r
+:1020C0008AE891E01AC082E991E017C084E991E0C2\r
+:1020D00014C081E292E011C083E292E00EC084E27B\r
+:1020E00092E00BC085E292E008C086E292E005C073\r
+:1020F00087E292E002C08AE292E0CF910C94C90E8E\r
+:10210000CF910895882309F44BC0823859F40E9476\r
+:10211000910E81FF45C089E30E9464190E94311A23\r
+:1021200089E30CC0833871F40E94910E80FF38C09F\r
+:1021300083E50E9464190E94311A83E50E94A61962\r
+:102140000C94311A843859F40E94910E82FF28C0F1\r
+:1021500087E40E9464190E94311A87E4EFCF9CEF54\r
+:10216000980F913A58F390E2980F983050F4877096\r
+:1021700091E001C0990F8A95EAF7892F0E94F01922\r
+:10218000DFCF9BE5980F933020F480E090E00C9433\r
+:10219000B30E885A833120F480E090E00C94C90E8D\r
+:1021A0000895882321F00E94EA190C94311A0895A9\r
+:1021B000882321F00E94F0190C94311A0895BF92DF\r
+:1021C000CF92DF92EF92FF920F931F93CF93DF9303\r
+:1021D00000D000D000D0CDB7DEB725E0FC01DE0195\r
+:1021E000119601900D922A95E1F7FC01D0801181A2\r
+:1021F0000281258122952F7043815481452B09F45A\r
+:10220000FCC21F3F21F4FFEFDF1609F4F6C27C0188\r
+:102210002E830E94B90FD9821A8369817A81802F17\r
+:102220000E946019182FB92E0E9415190E94DC1700\r
+:102230002E81002319F00E94071A2E81EB2DE295C2\r
+:10224000EF70F0E0E05AFF4F0C941E238B2D807F3F\r
+:102250009B2D9F70F92E882319F0F29480EFF822BD\r
+:10226000002389F0FF2009F475C280E2810F8830D5\r
+:1022700020F48F2D0E94EA1903C08F2D0E94FA19B5\r
+:102280000E94311A67C2812F0E948210FF2009F438\r
+:10229000B4C2105E8F2D183018F40E94F01902C0DD\r
+:1022A0000E94001A26960FB6F894DEBF0FBECDBF6F\r
+:1022B000DF91CF911F910F91FF90EF90DF90CF9022\r
+:1022C000BF900C94311A3B2D307F8B2D8F703032A4\r
+:1022D00011F08295807F112319F0113021F12CC06B\r
+:1022E0000023B9F0222309F4A0C1213009F09DC1D7\r
+:1022F00026960FB6F894DEBF0FBECDBFDF91CF910B\r
+:102300001F910F91FF90EF90DF90CF90BF900C94B2\r
+:102310001A1A222319F0213009F46FC28E830E9409\r
+:102320001D1A8E8196C1002321F0223008F065C26B\r
+:102330007CC1211162C28DC1002321F0222309F446\r
+:1023400074C108C2222309F484C119C22B2D269519\r
+:102350002695237030E02115310521F0213031051B\r
+:10236000D1F04BC2002321F0812F9B2D937002C02E\r
+:1023700080E090E026960FB6F894DEBF0FBECDBF8A\r
+:10238000DF91CF911F910F91FF90EF90DF90CF9051\r
+:10239000BF900C94B30E002321F0812F9B2D9370DE\r
+:1023A00002C080E090E026960FB6F894DEBF0FBE24\r
+:1023B000CDBFDF91CF911F910F91FF90EF90DF90F4\r
+:1023C000CF90BF900C94C90E812F002319F00E946A\r
+:1023D000AA1D02C00E94121E26960FB6F894DEBFF8\r
+:1023E0000FBECDBFDF91CF911F910F91FF90EF9066\r
+:1023F000DF90CF90BF900C94971E8B2D837009F0C7\r
+:102400007BC00111FAC1812F829586958770880F54\r
+:10241000880F912F9F70C92ED12CE12CF12C082E02\r
+:1024200004C0CC0CDD1CEE1CFF1C0A94D2F714FF78\r
+:1024300012C04FE050E060E070E004C0440F551F50\r
+:10244000661F771F8A95D2F7CB01BA016095709508\r
+:102450008095909503C060E070E0CB012B2D269510\r
+:1024600026952370422F50E042305105D9F0433079\r
+:10247000510569F16C297D298E299F29413051052B\r
+:1024800051F126960FB6F894DEBF0FBECDBFDF9197\r
+:10249000CF911F910F91FF90EF90DF90CF90BF9061\r
+:1024A0000C9403186C297D298E299F2926960FB636\r
+:1024B000F894DEBF0FBECDBFDF91CF911F910F917A\r
+:1024C000FF90EF90DF90CF90BF900C941F180E9468\r
+:1024D0000318C701B60126960FB6F894DEBF0FBEEB\r
+:1024E000CDBFDF91CF911F910F91FF90EF90DF90C3\r
+:1024F000CF90BF900C94E717002319F08B2D8170BB\r
+:1025000001C08695882309F478C1812F829586952C\r
+:102510008770880F880F912F9F70C92ED12CE12CC6\r
+:10252000F12C082E04C0CC0CDD1CEE1CFF1C0A9400\r
+:10253000D2F714FF12C04FE050E060E070E004C03A\r
+:10254000440F551F661F771F8A95D2F7CB01BA013A\r
+:10255000609570958095909503C060E070E0CB0128\r
+:102560002B2D269526952370422F50E042305105A1\r
+:10257000D9F04330510569F16C297D298E299F29B5\r
+:102580004130510551F126960FB6F894DEBF0FBECB\r
+:10259000CDBFDF91CF911F910F91FF90EF90DF9012\r
+:1025A000CF90BF900C94DD186C297D298E299F292E\r
+:1025B00026960FB6F894DEBF0FBECDBFDF91CF9148\r
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0\r
+:1025D000F9180E94DD18C701B60126960FB6F894C7\r
+:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046\r
+:1025F000EF90DF90CF90BF900C94C118103FD1F1B5\r
+:1026000018F4103E50F4A1C0123F09F463C008F45E\r
+:102610004CC0133F09F473C098C01F708B2D8F718D\r
+:102620000023A1F00E945A18812F26960FB6F89425\r
+:10263000DEBF0FBECDBFDF91CF911F910F91FF90F5\r
+:10264000EF90DF90CF90BF900C94D1100E947B1838\r
+:10265000812F26960FB6F894DEBF0FBECDBFDF9157\r
+:10266000CF911F910F91FF90EF90DF90CF90BF908F\r
+:102670000C94D8100023A9F02111BFC08B2D8F71AD\r
+:1026800026960FB6F894DEBF0FBECDBFDF91CF9177\r
+:102690001F910F91FF90EF90DF90CF90BF900C941F\r
+:1026A000A018223008F0A9C0E9CF0023A9F08B2D93\r
+:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7\r
+:1026C000CF911F910F91FF90EF90DF90CF90BF902F\r
+:1026D0000C945A18002359F38B2D8F7126960FB640\r
+:1026E000F894DEBF0FBECDBFDF91CF911F910F9148\r
+:1026F000FF90EF90DF90CF90BF900C947B18002359\r
+:1027000099F08B2D8F7126960FB6F894DEBF0FBE11\r
+:10271000CDBFDF91CF911F910F91FF90EF90DF9090\r
+:10272000CF90BF900C94451826960FB6F894DEBF54\r
+:102730000FBECDBFDF91CF911F910F91FF90EF9012\r
+:10274000DF90CF90BF900C943B180023A9F0222378\r
+:1027500009F4ADCF812F26960FB6F894DEBF0FBED9\r
+:10276000CDBFDF91CF911F910F91FF90EF90DF9040\r
+:10277000CF90BF900C94BA0F222309F4ADCF812FD4\r
+:1027800026960FB6F894DEBF0FBECDBFDF91CF9176\r
+:102790001F910F91FF90EF90DF90CF90BF900C941E\r
+:1027A00082104B2D4F70612FC7010E9401032696A6\r
+:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152\r
+:1027C0000F91FF90EF90DF90CF90BF900C945F1728\r
+:1027D0004B2D4F70612FC70126960FB6F894DEBFC0\r
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062\r
+:1027F000DF90CF90BF900C94310626960FB6F894D8\r
+:10280000DEBF0FBECDBFDF91CF911F910F91FF9023\r
+:10281000EF90DF90CF90BF9008950E94071A0E941A\r
+:10282000171A0E94DC190E94311A0E94481F0E9448\r
+:10283000971E80E090E00E94B30E80E090E00C9440\r
+:10284000C90E0E94F7190C940D140E945519292FD6\r
+:1028500022952F7030E02C3031054CF42A303105B0\r
+:102860006CF4225031092230310588F407C02C3035\r
+:10287000310549F02F30310531F009C0803E48F074\r
+:10288000803F29F406C093FB882780F9089580E0F3\r
+:10289000089581E00895CF93DF9300D000D01F9278\r
+:1028A000CDB7DEB70F900F900F900F900F90DF9184\r
+:1028B000CF910895CF93DF9300D000D000D0CDB753\r
+:1028C000DEB726960FB6F894DEBF0FBECDBFDF9100\r
+:1028D000CF9108951F93CF93DF93C091790116E0B4\r
+:1028E00080917A01C81799F0D0E01C9FF0011D9FDC\r
+:1028F000F00D1124E558FE4F4081518162817381B2\r
+:10290000848195810E945A142196C770E9CFDF9186\r
+:10291000CF911F9108954091AB015091AC0160910E\r
+:10292000AD017091AE018091AF019091B0010C9416\r
+:102930005A148091B00182958F7009F054C0809133\r
+:10294000AD01882309F44FC080917901A0917A01EB\r
+:102950006091AB017091AC014091AE015091AF011B\r
+:10296000B6E08A1709F43FC090E041155105C1F166\r
+:102970007F3F11F46F3FA1F1B89FF001B99FF00DB7\r
+:102980001124E558FE4F218172132AC02081621361\r
+:1029900027C02281211124C02381348124173507C7\r
+:1029A00010F421503109241B350B283C3105C0F4AB\r
+:1029B0002091B0012F7020612093B00126E0289F64\r
+:1029C000F001299FF00D1124E058FE4F80818F7097\r
+:1029D000806180838BEA91E00E94DF100C946A147E\r
+:1029E00001968770BECF0895CF92DF92EF92FF924B\r
+:1029F0000F931F93CF93DF93CDB7DEB762970FB6D8\r
+:102A0000F894DEBF0FBECDBF8C0185E0F801DE017A\r
+:102A10001D9601900D928A95E1F7D8014C9111967F\r
+:102A20005C91119712966C9112971396CD90DC9051\r
+:102A300014973091AB017091AC018091AE019091EF\r
+:102A4000AF01009709F46BC17F3F19F43F3F09F4D0\r
+:102A500066C1E090AD01EE2009F4C0C02091B00144\r
+:102A6000C816D90628F0F601E81BF90BCF0104C0FF\r
+:102A7000809590958C0D9D1DFF24F394883C9105C5\r
+:102A800078F0F12C207F09F0C6C07C2DD98AC88A45\r
+:102A900089890E944B148BEA91E00E94DF10B1C03B\r
+:102AA000822F807F09F046C0751314C0341312C002\r
+:102AB000611110C02F7020612093B0010E948B140F\r
+:102AC0008BEA91E00E94DF108091B001D801159649\r
+:102AD0008C932EC0CD2819F15F3F11F44F3FF9F0D0\r
+:102AE000F62E61111CC08091790120917A0136E0A7\r
+:102AF000821709F45AC090E0389FF001399FF00D19\r
+:102B00001124E558FE4F7181571306C07081471399\r
+:102B100003C07281711103C001968770E9CFF62E50\r
+:102B2000662309F418C18091B00181608093B001DF\r
+:102B3000F12C11C1751308C0341306C0611104C013\r
+:102B40008091B001D801C3C04D875E878D859E8579\r
+:102B50006A8B0E9425146A898823E1F16623D1F1EA\r
+:102B60002091B001822F82958F7090E0029774F0CF\r
+:102B70008091AB019091AC0198878F831986DB8699\r
+:102B8000CA862C87CE0107960E94DF1086E0F801E6\r
+:102B9000ABEAB1E001900D928A95E1F70E94991499\r
+:102BA0000E948B14FF24F394D6C04D875E878D85D9\r
+:102BB0009E850E945519292F22952F7030E02230D2\r
+:102BC00031050CF0BCC09F7009F0B6C0805E883043\r
+:102BD00008F4C1C0C8010E94DF10E4CFC816D906AE\r
+:102BE00008F453C0F601E81BF90BCF01883C9105AE\r
+:102BF00008F450C0F12C7C2DD98AC88A89890E949A\r
+:102C00004B14EBEAF1E086E0DF011D928A95E9F7CB\r
+:102C10000E948B14A0C0751314C0341312C061112C\r
+:102C200010C08091B001F8018583C8010E94DF10B7\r
+:102C300086E0EBEAF1E0DF011D928A95E9F7FE2CD0\r
+:102C40008AC04D875E878D859E856A8B0E9425147C\r
+:102C50006A89882309F4BECF662309F4BBCF20918B\r
+:102C6000B001822F82958F7090E002970CF48ECF86\r
+:102C70008091AB019091AC019A8389831B82DD82A4\r
+:102C8000CC822E83CE0101967FCF809590958C0DBE\r
+:102C90009D1DACCFF62E662309F49CCF75132EC074\r
+:102CA00034132CC02091B00120FD1FC0822F8295CB\r
+:102CB0008F70D9F0D80115962C9315978F3049F065\r
+:102CC0008F5F982F9295907F822F8F70892B15960A\r
+:102CD0008C93C8010E94DF1086E0F801ABEAB1E0F6\r
+:102CE00001900D928A95E1F793CF86E0F801ABEA67\r
+:102CF000B1E001900D928A95E1F72DC04D875E8776\r
+:102D00008D859E850E942514811140CF8091B00150\r
+:102D100081608093B001C8010E94DF101CC066234F\r
+:102D200009F458CF4D875E878D859E850E942514B6\r
+:102D3000882309F44FCF2ACF811148CF0CC024300B\r
+:102D400031050CF047CF9F7009F440CFF801958111\r
+:102D5000907F09F03BCF8F2D62960FB6F894DEBFBF\r
+:102D60000FBECDBFDF91CF911F910F91FF90EF90DC\r
+:102D7000DF90CF9008951F93CF93DF93CDB7DEB749\r
+:102D80002C970FB6F894DEBF0FBECDBF4F83588788\r
+:102D900069877A878B879C87CE0107960E94F414F7\r
+:102DA000882369F08F8198852A853B85232BF1F153\r
+:102DB0009F3F09F063C08F3F09F060C037C086E0D5\r
+:102DC000FE013796DE01119601900D928A95E1F78A\r
+:102DD0006F817885EA85FB85309741F17F3F11F45B\r
+:102DE0006F3F21F120917A0130E0C901019687708F\r
+:102DF00099274091790150E08417950709F447C05D\r
+:102E000069837A83FD83EC8396E0929FD001939F40\r
+:102E1000B00D1124A558BE4FFE01319601900D92C0\r
+:102E20009A95E1F780937A010E946A1416E08091E6\r
+:102E3000790190917A018917C1F1189FC00111247D\r
+:102E400085589E4F0E94F414882379F1E09179010E\r
+:102E50001E9FF0011124E558FE4F4081518162818F\r
+:102E60007381848195810E945A148091790190E048\r
+:102E700001968770992780937901D9CF4F81588522\r
+:102E800069857A858B859C850E945A14CFCF0E94D4\r
+:102E9000211410927A0110927901EBEAF1E086E0B8\r
+:102EA000DF011D928A95E9F7C1CF2C960FB6F894F1\r
+:102EB000DEBF0FBECDBFDF91CF911F910895EF927E\r
+:102EC000FF920F931F93CF93DF938C01892B09F40B\r
+:102ED0006CC0F12CEE24E394E8012196F801849172\r
+:102EE000843740F4843008F051C0813081F0823062\r
+:102EF00019F15BC0853709F444C0A8F19CE7980F2D\r
+:102F0000903708F052C08F770E94821041C00E5F48\r
+:102F10001F4FFE01C49180E28C0F883048F4C770C7\r
+:102F20008E2D01C0880FCA95EAF70E940A1A14C0B4\r
+:102F30008C2F0E94BA0F2DC00E5F1F4FFE01C4914F\r
+:102F400080E28C0F883058F4C7708E2D01C0880F36\r
+:102F5000CA95EAF70E94101A0E94311A1AC08C2FE3\r
+:102F60000E94821016C00E5F1F4FFE01C491CC2339\r
+:102F700081F08FE99FE00197F1F700C00000C15098\r
+:102F8000F6CF0E5F1F4FFE01F49003C00E94BA0FF0\r
+:102F90008E018F2D882309F49FCFEFE9FFE0319751\r
+:102FA000F1F700C000008150F5CFDF91CF911F9164\r
+:102FB0000F91FF90EF90089508956093B50170937D\r
+:102FC000B6018093B7019093B8010C940D140F9340\r
+:102FD0001F930091B5011091B6012091B701309176\r
+:102FE000B801DC01CB01802B912BA22BB32B80935A\r
+:102FF000B5019093B601A093B701B093B8011F91AA\r
+:103000000F910C940D140F931F930091B501109123\r
+:10301000B6012091B7013091B801DC01CB018023CA\r
+:103020009123A223B3238093B5019093B601A0937B\r
+:10303000B701B093B8011F910F910C940D140F9329\r
+:103040001F930091B5011091B6012091B701309105\r
+:10305000B801DC01CB0180279127A227B3278093F9\r
+:10306000B5019093B601A093B701B093B8011F9139\r
+:103070000F910C940D141092B1011092B2011092A4\r
+:10308000B3011092B4010C940D1441E050E060E0E3\r
+:1030900070E004C0440F551F661F771F8A95D2F752\r
+:1030A0004093B1015093B2016093B3017093B401A6\r
+:1030B0000C940D1441E050E060E070E004C0440F57\r
+:1030C000551F661F771F8A95D2F78091B1019091A5\r
+:1030D000B201A091B301B091B401482B592B6A2BD6\r
+:1030E0007B2B4093B1015093B2016093B301709375\r
+:1030F000B4010C940D1441E050E060E070E004C0B5\r
+:10310000440F551F661F771F8A95D2F7409550953B\r
+:10311000609570958091B1019091B201A091B30139\r
+:10312000B091B401482359236A237B234093B10112\r
+:103130005093B2016093B3017093B4010C940D14D9\r
+:1031400041E050E060E070E004C0440F551F661F8E\r
+:10315000771F8A95D2F78091B1019091B201A09129\r
+:10316000B301B091B401482759276A277B274093C0\r
+:10317000B1015093B2016093B3017093B4010C9408\r
+:103180000D140F931F930091B1011091B201209182\r
+:10319000B3013091B401DC01CB01802B912BA22B28\r
+:1031A000B32B8093B1019093B201A093B301B0937C\r
+:1031B000B4011F910F910C940D140F931F93009164\r
+:1031C000B1011091B2012091B3013091B401DC0141\r
+:1031D000CB0180239123A223B3238093B101909349\r
+:1031E000B201A093B301B093B4011F910F910C945D\r
+:1031F0000D140F931F930091B1011091B201209112\r
+:10320000B3013091B401DC01CB0180279127A227C3\r
+:10321000B3278093B1019093B201A093B301B0930F\r
+:10322000B4011F910F910C940D140895CF92DF9269\r
+:10323000EF92FF920F931F93CF93DF938C01C09077\r
+:10324000B501D090B601E090B701F090B80180913F\r
+:10325000B1019091B201A091B301B091B401C82A1B\r
+:10326000D92AEA2AFB2ACFE1D0E0D701C6010C2EE9\r
+:1032700004C0B695A795979587950A94D2F780FFD5\r
+:1032800006C0B8018C2F0E945406019721F42197A3\r
+:1032900060F780E001C08C2FDF91CF911F910F91DB\r
+:1032A000FF90EF90DF90CF900895CF93DF93EC01E4\r
+:1032B0000E941619BE010E945406DF91CF91089515\r
+:1032C000CB010E945519089590910C01992321F08A\r
+:1032D00090910D01911109C020910E0130910F01C3\r
+:1032E000F90132969FEF40E01FC0982F9695969572\r
+:1032F00096959F3050F5E0910E01F0910F01E90F86\r
+:10330000F11D877021E030E0A90102C0440F551F74\r
+:103310008A95E2F7CA019181892B818308959F3FA5\r
+:1033200039F04F5F4E3041F051915813F8CF0DC036\r
+:103330005111F7CF942FF5CF9F3F39F0F901E90FE5\r
+:10334000F11D97FDFA9582830895089590910C01DF\r
+:10335000992321F090910D01911109C020910E0146\r
+:1033600030910F01F9013296205F3F4F1FC0982F17\r
+:103370009695969596959F30F0F4E0910E01F09118\r
+:103380000F01E90FF11D877021E030E0A90102C0B3\r
+:10339000440F551F8A95E2F7CA01809591818923D0\r
+:1033A000818308953196E217F30729F090819813ED\r
+:1033B000F9CF1082F7CF089581E090E0E0910E01FF\r
+:1033C000F0910F01E80FF91F1082019680319105ED\r
+:1033D000A9F708959091CC01892B8093CC01089591\r
+:1033E00080959091CC0189238093CC01089510920F\r
+:1033F000CC0108959091CB01892B8093CB01089546\r
+:1034000080959091CB0189238093CB0108951092F0\r
+:10341000CB0108959091CA01892B8093CA01089528\r
+:1034200080959091CA0189238093CA0108951092D2\r
+:10343000CA0108958093B90108951092B9010895C1\r
+:1034400080910E0190910F01FC0131969C01205F4B\r
+:103450003F4F80E0919191118F5FE217F307D1F711\r
+:103460000895E0910E01F0910F018091CC018083CD\r
+:10347000E0910E01F0910F0190818091CB01892B99\r
+:103480008083E0910E01F0910F0190818091CA013B\r
+:10349000892B80838091B901882361F0E0910E012E\r
+:1034A000F0910F019081892B80830E94201A811155\r
+:1034B0001092B90180910E0190910F010C949D0E14\r
+:1034C000CF92DF92EF92FF926C01EE24FF24C114A1\r
+:1034D000D104E104F10421F0C701B60120E101C0EB\r
+:1034E00020E0C72ED82EE92EFF24C114D104E10418\r
+:1034F000F10419F0285FC701B6016B017C0154E0AB\r
+:10350000F694E794D794C7945A95D1F7C114D1048F\r
+:10351000E104F10419F02C5FC701B6016B017C01D5\r
+:1035200042E0F694E794D794C7944A95D1F7C11432\r
+:10353000D104E104F10419F02E5FC701B601DC01EA\r
+:10354000CB01B695A79597958795892B8A2B8B2BC1\r
+:1035500009F02F5F822FFF90EF90DF90CF900895BA\r
+:103560008091E601843021F11092CE0120E488E1BF\r
+:1035700090E00FB6F894A895809360000FBE20935A\r
+:10358000600080E00E948A0783B7817F846083BFE8\r
+:1035900083B7816083BF7894889583B78E7F83BF1C\r
+:1035A00088E10FB6F89480936000109260000FBE1F\r
+:1035B000089508950895CF930E94D91A0E947D041A\r
+:1035C0000E94DA1AC0E08C2F0E946B05811104C0A2\r
+:1035D000CF5FCE30C1F701C081E0CF9108950E9446\r
+:1035E00021140E94910E0C948A0782E084BD93E01E\r
+:1035F00095BD9AEF97BD80936E0008952FB7F8940C\r
+:103600008091CF019091D001A091D101B091D201D0\r
+:103610002FBF0895CF92DF92EF92FF920F931F93E7\r
+:103620002FB7F8944091CF015091D0016091D10112\r
+:103630007091D2012FBF6A017B01EE24FF248C011F\r
+:1036400020E030E0C016D106E206F30610F4415047\r
+:1036500051099A01281B390BC9011F910F91FF9045\r
+:10366000EF90DF90CF9008951F920F920FB60F92B8\r
+:1036700011248F939F93AF93BF938091CF0190912B\r
+:10368000D001A091D101B091D2010196A11DB11D2F\r
+:103690008093CF019093D001A093D101B093D20138\r
+:1036A000BF91AF919F918F910F900FBE0F901F9080\r
+:1036B00018950E948E0BF8942FEF87EA91E621501F\r
+:1036C00080409040E1F700C0000087E090EBDC0113\r
+:1036D0008093EF019093F001A093F101B093F20178\r
+:1036E0009CE088E10FB6F894A895809360000FBE27\r
+:1036F00090936000FFCFEF92FF920F931F93CF93B1\r
+:10370000DF93D82FC0E08C2F0E946B0500E010E003\r
+:10371000E82EF12CC701002E02C0959587950A94DA\r
+:10372000E2F780FD06C00F5F1F4F0630110591F7CD\r
+:1037300009C0602F7C2F80E00E943206D813F3CF9F\r
+:1037400081E004C0CF5FCE30F1F680E0DF91CF9111\r
+:103750001F910F91FF90EF900895CF93C82F8CE2A7\r
+:103760000E947B1B882321F08C2FCF910C947B1B14\r
+:1037700080E0CF910895CF930E94021D811102C075\r
+:103780000E94E81CC5E6C15049F00E947D048FE309\r
+:103790009CE90197F1F700C00000F5CF89E20E9493\r
+:1037A000AD1B811113C18AE20E94AD1B81110E94E1\r
+:1037B000E81C85E00E94AD1B81110E94591B0E94EC\r
+:1037C0000D1D8093CD0187E00E94AD1B8823A9F1D8\r
+:1037D0008BE10E94AD1B882351F08091CD0181FBCC\r
+:1037E000222720F991E0922790FB81F90EC08EE00C\r
+:1037F0000E94AD1B882361F08091CD0182FB2227BE\r
+:1038000020F991E0922790FB82F98093CD0115C0B9\r
+:1038100080E10E94AD1B9091CD01882341F093FB84\r
+:10382000222720F981E0822780FB93F904C0892FA9\r
+:10383000809580FB90F99093CD018091CD010E94FD\r
+:10384000111D0E941F1D8093E00180EE0E94AD1BA0\r
+:10385000882341F08091E001982F909590FB80F9AA\r
+:103860008093E00189E30E94AD1B882359F0809189\r
+:10387000E00181FB222720F991E0922790FB81F95A\r
+:103880008093E00182EE0E94AD1B882359F0809165\r
+:10389000E00182FB222720F991E0922790FB82F938\r
+:1038A0008093E00186EE0E94AD1B882359F0809141\r
+:1038B000E00183FB222720F991E0922790FB83F916\r
+:1038C0008093E00183EE0E94AD1B882359F0809124\r
+:1038D000E00184FB222720F991E0922790FB84F9F4\r
+:1038E0008093E00185E30E94AD1B882359F080910D\r
+:1038F000E00185FB222720F991E0922790FB85F9D2\r
+:103900008093E00181E30E94AD1B882359F08091F0\r
+:10391000E00186FB222720F991E0922790FB86F9AF\r
+:103920008093E00181E10E94AD1B882359F08091D2\r
+:10393000E00187FB222720F991E0922790FB87F98D\r
+:103940008093E0018091E0010E94231D8091E001BD\r
+:1039500087FB882780F980930D0187E20E94AD1BC9\r
+:10396000C82F8EE10E94AD1B8111C2608FE10E94C1\r
+:10397000AD1B8111C46080E20E94AD1B8111C86043\r
+:1039800081E20E94AD1B8111C06182E20E94AD1BE9\r
+:103990008111C06283E20E94AD1B8111C06484E288\r
+:1039A0000E94AD1B882311F0C06802C0CC2329F00F\r
+:1039B0008C2F0E941A1D6C2F03C00E94161D682FA9\r
+:1039C00070E080E090E0CF910C94DD17CF910895E6\r
+:1039D0006DEE7EEF80E090E00E94542360E082E094\r
+:1039E00090E00E94462360E083E090E00E9446233E\r
+:1039F00060E084E090E00E94462360E085E090E093\r
+:103A00000C94462380E090E00E94402321E08D3E0C\r
+:103A10009E4F09F020E0822F089582E090E00C9400\r
+:103A20003823682F82E090E00C94462383E090E0F6\r
+:103A30000C943823682F83E090E00C94462384E0B4\r
+:103A400090E00C943823682F84E090E00C94462397\r
+:103A50008091D50180FF0BC06091130185E0689FC4\r
+:103A6000B001112475956795759567952BC081FFF9\r
+:103A700009C06091130185E0689FB001112475951C\r
+:103A8000679520C082FF07C06091130185E0689FA1\r
+:103A9000B001112417C09091D6019923D1F0609103\r
+:103AA0001201961788F72091130185E0289F900155\r
+:103AB0001124929FA001939F500D112470E0CA0120\r
+:103AC0000E940A236038710540F46115710539F0D0\r
+:103AD00002C065E070E0862F08958FE7089581E0C9\r
+:103AE00008958091D50180FF08C06091110170E0B8\r
+:103AF000759567957595679521C081FF06C06091A2\r
+:103B0000110170E07595679519C082FF04C060913E\r
+:103B1000110170E010C09091D6019923C1F060911D\r
+:103B200010019617A0F780911101899FC0011124FF\r
+:103B300070E00E940A236038710528F46115710550\r
+:103B400021F0862F08958FE7089581E0089561E0C0\r
+:103B500070E0F4CF803F21F40E94281D819504C0BD\r
+:103B6000813F29F40E94281D8093D9010895823F46\r
+:103B700021F40E94281D819504C0833F29F40E94EE\r
+:103B8000281D8093D8010895893F19F40E94711D62\r
+:103B900005C08A3F31F40E94711D81958093DA013E\r
+:103BA00008958B3F21F40E94711D819504C08C3FC4\r
+:103BB00029F40E94711D8093DB010895843F21F454\r
+:103BC0008091D701816017C0853F21F48091D70192\r
+:103BD000826011C0863F21F48091D70184600BC0C0\r
+:103BE000873F21F48091D701886005C0883F31F478\r
+:103BF0008091D70180618093D70108958D3F21F492\r
+:103C00008091D50181600BC08E3F21F48091D50158\r
+:103C1000826005C08F3F29F48091D5018460809334\r
+:103C2000D5010895803F39F48091D90187FF6CC098\r
+:103C30001092D90169C0813F29F48091D9011816E9\r
+:103C4000BCF362C09091D801823F29F497FF5CC019\r
+:103C50001092D80159C0833F19F41916CCF354C0FF\r
+:103C6000893F41F48091DA0118160CF04DC0109292\r
+:103C7000DA014AC08A3F29F48091DA0187FF44C003\r
+:103C8000F6CF8B3F39F48091DB0187FF3DC0109266\r
+:103C9000DB013AC08C3F29F48091DB011816BCF39C\r
+:103CA00033C0843F21F48091D7018E7F17C0853FB8\r
+:103CB00021F48091D7018D7F11C0863F21F480913E\r
+:103CC000D7018B7F0BC0873F21F48091D701877F7D\r
+:103CD00005C0883F31F48091D7018F7E8093D70152\r
+:103CE00013C08D3F21F48091D5018E7F0BC08E3F94\r
+:103CF00021F48091D5018D7F05C08F3F29F48091FB\r
+:103D0000D5018B7F8093D5018091D80181110EC0A0\r
+:103D10008091D90181110AC08091DA01811106C018\r
+:103D20008091DB01811102C01092D601089587EDC8\r
+:103D300091E00E94A80E0E94FE1A9093D4018093F5\r
+:103D4000D30108951F93CF93DF938091D301909176\r
+:103D5000D4010E940A1BAC019091D601992321F055\r
+:103D60002091140130E006C0209115018AE0289FBF\r
+:103D7000900111244217530708F486C08091D8019E\r
+:103D8000C091D901D091DA011091DB01811107C0F6\r
+:103D9000C11176C0D11174C0111172C075C09F3F9E\r
+:103DA00019F09F5F9093D601181624F40E94281DE5\r
+:103DB0008093D8018091D80187FF05C00E94281DFB\r
+:103DC00081958093D8011C1624F40E94281D8093AD\r
+:103DD000D9018091D90187FF05C00E94281D8195D6\r
+:103DE0008093D9016091D801662339F1C091D9013E\r
+:103DF000CC2319F1772767FD7095872F972F0E94A5\r
+:103E00001B2223E333E343E35FE30E947F220E940C\r
+:103E1000E8216093D8016C2F772767FD7095872F75\r
+:103E2000972F0E941B2223E333E343E35FE30E94C7\r
+:103E30007F220E94E8216093D9011D1624F40E947C\r
+:103E4000711D8093DA018091DA0187FF05C00E941D\r
+:103E5000711D81958093DA01111624F40E94711D61\r
+:103E60008093DB018091DB0187FF05C00E94711DFB\r
+:103E700081958093DB01DF91CF911F910C94971E68\r
+:103E80009F3F09F08ECF96CFDF91CF911F9108957C\r
+:103E9000E7EDF1E085E0DF011D928A95E9F71092E8\r
+:103EA000D6011092D5010895833081F128F4813034\r
+:103EB00059F08230D1F00895853009F449C0B8F145\r
+:103EC000863009F456C0089580911501262F30E000\r
+:103ED000280F311D2F3F310524F4680F6093150121\r
+:103EE00008958FEF80931501089580911401262F76\r
+:103EF00030E0280F311D2F3F310524F4680F609307\r
+:103F0000140108958FEF8093140108958091130197\r
+:103F1000262F30E0280F311D2F3F310524F4680F84\r
+:103F20006093130108958FEF80931301089580919A\r
+:103F30001201262F30E0280F311D2F3F310524F4C8\r
+:103F4000680F6093120108958FEF80931201089516\r
+:103F500080911101262F30E0280F311D2F3F3105B0\r
+:103F600024F4680F6093110108958FEF809311017D\r
+:103F7000089580911001262F30E0280F311D2F3F2A\r
+:103F8000310524F4680F6093100108958FEF80933A\r
+:103F900010010895833011F128F4813049F0823006\r
+:103FA00091F00895853081F120F18630C1F10895B6\r
+:103FB00080911501681720F4861B809315010895E0\r
+:103FC00010921501089580911401681720F4861B42\r
+:103FD00080931401089510921401089580911301A3\r
+:103FE000681720F4861B8093130108951092130123\r
+:103FF000089580911201681720F4861B80931201A6\r
+:10400000089510921201089580911101681720F40B\r
+:10401000861B8093110108951092110108958091DB\r
+:104020001001681720F4861B8093100108951092E8\r
+:10403000100108950F931F938D3109F46AC008F0A1\r
+:104040003FC08E3009F484C0C0F4873009F46DC0DD\r
+:1040500068F4863009F0B5C08091CD01817F8E7FF4\r
+:104060008093CD0181E08093DD01ACC0883009F4FC\r
+:1040700057C08B3009F46AC0A4C0863109F466C009\r
+:1040800078F4803109F477C0813109F09AC00E9438\r
+:10409000211490910D0181E0892780930D0156C074\r
+:1040A000893109F453C08B3109F08BC08091CD0167\r
+:1040B00081FB222720F991E0922790FB81F951C0E2\r
+:1040C000853309F475C048F4873209F471C008F4E7\r
+:1040D0005EC0893209F46CC074C0833430F48A3312\r
+:1040E00008F053C0883391F16CC0833409F460C088\r
+:1040F000883409F066C00E9421140FEF13ED20E30D\r
+:10410000015010402040E1F700C000000E94591B00\r
+:104110001DC00E94A2210E94910E0E948A0716C013\r
+:104120000E940D1D0E941F1D11C09091CD01892F6D\r
+:104130008095817080FB90F929F09660986090934B\r
+:10414000CD0140C0997F977F9093CD0181E03AC027\r
+:104150008091CD0182FB222720F991E0922790FBEC\r
+:1041600082F98093CD01992389F38091CD018160FB\r
+:104170008093CD01EBCF8091CD0183FB222720F9E5\r
+:1041800091E0922790FB83F9ECCF895301C08D51C8\r
+:1041900041E050E060E070E08A019B0104C0000F44\r
+:1041A000111F221F331F8A95D2F7C901B80104C01D\r
+:1041B00061E070E080E090E00E94DD170E94211431\r
+:1041C000C5CF80E01F910F91089580E0089580E0B1\r
+:1041D0000895CF93C82F8091DD01813079F018F0D8\r
+:1041E0008230E9F187C0E0910E01F0910F018081EA\r
+:1041F000813169F0823209F07FC009C0E0910E017F\r
+:10420000F0910F018081813111F0823261F48C2FA5\r
+:104210000E94E520811104C08C2F0E941A201DC02D\r
+:1042200081E090E01AC08C2F0E94E720811114C019\r
+:10423000C43179F048F4CB3079F0C03109F060C076\r
+:1042400082E08093DD0108C0C93219F0C83321F043\r
+:1042500057C01092DD0154C081E0817053C0C93253\r
+:1042600089F118F5C43171F1A8F4C73009F046C0DE\r
+:104270008AE08093150194E19093140193E0909368\r
+:1042800013018093120188E08093110188E28093EA\r
+:10429000100134C0CE51C63088F5EC2FF0E0E65D59\r
+:1042A000FE4F80818093DC0129C0CE34E9F020F4F8\r
+:1042B000CB3421F56AE013C0C13579F0C235F1F491\r
+:1042C00061E00DC08091DC01882319F01092DC01BF\r
+:1042D00015C081E08093DD0115C061E006C08091CA\r
+:1042E000DC010E94541F0AC06AE08091DC010E9438\r
+:1042F000CA1F04C01092DD0180E004C081E002C04A\r
+:1043000080E0ABCFCF910895E1E8F0E08081886054\r
+:1043100080838081816080838FB7F89493E090934D\r
+:10432000890090ED909388008FBF0895EFE6F0E04C\r
+:104330008081826080830895EFE6F0E080818D7F48\r
+:1043400080830895EFE6F0E0908182E08927808302\r
+:1043500008951F920F920FB60F9211242F933F933F\r
+:104360004F935F936F937F938F939F93AF93BF937D\r
+:10437000EF93FF938091DE019091DF01019690937E\r
+:10438000DF018093DE01811103C082E00E948A0771\r
+:10439000E091DF01E695E695F0E0EA5CFA4FE49102\r
+:1043A0008091DE018E1303C080E00E948A07FF9196\r
+:1043B000EF91BF91AF919F918F917F916F915F919D\r
+:1043C0004F913F912F910F900FBE0F901F90189516\r
+:1043D00004D06894B1118DC0089570D088F09F57B3\r
+:1043E00090F0B92F9927B751A0F0D1F0660F771F41\r
+:1043F000881F991F1AF0BA95C9F712C0B13081F021\r
+:1044000077D0B1E0089574C0672F782F8827B85F00\r
+:1044100039F0B93FCCF3869577956795B395D9F781\r
+:104420003EF490958095709561957F4F8F4F9F4F8B\r
+:104430000895E89409C097FB3EF490958095709597\r
+:1044400061957F4F8F4F9F4F9923A9F0F92F96E9E0\r
+:10445000BB279395F695879577956795B795F11155\r
+:10446000F8CFFAF4BB0F11F460FF1BC06F5F7F4FF2\r
+:104470008F4F9F4F16C0882311F096E911C0772304\r
+:1044800021F09EE8872F762F05C0662371F096E80D\r
+:10449000862F70E060E02AF09A95660F771F881FDC\r
+:1044A000DAF7880F9695879597F9089557FD9058F4\r
+:1044B000440F551F59F05F3F71F04795880F97FBE8\r
+:1044C000991F61F09F3F79F08795089512161306A2\r
+:1044D0001406551FF2CF4695F1DF08C016161706D1\r
+:1044E0001806991FF1CF8695710561050894089506\r
+:1044F000E894BB2766277727CB0197F908950BD05F\r
+:1045000078C069D028F06ED018F0952309F05AC011\r
+:104510005FC01124EECFCADFA0F3959FD1F3950FB2\r
+:1045200050E0551F629FF001729FBB27F00DB11D37\r
+:10453000639FAA27F00DB11DAA1F649F6627B00DC7\r
+:10454000A11D661F829F2227B00DA11D621F739FB0\r
+:10455000B00DA11D621F839FA00D611D221F749FBE\r
+:104560003327A00D611D231F849F600D211D822F05\r
+:10457000762F6A2F11249F5750408AF0E1F088234C\r
+:104580004AF0EE0FFF1FBB1F661F771F881F915059\r
+:104590005040A9F79E3F510570F014C0AACF5F3F6D\r
+:1045A000ECF3983EDCF3869577956795B795F7958C\r
+:1045B000E7959F5FC1F7FE2B880F911D9695879514\r
+:1045C00097F9089597F99F6780E870E060E0089593\r
+:1045D0009FEF80EC089500240A941616170618061B\r
+:1045E0000906089500240A941216130614060506F7\r
+:1045F0000895092E0394000C11F4882352F0BB0F88\r
+:1046000040F4BF2B11F460FF04C06F5F7F4F8F4FEA\r
+:104610009F4F089597FB072E16F4009407D077FD5F\r
+:1046200009D00E94242307FC05D03EF49095819583\r
+:104630009F4F0895709561957F4F0895EE0FFF1F6E\r
+:104640000590F491E02D0994AA1BBB1B51E107C012\r
+:10465000AA1FBB1FA617B70710F0A61BB70B881F12\r
+:10466000991F5A95A9F780959095BC01CD010895A1\r
+:10467000F999FECF92BD81BDF89A992780B508952A\r
+:10468000A8E1B0E042E050E00C945B23262FF999BA\r
+:10469000FECF1FBA92BD81BD20BD0FB6F894FA9A25\r
+:1046A000F99A0FBE019608950E944623272F0C9475\r
+:1046B0004723DC01CB01FC01F999FECF06C0F2BD16\r
+:1046C000E1BDF89A319600B40D9241505040B8F7D0\r
+:0646D0000895F894FFCFED\r
+:1046D60020028C071A08F707C3078F070101BA01E2\r
+:1046E60028080A03140A3F4D3639F704AA0474044D\r
+:1046F6003B04CE03E7030004190401020304050684\r
+:044706000708090097\r
+:00000001FF\r
- **BASE** is [Norman layout](https://normanlayout.info/).
- **SYMB** for numbers and symbols.
- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
-- **ARRW** for navigation.
+- **ARRW** for navigation (same fingers for arrows as IJKL on QWERTY).
+
+Looking for HJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx-hjkl/).
[![keyboard-layout](romanzolotarev-norman-plover-osx.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
- Tap `F2` to copy screenshot to the clipboard.
- Hold `SHIFT` and tap `F2` to save screenshot as a file.
- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
-- Tap `F14`, `F15` to adjust display brightness.
-
-**IMPORTANT**: If you have another keyboard connected via Bluetooth, then `F14` and `F15` will not work.
-Turn off that Bluetooth keyboard. Re-plug you ErgoDox. Enjoy!
+- Tap `F14`, `F15` to adjust display brightness.
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
## CTRL/ESC
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define QWRT 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = KEYMAP(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5,
+ KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS,
+ KC_LCTL, KC_A, KC_S, KC_E, KC_T, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT,
+ //
+ /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ /*-*/ TG(QWRT), KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS,
+ /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT,
+ /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_MPLY, KC_MNXT,
+ KC_MPRV,
+ KC_RALT, KC_QUOT, KC_SPC
+ ),
+ [QWRT] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_E, KC_R, KC_T, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_D, KC_F, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ //
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
+ /*-*/ /*-*/ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_TRNS,
+ /*-*/ KC_TRNS, KC_N, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+};
+
+// 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 QWRT:
+ ergodox_right_led_1_on();
+ break;
+ default:
+ break;
+ }
+};
--- /dev/null
+# Roman's Layout
+
+There are two layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **QWRT** is QWERTY.
+
+[![keyboard-layout](romanzolotarev-norman-qwerty-osx.png)](http://www.keyboard-layout-editor.com/#/gists/3b236f450da474dc506a5a80390c3cc7)
+
+## Switching
+
+- Tap `QWRT` to toggle **QWRT**.
+
+## LEDs
+
+- Red: QWRT is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+
+## CTRL/ESC
+
+Both CTRL and ESC are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- Hold left `SHIFT` and right `SHIRT` and then tap `N`.
--- /dev/null
+:100000000C940F020C9453020C9453020C94530260\r
+:100010000C9453020C9453020C9453020C9453020C\r
+:100020000C9453020C9453020C94070C0C94D90CAE\r
+:100030000C9453020C9453020C9453020C945302EC\r
+:100040000C9453020C94A3210C9453020C9453026D\r
+:100050000C9453020C94321B0C9453020C945302D4\r
+:100060000C9453020C9453020C9453020C945302BC\r
+:100070000C9453020C9453020C9453020C945302AC\r
+:100080000C9453020C9453020C9453020C9453029C\r
+:100090000C9453020C9453020C9453020C9453028C\r
+:1000A0000C9453020C9453020C945302460D680DA9\r
+:1000B000560E680D560EAD0DD00D560E250E380E8F\r
+:1000C0002411241161116111A411E211FB13FB131E\r
+:1000D000FB11FB13FC12FC12CF13FB13FB13E613F3\r
+:1000E00035002B00E000E1003A0000001E00140083\r
+:1000F00004001D003B00E2001F001A0016001B0058\r
+:100100003C00297120000700080006003D002A007D\r
+:100110002100090017001900E300A90022000E00C9\r
+:100120000A0005000000AA003E00310000002F0078\r
+:100130000000A8003F000154000030000000AE00A5\r
+:1001400023000D001C0013000000AB002400180069\r
+:1001500011001000E700AC00250015000C0036006F\r
+:1001600050002C0026000F00120037005100340010\r
+:10017000270033000B0038005200E6002E002D004F\r
+:100180002800E5004F00000001000100010001000F\r
+:100190000100000001000100010001000100010058\r
+:1001A0000100010001000100010001000100080040\r
+:1001B0000700010001000100010015000900010015\r
+:1001C0000100010001001700010001000000010012\r
+:1001D0000100010000000100000001000100010019\r
+:1001E000000001000000010001001C000B001100D4\r
+:1001F00000000100010018000D00010001000100D5\r
+:1002000001000C000E0001000100010001001200BD\r
+:100210000F00010001000100010013003300010084\r
+:1002200001000100010001000100010001000000C7\r
+:1002300016034500720067006F0044006F007800ED\r
+:10024000200045005A0000001603450072006700B8\r
+:100250006F0044006F007800200045005A00000045\r
+:100260000403090409026D00040100A0FA09040056\r
+:10027000000103010100092111010001223F0007D3\r
+:1002800005810308000A09040100010301020009B5\r
+:100290002111010001224D000705820308000A090F\r
+:1002A00004020001030000000921110100012236AF\r
+:1002B000000705830308000A090403000103000086\r
+:1002C00000092111010001223900070584031000F3\r
+:1002D000011201100100000008EDFE0713010001EA\r
+:1002E00002000105010906A101050719E029E7152A\r
+:1002F0000025019508750181020508190129059558\r
+:1003000005750191029501750391010507190029F1\r
+:100310007715002501957875018102C005010980D6\r
+:10032000A101850216010026B7001A01002AB700B4\r
+:10033000751095018100C0050C0901A10185031606\r
+:100340000100269C021A01002A9C02751095018169\r
+:1003500000C005010902A1010901A1000509190157\r
+:100360002905150025019505750181029501750383\r
+:1003700081010501093009311581257F9502750834\r
+:10038000810609381581257F950175088106050CC0\r
+:100390000A38021581257F950175088106C0C005C0\r
+:1003A000010906A101050719E029E71500250195B6\r
+:1003B0000875018102950175088101050819012957\r
+:1003C00005950575019102950175039101050719C0\r
+:1003D0000029FF150025FF950675088100C0000063\r
+:1003E000000000000000000000010204060A0F17D0\r
+:1003F000202C3A4A5D71879DB3C7DAE9F5FCFFFC12\r
+:10040000F5E9DAC7B39D87715D4A3A2C20170F0AC8\r
+:10041000060402010000000000000000000011249A\r
+:100420001FBECFEFDAE0DEBFCDBF04B603FE24C0AF\r
+:100430008091EE019091EF01A091F001B091F10156\r
+:100440008730904BA740B04BB9F41092EE01109258\r
+:10045000EF011092F0011092F10114BE84B7877F72\r
+:1004600084BF88E10FB6F89480936000109260001A\r
+:100470000FBEE0E0FFE3099511E0A0E0B1E0E4ED9C\r
+:10048000F6E402C005900D92A433B107D9F711E04C\r
+:10049000A4E3B1E001C01D92AE3EB107E1F70E94B6\r
+:1004A0004B090C9468230C94000008950895609102\r
+:1004B000B1017091B2018091B3019091B4010E9499\r
+:1004C0005E1A56985E9825982D9826982E9827980B\r
+:1004D0002F98813011F4259A2D9A08950C94570283\r
+:1004E00056985E9825982D9826982E9827982F989C\r
+:1004F0008FEF90E0909389008093880090938B0019\r
+:1005000080938A0090938D0080938C00259A2D9A79\r
+:100510002FEF80E792E0215080409040E1F700C04B\r
+:100520000000269A2E9A2FEF80E792E0215080401B\r
+:100530009040E1F700C00000279A2F9A2FEF80E744\r
+:1005400092E0215080409040E1F700C000002598E3\r
+:100550002D982FEF80E792E0215080409040E1F706\r
+:1005600000C0000026982E982FEF80E792E02150DF\r
+:1005700080409040E1F700C0000027982F985698DF\r
+:100580005E9825982D9826982E9827982F9808954C\r
+:1005900089EA8093800089E08093810024982C98D8\r
+:1005A0003F988AB18F748AB96E98479A8BB1806BE5\r
+:1005B0008BB9769A0E9470020C94560280E2809366\r
+:1005C00000018091340181110EC00E942D0381E051\r
+:1005D000809334012FEF83ED90E3215080409040D1\r
+:1005E000E1F700C0000080E40E9433038093000123\r
+:1005F00081112EC00E945D0380930001811128C0EB\r
+:100600000E945D0380930001811122C08FE30E944C\r
+:100610005D038093000181111BC00E94550380E49B\r
+:100620000E94330380930001811112C08CE00E946C\r
+:100630005D038093000181110BC00E945D038093D4\r
+:100640000001811105C08FE30E945D0380930001CA\r
+:100650000E9455038091000108951092B9008AE02C\r
+:100660008093B800089594EA9093BC009091BC00E8\r
+:1006700097FFFCCF9091B900987F983021F090318E\r
+:1006800011F081E008958093BB0084E88093BC0062\r
+:100690008091BC0087FFFCCF8091B900887F8831B2\r
+:1006A00011F0803471F780E0089584E98093BC00F4\r
+:1006B0008091BC0084FDFCCF08958093BB0084E84A\r
+:1006C0008093BC008091BC0087FFFCCF9091B90063\r
+:1006D000987F81E0983209F480E0089584E880935F\r
+:1006E000BC008091BC0087FFFCCF8091BB000895C7\r
+:1006F00080910001811115C080E40E943303809332\r
+:10070000000181110CC082E10E945D038093000111\r
+:10071000811105C08FEF0E945D03809300010E944C\r
+:10072000550384B1807F84B985B1807F85B98AB152\r
+:10073000837F8AB98BB1837F8BB93E9846980895A1\r
+:100740000E94DE02809300010E94780380B38C70C7\r
+:1007500080BB81B3836F81BBA6E3B1E0E4E4F1E049\r
+:100760008EE08E0F11921D928E13FCCF0C94C80256\r
+:10077000BF92CF92DF92EF92FF920F931F93CF938E\r
+:10078000DF9380910001882379F0809135018F5F9C\r
+:1007900080933501811108C00E94DE028093000120\r
+:1007A000811102C00E94700206E311E0C0E0D0E0B7\r
+:1007B000DD24D39482E0C82EEE24E394F12CC730DC\r
+:1007C000D10500F580910001811164C080E40E9490\r
+:1007D000330380930001811112C082E10E945D0306\r
+:1007E0008093000181110BC0C7010C2E01C0880F3E\r
+:1007F0000A94EAF780950E945D03809300010E94AD\r
+:10080000550348C0CA30A1F028F4C83059F0C930A7\r
+:1008100061F005C0CC3089F070F0CD3089F0209ABD\r
+:10082000289810C0219A29980DC0229A2A980AC0A7\r
+:10083000239A2B9807C0529A01C0539A5B9802C022\r
+:100840003E9A469890EA9A95F1F79FB1799902C03D\r
+:1008500082E001C080E091709D25982B7C9902C0B8\r
+:1008600084E001C080E0892B7D9902C038E001C09E\r
+:1008700030E0832B7E9902C020E101C020E0822B72\r
+:100880009FB19095991F9927991F9295990F907EE6\r
+:10089000892B0FC080910001811149C080E40E9422\r
+:1008A000330380930001882379F1B12C0E94550312\r
+:1008B0008B2DF8019081981719F08083C092010167\r
+:1008C0000E94780321960F5F1F4FCE30D10509F0AB\r
+:1008D00076CF80910101882361F1815080930101DD\r
+:1008E000882339F08FE99FE00197F1F700C00000FD\r
+:1008F00020C0A4E4B1E0E6E3F1E0CF01825F919192\r
+:100900009D938E13FCCF15C083E10E945D038093FD\r
+:1009100000018111CACF81E40E943303809300015A\r
+:100920008111C3CF0E946E03B82EB094BFCF80E078\r
+:10093000C0CF0E946E0281E0DF91CF911F910F9195\r
+:10094000FF90EF90DF90CF90BF900895E82FF0E0F8\r
+:10095000EC5BFE4F808108950895089596E0799F9D\r
+:10096000F001112494E5899FE00DF11D1124E60F9B\r
+:10097000F11DEE0FFF1FE052FF4F859194910895F6\r
+:10098000880F991FFC01E05AF040859194910895D9\r
+:10099000880F991FFC01E052FF4F859194910895B3\r
+:1009A0000F931F93CF93DF93EC018115904350F584\r
+:1009B000C11580E2D80708F0B3C0CB3BD10590F455\r
+:1009C000C83AD10508F05AC0C53AD10508F04BC065\r
+:1009D000C430D10508F0BBC1219709F0B5C101E0D1\r
+:1009E00010E0F5C1CF3FD10511F008F0B0C1C03F14\r
+:1009F000D10508F092C0CE01805E9109089708F4F5\r
+:100A0000A6C1A2C1C11591E5D907A8F4C23020E55D\r
+:100A1000D20708F09EC0C11580E5D80709F485C04B\r
+:100A200008F091C0C11520E4D20708F08DC1DD2780\r
+:100A30008E01106CCCC1C11580E8D80758F4C115DF\r
+:100A400090E7D90708F07CC1C11520E6D20708F469\r
+:100A500022C17AC1C11580E9D80708F075C1DF70DD\r
+:100A60008E01106AB4C1C53AD10509F472C1C63A03\r
+:100A7000D10509F071C102E810E4A9C1C83AD10555\r
+:100A800009F46DC1C93AD10509F46CC1CA3AD1055E\r
+:100A900009F46BC1CB3AD10509F46AC1CC3AD1054E\r
+:100AA00009F469C1CD3AD10509F468C1C03BD1054B\r
+:100AB00009F467C1CE3AD10509F466C1CF3AD10530\r
+:100AC00009F465C1C13BD10509F464C1C23BD1053C\r
+:100AD00009F463C1C33BD10509F462C1C43BD1052C\r
+:100AE00009F461C1C53BD10509F460C1C63BD1051C\r
+:100AF00009F45FC1C73BD10509F45EC1C83BD1050C\r
+:100B000009F45DC1C93BD10509F45CC1CA3BD105FB\r
+:100B100009F45BC100E014E45AC18E01106557C1AD\r
+:100B2000CE019F700E94C80453C10E941F149FEF02\r
+:100B300024E38CE0915020408040E1F700C00000A9\r
+:100B40000E94571B44C18091CD0181608093CD01EB\r
+:100B50003EC10E94001D811102C00E94E61C0E943D\r
+:100B60001D1D90E09093EE018093ED01C23090E561\r
+:100B7000D90721F48091ED01816086C0C43020E561\r
+:100B8000D20721F48091ED0182607EC0C63080E5FD\r
+:100B9000D80721F48091ED01846076C0C83090E5DB\r
+:100BA000D90719F48091ED0127C0CA3020E5D2079A\r
+:100BB00021F48091ED01806167C0CC3080E5D807D9\r
+:100BC00021F48091ED0180625FC0CE3090E5D907BD\r
+:100BD00021F48091ED01806457C0C03120E5D20737\r
+:100BE00021F48091ED0180684FC0C23180E5D807C3\r
+:100BF00029F48091ED018460886046C0C33090E59F\r
+:100C0000D90721F48091ED018E7F3EC0C53020E5EB\r
+:100C1000D20721F48091ED018D7F36C0C73080E589\r
+:100C2000D80721F48091ED018B7F2EC0C93090E56B\r
+:100C3000D90719F48091ED0126C0CB3020E5D20709\r
+:100C400021F48091ED018F7E1FC0CD3080E5D80763\r
+:100C500021F48091ED018F7D17C0CF3090E5D90749\r
+:100C600021F48091ED018F7B0FC0C13120E5D207C7\r
+:100C700021F48091ED018F7707C0C331D04531F465\r
+:100C80008091ED018B7F877F8093ED018091ED0155\r
+:100C90000E94211D9CC08D2F99278F70992781302C\r
+:100CA0009105D9F49E012370332702C0880F991F44\r
+:100CB0002A95E2F79C688E0144E0000F111F4A95C7\r
+:100CC000E1F700271370802B912B53E0CC0FDD1F31\r
+:100CD0005A95E1F7C076DD272FC08230910531F4B7\r
+:100CE000DC2FCC278E01016F106A71C08330910513\r
+:100CF00069F4CE018370992701E010E002C0000F73\r
+:100D0000111F8A95E2F7C8019C680FC0049709F08B\r
+:100D10005EC0CE018370992701E010E002C0000F91\r
+:100D2000111F8A95E2F7C8019A6823E0CC0FDD1FF6\r
+:100D30002A95E1F7C07ED7708C010C2B1D2B47C084\r
+:100D4000DF708E01106243C000E010E040C08E01F1\r
+:100D50003EC001E810E43BC003E810E438C002EEF6\r
+:100D600014E435C009EE14E432C00AEE14E42FC0D6\r
+:100D700005EB14E42CC006EB14E429C007EB14E4E3\r
+:100D800026C00CEC14E423C00DEC14E420C003E8EE\r
+:100D900015E41DC00AE815E41AC002E915E417C0FD\r
+:100DA00004E915E414C001E216E411C003E216E4FC\r
+:100DB0000EC004E216E40BC005E216E408C006E229\r
+:100DC00016E405C007E216E402C00AE216E4C80110\r
+:100DD000DF91CF911F910F91089596E0799FF001D7\r
+:100DE000112494E5899FE00DF11D1124E60FF11DFA\r
+:100DF000EE0FFF1FE052FF4F85919491803E9105C9\r
+:100E0000E0F4803C910558F58133910509F46FC0F9\r
+:100E100048F48932910509F463C08A32910509F4D6\r
+:100E20006DC072C089339105E9F082389105D1F027\r
+:100E30008533910509F44DC067C0833E910581F16A\r
+:100E400038F4803E9105B9F0823E9105D9F05CC03E\r
+:100E5000863E910561F1873E9105A1F155C00E9442\r
+:100E6000C00408952091ED0120FD02C021FF4CC077\r
+:100E700080EE90E049C08091ED0180FFF9CF89E3D9\r
+:100E800090E042C08091ED0182FF0EC08091ED01A3\r
+:100E900084FF03C080E090E037C083EE90E034C070\r
+:100EA0008091ED0182FFF2CF82EE90E02DC0809123\r
+:100EB000ED0183FF0BC08091ED0184FDEBCF87EE48\r
+:100EC00090E022C08091ED0183FFF5CF86EE90E0A7\r
+:100ED0001BC08091ED0185FF07C089E290E014C03E\r
+:100EE0008091ED0185FFF9CF85E390E00DC0809101\r
+:100EF000ED0186FF07C08AE290E006C08091ED0117\r
+:100F000086FFF9CF81E390E00E94D0040895089510\r
+:100F10000C948707809162010895CF93DF9300D0EE\r
+:100F20001F92CDB7DEB79C018091E401843019F5A2\r
+:100F300093E099833B832A839093E9008FEF90910C\r
+:100F4000E800815095FD06C095ED9A95F1F70000F7\r
+:100F50008111F5CF8091E80085FF0DC040E050E0A1\r
+:100F600063E070E0CE0101960E94F7098091E800ED\r
+:100F70008E778093E8000F900F900F90DF91CF91C4\r
+:100F80000895CF93DF9300D01F92CDB7DEB72091A5\r
+:100F9000E401243021F522E029839B838A8383E0C6\r
+:100FA0008093E9008FEF9091E800815095FD06C095\r
+:100FB00095ED9A95F1F700008111F5CF8091E80049\r
+:100FC00085FF0DC040E050E063E070E0CE01019687\r
+:100FD0000E94F7098091E8008E778093E8000F90D7\r
+:100FE0000F900F90DF91CF9108952091E40124306C\r
+:100FF000F1F422E02093E9002FEF3091E800215036\r
+:1010000035FD06C035ED3A95F1F700002111F5CF19\r
+:101010002091E80025FF0BC040E050E065E070E063\r
+:101020000E94F7098091E8008E778093E800089588\r
+:10103000CF93DF93EC019091E401943009F046C026\r
+:1010400080910C018823D9F080910D018823B9F09B\r
+:101050009093E9008FEF9091E800815095FD06C0D4\r
+:1010600095E19A95F1F700008111F5CF8091E800A4\r
+:1010700085FF2CC040E050E060E170E017C081E0E7\r
+:101080008093E9008FEF9091E800815095FD06C0B4\r
+:1010900095ED9A95F1F700008111F5CF8091E80068\r
+:1010A00085FF14C040E050E068E070E0CE010E948F\r
+:1010B000F7098091E8008E778093E80080E1FE01D7\r
+:1010C000A2E5B1E001900D928A95E1F7DF91CF9111\r
+:1010D00008958091E301811109C00E948C0B0E9448\r
+:1010E000E90B8091E20084608093E2000895109201\r
+:1010F000E301089508950C9490210E94ED1A0E9436\r
+:1011000096210E948F0E0C94880742E061EC81E0EA\r
+:101110000E94060B42E061EC82E00E94060B42E076\r
+:1011200061EC83E00E94060B42E161EC84E00C94E8\r
+:10113000060B8091E601833009F455C030F481300C\r
+:1011400071F0823009F48EC008958A3009F47AC0B3\r
+:101150008B3009F460C0893009F09CC020C08091B8\r
+:10116000E501813A09F096C08091E800877F80937D\r
+:10117000E8008091E9019091EA01892B21F460E176\r
+:1011800082E591E003C060E080E090E070E00E94C2\r
+:10119000420A8091E8008B778093E800089580915F\r
+:1011A000E501813209F076C08091E9019091EA0170\r
+:1011B000009719F0039709F06DC08091E800877FD0\r
+:1011C0008093E8008091E80082FD05C08091E401F1\r
+:1011D0008111F8CF5FC08091F1008093620180910E\r
+:1011E000E8008B7753C08091E501813A09F052C045\r
+:1011F0008091E9019091EA01892B09F04BC080911F\r
+:10120000E800877F8093E8008091E80080FFFCCFB2\r
+:1012100080910C0136C08091E5018132D9F5809131\r
+:10122000E9019091EA01892BA9F58091E800877F77\r
+:101230008093E8000E943B0B8091E70180930C01B2\r
+:101240000C941F148091E501813221F58091E80012\r
+:10125000877F8093E8000E943B0B8091E801809398\r
+:10126000630108958091E501813AA1F48091E8003D\r
+:10127000877F8093E8008091E80080FFFCCF809119\r
+:1012800063018093F1008091E8008E778093E800FD\r
+:101290000C943B0B089584B7877F84BF88E10FB619\r
+:1012A000F89480936000109260000FBE90E080E898\r
+:1012B0000FB6F89480936100909361000FBE0E9476\r
+:1012C000DE0E0E948C0B0E94E90B8091E20084608C\r
+:1012D0008093E20078940E946F0E0E94E00E82E0FC\r
+:1012E00091E00E948A0E0E947E218091E401853067\r
+:1012F00069F40E94AE1A8091E2018823B1F30E9442\r
+:10130000D91A882391F30E94E109EFCF0E94E60EDB\r
+:10131000ECCF292F332723303105C9F064F4213075\r
+:10132000310581F02230310509F043C08DE690E0AF\r
+:1013300024E632E042C021323105F1F0223231059B\r
+:1013400041F137C082E190E021ED32E036C09927CB\r
+:101350008130910541F08230910541F0892B49F5AA\r
+:10136000E0E6F2E005C0E8E4F2E002C0E0E3F2E02B\r
+:10137000849190E09F0121C06430D8F4E62FF0E022\r
+:10138000EE0FFF1FEE5DFE4F2081318189E090E07E\r
+:1013900014C0643070F470E0FB01EE0FFF1FE65ED6\r
+:1013A000FE4F20813181FB01EA5EFE4F808190E09B\r
+:1013B00004C080E090E020E030E0FA013183208337\r
+:1013C000089580E189BD82E189BD09B400FEFDCFA9\r
+:1013D0008091D8008F7D8093D8008091E00082605A\r
+:1013E0008093E0008091E00081FDFCCF0895CF92D2\r
+:1013F000DF92EF92FF920F931F93CF93DF93EC0155\r
+:101400008B016A010E945A0B811133C0C114D104AF\r
+:1014100039F0F60180819181081B190BC80FD91F83\r
+:10142000E12CF12C0115110519F18091E80085FDE1\r
+:1014300016C08091E8008E778093E800C114D10433\r
+:1014400049F0F60180819181E80EF91EF182E08277\r
+:1014500085E00FC00E945A0B882321F30AC08991AE\r
+:101460008093F10001501109FFEFEF1AFF0ADACF64\r
+:1014700080E0DF91CF911F910F91FF90EF90DF906F\r
+:10148000CF9008952091EB013091EC01261737079A\r
+:1014900048F06115710539F42091E8002E7720930A\r
+:1014A000E80001C0B90140E061157105A9F1209182\r
+:1014B000E401222309F443C0253009F442C02091FD\r
+:1014C000E80023FD40C02091E80022FD32C02091B9\r
+:1014D000E80020FFE9CF4091F3002091F20030E0D6\r
+:1014E000342BFC01CF016115710559F0283031050D\r
+:1014F00040F481918093F100615071092F5F3F4F5B\r
+:10150000F1CF41E02830310509F040E02091E800BA\r
+:101510002E772093E800C8CF4111C9CF0AC080912F\r
+:10152000E401882361F0853061F08091E80083FD5B\r
+:101530000AC08091E80082FFF2CF80E0089582E047\r
+:10154000089583E0089581E008952091EB013091A2\r
+:10155000EC012617370748F06115710539F4209121\r
+:10156000E8002E772093E80001C0B901FC0120E0DB\r
+:101570006115710591F18091E401882309F440C05F\r
+:10158000853009F43FC08091E80083FD3DC0809123\r
+:10159000E80082FD2FC08091E80080FFE9CF209114\r
+:1015A000F3008091F20090E0922B6115710559F0E3\r
+:1015B0008830910540F424912093F10031966150D8\r
+:1015C00071090196F2CF21E0089709F020E080919F\r
+:1015D000E8008E778093E800CBCF2111CCCF0AC0F2\r
+:1015E0008091E401882361F0853061F08091E8000A\r
+:1015F00083FD0AC08091E80082FFF2CF80E0089569\r
+:1016000082E0089583E0089581E00895982F97304F\r
+:1016100058F59093E900981739F07091EC002091FB\r
+:10162000ED005091F00003C0242F762F50E021FFF1\r
+:1016300019C03091EB003E7F3093EB003091ED000C\r
+:101640003D7F3093ED003091EB0031603093EB0043\r
+:101650007093EC002093ED005093F0002091EE0089\r
+:1016600027FF07C09F5FD3CF8F708093E90081E091\r
+:10167000089580E008958091E50187FF11C0809171\r
+:10168000E80082FD05C08091E4018111F8CF11C00E\r
+:101690008091E8008B770BC08091E401882349F0AA\r
+:1016A0008091E80080FFF8CF8091E8008E778093EA\r
+:1016B000E80008952091E4003091E50095E640911E\r
+:1016C000EC00842F817040FF22C08091E80080FDF3\r
+:1016D0001CC08091E401882391F0853091F08091C5\r
+:1016E000EB0085FD10C04091E4005091E5004217E9\r
+:1016F000530729F39A01915011F784E0089582E08D\r
+:10170000089583E0089581E0089580E00895409170\r
+:10171000E80042FFDECF08950E94FA0B0E94020CFF\r
+:10172000E0EEF0E0808181608083E8EDF0E0808190\r
+:101730008F77808319BCA7EDB0E08C918E7F8C935E\r
+:1017400080818F7E80831092E30108950F931F9311\r
+:10175000CF93DF930E94FA0B0E94020CC8EDD0E0F9\r
+:1017600088818F77888388818068888388818F7D4E\r
+:10177000888319BC1092E4011092E0011092E201FA\r
+:101780001092E10100EE10E0F80180818B7F8083F0\r
+:1017900088818160888342E060E080E00E94060BDF\r
+:1017A000E1EEF0E080818E7F8083E2EEF0E08081E8\r
+:1017B00081608083808188608083F80180818E7F52\r
+:1017C0008083888180618883DF91CF911F910F9101\r
+:1017D0000895E8EDF0E080818F7E8083E7EDF0E012\r
+:1017E00080818160808384E082BF81E08093E30117\r
+:1017F0000C94A60BE8EDF0E080818E7F8083109240\r
+:10180000E20008951092DA001092E10008951F920C\r
+:101810000F920FB60F9211242F933F934F935F9324\r
+:101820006F937F938F939F93AF93BF93EF93FF93A8\r
+:101830008091E10082FF0BC08091E20082FF07C02F\r
+:101840008091E1008B7F8093E1000E946E0E809179\r
+:10185000DA0080FF1FC08091D80080FF1BC08091FC\r
+:10186000DA008E7F8093DA008091D90080FF0DC06E\r
+:1018700080E189BD82E189BD09B400FEFDCF81E030\r
+:101880008093E4010E94690805C019BC1092E4012C\r
+:101890000E9477088091E10080FF19C08091E200EA\r
+:1018A00080FF15C08091E2008E7F8093E2008091DE\r
+:1018B000E20080618093E2008091D8008062809392\r
+:1018C000D80019BC85E08093E4010E947B088091D8\r
+:1018D000E10084FF30C08091E20084FF2CC080E1F1\r
+:1018E00089BD82E189BD09B400FEFDCF8091D80099\r
+:1018F0008F7D8093D8008091E1008F7E8093E100FE\r
+:101900008091E2008F7E8093E2008091E20081600E\r
+:101910008093E2008091E001882311F084E007C009\r
+:101920008091E30087FD02C081E001C083E08093E5\r
+:10193000E4010E947D088091E10083FF29C080912D\r
+:10194000E20083FF25C08091E100877F8093E10062\r
+:1019500082E08093E4011092E0018091E1008E7FAB\r
+:101960008093E1008091E2008E7F8093E20080917D\r
+:10197000E20080618093E20042E060E080E00E944B\r
+:10198000060B8091F00088608093F0000E947A0836\r
+:10199000FF91EF91BF91AF919F918F917F916F9147\r
+:1019A0005F914F913F912F910F900FBE0F901F901D\r
+:1019B00018951F920F920FB60F9211242F933F93F9\r
+:1019C0004F935F936F937F938F939F93AF93BF9347\r
+:1019D000CF93DF93EF93FF93C091E900CF70809195\r
+:1019E000EC00D82FD17080FDD0E81092E9008091F2\r
+:1019F000F000877F8093F00078940E941D0D109274\r
+:101A0000E9008091F00088608093F000CD2BCF70CA\r
+:101A1000C093E900FF91EF91DF91CF91BF91AF911A\r
+:101A20009F918F917F916F915F914F913F912F91F6\r
+:101A30000F900FBE0F901F9018951F93CF93DF93B9\r
+:101A4000CDB7DEB7AA970FB6F894DEBF0FBECDBFF5\r
+:101A5000E5EEF1E088E08E0F9091F10091938E1306\r
+:101A6000FBCF0E9499088091E80083FF1FC18091FD\r
+:101A7000E5019091E601492F50E04A30510508F008\r
+:101A800015C1FA01EA5AFF4F0C941823803881F0EF\r
+:101A9000823809F00BC18091E9018F708093E900D1\r
+:101AA0008091EB0085FB882780F91092E90006C041\r
+:101AB0008091E1019091E201911182609091E800A2\r
+:101AC000977F9093E8008093F1001092F100C8C0D6\r
+:101AD000282F2D7F09F0EAC0882319F0823061F0A9\r
+:101AE000E5C08091E701813009F0E0C0933009F052\r
+:101AF00080E08093E2012BC08091E701811127C033\r
+:101B00008091E9018F7009F4D1C08093E9002091A0\r
+:101B1000EB0020FF1CC0933021F48091EB00806229\r
+:101B200014C09091EB0090619093EB0021E030E0C5\r
+:101B3000A90102C0440F551F8A95E2F74093EA00BD\r
+:101B40001092EA008091EB0088608093EB00109285\r
+:101B5000E9008091E800877F86C08111A7C01091BD\r
+:101B6000E7011F778091E3008078812B8093E30069\r
+:101B70008091E800877F8093E8000E943B0B809172\r
+:101B8000E80080FFFCCF8091E30080688093E30051\r
+:101B9000111102C082E001C083E08093E40186C09D\r
+:101BA0008058823008F082C08091E7019091E8016E\r
+:101BB0008C3D53E0950779F583E08A838AE2898337\r
+:101BC0004FB7F894DE01139620E03EE051E2E32F98\r
+:101BD000F0E050935700E49120FF03C0E295EF70CE\r
+:101BE0003F5FEF708E2F90E0EA3010F0C79601C093\r
+:101BF000C0968D939D932F5F243149F74FBF8091FD\r
+:101C0000E800877F8093E8006AE270E0CE010196E9\r
+:101C10000E94420A14C0AE014F5F5F4F6091E9011C\r
+:101C20000E948909BC01892B09F440C09091E80009\r
+:101C3000977F9093E80089819A810E94A50A8091FC\r
+:101C4000E8008B778093E80031C0803879F5809187\r
+:101C5000E800877F8093E8008091E0018093F100A5\r
+:101C60008091E8008E778093E8000E943B0B1EC0B5\r
+:101C700081111CC09091E7019230C0F48091E8007E\r
+:101C8000877F8093E8009093E0010E943B0B809156\r
+:101C9000E001811106C08091E30087FD02C081E070\r
+:101CA00001C084E08093E4010E9485088091E800EF\r
+:101CB00083FF0AC08091E800877F8093E8008091CD\r
+:101CC000EB0080628093EB00AA960FB6F894DEBF1B\r
+:101CD0000FBECDBFDF91CF911F9108950895CF938F\r
+:101CE0008091E4018823A1F0C091E900CF70909128\r
+:101CF000EC00892F817090FD80E8C82B1092E900DC\r
+:101D00008091E80083FD0E941D0DCF70C093E90013\r
+:101D1000CF91089590936901809368010895E091AF\r
+:101D20006801F0916901309721F00190F081E02D78\r
+:101D3000099480E00895E0916801F091690130977D\r
+:101D400021F00280F381E02D09940895E09168016B\r
+:101D5000F0916901309721F00480F581E02D09941C\r
+:101D6000089520916601309167018217930771F001\r
+:101D70009093670180936601E0916801F091690199\r
+:101D8000309721F00680F781E02D09940895209185\r
+:101D90006401309165018217930771F0909365019A\r
+:101DA00080936401E0916801F0916901309721F01E\r
+:101DB0000084F185E02D0994089508950C94DD0EBA\r
+:101DC0000E94F31A0E94A0030C94B91BCF92DF92D9\r
+:101DD000EF92FF920F931F93CF93DF93CDB7DEB7B0\r
+:101DE0002B970FB6F894DEBF0FBECDBF0E94B8038D\r
+:101DF0008BE6C82E81E0D82E00E010E0E02E802F88\r
+:101E00000E94A604F60141916F01F42EF826B1F468\r
+:101E10000F5F1F4F0E30110589F78FEF89838A837B\r
+:101E20001B820E94FC1A8160782F9D838C834981DC\r
+:101E30005A816B818D810E94890F40C09091CD01A4\r
+:101E400091FF04C08B870E94AC048B8520E030E0BA\r
+:101E50004F2D50E0922FBA01022E02C07595679562\r
+:101E60000A94E2F760FF24C02E83EF8221E030E085\r
+:101E7000690102C0CC0CDD1C9A95E2F790E08C2140\r
+:101E80009D21892B09F420E028870E94FC1A81609B\r
+:101E9000782F9A8789874E815F8168858A850E941D\r
+:101EA000890FF801E559FE4F8081C826C08206C01F\r
+:101EB0002F5F3F4F2630310569F6AACF0E94A01E42\r
+:101EC00010916A010E948F0E1817A1F00E948F0EC8\r
+:101ED00080936A012B960FB6F894DEBF0FBECDBF7C\r
+:101EE000DF91CF911F910F91FF90EF90DF90CF90F6\r
+:101EF0000C9488072B960FB6F894DEBF0FBECDBFAB\r
+:101F0000DF91CF911F910F91FF90EF90DF90CF90D5\r
+:101F10000895CF93DF93CDB7DEB72B970FB6F89424\r
+:101F2000DEBF0FBECDBF4F83588769877A878B8707\r
+:101F3000DE01119686E0FD0111928A95E9F785E0B0\r
+:101F4000FE01379601900D928A95E1F749815A81F9\r
+:101F50006B817C818D819E810E94B9162B960FB674\r
+:101F6000F894DEBF0FBECDBFDF91CF9108950895E5\r
+:101F7000CF93882309F4C2C0C82F823859F40E9435\r
+:101F80008F0E81FDBBC089E30E9462190E942F1A47\r
+:101F900089E30CC0833879F40E948F0E80FDAEC0B7\r
+:101FA00083E50E9462190E942F1A83E50E94A419FA\r
+:101FB000CF910C942F1A843859F40E948F0E82FD11\r
+:101FC0009DC087E40E9462190E942F1A87E4EECF19\r
+:101FD0008CEF8C0F813A48F48C2F0E94E320811102\r
+:101FE0008DC08C2F0E946219E3CF80E28C0F883065\r
+:101FF00048F4C77081E001C0880FCA95EAF70E94D3\r
+:10200000E819D6CF8BE58C0F833078F4C53A29F0E8\r
+:10201000C63A31F083E890E005C081E890E002C064\r
+:1020200082E890E0CF910C94B10E88E58C0F83315B\r
+:1020300008F064C0C83A39F1C93A41F1CA3A49F1E5\r
+:10204000CB3A51F1CC3A59F1CD3A61F1C03B69F14B\r
+:10205000CE3A71F1CF3A79F1C13B81F1C23B89F1BE\r
+:10206000C33B91F1C43B99F1C53BA1F1C63BA9F13A\r
+:10207000C73BB1F1C83BB9F1C93BC1F1CA3BC9F19A\r
+:1020800080E090E038C082EE90E035C089EE90E0CC\r
+:1020900032C08AEE90E02FC085EB90E02CC086EB3A\r
+:1020A00090E029C087EB90E026C08CEC90E023C044\r
+:1020B0008DEC90E020C083E891E01DC08AE891E0BB\r
+:1020C0001AC082E991E017C084E991E014C081E26E\r
+:1020D00092E011C083E292E00EC084E292E00BC075\r
+:1020E00085E292E008C086E292E005C087E292E0D5\r
+:1020F00002C08AE292E0CF910C94C70ECF9108956E\r
+:10210000882309F44BC0823859F40E948F0E81FF56\r
+:1021100045C089E30E9462190E942F1A89E30CC00E\r
+:10212000833871F40E948F0E80FF38C083E50E94CF\r
+:1021300062190E942F1A83E50E94A4190C942F1A89\r
+:10214000843859F40E948F0E82FF28C087E40E94D1\r
+:1021500062190E942F1A87E4EFCF9CEF980F913AF3\r
+:1021600058F390E2980F983050F4877091E001C0D6\r
+:10217000990F8A95EAF7892F0E94EE19DFCF9BE528\r
+:10218000980F933020F480E090E00C94B10E885AC0\r
+:10219000833120F480E090E00C94C70E08958823EA\r
+:1021A00021F00E94E8190C942F1A0895882321F039\r
+:1021B0000E94EE190C942F1A0895BF92CF92DF92CD\r
+:1021C000EF92FF920F931F93CF93DF9300D000D035\r
+:1021D00000D0CDB7DEB725E0FC01DE0111960190FD\r
+:1021E0000D922A95E1F7FC01D080118102812581B1\r
+:1021F00022952F7043815481452B09F4FCC21F3F67\r
+:1022000021F4FFEFDF1609F4F6C27C012E830E9451\r
+:10221000B70FD9821A8369817A81802F0E945E1953\r
+:10222000182FB92E0E9413190E94DA172E8100234D\r
+:1022300019F00E94051A2E81EB2DE295EF70F0E067\r
+:10224000E05AFF4F0C9418238B2D807F9B2D9F709D\r
+:10225000F92E882319F0F29480EFF822002389F0F8\r
+:10226000FF2009F475C280E2810F883020F48F2DA1\r
+:102270000E94E81903C08F2D0E94F8190E942F1A9E\r
+:1022800067C2812F0E948010FF2009F4B4C2105E43\r
+:102290008F2D183018F40E94EE1902C00E94FE190A\r
+:1022A00026960FB6F894DEBF0FBECDBFDF91CF915B\r
+:1022B0001F910F91FF90EF90DF90CF90BF900C9403\r
+:1022C0002F1A3B2D307F8B2D8F70303211F082957D\r
+:1022D000807F112319F0113021F12CC00023B9F0B7\r
+:1022E000222309F4A0C1213009F09DC126960FB622\r
+:1022F000F894DEBF0FBECDBFDF91CF911F910F913C\r
+:10230000FF90EF90DF90CF90BF900C94181A22238B\r
+:1023100019F0213009F46FC28E830E941B1A8E813E\r
+:1023200096C1002321F0223008F065C27CC1211142\r
+:1023300062C28DC1002321F0222309F474C108C2B6\r
+:10234000222309F484C119C22B2D269526952370CA\r
+:1023500030E02115310521F021303105D1F04BC29B\r
+:10236000002321F0812F9B2D937002C080E090E02C\r
+:1023700026960FB6F894DEBF0FBECDBFDF91CF918A\r
+:102380001F910F91FF90EF90DF90CF90BF900C9432\r
+:10239000B10E002321F0812F9B2D937002C080E0AD\r
+:1023A00090E026960FB6F894DEBF0FBECDBFDF914A\r
+:1023B000CF911F910F91FF90EF90DF90CF90BF9042\r
+:1023C0000C94C70E812F002319F00E94A81D02C093\r
+:1023D0000E94101E26960FB6F894DEBF0FBECDBF2A\r
+:1023E000DF91CF911F910F91FF90EF90DF90CF90F1\r
+:1023F000BF900C94951E8B2D837009F07BC001114A\r
+:10240000FAC1812F829586958770880F880F912F4A\r
+:102410009F70C92ED12CE12CF12C082E04C0CC0CBD\r
+:10242000DD1CEE1CFF1C0A94D2F714FF12C04FE013\r
+:1024300050E060E070E004C0440F551F661F771F36\r
+:102440008A95D2F7CB01BA016095709580959095E9\r
+:1024500003C060E070E0CB012B2D269526952370FC\r
+:10246000422F50E042305105D9F04330510569F117\r
+:102470006C297D298E299F294130510551F12696DD\r
+:102480000FB6F894DEBF0FBECDBFDF91CF911F9185\r
+:102490000F91FF90EF90DF90CF90BF900C940118B8\r
+:1024A0006C297D298E299F2926960FB6F894DEBFC8\r
+:1024B0000FBECDBFDF91CF911F910F91FF90EF9095\r
+:1024C000DF90CF90BF900C941D180E940118C70197\r
+:1024D000B60126960FB6F894DEBF0FBECDBFDF91D2\r
+:1024E000CF911F910F91FF90EF90DF90CF90BF9011\r
+:1024F0000C94E517002319F08B2D817001C086958F\r
+:10250000882309F478C1812F829586958770880F7A\r
+:10251000880F912F9F70C92ED12CE12CF12C082E01\r
+:1025200004C0CC0CDD1CEE1CFF1C0A94D2F714FF77\r
+:1025300012C04FE050E060E070E004C0440F551F4F\r
+:10254000661F771F8A95D2F7CB01BA016095709507\r
+:102550008095909503C060E070E0CB012B2D26950F\r
+:1025600026952370422F50E042305105D9F0433078\r
+:10257000510569F16C297D298E299F29413051052A\r
+:1025800051F126960FB6F894DEBF0FBECDBFDF9196\r
+:10259000CF911F910F91FF90EF90DF90CF90BF9060\r
+:1025A0000C94DB186C297D298E299F2926960FB65D\r
+:1025B000F894DEBF0FBECDBFDF91CF911F910F9179\r
+:1025C000FF90EF90DF90CF90BF900C94F7180E948F\r
+:1025D000DB18C701B60126960FB6F894DEBF0FBE12\r
+:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2\r
+:1025F000CF90BF900C94BF18103FD1F118F4103E4B\r
+:1026000050F4A1C0123F09F463C008F44CC0133F5A\r
+:1026100009F473C098C01F708B2D8F710023A1F037\r
+:102620000E945818812F26960FB6F894DEBF0FBE71\r
+:10263000CDBFDF91CF911F910F91FF90EF90DF9071\r
+:10264000CF90BF900C94CF100E947918812F2696BE\r
+:102650000FB6F894DEBF0FBECDBFDF91CF911F91B3\r
+:102660000F91FF90EF90DF90CF90BF900C94D61019\r
+:102670000023A9F02111BFC08B2D8F7126960FB6B4\r
+:10268000F894DEBF0FBECDBFDF91CF911F910F91A8\r
+:10269000FF90EF90DF90CF90BF900C949E18223067\r
+:1026A00008F0A9C0E9CF0023A9F08B2D8F712696E1\r
+:1026B0000FB6F894DEBF0FBECDBFDF91CF911F9153\r
+:1026C0000F91FF90EF90DF90CF90BF900C9458182F\r
+:1026D000002359F38B2D8F7126960FB6F894DEBF29\r
+:1026E0000FBECDBFDF91CF911F910F91FF90EF9063\r
+:1026F000DF90CF90BF900C947918002399F08B2D28\r
+:102700008F7126960FB6F894DEBF0FBECDBFDF9156\r
+:10271000CF911F910F91FF90EF90DF90CF90BF90DE\r
+:102720000C94431826960FB6F894DEBF0FBECDBFAB\r
+:10273000DF91CF911F910F91FF90EF90DF90CF909D\r
+:10274000BF900C9439180023A9F0222309F4ADCFCF\r
+:10275000812F26960FB6F894DEBF0FBECDBFDF9156\r
+:10276000CF911F910F91FF90EF90DF90CF90BF908E\r
+:102770000C94B80F222309F4ADCF812F26960FB603\r
+:10278000F894DEBF0FBECDBFDF91CF911F910F91A7\r
+:10279000FF90EF90DF90CF90BF900C9480104B2D66\r
+:1027A0004F70612FC7010E94550226960FB6F8940C\r
+:1027B000DEBF0FBECDBFDF91CF911F910F91FF9074\r
+:1027C000EF90DF90CF90BF900C945D174B2D4F7022\r
+:1027D000612FC70126960FB6F894DEBF0FBECDBF9E\r
+:1027E000DF91CF911F910F91FF90EF90DF90CF90ED\r
+:1027F000BF900C94AD0426960FB6F894DEBF0FBEC2\r
+:10280000CDBFDF91CF911F910F91FF90EF90DF909F\r
+:10281000CF90BF9008950E94051A0E94151A0E9439\r
+:10282000DA190E942F1A0E94461F0E94951E80E00E\r
+:1028300090E00E94B10E80E090E00C94C70E0E94E0\r
+:10284000F5190C940B140E945319292F22952F70FF\r
+:1028500030E02C3031054CF42A3031056CF4225034\r
+:1028600031092230310588F407C02C30310549F098\r
+:102870002F30310531F009C0803E48F0803F29F407\r
+:1028800006C093FB882780F9089580E0089581E0D1\r
+:102890000895CF93DF9300D000D01F92CDB7DEB75D\r
+:1028A0000F900F900F900F900F90DF91CF910895A0\r
+:1028B000CF93DF9300D000D000D0CDB7DEB72696FF\r
+:1028C0000FB6F894DEBF0FBECDBFDF91CF91089554\r
+:1028D0001F93CF93DF93C091790116E080917A0125\r
+:1028E000C81799F0D0E01C9FF0011D9FF00D112436\r
+:1028F000E558FE4F408151816281738184819581C9\r
+:102900000E9458142196C770E9CFDF91CF911F9193\r
+:1029100008954091AB015091AC016091AD0170916F\r
+:10292000AE018091AF019091B0010C945814809148\r
+:10293000B00182958F7009F054C08091AD01882359\r
+:1029400009F44FC080917901A0917A016091AB01A7\r
+:102950007091AC014091AE015091AF01B6E08A1781\r
+:1029600009F43FC090E041155105C1F17F3F11F4DA\r
+:102970006F3FA1F1B89FF001B99FF00D1124E55808\r
+:10298000FE4F218172132AC02081621327C0228149\r
+:10299000211124C0238134812417350710F42150DC\r
+:1029A0003109241B350B283C3105C0F42091B001BE\r
+:1029B0002F7020612093B00126E0289FF001299F0D\r
+:1029C000F00D1124E058FE4F80818F70806180836C\r
+:1029D0008BEA91E00E94DD100C94681401968770D8\r
+:1029E000BECF0895CF92DF92EF92FF920F931F9385\r
+:1029F000CF93DF93CDB7DEB762970FB6F894DEBF03\r
+:102A00000FBECDBF8C0185E0F801DE011D9601905F\r
+:102A10000D928A95E1F7D8014C9111965C9111972E\r
+:102A200012966C9112971396CD90DC90149730917A\r
+:102A3000AB017091AC018091AE019091AF01009714\r
+:102A400009F46BC17F3F19F43F3F09F466C1E09080\r
+:102A5000AD01EE2009F4C0C02091B001C816D9061E\r
+:102A600028F0F601E81BF90BCF0104C08095909582\r
+:102A70008C0D9D1DFF24F394883C910578F0F12C7A\r
+:102A8000207F09F0C6C07C2DD98AC88A89890E9416\r
+:102A900049148BEA91E00E94DD10B1C0822F807F43\r
+:102AA00009F046C0751314C0341312C0611110C070\r
+:102AB0002F7020612093B0010E9489148BEA91E06D\r
+:102AC0000E94DD108091B001D80115968C932EC024\r
+:102AD000CD2819F15F3F11F44F3FF9F0F62E611147\r
+:102AE0001CC08091790120917A0136E0821709F4A7\r
+:102AF0005AC090E0389FF001399FF00D1124E5583D\r
+:102B0000FE4F7181571306C07081471303C0728155\r
+:102B1000711103C001968770E9CFF62E662309F480\r
+:102B200018C18091B00181608093B001F12C11C176\r
+:102B3000751308C0341306C0611104C08091B00140\r
+:102B4000D801C3C04D875E878D859E856A8B0E94A4\r
+:102B500023146A898823E1F16623D1F12091B00121\r
+:102B6000822F82958F7090E0029774F08091AB0174\r
+:102B70009091AC0198878F831986DB86CA862C8753\r
+:102B8000CE0107960E94DD1086E0F801ABEAB1E0C5\r
+:102B900001900D928A95E1F70E9497140E94891482\r
+:102BA000FF24F394D6C04D875E878D859E850E9455\r
+:102BB0005319292F22952F7030E0223031050CF067\r
+:102BC000BCC09F7009F0B6C0805E883008F4C1C0F8\r
+:102BD000C8010E94DD10E4CFC816D90608F453C01E\r
+:102BE000F601E81BF90BCF01883C910508F450C0B1\r
+:102BF000F12C7C2DD98AC88A89890E944914EBEA74\r
+:102C0000F1E086E0DF011D928A95E9F70E948914C0\r
+:102C1000A0C0751314C0341312C0611110C080918C\r
+:102C2000B001F8018583C8010E94DD1086E0EBEA5F\r
+:102C3000F1E0DF011D928A95E9F7FE2C8AC04D87ED\r
+:102C40005E878D859E856A8B0E9423146A898823FE\r
+:102C500009F4BECF662309F4BBCF2091B001822FC7\r
+:102C600082958F7090E002970CF48ECF8091AB012B\r
+:102C70009091AC019A8389831B82DD82CC822E8362\r
+:102C8000CE0101967FCF809590958C0D9D1DACCF88\r
+:102C9000F62E662309F49CCF75132EC034132CC076\r
+:102CA0002091B00120FD1FC0822F82958F70D9F036\r
+:102CB000D80115962C9315978F3049F08F5F982F78\r
+:102CC0009295907F822F8F70892B15968C93C801D7\r
+:102CD0000E94DD1086E0F801ABEAB1E001900D92B0\r
+:102CE0008A95E1F793CF86E0F801ABEAB1E0019075\r
+:102CF0000D928A95E1F72DC04D875E878D859E8563\r
+:102D00000E942314811140CF8091B0018160809393\r
+:102D1000B001C8010E94DD101CC0662309F458CF21\r
+:102D20004D875E878D859E850E942314882309F434\r
+:102D30004FCF2ACF811148CF0CC0243031050CF081\r
+:102D400047CF9F7009F440CFF8019581907F09F03B\r
+:102D50003BCF8F2D62960FB6F894DEBF0FBECDBF6E\r
+:102D6000DF91CF911F910F91FF90EF90DF90CF9067\r
+:102D700008951F93CF93DF93CDB7DEB72C970FB68F\r
+:102D8000F894DEBF0FBECDBF4F83588769877A871F\r
+:102D90008B879C87CE0107960E94F214882369F0E6\r
+:102DA0008F8198852A853B85232BF1F19F3F09F080\r
+:102DB00063C08F3F09F060C037C086E0FE013796E0\r
+:102DC000DE01119601900D928A95E1F76F81788569\r
+:102DD000EA85FB85309741F17F3F11F46F3F21F188\r
+:102DE00020917A0130E0C9010196877099274091BE\r
+:102DF000790150E08417950709F447C069837A8305\r
+:102E0000FD83EC8396E0929FD001939FB00D112437\r
+:102E1000A558BE4FFE01319601900D929A95E1F7AB\r
+:102E200080937A010E94681416E080917901909154\r
+:102E30007A018917C1F1189FC001112485589E4F4E\r
+:102E40000E94F214882379F1E09179011E9FF0012C\r
+:102E50001124E558FE4F4081518162817381848144\r
+:102E600095810E9458148091790190E001968770B5\r
+:102E7000992780937901D9CF4F81588569857A85C3\r
+:102E80008B859C850E945814CFCF0E941F141092EE\r
+:102E90007A0110927901EBEAF1E086E0DF011D9200\r
+:102EA0008A95E9F7C1CF2C960FB6F894DEBF0FBE16\r
+:102EB000CDBFDF91CF911F910895EF92FF920F93B5\r
+:102EC0001F93CF93DF938C01892B09F46CC0F12CF5\r
+:102ED000EE24E394E8012196F8018491843740F4CC\r
+:102EE000843008F051C0813081F0823019F15BC02C\r
+:102EF000853709F444C0A8F19CE7980F903708F093\r
+:102F000052C08F770E94801041C00E5F1F4FFE019C\r
+:102F1000C49180E28C0F883048F4C7708E2D01C0B8\r
+:102F2000880FCA95EAF70E94081A14C08C2F0E94D5\r
+:102F3000B80F2DC00E5F1F4FFE01C49180E28C0FB1\r
+:102F4000883058F4C7708E2D01C0880FCA95EAF7F3\r
+:102F50000E940E1A0E942F1A1AC08C2F0E948010F5\r
+:102F600016C00E5F1F4FFE01C491CC2381F08FE984\r
+:102F70009FE00197F1F700C00000C150F6CF0E5F4F\r
+:102F80001F4FFE01F49003C00E94B80F8E018F2DD9\r
+:102F9000882309F49FCFEFE9FFE03197F1F700C0F4\r
+:102FA00000008150F5CFDF91CF911F910F91FF90DD\r
+:102FB000EF90089508956093B5017093B6018093E2\r
+:102FC000B7019093B8010C940B140F931F930091C9\r
+:102FD000B5011091B6012091B7013091B801DC0123\r
+:102FE000CB01802B912BA22BB32B8093B501909317\r
+:102FF000B601A093B701B093B8011F910F910C9443\r
+:103000000B140F931F930091B5011091B6012091FD\r
+:10301000B7013091B801DC01CB0180239123A223B9\r
+:10302000B3238093B5019093B601A093B701B093F9\r
+:10303000B8011F910F910C940B140F931F930091E3\r
+:10304000B5011091B6012091B7013091B801DC01B2\r
+:10305000CB0180279127A227B3278093B5019093B6\r
+:10306000B601A093B701B093B8011F910F910C94D2\r
+:103070000B141092B1011092B2011092B301109290\r
+:10308000B4010C940B1441E050E060E070E004C027\r
+:10309000440F551F661F771F8A95D2F74093B101E1\r
+:1030A0005093B2016093B3017093B4010C940B146C\r
+:1030B00041E050E060E070E004C0440F551F661F1F\r
+:1030C000771F8A95D2F78091B1019091B201A091BA\r
+:1030D000B301B091B401482B592B6A2B7B2B409341\r
+:1030E000B1015093B2016093B3017093B4010C9499\r
+:1030F0000B1441E050E060E070E004C0440F551F45\r
+:10310000661F771F8A95D2F7409550956095709508\r
+:103110008091B1019091B201A091B301B091B4013D\r
+:10312000482359236A237B234093B1015093B20172\r
+:103130006093B3017093B4010C940B1441E050E020\r
+:1031400060E070E004C0440F551F661F771F8A952A\r
+:10315000D2F78091B1019091B201A091B301B091E9\r
+:10316000B401482759276A277B274093B101509320\r
+:10317000B2016093B3017093B4010C940B140F93DC\r
+:103180001F930091B1011091B2012091B3013091D0\r
+:10319000B401DC01CB01802B912BA22BB32B8093AC\r
+:1031A000B1019093B201A093B301B093B4011F9108\r
+:1031B0000F910C940B140F931F930091B101109178\r
+:1031C000B2012091B3013091B401DC01CB01802325\r
+:1031D0009123A223B3238093B1019093B201A093D2\r
+:1031E000B301B093B4011F910F910C940B140F9382\r
+:1031F0001F930091B1011091B2012091B301309160\r
+:10320000B401DC01CB0180279127A227B32780934B\r
+:10321000B1019093B201A093B301B093B4011F9197\r
+:103220000F910C940B140895CF92DF92EF92FF92BE\r
+:103230000F931F93CF93DF938C01C090B501D09073\r
+:10324000B601E090B701F090B8018091B101909182\r
+:10325000B201A091B301B091B401C82AD92AEA2AD7\r
+:10326000FB2ACFE1D0E0D701C6010C2E04C0B695F1\r
+:10327000A795979587950A94D2F780FF06C0B80165\r
+:103280008C2F0E94ED06019721F4219760F780E0D2\r
+:1032900001C08C2FDF91CF911F910F91FF90EF9084\r
+:1032A000DF90CF900895CF93DF93EC010E94141923\r
+:1032B000BE010E94ED06DF91CF910895CB010E94DF\r
+:1032C0005319089590910C01992321F090910D01CB\r
+:1032D000911109C020910E0130910F01F901329630\r
+:1032E0009FEF40E01FC0982F9695969596959F303A\r
+:1032F00050F5E0910E01F0910F01E90FF11D87707B\r
+:1033000021E030E0A90102C0440F551F8A95E2F781\r
+:10331000CA019181892B818308959F3F39F04F5FC6\r
+:103320004E3041F051915813F8CF0DC05111F7CFE5\r
+:10333000942FF5CF9F3F39F0F901E90FF11D97FD6B\r
+:10334000FA9582830895089590910C01992321F0B4\r
+:1033500090910D01911109C020910E0130910F0142\r
+:10336000F9013296205F3F4F1FC0982F9695969592\r
+:1033700096959F30F0F4E0910E01F0910F01E90F66\r
+:10338000F11D877021E030E0A90102C0440F551FF4\r
+:103390008A95E2F7CA0180959181892381830895F6\r
+:1033A0003196E217F30729F090819813F9CF108234\r
+:1033B000F7CF089581E090E0E0910E01F0910F01C8\r
+:1033C000E80FF91F1082019680319105A9F7089541\r
+:1033D0009091CC01892B8093CC0108958095909198\r
+:1033E000CC0189238093CC0108951092CC010895DB\r
+:1033F0009091CB01892B8093CB010895809590917A\r
+:10340000CB0189238093CB0108951092CB010895BD\r
+:103410009091CA01892B8093CA010895809590915B\r
+:10342000CA0189238093CA0108951092CA010895A0\r
+:103430008093B90108951092B901089580910E0109\r
+:1034400090910F01FC0131969C01205F3F4F80E07D\r
+:10345000919191118F5FE217F307D1F70895E091F1\r
+:103460000E01F0910F018091CC018083E0910E015B\r
+:10347000F0910F0190818091CB01892B8083E091A5\r
+:103480000E01F0910F0190818091CA01892B8083F8\r
+:103490008091B901882361F0E0910E01F0910F0154\r
+:1034A0009081892B80830E941E1A81111092B9018C\r
+:1034B00080910E0190910F010C949B0ECF92DF92A0\r
+:1034C000EF92FF926C01EE24FF24C114D104E104B9\r
+:1034D000F10421F0C701B60120E101C020E0C72EB0\r
+:1034E000D82EE92EFF24C114D104E104F10419F00F\r
+:1034F000285FC701B6016B017C0154E0F694E794A4\r
+:10350000D794C7945A95D1F7C114D104E104F104BA\r
+:1035100019F02C5FC701B6016B017C0142E0F69403\r
+:10352000E794D794C7944A95D1F7C114D104E10424\r
+:10353000F10419F02E5FC701B601DC01CB01B6958D\r
+:10354000A79597958795892B8A2B8B2B09F02F5F51\r
+:10355000822FFF90EF90DF90CF9008958091E4014B\r
+:10356000843021F11092CE0120E488E190E00FB682\r
+:10357000F894A895809360000FBE2093600080E0CF\r
+:103580000E94880783B7817F846083BF83B781608F\r
+:1035900083BF7894889583B78E7F83BF88E10FB609\r
+:1035A000F89480936000109260000FBE0895089513\r
+:1035B0000895CF930E94D71A0E94B8030E94D81A88\r
+:1035C000C0E08C2F0E94A604811104C0CF5FCE30D2\r
+:1035D000C1F701C081E0CF9108950E941F140E949D\r
+:1035E0008F0E0C94880782E084BD93E095BD9AEF1E\r
+:1035F00097BD80936E0008952FB7F8948091CF0106\r
+:103600009091D001A091D101B091D2012FBF089526\r
+:10361000CF92DF92EF92FF920F931F932FB7F89400\r
+:103620004091CF015091D0016091D1017091D201B0\r
+:103630002FBF6A017B01EE24FF248C0120E030E0E3\r
+:10364000C016D106E206F30610F4415051099A0162\r
+:10365000281B390BC9011F910F91FF90EF90DF904C\r
+:10366000CF9008951F920F920FB60F9211248F934F\r
+:103670009F93AF93BF938091CF019091D001A09180\r
+:10368000D101B091D2010196A11DB11D8093CF014E\r
+:103690009093D001A093D101B093D201BF91AF918B\r
+:1036A0009F918F910F900FBE0F901F9018950E94C1\r
+:1036B0008C0BF8942FEF87EA91E6215080409040E0\r
+:1036C000E1F700C0000087E090EBDC018093EE01A1\r
+:1036D0009093EF01A093F001B093F1019CE088E199\r
+:1036E0000FB6F894A895809360000FBE9093600089\r
+:1036F000FFCFEF92FF920F931F93CF93DF93D82FBB\r
+:10370000C0E08C2F0E94A60400E010E0E82EF12C0F\r
+:10371000C701002E02C0959587950A94E2F780FDB7\r
+:1037200006C00F5F1F4F0630110591F709C0602FCB\r
+:103730007C2F80E00E94AE04D813F3CF81E004C058\r
+:10374000CF5FCE30F1F680E0DF91CF911F910F91E6\r
+:10375000FF90EF900895CF93C82F8CE20E94791BC1\r
+:10376000882321F08C2FCF910C94791B80E0CF918E\r
+:103770000895CF930E94001D811102C00E94E61C93\r
+:10378000C5E6C15049F00E94B8038FE39CE9019758\r
+:10379000F1F700C00000F5CF89E20E94AB1B811158\r
+:1037A00013C18AE20E94AB1B81110E94E61C85E0D6\r
+:1037B0000E94AB1B81110E94571B0E940B1D80931E\r
+:1037C000CD0187E00E94AB1B8823A9F18BE10E9409\r
+:1037D000AB1B882351F08091CD0181FB222720F97A\r
+:1037E00091E0922790FB81F90EC08EE00E94AB1B06\r
+:1037F000882361F08091CD0182FB222720F991E09E\r
+:10380000922790FB82F98093CD0115C080E10E9440\r
+:10381000AB1B9091CD01882341F093FB222720F927\r
+:1038200081E0822780FB93F904C0892F809580FB7B\r
+:1038300090F99093CD018091CD010E940F1D0E94BF\r
+:103840001D1D8093ED0180EE0E94AB1B882341F08B\r
+:103850008091ED01982F909590FB80F98093ED0178\r
+:1038600089E30E94AB1B882359F08091ED0181FB15\r
+:10387000222720F991E0922790FB81F98093ED01B6\r
+:1038800082EE0E94AB1B882359F08091ED0182FBF0\r
+:10389000222720F991E0922790FB82F98093ED0195\r
+:1038A00086EE0E94AB1B882359F08091ED0183FBCB\r
+:1038B000222720F991E0922790FB83F98093ED0174\r
+:1038C00083EE0E94AB1B882359F08091ED0184FBAD\r
+:1038D000222720F991E0922790FB84F98093ED0153\r
+:1038E00085E30E94AB1B882359F08091ED0185FB95\r
+:1038F000222720F991E0922790FB85F98093ED0132\r
+:1039000081E30E94AB1B882359F08091ED0186FB77\r
+:10391000222720F991E0922790FB86F98093ED0110\r
+:1039200081E10E94AB1B882359F08091ED0187FB58\r
+:10393000222720F991E0922790FB87F98093ED01EF\r
+:103940008091ED010E94211D8091ED0187FB882768\r
+:1039500080F980930D0187E20E94AB1BC82F8EE196\r
+:103960000E94AB1B8111C2608FE10E94AB1B8111D1\r
+:10397000C46080E20E94AB1B8111C86081E20E949A\r
+:10398000AB1B8111C06182E20E94AB1B8111C0623E\r
+:1039900083E20E94AB1B8111C06484E20E94AB1BD6\r
+:1039A000882311F0C06802C0CC2329F08C2F0E941C\r
+:1039B000181D6C2F03C00E94141D682F70E080E05A\r
+:1039C00090E0CF910C94DB17CF9108956DEE7EEFD0\r
+:1039D00080E090E00E94522360E082E090E00E944C\r
+:1039E000402360E083E090E00E94402360E084E0B8\r
+:1039F00090E00E94402360E085E090E00C9440233A\r
+:103A000080E090E00E943A2321E08D3E9E4F09F035\r
+:103A100020E0822F089582E090E00C943223682FFA\r
+:103A200082E090E00C94402383E090E00C943223F9\r
+:103A3000682F83E090E00C94402384E090E00C94A5\r
+:103A40003223682F84E090E00C9440238091D501CC\r
+:103A500080FF0BC06091130185E0689FB0011124C5\r
+:103A600075956795759567952BC081FF09C0609125\r
+:103A7000130185E0689FB00111247595679520C0FA\r
+:103A800082FF07C06091130185E0689FB001112497\r
+:103A900017C09091D6019923D1F060911201961729\r
+:103AA00088F72091130185E0289F90011124929FAF\r
+:103AB000A001939F500D112470E0CA010E940423BD\r
+:103AC0006038710540F46115710539F002C065E098\r
+:103AD00070E0862F08958FE7089581E00895809122\r
+:103AE000D50180FF08C06091110170E07595679560\r
+:103AF0007595679521C081FF06C06091110170E046\r
+:103B00007595679519C082FF04C06091110170E03E\r
+:103B100010C09091D6019923C1F0609110019617C1\r
+:103B2000A0F780911101899FC001112470E00E94CB\r
+:103B300004236038710528F46115710521F0862F82\r
+:103B400008958FE7089581E0089561E070E0F4CF73\r
+:103B5000803F21F40E94261D819504C0813F29F4F5\r
+:103B60000E94261D8093D9010895823F21F40E946E\r
+:103B7000261D819504C0833F29F40E94261D809351\r
+:103B8000D8010895893F19F40E946F1D05C08A3F2E\r
+:103B900031F40E946F1D81958093DA0108958B3F67\r
+:103BA00021F40E946F1D819504C08C3F29F40E946E\r
+:103BB0006F1D8093DB010895843F21F48091D7012C\r
+:103BC000816017C0853F21F48091D701826011C0C8\r
+:103BD000863F21F48091D70184600BC0873F21F498\r
+:103BE0008091D701886005C0883F31F48091D7016A\r
+:103BF00080618093D70108958D3F21F48091D50194\r
+:103C000081600BC08E3F21F48091D501826005C098\r
+:103C10008F3F29F48091D50184608093D501089568\r
+:103C2000803F39F48091D90187FF6CC01092D9018F\r
+:103C300069C0813F29F48091D9011816BCF362C094\r
+:103C40009091D801823F29F497FF5CC01092D8016F\r
+:103C500059C0833F19F41916CCF354C0893F41F47D\r
+:103C60008091DA0118160CF04DC01092DA014AC0AA\r
+:103C70008A3F29F48091DA0187FF44C0F6CF8B3F59\r
+:103C800039F48091DB0187FF3DC01092DB013AC01F\r
+:103C90008C3F29F48091DB011816BCF333C0843FBC\r
+:103CA00021F48091D7018E7F17C0853F21F4809148\r
+:103CB000D7018D7F11C0863F21F48091D7018B7F82\r
+:103CC0000BC0873F21F48091D701877F05C0883FD3\r
+:103CD00031F48091D7018F7E8093D70113C08D3F3F\r
+:103CE00021F48091D5018E7F0BC08E3F21F480910D\r
+:103CF000D5018D7F05C08F3F29F48091D5018B7F41\r
+:103D00008093D5018091D80181110EC08091D90195\r
+:103D100081110AC08091DA01811106C08091DB0116\r
+:103D2000811102C01092D601089587ED91E00E94A2\r
+:103D3000A60E0E94FC1A9093D4018093D30108959B\r
+:103D40001F93CF93DF938091D3019091D4010E9470\r
+:103D5000081BAC019091D601992321F02091140108\r
+:103D600030E006C0209115018AE0289F90011124BF\r
+:103D70004217530708F486C08091D801C091D90139\r
+:103D8000D091DA011091DB01811107C0C11176C019\r
+:103D9000D11174C0111172C075C09F3F19F09F5F9F\r
+:103DA0009093D601181624F40E94261D8093D80102\r
+:103DB0008091D80187FF05C00E94261D81958093C0\r
+:103DC000D8011C1624F40E94261D8093D9018091ED\r
+:103DD000D90187FF05C00E94261D81958093D901D6\r
+:103DE0006091D801662339F1C091D901CC2319F132\r
+:103DF000772767FD7095872F972F0E94152223E361\r
+:103E000033E343E35FE30E9479220E94E22160935F\r
+:103E1000D8016C2F772767FD7095872F972F0E9409\r
+:103E2000152223E333E343E35FE30E9479220E94F8\r
+:103E3000E2216093D9011D1624F40E946F1D809326\r
+:103E4000DA018091DA0187FF05C00E946F1D81951C\r
+:103E50008093DA01111624F40E946F1D8093DB0118\r
+:103E60008091DB0187FF05C00E946F1D81958093C3\r
+:103E7000DB01DF91CF911F910C94951E9F3F09F0BC\r
+:103E80008ECF96CFDF91CF911F910895E7EDF1E0AE\r
+:103E900085E0DF011D928A95E9F71092D601109214\r
+:103EA000D5010895833081F128F4813059F08230B2\r
+:103EB000D1F00895853009F449C0B8F1863009F48D\r
+:103EC00056C0089580911501262F30E0280F311D2E\r
+:103ED0002F3F310524F4680F6093150108958FEF8B\r
+:103EE00080931501089580911401262F30E0280F4A\r
+:103EF000311D2F3F310524F4680F6093140108959C\r
+:103F00008FEF80931401089580911301262F30E0E4\r
+:103F1000280F311D2F3F310524F4680F60931301E2\r
+:103F200008958FEF80931301089580911201262F39\r
+:103F300030E0280F311D2F3F310524F4680F6093C6\r
+:103F4000120108958FEF809312010895809111015D\r
+:103F5000262F30E0280F311D2F3F310524F4680F44\r
+:103F60006093110108958FEF80931101089580915E\r
+:103F70001001262F30E0280F311D2F3F310524F48A\r
+:103F8000680F6093100108958FEF809310010895DA\r
+:103F9000833011F128F4813049F0823091F0089596\r
+:103FA000853081F120F18630C1F1089580911501AD\r
+:103FB000681720F4861B809315010895109215014F\r
+:103FC000089580911401681720F4861B80931401D2\r
+:103FD000089510921401089580911301681720F438\r
+:103FE000861B809313010895109213010895809108\r
+:103FF0001201681720F4861B809312010895109215\r
+:104000001201089580911101681720F4861B809396\r
+:1040100011010895109211010895809110016817FF\r
+:1040200020F4861B809310010895109210010895CA\r
+:104030000F931F938D3109F46BC008F03FC08E3091\r
+:1040400009F47FC0C0F4873009F469C068F4863091\r
+:1040500009F0B1C08091CD01817F8E7F8093CD0129\r
+:1040600081E08093DD01A8C0883009F4A2C08B30C4\r
+:1040700009F49FC0A0C0863109F49BC078F4803158\r
+:1040800009F472C0813109F096C00E941F1490910A\r
+:104090000D0181E0892780930D018BC0893109F4DE\r
+:1040A00088C08B3109F087C08091CD0181FB222728\r
+:1040B00020F991E0922790FB81F94CC0853309F4F7\r
+:1040C00070C048F4873209F46CC008F459C08932D2\r
+:1040D00009F467C070C0833438F48A3308F04EC0E6\r
+:1040E000883309F466C067C0833409F45AC0883441\r
+:1040F00009F061C00E941F140FEF13ED20E301507F\r
+:1041000010402040E1F700C000000E94571B51C042\r
+:104110000E949C210E948F0E0E9488074AC09091A5\r
+:10412000CD01892F8095817080FB90F929F09660F0\r
+:1041300098609093CD0140C0997F977F9093CD0177\r
+:1041400038C08091CD0182FB222720F991E092278F\r
+:1041500090FB82F98093CD01992359F18091CD0193\r
+:1041600081608093CD0125C08091CD0183FB222702\r
+:1041700020F991E0922790FB83F9ECCF895301C09D\r
+:104180008D5141E050E060E070E08A019B0104C085\r
+:10419000000F111F221F331F8A95D2F7C901B801E2\r
+:1041A00004C061E070E080E090E00E94DB170E94B4\r
+:1041B0001F1481E001C080E01F910F91089580E0FD\r
+:1041C000089580E00895CF93C82F8091DD0181305C\r
+:1041D00079F018F08230E9F187C0E0910E01F0919A\r
+:1041E0000F018081813169F0823209F07FC009C0FE\r
+:1041F000E0910E01F0910F018081813111F0823246\r
+:1042000061F48C2F0E94DF20811104C08C2F0E944A\r
+:1042100018201DC081E090E01AC08C2F0E94E12080\r
+:10422000811114C0C43179F048F4CB3079F0C03139\r
+:1042300009F060C082E08093DD0108C0C93219F046\r
+:10424000C83321F057C01092DD0154C081E0817065\r
+:1042500053C0C93289F118F5C43171F1A8F4C730DF\r
+:1042600009F046C08AE08093150194E1909314010F\r
+:1042700093E0909313018093120188E080931101E1\r
+:1042800088E28093100134C0CE51C63088F5EC2FFF\r
+:10429000F0E0E65DFE4F80818093DC0129C0CE34E2\r
+:1042A000E9F020F4CB3421F56AE013C0C13579F090\r
+:1042B000C235F1F461E00DC08091DC01882319F072\r
+:1042C0001092DC0115C081E08093DD0115C061E032\r
+:1042D00006C08091DC010E94521F0AC06AE08091F2\r
+:1042E000DC010E94C81F04C01092DD0180E004C000\r
+:1042F00081E002C080E0ABCFCF910895E1E8F0E02B\r
+:104300008081886080838081816080838FB7F8940A\r
+:1043100093E09093890090ED909388008FBF08956B\r
+:10432000EFE6F0E08081826080830895EFE6F0E0C0\r
+:1043300080818D7F80830895EFE6F0E0908182E0B8\r
+:104340008927808308951F920F920FB60F92112430\r
+:104350002F933F934F935F936F937F938F939F938D\r
+:10436000AF93BF93EF93FF938091DE019091DF01B4\r
+:1043700001969093DF018093DE01811103C082E0FA\r
+:104380000E948807E091DF01E695E695F0E0E252B1\r
+:10439000FC4FE4918091DE018E1303C080E00E9407\r
+:1043A0008807FF91EF91BF91AF919F918F917F917E\r
+:1043B0006F915F914F913F912F910F900FBE0F9092\r
+:1043C0001F90189504D06894B1118DC0089570D0D5\r
+:1043D00088F09F5790F0B92F9927B751A0F0D1F0EE\r
+:1043E000660F771F881F991F1AF0BA95C9F712C078\r
+:1043F000B13081F077D0B1E0089574C0672F782F85\r
+:104400008827B85F39F0B93FCCF3869577956795E3\r
+:10441000B395D9F73EF490958095709561957F4F4F\r
+:104420008F4F9F4F0895E89409C097FB3EF49095F5\r
+:104430008095709561957F4F8F4F9F4F9923A9F07D\r
+:10444000F92F96E9BB279395F6958795779567950C\r
+:10445000B795F111F8CFFAF4BB0F11F460FF1BC050\r
+:104460006F5F7F4F8F4F9F4F16C0882311F096E9E3\r
+:1044700011C0772321F09EE8872F762F05C0662391\r
+:1044800071F096E8862F70E060E02AF09A95660F4A\r
+:10449000771F881FDAF7880F9695879597F9089503\r
+:1044A00057FD9058440F551F59F05F3F71F04795E5\r
+:1044B000880F97FB991F61F09F3F79F087950895CA\r
+:1044C000121613061406551FF2CF4695F1DF08C0E9\r
+:1044D000161617061806991FF1CF86957105610506\r
+:1044E00008940895E894BB2766277727CB0197F9AE\r
+:1044F00008950BD078C069D028F06ED018F09523BD\r
+:1045000009F05AC05FC01124EECFCADFA0F3959F17\r
+:10451000D1F3950F50E0551F629FF001729FBB27AA\r
+:10452000F00DB11D639FAA27F00DB11DAA1F649F56\r
+:104530006627B00DA11D661F829F2227B00DA11D09\r
+:10454000621F739FB00DA11D621F839FA00D611D8F\r
+:10455000221F749F3327A00D611D231F849F600DB0\r
+:10456000211D822F762F6A2F11249F5750408AF0E9\r
+:10457000E1F088234AF0EE0FFF1FBB1F661F771F75\r
+:10458000881F91505040A9F79E3F510570F014C00C\r
+:10459000AACF5F3FECF3983EDCF38695779567955D\r
+:1045A000B795F795E7959F5FC1F7FE2B880F911D93\r
+:1045B0009695879597F9089597F99F6780E870E039\r
+:1045C00060E008959FEF80EC089500240A94161689\r
+:1045D000170618060906089500240A9412161306F1\r
+:1045E000140605060895092E0394000C11F488237F\r
+:1045F00052F0BB0F40F4BF2B11F460FF04C06F5F9B\r
+:104600007F4F8F4F9F4F089597FB072E16F400940E\r
+:1046100007D077FD09D00E941E2307FC05D03EF489\r
+:10462000909581959F4F0895709561957F4F08955E\r
+:10463000EE0FFF1F0590F491E02D0994AA1BBB1B00\r
+:1046400051E107C0AA1FBB1FA617B70710F0A61B92\r
+:10465000B70B881F991F5A95A9F780959095BC01B3\r
+:10466000CD010895F999FECF92BD81BDF89A9927A1\r
+:1046700080B50895A8E1B0E042E050E00C945A23E0\r
+:10468000262FF999FECF92BD81BDF89A019700B40B\r
+:10469000021639F01FBA20BD0FB6F894FA9AF99AAB\r
+:1046A0000FBE08950196272F0E9441230C944023AA\r
+:1046B000DC01CB01FC01F999FECF06C0F2BDE1BDE2\r
+:1046C000F89A319600B40D9241505040B8F70895D1\r
+:0446D000F894FFCF8C\r
+:1046D40020028A071808F507C1078D070101BA01EE\r
+:1046E40028080A03140A3F4D36399F0352031C035A\r
+:1046F400E30276028F02A802C10201020304050646\r
+:044704000708090099\r
+:00000001FF\r
--- /dev/null
+# ergodox_keymap
+
+Based on the default Ergodox EZ firmware
+
+Replaced the left side Bksp with a Crtl/Esc, this really helps in vim.
+Removed the Ctrls from the Z and / keys.
--- /dev/null
+// Based on `default_osx`
+// Replace left Bksp with Ctrl/Esc
+// Remove the Ctrl from Z and /
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| LGui |
+ * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | App | LGui | | Alt |Ctrl/Esc|
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * | Space|Backsp|------| |------| Tab |Enter |
+ * | |ace | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ */
+// 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
+ KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1),
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
+ LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ ALT_T(KC_APP), KC_LGUI,
+ KC_HOME,
+ KC_SPC,KC_BSPC,KC_END,
+ // right hand
+ KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+ MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
+ KC_LALT, CTL_T(KC_ESC),
+ KC_PGUP,
+ KC_PGDN,KC_TAB, KC_ENT
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | Prev | Next | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | |Brwser|
+ * | | |------| |------| |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94720C0C94440D2B\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C940E220C94A9020C94A902FF\r
+:100050000C94A9020C949D1B0C94A9020C94A90267\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902B10DD30DD1\r
+:1000B000C10ED30DC10E180E3B0EC10E900EA30E35\r
+:1000C0008F118F11CC11CC110F124D1266146614C2\r
+:1000D00066126614671367133A1466146614511493\r
+:1000E0000000F0A12E004C002971E10035810000D4\r
+:1000F0001E00140004001D0034004D001F001A00F3\r
+:1001000016001B00E1042A0020000800070006007A\r
+:1001100050002C0021001500090019004F004A0072\r
+:10012000220017000A000500000065745000015409\r
+:100130000000007F0000E3004F0001540000007742\r
+:100140000000E20023001C000B00110000002971D8\r
+:10015000240018000D00100052004B0025000C0078\r
+:100160000E00360051002800260012000F00370054\r
+:100170002F002B00270013003382380030004E0080\r
+:100180002D0031003478E500C100000001000100BD\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00010001003D0030020A\r
+:1001C00027023000010001003E00310235003502F7\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:10020000010001004100250022001F00370001000D\r
+:1002100042002600230020002700010043002502A1\r
+:100220002E0231002E0001004400450001000100B3\r
+:1002300001000000010001000100010001000000B8\r
+:1002400001000100010001000100010001000100A6\r
+:10025000F2000100010001000100F000F1000100C6\r
+:10026000F400010001000100F3000100F5000100AD\r
+:100270000100010001000100000001000100010077\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001000100010001000000010058\r
+:1002A0000100010001000100A9000100010001009E\r
+:1002B0000100AC00AA00B600010001000100AB0083\r
+:1002C000A80001000100010001000100010001007F\r
+:1002D00001000100AE00010001000000160345000E\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A\r
+:1004E0009091EF01A091F001B091F1018730904B14\r
+:1004F000A740B04BB9F41092EE011092EF011092A8\r
+:10050000F0011092F10114BE84B7877F84BF88E1A7\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0EAEAF7E402C0D8\r
+:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
+:1005400001C01D92AE3EB107E1F70E94B6090C94BE\r
+:10055000D3230C94000061110BC0FC01828188231D\r
+:1005600021F085EE0E94231003C085EE0E94EB105F\r
+:1005700080E090E0089508956091B1017091B2011A\r
+:100580008091B3019091B4010E94C91A56985E9867\r
+:1005900025982D9826982E9827982F98813019F015\r
+:1005A000823021F00895259A2D9A0895269A2E9A40\r
+:1005B00008950C94BC0256985E9825982D9826981C\r
+:1005C0002E9827982F988FEF90E090938900809332\r
+:1005D000880090938B0080938A0090938D00809385\r
+:1005E0008C00259A2D9A2FEF80E792E021508040D1\r
+:1005F0009040E1F700C00000269A2E9A2FEF80E786\r
+:1006000092E0215080409040E1F700C00000279A1E\r
+:100610002F9A2FEF80E792E0215080409040E1F741\r
+:1006200000C0000025982D982FEF80E792E0215020\r
+:1006300080409040E1F700C0000026982E982FEFF0\r
+:1006400080E792E0215080409040E1F700C0000038\r
+:1006500027982F9856985E9825982D9826982E982A\r
+:1006600027982F98089589EA8093800089E08093E5\r
+:10067000810024982C983F988AB18F748AB96E981B\r
+:10068000479A8BB1806B8BB9769A0E94DB020C94EF\r
+:10069000BB0280E2809300018091340181110EC081\r
+:1006A0000E94980381E0809334012FEF83ED90E363\r
+:1006B000215080409040E1F700C0000080E40E949B\r
+:1006C0009E038093000181112EC00E94C803809375\r
+:1006D0000001811128C00E94C8038093000181118C\r
+:1006E00022C08FE30E94C8038093000181111BC0C8\r
+:1006F0000E94C00380E40E949E0380930001811148\r
+:1007000012C08CE00E94C8038093000181110BC0CD\r
+:100710000E94C80380930001811105C08FE30E94ED\r
+:10072000C803809300010E94C003809100010895D6\r
+:100730001092B9008AE08093B800089594EA9093EB\r
+:10074000BC009091BC0097FFFCCF9091B900987FBE\r
+:10075000983021F0903111F081E008958093BB0032\r
+:1007600084E88093BC008091BC0087FFFCCF80911F\r
+:10077000B900887F883111F0803471F780E00895E6\r
+:1007800084E98093BC008091BC0084FDFCCF089577\r
+:100790008093BB0084E88093BC008091BC0087FFFD\r
+:1007A000FCCF9091B900987F81E0983209F480E005\r
+:1007B000089584E88093BC008091BC0087FFFCCF43\r
+:1007C0008091BB00089580910001811115C080E4E3\r
+:1007D0000E949E038093000181110CC082E10E945F\r
+:1007E000C80380930001811105C08FEF0E94C803E8\r
+:1007F000809300010E94C00384B1807F84B985B1D9\r
+:10080000807F85B98AB1837F8AB98BB1837F8BB9A9\r
+:100810003E98469808950E944903809300010E94E3\r
+:10082000E30380B38C7080BB81B3836F81BBA6E38D\r
+:10083000B1E0E4E4F1E08EE08E0F11921D928E1390\r
+:10084000FCCF0C943303BF92CF92DF92EF92FF92D2\r
+:100850000F931F93CF93DF9380910001882379F04A\r
+:10086000809135018F5F80933501811108C00E940E\r
+:10087000490380930001811102C00E94DB0206E35C\r
+:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455\r
+:10089000E394F12CC730D10500F58091000181115E\r
+:1008A00064C080E40E949E0380930001811112C005\r
+:1008B00082E10E94C8038093000181110BC0C7012F\r
+:1008C0000C2E01C0880F0A94EAF780950E94C80395\r
+:1008D000809300010E94C00348C0CA30A1F028F4F0\r
+:1008E000C83059F0C93061F005C0CC3089F070F0E3\r
+:1008F000CD3089F0209A289810C0219A29980DC0EF\r
+:10090000229A2A980AC0239A2B9807C0529A01C0AB\r
+:10091000539A5B9802C03E9A469890EA9A95F1F7EE\r
+:100920009FB1799902C082E001C080E091709D255D\r
+:10093000982B7C9902C084E001C080E0892B7D99CE\r
+:1009400002C038E001C030E0832B7E9902C020E174\r
+:1009500001C020E0822B9FB19095991F9927991F84\r
+:100960009295990F907E892B0FC080910001811183\r
+:1009700049C080E40E949E0380930001882379F19E\r
+:10098000B12C0E94C0038B2DF8019081981719F0AB\r
+:100990008083C09201010E94E30321960F5F1F4FE5\r
+:1009A000CE30D10509F076CF80910101882361F125\r
+:1009B000815080930101882339F08FE99FE00197EE\r
+:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC\r
+:1009D000CF01825F91919D938E13FCCF15C083E16F\r
+:1009E0000E94C803809300018111CACF81E40E9454\r
+:1009F0009E03809300018111C3CF0E94D903B82EBA\r
+:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7\r
+:100A1000CF911F910F91FF90EF90DF90CF90BF90FB\r
+:100A20000895E82FF0E0EC5BFE4F80810895089573\r
+:100A3000089596E0799FF001112494E5899FE00DD7\r
+:100A4000F11D1124E60FF11DEE0FFF1FEC51FF4FBA\r
+:100A5000859194910895880F991FFC01E05AF04008\r
+:100A6000859194910895880F991FFC01E052FF4FE2\r
+:100A70008591949108950F931F93CF93DF93EC0189\r
+:100A80008115904350F5C11580E2D80708F0B3C036\r
+:100A9000CB3BD10590F4C83AD10508F05AC0C53A0D\r
+:100AA000D10508F04BC0C430D10508F0BBC1219777\r
+:100AB00009F0B5C101E010E0F5C1CF3FD10511F05B\r
+:100AC00008F0B0C1C03FD10508F092C0CE01805EF1\r
+:100AD0009109089708F4A6C1A2C1C11591E5D907EB\r
+:100AE000A8F4C23020E5D20708F09EC0C11580E509\r
+:100AF000D80709F485C008F091C0C11520E4D207D9\r
+:100B000008F08DC1DD278E01106CCCC1C11580E8C5\r
+:100B1000D80758F4C11590E7D90708F07CC1C11572\r
+:100B200020E6D20708F422C17AC1C11580E9D807AE\r
+:100B300008F075C1DF708E01106AB4C1C53AD105E5\r
+:100B400009F472C1C63AD10509F071C102E810E496\r
+:100B5000A9C1C83AD10509F46DC1C93AD10509F452\r
+:100B60006CC1CA3AD10509F46BC1CB3AD10509F47D\r
+:100B70006AC1CC3AD10509F469C1CD3AD10509F46D\r
+:100B800068C1C03BD10509F467C1CE3AD10509F46B\r
+:100B900066C1CF3AD10509F465C1C13BD10509F45D\r
+:100BA00064C1C23BD10509F463C1C33BD10509F45B\r
+:100BB00062C1C43BD10509F461C1C53BD10509F44B\r
+:100BC00060C1C63BD10509F45FC1C73BD10509F43B\r
+:100BD0005EC1C83BD10509F45DC1C93BD10509F42B\r
+:100BE0005CC1CA3BD10509F45BC100E014E45AC101\r
+:100BF0008E01106557C1CE019F700E94330553C10D\r
+:100C00000E948A149FEF24E38CE0915020408040A2\r
+:100C1000E1F700C000000E94C21B44C18091CD01D9\r
+:100C200081608093CD013EC10E946B1D811102C085\r
+:100C30000E94511D0E94881D90E09093EE018093C8\r
+:100C4000ED01C23090E5D90721F48091ED0181607A\r
+:100C500086C0C43020E5D20721F48091ED01826086\r
+:100C60007EC0C63080E5D80721F48091ED01846014\r
+:100C700076C0C83090E5D90719F48091ED0127C0FE\r
+:100C8000CA3020E5D20721F48091ED01806167C070\r
+:100C9000CC3080E5D80721F48091ED0180625FC0FF\r
+:100CA000CE3090E5D90721F48091ED01806457C0E2\r
+:100CB000C03120E5D20721F48091ED0180684FC05A\r
+:100CC000C23180E5D80729F48091ED018460886005\r
+:100CD00046C0C33090E5D90721F48091ED018E7FA5\r
+:100CE0003EC0C53020E5D20721F48091ED018D7F13\r
+:100CF00036C0C73080E5D80721F48091ED018B7FA5\r
+:100D00002EC0C93090E5D90719F48091ED0126C0B5\r
+:100D1000CB3020E5D20721F48091ED018F7E1FC0FA\r
+:100D2000CD3080E5D80721F48091ED018F7D17C08B\r
+:100D3000CF3090E5D90721F48091ED018F7B0FC072\r
+:100D4000C13120E5D20721F48091ED018F7707C0F2\r
+:100D5000C331D04531F48091ED018B7F877F809343\r
+:100D6000ED018091ED010E948C1D9CC08D2F992773\r
+:100D70008F70992781309105D9F49E012370332714\r
+:100D800002C0880F991F2A95E2F79C688E0144E003\r
+:100D9000000F111F4A95E1F700271370802B912B4C\r
+:100DA00053E0CC0FDD1F5A95E1F7C076DD272FC049\r
+:100DB0008230910531F4DC2FCC278E01016F106A4F\r
+:100DC00071C08330910569F4CE018370992701E0E9\r
+:100DD00010E002C0000F111F8A95E2F7C8019C685D\r
+:100DE0000FC0049709F05EC0CE018370992701E01F\r
+:100DF00010E002C0000F111F8A95E2F7C8019A683F\r
+:100E000023E0CC0FDD1F2A95E1F7C07ED7708C015F\r
+:100E10000C2B1D2B47C0DF708E01106243C000E019\r
+:100E200010E040C08E013EC001E810E43BC003E882\r
+:100E300010E438C002EE14E435C009EE14E432C008\r
+:100E40000AEE14E42FC005EB14E42CC006EB14E406\r
+:100E500029C007EB14E426C00CEC14E423C00DEC0D\r
+:100E600014E420C003E815E41DC00AE815E41AC024\r
+:100E700002E915E417C004E915E414C001E216E420\r
+:100E800011C003E216E40EC004E216E40BC005E252\r
+:100E900016E408C006E216E405C007E216E402C044\r
+:100EA0000AE216E4C801DF91CF911F910F910895D6\r
+:100EB00096E0799FF001112494E5899FE00DF11DE2\r
+:100EC0001124E60FF11DEE0FFF1FEC51FF4F85912E\r
+:100ED0009491803E9105E0F4803C910558F5813372\r
+:100EE000910509F46FC048F48932910509F463C093\r
+:100EF0008A32910509F46DC072C089339105E9F019\r
+:100F000082389105D1F08533910509F44DC067C051\r
+:100F1000833E910581F138F4803E9105B9F0823E1F\r
+:100F20009105D9F05CC0863E910561F1873E91053F\r
+:100F3000A1F155C00E942B0508952091ED0120FDDF\r
+:100F400002C021FF4CC080EE90E049C08091ED01CD\r
+:100F500080FFF9CF89E390E042C08091ED0182FFEC\r
+:100F60000EC08091ED0184FF03C080E090E037C0A7\r
+:100F700083EE90E034C08091ED0182FFF2CF82EEEB\r
+:100F800090E02DC08091ED0183FF0BC08091ED01B9\r
+:100F900084FDEBCF87EE90E022C08091ED0183FFCE\r
+:100FA000F5CF86EE90E01BC08091ED0185FF07C074\r
+:100FB00089E290E014C08091ED0185FFF9CF85E3CF\r
+:100FC00090E00DC08091ED0186FF07C08AE290E0BD\r
+:100FD00006C08091ED0186FFF9CF81E390E00E9489\r
+:100FE0003B05089508950C94F207809162010895DD\r
+:100FF000CF93DF9300D01F92CDB7DEB79C018091D5\r
+:10100000E401843019F593E099833B832A8390931C\r
+:10101000E9008FEF9091E800815095FD06C095EDB5\r
+:101020009A95F1F700008111F5CF8091E80085FFD6\r
+:101030000DC040E050E063E070E0CE0101960E94F8\r
+:10104000620A8091E8008E778093E8000F900F90FD\r
+:101050000F90DF91CF910895CF93DF9300D01F922F\r
+:10106000CDB7DEB72091E401243021F522E02983B9\r
+:101070009B838A8383E08093E9008FEF9091E8005F\r
+:10108000815095FD06C095ED9A95F1F7000081110C\r
+:10109000F5CF8091E80085FF0DC040E050E063E0AF\r
+:1010A00070E0CE0101960E94620A8091E8008E777E\r
+:1010B0008093E8000F900F900F90DF91CF910895EB\r
+:1010C0002091E4012430F1F422E02093E9002FEF95\r
+:1010D0003091E800215035FD06C035ED3A95F1F725\r
+:1010E00000002111F5CF2091E80025FF0BC040E062\r
+:1010F00050E065E070E00E94620A8091E8008E771F\r
+:101100008093E8000895CF93DF93EC019091E40180\r
+:10111000943009F046C080910C018823D9F0809169\r
+:101120000D018823B9F09093E9008FEF9091E800CA\r
+:10113000815095FD06C095E19A95F1F70000811167\r
+:10114000F5CF8091E80085FF2CC040E050E060E1E1\r
+:1011500070E017C081E08093E9008FEF9091E80084\r
+:10116000815095FD06C095ED9A95F1F7000081112B\r
+:10117000F5CF8091E80085FF14C040E050E068E0C2\r
+:1011800070E0CE010E94620A8091E8008E77809321\r
+:10119000E80080E1FE01A2E5B1E001900D928A95A0\r
+:1011A000E1F7DF91CF9108958091E301811109C0AA\r
+:1011B0000E94F70B0E94540C8091E200846080939F\r
+:1011C000E20008951092E301089508950C94FB2124\r
+:1011D0000E94581B0E9401220E94FA0E0C94F307F1\r
+:1011E00042E061EC81E00E94710B42E061EC82E040\r
+:1011F0000E94710B42E061EC83E00E94710B42E1BE\r
+:1012000061EC84E00C94710B8091E601833009F469\r
+:1012100055C030F4813071F0823009F48EC00895E9\r
+:101220008A3009F47AC08B3009F460C0893009F043\r
+:101230009CC020C08091E501813A09F096C0809160\r
+:10124000E800877F8093E8008091E9019091EA01AE\r
+:10125000892B21F460E182E591E003C060E080E049\r
+:1012600090E070E00E94AD0A8091E8008B77809357\r
+:10127000E80008958091E501813209F076C08091FF\r
+:10128000E9019091EA01009719F0039709F06DC008\r
+:101290008091E800877F8093E8008091E80082FDDC\r
+:1012A00005C08091E4018111F8CF5FC08091F10009\r
+:1012B000809362018091E8008B7753C08091E501B3\r
+:1012C000813A09F052C08091E9019091EA01892B9D\r
+:1012D00009F04BC08091E800877F8093E8008091FF\r
+:1012E000E80080FFFCCF80910C0136C08091E501C1\r
+:1012F0008132D9F58091E9019091EA01892BA9F514\r
+:101300008091E800877F8093E8000E94A60B80917F\r
+:10131000E70180930C010C948A148091E5018132DD\r
+:1013200021F58091E800877F8093E8000E94A60B5A\r
+:101330008091E8018093630108958091E501813AED\r
+:10134000A1F48091E800877F8093E8008091E80015\r
+:1013500080FFFCCF809163018093F1008091E800D1\r
+:101360008E778093E8000C94A60B089584B7877F4E\r
+:1013700084BF88E10FB6F8948093600010926000FB\r
+:101380000FBE90E080E80FB6F894809361009093D0\r
+:1013900061000FBE0E94490F0E94F70B0E94540C7F\r
+:1013A0008091E20084608093E20078940E94DA0EDB\r
+:1013B0000E944B0F82E091E00E94F50E0E94E9210D\r
+:1013C0008091E401853069F40E94191B8091E2014B\r
+:1013D0008823B1F30E94441B882391F30E944C0A96\r
+:1013E000EFCF0E94510FECCF292F33272330310547\r
+:1013F000C9F064F42130310581F02230310509F063\r
+:1014000043C08DE690E020E133E042C02132310557\r
+:10141000F1F02232310541F137C082E190E02DE751\r
+:1014200033E036C099278130910541F08230910533\r
+:1014300041F0892B49F5ECE0F3E005C0E4EFF2E080\r
+:1014400002C0ECEDF2E0849190E09F0121C0643095\r
+:10145000D8F4E62FF0E0EE0FFF1FEE5DFE4F208187\r
+:10146000318189E090E014C0643070F470E0FB01D9\r
+:10147000EE0FFF1FE65EFE4F20813181FB01EA5E29\r
+:10148000FE4F808190E004C080E090E020E030E0FA\r
+:10149000FA0131832083089580E189BD82E189BD0D\r
+:1014A00009B400FEFDCF8091D8008F7D8093D800D5\r
+:1014B0008091E00082608093E0008091E00081FDF7\r
+:1014C000FCCF0895CF92DF92EF92FF920F931F937C\r
+:1014D000CF93DF93EC018B016A010E94C50B811150\r
+:1014E00033C0C114D10439F0F60180819181081B09\r
+:1014F000190BC80FD91FE12CF12C0115110519F199\r
+:101500008091E80085FD16C08091E8008E77809379\r
+:10151000E800C114D10449F0F60180819181E80E00\r
+:10152000F91EF182E08285E00FC00E94C50B88237E\r
+:1015300021F30AC089918093F10001501109FFEF56\r
+:10154000EF1AFF0ADACF80E0DF91CF911F910F9160\r
+:10155000FF90EF90DF90CF9008952091EB013091B4\r
+:10156000EC012617370748F06115710539F4209111\r
+:10157000E8002E772093E80001C0B90140E0611532\r
+:101580007105A9F12091E401222309F443C025301B\r
+:1015900009F442C02091E80023FD40C02091E800FA\r
+:1015A00022FD32C02091E80020FFE9CF4091F300F6\r
+:1015B0002091F20030E0342BFC01CF016115710560\r
+:1015C00059F02830310540F481918093F100615049\r
+:1015D00071092F5F3F4FF1CF41E02830310509F00D\r
+:1015E00040E02091E8002E772093E800C8CF411119\r
+:1015F000C9CF0AC08091E401882361F0853061F091\r
+:101600008091E80083FD0AC08091E80082FFF2CF5C\r
+:1016100080E0089582E0089583E0089581E00895D0\r
+:101620002091EB013091EC012617370748F0611546\r
+:10163000710539F42091E8002E772093E80001C06D\r
+:10164000B901FC0120E06115710591F18091E4017F\r
+:10165000882309F440C0853009F43FC08091E80038\r
+:1016600083FD3DC08091E80082FD2FC08091E8009D\r
+:1016700080FFE9CF2091F3008091F20090E0922B5F\r
+:101680006115710559F08830910540F4249120933B\r
+:10169000F1003196615071090196F2CF21E008976F\r
+:1016A00009F020E08091E8008E778093E800CBCFAE\r
+:1016B0002111CCCF0AC08091E401882361F08530EC\r
+:1016C00061F08091E80083FD0AC08091E80082FF0C\r
+:1016D000F2CF80E0089582E0089583E0089581E0EC\r
+:1016E0000895982F973058F59093E900981739F09E\r
+:1016F0007091EC002091ED005091F00003C0242F78\r
+:10170000762F50E021FF19C03091EB003E7F3093DF\r
+:10171000EB003091ED003D7F3093ED003091EB0018\r
+:1017200031603093EB007093EC002093ED00509308\r
+:10173000F0002091EE0027FF07C09F5FD3CF8F708E\r
+:101740008093E90081E0089580E008958091E501AB\r
+:1017500087FF11C08091E80082FD05C08091E401FF\r
+:101760008111F8CF11C08091E8008B770BC0809178\r
+:10177000E401882349F08091E80080FFF8CF809150\r
+:10178000E8008E778093E80008952091E40030917E\r
+:10179000E50095E64091EC00842F817040FF22C067\r
+:1017A0008091E80080FD1CC08091E401882391F0C5\r
+:1017B000853091F08091EB0085FD10C04091E400F0\r
+:1017C0005091E5004217530729F39A01915011F700\r
+:1017D00084E0089582E0089583E0089581E008950B\r
+:1017E00080E008954091E80042FFDECF08950E9416\r
+:1017F000650C0E946D0CE0EEF0E0808181608083DA\r
+:10180000E8EDF0E080818F77808319BCA7EDB0E030\r
+:101810008C918E7F8C9380818F7E80831092E301E8\r
+:1018200008950F931F93CF93DF930E94650C0E943E\r
+:101830006D0CC8EDD0E088818F77888388818068BF\r
+:10184000888388818F7D888319BC1092E40110926F\r
+:10185000E0011092E2011092E10100EE10E0F801C7\r
+:1018600080818B7F808388818160888342E060E013\r
+:1018700080E00E94710BE1EEF0E080818E7F80833A\r
+:10188000E2EEF0E0808181608083808188608083E7\r
+:10189000F80180818E7F8083888180618883DF91D9\r
+:1018A000CF911F910F910895E8EDF0E080818F7E38\r
+:1018B0008083E7EDF0E080818160808384E082BFF7\r
+:1018C00081E08093E3010C94110CE8EDF0E080815D\r
+:1018D0008E7F80831092E20008951092DA001092B9\r
+:1018E000E10008951F920F920FB60F9211242F93CB\r
+:1018F0003F934F935F936F937F938F939F93AF9398\r
+:10190000BF93EF93FF938091E10082FF0BC0809122\r
+:10191000E20082FF07C08091E1008B7F8093E100AD\r
+:101920000E94D90E8091DA0080FF1FC08091D800FC\r
+:1019300080FF1BC08091DA008E7F8093DA00809157\r
+:10194000D90080FF0DC080E189BD82E189BD09B465\r
+:1019500000FEFDCF81E08093E4010E94D40805C021\r
+:1019600019BC1092E4010E94E2088091E10080FF1E\r
+:1019700019C08091E20080FF15C08091E2008E7F47\r
+:101980008093E2008091E20080618093E200809188\r
+:10199000D80080628093D80019BC85E08093E40170\r
+:1019A0000E94E6088091E10084FF30C08091E2004F\r
+:1019B00084FF2CC080E189BD82E189BD09B400FEAD\r
+:1019C000FDCF8091D8008F7D8093D8008091E10079\r
+:1019D0008F7E8093E1008091E2008F7E8093E20011\r
+:1019E0008091E20081608093E2008091E001882391\r
+:1019F00011F084E007C08091E30087FD02C081E020\r
+:101A000001C083E08093E4010E94E8088091E10036\r
+:101A100083FF29C08091E20083FF25C08091E1000F\r
+:101A2000877F8093E10082E08093E4011092E001DF\r
+:101A30008091E1008E7F8093E1008091E2008E7FB3\r
+:101A40008093E2008091E20080618093E20042E0B6\r
+:101A500060E080E00E94710B8091F00088608093CC\r
+:101A6000F0000E94E508FF91EF91BF91AF919F9127\r
+:101A70008F917F916F915F914F913F912F910F9037\r
+:101A80000FBE0F901F9018951F920F920FB60F92D6\r
+:101A900011242F933F934F935F936F937F938F9373\r
+:101AA0009F93AF93BF93CF93DF93EF93FF93C09137\r
+:101AB000E900CF708091EC00D82FD17080FDD0E884\r
+:101AC0001092E9008091F000877F8093F000789475\r
+:101AD0000E94880D1092E9008091F0008860809348\r
+:101AE000F000CD2BCF70C093E900FF91EF91DF9113\r
+:101AF000CF91BF91AF919F918F917F916F915F91A6\r
+:101B00004F913F912F910F900FBE0F901F901895FE\r
+:101B10001F93CF93DF93CDB7DEB7AA970FB6F89494\r
+:101B2000DEBF0FBECDBFE5EEF1E088E08E0F9091F5\r
+:101B3000F10091938E13FBCF0E9404098091E8007D\r
+:101B400083FF1FC18091E5019091E601492F50E08C\r
+:101B50004A30510508F015C1FA01EA5AFF4F0C94BA\r
+:101B60008323803881F0823809F00BC18091E9012C\r
+:101B70008F708093E9008091EB0085FB882780F9C6\r
+:101B80001092E90006C08091E1019091E20191116B\r
+:101B900082609091E800977F9093E8008093F10035\r
+:101BA0001092F100C8C0282F2D7F09F0EAC08823C9\r
+:101BB00019F0823061F0E5C08091E701813009F0D1\r
+:101BC000E0C0933009F080E08093E2012BC0809167\r
+:101BD000E701811127C08091E9018F7009F4D1C01C\r
+:101BE0008093E9002091EB0020FF1CC0933021F48A\r
+:101BF0008091EB00806214C09091EB009061909313\r
+:101C0000EB0021E030E0A90102C0440F551F8A9586\r
+:101C1000E2F74093EA001092EA008091EB008860BE\r
+:101C20008093EB001092E9008091E800877F86C0E6\r
+:101C30008111A7C01091E7011F778091E3008078A0\r
+:101C4000812B8093E3008091E800877F8093E800F8\r
+:101C50000E94A60B8091E80080FFFCCF8091E300FA\r
+:101C600080688093E300111102C082E001C083E02C\r
+:101C70008093E40186C08058823008F082C0809151\r
+:101C8000E7019091E8018C3D53E0950779F583E0F9\r
+:101C90008A838AE289834FB7F894DE01139620E0A5\r
+:101CA0003EE051E2E32FF0E050935700E49120FF33\r
+:101CB00003C0E295EF703F5FEF708E2F90E0EA3047\r
+:101CC00010F0C79601C0C0968D939D932F5F24316D\r
+:101CD00049F74FBF8091E800877F8093E8006AE270\r
+:101CE00070E0CE0101960E94AD0A14C0AE014F5FB4\r
+:101CF0005F4F6091E9010E94F409BC01892B09F44E\r
+:101D000040C09091E800977F9093E80089819A8184\r
+:101D10000E94100B8091E8008B778093E80031C01F\r
+:101D2000803879F58091E800877F8093E800809182\r
+:101D3000E0018093F1008091E8008E778093E800C5\r
+:101D40000E94A60B1EC081111CC09091E701923029\r
+:101D5000C0F48091E800877F8093E8009093E001D1\r
+:101D60000E94A60B8091E001811106C08091E300E2\r
+:101D700087FD02C081E001C084E08093E4010E94FD\r
+:101D8000F0088091E80083FF0AC08091E800877F17\r
+:101D90008093E8008091EB0080628093EB00AA962C\r
+:101DA0000FB6F894DEBF0FBECDBFDF91CF911F916C\r
+:101DB00008950895CF938091E4018823A1F0C09104\r
+:101DC000E900CF709091EC00892F817090FD80E840\r
+:101DD000C82B1092E9008091E80083FD0E94880DD5\r
+:101DE000CF70C093E900CF910895909369018093DB\r
+:101DF00068010895E0916801F0916901309721F040\r
+:101E00000190F081E02D099480E00895E09168014F\r
+:101E1000F0916901309721F00280F381E02D09945F\r
+:101E20000895E0916801F0916901309721F00480F4\r
+:101E3000F581E02D099408952091660130916701A4\r
+:101E40008217930771F09093670180936601E09188\r
+:101E50006801F0916901309721F00680F781E02D4B\r
+:101E600009940895209164013091650182179307C8\r
+:101E700071F09093650180936401E0916801F091A5\r
+:101E80006901309721F00084F185E02D09940895CF\r
+:101E900008950C94480F0E945E1B0E940B040C9442\r
+:101EA000241CCF92DF92EF92FF920F931F93CF9358\r
+:101EB000DF93CDB7DEB72B970FB6F894DEBF0FBE1A\r
+:101EC000CDBF0E9423048BE6C82E81E0D82E00E00F\r
+:101ED00010E0E02E802F0E941105F60141916F0164\r
+:101EE000F42EF826B1F40F5F1F4F0E30110589F75D\r
+:101EF0008FEF89838A831B820E94671B8160782F02\r
+:101F00009D838C8349815A816B818D810E94F40F5E\r
+:101F100040C09091CD0191FF04C08B870E941705AE\r
+:101F20008B8520E030E04F2D50E0922FBA01022E39\r
+:101F300002C0759567950A94E2F760FF24C02E836E\r
+:101F4000EF8221E030E0690102C0CC0CDD1C9A95E3\r
+:101F5000E2F790E08C219D21892B09F420E028876D\r
+:101F60000E94671B8160782F9A8789874E815F81E5\r
+:101F700068858A850E94F40FF801E559FE4F80813B\r
+:101F8000C826C08206C02F5F3F4F2630310569F654\r
+:101F9000AACF0E940B1F10916A010E94FA0E181717\r
+:101FA000A1F00E94FA0E80936A012B960FB6F89466\r
+:101FB000DEBF0FBECDBFDF91CF911F910F91FF907C\r
+:101FC000EF90DF90CF900C94F3072B960FB6F89418\r
+:101FD000DEBF0FBECDBFDF91CF911F910F91FF905C\r
+:101FE000EF90DF90CF900895CF93DF93CDB7DEB71A\r
+:101FF0002B970FB6F894DEBF0FBECDBF4F83588727\r
+:1020000069877A878B87DE01119686E0FD01119240\r
+:102010008A95E9F785E0FE01379601900D928A9541\r
+:10202000E1F749815A816B817C818D819E810E947B\r
+:1020300024172B960FB6F894DEBF0FBECDBFDF91ED\r
+:10204000CF9108950895CF93882309F4C2C0C82F73\r
+:10205000823859F40E94FA0E81FDBBC089E30E94C8\r
+:10206000CD190E949A1A89E30CC0833879F40E9432\r
+:10207000FA0E80FDAEC083E50E94CD190E949A1A27\r
+:1020800083E50E940F1ACF910C949A1A843859F460\r
+:102090000E94FA0E82FD9DC087E40E94CD190E9425\r
+:1020A0009A1A87E4EECF8CEF8C0F813A48F48C2F8C\r
+:1020B0000E944E2181118DC08C2F0E94CD19E3CF3B\r
+:1020C00080E28C0F883048F4C77081E001C0880F2F\r
+:1020D000CA95EAF70E94531AD6CF8BE58C0F83304E\r
+:1020E00078F4C53A29F0C63A31F083E890E005C0AB\r
+:1020F00081E890E002C082E890E0CF910C941C0F40\r
+:1021000088E58C0F833108F064C0C83A39F1C93AC8\r
+:1021100041F1CA3A49F1CB3A51F1CC3A59F1CD3AB1\r
+:1021200061F1C03B69F1CE3A71F1CF3A79F1C13B2F\r
+:1021300081F1C23B89F1C33B91F1C43B99F1C53BAD\r
+:10214000A1F1C63BA9F1C73BB1F1C83BB9F1C93B0D\r
+:10215000C1F1CA3BC9F180E090E038C082EE90E066\r
+:1021600035C089EE90E032C08AEE90E02FC085EB5A\r
+:1021700090E02CC086EB90E029C087EB90E026C071\r
+:102180008CEC90E023C08DEC90E020C083E891E0DF\r
+:102190001DC08AE891E01AC082E991E017C084E985\r
+:1021A00091E014C081E292E011C083E292E00EC09F\r
+:1021B00084E292E00BC085E292E008C086E292E001\r
+:1021C00005C087E292E002C08AE292E0CF910C94CF\r
+:1021D000320FCF910895882309F44BC0823859F407\r
+:1021E0000E94FA0E81FF45C089E30E94CD190E942A\r
+:1021F0009A1A89E30CC0833871F40E94FA0E80FFAA\r
+:1022000038C083E50E94CD190E949A1A83E50E9486\r
+:102210000F1A0C949A1A843859F40E94FA0E82FF0D\r
+:1022200028C087E40E94CD190E949A1A87E4EFCF54\r
+:102230009CEF980F913A58F390E2980F983050F431\r
+:10224000877091E001C0990F8A95EAF7892F0E9463\r
+:10225000591ADFCF9BE5980F933020F480E090E08F\r
+:102260000C941C0F885A833120F480E090E00C9489\r
+:10227000320F0895882321F00E94531A0C949A1A61\r
+:102280000895882321F00E94591A0C949A1A0895EF\r
+:10229000BF92CF92DF92EF92FF920F931F93CF9353\r
+:1022A000DF9300D000D000D0CDB7DEB725E0FC0131\r
+:1022B000DE01119601900D922A95E1F7FC01D08084\r
+:1022C00011810281258122952F7043815481452BF4\r
+:1022D00009F4FCC21F3F21F4FFEFDF1609F4F6C238\r
+:1022E0007C012E830E942210D9821A8369817A810F\r
+:1022F000802F0E94C919182FB92E0E947E190E94A2\r
+:1023000045182E81002319F00E94701A2E81EB2DA2\r
+:10231000E295EF70F0E0E05AFF4F0C9483238B2D91\r
+:10232000807F9B2D9F70F92E882319F0F29480EF07\r
+:10233000F822002389F0FF2009F475C280E2810FA2\r
+:10234000883020F48F2D0E94531A03C08F2D0E94D5\r
+:10235000631A0E949A1A67C2812F0E94EB10FF2015\r
+:1023600009F4B4C2105E8F2D183018F40E94591A67\r
+:1023700002C00E94691A26960FB6F894DEBF0FBEFF\r
+:10238000CDBFDF91CF911F910F91FF90EF90DF9024\r
+:10239000CF90BF900C949A1A3B2D307F8B2D8F706D\r
+:1023A000303211F08295807F112319F0113021F124\r
+:1023B0002CC00023B9F0222309F4A0C1213009F078\r
+:1023C0009DC126960FB6F894DEBF0FBECDBFDF913C\r
+:1023D000CF911F910F91FF90EF90DF90CF90BF9022\r
+:1023E0000C94831A222319F0213009F46FC28E83D2\r
+:1023F0000E94861A8E8196C1002321F0223008F0B7\r
+:1024000065C27CC1211162C28DC1002321F022234B\r
+:1024100009F474C108C2222309F484C119C22B2D06\r
+:1024200026952695237030E02115310521F02130C5\r
+:102430003105D1F04BC2002321F0812F9B2D9370E9\r
+:1024400002C080E090E026960FB6F894DEBF0FBE83\r
+:10245000CDBFDF91CF911F910F91FF90EF90DF9053\r
+:10246000CF90BF900C941C0F002321F0812F9B2D47\r
+:10247000937002C080E090E026960FB6F894DEBF1D\r
+:102480000FBECDBFDF91CF911F910F91FF90EF90C5\r
+:10249000DF90CF90BF900C94320F812F002319F062\r
+:1024A0000E94131E02C00E947B1E26960FB6F8944F\r
+:1024B000DEBF0FBECDBFDF91CF911F910F91FF9077\r
+:1024C000EF90DF90CF90BF900C94001F8B2D837006\r
+:1024D00009F07BC00111FAC1812F82958695877022\r
+:1024E000880F880F912F9F70C92ED12CE12CF12CD1\r
+:1024F000082E04C0CC0CDD1CEE1CFF1C0A94D2F785\r
+:1025000014FF12C04FE050E060E070E004C0440FE0\r
+:10251000551F661F771F8A95D2F7CB01BA016095C8\r
+:1025200070958095909503C060E070E0CB012B2DF5\r
+:10253000269526952370422F50E042305105D9F060\r
+:102540004330510569F16C297D298E299F2941303D\r
+:10255000510551F126960FB6F894DEBF0FBECDBFE0\r
+:10256000DF91CF911F910F91FF90EF90DF90CF906F\r
+:10257000BF900C946C186C297D298E299F29269672\r
+:102580000FB6F894DEBF0FBECDBFDF91CF911F9184\r
+:102590000F91FF90EF90DF90CF90BF900C94881830\r
+:1025A0000E946C18C701B60126960FB6F894DEBFDC\r
+:1025B0000FBECDBFDF91CF911F910F91FF90EF9094\r
+:1025C000DF90CF90BF900C945018002319F08B2D02\r
+:1025D000817001C08695882309F478C1812F829586\r
+:1025E00086958770880F880F912F9F70C92ED12CE8\r
+:1025F000E12CF12C082E04C0CC0CDD1CEE1CFF1CC1\r
+:102600000A94D2F714FF12C04FE050E060E070E08F\r
+:1026100004C0440F551F661F771F8A95D2F7CB0160\r
+:10262000BA01609570958095909503C060E070E068\r
+:10263000CB012B2D269526952370422F50E042305A\r
+:102640005105D9F04330510569F16C297D298E2956\r
+:102650009F294130510551F126960FB6F894DEBFFF\r
+:102660000FBECDBFDF91CF911F910F91FF90EF90E3\r
+:10267000DF90CF90BF900C9446196C297D298E294C\r
+:102680009F2926960FB6F894DEBF0FBECDBFDF910F\r
+:10269000CF911F910F91FF90EF90DF90CF90BF905F\r
+:1026A0000C9462190E944619C701B60126960FB60E\r
+:1026B000F894DEBF0FBECDBFDF91CF911F910F9178\r
+:1026C000FF90EF90DF90CF90BF900C942A19103FAD\r
+:1026D000D1F118F4103E50F4A1C0123F09F463C0C8\r
+:1026E00008F44CC0133F09F473C098C01F708B2DC1\r
+:1026F0008F710023A1F00E94C318812F26960FB678\r
+:10270000F894DEBF0FBECDBFDF91CF911F910F9127\r
+:10271000FF90EF90DF90CF90BF900C943A110E9401\r
+:10272000E418812F26960FB6F894DEBF0FBECDBFFA\r
+:10273000DF91CF911F910F91FF90EF90DF90CF909D\r
+:10274000BF900C9441110023A9F02111BFC08B2D23\r
+:102750008F7126960FB6F894DEBF0FBECDBFDF9106\r
+:10276000CF911F910F91FF90EF90DF90CF90BF908E\r
+:102770000C940919223008F0A9C0E9CF0023A9F070\r
+:102780008B2D8F7126960FB6F894DEBF0FBECDBF8E\r
+:10279000DF91CF911F910F91FF90EF90DF90CF903D\r
+:1027A000BF900C94C318002359F38B2D8F7126967C\r
+:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152\r
+:1027C0000F91FF90EF90DF90CF90BF900C94E418A2\r
+:1027D000002399F08B2D8F7126960FB6F894DEBFEB\r
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062\r
+:1027F000DF90CF90BF900C94AE1826960FB6F89449\r
+:10280000DEBF0FBECDBFDF91CF911F910F91FF9023\r
+:10281000EF90DF90CF90BF900C94A4180023A9F004\r
+:10282000222309F4ADCF812F26960FB6F894DEBF90\r
+:102830000FBECDBFDF91CF911F910F91FF90EF9011\r
+:10284000DF90CF90BF900C942310222309F4ADCFDA\r
+:10285000812F26960FB6F894DEBF0FBECDBFDF9155\r
+:10286000CF911F910F91FF90EF90DF90CF90BF908D\r
+:102870000C94EB104B2D4F70612FC7010E94AB02DF\r
+:1028800026960FB6F894DEBF0FBECDBFDF91CF9175\r
+:102890001F910F91FF90EF90DF90CF90BF900C941D\r
+:1028A000C8174B2D4F70612FC70126960FB6F894AD\r
+:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073\r
+:1028C000EF90DF90CF90BF900C94180526960FB62E\r
+:1028D000F894DEBF0FBECDBFDF91CF911F910F9156\r
+:1028E000FF90EF90DF90CF90BF9008950E94701AF4\r
+:1028F0000E94801A0E94451A0E949A1A0E94B11FD3\r
+:102900000E94001F80E090E00E941C0F80E090E099\r
+:102910000C94320F0E94601A0C9476140E94BE1917\r
+:10292000292F22952F7030E02C3031054CF42A30BD\r
+:1029300031056CF4225031092230310588F407C08A\r
+:102940002C30310549F02F30310531F009C0803E7F\r
+:1029500048F0803F29F406C093FB882780F908954A\r
+:1029600080E0089581E00895CF93DF9300D000D0F8\r
+:102970001F92CDB7DEB70F900F900F900F900F9072\r
+:10298000DF91CF910895CF93DF9300D000D000D096\r
+:10299000CDB7DEB726960FB6F894DEBF0FBECDBF1B\r
+:1029A000DF91CF9108951F93CF93DF93C091790169\r
+:1029B00016E080917A01C81799F0D0E01C9FF001D1\r
+:1029C0001D9FF00D1124E558FE4F40815181628119\r
+:1029D0007381848195810E94C3142196C770E9CFC9\r
+:1029E000DF91CF911F9108954091AB015091AC01BF\r
+:1029F0006091AD017091AE018091AF019091B001F5\r
+:102A00000C94C3148091B00182958F7009F054C06A\r
+:102A10008091AD01882309F44FC080917901A09184\r
+:102A20007A016091AB017091AC014091AE0150917F\r
+:102A3000AF01B6E08A1709F43FC090E04115510597\r
+:102A4000C1F17F3F11F46F3FA1F1B89FF001B99F31\r
+:102A5000F00D1124E558FE4F218172132AC0208108\r
+:102A6000621327C02281211124C0238134812417BD\r
+:102A7000350710F421503109241B350B283C310552\r
+:102A8000C0F42091B0012F7020612093B00126E0A6\r
+:102A9000289FF001299FF00D1124E058FE4F8081FE\r
+:102AA0008F70806180838BEA91E00E9448110C94C2\r
+:102AB000D31401968770BECF0895CF92DF92EF9224\r
+:102AC000FF920F931F93CF93DF93CDB7DEB762973B\r
+:102AD0000FB6F894DEBF0FBECDBF8C0185E0F801C4\r
+:102AE000DE011D9601900D928A95E1F7D8014C9177\r
+:102AF00011965C91119712966C9112971396CD9046\r
+:102B0000DC9014973091AB017091AC018091AE01D3\r
+:102B10009091AF01009709F46BC17F3F19F43F3FDB\r
+:102B200009F466C1E090AD01EE2009F4C0C0209127\r
+:102B3000B001C816D90628F0F601E81BF90BCF0141\r
+:102B400004C0809590958C0D9D1DFF24F394883CC6\r
+:102B5000910578F0F12C207F09F0C6C07C2DD98A30\r
+:102B6000C88A89890E94B4148BEA91E00E944811B6\r
+:102B7000B1C0822F807F09F046C0751314C0341392\r
+:102B800012C0611110C02F7020612093B0010E940B\r
+:102B9000F4148BEA91E00E9448118091B001D801B1\r
+:102BA00015968C932EC0CD2819F15F3F11F44F3F3D\r
+:102BB000F9F0F62E61111CC08091790120917A0103\r
+:102BC00036E0821709F45AC090E0389FF001399F2F\r
+:102BD000F00D1124E558FE4F7181571306C0708126\r
+:102BE000471303C07281711103C001968770E9CF4A\r
+:102BF000F62E662309F418C18091B001816080939C\r
+:102C0000B001F12C11C1751308C0341306C0611155\r
+:102C100004C08091B001D801C3C04D875E878D8507\r
+:102C20009E856A8B0E948E146A898823E1F166234F\r
+:102C3000D1F12091B001822F82958F7090E00297A0\r
+:102C400074F08091AB019091AC0198878F831986C5\r
+:102C5000DB86CA862C87CE0107960E94481186E043\r
+:102C6000F801ABEAB1E001900D928A95E1F70E947C\r
+:102C700002150E94F414FF24F394D6C04D875E879A\r
+:102C80008D859E850E94BE19292F22952F7030E0D8\r
+:102C9000223031050CF0BCC09F7009F0B6C0805ED8\r
+:102CA000883008F4C1C0C8010E944811E4CFC8169A\r
+:102CB000D90608F453C0F601E81BF90BCF01883C94\r
+:102CC000910508F450C0F12C7C2DD98AC88A8989D5\r
+:102CD0000E94B414EBEAF1E086E0DF011D928A95D0\r
+:102CE000E9F70E94F414A0C0751314C0341312C085\r
+:102CF000611110C08091B001F8018583C8010E9464\r
+:102D0000481186E0EBEAF1E0DF011D928A95E9F7D0\r
+:102D1000FE2C8AC04D875E878D859E856A8B0E94BA\r
+:102D20008E146A89882309F4BECF662309F4BBCFC9\r
+:102D30002091B001822F82958F7090E002970CF461\r
+:102D40008ECF8091AB019091AC019A8389831B82D5\r
+:102D5000DD82CC822E83CE0101967FCF8095909527\r
+:102D60008C0D9D1DACCFF62E662309F49CCF7513F8\r
+:102D70002EC034132CC02091B00120FD1FC0822F23\r
+:102D800082958F70D9F0D80115962C9315978F30B6\r
+:102D900049F08F5F982F9295907F822F8F70892BAB\r
+:102DA00015968C93C8010E94481186E0F801ABEAA1\r
+:102DB000B1E001900D928A95E1F793CF86E0F8019A\r
+:102DC000ABEAB1E001900D928A95E1F72DC04D87F5\r
+:102DD0005E878D859E850E948E14811140CF8091E3\r
+:102DE000B00181608093B001C8010E9448111CC0ED\r
+:102DF000662309F458CF4D875E878D859E850E9496\r
+:102E00008E14882309F44FCF2ACF811148CF0CC0EC\r
+:102E1000243031050CF047CF9F7009F440CFF80102\r
+:102E20009581907F09F03BCF8F2D62960FB6F89475\r
+:102E3000DEBF0FBECDBFDF91CF911F910F91FF90ED\r
+:102E4000EF90DF90CF9008951F93CF93DF93CDB78E\r
+:102E5000DEB72C970FB6F894DEBF0FBECDBF4F8301\r
+:102E6000588769877A878B879C87CE0107960E944F\r
+:102E70005D15882369F08F8198852A853B85232BF2\r
+:102E8000F1F19F3F09F063C08F3F09F060C037C088\r
+:102E900086E0FE013796DE01119601900D928A952B\r
+:102EA000E1F76F817885EA85FB85309741F17F3FB7\r
+:102EB00011F46F3F21F120917A0130E0C9010196B0\r
+:102EC000877099274091790150E08417950709F49C\r
+:102ED00047C069837A83FD83EC8396E0929FD0019B\r
+:102EE000939FB00D1124A558BE4FFE01319601905D\r
+:102EF0000D929A95E1F780937A010E94D31416E01F\r
+:102F00008091790190917A018917C1F1189FC001D0\r
+:102F1000112485589E4F0E945D15882379F1E09118\r
+:102F200079011E9FF0011124E558FE4F4081518127\r
+:102F300062817381848195810E94C314809179019B\r
+:102F400090E001968770992780937901D9CF4F81BE\r
+:102F5000588569857A858B859C850E94C314CFCF5F\r
+:102F60000E948A1410927A0110927901EBEAF1E042\r
+:102F700086E0DF011D928A95E9F7C1CF2C960FB646\r
+:102F8000F894DEBF0FBECDBFDF91CF911F910895A2\r
+:102F9000EF92FF920F931F93CF93DF938C01892BB6\r
+:102FA00009F46CC0F12CEE24E394E8012196F801B9\r
+:102FB0008491843740F4843008F051C0813081F02E\r
+:102FC000823019F15BC0853709F444C0A8F19CE751\r
+:102FD000980F903708F052C08F770E94EB1041C0D5\r
+:102FE0000E5F1F4FFE01C49180E28C0F883048F4C1\r
+:102FF000C7708E2D01C0880FCA95EAF70E94731A18\r
+:1030000014C08C2F0E9423102DC00E5F1F4FFE0195\r
+:10301000C49180E28C0F883058F4C7708E2D01C0A7\r
+:10302000880FCA95EAF70E94791A0E949A1A1AC064\r
+:103030008C2F0E94EB1016C00E5F1F4FFE01C49133\r
+:10304000CC2381F08FE99FE00197F1F700C00000E9\r
+:10305000C150F6CF0E5F1F4FFE01F49003C00E94D7\r
+:1030600023108E018F2D882309F49FCFEFE9FFE015\r
+:103070003197F1F700C000008150F5CFDF91CF917B\r
+:103080001F910F91FF90EF90089508956093B501FF\r
+:103090007093B6018093B7019093B8010C947614A5\r
+:1030A0000F931F930091B5011091B6012091B701C4\r
+:1030B0003091B801DC01CB01802B912BA22BB32BDB\r
+:1030C0008093B5019093B601A093B701B093B80176\r
+:1030D0001F910F910C9476140F931F930091B501DB\r
+:1030E0001091B6012091B7013091B801DC01CB01FC\r
+:1030F00080239123A223B3238093B5019093B6013B\r
+:10310000A093B701B093B8011F910F910C9476145E\r
+:103110000F931F930091B5011091B6012091B70153\r
+:103120003091B801DC01CB0180279127A227B3277A\r
+:103130008093B5019093B601A093B701B093B80105\r
+:103140001F910F910C9476141092B1011092B2015C\r
+:103150001092B3011092B4010C94761441E050E047\r
+:1031600060E070E004C0440F551F661F771F8A950A\r
+:10317000D2F74093B1015093B2016093B3017093C1\r
+:10318000B4010C94761441E050E060E070E004C0BB\r
+:10319000440F551F661F771F8A95D2F78091B101A2\r
+:1031A0009091B201A091B301B091B401482B592B79\r
+:1031B0006A2B7B2B4093B1015093B2016093B30112\r
+:1031C0007093B4010C94761441E050E060E070E03C\r
+:1031D00004C0440F551F661F771F8A95D2F740958C\r
+:1031E0005095609570958091B1019091B201A09138\r
+:1031F000B301B091B401482359236A237B23409340\r
+:10320000B1015093B2016093B3017093B4010C9477\r
+:10321000761441E050E060E070E004C0440F551FB8\r
+:10322000661F771F8A95D2F78091B1019091B20104\r
+:10323000A091B301B091B401482759276A277B2791\r
+:103240004093B1015093B2016093B3017093B40104\r
+:103250000C9476140F931F930091B1011091B20159\r
+:103260002091B3013091B401DC01CB01802B912B73\r
+:10327000A22BB32B8093B1019093B201A093B30121\r
+:10328000B093B4011F910F910C9476140F931F9378\r
+:103290000091B1011091B2012091B3013091B401BC\r
+:1032A000DC01CB0180239123A223B3238093B101BE\r
+:1032B0009093B201A093B301B093B4011F910F9109\r
+:1032C0000C9476140F931F930091B1011091B201E9\r
+:1032D0002091B3013091B401DC01CB01802791270B\r
+:1032E000A227B3278093B1019093B201A093B301B9\r
+:1032F000B093B4011F910F910C9476140895CF925E\r
+:10330000DF92EF92FF920F931F93CF93DF938C0185\r
+:10331000C090B501D090B601E090B701F090B8012F\r
+:103320008091B1019091B201A091B301B091B4012B\r
+:10333000C82AD92AEA2AFB2ACFE1D0E0D701C60160\r
+:103340000C2E04C0B695A795979587950A94D2F749\r
+:1033500080FF06C0B8018C2F0E945807019721F406\r
+:10336000219760F780E001C08C2FDF91CF911F91F2\r
+:103370000F91FF90EF90DF90CF900895CF93DF9360\r
+:10338000EC010E947F19BE010E945807DF91CF9186\r
+:103390000895CB010E94BE19089590910C019923C4\r
+:1033A00021F090910D01911109C020910E013091F1\r
+:1033B0000F01F90132969FEF40E01FC0982F9695BC\r
+:1033C000969596959F3050F5E0910E01F0910F0182\r
+:1033D000E90FF11D877021E030E0A90102C0440F20\r
+:1033E000551F8A95E2F7CA019181892B818308953F\r
+:1033F0009F3F39F04F5F4E3041F051915813F8CF55\r
+:103400000DC05111F7CF942FF5CF9F3F39F0F9013F\r
+:10341000E90FF11D97FDFA95828308950895909123\r
+:103420000C01992321F090910D01911109C0209177\r
+:103430000E0130910F01F9013296205F3F4F1FC0FE\r
+:10344000982F9695969596959F30F0F4E0910E0101\r
+:10345000F0910F01E90FF11D877021E030E0A90123\r
+:1034600002C0440F551F8A95E2F7CA0180959181E9\r
+:103470008923818308953196E217F30729F090811B\r
+:103480009813F9CF1082F7CF089581E090E0E09192\r
+:103490000E01F0910F01E80FF91F108201968031A3\r
+:1034A0009105A9F708959091CC01892B8093CC01C7\r
+:1034B000089580959091CC0189238093CC01089543\r
+:1034C0001092CC0108959091CB01892B8093CB0170\r
+:1034D000089580959091CB0189238093CB01089525\r
+:1034E0001092CB0108959091CA01892B8093CA0153\r
+:1034F000089580959091CA0189238093CA01089507\r
+:103500001092CA0108958093B90108951092B901EB\r
+:10351000089580910E0190910F01FC0131969C015C\r
+:10352000205F3F4F80E0919191118F5FE217F30789\r
+:10353000D1F70895E0910E01F0910F018091CC0137\r
+:103540008083E0910E01F0910F0190818091CB0179\r
+:10355000892B8083E0910E01F0910F019081809181\r
+:10356000CA01892B80838091B901882361F0E091A1\r
+:103570000E01F0910F019081892B80830E94891A9E\r
+:1035800081111092B90180910E0190910F010C945C\r
+:10359000060FCF92DF92EF92FF926C01EE24FF2490\r
+:1035A000C114D104E104F10421F0C701B60120E106\r
+:1035B00001C020E0C72ED82EE92EFF24C114D1046B\r
+:1035C000E104F10419F0285FC701B6016B017C0129\r
+:1035D00054E0F694E794D794C7945A95D1F7C11460\r
+:1035E000D104E104F10419F02C5FC701B6016B01AD\r
+:1035F0007C0142E0F694E794D794C7944A95D1F7BA\r
+:10360000C114D104E104F10419F02E5FC701B60121\r
+:10361000DC01CB01B695A79597958795892B8A2BC9\r
+:103620008B2B09F02F5F822FFF90EF90DF90CF90D0\r
+:1036300008958091E401843021F11092CE0120E4BC\r
+:1036400088E190E00FB6F894A895809360000FBED3\r
+:103650002093600080E00E94F30783B7817F84603D\r
+:1036600083BF83B7816083BF7894889583B78E7F4B\r
+:1036700083BF88E10FB6F8948093600010926000D9\r
+:103680000FBE089508950895CF930E94421B0E9493\r
+:1036900023040E94431BC0E08C2F0E94110581115E\r
+:1036A00004C0CF5FCE30C1F701C081E0CF91089553\r
+:1036B0000E948A140E94FA0E0C94F30782E084BDE3\r
+:1036C00093E095BD9AEF97BD80936E0008952FB754\r
+:1036D000F8948091CF019091D001A091D101B09147\r
+:1036E000D2012FBF0895CF92DF92EF92FF920F93F6\r
+:1036F0001F932FB7F8944091CF015091D001609162\r
+:10370000D1017091D2012FBF6A017B01EE24FF2409\r
+:103710008C0120E030E0C016D106E206F30610F47A\r
+:10372000415051099A01281B390BC9011F910F9172\r
+:10373000FF90EF90DF90CF9008951F920F920FB6F9\r
+:103740000F9211248F939F93AF93BF938091CF01DA\r
+:103750009091D001A091D101B091D2010196A11D0B\r
+:10376000B11D8093CF019093D001A093D101B0936C\r
+:10377000D201BF91AF919F918F910F900FBE0F908B\r
+:103780001F9018950E94F70BF8942FEF87EA91E6A7\r
+:10379000215080409040E1F700C0000087E090EBAE\r
+:1037A000DC018093EE019093EF01A093F001B093C0\r
+:1037B000F1019CE088E10FB6F894A8958093600031\r
+:1037C0000FBE90936000FFCFEF92FF920F931F9375\r
+:1037D000CF93DF93D82FC0E08C2F0E94110500E01B\r
+:1037E00010E0E82EF12CC701002E02C095958795B8\r
+:1037F0000A94E2F780FD06C00F5F1F4F06301105E7\r
+:1038000091F709C0602F7C2F80E00E941905D81322\r
+:10381000F3CF81E004C0CF5FCE30F1F680E0DF91DE\r
+:10382000CF911F910F91FF90EF900895CF93C82FE4\r
+:103830008CE20E94E41B882321F08C2FCF910C9402\r
+:10384000E41B80E0CF910895CF930E946B1D8111FE\r
+:1038500002C00E94511DC5E6C15049F00E942304D8\r
+:103860008FE39CE90197F1F700C00000F5CF89E2F2\r
+:103870000E94161C811113C18AE20E94161C81113C\r
+:103880000E94511D85E00E94161C81110E94C21BDE\r
+:103890000E94761D8093CD0187E00E94161C88232C\r
+:1038A000A9F18BE10E94161C882351F08091CD0173\r
+:1038B00081FB222720F991E0922790FB81F90EC02D\r
+:1038C0008EE00E94161C882361F08091CD0182FB5E\r
+:1038D000222720F991E0922790FB82F98093CD0175\r
+:1038E00015C080E10E94161C9091CD01882341F003\r
+:1038F00093FB222720F981E0822780FB93F904C003\r
+:10390000892F809580FB90F99093CD018091CD0116\r
+:103910000E947A1D0E94881D8093ED0180EE0E9416\r
+:10392000161C882341F08091ED01982F909590FB13\r
+:1039300080F98093ED0189E30E94161C882359F0D9\r
+:103940008091ED0181FB222720F991E0922790FBE5\r
+:1039500081F98093ED0182EE0E94161C882359F0B4\r
+:103960008091ED0182FB222720F991E0922790FBC4\r
+:1039700082F98093ED0186EE0E94161C882359F08F\r
+:103980008091ED0183FB222720F991E0922790FBA3\r
+:1039900083F98093ED0183EE0E94161C882359F071\r
+:1039A0008091ED0184FB222720F991E0922790FB82\r
+:1039B00084F98093ED0185E30E94161C882359F059\r
+:1039C0008091ED0185FB222720F991E0922790FB61\r
+:1039D00085F98093ED0181E30E94161C882359F03C\r
+:1039E0008091ED0186FB222720F991E0922790FB40\r
+:1039F00086F98093ED0181E10E94161C882359F01D\r
+:103A00008091ED0187FB222720F991E0922790FB1E\r
+:103A100087F98093ED018091ED010E948C1D8091CA\r
+:103A2000ED0187FB882780F980930D0187E20E94D2\r
+:103A3000161CC82F8EE10E94161C8111C2608FE1F6\r
+:103A40000E94161C8111C46080E20E94161C811124\r
+:103A5000C86081E20E94161C8111C06182E20E944E\r
+:103A6000161C8111C06283E20E94161C8111C06481\r
+:103A700084E20E94161C882311F0C06802C0CC2387\r
+:103A800029F08C2F0E94831D6C2F03C00E947F1D84\r
+:103A9000682F70E080E090E0CF910C944618CF91B1\r
+:103AA00008956DEE7EEF80E090E00E94BD2360E01F\r
+:103AB00082E090E00E94AB2360E083E090E00E940F\r
+:103AC000AB2360E084E090E00E94AB2360E085E0FF\r
+:103AD00090E00C94AB2380E090E00E94A52321E0CD\r
+:103AE0008D3E9E4F09F020E0822F089582E090E005\r
+:103AF0000C949D23682F82E090E00C94AB2383E02C\r
+:103B000090E00C949D23682F83E090E00C94AB230D\r
+:103B100084E090E00C949D23682F84E090E00C9466\r
+:103B2000AB238091D50180FF0BC06091130185E02C\r
+:103B3000689FB001112475956795759567952BC0A1\r
+:103B400081FF09C06091130185E0689FB0011124D5\r
+:103B50007595679520C082FF07C06091130185E0CD\r
+:103B6000689FB001112417C09091D6019923D1F01C\r
+:103B700060911201961788F72091130185E0289F24\r
+:103B800090011124929FA001939F500D112470E089\r
+:103B9000CA010E946F236038710540F461157105F8\r
+:103BA00039F002C065E070E0862F08958FE7089530\r
+:103BB00081E008958091D50180FF08C060911101D6\r
+:103BC00070E0759567957595679521C081FF06C072\r
+:103BD0006091110170E07595679519C082FF04C06E\r
+:103BE0006091110170E010C09091D6019923C1F04D\r
+:103BF000609110019617A0F780911101899FC00173\r
+:103C0000112470E00E946F236038710528F461155B\r
+:103C1000710521F0862F08958FE7089581E00895BA\r
+:103C200061E070E0F4CF803F21F40E94911D819506\r
+:103C300004C0813F29F40E94911D8093D901089509\r
+:103C4000823F21F40E94911D819504C0833F29F495\r
+:103C50000E94911D8093D8010895893F19F40E9414\r
+:103C6000DA1D05C08A3F31F40E94DA1D81958093E8\r
+:103C7000DA0108958B3F21F40E94DA1D819504C07A\r
+:103C80008C3F29F40E94DA1D8093DB010895843F64\r
+:103C900021F48091D701816017C0853F21F4809184\r
+:103CA000D701826011C0863F21F48091D7018460E2\r
+:103CB0000BC0873F21F48091D701886005C0883F01\r
+:103CC00031F48091D70180618093D70108958D3FB1\r
+:103CD00021F48091D50181600BC08E3F21F4809149\r
+:103CE000D501826005C08F3F29F48091D5018460A1\r
+:103CF0008093D5010895803F39F48091D90187FFE1\r
+:103D00006CC01092D90169C0813F29F48091D9011A\r
+:103D10001816BCF362C09091D801823F29F497FF36\r
+:103D20005CC01092D80159C0833F19F41916CCF326\r
+:103D300054C0893F41F48091DA0118160CF04DC04F\r
+:103D40001092DA014AC08A3F29F48091DA0187FF94\r
+:103D500044C0F6CF8B3F39F48091DB0187FF3DC033\r
+:103D60001092DB013AC08C3F29F48091DB011816D8\r
+:103D7000BCF333C0843F21F48091D7018E7F17C0FC\r
+:103D8000853F21F48091D7018D7F11C0863F21F4BA\r
+:103D90008091D7018B7F0BC0873F21F48091D701A1\r
+:103DA000877F05C0883F31F48091D7018F7E809353\r
+:103DB000D70113C08D3F21F48091D5018E7F0BC0B8\r
+:103DC0008E3F21F48091D5018D7F05C08F3F29F46E\r
+:103DD0008091D5018B7F8093D5018091D80181118D\r
+:103DE0000EC08091D90181110AC08091DA01811140\r
+:103DF00006C08091DB01811102C01092D6010895A6\r
+:103E000087ED91E00E94110F0E94671B9093D401EF\r
+:103E10008093D30108951F93CF93DF938091D301B3\r
+:103E20009091D4010E94731BAC019091D60199230B\r
+:103E300021F02091140130E006C0209115018AE0A4\r
+:103E4000289F900111244217530708F486C08091DF\r
+:103E5000D801C091D901D091DA011091DB01811113\r
+:103E600007C0C11176C0D11174C0111172C075C0E4\r
+:103E70009F3F19F09F5F9093D601181624F40E947B\r
+:103E8000911D8093D8018091D80187FF05C00E94C1\r
+:103E9000911D81958093D8011C1624F40E94911DD8\r
+:103EA0008093D9018091D90187FF05C00E94911D9F\r
+:103EB00081958093D9016091D801662339F1C09131\r
+:103EC000D901CC2319F1772767FD7095872F972F9C\r
+:103ED0000E94802223E333E343E35FE30E94E42272\r
+:103EE0000E944D226093D8016C2F772767FD709553\r
+:103EF000872F972F0E94802223E333E343E35FE37E\r
+:103F00000E94E4220E944D226093D9011D1624F4E0\r
+:103F10000E94DA1D8093DA018091DA0187FF05C0E3\r
+:103F20000E94DA1D81958093DA01111624F40E9413\r
+:103F3000DA1D8093DB018091DB0187FF05C00E94C1\r
+:103F4000DA1D81958093DB01DF91CF911F910C9455\r
+:103F5000001F9F3F09F08ECF96CFDF91CF911F9129\r
+:103F60000895E7EDF1E085E0DF011D928A95E9F71C\r
+:103F70001092D6011092D5010895833081F128F472\r
+:103F8000813059F08230D1F00895853009F449C06C\r
+:103F9000B8F1863009F456C0089580911501262F96\r
+:103FA00030E0280F311D2F3F310524F4680F609356\r
+:103FB000150108958FEF80931501089580911401E4\r
+:103FC000262F30E0280F311D2F3F310524F4680FD4\r
+:103FD0006093140108958FEF8093140108958091E8\r
+:103FE0001301262F30E0280F311D2F3F310524F417\r
+:103FF000680F6093130108958FEF80931301089564\r
+:1040000080911201262F30E0280F311D2F3F3105FE\r
+:1040100024F4680F6093120108958FEF80931201CA\r
+:10402000089580911101262F30E0280F311D2F3F78\r
+:10403000310524F4680F6093110108958FEF809388\r
+:104040001101089580911001262F30E0280F311DB5\r
+:104050002F3F310524F4680F6093100108958FEF0E\r
+:10406000809310010895833011F128F4813049F0D4\r
+:10407000823091F00895853081F120F18630C1F1D0\r
+:10408000089580911501681720F4861B809315010F\r
+:10409000089510921501089580911401681720F475\r
+:1040A000861B809314010895109214010895809145\r
+:1040B0001301681720F4861B809313010895109252\r
+:1040C0001301089580911201681720F4861B8093D4\r
+:1040D000120108951092120108958091110168173C\r
+:1040E00020F4861B80931101089510921101089508\r
+:1040F00080911001681720F4861B809310010895A9\r
+:104100001092100108950F931F938D3109F46BC025\r
+:1041100008F03FC08E3009F47FC0C0F4873009F446\r
+:1041200069C068F4863009F0B1C08091CD01817F0B\r
+:104130008E7F8093CD0181E08093DD01A8C088301F\r
+:1041400009F4A2C08B3009F49FC0A0C0863109F4E5\r
+:104150009BC078F4803109F472C0813109F096C0B7\r
+:104160000E948A1490910D0181E0892780930D01AE\r
+:104170008BC0893109F488C08B3109F087C08091E8\r
+:10418000CD0181FB222720F991E0922790FB81F954\r
+:104190004CC0853309F470C048F4873209F46CC010\r
+:1041A00008F459C0893209F467C070C0833438F408\r
+:1041B0008A3308F04EC0883309F466C067C0833480\r
+:1041C00009F45AC0883409F061C00E948A140FEFC4\r
+:1041D00013ED20E3015010402040E1F700C0000043\r
+:1041E0000E94C21B51C00E9407220E94FA0E0E9428\r
+:1041F000F3074AC09091CD01892F8095817080FB93\r
+:1042000090F929F0966098609093CD0140C0997F15\r
+:10421000977F9093CD0138C08091CD0182FB2227FA\r
+:1042200020F991E0922790FB82F98093CD019923A8\r
+:1042300059F18091CD0181608093CD0125C080919D\r
+:10424000CD0183FB222720F991E0922790FB83F98F\r
+:10425000ECCF895301C08D5141E050E060E070E047\r
+:104260008A019B0104C0000F111F221F331F8A9572\r
+:10427000D2F7C901B80104C061E070E080E090E0CD\r
+:104280000E9446180E948A1481E001C080E01F91BC\r
+:104290000F91089580E0089580E00895CF93C82F8E\r
+:1042A0008091DD01813079F018F08230E9F187C02A\r
+:1042B000E0910E01F0910F018081813169F082322D\r
+:1042C00009F07FC009C0E0910E01F0910F018081DB\r
+:1042D000813111F0823261F48C2F0E944A218111C8\r
+:1042E00004C08C2F0E9483201DC081E090E01AC082\r
+:1042F0008C2F0E944C21811114C0C43179F048F4F4\r
+:10430000CB3079F0C03109F060C082E08093DD01EC\r
+:1043100008C0C93219F0C83321F057C01092DD012E\r
+:1043200054C081E0817053C0C93289F118F5C4319D\r
+:1043300071F1A8F4C73009F046C08AE080931501F6\r
+:1043400094E19093140193E09093130180931201F0\r
+:1043500088E08093110188E28093100134C0CE512F\r
+:10436000C63088F5EC2FF0E0E65DFE4F808180934B\r
+:10437000DC0129C0CE34E9F020F4CB3421F56AE029\r
+:1043800013C0C13579F0C235F1F461E00DC0809100\r
+:10439000DC01882319F01092DC0115C081E08093C4\r
+:1043A000DD0115C061E006C08091DC010E94BD1FE7\r
+:1043B0000AC06AE08091DC010E94332004C01092A0\r
+:1043C000DD0180E004C081E002C080E0ABCFCF918E\r
+:1043D0000895E1E8F0E080818860808380818160D9\r
+:1043E00080838FB7F89493E09093890090ED909339\r
+:1043F00088008FBF0895EFE6F0E0808182608083BF\r
+:104400000895EFE6F0E080818D7F80830895EFE6E8\r
+:10441000F0E0908182E08927808308951F920F92B7\r
+:104420000FB60F9211242F933F934F935F936F9387\r
+:104430007F938F939F93AF93BF93EF93FF9380915D\r
+:10444000DE019091DF0101969093DF018093DE0100\r
+:10445000811103C082E00E94F307E091DF01E6953D\r
+:10446000E695F0E0E657FB4FE4918091DE018E1374\r
+:1044700003C080E00E94F307FF91EF91BF91AF91DD\r
+:104480009F918F917F916F915F914F913F912F916C\r
+:104490000F900FBE0F901F90189504D06894B11123\r
+:1044A0008DC0089570D088F09F5790F0B92F99274C\r
+:1044B000B751A0F0D1F0660F771F881F991F1AF02F\r
+:1044C000BA95C9F712C0B13081F077D0B1E0089544\r
+:1044D00074C0672F782F8827B85F39F0B93FCCF3C5\r
+:1044E000869577956795B395D9F73EF49095809525\r
+:1044F000709561957F4F8F4F9F4F0895E89409C045\r
+:1045000097FB3EF490958095709561957F4F8F4F06\r
+:104510009F4F9923A9F0F92F96E9BB279395F6951C\r
+:10452000879577956795B795F111F8CFFAF4BB0F9A\r
+:1045300011F460FF1BC06F5F7F4F8F4F9F4F16C0FE\r
+:10454000882311F096E911C0772321F09EE8872F88\r
+:10455000762F05C0662371F096E8862F70E060E044\r
+:104560002AF09A95660F771F881FDAF7880F9695BD\r
+:10457000879597F9089557FD9058440F551F59F0A6\r
+:104580005F3F71F04795880F97FB991F61F09F3F40\r
+:1045900079F087950895121613061406551FF2CF69\r
+:1045A0004695F1DF08C0161617061806991FF1CFB9\r
+:1045B00086957105610508940895E894BB276627E0\r
+:1045C0007727CB0197F908950BD078C069D028F0F0\r
+:1045D0006ED018F0952309F05AC05FC01124EECFB9\r
+:1045E000CADFA0F3959FD1F3950F50E0551F629F4E\r
+:1045F000F001729FBB27F00DB11D639FAA27F00D3C\r
+:10460000B11DAA1F649F6627B00DA11D661F829F62\r
+:104610002227B00DA11D621F739FB00DA11D621F47\r
+:10462000839FA00D611D221F749F3327A00D611D64\r
+:10463000231F849F600D211D822F762F6A2F112446\r
+:104640009F5750408AF0E1F088234AF0EE0FFF1F99\r
+:10465000BB1F661F771F881F91505040A9F79E3FD0\r
+:10466000510570F014C0AACF5F3FECF3983EDCF325\r
+:10467000869577956795B795F795E7959F5FC1F70D\r
+:10468000FE2B880F911D9695879597F9089597F9B8\r
+:104690009F6780E870E060E008959FEF80EC0895E8\r
+:1046A00000240A9416161706180609060895002411\r
+:1046B0000A9412161306140605060895092E03948B\r
+:1046C000000C11F4882352F0BB0F40F4BF2B11F4FF\r
+:1046D00060FF04C06F5F7F4F8F4F9F4F089597FB20\r
+:1046E000072E16F4009407D077FD09D00E94892385\r
+:1046F00007FC05D03EF4909581959F4F08957095E5\r
+:1047000061957F4F0895EE0FFF1F0590F491E02D06\r
+:104710000994AA1BBB1B51E107C0AA1FBB1FA61708\r
+:10472000B70710F0A61BB70B881F991F5A95A9F75A\r
+:1047300080959095BC01CD010895F999FECF92BD69\r
+:1047400081BDF89A992780B50895A8E1B0E042E0CC\r
+:1047500050E00C94C523262FF999FECF92BD81BD60\r
+:10476000F89A019700B4021639F01FBA20BD0FB6AF\r
+:10477000F894FA9AF99A0FBE08950196272F0E948D\r
+:10478000AC230C94AB23DC01CB01FC01F999FECFE7\r
+:1047900006C0F2BDE1BDF89A319600B40D924150C9\r
+:0A47A0005040B8F70895F894FFCFD9\r
+:1047AA002002F507830860082C08F8070101BA01FE\r
+:1047BA0028080A03140A3F4D36394B04FE03C8037E\r
+:1047CA008F0322033B0354036D030102030405060E\r
+:0447DA0007080900C3\r
+:00000001FF\r
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media
+#define CNTL 3 // control layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | L1/` | 1 | 2 | 3 | 4 | 5 |CmdSpc| | - | 6 | 7 | 8 | 9 | 0 | = |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * |Meh/Tab | Q | W | E | R | T | STab | | L3 | Y | U | I | O | P | Meh/\ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * |Hyp/Esc | L3/A | S | D | F | G |------| |------| H | J | K | L | L2/; | Hyp/' |
+ * |--------+------+------+------+------+------| Tab | |AltGui|------+------+------+------+------+--------|
+ * | LShift | L3/Z | X | C | V | B | | | | N | M | , | . | L2// | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |LCtrl | LAlt | LGui |Left |Right | | UP | Down | [ | ] | L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtl | LGui | | LAlt |ShfGui|
+ * ,-------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * | Backsp|Delete|------| |------| Enter | Space |
+ * | | | End | | PgDn | | |
+ * `--------------------' `-----------------------'
+ */
+// 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
+ LT(SYMB,KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_SPC),
+ MEH_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, S(KC_TAB),
+ ALL_T(KC_ESC), LT(CNTL,KC_A), KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, LT(CNTL,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TAB,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RIGHT,
+ KC_LCTL, KC_LGUI,
+ KC_HOME,
+ KC_BSPC, KC_DELETE, KC_END,
+ // right hand
+ KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ KC_FN3, KC_Y, KC_U, KC_I, KC_O, KC_P, MEH_T(KC_BSLS),
+ KC_H, KC_J, KC_K, KC_L, LT(MDIA,KC_SCLN), ALL_T(KC_QUOT),
+ LALT(KC_LGUI), KC_N, KC_M, KC_COMM, KC_DOT, LT(MDIA,KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1,
+ KC_LALT, S(KC_LGUI),
+ KC_PGUP,
+ KC_PGDN,KC_ENT, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | < | | > | : | 7 | 8 | 9 | / | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| ; | 4 | 5 | 6 | * | Prnt |
+ * |--------+------+------+------+------+------| F14 | | F15 |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | - | Entr |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | 0 | . | = | + | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,S(KC_COMM),
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_F14,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ S(KC_DOT), KC_COLN, KC_7, KC_8, KC_9, KC_BSLS, KC_F12,
+ KC_SCLN, KC_4, KC_5, KC_6, KC_ASTR, KC_PSCR,
+ KC_F15, KC_AMPR, KC_1, KC_2, KC_3, KC_MINS, KC_ENT,
+ KC_0, KC_DOT, KC_EQL, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Prev | Next | | Prev | Next |
+ * ,------|------|------| |------+------+------.
+ * | | | VolUp| | VolUp| | |
+ * | Play | Mute |------| |------| Mute | Play |
+ * | | | VolDn| | VolDn| | |
+ * `--------------------' `--------------------'
+ */
+// Control
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPRV, KC_MNXT,
+ KC_VOLU,
+ KC_MPLY, KC_MUTE, KC_VOLD,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPRV, KC_MNXT,
+ KC_VOLU,
+ KC_VOLD, KC_MUTE, KC_MPLY
+),
+/* Keymap 3: Control Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Sleep | | | | | | Pwr | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| Lclk |------| |------| Lft | Down | Up | Right| | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | Rclk | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// Control
+[CNTL] = KEYMAP(
+ KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),
+ [2] = ACTION_LAYER_TAP_TOGGLE(MDIA),
+ [3] = ACTION_LAYER_TAP_TOGGLE(CNTL) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ case 3:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+# Techtomas Configuration
+
+## Base Layer
+
+The base layer is a merge of what I liked with the default layout and the ordinary layout. The thumb cluster is more like the Kinesis advantage and the top row of the cluster is convient for use on the mac.
+
+* The Caps Lock postion handles [Hyper/Esc](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
+* The Tab key toggles MEH.
+* The two vertical mods on the left board are Shift+Tab and Tab.
+* The two vertical mods on the right board are Control Layer tap/toggle and Alt+Cmd.
+* The HYPER and MEH key are made in the same location on the right side of the board as well. Using Keyboard Maestro for OS X makes one-handed shortcuts very easy.
+
+## Symbol Layer
+The symbol layer can be tap/toggled through the bottom right key and also toggled holding the tilde/grave key in the upper left corner. I haven't used the symbol layer enough to tell if this was a good place or not but it made sense in my head
+
+The bottom two vertical mods are set to F14 and F15 which is the default for changing screen brightness on the mac
+
+## Media Layer
+/ & ; will toggle the media layer which has play and volume controls assigned to the thumb cluster. I found this an easy way to quickly play/pause
+
+## Control Layer
+The a and z keys toggle the control layer.
+
+On the left board you have mouse control with left & right click in the location of the G and B keys.
+On the right board you have vim-style arrow keys using hjkl
+
+The thumb cluster and mods all pass down to this layer.
+
+## Changelog
+
+* Apr 29, 2016 (V1.1):
+ * Added F14 and F15 to symbol layer
+ * Added control layer toggle to A key.
+
+* Apr 28, 2016 (V1.0):
+ * Modified config based on the default layout plus inspiration from the ordinary layout
--- /dev/null
+:100000000C94BB020C9402030C9402030C940203A4
+:100010000C9402030C9402030C9402030C9402034C
+:100020000C9402030C9402030C94D20C0C94A40DB7
+:100030000C9402030C9402030C9402030C9402032C
+:100040000C9402030C9470220C9402030C9402038F
+:100050000C9402030C94001C0C9402030C940203F5
+:100060000C9402030C9402030C9402030C940203FC
+:100070000C9402030C9402030C9402030C940203EC
+:100080000C9402030C9402030C9402030C940203DC
+:100090000C9402030C9402030C9402030C940203CC
+:1000A0000C9402030C9402030C940203110E330E01
+:1000B000210F330E210F780E9B0E210FF00E030F30
+:1000C000EF11EF112C122C126F12AD12C614C614C0
+:1000D000C612C614C713C7139A14C614C614B11493
+:1000E0000000F0A1F0A2F0A335812B77297FE10079
+:1000F000E00000001E00140004831D83E2004D0098
+:100100001F001A0016001B00E3004C00200008002E
+:100110000700060050002A00210015000900190000
+:100120004F004A00220017000A0005000000E0000E
+:100130002C082B0200002B000000E3002D00C30060
+:100140000000E3040000E20023001C000B0011008B
+:100150000000E302240018000D00100052004B00C4
+:1001600025000C000E00360051002C002600120065
+:100170000F0037002F002800270013003382388239
+:1001800030004E002E003177347FE500C1000000C2
+:100190000100010001000100010000003A001E0200
+:1001A00020022202010001003B001F022102230263
+:1001B000010001003C002F0226022F000100010077
+:1001C0003D00300227023000010001003E003102F4
+:1001D0003500350200000100010036020000690010
+:1001E000000001000100370200006A000000010069
+:1001F0003F003302330024020000010040002400CD
+:1002000021001E00270001004100250022001F00E0
+:100210003700010042002600230020002E000100CC
+:100220004300310025022D002E020100440045004C
+:10023000460028000100000001000100010001004B
+:100240000100000001000100010001000100AA00FE
+:1002500001000100010001000100A80001000100EF
+:10026000010001000100AE000100010001000100D9
+:100270000100A90001000100010001000000AC0024
+:1002800001000100000001000000AB0001000100BE
+:10029000000001000000AC000100010001000100AD
+:1002A0000000AB0001000100010001000100A900F5
+:1002B00001000100010001000100AE000100010089
+:1002C000010001000100A80001000100010001007F
+:1002D0000100AA000100010001000100010000006E
+:1002E000A600010001000100010000000100010062
+:1002F000010001000100010001000100F200010005
+:10030000010001000100F000F10001000100010006
+:1003100001000100F30001000100010001000100E3
+:10032000F400F50000000100A5000100000001003C
+:1003300000000100010001000000010000000100B8
+:100340000100010050000100000001000100010057
+:1003500051000100010001000100010052000100F4
+:1003600001000100010001004F0001000100010037
+:100370000100010001000100010001000100010075
+:100380000100010001000000160345007200670033
+:100390006F0044006F007800200045005A00000004
+:1003A00016034500720067006F0044006F0078007C
+:1003B000200045005A0000000403090409026D00F2
+:1003C000040100A0FA090400000103010100092151
+:1003D00011010001223F000705810308000A0904FA
+:1003E00001000103010200092111010001224D0059
+:1003F0000705820308000A09040200010300000047
+:100400000921110100012236000705830308000AB3
+:100410000904030001030000000921110100012269
+:1004200039000705840310000112011001000000CB
+:1004300008EDFE071301000102000105010906A1F4
+:1004400001050719E029E7150025019508750181C7
+:100450000205081901290595057501910295017597
+:100460000391010507190029771500250195787575
+:10047000018102C005010980A10185021601002643
+:10048000B7001A01002AB700751095018100C00558
+:100490000C0901A1018503160100269C021A010026
+:1004A0002A9C02751095018100C005010902A10175
+:1004B0000901A10005091901290515002501950566
+:1004C000750181029501750381010501093009312A
+:1004D0001581257F95027508810609381581257FCC
+:1004E000950175088106050C0A38021581257F954E
+:1004F0000175088106C0C005010906A1010507199B
+:10050000E029E7150025019508750181029501751F
+:1005100008810105081901290595057501910295C4
+:1005200001750391010507190029FF150025FF95A5
+:100530000675088100C000000000000000000000F7
+:1005400000010204060A0F17202C3A4A5D71879DAC
+:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB
+:100560005D4A3A2C20170F0A060402010000000021
+:1005700000000000000011241FBECFEFDAE0DEBF54
+:10058000CDBF04B603FE27C08091EE019091EF012C
+:10059000A091F001B091F1018730904BA740B04B92
+:1005A000D1F41092EE011092EF011092F00110922E
+:1005B000F10114BE84B7877F84BF0FB6F894A89565
+:1005C00080916000886180936000109260000FBE8F
+:1005D000E0E0FFE3099511E0A0E0B1E0ECE8F8E429
+:1005E00002C005900D92A433B107D9F721E0A4E32E
+:1005F000B1E001C01D92AE3EB207E1F70E94130ABE
+:100600000C9444240C94000061110BC0FC01828105
+:10061000882321F085EE0E94831003C085EE0E949E
+:100620004B1180E090E0089508956091B1017091C0
+:10063000B2018091B3019091B4010E94291B569898
+:100640005E9825982D9826982E9827982F98823076
+:1006500039F0833041F0813041F4259A2D9A089584
+:10066000269A2E9A0895279A2F9A08950C94150386
+:1006700056985E9825982D9826982E9827982F980A
+:100680008FEF90E0909389008093880090938B0087
+:1006900080938A0090938D0080938C00259A2D9AE8
+:1006A0002FEF80E792E0215080409040E1F700C0BA
+:1006B0000000269A2E9A2FEF80E792E0215080408A
+:1006C0009040E1F700C00000279A2F9A2FEF80E7B3
+:1006D00092E0215080409040E1F700C00000259852
+:1006E0002D982FEF80E792E0215080409040E1F775
+:1006F00000C0000026982E982FEF80E792E021504E
+:1007000080409040E1F700C0000027982F9856984D
+:100710005E9825982D9826982E9827982F980895BA
+:1007200089EA8093800089E08093810024982C9846
+:100730003F988AB18F748AB96E98479A8BB1806B53
+:100740008BB9769A0E9438030C94140380E280934C
+:1007500000018091340181110EC00E94F50381E0F7
+:10076000809334012FEF83ED90E32150804090403F
+:10077000E1F700C0000080E40E94FB0380930001C9
+:1007800081112EC00E94250480930001811128C090
+:100790000E94250480930001811122C08FE30E94F2
+:1007A00025048093000181111BC00E941D0480E478
+:1007B0000E94FB0380930001811112C08CE00E9413
+:1007C00025048093000181110BC00E9425048093B1
+:1007D0000001811105C08FE30E9425048093000170
+:1007E0000E941D048091000108951092B9008AE0D2
+:1007F0008093B800089594EA9093BC009091BC0057
+:1008000097FFFCCF9091B900987F983021F09031FC
+:1008100011F081E008958093BB0084E88093BC00D0
+:100820008091BC0087FFFCCF8091B900887F883120
+:1008300011F0803471F780E0089584E98093BC0062
+:100840008091BC0084FDFCCF08958093BB0084E8B8
+:100850008093BC008091BC0087FFFCCF9091B900D1
+:10086000987F81E0983209F480E0089584E88093CD
+:10087000BC008091BC0087FFFCCF8091BB00089535
+:1008800080910001811115C080E40E94FB038093D8
+:10089000000181110CC082E10E94250480930001B7
+:1008A000811105C08FEF0E942504809300010E94F2
+:1008B0001D0484B1807F84B985B1807F85B98AB1F8
+:1008C000837F8AB98BB1837F8BB93E984698089510
+:1008D0000E94A603809300010E94400480B38C70A4
+:1008E00080BB81B3836F81BBA6E3B1E0E4E4F1E0B8
+:1008F0008EE08E0F11921D928E13FCCF0C949003FC
+:10090000BF92CF92DF92EF92FF920F931F93CF93FC
+:10091000DF9380910001882379F0809135018F5F0A
+:1009200080933501811108C00E94A60380930001C5
+:10093000811102C00E94380306E311E0C0E0D0E05C
+:10094000DD24D39482E0C82EEE24E394F12CC7304A
+:10095000D10500F580910001811164C080E40E94FE
+:10096000FB0380930001811112C082E10E942504E3
+:100970008093000181110BC0C7010C2E01C0880FAC
+:100980000A94EAF780950E942504809300010E9452
+:100990001D0448C0CA30A1F028F4C83059F0C9304D
+:1009A00061F005C0CC3089F070F0CD3089F0209A2C
+:1009B000289810C0219A29980DC0229A2A980AC016
+:1009C000239A2B9807C0529A01C0539A5B9802C091
+:1009D0003E9A469890EA9A95F1F79FB1799902C0AC
+:1009E00082E001C080E091709D25982B7C9902C027
+:1009F00084E001C080E0892B7D9902C038E001C00D
+:100A000030E0832B7E9902C020E101C020E0822BE0
+:100A10009FB19095991F9927991F9295990F907E54
+:100A2000892B0FC080910001811149C080E40E9490
+:100A3000FB0380930001882379F1B12C0E941D04EF
+:100A40008B2DF8019081981719F08083C0920101D5
+:100A50000E94400421960F5F1F4FCE30D10509F050
+:100A600076CF80910101882361F18150809301014B
+:100A7000882339F08FE99FE00197F1F700C000006B
+:100A800020C0A4E4B1E0E6E3F1E0CF01825F919100
+:100A90009D938E13FCCF15C083E10E9425048093A3
+:100AA00000018111CACF81E40E94FB038093000101
+:100AB0008111C3CF0E943604B82EB094BFCF80E01E
+:100AC000C0CF0E94360381E0DF91CF911F910F913B
+:100AD000FF90EF90DF90CF90BF900895E82FF0E067
+:100AE000EC5BFE4F808108950895089596E0799F0C
+:100AF000F001112494E5899FE00DF11D1124E60F0A
+:100B0000F11DEE0FFF1FE851FF4F8591949108955D
+:100B1000880F991FFC01E05AF04085919491089547
+:100B2000880F991FFC01E052FF4F85919491089521
+:100B30000F931F93CF93DF93EC018115904350F5F2
+:100B4000C11580E2D80708F0B3C0CB3BD10590F4C3
+:100B5000C83AD10508F05AC0C53AD10508F04BC0D3
+:100B6000C430D10508F0BBC1219709F0B5C101E03F
+:100B700010E0F5C1CF3FD10511F008F0B0C1C03F82
+:100B8000D10508F092C0CE01805E9109089708F463
+:100B9000A6C1A2C1C11591E5D907A8F4C23020E5CC
+:100BA000D20708F09EC0C11580E5D80709F485C0BA
+:100BB00008F091C0C11520E4D20708F08DC1DD27EF
+:100BC0008E01106CCCC1C11580E8D80758F4C1154E
+:100BD00090E7D90708F07CC1C11520E6D20708F4D8
+:100BE00022C17AC1C11580E9D80708F075C1DF704C
+:100BF0008E01106AB4C1C53AD10509F472C1C63A72
+:100C0000D10509F071C102E810E4A9C1C83AD105C3
+:100C100009F46DC1C93AD10509F46CC1CA3AD105CC
+:100C200009F46BC1CB3AD10509F46AC1CC3AD105BC
+:100C300009F469C1CD3AD10509F468C1C03BD105B9
+:100C400009F467C1CE3AD10509F466C1CF3AD1059E
+:100C500009F465C1C13BD10509F464C1C23BD105AA
+:100C600009F463C1C33BD10509F462C1C43BD1059A
+:100C700009F461C1C53BD10509F460C1C63BD1058A
+:100C800009F45FC1C73BD10509F45EC1C83BD1057A
+:100C900009F45DC1C93BD10509F45CC1CA3BD1056A
+:100CA00009F45BC100E014E45AC18E01106557C11C
+:100CB000CE019F700E94900553C10E94EA149FEFDD
+:100CC00024E38CE0915020408040E1F700C0000018
+:100CD0000E94251C44C18091CD0181608093CD018B
+:100CE0003EC10E94CE1D811102C00E94B41D0E940F
+:100CF000EB1D90E09093EE018093ED01C23090E502
+:100D0000D90721F48091ED01816086C0C43020E5CF
+:100D1000D20721F48091ED0182607EC0C63080E56B
+:100D2000D80721F48091ED01846076C0C83090E549
+:100D3000D90719F48091ED0127C0CA3020E5D20708
+:100D400021F48091ED01806167C0CC3080E5D80747
+:100D500021F48091ED0180625FC0CE3090E5D9072B
+:100D600021F48091ED01806457C0C03120E5D207A5
+:100D700021F48091ED0180684FC0C23180E5D80731
+:100D800029F48091ED018460886046C0C33090E50D
+:100D9000D90721F48091ED018E7F3EC0C53020E55A
+:100DA000D20721F48091ED018D7F36C0C73080E5F8
+:100DB000D80721F48091ED018B7F2EC0C93090E5DA
+:100DC000D90719F48091ED0126C0CB3020E5D20778
+:100DD00021F48091ED018F7E1FC0CD3080E5D807D2
+:100DE00021F48091ED018F7D17C0CF3090E5D907B8
+:100DF00021F48091ED018F7B0FC0C13120E5D20736
+:100E000021F48091ED018F7707C0C331D04531F4D3
+:100E10008091ED018B7F877F8093ED018091ED01C3
+:100E20000E94EF1D9CC08D2F99278F7099278130CC
+:100E30009105D9F49E012370332702C0880F991FB2
+:100E40002A95E2F79C688E0144E0000F111F4A9535
+:100E5000E1F700271370802B912B53E0CC0FDD1F9F
+:100E60005A95E1F7C076DD272FC08230910531F425
+:100E7000DC2FCC278E01016F106A71C08330910581
+:100E800069F4CE018370992701E010E002C0000FE1
+:100E9000111F8A95E2F7C8019C680FC0049709F0FA
+:100EA0005EC0CE018370992701E010E002C0000F00
+:100EB000111F8A95E2F7C8019A6823E0CC0FDD1F65
+:100EC0002A95E1F7C07ED7708C010C2B1D2B47C0F3
+:100ED000DF708E01106243C000E010E040C08E0160
+:100EE0003EC001E810E43BC003E810E438C002EE65
+:100EF00014E435C009EE14E432C00AEE14E42FC045
+:100F000005EB14E42CC006EB14E429C007EB14E451
+:100F100026C00CEC14E423C00DEC14E420C003E85C
+:100F200015E41DC00AE815E41AC002E915E417C06B
+:100F300004E915E414C001E216E411C003E216E46A
+:100F40000EC004E216E40BC005E216E408C006E297
+:100F500016E405C007E216E402C00AE216E4C8017E
+:100F6000DF91CF911F910F91089596E0799FF00145
+:100F7000112494E5899FE00DF11D1124E60FF11D68
+:100F8000EE0FFF1FE851FF4F85919491803E910530
+:100F9000E0F4803C910558F58133910509F46FC068
+:100FA00048F48932910509F463C08A32910509F445
+:100FB0006DC072C089339105E9F082389105D1F096
+:100FC0008533910509F44DC067C0833E910581F1D9
+:100FD00038F4803E9105B9F0823E9105D9F05CC0AD
+:100FE000863E910561F1873E9105A1F155C00E94B1
+:100FF000880508952091ED0120FD02C021FF4CC01D
+:1010000080EE90E049C08091ED0180FFF9CF89E347
+:1010100090E042C08091ED0182FF0EC08091ED0111
+:1010200084FF03C080E090E037C083EE90E034C0DE
+:101030008091ED0182FFF2CF82EE90E02DC0809191
+:10104000ED0183FF0BC08091ED0184FDEBCF87EEB6
+:1010500090E022C08091ED0183FFF5CF86EE90E015
+:101060001BC08091ED0185FF07C089E290E014C0AC
+:101070008091ED0185FFF9CF85E390E00DC080916F
+:10108000ED0186FF07C08AE290E006C08091ED0185
+:1010900086FFF9CF81E390E00E94980508950895B6
+:1010A0000C944F08809162010895CF93DF9300D094
+:1010B0001F92CDB7DEB79C018091E401843019F511
+:1010C00093E099833B832A839093E9008FEF90917B
+:1010D000E800815095FD06C095ED9A95F1F7000066
+:1010E0008111F5CF8091E80085FF0DC040E050E010
+:1010F00063E070E0CE0101960E94C20A8091E80090
+:101100008E778093E8000F900F900F90DF91CF9132
+:101110000895CF93DF9300D01F92CDB7DEB7209113
+:10112000E401243021F522E029839B838A8383E034
+:101130008093E9008FEF9091E800815095FD06C003
+:1011400095ED9A95F1F700008111F5CF8091E800B7
+:1011500085FF0DC040E050E063E070E0CE010196F5
+:101160000E94C20A8091E8008E778093E8000F9079
+:101170000F900F90DF91CF9108952091E4012430DA
+:10118000F1F422E02093E9002FEF3091E8002150A4
+:1011900035FD06C035ED3A95F1F700002111F5CF88
+:1011A0002091E80025FF0BC040E050E065E070E0D2
+:1011B0000E94C20A8091E8008E778093E80008952B
+:1011C000CF93DF93EC019091E401943009F046C095
+:1011D00080910C018823D9F080910D018823B9F00A
+:1011E0009093E9008FEF9091E800815095FD06C043
+:1011F00095E19A95F1F700008111F5CF8091E80013
+:1012000085FF2CC040E050E060E170E017C081E055
+:101210008093E9008FEF9091E800815095FD06C022
+:1012200095ED9A95F1F700008111F5CF8091E800D6
+:1012300085FF14C040E050E068E070E0CE010E94FD
+:10124000C20A8091E8008E778093E80080E1FE0179
+:10125000A2E5B1E001900D928A95E1F7DF91CF917F
+:1012600008958091E301811109C00E94570C0E94EA
+:10127000B40C8091E20084608093E20008951092A3
+:10128000E301089508950C945D220E94BB1B0E9407
+:1012900063220E945A0F0C94500842E061EC81E0F6
+:1012A0000E94D10B42E061EC82E00E94D10B42E04F
+:1012B00061EC83E00E94D10B42E161EC84E00C948C
+:1012C000D10B8091E601833009F455C030F48130B0
+:1012D00071F0823009F48EC008958A3009F47AC022
+:1012E0008B3009F460C0893009F09CC020C0809127
+:1012F000E501813A09F096C08091E800877F8093EC
+:10130000E8008091E9019091EA01892B21F460E1E4
+:1013100082E591E003C060E080E090E070E00E9430
+:101320000D0B8091E8008B778093E8000895809101
+:10133000E501813209F076C08091E9019091EA01DE
+:10134000009719F0039709F06DC08091E800877F3E
+:101350008093E8008091E80082FD05C08091E4015F
+:101360008111F8CF5FC08091F1008093620180917C
+:10137000E8008B7753C08091E501813A09F052C0B3
+:101380008091E9019091EA01892B09F04BC080918D
+:10139000E800877F8093E8008091E80080FFFCCF21
+:1013A00080910C0136C08091E5018132D9F58091A0
+:1013B000E9019091EA01892BA9F58091E800877FE6
+:1013C0008093E8000E94060C8091E70180930C0155
+:1013D0000C94EA148091E501813221F58091E800B6
+:1013E000877F8093E8000E94060C8091E80180933B
+:1013F000630108958091E501813AA1F48091E800AC
+:10140000877F8093E8008091E80080FFFCCF809187
+:1014100063018093F1008091E8008E778093E8006B
+:101420000C94060C089584B7877F84BF0FB6F89498
+:10143000A8958091600088618093600010926000A0
+:101440000FBE90E080E80FB6F8948093610090930F
+:1014500061000FBE0E94A90F0E94570C0E94B40C9D
+:101460008091E20084608093E20078940E943A0FB9
+:101470000E94AB0F82E091E00E94550F0E944B2228
+:101480008091E401853069F40E94791B8091E2012A
+:101490008823B1F30E94A71B882391F30E94AC0A12
+:1014A000EFCF0E94B10FECCF292F33272330310526
+:1014B000C9F064F42130310581F02230310509F0A2
+:1014C00043C08DE690E02CEB33E042C02132310581
+:1014D000F1F02232310541F137C082E190E029E29A
+:1014E00034E036C099278130910541F08230910572
+:1014F00041F0892B49F5E8EBF3E005C0E0EAF3E0C1
+:1015000002C0E8E8F3E0849190E09F0121C06430DC
+:10151000D8F4E62FF0E0EE0FFF1FEE5DFE4F2081C6
+:10152000318189E090E014C0643070F470E0FB0118
+:10153000EE0FFF1FE65EFE4F20813181FB01EA5E68
+:10154000FE4F808190E004C080E090E020E030E039
+:10155000FA0131832083089580E189BD82E189BD4C
+:1015600009B400FEFDCF8091D8008F7D8093D80014
+:101570008091E00082608093E0008091E00081FD36
+:10158000FCCF0895CF92DF92EF92FF920F931F93BB
+:10159000CF93DF93EC018B016A010E94250C81112E
+:1015A00033C0C114D10439F0F60180819181081B48
+:1015B000190BC80FD91FE12CF12C0115110519F1D8
+:1015C0008091E80085FD16C08091E8008E778093B9
+:1015D000E800C114D10449F0F60180819181E80E40
+:1015E000F91EF182E08285E00FC00E94250C88235D
+:1015F00021F30AC089918093F10001501109FFEF96
+:10160000EF1AFF0ADACF80E0DF91CF911F910F919F
+:10161000FF90EF90DF90CF9008952091EB013091F3
+:10162000EC012617370748F06115710539F4209150
+:10163000E8002E772093E80001C0B90140E0611571
+:101640007105A9F12091E401222309F443C025305A
+:1016500009F442C02091E80023FD40C02091E80039
+:1016600022FD32C02091E80020FFE9CF4091F30035
+:101670002091F20030E0342BFC01CF01611571059F
+:1016800059F02830310540F481918093F100615088
+:1016900071092F5F3F4FF1CF41E02830310509F04C
+:1016A00040E02091E8002E772093E800C8CF411158
+:1016B000C9CF0AC08091E401882361F0853061F0D0
+:1016C0008091E80083FD0AC08091E80082FFF2CF9C
+:1016D00080E0089582E0089583E0089581E0089510
+:1016E0002091EB013091EC012617370748F0611586
+:1016F000710539F42091E8002E772093E80001C0AD
+:10170000B901FC0120E06115710591F18091E401BE
+:10171000882309F440C0853009F43FC08091E80077
+:1017200083FD3DC08091E80082FD2FC08091E800DC
+:1017300080FFE9CF2091F3008091F20090E0922B9E
+:101740006115710559F08830910540F4249120937A
+:10175000F1003196615071090196F2CF21E00897AE
+:1017600009F020E08091E8008E778093E800CBCFED
+:101770002111CCCF0AC08091E401882361F085302B
+:1017800061F08091E80083FD0AC08091E80082FF4B
+:10179000F2CF80E0089582E0089583E0089581E02B
+:1017A0000895982F973058F59093E900981739F0DD
+:1017B0007091EC002091ED005091F00003C0242FB7
+:1017C000762F50E021FF19C03091EB003E7F30931F
+:1017D000EB003091ED003D7F3093ED003091EB0058
+:1017E00031603093EB007093EC002093ED00509348
+:1017F000F0002091EE0027FF07C09F5FD3CF8F70CE
+:101800008093E90081E0089580E008958091E501EA
+:1018100087FF11C08091E80082FD05C08091E4013E
+:101820008111F8CF11C08091E8008B770BC08091B7
+:10183000E401882349F08091E80080FFF8CF80918F
+:10184000E8008E778093E80008952091E4003091BD
+:10185000E50095E64091EC00842F817040FF22C0A6
+:101860008091E80080FD1CC08091E401882391F004
+:10187000853091F08091EB0085FD10C04091E4002F
+:101880005091E5004217530729F39A01915011F73F
+:1018900084E0089582E0089583E0089581E008954A
+:1018A00080E008954091E80042FFDECF08950E9455
+:1018B000C50C0E94CD0CE0EEF0E080818160808359
+:1018C000E8EDF0E080818F77808319BCA7EDB0E070
+:1018D0008C918E7F8C9380818F7E80831092E30128
+:1018E00008950F931F93CF93DF930E94C50C0E941E
+:1018F000CD0CC8EDD0E088818F778883888180689F
+:10190000888388818F7D888319BC1092E4011092AE
+:10191000E0011092E2011092E10100EE10E0F80106
+:1019200080818B7F808388818160888342E060E052
+:1019300080E00E94D10BE1EEF0E080818E7F808319
+:10194000E2EEF0E080818160808380818860808326
+:10195000F80180818E7F8083888180618883DF9118
+:10196000CF911F910F910895E8EDF0E080818F7E77
+:101970008083E7EDF0E080818160808384E082BF36
+:1019800081E08093E3010C94710CE8EDF0E080813C
+:101990008E7F80831092E20008951092DA001092F8
+:1019A000E10008951F920F920FB60F9211242F930A
+:1019B0003F934F935F936F937F938F939F93AF93D7
+:1019C000BF93EF93FF938091E10082FF0BC0809162
+:1019D000E20082FF07C08091E1008B7F8093E100ED
+:1019E0000E94390F8091DA0080FF1FC08091D800DB
+:1019F00080FF1BC08091DA008E7F8093DA00809197
+:101A0000D90080FF0DC080E189BD82E189BD09B4A4
+:101A100000FEFDCF81E08093E4010E94310905C002
+:101A200019BC1092E4010E943F098091E10080FFFF
+:101A300019C08091E20080FF15C08091E2008E7F86
+:101A40008093E2008091E20080618093E2008091C7
+:101A5000D80080628093D80019BC85E08093E401AF
+:101A60000E9443098091E10084FF30C08091E20030
+:101A700084FF2CC080E189BD82E189BD09B400FEEC
+:101A8000FDCF8091D8008F7D8093D8008091E100B8
+:101A90008F7E8093E1008091E2008F7E8093E20050
+:101AA0008091E20081608093E2008091E0018823D0
+:101AB00011F084E007C08091E30087FD02C081E05F
+:101AC00001C083E08093E4010E9445098091E10018
+:101AD00083FF29C08091E20083FF25C08091E1004F
+:101AE000877F8093E10082E08093E4011092E0011F
+:101AF0008091E1008E7F8093E1008091E2008E7FF3
+:101B00008093E2008091E20080618093E20042E0F5
+:101B100060E080E00E94D10B8091F00088608093AB
+:101B2000F0000E944209FF91EF91BF91AF919F9108
+:101B30008F917F916F915F914F913F912F910F9076
+:101B40000FBE0F901F9018951F920F920FB60F9215
+:101B500011242F933F934F935F936F937F938F93B2
+:101B60009F93AF93BF93CF93DF93EF93FF93C09176
+:101B7000E900CF708091EC00D82FD17080FDD0E8C3
+:101B80001092E9008091F000877F8093F0007894B4
+:101B90000E94E80D1092E9008091F0008860809327
+:101BA000F000CD2BCF70C093E900FF91EF91DF9152
+:101BB000CF91BF91AF919F918F917F916F915F91E5
+:101BC0004F913F912F910F900FBE0F901F9018953E
+:101BD0001F93CF93DF93CDB7DEB7AA970FB6F894D4
+:101BE000DEBF0FBECDBFE5EEF1E088E08E0F909135
+:101BF000F10091938E13FBCF0E9461098091E80060
+:101C000083FF1FC18091E5019091E601492F50E0CB
+:101C10004A30510508F015C1FA01EA5AFF4F0C94F9
+:101C2000F423803881F0823809F00BC18091E901FA
+:101C30008F708093E9008091EB0085FB882780F905
+:101C40001092E90006C08091E1019091E2019111AA
+:101C500082609091E800977F9093E8008093F10074
+:101C60001092F100C8C0282F2D7F09F0EAC0882308
+:101C700019F0823061F0E5C08091E701813009F010
+:101C8000E0C0933009F080E08093E2012BC08091A6
+:101C9000E701811127C08091E9018F7009F4D1C05B
+:101CA0008093E9002091EB0020FF1CC0933021F4C9
+:101CB0008091EB00806214C09091EB009061909352
+:101CC000EB0021E030E0A90102C0440F551F8A95C6
+:101CD000E2F74093EA001092EA008091EB008860FE
+:101CE0008093EB001092E9008091E800877F86C026
+:101CF0008111A7C01091E7011F778091E3008078E0
+:101D0000812B8093E3008091E800877F8093E80037
+:101D10000E94060C8091E80080FFFCCF8091E300D8
+:101D200080688093E300111102C082E001C083E06B
+:101D30008093E40186C08058823008F082C0809190
+:101D4000E7019091E8018C3D53E0950779F583E038
+:101D50008A838AE289834FB7F894DE01139620E0E4
+:101D60003EE051E2E32FF0E050935700E49120FF72
+:101D700003C0E295EF703F5FEF708E2F90E0EA3086
+:101D800010F0C79601C0C0968D939D932F5F2431AC
+:101D900049F74FBF8091E800877F8093E8006AE2AF
+:101DA00070E0CE0101960E940D0B14C0AE014F5F92
+:101DB0005F4F6091E9010E94540ABC01892B09F42C
+:101DC00040C09091E800977F9093E80089819A81C4
+:101DD0000E94700B8091E8008B778093E80031C0FF
+:101DE000803879F58091E800877F8093E8008091C2
+:101DF000E0018093F1008091E8008E778093E80005
+:101E00000E94060C1EC081111CC09091E701923007
+:101E1000C0F48091E800877F8093E8009093E00110
+:101E20000E94060C8091E001811106C08091E300C0
+:101E300087FD02C081E001C084E08093E4010E943C
+:101E40004D098091E80083FF0AC08091E800877FF8
+:101E50008093E8008091EB0080628093EB00AA966B
+:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB
+:101E700008950895CF938091E4018823A1F0C09143
+:101E8000E900CF709091EC00892F817090FD80E87F
+:101E9000C82B1092E9008091E80083FD0E94E80DB4
+:101EA000CF70C093E900CF9108959093690180931A
+:101EB00068010895E0916801F0916901309721F07F
+:101EC0000190F081E02D099480E00895E09168018F
+:101ED000F0916901309721F00280F381E02D09949F
+:101EE0000895E0916801F0916901309721F0048034
+:101EF000F581E02D099408952091660130916701E4
+:101F00008217930771F09093670180936601E091C7
+:101F10006801F0916901309721F00680F781E02D8A
+:101F20000994089520916401309165018217930707
+:101F300071F09093650180936401E0916801F091E4
+:101F40006901309721F00084F185E02D099408950E
+:101F500008950C94A80F0E94C11B0E9468040C9461
+:101F6000871CCF92DF92EF92FF920F931F93CF9334
+:101F7000DF93CDB7DEB72B970FB6F894DEBF0FBE59
+:101F8000CDBF0E9480048BE6C82E81E0D82E00E0F1
+:101F900010E0E02E802F0E946E05F60141916F0146
+:101FA000F42EF826B1F40F5F1F4F0E30110589F79C
+:101FB0008FEF89838A831B820E94CA1B8160782FDE
+:101FC0009D838C8349815A816B818D810E9454103D
+:101FD00040C09091CD0191FF04C08B870E94740591
+:101FE0008B8520E030E04F2D50E0922FBA01022E79
+:101FF00002C0759567950A94E2F760FF24C02E83AE
+:10200000EF8221E030E0690102C0CC0CDD1C9A9522
+:10201000E2F790E08C219D21892B09F420E02887AC
+:102020000E94CA1B8160782F9A8789874E815F81C1
+:1020300068858A850E945410F801E559FE4F808119
+:10204000C826C08206C02F5F3F4F2630310569F693
+:10205000AACF0E946E1F10916A010E945A0F181792
+:10206000A1F00E945A0F80936A012B960FB6F89444
+:10207000DEBF0FBECDBFDF91CF911F910F91FF90BB
+:10208000EF90DF90CF900C9450082B960FB6F894F9
+:10209000DEBF0FBECDBFDF91CF911F910F91FF909B
+:1020A000EF90DF90CF900895CF93DF93CDB7DEB759
+:1020B0002B970FB6F894DEBF0FBECDBF4F83588766
+:1020C00069877A878B87DE01119686E0FD01119280
+:1020D0008A95E9F785E0FE01379601900D928A9581
+:1020E000E1F749815A816B817C818D819E810E94BB
+:1020F00084172B960FB6F894DEBF0FBECDBFDF91CD
+:10210000CF9108950895CF93882309F4C2C0C82FB2
+:10211000823859F40E945A0F81FDBBC089E30E94A6
+:102120002D1A0E94FA1A89E30CC0833879F40E94B0
+:102130005A0F80FDAEC083E50E942D1A0E94FA1A44
+:1021400083E50E946F1ACF910C94FA1A843859F4DF
+:102150000E945A0F82FD9DC087E40E942D1A0E94A2
+:10216000FA1A87E4EECF8CEF8C0F813A48F48C2F6B
+:102170000E94B02181118DC08C2F0E942D1AE3CFB7
+:1021800080E28C0F883048F4C77081E001C0880F6E
+:10219000CA95EAF70E94B31AD6CF8BE58C0F83302D
+:1021A00078F4C53A29F0C63A31F083E890E005C0EA
+:1021B00081E890E002C082E890E0CF910C947C0F1F
+:1021C00088E58C0F833108F064C0C83A39F1C93A08
+:1021D00041F1CA3A49F1CB3A51F1CC3A59F1CD3AF1
+:1021E00061F1C03B69F1CE3A71F1CF3A79F1C13B6F
+:1021F00081F1C23B89F1C33B91F1C43B99F1C53BED
+:10220000A1F1C63BA9F1C73BB1F1C83BB9F1C93B4C
+:10221000C1F1CA3BC9F180E090E038C082EE90E0A5
+:1022200035C089EE90E032C08AEE90E02FC085EB99
+:1022300090E02CC086EB90E029C087EB90E026C0B0
+:102240008CEC90E023C08DEC90E020C083E891E01E
+:102250001DC08AE891E01AC082E991E017C084E9C4
+:1022600091E014C081E292E011C083E292E00EC0DE
+:1022700084E292E00BC085E292E008C086E292E040
+:1022800005C087E292E002C08AE292E0CF910C940E
+:10229000920FCF910895882309F44BC0823859F4E6
+:1022A0000E945A0F81FF45C089E30E942D1A0E94A7
+:1022B000FA1A89E30CC0833871F40E945A0F80FF28
+:1022C00038C083E50E942D1A0E94FA1A83E50E9405
+:1022D0006F1A0C94FA1A843859F40E945A0F82FF2C
+:1022E00028C087E40E942D1A0E94FA1A87E4EFCFD3
+:1022F0009CEF980F913A58F390E2980F983050F471
+:10230000877091E001C0990F8A95EAF7892F0E94A2
+:10231000B91ADFCF9BE5980F933020F480E090E06E
+:102320000C947C0F885A833120F480E090E00C9468
+:10233000920F0895882321F00E94B31A0C94FA1A80
+:102340000895882321F00E94B91A0C94FA1A08956E
+:10235000BF92CF92DF92EF92FF920F931F93CF9392
+:10236000DF9300D000D000D0CDB7DEB725E0FC0170
+:10237000DE01119601900D922A95E1F7FC01D080C3
+:1023800011810281258122952F7043815481452B33
+:1023900009F4FCC21F3F21F4FFEFDF1609F4F6C277
+:1023A0007C012E830E948210D9821A8369817A81EE
+:1023B000802F0E94291A182FB92E0E94DE190E9420
+:1023C000A5182E81002319F00E94D01A2E81EB2D22
+:1023D000E295EF70F0E0E05AFF4F0C94F4238B2D60
+:1023E000807F9B2D9F70F92E882319F0F29480EF47
+:1023F000F822002389F0FF2009F475C280E2810FE2
+:10240000883020F48F2D0E94B31A03C08F2D0E94B4
+:10241000C31A0E94FA1A67C2812F0E944B11FF2033
+:1024200009F4B4C2105E8F2D183018F40E94B91A46
+:1024300002C00E94C91A26960FB6F894DEBF0FBEDE
+:10244000CDBFDF91CF911F910F91FF90EF90DF9063
+:10245000CF90BF900C94FA1A3B2D307F8B2D8F704C
+:10246000303211F08295807F112319F0113021F163
+:102470002CC00023B9F0222309F4A0C1213009F0B7
+:102480009DC126960FB6F894DEBF0FBECDBFDF917B
+:10249000CF911F910F91FF90EF90DF90CF90BF9061
+:1024A0000C94E31A222319F0213009F46FC28E83B1
+:1024B0000E94E61A8E8196C1002321F0223008F096
+:1024C00065C27CC1211162C28DC1002321F022238B
+:1024D00009F474C108C2222309F484C119C22B2D46
+:1024E00026952695237030E02115310521F0213005
+:1024F0003105D1F04BC2002321F0812F9B2D937029
+:1025000002C080E090E026960FB6F894DEBF0FBEC2
+:10251000CDBFDF91CF911F910F91FF90EF90DF9092
+:10252000CF90BF900C947C0F002321F0812F9B2D26
+:10253000937002C080E090E026960FB6F894DEBF5C
+:102540000FBECDBFDF91CF911F910F91FF90EF9004
+:10255000DF90CF90BF900C94920F812F002319F041
+:102560000E94761E02C00E94DE1E26960FB6F894C8
+:10257000DEBF0FBECDBFDF91CF911F910F91FF90B6
+:10258000EF90DF90CF90BF900C94631F8B2D8370E2
+:1025900009F07BC00111FAC1812F82958695877061
+:1025A000880F880F912F9F70C92ED12CE12CF12C10
+:1025B000082E04C0CC0CDD1CEE1CFF1C0A94D2F7C4
+:1025C00014FF12C04FE050E060E070E004C0440F20
+:1025D000551F661F771F8A95D2F7CB01BA01609508
+:1025E00070958095909503C060E070E0CB012B2D35
+:1025F000269526952370422F50E042305105D9F0A0
+:102600004330510569F16C297D298E299F2941307C
+:10261000510551F126960FB6F894DEBF0FBECDBF1F
+:10262000DF91CF911F910F91FF90EF90DF90CF90AE
+:10263000BF900C94CC186C297D298E299F29269651
+:102640000FB6F894DEBF0FBECDBFDF91CF911F91C3
+:102650000F91FF90EF90DF90CF90BF900C94E8180F
+:102660000E94CC18C701B60126960FB6F894DEBFBB
+:102670000FBECDBFDF91CF911F910F91FF90EF90D3
+:10268000DF90CF90BF900C94B018002319F08B2DE1
+:10269000817001C08695882309F478C1812F8295C5
+:1026A00086958770880F880F912F9F70C92ED12C27
+:1026B000E12CF12C082E04C0CC0CDD1CEE1CFF1C00
+:1026C0000A94D2F714FF12C04FE050E060E070E0CF
+:1026D00004C0440F551F661F771F8A95D2F7CB01A0
+:1026E000BA01609570958095909503C060E070E0A8
+:1026F000CB012B2D269526952370422F50E042309A
+:102700005105D9F04330510569F16C297D298E2995
+:102710009F294130510551F126960FB6F894DEBF3E
+:102720000FBECDBFDF91CF911F910F91FF90EF9022
+:10273000DF90CF90BF900C94A6196C297D298E292B
+:102740009F2926960FB6F894DEBF0FBECDBFDF914E
+:10275000CF911F910F91FF90EF90DF90CF90BF909E
+:102760000C94C2190E94A619C701B60126960FB68D
+:10277000F894DEBF0FBECDBFDF91CF911F910F91B7
+:10278000FF90EF90DF90CF90BF900C948A19103F8C
+:10279000D1F118F4103E50F4A1C0123F09F463C007
+:1027A00008F44CC0133F09F473C098C01F708B2D00
+:1027B0008F710023A1F00E942319812F26960FB656
+:1027C000F894DEBF0FBECDBFDF91CF911F910F9167
+:1027D000FF90EF90DF90CF90BF900C949A110E94E1
+:1027E0004419812F26960FB6F894DEBF0FBECDBFD9
+:1027F000DF91CF911F910F91FF90EF90DF90CF90DD
+:10280000BF900C94A1110023A9F02111BFC08B2D02
+:102810008F7126960FB6F894DEBF0FBECDBFDF9145
+:10282000CF911F910F91FF90EF90DF90CF90BF90CD
+:102830000C946919223008F0A9C0E9CF0023A9F04F
+:102840008B2D8F7126960FB6F894DEBF0FBECDBFCD
+:10285000DF91CF911F910F91FF90EF90DF90CF907C
+:10286000BF900C942319002359F38B2D8F7126965A
+:102870000FB6F894DEBF0FBECDBFDF91CF911F9191
+:102880000F91FF90EF90DF90CF90BF900C94441980
+:10289000002399F08B2D8F7126960FB6F894DEBF2A
+:1028A0000FBECDBFDF91CF911F910F91FF90EF90A1
+:1028B000DF90CF90BF900C940E1926960FB6F89427
+:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063
+:1028D000EF90DF90CF90BF900C9404190023A9F0E3
+:1028E000222309F4ADCF812F26960FB6F894DEBFD0
+:1028F0000FBECDBFDF91CF911F910F91FF90EF9051
+:10290000DF90CF90BF900C948310222309F4ADCFB9
+:10291000812F26960FB6F894DEBF0FBECDBFDF9194
+:10292000CF911F910F91FF90EF90DF90CF90BF90CC
+:102930000C944B114B2D4F70612FC7010E94040363
+:1029400026960FB6F894DEBF0FBECDBFDF91CF91B4
+:102950001F910F91FF90EF90DF90CF90BF900C945C
+:1029600028184B2D4F70612FC70126960FB6F8948B
+:10297000DEBF0FBECDBFDF91CF911F910F91FF90B2
+:10298000EF90DF90CF90BF900C94750526960FB610
+:10299000F894DEBF0FBECDBFDF91CF911F910F9195
+:1029A000FF90EF90DF90CF90BF9008950E94D01AD3
+:1029B0000E94E01A0E94A51A0E94FA1A0E9413208F
+:1029C0000E94631F80E090E00E947C0F80E090E016
+:1029D0000C94920F0E94C01A0C94D6140E941E1AD6
+:1029E000292F22952F7030E02C3031054CF42A30FD
+:1029F00031056CF4225031092230310588F407C0CA
+:102A00002C30310549F02F30310531F009C0803EBE
+:102A100048F0803F29F406C093FB882780F9089589
+:102A200080E0089581E00895CF93DF9300D000D037
+:102A30001F92CDB7DEB70F900F900F900F900F90B1
+:102A4000DF91CF910895CF93DF9300D000D000D0D5
+:102A5000CDB7DEB726960FB6F894DEBF0FBECDBF5A
+:102A6000DF91CF9108951F93CF93DF93C0917901A8
+:102A700016E080917A01C81799F0D0E01C9FF00110
+:102A80001D9FF00D1124E558FE4F40815181628158
+:102A90007381848195810E9423152196C770E9CFA7
+:102AA000DF91CF911F9108954091AB015091AC01FE
+:102AB0006091AD017091AE018091AF019091B00134
+:102AC0000C9423158091B00182958F7009F054C049
+:102AD0008091AD01882309F44FC080917901A091C4
+:102AE0007A016091AB017091AC014091AE015091BF
+:102AF000AF01B6E08A1709F43FC090E041155105D7
+:102B0000C1F17F3F11F46F3FA1F1B89FF001B99F70
+:102B1000F00D1124E558FE4F218172132AC0208147
+:102B2000621327C02281211124C0238134812417FC
+:102B3000350710F421503109241B350B283C310591
+:102B4000C0F42091B0012F7020612093B00126E0E5
+:102B5000289FF001299FF00D1124E058FE4F80813D
+:102B60008F70806180838BEA91E00E94A8110C94A1
+:102B7000331501968770BECF0895CF92DF92EF9202
+:102B8000FF920F931F93CF93DF93CDB7DEB762977A
+:102B90000FB6F894DEBF0FBECDBF8C0185E0F80103
+:102BA000DE011D9601900D928A95E1F7D8014C91B6
+:102BB00011965C91119712966C9112971396CD9085
+:102BC000DC9014973091AB017091AC018091AE0113
+:102BD0009091AF01009709F46BC17F3F19F43F3F1B
+:102BE00009F466C1E090AD01EE2009F4C0C0209167
+:102BF000B001C816D90628F0F601E81BF90BCF0181
+:102C000004C0809590958C0D9D1DFF24F394883C05
+:102C1000910578F0F12C207F09F0C6C07C2DD98A6F
+:102C2000C88A89890E9414158BEA91E00E94A81134
+:102C3000B1C0822F807F09F046C0751314C03413D1
+:102C400012C0611110C02F7020612093B0010E944A
+:102C500054158BEA91E00E94A8118091B001D8012F
+:102C600015968C932EC0CD2819F15F3F11F44F3F7C
+:102C7000F9F0F62E61111CC08091790120917A0142
+:102C800036E0821709F45AC090E0389FF001399F6E
+:102C9000F00D1124E558FE4F7181571306C0708165
+:102CA000471303C07281711103C001968770E9CF89
+:102CB000F62E662309F418C18091B00181608093DB
+:102CC000B001F12C11C1751308C0341306C0611195
+:102CD00004C08091B001D801C3C04D875E878D8547
+:102CE0009E856A8B0E94EE146A898823E1F166232F
+:102CF000D1F12091B001822F82958F7090E00297E0
+:102D000074F08091AB019091AC0198878F83198604
+:102D1000DB86CA862C87CE0107960E94A81186E022
+:102D2000F801ABEAB1E001900D928A95E1F70E94BB
+:102D300062150E945415FF24F394D6C04D875E8718
+:102D40008D859E850E941E1A292F22952F7030E0B6
+:102D5000223031050CF0BCC09F7009F0B6C0805E17
+:102D6000883008F4C1C0C8010E94A811E4CFC81679
+:102D7000D90608F453C0F601E81BF90BCF01883CD3
+:102D8000910508F450C0F12C7C2DD98AC88A898914
+:102D90000E941415EBEAF1E086E0DF011D928A95AE
+:102DA000E9F70E945415A0C0751314C0341312C063
+:102DB000611110C08091B001F8018583C8010E94A3
+:102DC000A81186E0EBEAF1E0DF011D928A95E9F7B0
+:102DD000FE2C8AC04D875E878D859E856A8B0E94FA
+:102DE000EE146A89882309F4BECF662309F4BBCFA9
+:102DF0002091B001822F82958F7090E002970CF4A1
+:102E00008ECF8091AB019091AC019A8389831B8214
+:102E1000DD82CC822E83CE0101967FCF8095909566
+:102E20008C0D9D1DACCFF62E662309F49CCF751337
+:102E30002EC034132CC02091B00120FD1FC0822F62
+:102E400082958F70D9F0D80115962C9315978F30F5
+:102E500049F08F5F982F9295907F822F8F70892BEA
+:102E600015968C93C8010E94A81186E0F801ABEA80
+:102E7000B1E001900D928A95E1F793CF86E0F801D9
+:102E8000ABEAB1E001900D928A95E1F72DC04D8734
+:102E90005E878D859E850E94EE14811140CF8091C2
+:102EA000B00181608093B001C8010E94A8111CC0CC
+:102EB000662309F458CF4D875E878D859E850E94D5
+:102EC000EE14882309F44FCF2ACF811148CF0CC0CC
+:102ED000243031050CF047CF9F7009F440CFF80142
+:102EE0009581907F09F03BCF8F2D62960FB6F894B5
+:102EF000DEBF0FBECDBFDF91CF911F910F91FF902D
+:102F0000EF90DF90CF9008951F93CF93DF93CDB7CD
+:102F1000DEB72C970FB6F894DEBF0FBECDBF4F8340
+:102F2000588769877A878B879C87CE0107960E948E
+:102F3000BD15882369F08F8198852A853B85232BD1
+:102F4000F1F19F3F09F063C08F3F09F060C037C0C7
+:102F500086E0FE013796DE01119601900D928A956A
+:102F6000E1F76F817885EA85FB85309741F17F3FF6
+:102F700011F46F3F21F120917A0130E0C9010196EF
+:102F8000877099274091790150E08417950709F4DB
+:102F900047C069837A83FD83EC8396E0929FD001DA
+:102FA000939FB00D1124A558BE4FFE01319601909C
+:102FB0000D929A95E1F780937A010E94331516E0FD
+:102FC0008091790190917A018917C1F1189FC00110
+:102FD000112485589E4F0E94BD15882379F1E091F8
+:102FE00079011E9FF0011124E558FE4F4081518167
+:102FF00062817381848195810E942315809179017A
+:1030000090E001968770992780937901D9CF4F81FD
+:10301000588569857A858B859C850E942315CFCF3D
+:103020000E94EA1410927A0110927901EBEAF1E021
+:1030300086E0DF011D928A95E9F7C1CF2C960FB685
+:10304000F894DEBF0FBECDBFDF91CF911F910895E1
+:10305000EF92FF920F931F93CF93DF938C01892BF5
+:1030600009F46CC0F12CEE24E394E8012196F801F8
+:103070008491843740F4843008F051C0813081F06D
+:10308000823019F15BC0853709F444C0A8F19CE790
+:10309000980F903708F052C08F770E944B1141C0B3
+:1030A0000E5F1F4FFE01C49180E28C0F883048F400
+:1030B000C7708E2D01C0880FCA95EAF70E94D31AF7
+:1030C00014C08C2F0E9483102DC00E5F1F4FFE0175
+:1030D000C49180E28C0F883058F4C7708E2D01C0E7
+:1030E000880FCA95EAF70E94D91A0E94FA1A1AC0E4
+:1030F0008C2F0E944B1116C00E5F1F4FFE01C49112
+:10310000CC2381F08FE99FE00197F1F700C0000028
+:10311000C150F6CF0E5F1F4FFE01F49003C00E9416
+:1031200083108E018F2D882309F49FCFEFE9FFE0F4
+:103130003197F1F700C000008150F5CFDF91CF91BA
+:103140001F910F91FF90EF90089508956093B5013E
+:103150007093B6018093B7019093B8010C94D61484
+:103160000F931F930091B5011091B6012091B70103
+:103170003091B801DC01CB01802B912BA22BB32B1A
+:103180008093B5019093B601A093B701B093B801B5
+:103190001F910F910C94D6140F931F930091B501BA
+:1031A0001091B6012091B7013091B801DC01CB013B
+:1031B00080239123A223B3238093B5019093B6017A
+:1031C000A093B701B093B8011F910F910C94D6143E
+:1031D0000F931F930091B5011091B6012091B70193
+:1031E0003091B801DC01CB0180279127A227B327BA
+:1031F0008093B5019093B601A093B701B093B80145
+:103200001F910F910C94D6141092B1011092B2013B
+:103210001092B3011092B4010C94D61441E050E026
+:1032200060E070E004C0440F551F661F771F8A9549
+:10323000D2F74093B1015093B2016093B301709300
+:10324000B4010C94D61441E050E060E070E004C09A
+:10325000440F551F661F771F8A95D2F78091B101E1
+:103260009091B201A091B301B091B401482B592BB8
+:103270006A2B7B2B4093B1015093B2016093B30151
+:103280007093B4010C94D61441E050E060E070E01B
+:1032900004C0440F551F661F771F8A95D2F74095CB
+:1032A0005095609570958091B1019091B201A09177
+:1032B000B301B091B401482359236A237B2340937F
+:1032C000B1015093B2016093B3017093B4010C94B7
+:1032D000D61441E050E060E070E004C0440F551F98
+:1032E000661F771F8A95D2F78091B1019091B20144
+:1032F000A091B301B091B401482759276A277B27D1
+:103300004093B1015093B2016093B3017093B40143
+:103310000C94D6140F931F930091B1011091B20138
+:103320002091B3013091B401DC01CB01802B912BB2
+:10333000A22BB32B8093B1019093B201A093B30160
+:10334000B093B4011F910F910C94D6140F931F9357
+:103350000091B1011091B2012091B3013091B401FB
+:10336000DC01CB0180239123A223B3238093B101FD
+:103370009093B201A093B301B093B4011F910F9148
+:103380000C94D6140F931F930091B1011091B201C8
+:103390002091B3013091B401DC01CB01802791274A
+:1033A000A227B3278093B1019093B201A093B301F8
+:1033B000B093B4011F910F910C94D6140895CF923D
+:1033C000DF92EF92FF920F931F93CF93DF938C01C5
+:1033D000C090B501D090B601E090B701F090B8016F
+:1033E0008091B1019091B201A091B301B091B4016B
+:1033F000C82AD92AEA2AFB2ACFE1D0E0D701C601A0
+:103400000C2E04C0B695A795979587950A94D2F788
+:1034100080FF06C0B8018C2F0E94B507019721F4E8
+:10342000219760F780E001C08C2FDF91CF911F9131
+:103430000F91FF90EF90DF90CF900895CF93DF939F
+:10344000EC010E94DF19BE010E94B507DF91CF9108
+:103450000895CB010E941E1A089590910C019923A2
+:1034600021F090910D01911109C020910E01309130
+:103470000F01F90132969FEF40E01FC0982F9695FB
+:10348000969596959F3050F5E0910E01F0910F01C1
+:10349000E90FF11D877021E030E0A90102C0440F5F
+:1034A000551F8A95E2F7CA019181892B818308957E
+:1034B0009F3F39F04F5F4E3041F051915813F8CF94
+:1034C0000DC05111F7CF942FF5CF9F3F39F0F9017F
+:1034D000E90FF11D97FDFA95828308950895909163
+:1034E0000C01992321F090910D01911109C02091B7
+:1034F0000E0130910F01F9013296205F3F4F1FC03E
+:10350000982F9695969596959F30F0F4E0910E0140
+:10351000F0910F01E90FF11D877021E030E0A90162
+:1035200002C0440F551F8A95E2F7CA018095918128
+:103530008923818308953196E217F30729F090815A
+:103540009813F9CF1082F7CF089581E090E0E091D1
+:103550000E01F0910F01E80FF91F108201968031E2
+:103560009105A9F708959091CC01892B8093CC0106
+:10357000089580959091CC0189238093CC01089582
+:103580001092CC0108959091CB01892B8093CB01AF
+:10359000089580959091CB0189238093CB01089564
+:1035A0001092CB0108959091CA01892B8093CA0192
+:1035B000089580959091CA0189238093CA01089546
+:1035C0001092CA0108958093B90108951092B9012B
+:1035D000089580910E0190910F01FC0131969C019C
+:1035E000205F3F4F80E0919191118F5FE217F307C9
+:1035F000D1F70895E0910E01F0910F018091CC0177
+:103600008083E0910E01F0910F0190818091CB01B8
+:10361000892B8083E0910E01F0910F0190818091C0
+:10362000CA01892B80838091B901882361F0E091E0
+:103630000E01F0910F019081892B80830E94E91A7D
+:1036400081111092B90180910E0190910F010C949B
+:10365000660FCF92DF92EF92FF926C01EE24FF246F
+:10366000C114D104E104F10421F0C701B60120E145
+:1036700001C020E0C72ED82EE92EFF24C114D104AA
+:10368000E104F10419F0285FC701B6016B017C0168
+:1036900054E0F694E794D794C7945A95D1F7C1149F
+:1036A000D104E104F10419F02C5FC701B6016B01EC
+:1036B0007C0142E0F694E794D794C7944A95D1F7F9
+:1036C000C114D104E104F10419F02E5FC701B60161
+:1036D000DC01CB01B695A79597958795892B8A2B09
+:1036E0008B2B09F02F5F822FFF90EF90DF90CF9010
+:1036F00008958091E401843039F11092CE0120E4E4
+:1037000088E190E00FB6F894A895809360000FBE12
+:103710002093600080E00E94500883B7817F84601E
+:1037200083BF83B7816083BF7894889583B78E7F8A
+:1037300083BF0FB6F894A89580916000886180934C
+:103740006000109260000FBE089508950895CF9311
+:103750000E94A51B0E9480040E94A61BC0E08C2F23
+:103760000E946E05811104C0CF5FCE30C1F701C049
+:1037700081E0CF9108950E94EA140E945A0F0C94A0
+:10378000500882E084BD93E095BD9AEF97BD809389
+:103790006E0008952FB7F8948091CF019091D001D9
+:1037A000A091D101B091D2012FBF0895CF92DF92A5
+:1037B000EF92FF920F931F932FB7F8944091CF0190
+:1037C0005091D0016091D1017091D2012FBF6A0157
+:1037D0007B01EE24FF248C0120E030E0C016D106EE
+:1037E000E206F30610F4415051099A01281B390BE7
+:1037F000C9011F910F91FF90EF90DF90CF90089536
+:103800001F920F920FB60F9211248F939F93AF9335
+:10381000BF938091CF019091D001A091D101B0913F
+:10382000D2010196A11DB11D8093CF019093D001CB
+:10383000A093D101B093D201BF91AF919F918F918D
+:103840000F900FBE0F901F9018950E94570CF89480
+:103850002FEF87EA91E6215080409040E1F700C0C9
+:10386000000087E090EBDC018093EE019093EF0184
+:10387000A093F001B093F1019CE088E10FB6F894B9
+:10388000A895809360000FBE90936000FFCFEF92E9
+:10389000FF920F931F93CF93DF93D82FC0E08C2F0D
+:1038A0000E946E0500E010E0E82EF12CC701002E0A
+:1038B00002C0959587950A94E2F780FD06C00F5FD8
+:1038C0001F4F0630110591F709C0602F7C2F80E053
+:1038D0000E947605D813F3CF81E004C0CF5FCE30CD
+:1038E000F1F680E0DF91CF911F910F91FF90EF9063
+:1038F0000895CF93C82F8CE20E94471C882321F0A3
+:103900008C2FCF910C94471C80E0CF910895CF93DA
+:103910000E94CE1D811102C00E94B41DC5E6C15097
+:1039200049F00E9480048FE39CE90197F1F700C001
+:103930000000F5CF89E20E94791C811113C18AE24F
+:103940000E94791C81110E94B41D85E00E94791C9F
+:1039500081110E94251C0E94D91D8093CD0187E012
+:103960000E94791C8823A9F18BE10E94791C88238D
+:1039700051F08091CD0181FB222720F991E092271F
+:1039800090FB81F90EC08EE00E94791C882361F0C3
+:103990008091CD0182FB222720F991E0922790FBB4
+:1039A00082F98093CD0115C080E10E94791C90912D
+:1039B000CD01882341F093FB222720F981E0822763
+:1039C00080FB93F904C0892F809580FB90F9909338
+:1039D000CD018091CD010E94DD1D0E94EB1D8093E1
+:1039E000ED0180EE0E94791C882341F08091ED0169
+:1039F000982F909590FB80F98093ED0189E30E94C8
+:103A0000791C882359F08091ED0181FB222720F950
+:103A100091E0922790FB81F98093ED0182EE0E9464
+:103A2000791C882359F08091ED0182FB222720F92F
+:103A300091E0922790FB82F98093ED0186EE0E943F
+:103A4000791C882359F08091ED0183FB222720F90E
+:103A500091E0922790FB83F98093ED0183EE0E9421
+:103A6000791C882359F08091ED0184FB222720F9ED
+:103A700091E0922790FB84F98093ED0185E30E9409
+:103A8000791C882359F08091ED0185FB222720F9CC
+:103A900091E0922790FB85F98093ED0181E30E94EC
+:103AA000791C882359F08091ED0186FB222720F9AB
+:103AB00091E0922790FB86F98093ED0181E10E94CD
+:103AC000791C882359F08091ED0187FB222720F98A
+:103AD00091E0922790FB87F98093ED018091ED01B1
+:103AE0000E94EF1D8091ED0187FB882780F980936C
+:103AF0000D0187E20E94791CC82F8EE10E94791C7B
+:103B00008111C2608FE10E94791C8111C46080E242
+:103B10000E94791C8111C86081E20E94791C811188
+:103B2000C06182E20E94791C8111C06283E20E941E
+:103B3000791C8111C06484E20E94791C882311F0F1
+:103B4000C06802C0CC2329F08C2F0E94E61D6C2F88
+:103B500003C00E94E21D682F70E080E090E0CF91EA
+:103B60000C94A618CF9108956DEE7EEF80E090E062
+:103B70000E942E2460E082E090E00E941C2460E01D
+:103B800083E090E00E941C2460E084E090E00E94CA
+:103B90001C2460E085E090E00C941C2480E090E020
+:103BA0000E94162421E08D3E9E4F09F020E0822FD6
+:103BB000089582E090E00C940E24682F82E090E05B
+:103BC0000C941C2483E090E00C940E24682F83E076
+:103BD00090E00C941C2484E090E00C940E24682F58
+:103BE00084E090E00C941C248091D50180FF0BC0F0
+:103BF0006091130185E0689FB00111247595679568
+:103C0000759567952BC081FF09C06091130185E010
+:103C1000689FB00111247595679520C082FF07C089
+:103C20006091130185E0689FB001112417C0909145
+:103C3000D6019923D1F060911201961788F720914F
+:103C4000130185E0289F90011124929FA001939F6A
+:103C5000500D112470E0CA010E94E0236038710504
+:103C600040F46115710539F002C065E070E0862FFF
+:103C700008958FE7089581E008958091D50180FF30
+:103C800008C06091110170E075956795759567950D
+:103C900021C081FF06C06091110170E075956795A4
+:103CA00019C082FF04C06091110170E010C09091B2
+:103CB000D6019923C1F0609110019617A0F7809169
+:103CC0001101899FC001112470E00E94E023603837
+:103CD000710528F46115710521F0862F08958FE78D
+:103CE000089581E0089561E070E0F4CF803F21F411
+:103CF0000E94F41D819504C0813F29F40E94F41DA7
+:103D00008093D9010895823F21F40E94F41D81958A
+:103D100004C0833F29F40E94F41D8093D8010895C4
+:103D2000893F19F40E943D1E05C08A3F31F40E946C
+:103D30003D1E81958093DA0108958B3F21F40E9406
+:103D40003D1E819504C08C3F29F40E943D1E809346
+:103D5000DB010895843F21F48091D701816017C071
+:103D6000853F21F48091D701826011C0863F21F404
+:103D70008091D70184600BC0873F21F48091D701E7
+:103D8000886005C0883F31F48091D70180618093BD
+:103D9000D70108958D3F21F48091D50181600BC03A
+:103DA0008E3F21F48091D501826005C08F3F29F4B8
+:103DB0008091D50184608093D5010895803F39F4C6
+:103DC0008091D90187FF6CC01092D90169C0813FF1
+:103DD00029F48091D9011816BCF362C09091D801E2
+:103DE000823F29F497FF5CC01092D80159C0833FED
+:103DF00019F41916CCF354C0893F41F48091DA01CB
+:103E000018160CF04DC01092DA014AC08A3F29F40E
+:103E10008091DA0187FF44C0F6CF8B3F39F480915F
+:103E2000DB0187FF3DC01092DB013AC08C3F29F4D3
+:103E30008091DB011816BCF333C0843F21F48091DC
+:103E4000D7018E7F17C0853F21F48091D7018D7FE8
+:103E500011C0863F21F48091D7018B7F0BC0873F33
+:103E600021F48091D701877F05C0883F31F480918C
+:103E7000D7018F7E8093D70113C08D3F21F48091AD
+:103E8000D5018E7F0BC08E3F21F48091D5018D7FAF
+:103E900005C08F3F29F48091D5018B7F8093D50198
+:103EA0008091D80181110EC08091D90181110AC081
+:103EB0008091DA01811106C08091DB01811102C07D
+:103EC0001092D601089587ED91E00E94710F0E9433
+:103ED000CA1B9093D4018093D30108951F93CF936D
+:103EE000DF938091D3019091D4010E94D61BAC0145
+:103EF0009091D601992321F02091140130E006C061
+:103F0000209115018AE0289F900111244217530740
+:103F100008F485C08091D801C091D901D091DA010F
+:103F20001091DB01811107C0C11175C0D11173C09F
+:103F3000111171C074C09F3F19F09F5F9093D6011B
+:103F4000181624F40E94F41D8093D8018091D801A2
+:103F500087FF05C00E94F41D81958093D8011C162F
+:103F600024F40E94F41D8093D9018091D90187FF28
+:103F700005C00E94F41D81958093D9016091D801FC
+:103F8000662331F1C091D901CC2311F1062E000C2A
+:103F9000770B880B990B0E94E72223E333E343E37B
+:103FA0005FE30E944B230E94AF226093D8016C2FE5
+:103FB000CC0F770B880B990B0E94E72223E333E3A6
+:103FC00043E35FE30E944B230E94AF226093D90139
+:103FD0001D1624F40E943D1E8093DA018091DA01BF
+:103FE00087FF05C00E943D1E81958093DA0111165E
+:103FF00024F40E943D1E8093DB018091DB0187FF4A
+:1040000005C00E943D1E81958093DB01DF91CF9119
+:104010001F910C94631F9F3F09F08FCF97CFDF91C3
+:10402000CF911F910895E7EDF1E085E0DF011D924A
+:104030008A95E9F71092D6011092D5010895833040
+:1040400081F128F4813059F08230D1F00895853023
+:1040500009F449C0B8F1863009F456C0089580913A
+:104060001501262F30E0280F311D2F3F310524F494
+:10407000680F6093150108958FEF809315010895DF
+:1040800080911401262F30E0280F311D2F3F31057C
+:1040900024F4680F6093140108958FEF8093140146
+:1040A000089580911301262F30E0280F311D2F3FF6
+:1040B000310524F4680F6093130108958FEF809306
+:1040C0001301089580911201262F30E0280F311D31
+:1040D0002F3F310524F4680F6093120108958FEF8C
+:1040E00080931201089580911101262F30E0280F4E
+:1040F000311D2F3F310524F4680F6093110108959D
+:104100008FEF80931101089580911001262F30E0E8
+:10411000280F311D2F3F310524F4680F60931001E3
+:1041200008958FEF809310010895833011F128F4E2
+:10413000813049F0823091F00895853081F120F18D
+:104140008630C1F1089580911501681720F4861B0F
+:10415000809315010895109215010895809114011E
+:10416000681720F4861B809314010895109214019F
+:10417000089580911301681720F4861B8093130122
+:10418000089510921301089580911201681720F488
+:10419000861B809312010895109212010895809158
+:1041A0001101681720F4861B809311010895109265
+:1041B0001101089580911001681720F4861B8093E7
+:1041C000100108951092100108950F931F938D31DF
+:1041D00009F46BC008F03FC08E3009F47FC0C0F412
+:1041E000873009F469C068F4863009F0B1C0809165
+:1041F000CD01817F8E7F8093CD0181E08093DD01B1
+:10420000A8C0883009F4A2C08B3009F49FC0A0C0B8
+:10421000863109F49BC078F4803109F472C0813191
+:1042200009F096C00E94EA1490910D0181E089275F
+:1042300080930D018BC0893109F488C08B3109F05E
+:1042400087C08091CD0181FB222720F991E0922740
+:1042500090FB81F94CC0853309F470C048F4873273
+:1042600009F46CC008F459C0893209F467C070C001
+:10427000833438F48A3308F04EC0883309F466C0BA
+:1042800067C0833409F45AC0883409F061C00E94C1
+:10429000EA140FEF13ED20E3015010402040E1F746
+:1042A00000C000000E94251C51C00E9469220E948B
+:1042B0005A0F0E9450084AC09091CD01892F8095D5
+:1042C000817080FB90F929F0966098609093CD0101
+:1042D00040C0997F977F9093CD0138C08091CD01E8
+:1042E00082FB222720F991E0922790FB82F98093AC
+:1042F000CD01992359F18091CD0181608093CD0149
+:1043000025C08091CD0183FB222720F991E09227DF
+:1043100090FB83F9ECCF895301C08D5141E050E00F
+:1043200060E070E08A019B0104C0000F111F221F92
+:10433000331F8A95D2F7C901B80104C061E070E06B
+:1043400080E090E00E94A6180E94EA1481E001C07B
+:1043500080E01F910F91089580E0089580E0089516
+:10436000CF93C82F8091DD01813079F018F0823031
+:10437000E9F187C0E0910E01F0910F018081813158
+:1043800069F0823209F07FC009C0E0910E01F0911E
+:104390000F018081813111F0823261F48C2F0E94F3
+:1043A000AC21811104C08C2F0E94E5201DC081E04A
+:1043B00090E01AC08C2F0E94AE21811114C0C4312C
+:1043C00079F048F4CB3079F0C03109F060C082E078
+:1043D0008093DD0108C0C93219F0C83321F057C0FD
+:1043E0001092DD0154C081E0817053C0C93289F15F
+:1043F00018F5C43171F1A8F4C73009F046C08AE05D
+:104400008093150194E19093140193E0909313012C
+:104410008093120188E08093110188E2809310015B
+:1044200034C0CE51C63088F5EC2FF0E0E65DFE4F8B
+:1044300080818093DC0129C0CE34E9F020F4CB34B4
+:1044400021F56AE013C0C13579F0C235F1F461E0BD
+:104450000DC08091DC01882319F01092DC0115C099
+:1044600081E08093DD0115C061E006C08091DC0130
+:104470000E941F200AC06AE08091DC010E94952002
+:1044800004C01092DD0180E004C081E002C080E041
+:10449000ABCFCF910895E1E8F0E080818860808320
+:1044A0008081816080838FB7F89493E09093890036
+:1044B00090ED909388008FBF0895EFE6F0E0808143
+:1044C000826080830895EFE6F0E080818D7F8083B5
+:1044D0000895EFE6F0E0908182E0892780830895D7
+:1044E0001F920F920FB60F9211242F933F934F9369
+:1044F0005F936F937F938F939F93AF93BF93EF934C
+:10450000FF938091DE019091DF0101969093DF018E
+:104510008093DE01811103C082E00E945008E09187
+:10452000DF01E695E695F0E0EA5CFA4FE4918091D0
+:10453000DE018E1303C080E00E945008FF91EF91CE
+:10454000BF91AF919F918F917F916F915F914F91AB
+:104550003F912F910F900FBE0F901F9018950E94C2
+:10456000B6226894B1110C94452308950E942A2321
+:1045700088F09F5798F0B92F9927B751B0F0E1F024
+:10458000660F771F881F991F1AF0BA95C9F714C0D4
+:10459000B13091F00E944423B1E008950C9444237B
+:1045A000672F782F8827B85F39F0B93FCCF386950D
+:1045B00077956795B395D9F73EF49095809570956A
+:1045C00061957F4F8F4F9F4F0895E89409C097FBE7
+:1045D0003EF490958095709561957F4F8F4F9F4FDA
+:1045E0009923A9F0F92F96E9BB279395F69587951E
+:1045F00077956795B795F111F8CFFAF4BB0F11F4E1
+:1046000060FF1BC06F5F7F4F8F4F9F4F16C0882387
+:1046100011F096E911C0772321F09EE8872F762FBD
+:1046200005C0662371F096E8862F70E060E02AF0FE
+:104630009A95660F771F881FDAF7880F96958795EA
+:1046400097F9089557FD9058440F551F59F05F3F53
+:1046500071F04795880F97FB991F61F09F3F79F0A4
+:1046600087950895121613061406551FF2CF469526
+:10467000F1DF08C0161617061806991FF1CF8695A8
+:104680007105610508940895E894BB27662777278C
+:10469000CB0197F908950E945E230C94CF230E94CA
+:1046A000C12338F00E94C82320F0952311F00C9408
+:1046B000B8230C94BE2311240C9445230E9422237A
+:1046C00070F3959FC1F3950F50E0551F629FF00165
+:1046D000729FBB27F00DB11D639FAA27F00DB11D7E
+:1046E000AA1F649F6627B00DA11D661F829F222707
+:1046F000B00DA11D621F739FB00DA11D621F839F8E
+:10470000A00D611D221F749F3327A00D611D231F63
+:10471000849F600D211D822F762F6A2F11249F57B1
+:1047200050409AF0F1F088234AF0EE0FFF1FBB1FB4
+:10473000661F771F881F91505040A9F79E3F510573
+:1047400080F00C94B8230C9445235F3FE4F3983E2B
+:10475000D4F3869577956795B795F795E7959F5F1D
+:10476000C1F7FE2B880F911D9695879597F90895AF
+:1047700097F99F6780E870E060E008959FEF80EC14
+:10478000089500240A9416161706180609060895B7
+:1047900000240A9412161306140605060895092E1D
+:1047A0000394000C11F4882352F0BB0F40F4BF2B8C
+:1047B00011F460FF04C06F5F7F4F8F4F9F4F0895CC
+:1047C00097FB072E16F4009407D077FD09D00E94BE
+:1047D000FA2307FC05D03EF4909581959F4F0895EC
+:1047E000709561957F4F0895EE0FFF1F0590F4912E
+:1047F000E02D0994AA1BBB1B51E107C0AA1FBB1FD8
+:10480000A617B70710F0A61BB70B881F991F5A955C
+:10481000A9F780959095BC01CD010895F999FECF37
+:1048200092BD81BDF89A992780B50895A8E1B0E0BE
+:1048300042E050E00C943624262FF999FECF92BD29
+:1048400081BDF89A019700B4021639F01FBA20BD55
+:104850000FB6F894FA9AF99A0FBE08950196272F89
+:104860000E941D240C941C24DC01CB01FC01F9994D
+:10487000FECF06C0F2BDE1BDF89A319600B40D92AC
+:0C48800041505040B8F70895F894FFCF65
+:10488C0020025208E008BD08890855080101BA0148
+:10489C0028080A03140A3F4D3639F704AA04740495
+:1048AC003B04CE03E70300041904010203040506CC
+:0448BC0007080900E0
+:00000001FF
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "keymap_plover.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define STEN 2 // steno
+#define MDIA 3 // media keys
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,---------------------------------------------------. ,---------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | STEN | | NONE | 6 | 7 | 8 | 9 | 0 | \ |
+ * |--------+------+------+------+-------+-------------| |-------+------+------+------+------+------+--------|
+ * | Del | ' | , | . | P | Y | Esc | | Caps | F | G | C | R | L | / |
+ * |--------+------+------+------+-------+------| | | |------+------+------+------+------+--------|
+ * | BkSp | A | O | E | U | I |------| |-------| D | H | T | N | S | - |
+ * |--------+------+------+------+-------+------| Tab | | Enter |------+------+------+------+------+--------|
+ * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift |
+ * `--------+------+------+------+-------+-------------' `--------------+------+------+------+------+--------'
+ * | L1 | NONE | Grv | Left | Right | | Up | Down | [ | ] | L1 |
+ * `-----------------------------------' `----------------------------------'
+ * ,--------------. ,---------------.
+ * | PgUp | PgDn | | Home | End |
+ * ,------|-------|------| |-------+-------+------.
+ * | | | NONE | | AltGr | | |
+ * | Alt | Enter |------| |-------| Space | Ctrl |
+ * | | | Supr | | ~MDIA | | |
+ * `---------------------' `----------------------'
+ */
+// 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, M(0),
+ KC_DELT, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC,
+ KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_TAB,
+ MO(SYMB), KC_NO, KC_GRV, KC_LEFT,KC_RGHT,
+ KC_PGUP,KC_PGDN,
+ KC_NO,
+ KC_LALT,KC_ENT ,KC_LGUI,
+ // right hand
+ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
+ KC_CAPS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
+ KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
+ KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z , KC_RSFT,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB),
+ KC_HOME,KC_END,
+ KC_RALT,
+ KC_FN1,KC_SPC,KC_RCTL
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+[STEN] = KEYMAP( // layout: layer 2: Steno for Plover
+ // left hand
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_STAR,
+ KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
+ KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
+ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS,
+ KC_NO, KC_NO,
+ KC_NO,
+ PV_A, PV_O, KC_NO,
+ // right hand
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ PV_STAR, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
+ PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
+ PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
+ KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO,
+ KC_NO,
+ KC_FN1, PV_E, PV_U
+),
+
+/* Keymap 3: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | Prev | Next | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | |Brwser|
+ * | | |------| |------| |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN1 - Momentary Layer 3 (Media)
+};
+
+void toggle_steno(int pressed)
+{
+ uint8_t layer = biton32(layer_state);
+
+ if (pressed) {
+ if (layer != STEN) layer_on(STEN); else layer_off(STEN);
+
+ register_code(PV_LS);
+ register_code(PV_LH);
+ register_code(PV_RF);
+ register_code(PV_RT);
+ } else {
+ unregister_code(PV_LS);
+ unregister_code(PV_LH);
+ unregister_code(PV_RF);
+ unregister_code(PV_RT);
+ }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ toggle_steno(record->event.pressed);
+ 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) {
+ uint32_t layer0 = layer_state & (1UL << 0),
+ layer1 = layer_state & (1UL << 1),
+ layer2 = layer_state & (1UL << 2),
+ layer3 = layer_state & (1UL << 3);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+
+ if (layer1) ergodox_right_led_1_on();
+ if (layer2) ergodox_right_led_2_on();
+ if (layer3) ergodox_right_led_3_on();
+};
--- /dev/null
+# Twey's Home Configuration
+## Layers
+- Layer 0: Non-ANSI Dvorak layout, with modified modifiers — all
+ modifiers on thumb keys, as well as return and space.
+- Layer 1: Default symbol layout.
+- Layer 2: Default media/mouse layout.
+- Layer 3: Plover-oriented stenography layer.
+
+## Unusual features
+The Plover key (top right key on the left half) also sends my Plover
+‘toggle’ chord (SH-FT) when pressed, as well as toggling the steno
+layer, so you can toggle between steno and typing modes with a single
+keypress.
+
+If you want to use this feature, you'll need to add:
+
+ "SH-FT": "{PLOVER:TOGGLE}"
+
+to your Plover dictionary.
--- /dev/null
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94C50B0C94970C87\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C9422210C94A9020C94A902EC\r
+:100050000C94A9020C94C41A0C94A9020C94A90241\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902FC0C1E0D3C\r
+:1000B000090E1E0D090E600D830D090ED80DEB0DF6\r
+:1000C000D810D81006110611481184118413841316\r
+:1000D0009C118413931293125E138413841372136E\r
+:1000E0000000F0A12E004C002A00E1003581000044\r
+:1000F0001E00140004001D7134004D001F001A0082\r
+:1001000016001B00E1042A0020000800070006007A\r
+:1001100050002C0021001500090019004F004A0072\r
+:10012000220017000A000500000065745000015409\r
+:100130000000007F0000E3004F0001540000007742\r
+:100140000000E20023001C000B00110000002971D8\r
+:10015000240018000D00100052004B0025000C0078\r
+:100160000E00360051002800260012000F00370054\r
+:100170002F002B00270013003382387130004E000F\r
+:100180002D0031003478E500C100000001000100BD\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00010001003D0030020A\r
+:1001C00027023000010001003E00310235003502F7\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:10020000010001004100250022001F00370001000D\r
+:1002100042002600230020002700010043002502A1\r
+:100220002E0231002E0001004400450001000100B3\r
+:1002300001000000010001000100010001000000B8\r
+:1002400001000100010001000100010001000100A6\r
+:10025000F2000100010001000100F000F1000100C6\r
+:10026000F400010001000100F3000100F5000100AD\r
+:100270000100010001000100000001000100010077\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001000100010001000000010058\r
+:1002A0000100010001000100A9000100010001009E\r
+:1002B0000100AC00AA00B600010001000100AB0083\r
+:1002C000A80001000100010001000100010001007F\r
+:1002D00001000100AE00010001000000160345000E\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A\r
+:1004E0009091EF01A091F001B091F1018730904B14\r
+:1004F000A740B04BB9F41092EE011092EF011092A8\r
+:10050000F0011092F10114BE84B7877F84BF88E1A7\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0E8ECF5E402C0DA\r
+:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
+:1005400001C01D92AE3EB107E1F70E940B090C9469\r
+:10055000E2220C94000061110BC0FC01828188230F\r
+:1005600021F085EE0E946C0F03C085EE0E943410CE\r
+:1005700080E090E0089508956091B1017091B2011A\r
+:100580008091B3019091B4010E94F01956985E9841\r
+:1005900025982D9826982E9827982F98813019F015\r
+:1005A000823021F00895259A2D9A0895269A2E9A40\r
+:1005B00008958CEB92E0892B11F00E94BC0280E040\r
+:1005C00090E0089556985E9825982D9826982E9834\r
+:1005D00027982F988FEF90E0909389008093880060\r
+:1005E00090938B0080938A0090938D0080938C0071\r
+:1005F000259A2D9A2FEF80E792E02150804090407D\r
+:10060000E1F700C00000269A2E9A2FEF80E792E0D3\r
+:10061000215080409040E1F700C00000279A2F9AB7\r
+:100620002FEF80E792E0215080409040E1F700C03A\r
+:10063000000025982D982FEF80E792E02150804010\r
+:100640009040E1F700C0000026982E982FEF80E739\r
+:1006500092E0215080409040E1F700C000002798D0\r
+:100660002F9856985E9825982D9826982E9827981A\r
+:100670002F98089589EA8093800089E08093810013\r
+:1006800024982C983F988AB18F748AB96E98479AAB\r
+:100690008BB1806B8BB9769A0E94E2028BEB92E071\r
+:1006A000892B11F00E94BB0280E090E0089580E267\r
+:1006B000809300018091340181110EC00E94A60335\r
+:1006C00081E0809334012FEF83ED90E3215080404F\r
+:1006D0009040E1F700C0000080E40E94AC038093EA\r
+:1006E000000181112EC00E94D60380930001811168\r
+:1006F00028C00E94D60380930001811122C08FE39D\r
+:100700000E94D6038093000181111BC00E94CE037A\r
+:1007100080E40E94AC0380930001811112C08CE040\r
+:100720000E94D6038093000181110BC00E94D60362\r
+:1007300080930001811105C08FE30E94D60380934E\r
+:1007400000010E94CE038091000108951092B9002B\r
+:100750008AE08093B800089594EA9093BC00909149\r
+:10076000BC0097FFFCCF9091B900987F983021F0A2\r
+:10077000903111F081E008958093BB0084E880936C\r
+:10078000BC008091BC0087FFFCCF8091B900887FBE\r
+:10079000883111F0803471F780E0089584E9809306\r
+:1007A000BC008091BC0084FDFCCF08958093BB0009\r
+:1007B00084E88093BC008091BC0087FFFCCF9091BF\r
+:1007C000B900987F81E0983209F480E0089584E8C8\r
+:1007D0008093BC008091BC0087FFFCCF8091BB0060\r
+:1007E000089580910001811115C080E40E94AC033E\r
+:1007F0008093000181110CC082E10E94D603809396\r
+:100800000001811105C08FEF0E94D6038093000183\r
+:100810000E94CE0384B1807F84B985B1807F85B981\r
+:100820008AB1837F8AB98BB1837F8BB93E98469812\r
+:1008300008950E945703809300010E94F10380B342\r
+:100840008C7080BB81B3836F81BBE4E4F1E0A6E3ED\r
+:10085000B1E011921D9281E0E235F807D1F78AE309\r
+:1008600093E0892B11F00C943A030895BF92CF9234\r
+:10087000DF92EF92FF920F931F93CF93DF938091BC\r
+:100880000001882379F0809135018F5F80933501D5\r
+:10089000811108C00E94570380930001811102C09A\r
+:1008A0000E94E20206E311E0C0E0D0E0DD24D39430\r
+:1008B00082E0C82EEE24E394F12CC73000F580913D\r
+:1008C0000001811162C080E40E94AC0380930001AA\r
+:1008D000811112C082E10E94D60380930001811130\r
+:1008E0000BC0C7010C2E01C0880F0A94EAF780954F\r
+:1008F0000E94D603809300010E94CE0346C0CA30F6\r
+:10090000A1F028F4C83059F0C93061F005C0CC30EE\r
+:1009100089F070F0CD3089F0209A289810C0219A83\r
+:1009200029980DC0229A2A980AC0239A2B9807C0AA\r
+:10093000529A01C0539A5B9802C03E9A4698E0EAE8\r
+:10094000EA95F1F78FB1799960C092E081708D25B9\r
+:10095000892B7C9B02C090E001C094E0892B7D9B99\r
+:1009600002C090E001C098E0892B7E9B02C090E01D\r
+:1009700001C090E1892B9FB19095991F9927991FEC\r
+:100980009295990F907E892B0FC080910001811163\r
+:1009900051C080E40E94AC03809300018823B9F128\r
+:1009A000B12C0E94CE038B2DF8019081981719F07D\r
+:1009B0008083C09201010E94F10321960F5F1F4FB7\r
+:1009C000CE30D10509F079CF809101018823B1F0B3\r
+:1009D000815080930101882339F08FE99FE00197CE\r
+:1009E000F1F700C000000AC0A4E4B1E0E6E3F1E0E2\r
+:1009F00081918D9391E0E434F907D1F789ED92E08C\r
+:100A0000892BD1F00E94D90217C090E09FCF83E1DB\r
+:100A10000E94D603809300018111C2CF81E40E941D\r
+:100A2000AC03809300018111BBCF0E94E703B82E75\r
+:100A3000B094B7CF80E0B8CF81E0DF91CF911F9124\r
+:100A40000F91FF90EF90DF90CF90BF900895E82F27\r
+:100A5000F0E0EC5BFE4F8081089508958B3B91059B\r
+:100A600078F4883A910540F5853A9105D0F48430C0\r
+:100A7000910508F0B1C08130910509F4ADC06BC09B\r
+:100A8000803E910508F467C0883E910508F4A4C033\r
+:100A90009C01205F31092031310508F05CC0906570\r
+:100AA0000895853A910509F459C0863A910509F4EB\r
+:100AB00058C083E890E40895883A910509F454C039\r
+:100AC000893A910509F453C08A3A910509F452C054\r
+:100AD0008B3A910509F451C08C3A910509F450C044\r
+:100AE0008D3A910509F44FC0803B910509F44EC041\r
+:100AF0008E3A910509F44DC08F3A910509F44CC026\r
+:100B0000813B910509F44BC0823B910509F44AC031\r
+:100B1000833B910509F449C0843B910509F448C021\r
+:100B2000853B910509F447C0863B910509F446C011\r
+:100B3000873B910509F445C0883B910509F444C001\r
+:100B4000893B910509F443C08A3B910509F042C0F5\r
+:100B50008AE296E4089580E090E0089581E890E4C8\r
+:100B6000089582E890E4089582EE94E4089589EE71\r
+:100B700094E408958AEE94E4089585EB94E408954E\r
+:100B800086EB94E4089587EB94E408958CEC94E468\r
+:100B900008958DEC94E4089583E895E408958AE837\r
+:100BA00095E4089582E995E4089584E995E408952B\r
+:100BB00081E296E4089583E296E4089584E296E45F\r
+:100BC000089585E296E4089586E296E4089587E222\r
+:100BD00096E4089580E094E40895089596E0799F5E\r
+:100BE000F001112494E5899FE00DF11D1124E60F19\r
+:100BF000F11DEE0FFF1FEC51FF4F85919491089569\r
+:100C0000880F991F805A9040FC0185919491089516\r
+:100C1000880F991F80529F4FFC01859194910895F0\r
+:100C200026E0729FF001112444E5849FE00DF11D40\r
+:100C30001124E60FF11DEE0FFF1FEC51FF4F259120\r
+:100C40003491C9019A9581159F4110F4C901089505\r
+:100C5000C90190528115904128F4C9019F700E94EA\r
+:100C600008060895C90190538115904120F4C901E7\r
+:100C70009927906C0895211580E5380769F40E9442\r
+:100C8000A5139FEF24E34CE0915020404040E1F752\r
+:100C900000C000000C94E91A213080E5380731F4D7\r
+:100CA0008091CC0181608093CC010895C901905559\r
+:100CB0008115904108F050C0832F99278F70992794\r
+:100CC00081309105D9F4A9014370552702C0880FDE\r
+:100CD000991F4A95E2F79C68A90164E0440F551FEB\r
+:100CE0006A95E1F744275370842B952B73E0220F0C\r
+:100CF000331F7A95E1F7207633271DC082309105A6\r
+:100D000029F4922F8827816F906A08958330910586\r
+:100D1000A9F4A9014370552781E090E002C0880F33\r
+:100D2000991F4A95E2F79C6843E0220F331F4A95CA\r
+:100D3000E1F7207E3770822B932B08950497F1F40E\r
+:100D4000A9014370552781E090E002C0880F991FE8\r
+:100D50004A95E2F79A68E8CFC9019057811590410A\r
+:100D600020F4C9019F7090620895C90190588115BF\r
+:100D7000904120F4C9019F70906A0895203E31058A\r
+:100D8000E0F4203C310558F52133310509F470C0F9\r
+:100D900048F42932310509F464C02A32310509F4D6\r
+:100DA0006EC074C029333105F1F022383105D9F015\r
+:100DB0002533310509F44EC069C0233E310589F160\r
+:100DC00038F4203E3105C1F0223E3105E1F05EC02D\r
+:100DD000263E310569F1273E3105A9F157C0C90109\r
+:100DE0000E94000608958091DF0180FD02C081FF0E\r
+:100DF0004DC080EE90E04BC08091DF0180FFF9CFC5\r
+:100E000089E390E044C08091DF0182FF0EC08091B1\r
+:100E1000DF0184FF03C080E090E039C083EE90E002\r
+:100E200036C08091DF0182FFF2CF82EE90E02FC0CA\r
+:100E30008091DF0183FF0BC08091DF0184FDEBCF48\r
+:100E400087EE90E024C08091DF0183FFF5CF86EE2E\r
+:100E500090E01DC08091DF0185FF07C089E290E02E\r
+:100E600016C08091DF0185FFF9CF85E390E00FC0C8\r
+:100E70008091DF0186FF07C08AE290E008C0809180\r
+:100E8000DF0186FFF9CF81E390E001C0C9010E9434\r
+:100E90002E0508950895809162010895CF93DF9300\r
+:100EA00000D01F92CDB7DEB72091E501243019F5AF\r
+:100EB00023E029839B838A832093E9008FEF90911D\r
+:100EC000E800815095FD06C095ED9A95F1F7000078\r
+:100ED0008111F5CF8091E80085FF0DC040E050E022\r
+:100EE00063E070E0CE0101960E94B8098091E800AD\r
+:100EF0008E778093E8000F900F900F90DF91CF9145\r
+:100F00000895CF93DF9300D01F92CDB7DEB7209125\r
+:100F1000E501243021F522E029839B838A8383E045\r
+:100F20008093E9008FEF9091E800815095FD06C015\r
+:100F300095ED9A95F1F700008111F5CF8091E800C9\r
+:100F400085FF0DC040E050E063E070E0CE01019607\r
+:100F50000E94B8098091E8008E778093E8000F9096\r
+:100F60000F900F90DF91CF9108952091E5012430EB\r
+:100F7000F1F422E02093E9002FEF3091E8002150B6\r
+:100F800035FD06C035ED3A95F1F700002111F5CF9A\r
+:100F90002091E80025FF0BC040E050E065E070E0E4\r
+:100FA0000E94B8098091E8008E778093E800089548\r
+:100FB000CF93DF93EC018091E501843009F046C0C6\r
+:100FC00090910C019923D9F090910D019923B9F0DA\r
+:100FD0008093E9008FEF9091E800815095FD06C065\r
+:100FE00095E19A95F1F700008111F5CF8091E80025\r
+:100FF00085FF2CC040E050E060E170E017C081E068\r
+:101000008093E9008FEF9091E800815095FD06C034\r
+:1010100095ED9A95F1F700008111F5CF8091E800E8\r
+:1010200085FF14C040E050E068E070E0CE010E940F\r
+:10103000B8098091E8008E778093E80080E1FE0196\r
+:10104000A2E5B1E001900D928A95E1F7DF91CF9191\r
+:1010500008958091E401811109C00E944A0B0E9409\r
+:10106000A70B8091E20084608093E20008951092C3\r
+:10107000E401089508950C940F210E94801A0E94A3\r
+:1010800015210E94440E0C944A0742E061EC81E075\r
+:101090000E94C40A42E061EC82E00E94C40A42E07D\r
+:1010A00061EC83E00E94C40A42E161EC84E00C94AC\r
+:1010B000C40A8091E701833009F455C030F48130CF\r
+:1010C00071F0823009F48EC008958A3009F47AC034\r
+:1010D0008B3009F460C0893009F09CC020C0809139\r
+:1010E000E601813A09F096C08091E800877F8093FD\r
+:1010F000E8008091EA019091EB01892B21F060E0FA\r
+:1011000080E090E003C060E182E591E070E00E9441\r
+:10111000010A8091E8008B778093E8000895809120\r
+:10112000E601813209F076C08091EA019091EB01ED\r
+:10113000009719F0039709F06DC08091E800877F50\r
+:101140008093E8008091E80082FD05C08091E50170\r
+:101150008111F8CF5FC08091F1008093620180918E\r
+:10116000E8008B7753C08091E601813A09F052C0C4\r
+:101170008091EA019091EB01892B09F04BC080919D\r
+:10118000E800877F8093E8008091E80080FFFCCF33\r
+:1011900080910C0136C08091E6018132D9F58091B1\r
+:1011A000EA019091EB01892BA9F58091E800877FF6\r
+:1011B0008093E8000E94F90A8091E80180930C0175\r
+:1011C0000C94A5138091E601813221F58091E8000D\r
+:1011D000877F8093E8000E94F90A8091E90180935B\r
+:1011E000630108958091E601813AA1F48091E800BD\r
+:1011F000877F8093E8008091E80080FFFCCF80919A\r
+:1012000063018093F1008091E8008E778093E8007D\r
+:101210000C94F90A089584B7877F84BF88E10FB6DC\r
+:10122000F89480936000109260000FBE90E080E818\r
+:101230000FB6F89480936100909361000FBE0E94F6\r
+:10124000930E0E944A0B0E94A70B8091E2008460DB\r
+:101250008093E20078940E94220E0E94950E82E014\r
+:1012600091E00E943F0E0E94FD208091E5018530B3\r
+:1012700069F40E94431A8091E3018823B1F30E942C\r
+:101280006B1A882391F30E94A209EFCF0E949B0E54\r
+:10129000ECCF292F332723303105A9F06CF421300E\r
+:1012A000310509F442C02230310509F043C08DE612\r
+:1012B00090E020E133E042C021323105C9F0223212\r
+:1012C000310519F137C099278130910541F08230FD\r
+:1012D000910541F0892B71F5ECE0F3E005C0E4EFF6\r
+:1012E000F2E002C0ECEDF2E0849190E09F0126C0B4\r
+:1012F000643000F5E62FF0E0EE0FFF1FEE5DFE4FCD\r
+:101300002081318189E090E019C0643098F4E62FA3\r
+:10131000F0E0DF01AA0FBB1FA65EBE4F2D913C91EE\r
+:10132000EA5EFE4F808190E009C082E190E02DE707\r
+:1013300033E004C080E090E020E030E0FA01318347\r
+:101340002083089580E189BD82E189BD09B400FE52\r
+:10135000FDCF8091D8008F7D8093D8008091E000F0\r
+:1013600082608093E0008091E00081FDFCCF0895D1\r
+:10137000CF92DF92EF92FF920F931F93CF93DF9361\r
+:101380007C018B01EA010E941A0B811131C0209768\r
+:1013900031F088819981081B190BE80EF91EC12CC8\r
+:1013A000D12C0115110519F18091E80085FD14C0BB\r
+:1013B0008091E8008E778093E800209741F0888143\r
+:1013C00099818C0D9D1D9983888385E011C00E94B1\r
+:1013D0001A0B882331F30CC0F70181917F018093B0\r
+:1013E000F10001501109FFEFCF1ADF0ADACF80E0D8\r
+:1013F000DF91CF911F910F91FF90EF90DF90CF90F1\r
+:1014000008952091EC013091ED012617370748F03F\r
+:101410006115710539F42091E8002E772093E800DA\r
+:1014200001C0B901FC0120E061157105B9F180919D\r
+:10143000E501882309F440C0853009F43FC080915C\r
+:10144000E80083FD3DC08091E80082FF06C08091E6\r
+:10145000E80082FF26C080E008958091E80080FFC8\r
+:10146000E3CF2091F3008091F20090E0922B611580\r
+:10147000710551F08830910538F421912093F100E5\r
+:10148000615071090196F3CF21E0089709F020E03F\r
+:101490008091E8008E778093E800C6CF2111C7CFF6\r
+:1014A000D6CF8091E501882339F0853039F08091DD\r
+:1014B000E80083FFCCCF04C082E0089583E0089564\r
+:1014C00081E008952091EC013091ED012617370756\r
+:1014D00048F06115710539F42091E8002E772093CA\r
+:1014E000E80001C0B901FC0120E061157105C1F1FE\r
+:1014F0008091E501882309F441C0853009F440C09A\r
+:101500008091E80083FD3EC08091E80082FF06C024\r
+:101510008091E80082FF27C080E008958091E80074\r
+:1015200080FFE3CF2091F3008091F20090E0922BB6\r
+:101530006115710559F08830910540F4249120938C\r
+:10154000F1003196615071090196F2CF21E00897C0\r
+:1015500009F020E08091E8008E778093E800C5CF05\r
+:101560002111C6CFD5CF8091E501882339F0853090\r
+:1015700039F08091E80083FFCBCF04C082E008956A\r
+:1015800083E0089581E00895982F973058F590935F\r
+:10159000E900981739F07091EC002091ED0050911E\r
+:1015A000F00003C0242F762F50E021FF19C03091A6\r
+:1015B000EB003E7F3093EB003091ED003D7F3093A8\r
+:1015C000ED003091EB0031603093EB007093EC0054\r
+:1015D0002093ED005093F0002091EE0027FF07C00C\r
+:1015E0009F5FD3CF8F708093E90081E0089580E002\r
+:1015F00008958091E60187FD05C08091E80080FF95\r
+:101600000EC012C08091E80082FD05C08091E50106\r
+:101610008111F8CF08958091E8008B7708C0809100\r
+:10162000E5018111EACF08958091E8008E778093DB\r
+:10163000E80008958091E4009091E50045E620914E\r
+:10164000EC0020FF21C02091E80020FD21C0209166\r
+:10165000E501222389F0253089F02091EB0025FD5A\r
+:101660000FC02091E4003091E5002817390739F3C5\r
+:10167000415041F0C901E3CF82E0089583E008952D\r
+:1016800081E0089584E008952091E80022FFDFCFF3\r
+:1016900080E008950E94B80B0E94C00BE0EEF0E0DD\r
+:1016A000808181608083E8EDF0E080818F778083A6\r
+:1016B00019BCA7EDB0E08C918E7F8C9380818F7EDA\r
+:1016C00080831092E40108950F931F93CF93DF93CB\r
+:1016D0000E94B80B0E94C00BC8EDD0E088818F77C4\r
+:1016E000888388818068888388818F7D888319BCFE\r
+:1016F0001092E5011092E1011092E3011092E201D3\r
+:1017000000EE10E0F80180818B7F8083888181600A\r
+:10171000888342E060E080E00E94C40AE1EEF0E0ED\r
+:1017200080818E7F8083E2EEF0E080818160808323\r
+:10173000808188608083F80180818E7F80838881AA\r
+:1017400080618883DF91CF911F910F910895E8ED1B\r
+:10175000F0E080818F7E8083E7EDF0E08081816022\r
+:10176000808384E082BF81E08093E4010C94640B69\r
+:10177000E8EDF0E080818E7F80831092E200089592\r
+:101780001092DA001092E10008951F920F920FB6A6\r
+:101790000F9211242F933F934F935F936F937F93F7\r
+:1017A0008F939F93AF93BF93EF93FF938091E1004B\r
+:1017B00082FF0BC08091E20082FF07C08091E100B0\r
+:1017C0008B7F8093E1000E94210E8091DA0080FFE0\r
+:1017D0001FC08091D80080FF1BC08091DA008E7FEF\r
+:1017E0008093DA008091D90080FF0DC080E189BD2F\r
+:1017F00082E189BD09B400FEFDCF81E08093E5015F\r
+:101800000E94290805C019BC1092E5010E94370802\r
+:101810008091E10080FF19C08091E20080FF15C037\r
+:101820008091E2008E7F8093E2008091E2008061EF\r
+:101830008093E2008091D80080628093D80019BC28\r
+:1018400085E08093E5010E943B088091E10084FFE0\r
+:1018500030C08091E20084FF2CC080E189BD82E12C\r
+:1018600089BD09B400FEFDCF8091D8008F7D8093A3\r
+:10187000D8008091E1008F7E8093E1008091E200AA\r
+:101880008F7E8093E2008091E20081608093E2008D\r
+:101890008091E101882311F084E007C08091E3008A\r
+:1018A00087FF02C083E001C081E08093E5010E94D0\r
+:1018B0003D088091E10083FF29C08091E20083FF11\r
+:1018C00025C08091E100877F8093E10082E08093D2\r
+:1018D000E5011092E1018091E1008E7F8093E100AB\r
+:1018E0008091E2008E7F8093E2008091E20080612F\r
+:1018F0008093E20042E060E080E00E94C40A8091B0\r
+:10190000F00088608093F0000E943A08FF91EF9108\r
+:10191000BF91AF919F918F917F916F915F914F9107\r
+:101920003F912F910F900FBE0F901F9018951F920F\r
+:101930000F920FB60F9211242F933F934F935F9303\r
+:101940006F937F938F939F93AF93BF93CF93EF93B7\r
+:10195000FF93C091E900CF708091EC001092E900F4\r
+:101960008091F000877F8093F00078940E94D30CE0\r
+:101970001092E9008091F00088608093F000C0939D\r
+:10198000E900FF91EF91CF91BF91AF919F918F911E\r
+:101990007F916F915F914F913F912F910F900FBE6B\r
+:1019A0000F901F9018951F93CF93DF93CDB7DEB79D\r
+:1019B000AA970FB6F894DEBF0FBECDBFE6EEF1E0FA\r
+:1019C0008091F100819321E0EE3EF207C9F70E9479\r
+:1019D00059088091E80083FF1CC12091E6013091F5\r
+:1019E000E701832F90E08A30910508F012C1FC01D5\r
+:1019F000EA5AFF4F0C949722203881F0223809F0E0\r
+:101A000008C18091EA018F708093E9008091EB001A\r
+:101A100085FB882780F91092E90006C08091E201D9\r
+:101A20009091E301911182609091E800977F9093EB\r
+:101A3000E8008093F1001092F100C5C0822F8D7FE5\r
+:101A400009F0E7C0222319F0223061F0E2C0809152\r
+:101A5000E801813009F0DDC0333009F080E0809387\r
+:101A6000E30128C08091E801811124C02091EA019E\r
+:101A70002F7009F4CEC02093E9008091EB0080FF25\r
+:101A800019C08091EB00333011F4806211C0806185\r
+:101A90008093EB0081E090E0022E01C0880F0A9451\r
+:101AA000EAF78093EA001092EA008091EB008860E8\r
+:101AB0008093EB001092E9008091E800877F86C058\r
+:101AC0002111A7C01091E8011F778091E300807871\r
+:101AD000812B8093E3008091E800877F8093E8006A\r
+:101AE0000E94F90A8091E80080FFFCCF8091E3001A\r
+:101AF00080688093E300112311F083E001C082E04D\r
+:101B00008093E50186C02058223008F082C0809181\r
+:101B1000E8019091E9018C3D23E0920779F583E09B\r
+:101B20008A838AE289834FB7F894DE01139620E016\r
+:101B30003EE051E2E32FF0E050935700E49120FFA4\r
+:101B400003C0E295EF703F5FEF708E2F90E0EA30B8\r
+:101B500010F0C79601C0C0968D939D932F5F2431DE\r
+:101B600049F74FBF8091E800877F8093E8006AE2E1\r
+:101B700070E0CE0101960E94010A14C0AE014F5FD1\r
+:101B80005F4F6091EA010E944909009709F441C042\r
+:101B90002091E800277F2093E800BC0189819A8189\r
+:101BA0000E94620A8091E8008B778093E80031C040\r
+:101BB000203879F58091E800877F8093E800809154\r
+:101BC000E1018093F1008091E8008E778093E80036\r
+:101BD0000E94F90A1EC021111CC09091E8019230A8\r
+:101BE000C0F48091E800877F8093E8009093E10142\r
+:101BF0000E94F90A8091E101811104C08091E30003\r
+:101C000087FF02C084E001C081E08093E5010E946B\r
+:101C100045088091E80083FF0AC08091E800877F33\r
+:101C20008093E8008091EB0080628093EB00AA969D\r
+:101C30000FB6F894DEBF0FBECDBFDF91CF911F91DD\r
+:101C400008950895CF938091E5018823B1F08091A4\r
+:101C5000E9008F709091EC0090FF02C090E801C005\r
+:101C600090E0C92FC82B1092E9008091E80083FD15\r
+:101C70000E94D30CCF70C093E900CF910895909348\r
+:101C80006901809368010895E0916801F09169010C\r
+:101C9000309721F00190F081E02D099480E00895C3\r
+:101CA000E0916801F0916901309721F00280F381A1\r
+:101CB000E02D09940895E0916801F0916901309751\r
+:101CC00021F00480F581E02D0994089520916601AA\r
+:101CD000309167018217930771F0909367018093A9\r
+:101CE0006601E0916801F0916901309721F006806A\r
+:101CF000F781E02D099408952091640130916501E8\r
+:101D00008217930771F09093650180936401E091CD\r
+:101D10006801F0916901309721F00084F185E02D90\r
+:101D20000994089508950C94920E0E94861A0E94B8\r
+:101D300019040C944C1BCF92DF92EF92FF920F93F9\r
+:101D40001F93CF93DF93CDB7DEB72B970FB6F894E1\r
+:101D5000DEBF0FBECDBF0E9436043BE6E32E31E06E\r
+:101D6000F32E00E010E0C02E802F0E942705F7011F\r
+:101D7000D1907F01D826B1F40F5F1F4F0E301105AF\r
+:101D800091F78FEF89838A831B820E948F1A81606B\r
+:101D9000782F9D838C8349815A816B818D810E942C\r
+:101DA0003E0F41C09091CC0191FF04C08B870E94EF\r
+:101DB0002D058B8520E030E04D2D50E0922FBA01AB\r
+:101DC000022E02C0759567950A94E2F760FF25C060\r
+:101DD0002E83CF82EE24E394F12C02C0EE0CFF1C84\r
+:101DE0009A95E2F790E08E219F2121E0892B09F45A\r
+:101DF00020E028870E948F1A8160782F9A87898730\r
+:101E00004E815F8168858A850E943E0FF801E55901\r
+:101E1000FE4F80818E25808306C02F5F3F4F263086\r
+:101E2000310561F6A9CF0E94301E10916A010E940F\r
+:101E3000440E1817A1F00E94440E80936A012B965D\r
+:101E40000FB6F894DEBF0FBECDBFDF91CF911F91CB\r
+:101E50000F91FF90EF90DF90CF900C944A072B9654\r
+:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB\r
+:101E70000F91FF90EF90DF90CF900895CF93DF9375\r
+:101E8000CDB7DEB72B970FB6F894DEBF0FBECDBF30\r
+:101E90004F83588769877A878B87DE01119686E0A2\r
+:101EA000FD0111928A95E9F785E0FE0137960190D0\r
+:101EB0000D928A95E1F749815A816B817C818D81F0\r
+:101EC0009E810E9471162B960FB6F894DEBF0FBE4E\r
+:101ED000CDBFDF91CF910895CF93C82F882309F408\r
+:101EE000C1C0823859F40E94440E81FDBBC089E311\r
+:101EF0000E9410190E94CA1989E30CC0833879F432\r
+:101F00000E94440E80FDAEC083E50E9410190E941D\r
+:101F1000CA1983E50E945019CF910C94CA198438CC\r
+:101F200059F40E94440E82FD9DC087E40E9410195E\r
+:101F30000E94CA1987E4EECF8CEF8C0F813A48F4E7\r
+:101F40008C2F0E94652081118DC08C2F0E9410194A\r
+:101F5000E3CF80E28C0F883048F4C77081E001C085\r
+:101F6000880FCA95EAF70E949119D6CF8BE58C0F9E\r
+:101F7000833078F4C53A29F0C63A31F482E890E02B\r
+:101F800005C081E890E002C083E890E0CF910C9416\r
+:101F9000660E88E58C0F833108F064C0C83A39F1C9\r
+:101FA000C93A41F1CA3A49F1CB3A51F1CC3A59F127\r
+:101FB000CD3A61F1C03B69F1CE3A71F1CF3A79F196\r
+:101FC000C13B81F1C23B89F1C33B91F1C43B99F123\r
+:101FD000C53BA1F1C63BA9F1C73BB1F1C83BB9F183\r
+:101FE000C93BC1F1CA3BC9F58AE292E038C082EE32\r
+:101FF00090E035C089EE90E032C08AEE90E02FC0CC\r
+:1020000085EB90E02CC086EB90E029C087EB90E058\r
+:1020100026C08CEC90E023C08DEC90E020C083E8DB\r
+:1020200091E01DC08AE891E01AC082E991E017C0F2\r
+:1020300084E991E014C081E292E011C083E292E071\r
+:102040000EC084E292E00BC085E292E008C086E216\r
+:1020500092E005C087E292E002C080E090E0CF917C\r
+:102060000C947C0ECF910895882309F44BC08238DC\r
+:1020700059F40E94440E81FF45C089E30E94101963\r
+:102080000E94CA1989E30CC0833871F40E94440E7F\r
+:1020900080FF38C083E50E9410190E94CA1983E5A9\r
+:1020A0000E9450190C94CA19843859F40E94440EA5\r
+:1020B00082FF28C087E40E9410190E94CA1987E491\r
+:1020C000EFCF9CEF980F913A58F390E2980F983029\r
+:1020D00050F4877091E001C0990F8A95EAF7892F33\r
+:1020E0000E949719DFCF9BE5980F933020F480E092\r
+:1020F00090E00C94660E885A833120F480E090E0E2\r
+:102100000C947C0E0895882321F00E9491190C9460\r
+:10211000CA190895882321F00E9497190C94CA19AE\r
+:102120000895CF92DF92EF92FF920F931F93CF9378\r
+:10213000DF93CDB7DEB728970FB6F894DEBF0FBE9A\r
+:10214000CDBF8C0185E0F801DE01119601900D9262\r
+:102150008A95E1F7F80140813181F280258122954D\r
+:102160002F7083819481892B31F03F3F31F481E0DE\r
+:102170004F3F19F403C081E001C080E080FDC4C27C\r
+:1021800049833A8389819A812F830E94CE189E8346\r
+:1021900088870E94CD180E94A0174E81E42FE295F7\r
+:1021A000EF70F0E0E05AFF4F2F8168850C94972282\r
+:1021B000842F807F142F1F70882311F01295107FB9\r
+:1021C000FF2059F0112309F454C2812F68870E941F\r
+:1021D000A1190E94CA1968854CC2862F0E9434102A\r
+:1021E000112309F491C2812F0E94A71928960FB6D6\r
+:1021F000F894DEBF0FBECDBFDF91CF911F910F913D\r
+:10220000FF90EF90DF90CF900C94CA19342F307F5D\r
+:10221000842F8F70303211F08295807F662319F001\r
+:10222000613019F12BC0FF20B1F0222309F493C1D2\r
+:10223000213009F090C128960FB6F894DEBF0FBE8A\r
+:10224000CDBFDF91CF911F910F91FF90EF90DF9065\r
+:10225000CF900C94B119222319F0213009F454C203\r
+:102260008E830E94B4198E8189C1FF2021F0223013\r
+:1022700008F04AC270C1211147C280C1FF2021F07D\r
+:10228000222309F468C1F5C1222309F477C105C2EC\r
+:10229000242F26952695237030E02115310521F055\r
+:1022A00021303105C9F030C2FF2021F0862F942F54\r
+:1022B000937002C080E090E028960FB6F894DEBFDD\r
+:1022C0000FBECDBFDF91CF911F910F91FF90EF9087\r
+:1022D000DF90CF900C94660EFF2021F0862F942F74\r
+:1022E000937002C080E090E028960FB6F894DEBFAD\r
+:1022F0000FBECDBFDF91CF911F910F91FF90EF9057\r
+:10230000DF90CF900C947C0E862FFF2019F00E9456\r
+:10231000381D02C00E94A01D28960FB6F894DEBF9B\r
+:102320000FBECDBFDF91CF911F910F91FF90EF9026\r
+:10233000DF90CF900C94251E842F837009F076C017\r
+:10234000F110E2C1262F229526952770220F220F29\r
+:10235000862F8F70C82ED12CE12CF12C022E04C0B8\r
+:10236000CC0CDD1CEE1CFF1C0A94D2F764FF10C0DD\r
+:102370006FE070E080E090E004C0660F771F881F78\r
+:10238000991F2A95D2F7609570958095909503C016\r
+:1023900060E070E0CB01242F269526952370422F14\r
+:1023A00050E042305105D1F04330510559F16C29CC\r
+:1023B0007D298E299F294130510541F128960FB67C\r
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B\r
+:1023D000FF90EF90DF90CF900C94C5176C297D296A\r
+:1023E0008E299F2928960FB6F894DEBF0FBECDBF69\r
+:1023F000DF91CF911F910F91FF90EF90DF90CF90E1\r
+:102400000C94DF170E94C517C701B60128960FB6B6\r
+:10241000F894DEBF0FBECDBFDF91CF911F910F911A\r
+:10242000FF90EF90DF90CF900C94AB17FF2019F046\r
+:10243000842F817001C08695882309F465C1262FF9\r
+:10244000229526952770220F220F862F8F70C82E77\r
+:10245000D12CE12CF12C022E04C0CC0CDD1CEE1C86\r
+:10246000FF1C0A94D2F764FF10C06FE070E080E0B8\r
+:1024700090E004C0660F771F881F991F2A95D2F736\r
+:10248000609570958095909503C060E070E0CB01F9\r
+:10249000242F269526952370422F50E04230510577\r
+:1024A000D1F04330510559F16C297D298E299F299E\r
+:1024B0004130510541F128960FB6F894DEBF0FBEAA\r
+:1024C000CDBFDF91CF911F910F91FF90EF90DF90E3\r
+:1024D000CF900C9499186C297D298E299F292896D4\r
+:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125\r
+:1024F0000F91FF90EF90DF90CF900C94B3180E9453\r
+:102500009918C701B60128960FB6F894DEBF0FBE22\r
+:10251000CDBFDF91CF911F910F91FF90EF90DF9092\r
+:10252000CF900C947F18603FC9F118F4603E50F4CE\r
+:102530009BC0623F09F460C008F44AC0633F09F4DD\r
+:102540006FC092C0162F1F70842F8F71FF2099F0DB\r
+:102550000E941818812F28960FB6F894DEBF0FBE80\r
+:10256000CDBFDF91CF911F910F91FF90EF90DF9042\r
+:10257000CF900C9483100E943918812F28960FB6A3\r
+:10258000F894DEBF0FBECDBFDF91CF911F910F91A9\r
+:10259000FF90EF90DF90CF900C948A10FF20A1F075\r
+:1025A0002111B2C0842F8F7128960FB6F894DEBF28\r
+:1025B0000FBECDBFDF91CF911F910F91FF90EF9094\r
+:1025C000DF90CF900C945E18223008F09DC0EACFC7\r
+:1025D000FF20A1F0842F8F7128960FB6F894DEBFEC\r
+:1025E0000FBECDBFDF91CF911F910F91FF90EF9064\r
+:1025F000DF90CF900C941818FF2061F3842F8F7117\r
+:1026000028960FB6F894DEBF0FBECDBFDF91CF91F5\r
+:102610001F910F91FF90EF90DF90CF900C9439189D\r
+:10262000FF2091F0842F8F7128960FB6F894DEBFAB\r
+:102630000FBECDBFDF91CF911F910F91FF90EF9013\r
+:10264000DF90CF900C94031828960FB6F894DEBF55\r
+:102650000FBECDBFDF91CF911F910F91FF90EF90F3\r
+:10266000DF90CF900C94F917FF20A1F0222309F4FA\r
+:10267000B1CF862F28960FB6F894DEBF0FBECDBF20\r
+:10268000DF91CF911F910F91FF90EF90DF90CF904E\r
+:102690000C946C0F222309F4B1CF862F28960FB625\r
+:1026A000F894DEBF0FBECDBFDF91CF911F910F9188\r
+:1026B000FF90EF90DF90CF900C9434104F70C801D2\r
+:1026C0000E94AB0228960FB6F894DEBF0FBECDBFB6\r
+:1026D000DF91CF911F910F91FF90EF90DF90CF90FE\r
+:1026E0000C941E174F70C80128960FB6F894DEBFE1\r
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053\r
+:10270000DF90CF900C94ED0528960FB6F894DEBFBD\r
+:102710000FBECDBFDF91CF911F910F91FF90EF9032\r
+:10272000DF90CF9008950E94AE190E9483190E94F5\r
+:10273000CA190E94D11E0E94251E80E090E00E94CE\r
+:10274000660E80E090E00C947C0E0E949E190C9422\r
+:1027500093130E94CE18292F22952F7030E02C3031\r
+:1027600031054CF42A3031056CF422503109223005\r
+:10277000310590F407C02C30310551F02F30310570\r
+:1027800039F00AC0803E10F0803F31F481E00895B6\r
+:1027900093FB882780F9089580E00895CF93DF9315\r
+:1027A00000D000D01F92CDB7DEB70F900F900F90E2\r
+:1027B0000F900F90DF91CF910895CF93DF9300D0CA\r
+:1027C00000D000D0CDB7DEB726960FB6F894DEBFA6\r
+:1027D0000FBECDBFDF91CF9108951F93CF93DF93AD\r
+:1027E000C091790116E080917A01C81799F0D0E084\r
+:1027F0001C9FF0011D9FF00D1124E558FE4F4081F4\r
+:10280000518162817381848195810E94DD132196BB\r
+:10281000C770E9CFDF91CF911F9108954091AB012F\r
+:102820005091AC016091AD017091AE018091AF010A\r
+:102830009091B0010C94DD13CF938091B0018295FB\r
+:102840008F7009F05FC08091AD01882309F45AC0F0\r
+:1028500020917901A0917A016091AB017091AC0156\r
+:102860008091AE019091AF0131E06F3F09F030E00F\r
+:10287000B32FC6E02A1709F445C0009721F07F3F27\r
+:1028800021F44B2F03C041E001C040E030E040FDA7\r
+:1028900035C0C29FF001C39FF00D1124E558FE4FD3\r
+:1028A000418174132BC04081641328C042814111BF\r
+:1028B00025C0438154814817590710F441505109EC\r
+:1028C000481B590B483C5105C8F48091B0018F70EA\r
+:1028D00080618093B00186E0829FF001839FF00DBC\r
+:1028E0001124E058FE4F80818F70806180838BEAD5\r
+:1028F00091E00E949110CF910C94ED132F5F3F4F08\r
+:102900002770B8CFCF910895CF92DF92EF92FF92C8\r
+:102910000F931F93CF93DF93CDB7DEB762970FB6B8\r
+:10292000F894DEBF0FBECDBF8C0185E0F801DE015B\r
+:102930001D9601900D928A95E1F7D8014C91119660\r
+:102940005C91119712966C9112971396ED90FC90F2\r
+:1029500014977091AB01E091AC012091AE013091E0\r
+:10296000AF012115310531F0EF3F31F481E07F3FB8\r
+:1029700019F403C081E001C080E0B82FB170CB2E04\r
+:1029800080FD6CC1D090AD01DD2009F4F5C0F0915F\r
+:10299000B001E216F30638F0C701821B930B883CA6\r
+:1029A000910548F09BC0209530952E0D3F1D283C89\r
+:1029B000310508F093C08F2F807F09F052C0E513D6\r
+:1029C00014C0741312C0D62E61110FC0FF70F061D5\r
+:1029D000F093B0010E940E148BEA91E00E949110D6\r
+:1029E0008091B001F80185836CC1EF2831F05F3F21\r
+:1029F00031F481E04F3F19F403C081E001C080E071\r
+:102A000080FD03C081E0862701C080E0F82FF170CF\r
+:102A1000FF2E80FF1CC08091790120917A0136E061\r
+:102A2000821709F428C190E0389FF001399FF00D1A\r
+:102A30001124E558FE4F7181571306C0708147136A\r
+:102A400003C07281671303C001968770E9CFD62E49\r
+:102A5000662309F436C18091B00181608093B00192\r
+:102A600053C0E51308C0741306C0611104C0D80137\r
+:102A70001596FC93AEC04D875E878D859E856A8BCB\r
+:102A80000E94A9136A89882329F1D62E662311F1A1\r
+:102A90002091B001822F82958F7090E002970CF404\r
+:102AA00060C08091AB019091AC0198878F831986AB\r
+:102AB000FB86EA862C87CE01079651C0E51731F1D7\r
+:102AC0004D875E878D859E856A8B0E94A9136A89D2\r
+:102AD00081112EC0C8010E949110A4C08F2F807F49\r
+:102AE00069F77E2DF98AE88A89890E94CE138BEADC\r
+:102AF00091E00E949110EBEAF1E086E0DF011D9287\r
+:102B00008A95E9F70E940E14D12CDBC07413D8CF3C\r
+:102B10006111D6CFD8011596FC93C8010E9491107F\r
+:102B2000EBEAF1E086E0DF011D928A95E9F7C9C082\r
+:102B3000D62E662379F22091B001822F82958F7074\r
+:102B400090E0029774F08091AB019091AC019A8370\r
+:102B500089831B82FD82EC822E83CE0101960E9426\r
+:102B6000911086E0F801ABEAB1E001900D928A95F0\r
+:102B7000E1F70E941C146FC0E216F30628F0C701AB\r
+:102B8000821B930B9C0104C0209530952E0D3F1D98\r
+:102B9000283C310508F052C0D62E662309F49ACF9E\r
+:102BA000E5132CC074132AC08091B00180FD1DC0B4\r
+:102BB000982F92959F70C9F0D80115968C93159710\r
+:102BC0009F3039F09F5F9295907F8F70892B15967B\r
+:102BD0008C93C8010E94911086E0F801ABEAB1E045\r
+:102BE00001900D928A95E1F736C086E0F801ABEAD4\r
+:102BF000B1E001900D928A95E1F763C04D875E8741\r
+:102C00008D859E850E94A913882379F086E0F801BE\r
+:102C1000ABEAB1E001900D928A95E1F70E941C1495\r
+:102C20000E940E14DD24D3944CC08091B0018160C9\r
+:102C30008093B001C8010E94911043C07E2DF98A93\r
+:102C4000E88A89890E94CE13EBEAF1E086E0DF0191\r
+:102C50001D928A95E9F70E940E1433C0662309F489\r
+:102C600039CF4D875E878D859E850E94A913882365\r
+:102C700009F430CFCBCF4D875E878D859E850E942E\r
+:102C8000CE18292F22952F7030E0223031052CF4F8\r
+:102C90009F7041F0811106C00CC0243031052CF426\r
+:102CA0009F7049F4805E883020F0C8010E94911026\r
+:102CB000CF2CDC2C06C0D80115969C91907F91F703\r
+:102CC000F8CF8D2D62960FB6F894DEBF0FBECDBF44\r
+:102CD000DF91CF911F910F91FF90EF90DF90CF90F8\r
+:102CE00008951F93CF93DF93CDB7DEB72C970FB620\r
+:102CF000F894DEBF0FBECDBF4F83588769877A87B0\r
+:102D00008B879C87CE0107960E9484148823C1F08C\r
+:102D10002F8138858A859B85892B31F03F3F11F0C3\r
+:102D200080E003C02F3FE1F781E0811147C04F8170\r
+:102D3000588569857A858B859C850E94DD133EC008\r
+:102D400086E0FE013796DE01119601900D928A957C\r
+:102D5000E1F7FF81E8854A855B854115510531F032\r
+:102D6000EF3F31F481E0FF3F19F403C081E001C07F\r
+:102D700080E080FD23C020917A0130E0C9010196F6\r
+:102D8000877099276091790170E086179707F1F1B4\r
+:102D9000F983EA835D834C8396E0929FD001939FF1\r
+:102DA000B00D1124A558BE4FFE01319601900D9231\r
+:102DB0009A95E1F780937A010E94ED1316E08091D5\r
+:102DC000790190917A01891779F1189FC001112436\r
+:102DD00085589E4F0E948414882331F1E091790137\r
+:102DE0001E9FF0011124E558FE4F40815181628100\r
+:102DF0007381848195810E94DD138091790190E037\r
+:102E000001968770992780937901D9CF0E94A513E5\r
+:102E100010927A0110927901EBEAF1E086E0DF018D\r
+:102E20001D928A95E9F7CACF2C960FB6F894DEBFAB\r
+:102E30000FBECDBFDF91CF911F910895EF92FF920A\r
+:102E40000F931F93CF93DF939C01009709F471C0F8\r
+:102E5000F12CEE24E394E9012196F9018491843761\r
+:102E600040F4843008F056C0813081F0823021F186\r
+:102E700060C0853709F449C0C0F19CE7980F9037CE\r
+:102E800008F057C08F770E94341046C089010E5F4A\r
+:102E90001F4FFE01849190E2980F983050F4877094\r
+:102EA000FE2D01C0FF0F8A95EAF78F2F0E94A1190E\r
+:102EB00015C00E946C0F14C089010E5F1F4FFE01E8\r
+:102EC000849190E2980F983068F48770FE2D01C0CD\r
+:102ED000FF0F8A95EAF78F2F0E94A7190E94CA193F\r
+:102EE000E8011AC00E943410FBCF2E5F3F4FFE0155\r
+:102EF000C491CC2341F08FE99FE00197F1F700C026\r
+:102F00000000C150F6CFE90107C0FE01F490E901CD\r
+:102F1000229602C00E946C0F8F2D882341F0EFE9AA\r
+:102F2000FFE03197F1F700C000008150F6CF9E011D\r
+:102F300092CFDF91CF911F910F91FF90EF90089565\r
+:102F400008956093B5017093B6018093B701909393\r
+:102F5000B8010C9493130F931F930091B501109136\r
+:102F6000B6012091B7013091B801062B172B282B01\r
+:102F7000392B0093B5011093B6012093B70130931C\r
+:102F8000B8011F910F910C9493130F931F9300910D\r
+:102F9000B5011091B6012091B7013091B801062317\r
+:102FA0001723282339230093B5011093B6012093EA\r
+:102FB000B7013093B8011F910F910C9493130F93A5\r
+:102FC0001F930091B5011091B6012091B701309186\r
+:102FD000B80106271727282739270093B501109332\r
+:102FE000B6012093B7013093B8011F910F910C9453\r
+:102FF00093131092B1011092B2011092B30110928A\r
+:10300000B4010C94931341E050E060E070E004C020\r
+:10301000440F551F661F771F8A95D2F74093B10161\r
+:103020005093B2016093B3017093B4010C94931365\r
+:1030300041E050E060E070E004C0440F551F661F9F\r
+:10304000771F8A95D2F78091B1019091B201A0913A\r
+:10305000B301B091B401842B952BA62BB72B809391\r
+:10306000B1019093B201A093B301B093B4010C9459\r
+:10307000931341E050E060E070E004C0440F551F3E\r
+:10308000661F771F8A95D2F7409550956095709589\r
+:103090008091B1019091B201A091B301B091B401BE\r
+:1030A00084239523A623B7238093B1019093B20183\r
+:1030B000A093B301B093B4010C94931341E050E09A\r
+:1030C00060E070E004C0440F551F661F771F8A95AB\r
+:1030D000D2F78091B1019091B201A091B301B0916A\r
+:1030E000B40184279527A627B7278093B101909331\r
+:1030F000B201A093B301B093B4010C9493130F9356\r
+:103100001F930091B1011091B2012091B301309150\r
+:10311000B401062B172B282B392B0093B1011093E8\r
+:10312000B2012093B3013093B4011F910F910C941D\r
+:1031300093130F931F930091B1011091B20120914D\r
+:10314000B3013091B40106231723282339230093B8\r
+:10315000B1011093B2012093B3013093B4011F91D8\r
+:103160000F910C9493130F931F930091B101109141\r
+:10317000B2012091B3013091B40106271727282707\r
+:1031800039270093B1011093B2012093B30130931A\r
+:10319000B4011F910F910C9493130895CF92DF9275\r
+:1031A000EF92FF920F931F93CF93DF93EC01C090A8\r
+:1031B000B501D090B601E090B701F090B8018091D0\r
+:1031C000B1019091B201A091B301B091B401C82AAC\r
+:1031D000D92AEA2AFB2A0FE110E0B701A601002E46\r
+:1031E00004C076956795579547950A94D2F740FFA6\r
+:1031F00007C0BE01802F0E9410068130910539F46E\r
+:103200000150110950F7BE0180E00E941006DF91C5\r
+:10321000CF911F910F91FF90EF90DF90CF90089585\r
+:1032200090910C019923D9F090910D019923B9F057\r
+:10323000982F9695969596959F3088F5E0910E017A\r
+:10324000F0910F01E90FF11D877021E030E001C01E\r
+:10325000220F8A95EAF78181822B8183089540911C\r
+:103260000E0150910F0120E030E09FEFFA01E20FD4\r
+:10327000F31F6281681799F09F3F19F4611101C033\r
+:10328000922F2F5F3F4F2E30310581F79F3F39F04E\r
+:10329000FA01E90FF11D97FDFA95828308950895CB\r
+:1032A00090910C019923E1F090910D019923C1F0C7\r
+:1032B000982F9695969596959F3020F5E0910E0162\r
+:1032C000F0910F01E90FF11D877021E030E001C09E\r
+:1032D000220F8A95EAF7209581812823218308957A\r
+:1032E00040910E0150910F0120E030E0FA01E20F11\r
+:1032F000F31F9281981301C012822F5F3F4F2E302F\r
+:103300003105A1F7089581E090E0E0910E01F09180\r
+:103310000F01E80FF91F1082019680319105A9F77E\r
+:1033200008959091CB01982B9093CB0108958095AF\r
+:103330009091CB0198239093CB0108951092CB01EB\r
+:1033400008959091CA01982B9093CA010895809591\r
+:103350009091CA0198239093CA0108951092CA01CE\r
+:1033600008958093B90108951092B901089540918C\r
+:103370000E0150910F0120E030E080E0FA01E20FF1\r
+:10338000F31F918191118F5F2F5F3F4F2F303105D8\r
+:10339000A9F70895E0910E01F0910F018091CB0102\r
+:1033A0008083E0910E01F0910F0180819091CA011C\r
+:1033B000892B80839091B901992361F0E0910E01EE\r
+:1033C000F0910F018081892B80830E94B7198111B0\r
+:1033D0001092B90180910E0190910F010C94500E42\r
+:1033E000CF92DF92EF92FF920F931F936C01EE2426\r
+:1033F000FF24C114D104E104F10421F46B017C0128\r
+:1034000080E001C080E133272F2D1E2D0D2D0115E9\r
+:1034100011052105310519F0885F680179019701CF\r
+:103420008601A4E03695279517950795AA95D1F7BB\r
+:10343000011511052105310519F08C5F680179012D\r
+:1034400097018601F2E03695279517950795FA952D\r
+:10345000D1F7011511052105310519F08E5F6801BD\r
+:103460007901B701A6017695679557954795452B44\r
+:10347000462B472B09F08F5F1F910F91FF90EF9024\r
+:10348000DF90CF9008958091E501843009F110928A\r
+:10349000CD0120E488E190E00FB6F894A8958093E0\r
+:1034A00060000FBE2093600083B7817F846083BF7C\r
+:1034B00083B7816083BF7894889583B78E7F83BFFD\r
+:1034C00088E10FB6F89480936000109260000FBE00\r
+:1034D000089508950895CF930E94691A0E943604B2\r
+:1034E0000E946A1AC0E08C2F0E942705811105C036\r
+:1034F000CF5FCE30C1F780E001C081E0CF91089569\r
+:103500000E94A5130E94440E0C944A0782E084BDD9\r
+:1035100093E095BD9AEF97BD80936E0008952FB705\r
+:10352000F8948091CE019091CF01A091D001B091FB\r
+:10353000D1012FBF0895CF92DF92EF92FF920F93A8\r
+:103540001F932FB7F8944091CE015091CF01609115\r
+:10355000D0017091D1012FBF6A017B01EE24FF24BD\r
+:103560008C0120E030E0C016D106E206F30610F42C\r
+:1035700041505109481B590BCA011F910F91FF90EF\r
+:10358000EF90DF90CF9008951F920F920FB60F9299\r
+:1035900011248F939F93AF93BF938091CE0190910D\r
+:1035A000CF01A091D001B091D1010196A11DB11D13\r
+:1035B0008093CE019093CF01A093D001B093D1011D\r
+:1035C000BF91AF919F918F910F900FBE0F901F9061\r
+:1035D00018950E944A0BF8942FEF87EA91E6215044\r
+:1035E00080409040E1F700C0000087E090EBDC01F4\r
+:1035F0008093EE019093EF01A093F001B093F1015D\r
+:103600002CE088E190E00FB6F894A89580936000D4\r
+:103610000FBE20936000FFCFEF92FF920F931F9396\r
+:10362000CF93DF93E82EF12C8F2D0E942705C0E069\r
+:10363000D0E0082F10E098010C2E02C03595279598\r
+:103640000A94E2F720FD05C02196C630D10599F70E\r
+:1036500009C06C2F7F2D80E00E94EE05E812F4CFA8\r
+:1036600081E005C0F3948EE0F812DECF80E0DF91B8\r
+:10367000CF911F910F91FF90EF900895CF93C82F96\r
+:103680008CE20E940C1B882321F08C2FCF910C948C\r
+:103690000C1B80E0CF910895CF930E94911C811163\r
+:1036A00002C00E94771CC5E6C15049F00E94360452\r
+:1036B0008FE39CE90197F1F700C00000F5CF89E2A4\r
+:1036C0000E943E1B811111C18AE20E943E1B8111A2\r
+:1036D0000E94771C85E00E943E1B81110E94E91A1E\r
+:1036E0000E949C1C8093CC0187E00E943E1B882393\r
+:1036F00099F18BE10E943E1B882351F09091CC01FF\r
+:1037000091FB882780F921E0822780FB91F922C074\r
+:103710008EE00E943E1B882351F09091CC0192FBD9\r
+:10372000882780F921E0822780FB92F913C080E18D\r
+:103730000E943E1B9091CC01882341F093FB882787\r
+:1037400080F921E0822780FB93F904C0892F8095BE\r
+:1037500080FB90F99093CC018091CC010E94A01C39\r
+:103760000E94AE1C8093DF0180EE0E943E1B8823E6\r
+:1037700041F08091DF01982F909590FB80F9809324\r
+:10378000DF0189E30E943E1B882359F09091DF01FD\r
+:1037900091FB882780F921E0822780FB91F99093A3\r
+:1037A000DF0182EE0E943E1B882359F09091DF01D9\r
+:1037B00092FB882780F921E0822780FB92F9909381\r
+:1037C000DF0186EE0E943E1B882359F09091DF01B5\r
+:1037D00093FB882780F921E0822780FB93F990935F\r
+:1037E000DF0183EE0E943E1B882359F09091DF0198\r
+:1037F00094FB882780F921E0822780FB94F990933D\r
+:10380000DF0185E30E943E1B882359F09091DF0180\r
+:1038100095FB882780F921E0822780FB95F990931A\r
+:10382000DF0181E30E943E1B882359F09091DF0164\r
+:1038300096FB882780F921E0822780FB96F99093F8\r
+:10384000DF0181E10E943E1B882359F09091DF0146\r
+:1038500097FB882780F921E0822780FB97F99093D6\r
+:10386000DF018091DF010E94B21C8091DF0187FBA4\r
+:10387000882780F980930D0187E20E943E1BC82FA4\r
+:103880008EE10E943E1B8111C2608FE10E943E1BAF\r
+:103890008111C46080E20E943E1B8111C86081E2F8\r
+:1038A0000E943E1B8111C06182E20E943E1B811179\r
+:1038B000C06283E20E943E1B8111C06484E20E94C8\r
+:1038C0003E1B882311F0C06802C0CC2329F08C2F46\r
+:1038D0000E94A91C6C2F03C00E94A51C682F70E0D9\r
+:1038E00080E090E0CF910C94A117CF9108956DEEF8\r
+:1038F0007EEF80E090E00E94CD2260E082E090E0E8\r
+:103900000E94BF2260E083E090E00E94BF2260E05E\r
+:1039100084E090E00E94BF2260E085E090E00C949B\r
+:10392000BF2280E090E00E94B92221E08D3E9E4FB0\r
+:1039300009F020E0822F089582E090E00C94B122FB\r
+:10394000682F82E090E00C94BF2283E090E00C941A\r
+:10395000B122682F83E090E00C94BF2284E090E0D5\r
+:103960000C94B122682F84E090E00C94BF228091E7\r
+:10397000D40180FF0BC06091130185E0689FB00106\r
+:10398000112475956795759567952AC081FF09C0C3\r
+:103990006091130185E0689FB001112475956795CA\r
+:1039A0001FC082FF07C06091130185E0689FB001CE\r
+:1039B000112416C04091D5014423C9F06091120131\r
+:1039C000461788F72091130185E0289F9001112464\r
+:1039D000429FC001439F900D112470E00E948322FA\r
+:1039E0006038710540F46115710539F002C065E079\r
+:1039F00070E0862F08958FE7089581E00895809103\r
+:103A0000D40180FF08C06091110170E07595679541\r
+:103A10007595679521C081FF06C06091110170E026\r
+:103A20007595679519C082FF04C06091110170E01F\r
+:103A300010C08091D5018823C1F0609110018617D4\r
+:103A4000A0F790911101989FC001112470E00E948D\r
+:103A500083226038710528F46115710521F0862FE5\r
+:103A600008958FE7089581E0089561E070E0F4CF54\r
+:103A7000803F21F40E94B71C819504C0813F29F446\r
+:103A80000E94B71C8093D8010895823F21F40E94C0\r
+:103A9000B71C819504C0833F29F40E94B71C809312\r
+:103AA000D7010895893F19F40E94FF1C05C08A3F81\r
+:103AB00031F40E94FF1C81958093D90108958B3FBA\r
+:103AC00021F40E94FF1C819504C08C3F29F40E94C0\r
+:103AD000FF1C8093DA010895843F21F48091D60180\r
+:103AE000816017C0853F21F48091D601826011C0AA\r
+:103AF000863F21F48091D60184600BC0873F21F47A\r
+:103B00008091D601886005C0883F31F48091D6014C\r
+:103B100080618093D60108958D3F21F48091D40176\r
+:103B200081600BC08E3F21F48091D401826005C07A\r
+:103B30008F3F29F48091D40184608093D40108954B\r
+:103B4000803F39F48091D80187FF6CC01092D80172\r
+:103B500069C0813F29F48091D8011816BCF362C076\r
+:103B60009091D701823F29F497FF5CC01092D70152\r
+:103B700059C0833F19F41916CCF354C0893F41F45E\r
+:103B80008091D90118160CF04DC01092D9014AC08D\r
+:103B90008A3F29F48091D90187FF44C0F6CF8B3F3B\r
+:103BA00039F48091DA0187FF3DC01092DA013AC002\r
+:103BB0008C3F29F48091DA011816BCF333C0843F9E\r
+:103BC00021F48091D6018E7F17C0853F21F480912A\r
+:103BD000D6018D7F11C0863F21F48091D6018B7F65\r
+:103BE0000BC0873F21F48091D601877F05C0883FB5\r
+:103BF00031F48091D6018F7E8093D60113C08D3F22\r
+:103C000021F48091D4018E7F0BC08E3F21F48091EE\r
+:103C1000D4018D7F05C08F3F29F48091D4018B7F23\r
+:103C20008093D4018091D70181110EC08091D80179\r
+:103C300081110AC08091D901811106C08091DA01F9\r
+:103C4000811102C01092D501089586ED91E00E9485\r
+:103C50005B0E0E948F1A9093D3018093D201089536\r
+:103C60001F93CF93DF938091D2019091D3010E9453\r
+:103C70009B1A4091D501442321F02091140130E09A\r
+:103C800006C0209115015AE0259F9001112482174A\r
+:103C9000930708F482C08091D7011091D801D09188\r
+:103CA000D901C091DA01811107C0111105C0D111EC\r
+:103CB00003C0CC2309F471C04F3F19F04F5F40930C\r
+:103CC000D501181624F40E94B71C8093D701809167\r
+:103CD000D70187FF05C00E94B71C81958093D7014B\r
+:103CE000111624F40E94B71C8093D8018091D8014A\r
+:103CF00087FF05C00E94B71C81958093D801609111\r
+:103D0000D701662339F11091D801112319F17727D2\r
+:103D100067FD7095872F972F0E94942123E333E34B\r
+:103D200043E35FE30E94F8210E9461216093D70181\r
+:103D3000612F772767FD7095872F972F0E94942119\r
+:103D400023E333E343E35FE30E94F8210E94612110\r
+:103D50006093D8011D1624F40E94FF1C8093D901A2\r
+:103D60008091D90187FF05C00E94FF1C8195809337\r
+:103D7000D9011C1624F40E94FF1C8093DA01809163\r
+:103D8000DA0187FF05C00E94FF1C81958093DA014C\r
+:103D9000DF91CF911F910C94251EDF91CF911F9140\r
+:103DA0000895E6EDF1E085E0DF011D928A95E9F7DF\r
+:103DB0001092D5011092D4010895833081F128F436\r
+:103DC000813059F08230D1F00895853009F449C02E\r
+:103DD000B8F1863009F456C0089520911501862F58\r
+:103DE00090E0820F911D8F3F910520F4620F609348\r
+:103DF000150108958FEF8093150108952091140106\r
+:103E0000862F90E0820F911D8F3F910520F4620F65\r
+:103E10006093140108958FEF809314010895209109\r
+:103E20001301862F90E0820F911D8F3F910520F4A2\r
+:103E3000620F6093130108958FEF8093130108952B\r
+:103E400020911201862F90E0820F911D8F3F9105E6\r
+:103E500020F4620F6093120108958FEF8093120196\r
+:103E6000089520911101862F90E0820F911D8F3FC0\r
+:103E7000910520F4620F6093110108958FEF8093F4\r
+:103E80001101089520911001862F90E0820F911D5D\r
+:103E90008F3F910520F4620F6093100108958FEF1A\r
+:103EA000809310010895833011F128F4813049F096\r
+:103EB000823091F00895853081F120F18630C1F192\r
+:103EC000089580911501681720F4861B80931501D1\r
+:103ED000089510921501089580911401681720F437\r
+:103EE000861B809314010895109214010895809107\r
+:103EF0001301681720F4861B809313010895109214\r
+:103F00001301089580911201681720F4861B809395\r
+:103F100012010895109212010895809111016817FD\r
+:103F200020F4861B809311010895109211010895C9\r
+:103F300080911001681720F4861B8093100108956A\r
+:103F40001092100108958D3109F442C020F58E3091\r
+:103F500009F479C070F4873009F45EC020F486302B\r
+:103F600009F442C033C08830D1F18B3009F4A7C0C6\r
+:103F70002DC0863109F4A3C038F4803109F46DC036\r
+:103F8000813109F47BC022C0893109F498C08B319A\r
+:103F900009F44FC01BC0853309F479C048F4873257\r
+:103FA00009F475C008F478C0893209F470C00EC0F5\r
+:103FB000833438F48A3308F071C0883309F47FC041\r
+:103FC00005C0833409F463C08834C1F080E00895EB\r
+:103FD0000E941B210E94440E0E944A0770C00E944A\r
+:103FE0009C1C0E94AE1C6BC08091CC01817F8E7F97\r
+:103FF0008093CC0181E08093DC0108950E94A51399\r
+:104000002FEF83ED90E3215080409040E1F700C016\r
+:1040100000000E94E91A53C09091CC01892F817051\r
+:1040200090FF03C0917F9E7F26C091609093CC014A\r
+:1040300046C09091CC0191FB882780F921E082272E\r
+:1040400080FB91F913C09091CC0192FB882780F9F5\r
+:1040500021E0822780FB92F909C09091CC0193FB6B\r
+:10406000882780F921E0822780FB93F99093CC0187\r
+:10407000882329F191609093CC0108950E94A513A3\r
+:1040800080910D0191E0892780930D0118C061E0B6\r
+:1040900070E080E090E00FC023EE01C027EC280F15\r
+:1040A00061E070E080E090E004C0660F771F881F39\r
+:1040B000991F2A95D2F70E94A1170E94A51381E0AB\r
+:1040C000089580E0089580E00895CF93C82F8091EF\r
+:1040D000DC01813079F018F08230D1F184C0A091F8\r
+:1040E0000E01B0910F018C91813169F0823209F09B\r
+:1040F0007CC009C0A0910E01B0910F018C9181315B\r
+:1041000011F0823249F48C2F0E94612081111DC070\r
+:104110008C2F0E94A31F1AC08C2F0E946320811134\r
+:1041200014C0C43179F048F4CB3079F0C03109F0D3\r
+:1041300060C082E08093DC0108C0C93219F0C83346\r
+:1041400021F057C01092DC0154C081E0817053C04F\r
+:10415000C93289F118F5C43171F1A8F4C73009F0FA\r
+:1041600046C08AE08093150194E19093140193E096\r
+:10417000909313018093120188E08093110188E2EB\r
+:104180008093100134C0CE51C63088F5EC2FF0E09A\r
+:10419000E65DFE4F80818093DB0129C0CE34E9F0DB\r
+:1041A00020F4CB3421F56AE013C0C13579F0C23573\r
+:1041B000F1F461E00DC08091DB01882319F01092C9\r
+:1041C000DB0115C081E08093DC0115C061E006C011\r
+:1041D0008091DB010E94DD1E0AC06AE08091DB0154\r
+:1041E0000E94531F04C01092DC0180E004C081E0F3\r
+:1041F00002C080E0ABCFCF910895E1E8F0E080818C\r
+:10420000886080838081816080838FB7F89493E099\r
+:104210009093890090ED909388008FBF0895EFE60A\r
+:10422000F0E08081826080830895EFE6F0E0808195\r
+:104230008D7F80830895EFE6F0E0808192E089270A\r
+:10424000808308951F920F920FB60F9211242F931F\r
+:104250003F934F935F936F937F938F939F93AF930E\r
+:10426000BF93EF93FF938091DD019091DE01019662\r
+:104270009093DE018093DD01811103C082E00E94F2\r
+:104280004A07E091DE01E695E695F0E0E657FB4F40\r
+:10429000E4918091DD018E1303C080E00E944A0703\r
+:1042A000FF91EF91BF91AF919F918F917F916F910E\r
+:1042B0005F914F913F912F910F900FBE0F901F90E4\r
+:1042C000189504D06894B1118DC0089570D088F00D\r
+:1042D0009F5790F0B92F9927B751A0F0D1F0660FF2\r
+:1042E000771F881F991F1AF0BA95C9F712C0B1300D\r
+:1042F00081F077D0B1E0089574C0672F782F8827B8\r
+:10430000B85F39F0B93FCCF3869577956795B3954B\r
+:10431000D9F73EF490958095709561957F4F8F4FBA\r
+:104320009F4F0895E89409C097FB3EF490958095BF\r
+:10433000709561957F4F8F4F9F4F9923A9F0F92F6B\r
+:1043400096E9BB279395F695879577956795B795E9\r
+:10435000F111F8CFFAF4BB0F11F460FF1BC06F5FCF\r
+:104360007F4F8F4F9F4F16C0882311F096E911C0E1\r
+:10437000772321F09EE8872F762F05C0662371F002\r
+:1043800096E8862F70E060E02AF09A95660F771F16\r
+:10439000881FDAF7880F9695879597F9089557FD46\r
+:1043A0009058440F551F59F05F3F71F04795880FA3\r
+:1043B00097FB991F61F09F3F79F08795089512163A\r
+:1043C00013061406551FF2CF4695F1DF08C01616E6\r
+:1043D00017061806991FF1CF869571056105089497\r
+:1043E0000895E894BB2766277727CB0197F90895AE\r
+:1043F0000BD078C069D028F06ED018F0952309F062\r
+:104400005AC05FC01124EECFCADFA0F3959FD1F34D\r
+:10441000950F50E0551F629FF001729FBB27F00D72\r
+:10442000B11D639FAA27F00DB11DAA1F649F6627C7\r
+:10443000B00DA11D661F829F2227B00DA11D621F16\r
+:10444000739FB00DA11D621F839FA00D611D221FD0\r
+:10445000749F3327A00D611D231F849F600D211DB4\r
+:10446000822F762F6A2F11249F5750408AF0E1F057\r
+:1044700088234AF0EE0FFF1FBB1F661F771F881FA0\r
+:1044800091505040A9F79E3F510570F014C0AACF3B\r
+:104490005F3FECF3983EDCF3869577956795B7958B\r
+:1044A000F795E7959F5FC1F7FE2B880F911D9695B5\r
+:1044B000879597F9089597F99F6780E870E060E025\r
+:1044C00008959FEF80EC089500240A9416161706AD\r
+:1044D00018060906089500240A94121613061406F5\r
+:1044E00005060895092E0394000C11F4882352F058\r
+:1044F000BB0F40F4BF2B11F460FF04C06F5F7F4F10\r
+:104500008F4F9F4F089597FB072E16F4009407D006\r
+:1045100077FD09D00E949D2207FC05D03EF49095BE\r
+:1045200081959F4F0895709561957F4F0895EE0F87\r
+:10453000FF1F0590F491E02D0994AA1BBB1B51E1CC\r
+:1045400007C0AA1FBB1FA617B70710F0A61BB70B03\r
+:10455000881F991F5A95A9F780959095BC01CD01A8\r
+:104560000895F999FECF92BD81BDF89A992780B53B\r
+:104570000895A8E1B0E042E050E00C94D422262F48\r
+:10458000F999FECF1FBA92BD81BD20BD0FB6F89438\r
+:10459000FA9AF99A0FBE019608950E94BF22272F1A\r
+:1045A0000C94C022DC01CB01FC01F999FECF06C0BE\r
+:1045B000F2BDE1BDF89A319600B40D9241505040E1\r
+:0845C000B8F70895F894FFCF4D\r
+:1045C80020024B07D807B50781074E070101BA013A\r
+:1045D80028080A03140A3F4D36394B04FE03C80362\r
+:1045E8008F0322033B0354036D03010203040506F2\r
+:0445F80007080900A7\r
+:00000001FF\r
--- /dev/null
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | ← | | → | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | ⌦ | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | ⌫ | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' / L⌘ |
+ * |--------+------+------+------+------+------| L⌘ | | L⌘ |------+------+------+------+------+--------|
+ * | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / / ⌃| R⇧ |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | L⌃ | L⌥ | L⌘ | ← | → | | ↑ | ↓ | [ | ] | ~L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,---------------.
+ * | `~ | '" | | ⎋ | ⌫ |
+ * ,------|------|------| |------+--------+------.
+ * | | | PgUp | | PgDn | | |
+ * | | ⌫ |------| |------| ⇥ |Enter |
+ * | | | L⌥ | | L⌃ | | |
+ * `--------------------' `----------------------'
+ */
+// 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
+ KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
+ KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI,
+ KC_LCTL, KC_LALT, KC_LGUI,KC_LEFT,KC_RGHT,
+ KC_GRV, KC_QUOT,
+ KC_PGUP,
+ KC_SPC,KC_BSPC,KC_LALT,
+ // right hand
+ KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
+ KC_LGUI, KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
+ KC_ESC, KC_BSPC,
+ KC_PGDN,
+ KC_LCTL, KC_TAB, KC_ENT
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | / | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | = | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | 0 | . | ← | → | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | Home | | |
+ * | | |------| |------| | |
+ * | | | | | End | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_MINS, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_EQL, KC_TRNS,
+ KC_0, KC_DOT, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_HOME,
+ KC_END , KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F14 | F15 | | | | | | ⌘Q | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | ⏯ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | |L⇧+Spc| Spc | ⏮ | ⏭ | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | |VolUp |VolDn | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_F14 , KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, /* F14 dims screen, F15 brightens */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ // right hand
+ LGUI(KC_Q), LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR,
+ KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS,
+ LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY,
+ KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ 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) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
--- /dev/null
+# The Zweihander Layout
+
+NB: the backtick (\`) is special in Markdown. If I write ⌘\` in this readme, I mean “command-backtick”, not “command-backslash-backtick”.
+
+This layout is tuned for people who…
+
+
+## use OS X
+
+This layout doesn’t make any concessions for Windows use. While it should work fine in Windows, I’m not about to devote precious keyboard space to Windows-specific shortcuts.
+
+
+## mouse left-handed while doing other things with the right hand
+
+I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder:
+
+- Close Window (⌘W)
+- Back (⌘[)
+- Forward (⌘])
+- Open and Close Parent Folder (⌥⌘↓)
+- Go Up and Close Just-Left Folder (⌥⌘↑)
+- Cycle through open windows in current application (⌘\` and ⌘⇧\`)
+- Cycle through tabs in current window (⌥⇥ and ⌥⇧⇥)
+- Space (page down in browsers; Quick Look in the Finder)
+- Shift-Space (page up in web browsers)
+
+Because moving letter-by-letter is way slower than moving word-by-word, I added Option (⌥) to the bottommost button on the left side. This key can be held easily while holding ; (activate media layer) and pressing J and L to move left and right by word.
+
+
+## use lots of modifier keys in OS X menu-item shortcuts
+
+I wanted to preserve the feel of a number of shortcuts that involve pressing lots of modifier keys at once; this is why the bottom left of the keyboard has shift, control, option, and command in the usual spaces. Further, some common shortcuts I press have a key on the right side of the keyboard. These shortcuts include:
+
+- Empty Trash Without Asking for Confirmation (⇧⌥⌘⌫)
+- Shut Down Without Asking for Confirmation (⇧⌥⌘ power)
+
+
+## use Emacs-style shortcuts
+
+I press C-a, C-e, and C-k all the time. It’s difficult to press these key combinations with the control key on the bottom left and I’m too quick on the draw for the control function on the / key to work reliably, so the bottommost thumb button on the right side is another control key.
+
+
+## use spreadsheets
+
+All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer.
--- /dev/null
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94720C0C94440D2B\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C940E220C94A9020C94A902FF\r
+:100050000C94A9020C949D1B0C94A9020C94A90267\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902B10DD30DD1\r
+:1000B000C10ED30DC10E180E3B0EC10E900EA30E35\r
+:1000C0008F118F11CC11CC110F124D1266146614C2\r
+:1000D00066126614671367133A1466146614511493\r
+:1000E0000000F0A12E004C002A00E100E00000001A\r
+:1000F0001E00140004001D00E200E2001F001A00B0\r
+:1001000016001B00E3002A0020000800070006007C\r
+:1001100050002C0021001500090019004F004B0071\r
+:10012000220017000A0005000000350050000154AD\r
+:100130000000E300000034004F0001540000E30021\r
+:100140000000290023001C000B00110000002A0001\r
+:10015000240018000D00100052004E0025000C0075\r
+:100160000E00360051002800260012000F00370054\r
+:100170002F002B0027001300338238713000E0007D\r
+:100180002D0031003478E500C100000001000100BD\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00010001003D0030020A\r
+:1001C00027023000010001003E00310235003502F7\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F00380094\r
+:1001F0002D002402000001004000240021001E0008\r
+:1002000027004A004100250022001F00370001009E\r
+:100210004200260023002000500001004300250278\r
+:100220002E022E004F004D00440045000100010049\r
+:1002300001000000010001000100010001000000B8\r
+:100240006900010001000100010001006A000100D5\r
+:100250004A0001000100010001004B004E000100B6\r
+:1002600001000100010001004D000100010001003A\r
+:100270000100010001000100000001000100010077\r
+:10028000000001000000010014080100000001004E\r
+:10029000000001001A0830082F082C02000001009D\r
+:1002A000350A520C50002C00A900010035085200FC\r
+:1002B0005100AC00AA0001002B06510C4F00AB000E\r
+:1002C000A80001002B040100010001000100010051\r
+:1002D000A5000100AE00010001000000160345006A\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A\r
+:1004E0009091EF01A091F001B091F1018730904B14\r
+:1004F000A740B04BB9F41092EE011092EF011092A8\r
+:10050000F0011092F10114BE84B7877F84BF88E1A7\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0EAEAF7E402C0D8\r
+:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
+:1005400001C01D92AE3EB107E1F70E94B6090C94BE\r
+:10055000D3230C94000061110BC0FC01828188231D\r
+:1005600021F085EE0E94231003C085EE0E94EB105F\r
+:1005700080E090E0089508956091B1017091B2011A\r
+:100580008091B3019091B4010E94C91A56985E9867\r
+:1005900025982D9826982E9827982F98813019F015\r
+:1005A000823021F00895259A2D9A0895269A2E9A40\r
+:1005B00008950C94BC0256985E9825982D9826981C\r
+:1005C0002E9827982F988FEF90E090938900809332\r
+:1005D000880090938B0080938A0090938D00809385\r
+:1005E0008C00259A2D9A2FEF80E792E021508040D1\r
+:1005F0009040E1F700C00000269A2E9A2FEF80E786\r
+:1006000092E0215080409040E1F700C00000279A1E\r
+:100610002F9A2FEF80E792E0215080409040E1F741\r
+:1006200000C0000025982D982FEF80E792E0215020\r
+:1006300080409040E1F700C0000026982E982FEFF0\r
+:1006400080E792E0215080409040E1F700C0000038\r
+:1006500027982F9856985E9825982D9826982E982A\r
+:1006600027982F98089589EA8093800089E08093E5\r
+:10067000810024982C983F988AB18F748AB96E981B\r
+:10068000479A8BB1806B8BB9769A0E94DB020C94EF\r
+:10069000BB0280E2809300018091340181110EC081\r
+:1006A0000E94980381E0809334012FEF83ED90E363\r
+:1006B000215080409040E1F700C0000080E40E949B\r
+:1006C0009E038093000181112EC00E94C803809375\r
+:1006D0000001811128C00E94C8038093000181118C\r
+:1006E00022C08FE30E94C8038093000181111BC0C8\r
+:1006F0000E94C00380E40E949E0380930001811148\r
+:1007000012C08CE00E94C8038093000181110BC0CD\r
+:100710000E94C80380930001811105C08FE30E94ED\r
+:10072000C803809300010E94C003809100010895D6\r
+:100730001092B9008AE08093B800089594EA9093EB\r
+:10074000BC009091BC0097FFFCCF9091B900987FBE\r
+:10075000983021F0903111F081E008958093BB0032\r
+:1007600084E88093BC008091BC0087FFFCCF80911F\r
+:10077000B900887F883111F0803471F780E00895E6\r
+:1007800084E98093BC008091BC0084FDFCCF089577\r
+:100790008093BB0084E88093BC008091BC0087FFFD\r
+:1007A000FCCF9091B900987F81E0983209F480E005\r
+:1007B000089584E88093BC008091BC0087FFFCCF43\r
+:1007C0008091BB00089580910001811115C080E4E3\r
+:1007D0000E949E038093000181110CC082E10E945F\r
+:1007E000C80380930001811105C08FEF0E94C803E8\r
+:1007F000809300010E94C00384B1807F84B985B1D9\r
+:10080000807F85B98AB1837F8AB98BB1837F8BB9A9\r
+:100810003E98469808950E944903809300010E94E3\r
+:10082000E30380B38C7080BB81B3836F81BBA6E38D\r
+:10083000B1E0E4E4F1E08EE08E0F11921D928E1390\r
+:10084000FCCF0C943303BF92CF92DF92EF92FF92D2\r
+:100850000F931F93CF93DF9380910001882379F04A\r
+:10086000809135018F5F80933501811108C00E940E\r
+:10087000490380930001811102C00E94DB0206E35C\r
+:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455\r
+:10089000E394F12CC730D10500F58091000181115E\r
+:1008A00064C080E40E949E0380930001811112C005\r
+:1008B00082E10E94C8038093000181110BC0C7012F\r
+:1008C0000C2E01C0880F0A94EAF780950E94C80395\r
+:1008D000809300010E94C00348C0CA30A1F028F4F0\r
+:1008E000C83059F0C93061F005C0CC3089F070F0E3\r
+:1008F000CD3089F0209A289810C0219A29980DC0EF\r
+:10090000229A2A980AC0239A2B9807C0529A01C0AB\r
+:10091000539A5B9802C03E9A469890EA9A95F1F7EE\r
+:100920009FB1799902C082E001C080E091709D255D\r
+:10093000982B7C9902C084E001C080E0892B7D99CE\r
+:1009400002C038E001C030E0832B7E9902C020E174\r
+:1009500001C020E0822B9FB19095991F9927991F84\r
+:100960009295990F907E892B0FC080910001811183\r
+:1009700049C080E40E949E0380930001882379F19E\r
+:10098000B12C0E94C0038B2DF8019081981719F0AB\r
+:100990008083C09201010E94E30321960F5F1F4FE5\r
+:1009A000CE30D10509F076CF80910101882361F125\r
+:1009B000815080930101882339F08FE99FE00197EE\r
+:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC\r
+:1009D000CF01825F91919D938E13FCCF15C083E16F\r
+:1009E0000E94C803809300018111CACF81E40E9454\r
+:1009F0009E03809300018111C3CF0E94D903B82EBA\r
+:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7\r
+:100A1000CF911F910F91FF90EF90DF90CF90BF90FB\r
+:100A20000895E82FF0E0EC5BFE4F80810895089573\r
+:100A3000089596E0799FF001112494E5899FE00DD7\r
+:100A4000F11D1124E60FF11DEE0FFF1FEC51FF4FBA\r
+:100A5000859194910895880F991FFC01E05AF04008\r
+:100A6000859194910895880F991FFC01E052FF4FE2\r
+:100A70008591949108950F931F93CF93DF93EC0189\r
+:100A80008115904350F5C11580E2D80708F0B3C036\r
+:100A9000CB3BD10590F4C83AD10508F05AC0C53A0D\r
+:100AA000D10508F04BC0C430D10508F0BBC1219777\r
+:100AB00009F0B5C101E010E0F5C1CF3FD10511F05B\r
+:100AC00008F0B0C1C03FD10508F092C0CE01805EF1\r
+:100AD0009109089708F4A6C1A2C1C11591E5D907EB\r
+:100AE000A8F4C23020E5D20708F09EC0C11580E509\r
+:100AF000D80709F485C008F091C0C11520E4D207D9\r
+:100B000008F08DC1DD278E01106CCCC1C11580E8C5\r
+:100B1000D80758F4C11590E7D90708F07CC1C11572\r
+:100B200020E6D20708F422C17AC1C11580E9D807AE\r
+:100B300008F075C1DF708E01106AB4C1C53AD105E5\r
+:100B400009F472C1C63AD10509F071C102E810E496\r
+:100B5000A9C1C83AD10509F46DC1C93AD10509F452\r
+:100B60006CC1CA3AD10509F46BC1CB3AD10509F47D\r
+:100B70006AC1CC3AD10509F469C1CD3AD10509F46D\r
+:100B800068C1C03BD10509F467C1CE3AD10509F46B\r
+:100B900066C1CF3AD10509F465C1C13BD10509F45D\r
+:100BA00064C1C23BD10509F463C1C33BD10509F45B\r
+:100BB00062C1C43BD10509F461C1C53BD10509F44B\r
+:100BC00060C1C63BD10509F45FC1C73BD10509F43B\r
+:100BD0005EC1C83BD10509F45DC1C93BD10509F42B\r
+:100BE0005CC1CA3BD10509F45BC100E014E45AC101\r
+:100BF0008E01106557C1CE019F700E94330553C10D\r
+:100C00000E948A149FEF24E38CE0915020408040A2\r
+:100C1000E1F700C000000E94C21B44C18091CD01D9\r
+:100C200081608093CD013EC10E946B1D811102C085\r
+:100C30000E94511D0E94881D90E09093EE018093C8\r
+:100C4000ED01C23090E5D90721F48091ED0181607A\r
+:100C500086C0C43020E5D20721F48091ED01826086\r
+:100C60007EC0C63080E5D80721F48091ED01846014\r
+:100C700076C0C83090E5D90719F48091ED0127C0FE\r
+:100C8000CA3020E5D20721F48091ED01806167C070\r
+:100C9000CC3080E5D80721F48091ED0180625FC0FF\r
+:100CA000CE3090E5D90721F48091ED01806457C0E2\r
+:100CB000C03120E5D20721F48091ED0180684FC05A\r
+:100CC000C23180E5D80729F48091ED018460886005\r
+:100CD00046C0C33090E5D90721F48091ED018E7FA5\r
+:100CE0003EC0C53020E5D20721F48091ED018D7F13\r
+:100CF00036C0C73080E5D80721F48091ED018B7FA5\r
+:100D00002EC0C93090E5D90719F48091ED0126C0B5\r
+:100D1000CB3020E5D20721F48091ED018F7E1FC0FA\r
+:100D2000CD3080E5D80721F48091ED018F7D17C08B\r
+:100D3000CF3090E5D90721F48091ED018F7B0FC072\r
+:100D4000C13120E5D20721F48091ED018F7707C0F2\r
+:100D5000C331D04531F48091ED018B7F877F809343\r
+:100D6000ED018091ED010E948C1D9CC08D2F992773\r
+:100D70008F70992781309105D9F49E012370332714\r
+:100D800002C0880F991F2A95E2F79C688E0144E003\r
+:100D9000000F111F4A95E1F700271370802B912B4C\r
+:100DA00053E0CC0FDD1F5A95E1F7C076DD272FC049\r
+:100DB0008230910531F4DC2FCC278E01016F106A4F\r
+:100DC00071C08330910569F4CE018370992701E0E9\r
+:100DD00010E002C0000F111F8A95E2F7C8019C685D\r
+:100DE0000FC0049709F05EC0CE018370992701E01F\r
+:100DF00010E002C0000F111F8A95E2F7C8019A683F\r
+:100E000023E0CC0FDD1F2A95E1F7C07ED7708C015F\r
+:100E10000C2B1D2B47C0DF708E01106243C000E019\r
+:100E200010E040C08E013EC001E810E43BC003E882\r
+:100E300010E438C002EE14E435C009EE14E432C008\r
+:100E40000AEE14E42FC005EB14E42CC006EB14E406\r
+:100E500029C007EB14E426C00CEC14E423C00DEC0D\r
+:100E600014E420C003E815E41DC00AE815E41AC024\r
+:100E700002E915E417C004E915E414C001E216E420\r
+:100E800011C003E216E40EC004E216E40BC005E252\r
+:100E900016E408C006E216E405C007E216E402C044\r
+:100EA0000AE216E4C801DF91CF911F910F910895D6\r
+:100EB00096E0799FF001112494E5899FE00DF11DE2\r
+:100EC0001124E60FF11DEE0FFF1FEC51FF4F85912E\r
+:100ED0009491803E9105E0F4803C910558F5813372\r
+:100EE000910509F46FC048F48932910509F463C093\r
+:100EF0008A32910509F46DC072C089339105E9F019\r
+:100F000082389105D1F08533910509F44DC067C051\r
+:100F1000833E910581F138F4803E9105B9F0823E1F\r
+:100F20009105D9F05CC0863E910561F1873E91053F\r
+:100F3000A1F155C00E942B0508952091ED0120FDDF\r
+:100F400002C021FF4CC080EE90E049C08091ED01CD\r
+:100F500080FFF9CF89E390E042C08091ED0182FFEC\r
+:100F60000EC08091ED0184FF03C080E090E037C0A7\r
+:100F700083EE90E034C08091ED0182FFF2CF82EEEB\r
+:100F800090E02DC08091ED0183FF0BC08091ED01B9\r
+:100F900084FDEBCF87EE90E022C08091ED0183FFCE\r
+:100FA000F5CF86EE90E01BC08091ED0185FF07C074\r
+:100FB00089E290E014C08091ED0185FFF9CF85E3CF\r
+:100FC00090E00DC08091ED0186FF07C08AE290E0BD\r
+:100FD00006C08091ED0186FFF9CF81E390E00E9489\r
+:100FE0003B05089508950C94F207809162010895DD\r
+:100FF000CF93DF9300D01F92CDB7DEB79C018091D5\r
+:10100000E401843019F593E099833B832A8390931C\r
+:10101000E9008FEF9091E800815095FD06C095EDB5\r
+:101020009A95F1F700008111F5CF8091E80085FFD6\r
+:101030000DC040E050E063E070E0CE0101960E94F8\r
+:10104000620A8091E8008E778093E8000F900F90FD\r
+:101050000F90DF91CF910895CF93DF9300D01F922F\r
+:10106000CDB7DEB72091E401243021F522E02983B9\r
+:101070009B838A8383E08093E9008FEF9091E8005F\r
+:10108000815095FD06C095ED9A95F1F7000081110C\r
+:10109000F5CF8091E80085FF0DC040E050E063E0AF\r
+:1010A00070E0CE0101960E94620A8091E8008E777E\r
+:1010B0008093E8000F900F900F90DF91CF910895EB\r
+:1010C0002091E4012430F1F422E02093E9002FEF95\r
+:1010D0003091E800215035FD06C035ED3A95F1F725\r
+:1010E00000002111F5CF2091E80025FF0BC040E062\r
+:1010F00050E065E070E00E94620A8091E8008E771F\r
+:101100008093E8000895CF93DF93EC019091E40180\r
+:10111000943009F046C080910C018823D9F0809169\r
+:101120000D018823B9F09093E9008FEF9091E800CA\r
+:10113000815095FD06C095E19A95F1F70000811167\r
+:10114000F5CF8091E80085FF2CC040E050E060E1E1\r
+:1011500070E017C081E08093E9008FEF9091E80084\r
+:10116000815095FD06C095ED9A95F1F7000081112B\r
+:10117000F5CF8091E80085FF14C040E050E068E0C2\r
+:1011800070E0CE010E94620A8091E8008E77809321\r
+:10119000E80080E1FE01A2E5B1E001900D928A95A0\r
+:1011A000E1F7DF91CF9108958091E301811109C0AA\r
+:1011B0000E94F70B0E94540C8091E200846080939F\r
+:1011C000E20008951092E301089508950C94FB2124\r
+:1011D0000E94581B0E9401220E94FA0E0C94F307F1\r
+:1011E00042E061EC81E00E94710B42E061EC82E040\r
+:1011F0000E94710B42E061EC83E00E94710B42E1BE\r
+:1012000061EC84E00C94710B8091E601833009F469\r
+:1012100055C030F4813071F0823009F48EC00895E9\r
+:101220008A3009F47AC08B3009F460C0893009F043\r
+:101230009CC020C08091E501813A09F096C0809160\r
+:10124000E800877F8093E8008091E9019091EA01AE\r
+:10125000892B21F460E182E591E003C060E080E049\r
+:1012600090E070E00E94AD0A8091E8008B77809357\r
+:10127000E80008958091E501813209F076C08091FF\r
+:10128000E9019091EA01009719F0039709F06DC008\r
+:101290008091E800877F8093E8008091E80082FDDC\r
+:1012A00005C08091E4018111F8CF5FC08091F10009\r
+:1012B000809362018091E8008B7753C08091E501B3\r
+:1012C000813A09F052C08091E9019091EA01892B9D\r
+:1012D00009F04BC08091E800877F8093E8008091FF\r
+:1012E000E80080FFFCCF80910C0136C08091E501C1\r
+:1012F0008132D9F58091E9019091EA01892BA9F514\r
+:101300008091E800877F8093E8000E94A60B80917F\r
+:10131000E70180930C010C948A148091E5018132DD\r
+:1013200021F58091E800877F8093E8000E94A60B5A\r
+:101330008091E8018093630108958091E501813AED\r
+:10134000A1F48091E800877F8093E8008091E80015\r
+:1013500080FFFCCF809163018093F1008091E800D1\r
+:101360008E778093E8000C94A60B089584B7877F4E\r
+:1013700084BF88E10FB6F8948093600010926000FB\r
+:101380000FBE90E080E80FB6F894809361009093D0\r
+:1013900061000FBE0E94490F0E94F70B0E94540C7F\r
+:1013A0008091E20084608093E20078940E94DA0EDB\r
+:1013B0000E944B0F82E091E00E94F50E0E94E9210D\r
+:1013C0008091E401853069F40E94191B8091E2014B\r
+:1013D0008823B1F30E94441B882391F30E944C0A96\r
+:1013E000EFCF0E94510FECCF292F33272330310547\r
+:1013F000C9F064F42130310581F02230310509F063\r
+:1014000043C08DE690E020E133E042C02132310557\r
+:10141000F1F02232310541F137C082E190E02DE751\r
+:1014200033E036C099278130910541F08230910533\r
+:1014300041F0892B49F5ECE0F3E005C0E4EFF2E080\r
+:1014400002C0ECEDF2E0849190E09F0121C0643095\r
+:10145000D8F4E62FF0E0EE0FFF1FEE5DFE4F208187\r
+:10146000318189E090E014C0643070F470E0FB01D9\r
+:10147000EE0FFF1FE65EFE4F20813181FB01EA5E29\r
+:10148000FE4F808190E004C080E090E020E030E0FA\r
+:10149000FA0131832083089580E189BD82E189BD0D\r
+:1014A00009B400FEFDCF8091D8008F7D8093D800D5\r
+:1014B0008091E00082608093E0008091E00081FDF7\r
+:1014C000FCCF0895CF92DF92EF92FF920F931F937C\r
+:1014D000CF93DF93EC018B016A010E94C50B811150\r
+:1014E00033C0C114D10439F0F60180819181081B09\r
+:1014F000190BC80FD91FE12CF12C0115110519F199\r
+:101500008091E80085FD16C08091E8008E77809379\r
+:10151000E800C114D10449F0F60180819181E80E00\r
+:10152000F91EF182E08285E00FC00E94C50B88237E\r
+:1015300021F30AC089918093F10001501109FFEF56\r
+:10154000EF1AFF0ADACF80E0DF91CF911F910F9160\r
+:10155000FF90EF90DF90CF9008952091EB013091B4\r
+:10156000EC012617370748F06115710539F4209111\r
+:10157000E8002E772093E80001C0B90140E0611532\r
+:101580007105A9F12091E401222309F443C025301B\r
+:1015900009F442C02091E80023FD40C02091E800FA\r
+:1015A00022FD32C02091E80020FFE9CF4091F300F6\r
+:1015B0002091F20030E0342BFC01CF016115710560\r
+:1015C00059F02830310540F481918093F100615049\r
+:1015D00071092F5F3F4FF1CF41E02830310509F00D\r
+:1015E00040E02091E8002E772093E800C8CF411119\r
+:1015F000C9CF0AC08091E401882361F0853061F091\r
+:101600008091E80083FD0AC08091E80082FFF2CF5C\r
+:1016100080E0089582E0089583E0089581E00895D0\r
+:101620002091EB013091EC012617370748F0611546\r
+:10163000710539F42091E8002E772093E80001C06D\r
+:10164000B901FC0120E06115710591F18091E4017F\r
+:10165000882309F440C0853009F43FC08091E80038\r
+:1016600083FD3DC08091E80082FD2FC08091E8009D\r
+:1016700080FFE9CF2091F3008091F20090E0922B5F\r
+:101680006115710559F08830910540F4249120933B\r
+:10169000F1003196615071090196F2CF21E008976F\r
+:1016A00009F020E08091E8008E778093E800CBCFAE\r
+:1016B0002111CCCF0AC08091E401882361F08530EC\r
+:1016C00061F08091E80083FD0AC08091E80082FF0C\r
+:1016D000F2CF80E0089582E0089583E0089581E0EC\r
+:1016E0000895982F973058F59093E900981739F09E\r
+:1016F0007091EC002091ED005091F00003C0242F78\r
+:10170000762F50E021FF19C03091EB003E7F3093DF\r
+:10171000EB003091ED003D7F3093ED003091EB0018\r
+:1017200031603093EB007093EC002093ED00509308\r
+:10173000F0002091EE0027FF07C09F5FD3CF8F708E\r
+:101740008093E90081E0089580E008958091E501AB\r
+:1017500087FF11C08091E80082FD05C08091E401FF\r
+:101760008111F8CF11C08091E8008B770BC0809178\r
+:10177000E401882349F08091E80080FFF8CF809150\r
+:10178000E8008E778093E80008952091E40030917E\r
+:10179000E50095E64091EC00842F817040FF22C067\r
+:1017A0008091E80080FD1CC08091E401882391F0C5\r
+:1017B000853091F08091EB0085FD10C04091E400F0\r
+:1017C0005091E5004217530729F39A01915011F700\r
+:1017D00084E0089582E0089583E0089581E008950B\r
+:1017E00080E008954091E80042FFDECF08950E9416\r
+:1017F000650C0E946D0CE0EEF0E0808181608083DA\r
+:10180000E8EDF0E080818F77808319BCA7EDB0E030\r
+:101810008C918E7F8C9380818F7E80831092E301E8\r
+:1018200008950F931F93CF93DF930E94650C0E943E\r
+:101830006D0CC8EDD0E088818F77888388818068BF\r
+:10184000888388818F7D888319BC1092E40110926F\r
+:10185000E0011092E2011092E10100EE10E0F801C7\r
+:1018600080818B7F808388818160888342E060E013\r
+:1018700080E00E94710BE1EEF0E080818E7F80833A\r
+:10188000E2EEF0E0808181608083808188608083E7\r
+:10189000F80180818E7F8083888180618883DF91D9\r
+:1018A000CF911F910F910895E8EDF0E080818F7E38\r
+:1018B0008083E7EDF0E080818160808384E082BFF7\r
+:1018C00081E08093E3010C94110CE8EDF0E080815D\r
+:1018D0008E7F80831092E20008951092DA001092B9\r
+:1018E000E10008951F920F920FB60F9211242F93CB\r
+:1018F0003F934F935F936F937F938F939F93AF9398\r
+:10190000BF93EF93FF938091E10082FF0BC0809122\r
+:10191000E20082FF07C08091E1008B7F8093E100AD\r
+:101920000E94D90E8091DA0080FF1FC08091D800FC\r
+:1019300080FF1BC08091DA008E7F8093DA00809157\r
+:10194000D90080FF0DC080E189BD82E189BD09B465\r
+:1019500000FEFDCF81E08093E4010E94D40805C021\r
+:1019600019BC1092E4010E94E2088091E10080FF1E\r
+:1019700019C08091E20080FF15C08091E2008E7F47\r
+:101980008093E2008091E20080618093E200809188\r
+:10199000D80080628093D80019BC85E08093E40170\r
+:1019A0000E94E6088091E10084FF30C08091E2004F\r
+:1019B00084FF2CC080E189BD82E189BD09B400FEAD\r
+:1019C000FDCF8091D8008F7D8093D8008091E10079\r
+:1019D0008F7E8093E1008091E2008F7E8093E20011\r
+:1019E0008091E20081608093E2008091E001882391\r
+:1019F00011F084E007C08091E30087FD02C081E020\r
+:101A000001C083E08093E4010E94E8088091E10036\r
+:101A100083FF29C08091E20083FF25C08091E1000F\r
+:101A2000877F8093E10082E08093E4011092E001DF\r
+:101A30008091E1008E7F8093E1008091E2008E7FB3\r
+:101A40008093E2008091E20080618093E20042E0B6\r
+:101A500060E080E00E94710B8091F00088608093CC\r
+:101A6000F0000E94E508FF91EF91BF91AF919F9127\r
+:101A70008F917F916F915F914F913F912F910F9037\r
+:101A80000FBE0F901F9018951F920F920FB60F92D6\r
+:101A900011242F933F934F935F936F937F938F9373\r
+:101AA0009F93AF93BF93CF93DF93EF93FF93C09137\r
+:101AB000E900CF708091EC00D82FD17080FDD0E884\r
+:101AC0001092E9008091F000877F8093F000789475\r
+:101AD0000E94880D1092E9008091F0008860809348\r
+:101AE000F000CD2BCF70C093E900FF91EF91DF9113\r
+:101AF000CF91BF91AF919F918F917F916F915F91A6\r
+:101B00004F913F912F910F900FBE0F901F901895FE\r
+:101B10001F93CF93DF93CDB7DEB7AA970FB6F89494\r
+:101B2000DEBF0FBECDBFE5EEF1E088E08E0F9091F5\r
+:101B3000F10091938E13FBCF0E9404098091E8007D\r
+:101B400083FF1FC18091E5019091E601492F50E08C\r
+:101B50004A30510508F015C1FA01EA5AFF4F0C94BA\r
+:101B60008323803881F0823809F00BC18091E9012C\r
+:101B70008F708093E9008091EB0085FB882780F9C6\r
+:101B80001092E90006C08091E1019091E20191116B\r
+:101B900082609091E800977F9093E8008093F10035\r
+:101BA0001092F100C8C0282F2D7F09F0EAC08823C9\r
+:101BB00019F0823061F0E5C08091E701813009F0D1\r
+:101BC000E0C0933009F080E08093E2012BC0809167\r
+:101BD000E701811127C08091E9018F7009F4D1C01C\r
+:101BE0008093E9002091EB0020FF1CC0933021F48A\r
+:101BF0008091EB00806214C09091EB009061909313\r
+:101C0000EB0021E030E0A90102C0440F551F8A9586\r
+:101C1000E2F74093EA001092EA008091EB008860BE\r
+:101C20008093EB001092E9008091E800877F86C0E6\r
+:101C30008111A7C01091E7011F778091E3008078A0\r
+:101C4000812B8093E3008091E800877F8093E800F8\r
+:101C50000E94A60B8091E80080FFFCCF8091E300FA\r
+:101C600080688093E300111102C082E001C083E02C\r
+:101C70008093E40186C08058823008F082C0809151\r
+:101C8000E7019091E8018C3D53E0950779F583E0F9\r
+:101C90008A838AE289834FB7F894DE01139620E0A5\r
+:101CA0003EE051E2E32FF0E050935700E49120FF33\r
+:101CB00003C0E295EF703F5FEF708E2F90E0EA3047\r
+:101CC00010F0C79601C0C0968D939D932F5F24316D\r
+:101CD00049F74FBF8091E800877F8093E8006AE270\r
+:101CE00070E0CE0101960E94AD0A14C0AE014F5FB4\r
+:101CF0005F4F6091E9010E94F409BC01892B09F44E\r
+:101D000040C09091E800977F9093E80089819A8184\r
+:101D10000E94100B8091E8008B778093E80031C01F\r
+:101D2000803879F58091E800877F8093E800809182\r
+:101D3000E0018093F1008091E8008E778093E800C5\r
+:101D40000E94A60B1EC081111CC09091E701923029\r
+:101D5000C0F48091E800877F8093E8009093E001D1\r
+:101D60000E94A60B8091E001811106C08091E300E2\r
+:101D700087FD02C081E001C084E08093E4010E94FD\r
+:101D8000F0088091E80083FF0AC08091E800877F17\r
+:101D90008093E8008091EB0080628093EB00AA962C\r
+:101DA0000FB6F894DEBF0FBECDBFDF91CF911F916C\r
+:101DB00008950895CF938091E4018823A1F0C09104\r
+:101DC000E900CF709091EC00892F817090FD80E840\r
+:101DD000C82B1092E9008091E80083FD0E94880DD5\r
+:101DE000CF70C093E900CF910895909369018093DB\r
+:101DF00068010895E0916801F0916901309721F040\r
+:101E00000190F081E02D099480E00895E09168014F\r
+:101E1000F0916901309721F00280F381E02D09945F\r
+:101E20000895E0916801F0916901309721F00480F4\r
+:101E3000F581E02D099408952091660130916701A4\r
+:101E40008217930771F09093670180936601E09188\r
+:101E50006801F0916901309721F00680F781E02D4B\r
+:101E600009940895209164013091650182179307C8\r
+:101E700071F09093650180936401E0916801F091A5\r
+:101E80006901309721F00084F185E02D09940895CF\r
+:101E900008950C94480F0E945E1B0E940B040C9442\r
+:101EA000241CCF92DF92EF92FF920F931F93CF9358\r
+:101EB000DF93CDB7DEB72B970FB6F894DEBF0FBE1A\r
+:101EC000CDBF0E9423048BE6C82E81E0D82E00E00F\r
+:101ED00010E0E02E802F0E941105F60141916F0164\r
+:101EE000F42EF826B1F40F5F1F4F0E30110589F75D\r
+:101EF0008FEF89838A831B820E94671B8160782F02\r
+:101F00009D838C8349815A816B818D810E94F40F5E\r
+:101F100040C09091CD0191FF04C08B870E941705AE\r
+:101F20008B8520E030E04F2D50E0922FBA01022E39\r
+:101F300002C0759567950A94E2F760FF24C02E836E\r
+:101F4000EF8221E030E0690102C0CC0CDD1C9A95E3\r
+:101F5000E2F790E08C219D21892B09F420E028876D\r
+:101F60000E94671B8160782F9A8789874E815F81E5\r
+:101F700068858A850E94F40FF801E559FE4F80813B\r
+:101F8000C826C08206C02F5F3F4F2630310569F654\r
+:101F9000AACF0E940B1F10916A010E94FA0E181717\r
+:101FA000A1F00E94FA0E80936A012B960FB6F89466\r
+:101FB000DEBF0FBECDBFDF91CF911F910F91FF907C\r
+:101FC000EF90DF90CF900C94F3072B960FB6F89418\r
+:101FD000DEBF0FBECDBFDF91CF911F910F91FF905C\r
+:101FE000EF90DF90CF900895CF93DF93CDB7DEB71A\r
+:101FF0002B970FB6F894DEBF0FBECDBF4F83588727\r
+:1020000069877A878B87DE01119686E0FD01119240\r
+:102010008A95E9F785E0FE01379601900D928A9541\r
+:10202000E1F749815A816B817C818D819E810E947B\r
+:1020300024172B960FB6F894DEBF0FBECDBFDF91ED\r
+:10204000CF9108950895CF93882309F4C2C0C82F73\r
+:10205000823859F40E94FA0E81FDBBC089E30E94C8\r
+:10206000CD190E949A1A89E30CC0833879F40E9432\r
+:10207000FA0E80FDAEC083E50E94CD190E949A1A27\r
+:1020800083E50E940F1ACF910C949A1A843859F460\r
+:102090000E94FA0E82FD9DC087E40E94CD190E9425\r
+:1020A0009A1A87E4EECF8CEF8C0F813A48F48C2F8C\r
+:1020B0000E944E2181118DC08C2F0E94CD19E3CF3B\r
+:1020C00080E28C0F883048F4C77081E001C0880F2F\r
+:1020D000CA95EAF70E94531AD6CF8BE58C0F83304E\r
+:1020E00078F4C53A29F0C63A31F083E890E005C0AB\r
+:1020F00081E890E002C082E890E0CF910C941C0F40\r
+:1021000088E58C0F833108F064C0C83A39F1C93AC8\r
+:1021100041F1CA3A49F1CB3A51F1CC3A59F1CD3AB1\r
+:1021200061F1C03B69F1CE3A71F1CF3A79F1C13B2F\r
+:1021300081F1C23B89F1C33B91F1C43B99F1C53BAD\r
+:10214000A1F1C63BA9F1C73BB1F1C83BB9F1C93B0D\r
+:10215000C1F1CA3BC9F180E090E038C082EE90E066\r
+:1021600035C089EE90E032C08AEE90E02FC085EB5A\r
+:1021700090E02CC086EB90E029C087EB90E026C071\r
+:102180008CEC90E023C08DEC90E020C083E891E0DF\r
+:102190001DC08AE891E01AC082E991E017C084E985\r
+:1021A00091E014C081E292E011C083E292E00EC09F\r
+:1021B00084E292E00BC085E292E008C086E292E001\r
+:1021C00005C087E292E002C08AE292E0CF910C94CF\r
+:1021D000320FCF910895882309F44BC0823859F407\r
+:1021E0000E94FA0E81FF45C089E30E94CD190E942A\r
+:1021F0009A1A89E30CC0833871F40E94FA0E80FFAA\r
+:1022000038C083E50E94CD190E949A1A83E50E9486\r
+:102210000F1A0C949A1A843859F40E94FA0E82FF0D\r
+:1022200028C087E40E94CD190E949A1A87E4EFCF54\r
+:102230009CEF980F913A58F390E2980F983050F431\r
+:10224000877091E001C0990F8A95EAF7892F0E9463\r
+:10225000591ADFCF9BE5980F933020F480E090E08F\r
+:102260000C941C0F885A833120F480E090E00C9489\r
+:10227000320F0895882321F00E94531A0C949A1A61\r
+:102280000895882321F00E94591A0C949A1A0895EF\r
+:10229000BF92CF92DF92EF92FF920F931F93CF9353\r
+:1022A000DF9300D000D000D0CDB7DEB725E0FC0131\r
+:1022B000DE01119601900D922A95E1F7FC01D08084\r
+:1022C00011810281258122952F7043815481452BF4\r
+:1022D00009F4FCC21F3F21F4FFEFDF1609F4F6C238\r
+:1022E0007C012E830E942210D9821A8369817A810F\r
+:1022F000802F0E94C919182FB92E0E947E190E94A2\r
+:1023000045182E81002319F00E94701A2E81EB2DA2\r
+:10231000E295EF70F0E0E05AFF4F0C9483238B2D91\r
+:10232000807F9B2D9F70F92E882319F0F29480EF07\r
+:10233000F822002389F0FF2009F475C280E2810FA2\r
+:10234000883020F48F2D0E94531A03C08F2D0E94D5\r
+:10235000631A0E949A1A67C2812F0E94EB10FF2015\r
+:1023600009F4B4C2105E8F2D183018F40E94591A67\r
+:1023700002C00E94691A26960FB6F894DEBF0FBEFF\r
+:10238000CDBFDF91CF911F910F91FF90EF90DF9024\r
+:10239000CF90BF900C949A1A3B2D307F8B2D8F706D\r
+:1023A000303211F08295807F112319F0113021F124\r
+:1023B0002CC00023B9F0222309F4A0C1213009F078\r
+:1023C0009DC126960FB6F894DEBF0FBECDBFDF913C\r
+:1023D000CF911F910F91FF90EF90DF90CF90BF9022\r
+:1023E0000C94831A222319F0213009F46FC28E83D2\r
+:1023F0000E94861A8E8196C1002321F0223008F0B7\r
+:1024000065C27CC1211162C28DC1002321F022234B\r
+:1024100009F474C108C2222309F484C119C22B2D06\r
+:1024200026952695237030E02115310521F02130C5\r
+:102430003105D1F04BC2002321F0812F9B2D9370E9\r
+:1024400002C080E090E026960FB6F894DEBF0FBE83\r
+:10245000CDBFDF91CF911F910F91FF90EF90DF9053\r
+:10246000CF90BF900C941C0F002321F0812F9B2D47\r
+:10247000937002C080E090E026960FB6F894DEBF1D\r
+:102480000FBECDBFDF91CF911F910F91FF90EF90C5\r
+:10249000DF90CF90BF900C94320F812F002319F062\r
+:1024A0000E94131E02C00E947B1E26960FB6F8944F\r
+:1024B000DEBF0FBECDBFDF91CF911F910F91FF9077\r
+:1024C000EF90DF90CF90BF900C94001F8B2D837006\r
+:1024D00009F07BC00111FAC1812F82958695877022\r
+:1024E000880F880F912F9F70C92ED12CE12CF12CD1\r
+:1024F000082E04C0CC0CDD1CEE1CFF1C0A94D2F785\r
+:1025000014FF12C04FE050E060E070E004C0440FE0\r
+:10251000551F661F771F8A95D2F7CB01BA016095C8\r
+:1025200070958095909503C060E070E0CB012B2DF5\r
+:10253000269526952370422F50E042305105D9F060\r
+:102540004330510569F16C297D298E299F2941303D\r
+:10255000510551F126960FB6F894DEBF0FBECDBFE0\r
+:10256000DF91CF911F910F91FF90EF90DF90CF906F\r
+:10257000BF900C946C186C297D298E299F29269672\r
+:102580000FB6F894DEBF0FBECDBFDF91CF911F9184\r
+:102590000F91FF90EF90DF90CF90BF900C94881830\r
+:1025A0000E946C18C701B60126960FB6F894DEBFDC\r
+:1025B0000FBECDBFDF91CF911F910F91FF90EF9094\r
+:1025C000DF90CF90BF900C945018002319F08B2D02\r
+:1025D000817001C08695882309F478C1812F829586\r
+:1025E00086958770880F880F912F9F70C92ED12CE8\r
+:1025F000E12CF12C082E04C0CC0CDD1CEE1CFF1CC1\r
+:102600000A94D2F714FF12C04FE050E060E070E08F\r
+:1026100004C0440F551F661F771F8A95D2F7CB0160\r
+:10262000BA01609570958095909503C060E070E068\r
+:10263000CB012B2D269526952370422F50E042305A\r
+:102640005105D9F04330510569F16C297D298E2956\r
+:102650009F294130510551F126960FB6F894DEBFFF\r
+:102660000FBECDBFDF91CF911F910F91FF90EF90E3\r
+:10267000DF90CF90BF900C9446196C297D298E294C\r
+:102680009F2926960FB6F894DEBF0FBECDBFDF910F\r
+:10269000CF911F910F91FF90EF90DF90CF90BF905F\r
+:1026A0000C9462190E944619C701B60126960FB60E\r
+:1026B000F894DEBF0FBECDBFDF91CF911F910F9178\r
+:1026C000FF90EF90DF90CF90BF900C942A19103FAD\r
+:1026D000D1F118F4103E50F4A1C0123F09F463C0C8\r
+:1026E00008F44CC0133F09F473C098C01F708B2DC1\r
+:1026F0008F710023A1F00E94C318812F26960FB678\r
+:10270000F894DEBF0FBECDBFDF91CF911F910F9127\r
+:10271000FF90EF90DF90CF90BF900C943A110E9401\r
+:10272000E418812F26960FB6F894DEBF0FBECDBFFA\r
+:10273000DF91CF911F910F91FF90EF90DF90CF909D\r
+:10274000BF900C9441110023A9F02111BFC08B2D23\r
+:102750008F7126960FB6F894DEBF0FBECDBFDF9106\r
+:10276000CF911F910F91FF90EF90DF90CF90BF908E\r
+:102770000C940919223008F0A9C0E9CF0023A9F070\r
+:102780008B2D8F7126960FB6F894DEBF0FBECDBF8E\r
+:10279000DF91CF911F910F91FF90EF90DF90CF903D\r
+:1027A000BF900C94C318002359F38B2D8F7126967C\r
+:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152\r
+:1027C0000F91FF90EF90DF90CF90BF900C94E418A2\r
+:1027D000002399F08B2D8F7126960FB6F894DEBFEB\r
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062\r
+:1027F000DF90CF90BF900C94AE1826960FB6F89449\r
+:10280000DEBF0FBECDBFDF91CF911F910F91FF9023\r
+:10281000EF90DF90CF90BF900C94A4180023A9F004\r
+:10282000222309F4ADCF812F26960FB6F894DEBF90\r
+:102830000FBECDBFDF91CF911F910F91FF90EF9011\r
+:10284000DF90CF90BF900C942310222309F4ADCFDA\r
+:10285000812F26960FB6F894DEBF0FBECDBFDF9155\r
+:10286000CF911F910F91FF90EF90DF90CF90BF908D\r
+:102870000C94EB104B2D4F70612FC7010E94AB02DF\r
+:1028800026960FB6F894DEBF0FBECDBFDF91CF9175\r
+:102890001F910F91FF90EF90DF90CF90BF900C941D\r
+:1028A000C8174B2D4F70612FC70126960FB6F894AD\r
+:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073\r
+:1028C000EF90DF90CF90BF900C94180526960FB62E\r
+:1028D000F894DEBF0FBECDBFDF91CF911F910F9156\r
+:1028E000FF90EF90DF90CF90BF9008950E94701AF4\r
+:1028F0000E94801A0E94451A0E949A1A0E94B11FD3\r
+:102900000E94001F80E090E00E941C0F80E090E099\r
+:102910000C94320F0E94601A0C9476140E94BE1917\r
+:10292000292F22952F7030E02C3031054CF42A30BD\r
+:1029300031056CF4225031092230310588F407C08A\r
+:102940002C30310549F02F30310531F009C0803E7F\r
+:1029500048F0803F29F406C093FB882780F908954A\r
+:1029600080E0089581E00895CF93DF9300D000D0F8\r
+:102970001F92CDB7DEB70F900F900F900F900F9072\r
+:10298000DF91CF910895CF93DF9300D000D000D096\r
+:10299000CDB7DEB726960FB6F894DEBF0FBECDBF1B\r
+:1029A000DF91CF9108951F93CF93DF93C091790169\r
+:1029B00016E080917A01C81799F0D0E01C9FF001D1\r
+:1029C0001D9FF00D1124E558FE4F40815181628119\r
+:1029D0007381848195810E94C3142196C770E9CFC9\r
+:1029E000DF91CF911F9108954091AB015091AC01BF\r
+:1029F0006091AD017091AE018091AF019091B001F5\r
+:102A00000C94C3148091B00182958F7009F054C06A\r
+:102A10008091AD01882309F44FC080917901A09184\r
+:102A20007A016091AB017091AC014091AE0150917F\r
+:102A3000AF01B6E08A1709F43FC090E04115510597\r
+:102A4000C1F17F3F11F46F3FA1F1B89FF001B99F31\r
+:102A5000F00D1124E558FE4F218172132AC0208108\r
+:102A6000621327C02281211124C0238134812417BD\r
+:102A7000350710F421503109241B350B283C310552\r
+:102A8000C0F42091B0012F7020612093B00126E0A6\r
+:102A9000289FF001299FF00D1124E058FE4F8081FE\r
+:102AA0008F70806180838BEA91E00E9448110C94C2\r
+:102AB000D31401968770BECF0895CF92DF92EF9224\r
+:102AC000FF920F931F93CF93DF93CDB7DEB762973B\r
+:102AD0000FB6F894DEBF0FBECDBF8C0185E0F801C4\r
+:102AE000DE011D9601900D928A95E1F7D8014C9177\r
+:102AF00011965C91119712966C9112971396CD9046\r
+:102B0000DC9014973091AB017091AC018091AE01D3\r
+:102B10009091AF01009709F46BC17F3F19F43F3FDB\r
+:102B200009F466C1E090AD01EE2009F4C0C0209127\r
+:102B3000B001C816D90628F0F601E81BF90BCF0141\r
+:102B400004C0809590958C0D9D1DFF24F394883CC6\r
+:102B5000910578F0F12C207F09F0C6C07C2DD98A30\r
+:102B6000C88A89890E94B4148BEA91E00E944811B6\r
+:102B7000B1C0822F807F09F046C0751314C0341392\r
+:102B800012C0611110C02F7020612093B0010E940B\r
+:102B9000F4148BEA91E00E9448118091B001D801B1\r
+:102BA00015968C932EC0CD2819F15F3F11F44F3F3D\r
+:102BB000F9F0F62E61111CC08091790120917A0103\r
+:102BC00036E0821709F45AC090E0389FF001399F2F\r
+:102BD000F00D1124E558FE4F7181571306C0708126\r
+:102BE000471303C07281711103C001968770E9CF4A\r
+:102BF000F62E662309F418C18091B001816080939C\r
+:102C0000B001F12C11C1751308C0341306C0611155\r
+:102C100004C08091B001D801C3C04D875E878D8507\r
+:102C20009E856A8B0E948E146A898823E1F166234F\r
+:102C3000D1F12091B001822F82958F7090E00297A0\r
+:102C400074F08091AB019091AC0198878F831986C5\r
+:102C5000DB86CA862C87CE0107960E94481186E043\r
+:102C6000F801ABEAB1E001900D928A95E1F70E947C\r
+:102C700002150E94F414FF24F394D6C04D875E879A\r
+:102C80008D859E850E94BE19292F22952F7030E0D8\r
+:102C9000223031050CF0BCC09F7009F0B6C0805ED8\r
+:102CA000883008F4C1C0C8010E944811E4CFC8169A\r
+:102CB000D90608F453C0F601E81BF90BCF01883C94\r
+:102CC000910508F450C0F12C7C2DD98AC88A8989D5\r
+:102CD0000E94B414EBEAF1E086E0DF011D928A95D0\r
+:102CE000E9F70E94F414A0C0751314C0341312C085\r
+:102CF000611110C08091B001F8018583C8010E9464\r
+:102D0000481186E0EBEAF1E0DF011D928A95E9F7D0\r
+:102D1000FE2C8AC04D875E878D859E856A8B0E94BA\r
+:102D20008E146A89882309F4BECF662309F4BBCFC9\r
+:102D30002091B001822F82958F7090E002970CF461\r
+:102D40008ECF8091AB019091AC019A8389831B82D5\r
+:102D5000DD82CC822E83CE0101967FCF8095909527\r
+:102D60008C0D9D1DACCFF62E662309F49CCF7513F8\r
+:102D70002EC034132CC02091B00120FD1FC0822F23\r
+:102D800082958F70D9F0D80115962C9315978F30B6\r
+:102D900049F08F5F982F9295907F822F8F70892BAB\r
+:102DA00015968C93C8010E94481186E0F801ABEAA1\r
+:102DB000B1E001900D928A95E1F793CF86E0F8019A\r
+:102DC000ABEAB1E001900D928A95E1F72DC04D87F5\r
+:102DD0005E878D859E850E948E14811140CF8091E3\r
+:102DE000B00181608093B001C8010E9448111CC0ED\r
+:102DF000662309F458CF4D875E878D859E850E9496\r
+:102E00008E14882309F44FCF2ACF811148CF0CC0EC\r
+:102E1000243031050CF047CF9F7009F440CFF80102\r
+:102E20009581907F09F03BCF8F2D62960FB6F89475\r
+:102E3000DEBF0FBECDBFDF91CF911F910F91FF90ED\r
+:102E4000EF90DF90CF9008951F93CF93DF93CDB78E\r
+:102E5000DEB72C970FB6F894DEBF0FBECDBF4F8301\r
+:102E6000588769877A878B879C87CE0107960E944F\r
+:102E70005D15882369F08F8198852A853B85232BF2\r
+:102E8000F1F19F3F09F063C08F3F09F060C037C088\r
+:102E900086E0FE013796DE01119601900D928A952B\r
+:102EA000E1F76F817885EA85FB85309741F17F3FB7\r
+:102EB00011F46F3F21F120917A0130E0C9010196B0\r
+:102EC000877099274091790150E08417950709F49C\r
+:102ED00047C069837A83FD83EC8396E0929FD0019B\r
+:102EE000939FB00D1124A558BE4FFE01319601905D\r
+:102EF0000D929A95E1F780937A010E94D31416E01F\r
+:102F00008091790190917A018917C1F1189FC001D0\r
+:102F1000112485589E4F0E945D15882379F1E09118\r
+:102F200079011E9FF0011124E558FE4F4081518127\r
+:102F300062817381848195810E94C314809179019B\r
+:102F400090E001968770992780937901D9CF4F81BE\r
+:102F5000588569857A858B859C850E94C314CFCF5F\r
+:102F60000E948A1410927A0110927901EBEAF1E042\r
+:102F700086E0DF011D928A95E9F7C1CF2C960FB646\r
+:102F8000F894DEBF0FBECDBFDF91CF911F910895A2\r
+:102F9000EF92FF920F931F93CF93DF938C01892BB6\r
+:102FA00009F46CC0F12CEE24E394E8012196F801B9\r
+:102FB0008491843740F4843008F051C0813081F02E\r
+:102FC000823019F15BC0853709F444C0A8F19CE751\r
+:102FD000980F903708F052C08F770E94EB1041C0D5\r
+:102FE0000E5F1F4FFE01C49180E28C0F883048F4C1\r
+:102FF000C7708E2D01C0880FCA95EAF70E94731A18\r
+:1030000014C08C2F0E9423102DC00E5F1F4FFE0195\r
+:10301000C49180E28C0F883058F4C7708E2D01C0A7\r
+:10302000880FCA95EAF70E94791A0E949A1A1AC064\r
+:103030008C2F0E94EB1016C00E5F1F4FFE01C49133\r
+:10304000CC2381F08FE99FE00197F1F700C00000E9\r
+:10305000C150F6CF0E5F1F4FFE01F49003C00E94D7\r
+:1030600023108E018F2D882309F49FCFEFE9FFE015\r
+:103070003197F1F700C000008150F5CFDF91CF917B\r
+:103080001F910F91FF90EF90089508956093B501FF\r
+:103090007093B6018093B7019093B8010C947614A5\r
+:1030A0000F931F930091B5011091B6012091B701C4\r
+:1030B0003091B801DC01CB01802B912BA22BB32BDB\r
+:1030C0008093B5019093B601A093B701B093B80176\r
+:1030D0001F910F910C9476140F931F930091B501DB\r
+:1030E0001091B6012091B7013091B801DC01CB01FC\r
+:1030F00080239123A223B3238093B5019093B6013B\r
+:10310000A093B701B093B8011F910F910C9476145E\r
+:103110000F931F930091B5011091B6012091B70153\r
+:103120003091B801DC01CB0180279127A227B3277A\r
+:103130008093B5019093B601A093B701B093B80105\r
+:103140001F910F910C9476141092B1011092B2015C\r
+:103150001092B3011092B4010C94761441E050E047\r
+:1031600060E070E004C0440F551F661F771F8A950A\r
+:10317000D2F74093B1015093B2016093B3017093C1\r
+:10318000B4010C94761441E050E060E070E004C0BB\r
+:10319000440F551F661F771F8A95D2F78091B101A2\r
+:1031A0009091B201A091B301B091B401482B592B79\r
+:1031B0006A2B7B2B4093B1015093B2016093B30112\r
+:1031C0007093B4010C94761441E050E060E070E03C\r
+:1031D00004C0440F551F661F771F8A95D2F740958C\r
+:1031E0005095609570958091B1019091B201A09138\r
+:1031F000B301B091B401482359236A237B23409340\r
+:10320000B1015093B2016093B3017093B4010C9477\r
+:10321000761441E050E060E070E004C0440F551FB8\r
+:10322000661F771F8A95D2F78091B1019091B20104\r
+:10323000A091B301B091B401482759276A277B2791\r
+:103240004093B1015093B2016093B3017093B40104\r
+:103250000C9476140F931F930091B1011091B20159\r
+:103260002091B3013091B401DC01CB01802B912B73\r
+:10327000A22BB32B8093B1019093B201A093B30121\r
+:10328000B093B4011F910F910C9476140F931F9378\r
+:103290000091B1011091B2012091B3013091B401BC\r
+:1032A000DC01CB0180239123A223B3238093B101BE\r
+:1032B0009093B201A093B301B093B4011F910F9109\r
+:1032C0000C9476140F931F930091B1011091B201E9\r
+:1032D0002091B3013091B401DC01CB01802791270B\r
+:1032E000A227B3278093B1019093B201A093B301B9\r
+:1032F000B093B4011F910F910C9476140895CF925E\r
+:10330000DF92EF92FF920F931F93CF93DF938C0185\r
+:10331000C090B501D090B601E090B701F090B8012F\r
+:103320008091B1019091B201A091B301B091B4012B\r
+:10333000C82AD92AEA2AFB2ACFE1D0E0D701C60160\r
+:103340000C2E04C0B695A795979587950A94D2F749\r
+:1033500080FF06C0B8018C2F0E945807019721F406\r
+:10336000219760F780E001C08C2FDF91CF911F91F2\r
+:103370000F91FF90EF90DF90CF900895CF93DF9360\r
+:10338000EC010E947F19BE010E945807DF91CF9186\r
+:103390000895CB010E94BE19089590910C019923C4\r
+:1033A00021F090910D01911109C020910E013091F1\r
+:1033B0000F01F90132969FEF40E01FC0982F9695BC\r
+:1033C000969596959F3050F5E0910E01F0910F0182\r
+:1033D000E90FF11D877021E030E0A90102C0440F20\r
+:1033E000551F8A95E2F7CA019181892B818308953F\r
+:1033F0009F3F39F04F5F4E3041F051915813F8CF55\r
+:103400000DC05111F7CF942FF5CF9F3F39F0F9013F\r
+:10341000E90FF11D97FDFA95828308950895909123\r
+:103420000C01992321F090910D01911109C0209177\r
+:103430000E0130910F01F9013296205F3F4F1FC0FE\r
+:10344000982F9695969596959F30F0F4E0910E0101\r
+:10345000F0910F01E90FF11D877021E030E0A90123\r
+:1034600002C0440F551F8A95E2F7CA0180959181E9\r
+:103470008923818308953196E217F30729F090811B\r
+:103480009813F9CF1082F7CF089581E090E0E09192\r
+:103490000E01F0910F01E80FF91F108201968031A3\r
+:1034A0009105A9F708959091CC01892B8093CC01C7\r
+:1034B000089580959091CC0189238093CC01089543\r
+:1034C0001092CC0108959091CB01892B8093CB0170\r
+:1034D000089580959091CB0189238093CB01089525\r
+:1034E0001092CB0108959091CA01892B8093CA0153\r
+:1034F000089580959091CA0189238093CA01089507\r
+:103500001092CA0108958093B90108951092B901EB\r
+:10351000089580910E0190910F01FC0131969C015C\r
+:10352000205F3F4F80E0919191118F5FE217F30789\r
+:10353000D1F70895E0910E01F0910F018091CC0137\r
+:103540008083E0910E01F0910F0190818091CB0179\r
+:10355000892B8083E0910E01F0910F019081809181\r
+:10356000CA01892B80838091B901882361F0E091A1\r
+:103570000E01F0910F019081892B80830E94891A9E\r
+:1035800081111092B90180910E0190910F010C945C\r
+:10359000060FCF92DF92EF92FF926C01EE24FF2490\r
+:1035A000C114D104E104F10421F0C701B60120E106\r
+:1035B00001C020E0C72ED82EE92EFF24C114D1046B\r
+:1035C000E104F10419F0285FC701B6016B017C0129\r
+:1035D00054E0F694E794D794C7945A95D1F7C11460\r
+:1035E000D104E104F10419F02C5FC701B6016B01AD\r
+:1035F0007C0142E0F694E794D794C7944A95D1F7BA\r
+:10360000C114D104E104F10419F02E5FC701B60121\r
+:10361000DC01CB01B695A79597958795892B8A2BC9\r
+:103620008B2B09F02F5F822FFF90EF90DF90CF90D0\r
+:1036300008958091E401843021F11092CE0120E4BC\r
+:1036400088E190E00FB6F894A895809360000FBED3\r
+:103650002093600080E00E94F30783B7817F84603D\r
+:1036600083BF83B7816083BF7894889583B78E7F4B\r
+:1036700083BF88E10FB6F8948093600010926000D9\r
+:103680000FBE089508950895CF930E94421B0E9493\r
+:1036900023040E94431BC0E08C2F0E94110581115E\r
+:1036A00004C0CF5FCE30C1F701C081E0CF91089553\r
+:1036B0000E948A140E94FA0E0C94F30782E084BDE3\r
+:1036C00093E095BD9AEF97BD80936E0008952FB754\r
+:1036D000F8948091CF019091D001A091D101B09147\r
+:1036E000D2012FBF0895CF92DF92EF92FF920F93F6\r
+:1036F0001F932FB7F8944091CF015091D001609162\r
+:10370000D1017091D2012FBF6A017B01EE24FF2409\r
+:103710008C0120E030E0C016D106E206F30610F47A\r
+:10372000415051099A01281B390BC9011F910F9172\r
+:10373000FF90EF90DF90CF9008951F920F920FB6F9\r
+:103740000F9211248F939F93AF93BF938091CF01DA\r
+:103750009091D001A091D101B091D2010196A11D0B\r
+:10376000B11D8093CF019093D001A093D101B0936C\r
+:10377000D201BF91AF919F918F910F900FBE0F908B\r
+:103780001F9018950E94F70BF8942FEF87EA91E6A7\r
+:10379000215080409040E1F700C0000087E090EBAE\r
+:1037A000DC018093EE019093EF01A093F001B093C0\r
+:1037B000F1019CE088E10FB6F894A8958093600031\r
+:1037C0000FBE90936000FFCFEF92FF920F931F9375\r
+:1037D000CF93DF93D82FC0E08C2F0E94110500E01B\r
+:1037E00010E0E82EF12CC701002E02C095958795B8\r
+:1037F0000A94E2F780FD06C00F5F1F4F06301105E7\r
+:1038000091F709C0602F7C2F80E00E941905D81322\r
+:10381000F3CF81E004C0CF5FCE30F1F680E0DF91DE\r
+:10382000CF911F910F91FF90EF900895CF93C82FE4\r
+:103830008CE20E94E41B882321F08C2FCF910C9402\r
+:10384000E41B80E0CF910895CF930E946B1D8111FE\r
+:1038500002C00E94511DC5E6C15049F00E942304D8\r
+:103860008FE39CE90197F1F700C00000F5CF89E2F2\r
+:103870000E94161C811113C18AE20E94161C81113C\r
+:103880000E94511D85E00E94161C81110E94C21BDE\r
+:103890000E94761D8093CD0187E00E94161C88232C\r
+:1038A000A9F18BE10E94161C882351F08091CD0173\r
+:1038B00081FB222720F991E0922790FB81F90EC02D\r
+:1038C0008EE00E94161C882361F08091CD0182FB5E\r
+:1038D000222720F991E0922790FB82F98093CD0175\r
+:1038E00015C080E10E94161C9091CD01882341F003\r
+:1038F00093FB222720F981E0822780FB93F904C003\r
+:10390000892F809580FB90F99093CD018091CD0116\r
+:103910000E947A1D0E94881D8093ED0180EE0E9416\r
+:10392000161C882341F08091ED01982F909590FB13\r
+:1039300080F98093ED0189E30E94161C882359F0D9\r
+:103940008091ED0181FB222720F991E0922790FBE5\r
+:1039500081F98093ED0182EE0E94161C882359F0B4\r
+:103960008091ED0182FB222720F991E0922790FBC4\r
+:1039700082F98093ED0186EE0E94161C882359F08F\r
+:103980008091ED0183FB222720F991E0922790FBA3\r
+:1039900083F98093ED0183EE0E94161C882359F071\r
+:1039A0008091ED0184FB222720F991E0922790FB82\r
+:1039B00084F98093ED0185E30E94161C882359F059\r
+:1039C0008091ED0185FB222720F991E0922790FB61\r
+:1039D00085F98093ED0181E30E94161C882359F03C\r
+:1039E0008091ED0186FB222720F991E0922790FB40\r
+:1039F00086F98093ED0181E10E94161C882359F01D\r
+:103A00008091ED0187FB222720F991E0922790FB1E\r
+:103A100087F98093ED018091ED010E948C1D8091CA\r
+:103A2000ED0187FB882780F980930D0187E20E94D2\r
+:103A3000161CC82F8EE10E94161C8111C2608FE1F6\r
+:103A40000E94161C8111C46080E20E94161C811124\r
+:103A5000C86081E20E94161C8111C06182E20E944E\r
+:103A6000161C8111C06283E20E94161C8111C06481\r
+:103A700084E20E94161C882311F0C06802C0CC2387\r
+:103A800029F08C2F0E94831D6C2F03C00E947F1D84\r
+:103A9000682F70E080E090E0CF910C944618CF91B1\r
+:103AA00008956DEE7EEF80E090E00E94BD2360E01F\r
+:103AB00082E090E00E94AB2360E083E090E00E940F\r
+:103AC000AB2360E084E090E00E94AB2360E085E0FF\r
+:103AD00090E00C94AB2380E090E00E94A52321E0CD\r
+:103AE0008D3E9E4F09F020E0822F089582E090E005\r
+:103AF0000C949D23682F82E090E00C94AB2383E02C\r
+:103B000090E00C949D23682F83E090E00C94AB230D\r
+:103B100084E090E00C949D23682F84E090E00C9466\r
+:103B2000AB238091D50180FF0BC06091130185E02C\r
+:103B3000689FB001112475956795759567952BC0A1\r
+:103B400081FF09C06091130185E0689FB0011124D5\r
+:103B50007595679520C082FF07C06091130185E0CD\r
+:103B6000689FB001112417C09091D6019923D1F01C\r
+:103B700060911201961788F72091130185E0289F24\r
+:103B800090011124929FA001939F500D112470E089\r
+:103B9000CA010E946F236038710540F461157105F8\r
+:103BA00039F002C065E070E0862F08958FE7089530\r
+:103BB00081E008958091D50180FF08C060911101D6\r
+:103BC00070E0759567957595679521C081FF06C072\r
+:103BD0006091110170E07595679519C082FF04C06E\r
+:103BE0006091110170E010C09091D6019923C1F04D\r
+:103BF000609110019617A0F780911101899FC00173\r
+:103C0000112470E00E946F236038710528F461155B\r
+:103C1000710521F0862F08958FE7089581E00895BA\r
+:103C200061E070E0F4CF803F21F40E94911D819506\r
+:103C300004C0813F29F40E94911D8093D901089509\r
+:103C4000823F21F40E94911D819504C0833F29F495\r
+:103C50000E94911D8093D8010895893F19F40E9414\r
+:103C6000DA1D05C08A3F31F40E94DA1D81958093E8\r
+:103C7000DA0108958B3F21F40E94DA1D819504C07A\r
+:103C80008C3F29F40E94DA1D8093DB010895843F64\r
+:103C900021F48091D701816017C0853F21F4809184\r
+:103CA000D701826011C0863F21F48091D7018460E2\r
+:103CB0000BC0873F21F48091D701886005C0883F01\r
+:103CC00031F48091D70180618093D70108958D3FB1\r
+:103CD00021F48091D50181600BC08E3F21F4809149\r
+:103CE000D501826005C08F3F29F48091D5018460A1\r
+:103CF0008093D5010895803F39F48091D90187FFE1\r
+:103D00006CC01092D90169C0813F29F48091D9011A\r
+:103D10001816BCF362C09091D801823F29F497FF36\r
+:103D20005CC01092D80159C0833F19F41916CCF326\r
+:103D300054C0893F41F48091DA0118160CF04DC04F\r
+:103D40001092DA014AC08A3F29F48091DA0187FF94\r
+:103D500044C0F6CF8B3F39F48091DB0187FF3DC033\r
+:103D60001092DB013AC08C3F29F48091DB011816D8\r
+:103D7000BCF333C0843F21F48091D7018E7F17C0FC\r
+:103D8000853F21F48091D7018D7F11C0863F21F4BA\r
+:103D90008091D7018B7F0BC0873F21F48091D701A1\r
+:103DA000877F05C0883F31F48091D7018F7E809353\r
+:103DB000D70113C08D3F21F48091D5018E7F0BC0B8\r
+:103DC0008E3F21F48091D5018D7F05C08F3F29F46E\r
+:103DD0008091D5018B7F8093D5018091D80181118D\r
+:103DE0000EC08091D90181110AC08091DA01811140\r
+:103DF00006C08091DB01811102C01092D6010895A6\r
+:103E000087ED91E00E94110F0E94671B9093D401EF\r
+:103E10008093D30108951F93CF93DF938091D301B3\r
+:103E20009091D4010E94731BAC019091D60199230B\r
+:103E300021F02091140130E006C0209115018AE0A4\r
+:103E4000289F900111244217530708F486C08091DF\r
+:103E5000D801C091D901D091DA011091DB01811113\r
+:103E600007C0C11176C0D11174C0111172C075C0E4\r
+:103E70009F3F19F09F5F9093D601181624F40E947B\r
+:103E8000911D8093D8018091D80187FF05C00E94C1\r
+:103E9000911D81958093D8011C1624F40E94911DD8\r
+:103EA0008093D9018091D90187FF05C00E94911D9F\r
+:103EB00081958093D9016091D801662339F1C09131\r
+:103EC000D901CC2319F1772767FD7095872F972F9C\r
+:103ED0000E94802223E333E343E35FE30E94E42272\r
+:103EE0000E944D226093D8016C2F772767FD709553\r
+:103EF000872F972F0E94802223E333E343E35FE37E\r
+:103F00000E94E4220E944D226093D9011D1624F4E0\r
+:103F10000E94DA1D8093DA018091DA0187FF05C0E3\r
+:103F20000E94DA1D81958093DA01111624F40E9413\r
+:103F3000DA1D8093DB018091DB0187FF05C00E94C1\r
+:103F4000DA1D81958093DB01DF91CF911F910C9455\r
+:103F5000001F9F3F09F08ECF96CFDF91CF911F9129\r
+:103F60000895E7EDF1E085E0DF011D928A95E9F71C\r
+:103F70001092D6011092D5010895833081F128F472\r
+:103F8000813059F08230D1F00895853009F449C06C\r
+:103F9000B8F1863009F456C0089580911501262F96\r
+:103FA00030E0280F311D2F3F310524F4680F609356\r
+:103FB000150108958FEF80931501089580911401E4\r
+:103FC000262F30E0280F311D2F3F310524F4680FD4\r
+:103FD0006093140108958FEF8093140108958091E8\r
+:103FE0001301262F30E0280F311D2F3F310524F417\r
+:103FF000680F6093130108958FEF80931301089564\r
+:1040000080911201262F30E0280F311D2F3F3105FE\r
+:1040100024F4680F6093120108958FEF80931201CA\r
+:10402000089580911101262F30E0280F311D2F3F78\r
+:10403000310524F4680F6093110108958FEF809388\r
+:104040001101089580911001262F30E0280F311DB5\r
+:104050002F3F310524F4680F6093100108958FEF0E\r
+:10406000809310010895833011F128F4813049F0D4\r
+:10407000823091F00895853081F120F18630C1F1D0\r
+:10408000089580911501681720F4861B809315010F\r
+:10409000089510921501089580911401681720F475\r
+:1040A000861B809314010895109214010895809145\r
+:1040B0001301681720F4861B809313010895109252\r
+:1040C0001301089580911201681720F4861B8093D4\r
+:1040D000120108951092120108958091110168173C\r
+:1040E00020F4861B80931101089510921101089508\r
+:1040F00080911001681720F4861B809310010895A9\r
+:104100001092100108950F931F938D3109F46BC025\r
+:1041100008F03FC08E3009F47FC0C0F4873009F446\r
+:1041200069C068F4863009F0B1C08091CD01817F0B\r
+:104130008E7F8093CD0181E08093DD01A8C088301F\r
+:1041400009F4A2C08B3009F49FC0A0C0863109F4E5\r
+:104150009BC078F4803109F472C0813109F096C0B7\r
+:104160000E948A1490910D0181E0892780930D01AE\r
+:104170008BC0893109F488C08B3109F087C08091E8\r
+:10418000CD0181FB222720F991E0922790FB81F954\r
+:104190004CC0853309F470C048F4873209F46CC010\r
+:1041A00008F459C0893209F467C070C0833438F408\r
+:1041B0008A3308F04EC0883309F466C067C0833480\r
+:1041C00009F45AC0883409F061C00E948A140FEFC4\r
+:1041D00013ED20E3015010402040E1F700C0000043\r
+:1041E0000E94C21B51C00E9407220E94FA0E0E9428\r
+:1041F000F3074AC09091CD01892F8095817080FB93\r
+:1042000090F929F0966098609093CD0140C0997F15\r
+:10421000977F9093CD0138C08091CD0182FB2227FA\r
+:1042200020F991E0922790FB82F98093CD019923A8\r
+:1042300059F18091CD0181608093CD0125C080919D\r
+:10424000CD0183FB222720F991E0922790FB83F98F\r
+:10425000ECCF895301C08D5141E050E060E070E047\r
+:104260008A019B0104C0000F111F221F331F8A9572\r
+:10427000D2F7C901B80104C061E070E080E090E0CD\r
+:104280000E9446180E948A1481E001C080E01F91BC\r
+:104290000F91089580E0089580E00895CF93C82F8E\r
+:1042A0008091DD01813079F018F08230E9F187C02A\r
+:1042B000E0910E01F0910F018081813169F082322D\r
+:1042C00009F07FC009C0E0910E01F0910F018081DB\r
+:1042D000813111F0823261F48C2F0E944A218111C8\r
+:1042E00004C08C2F0E9483201DC081E090E01AC082\r
+:1042F0008C2F0E944C21811114C0C43179F048F4F4\r
+:10430000CB3079F0C03109F060C082E08093DD01EC\r
+:1043100008C0C93219F0C83321F057C01092DD012E\r
+:1043200054C081E0817053C0C93289F118F5C4319D\r
+:1043300071F1A8F4C73009F046C08AE080931501F6\r
+:1043400094E19093140193E09093130180931201F0\r
+:1043500088E08093110188E28093100134C0CE512F\r
+:10436000C63088F5EC2FF0E0E65DFE4F808180934B\r
+:10437000DC0129C0CE34E9F020F4CB3421F56AE029\r
+:1043800013C0C13579F0C235F1F461E00DC0809100\r
+:10439000DC01882319F01092DC0115C081E08093C4\r
+:1043A000DD0115C061E006C08091DC010E94BD1FE7\r
+:1043B0000AC06AE08091DC010E94332004C01092A0\r
+:1043C000DD0180E004C081E002C080E0ABCFCF918E\r
+:1043D0000895E1E8F0E080818860808380818160D9\r
+:1043E00080838FB7F89493E09093890090ED909339\r
+:1043F00088008FBF0895EFE6F0E0808182608083BF\r
+:104400000895EFE6F0E080818D7F80830895EFE6E8\r
+:10441000F0E0908182E08927808308951F920F92B7\r
+:104420000FB60F9211242F933F934F935F936F9387\r
+:104430007F938F939F93AF93BF93EF93FF9380915D\r
+:10444000DE019091DF0101969093DF018093DE0100\r
+:10445000811103C082E00E94F307E091DF01E6953D\r
+:10446000E695F0E0E657FB4FE4918091DE018E1374\r
+:1044700003C080E00E94F307FF91EF91BF91AF91DD\r
+:104480009F918F917F916F915F914F913F912F916C\r
+:104490000F900FBE0F901F90189504D06894B11123\r
+:1044A0008DC0089570D088F09F5790F0B92F99274C\r
+:1044B000B751A0F0D1F0660F771F881F991F1AF02F\r
+:1044C000BA95C9F712C0B13081F077D0B1E0089544\r
+:1044D00074C0672F782F8827B85F39F0B93FCCF3C5\r
+:1044E000869577956795B395D9F73EF49095809525\r
+:1044F000709561957F4F8F4F9F4F0895E89409C045\r
+:1045000097FB3EF490958095709561957F4F8F4F06\r
+:104510009F4F9923A9F0F92F96E9BB279395F6951C\r
+:10452000879577956795B795F111F8CFFAF4BB0F9A\r
+:1045300011F460FF1BC06F5F7F4F8F4F9F4F16C0FE\r
+:10454000882311F096E911C0772321F09EE8872F88\r
+:10455000762F05C0662371F096E8862F70E060E044\r
+:104560002AF09A95660F771F881FDAF7880F9695BD\r
+:10457000879597F9089557FD9058440F551F59F0A6\r
+:104580005F3F71F04795880F97FB991F61F09F3F40\r
+:1045900079F087950895121613061406551FF2CF69\r
+:1045A0004695F1DF08C0161617061806991FF1CFB9\r
+:1045B00086957105610508940895E894BB276627E0\r
+:1045C0007727CB0197F908950BD078C069D028F0F0\r
+:1045D0006ED018F0952309F05AC05FC01124EECFB9\r
+:1045E000CADFA0F3959FD1F3950F50E0551F629F4E\r
+:1045F000F001729FBB27F00DB11D639FAA27F00D3C\r
+:10460000B11DAA1F649F6627B00DA11D661F829F62\r
+:104610002227B00DA11D621F739FB00DA11D621F47\r
+:10462000839FA00D611D221F749F3327A00D611D64\r
+:10463000231F849F600D211D822F762F6A2F112446\r
+:104640009F5750408AF0E1F088234AF0EE0FFF1F99\r
+:10465000BB1F661F771F881F91505040A9F79E3FD0\r
+:10466000510570F014C0AACF5F3FECF3983EDCF325\r
+:10467000869577956795B795F795E7959F5FC1F70D\r
+:10468000FE2B880F911D9695879597F9089597F9B8\r
+:104690009F6780E870E060E008959FEF80EC0895E8\r
+:1046A00000240A9416161706180609060895002411\r
+:1046B0000A9412161306140605060895092E03948B\r
+:1046C000000C11F4882352F0BB0F40F4BF2B11F4FF\r
+:1046D00060FF04C06F5F7F4F8F4F9F4F089597FB20\r
+:1046E000072E16F4009407D077FD09D00E94892385\r
+:1046F00007FC05D03EF4909581959F4F08957095E5\r
+:1047000061957F4F0895EE0FFF1F0590F491E02D06\r
+:104710000994AA1BBB1B51E107C0AA1FBB1FA61708\r
+:10472000B70710F0A61BB70B881F991F5A95A9F75A\r
+:1047300080959095BC01CD010895F999FECF92BD69\r
+:1047400081BDF89A992780B50895A8E1B0E042E0CC\r
+:1047500050E00C94C523262FF999FECF92BD81BD60\r
+:10476000F89A019700B4021639F01FBA20BD0FB6AF\r
+:10477000F894FA9AF99A0FBE08950196272F0E948D\r
+:10478000AC230C94AB23DC01CB01FC01F999FECFE7\r
+:1047900006C0F2BDE1BDF89A319600B40D924150C9\r
+:0A47A0005040B8F70895F894FFCFD9\r
+:1047AA002002F507830860082C08F8070101BA01FE\r
+:1047BA0028080A03140A3F4D36394B04FE03C8037E\r
+:1047CA008F0322033B0354036D030102030405060E\r
+:0447DA0007080900C3\r
+:00000001FF\r
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 [pjrc.com/teensy/gcc.html](https://www.pjrc.com/teensy/gcc.html)
+3. Set up a build environment as per [the build guide](/BUILD_GUIDE.md)
- Using a Mac and have homebrew? just run `brew tap osx-cross/avr && brew install avr-libc`
-4. Copy `keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`)
+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.
led.c
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
- SRC := keymap_poker.c $(SRC)
+ SRC := keymaps/poker.c $(SRC)
endif
CONFIG_H = config.h
led.c
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
- SRC := keymap_poker.c $(SRC)
+ SRC := keymaps/poker.c $(SRC)
endif
CONFIG_H = config.h
## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files.
+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 firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:
### 1 Poker
-[keymap_poker.c](keymap_poker.c) emulates original Poker layers
-while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys.
+[poker.c](keymaps/poker.c) emulates original Poker layers
+while both [poker_bit.c](keymaps/poker_bit.c) and [poker_set.c](keymaps/poker_set.c) implement the same layout in different ways and they fix a minor issue of original Poker and enhance arrow keys.
Fn + Esc = `
Fn + {left, down, up, right} = {home, pgdown, pgup, end}
### 2. Plain
Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host.
-See [keymap_plain.c](keymap_plain.c) for detail.
+See [plain.c](keymaps/plain.c) for detail.
#### 1.0 Plain Default layer
,-----------------------------------------------------------.
### 3. Hasu
-This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail.
+This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [hasu.c](keymaps/hasu.c) for detail.
### 4. SpaceFN
-This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
+This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [spacefn.c](keymaps/spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
#### 4.0 Default layer
,-----------------------------------------------------------.
### 5. HHKB
-[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers.
+[hhkb.c](keymaps/hhkb.c) emulates original HHKB layers.
#### 5.0: Default layer
,-----------------------------------------------------------.
|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
+++ /dev/null
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Keymap 0: Default Layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
- * |-----------------------------------------------------------|
- * |Caps | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
- * |-----------------------------------------------------------|
- * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |
- * |-----------------------------------------------------------|
- * |Ctrl|Gui |Alt | Space |Alt |Fn4 |Fn4 |Fn1 |
- * `-----------------------------------------------------------'
- */
- KEYMAP_ANSI(
- ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- LCTL,A, S, D, F, G, H, J, K, L, FN2, QUOT, ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN1, FN9, \
- LCTL,LGUI,LALT, SPC, RALT,FN3, FN3, FN0),
- /* Keymap 1: colemak */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \
- BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \
- LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0),
- /* Keymap 2: dvorak */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \
- TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \
- CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \
- LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0),
- /* Keymap 3: workman */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \
- BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \
- LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0),
-
- /* Overlay 4: HHKB mode
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Inser|
- * |-----------------------------------------------------------|
- * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
- * |-----------------------------------------------------------|
- * |Shift | | | | | | +| -|End|PgD|Dow|Shift |
- * |-----------------------------------------------------------|
- * |Ctrl|Gui |Alt | Space |Alt |Gui |App | |
- * `-----------------------------------------------------------'
- */
- KEYMAP_ANSI(
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \
- CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,INS, \
- LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, ENT, \
- LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,FN4, TRNS),
- /* Overlay 5: Vi mode (Slash)
- * ,-----------------------------------------------------------.
- * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
- * |-----------------------------------------------------------|
- * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End| | | | |
- * |-----------------------------------------------------------|
- * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | | |Hom|PgD|PgU|End| |Shift |
- * |-----------------------------------------------------------|
- * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl|
- * `-----------------------------------------------------------'
- */
- KEYMAP_ANSI(
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \
- TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
- LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP, RGHT,TRNS,TRNS, ENT, \
- LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL),
- /* Overlay 6: Mouse mode (Semicolon/App)
- * ,-----------------------------------------------------------.
- * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|MwU|MwR| | | | |
- * |-----------------------------------------------------------|
- * |Contro| |Ac0|Ac1|Ac1| |McL|McD|McU|McR| | |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift |
- * |-----------------------------------------------------------|
- * |Ctrl|Gui |Alt | Space | | | | |
- * `-----------------------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- KEYMAP_ANSI(
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \
- TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
- LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS, ENT, \
- LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS, RSFT, \
- LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS,RCTL),
- /* Overlay 7: Layout selector
- * ,-----------------------------------------------------------.
- * | Lq| Lc| Ld| Lw| | | | | | | | | | |
- * |-----------------------------------------------------------|
- * | |Lq |Lw | | | | | | | | | | | |
- * |-----------------------------------------------------------|
- * | | | |Ld | | | | | | | | | |
- * |-----------------------------------------------------------|
- * | | | |Lc | | | | | | | | |
- * |-----------------------------------------------------------|
- * | | | | | | | | |
- * `-----------------------------------------------------------'
- * Lq: set Qwerty layout
- * Lc: set Colemak layout
- * Ld: set Dvorak layout
- * Lw: set Workman layout
- */
- KEYMAP_ANSI(
- FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_MOMENTARY(4),
- [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
- [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
- [3] = ACTION_LAYER_MOMENTARY(6),
- [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector
- [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout
- [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout
- [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout
- [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout
- [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
-};
+++ /dev/null
-#include "keymap_common.h"
-
-/*
- * HHKB Layout
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: Default layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
- * |-----------------------------------------------------------|
- * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
- * |-----------------------------------------------------------|
- * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn |
- * |-----------------------------------------------------------|
- * | |Gui |Alt | Space | |Alt |Gui | |
- * `-----------------------------------------------------------'
- */
- KEYMAP_HHKB(
- ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
- LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,FN0, \
- NO, LGUI,LALT, SPC, NO, RALT,RGUI,NO),
- /* 1: HHKB Fn layer
- * ,-----------------------------------------------------------.
- * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
- * |-----------------------------------------------------------|
- * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
- * |-----------------------------------------------------------|
- * | | | | | | | +| -|End|PgD|Dow| | |
- * |-----------------------------------------------------------|
- * | | | | | | | | |
- * `-----------------------------------------------------------'
- */
- KEYMAP_HHKB(
- PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \
- TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \
- TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_MOMENTARY(1),
-};
+++ /dev/null
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: qwerty */
- KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \
- LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, \
- LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL),
-};
-const uint16_t PROGMEM fn_actions[] = {};
+++ /dev/null
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: qwerty */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
- /* 1: colemak */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \
- BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \
- LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
- /* 2: dvorak */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \
- TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \
- CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \
- LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \
- LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
- /* 3: workman */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \
- BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \
- LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
- /* 4: Poker with Arrow */
- KEYMAP_ANSI(
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
- TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT),
- /* 5: Poker with Esc */
- KEYMAP_ANSI(
- ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
- /* 6: Poker Fn
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |
- * |-----------------------------------------------------------|
- * | |FnQ| Up| | | | | | |Cal| |Hom|Ins|FnL |
- * |-----------------------------------------------------------|
- * | |Lef|Dow|Rig| | |Psc|Slk|Pau| |Tsk|End| |
- * |-----------------------------------------------------------|
- * | |Del| |Web|Mut|VoU|VoD| |PgU|PgD|Del| |
- * |-----------------------------------------------------------|
- * | | | | FnS | | | | |
- * `-----------------------------------------------------------'
- * Fn: to Fn overlay
- * FnL: to Layout selector overaly
- * FnQ: toggle Esc overlay
- * FnS: toggle Arrow overlay
- */
- KEYMAP_ANSI(
- ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
- TRNS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4, \
- TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END, TRNS, \
- TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
- TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS),
- /* 7: Layout selector
- * ,-----------------------------------------------------------.
- * | Lq| Lc| Ld| Lw| | | | | | | | | | |
- * |-----------------------------------------------------------|
- * | |Lq |Lw | | | | | | | | | | | |
- * |-----------------------------------------------------------|
- * | | | |Ld | | | | | | | | | |
- * |-----------------------------------------------------------|
- * | | | |Lc | | | | | | | | |
- * |-----------------------------------------------------------|
- * | | | | | | | | |
- * `-----------------------------------------------------------'
- * Lq: set Qwerty layout
- * Lc: set Colemak layout
- * Ld: set Dvorak layout
- * Lw: set Workman layout
- */
- KEYMAP_ANSI(
- FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
-};
-const uint16_t PROGMEM fn_actions[] = {
- /* Poker Layout */
- [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay
- [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay
- [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay
- [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
- [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector
- [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout
- [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout
- [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout
- [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout
-};
+++ /dev/null
-#include "keymap_common.h"
-
-// Poker fix with toggle and bit operation
-// Fn + Esc = `
-// Fn + {left, down, up, right} = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: qwerty */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
- /* 4: Poker Default + Fn'd */
- [4] = KEYMAP_ANSI(
- TRNS,F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
- CAPS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
- TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END, TRNS, \
- TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
- TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS),
- /* 5: Poker with Arrow */
- KEYMAP_ANSI(
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, PGUP, \
- TRNS,TRNS,TRNS, TRNS, FN3, HOME,PGDN,END),
- /* 6: Poker with Esc */
- KEYMAP_ANSI(
- ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
- /* 7: Poker with Arrow + Fn'd */
- KEYMAP_ANSI(
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
- TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT),
-};
-const uint16_t PROGMEM fn_actions[] = {
- /* Poker Layout */
- [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc)
- [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle
- [2] = ACTION_LAYER_TOGGLE(6), // Poker Esc toggle
- [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH), // Poker Fn(with fix for Arrow)
- [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
-};
+++ /dev/null
-#include "keymap_common.h"
-
-// Poker fix with set(state transition)
-// Fn + Esc = `
-// Fn + {left, down, up, right} = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: qwerty */
- KEYMAP_ANSI(
- GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
- /* 1: Poker with Arrow */
- KEYMAP_ANSI(
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
- TRNS,TRNS,TRNS, TRNS, FN1, LEFT,DOWN,RGHT),
- /* 2: Poker with Esc */
- KEYMAP_ANSI(
- ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS, TRNS, FN2, TRNS,TRNS,TRNS),
- /* 3: Poker with Arrow and Esc */
- KEYMAP_ANSI(
- ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
- TRNS,TRNS,TRNS, TRNS, FN3, LEFT,DOWN,RGHT),
- /* 4: Poker Fn'd */
- KEYMAP_ANSI(
- ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
- TRNS,FN6, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
- TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
- TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
- TRNS,TRNS,TRNS, FN5, FN4, TRNS,TRNS,TRNS),
- /* 5: Poker Fn'd arrow */
- KEYMAP_ANSI(
- ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
- TRNS,FN7, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
- TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
- TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \
- TRNS,TRNS,TRNS, FN4, FN5, HOME,PGDN,END),
- /* 6: Poker Fn'd Esc */
- KEYMAP_ANSI(
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
- TRNS,FN4, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
- TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
- TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
- TRNS,TRNS,TRNS, FN7, FN6, TRNS,TRNS,TRNS),
- /* 7: Poker Fn'd Arrow + Esc */
- KEYMAP_ANSI(
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
- TRNS,FN5, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
- TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
- TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \
- TRNS,TRNS,TRNS, FN6, FN7, HOME,PGDN,END),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
- /* Poker Layout */
- [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press
- [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press
- [2] = ACTION_LAYER_SET(6, ON_PRESS), // FN2 move to Fn'd Esc when press
- [3] = ACTION_LAYER_SET(7, ON_PRESS), // FN3 move to Fn'd arrow + Esc when press
-
- //[4] = ACTION_LAYER_CLEAR(ON_RELEASE), // FN4 clear overlay when release
- [4] = ACTION_LAYER_SET(0, ON_RELEASE), // FN4 clear overlay when release
- [5] = ACTION_LAYER_SET(1, ON_RELEASE), // FN5 move to arrow when release
- [6] = ACTION_LAYER_SET(2, ON_RELEASE), // FN6 move to Esc when release
- [7] = ACTION_LAYER_SET(3, ON_RELEASE), // FN7 move to arrow + Esc when release
-
- [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
-};
+++ /dev/null
-#include "keymap_common.h"
-
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Keymap 0: Default Layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
- * |-----------------------------------------------------------|
- * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |
- * |-----------------------------------------------------------|
- * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
- * |-----------------------------------------------------------|
- * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl|
- * `-----------------------------------------------------------'
- */
- KEYMAP_ANSI(
- ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
- LCTL,LGUI,LALT, FN0, RALT,RGUI,APP, RCTL),
-
- /* Overlay 1: SpaceFN
- * ,-----------------------------------------------------------.
- * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
- * |-----------------------------------------------------------|
- * | | | | | | | |Hom|Up |End|Psc|Slk|Pau|Ins |
- * |-----------------------------------------------------------|
- * | | | | | | |PgU|Lef|Dow|Rig| | | |
- * |-----------------------------------------------------------|
- * | | | | | |Spc|PgD|` |~ | | | |
- * |-----------------------------------------------------------|
- * | | | | | | | | |
- * `-----------------------------------------------------------'
- */
- KEYMAP_ANSI(
- GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \
- TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS,INS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS, TRNS, \
- TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
- [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde
-};
--- /dev/null
+#include "keymap_common.h"
+
+/*
+ * Hasu
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
+ * |-----------------------------------------------------------|
+ * |Caps | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Alt |Fn4 |Fn4 |Fn1 |
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_ANSI(
+ ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ LCTL,A, S, D, F, G, H, J, K, L, FN2, QUOT, ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN1, FN9, \
+ LCTL,LGUI,LALT, SPC, RALT,FN3, FN3, FN0),
+ /* Keymap 1: colemak */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \
+ BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \
+ LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0),
+ /* Keymap 2: dvorak */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \
+ TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \
+ CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \
+ LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0),
+ /* Keymap 3: workman */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \
+ BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \
+ LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0),
+
+ /* Overlay 4: HHKB mode
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Inser|
+ * |-----------------------------------------------------------|
+ * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | | | +| -|End|PgD|Dow|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Alt |Gui |App | |
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_ANSI(
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \
+ CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,INS, \
+ LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, ENT, \
+ LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,FN4, TRNS),
+ /* Overlay 5: Vi mode (Slash)
+ * ,-----------------------------------------------------------.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
+ * |-----------------------------------------------------------|
+ * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End| | | | |
+ * |-----------------------------------------------------------|
+ * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | | |Hom|PgD|PgU|End| |Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl|
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_ANSI(
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \
+ TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
+ LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP, RGHT,TRNS,TRNS, ENT, \
+ LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL),
+ /* Overlay 6: Mouse mode (Semicolon/App)
+ * ,-----------------------------------------------------------.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|MwU|MwR| | | | |
+ * |-----------------------------------------------------------|
+ * |Contro| |Ac0|Ac1|Ac1| |McL|McD|McU|McR| | |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space | | | | |
+ * `-----------------------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ KEYMAP_ANSI(
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \
+ TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
+ LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS, ENT, \
+ LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS, RSFT, \
+ LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS,RCTL),
+ /* Overlay 7: Layout selector
+ * ,-----------------------------------------------------------.
+ * | Lq| Lc| Ld| Lw| | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | |Lq |Lw | | | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | | |Ld | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | | |Lc | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ * Lq: set Qwerty layout
+ * Lc: set Colemak layout
+ * Ld: set Dvorak layout
+ * Lw: set Workman layout
+ */
+ KEYMAP_ANSI(
+ FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_MOMENTARY(4),
+ [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
+ [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
+ [3] = ACTION_LAYER_MOMENTARY(6),
+ [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector
+ [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout
+ [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout
+ [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout
+ [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout
+ [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
+};
--- /dev/null
+#include "keymap_common.h"
+
+/*
+ * HHKB Layout
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: Default layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
+ * |-----------------------------------------------------------|
+ * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn |
+ * |-----------------------------------------------------------|
+ * | |Gui |Alt | Space | |Alt |Gui | |
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_HHKB(
+ ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
+ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,FN0, \
+ NO, LGUI,LALT, SPC, NO, RALT,RGUI,NO),
+ /* 1: HHKB Fn layer
+ * ,-----------------------------------------------------------.
+ * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
+ * |-----------------------------------------------------------|
+ * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
+ * |-----------------------------------------------------------|
+ * | | | | | | | +| -|End|PgD|Dow| | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_HHKB(
+ PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \
+ TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_MOMENTARY(1),
+};
--- /dev/null
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \
+ LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, \
+ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL),
+};
+const uint16_t PROGMEM fn_actions[] = {};
--- /dev/null
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
+ /* 1: colemak */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \
+ BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \
+ LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
+ /* 2: dvorak */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \
+ TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \
+ CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \
+ LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \
+ LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
+ /* 3: workman */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \
+ BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \
+ LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
+ /* 4: Poker with Arrow */
+ KEYMAP_ANSI(
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT),
+ /* 5: Poker with Esc */
+ KEYMAP_ANSI(
+ ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
+ /* 6: Poker Fn
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |
+ * |-----------------------------------------------------------|
+ * | |FnQ| Up| | | | | | |Cal| |Hom|Ins|FnL |
+ * |-----------------------------------------------------------|
+ * | |Lef|Dow|Rig| | |Psc|Slk|Pau| |Tsk|End| |
+ * |-----------------------------------------------------------|
+ * | |Del| |Web|Mut|VoU|VoD| |PgU|PgD|Del| |
+ * |-----------------------------------------------------------|
+ * | | | | FnS | | | | |
+ * `-----------------------------------------------------------'
+ * Fn: to Fn overlay
+ * FnL: to Layout selector overaly
+ * FnQ: toggle Esc overlay
+ * FnS: toggle Arrow overlay
+ */
+ KEYMAP_ANSI(
+ ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ TRNS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END, TRNS, \
+ TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
+ TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS),
+ /* 7: Layout selector
+ * ,-----------------------------------------------------------.
+ * | Lq| Lc| Ld| Lw| | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | |Lq |Lw | | | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | | |Ld | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | | |Lc | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ * Lq: set Qwerty layout
+ * Lc: set Colemak layout
+ * Ld: set Dvorak layout
+ * Lw: set Workman layout
+ */
+ KEYMAP_ANSI(
+ FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ /* Poker Layout */
+ [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay
+ [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay
+ [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay
+ [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
+ [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector
+ [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout
+ [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout
+ [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout
+ [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout
+};
--- /dev/null
+#include "keymap_common.h"
+
+// Poker fix with toggle and bit operation
+// Fn + Esc = `
+// Fn + {left, down, up, right} = {home, pgdown, pgup, end}
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
+ /* 4: Poker Default + Fn'd */
+ [4] = KEYMAP_ANSI(
+ TRNS,F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ CAPS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END, TRNS, \
+ TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
+ TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS),
+ /* 5: Poker with Arrow */
+ KEYMAP_ANSI(
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, PGUP, \
+ TRNS,TRNS,TRNS, TRNS, FN3, HOME,PGDN,END),
+ /* 6: Poker with Esc */
+ KEYMAP_ANSI(
+ ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
+ /* 7: Poker with Arrow + Fn'd */
+ KEYMAP_ANSI(
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ /* Poker Layout */
+ [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc)
+ [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle
+ [2] = ACTION_LAYER_TOGGLE(6), // Poker Esc toggle
+ [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH), // Poker Fn(with fix for Arrow)
+ [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
+};
--- /dev/null
+#include "keymap_common.h"
+
+// Poker fix with set(state transition)
+// Fn + Esc = `
+// Fn + {left, down, up, right} = {home, pgdown, pgup, end}
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ KEYMAP_ANSI(
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL),
+ /* 1: Poker with Arrow */
+ KEYMAP_ANSI(
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
+ TRNS,TRNS,TRNS, TRNS, FN1, LEFT,DOWN,RGHT),
+ /* 2: Poker with Esc */
+ KEYMAP_ANSI(
+ ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS, TRNS, FN2, TRNS,TRNS,TRNS),
+ /* 3: Poker with Arrow and Esc */
+ KEYMAP_ANSI(
+ ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \
+ TRNS,TRNS,TRNS, TRNS, FN3, LEFT,DOWN,RGHT),
+ /* 4: Poker Fn'd */
+ KEYMAP_ANSI(
+ ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ TRNS,FN6, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
+ TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
+ TRNS,TRNS,TRNS, FN5, FN4, TRNS,TRNS,TRNS),
+ /* 5: Poker Fn'd arrow */
+ KEYMAP_ANSI(
+ ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ TRNS,FN7, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
+ TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \
+ TRNS,TRNS,TRNS, FN4, FN5, HOME,PGDN,END),
+ /* 6: Poker Fn'd Esc */
+ KEYMAP_ANSI(
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ TRNS,FN4, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
+ TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \
+ TRNS,TRNS,TRNS, FN7, FN6, TRNS,TRNS,TRNS),
+ /* 7: Poker Fn'd Arrow + Esc */
+ KEYMAP_ANSI(
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ TRNS,FN5, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \
+ TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \
+ TRNS,TRNS,TRNS, FN6, FN7, HOME,PGDN,END),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+ /* Poker Layout */
+ [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press
+ [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press
+ [2] = ACTION_LAYER_SET(6, ON_PRESS), // FN2 move to Fn'd Esc when press
+ [3] = ACTION_LAYER_SET(7, ON_PRESS), // FN3 move to Fn'd arrow + Esc when press
+
+ //[4] = ACTION_LAYER_CLEAR(ON_RELEASE), // FN4 clear overlay when release
+ [4] = ACTION_LAYER_SET(0, ON_RELEASE), // FN4 clear overlay when release
+ [5] = ACTION_LAYER_SET(1, ON_RELEASE), // FN5 move to arrow when release
+ [6] = ACTION_LAYER_SET(2, ON_RELEASE), // FN6 move to Esc when release
+ [7] = ACTION_LAYER_SET(3, ON_RELEASE), // FN7 move to arrow + Esc when release
+
+ [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
+};
--- /dev/null
+#include "keymap_common.h"
+
+/*
+ * SpaceFN
+ * http://geekhack.org/index.php?topic=51069.0
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
+ * |-----------------------------------------------------------|
+ * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl|
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_ANSI(
+ ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \
+ LCTL,LGUI,LALT, FN0, RALT,RGUI,APP, RCTL),
+
+ /* Overlay 1: SpaceFN
+ * ,-----------------------------------------------------------.
+ * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+ * |-----------------------------------------------------------|
+ * | | | | | | | |Hom|Up |End|Psc|Slk|Pau|Ins |
+ * |-----------------------------------------------------------|
+ * | | | | | | |PgU|Lef|Dow|Rig| | | |
+ * |-----------------------------------------------------------|
+ * | | | | | |Spc|PgD|` |~ | | | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_ANSI(
+ GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \
+ TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS,INS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS, TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
+ [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde
+};
--- /dev/null
+#----------------------------------------------------------------------------\r
+# On command line:\r
+#\r
+# make all = Make software.\r
+#\r
+# make clean = Clean out built project files.\r
+#\r
+# make coff = Convert ELF to AVR COFF.\r
+#\r
+# make extcoff = Convert ELF to AVR Extended COFF.\r
+#\r
+# make program = Download the hex file to the device.\r
+# Please customize your programmer settings(PROGRAM_CMD)\r
+#\r
+# make teensy = Download the hex file to the device, using teensy_loader_cli.\r
+# (must have teensy_loader_cli installed).\r
+#\r
+# make dfu = Download the hex file to the device, using dfu-programmer (must\r
+# have dfu-programmer installed).\r
+#\r
+# make flip = Download the hex file to the device, using Atmel FLIP (must\r
+# have Atmel FLIP installed).\r
+#\r
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer\r
+# (must have dfu-programmer installed).\r
+#\r
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP\r
+# (must have Atmel FLIP installed).\r
+#\r
+# make debug = Start either simulavr or avarice as specified for debugging, \r
+# with avr-gdb or avr-insight as the front end for debugging.\r
+#\r
+# make filename.s = Just compile filename.c into the assembler code only.\r
+#\r
+# make filename.i = Create a preprocessed source file for use in submitting\r
+# bug reports to the GCC project.\r
+#\r
+# To rebuild project do "make clean" then "make all".\r
+#----------------------------------------------------------------------------\r
+\r
+# Target file name (without extension).\r
+TARGET = gh60\r
+\r
+\r
+# Directory common source filess exist\r
+TOP_DIR = ../..\r
+TMK_DIR = ../../tmk_core\r
+\r
+# Directory keyboard dependent files exist\r
+TARGET_DIR = .\r
+\r
+# # project specific files\r
+SRC = gh60.c\r
+\r
+ifdef KEYMAP\r
+ SRC := keymaps/$(KEYMAP).c $(SRC)\r
+else\r
+ SRC := keymaps/default.c $(SRC)\r
+endif\r
+\r
+CONFIG_H = config.h\r
+\r
+# MCU name\r
+#MCU = at90usb1287\r
+MCU = atmega32u4\r
+\r
+# Processor frequency.\r
+# This will define a symbol, F_CPU, in all source code files equal to the\r
+# processor frequency in Hz. You can then use this symbol in your source code to\r
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done\r
+# automatically to create a 32-bit value in your source code.\r
+#\r
+# This will be an integer division of F_USB below, as it is sourced by\r
+# F_USB after it has run through any CPU prescalers. Note that this value\r
+# does not *change* the processor frequency - it should merely be updated to\r
+# reflect the processor speed set externally so that the code can use accurate\r
+# software delays.\r
+F_CPU = 16000000\r
+\r
+\r
+#\r
+# LUFA specific\r
+#\r
+# Target architecture (see library "Board Types" documentation).\r
+ARCH = AVR8\r
+\r
+# Input clock frequency.\r
+# This will define a symbol, F_USB, in all source code files equal to the\r
+# input clock frequency (before any prescaling is performed) in Hz. This value may\r
+# differ from F_CPU if prescaling is used on the latter, and is required as the\r
+# raw input clock is fed directly to the PLL sections of the AVR for high speed\r
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'\r
+# at the end, this will be done automatically to create a 32-bit value in your\r
+# source code.\r
+#\r
+# If no clock division is performed on the input clock inside the AVR (via the\r
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.\r
+F_USB = $(F_CPU)\r
+\r
+# Interrupt driven control endpoint task(+60)\r
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT\r
+\r
+\r
+# Boot Section Size in *bytes*\r
+# Teensy halfKay 512\r
+# Teensy++ halfKay 1024\r
+# Atmel DFU loader 4096\r
+# LUFA bootloader 4096\r
+# USBaspLoader 2048\r
+OPT_DEFS += -DBOOTLOADER_SIZE=4096\r
+\r
+\r
+# Build Options\r
+# comment out to disable the options.\r
+#\r
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)\r
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)\r
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)\r
+# CONSOLE_ENABLE = yes # Console for debug(+400)\r
+# COMMAND_ENABLE = yes # Commands for debug and configuration\r
+KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key\r
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE\r
+# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend\r
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work\r
+# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality\r
+# MIDI_ENABLE = YES # MIDI controls\r
+# UNICODE_ENABLE = YES # Unicode\r
+# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID\r
+\r
+\r
+# Optimize size but this may cause error "relocation truncated to fit"\r
+#EXTRALDFLAGS = -Wl,--relax\r
+\r
+# Search Path\r
+VPATH += $(TARGET_DIR)\r
+VPATH += $(TOP_DIR)\r
+VPATH += $(TMK_DIR)\r
+\r
+include $(TOP_DIR)/quantum/quantum.mk\r
+\r
--- /dev/null
+## gh60 Rev C keyboard firmware\r
+\r
+![gh60 Rev C PCB](gh60revc.jpg)\r
+\r
+ /* Column pin configuration\r
+ * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13\r
+ * pin: F0 F1 E6 C7 C6 B6 D4 B1 B7 B5 B4 D7 D6 B3 (Rev.C)\r
+ */\r
+ \r
+ /* Row pin configuration\r
+ * row: 0 1 2 3 4\r
+ * pin: D0 D1 D2 D3 D5\r
+ */\r
+ \r
+ GPIO pads\r
+ 0 F7 WASD LEDs\r
+ 1 F6 ESC LED\r
+ 2 F5 FN LED\r
+ 3 F4 POKER Arrow LEDs\r
+ \r
+ B2 Capslock LED\r
+ B0 not connected\r
+ \r
+Functions to controls LED clusters\r
+ \r
+ gh60_caps_led_on()\r
+ gh60_poker_leds_on()\r
+ gh60_fn_led_on()\r
+ gh60_esc_led_on()\r
+ gh60_wasd_leds_on()\r
+ \r
+ gh60_caps_led_off()\r
+ gh60_poker_leds_off()\r
+ gh60_fn_led_off()\r
+ gh60_esc_led_off()\r
+ gh60_wasd_leds_off()\r
+ \r
+======================\r
+\r
+## Quantum MK Firmware\r
+\r
+For the full Quantum feature list, see [the parent README.md](/README.md).\r
+\r
+## Building\r
+\r
+Download or clone the whole firmware and navigate to the keyboard/gh60_rev_c 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. \r
+\r
+Depending on which keymap you would like to use, you will have to compile slightly differently.\r
+\r
+### Default\r
+To build with the default keymap, simply run `make`.\r
+\r
+### Other Keymaps\r
+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.\r
+\r
+To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:\r
+```\r
+$ make KEYMAP=[default|jack|<name>]\r
+```\r
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.\r
--- /dev/null
+/*\r
+Copyright 2012 Jun Wako <wakojun@gmail.com>\r
+\r
+This program is free software: you can redistribute it and/or modify\r
+it under the terms of the GNU General Public License as published by\r
+the Free Software Foundation, either version 2 of the License, or\r
+(at your option) any later version.\r
+\r
+This program is distributed in the hope that it will be useful,\r
+but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+GNU General Public License for more details.\r
+\r
+You should have received a copy of the GNU General Public License\r
+along with this program. If not, see <http://www.gnu.org/licenses/>.\r
+*/\r
+\r
+#ifndef CONFIG_H\r
+#define CONFIG_H\r
+\r
+#include "config_common.h"\r
+\r
+/* USB Device descriptor parameter */\r
+#define VENDOR_ID 0xFEED\r
+#define PRODUCT_ID 0x6060\r
+#define DEVICE_VER 0x0001\r
+#define MANUFACTURER You\r
+#define PRODUCT gh60\r
+#define DESCRIPTION A custom keyboard\r
+\r
+/* key matrix size */\r
+#define MATRIX_ROWS 5\r
+#define MATRIX_COLS 14\r
+\r
+/*\r
+ * Keyboard Matrix Assignments\r
+ *\r
+ * Change this to how you wired your keyboard\r
+ * COLS: AVR pins used for columns, left to right\r
+ * ROWS: AVR pins used for rows, top to bottom\r
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)\r
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)\r
+ *\r
+*/ \r
+#define COLS (int []){ F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }\r
+#define ROWS (int []){ D0, D1, D2, D3, D5 }\r
+\r
+/* COL2ROW or ROW2COL */\r
+#define DIODE_DIRECTION COL2ROW\r
+\r
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */\r
+#define DEBOUNCE 5\r
+\r
+/* define if matrix has ghost (lacks anti-ghosting diodes) */\r
+//#define MATRIX_HAS_GHOST\r
+\r
+/* number of backlight levels */\r
+#define BACKLIGHT_LEVELS 3\r
+\r
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */\r
+#define LOCKING_SUPPORT_ENABLE\r
+/* Locking resynchronize hack */\r
+#define LOCKING_RESYNC_ENABLE\r
+\r
+/* \r
+ * Force NKRO\r
+ *\r
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved \r
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the\r
+ * makefile for this to work.)\r
+ *\r
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)\r
+ * until the next keyboard reset.\r
+ *\r
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is \r
+ * fully operational during normal computer usage.\r
+ *\r
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)\r
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by\r
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a\r
+ * power-up.\r
+ *\r
+ */\r
+//#define FORCE_NKRO\r
+\r
+/*\r
+ * Magic Key Options\r
+ *\r
+ * Magic keys are hotkey commands that allow control over firmware functions of\r
+ * the keyboard. They are best used in combination with the HID Listen program,\r
+ * found here: https://www.pjrc.com/teensy/hid_listen.html\r
+ *\r
+ * The options below allow the magic key functionality to be changed. This is \r
+ * useful if your keyboard/keypad is missing keys and you want magic key support.\r
+ *\r
+ */\r
+\r
+/* key combination for magic key command */\r
+#define IS_COMMAND() ( \\r
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \\r
+)\r
+\r
+/* control how magic key switches layers */\r
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true\r
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true\r
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false\r
+\r
+/* override magic key keymap */\r
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS\r
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS\r
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM\r
+//#define MAGIC_KEY_HELP1 H\r
+//#define MAGIC_KEY_HELP2 SLASH\r
+//#define MAGIC_KEY_DEBUG D\r
+//#define MAGIC_KEY_DEBUG_MATRIX X\r
+//#define MAGIC_KEY_DEBUG_KBD K\r
+//#define MAGIC_KEY_DEBUG_MOUSE M\r
+//#define MAGIC_KEY_VERSION V\r
+//#define MAGIC_KEY_STATUS S\r
+//#define MAGIC_KEY_CONSOLE C\r
+//#define MAGIC_KEY_LAYER0_ALT1 ESC\r
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE\r
+//#define MAGIC_KEY_LAYER0 0\r
+//#define MAGIC_KEY_LAYER1 1\r
+//#define MAGIC_KEY_LAYER2 2\r
+//#define MAGIC_KEY_LAYER3 3\r
+//#define MAGIC_KEY_LAYER4 4\r
+//#define MAGIC_KEY_LAYER5 5\r
+//#define MAGIC_KEY_LAYER6 6\r
+//#define MAGIC_KEY_LAYER7 7\r
+//#define MAGIC_KEY_LAYER8 8\r
+//#define MAGIC_KEY_LAYER9 9\r
+//#define MAGIC_KEY_BOOTLOADER PAUSE\r
+//#define MAGIC_KEY_LOCK CAPS\r
+//#define MAGIC_KEY_EEPROM E\r
+//#define MAGIC_KEY_NKRO N\r
+//#define MAGIC_KEY_SLEEP_LED Z\r
+\r
+/*\r
+ * Feature disable options\r
+ * These options are also useful to firmware size reduction.\r
+ */\r
+\r
+/* disable debug print */\r
+//#define NO_DEBUG\r
+\r
+/* disable print */\r
+//#define NO_PRINT\r
+\r
+/* disable action features */\r
+//#define NO_ACTION_LAYER\r
+//#define NO_ACTION_TAPPING\r
+//#define NO_ACTION_ONESHOT\r
+//#define NO_ACTION_MACRO\r
+//#define NO_ACTION_FUNCTION\r
+\r
+#endif\r
--- /dev/null
+#include "gh60.h"\r
+#include "led.h"\r
+\r
+__attribute__ ((weak))\r
+void matrix_init_user(void) {\r
+ // leave this function blank - it can be defined in a keymap file\r
+};\r
+\r
+__attribute__ ((weak))\r
+void matrix_scan_user(void) {\r
+ // leave this function blank - it can be defined in a keymap file\r
+}\r
+\r
+__attribute__ ((weak))\r
+void process_action_user(keyrecord_t *record) {\r
+ // leave this function blank - it can be defined in a keymap file\r
+}\r
+\r
+__attribute__ ((weak))\r
+void led_set_user(uint8_t usb_led) {\r
+ // leave this function blank - it can be defined in a keymap file\r
+}\r
+\r
+void matrix_init_kb(void) {\r
+ // put your keyboard start-up code here\r
+ // runs once when the firmware starts up\r
+\r
+ matrix_init_user();\r
+}\r
+\r
+void matrix_scan_kb(void) {\r
+ // put your looping keyboard code here\r
+ // runs every cycle (a lot)\r
+\r
+ matrix_scan_user();\r
+}\r
+\r
+void process_action_kb(keyrecord_t *record) {\r
+ // put your per-action keyboard code here\r
+ // runs for every action, just before processing by the firmware\r
+\r
+ process_action_user(record);\r
+}\r
+\r
+void led_set_kb(uint8_t usb_led) {\r
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here\r
+ \r
+ if (usb_led & (1<<USB_LED_CAPS_LOCK)) {\r
+ gh60_caps_led_on();\r
+ } else {\r
+ gh60_caps_led_off(); \r
+ }\r
+ \r
+ // if (usb_led & (1<<USB_LED_NUM_LOCK)) {\r
+ // gh60_esc_led_on();\r
+ // } else {\r
+ // gh60_esc_led_off(); \r
+ // }\r
+ \r
+ // if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {\r
+ // gh60_fn_led_on();\r
+ // } else {\r
+ // gh60_fn_led_off(); \r
+ // }\r
+\r
+ led_set_user(usb_led); \r
+}\r
--- /dev/null
+#ifndef GH60_H\r
+#define GH60_H\r
+\r
+#include "matrix.h"\r
+#include "keymap_common.h"\r
+#include "backlight.h"\r
+#include <stddef.h>\r
+\r
+/* GH60 LEDs \r
+ * GPIO pads\r
+ * 0 F7 WASD LEDs\r
+ * 1 F6 ESC LED\r
+ * 2 F5 FN LED\r
+ * 3 F4 POKER Arrow LEDs\r
+ * B2 Capslock LED\r
+ * B0 not connected\r
+ */\r
+inline void gh60_caps_led_on(void) { DDRB |= (1<<2); PORTB &= ~(1<<2); }\r
+inline void gh60_poker_leds_on(void) { DDRF |= (1<<4); PORTF &= ~(1<<4); }\r
+inline void gh60_fn_led_on(void) { DDRF |= (1<<5); PORTF &= ~(1<<5); }\r
+inline void gh60_esc_led_on(void) { DDRF |= (1<<6); PORTF &= ~(1<<6); }\r
+inline void gh60_wasd_leds_on(void) { DDRF |= (1<<7); PORTF &= ~(1<<7); }\r
+\r
+inline void gh60_caps_led_off(void) { DDRB &= ~(1<<2); PORTB &= ~(1<<2); }\r
+inline void gh60_poker_leds_off(void) { DDRF &= ~(1<<4); PORTF &= ~(1<<4); }\r
+inline void gh60_fn_led_off(void) { DDRF &= ~(1<<5); PORTF &= ~(1<<5); }\r
+inline void gh60_esc_led_off(void) { DDRF &= ~(1<<6); PORTF &= ~(1<<6); }\r
+inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); }\r
+\r
+/* GH60 keymap definition macro\r
+ * K2C, K31 and K3C are extra keys for ISO\r
+ */\r
+#define KEYMAP( \\r
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \\r
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \\r
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \\r
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \\r
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \\r
+) { \\r
+ { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \\r
+ { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \\r
+ { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D }, \\r
+ { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \\r
+ { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \\r
+}\r
+\r
+/* ANSI valiant. No extra keys for ISO */\r
+#define KEYMAP_ANSI( \\r
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \\r
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \\r
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \\r
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \\r
+ K40, K41, K42, K45, K4A, K4B, K4C, K4D \\r
+) KEYMAP( \\r
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \\r
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \\r
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \\r
+ K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \\r
+ K40, K41, K42, K45, NO, K4A, K4B, K4C, K4D \\r
+)\r
+\r
+#define KEYMAP_HHKB( \\r
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\\r
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \\r
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \\r
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \\r
+ K40, K41, K42, K45, K4A, K4B, K4C, K4D \\r
+) KEYMAP( \\r
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \\r
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \\r
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \\r
+ K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \\r
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \\r
+)\r
+\r
+void matrix_init_user(void);\r
+void matrix_scan_user(void);\r
+void process_action_user(keyrecord_t *record);\r
+void led_set_user(uint8_t usb_led);\r
+\r
+#endif\r
--- /dev/null
+#include "gh60.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ KEYMAP(
+ ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
+ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \
+ LSFT,FN1, Z, X, C, V, B, N, M, COMM,DOT, SLSH,FN0, RSFT, \
+ LCTL,LGUI,LALT, SPC, BSLS,RALT,RGUI,APP, RCTL),
+ /* 1: fn */
+ KEYMAP(
+ ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
+ TRNS,TRNS,UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS),
+ /* 2: arrows */
+ KEYMAP(
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP, \
+ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,LEFT,DOWN,RGHT),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
+ [1] = ACTION_LAYER_TOGGLE(2), // toggle arrow overlay
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+void matrix_scan_user(void) {
+
+//Layer LED indicators
+ uint32_t layer = layer_state;
+
+ if (layer & (1<<1)) {
+ gh60_wasd_leds_on();
+ gh60_fn_led_on();
+ } else {
+ gh60_wasd_leds_off();
+ gh60_fn_led_off();
+ }
+
+ if (layer & (1<<2)) {
+ gh60_poker_leds_on();
+ gh60_esc_led_on();
+ } else {
+ gh60_poker_leds_off();
+ gh60_esc_led_off();
+ }
+
+};
--- /dev/null
+ /* Column pin configuration\r
+ * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13\r
+ * pin: F0 F1 E6 C7 C6 B6 D4 B1 B7 B5 B4 D7 D6 B3 (Rev.C)\r
+ */\r
+ \r
+ /* Row pin configuration\r
+ * row: 0 1 2 3 4\r
+ * pin: D0 D1 D2 D3 D5\r
+ */\r
+ \r
+ GPIO pads\r
+ 0 F7 WASD LEDs\r
+ 1 F6 ESC LED\r
+ 2 F5 FN LED\r
+ 3 F4 POKER Arrow LEDs\r
+ \r
+ B2 Capslock LED\r
+ B0 not connected
\ No newline at end of file
# Keymap file
#
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
ifdef HHKB_JP
- SRC := keymap_jp.c $(SRC)
+ SRC := keymaps/jp.c $(SRC)
else
- SRC := keymap_hhkb.c $(SRC)
+ SRC := keymaps/hhkb.c $(SRC)
endif
endif
-ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
+ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
OPT_DEFS += -DHHKB_JP
endif
led.c
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
- SRC := keymap_hasu.c $(SRC)
+ SRC := keymaps/hasu.c $(SRC)
endif
CONFIG_H = config.h
# Keymap file
#
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/$(KEYMAP).c $(SRC)
else
ifdef HHKB_JP
- SRC := keymap_jp.c $(SRC)
+ SRC := keymaps/jp.c $(SRC)
else
- SRC := keymap_hhkb.c $(SRC)
+ SRC := keymaps/hhkb.c $(SRC)
endif
endif
-ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
+ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
OPT_DEFS += -DHHKB_JP
endif
##Keymap
-To define your own keymap create file named `keymap_<name>.c` and see [keymap document](../../doc/keymap.md) and existent keymap files.
+To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
##Hardware
+++ /dev/null
-/*
- * Hasu: my personal keymap
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
- /* Layer 0: Default Layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
- * |-----------------------------------------------------------|
- * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Fn6 |
- * |-----------------------------------------------------------|
- * |Fn7 | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1|
- * `-----------------------------------------------------------'
- * |Gui|Alt | Fn4 |Fn5 |Gui|
- * `-------------------------------------------'
- */
- [0] = \
- KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
- LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN6, \
- FN7, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \
- LGUI,LALT, FN4, FN5, RGUI),
-
- /* Layer 1: HHKB mode[HHKB Fn]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
- * |-----------------------------------------------------------|
- * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
- * |-----------------------------------------------------------|
- * |Shift | | | | | | +| -|End|PgD|Dow|Shift | |
- * `-----------------------------------------------------------'
- * |Gui|Alt | Space |Alt |Gui|
- * `-------------------------------------------'
- */
- [1] = \
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \
- LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
- LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
- LGUI,LALT, TRNS, RALT,RGUI),
-
- /* Layer 2: Vi mode[Slash]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs|
- * |-----------------------------------------------------------|
- * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | |
- * `-----------------------------------------------------------'
- * |Gui|Alt | Space |Alt |Gui|
- * `-------------------------------------------'
- */
- [2] = \
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC, \
- LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \
- LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \
- LGUI,LALT, SPC, RALT,RGUI),
-
- /* Layer 3: Mouse mode(IJKL)[Semicolon]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
- * |-----------------------------------------------------------|
- * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
- * `-----------------------------------------------------------'
- * |Gui |Alt | Mb1 |Fn |Fn |
- * `--------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- [3] = \
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \
- LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,FN3, NO, ENT, \
- LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \
- LGUI,LALT, BTN1, TRNS,TRNS),
-
- /* Layer 4: Mouse mode(IJKL)[Space]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
- * |-----------------------------------------------------------|
- * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
- * `-----------------------------------------------------------'
- * |Gui |Alt | Mb1 |Fn |Fn |
- * `--------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- [4] = \
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \
- LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \
- LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \
- LGUI,LALT, TRNS, TRNS,TRNS),
-
-#if 0
- /* Layer 3: Mouse mode(HJKL)[Semicolon]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs|
- * |-----------------------------------------------------------|
- * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
- * `-----------------------------------------------------------'
- * |Gui |Alt | Mb1 |Alt |Fn0|
- * `--------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- TAB, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, NO, NO, BSPC, \
- LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
- LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \
- LGUI,LALT, BTN1, RALT,TRNS),
-
- /* Layer4: Mouse mode(HJKL)[Space]
- * ,-----------------------------------------------------------.
- * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Tab | | | | | |MwL|MwD|MwU|MwR| |Wbk|Wfr|Alt-T|
- * |-----------------------------------------------------------|
- * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return |
- * |-----------------------------------------------------------|
- * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
- * `-----------------------------------------------------------'
- * |Gui |Alt | Fn0 |Alt |Fn0|
- * `--------------------------------------------'
- * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
- */
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- FN8, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, FN9, FN10,FN8, \
- LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,BTN1,NO, ENT, \
- LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,NO, \
- LGUI,LALT, TRNS, RALT,RGUI),
-#endif
-#if 0
- /* Layer x: Matias half-qwerty keyboard style[Space]
- * ,-----------------------------------------------------------.
- * | -| 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | |Esc|
- * |-----------------------------------------------------------|
- * |Backs| P| O| I| U| Y| T| R| E| W| Q| | |Tab |
- * |-----------------------------------------------------------|
- * |Contro| ;| L| K| J| H| G| F| D| S| A|Con|Control |
- * |-----------------------------------------------------------|
- * |Shift | /| .| ,| M| N| B| V| C| X| Z|Shift | |
- * `-----------------------------------------------------------'
- * |Gui |Alt | Fn0 |Alt |Gui|
- * `--------------------------------------------'
- */
- KEYMAP(MINS,0, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO, NO, NO, ESC, \
- BSPC,P, O, I, U, Y, T, R, E, W, Q, NO, NO, TAB, \
- LCTL,SCLN,L, K, J, H, G, F, D, S, A, RCTL,RCTL, \
- LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \
- LGUI,LALT, TRNS, RALT,RGUI),
-#endif
-};
-
-
-
-/* id for user defined functions */
-enum function_id {
- LSHIFT_LPAREN,
-};
-
-enum macro_id {
- HELLO,
- VOLUP,
- ALT_TAB,
-};
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-#else
-const uint16_t fn_actions[] PROGMEM = {
-#endif
- [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used)
- [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps)
- [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
- [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
- [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space
- [5] = ACTION_LAYER_MOMENTARY(4), // Mousekey layer(IJKL)
- [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter
- [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift
- [8] = ACTION_MACRO(ALT_TAB), // Application switching
- [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
- [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
-
-// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // LControl with tap Backspace
-// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // LControl with tap Esc
-// [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // Function: LShift with tap '('
-// [x] = ACTION_MACRO(HELLO), // Macro: say hello
-// [x] = ACTION_MACRO(VOLUP), // Macro: media key
-};
-
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch (id) {
- case HELLO:
- return (record->event.pressed ?
- MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
- MACRO_NONE );
- case VOLUP:
- return (record->event.pressed ?
- MACRO( D(VOLU), U(VOLU), END ) :
- MACRO_NONE );
- case ALT_TAB:
- return (record->event.pressed ?
- MACRO( D(LALT), D(TAB), END ) :
- MACRO( U(TAB), END ));
- }
- return MACRO_NONE;
-}
-
-
-
-/*
- * user defined action function
- */
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- if (record->event.pressed) dprint("P"); else dprint("R");
- dprintf("%d", record->tap.count);
- if (record->tap.interrupted) dprint("i");
- dprint("\n");
-
- switch (id) {
- case LSHIFT_LPAREN:
- // Shift parentheses example: LShft + tap '('
- // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
- // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
- if (record->event.pressed) {
- if (record->tap.count > 0 && !record->tap.interrupted) {
- if (record->tap.interrupted) {
- dprint("tap interrupted\n");
- register_mods(MOD_BIT(KC_LSHIFT));
- }
- } else {
- register_mods(MOD_BIT(KC_LSHIFT));
- }
- } else {
- if (record->tap.count > 0 && !(record->tap.interrupted)) {
- add_weak_mods(MOD_BIT(KC_LSHIFT));
- send_keyboard_report();
- register_code(KC_9);
- unregister_code(KC_9);
- del_weak_mods(MOD_BIT(KC_LSHIFT));
- send_keyboard_report();
- record->tap.count = 0; // ad hoc: cancel tap
- } else {
- unregister_mods(MOD_BIT(KC_LSHIFT));
- }
- }
- break;
- }
-}
+++ /dev/null
-/*
- * HHKB Layout
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
- /* Layer 0: Default Layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
- * |-----------------------------------------------------------|
- * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter |
- * |-----------------------------------------------------------|
- * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
- * `-----------------------------------------------------------'
- * |Alt|Gui | Space |Gui |Alt|
- * `-------------------------------------------'
- */
- KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
- LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \
- LALT,LGUI, SPC, RGUI,RALT),
-
- /* Layer 1: HHKB mode (HHKB Fn)
- * ,-----------------------------------------------------------.
- * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
- * |-----------------------------------------------------------|
- * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
- * |-----------------------------------------------------------|
- * | | | | | | | +| -|End|PgD|Dow| | |
- * `-----------------------------------------------------------'
- * | | | | | |
- * `-------------------------------------------'
- */
- KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \
- TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \
- TRNS,TRNS, TRNS, TRNS,TRNS),
-};
-
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
- [0] = ACTION_LAYER_MOMENTARY(1),
- [1] = ACTION_LAYER_MOMENTARY(2),
- [2] = ACTION_LAYER_MOMENTARY(3),
- [3] = ACTION_LAYER_MOMENTARY(4),
- [4] = ACTION_LAYER_MOMENTARY(5),
- [5] = ACTION_LAYER_MOMENTARY(6),
- [6] = ACTION_LAYER_MOMENTARY(7),
- [7] = ACTION_LAYER_TOGGLE(1),
- [8] = ACTION_LAYER_TOGGLE(2),
- [9] = ACTION_LAYER_TOGGLE(3),
- [10] = ACTION_LAYER_TAP_TOGGLE(1),
- [11] = ACTION_LAYER_TAP_TOGGLE(2),
- [12] = ACTION_LAYER_TAP_TOGGLE(3),
- [13] = ACTION_LAYER_TAP_KEY(1, KC_A),
- [14] = ACTION_LAYER_TAP_KEY(2, KC_F),
- [15] = ACTION_LAYER_TAP_KEY(3, KC_J),
- [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
- [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
- [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
- [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
- [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
- [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
- [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
- [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
- [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
- [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
- [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
- [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
- [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
- [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
- [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC),
- [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE),
-};
-#else
-const uint16_t fn_actions[] PROGMEM = {
- [0] = ACTION_LAYER_MOMENTARY(1),
-};
-#endif
+++ /dev/null
-/*
- * HHKB JP Layout
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
- /* Layer 0: Default Layer */
- KEYMAP_JP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, \
- LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS,ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, UP, RSFT, \
- FN0, ZKHK,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),
-
- /* Layer 1: HHKB mode (HHKB Fn)
- * ,-----------------------------------------------------------.
- * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
- * |------------------------------------------------------` |
- * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | |
- * |-----------------------------------------------------------|
- * | | | | | | | +| -|End|PgD|Dow| | | |
- * |-----------------------------------------------------------|
- * | || | | | | | | | | || | | |
- * `-----------------------------------------------------------'
- */
- KEYMAP_JP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \
- TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS),
-};
-
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-#else
-const uint16_t fn_actions[] PROGMEM = {
-#endif
- [0] = ACTION_LAYER_MOMENTARY(1),
-};
+++ /dev/null
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-#include "keymap_common.h"
-
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Layer 0: Default Layer
- * ,-----------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp|
- * |-----------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
- * |-----------------------------------------------------------|
- * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter |
- * |-----------------------------------------------------------|
- * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
- * `-----------------------------------------------------------'
- * |Gui|Alt | SpaceFN |Alt |Gui|
- * `-------------------------------------------'
- */
- KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, BSPC, \
- TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
- LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \
- LGUI,LALT, FN1, RALT,RGUI),
-
- /* Layer 1: HHKB mode (HHKB Fn)
- * ,-----------------------------------------------------------.
- * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
- * |-----------------------------------------------------------|
- * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
- * |-----------------------------------------------------------|
- * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
- * |-----------------------------------------------------------|
- * | | | | | | | +| -|End|PgD|Dow| | |
- * `-----------------------------------------------------------'
- * | | | | | |
- * `-------------------------------------------'
- */
- KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
- CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \
- TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \
- TRNS,TRNS, SPC, TRNS,TRNS),
-
- /* Layer 2: SpaceFN
- * ,-----------------------------------------------------------.
- * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Del|
- * |-----------------------------------------------------------|
- * | | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins |
- * |-----------------------------------------------------------|
- * | | | | | | |PgU|Lef|Dow|Rig| | | |
- * |-----------------------------------------------------------|
- * | | | | | |Spc|PgD|` |~ | | | | |
- * `-----------------------------------------------------------'
- * | | | | | |
- * `-------------------------------------------'
- */
- KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, \
- TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS, \
- TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO, \
- TRNS,TRNS, TRNS, TRNS,TRNS),
-};
-
-
-/*
- * user defined action function
- */
-enum function_id {
- CTRL_SPACE_I, // Ctrl + Up(SpaceFN) -> PgUp
-};
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-# define MODS_CTRL_MASK (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
- static uint8_t ctrl_space_i_prev_ctrl;
-
- switch (id) {
- // Ctrl + Up(SpaceFN) -> PgUp
- case CTRL_SPACE_I:
- ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
- if (record->event.pressed) {
- if (ctrl_space_i_prev_ctrl) {
- del_mods(ctrl_space_i_prev_ctrl); // remove Ctrl
- add_key(KC_PGUP);
- send_keyboard_report(); // send PgUp without Ctrl
- add_mods(ctrl_space_i_prev_ctrl); // return Ctrl but not sent
- } else {
- add_key(KC_UP);
- send_keyboard_report();
- }
- } else {
- if (ctrl_space_i_prev_ctrl) {
- del_key(KC_PGUP);
- send_keyboard_report();
- } else {
- del_key(KC_UP);
- send_keyboard_report();
- }
- }
- break;
- }
-}
-
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_MOMENTARY(1),
- [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
- [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde
- [3] = ACTION_FUNCTION(CTRL_SPACE_I), // Ctrl + Up(SpaceFN) -> PgUp
-};
--- /dev/null
+/*
+ * Hasu: my personal keymap
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+ /* Layer 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
+ * |-----------------------------------------------------------|
+ * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Fn6 |
+ * |-----------------------------------------------------------|
+ * |Fn7 | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1|
+ * `-----------------------------------------------------------'
+ * |Gui|Alt | Fn4 |Fn5 |Gui|
+ * `-------------------------------------------'
+ */
+ [0] = \
+ KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
+ LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN6, \
+ FN7, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \
+ LGUI,LALT, FN4, FN5, RGUI),
+
+ /* Layer 1: HHKB mode[HHKB Fn]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
+ * |-----------------------------------------------------------|
+ * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | | | +| -|End|PgD|Dow|Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui|Alt | Space |Alt |Gui|
+ * `-------------------------------------------'
+ */
+ [1] = \
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \
+ LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
+ LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
+ LGUI,LALT, TRNS, RALT,RGUI),
+
+ /* Layer 2: Vi mode[Slash]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs|
+ * |-----------------------------------------------------------|
+ * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui|Alt | Space |Alt |Gui|
+ * `-------------------------------------------'
+ */
+ [2] = \
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC, \
+ LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \
+ LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \
+ LGUI,LALT, SPC, RALT,RGUI),
+
+ /* Layer 3: Mouse mode(IJKL)[Semicolon]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+ * |-----------------------------------------------------------|
+ * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui |Alt | Mb1 |Fn |Fn |
+ * `--------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ [3] = \
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \
+ LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,FN3, NO, ENT, \
+ LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \
+ LGUI,LALT, BTN1, TRNS,TRNS),
+
+ /* Layer 4: Mouse mode(IJKL)[Space]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+ * |-----------------------------------------------------------|
+ * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui |Alt | Mb1 |Fn |Fn |
+ * `--------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ [4] = \
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \
+ LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \
+ LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \
+ LGUI,LALT, TRNS, TRNS,TRNS),
+
+#if 0
+ /* Layer 3: Mouse mode(HJKL)[Semicolon]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs|
+ * |-----------------------------------------------------------|
+ * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui |Alt | Mb1 |Alt |Fn0|
+ * `--------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ TAB, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, NO, NO, BSPC, \
+ LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
+ LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \
+ LGUI,LALT, BTN1, RALT,TRNS),
+
+ /* Layer4: Mouse mode(HJKL)[Space]
+ * ,-----------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Tab | | | | | |MwL|MwD|MwU|MwR| |Wbk|Wfr|Alt-T|
+ * |-----------------------------------------------------------|
+ * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return |
+ * |-----------------------------------------------------------|
+ * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui |Alt | Fn0 |Alt |Fn0|
+ * `--------------------------------------------'
+ * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+ */
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ FN8, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, FN9, FN10,FN8, \
+ LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,BTN1,NO, ENT, \
+ LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,NO, \
+ LGUI,LALT, TRNS, RALT,RGUI),
+#endif
+#if 0
+ /* Layer x: Matias half-qwerty keyboard style[Space]
+ * ,-----------------------------------------------------------.
+ * | -| 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | |Esc|
+ * |-----------------------------------------------------------|
+ * |Backs| P| O| I| U| Y| T| R| E| W| Q| | |Tab |
+ * |-----------------------------------------------------------|
+ * |Contro| ;| L| K| J| H| G| F| D| S| A|Con|Control |
+ * |-----------------------------------------------------------|
+ * |Shift | /| .| ,| M| N| B| V| C| X| Z|Shift | |
+ * `-----------------------------------------------------------'
+ * |Gui |Alt | Fn0 |Alt |Gui|
+ * `--------------------------------------------'
+ */
+ KEYMAP(MINS,0, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO, NO, NO, ESC, \
+ BSPC,P, O, I, U, Y, T, R, E, W, Q, NO, NO, TAB, \
+ LCTL,SCLN,L, K, J, H, G, F, D, S, A, RCTL,RCTL, \
+ LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \
+ LGUI,LALT, TRNS, RALT,RGUI),
+#endif
+};
+
+
+
+/* id for user defined functions */
+enum function_id {
+ LSHIFT_LPAREN,
+};
+
+enum macro_id {
+ HELLO,
+ VOLUP,
+ ALT_TAB,
+};
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+const uint16_t fn_actions[] PROGMEM = {
+#endif
+ [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used)
+ [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps)
+ [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
+ [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
+ [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space
+ [5] = ACTION_LAYER_MOMENTARY(4), // Mousekey layer(IJKL)
+ [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter
+ [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift
+ [8] = ACTION_MACRO(ALT_TAB), // Application switching
+ [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
+ [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
+
+// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // LControl with tap Backspace
+// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // LControl with tap Esc
+// [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // Function: LShift with tap '('
+// [x] = ACTION_MACRO(HELLO), // Macro: say hello
+// [x] = ACTION_MACRO(VOLUP), // Macro: media key
+};
+
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch (id) {
+ case HELLO:
+ return (record->event.pressed ?
+ MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
+ MACRO_NONE );
+ case VOLUP:
+ return (record->event.pressed ?
+ MACRO( D(VOLU), U(VOLU), END ) :
+ MACRO_NONE );
+ case ALT_TAB:
+ return (record->event.pressed ?
+ MACRO( D(LALT), D(TAB), END ) :
+ MACRO( U(TAB), END ));
+ }
+ return MACRO_NONE;
+}
+
+
+
+/*
+ * user defined action function
+ */
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ if (record->event.pressed) dprint("P"); else dprint("R");
+ dprintf("%d", record->tap.count);
+ if (record->tap.interrupted) dprint("i");
+ dprint("\n");
+
+ switch (id) {
+ case LSHIFT_LPAREN:
+ // Shift parentheses example: LShft + tap '('
+ // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
+ // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
+ if (record->event.pressed) {
+ if (record->tap.count > 0 && !record->tap.interrupted) {
+ if (record->tap.interrupted) {
+ dprint("tap interrupted\n");
+ register_mods(MOD_BIT(KC_LSHIFT));
+ }
+ } else {
+ register_mods(MOD_BIT(KC_LSHIFT));
+ }
+ } else {
+ if (record->tap.count > 0 && !(record->tap.interrupted)) {
+ add_weak_mods(MOD_BIT(KC_LSHIFT));
+ send_keyboard_report();
+ register_code(KC_9);
+ unregister_code(KC_9);
+ del_weak_mods(MOD_BIT(KC_LSHIFT));
+ send_keyboard_report();
+ record->tap.count = 0; // ad hoc: cancel tap
+ } else {
+ unregister_mods(MOD_BIT(KC_LSHIFT));
+ }
+ }
+ break;
+ }
+}
--- /dev/null
+/*
+ * HHKB Layout
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+ /* Layer 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
+ * |-----------------------------------------------------------|
+ * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
+ * `-----------------------------------------------------------'
+ * |Alt|Gui | Space |Gui |Alt|
+ * `-------------------------------------------'
+ */
+ KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
+ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \
+ LALT,LGUI, SPC, RGUI,RALT),
+
+ /* Layer 1: HHKB mode (HHKB Fn)
+ * ,-----------------------------------------------------------.
+ * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
+ * |-----------------------------------------------------------|
+ * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
+ * |-----------------------------------------------------------|
+ * | | | | | | | +| -|End|PgD|Dow| | |
+ * `-----------------------------------------------------------'
+ * | | | | | |
+ * `-------------------------------------------'
+ */
+ KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \
+ TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \
+ TRNS,TRNS, TRNS, TRNS,TRNS),
+};
+
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+ [0] = ACTION_LAYER_MOMENTARY(1),
+ [1] = ACTION_LAYER_MOMENTARY(2),
+ [2] = ACTION_LAYER_MOMENTARY(3),
+ [3] = ACTION_LAYER_MOMENTARY(4),
+ [4] = ACTION_LAYER_MOMENTARY(5),
+ [5] = ACTION_LAYER_MOMENTARY(6),
+ [6] = ACTION_LAYER_MOMENTARY(7),
+ [7] = ACTION_LAYER_TOGGLE(1),
+ [8] = ACTION_LAYER_TOGGLE(2),
+ [9] = ACTION_LAYER_TOGGLE(3),
+ [10] = ACTION_LAYER_TAP_TOGGLE(1),
+ [11] = ACTION_LAYER_TAP_TOGGLE(2),
+ [12] = ACTION_LAYER_TAP_TOGGLE(3),
+ [13] = ACTION_LAYER_TAP_KEY(1, KC_A),
+ [14] = ACTION_LAYER_TAP_KEY(2, KC_F),
+ [15] = ACTION_LAYER_TAP_KEY(3, KC_J),
+ [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
+ [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
+ [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
+ [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
+ [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
+ [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
+ [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
+ [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
+ [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
+ [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
+ [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
+ [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
+ [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
+ [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
+ [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC),
+ [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE),
+};
+#else
+const uint16_t fn_actions[] PROGMEM = {
+ [0] = ACTION_LAYER_MOMENTARY(1),
+};
+#endif
--- /dev/null
+/*
+ * HHKB JP Layout
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+ /* Layer 0: Default Layer */
+ KEYMAP_JP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, \
+ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS,ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, UP, RSFT, \
+ FN0, ZKHK,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),
+
+ /* Layer 1: HHKB mode (HHKB Fn)
+ * ,-----------------------------------------------------------.
+ * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
+ * |------------------------------------------------------` |
+ * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | +| -|End|PgD|Dow| | | |
+ * |-----------------------------------------------------------|
+ * | || | | | | | | | | || | | |
+ * `-----------------------------------------------------------'
+ */
+ KEYMAP_JP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \
+ TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS),
+};
+
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+const uint16_t fn_actions[] PROGMEM = {
+#endif
+ [0] = ACTION_LAYER_MOMENTARY(1),
+};
--- /dev/null
+/*
+ * SpaceFN
+ * http://geekhack.org/index.php?topic=51069.0
+ */
+#include "keymap_common.h"
+
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Layer 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp|
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
+ * |-----------------------------------------------------------|
+ * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
+ * `-----------------------------------------------------------'
+ * |Gui|Alt | SpaceFN |Alt |Gui|
+ * `-------------------------------------------'
+ */
+ KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, BSPC, \
+ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
+ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
+ LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \
+ LGUI,LALT, FN1, RALT,RGUI),
+
+ /* Layer 1: HHKB mode (HHKB Fn)
+ * ,-----------------------------------------------------------.
+ * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ * |-----------------------------------------------------------|
+ * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
+ * |-----------------------------------------------------------|
+ * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
+ * |-----------------------------------------------------------|
+ * | | | | | | | +| -|End|PgD|Dow| | |
+ * `-----------------------------------------------------------'
+ * | | | | | |
+ * `-------------------------------------------'
+ */
+ KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
+ CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \
+ TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \
+ TRNS,TRNS, SPC, TRNS,TRNS),
+
+ /* Layer 2: SpaceFN
+ * ,-----------------------------------------------------------.
+ * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Del|
+ * |-----------------------------------------------------------|
+ * | | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins |
+ * |-----------------------------------------------------------|
+ * | | | | | | |PgU|Lef|Dow|Rig| | | |
+ * |-----------------------------------------------------------|
+ * | | | | | |Spc|PgD|` |~ | | | | |
+ * `-----------------------------------------------------------'
+ * | | | | | |
+ * `-------------------------------------------'
+ */
+ KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, \
+ TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS, \
+ TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO, \
+ TRNS,TRNS, TRNS, TRNS,TRNS),
+};
+
+
+/*
+ * user defined action function
+ */
+enum function_id {
+ CTRL_SPACE_I, // Ctrl + Up(SpaceFN) -> PgUp
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+# define MODS_CTRL_MASK (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
+ static uint8_t ctrl_space_i_prev_ctrl;
+
+ switch (id) {
+ // Ctrl + Up(SpaceFN) -> PgUp
+ case CTRL_SPACE_I:
+ ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (ctrl_space_i_prev_ctrl) {
+ del_mods(ctrl_space_i_prev_ctrl); // remove Ctrl
+ add_key(KC_PGUP);
+ send_keyboard_report(); // send PgUp without Ctrl
+ add_mods(ctrl_space_i_prev_ctrl); // return Ctrl but not sent
+ } else {
+ add_key(KC_UP);
+ send_keyboard_report();
+ }
+ } else {
+ if (ctrl_space_i_prev_ctrl) {
+ del_key(KC_PGUP);
+ send_keyboard_report();
+ } else {
+ del_key(KC_UP);
+ send_keyboard_report();
+ }
+ }
+ break;
+ }
+}
+
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_MOMENTARY(1),
+ [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
+ [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde
+ [3] = ACTION_FUNCTION(CTRL_SPACE_I), // Ctrl + Up(SpaceFN) -> PgUp
+};
xprintf("%s(%d)\r\n", s, strlen(s));
if (strlen(s) == 12) {
for (int i = 0; i < 12; i++) {
- eeprom_write_byte(eeaddr+i, *(s+i));
+ eeprom_update_byte(eeaddr+i, *(s+i));
dprintf("%c ", *(s+i));
}
dprint("\r\n");
matrix.c
ifdef KEYMAP
- SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/keymaps/$(KEYMAP).c $(SRC)
else
- SRC := keymaps/keymap_default.c $(SRC)
+ SRC := keymaps/keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
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 `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` 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 **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
--- /dev/null
+/* -*- eval: (turn-on-orgtbl); -*-
+ * default HHKB Layout
+ */
+#include "hhkb_qmk.h"
+
+#define BASE 0
+#define HHKB 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BASE Level: Default Layer
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+
+ |------+------+-----------------------+------+------|
+ | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
+ |------+------+-----------------------+------+------|
+ */
+
+ [BASE] = KEYMAP( // default layer
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
+ KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT),
+
+
+
+ /* Layer HHKB: HHKB mode (HHKB Fn)
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | | | | | | + | - | End | PgD | Dow | | | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+ |------+------+----------------------+------+------+
+ | **** | **** | ******************** | **** | **** |
+ |------+------+----------------------+------+------+
+
+ */
+
+ [HHKB] = KEYMAP(
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+++ /dev/null
-/* -*- eval: (turn-on-orgtbl); -*-
- * default HHKB Layout
- */
-#include "hhkb_qmk.h"
-
-#define BASE 0
-#define HHKB 1
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* BASE Level: Default Layer
- |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
- | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | |
- |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
- |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-
- |------+------+-----------------------+------+------|
- | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
- |------+------+-----------------------+------+------|
- */
-
- [BASE] = KEYMAP( // default layer
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
- KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT),
-
-
-
- /* Layer HHKB: HHKB mode (HHKB Fn)
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | | | | | | | + | - | End | PgD | Dow | | | | |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
- |------+------+----------------------+------+------+
- | **** | **** | ******************** | **** | **** |
- |------+------+----------------------+------+------+
-
- */
-
- [HHKB] = KEYMAP(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
- }
- break;
- }
- return MACRO_NONE;
-};
+++ /dev/null
-/* -*- eval: (turn-on-orgtbl); -*-
- * lxol HHKB Layout
- */
-#include "hhkb_qmk.h"
-
-#define BASE 0
-#define WIN 1
-#define HHKB 2
-#define RGUILEV 3
-#define LGUILEV 4
-#define RALTLEV 5
-#define LALTLEV 6
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Layer 0: Default Layer
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
- |------+------+-------+------+------|
- | LAlt | LGUI | Space | RGUI | RAlt |
- |------+------+-------+------+------|
- */
-
- [BASE] = KEYMAP( // layer 0 : default
-
-
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_LCTL, LT(LALTLEV,KC_A), LT(LGUILEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RGUILEV,KC_L), LT(RALTLEV,KC_SCLN), KC_QUOT, KC_FN0, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
- KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT),
-
-
-
- /* Layer 1: HHKB mode (HHKB Fn)
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
- | | | | | | | + | - | End | PgD | Dow | | | | |
- |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
- |---+---+---+---+---|
- | | | | | |
- |---+---+---+---+---|
- */
-
- [HHKB] = KEYMAP(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-
- /* Layer LGUI: All keys with RGUI modifier
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
- |------+------+-------+------+------|
- | LAlt | LGUI | Space | RGUI | RAlt |
- |------+------+-------+------+------|
- */
-
- [RGUILEV] = KEYMAP( // Right GUI layer by KC_L
-
- RGUI(KC_ESC), RGUI(KC_1), RGUI(KC_2), RGUI(KC_3), RGUI(KC_4), RGUI(KC_5), RGUI(KC_6), RGUI(KC_7), RGUI(KC_8), RGUI(KC_9), RGUI(KC_0), RGUI(KC_MINS), RGUI(KC_EQL), RGUI(KC_BSLS), RGUI(KC_GRV), \
- RGUI(KC_TAB), RGUI(KC_Q), RGUI(KC_W), RGUI(KC_E), RGUI(KC_R), RGUI(KC_T), RGUI(KC_Y), RGUI(KC_U), RGUI(KC_I), RGUI(KC_O), RGUI(KC_P), RGUI(KC_LBRC), RGUI(KC_RBRC), RGUI(KC_BSPC), \
- RGUI(KC_LCTL), RGUI(KC_A), RGUI(KC_S), RGUI(KC_D), RGUI(KC_F), RGUI(KC_G), RGUI(KC_H), RGUI(KC_J), RGUI(KC_K), KC_TRNS, KC_TRNS, RGUI(KC_QUOT), KC_FN0, \
- RGUI(KC_LSFT), RGUI(KC_Z), RGUI(KC_X), RGUI(KC_C), RGUI(KC_V), RGUI(KC_B), RGUI(KC_N), RGUI(KC_M), RGUI(KC_COMM), RGUI(KC_DOT), RGUI(KC_SLSH), RGUI(KC_RSFT), KC_TRNS, \
- KC_LALT, KC_LGUI, RGUI(KC_SPC), KC_RGUI, KC_RALT),
-
- /* Layer LGUI: All keys with LGUI modifier
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
- |------+------+-------+------+------|
- | LAlt | LGUI | Space | LGUI | RAlt |
- |------+------+-------+------+------|
- */
-
- [LGUILEV] = KEYMAP( // Right GUI layer by KC_L
-
- LGUI(KC_ESC), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS), LGUI(KC_EQL), LGUI(KC_BSLS), LGUI(KC_GRV), \
- LGUI(KC_TAB), LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), LGUI(KC_BSPC), \
- LGUI(KC_LCTL), KC_TRNS, KC_TRNS, LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), LGUI(KC_SCLN), LGUI(KC_QUOT), KC_FN0, \
- KC_LSFT, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), KC_RSFT, KC_TRNS, \
- KC_LALT, KC_LGUI, LGUI(KC_SPC), KC_LGUI, KC_RALT),
-
- /* Layer LALT: All keys with RALT modifier
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
- |------+------+-------+------+------|
- | LAlt | LGUI | Space | RGUI | RAlt |
- |------+------+-------+------+------|
- */
-
- [RALTLEV] = KEYMAP( // Right ALT layer by KC_L
-
- RALT(KC_ESC), RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_5), RALT(KC_6), RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), RALT(KC_EQL), RALT(KC_BSLS), RALT(KC_GRV), \
- RALT(KC_TAB), RALT(KC_Q), RALT(KC_W), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(KC_Y), RALT(KC_U), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC), RALT(KC_RBRC), RALT(KC_BSPC), \
- RALT(KC_LCTL), RALT(KC_A), RALT(KC_S), RALT(KC_D), RALT(KC_F), RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), KC_TRNS, KC_TRNS, RALT(KC_QUOT), KC_FN0, \
- RALT(KC_LSFT), RALT(KC_Z), RALT(KC_X), RALT(KC_C), RALT(KC_V), RALT(KC_B), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), RALT(KC_SLSH), RALT(KC_RSFT), KC_TRNS, \
- KC_LALT, KC_LGUI, RALT(KC_SPC), KC_RGUI, KC_RALT),
-
- /* Layer LALT: All keys with LALT modifier
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
- |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
- |------+------+-------+------+------|
- | LAlt | LGUI | Space | LGUI | RAlt |
- |------+------+-------+------+------|
- */
-
- [LALTLEV] = KEYMAP( // Right ALT layer by KC_L
-
- LALT(KC_ESC), LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), LALT(KC_MINS), LALT(KC_EQL), LALT(KC_BSLS), LALT(KC_GRV), \
- LALT(KC_TAB), LALT(KC_Q), LALT(KC_W), LALT(KC_E), LALT(KC_R), LALT(KC_T), LALT(KC_Y), LALT(KC_U), LALT(KC_I), LALT(KC_O), LALT(KC_P), LALT(KC_LBRC), LALT(KC_RBRC), LALT(KC_BSPC), \
- LALT(KC_LCTL), KC_TRNS, KC_TRNS, LALT(KC_D), LALT(KC_F), LALT(KC_G), LALT(KC_H), LALT(KC_J), LALT(KC_K), LALT(KC_L), LALT(KC_SCLN), LALT(KC_QUOT), KC_FN0, \
- KC_LSFT, LALT(KC_Z), LALT(KC_X), LALT(KC_C), LALT(KC_V), LALT(KC_B), LALT(KC_N), LALT(KC_M), LALT(KC_COMM), LALT(KC_DOT), LALT(KC_SLSH), KC_RSFT, KC_TRNS, \
- KC_LALT, KC_LGUI, LALT(KC_SPC), KC_LGUI, KC_RALT),
-
-
- /* Layer WIN: Win layer
- |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
- | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
- |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
- | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
- |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
- | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | |
- |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
- | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
- |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-
- |------+------+-------+------+------|
- | LGui | LAlt | Space | RGui | Ralt |
- |------+------+-------+------+------|
- */
-
- [WIN] = KEYMAP( // BASE level with swapped GUI/ALT
-
-
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_LCTL, LT(LGUILEV,KC_A), LT(LALTLEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RALTLEV,KC_L), LT(RGUILEV,KC_SCLN), KC_QUOT, KC_FN0, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
- KC_RGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI)};
-
-
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT) // RControl with tap Enter*
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
- }
- break;
- }
- return MACRO_NONE;
-};
--- /dev/null
+/* -*- eval: (turn-on-orgtbl); -*-
+ * lxol HHKB Layout
+ */
+#include "hhkb_qmk.h"
+
+#define BASE 0
+#define WIN 1
+#define HHKB 2
+#define RGUILEV 3
+#define LGUILEV 4
+#define RALTLEV 5
+#define LALTLEV 6
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Layer 0: Default Layer
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+ |------+------+-------+------+------|
+ | LAlt | LGUI | Space | RGUI | RAlt |
+ |------+------+-------+------+------|
+ */
+
+ [BASE] = KEYMAP( // layer 0 : default
+
+
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
+ KC_LCTL, LT(LALTLEV,KC_A), LT(LGUILEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RGUILEV,KC_L), LT(RALTLEV,KC_SCLN), KC_QUOT, KC_FN0, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
+ KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT),
+
+
+
+ /* Layer 1: HHKB mode (HHKB Fn)
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | | | | | | + | - | End | PgD | Dow | | | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+ |---+---+---+---+---|
+ | | | | | |
+ |---+---+---+---+---|
+ */
+
+ [HHKB] = KEYMAP(
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+
+ /* Layer LGUI: All keys with RGUI modifier
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+ |------+------+-------+------+------|
+ | LAlt | LGUI | Space | RGUI | RAlt |
+ |------+------+-------+------+------|
+ */
+
+ [RGUILEV] = KEYMAP( // Right GUI layer by KC_L
+
+ RGUI(KC_ESC), RGUI(KC_1), RGUI(KC_2), RGUI(KC_3), RGUI(KC_4), RGUI(KC_5), RGUI(KC_6), RGUI(KC_7), RGUI(KC_8), RGUI(KC_9), RGUI(KC_0), RGUI(KC_MINS), RGUI(KC_EQL), RGUI(KC_BSLS), RGUI(KC_GRV), \
+ RGUI(KC_TAB), RGUI(KC_Q), RGUI(KC_W), RGUI(KC_E), RGUI(KC_R), RGUI(KC_T), RGUI(KC_Y), RGUI(KC_U), RGUI(KC_I), RGUI(KC_O), RGUI(KC_P), RGUI(KC_LBRC), RGUI(KC_RBRC), RGUI(KC_BSPC), \
+ RGUI(KC_LCTL), RGUI(KC_A), RGUI(KC_S), RGUI(KC_D), RGUI(KC_F), RGUI(KC_G), RGUI(KC_H), RGUI(KC_J), RGUI(KC_K), KC_TRNS, KC_TRNS, RGUI(KC_QUOT), KC_FN0, \
+ RGUI(KC_LSFT), RGUI(KC_Z), RGUI(KC_X), RGUI(KC_C), RGUI(KC_V), RGUI(KC_B), RGUI(KC_N), RGUI(KC_M), RGUI(KC_COMM), RGUI(KC_DOT), RGUI(KC_SLSH), RGUI(KC_RSFT), KC_TRNS, \
+ KC_LALT, KC_LGUI, RGUI(KC_SPC), KC_RGUI, KC_RALT),
+
+ /* Layer LGUI: All keys with LGUI modifier
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+ |------+------+-------+------+------|
+ | LAlt | LGUI | Space | LGUI | RAlt |
+ |------+------+-------+------+------|
+ */
+
+ [LGUILEV] = KEYMAP( // Right GUI layer by KC_L
+
+ LGUI(KC_ESC), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS), LGUI(KC_EQL), LGUI(KC_BSLS), LGUI(KC_GRV), \
+ LGUI(KC_TAB), LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), LGUI(KC_BSPC), \
+ LGUI(KC_LCTL), KC_TRNS, KC_TRNS, LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), LGUI(KC_SCLN), LGUI(KC_QUOT), KC_FN0, \
+ KC_LSFT, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), KC_RSFT, KC_TRNS, \
+ KC_LALT, KC_LGUI, LGUI(KC_SPC), KC_LGUI, KC_RALT),
+
+ /* Layer LALT: All keys with RALT modifier
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+ |------+------+-------+------+------|
+ | LAlt | LGUI | Space | RGUI | RAlt |
+ |------+------+-------+------+------|
+ */
+
+ [RALTLEV] = KEYMAP( // Right ALT layer by KC_L
+
+ RALT(KC_ESC), RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_5), RALT(KC_6), RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), RALT(KC_EQL), RALT(KC_BSLS), RALT(KC_GRV), \
+ RALT(KC_TAB), RALT(KC_Q), RALT(KC_W), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(KC_Y), RALT(KC_U), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC), RALT(KC_RBRC), RALT(KC_BSPC), \
+ RALT(KC_LCTL), RALT(KC_A), RALT(KC_S), RALT(KC_D), RALT(KC_F), RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), KC_TRNS, KC_TRNS, RALT(KC_QUOT), KC_FN0, \
+ RALT(KC_LSFT), RALT(KC_Z), RALT(KC_X), RALT(KC_C), RALT(KC_V), RALT(KC_B), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), RALT(KC_SLSH), RALT(KC_RSFT), KC_TRNS, \
+ KC_LALT, KC_LGUI, RALT(KC_SPC), KC_RGUI, KC_RALT),
+
+ /* Layer LALT: All keys with LALT modifier
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
+ |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+ |------+------+-------+------+------|
+ | LAlt | LGUI | Space | LGUI | RAlt |
+ |------+------+-------+------+------|
+ */
+
+ [LALTLEV] = KEYMAP( // Right ALT layer by KC_L
+
+ LALT(KC_ESC), LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), LALT(KC_MINS), LALT(KC_EQL), LALT(KC_BSLS), LALT(KC_GRV), \
+ LALT(KC_TAB), LALT(KC_Q), LALT(KC_W), LALT(KC_E), LALT(KC_R), LALT(KC_T), LALT(KC_Y), LALT(KC_U), LALT(KC_I), LALT(KC_O), LALT(KC_P), LALT(KC_LBRC), LALT(KC_RBRC), LALT(KC_BSPC), \
+ LALT(KC_LCTL), KC_TRNS, KC_TRNS, LALT(KC_D), LALT(KC_F), LALT(KC_G), LALT(KC_H), LALT(KC_J), LALT(KC_K), LALT(KC_L), LALT(KC_SCLN), LALT(KC_QUOT), KC_FN0, \
+ KC_LSFT, LALT(KC_Z), LALT(KC_X), LALT(KC_C), LALT(KC_V), LALT(KC_B), LALT(KC_N), LALT(KC_M), LALT(KC_COMM), LALT(KC_DOT), LALT(KC_SLSH), KC_RSFT, KC_TRNS, \
+ KC_LALT, KC_LGUI, LALT(KC_SPC), KC_LGUI, KC_RALT),
+
+
+ /* Layer WIN: Win layer
+ |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+ | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | |
+ |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
+ |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+
+ |------+------+-------+------+------|
+ | LGui | LAlt | Space | RGui | Ralt |
+ |------+------+-------+------+------|
+ */
+
+ [WIN] = KEYMAP( // BASE level with swapped GUI/ALT
+
+
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
+ KC_LCTL, LT(LGUILEV,KC_A), LT(LALTLEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RALTLEV,KC_L), LT(RGUILEV,KC_SCLN), KC_QUOT, KC_FN0, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
+ KC_RGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI)};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT) // RControl with tap Enter*
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
backlight.c
ifdef KEYMAP
- SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+ SRC := keymaps/keymaps/(KEYMAP).c $(SRC)
else
- SRC := keymaps/keymap_default.c $(SRC)
+ SRC := keymaps/keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
--- /dev/null
+#include "jd45.h"
+#include "backlight.h"
+
+/* this keymap is to provide a basic keyboard layout for testing the matrix
+ * for more practical and complicated keymap refer to other keymaps in the same folder
+ */
+/* JD45 keymap definition macro
+ */
+#define KEYMAP( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
+ K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
+ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
+) { \
+ { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
+ { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \
+ { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \
+ { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+ ESC, Q, W, E, R, T, Y, U, I, O, P, QUOT, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,
+ PAUSE, LCTL, LALT, DEL, SPC, DEL, LEFT, UP, DOWN, RIGHT ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
--- /dev/null
+#include "jd45.h"
+#include "backlight.h"
+
+/* JD45 keymap definition macro
+ */
+#define KEYMAP( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
+ K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
+ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
+) { \
+ { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
+ { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \
+ { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \
+ { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+ ESC, Q, W, F, P, G, J, L, U, Y, SCLN, QUOT, BSPC,
+ FN8, A, R, S, T, D, H, N, E, I, O, ENT,
+ LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, FN6,
+ FN4, LGUI, FN7, FN2, FN1, SPC, FN5, RALT, FN3, FN0 ),
+[1] = KEYMAP(
+ TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END, PGDN, DOWN, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
+[2] = KEYMAP(
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS,
+ TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ),
+[3] = KEYMAP(
+ TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
+[4] = KEYMAP(
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS,
+ TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ),
+};
+
+enum macro_id {
+ PSWD1,
+ PSWD2,
+ PSWD3,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS),
+ [1] = ACTION_LAYER_MOMENTARY(1), // FN1
+ [2] = ACTION_LAYER_MOMENTARY(2), // FN2
+ [3] = ACTION_LAYER_MOMENTARY(3), // FN3
+ [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV),
+ [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI),
+ [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS),
+ [7] = ACTION_LAYER_MODS(4, MOD_LSFT), // FN4
+ [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
+
+ [10] = ACTION_MACRO(PSWD1),
+ [11] = ACTION_MACRO(PSWD2),
+ [12] = ACTION_MACRO(PSWD3),
+
+ [29] = ACTION_BACKLIGHT_TOGGLE(),
+ [30] = ACTION_BACKLIGHT_INCREASE(),
+ [31] = ACTION_BACKLIGHT_DECREASE()
+
+};
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch (id) {
+ case PSWD1:
+ return (record->event.pressed ?
+ MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+ MACRO_NONE );
+ case PSWD2:
+ return (record->event.pressed ?
+ MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+ MACRO_NONE );
+ case PSWD3:
+ return (record->event.pressed ?
+ MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+ MACRO_NONE );
+ //case VOLUP:
+ // return (record->event.pressed ?
+ // MACRO( D(VOLU), U(VOLU), END ) :
+ // MACRO_NONE );
+ //case ALT_TAB:
+ // return (record->event.pressed ?
+ // MACRO( D(LALT), D(TAB), END ) :
+ // MACRO( U(TAB), END ));
+ }
+ return MACRO_NONE;
+}
+++ /dev/null
-#include "jd45.h"
-#include "backlight.h"
-
-/* this keymap is to provide a basic keyboard layout for testing the matrix
- * for more practical and complicated keymap refer to other keymaps in the same folder
- */
-/* JD45 keymap definition macro
- */
-#define KEYMAP( \
- K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
- K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
- K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
-) { \
- { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
- { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \
- { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \
- { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
- ESC, Q, W, E, R, T, Y, U, I, O, P, QUOT, BSPC,
- TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT,
- LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,
- PAUSE, LCTL, LALT, DEL, SPC, DEL, LEFT, UP, DOWN, RIGHT ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
+++ /dev/null
-#include "jd45.h"
-#include "backlight.h"
-
-/* JD45 keymap definition macro
- */
-#define KEYMAP( \
- K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
- K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
- K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
- K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
-) { \
- { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
- { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \
- { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \
- { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
- ESC, Q, W, F, P, G, J, L, U, Y, SCLN, QUOT, BSPC,
- FN8, A, R, S, T, D, H, N, E, I, O, ENT,
- LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, FN6,
- FN4, LGUI, FN7, FN2, FN1, SPC, FN5, RALT, FN3, FN0 ),
-[1] = KEYMAP(
- TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END, PGDN, DOWN, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
-[2] = KEYMAP(
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS,
- TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ),
-[3] = KEYMAP(
- TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
-[4] = KEYMAP(
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS,
- TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ),
-};
-
-enum macro_id {
- PSWD1,
- PSWD2,
- PSWD3,
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS),
- [1] = ACTION_LAYER_MOMENTARY(1), // FN1
- [2] = ACTION_LAYER_MOMENTARY(2), // FN2
- [3] = ACTION_LAYER_MOMENTARY(3), // FN3
- [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV),
- [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI),
- [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS),
- [7] = ACTION_LAYER_MODS(4, MOD_LSFT), // FN4
- [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
-
- [10] = ACTION_MACRO(PSWD1),
- [11] = ACTION_MACRO(PSWD2),
- [12] = ACTION_MACRO(PSWD3),
-
- [29] = ACTION_BACKLIGHT_TOGGLE(),
- [30] = ACTION_BACKLIGHT_INCREASE(),
- [31] = ACTION_BACKLIGHT_DECREASE()
-
-};
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch (id) {
- case PSWD1:
- return (record->event.pressed ?
- MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
- MACRO_NONE );
- case PSWD2:
- return (record->event.pressed ?
- MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
- MACRO_NONE );
- case PSWD3:
- return (record->event.pressed ?
- MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
- MACRO_NONE );
- //case VOLUP:
- // return (record->event.pressed ?
- // MACRO( D(VOLU), U(VOLU), END ) :
- // MACRO_NONE );
- //case ALT_TAB:
- // return (record->event.pressed ?
- // MACRO( D(LALT), D(TAB), END ) :
- // MACRO( U(TAB), END ));
- }
- return MACRO_NONE;
-}
# Target file name (without extension).
TARGET = planck
-
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
else
ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
+ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
+ include keymaps/$(KEYMAP)/makefile.mk
+endif
else
$(error Keymap file does not exist)
+endif
endif
-endif
+
else
+
ifneq ("$(wildcard keymaps/default.c)","")
KEYMAP_FILE = keymaps/default.c
else
KEYMAP_FILE = keymaps/default/keymap.c
endif
+
+ifneq ("$(wildcard keymaps/default/makefile.mk)","")
+ include keymaps/default/makefile.mk
endif
+
+endif
+
SRC := $(KEYMAP_FILE) $(SRC)
CONFIG_H = config.h
# software delays.
F_CPU = 16000000
-
#
# LUFA specific
#
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+# change to "no" to disable the options, or define them in the makefile.mk in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # 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 = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB 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 = YES # MIDI controls
-# AUDIO_ENABLE = YES # Audio output on port C6
-# UNICODE_ENABLE = YES # Unicode
-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
-# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time.
-
-ifdef BACKLIGHT_ENABLE
- SRC += backlight.c
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+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
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
-include $(TOP_DIR)/quantum/quantum.mk
+include $(TOP_DIR)/quantum/quantum.mk
\ No newline at end of file
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` and see keymap document (you can find in top README.md) and existent keymap files.
+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.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
### Notable forks (which some of the keymap files are from)
- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
+++ /dev/null
-
-#include <avr/io.h>
-#include "backlight.h"
-
-#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));
- }
-}
\ No newline at end of file
+++ /dev/null
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
- TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC,
- LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT,
- LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN3,
- ESC, DEL, LALT, LGUI, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT),
-[1] = KEYMAP(
- GRV, GRV, FN22, FN19, FN10, TRNS, TRNS, 7, 8, 9, 0, BSPC,
- TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4, 5, 6, TRNS, BSLS,
- TRNS, MINS, FN20, EQL, FN21, TRNS, TRNS, 1, 2, 3, TRNS, ENT,
- TRNS, TRNS, TRNS, TRNS, TRNS, SPC, FN1, TRNS, PGDN, PGUP, TRNS),
-[2] = KEYMAP(
- FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
- TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
- TRNS, TRNS, TRNS, TRNS, FN2, ENT, TRNS, TRNS, PGDN, PGUP, TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(1), // Switch layer raise
- [2] = ACTION_LAYER_MOMENTARY(2), // Switch layer lower
-
- [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
-
- // Numeric shift modifiers
- [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
- [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
- [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
- [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
- [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
- [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
- [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
- [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
- [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
- [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
-
- // Other shift modifiers
- [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
- [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // +
- [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // ~
- [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
- [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
- [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
-
- // Switch windows in app
- [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
-};
*/
/* disable debug print */
-#define NO_DEBUG
+//#define NO_DEBUG
/* disable print */
-#define NO_PRINT
+//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
--- /dev/null
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+#endif
+#include "..\..\quantum\keymap_extras\keymap_german.h"
+
+/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
+ It has Umlauts and "ß" as it is optimized for a mix of German & English.
+ My favourite features are the placement of the special characters often used for programming right on the home row
+ and the number & navigation block combo, so you never have to move your hands from their home position.
+
+ Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
+*/
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Bone2
+ * ,-----------------------------------------------------------------------------------.
+ * | Q | J | D | U | A | X | P | H | L | M | W | ẞ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | M1 | C | T | I | E | O | B | N | R | S | G | M1 |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [0] = {
+ { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS },
+ { MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, MO(1) },
+ { DE_S, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, DE_S },
+ { KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), KC_SPC, KC_SPC, MO(2), MO(3), KC_ESC, KC_TAB, KC_ENT }
+ },
+
+ /* M1 Special Characters
+ * ,-----------------------------------------------------------------------------------.
+ * | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | M1 | \ | / | { | } | * | ? | ( | ) | - | : | M1 |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | # | $ | | | ~ | € | + | % | " | ' | ; | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [1] = {
+ { DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_NO },
+ { KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS },
+ { KC_NO , DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_NO },
+ { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
+ },
+
+ /* Navigation & Number Blocks
+ * ,-----------------------------------------------------------------------------------.
+ * | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [2] = {
+ { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO },
+ { KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_NO },
+ { DE_S, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, KC_0, DE_1, DE_2, DE_3, DE_SCLN, DE_S },
+ { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
+ },
+
+ /* Function & Media Keys
+ * ,-----------------------------------------------------------------------------------.
+ * | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | M3 | | Space | | M3 | Esc | Tab |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [3] = {
+ { KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO },
+ { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO },
+ { KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_TRNS},
+ { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch (id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+ backlight_step();
+#endif
+ }
+ else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
# The Default Planck Layout
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QW] = { /* Qwerty */
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
- {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- },
- [_CM] = { /* Colemak */
- {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
- {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- },
- [_DV] = { /* Dvorak */
- {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
- {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
- {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- },
- [_RS] = { /* RAISE */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
- },
- [_LW] = { /* LOWER */
- {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
- {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
- }
- };
\ No newline at end of file
// this is the style you want to emulate.
#include "planck.h"
-#ifdef BACKLIGHT_ENABLE
- #include "backlight.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _DV 2
-#define _LW 3
-#define _RS 4
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _MUSIC 5
+#define _PLOVER 6
+#define _ADJUST 16
+
+// Macro name shortcuts
+#define QWERTY M(_QWERTY)
+#define COLEMAK M(_COLEMAK)
+#define DVORAK M(_DVORAK)
+#define LOWER M(_LOWER)
+#define RAISE M(_RAISE)
+#define M_BL 5
+#define AUD_OFF M(6)
+#define AUD_ON M(7)
+#define MUS_OFF M(8)
+#define MUS_ON M(9)
+#define VC_IN M(10)
+#define VC_DE M(11)
+#define PLOVER M(12)
+#define EXT_PLV M(13)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QW] = {
+[_QWERTY] = {
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Colemak
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_CM] = {
+[_COLEMAK] = {
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Dvorak
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DV] = {
+[_DVORAK] = {
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
/* Raise
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RS] = {
+[_RAISE] = {
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
-/* Lower
+/* Music (reserved for process_action_user)
+ *
+ */
+[_MUSIC] = {
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Plover layer (http://opensteno.org)
* ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * | | S | T | P | H | * | * | F | P | L | T | D |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
+ * | Exit | | | A | O | | E | U | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_LW] = {
- {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
- {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+
+[_PLOVER] = {
+ {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
+ {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
+ {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff| | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+ {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+ {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______},
+ {_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
}
+
+
};
const uint16_t PROGMEM fn_actions[] = {
};
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = {
+ {440.0*pow(2.0,(31)/12.0), 12},
+ {440.0*pow(2.0,(28)/12.0), 8},
+ {440.0*pow(2.0,(19)/12.0), 8},
+ {440.0*pow(2.0,(24)/12.0), 8},
+ {440.0*pow(2.0,(28)/12.0), 20}
+};
+
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+float tone_plover[][2] = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
+
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+float goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
- // MACRODOWN only works in this function
switch(id) {
- case 0:
+ case _QWERTY:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_QWERTY);
+ }
+ break;
+ case _COLEMAK:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_COLEMAK);
+ }
+ break;
+ case _DVORAK:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_DVORAK);
+ }
+ break;
+ case _LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ break;
+ case _RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ break;
+ case M_BL:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
unregister_code(KC_RSFT);
}
break;
+ case 6:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ audio_off();
+ #endif
+ }
+ break;
+ case 7:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ audio_on();
+ PLAY_NOTE_ARRAY(tone_startup, false, 0);
+ #endif
+ }
+ break;
+ case 8:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ layer_off(_MUSIC);
+ stop_all_notes();
+ #endif
+ }
+ break;
+ case 9:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+ layer_on(_MUSIC);
+ #endif
+ }
+ break;
+ case 10:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ voice_iterate();
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+ #endif
+ }
+ break;
+ case 11:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ voice_deiterate();
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+ #endif
+ }
+ break;
+ case 12:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_NOTE_ARRAY(tone_plover, false, 0);
+ #endif
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_off(_MUSIC);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ break;
+ case 13:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
+ #endif
+ layer_off(_PLOVER);
+ }
+ break;
+
}
return MACRO_NONE;
};
+
+void matrix_init_user(void) {
+ #ifdef AUDIO_ENABLE
+ _delay_ms(20); // stops the tick
+ PLAY_NOTE_ARRAY(tone_startup, false, 0);
+ #endif
+}
+
+#ifdef AUDIO_ENABLE
+void play_goodbye_tone()
+{
+ PLAY_NOTE_ARRAY(goodbye, false, 0);
+ _delay_ms(150);
+}
+
+uint8_t starting_note = 0x0C;
+int offset = 0;
+
+void process_action_user(keyrecord_t *record) {
+
+ if (IS_LAYER_ON(_MUSIC)) {
+ if (record->event.pressed) {
+ play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
+ } else {
+ stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+ }
+ }
+
+}
+#endif
--- /dev/null
+AUDIO_ENABLE = yes
+NKRO_ENABLE = yes
\ No newline at end of file
--- /dev/null
+// 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 "planck.h"
+#include "backlight.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_CM] = { /* Colemak */
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+ {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
+ {KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
+ {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_RS] = { /* RAISE */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC), // Tap for backspace, hold for LOWER
+ [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT), // Tap for enter, hold for RAISE
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ backlight_step();
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
--- /dev/null
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ortholinear Keyboards
+#define PRODUCT The Planck Keyboard
+#define DESCRIPTION A compact ortholinear keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/* Planck PCB default pin-out */
+#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
+#define ROWS (int []){ D0, D5, B5, B6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* ws2812 RGB LED */
+#define ws2812_PORTREG PORTD
+#define ws2812_DDRREG DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28 // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
--- /dev/null
+#include "planck.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#include "led.h"
+
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+ #include "song_list.h"
+#endif
+
+#define LAYER_QWERTY 0
+#define LAYER_COLEMAK 1
+#define LAYER_DVORAK 2
+#define LAYER_LOWER 3
+#define LAYER_RAISE 4
+#define LAYER_FUNCTION 5
+#define LAYER_MOUSE 6
+#define LAYER_MUSIC 7
+#define LAYER_ADJUST 8
+
+#define MACRO_QWERTY 0
+#define MACRO_COLEMAK 1
+#define MACRO_DVORAK 2
+#define MACRO_LOWER 3
+#define MACRO_RAISE 4
+#define MACRO_FUNCTION 5
+#define MACRO_MOUSE 6
+#define MACRO_TIMBRE_1 7
+#define MACRO_TIMBRE_2 8
+#define MACRO_TIMBRE_3 9
+#define MACRO_TIMBRE_4 10
+#define MACRO_TEMPO_U 11
+#define MACRO_TEMPO_D 12
+#define MACRO_TONE_DEFAULT 13
+#define MACRO_MUSIC_ON 14
+#define MACRO_MUSIC_OFF 15
+#define MACRO_AUDIO_ON 16
+#define MACRO_AUDIO_OFF 17
+#define MACRO_INC_VOICE 18
+#define MACRO_DEC_VOICE 19
+
+#define M_QWRTY M(MACRO_QWERTY)
+#define M_COLMK M(MACRO_COLEMAK)
+#define M_DVORK M(MACRO_DVORAK)
+#define M_LOWER M(MACRO_LOWER)
+#define M_RAISE M(MACRO_RAISE)
+#define M_FUNCT M(MACRO_FUNCTION)
+#define M_MOUSE M(MACRO_MOUSE)
+#define TIMBR_1 M(MACRO_TIMBRE_1)
+#define TIMBR_2 M(MACRO_TIMBRE_2)
+#define TIMBR_3 M(MACRO_TIMBRE_3)
+#define TIMBR_4 M(MACRO_TIMBRE_4)
+#define TMPO_UP M(MACRO_TEMPO_U)
+#define TMPO_DN M(MACRO_TEMPO_D)
+#define TMPO_DF M(MACRO_TONE_DEFAULT)
+
+
+#define MUS_ON M(MACRO_MUSIC_ON)
+#define MUS_OFF M(MACRO_MUSIC_OFF)
+#define AUD_OFF M(MACRO_AUDIO_OFF)
+#define AUD_ON M(MACRO_AUDIO_ON)
+#define VC_UP M(MACRO_INC_VOICE)
+#define VC_DOWN M(MACRO_DEC_VOICE)
+
+
+#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
+#define ________________ _______, _______
+#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * .-----------------------------------------------------------------------------------------------------------.
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | ENTER |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
+ * '-----------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_QWERTY] = { /* QWERTY */
+ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
+ { KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
+ },
+
+/* COLEMAK
+ * .-----------------------------------------------------------------------------------------------------------.
+ * | TAB | Q | W | F | P | G | J | L | U | Y | ; | ESC |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | ENTER |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
+ * '-----------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_COLEMAK] = { /* COLEMAK */
+ { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC },
+ { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
+ },
+
+/* DVORAK
+ * .-----------------------------------------------------------------------------------------------------------.
+ * | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC | A | O | E | U | I | D | H | T | N | S | ' |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | ENTER |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
+ * '-----------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_DVORAK] = { /* DVORAK */
+ { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
+ { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH },
+ { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
+ },
+
+/* Raise
+ * .-----------------------------------------------------------------------------------------------------------.
+ * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | XXXXXX | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | [ | ] | \ |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LSHIFT | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | BACKSP | BACKSP | LOWER | PG UP | PG DN | HOME | END |
+ * '-----------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_RAISE] = { /* RAISED */
+ { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL },
+ { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
+ { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END },
+ },
+
+
+/* LOWERED
+ * .-----------------------------------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | INS |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | XXXXXX | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LSHIFT | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | BACKSP | BACKSP | LOWER | PG UP | PG DN | HOME | END |
+ * '-----------------------------------------------------------------------------------------------------------'
+ */
+
+ [LAYER_LOWER] = { /* LOWERED */
+ { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS },
+ { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
+ { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END },
+ },
+
+/* FUNCTION
+ * .-----------------------------------------------------------------------------------------------------------.
+ * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | PAUSE |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAP LK | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | PRINT |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISE | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV |
+ * '-----------------------------------------------------------------------------------------------------------'
+ */
+ [LAYER_FUNCTION] = { /* FUNCTION */
+ { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PAUS },
+ { KC_CAPS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_PSCR },
+ { KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE },
+ { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT },
+ },
+
+#ifdef MOUSEKEY_ENABLE
+
+ [LAYER_MOUSE] = { /* MOUSE */
+ { KC_ESC, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D },
+ { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, KC_MS_U, KC_MS_D, KC_MS_L, KC_MS_R },
+ },
+
+#endif
+
+ [LAYER_MUSIC] = { /* MUSIC */
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ },
+
+ [LAYER_ADJUST] = { /* ADJUST */
+ { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF },
+ { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ },
+ { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ },
+ },
+
+
+/*
+ [LAYER_EMPTY] = {
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
+ { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, },
+ },
+*/
+
+};
+
+#ifdef AUDIO_ENABLE
+
+float tone_my_startup[][2] = SONG(ODE_TO_JOY);
+float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY);
+
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+
+float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE);
+float tone_music_on[][2] = SONG(DOE_A_DEER);
+float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
+float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
+float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND);
+float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND);
+float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND);
+float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+
+#endif /* AUDIO_ENABLE */
+
+void persistant_default_layer_set(uint16_t default_layer)
+{
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+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_QWERTY:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_QWERTY);
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
+ #endif /* AUDIO_ENABLE */
+ }
+ break;
+
+ case MACRO_COLEMAK:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_COLEMAK);
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
+ #endif /* AUDIO_ENABLE */
+ }
+ break;
+
+ case MACRO_DVORAK:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_DVORAK);
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
+ #endif /* AUDIO_ENABLE */
+ }
+ break;
+
+ case MACRO_LOWER:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_LOWER);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ else
+ {
+ layer_off(LAYER_LOWER);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ break;
+
+ case MACRO_RAISE:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_RAISE);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ else
+ {
+ layer_off(LAYER_RAISE);
+ update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+ }
+ break;
+
+ case MACRO_FUNCTION:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_FUNCTION);
+ }
+ else
+ {
+ layer_off(LAYER_FUNCTION);
+ }
+ break;
+
+#ifdef MOUSEKEY_ENABLE
+
+ case MACRO_MOUSE:
+ if (record->event.pressed)
+ {
+ layer_invert(LAYER_MOUSE);
+ }
+ break;
+
+#endif /* MOUSEKEY_ENABLE */
+
+#ifdef AUDIO_ENABLE
+
+ case MACRO_TIMBRE_1:
+ if (record->event.pressed) set_timbre(TIMBRE_12);
+ break;
+
+ case MACRO_TIMBRE_2:
+ if (record->event.pressed) set_timbre(TIMBRE_25);
+ break;
+
+ case MACRO_TIMBRE_3:
+ if (record->event.pressed) set_timbre(TIMBRE_50);
+ break;
+
+ case MACRO_TIMBRE_4:
+ if (record->event.pressed) set_timbre(TIMBRE_75);
+ break;
+
+ case MACRO_TEMPO_U:
+ if (record->event.pressed) increase_tempo(10);
+ break;
+
+ case MACRO_TEMPO_D:
+ if (record->event.pressed) decrease_tempo(10);
+ break;
+
+ case MACRO_TONE_DEFAULT:
+ if (record->event.pressed)
+ {
+ set_timbre(TIMBRE_DEFAULT);
+ set_tempo(TEMPO_DEFAULT);
+ }
+ break;
+
+ case MACRO_AUDIO_OFF:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ audio_off();
+ #endif
+ }
+ break;
+
+ case MACRO_AUDIO_ON:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ audio_on();
+ PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO);
+ #endif
+ }
+ break;
+
+ case MACRO_MUSIC_ON:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO);
+ layer_on(LAYER_MUSIC);
+ #endif
+ }
+ break;
+
+ case MACRO_MUSIC_OFF:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ layer_off(LAYER_MUSIC);
+ stop_all_notes();
+ #endif
+ }
+ break;
+
+ case MACRO_INC_VOICE:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ voice_iterate();
+ PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
+ #endif
+ }
+ break;
+
+ case MACRO_DEC_VOICE:
+ if (record->event.pressed)
+ {
+ #ifdef AUDIO_ENABLE
+ voice_deiterate();
+ PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
+ #endif
+ }
+ break;
+
+#endif /* AUDIO_ENABLE */
+
+ default:
+ break;
+
+ }
+ return MACRO_NONE;
+};
+
+
+#ifdef AUDIO_ENABLE
+
+
+void process_action_user(keyrecord_t *record)
+{
+
+ uint8_t starting_note = 0x0C;
+ int offset = 7;
+
+ if (IS_LAYER_ON(LAYER_MUSIC))
+ {
+ if (record->event.pressed)
+ {
+ play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
+ }
+ else
+ {
+ stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+ }
+ }
+}
+
+
+void matrix_init_user(void)
+{
+ set_voice(default_voice);
+ play_startup_tone();
+ println("Matrix Init");
+}
+
+void led_set_user(uint8_t usb_led)
+{
+ static uint8_t old_usb_led = 0;
+
+ _delay_ms(10); // gets rid of tick
+
+ if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+ {
+ // If CAPS LK LED is turning on...
+ PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO);
+ }
+ else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+ {
+ // If CAPS LK LED is turning off...
+ PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO);
+ }
+ else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
+ {
+ // If NUM LK LED is turning on...
+ PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO);
+ }
+ else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
+ {
+ // If NUM LED is turning off...
+ PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO);
+ }
+ else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+ {
+ // If SCROLL LK LED is turning on...
+ PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO);
+ }
+ else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+ {
+ // If SCROLL LED is turning off...
+ PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO);
+ }
+ old_usb_led = usb_led;
+}
+
+
+void play_startup_tone()
+{
+ _delay_ms(10); // gets rid of tick
+ PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);
+}
+
+void play_goodbye_tone()
+{
+ PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
+ _delay_ms(1000);
+}
+
+#endif /* AUDIO_ENABLE */
\ No newline at end of file
--- /dev/null
+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
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+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
--- /dev/null
+// 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.
+//
+//Dropped the Dvorak layer and added two my layer buttons. Both Raise and lower can be accessed from either side now.
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _LW 2
+#define _RS 3
+#define _FN 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QW] = {
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right
+ * `-----------------------------------------------------------------------------------'
+ */
+[_CM] = {
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RS] = {
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | Reset| Ins | Home | PGUP |Colemk| Left | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Brite| Del | End | PGDN |Qwerty| Del | _ | + | { | } |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LW] = {
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TRNS, RESET, KC_INS, KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, M(0), KC_DEL, KC_END, KC_PGDN, DF(_QW), KC_DEL, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+/* Function
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | GUI | X | C | V | Z | Left | Down | Up |Right | Del | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |Shift | Ctrl | X | C | V | Z | Next | Mute | Vol- | Vol+ | Play |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FN] = {
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_RGUI, KC_X, KC_C, KC_V, KC_Z, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_BSLS},
+ {KC_TRNS, KC_RCTL, KC_X, KC_C, KC_V, KC_Z, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
--- /dev/null
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+ TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN3,
+ ESC, DEL, LALT, LGUI, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT),
+[1] = KEYMAP(
+ GRV, GRV, FN22, FN19, FN10, TRNS, TRNS, 7, 8, 9, 0, BSPC,
+ TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4, 5, 6, TRNS, BSLS,
+ TRNS, MINS, FN20, EQL, FN21, TRNS, TRNS, 1, 2, 3, TRNS, ENT,
+ TRNS, TRNS, TRNS, TRNS, TRNS, SPC, FN1, TRNS, PGDN, PGUP, TRNS),
+[2] = KEYMAP(
+ FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
+ TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
+ TRNS, TRNS, TRNS, TRNS, FN2, ENT, TRNS, TRNS, PGDN, PGUP, TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(1), // Switch layer raise
+ [2] = ACTION_LAYER_MOMENTARY(2), // Switch layer lower
+
+ [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
+
+ // Numeric shift modifiers
+ [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+ [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+ [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+ [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+ [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+ [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+ [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+ [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+
+ // Other shift modifiers
+ [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
+ [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // +
+ [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // ~
+ [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
+ [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
+ [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
+
+ // Switch windows in app
+ [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
+};
#include "planck.h"
__attribute__ ((weak))
-void matrix_init_user(void) {
-
-}
+void matrix_init_user(void) {}
__attribute__ ((weak))
-void matrix_scan_user(void) {
+void matrix_scan_user(void) {}
-}
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {}
void matrix_init_kb(void) {
- #ifdef BACKLIGHT_ENABLE
- backlight_init_ports();
- #endif
+#ifdef BACKLIGHT_ENABLE
+ backlight_init_ports();
+#endif
- #ifdef RGBLIGHT_ENABLE
- rgblight_init();
- #endif
+#ifdef RGBLIGHT_ENABLE
+ rgblight_init();
+#endif
-
- // Turn status LED on
- DDRE |= (1<<6);
- PORTE |= (1<<6);
+ // Turn status LED on
+ DDRE |= (1<<6);
+ PORTE |= (1<<6);
matrix_init_user();
}
void matrix_scan_kb(void) {
matrix_scan_user();
}
+
+void process_action_kb(keyrecord_t *record) {
+ process_action_user(record);
+}
+
+#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
#include "rgblight.h"
#endif
#include <stddef.h>
+#include <avr/io.h>
#ifdef MIDI_ENABLE
#include <keymap_midi.h>
#endif
void matrix_init_user(void);
void matrix_scan_user(void);
+void process_action_user(keyrecord_t *record);
#endif
+++ /dev/null
-:100000000C949D020C94E1020C94E1020C94E10228\r
-:100010000C94E1020C94E1020C94E1020C94E102D4\r
-:100020000C94E1020C94E1020C941C120C94EE125C\r
-:100030000C948D240C94E1020C94E1020C94E102E6\r
-:100040000C94E1020C94E1020C94E1020C94E102A4\r
-:100050000C94E1020C94FA240C94E1020C94E10259\r
-:100060000C94E1020C94E1020C94E1020C94E10284\r
-:100070000C94E1020C94E1020C94E1020C94E10274\r
-:100080000C94860A0C94E1020C94E1020C94E102B7\r
-:100090000C94E1020C94E1020C94E1020C94E10254\r
-:1000A0000C94E1020C94E1020C94E10207634236E5\r
-:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9\r
-:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD\r
-:1000D0000000803F08000000BE922449123EABAAF7\r
-:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52\r
-:1000F000AA3E00000000BF000000803F000000009A\r
-:1001000000084178D3BB4387D1133D190E3CC3BDD2\r
-:100110004282AD2B3E68EC8276BED98FE1A93E4C7F\r
-:1001200080EFFFBE01C4FF7F3F0000000000000021\r
-:10013000F1A4F1A3018C028C048C2B0014001A0092\r
-:100140000800150017001C0018000C001200130016\r
-:100150002A00290004001600070009000A000B000D\r
-:100160000D000E000F0033003400E1001D001B00E5\r
-:100170000600190005001100100036003700380095\r
-:1001800028000030E000E200E30002202C002C00F8\r
-:1001900001205000510052004F002B0014001A00A3\r
-:1001A000090013000A000D000F0018001C003300A6\r
-:1001B0002A002900040015001600170007000B0094\r
-:1001C000110008000C0012003400E1001D001B00AB\r
-:1001D0000600190005000E00100036003700380038\r
-:1001E00028000030E000E200E30002202C002C0098\r
-:1001F00001205000510052004F002B003400360007\r
-:10020000370013001C0009000A00060015000F004B\r
-:100210002A00290004001200080018000C00070042\r
-:100220000B001700110016003800E1003300140025\r
-:100230000D000E001B00050010001A0019001D0023\r
-:1002400028000030E000E200E30002202C002C0037\r
-:1002500001205000510052004F0035021E021F02C3\r
-:100260002002210222022302240225022602270262\r
-:100270002A0001003A003B003C003D003E003F00E8\r
-:100280002D022E022F0230023102010040004100F7\r
-:100290004200430044004500032004200520005094\r
-:1002A0000100010001000100010002200100010025\r
-:1002B0000100AB00AA00A900AE0035001E001F001F\r
-:1002C0002000210022002300240025002600270012\r
-:1002D0002A0001003A003B003C003D003E003F0088\r
-:1002E0002D002E002F0030003100010040004100A1\r
-:1002F0004200430044004500032004200520005034\r
-:1003000001000100010001000100010001000100E5\r
-:100310000120AB00AA00A900AE0028035400680029\r
-:100320006500200050006C0061006E0063006B00EF\r
-:1003300020004B006500790062006F0061007200D0\r
-:10034000640000002C034F007200740068006F000E\r
-:100350006C0069006E0065006100720020004B00B7\r
-:100360006500790062006F00610072006400730034\r
-:100370000000040309040902D000060100A03209AC\r
-:100380000400000103010100092111010001223FC5\r
-:10039000000705810308000A0904010001030102A6\r
-:1003A00000092111010001224D0007058203080008\r
-:1003B0000A090402000103000000092111010001E3\r
-:1003C0002236000705830308000A0904030002031C\r
-:1003D000000000092111010001222000070584030B\r
-:1003E00020000107050403200001090404000001A6\r
-:1003F00001000009240100010900010509040500AC\r
-:10040000020103000007240100014100062402014B\r
-:100410000100062402020200092403010301020173\r
-:10042000000924030204010101000905060240003D\r
-:1004300005000005250101010905850240000500B0\r
-:100440000005250101031201100100000008EDFE66\r
-:1004500060600100010200010631FF0974A1010979\r
-:1004600075150025FF952075088102097615002570\r
-:10047000FF952075089102C005010980A101850240\r
-:1004800016010026B7001A01002AB7007510950161\r
-:100490008100C0050C0901A1018503160100269CFD\r
-:1004A000021A01002A9C02751095018100C0050105\r
-:1004B0000902A1010901A100050919012905150079\r
-:1004C00025019505750181029501750381010501DD\r
-:1004D000093009311581257F950275088106093893\r
-:1004E0001581257F950175088106050C0A380215CE\r
-:1004F00081257F950175088106C0C005010906A107\r
-:1005000001050719E029E715002501950875018106\r
-:1005100002950175088101050819012905950575E0\r
-:100520000191029501750391010507190029FF1535\r
-:100530000025FF950675088100C011241FBECFEF6E\r
-:10054000DAE0DEBFCDBF04B603FE24C0809178039D\r
-:1005500090917903A0917A03B0917B038730904BFF\r
-:10056000A740B04BB9F4109278031092790310921F\r
-:100570007A0310927B0314BE84B7877F84BF88E11F\r
-:100580000FB6F89480936000109260000FBEE0E018\r
-:10059000F8E3099511E0A0E0B1E0E2EAFFE502C06E\r
-:1005A00005900D92A63BB107D9F713E0A6EBB1E099\r
-:1005B00001C01D92A837B107E1F70E94F90E0C9413\r
-:1005C000CF2F0C9400000895089561110DC0FC0117\r
-:1005D0008281882331F085EE0E949D190E94B62BFE\r
-:1005E00003C085EE0E94651A80E090E008958B3B81\r
-:1005F000910568F4883A910530F5853A9105C0F483\r
-:100600008430910598F4019709F06FC071C0803E65\r
-:10061000910508F46AC0883E910540F09C01205F76\r
-:1006200031092031310508F060C05CC09C01A1C0D7\r
-:10063000853A910509F45FC0863A910509F45EC0D8\r
-:1006400023E830E496C0883A910509F45AC0893A03\r
-:10065000910509F459C08A3A910509F458C08B3ABA\r
-:10066000910509F457C08C3A910509F456C08D3AAA\r
-:10067000910509F455C0803B910509F454C08E3AA8\r
-:10068000910509F453C08F3A910509F452C0813B9A\r
-:10069000910509F451C0823B910509F450C0833B98\r
-:1006A000910509F44FC0843B910509F44EC0853B88\r
-:1006B000910509F44DC0863B910509F44CC0873B78\r
-:1006C000910509F44BC0883B910509F44AC0893B68\r
-:1006D000910509F449C08A3B910509F048C02AE216\r
-:1006E00036E447C09C01306544C020E030E041C0A2\r
-:1006F00021E030E03EC021E830E43BC022E830E4B5\r
-:1007000038C022EE34E435C029EE34E432C02AEE9B\r
-:1007100034E42FC025EB34E42CC026EB34E429C0AC\r
-:1007200027EB34E426C02CEC34E423C02DEC34E475\r
-:1007300020C023E835E41DC02AE835E41AC022E9C8\r
-:1007400035E417C024E935E414C021E236E411C0D1\r
-:1007500023E236E40EC024E236E40BC025E236E4A0\r
-:1007600008C026E236E405C027E236E402C020E0F5\r
-:1007700034E4C90108959CE0799FF001112490E3CD\r
-:10078000899FE00DF11D1124E60FF11DEE0FFF1FF3\r
-:10079000E65CFE4F25913491C9010895880F991F99\r
-:1007A00082559040FC0125913491C9010895880F2C\r
-:1007B000991F825D9E4FFC0125913491C9010895D6\r
-:1007C0000E94BB039C013A9521153F4108F4DFC00C\r
-:1007D0009C0130522115304120F49F700E94D703B4\r
-:1007E00008959C0130532115304118F49927906CDD\r
-:1007F00008959C0130542031310520F48F709927E1\r
-:10080000946D0895803120E4920719F480E091ED11\r
-:100810000895813140E4940719F480E090ED089543\r
-:10082000823120E4920719F480E092ED089583313B\r
-:1008300040E4940719F480E093ED0895811520E5D4\r
-:10084000920711F40C941F25813040E5940731F490\r
-:100850008091680281608093680208959C013056FF\r
-:100860002115304108F402C097FF02C0906F08952F\r
-:10087000803E9105E0F4803C910568F58133910557\r
-:1008800009F474C048F48932910509F46AC08A32C7\r
-:10089000910509F07AC074C089339105F9F0823866\r
-:1008A0009105E1F08533910509F06FC050C0833E9A\r
-:1008B0009105A9F140F4803E9105C9F0823E910571\r
-:1008C00009F063C01BC0863E910571F1873E91051A\r
-:1008D00009F05BC037C00E94CE03089520917B02CF\r
-:1008E00020FD02C021FF51C080EE90E04EC08091FB\r
-:1008F0007B0280FFF9CF89E390E047C080917B02C3\r
-:1009000082FF0AC080917B0284FF03C080E090E0F8\r
-:100910003CC083EE90E039C082EE90E036C080911A\r
-:100920007B0282FFEFCFF8CF80917B0283FF07C06D\r
-:1009300080917B0284FDEACF87EE90E026C086EEB0\r
-:1009400090E023C080917B0283FFF2CFF8CF8091AB\r
-:100950007B0285FF03C089E290E017C085E390E049\r
-:1009600014C080917B0285FDF9CFF5CF80917B0289\r
-:1009700086FF03C08AE290E008C081E390E005C0F2\r
-:1009800080917B0286FDF9CFF5CF0E94F702089592\r
-:100990005F926F927F928F929F92AF92BF92CF920F\r
-:1009A000DF92EF92FF920F931F93CF93DF93CDB718\r
-:1009B000DEB728970FB6F894DEBF0FBECDBF9E01FD\r
-:1009C0002F5F3F4F4E0189E0880E911C60E070E080\r
-:1009D00000E010E0E12CF12CC12CD12CA12CB12C89\r
-:1009E00088E0782E622E532E41E050E0E3E2F1E001\r
-:1009F000A62DB52D872D01900D928A95E1F7F9016D\r
-:100A0000819191919F01FC01E07FFF27E032F10588\r
-:100A100059F48F709927FA0102C0EE0FFF1F8A95D3\r
-:100A2000E2F7AE2ABF2A37C0E033F10559F48F70E0\r
-:100A30009927FA0102C0EE0FFF1F8A95E2F7CE2A2E\r
-:100A4000DF2A29C0E034F10559F48F709927FA01A3\r
-:100A500002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0A5\r
-:100A6000E035F10559F48F709927FA0102C0EE0FB5\r
-:100A7000FF1F8A95E2F70E2B1F2B0DC0E036F10504\r
-:100A800051F48F709927FA0102C0EE0FFF1F8A956B\r
-:100A9000E2F76E2B7F2B2815390509F0A7CF94B10B\r
-:100AA0008A2D8095892384B985B18A2985B997B122\r
-:100AB0008C2D8095892387B988B18C2988B99AB102\r
-:100AC0008E2D809589238AB98BB18E298BB99DB1E2\r
-:100AD000802F809589238DB98EB1802B8EB990B3EC\r
-:100AE000862F8095892380BB81B3862B81BB289676\r
-:100AF0000FB6F894DEBF0FBECDBFDF91CF911F912F\r
-:100B00000F91FF90EF90DF90CF90BF90AF909F90AC\r
-:100B10008F907F906F905F9008955F926F927F9219\r
-:100B20008F929F92AF92BF92CF92DF92EF92FF92FD\r
-:100B30000F931F93CF93DF93CDB7DEB768970FB6B0\r
-:100B4000F894DEBF0FBECDBF85B7806885BF85B77F\r
-:100B5000806885BF0E94CF076E9A769A0E94C8046B\r
-:100B60009E012F5F3F4F4E0189E1880E911C60E08E\r
-:100B700070E000E010E0E12CF12CC12CD12CA12C74\r
-:100B8000B12C98E1792E622E532E41E050E0EBE239\r
-:100B9000F1E0A62DB52D872D01900D928A95E1F7F4\r
-:100BA000F901819191919F01FC01E07FFF27E032E3\r
-:100BB000F10559F48F709927FA0102C0EE0FFF1F5B\r
-:100BC0008A95E2F7AE2ABF2A37C0E033F10559F41F\r
-:100BD0008F709927FA0102C0EE0FFF1F8A95E2F786\r
-:100BE000CE2ADF2A29C0E034F10559F48F70992705\r
-:100BF000FA0102C0EE0FFF1F8A95E2F7EE2AFF2AE4\r
-:100C00001BC0E035F10559F48F709927FA0102C035\r
-:100C1000EE0FFF1F8A95E2F70E2B1F2B0DC0E0365B\r
-:100C2000F10551F48F709927FA0102C0EE0FFF1FF2\r
-:100C30008A95E2F76E2B7F2B2815390509F0A7CF8F\r
-:100C400094B18A2D8095892384B985B18A2985B983\r
-:100C500097B18C2D8095892387B988B18C2988B963\r
-:100C60009AB18E2D809589238AB98BB18E298BB943\r
-:100C70009DB1802F809589238DB98EB1802B8EB93F\r
-:100C800090B3862F8095892380BB81B3862B81BB4F\r
-:100C90001092B7011092B6011092BF011092BE01DE\r
-:100CA0001092B9011092B8011092C1011092C001C6\r
-:100CB0001092BB011092BA011092C3011092C201AE\r
-:100CC0001092BD011092BC011092C5011092C40196\r
-:100CD00068960FB6F894DEBF0FBECDBFDF91CF91FF\r
-:100CE0001F910F91FF90EF90DF90CF90BF90AF904A\r
-:100CF0009F908F907F906F905F9008955F926F921A\r
-:100D00007F928F929F92AF92BF92CF92DF92EF929B\r
-:100D1000FF920F931F93CF93DF93CDB7DEB7A097CA\r
-:100D20000FB6F894DEBF0FBECDBF7E0149E1E40EE1\r
-:100D3000F11C2EEBC22E21E0D22E5E0151E2A50E57\r
-:100D4000B11C38E0532E470101E010E048E1642E69\r
-:100D500055E0752EE3E2F1E0D401852D01900D926E\r
-:100D60008A95E1F7F701819191917F019C01207FA4\r
-:100D700033272032310589F424B18F709927A801D7\r
-:100D800002C0440F551F8A95E2F7CA01242B24B9EB\r
-:100D900095B18095892385B94FC02033310589F4F9\r
-:100DA00027B18F709927F80102C0EE0FFF1F8A95B7\r
-:100DB000E2F7CF012E2B27B998B18095892388B906\r
-:100DC0003BC02034310589F42AB18F709927A801DE\r
-:100DD00002C0440F551F8A95E2F7CA01242B2AB995\r
-:100DE0009BB1809589238BB927C02035310589F4C3\r
-:100DF0002DB18F709927F80102C0EE0FFF1F8A9561\r
-:100E0000E2F7CF012E2B2DB99EB1809589238EB9A3\r
-:100E100013C02036310581F420B38F709927A801C3\r
-:100E200002C0440F551F8A95E2F7CA01242B20BB4C\r
-:100E300091B38095892381BB50EA5A95F1F7BE01A1\r
-:100E40006F5F7F4F80E090E020E030E0EBE2F1E088\r
-:100E5000DE011196462D01900D924A95E1F7FB01B6\r
-:100E600041915191BF01FA01E07FFF27E032F10586\r
-:100E700011F4E3B113C0E033F10511F4E6B10EC093\r
-:100E8000E034F10511F4E9B109C0E035F10511F4E0\r
-:100E9000ECB104C0E036F105B9F4EFB1F0E04F7009\r
-:100EA000552702C0F595E7954A95E2F7E0FD08C0A1\r
-:100EB000A801022E02C0440F551F0A94E2F702C097\r
-:100EC00040E050E0842B952B2F5F3F4F2C303105B5\r
-:100ED00009F0BCCFF601208131812817390721F0B4\r
-:100EE00091838083709200010E94C804F2E0CF0ECB\r
-:100EF000D11CEA14FB0409F02DCF80910001882356\r
-:100F000061F1815080930001811121C08091BE0167\r
-:100F10009091BF019093B7018093B6018091C00179\r
-:100F20009091C1019093B9018093B8018091C20161\r
-:100F30009091C3019093BB018093BA018091C40149\r
-:100F40009091C5019093BD018093BC0106C08FE9CB\r
-:100F50009FE00197F1F700C0000081E0A0960FB676\r
-:100F6000F894DEBF0FBECDBFDF91CF911F910F91DF\r
-:100F7000FF90EF90DF90CF90BF90AF909F908F90B9\r
-:100F80007F906F905F900895E82FF0E0EE0FFF1FC5\r
-:100F9000EA54FE4F80819181089508950895279A1B\r
-:100FA0002F988FEF9FEF90938700809386008AE0C1\r
-:100FB0008093800089E1809381000C945F2B8111E4\r
-:100FC0000BC080918000877F8093800010928D00FD\r
-:100FD00010928C002F9808952F98833041F48091BF\r
-:100FE00080008860809380008FEF9FEF12C0909107\r
-:100FF000800098609093800023E030E0281B310946\r
-:10100000220F331F8FEF9FEF02C0969587952A9589\r
-:10101000E2F790938D0080938C0008950F931F93B7\r
-:10102000CF93DF93CDB7DEB7CC58D1090FB6F89484\r
-:10103000DEBF0FBECDBF8C01862F642F882379F0D1\r
-:10104000F80192812FE7482F992329F08DE792E04C\r
-:101050000E94F81404C08DE792E00E940815F80180\r
-:1010600080818B3061F49181933009F068C0828176\r
-:10107000882309F4CDC0809103018F5F0EC08A30B0\r
-:10108000E1F5F8019181933009F059C082818823FC\r
-:1010900009F4BEC08091030181508093030120E0D8\r
-:1010A0004BE760E08DE792E00E94E81420E04BE718\r
-:1010B00061E08DE792E00E94E81420E04BE762E0F7\r
-:1010C0008DE792E00E94E81420E04BE763E08DE7B3\r
-:1010D00092E00E94E81420E04BE764E08DE792E0A4\r
-:1010E000C457DF4F0FB6F894DEBF0FBECDBFDF9100\r
-:1010F000CF911F910F910C94E814893069F4F80195\r
-:1011000091819330E1F492819923C9F0809101019A\r
-:101110009091020101960EC0883089F4F801918106\r
-:10112000933069F49281992351F08091010190915B\r
-:10113000020101979093020180930101B0CFF80161\r
-:10114000928140910301992391F196E4E3E4F1E067\r
-:10115000DE01A95BBF4F01900D929A95E1F7405DCA\r
-:10116000F8019181FCE09F9F40191124E091010159\r
-:10117000F0910201E80FF11DEE0FFF1F87E490E0F0\r
-:101180008C0F9D1FE80FF91F8081480F2FE760E04B\r
-:101190008DE792E0C457DF4F0FB6F894DEBF0FBE65\r
-:1011A000CDBFDF91CF911F910F910C94F81496E46D\r
-:1011B000E3E4F1E0DE01119601900D929A95E1F7DA\r
-:1011C000405DF8019181FCE09F9F40191124E0915E\r
-:1011D0000101F0910201E80FF11DEE0FFF1F81E008\r
-:1011E00090E08C0F9D1FE80FF91F8081480F2FE7BB\r
-:1011F00060E08DE792E0C457DF4F0FB6F894DEBF92\r
-:101200000FBECDBFDF91CF911F910F910C940815A8\r
-:10121000C457DF4F0FB6F894DEBF0FBECDBFDF91CE\r
-:10122000CF911F910F910895CF93DF93EA019B0116\r
-:10123000AC0160E074E284E79BE40E945F2C0E94B2\r
-:10124000C72C709397006093960020E130E02C1B30\r
-:101250003D0B02C0759567952A95E2F7709399004A\r
-:1012600060939800DF91CF9108951092020210923E\r
-:10127000010210929000109291001092FD011092C4\r
-:10128000FE011092FF01109200021092FC011092D8\r
-:10129000FB01E9EDF1E0A9ECB1E01192119211929C\r
-:1012A00011921D921D9281E0E93FF807B1F7089570\r
-:1012B000AF92BF92CF92DF92EF92FF920F931F9364\r
-:1012C000CF93DF936B017C0109EF11E047EDA42E72\r
-:1012D00041E0B42EC7E0D0E0A7019601F801929159\r
-:1012E0008291729162918F010E945B2C882349F058\r
-:1012F0002197F2E0AF1AB108CF3F8FEFD80761F71F\r
-:1013000034C0F8011082118212821382F501118219\r
-:101310001082FE01EE0FFF1FEE0FFF1FE752FE4F80\r
-:10132000DE01AA0FBB1FA753BE4FCE011AC0019604\r
-:1013300044815581668177814083518362837383C1\r
-:10134000148215821682178212962D913C91139762\r
-:1013500011963C932E9313961C921E9212973496DC\r
-:1013600012968730910519F7C3CF809101029091B1\r
-:101370000202019797FD05C090930202809301023B\r
-:1013800004C01092020210920102E0910102F09159\r
-:101390000202309789F410929000109291001092FE\r
-:1013A000FD011092FE011092FF01109200021092B6\r
-:1013B000FC011092FB019EC03197DF01AA0FBB1FF9\r
-:1013C000AA0FBB1FA752BE4FCD90DD90ED90FC90B1\r
-:1013D000EE0FFF1FE753FE4FC081D181A090FD01AA\r
-:1013E000B090FE010091FF0110910002A70196014B\r
-:1013F0006A2D7B2D802F912F0E945B2C87FF2FC0A1\r
-:1014000081E08093C801AE016A2D7B2D802F912F42\r
-:101410000E9414092091FD013091FE014091FF01CD\r
-:1014200050910002C701B6010E94F62B20E030E087\r
-:101430004AEF53E40E945F2C9B01AC016A2D7B2D87\r
-:10144000802F912F0E94F72B5B018C01A701960141\r
-:101450007B2D912F0E945B2C1816ACF638C0A7018B\r
-:1014600096016A2D7B2D802F912F0E94AA2D181690\r
-:1014700084F581E08093C801AE016A2D7B2D802F19\r
-:10148000912F0E941409A70196016091FD017091AE\r
-:10149000FE018091FF01909100020E94F62B20E056\r
-:1014A00030E04AEF53E40E945F2C9B01AC016A2DAF\r
-:1014B0007B2D802F912F0E94F62B5B018C01A701C1\r
-:1014C00096017B2D912F0E94AA2D87FFD5CF1092D8\r
-:1014D000C801AE01C701B6010E941409C092FD0106\r
-:1014E000D092FE01E092FF01F0920002D093FC0145\r
-:1014F000C093FB01DF91CF911F910F91FF90EF906F\r
-:10150000DF90CF90BF90AF90089508951F920F92F3\r
-:101510000FB60F9211242F933F934F935F936F93C6\r
-:101520007F938F939F93AF93BF93EF93FF9380919C\r
-:10153000960090919700892B09F455C08091C801BD\r
-:10154000811151C08091F9019091FA01813091058A\r
-:1015500071F082309105C1F0892BC1F52091FD0118\r
-:101560003091FE014091FF01509100021DC0609139\r
-:10157000FD017091FE018091FF01909100029B019D\r
-:10158000AC010E94F72B0EC020E030E040E450E4B4\r
-:101590006091FD017091FE018091FF019091000228\r
-:1015A0000E94AE2D9B01AC0160E074E284E79BE4F5\r
-:1015B0000E945F2C0E94C72C709397006093960046\r
-:1015C0007595679570939900609398008091F901E3\r
-:1015D0009091FA01019663E070E00E948A2F909347\r
-:1015E000FA018093F901FF91EF91BF91AF919F9123\r
-:1015F0008F917F916F915F914F913F912F910F90BC\r
-:101600000FBE0F901F901895AF92BF92CF92DF92AE\r
-:10161000EF92FF920F931F93CF93DF936B017C01A7\r
-:10162000EA0120E030E0A9010E94AA2D18160CF072\r
-:10163000B4C03E9A82E8809390008AE18093910042\r
-:10164000A090FD01B090FE010091FF0110910002F9\r
-:1016500020E030E0A9016A2D7B2D802F912F0E9480\r
-:101660005B2C81112DC0AE01C701B6010E94140987\r
-:10167000C092FD01D092FE01E092FF01F0920002C3\r
-:10168000D093FC01C093FB01809101029091020272\r
-:10169000FC01EE0FFF1FEE0FFF1FE752FE4FC0824F\r
-:1016A000D182E282F382FC01EE0FFF1FE753FE4F6F\r
-:1016B000D183C083019690930202809301026DC092\r
-:1016C000A70196016A2D7B2D802F912F0E945B2C04\r
-:1016D00087FF2CC0AE016A2D7B2D802F912F0E9499\r
-:1016E00014092091FD013091FE014091FF015091BC\r
-:1016F0000002C701B6010E94F62B20E030E04AEF5D\r
-:1017000053E40E945F2C9B01AC016A2D7B2D802F3E\r
-:10171000912F0E94F72B5B018C01A70196017B2D75\r
-:10172000912F0E945B2C1816ACF69DCFA701960155\r
-:101730006A2D7B2D802F912F0E94AA2D18160CF058\r
-:1017400092CFAE016A2D7B2D802F912F0E9414091C\r
-:10175000A70196016091FD017091FE018091FF014A\r
-:10176000909100020E94F62B20E030E04AEF53E413\r
-:101770000E945F2C9B01AC016A2D7B2D802F912F45\r
-:101780000E94F62B5B018C01A70196017B2D912F06\r
-:101790000E94AA2D87FFD5CF66CFDF91CF911F91F1\r
-:1017A0000F91FF90EF90DF90CF90BF90AF90089592\r
-:1017B00080910C020895CF93DF9300D01F92CDB794\r
-:1017C000DEB720916E03243021F523E029839B832B\r
-:1017D0008A832093E9008FEF06C095ED9A95F1F783\r
-:1017E0000000882329F09091E800815095FFF5CF03\r
-:1017F0008091E80085FF0DC040E050E063E070E0BC\r
-:10180000CE0101960E94BA0F8091E8008E778093F6\r
-:10181000E8000F900F900F90DF91CF910895CF9334\r
-:10182000DF9300D01F92CDB7DEB720916E03243036\r
-:1018300029F522E029839B838A8383E08093E90052\r
-:101840008FEF06C095ED9A95F1F70000882329F0F7\r
-:101850009091E800815095FFF5CF8091E80085FFD9\r
-:101860000DC040E050E063E070E0CE0101960E94C0\r
-:10187000BA0F8091E8008E778093E8000F900F9068\r
-:101880000F90DF91CF91089520916E032430F9F4E9\r
-:1018900022E02093E9002FEF06C035ED3A95F1F7ED\r
-:1018A0000000222329F03091E800215035FFF5CFC8\r
-:1018B0002091E80025FF0BC040E050E065E070E0BB\r
-:1018C0000E94BA0F8091E8008E778093E800089517\r
-:1018D000CF93DF93EC0180916E03843041F581E07A\r
-:1018E0008093E9008FEF06C095ED9A95F1F700001F\r
-:1018F000882329F09091E800815095FFF5CF8091E1\r
-:10190000E80085FF14C040E050E068E070E0CE01E0\r
-:101910000E94BA0F8091E8008E778093E80088E0FB\r
-:10192000FE01A4E0B2E001900D928A95E1F7DF910B\r
-:10193000CF910895BF92CF92DF92EF92FF920F93D3\r
-:101940001F93CF93DF937C01B62EE90100E010E0F6\r
-:10195000C42ED12C0BC04991202F2B0D2F774F7700\r
-:101960006FE0C7010E94E8140F5F1F4F0C151D05A3\r
-:1019700094F3DF91CF911F910F91FF90EF90DF9043\r
-:10198000CF90BF90089570E06F5F7F4F6F707727A3\r
-:101990000C94E8140F931F93CF93C42F63307105F9\r
-:1019A00009F04AC0842F807F803849F1803909F0DE\r
-:1019B00043C0622F6F7770E080E090E00E94FA2CC5\r
-:1019C00020E030E040E451E40E945F2C9B01AC0138\r
-:1019D00060E070E080E090E40E94112E0F7710E04C\r
-:1019E00023E0159507952A95E1F72DEC3CEC42E0B4\r
-:1019F00053E40E94AE2DA8010E94040B1DC0622F6B\r
-:101A00006F7770E080E090E00E94FA2C20E030E0F8\r
-:101A100040E451E40E945F2C9B01AC0160E070E067\r
-:101A200080E090E40E94112E2DEC3CEC42E053E467\r
-:101A30000E94AE2D0E945809CC3F29F4CF911F91EE\r
-:101A40000F910C943509CF911F910F9108950F9329\r
-:101A50001F93CF93DF93CDB7DEB727970FB6F894D8\r
-:101A6000DEBF0FBECDBF8C0114C08A810E94C2149C\r
-:101A70009A819D839B819E839C819F8381111EC03F\r
-:101A800089818430B1F08730A1F08630A1F08530B3\r
-:101A9000A1F0BE016F5F7F4F84E091E00E942F189C\r
-:101AA0008111E3CF84E091E00E9420180E949B14F2\r
-:101AB0000DC083E003C082E001C081E0AE014B5F56\r
-:101AC0005F4F682FC8010E945515E3CF27960FB6C8\r
-:101AD000F894DEBF0FBECDBFDF91CF911F910F9164\r
-:101AE0000895EF92FF920F93CF93DF9300D000D031\r
-:101AF00000D0CDB7DEB77B014A832B830C83842FC4\r
-:101B00002E834D830E94C2142E814D8181111BC0F2\r
-:101B100082E0E816F10479F083E0E816F10421F0A0\r
-:101B2000EA94EF2821F50BC0073F11F487E001C0CC\r
-:101B300084E089830BC0273FD9F786E0FACF473F7F\r
-:101B4000B9F785E0F6CF42954F704983BE016F5FCC\r
-:101B50007F4F84E091E00E94E51784E091E00E94CD\r
-:101B6000031884E091E00E9420180E949B1426969E\r
-:101B70000FB6F894DEBF0FBECDBFDF91CF910F91AE\r
-:101B8000FF90EF90089580916D03811109C00E942C\r
-:101B9000A1110E94FE118091E20084608093E20016\r
-:101BA000089510926D03089508950C94E4020C9426\r
-:101BB000892480916E03843049F58091E9008F700B\r
-:101BC0009091EC0090FF02C090E801C090E0982B4B\r
-:101BD00084E08093E9008091EB0080FF14C0809145\r
-:101BE000EE0087FD03C00FC01092F1008091E80065\r
-:101BF00085FDFACF8091E80080FF05C08091E80064\r
-:101C00008E778093E8009F709093E900089542E0FA\r
-:101C100061EC81E00E94171142E061EC82E00E94D9\r
-:101C2000171142E061EC83E00E94171146E261EC7B\r
-:101C300084E00E94171142E361E885E00E941711D9\r
-:101C400042E360E886E00C941711809170038330C2\r
-:101C500009F454C030F4813071F0823009F0AAC028\r
-:101C600091C08A3009F47EC08B3009F45FC089309E\r
-:101C700009F0A0C020C080916F03813A09F09AC09A\r
-:101C80008091E800877F8093E800809173039091B2\r
-:101C90007403892B21F060E080E090E003C068E0ED\r
-:101CA00084E092E070E00E9458108091E8008B7709\r
-:101CB0008093E800089580916F03813209F07AC023\r
-:101CC0008091730390917403892B09F073C0809104\r
-:101CD000E800877F8093E80005C080916E03882329\r
-:101CE00009F468C08091E80082FFF7CF8091F1008D\r
-:101CF00080930C028091E8008B7758C080916F032D\r
-:101D0000813A09F057C08091730390917403892B35\r
-:101D100009F050C08091E800877F8093E8008091AF\r
-:101D2000E80080FFFCCF80911A013BC080916F03D7\r
-:101D3000813209F03FC08091730390917403892B25\r
-:101D4000C9F58091E800877F8093E8000E944E11DA\r
-:101D50009091710381E0911101C080E080931A019C\r
-:101D60000C948C1E80916F03813221F58091E800E4\r
-:101D7000877F8093E8000E944E11809172038093C8\r
-:101D80000302089580916F03813AA1F48091E800E5\r
-:101D9000877F8093E8008091E80080FFFCCF8091EE\r
-:101DA00003028093F1008091E8008E778093E80031\r
-:101DB0000C944E11089584B7877F84BF88E10FB6D5\r
-:101DC000F89480936000109260000FBE90E080E86D\r
-:101DD0000FB6F89480936100909361000FBE0E944B\r
-:101DE000A1110E94FE11E2EEF0E080818460808308\r
-:101DF00008958DE792E00E94241561E77DE08DE76C\r
-:101E000092E00E947A1567E27DE08DE792E00E9401\r
-:101E10007E150E94DB0E78946AEC7CE08DE792E000\r
-:101E20000E94201563EC7CE08DE792E00E9418157B\r
-:101E30006AE97CE08DE792E00E941C150E94850A09\r
-:101E40000E949B140E94AC1880E191E00E945418FB\r
-:101E50000BC00E944E2480916C03882329F00E94BD\r
-:101E6000742481110E94A40F80916E03853089F340\r
-:101E70008DE792E00E942D170E94B618F5CF292F0A\r
-:101E8000332723303105B1F04CF42130310509F40A\r
-:101E90004DC02230310509F04EC007C02132310556\r
-:101EA00041F12232310591F146C0E0EDF0E086E7E4\r
-:101EB00093E045C099278130910569F08230910502\r
-:101EC00089F0892B09F037C0E2E7F3E0E491F0E014\r
-:101ED00082E793E034C0E4E4F3E0E491F0E084E4EA\r
-:101EE00093E02DC0EAE1F3E0E491F0E08AE193E0D1\r
-:101EF00026C0643000F5E62FF0E0EE0FFF1FE75735\r
-:101F0000FE4F80819181E9E0F0E019C0643098F4DF\r
-:101F1000E62FF0E0DF01AA0FBB1FAF56BE4F8D9139\r
-:101F20009C91E756FE4FE081F0E009C0E2E1F0E06D\r
-:101F300086E494E004C0E0E0F0E080E090E0DA01C4\r
-:101F40008D939C93CF01089580E189BD82E189BD85\r
-:101F500009B400FEFDCF8091D8008F7D8093D8001A\r
-:101F60008091E00082608093E0008091E00081FD3C\r
-:101F7000FCCF0895BF92CF92DF92EF92FF920F9322\r
-:101F80001F93CF93DF937C018B01EA010E946F11B5\r
-:101F9000B82E811133C0209731F028813981021B7E\r
-:101FA000130BE20EF31EC12CD12C23C08091E8004C\r
-:101FB00085FD15C08091E8008E778093E80020971A\r
-:101FC00049F0888199818C0D9D1D9983888325E036\r
-:101FD000B22E14C00E946F11882359F00EC0F70171\r
-:101FE00081917F018093F10001501109FFEFCF1A19\r
-:101FF000DF0A01151105D1F601C0B82E8B2DDF9136\r
-:10200000CF911F910F91FF90EF90DF90CF90BF90F5\r
-:102010000895BF92CF92DF92EF92FF920F931F939A\r
-:10202000CF93DF937C018B01EA010E946F11B82EE0\r
-:10203000811133C0209731F028813981021B130BA5\r
-:10204000E20EF31EC12CD12C23C08091E80085FD47\r
-:1020500015C08091E8008B778093E800209749F0C5\r
-:10206000888199818C0D9D1D9983888345E0B42ECC\r
-:1020700014C00E946F11882359F00EC08091F100A6\r
-:10208000F70181937F0101501109FFEFCF1ADF0A99\r
-:1020900001151105D1F601C0B82E8B2DDF91CF911E\r
-:1020A0001F910F91FF90EF90DF90CF90BF90089518\r
-:1020B00040917503509176034617570748F0611514\r
-:1020C000710539F44091E8004E774093E80001C073\r
-:1020D000BA01FC0140E033C080916E03882309F40B\r
-:1020E00042C0853009F441C08091E80083FD39C0C9\r
-:1020F0008091E80082FD2FC08091E80080FF1FC022\r
-:102100009091F3008091F200392F20E0A901482B33\r
-:10211000CA0106C041914093F100615071090196D6\r
-:102120006115710519F088309105A0F341E0089719\r
-:1021300009F040E08091E8008E778093E800611517\r
-:10214000710551F64111C8CF06C080916E038823F6\r
-:1021500051F0853051F08091E80082FFF6CF80E0A9\r
-:10216000089581E0089582E0089583E00895409104\r
-:102170007503509176034617570748F061157105AE\r
-:1021800039F44091E8004E774093E80001C0BA016D\r
-:10219000FC0140E034C080916E03882309F443C001\r
-:1021A000853009F442C08091E80083FD3AC08091F7\r
-:1021B000E80082FD30C08091E80080FF20C090914F\r
-:1021C000F3008091F200392F20E0A901482BCA01C9\r
-:1021D00007C044914093F100319661507109019616\r
-:1021E0006115710519F08830910598F341E0089761\r
-:1021F00009F040E08091E8008E778093E800611557\r
-:10220000710549F64111C7CF06C080916E0388233E\r
-:1022100051F0853051F08091E80082FFF6CF80E0E8\r
-:10222000089581E0089582E0089583E00895982F4D\r
-:102230002CC09093E900981739F07091EC00209130\r
-:10224000ED005091F00003C0242F762F50E021FDC7\r
-:1022500002C09F5F1AC03091EB003E7F3093EB00CD\r
-:102260003091ED003D7F3093ED003091EB00316017\r
-:102270003093EB007093EC002093ED005093F0004E\r
-:102280002091EE0027FDE5CF07C0973090F28F70C8\r
-:102290008093E90081E0089580E0089580916F03C4\r
-:1022A00087FD05C08091E80080FF0EC012C08091BC\r
-:1022B000E80082FD05C080916E038111F8CF08957A\r
-:1022C0008091E8008B7708C080916E038111EACF7E\r
-:1022D00008958091E8008E778093E80008958091BA\r
-:1022E000E4009091E50045E62091EC0020FD1FC040\r
-:1022F00023C020916E03222391F0253091F020918C\r
-:10230000EB0025FD10C02091E4003091E500281776\r
-:10231000390751F34150C90139F784E0089582E04B\r
-:10232000089583E0089581E0089580E00895209164\r
-:10233000E80020FFDECFF9CF2091E80022FFD9CFBF\r
-:10234000F4CF0E940F120E941712E0EEF0E080819D\r
-:1023500081608083E8EDF0E080818F77808319BC15\r
-:10236000A7EDB0E08C918E7F8C9380818F7E8083EF\r
-:1023700010926D0308950F931F93CF93DF930E94E4\r
-:102380000F120E941712C8EDD0E088818F778883E2\r
-:1023900088818068888388818F7D888319BC1092AA\r
-:1023A0006E0310926A0310926C0310926B0300EE9E\r
-:1023B00010E0F80180818B7F808388818160888331\r
-:1023C00042E060E080E00E941711E1EEF0E08081E1\r
-:1023D0008E7F8083E2EEF0E0808181608083808167\r
-:1023E00088608083F80180818E7F8083888180610E\r
-:1023F0008883DF91CF911F910F910895E8EDF0E070\r
-:1024000080818F7E8083E7EDF0E080818160808332\r
-:1024100084E082BF81E080936D030C94BB11E8EDF2\r
-:10242000F0E080818E7F80831092E2000895109208\r
-:10243000DA001092E10008951F920F920FB60F92EA\r
-:1024400011242F933F934F935F936F937F938F93B9\r
-:102450009F93AF93BF93EF93FF938091E10082FF2F\r
-:102460000BC08091E20082FF07C08091E1008B7F6A\r
-:102470008093E1000E94D90D8091DA0080FF1FC097\r
-:102480008091D80080FF1BC08091DA008E7F8093FE\r
-:10249000DA008091D90080FF0DC080E189BD82E122\r
-:1024A00089BD09B400FEFDCF81E080936E030E94D8\r
-:1024B000C30D05C019BC10926E030E94D10D80910E\r
-:1024C000E10080FF19C08091E20080FF15C080917B\r
-:1024D000E2008E7F8093E2008091E2008061809331\r
-:1024E000E2008091D80080628093D80019BC85E01A\r
-:1024F00080936E030E94D50D8091E10084FF30C06F\r
-:102500008091E20084FF2CC080E189BD82E189BD19\r
-:1025100009B400FEFDCF8091D8008F7D8093D80054\r
-:102520008091E1008F7E8093E1008091E2008F7EB8\r
-:102530008093E2008091E20081608093E2008091CC\r
-:102540006A03882311F084E007C08091E30087FFCD\r
-:1025500002C083E001C081E080936E030E94D70D2A\r
-:102560008091E10083FF29C08091E20083FF25C0B4\r
-:102570008091E100877F8093E10082E080936E0389\r
-:1025800010926A038091E1008E7F8093E100809138\r
-:10259000E2008E7F8093E2008091E2008061809370\r
-:1025A000E20042E060E080E00E9417118091F000BC\r
-:1025B00088608093F0000E94D40DFF91EF91BF914D\r
-:1025C000AF919F918F917F916F915F914F913F91CB\r
-:1025D0002F910F900FBE0F901F9018951F920F9282\r
-:1025E0000FB60F9211242F933F934F935F936F93E6\r
-:1025F0007F938F939F93AF93BF93CF93EF93FF936B\r
-:102600008091E9008F709091EC0090FF02C090E8FB\r
-:1026100001C090E0C92FC82B1092E9008091F00012\r
-:10262000877F8093F00078940E9432131092E90023\r
-:102630008091F00088608093F000CF70C093E90033\r
-:10264000FF91EF91CF91BF91AF919F918F917F912A\r
-:102650006F915F914F913F912F910F900FBE0F900F\r
-:102660001F9018951F93CF93DF93CDB7DEB7AC972C\r
-:102670000FB6F894DEBF0FBECDBFEFE6F3E080915A\r
-:10268000F100819323E0E737F207C9F70E94250E96\r
-:102690008091E80083FF37C180916F0390917003B0\r
-:1026A000953009F488C038F49130B1F170F093306E\r
-:1026B00009F029C131C0983009F4F8C0993009F403\r
-:1026C00004C1963009F01FC19DC0803821F08238C6\r
-:1026D00009F019C108C080916B0390916C03992394\r
-:1026E00089F082600FC080917303909174038F70A2\r
-:1026F00099278093E9008091EB0085FB882780F97A\r
-:102700001092E9009091E800977F9093E800809301\r
-:10271000F1001092F100D5C0882319F0823009F041\r
-:10272000F2C08F7121F0823009F0EDC00BC08091B2\r
-:102730007103813009F0E7C0933009F080E08093A5\r
-:102740006C032FC08091710381112BC080917303A2\r
-:10275000909174038F709927009709F4D4C08093E7\r
-:10276000E9002091EB0020FF1CC020917003233072\r
-:1027700021F48091EB00806212C09091EB00906197\r
-:102780009093EB0021E030E001C0220F8A95EAF738\r
-:102790002093EA001092EA008091EB008860809319\r
-:1027A000EB001092E9008091E800877F8093E800B9\r
-:1027B0000E944E11A8C08111A6C080917103909112\r
-:1027C00072038F779927182F9091E3009078982BB8\r
-:1027D0009093E3008091E800877F8093E8000E9457\r
-:1027E0004E118091E80080FFFCCF8091E30080686B\r
-:1027F0008093E300112311F083E001C082E0809315\r
-:102800006E0381C08058823008F07DC080917103D2\r
-:10281000909172038C3D23E0920779F583E08A83DF\r
-:102820008AE289834FB7F894DE01139620E03EE0F8\r
-:1028300051E2E32FF0E050935700E49120FF03C0F2\r
-:10284000E295EF703F5FEF708E2F90E0EA3010F06E\r
-:10285000C79601C0C0968D939D932F5F243149F791\r
-:102860004FBF8091E800877F8093E8006AE270E0C4\r
-:10287000CE0101960E94581013C0AE01455D5F4F16\r
-:10288000609173030E943F0F0097E9F12091E800E7\r
-:10289000277F2093E800BC018BA59CA50E94B71060\r
-:1028A0008091E8008B778093E8002DC0803859F53F\r
-:1028B0008091E800877F8093E80080916A0380938D\r
-:1028C000F1008091E8008E7771CF81111CC090914A\r
-:1028D00071039230C0F48091E800877F8093E80014\r
-:1028E00090936A030E944E1180916A03811104C083\r
-:1028F0008091E30087FF02C084E001C081E0809303\r
-:102900006E030E94070E8091E80083FF0AC0809149\r
-:10291000E800877F8093E8008091EB0080628093DD\r
-:10292000EB00AC960FB6F894DEBF0FBECDBFDF91C3\r
-:10293000CF911F910895CF9380916E038823B1F0BA\r
-:102940008091E9008F709091EC0090FF02C090E8B8\r
-:1029500001C090E0C92FC82B1092E9008091E800D7\r
-:1029600083FD0E943213CF70C093E900CF91089588\r
-:10297000881F8827881F089591E0883F08F490E019\r
-:10298000892F0895982F907F903B99F038F49039D3\r
-:1029900081F0903A71F09038C9F40BC0903DA1F0ED\r
-:1029A00018F4903C99F410C0903E19F0903F71F4E7\r
-:1029B00002C083E00895E82FE15FEF3038F4F0E0E3\r
-:1029C000E356FE4F8081089582E0089580E00895E7\r
-:1029D0000F932F774F776F70606BDC01ED91FC9157\r
-:1029E000022F242F462F63E070E009950F91089580\r
-:1029F0000F932F774F776F706069DC01ED91FC9139\r
-:102A0000022F242F462F63E070E009950F9108955F\r
-:102A10000F932F774F776F706068DC01ED91FC9119\r
-:102A2000022F242F462F63E070E009950F9108953F\r
-:102A3000FC01738362830895FC01738F628F089594\r
-:102A4000FC01758F648F0895CF93DF93EC011DA275\r
-:102A50001FA21EA2BC01685D7F4F40EC88519F4FB2\r
-:102A60000E9461171B821A821D821C821F821E8295\r
-:102A7000198618861B861A861D861C861F861E864A\r
-:102A8000198A188A1B8A1A8A1D8A1C8A1F8A1E8A1A\r
-:102A9000198E188E1B8E1A8E1D8E1C8E1F8E1E8EEA\r
-:102AA00019A218A2DF91CF910895CF92DF92FF92E1\r
-:102AB0000F931F93CF93DF931F92CDB7DEB7F62E00\r
-:102AC0006A018C0108511F4F08C0F60161916F0126\r
-:102AD000C80149830E94681749818C2D841B8F157A\r
-:102AE000A0F30F90DF91CF911F910F91FF90DF9096\r
-:102AF000CF900895FC01718360830895FC0171A358\r
-:102B000060A30895AF92BF92CF92DF92EF92FF92AF\r
-:102B10000F931F93CF93DF9300D01F92CDB7DEB7F3\r
-:102B20007C016B01142FB22EA02EDC0195968C91A6\r
-:102B300095978430F1F45A96ED91FC915B9730971C\r
-:102B400009F4D8C0CB01019763E070E00E94762FB2\r
-:102B5000DB01AA0FBB1FA60FB71F49832A830B8374\r
-:102B60004C2D4A1B9E012F5F3F4FBD01C7010995A8\r
-:102B7000B1C06230710509F453C06330710529F0AA\r
-:102B80006130710509F09CC083C0842F807F803A3A\r
-:102B900001F130F48038B9F0803909F0ABC00DC0D4\r
-:102BA000803EE9F0803F09F1803B09F0A3C0D701E6\r
-:102BB0001296ED91FC91139723C0D7011496ED91D5\r
-:102BC000FC9115971DC0D7011696ED91FC911797B2\r
-:102BD00017C0D7011896ED91FC91199711C0D70134\r
-:102BE0001A96ED91FC911B970BC0423F09F082C0F1\r
-:102BF000D7011C96ED91FC911D97309731F47AC066\r
-:102C0000309709F477C0123F21F42A2D4B2D62EF43\r
-:102C100004C0612F6F702A2D4B2DC70109955AC032\r
-:102C2000842F807F803D59F0803F79F0803C09F00F\r
-:102C300061C0D7011E96ED91FC911F9719C0D70175\r
-:102C40005096ED91FC91519713C0433F31F4D70159\r
-:102C50005296ED91FC91539708C0413F09F04AC04C\r
-:102C6000D7015496ED91FC915597309741F442C0AD\r
-:102C7000309709F43FC0133F11F0113F19F44B2D69\r
-:102C8000612F03C0612F6F704B2DC701099522C0C2\r
-:102C9000842F0E94BC14882331F0D7015696ED9101\r
-:102CA000FC91579707C0163F29F5D7015896ED912B\r
-:102CB000FC9159973097F1F0612FC70109950AC02F\r
-:102CC00064307105A8F416C00A2D2B2D412FB601D2\r
-:102CD000C7010995D7015E96ED91FC915F973097FA\r
-:102CE00089F00A2D2B2D412FB601C70109950AC085\r
-:102CF000C12CD12CD7015C96ED91FC915D9730975A\r
-:102D000019F7E8CF0F900F900F90DF91CF911F919F\r
-:102D10000F91FF90EF90DF90CF90BF90AF9008950C\r
-:102D2000EF92FF920F931F93CF93DF93EC01162F37\r
-:102D3000862F0E94BC14882369F0FDA081E08DA33A\r
-:102D400000E020E0412F61E070E0CE010E9482159A\r
-:102D5000FDA27CC0812F0E94B8144DA1882309F4E4\r
-:102D600040C0443029F01AA321E030E03FA32EA355\r
-:102D7000812F0E94C214813031F070F0823051F006\r
-:102D8000833059F507C08DA300E020E0412F61E0BA\r
-:102D900070E01EC08DA35AC0103F19F0173FE9F430\r
-:102DA00004C084E08DA31AA33FC02EA13FA1C90196\r
-:102DB00063E070E00E94762F8C0F9D1FFC0112A330\r
-:102DC000B9016F5F7F4F7FA36EA30CA12BA14AA116\r
-:102DD000CE010E9482151DA239C01DA21FA21EA2F3\r
-:102DE00035C0442399F12EA13FA1C90163E070E0F1\r
-:102DF0000E94762F7C01FE01E80FF91F12A3B90192\r
-:102E00006F5F7F4F7FA36EA38130910591F082E0C9\r
-:102E1000E816F104D9F40CA12BA14AA1CE010E941D\r
-:102E200082158DA1843091F081E090E09FA38EA364\r
-:102E30000DC0423059F400E02BA14AA1CE010E94FE\r
-:102E400082158DA1843011F0FFA2EEA2DF91CF9107\r
-:102E50001F910F91FF90EF900895CF92DF92EF9224\r
-:102E6000FF920F931F93CF93DF93EC01E8A1F9A199\r
-:102E7000309709F009958E0108511F4FC8010E9433\r
-:102E80009A17E12CF12CC82ED12C0FC060E0C8019C\r
-:102E90000E94AE17682FCE010E94901661E0C80113\r
-:102EA0000E94BF178FEFE81AF80AEC14FD0470F3C4\r
-:102EB000DF91CF911F910F91FF90EF90DF90CF9016\r
-:102EC0000895FC0142837483638311821082089504\r
-:102ED0000F931F93CF93DF93EC01062F0E94E0170F\r
-:102EE000182F298130E0C90101966A8170E00E94A3\r
-:102EF0008A2F488150E08417950729F4812F0E947A\r
-:102F0000E31780E012C0EB81FC81E20FF31F008326\r
-:102F10002981822F90E001966A8170E00E948A2FB9\r
-:102F20008983812F0E94E31781E0DF91CF911F9168\r
-:102F30000F910895CF93DF93EC010E94E017298150\r
-:102F40009881291710F0C22F02C0CA81C20FC91B75\r
-:102F50000E94E3178C2FDF91CF910895FC0120810F\r
-:102F6000862F90E0820F911D628170E00E948A2F6F\r
-:102F70000380F481E02DE80FF91F808108950F93FD\r
-:102F80001F93CF93DF931F92CDB7DEB78C01698378\r
-:102F90000E94E017482FF80180816981262F30E0D8\r
-:102FA000280F311D6281C90170E00E948A2F808341\r
-:102FB000842F0F90DF91CF911F910F910C94E31705\r
-:102FC0008FB7F89408958FBF0895FC01CB0120912D\r
-:102FD0006E032430B1F421812F702093E90040E08A\r
-:102FE00050E064E070E00E94BA0F81110BC0909134\r
-:102FF000E80095FD07C09091E8009E779093E80067\r
-:10300000089582E0089520916E032430A9F4FC0114\r
-:1030100081818F708093E9003091F3002091F2005C\r
-:10302000932F80E0822B892B49F08091E8008E77E6\r
-:103030008093E8000C946F1182E0089580E0089579\r
-:1030400020916E03243051F4FC0121812F702093D4\r
-:10305000E9002091E80020FD0C9403180895FC017C\r
-:10306000CB0120916E03243011F080E00895268179\r
-:103070002F702093E9002091E80022FFF6CF2091E5\r
-:10308000E80025FFF2CF40E050E064E070E00E94ED\r
-:1030900009108091E80085FD05C08091E8008B77DC\r
-:1030A0008093E80081E0089590930F0280930E02D0\r
-:1030B000089580910E0290910F020895E0910E0202\r
-:1030C000F0910F02309721F00190F081E02D0994EA\r
-:1030D00080E00895E0910E02F0910F02309721F008\r
-:1030E0000280F381E02D09940895E0910E02F091A1\r
-:1030F0000F02309721F00480F581E02D09940895A6\r
-:1031000020911002309111028217930771F0909371\r
-:10311000110280931002E0910E02F0910F0230979D\r
-:1031200021F00680F781E02D099408952091120284\r
-:10313000309113028217930771F0909313028093DA\r
-:103140001202E0910E02F0910F02309721F00084FC\r
-:10315000F185E02D099408950E94B6240E948D0502\r
-:103160000E948A250C945F2B0C94CE075F926F927D\r
-:103170007F928F929F92AF92BF92CF92DF92EF9207\r
-:10318000FF920F931F93CF93DF93CDB7DEB72A97AC\r
-:103190000FB6F894DEBF0FBECDBF0E947E0694E14D\r
-:1031A000C92E92E0D92E00E010E0AA24A394B12CFD\r
-:1031B000502E802F0E94C4073C01F601E190F1904F\r
-:1031C0006F01E826F926E114F10431F40F5F1F4F77\r
-:1031D0000430110569F73AC08091680281FD0E94B0\r
-:1031E000CD0720E030E04501022E02C0880C991C7A\r
-:1031F0000A94E2F7C4018E219F21892B09F12E83C5\r
-:103200005F826820792081E0672809F480E0888760\r
-:103210000E94BF248160782F9A8789874E815F81C1\r
-:1032200068858A850E946F19F801EE0FFF1FEC5E1A\r
-:10323000FD4F80819181882599259183808316C0D7\r
-:103240002F5F3F4F2C30310571F6C0CF8FEF898350\r
-:103250008A831B820E94BF248160782F9D838C8388\r
-:1032600049815A816B818D810E946F190E94772854\r
-:1032700010911C020E945E181817D9F00E945E1867\r
-:1032800080931C022A960FB6F894DEBF0FBECDBF06\r
-:10329000DF91CF911F910F91FF90EF90DF90CF9032\r
-:1032A000BF90AF909F908F907F906F905F900C94A5\r
-:1032B000B4182A960FB6F894DEBF0FBECDBFDF91CB\r
-:1032C000CF911F910F91FF90EF90DF90CF90BF9023\r
-:1032D000AF909F908F907F906F905F900895CF9365\r
-:1032E000DF93CDB7DEB72B970FB6F894DEBF0FBED6\r
-:1032F000CDBF4F83588769877A878B87DE01119608\r
-:1033000086E0FD0111928A95E9F785E0FE01379686\r
-:1033100001900D928A95E1F749815A816B817C81F8\r
-:103320008D819E810E9447212B960FB6F894DEBFB7\r
-:103330000FBECDBFDF91CF910895CF93C82F8823C3\r
-:1033400009F4C1C0823859F40E945E1881FDBBC0E7\r
-:1033500089E30E94AC230E94282489E30CC08338AF\r
-:1033600079F40E945E1880FDAEC083E50E94AC2314\r
-:103370000E94282483E50E94CE23CF910C94282418\r
-:10338000843859F40E945E1882FD9DC087E40E9433\r
-:10339000AC230E94282487E4EECF8450813A48F47D\r
-:1033A0008C2F0E94C72A81118EC08C2F0E94AC23C3\r
-:1033B000E4CF8C2F805E883050F4C77081E090E0BD\r
-:1033C00001C0880FCA95EAF70E94EF23D6CF8C2F51\r
-:1033D000855A833078F4C53A29F0C63A31F482E848\r
-:1033E00090E005C081E890E002C083E890E0CF91D2\r
-:1033F0000C9480188C2F885A833108F064C0C83A26\r
-:1034000039F1C93A41F1CA3A49F1CB3A51F1CC3AD2\r
-:1034100059F1CD3A61F1C03B69F1CE3A71F1CF3A41\r
-:1034200079F1C13B81F1C23B89F1C33B91F1C43BCE\r
-:1034300099F1C53BA1F1C63BA9F1C73BB1F1C83B2E\r
-:10344000B9F1C93BC1F1CA3BC9F58AE292E038C083\r
-:1034500082EE90E035C089EE90E032C08AEE90E0D6\r
-:103460002FC085EB90E02CC086EB90E029C087EB65\r
-:1034700090E026C08CEC90E023C08DEC90E020C062\r
-:1034800083E891E01DC08AE891E01AC082E991E0EA\r
-:1034900017C084E991E014C081E292E011C083E298\r
-:1034A00092E00EC084E292E00BC085E292E008C098\r
-:1034B00086E292E005C087E292E002C080E090E000\r
-:1034C000CF910C949618CF910895882309F44DC09C\r
-:1034D000823859F40E945E1881FF47C089E30E9438\r
-:1034E000AC230E94282489E30CC0833871F40E9425\r
-:1034F0005E1880FF3AC083E50E94AC230E94282416\r
-:1035000083E50E94CE230C942824843859F40E9429\r
-:103510005E1882FF2AC087E40E94AC230E94282400\r
-:1035200087E4EFCF982F9450913A08F4EACF982F80\r
-:10353000905E983058F4282F277081E090E001C009\r
-:10354000880F2A95EAF70E94F523DDCF982F955A28\r
-:10355000933020F480E090E00C948018885A8331F6\r
-:1035600020F480E090E00C9496180895882321F0D0\r
-:103570000E94EF230C9428240895882321F00E94B0\r
-:10358000F5230C9428240895BF92CF92DF92EF92F6\r
-:10359000FF920F931F93CF93DF93CDB7DEB727979B\r
-:1035A0000FB6F894DEBF0FBECDBF8C0185E0F801E9\r
-:1035B000DE01119601900D928A95E1F7F8013081B4\r
-:1035C0002181F280558152955F7083819481892B8E\r
-:1035D00039F02F3F41F481E090E03F3F31F003C0EC\r
-:1035E00081E090E002C080E090E080FD73C3398309\r
-:1035F0002A8389819A815E830E946923B92E8F83F1\r
-:103600000E9468230E9490222B2D22952F7030E07B\r
-:103610005E816F812530310509F4E6C06CF42430F9\r
-:1036200031050CF0A2C04B2D407F8B2D8F702230C6\r
-:1036300031050CF045C017C02C3031054CF42A3050\r
-:1036400031050CF0E7C12830310509F043C3E5C06E\r
-:103650002D30310509F4BAC20CF4A2C22F30310565\r
-:1036600009F038C323C3182F411101C002C01295BD\r
-:10367000107FFF2059F0112309F46BC2812F6F8353\r
-:103680000E94FF230E9428246F8163C2862F0E941C\r
-:10369000651A112309F41EC3812F0E940524279661\r
-:1036A0000FB6F894DEBF0FBECDBFDF91CF911F9153\r
-:1036B0000F91FF90EF90DF90CF90BF900C94282453\r
-:1036C000403211F08295807F662319F0613071F5E8\r
-:1036D00023C0FF20B1F0511101C032C0513081F53B\r
-:1036E00027960FB6F894DEBF0FBECDBFDF91CF9106\r
-:1036F0001F910F91FF90EF90DF90CF90BF900C94AF\r
-:103700000F24511101C003C0513009F4E3C28E836C\r
-:103710000E9412248E819AC1FF2021F0563008F0B9\r
-:10372000D9C20EC0553008F0D5C290C1FF20C9F0F3\r
-:10373000552331F0F801958190FF0BC29F7095835E\r
-:1037400027960FB6F894DEBF0FBECDBFDF91CF91A5\r
-:103750001F910F91FF90EF90DF90CF90BF900C944E\r
-:10376000B61A552309F472C109C22B2D2695269548\r
-:10377000237030E02115310529F02130310509F0A1\r
-:10378000A9C219C0FF2021F0862F9B2D937002C083\r
-:1037900080E090E027960FB6F894DEBF0FBECDBF55\r
-:1037A000DF91CF911F910F91FF90EF90DF90CF901D\r
-:1037B000BF900C948018FF2021F0862F9B2D9370D2\r
-:1037C00002C080E090E027960FB6F894DEBF0FBEEF\r
-:1037D000CDBFDF91CF911F910F91FF90EF90DF90C0\r
-:1037E000CF90BF900C949618862FFF2019F00E945E\r
-:1037F0007D2702C00E94E52727960FB6F894DEBF0A\r
-:103800000FBECDBFDF91CF911F910F91FF90EF9031\r
-:10381000DF90CF90BF900C946C288B2D837009F0B3\r
-:1038200079C0F11057C2262F229526952770220FB6\r
-:10383000220F862F8F70C82ED12CE12CF12C022E56\r
-:1038400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF4\r
-:1038500010C06FE070E080E090E004C0660F771F5A\r
-:10386000881F991F2A95D2F760957095809590953D\r
-:1038700003C060E070E0CB012B2D269526952370C8\r
-:10388000422F50E042305105D9F04330510569F1E3\r
-:103890006C297D298E299F294130510551F12796A8\r
-:1038A0000FB6F894DEBF0FBECDBFDF91CF911F9151\r
-:1038B0000F91FF90EF90DF90CF90BF900C94A522D6\r
-:1038C0006C297D298E299F2927960FB6F894DEBF93\r
-:1038D0000FBECDBFDF91CF911F910F91FF90EF9061\r
-:1038E000DF90CF90BF900C94B7220E94A522C70111\r
-:1038F000B60127960FB6F894DEBF0FBECDBFDF919D\r
-:10390000CF911F910F91FF90EF90DF90CF90BF90DC\r
-:103910000C949322FF2019F08B2D817001C08695A5\r
-:10392000882309F4D7C1262F229526952770220FC8\r
-:10393000220F862F8F70C82ED12CE12CF12C022E55\r
-:1039400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF3\r
-:1039500010C06FE070E080E090E004C0660F771F59\r
-:10396000881F991F2A95D2F760957095809590953C\r
-:1039700003C060E070E0CB012B2D269526952370C7\r
-:10398000422F50E042305105D9F04330510569F1E2\r
-:103990006C297D298E299F294130510551F12796A7\r
-:1039A0000FB6F894DEBF0FBECDBFDF91CF911F9150\r
-:1039B0000F91FF90EF90DF90CF90BF900C94442335\r
-:1039C0006C297D298E299F2927960FB6F894DEBF92\r
-:1039D0000FBECDBFDF91CF911F910F91FF90EF9060\r
-:1039E000DF90CF90BF900C9456230E944423C701D0\r
-:1039F000B60127960FB6F894DEBF0FBECDBFDF919C\r
-:103A0000CF911F910F91FF90EF90DF90CF90BF90DB\r
-:103A10000C943223603F59F120F4603E08F494C0C6\r
-:103A200008C0623F09F467C0F0F1633F09F08CC041\r
-:103A300065C0162F1F708B2D8F71FF2021F00E9403\r
-:103A4000DD22812F7DCE0E94F822812F27960FB68E\r
-:103A5000F894DEBF0FBECDBFDF91CF911F910F91C4\r
-:103A6000FF90EF90DF90CF90BF900C94BD1AFF2095\r
-:103A7000B1F0553008F02EC18B2D8F7127960FB6FF\r
-:103A8000F894DEBF0FBECDBFDF91CF911F910F9194\r
-:103A9000FF90EF90DF90CF90BF900C94172356309B\r
-:103AA00008F018C1E9CFFF2099F08B2D8F71279670\r
-:103AB0000FB6F894DEBF0FBECDBFDF91CF911F913F\r
-:103AC0000F91FF90EF90DF90CF90BF900C94DD228C\r
-:103AD0008B2D8F7127960FB6F894DEBF0FBECDBF2A\r
-:103AE000DF91CF911F910F91FF90EF90DF90CF90DA\r
-:103AF000BF900C94F822F110EBCFD7CFFF2099F0B4\r
-:103B00008B2D8F7127960FB6F894DEBF0FBECDBFF9\r
-:103B1000DF91CF911F910F91FF90EF90DF90CF90A9\r
-:103B2000BF900C94CE2227960FB6F894DEBF0FBE3E\r
-:103B3000CDBFDF91CF911F910F91FF90EF90DF905C\r
-:103B4000CF90BF900C94C922FF20A9F0552309F40F\r
-:103B5000ACCF862F27960FB6F894DEBF0FBECDBF31\r
-:103B6000DF91CF911F910F91FF90EF90DF90CF9059\r
-:103B7000BF900C949D19552309F4AACF862F279640\r
-:103B80000FB6F894DEBF0FBECDBFDF91CF911F916E\r
-:103B90000F91FF90EF90DF90CF90BF900C94651A3B\r
-:103BA0004B2D4F70C8010E94E50227960FB6F8947E\r
-:103BB000DEBF0FBECDBFDF91CF911F910F91FF9060\r
-:103BC000EF90DF90CF90BF900C94FD21F11082C058\r
-:103BD0009B2D9F70492F50E04230510599F144F4DC\r
-:103BE0004115510569F04130510509F073C019C004\r
-:103BF00043305105C1F14430510509F06BC044C058\r
-:103C000027960FB6F894DEBF0FBECDBFDF91CF91E0\r
-:103C10001F910F91FF90EF90DF90CF90BF900C9489\r
-:103C2000702B27960FB6F894DEBF0FBECDBFDF9185\r
-:103C3000CF911F910F91FF90EF90DF90CF90BF90A9\r
-:103C40000C94872B27960FB6F894DEBF0FBECDBF1E\r
-:103C5000DF91CF911F910F91FF90EF90DF90CF9068\r
-:103C6000BF900C94A32B27960FB6F894DEBF0FBE1F\r
-:103C7000CDBFDF91CF911F910F91FF90EF90DF901B\r
-:103C8000CF90BF900C94B62B862F27960FB6F89442\r
-:103C9000DEBF0FBECDBFDF91CF911F910F91FF907F\r
-:103CA000EF90DF90CF90BF900C94DA2B4B2D4F709C\r
-:103CB000C80127960FB6F894DEBF0FBECDBFDF91C7\r
-:103CC000CF911F910F91FF90EF90DF90CF90BF9019\r
-:103CD0000C940E0827960FB6F894DEBF0FBECDBF2A\r
-:103CE000DF91CF911F910F91FF90EF90DF90CF90D8\r
-:103CF000BF9008950E940C240E94E1230E94282472\r
-:103D00000E9418290E946C2880E090E00E94801890\r
-:103D100080E090E00C9496180E94FC230C947A1E8C\r
-:103D20000E946923292F22952F7030E02C30310515\r
-:103D30004CF42A3031056CF422503109223031051F\r
-:103D400070F407C02C30310531F02F30310539F4D3\r
-:103D500002C081E0089593FB882780F9089580E0F0\r
-:103D60000895CF93DF9300D000D01F92CDB7DEB778\r
-:103D70000F900F900F900F900F90DF91CF910895BB\r
-:103D8000CF93DF9300D000D000D0CDB7DEB726961A\r
-:103D90000FB6F894DEBF0FBECDBFDF91CF9108956F\r
-:103DA0001F93CF93DF93C091530216E012C0D0E06F\r
-:103DB0001C9FF0011D9FF00D1124ED5DFD4F408112\r
-:103DC000518162817381848195810E94C01E2196F8\r
-:103DD000C77080915402C813EACFDF91CF911F9131\r
-:103DE000089540911D0250911E0260911F02709132\r
-:103DF000200280912102909122020C94C01E0F9308\r
-:103E00001F93CF93DF938091220282958F7009F0E8\r
-:103E100069C080911F02882309F464C0A0915302F5\r
-:103E2000D0915402B0911D02C0911E0280912002D7\r
-:103E30009091210221E030E0BF3F11F020E030E01E\r
-:103E4000122FBC016095709506E04AC0009721F0E2\r
-:103E5000CF3F29F4212F05C021E030E002C020E04F\r
-:103E600030E020FD3BC04A2F50E0049FF001059F49\r
-:103E7000F00D1124ED5DFD4F2181C2132FC0208173\r
-:103E8000B2132CC02281211129C02381348128172B\r
-:103E9000390718F0281B390B02C0260F371F283CA2\r
-:103EA0003105E0F4809122028F70806180932202BC\r
-:103EB00086E0849FF001859FF00D1124E85DFD4FA1\r
-:103EC00080818F70806180838DE192E00E94C41AAE\r
-:103ED000DF91CF911F910F910C94D01EAF5FA7700F\r
-:103EE000AD13B4CFDF91CF911F910F910895EF9251\r
-:103EF000FF920F931F93CF93DF93CDB7DEB76297F7\r
-:103F00000FB6F894DEBF0FBECDBF8C0185E0F8017F\r
-:103F1000DE011D9601900D928A95E1F7D8014C9132\r
-:103F200011965C91119712966C9112971396ED90E1\r
-:103F3000FC90149770911D02E0911E028091200266\r
-:103F400090912102009739F0EF3F41F421E030E0F9\r
-:103F50007F3F31F003C021E030E002C020E030E0DC\r
-:103F600020FD5CC120911F02222309F4F1C0E81654\r
-:103F7000F90628F09701281B390BC90104C0809568\r
-:103F800090958E0D9F1D883C910508F098C08091FA\r
-:103F90002202982F907F09F064C0E51314C07413B7\r
-:103FA00012C0611110C08F708061809322020E9444\r
-:103FB000F11E8DE192E00E94C41A80912202D80184\r
-:103FC00015968C9343C1EF2839F05F3F41F481E0AF\r
-:103FD00090E04F3F31F003C081E090E002C080E00C\r
-:103FE00090E080FD03C081E0862702C080E090E081\r
-:103FF00080FF2EC0809153022091540236E013C0FE\r
-:1040000090E0389FF001399FF00D1124ED5DFD4FD8\r
-:104010007181571306C07081471303C07281671303\r
-:1040200017C0019687708213EBCF12C19F7059F0B1\r
-:10403000882309F40BC107C09F7029F0F80195810E\r
-:10404000907F09F403C1805E883008F4FFC0D2C0BD\r
-:10405000662309F4FBC080912202816080932202D2\r
-:10406000F5C0E51308C0741306C0611104C0D8017F\r
-:1040700015968C939DC04D875E878D859E856A8B36\r
-:104080000E94901E6A89882309F4B4C0662309F44B\r
-:10409000B1C020912202822F82958F7090E002970A\r
-:1040A0000CF4C6C080911D0290911E0298878F83E8\r
-:1040B0001986FB86EA862C87CE01079646C080913A\r
-:1040C0002202982F907F59F47E2DF98AE88A8989F7\r
-:1040D0000E94B11E8DE192E00E94C41A95C0E513C2\r
-:1040E00011C074130FC061110DC0F8018583C801A0\r
-:1040F0000E94C41AEDE1F2E086E0DF011D928A958C\r
-:10410000E9F7A2C04D875E878D859E856A8B0E94E8\r
-:10411000901E6A89882309F46DC0662309F46AC079\r
-:1041200020912202822F82958F7090E002970CF4EA\r
-:104130007FC080911D0290911E029A8389831B8209\r
-:10414000FD82EC822E83CE0101960E94C41A70C0BB\r
-:10415000E816F90628F09701281B390BC90104C09D\r
-:10416000809590958E0D9F1D883C910508F046C066\r
-:10417000662309F43FC0E51330C074132EC02091AC\r
-:10418000220220FD21C0322F32953F70832F90E014\r
-:104190000097D1F0D80115962C9315970F9741F001\r
-:1041A000832F8F5F8295807F2F70282B15962C93FD\r
-:1041B000C8010E94C41A86E0F801ADE1B2E00190A6\r
-:1041C0000D928A95E1F73EC086E0F801ADE1B2E0DC\r
-:1041D00001900D928A95E1F737C04D875E878D85F6\r
-:1041E0009E850E94901E811123C0809122028160D1\r
-:1041F00080932202C8010E94C41A26C07E2DF98A2B\r
-:10420000E88A89890E94B11EEDE1F2E086E0DF01D3\r
-:104210001D928A95E9F70E94F11E18C0662351F39A\r
-:104220004D875E878D859E850E94901E882311F3A1\r
-:1042300086E0F801ADE1B2E001900D928A95E1F7D8\r
-:104240000E94FF1E0E94F11E81E014C080E012C097\r
-:104250004D875E878D859E850E946923292F229533\r
-:104260002F7030E0223031050CF4E0CE24303105DF\r
-:104270000CF6E2CE62960FB6F894DEBF0FBECDBF4D\r
-:10428000DF91CF911F910F91FF90EF9008951F93B1\r
-:10429000CF93DF93CDB7DEB72C970FB6F894DEBF80\r
-:1042A0000FBECDBF4F83588769877A878B879C87DE\r
-:1042B000CE0107960E94771F8823D9F02F81388579\r
-:1042C0008A859B85892B39F03F3F19F080E090E08B\r
-:1042D00004C02F3FD9F781E090E0892B09F06DC031\r
-:1042E0004F81588569857A858B859C850E94C01E83\r
-:1042F00064C086E0FE013796DE01119601900D92B2\r
-:104300008A95E1F7FF81E8854A855B85411551056E\r
-:1043100039F0EF3F41F481E090E0FF3F31F003C01E\r
-:1043200081E090E002C080E090E080FD46C02091F6\r
-:10433000540230E0C90101968770992760915302B9\r
-:1043400070E08617970709F440C0F983EA835D831C\r
-:104350004C8396E0929FD001939FB00D1124AD5DE8\r
-:10436000BD4FFE01319601900D929A95E1F7809331\r
-:1043700054020E94D01E21C0189FC00111248D5DDF\r
-:104380009D4F0E94771F882371F1E09153021E9F79\r
-:10439000F0011124ED5DFD4F4081518162817381F7\r
-:1043A000848195810E94C01E8091530290E0019605\r
-:1043B000877099278093530201C016E080915302C1\r
-:1043C000909154028913D8CF0EC00E948C1E109277\r
-:1043D000540210925302EDE1F2E086E0DF011D92FB\r
-:1043E0008A95E9F7EACF2C960FB6F894DEBF0FBE98\r
-:1043F000CDBFDF91CF911F910895DF92EF92FF9291\r
-:104400000F931F93CF93DF93EC01009709F46CC0D7\r
-:10441000D12CEE24E394F12C8E010F5F1F4FFE018F\r
-:104420008491843748F4843008F04AC0813071F0B8\r
-:10443000823009F059C01EC0853709F43DC070F1C3\r
-:10444000982F9458903708F04FC03DC02296F8013D\r
-:104450008491982F905E983050F48770FE2D01C0A3\r
-:10446000FF0F8A95EAF78F2F0E94FF2330C00E942A\r
-:104470009D192DC02296F8018491982F905E983056\r
-:1044800050F48770FE2D01C0FF0F8A95EAF78F2F39\r
-:104490000E9405241CC00E94651A19C02296F801CA\r
-:1044A000049107C08FE99FE00197F1F700C0000079\r
-:1044B00001500111F7CF0BC02296F801D49007C02C\r
-:1044C0000E949D1903C08F770E94651AE8018D2D07\r
-:1044D00007C08150EFE9FFE03197F1F700C000001D\r
-:1044E000882309F499CFF5CFDF91CF911F910F91D8\r
-:1044F000FF90EF90DF9008956093590270935A02F5\r
-:1045000080935B0290935C020C947A1E6093550238\r
-:104510007093560280935702909358020C947A1E1F\r
-:1045200008950C947C220F931F93009159021091CF\r
-:104530005A0220915B0230915C02602B712B822B1E\r
-:10454000932B1F910F910C947C220F931F9300913A\r
-:10455000590210915A0220915B0230915C02602353\r
-:104560007123822393231F910F910C947C220F932C\r
-:104570001F930091590210915A0220915B023091D1\r
-:104580005C0260277127822793271F910F910C945B\r
-:104590007C2260E070E0CB010C94862241E050E088\r
-:1045A00060E070E004C0440F551F661F771F8A95B6\r
-:1045B000D2F7CB01BA010C94862241E050E060E0D2\r
-:1045C00070E004C0440F551F661F771F8A95D2F70D\r
-:1045D0008091550290915602A0915702B0915802D5\r
-:1045E000482B592B6A2B7B2BCB01BA010C948622CA\r
-:1045F00041E050E060E070E004C0440F551F661FCA\r
-:10460000771F8A95D2F74095509560957095809167\r
-:10461000550290915602A0915702B091580248233A\r
-:1046200059236A237B23CB01BA010C94862241E0F3\r
-:1046300050E060E070E004C0440F551F661F771F14\r
-:104640008A95D2F78091550290915602A091570217\r
-:10465000B0915802482759276A277B27CB01BA0116\r
-:104660000C9486220F931F930091550210915602CD\r
-:104670002091570230915802602B712B822B932B83\r
-:104680001F910F910C9486220F931F930091550256\r
-:1046900010915602209157023091580260237123E5\r
-:1046A000822393231F910F910C9486220F931F93C3\r
-:1046B00000915502109156022091570230915802F4\r
-:1046C00060277127822793271F910F910C948622D0\r
-:1046D0000895CF92DF92EF92FF920F931F93CF93A3\r
-:1046E000DF93EC01C0905902D0905A02E0905B0237\r
-:1046F000F0905C028091550290915602A091570271\r
-:10470000B0915802C82AD92AEA2AFB2A0FE110E000\r
-:10471000B701A601002E04C0769567955795479579\r
-:104720000A94D2F740FF08C0BE01802F0E94E00328\r
-:104730008130910509F007C00150110948F7BE0109\r
-:1047400080E00E94E003DF91CF911F910F91FF90D5\r
-:10475000EF90DF90CF90089540911B0150911C0184\r
-:1047600020E030E09FEFFA01E20FF31F628168174B\r
-:10477000A1F09F3F19F4611101C0922F2F5F3F4FAD\r
-:104780002630310581F707C0FA01E90FF11D97FDC9\r
-:10479000FA95828308959F3FB9F7089540911B01D0\r
-:1047A00050911C0120E030E0FA01E20FF31F9281EA\r
-:1047B000981301C012822F5F3F4F26303105A1F7B9\r
-:1047C000089581E090E0E0911B01F0911C01E80F59\r
-:1047D000F91F1082019688309105A9F708959091EC\r
-:1047E0005D02982B90935D020895809590915D02F3\r
-:1047F000982390935D02089510925D020895909120\r
-:104800005E02982B90935E020895809590915E02CF\r
-:10481000982390935E02089510925E02089580930B\r
-:104820005F02089510925F02089540911B0150911C\r
-:104830001C0120E030E080E0FA01E20FF31F9181DB\r
-:1048400091118F5F2F5F3F4F27303105A9F70895F2\r
-:10485000E0911B01F0911C0180915D028083E09149\r
-:104860001B01F0911C01808190915E02892B808355\r
-:1048700090915F02992361F0E0911B01F0911C017E\r
-:104880008081892B80830E94152481110E9412242B\r
-:1048900080911B0190911C010C946A1880916E0309\r
-:1048A000843009F11092690220E488E190E00FB6AB\r
-:1048B000F894A895809360000FBE2093600083B7A2\r
-:1048C000817F846083BF83B7816083BF789488953C\r
-:1048D00083B78E7F83BF88E10FB6F8948093600022\r
-:1048E000109260000FBE0895CF930E94E3020E94D1\r
-:1048F0007E060E94E402C0E08C2F0E94C407892B30\r
-:1049000029F4CF5FC430C1F780E001C081E0CF91CE\r
-:1049100008950E948C1E0C945F2B1F920F920FB66D\r
-:104920000F9211248F939F93AF93BF93809169024D\r
-:10493000811113C080916A0290916B02A0916C0268\r
-:10494000B0916D024196A11DB11D80936A029093B2\r
-:104950006B02A0936C02B0936D02BF91AF919F91D7\r
-:104960008F910F900FBE0F901F90189582E084BD1D\r
-:1049700093E095BD9AEF97BD80936E0008958FB731\r
-:10498000F89440916A0250916B0260916C027091B0\r
-:104990006D028FBFCA010895CF92DF92EF92FF920E\r
-:1049A0000F931F932FB7F89440916A0250916B02B6\r
-:1049B00060916C0270916D022FBF6A017B01EE2441\r
-:1049C000FF248C0120E030E0C016D106E206F30699\r
-:1049D00020F09A01281B390B05C09C0120953095C9\r
-:1049E000240F351FC9011F910F91FF90EF90DF90A9\r
-:1049F000CF9008951F920F920FB60F9211248F93AC\r
-:104A00009F93AF93BF9380916A0290916B02A091A4\r
-:104A10006C02B0916D020196A11DB11D80936A02D6\r
-:104A200090936B02A0936C02B0936D02BF91AF9113\r
-:104A30009F918F910F900FBE0F901F9018950E941D\r
-:104A4000A111F8942FEF87EA91E621508040904021\r
-:104A5000E1F700C0000087E090EBDC018093780371\r
-:104A600090937903A0937A03B0937B032CE088E1C1\r
-:104A700090E00FB6F894A895809360000FBE209345\r
-:104A80006000FFCFCF92DF92EF92FF920F931F93C0\r
-:104A9000CF93DF93C82ED12C01E010E08D2D0E9422\r
-:104AA000C4077C01C0E0D0E098010C2E02C0220FA8\r
-:104AB000331F0A94E2F72E213F21232B29F421965C\r
-:104AC000CC30D10589F708C06C2F7D2D80E00E9485\r
-:104AD000BB03C812F4CF06C0D39484E0D812DECF53\r
-:104AE00080E001C081E0DF91CF911F910F91FF9095\r
-:104AF000EF90DF90CF900895CF93C82F8CE20E9463\r
-:104B00004225882321F08C2FCF910C94422580E000\r
-:104B1000CF910895CF930E94CD26811102C00E94AB\r
-:104B2000AE26C5E608C00E947E068FE39CE9019789\r
-:104B3000F1F700C00000C150B1F789E20E947C2566\r
-:104B400081110AC18AE20E947C2581110E94AE2651\r
-:104B500085E00E947C2581110E941F250E94D82695\r
-:104B60008093680287E00E947C25882399F18BE17D\r
-:104B70000E947C25882351F09091680291FB882740\r
-:104B800080F921E0822780FB91F922C08EE00E940B\r
-:104B90007C25882351F09091680292FB882780F948\r
-:104BA00021E0822780FB92F913C080E10E947C25DE\r
-:104BB00090916802882341F093FB882780F921E0D7\r
-:104BC000822780FB93F904C0892F809580FB90F9A0\r
-:104BD00090936802809168020E94DC260E94EA2677\r
-:104BE00080937B0280EE0E947C25882341F0809197\r
-:104BF0007B02982F909590FB80F980937B0289E34C\r
-:104C00000E947C25882359F090917B0291FB882794\r
-:104C100080F921E0822780FB91F990937B0282EE5C\r
-:104C20000E947C25882359F090917B0292FB882773\r
-:104C300080F921E0822780FB92F990937B0286EE37\r
-:104C40000E947C25882359F090917B0293FB882752\r
-:104C500080F921E0822780FB93F990937B0283EE19\r
-:104C60000E947C25882359F090917B0294FB882731\r
-:104C700080F921E0822780FB94F990937B0285E301\r
-:104C80000E947C25882359F090917B0295FB882710\r
-:104C900080F921E0822780FB95F990937B0281E3E4\r
-:104CA0000E947C25882359F090917B0296FB8827EF\r
-:104CB00080F921E0822780FB96F990937B0281E1C5\r
-:104CC0000E947C25882359F090917B0297FB8827CE\r
-:104CD00080F921E0822780FB97F990937B028091F5\r
-:104CE0007B020E94EE2687E20E947C25C82F8EE17F\r
-:104CF0000E947C258111C2608FE10E947C25811178\r
-:104D0000C46080E20E947C258111C86081E20E941B\r
-:104D10007C258111C06182E20E947C258111C062E4\r
-:104D200083E20E947C258111C06484E20E947C257C\r
-:104D3000882311F0C06802C0CC2329F08C2F0E9478\r
-:104D4000E5266C2F03C00E94E126682F70E080E00A\r
-:104D500090E0CF910C949122CF9108956DEE7EEF6B\r
-:104D600080E090E00E94BA2F60E082E090E00E9434\r
-:104D7000AC2F60E083E090E00E94AC2F60E084E024\r
-:104D800090E00E94AC2F60E085E090E00E94AC2FA4\r
-:104D900060E086E090E00C94AC2F80E090E00E9410\r
-:104DA000A62F21E08D3E9E4F09F020E0822F08952E\r
-:104DB00082E090E00C949E2F682F82E090E00C94AB\r
-:104DC000AC2F83E090E00C949E2F682F83E090E05E\r
-:104DD0000C94AC2F84E090E00C949E2F682F84E01C\r
-:104DE00090E00C94AC2F86E090E00C949E2F682FFE\r
-:104DF00086E090E00C94AC2F8091760280FF0BC08F\r
-:104E00006091200185E0689FB00111247595679538\r
-:104E1000759567952AC081FF09C06091200185E0E2\r
-:104E2000689FB0011124759567951FC082FF07C068\r
-:104E30006091200185E0689FB001112416C0409167\r
-:104E400070024423C9F060911F01461788F7209132\r
-:104E5000200185E0289F90011124429FC001439FBB\r
-:104E6000900D112470E00E948A2F6038710540F483\r
-:104E70006115710539F002C065E070E0862F089574\r
-:104E80008FE7089581E008958091760280FF08C041\r
-:104E900060911E0170E0759567957595679521C0C5\r
-:104EA00081FF06C060911E0170E07595679519C07D\r
-:104EB00082FF04C060911E0170E010C080917002FA\r
-:104EC0008823C1F060911D018617A0F790911E0103\r
-:104ED000989FC001112470E00E948A2F60387105EC\r
-:104EE00028F46115710521F0862F08958FE7089544\r
-:104EF00081E0089561E070E0F4CF803F21F40E94EA\r
-:104F0000FC26819504C0813F29F40E94FC268093F1\r
-:104F100073020895823F21F40E94FC26819504C00B\r
-:104F2000833F29F40E94FC26809372020895893FF2\r
-:104F300019F40E94442705C08A3F31F40E94442797\r
-:104F400081958093740208958B3F21F40E94442739\r
-:104F5000819504C08C3F29F40E94442780937502F8\r
-:104F60000895843F21F480917102816017C0853FCC\r
-:104F700021F480917102826011C0863F21F48091FA\r
-:104F8000710284600BC0873F21F4809171028860B8\r
-:104F900005C0883F31F48091710280618093710275\r
-:104FA00008958D3F21F48091760281600BC08E3F81\r
-:104FB00021F480917602826005C08F3F29F48091B0\r
-:104FC00076028460809376020895803F29F4809170\r
-:104FD000730287FF6EC007C0813F41F48091730266\r
-:104FE00018160CF066C01092730263C090917202A2\r
-:104FF000823F19F497FF5DC005C0833F31F4191655\r
-:105000000CF057C01092720254C0893F31F4809165\r
-:10501000740218160CF04DC006C08A3F39F4809116\r
-:10502000740287FF46C01092740243C08B3F29F47C\r
-:105030008091750287FF3DC006C08C3F39F4809196\r
-:1050400075021816B4F51092750233C0843F21F42E\r
-:10505000809171028E7F05C0853F31F4809171028D\r
-:105060008D7F8093710225C0863F21F4809171026B\r
-:105070008B7FF7CF873F21F480917102877FF1CF3B\r
-:10508000883F21F4809171028F7EEBCF8D3F21F418\r
-:10509000809176028E7F0BC08E3F21F48091760244\r
-:1050A0008D7F05C08F3F29F4809176028B7F80939E\r
-:1050B00076028091720281110EC08091730281117B\r
-:1050C0000AC080917402811106C08091750281111D\r
-:1050D00002C010927002089581E792E00E94751854\r
-:1050E0000E94BF2490936F0280936E020895CF9325\r
-:1050F00080916E0290916F020E94CC2440917002C8\r
-:10510000442321F02091210130E006C020912201AA\r
-:105110005AE0259F900111248217930708F486C056\r
-:105120008091720281110DC090917302911109C09A\r
-:1051300090917402911105C090917502992309F420\r
-:1051400075C04F3F19F04F5F40937002181624F45A\r
-:105150000E94FC26809372028091720287FF05C034\r
-:105160000E94FC268195809372028091730218162A\r
-:1051700024F40E94FC26809373028091730287FFBF\r
-:1051800005C00E94FC268195809373026091720293\r
-:10519000662339F1C0917302CC2319F1772767FD9B\r
-:1051A0007095872F972F0E94FA2C23E333E343E374\r
-:1051B0005FE30E94AE2D0E94C72C609372026C2F99\r
-:1051C000772767FD7095872F972F0E94FA2C23E38E\r
-:1051D00033E343E35FE30E94AE2D0E94C72C60934C\r
-:1051E000730280917402181624F40E94442780935D\r
-:1051F00074028091740287FF05C00E944427819544\r
-:105200008093740280917502181624F40E9444273A\r
-:10521000809375028091750287FF05C00E94442724\r
-:10522000819580937502CF910C946C28CF9108954D\r
-:10523000E1E7F2E085E0DF011D928A95E9F710923F\r
-:105240007002109276020895833089F130F4813033\r
-:1052500061F0823009F06EC019C0853009F449C090\r
-:10526000B8F1863009F066C055C020912201862F22\r
-:1052700090E0820F911D8F3F910520F4620F6093A3\r
-:10528000220108958FEF809322010895209121013A\r
-:10529000862F90E0820F911D8F3F910520F4620FC1\r
-:1052A0006093210108958FEF80932101089520914B\r
-:1052B0002001862F90E0820F911D8F3F910520F4F1\r
-:1052C000620F6093200108958FEF8093200108956D\r
-:1052D00020911F01862F90E0820F911D8F3F910535\r
-:1052E00020F4620F60931F0108958FEF80931F01D8\r
-:1052F000089520911E01862F90E0820F911D8F3F0F\r
-:10530000910520F4620F60931E0108958FEF809342\r
-:105310001E01089520911D01862F90E0820F911D9E\r
-:105320008F3F910520F4620F60931D0108958FEF68\r
-:1053300080931D010895833021F130F4813059F0BC\r
-:10534000823009F049C012C0853089F128F18630D9\r
-:1053500009F042C037C080912201681720F4861BF3\r
-:1053600080932201089510922201089580912101D5\r
-:10537000681720F4861B8093210108951092210163\r
-:10538000089580912001681720F4861B80932001E6\r
-:10539000089510922001089580911F01681720F44C\r
-:1053A000861B80931F01089510921F01089580911C\r
-:1053B0001E01681720F4861B80931E010895109229\r
-:1053C0001E01089580911D01681720F4861B8093AB\r
-:1053D0001D01089510921D01089541E050E060E024\r
-:1053E00070E004C0440F551F661F771F8A95D2F7DF\r
-:1053F000CB01BA010E9491220C948C1E873208F5D1\r
-:105400008E3108F0B9C08E3009F47EC060F4873068\r
-:1054100009F465C018F4863059F549C0883051F157\r
-:105420008B3031F5AEC0883130F4863108F0A9C038\r
-:105430008031F1F473C0893109F4A3C08B31C1F418\r
-:1054400059C08933F1F068F4893209F493C018F433\r
-:10545000873271F48FC0853309F48CC0883341F4EE\r
-:1054600090C0863409F46BC008F488C0883449F1D0\r
-:1054700080E008950E94D8260E94EA260E94F32622\r
-:1054800080C00E945918892B59F00E945918909396\r
-:105490007902809378020E948C1E80E090E004C024\r
-:1054A00080917802909179020E9454186AC080918C\r
-:1054B0006802817F8E7F8093680281E0809377020B\r
-:1054C00008950E948C1E2FEF83ED90E321508040C1\r
-:1054D0009040E1F700C000000E941F2552C080915B\r
-:1054E000680280FF03C0817F8E7F01C0816080934E\r
-:1054F000680247C09091680291FB882780F921E0FB\r
-:10550000822780FB91F913C09091680292FB882753\r
-:1055100080F921E0822780FB92F909C0909168020E\r
-:1055200093FB882780F921E0822780FB93F99093F1\r
-:105530006802882331F191609093680222C081E86B\r
-:1055400090E00E9480182FEF81EE94E0215080407F\r
-:105550009040E1F700C0000080E090E00E948018D9\r
-:105560002FEF89E698E1215080409040E1F700C09C\r
-:10557000000007C080E003C08D5101C089530E9424\r
-:10558000ED2981E0089580E0089580E00895CF93AB\r
-:10559000C82F80917702813071F020F0823009F0BD\r
-:1055A00083C037C0A0911B01B0911C018C91823245\r
-:1055B00009F07CC007C0A0911B01B0911C018C9127\r
-:1055C000823249F48C2F0E94C32A81111EC08C2F75\r
-:1055D0000E94FE291CC08C2F0E94C52A811115C073\r
-:1055E000C43169F030F4CB3081F0C03109F062C0D1\r
-:1055F00009C0C93221F0C83309F05CC006C010925E\r
-:10560000770258C082E08093770281E090E0817059\r
-:1056100054C0C932C1F060F4C431A9F020F4C730DD\r
-:1056200009F046C02EC0CE51CA3008F041C011C0AA\r
-:10563000CE3409F118F4CB34D9F517C0C13599F03F\r
-:10564000C235B1F50EC010927A0281E080937702E4\r
-:1056500034C0EC2FF0E0E455FE4F808180937A0255\r
-:1056600027C061E003C061E007C06AE080917A0270\r
-:105670000E9424291DC06AE080917A020E949B2921\r
-:1056800017C08EE18093220182E3809321018AE09A\r
-:105690008093200184E180931F0188E080931E01A4\r
-:1056A00088E280931D0104C01092770280E005C05B\r
-:1056B00081E003C080E090E0AACFCF9108950E94DE\r
-:1056C000CD26811102C00E94AE260E94F32680934F\r
-:1056D000770380FF02C0869501C080E00C94DF074D\r
-:1056E00080917703982F9695292F30E0233031054C\r
-:1056F0004CF49F5F990F8170892B816080937703B1\r
-:105700000E94F7268091770386950C94DF0780919D\r
-:105710007703982F969591F09158990F8170892B66\r
-:10572000809377038E7F91E009F490E08091770376\r
-:1057300090FB80F9809377030E94F726809177038E\r
-:1057400086950C94DF0780917703982F909590FBB6\r
-:1057500080F9809377030E94F7268091770380FF7A\r
-:1057600002C0869501C080E00C94DF07309177037A\r
-:10577000232F26952F5F2F77822F90E0317004978B\r
-:105780002CF4220F232B2093770302C0309377034E\r
-:1057900080917703282F2E7F91E009F490E090FB11\r
-:1057A00080F9809377030E94F7268091770386958E\r
-:1057B0000C94DF0720917703922F96959827990FE5\r
-:1057C000822F8170892B809377038E7F91E009F47B\r
-:1057D00090E08091770390FB80F9809377030E949B\r
-:1057E000F7268091770386950C94DF075058BB27E6\r
-:1057F000AA270ED075C166D130F06BD120F031F4FC\r
-:105800009F3F11F41EF45BC10EF4E095E7FB51C11C\r
-:10581000E92F77D180F3BA176207730784079507DA\r
-:1058200018F071F49EF58FC10EF4E0950B2EBA2F8F\r
-:10583000A02D0B01B90190010C01CA01A001112496\r
-:10584000FF27591B99F0593F50F4503E68F11A1642\r
-:10585000F040A22F232F342F4427585FF3CF4695D3\r
-:1058600037952795A795F0405395C9F77EF41F16F5\r
-:10587000BA0B620B730B840BBAF09150A1F0FF0FBF\r
-:10588000BB1F661F771F881FC2F70EC0BA0F621FAB\r
-:10589000731F841F48F4879577956795B795F7959B\r
-:1058A0009E3F08F0B3CF9395880F08F09927EE0F2D\r
-:1058B000979587950895D9D008F481E008950CD084\r
-:1058C0000FC107D140F0FED030F021F45F3F19F056\r
-:1058D000F0C0511139C1F3C014D198F39923C9F321\r
-:1058E0005523B1F3951B550BBB27AA2762177307E6\r
-:1058F000840738F09F5F5F4F220F331F441FAA1F9A\r
-:10590000A9F333D00E2E3AF0E0E830D09150504059\r
-:10591000E695001CCAF729D0FE2F27D0660F771F07\r
-:10592000881FBB1F261737074807AB07B0E809F0E9\r
-:10593000BB0B802DBF01FF2793585F4F2AF09E3F7E\r
-:10594000510568F0B6C000C15F3FECF3983EDCF350\r
-:10595000869577956795B795F7959F5FC9F7880FF7\r
-:10596000911D9695879597F90895E1E0660F771F49\r
-:10597000881FBB1F621773078407BA0720F0621BDA\r
-:10598000730B840BBA0BEE1F88F7E095089504D0D3\r
-:105990006894B111D9C00895BCD088F09F5790F099\r
-:1059A000B92F9927B751A0F0D1F0660F771F881F44\r
-:1059B000991F1AF0BA95C9F712C0B13081F0C3D05F\r
-:1059C000B1E00895C0C0672F782F8827B85F39F0FD\r
-:1059D000B93FCCF3869577956795B395D9F73EF4A3\r
-:1059E00090958095709561957F4F8F4F9F4F08954B\r
-:1059F000E89409C097FB3EF4909580957095619569\r
-:105A00007F4F8F4F9F4F9923A9F0F92F96E9BB271E\r
-:105A10009395F695879577956795B795F111F8CF9A\r
-:105A2000FAF4BB0F11F460FF1BC06F5F7F4F8F4F05\r
-:105A30009F4F16C0882311F096E911C0772321F0FB\r
-:105A40009EE8872F762F05C0662371F096E8862F93\r
-:105A500070E060E02AF09A95660F771F881FDAF7EA\r
-:105A6000880F9695879597F90895990F0008550F17\r
-:105A7000AA0BE0E8FEEF16161706E807F907C0F0D4\r
-:105A800012161306E407F50798F0621B730B840BDC\r
-:105A9000950B39F40A2661F0232B242B252B21F4B6\r
-:105AA00008950A2609F4A140A6958FEF811D811D56\r
-:105AB000089597F99F6780E870E060E008959FEF90\r
-:105AC00080EC089500240A94161617061806090695\r
-:105AD000089500240A941216130614060506089564\r
-:105AE000092E0394000C11F4882352F0BB0F40F4EC\r
-:105AF000BF2B11F460FF04C06F5F7F4F8F4F9F4F2C\r
-:105B0000089557FD9058440F551F59F05F3F71F0AD\r
-:105B10004795880F97FB991F61F09F3F79F0879514\r
-:105B20000895121613061406551FF2CF4695F1DF9D\r
-:105B300008C0161617061806991FF1CF869571052D\r
-:105B4000610508940895E894BB2766277727CB0161\r
-:105B500097F908958ADF08F48FEF08950BD0C0CF2E\r
-:105B6000B1DF28F0B6DF18F0952309F0A2CFA7CF58\r
-:105B70001124EACFC6DFA0F3959FD1F3950F50E033\r
-:105B8000551F629FF001729FBB27F00DB11D639FEF\r
-:105B9000AA27F00DB11DAA1F649F6627B00DA11D95\r
-:105BA000661F829F2227B00DA11D621F739FB00D3B\r
-:105BB000A11D621F839FA00D611D221F749F3327AB\r
-:105BC000A00D611D231F849F600D211D822F762F44\r
-:105BD0006A2F11249F5750408AF0E1F088234AF041\r
-:105BE000EE0FFF1FBB1F661F771F881F915050408D\r
-:105BF000A9F79E3F510570F05CCFA6CF5F3FECF355\r
-:105C0000983EDCF3869577956795B795F795E79578\r
-:105C10009F5FC1F7FE2B880F911D9695879597F989\r
-:105C20000895FA01EE0FFF1F30962105310599F115\r
-:105C30006115710561F48038BFE39B0749F16894F1\r
-:105C40009038810561F08038BFEF9B0741F09923C0\r
-:105C500042F5FF3FE1053105210511F1E894089473\r
-:105C6000E795D901AA2329F4AB2FBE2FF85FD0F313\r
-:105C700010C0FF5F70F4A695E0F7F73950F019F007\r
-:105C8000FF3A38F49F779F930CD00F9007FC905801\r
-:105C900008953EF014CF60E070E080E89FE308953F\r
-:105CA0004FE79F775F934F933F932F939ED02F9112\r
-:105CB0003F914F915F9152DF05C019F40EF0F9CE7C\r
-:105CC00042CFFDCE26DFC8F39638C0F707F80F9213\r
-:105CD000E8942BE33AEA48EB5FE74EDF0F920F922E\r
-:105CE0000F924DB75EB70F92C0D0ECEAF0E016D03D\r
-:105CF0004F915F91EF91FF91E595EE1FFF1F49F0E6\r
-:105D0000FE57E0684427EE0F441FFA95E1F74195EE\r
-:105D1000550B32D00F9007FE26C00895DF93CF9326\r
-:105D20001F930F93FF92EF92DF927B018C01689497\r
-:105D300005C0DA2EEF011EDFFE01E894A591259142\r
-:105D4000359145915591AEF3EF0162DDFE0197016A\r
-:105D5000A801DA9479F7DF90EF90FF900F911F91EF\r
-:105D6000CF91DF9108959B01AC0160E070E080E885\r
-:105D70009FE3A5CD9ECEACC0CCDEE8F39923D9F34A\r
-:105D8000940F511DBBF39150504094F059F088236B\r
-:105D900032F0660F771F881F91505040C1F79E3F29\r
-:105DA000510544F7880F911D9695879597F90895A9\r
-:105DB0005F3FACF0983E9CF0BB2786957795679542\r
-:105DC000B79508F4B1609395C1F7BB0F58F711F47C\r
-:105DD00060FFE8CF6F5F7F4F8F4F9F4FE3CFB4CE11\r
-:105DE0000EF076C06CCE689464CE93DEC8F399232F\r
-:105DF000D1F3C6F3DF93CF931F930F93FF92C92F75\r
-:105E0000DD2788232AF02197660F771F881FDAF78E\r
-:105E100020E030E040E85FEB9FE3883920F0803EEF\r
-:105E200030F021968F77E3DCE4EDF0E003C0DFDCB7\r
-:105E3000E1E0F1E073DF8B01BE01EC01FB2E6F5757\r
-:105E400071097595771F880B990BD4DD28E132E72E\r
-:105E500041E35FE38FDEAF2D9801AE01FF900F911C\r
-:105E60001F91CF91DF91D4DC3BCEFA01DC01AA0F68\r
-:105E7000BB1F9B01AC01BF5728F4222733274427BF\r
-:105E800050781FC0B75188F4AB2F00244695379542\r
-:105E90002795011CA395D2F3002069F0220F331F30\r
-:105EA000441FB395DAF30DD0A1CC61307105A0E8A1\r
-:105EB0008A07B94630F49B01AC016627772788270B\r
-:105EC0009078309621F02083318342835383089564\r
-:105ED0009F3F31F0915020F4879577956795B7955E\r
-:105EE000880F911D9695879597F90895AA1BBB1B5E\r
-:105EF00051E107C0AA1FBB1FA617B70710F0A61BCA\r
-:105F0000B70B881F991F5A95A9F780959095BC01EA\r
-:105F1000CD01089597FB072E16F4009407D077FD66\r
-:105F200009D00E94762F07FC05D03EF4909581950C\r
-:105F30009F4F0895709561957F4F0895F999FECF11\r
-:105F400092BD81BDF89A992780B50895A8E1B0E087\r
-:105F500042E050E00C94C12F262FF999FECF1FBAD2\r
-:105F600092BD81BD20BD0FB6F894FA9AF99A0FBE82\r
-:105F7000019608950E94AC2F272F0C94AD2FDC01C1\r
-:105F8000CB01FC01F999FECF06C0F2BDE1BDF89A44\r
-:105F9000319600B40D9241505040B8F70895F894EE\r
-:025FA000FFCF31\r
-:105FA2000507000C058540000001064000000100C5\r
-:105FB200D80B680C440C0F0CDB0B01600228081490\r
-:105FC2000A321E40004500250026006100600020C4\r
-:105FD2000037006400650066006700440046002444\r
-:105FE2000047000000020004000500070009000B42\r
-:105FF200000C000E0010001100130015001700180D\r
-:10600200001A001C001D001F00210023002400268E\r
-:1060120000280029002B002D002F00300032003410\r
-:10602200003500370039003B008803A103BA03D3CF\r
-:1060320003FB04AE04780458043F4D3620020302E9\r
-:10604200000001000101010101000101010203043C\r
-:0660520005060708090025\r
-:00000001FF\r
--- /dev/null
+:100000000C949D020C94E1020C94E1020C94E10228\r
+:100010000C94E1020C94E1020C94E1020C94E102D4\r
+:100020000C94E1020C94E1020C941C120C94EE125C\r
+:100030000C948D240C94E1020C94E1020C94E102E6\r
+:100040000C94E1020C94E1020C94E1020C94E102A4\r
+:100050000C94E1020C94FA240C94E1020C94E10259\r
+:100060000C94E1020C94E1020C94E1020C94E10284\r
+:100070000C94E1020C94E1020C94E1020C94E10274\r
+:100080000C94860A0C94E1020C94E1020C94E102B7\r
+:100090000C94E1020C94E1020C94E1020C94E10254\r
+:1000A0000C94E1020C94E1020C94E10207634236E5\r
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9\r
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD\r
+:1000D0000000803F08000000BE922449123EABAAF7\r
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52\r
+:1000F000AA3E00000000BF000000803F000000009A\r
+:1001000000084178D3BB4387D1133D190E3CC3BDD2\r
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F\r
+:1001200080EFFFBE01C4FF7F3F0000000000000021\r
+:10013000F1A4F1A3018C028C048C2B0014001A0092\r
+:100140000800150017001C0018000C001200130016\r
+:100150002A00290004001600070009000A000B000D\r
+:100160000D000E000F0033003400E1001D001B00E5\r
+:100170000600190005001100100036003700380095\r
+:1001800028000030E000E200E30002202C002C00F8\r
+:1001900001205000510052004F002B0014001A00A3\r
+:1001A000090013000A000D000F0018001C003300A6\r
+:1001B0002A002900040015001600170007000B0094\r
+:1001C000110008000C0012003400E1001D001B00AB\r
+:1001D0000600190005000E00100036003700380038\r
+:1001E00028000030E000E200E30002202C002C0098\r
+:1001F00001205000510052004F002B003400360007\r
+:10020000370013001C0009000A00060015000F004B\r
+:100210002A00290004001200080018000C00070042\r
+:100220000B001700110016003800E1003300140025\r
+:100230000D000E001B00050010001A0019001D0023\r
+:1002400028000030E000E200E30002202C002C0037\r
+:1002500001205000510052004F0035021E021F02C3\r
+:100260002002210222022302240225022602270262\r
+:100270002A0001003A003B003C003D003E003F00E8\r
+:100280002D022E022F0230023102010040004100F7\r
+:100290004200430044004500032004200520005094\r
+:1002A0000100010001000100010002200100010025\r
+:1002B0000100AB00AA00A900AE0035001E001F001F\r
+:1002C0002000210022002300240025002600270012\r
+:1002D0002A0001003A003B003C003D003E003F0088\r
+:1002E0002D002E002F0030003100010040004100A1\r
+:1002F0004200430044004500032004200520005034\r
+:1003000001000100010001000100010001000100E5\r
+:100310000120AB00AA00A900AE0028035400680029\r
+:100320006500200050006C0061006E0063006B00EF\r
+:1003300020004B006500790062006F0061007200D0\r
+:10034000640000002C034F007200740068006F000E\r
+:100350006C0069006E0065006100720020004B00B7\r
+:100360006500790062006F00610072006400730034\r
+:100370000000040309040902D000060100A03209AC\r
+:100380000400000103010100092111010001223FC5\r
+:10039000000705810308000A0904010001030102A6\r
+:1003A00000092111010001224D0007058203080008\r
+:1003B0000A090402000103000000092111010001E3\r
+:1003C0002236000705830308000A0904030002031C\r
+:1003D000000000092111010001222000070584030B\r
+:1003E00020000107050403200001090404000001A6\r
+:1003F00001000009240100010900010509040500AC\r
+:10040000020103000007240100014100062402014B\r
+:100410000100062402020200092403010301020173\r
+:10042000000924030204010101000905060240003D\r
+:1004300005000005250101010905850240000500B0\r
+:100440000005250101031201100100000008EDFE66\r
+:1004500060600100010200010631FF0974A1010979\r
+:1004600075150025FF952075088102097615002570\r
+:10047000FF952075089102C005010980A101850240\r
+:1004800016010026B7001A01002AB7007510950161\r
+:100490008100C0050C0901A1018503160100269CFD\r
+:1004A000021A01002A9C02751095018100C0050105\r
+:1004B0000902A1010901A100050919012905150079\r
+:1004C00025019505750181029501750381010501DD\r
+:1004D000093009311581257F950275088106093893\r
+:1004E0001581257F950175088106050C0A380215CE\r
+:1004F00081257F950175088106C0C005010906A107\r
+:1005000001050719E029E715002501950875018106\r
+:1005100002950175088101050819012905950575E0\r
+:100520000191029501750391010507190029FF1535\r
+:100530000025FF950675088100C011241FBECFEF6E\r
+:10054000DAE0DEBFCDBF04B603FE24C0809178039D\r
+:1005500090917903A0917A03B0917B038730904BFF\r
+:10056000A740B04BB9F4109278031092790310921F\r
+:100570007A0310927B0314BE84B7877F84BF88E11F\r
+:100580000FB6F89480936000109260000FBEE0E018\r
+:10059000F8E3099511E0A0E0B1E0E2EAFFE502C06E\r
+:1005A00005900D92A63BB107D9F713E0A6EBB1E099\r
+:1005B00001C01D92A837B107E1F70E94F90E0C9413\r
+:1005C000CF2F0C9400000895089561110DC0FC0117\r
+:1005D0008281882331F085EE0E949D190E94B62BFE\r
+:1005E00003C085EE0E94651A80E090E008958B3B81\r
+:1005F000910568F4883A910530F5853A9105C0F483\r
+:100600008430910598F4019709F06FC071C0803E65\r
+:10061000910508F46AC0883E910540F09C01205F76\r
+:1006200031092031310508F060C05CC09C01A1C0D7\r
+:10063000853A910509F45FC0863A910509F45EC0D8\r
+:1006400023E830E496C0883A910509F45AC0893A03\r
+:10065000910509F459C08A3A910509F458C08B3ABA\r
+:10066000910509F457C08C3A910509F456C08D3AAA\r
+:10067000910509F455C0803B910509F454C08E3AA8\r
+:10068000910509F453C08F3A910509F452C0813B9A\r
+:10069000910509F451C0823B910509F450C0833B98\r
+:1006A000910509F44FC0843B910509F44EC0853B88\r
+:1006B000910509F44DC0863B910509F44CC0873B78\r
+:1006C000910509F44BC0883B910509F44AC0893B68\r
+:1006D000910509F449C08A3B910509F048C02AE216\r
+:1006E00036E447C09C01306544C020E030E041C0A2\r
+:1006F00021E030E03EC021E830E43BC022E830E4B5\r
+:1007000038C022EE34E435C029EE34E432C02AEE9B\r
+:1007100034E42FC025EB34E42CC026EB34E429C0AC\r
+:1007200027EB34E426C02CEC34E423C02DEC34E475\r
+:1007300020C023E835E41DC02AE835E41AC022E9C8\r
+:1007400035E417C024E935E414C021E236E411C0D1\r
+:1007500023E236E40EC024E236E40BC025E236E4A0\r
+:1007600008C026E236E405C027E236E402C020E0F5\r
+:1007700034E4C90108959CE0799FF001112490E3CD\r
+:10078000899FE00DF11D1124E60FF11DEE0FFF1FF3\r
+:10079000E65CFE4F25913491C9010895880F991F99\r
+:1007A00082559040FC0125913491C9010895880F2C\r
+:1007B000991F825D9E4FFC0125913491C9010895D6\r
+:1007C0000E94BB039C013A9521153F4108F4DFC00C\r
+:1007D0009C0130522115304120F49F700E94D703B4\r
+:1007E00008959C0130532115304118F49927906CDD\r
+:1007F00008959C0130542031310520F48F709927E1\r
+:10080000946D0895803120E4920719F480E091ED11\r
+:100810000895813140E4940719F480E090ED089543\r
+:10082000823120E4920719F480E092ED089583313B\r
+:1008300040E4940719F480E093ED0895811520E5D4\r
+:10084000920711F40C941F25813040E5940731F490\r
+:100850008091680281608093680208959C013056FF\r
+:100860002115304108F402C097FF02C0906F08952F\r
+:10087000803E9105E0F4803C910568F58133910557\r
+:1008800009F474C048F48932910509F46AC08A32C7\r
+:10089000910509F07AC074C089339105F9F0823866\r
+:1008A0009105E1F08533910509F06FC050C0833E9A\r
+:1008B0009105A9F140F4803E9105C9F0823E910571\r
+:1008C00009F063C01BC0863E910571F1873E91051A\r
+:1008D00009F05BC037C00E94CE03089520917B02CF\r
+:1008E00020FD02C021FF51C080EE90E04EC08091FB\r
+:1008F0007B0280FFF9CF89E390E047C080917B02C3\r
+:1009000082FF0AC080917B0284FF03C080E090E0F8\r
+:100910003CC083EE90E039C082EE90E036C080911A\r
+:100920007B0282FFEFCFF8CF80917B0283FF07C06D\r
+:1009300080917B0284FDEACF87EE90E026C086EEB0\r
+:1009400090E023C080917B0283FFF2CFF8CF8091AB\r
+:100950007B0285FF03C089E290E017C085E390E049\r
+:1009600014C080917B0285FDF9CFF5CF80917B0289\r
+:1009700086FF03C08AE290E008C081E390E005C0F2\r
+:1009800080917B0286FDF9CFF5CF0E94F702089592\r
+:100990005F926F927F928F929F92AF92BF92CF920F\r
+:1009A000DF92EF92FF920F931F93CF93DF93CDB718\r
+:1009B000DEB728970FB6F894DEBF0FBECDBF9E01FD\r
+:1009C0002F5F3F4F4E0189E0880E911C60E070E080\r
+:1009D00000E010E0E12CF12CC12CD12CA12CB12C89\r
+:1009E00088E0782E622E532E41E050E0E3E2F1E001\r
+:1009F000A62DB52D872D01900D928A95E1F7F9016D\r
+:100A0000819191919F01FC01E07FFF27E032F10588\r
+:100A100059F48F709927FA0102C0EE0FFF1F8A95D3\r
+:100A2000E2F7AE2ABF2A37C0E033F10559F48F70E0\r
+:100A30009927FA0102C0EE0FFF1F8A95E2F7CE2A2E\r
+:100A4000DF2A29C0E034F10559F48F709927FA01A3\r
+:100A500002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0A5\r
+:100A6000E035F10559F48F709927FA0102C0EE0FB5\r
+:100A7000FF1F8A95E2F70E2B1F2B0DC0E036F10504\r
+:100A800051F48F709927FA0102C0EE0FFF1F8A956B\r
+:100A9000E2F76E2B7F2B2815390509F0A7CF94B10B\r
+:100AA0008A2D8095892384B985B18A2985B997B122\r
+:100AB0008C2D8095892387B988B18C2988B99AB102\r
+:100AC0008E2D809589238AB98BB18E298BB99DB1E2\r
+:100AD000802F809589238DB98EB1802B8EB990B3EC\r
+:100AE000862F8095892380BB81B3862B81BB289676\r
+:100AF0000FB6F894DEBF0FBECDBFDF91CF911F912F\r
+:100B00000F91FF90EF90DF90CF90BF90AF909F90AC\r
+:100B10008F907F906F905F9008955F926F927F9219\r
+:100B20008F929F92AF92BF92CF92DF92EF92FF92FD\r
+:100B30000F931F93CF93DF93CDB7DEB768970FB6B0\r
+:100B4000F894DEBF0FBECDBF85B7806885BF85B77F\r
+:100B5000806885BF0E94CF076E9A769A0E94C8046B\r
+:100B60009E012F5F3F4F4E0189E1880E911C60E08E\r
+:100B700070E000E010E0E12CF12CC12CD12CA12C74\r
+:100B8000B12C98E1792E622E532E41E050E0EBE239\r
+:100B9000F1E0A62DB52D872D01900D928A95E1F7F4\r
+:100BA000F901819191919F01FC01E07FFF27E032E3\r
+:100BB000F10559F48F709927FA0102C0EE0FFF1F5B\r
+:100BC0008A95E2F7AE2ABF2A37C0E033F10559F41F\r
+:100BD0008F709927FA0102C0EE0FFF1F8A95E2F786\r
+:100BE000CE2ADF2A29C0E034F10559F48F70992705\r
+:100BF000FA0102C0EE0FFF1F8A95E2F7EE2AFF2AE4\r
+:100C00001BC0E035F10559F48F709927FA0102C035\r
+:100C1000EE0FFF1F8A95E2F70E2B1F2B0DC0E0365B\r
+:100C2000F10551F48F709927FA0102C0EE0FFF1FF2\r
+:100C30008A95E2F76E2B7F2B2815390509F0A7CF8F\r
+:100C400094B18A2D8095892384B985B18A2985B983\r
+:100C500097B18C2D8095892387B988B18C2988B963\r
+:100C60009AB18E2D809589238AB98BB18E298BB943\r
+:100C70009DB1802F809589238DB98EB1802B8EB93F\r
+:100C800090B3862F8095892380BB81B3862B81BB4F\r
+:100C90001092B7011092B6011092BF011092BE01DE\r
+:100CA0001092B9011092B8011092C1011092C001C6\r
+:100CB0001092BB011092BA011092C3011092C201AE\r
+:100CC0001092BD011092BC011092C5011092C40196\r
+:100CD00068960FB6F894DEBF0FBECDBFDF91CF91FF\r
+:100CE0001F910F91FF90EF90DF90CF90BF90AF904A\r
+:100CF0009F908F907F906F905F9008955F926F921A\r
+:100D00007F928F929F92AF92BF92CF92DF92EF929B\r
+:100D1000FF920F931F93CF93DF93CDB7DEB7A097CA\r
+:100D20000FB6F894DEBF0FBECDBF7E0149E1E40EE1\r
+:100D3000F11C2EEBC22E21E0D22E5E0151E2A50E57\r
+:100D4000B11C38E0532E470101E010E048E1642E69\r
+:100D500055E0752EE3E2F1E0D401852D01900D926E\r
+:100D60008A95E1F7F701819191917F019C01207FA4\r
+:100D700033272032310589F424B18F709927A801D7\r
+:100D800002C0440F551F8A95E2F7CA01242B24B9EB\r
+:100D900095B18095892385B94FC02033310589F4F9\r
+:100DA00027B18F709927F80102C0EE0FFF1F8A95B7\r
+:100DB000E2F7CF012E2B27B998B18095892388B906\r
+:100DC0003BC02034310589F42AB18F709927A801DE\r
+:100DD00002C0440F551F8A95E2F7CA01242B2AB995\r
+:100DE0009BB1809589238BB927C02035310589F4C3\r
+:100DF0002DB18F709927F80102C0EE0FFF1F8A9561\r
+:100E0000E2F7CF012E2B2DB99EB1809589238EB9A3\r
+:100E100013C02036310581F420B38F709927A801C3\r
+:100E200002C0440F551F8A95E2F7CA01242B20BB4C\r
+:100E300091B38095892381BB50EA5A95F1F7BE01A1\r
+:100E40006F5F7F4F80E090E020E030E0EBE2F1E088\r
+:100E5000DE011196462D01900D924A95E1F7FB01B6\r
+:100E600041915191BF01FA01E07FFF27E032F10586\r
+:100E700011F4E3B113C0E033F10511F4E6B10EC093\r
+:100E8000E034F10511F4E9B109C0E035F10511F4E0\r
+:100E9000ECB104C0E036F105B9F4EFB1F0E04F7009\r
+:100EA000552702C0F595E7954A95E2F7E0FD08C0A1\r
+:100EB000A801022E02C0440F551F0A94E2F702C097\r
+:100EC00040E050E0842B952B2F5F3F4F2C303105B5\r
+:100ED00009F0BCCFF601208131812817390721F0B4\r
+:100EE00091838083709200010E94C804F2E0CF0ECB\r
+:100EF000D11CEA14FB0409F02DCF80910001882356\r
+:100F000061F1815080930001811121C08091BE0167\r
+:100F10009091BF019093B7018093B6018091C00179\r
+:100F20009091C1019093B9018093B8018091C20161\r
+:100F30009091C3019093BB018093BA018091C40149\r
+:100F40009091C5019093BD018093BC0106C08FE9CB\r
+:100F50009FE00197F1F700C0000081E0A0960FB676\r
+:100F6000F894DEBF0FBECDBFDF91CF911F910F91DF\r
+:100F7000FF90EF90DF90CF90BF90AF909F908F90B9\r
+:100F80007F906F905F900895E82FF0E0EE0FFF1FC5\r
+:100F9000EA54FE4F80819181089508950895279A1B\r
+:100FA0002F988FEF9FEF90938700809386008AE0C1\r
+:100FB0008093800089E1809381000C945F2B8111E4\r
+:100FC0000BC080918000877F8093800010928D00FD\r
+:100FD00010928C002F9808952F98833041F48091BF\r
+:100FE00080008860809380008FEF9FEF12C0909107\r
+:100FF000800098609093800023E030E0281B310946\r
+:10100000220F331F8FEF9FEF02C0969587952A9589\r
+:10101000E2F790938D0080938C0008950F931F93B7\r
+:10102000CF93DF93CDB7DEB7CC58D1090FB6F89484\r
+:10103000DEBF0FBECDBF8C01862F642F882379F0D1\r
+:10104000F80192812FE7482F992329F08DE792E04C\r
+:101050000E94F81404C08DE792E00E940815F80180\r
+:1010600080818B3061F49181933009F068C0828176\r
+:10107000882309F4CDC0809103018F5F0EC08A30B0\r
+:10108000E1F5F8019181933009F059C082818823FC\r
+:1010900009F4BEC08091030181508093030120E0D8\r
+:1010A0004BE760E08DE792E00E94E81420E04BE718\r
+:1010B00061E08DE792E00E94E81420E04BE762E0F7\r
+:1010C0008DE792E00E94E81420E04BE763E08DE7B3\r
+:1010D00092E00E94E81420E04BE764E08DE792E0A4\r
+:1010E000C457DF4F0FB6F894DEBF0FBECDBFDF9100\r
+:1010F000CF911F910F910C94E814893069F4F80195\r
+:1011000091819330E1F492819923C9F0809101019A\r
+:101110009091020101960EC0883089F4F801918106\r
+:10112000933069F49281992351F08091010190915B\r
+:10113000020101979093020180930101B0CFF80161\r
+:10114000928140910301992391F196E4E3E4F1E067\r
+:10115000DE01A95BBF4F01900D929A95E1F7405DCA\r
+:10116000F8019181FCE09F9F40191124E091010159\r
+:10117000F0910201E80FF11DEE0FFF1F87E490E0F0\r
+:101180008C0F9D1FE80FF91F8081480F2FE760E04B\r
+:101190008DE792E0C457DF4F0FB6F894DEBF0FBE65\r
+:1011A000CDBFDF91CF911F910F910C94F81496E46D\r
+:1011B000E3E4F1E0DE01119601900D929A95E1F7DA\r
+:1011C000405DF8019181FCE09F9F40191124E0915E\r
+:1011D0000101F0910201E80FF11DEE0FFF1F81E008\r
+:1011E00090E08C0F9D1FE80FF91F8081480F2FE7BB\r
+:1011F00060E08DE792E0C457DF4F0FB6F894DEBF92\r
+:101200000FBECDBFDF91CF911F910F910C940815A8\r
+:10121000C457DF4F0FB6F894DEBF0FBECDBFDF91CE\r
+:10122000CF911F910F910895CF93DF93EA019B0116\r
+:10123000AC0160E074E284E79BE40E945F2C0E94B2\r
+:10124000C72C709397006093960020E130E02C1B30\r
+:101250003D0B02C0759567952A95E2F7709399004A\r
+:1012600060939800DF91CF9108951092020210923E\r
+:10127000010210929000109291001092FD011092C4\r
+:10128000FE011092FF01109200021092FC011092D8\r
+:10129000FB01E9EDF1E0A9ECB1E01192119211929C\r
+:1012A00011921D921D9281E0E93FF807B1F7089570\r
+:1012B000AF92BF92CF92DF92EF92FF920F931F9364\r
+:1012C000CF93DF936B017C0109EF11E047EDA42E72\r
+:1012D00041E0B42EC7E0D0E0A7019601F801929159\r
+:1012E0008291729162918F010E945B2C882349F058\r
+:1012F0002197F2E0AF1AB108CF3F8FEFD80761F71F\r
+:1013000034C0F8011082118212821382F501118219\r
+:101310001082FE01EE0FFF1FEE0FFF1FE752FE4F80\r
+:10132000DE01AA0FBB1FA753BE4FCE011AC0019604\r
+:1013300044815581668177814083518362837383C1\r
+:10134000148215821682178212962D913C91139762\r
+:1013500011963C932E9313961C921E9212973496DC\r
+:1013600012968730910519F7C3CF809101029091B1\r
+:101370000202019797FD05C090930202809301023B\r
+:1013800004C01092020210920102E0910102F09159\r
+:101390000202309789F410929000109291001092FE\r
+:1013A000FD011092FE011092FF01109200021092B6\r
+:1013B000FC011092FB019EC03197DF01AA0FBB1FF9\r
+:1013C000AA0FBB1FA752BE4FCD90DD90ED90FC90B1\r
+:1013D000EE0FFF1FE753FE4FC081D181A090FD01AA\r
+:1013E000B090FE010091FF0110910002A70196014B\r
+:1013F0006A2D7B2D802F912F0E945B2C87FF2FC0A1\r
+:1014000081E08093C801AE016A2D7B2D802F912F42\r
+:101410000E9414092091FD013091FE014091FF01CD\r
+:1014200050910002C701B6010E94F62B20E030E087\r
+:101430004AEF53E40E945F2C9B01AC016A2D7B2D87\r
+:10144000802F912F0E94F72B5B018C01A701960141\r
+:101450007B2D912F0E945B2C1816ACF638C0A7018B\r
+:1014600096016A2D7B2D802F912F0E94AA2D181690\r
+:1014700084F581E08093C801AE016A2D7B2D802F19\r
+:10148000912F0E941409A70196016091FD017091AE\r
+:10149000FE018091FF01909100020E94F62B20E056\r
+:1014A00030E04AEF53E40E945F2C9B01AC016A2DAF\r
+:1014B0007B2D802F912F0E94F62B5B018C01A701C1\r
+:1014C00096017B2D912F0E94AA2D87FFD5CF1092D8\r
+:1014D000C801AE01C701B6010E941409C092FD0106\r
+:1014E000D092FE01E092FF01F0920002D093FC0145\r
+:1014F000C093FB01DF91CF911F910F91FF90EF906F\r
+:10150000DF90CF90BF90AF90089508951F920F92F3\r
+:101510000FB60F9211242F933F934F935F936F93C6\r
+:101520007F938F939F93AF93BF93EF93FF9380919C\r
+:10153000960090919700892B09F455C08091C801BD\r
+:10154000811151C08091F9019091FA01813091058A\r
+:1015500071F082309105C1F0892BC1F52091FD0118\r
+:101560003091FE014091FF01509100021DC0609139\r
+:10157000FD017091FE018091FF01909100029B019D\r
+:10158000AC010E94F72B0EC020E030E040E450E4B4\r
+:101590006091FD017091FE018091FF019091000228\r
+:1015A0000E94AE2D9B01AC0160E074E284E79BE4F5\r
+:1015B0000E945F2C0E94C72C709397006093960046\r
+:1015C0007595679570939900609398008091F901E3\r
+:1015D0009091FA01019663E070E00E948A2F909347\r
+:1015E000FA018093F901FF91EF91BF91AF919F9123\r
+:1015F0008F917F916F915F914F913F912F910F90BC\r
+:101600000FBE0F901F901895AF92BF92CF92DF92AE\r
+:10161000EF92FF920F931F93CF93DF936B017C01A7\r
+:10162000EA0120E030E0A9010E94AA2D18160CF072\r
+:10163000B4C03E9A82E8809390008AE18093910042\r
+:10164000A090FD01B090FE010091FF0110910002F9\r
+:1016500020E030E0A9016A2D7B2D802F912F0E9480\r
+:101660005B2C81112DC0AE01C701B6010E94140987\r
+:10167000C092FD01D092FE01E092FF01F0920002C3\r
+:10168000D093FC01C093FB01809101029091020272\r
+:10169000FC01EE0FFF1FEE0FFF1FE752FE4FC0824F\r
+:1016A000D182E282F382FC01EE0FFF1FE753FE4F6F\r
+:1016B000D183C083019690930202809301026DC092\r
+:1016C000A70196016A2D7B2D802F912F0E945B2C04\r
+:1016D00087FF2CC0AE016A2D7B2D802F912F0E9499\r
+:1016E00014092091FD013091FE014091FF015091BC\r
+:1016F0000002C701B6010E94F62B20E030E04AEF5D\r
+:1017000053E40E945F2C9B01AC016A2D7B2D802F3E\r
+:10171000912F0E94F72B5B018C01A70196017B2D75\r
+:10172000912F0E945B2C1816ACF69DCFA701960155\r
+:101730006A2D7B2D802F912F0E94AA2D18160CF058\r
+:1017400092CFAE016A2D7B2D802F912F0E9414091C\r
+:10175000A70196016091FD017091FE018091FF014A\r
+:10176000909100020E94F62B20E030E04AEF53E413\r
+:101770000E945F2C9B01AC016A2D7B2D802F912F45\r
+:101780000E94F62B5B018C01A70196017B2D912F06\r
+:101790000E94AA2D87FFD5CF66CFDF91CF911F91F1\r
+:1017A0000F91FF90EF90DF90CF90BF90AF90089592\r
+:1017B00080910C020895CF93DF9300D01F92CDB794\r
+:1017C000DEB720916E03243021F523E029839B832B\r
+:1017D0008A832093E9008FEF06C095ED9A95F1F783\r
+:1017E0000000882329F09091E800815095FFF5CF03\r
+:1017F0008091E80085FF0DC040E050E063E070E0BC\r
+:10180000CE0101960E94BA0F8091E8008E778093F6\r
+:10181000E8000F900F900F90DF91CF910895CF9334\r
+:10182000DF9300D01F92CDB7DEB720916E03243036\r
+:1018300029F522E029839B838A8383E08093E90052\r
+:101840008FEF06C095ED9A95F1F70000882329F0F7\r
+:101850009091E800815095FFF5CF8091E80085FFD9\r
+:101860000DC040E050E063E070E0CE0101960E94C0\r
+:10187000BA0F8091E8008E778093E8000F900F9068\r
+:101880000F90DF91CF91089520916E032430F9F4E9\r
+:1018900022E02093E9002FEF06C035ED3A95F1F7ED\r
+:1018A0000000222329F03091E800215035FFF5CFC8\r
+:1018B0002091E80025FF0BC040E050E065E070E0BB\r
+:1018C0000E94BA0F8091E8008E778093E800089517\r
+:1018D000CF93DF93EC0180916E03843041F581E07A\r
+:1018E0008093E9008FEF06C095ED9A95F1F700001F\r
+:1018F000882329F09091E800815095FFF5CF8091E1\r
+:10190000E80085FF14C040E050E068E070E0CE01E0\r
+:101910000E94BA0F8091E8008E778093E80088E0FB\r
+:10192000FE01A4E0B2E001900D928A95E1F7DF910B\r
+:10193000CF910895BF92CF92DF92EF92FF920F93D3\r
+:101940001F93CF93DF937C01B62EE90100E010E0F6\r
+:10195000C42ED12C0BC04991202F2B0D2F774F7700\r
+:101960006FE0C7010E94E8140F5F1F4F0C151D05A3\r
+:1019700094F3DF91CF911F910F91FF90EF90DF9043\r
+:10198000CF90BF90089570E06F5F7F4F6F707727A3\r
+:101990000C94E8140F931F93CF93C42F63307105F9\r
+:1019A00009F04AC0842F807F803849F1803909F0DE\r
+:1019B00043C0622F6F7770E080E090E00E94FA2CC5\r
+:1019C00020E030E040E451E40E945F2C9B01AC0138\r
+:1019D00060E070E080E090E40E94112E0F7710E04C\r
+:1019E00023E0159507952A95E1F72DEC3CEC42E0B4\r
+:1019F00053E40E94AE2DA8010E94040B1DC0622F6B\r
+:101A00006F7770E080E090E00E94FA2C20E030E0F8\r
+:101A100040E451E40E945F2C9B01AC0160E070E067\r
+:101A200080E090E40E94112E2DEC3CEC42E053E467\r
+:101A30000E94AE2D0E945809CC3F29F4CF911F91EE\r
+:101A40000F910C943509CF911F910F9108950F9329\r
+:101A50001F93CF93DF93CDB7DEB727970FB6F894D8\r
+:101A6000DEBF0FBECDBF8C0114C08A810E94C2149C\r
+:101A70009A819D839B819E839C819F8381111EC03F\r
+:101A800089818430B1F08730A1F08630A1F08530B3\r
+:101A9000A1F0BE016F5F7F4F84E091E00E942F189C\r
+:101AA0008111E3CF84E091E00E9420180E949B14F2\r
+:101AB0000DC083E003C082E001C081E0AE014B5F56\r
+:101AC0005F4F682FC8010E945515E3CF27960FB6C8\r
+:101AD000F894DEBF0FBECDBFDF91CF911F910F9164\r
+:101AE0000895EF92FF920F93CF93DF9300D000D031\r
+:101AF00000D0CDB7DEB77B014A832B830C83842FC4\r
+:101B00002E834D830E94C2142E814D8181111BC0F2\r
+:101B100082E0E816F10479F083E0E816F10421F0A0\r
+:101B2000EA94EF2821F50BC0073F11F487E001C0CC\r
+:101B300084E089830BC0273FD9F786E0FACF473F7F\r
+:101B4000B9F785E0F6CF42954F704983BE016F5FCC\r
+:101B50007F4F84E091E00E94E51784E091E00E94CD\r
+:101B6000031884E091E00E9420180E949B1426969E\r
+:101B70000FB6F894DEBF0FBECDBFDF91CF910F91AE\r
+:101B8000FF90EF90089580916D03811109C00E942C\r
+:101B9000A1110E94FE118091E20084608093E20016\r
+:101BA000089510926D03089508950C94E4020C9426\r
+:101BB000892480916E03843049F58091E9008F700B\r
+:101BC0009091EC0090FF02C090E801C090E0982B4B\r
+:101BD00084E08093E9008091EB0080FF14C0809145\r
+:101BE000EE0087FD03C00FC01092F1008091E80065\r
+:101BF00085FDFACF8091E80080FF05C08091E80064\r
+:101C00008E778093E8009F709093E900089542E0FA\r
+:101C100061EC81E00E94171142E061EC82E00E94D9\r
+:101C2000171142E061EC83E00E94171146E261EC7B\r
+:101C300084E00E94171142E361E885E00E941711D9\r
+:101C400042E360E886E00C941711809170038330C2\r
+:101C500009F454C030F4813071F0823009F0AAC028\r
+:101C600091C08A3009F47EC08B3009F45FC089309E\r
+:101C700009F0A0C020C080916F03813A09F09AC09A\r
+:101C80008091E800877F8093E800809173039091B2\r
+:101C90007403892B21F060E080E090E003C068E0ED\r
+:101CA00084E092E070E00E9458108091E8008B7709\r
+:101CB0008093E800089580916F03813209F07AC023\r
+:101CC0008091730390917403892B09F073C0809104\r
+:101CD000E800877F8093E80005C080916E03882329\r
+:101CE00009F468C08091E80082FFF7CF8091F1008D\r
+:101CF00080930C028091E8008B7758C080916F032D\r
+:101D0000813A09F057C08091730390917403892B35\r
+:101D100009F050C08091E800877F8093E8008091AF\r
+:101D2000E80080FFFCCF80911A013BC080916F03D7\r
+:101D3000813209F03FC08091730390917403892B25\r
+:101D4000C9F58091E800877F8093E8000E944E11DA\r
+:101D50009091710381E0911101C080E080931A019C\r
+:101D60000C948C1E80916F03813221F58091E800E4\r
+:101D7000877F8093E8000E944E11809172038093C8\r
+:101D80000302089580916F03813AA1F48091E800E5\r
+:101D9000877F8093E8008091E80080FFFCCF8091EE\r
+:101DA00003028093F1008091E8008E778093E80031\r
+:101DB0000C944E11089584B7877F84BF88E10FB6D5\r
+:101DC000F89480936000109260000FBE90E080E86D\r
+:101DD0000FB6F89480936100909361000FBE0E944B\r
+:101DE000A1110E94FE11E2EEF0E080818460808308\r
+:101DF00008958DE792E00E94241561E77DE08DE76C\r
+:101E000092E00E947A1567E27DE08DE792E00E9401\r
+:101E10007E150E94DB0E78946AEC7CE08DE792E000\r
+:101E20000E94201563EC7CE08DE792E00E9418157B\r
+:101E30006AE97CE08DE792E00E941C150E94850A09\r
+:101E40000E949B140E94AC1880E191E00E945418FB\r
+:101E50000BC00E944E2480916C03882329F00E94BD\r
+:101E6000742481110E94A40F80916E03853089F340\r
+:101E70008DE792E00E942D170E94B618F5CF292F0A\r
+:101E8000332723303105B1F04CF42130310509F40A\r
+:101E90004DC02230310509F04EC007C02132310556\r
+:101EA00041F12232310591F146C0E0EDF0E086E7E4\r
+:101EB00093E045C099278130910569F08230910502\r
+:101EC00089F0892B09F037C0E2E7F3E0E491F0E014\r
+:101ED00082E793E034C0E4E4F3E0E491F0E084E4EA\r
+:101EE00093E02DC0EAE1F3E0E491F0E08AE193E0D1\r
+:101EF00026C0643000F5E62FF0E0EE0FFF1FE75735\r
+:101F0000FE4F80819181E9E0F0E019C0643098F4DF\r
+:101F1000E62FF0E0DF01AA0FBB1FAF56BE4F8D9139\r
+:101F20009C91E756FE4FE081F0E009C0E2E1F0E06D\r
+:101F300086E494E004C0E0E0F0E080E090E0DA01C4\r
+:101F40008D939C93CF01089580E189BD82E189BD85\r
+:101F500009B400FEFDCF8091D8008F7D8093D8001A\r
+:101F60008091E00082608093E0008091E00081FD3C\r
+:101F7000FCCF0895BF92CF92DF92EF92FF920F9322\r
+:101F80001F93CF93DF937C018B01EA010E946F11B5\r
+:101F9000B82E811133C0209731F028813981021B7E\r
+:101FA000130BE20EF31EC12CD12C23C08091E8004C\r
+:101FB00085FD15C08091E8008E778093E80020971A\r
+:101FC00049F0888199818C0D9D1D9983888325E036\r
+:101FD000B22E14C00E946F11882359F00EC0F70171\r
+:101FE00081917F018093F10001501109FFEFCF1A19\r
+:101FF000DF0A01151105D1F601C0B82E8B2DDF9136\r
+:10200000CF911F910F91FF90EF90DF90CF90BF90F5\r
+:102010000895BF92CF92DF92EF92FF920F931F939A\r
+:10202000CF93DF937C018B01EA010E946F11B82EE0\r
+:10203000811133C0209731F028813981021B130BA5\r
+:10204000E20EF31EC12CD12C23C08091E80085FD47\r
+:1020500015C08091E8008B778093E800209749F0C5\r
+:10206000888199818C0D9D1D9983888345E0B42ECC\r
+:1020700014C00E946F11882359F00EC08091F100A6\r
+:10208000F70181937F0101501109FFEFCF1ADF0A99\r
+:1020900001151105D1F601C0B82E8B2DDF91CF911E\r
+:1020A0001F910F91FF90EF90DF90CF90BF90089518\r
+:1020B00040917503509176034617570748F0611514\r
+:1020C000710539F44091E8004E774093E80001C073\r
+:1020D000BA01FC0140E033C080916E03882309F40B\r
+:1020E00042C0853009F441C08091E80083FD39C0C9\r
+:1020F0008091E80082FD2FC08091E80080FF1FC022\r
+:102100009091F3008091F200392F20E0A901482B33\r
+:10211000CA0106C041914093F100615071090196D6\r
+:102120006115710519F088309105A0F341E0089719\r
+:1021300009F040E08091E8008E778093E800611517\r
+:10214000710551F64111C8CF06C080916E038823F6\r
+:1021500051F0853051F08091E80082FFF6CF80E0A9\r
+:10216000089581E0089582E0089583E00895409104\r
+:102170007503509176034617570748F061157105AE\r
+:1021800039F44091E8004E774093E80001C0BA016D\r
+:10219000FC0140E034C080916E03882309F443C001\r
+:1021A000853009F442C08091E80083FD3AC08091F7\r
+:1021B000E80082FD30C08091E80080FF20C090914F\r
+:1021C000F3008091F200392F20E0A901482BCA01C9\r
+:1021D00007C044914093F100319661507109019616\r
+:1021E0006115710519F08830910598F341E0089761\r
+:1021F00009F040E08091E8008E778093E800611557\r
+:10220000710549F64111C7CF06C080916E0388233E\r
+:1022100051F0853051F08091E80082FFF6CF80E0E8\r
+:10222000089581E0089582E0089583E00895982F4D\r
+:102230002CC09093E900981739F07091EC00209130\r
+:10224000ED005091F00003C0242F762F50E021FDC7\r
+:1022500002C09F5F1AC03091EB003E7F3093EB00CD\r
+:102260003091ED003D7F3093ED003091EB00316017\r
+:102270003093EB007093EC002093ED005093F0004E\r
+:102280002091EE0027FDE5CF07C0973090F28F70C8\r
+:102290008093E90081E0089580E0089580916F03C4\r
+:1022A00087FD05C08091E80080FF0EC012C08091BC\r
+:1022B000E80082FD05C080916E038111F8CF08957A\r
+:1022C0008091E8008B7708C080916E038111EACF7E\r
+:1022D00008958091E8008E778093E80008958091BA\r
+:1022E000E4009091E50045E62091EC0020FD1FC040\r
+:1022F00023C020916E03222391F0253091F020918C\r
+:10230000EB0025FD10C02091E4003091E500281776\r
+:10231000390751F34150C90139F784E0089582E04B\r
+:10232000089583E0089581E0089580E00895209164\r
+:10233000E80020FFDECFF9CF2091E80022FFD9CFBF\r
+:10234000F4CF0E940F120E941712E0EEF0E080819D\r
+:1023500081608083E8EDF0E080818F77808319BC15\r
+:10236000A7EDB0E08C918E7F8C9380818F7E8083EF\r
+:1023700010926D0308950F931F93CF93DF930E94E4\r
+:102380000F120E941712C8EDD0E088818F778883E2\r
+:1023900088818068888388818F7D888319BC1092AA\r
+:1023A0006E0310926A0310926C0310926B0300EE9E\r
+:1023B00010E0F80180818B7F808388818160888331\r
+:1023C00042E060E080E00E941711E1EEF0E08081E1\r
+:1023D0008E7F8083E2EEF0E0808181608083808167\r
+:1023E00088608083F80180818E7F8083888180610E\r
+:1023F0008883DF91CF911F910F910895E8EDF0E070\r
+:1024000080818F7E8083E7EDF0E080818160808332\r
+:1024100084E082BF81E080936D030C94BB11E8EDF2\r
+:10242000F0E080818E7F80831092E2000895109208\r
+:10243000DA001092E10008951F920F920FB60F92EA\r
+:1024400011242F933F934F935F936F937F938F93B9\r
+:102450009F93AF93BF93EF93FF938091E10082FF2F\r
+:102460000BC08091E20082FF07C08091E1008B7F6A\r
+:102470008093E1000E94D90D8091DA0080FF1FC097\r
+:102480008091D80080FF1BC08091DA008E7F8093FE\r
+:10249000DA008091D90080FF0DC080E189BD82E122\r
+:1024A00089BD09B400FEFDCF81E080936E030E94D8\r
+:1024B000C30D05C019BC10926E030E94D10D80910E\r
+:1024C000E10080FF19C08091E20080FF15C080917B\r
+:1024D000E2008E7F8093E2008091E2008061809331\r
+:1024E000E2008091D80080628093D80019BC85E01A\r
+:1024F00080936E030E94D50D8091E10084FF30C06F\r
+:102500008091E20084FF2CC080E189BD82E189BD19\r
+:1025100009B400FEFDCF8091D8008F7D8093D80054\r
+:102520008091E1008F7E8093E1008091E2008F7EB8\r
+:102530008093E2008091E20081608093E2008091CC\r
+:102540006A03882311F084E007C08091E30087FFCD\r
+:1025500002C083E001C081E080936E030E94D70D2A\r
+:102560008091E10083FF29C08091E20083FF25C0B4\r
+:102570008091E100877F8093E10082E080936E0389\r
+:1025800010926A038091E1008E7F8093E100809138\r
+:10259000E2008E7F8093E2008091E2008061809370\r
+:1025A000E20042E060E080E00E9417118091F000BC\r
+:1025B00088608093F0000E94D40DFF91EF91BF914D\r
+:1025C000AF919F918F917F916F915F914F913F91CB\r
+:1025D0002F910F900FBE0F901F9018951F920F9282\r
+:1025E0000FB60F9211242F933F934F935F936F93E6\r
+:1025F0007F938F939F93AF93BF93CF93EF93FF936B\r
+:102600008091E9008F709091EC0090FF02C090E8FB\r
+:1026100001C090E0C92FC82B1092E9008091F00012\r
+:10262000877F8093F00078940E9432131092E90023\r
+:102630008091F00088608093F000CF70C093E90033\r
+:10264000FF91EF91CF91BF91AF919F918F917F912A\r
+:102650006F915F914F913F912F910F900FBE0F900F\r
+:102660001F9018951F93CF93DF93CDB7DEB7AC972C\r
+:102670000FB6F894DEBF0FBECDBFEFE6F3E080915A\r
+:10268000F100819323E0E737F207C9F70E94250E96\r
+:102690008091E80083FF37C180916F0390917003B0\r
+:1026A000953009F488C038F49130B1F170F093306E\r
+:1026B00009F029C131C0983009F4F8C0993009F403\r
+:1026C00004C1963009F01FC19DC0803821F08238C6\r
+:1026D00009F019C108C080916B0390916C03992394\r
+:1026E00089F082600FC080917303909174038F70A2\r
+:1026F00099278093E9008091EB0085FB882780F97A\r
+:102700001092E9009091E800977F9093E800809301\r
+:10271000F1001092F100D5C0882319F0823009F041\r
+:10272000F2C08F7121F0823009F0EDC00BC08091B2\r
+:102730007103813009F0E7C0933009F080E08093A5\r
+:102740006C032FC08091710381112BC080917303A2\r
+:10275000909174038F709927009709F4D4C08093E7\r
+:10276000E9002091EB0020FF1CC020917003233072\r
+:1027700021F48091EB00806212C09091EB00906197\r
+:102780009093EB0021E030E001C0220F8A95EAF738\r
+:102790002093EA001092EA008091EB008860809319\r
+:1027A000EB001092E9008091E800877F8093E800B9\r
+:1027B0000E944E11A8C08111A6C080917103909112\r
+:1027C00072038F779927182F9091E3009078982BB8\r
+:1027D0009093E3008091E800877F8093E8000E9457\r
+:1027E0004E118091E80080FFFCCF8091E30080686B\r
+:1027F0008093E300112311F083E001C082E0809315\r
+:102800006E0381C08058823008F07DC080917103D2\r
+:10281000909172038C3D23E0920779F583E08A83DF\r
+:102820008AE289834FB7F894DE01139620E03EE0F8\r
+:1028300051E2E32FF0E050935700E49120FF03C0F2\r
+:10284000E295EF703F5FEF708E2F90E0EA3010F06E\r
+:10285000C79601C0C0968D939D932F5F243149F791\r
+:102860004FBF8091E800877F8093E8006AE270E0C4\r
+:10287000CE0101960E94581013C0AE01455D5F4F16\r
+:10288000609173030E943F0F0097E9F12091E800E7\r
+:10289000277F2093E800BC018BA59CA50E94B71060\r
+:1028A0008091E8008B778093E8002DC0803859F53F\r
+:1028B0008091E800877F8093E80080916A0380938D\r
+:1028C000F1008091E8008E7771CF81111CC090914A\r
+:1028D00071039230C0F48091E800877F8093E80014\r
+:1028E00090936A030E944E1180916A03811104C083\r
+:1028F0008091E30087FF02C084E001C081E0809303\r
+:102900006E030E94070E8091E80083FF0AC0809149\r
+:10291000E800877F8093E8008091EB0080628093DD\r
+:10292000EB00AC960FB6F894DEBF0FBECDBFDF91C3\r
+:10293000CF911F910895CF9380916E038823B1F0BA\r
+:102940008091E9008F709091EC0090FF02C090E8B8\r
+:1029500001C090E0C92FC82B1092E9008091E800D7\r
+:1029600083FD0E943213CF70C093E900CF91089588\r
+:10297000881F8827881F089591E0883F08F490E019\r
+:10298000892F0895982F907F903B99F038F49039D3\r
+:1029900081F0903A71F09038C9F40BC0903DA1F0ED\r
+:1029A00018F4903C99F410C0903E19F0903F71F4E7\r
+:1029B00002C083E00895E82FE15FEF3038F4F0E0E3\r
+:1029C000E356FE4F8081089582E0089580E00895E7\r
+:1029D0000F932F774F776F70606BDC01ED91FC9157\r
+:1029E000022F242F462F63E070E009950F91089580\r
+:1029F0000F932F774F776F706069DC01ED91FC9139\r
+:102A0000022F242F462F63E070E009950F9108955F\r
+:102A10000F932F774F776F706068DC01ED91FC9119\r
+:102A2000022F242F462F63E070E009950F9108953F\r
+:102A3000FC01738362830895FC01738F628F089594\r
+:102A4000FC01758F648F0895CF93DF93EC011DA275\r
+:102A50001FA21EA2BC01685D7F4F40EC88519F4FB2\r
+:102A60000E9461171B821A821D821C821F821E8295\r
+:102A7000198618861B861A861D861C861F861E864A\r
+:102A8000198A188A1B8A1A8A1D8A1C8A1F8A1E8A1A\r
+:102A9000198E188E1B8E1A8E1D8E1C8E1F8E1E8EEA\r
+:102AA00019A218A2DF91CF910895CF92DF92FF92E1\r
+:102AB0000F931F93CF93DF931F92CDB7DEB7F62E00\r
+:102AC0006A018C0108511F4F08C0F60161916F0126\r
+:102AD000C80149830E94681749818C2D841B8F157A\r
+:102AE000A0F30F90DF91CF911F910F91FF90DF9096\r
+:102AF000CF900895FC01718360830895FC0171A358\r
+:102B000060A30895AF92BF92CF92DF92EF92FF92AF\r
+:102B10000F931F93CF93DF9300D01F92CDB7DEB7F3\r
+:102B20007C016B01142FB22EA02EDC0195968C91A6\r
+:102B300095978430F1F45A96ED91FC915B9730971C\r
+:102B400009F4D8C0CB01019763E070E00E94762FB2\r
+:102B5000DB01AA0FBB1FA60FB71F49832A830B8374\r
+:102B60004C2D4A1B9E012F5F3F4FBD01C7010995A8\r
+:102B7000B1C06230710509F453C06330710529F0AA\r
+:102B80006130710509F09CC083C0842F807F803A3A\r
+:102B900001F130F48038B9F0803909F0ABC00DC0D4\r
+:102BA000803EE9F0803F09F1803B09F0A3C0D701E6\r
+:102BB0001296ED91FC91139723C0D7011496ED91D5\r
+:102BC000FC9115971DC0D7011696ED91FC911797B2\r
+:102BD00017C0D7011896ED91FC91199711C0D70134\r
+:102BE0001A96ED91FC911B970BC0423F09F082C0F1\r
+:102BF000D7011C96ED91FC911D97309731F47AC066\r
+:102C0000309709F477C0123F21F42A2D4B2D62EF43\r
+:102C100004C0612F6F702A2D4B2DC70109955AC032\r
+:102C2000842F807F803D59F0803F79F0803C09F00F\r
+:102C300061C0D7011E96ED91FC911F9719C0D70175\r
+:102C40005096ED91FC91519713C0433F31F4D70159\r
+:102C50005296ED91FC91539708C0413F09F04AC04C\r
+:102C6000D7015496ED91FC915597309741F442C0AD\r
+:102C7000309709F43FC0133F11F0113F19F44B2D69\r
+:102C8000612F03C0612F6F704B2DC701099522C0C2\r
+:102C9000842F0E94BC14882331F0D7015696ED9101\r
+:102CA000FC91579707C0163F29F5D7015896ED912B\r
+:102CB000FC9159973097F1F0612FC70109950AC02F\r
+:102CC00064307105A8F416C00A2D2B2D412FB601D2\r
+:102CD000C7010995D7015E96ED91FC915F973097FA\r
+:102CE00089F00A2D2B2D412FB601C70109950AC085\r
+:102CF000C12CD12CD7015C96ED91FC915D9730975A\r
+:102D000019F7E8CF0F900F900F90DF91CF911F919F\r
+:102D10000F91FF90EF90DF90CF90BF90AF9008950C\r
+:102D2000EF92FF920F931F93CF93DF93EC01162F37\r
+:102D3000862F0E94BC14882369F0FDA081E08DA33A\r
+:102D400000E020E0412F61E070E0CE010E9482159A\r
+:102D5000FDA27CC0812F0E94B8144DA1882309F4E4\r
+:102D600040C0443029F01AA321E030E03FA32EA355\r
+:102D7000812F0E94C214813031F070F0823051F006\r
+:102D8000833059F507C08DA300E020E0412F61E0BA\r
+:102D900070E01EC08DA35AC0103F19F0173FE9F430\r
+:102DA00004C084E08DA31AA33FC02EA13FA1C90196\r
+:102DB00063E070E00E94762F8C0F9D1FFC0112A330\r
+:102DC000B9016F5F7F4F7FA36EA30CA12BA14AA116\r
+:102DD000CE010E9482151DA239C01DA21FA21EA2F3\r
+:102DE00035C0442399F12EA13FA1C90163E070E0F1\r
+:102DF0000E94762F7C01FE01E80FF91F12A3B90192\r
+:102E00006F5F7F4F7FA36EA38130910591F082E0C9\r
+:102E1000E816F104D9F40CA12BA14AA1CE010E941D\r
+:102E200082158DA1843091F081E090E09FA38EA364\r
+:102E30000DC0423059F400E02BA14AA1CE010E94FE\r
+:102E400082158DA1843011F0FFA2EEA2DF91CF9107\r
+:102E50001F910F91FF90EF900895CF92DF92EF9224\r
+:102E6000FF920F931F93CF93DF93EC01E8A1F9A199\r
+:102E7000309709F009958E0108511F4FC8010E9433\r
+:102E80009A17E12CF12CC82ED12C0FC060E0C8019C\r
+:102E90000E94AE17682FCE010E94901661E0C80113\r
+:102EA0000E94BF178FEFE81AF80AEC14FD0470F3C4\r
+:102EB000DF91CF911F910F91FF90EF90DF90CF9016\r
+:102EC0000895FC0142837483638311821082089504\r
+:102ED0000F931F93CF93DF93EC01062F0E94E0170F\r
+:102EE000182F298130E0C90101966A8170E00E94A3\r
+:102EF0008A2F488150E08417950729F4812F0E947A\r
+:102F0000E31780E012C0EB81FC81E20FF31F008326\r
+:102F10002981822F90E001966A8170E00E948A2FB9\r
+:102F20008983812F0E94E31781E0DF91CF911F9168\r
+:102F30000F910895CF93DF93EC010E94E017298150\r
+:102F40009881291710F0C22F02C0CA81C20FC91B75\r
+:102F50000E94E3178C2FDF91CF910895FC0120810F\r
+:102F6000862F90E0820F911D628170E00E948A2F6F\r
+:102F70000380F481E02DE80FF91F808108950F93FD\r
+:102F80001F93CF93DF931F92CDB7DEB78C01698378\r
+:102F90000E94E017482FF80180816981262F30E0D8\r
+:102FA000280F311D6281C90170E00E948A2F808341\r
+:102FB000842F0F90DF91CF911F910F910C94E31705\r
+:102FC0008FB7F89408958FBF0895FC01CB0120912D\r
+:102FD0006E032430B1F421812F702093E90040E08A\r
+:102FE00050E064E070E00E94BA0F81110BC0909134\r
+:102FF000E80095FD07C09091E8009E779093E80067\r
+:10300000089582E0089520916E032430A9F4FC0114\r
+:1030100081818F708093E9003091F3002091F2005C\r
+:10302000932F80E0822B892B49F08091E8008E77E6\r
+:103030008093E8000C946F1182E0089580E0089579\r
+:1030400020916E03243051F4FC0121812F702093D4\r
+:10305000E9002091E80020FD0C9403180895FC017C\r
+:10306000CB0120916E03243011F080E00895268179\r
+:103070002F702093E9002091E80022FFF6CF2091E5\r
+:10308000E80025FFF2CF40E050E064E070E00E94ED\r
+:1030900009108091E80085FD05C08091E8008B77DC\r
+:1030A0008093E80081E0089590930F0280930E02D0\r
+:1030B000089580910E0290910F020895E0910E0202\r
+:1030C000F0910F02309721F00190F081E02D0994EA\r
+:1030D00080E00895E0910E02F0910F02309721F008\r
+:1030E0000280F381E02D09940895E0910E02F091A1\r
+:1030F0000F02309721F00480F581E02D09940895A6\r
+:1031000020911002309111028217930771F0909371\r
+:10311000110280931002E0910E02F0910F0230979D\r
+:1031200021F00680F781E02D099408952091120284\r
+:10313000309113028217930771F0909313028093DA\r
+:103140001202E0910E02F0910F02309721F00084FC\r
+:10315000F185E02D099408950E94B6240E948D0502\r
+:103160000E948A250C945F2B0C94CE075F926F927D\r
+:103170007F928F929F92AF92BF92CF92DF92EF9207\r
+:10318000FF920F931F93CF93DF93CDB7DEB72A97AC\r
+:103190000FB6F894DEBF0FBECDBF0E947E0694E14D\r
+:1031A000C92E92E0D92E00E010E0AA24A394B12CFD\r
+:1031B000502E802F0E94C4073C01F601E190F1904F\r
+:1031C0006F01E826F926E114F10431F40F5F1F4F77\r
+:1031D0000430110569F73AC08091680281FD0E94B0\r
+:1031E000CD0720E030E04501022E02C0880C991C7A\r
+:1031F0000A94E2F7C4018E219F21892B09F12E83C5\r
+:103200005F826820792081E0672809F480E0888760\r
+:103210000E94BF248160782F9A8789874E815F81C1\r
+:1032200068858A850E946F19F801EE0FFF1FEC5E1A\r
+:10323000FD4F80819181882599259183808316C0D7\r
+:103240002F5F3F4F2C30310571F6C0CF8FEF898350\r
+:103250008A831B820E94BF248160782F9D838C8388\r
+:1032600049815A816B818D810E946F190E94772854\r
+:1032700010911C020E945E181817D9F00E945E1867\r
+:1032800080931C022A960FB6F894DEBF0FBECDBF06\r
+:10329000DF91CF911F910F91FF90EF90DF90CF9032\r
+:1032A000BF90AF909F908F907F906F905F900C94A5\r
+:1032B000B4182A960FB6F894DEBF0FBECDBFDF91CB\r
+:1032C000CF911F910F91FF90EF90DF90CF90BF9023\r
+:1032D000AF909F908F907F906F905F900895CF9365\r
+:1032E000DF93CDB7DEB72B970FB6F894DEBF0FBED6\r
+:1032F000CDBF4F83588769877A878B87DE01119608\r
+:1033000086E0FD0111928A95E9F785E0FE01379686\r
+:1033100001900D928A95E1F749815A816B817C81F8\r
+:103320008D819E810E9447212B960FB6F894DEBFB7\r
+:103330000FBECDBFDF91CF910895CF93C82F8823C3\r
+:1033400009F4C1C0823859F40E945E1881FDBBC0E7\r
+:1033500089E30E94AC230E94282489E30CC08338AF\r
+:1033600079F40E945E1880FDAEC083E50E94AC2314\r
+:103370000E94282483E50E94CE23CF910C94282418\r
+:10338000843859F40E945E1882FD9DC087E40E9433\r
+:10339000AC230E94282487E4EECF8450813A48F47D\r
+:1033A0008C2F0E94C72A81118EC08C2F0E94AC23C3\r
+:1033B000E4CF8C2F805E883050F4C77081E090E0BD\r
+:1033C00001C0880FCA95EAF70E94EF23D6CF8C2F51\r
+:1033D000855A833078F4C53A29F0C63A31F482E848\r
+:1033E00090E005C081E890E002C083E890E0CF91D2\r
+:1033F0000C9480188C2F885A833108F064C0C83A26\r
+:1034000039F1C93A41F1CA3A49F1CB3A51F1CC3AD2\r
+:1034100059F1CD3A61F1C03B69F1CE3A71F1CF3A41\r
+:1034200079F1C13B81F1C23B89F1C33B91F1C43BCE\r
+:1034300099F1C53BA1F1C63BA9F1C73BB1F1C83B2E\r
+:10344000B9F1C93BC1F1CA3BC9F58AE292E038C083\r
+:1034500082EE90E035C089EE90E032C08AEE90E0D6\r
+:103460002FC085EB90E02CC086EB90E029C087EB65\r
+:1034700090E026C08CEC90E023C08DEC90E020C062\r
+:1034800083E891E01DC08AE891E01AC082E991E0EA\r
+:1034900017C084E991E014C081E292E011C083E298\r
+:1034A00092E00EC084E292E00BC085E292E008C098\r
+:1034B00086E292E005C087E292E002C080E090E000\r
+:1034C000CF910C949618CF910895882309F44DC09C\r
+:1034D000823859F40E945E1881FF47C089E30E9438\r
+:1034E000AC230E94282489E30CC0833871F40E9425\r
+:1034F0005E1880FF3AC083E50E94AC230E94282416\r
+:1035000083E50E94CE230C942824843859F40E9429\r
+:103510005E1882FF2AC087E40E94AC230E94282400\r
+:1035200087E4EFCF982F9450913A08F4EACF982F80\r
+:10353000905E983058F4282F277081E090E001C009\r
+:10354000880F2A95EAF70E94F523DDCF982F955A28\r
+:10355000933020F480E090E00C948018885A8331F6\r
+:1035600020F480E090E00C9496180895882321F0D0\r
+:103570000E94EF230C9428240895882321F00E94B0\r
+:10358000F5230C9428240895BF92CF92DF92EF92F6\r
+:10359000FF920F931F93CF93DF93CDB7DEB727979B\r
+:1035A0000FB6F894DEBF0FBECDBF8C0185E0F801E9\r
+:1035B000DE01119601900D928A95E1F7F8013081B4\r
+:1035C0002181F280558152955F7083819481892B8E\r
+:1035D00039F02F3F41F481E090E03F3F31F003C0EC\r
+:1035E00081E090E002C080E090E080FD73C3398309\r
+:1035F0002A8389819A815E830E946923B92E8F83F1\r
+:103600000E9468230E9490222B2D22952F7030E07B\r
+:103610005E816F812530310509F4E6C06CF42430F9\r
+:1036200031050CF0A2C04B2D407F8B2D8F702230C6\r
+:1036300031050CF045C017C02C3031054CF42A3050\r
+:1036400031050CF0E7C12830310509F043C3E5C06E\r
+:103650002D30310509F4BAC20CF4A2C22F30310565\r
+:1036600009F038C323C3182F411101C002C01295BD\r
+:10367000107FFF2059F0112309F46BC2812F6F8353\r
+:103680000E94FF230E9428246F8163C2862F0E941C\r
+:10369000651A112309F41EC3812F0E940524279661\r
+:1036A0000FB6F894DEBF0FBECDBFDF91CF911F9153\r
+:1036B0000F91FF90EF90DF90CF90BF900C94282453\r
+:1036C000403211F08295807F662319F0613071F5E8\r
+:1036D00023C0FF20B1F0511101C032C0513081F53B\r
+:1036E00027960FB6F894DEBF0FBECDBFDF91CF9106\r
+:1036F0001F910F91FF90EF90DF90CF90BF900C94AF\r
+:103700000F24511101C003C0513009F4E3C28E836C\r
+:103710000E9412248E819AC1FF2021F0563008F0B9\r
+:10372000D9C20EC0553008F0D5C290C1FF20C9F0F3\r
+:10373000552331F0F801958190FF0BC29F7095835E\r
+:1037400027960FB6F894DEBF0FBECDBFDF91CF91A5\r
+:103750001F910F91FF90EF90DF90CF90BF900C944E\r
+:10376000B61A552309F472C109C22B2D2695269548\r
+:10377000237030E02115310529F02130310509F0A1\r
+:10378000A9C219C0FF2021F0862F9B2D937002C083\r
+:1037900080E090E027960FB6F894DEBF0FBECDBF55\r
+:1037A000DF91CF911F910F91FF90EF90DF90CF901D\r
+:1037B000BF900C948018FF2021F0862F9B2D9370D2\r
+:1037C00002C080E090E027960FB6F894DEBF0FBEEF\r
+:1037D000CDBFDF91CF911F910F91FF90EF90DF90C0\r
+:1037E000CF90BF900C949618862FFF2019F00E945E\r
+:1037F0007D2702C00E94E52727960FB6F894DEBF0A\r
+:103800000FBECDBFDF91CF911F910F91FF90EF9031\r
+:10381000DF90CF90BF900C946C288B2D837009F0B3\r
+:1038200079C0F11057C2262F229526952770220FB6\r
+:10383000220F862F8F70C82ED12CE12CF12C022E56\r
+:1038400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF4\r
+:1038500010C06FE070E080E090E004C0660F771F5A\r
+:10386000881F991F2A95D2F760957095809590953D\r
+:1038700003C060E070E0CB012B2D269526952370C8\r
+:10388000422F50E042305105D9F04330510569F1E3\r
+:103890006C297D298E299F294130510551F12796A8\r
+:1038A0000FB6F894DEBF0FBECDBFDF91CF911F9151\r
+:1038B0000F91FF90EF90DF90CF90BF900C94A522D6\r
+:1038C0006C297D298E299F2927960FB6F894DEBF93\r
+:1038D0000FBECDBFDF91CF911F910F91FF90EF9061\r
+:1038E000DF90CF90BF900C94B7220E94A522C70111\r
+:1038F000B60127960FB6F894DEBF0FBECDBFDF919D\r
+:10390000CF911F910F91FF90EF90DF90CF90BF90DC\r
+:103910000C949322FF2019F08B2D817001C08695A5\r
+:10392000882309F4D7C1262F229526952770220FC8\r
+:10393000220F862F8F70C82ED12CE12CF12C022E55\r
+:1039400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF3\r
+:1039500010C06FE070E080E090E004C0660F771F59\r
+:10396000881F991F2A95D2F760957095809590953C\r
+:1039700003C060E070E0CB012B2D269526952370C7\r
+:10398000422F50E042305105D9F04330510569F1E2\r
+:103990006C297D298E299F294130510551F12796A7\r
+:1039A0000FB6F894DEBF0FBECDBFDF91CF911F9150\r
+:1039B0000F91FF90EF90DF90CF90BF900C94442335\r
+:1039C0006C297D298E299F2927960FB6F894DEBF92\r
+:1039D0000FBECDBFDF91CF911F910F91FF90EF9060\r
+:1039E000DF90CF90BF900C9456230E944423C701D0\r
+:1039F000B60127960FB6F894DEBF0FBECDBFDF919C\r
+:103A0000CF911F910F91FF90EF90DF90CF90BF90DB\r
+:103A10000C943223603F59F120F4603E08F494C0C6\r
+:103A200008C0623F09F467C0F0F1633F09F08CC041\r
+:103A300065C0162F1F708B2D8F71FF2021F00E9403\r
+:103A4000DD22812F7DCE0E94F822812F27960FB68E\r
+:103A5000F894DEBF0FBECDBFDF91CF911F910F91C4\r
+:103A6000FF90EF90DF90CF90BF900C94BD1AFF2095\r
+:103A7000B1F0553008F02EC18B2D8F7127960FB6FF\r
+:103A8000F894DEBF0FBECDBFDF91CF911F910F9194\r
+:103A9000FF90EF90DF90CF90BF900C94172356309B\r
+:103AA00008F018C1E9CFFF2099F08B2D8F71279670\r
+:103AB0000FB6F894DEBF0FBECDBFDF91CF911F913F\r
+:103AC0000F91FF90EF90DF90CF90BF900C94DD228C\r
+:103AD0008B2D8F7127960FB6F894DEBF0FBECDBF2A\r
+:103AE000DF91CF911F910F91FF90EF90DF90CF90DA\r
+:103AF000BF900C94F822F110EBCFD7CFFF2099F0B4\r
+:103B00008B2D8F7127960FB6F894DEBF0FBECDBFF9\r
+:103B1000DF91CF911F910F91FF90EF90DF90CF90A9\r
+:103B2000BF900C94CE2227960FB6F894DEBF0FBE3E\r
+:103B3000CDBFDF91CF911F910F91FF90EF90DF905C\r
+:103B4000CF90BF900C94C922FF20A9F0552309F40F\r
+:103B5000ACCF862F27960FB6F894DEBF0FBECDBF31\r
+:103B6000DF91CF911F910F91FF90EF90DF90CF9059\r
+:103B7000BF900C949D19552309F4AACF862F279640\r
+:103B80000FB6F894DEBF0FBECDBFDF91CF911F916E\r
+:103B90000F91FF90EF90DF90CF90BF900C94651A3B\r
+:103BA0004B2D4F70C8010E94E50227960FB6F8947E\r
+:103BB000DEBF0FBECDBFDF91CF911F910F91FF9060\r
+:103BC000EF90DF90CF90BF900C94FD21F11082C058\r
+:103BD0009B2D9F70492F50E04230510599F144F4DC\r
+:103BE0004115510569F04130510509F073C019C004\r
+:103BF00043305105C1F14430510509F06BC044C058\r
+:103C000027960FB6F894DEBF0FBECDBFDF91CF91E0\r
+:103C10001F910F91FF90EF90DF90CF90BF900C9489\r
+:103C2000702B27960FB6F894DEBF0FBECDBFDF9185\r
+:103C3000CF911F910F91FF90EF90DF90CF90BF90A9\r
+:103C40000C94872B27960FB6F894DEBF0FBECDBF1E\r
+:103C5000DF91CF911F910F91FF90EF90DF90CF9068\r
+:103C6000BF900C94A32B27960FB6F894DEBF0FBE1F\r
+:103C7000CDBFDF91CF911F910F91FF90EF90DF901B\r
+:103C8000CF90BF900C94B62B862F27960FB6F89442\r
+:103C9000DEBF0FBECDBFDF91CF911F910F91FF907F\r
+:103CA000EF90DF90CF90BF900C94DA2B4B2D4F709C\r
+:103CB000C80127960FB6F894DEBF0FBECDBFDF91C7\r
+:103CC000CF911F910F91FF90EF90DF90CF90BF9019\r
+:103CD0000C940E0827960FB6F894DEBF0FBECDBF2A\r
+:103CE000DF91CF911F910F91FF90EF90DF90CF90D8\r
+:103CF000BF9008950E940C240E94E1230E94282472\r
+:103D00000E9418290E946C2880E090E00E94801890\r
+:103D100080E090E00C9496180E94FC230C947A1E8C\r
+:103D20000E946923292F22952F7030E02C30310515\r
+:103D30004CF42A3031056CF422503109223031051F\r
+:103D400070F407C02C30310531F02F30310539F4D3\r
+:103D500002C081E0089593FB882780F9089580E0F0\r
+:103D60000895CF93DF9300D000D01F92CDB7DEB778\r
+:103D70000F900F900F900F900F90DF91CF910895BB\r
+:103D8000CF93DF9300D000D000D0CDB7DEB726961A\r
+:103D90000FB6F894DEBF0FBECDBFDF91CF9108956F\r
+:103DA0001F93CF93DF93C091530216E012C0D0E06F\r
+:103DB0001C9FF0011D9FF00D1124ED5DFD4F408112\r
+:103DC000518162817381848195810E94C01E2196F8\r
+:103DD000C77080915402C813EACFDF91CF911F9131\r
+:103DE000089540911D0250911E0260911F02709132\r
+:103DF000200280912102909122020C94C01E0F9308\r
+:103E00001F93CF93DF938091220282958F7009F0E8\r
+:103E100069C080911F02882309F464C0A0915302F5\r
+:103E2000D0915402B0911D02C0911E0280912002D7\r
+:103E30009091210221E030E0BF3F11F020E030E01E\r
+:103E4000122FBC016095709506E04AC0009721F0E2\r
+:103E5000CF3F29F4212F05C021E030E002C020E04F\r
+:103E600030E020FD3BC04A2F50E0049FF001059F49\r
+:103E7000F00D1124ED5DFD4F2181C2132FC0208173\r
+:103E8000B2132CC02281211129C02381348128172B\r
+:103E9000390718F0281B390B02C0260F371F283CA2\r
+:103EA0003105E0F4809122028F70806180932202BC\r
+:103EB00086E0849FF001859FF00D1124E85DFD4FA1\r
+:103EC00080818F70806180838DE192E00E94C41AAE\r
+:103ED000DF91CF911F910F910C94D01EAF5FA7700F\r
+:103EE000AD13B4CFDF91CF911F910F910895EF9251\r
+:103EF000FF920F931F93CF93DF93CDB7DEB76297F7\r
+:103F00000FB6F894DEBF0FBECDBF8C0185E0F8017F\r
+:103F1000DE011D9601900D928A95E1F7D8014C9132\r
+:103F200011965C91119712966C9112971396ED90E1\r
+:103F3000FC90149770911D02E0911E028091200266\r
+:103F400090912102009739F0EF3F41F421E030E0F9\r
+:103F50007F3F31F003C021E030E002C020E030E0DC\r
+:103F600020FD5CC120911F02222309F4F1C0E81654\r
+:103F7000F90628F09701281B390BC90104C0809568\r
+:103F800090958E0D9F1D883C910508F098C08091FA\r
+:103F90002202982F907F09F064C0E51314C07413B7\r
+:103FA00012C0611110C08F708061809322020E9444\r
+:103FB000F11E8DE192E00E94C41A80912202D80184\r
+:103FC00015968C9343C1EF2839F05F3F41F481E0AF\r
+:103FD00090E04F3F31F003C081E090E002C080E00C\r
+:103FE00090E080FD03C081E0862702C080E090E081\r
+:103FF00080FF2EC0809153022091540236E013C0FE\r
+:1040000090E0389FF001399FF00D1124ED5DFD4FD8\r
+:104010007181571306C07081471303C07281671303\r
+:1040200017C0019687708213EBCF12C19F7059F0B1\r
+:10403000882309F40BC107C09F7029F0F80195810E\r
+:10404000907F09F403C1805E883008F4FFC0D2C0BD\r
+:10405000662309F4FBC080912202816080932202D2\r
+:10406000F5C0E51308C0741306C0611104C0D8017F\r
+:1040700015968C939DC04D875E878D859E856A8B36\r
+:104080000E94901E6A89882309F4B4C0662309F44B\r
+:10409000B1C020912202822F82958F7090E002970A\r
+:1040A0000CF4C6C080911D0290911E0298878F83E8\r
+:1040B0001986FB86EA862C87CE01079646C080913A\r
+:1040C0002202982F907F59F47E2DF98AE88A8989F7\r
+:1040D0000E94B11E8DE192E00E94C41A95C0E513C2\r
+:1040E00011C074130FC061110DC0F8018583C801A0\r
+:1040F0000E94C41AEDE1F2E086E0DF011D928A958C\r
+:10410000E9F7A2C04D875E878D859E856A8B0E94E8\r
+:10411000901E6A89882309F46DC0662309F46AC079\r
+:1041200020912202822F82958F7090E002970CF4EA\r
+:104130007FC080911D0290911E029A8389831B8209\r
+:10414000FD82EC822E83CE0101960E94C41A70C0BB\r
+:10415000E816F90628F09701281B390BC90104C09D\r
+:10416000809590958E0D9F1D883C910508F046C066\r
+:10417000662309F43FC0E51330C074132EC02091AC\r
+:10418000220220FD21C0322F32953F70832F90E014\r
+:104190000097D1F0D80115962C9315970F9741F001\r
+:1041A000832F8F5F8295807F2F70282B15962C93FD\r
+:1041B000C8010E94C41A86E0F801ADE1B2E00190A6\r
+:1041C0000D928A95E1F73EC086E0F801ADE1B2E0DC\r
+:1041D00001900D928A95E1F737C04D875E878D85F6\r
+:1041E0009E850E94901E811123C0809122028160D1\r
+:1041F00080932202C8010E94C41A26C07E2DF98A2B\r
+:10420000E88A89890E94B11EEDE1F2E086E0DF01D3\r
+:104210001D928A95E9F70E94F11E18C0662351F39A\r
+:104220004D875E878D859E850E94901E882311F3A1\r
+:1042300086E0F801ADE1B2E001900D928A95E1F7D8\r
+:104240000E94FF1E0E94F11E81E014C080E012C097\r
+:104250004D875E878D859E850E946923292F229533\r
+:104260002F7030E0223031050CF4E0CE24303105DF\r
+:104270000CF6E2CE62960FB6F894DEBF0FBECDBF4D\r
+:10428000DF91CF911F910F91FF90EF9008951F93B1\r
+:10429000CF93DF93CDB7DEB72C970FB6F894DEBF80\r
+:1042A0000FBECDBF4F83588769877A878B879C87DE\r
+:1042B000CE0107960E94771F8823D9F02F81388579\r
+:1042C0008A859B85892B39F03F3F19F080E090E08B\r
+:1042D00004C02F3FD9F781E090E0892B09F06DC031\r
+:1042E0004F81588569857A858B859C850E94C01E83\r
+:1042F00064C086E0FE013796DE01119601900D92B2\r
+:104300008A95E1F7FF81E8854A855B85411551056E\r
+:1043100039F0EF3F41F481E090E0FF3F31F003C01E\r
+:1043200081E090E002C080E090E080FD46C02091F6\r
+:10433000540230E0C90101968770992760915302B9\r
+:1043400070E08617970709F440C0F983EA835D831C\r
+:104350004C8396E0929FD001939FB00D1124AD5DE8\r
+:10436000BD4FFE01319601900D929A95E1F7809331\r
+:1043700054020E94D01E21C0189FC00111248D5DDF\r
+:104380009D4F0E94771F882371F1E09153021E9F79\r
+:10439000F0011124ED5DFD4F4081518162817381F7\r
+:1043A000848195810E94C01E8091530290E0019605\r
+:1043B000877099278093530201C016E080915302C1\r
+:1043C000909154028913D8CF0EC00E948C1E109277\r
+:1043D000540210925302EDE1F2E086E0DF011D92FB\r
+:1043E0008A95E9F7EACF2C960FB6F894DEBF0FBE98\r
+:1043F000CDBFDF91CF911F910895DF92EF92FF9291\r
+:104400000F931F93CF93DF93EC01009709F46CC0D7\r
+:10441000D12CEE24E394F12C8E010F5F1F4FFE018F\r
+:104420008491843748F4843008F04AC0813071F0B8\r
+:10443000823009F059C01EC0853709F43DC070F1C3\r
+:10444000982F9458903708F04FC03DC02296F8013D\r
+:104450008491982F905E983050F48770FE2D01C0A3\r
+:10446000FF0F8A95EAF78F2F0E94FF2330C00E942A\r
+:104470009D192DC02296F8018491982F905E983056\r
+:1044800050F48770FE2D01C0FF0F8A95EAF78F2F39\r
+:104490000E9405241CC00E94651A19C02296F801CA\r
+:1044A000049107C08FE99FE00197F1F700C0000079\r
+:1044B00001500111F7CF0BC02296F801D49007C02C\r
+:1044C0000E949D1903C08F770E94651AE8018D2D07\r
+:1044D00007C08150EFE9FFE03197F1F700C000001D\r
+:1044E000882309F499CFF5CFDF91CF911F910F91D8\r
+:1044F000FF90EF90DF9008956093590270935A02F5\r
+:1045000080935B0290935C020C947A1E6093550238\r
+:104510007093560280935702909358020C947A1E1F\r
+:1045200008950C947C220F931F93009159021091CF\r
+:104530005A0220915B0230915C02602B712B822B1E\r
+:10454000932B1F910F910C947C220F931F9300913A\r
+:10455000590210915A0220915B0230915C02602353\r
+:104560007123822393231F910F910C947C220F932C\r
+:104570001F930091590210915A0220915B023091D1\r
+:104580005C0260277127822793271F910F910C945B\r
+:104590007C2260E070E0CB010C94862241E050E088\r
+:1045A00060E070E004C0440F551F661F771F8A95B6\r
+:1045B000D2F7CB01BA010C94862241E050E060E0D2\r
+:1045C00070E004C0440F551F661F771F8A95D2F70D\r
+:1045D0008091550290915602A0915702B0915802D5\r
+:1045E000482B592B6A2B7B2BCB01BA010C948622CA\r
+:1045F00041E050E060E070E004C0440F551F661FCA\r
+:10460000771F8A95D2F74095509560957095809167\r
+:10461000550290915602A0915702B091580248233A\r
+:1046200059236A237B23CB01BA010C94862241E0F3\r
+:1046300050E060E070E004C0440F551F661F771F14\r
+:104640008A95D2F78091550290915602A091570217\r
+:10465000B0915802482759276A277B27CB01BA0116\r
+:104660000C9486220F931F930091550210915602CD\r
+:104670002091570230915802602B712B822B932B83\r
+:104680001F910F910C9486220F931F930091550256\r
+:1046900010915602209157023091580260237123E5\r
+:1046A000822393231F910F910C9486220F931F93C3\r
+:1046B00000915502109156022091570230915802F4\r
+:1046C00060277127822793271F910F910C948622D0\r
+:1046D0000895CF92DF92EF92FF920F931F93CF93A3\r
+:1046E000DF93EC01C0905902D0905A02E0905B0237\r
+:1046F000F0905C028091550290915602A091570271\r
+:10470000B0915802C82AD92AEA2AFB2A0FE110E000\r
+:10471000B701A601002E04C0769567955795479579\r
+:104720000A94D2F740FF08C0BE01802F0E94E00328\r
+:104730008130910509F007C00150110948F7BE0109\r
+:1047400080E00E94E003DF91CF911F910F91FF90D5\r
+:10475000EF90DF90CF90089540911B0150911C0184\r
+:1047600020E030E09FEFFA01E20FF31F628168174B\r
+:10477000A1F09F3F19F4611101C0922F2F5F3F4FAD\r
+:104780002630310581F707C0FA01E90FF11D97FDC9\r
+:10479000FA95828308959F3FB9F7089540911B01D0\r
+:1047A00050911C0120E030E0FA01E20FF31F9281EA\r
+:1047B000981301C012822F5F3F4F26303105A1F7B9\r
+:1047C000089581E090E0E0911B01F0911C01E80F59\r
+:1047D000F91F1082019688309105A9F708959091EC\r
+:1047E0005D02982B90935D020895809590915D02F3\r
+:1047F000982390935D02089510925D020895909120\r
+:104800005E02982B90935E020895809590915E02CF\r
+:10481000982390935E02089510925E02089580930B\r
+:104820005F02089510925F02089540911B0150911C\r
+:104830001C0120E030E080E0FA01E20FF31F9181DB\r
+:1048400091118F5F2F5F3F4F27303105A9F70895F2\r
+:10485000E0911B01F0911C0180915D028083E09149\r
+:104860001B01F0911C01808190915E02892B808355\r
+:1048700090915F02992361F0E0911B01F0911C017E\r
+:104880008081892B80830E94152481110E9412242B\r
+:1048900080911B0190911C010C946A1880916E0309\r
+:1048A000843009F11092690220E488E190E00FB6AB\r
+:1048B000F894A895809360000FBE2093600083B7A2\r
+:1048C000817F846083BF83B7816083BF789488953C\r
+:1048D00083B78E7F83BF88E10FB6F8948093600022\r
+:1048E000109260000FBE0895CF930E94E3020E94D1\r
+:1048F0007E060E94E402C0E08C2F0E94C407892B30\r
+:1049000029F4CF5FC430C1F780E001C081E0CF91CE\r
+:1049100008950E948C1E0C945F2B1F920F920FB66D\r
+:104920000F9211248F939F93AF93BF93809169024D\r
+:10493000811113C080916A0290916B02A0916C0268\r
+:10494000B0916D024196A11DB11D80936A029093B2\r
+:104950006B02A0936C02B0936D02BF91AF919F91D7\r
+:104960008F910F900FBE0F901F90189582E084BD1D\r
+:1049700093E095BD9AEF97BD80936E0008958FB731\r
+:10498000F89440916A0250916B0260916C027091B0\r
+:104990006D028FBFCA010895CF92DF92EF92FF920E\r
+:1049A0000F931F932FB7F89440916A0250916B02B6\r
+:1049B00060916C0270916D022FBF6A017B01EE2441\r
+:1049C000FF248C0120E030E0C016D106E206F30699\r
+:1049D00020F09A01281B390B05C09C0120953095C9\r
+:1049E000240F351FC9011F910F91FF90EF90DF90A9\r
+:1049F000CF9008951F920F920FB60F9211248F93AC\r
+:104A00009F93AF93BF9380916A0290916B02A091A4\r
+:104A10006C02B0916D020196A11DB11D80936A02D6\r
+:104A200090936B02A0936C02B0936D02BF91AF9113\r
+:104A30009F918F910F900FBE0F901F9018950E941D\r
+:104A4000A111F8942FEF87EA91E621508040904021\r
+:104A5000E1F700C0000087E090EBDC018093780371\r
+:104A600090937903A0937A03B0937B032CE088E1C1\r
+:104A700090E00FB6F894A895809360000FBE209345\r
+:104A80006000FFCFCF92DF92EF92FF920F931F93C0\r
+:104A9000CF93DF93C82ED12C01E010E08D2D0E9422\r
+:104AA000C4077C01C0E0D0E098010C2E02C0220FA8\r
+:104AB000331F0A94E2F72E213F21232B29F421965C\r
+:104AC000CC30D10589F708C06C2F7D2D80E00E9485\r
+:104AD000BB03C812F4CF06C0D39484E0D812DECF53\r
+:104AE00080E001C081E0DF91CF911F910F91FF9095\r
+:104AF000EF90DF90CF900895CF93C82F8CE20E9463\r
+:104B00004225882321F08C2FCF910C94422580E000\r
+:104B1000CF910895CF930E94CD26811102C00E94AB\r
+:104B2000AE26C5E608C00E947E068FE39CE9019789\r
+:104B3000F1F700C00000C150B1F789E20E947C2566\r
+:104B400081110AC18AE20E947C2581110E94AE2651\r
+:104B500085E00E947C2581110E941F250E94D82695\r
+:104B60008093680287E00E947C25882399F18BE17D\r
+:104B70000E947C25882351F09091680291FB882740\r
+:104B800080F921E0822780FB91F922C08EE00E940B\r
+:104B90007C25882351F09091680292FB882780F948\r
+:104BA00021E0822780FB92F913C080E10E947C25DE\r
+:104BB00090916802882341F093FB882780F921E0D7\r
+:104BC000822780FB93F904C0892F809580FB90F9A0\r
+:104BD00090936802809168020E94DC260E94EA2677\r
+:104BE00080937B0280EE0E947C25882341F0809197\r
+:104BF0007B02982F909590FB80F980937B0289E34C\r
+:104C00000E947C25882359F090917B0291FB882794\r
+:104C100080F921E0822780FB91F990937B0282EE5C\r
+:104C20000E947C25882359F090917B0292FB882773\r
+:104C300080F921E0822780FB92F990937B0286EE37\r
+:104C40000E947C25882359F090917B0293FB882752\r
+:104C500080F921E0822780FB93F990937B0283EE19\r
+:104C60000E947C25882359F090917B0294FB882731\r
+:104C700080F921E0822780FB94F990937B0285E301\r
+:104C80000E947C25882359F090917B0295FB882710\r
+:104C900080F921E0822780FB95F990937B0281E3E4\r
+:104CA0000E947C25882359F090917B0296FB8827EF\r
+:104CB00080F921E0822780FB96F990937B0281E1C5\r
+:104CC0000E947C25882359F090917B0297FB8827CE\r
+:104CD00080F921E0822780FB97F990937B028091F5\r
+:104CE0007B020E94EE2687E20E947C25C82F8EE17F\r
+:104CF0000E947C258111C2608FE10E947C25811178\r
+:104D0000C46080E20E947C258111C86081E20E941B\r
+:104D10007C258111C06182E20E947C258111C062E4\r
+:104D200083E20E947C258111C06484E20E947C257C\r
+:104D3000882311F0C06802C0CC2329F08C2F0E9478\r
+:104D4000E5266C2F03C00E94E126682F70E080E00A\r
+:104D500090E0CF910C949122CF9108956DEE7EEF6B\r
+:104D600080E090E00E94BA2F60E082E090E00E9434\r
+:104D7000AC2F60E083E090E00E94AC2F60E084E024\r
+:104D800090E00E94AC2F60E085E090E00E94AC2FA4\r
+:104D900060E086E090E00C94AC2F80E090E00E9410\r
+:104DA000A62F21E08D3E9E4F09F020E0822F08952E\r
+:104DB00082E090E00C949E2F682F82E090E00C94AB\r
+:104DC000AC2F83E090E00C949E2F682F83E090E05E\r
+:104DD0000C94AC2F84E090E00C949E2F682F84E01C\r
+:104DE00090E00C94AC2F86E090E00C949E2F682FFE\r
+:104DF00086E090E00C94AC2F8091760280FF0BC08F\r
+:104E00006091200185E0689FB00111247595679538\r
+:104E1000759567952AC081FF09C06091200185E0E2\r
+:104E2000689FB0011124759567951FC082FF07C068\r
+:104E30006091200185E0689FB001112416C0409167\r
+:104E400070024423C9F060911F01461788F7209132\r
+:104E5000200185E0289F90011124429FC001439FBB\r
+:104E6000900D112470E00E948A2F6038710540F483\r
+:104E70006115710539F002C065E070E0862F089574\r
+:104E80008FE7089581E008958091760280FF08C041\r
+:104E900060911E0170E0759567957595679521C0C5\r
+:104EA00081FF06C060911E0170E07595679519C07D\r
+:104EB00082FF04C060911E0170E010C080917002FA\r
+:104EC0008823C1F060911D018617A0F790911E0103\r
+:104ED000989FC001112470E00E948A2F60387105EC\r
+:104EE00028F46115710521F0862F08958FE7089544\r
+:104EF00081E0089561E070E0F4CF803F21F40E94EA\r
+:104F0000FC26819504C0813F29F40E94FC268093F1\r
+:104F100073020895823F21F40E94FC26819504C00B\r
+:104F2000833F29F40E94FC26809372020895893FF2\r
+:104F300019F40E94442705C08A3F31F40E94442797\r
+:104F400081958093740208958B3F21F40E94442739\r
+:104F5000819504C08C3F29F40E94442780937502F8\r
+:104F60000895843F21F480917102816017C0853FCC\r
+:104F700021F480917102826011C0863F21F48091FA\r
+:104F8000710284600BC0873F21F4809171028860B8\r
+:104F900005C0883F31F48091710280618093710275\r
+:104FA00008958D3F21F48091760281600BC08E3F81\r
+:104FB00021F480917602826005C08F3F29F48091B0\r
+:104FC00076028460809376020895803F29F4809170\r
+:104FD000730287FF6EC007C0813F41F48091730266\r
+:104FE00018160CF066C01092730263C090917202A2\r
+:104FF000823F19F497FF5DC005C0833F31F4191655\r
+:105000000CF057C01092720254C0893F31F4809165\r
+:10501000740218160CF04DC006C08A3F39F4809116\r
+:10502000740287FF46C01092740243C08B3F29F47C\r
+:105030008091750287FF3DC006C08C3F39F4809196\r
+:1050400075021816B4F51092750233C0843F21F42E\r
+:10505000809171028E7F05C0853F31F4809171028D\r
+:105060008D7F8093710225C0863F21F4809171026B\r
+:105070008B7FF7CF873F21F480917102877FF1CF3B\r
+:10508000883F21F4809171028F7EEBCF8D3F21F418\r
+:10509000809176028E7F0BC08E3F21F48091760244\r
+:1050A0008D7F05C08F3F29F4809176028B7F80939E\r
+:1050B00076028091720281110EC08091730281117B\r
+:1050C0000AC080917402811106C08091750281111D\r
+:1050D00002C010927002089581E792E00E94751854\r
+:1050E0000E94BF2490936F0280936E020895CF9325\r
+:1050F00080916E0290916F020E94CC2440917002C8\r
+:10510000442321F02091210130E006C020912201AA\r
+:105110005AE0259F900111248217930708F486C056\r
+:105120008091720281110DC090917302911109C09A\r
+:1051300090917402911105C090917502992309F420\r
+:1051400075C04F3F19F04F5F40937002181624F45A\r
+:105150000E94FC26809372028091720287FF05C034\r
+:105160000E94FC268195809372028091730218162A\r
+:1051700024F40E94FC26809373028091730287FFBF\r
+:1051800005C00E94FC268195809373026091720293\r
+:10519000662339F1C0917302CC2319F1772767FD9B\r
+:1051A0007095872F972F0E94FA2C23E333E343E374\r
+:1051B0005FE30E94AE2D0E94C72C609372026C2F99\r
+:1051C000772767FD7095872F972F0E94FA2C23E38E\r
+:1051D00033E343E35FE30E94AE2D0E94C72C60934C\r
+:1051E000730280917402181624F40E94442780935D\r
+:1051F00074028091740287FF05C00E944427819544\r
+:105200008093740280917502181624F40E9444273A\r
+:10521000809375028091750287FF05C00E94442724\r
+:10522000819580937502CF910C946C28CF9108954D\r
+:10523000E1E7F2E085E0DF011D928A95E9F710923F\r
+:105240007002109276020895833089F130F4813033\r
+:1052500061F0823009F06EC019C0853009F449C090\r
+:10526000B8F1863009F066C055C020912201862F22\r
+:1052700090E0820F911D8F3F910520F4620F6093A3\r
+:10528000220108958FEF809322010895209121013A\r
+:10529000862F90E0820F911D8F3F910520F4620FC1\r
+:1052A0006093210108958FEF80932101089520914B\r
+:1052B0002001862F90E0820F911D8F3F910520F4F1\r
+:1052C000620F6093200108958FEF8093200108956D\r
+:1052D00020911F01862F90E0820F911D8F3F910535\r
+:1052E00020F4620F60931F0108958FEF80931F01D8\r
+:1052F000089520911E01862F90E0820F911D8F3F0F\r
+:10530000910520F4620F60931E0108958FEF809342\r
+:105310001E01089520911D01862F90E0820F911D9E\r
+:105320008F3F910520F4620F60931D0108958FEF68\r
+:1053300080931D010895833021F130F4813059F0BC\r
+:10534000823009F049C012C0853089F128F18630D9\r
+:1053500009F042C037C080912201681720F4861BF3\r
+:1053600080932201089510922201089580912101D5\r
+:10537000681720F4861B8093210108951092210163\r
+:10538000089580912001681720F4861B80932001E6\r
+:10539000089510922001089580911F01681720F44C\r
+:1053A000861B80931F01089510921F01089580911C\r
+:1053B0001E01681720F4861B80931E010895109229\r
+:1053C0001E01089580911D01681720F4861B8093AB\r
+:1053D0001D01089510921D01089541E050E060E024\r
+:1053E00070E004C0440F551F661F771F8A95D2F7DF\r
+:1053F000CB01BA010E9491220C948C1E873208F5D1\r
+:105400008E3108F0B9C08E3009F47EC060F4873068\r
+:1054100009F465C018F4863059F549C0883051F157\r
+:105420008B3031F5AEC0883130F4863108F0A9C038\r
+:105430008031F1F473C0893109F4A3C08B31C1F418\r
+:1054400059C08933F1F068F4893209F493C018F433\r
+:10545000873271F48FC0853309F48CC0883341F4EE\r
+:1054600090C0863409F46BC008F488C0883449F1D0\r
+:1054700080E008950E94D8260E94EA260E94F32622\r
+:1054800080C00E945918892B59F00E945918909396\r
+:105490007902809378020E948C1E80E090E004C024\r
+:1054A00080917802909179020E9454186AC080918C\r
+:1054B0006802817F8E7F8093680281E0809377020B\r
+:1054C00008950E948C1E2FEF83ED90E321508040C1\r
+:1054D0009040E1F700C000000E941F2552C080915B\r
+:1054E000680280FF03C0817F8E7F01C0816080934E\r
+:1054F000680247C09091680291FB882780F921E0FB\r
+:10550000822780FB91F913C09091680292FB882753\r
+:1055100080F921E0822780FB92F909C0909168020E\r
+:1055200093FB882780F921E0822780FB93F99093F1\r
+:105530006802882331F191609093680222C081E86B\r
+:1055400090E00E9480182FEF81EE94E0215080407F\r
+:105550009040E1F700C0000080E090E00E948018D9\r
+:105560002FEF89E698E1215080409040E1F700C09C\r
+:10557000000007C080E003C08D5101C089530E9424\r
+:10558000ED2981E0089580E0089580E00895CF93AB\r
+:10559000C82F80917702813071F020F0823009F0BD\r
+:1055A00083C037C0A0911B01B0911C018C91823245\r
+:1055B00009F07CC007C0A0911B01B0911C018C9127\r
+:1055C000823249F48C2F0E94C32A81111EC08C2F75\r
+:1055D0000E94FE291CC08C2F0E94C52A811115C073\r
+:1055E000C43169F030F4CB3081F0C03109F062C0D1\r
+:1055F00009C0C93221F0C83309F05CC006C010925E\r
+:10560000770258C082E08093770281E090E0817059\r
+:1056100054C0C932C1F060F4C431A9F020F4C730DD\r
+:1056200009F046C02EC0CE51CA3008F041C011C0AA\r
+:10563000CE3409F118F4CB34D9F517C0C13599F03F\r
+:10564000C235B1F50EC010927A0281E080937702E4\r
+:1056500034C0EC2FF0E0E455FE4F808180937A0255\r
+:1056600027C061E003C061E007C06AE080917A0270\r
+:105670000E9424291DC06AE080917A020E949B2921\r
+:1056800017C08EE18093220182E3809321018AE09A\r
+:105690008093200184E180931F0188E080931E01A4\r
+:1056A00088E280931D0104C01092770280E005C05B\r
+:1056B00081E003C080E090E0AACFCF9108950E94DE\r
+:1056C000CD26811102C00E94AE260E94F32680934F\r
+:1056D000770380FF02C0869501C080E00C94DF074D\r
+:1056E00080917703982F9695292F30E0233031054C\r
+:1056F0004CF49F5F990F8170892B816080937703B1\r
+:105700000E94F7268091770386950C94DF0780919D\r
+:105710007703982F969591F09158990F8170892B66\r
+:10572000809377038E7F91E009F490E08091770376\r
+:1057300090FB80F9809377030E94F726809177038E\r
+:1057400086950C94DF0780917703982F909590FBB6\r
+:1057500080F9809377030E94F7268091770380FF7A\r
+:1057600002C0869501C080E00C94DF07309177037A\r
+:10577000232F26952F5F2F77822F90E0317004978B\r
+:105780002CF4220F232B2093770302C0309377034E\r
+:1057900080917703282F2E7F91E009F490E090FB11\r
+:1057A00080F9809377030E94F7268091770386958E\r
+:1057B0000C94DF0720917703922F96959827990FE5\r
+:1057C000822F8170892B809377038E7F91E009F47B\r
+:1057D00090E08091770390FB80F9809377030E949B\r
+:1057E000F7268091770386950C94DF075058BB27E6\r
+:1057F000AA270ED075C166D130F06BD120F031F4FC\r
+:105800009F3F11F41EF45BC10EF4E095E7FB51C11C\r
+:10581000E92F77D180F3BA176207730784079507DA\r
+:1058200018F071F49EF58FC10EF4E0950B2EBA2F8F\r
+:10583000A02D0B01B90190010C01CA01A001112496\r
+:10584000FF27591B99F0593F50F4503E68F11A1642\r
+:10585000F040A22F232F342F4427585FF3CF4695D3\r
+:1058600037952795A795F0405395C9F77EF41F16F5\r
+:10587000BA0B620B730B840BBAF09150A1F0FF0FBF\r
+:10588000BB1F661F771F881FC2F70EC0BA0F621FAB\r
+:10589000731F841F48F4879577956795B795F7959B\r
+:1058A0009E3F08F0B3CF9395880F08F09927EE0F2D\r
+:1058B000979587950895D9D008F481E008950CD084\r
+:1058C0000FC107D140F0FED030F021F45F3F19F056\r
+:1058D000F0C0511139C1F3C014D198F39923C9F321\r
+:1058E0005523B1F3951B550BBB27AA2762177307E6\r
+:1058F000840738F09F5F5F4F220F331F441FAA1F9A\r
+:10590000A9F333D00E2E3AF0E0E830D09150504059\r
+:10591000E695001CCAF729D0FE2F27D0660F771F07\r
+:10592000881FBB1F261737074807AB07B0E809F0E9\r
+:10593000BB0B802DBF01FF2793585F4F2AF09E3F7E\r
+:10594000510568F0B6C000C15F3FECF3983EDCF350\r
+:10595000869577956795B795F7959F5FC9F7880FF7\r
+:10596000911D9695879597F90895E1E0660F771F49\r
+:10597000881FBB1F621773078407BA0720F0621BDA\r
+:10598000730B840BBA0BEE1F88F7E095089504D0D3\r
+:105990006894B111D9C00895BCD088F09F5790F099\r
+:1059A000B92F9927B751A0F0D1F0660F771F881F44\r
+:1059B000991F1AF0BA95C9F712C0B13081F0C3D05F\r
+:1059C000B1E00895C0C0672F782F8827B85F39F0FD\r
+:1059D000B93FCCF3869577956795B395D9F73EF4A3\r
+:1059E00090958095709561957F4F8F4F9F4F08954B\r
+:1059F000E89409C097FB3EF4909580957095619569\r
+:105A00007F4F8F4F9F4F9923A9F0F92F96E9BB271E\r
+:105A10009395F695879577956795B795F111F8CF9A\r
+:105A2000FAF4BB0F11F460FF1BC06F5F7F4F8F4F05\r
+:105A30009F4F16C0882311F096E911C0772321F0FB\r
+:105A40009EE8872F762F05C0662371F096E8862F93\r
+:105A500070E060E02AF09A95660F771F881FDAF7EA\r
+:105A6000880F9695879597F90895990F0008550F17\r
+:105A7000AA0BE0E8FEEF16161706E807F907C0F0D4\r
+:105A800012161306E407F50798F0621B730B840BDC\r
+:105A9000950B39F40A2661F0232B242B252B21F4B6\r
+:105AA00008950A2609F4A140A6958FEF811D811D56\r
+:105AB000089597F99F6780E870E060E008959FEF90\r
+:105AC00080EC089500240A94161617061806090695\r
+:105AD000089500240A941216130614060506089564\r
+:105AE000092E0394000C11F4882352F0BB0F40F4EC\r
+:105AF000BF2B11F460FF04C06F5F7F4F8F4F9F4F2C\r
+:105B0000089557FD9058440F551F59F05F3F71F0AD\r
+:105B10004795880F97FB991F61F09F3F79F0879514\r
+:105B20000895121613061406551FF2CF4695F1DF9D\r
+:105B300008C0161617061806991FF1CF869571052D\r
+:105B4000610508940895E894BB2766277727CB0161\r
+:105B500097F908958ADF08F48FEF08950BD0C0CF2E\r
+:105B6000B1DF28F0B6DF18F0952309F0A2CFA7CF58\r
+:105B70001124EACFC6DFA0F3959FD1F3950F50E033\r
+:105B8000551F629FF001729FBB27F00DB11D639FEF\r
+:105B9000AA27F00DB11DAA1F649F6627B00DA11D95\r
+:105BA000661F829F2227B00DA11D621F739FB00D3B\r
+:105BB000A11D621F839FA00D611D221F749F3327AB\r
+:105BC000A00D611D231F849F600D211D822F762F44\r
+:105BD0006A2F11249F5750408AF0E1F088234AF041\r
+:105BE000EE0FFF1FBB1F661F771F881F915050408D\r
+:105BF000A9F79E3F510570F05CCFA6CF5F3FECF355\r
+:105C0000983EDCF3869577956795B795F795E79578\r
+:105C10009F5FC1F7FE2B880F911D9695879597F989\r
+:105C20000895FA01EE0FFF1F30962105310599F115\r
+:105C30006115710561F48038BFE39B0749F16894F1\r
+:105C40009038810561F08038BFEF9B0741F09923C0\r
+:105C500042F5FF3FE1053105210511F1E894089473\r
+:105C6000E795D901AA2329F4AB2FBE2FF85FD0F313\r
+:105C700010C0FF5F70F4A695E0F7F73950F019F007\r
+:105C8000FF3A38F49F779F930CD00F9007FC905801\r
+:105C900008953EF014CF60E070E080E89FE308953F\r
+:105CA0004FE79F775F934F933F932F939ED02F9112\r
+:105CB0003F914F915F9152DF05C019F40EF0F9CE7C\r
+:105CC00042CFFDCE26DFC8F39638C0F707F80F9213\r
+:105CD000E8942BE33AEA48EB5FE74EDF0F920F922E\r
+:105CE0000F924DB75EB70F92C0D0ECEAF0E016D03D\r
+:105CF0004F915F91EF91FF91E595EE1FFF1F49F0E6\r
+:105D0000FE57E0684427EE0F441FFA95E1F74195EE\r
+:105D1000550B32D00F9007FE26C00895DF93CF9326\r
+:105D20001F930F93FF92EF92DF927B018C01689497\r
+:105D300005C0DA2EEF011EDFFE01E894A591259142\r
+:105D4000359145915591AEF3EF0162DDFE0197016A\r
+:105D5000A801DA9479F7DF90EF90FF900F911F91EF\r
+:105D6000CF91DF9108959B01AC0160E070E080E885\r
+:105D70009FE3A5CD9ECEACC0CCDEE8F39923D9F34A\r
+:105D8000940F511DBBF39150504094F059F088236B\r
+:105D900032F0660F771F881F91505040C1F79E3F29\r
+:105DA000510544F7880F911D9695879597F90895A9\r
+:105DB0005F3FACF0983E9CF0BB2786957795679542\r
+:105DC000B79508F4B1609395C1F7BB0F58F711F47C\r
+:105DD00060FFE8CF6F5F7F4F8F4F9F4FE3CFB4CE11\r
+:105DE0000EF076C06CCE689464CE93DEC8F399232F\r
+:105DF000D1F3C6F3DF93CF931F930F93FF92C92F75\r
+:105E0000DD2788232AF02197660F771F881FDAF78E\r
+:105E100020E030E040E85FEB9FE3883920F0803EEF\r
+:105E200030F021968F77E3DCE4EDF0E003C0DFDCB7\r
+:105E3000E1E0F1E073DF8B01BE01EC01FB2E6F5757\r
+:105E400071097595771F880B990BD4DD28E132E72E\r
+:105E500041E35FE38FDEAF2D9801AE01FF900F911C\r
+:105E60001F91CF91DF91D4DC3BCEFA01DC01AA0F68\r
+:105E7000BB1F9B01AC01BF5728F4222733274427BF\r
+:105E800050781FC0B75188F4AB2F00244695379542\r
+:105E90002795011CA395D2F3002069F0220F331F30\r
+:105EA000441FB395DAF30DD0A1CC61307105A0E8A1\r
+:105EB0008A07B94630F49B01AC016627772788270B\r
+:105EC0009078309621F02083318342835383089564\r
+:105ED0009F3F31F0915020F4879577956795B7955E\r
+:105EE000880F911D9695879597F90895AA1BBB1B5E\r
+:105EF00051E107C0AA1FBB1FA617B70710F0A61BCA\r
+:105F0000B70B881F991F5A95A9F780959095BC01EA\r
+:105F1000CD01089597FB072E16F4009407D077FD66\r
+:105F200009D00E94762F07FC05D03EF4909581950C\r
+:105F30009F4F0895709561957F4F0895F999FECF11\r
+:105F400092BD81BDF89A992780B50895A8E1B0E087\r
+:105F500042E050E00C94C12F262FF999FECF1FBAD2\r
+:105F600092BD81BD20BD0FB6F894FA9AF99A0FBE82\r
+:105F7000019608950E94AC2F272F0C94AD2FDC01C1\r
+:105F8000CB01FC01F999FECF06C0F2BDE1BDF89A44\r
+:105F9000319600B40D9241505040B8F70895F894EE\r
+:025FA000FFCF31\r
+:105FA2000507000C058540000001064000000100C5\r
+:105FB200D80B680C440C0F0CDB0B01600228081490\r
+:105FC2000A321E40004500250026006100600020C4\r
+:105FD2000037006400650066006700440046002444\r
+:105FE2000047000000020004000500070009000B42\r
+:105FF200000C000E0010001100130015001700180D\r
+:10600200001A001C001D001F00210023002400268E\r
+:1060120000280029002B002D002F00300032003410\r
+:10602200003500370039003B008803A103BA03D3CF\r
+:1060320003FB04AE04780458043F4D3620020302E9\r
+:10604200000001000101010101000101010203043C\r
+:0660520005060708090025\r
+:00000001FF\r
--- /dev/null
+:020000020000FC\r
+:047000000C948D3E21\r
+:047028000C94B73DD0\r
+:10702F0012010002FF010020EB03F42F0000010208\r
+:10703F00030109021200010100803209040000005F\r
+:10704F00000000000C03410054004D0045004C00AF\r
+:10705F001603410054006D00330032005500340018\r
+:10706F004400460055000C0331002E0030002E0066\r
+:10707F0030000403090416010C0100000C0000018C\r
+:02708F006C7F14\r
+:1070920012BD01BDF89A00B5089501E00895F9996D\r
+:1070A200FECF12BD01BD20BDFA9AF99AF6CFF99929\r
+:1070B200FECF0C944938F80104910895F8013491F7\r
+:1070C20031962491890108950091610000930C0189\r
+:1070D20000E80093610001E00093610005BF02E057\r
+:1070E20005BF0C9486380091D70001600093D70049\r
+:1070F200A89507EF04BF0091600000610093600053\r
+:1071020000E00093600001E008950E94AA3D0E9401\r
+:10711200B53DFDCF0CD00F7708D0006806D00061D6\r
+:1071220004D0016028D0789408950093D80000918B\r
+:10713200D8000895FCDF00621ED04CD009B500FFD4\r
+:10714200FDCFF5DF0F7D17D00091E0000E7F009399\r
+:10715200E0000091E000077F0093E0000091E20070\r
+:1071620001600093E2000091E20008600093E200F7\r
+:1071720078940C94743B0093D800089500910D010B\r
+:10718200002359F40091D90000FF07C0D0DF006846\r
+:10719200F2DF01E000930D01CDDFE0E2F2E00081D9\r
+:1071A200018100FF0DC0008111811E7F11830083C8\r
+:1071B20001E00093EA0000E00093EA0000931E025F\r
+:1071C20000E00093E9000091E80003FF02C00E9482\r
+:1071D200F23B0895A89539D000E40093600000E0E6\r
+:1071E200009381000093800010E0009385000093DB\r
+:1071F200840001E006BB00918100036000938100DE\r
+:107202000091600007FFFCCF00E80093600010933C\r
+:107212008100A89507EF04BF18D010936000209159\r
+:1072220084003091850010938100109380001093A8\r
+:1072320085001093840001E006BB2D3D354010F01F\r
+:1072420002E101C002E009BD089500916000006101\r
+:107252000093600008950E94AD3E239741D100E063\r
+:1072620000930901B5D104811581012B51F437D165\r
+:1072720000910701002309F4B9C000E0009307015F\r
+:10728200B5C058D102FFFDCF37D1068335D1009367\r
+:107292000F0132D1009310012FD1009311012CD193\r
+:1072A2000093120129D10093130102852091130149\r
+:1072B20030911201409111015091100116811A95DD\r
+:1072C20041F01250A9F01A9599F11A9509F473C078\r
+:1072D2008BC010910F01113011F411E001C010E0C8\r
+:1072E200138799D00C3F11F414D17FC077D17DC0A0\r
+:1072F20092D010910F01112329F01A9549F01A9595\r
+:10730200A9F073C010E013870C3F09F06EC0ECCFF8\r
+:1073120056D103C04CD109F468C00D911C9144D1DF\r
+:107322000F3FC1F305E0009309015FC011E0EBCF0D\r
+:10733200D2D029F00250E1F10A9541F056C0FDD0B9\r
+:107342000E94A33F0FEF00930A014FC0552319F08B\r
+:107352005A9579F04AC04ED00DEF04BF74D0EAD0EE\r
+:1073620003FFFDCF67D051D04AD008E00093600000\r
+:10737200FFCF40D068D0DED003FFFDCF5BD03FD03F\r
+:1073820044D00FEF1FE004C009811A810150104060\r
+:1073920009831A8309811A81012BB1F700E800934E\r
+:1073A200610000910C01009361000C940000FFCF7A\r
+:1073B20001E003871AC08FD019F00A9539F015C081\r
+:1073C200535098F4BAD002E000870FC0505339F0FE\r
+:1073D2005A9541F05F52B1F35A95A1F306C002E00B\r
+:1073E2000883F0CF01E0FCCFA8D079D02396E4E067\r
+:1073F2000C94BA3E01E005BF00E005BF089500917C\r
+:10740200D8000F770093D800089509B50D7F09BD04\r
+:1074120000E009BD08955183408333832283109194\r
+:10742200E8001B7F1093E8001091E8001F7710938B\r
+:10743200E80008955DD053D0F8940091E000016017\r
+:107442000093E000089579D04AC0219749D0009175\r
+:107452000601035019F00250B9F00BC03CD021F0E4\r
+:107462000A9559F00A9529F400910A010C3F19F482\r
+:1074720050D02196089567D0FCCF0091010100936E\r
+:10748200F100009100010AC01091100124D019F0FE\r
+:107492000A9549F0EECF135018F400E00093F10082\r
+:1074A2001ED044D0E6CF105339F01A9539F01F524E\r
+:1074B20041F01A9541F0F4CF08E5F0CF00E006D094\r
+:1074C200EDCF02E0FCCF04E001D0E8CF10E020E0F5\r
+:1074D20030E00C94113F00910F010023089521C068\r
+:1074E2000BD008D007D00093040106D00093050109\r
+:1074F20021D00BC000D008830091F10008950091C3\r
+:10750200EB0000620093EB0015D0077F0093E800C8\r
+:107512000895F5DF02E00093080103E000930901FA\r
+:10752200089559D007D000FFFDCF089503D002FF80\r
+:10753200FDCF03C00091E8000895FCDF0B7FE6DF7A\r
+:10754200F9DF0F77E3CF0E94AC3E42D038D006C0BD\r
+:107552002BD00093F1002BD059F43DD0082F092BEA\r
+:10756200A9F0E8DF02FD12C0E5DF00FFFDCF4424F1\r
+:10757200042D4394003289F300910B0100230D91F5\r
+:107582001C9131F311970E945838E3CFD3DF00FFEB\r
+:10759200FDCF21D0CFDF00FFFDCFCCDF02FFFDCF3B\r
+:1075A200CCDFE5E00C94B93E11970C945C380D9158\r
+:1075B2001C910F5F1F4F1C930E93019708958281B8\r
+:1075C200938100811181801B910B0196DF01089547\r
+:1075D200E0E0F1E00895AEDF0E7F98CF0E94A93E71\r
+:1075E200F7DF80819181A081B181AF710481158122\r
+:1075F20000521040048315830AC000910B0100233E\r
+:1076020031F4A301920103E911E00E943B3F47D00C\r
+:10761200B8F1662477242C0111C06EDFF301ED5618\r
+:10762200FE4F008301E0600E00E0701E01960091A3\r
+:10763200F200002311F033D0B8F47FDF30D0E8F24B\r
+:10764200F301B096E238F040C0F674DF02FFFDCFDE\r
+:107652000091F200BDDF24813581201B304024835C\r
+:107662003583E5CF49DFAA95AA23E1F700910B0103\r
+:10767200013099F62091F1008C010E945038D6CF4A\r
+:1076820004811581012B21F055DF02FFFDCF55DF6B\r
+:10769200A2DF50DF00FFFDCFE8E00C94B63EE0E051\r
+:1076A200F1E0028113810817190708952091EB0078\r
+:1076B20021602093EB000093EC000091ED0002703A\r
+:1076C200012B0093ED000091ED0002600093ED00AC\r
+:1076D2001091EE00012F000F00E0001F0895412FCE\r
+:1076E2000093E900089500E009D000FD05C000E024\r
+:1076F200F7DF10E202E0DACF00E00895F1DF009157\r
+:10770200EB0008950F770132A9F5112369F11A955B\r
+:1077120059F01A9561F01A9569F01A95F9F01A95CF\r
+:10772200C1F01A95D9F024C00E942C3920C00E94C1\r
+:10773200263A1DC029D00091090123D001E01FD0B3\r
+:1077420020D0009108011BD00E94923A0E94973AE1\r
+:107752000EC01AD00091080114D007C002E00093B5\r
+:10776200080100E0009309010FD00E94923A03C081\r
+:107772000E94803A02C001E0089500E0089501D01D\r
+:1077820000E00093F10008950091E800077F009364\r
+:10779200E800089508950350F9F4112339F01A9579\r
+:1077A20051F01A9581F01A9599F016C004E016D09E\r
+:1077B20001E810E703C011D003E510E7E7E1F2E0CA\r
+:1077C20000831183D8CF06E109D00FE510E7F6CF89\r
+:1077D20004D005E710E7F2CFD0CF0CE000931A02F5\r
+:1077E200089527D120D100931D02E1D0212F11232A\r
+:1077F20029F12A95E9F02250F1F0225099F02A95C8\r
+:1078020049F0225061F02A9581F02A95E1F02A95FB\r
+:10781200E9F023C0003809F44FC00C94833B0038D0\r
+:10782200E1F7C8C00023C9F71EC00023B1F72DC07D\r
+:10783200033098F744C1033080F70BC1003868F376\r
+:10784200033858F7C9C0013841F77BC1013051F400\r
+:10785200FCD0BFD000FD06C0FCCF0E94833B0023BA\r
+:1078620009F41ED008951091E3001078DCD00F7750\r
+:10787200012B0093E300E9D0ACD000FFFDCF0091D3\r
+:10788200E30000680093E300089591D0123040F4C1\r
+:107892000FD010931E02DAD000911E020C94CB3B43\r
+:1078A2000091EB0001D004C000620093EB00089548\r
+:1078B2000091E800077FC0C0BA93AA93229700E024\r
+:1078C2000093190274D0AFD0202F2A9519F02A956F\r
+:1078D200E9F022C002E100931A020FE210E7E7E1A9\r
+:1078E200F2E0008311839DD008839DD00983E0DFFD\r
+:1078F20000911A0210E02881398102171307A8F4B7\r
+:107902000F7181F401E00093190211C002E10093AA\r
+:107912001A0201E410E7E3CF0E94CC3B002319F7DF\r
+:107922008ED040C01093190202C020931A027ED05A\r
+:10793200A7E1B2E001C08AD000911A02002309F146\r
+:1079420048D004FD1EC045D000FD03C042D004FF54\r
+:10795200FACF10E0012F1395003281F0ED91FC91E6\r
+:107962001197049133D02D913C912F5F3F4F3C935F\r
+:107972002E93FD0103810A95038361F72AD004FF48\r
+:10798200DACF00911902013039F423D004FD04C08A\r
+:1079920020D000FFFDCF5AD01CD004FFFDCF46D02F\r
+:1079A20018D00B7F49D02296A991B99108951091D0\r
+:1079B200F10008957DDF00911E0208D047D009D062\r
+:1079C2000F773AD006D002FFFDCFBFC00093F1007F\r
+:1079D20008950091E800089524D010911D021058D6\r
+:1079E20029F01A9589F01A9591F019C061DF00917A\r
+:1079F2001C02ECDF00E0EADF29D0EBDF02FFFDCF63\r
+:107A020018D0E7DF0F770CC053DF00E0F2CF51D080\r
+:107A12000F7710E0F801E55EFD4F0081EACF0FD04D\r
+:107A22000BC001D000D00091F1000895D2DF0F7E8B\r
+:107A320003C00091E8000B7F0093E80008950091D5\r
+:107A4200EB0032DFC6DF077F089532DFC2DF0E7F31\r
+:107A5200F3CF00911D02002329F00A9509F10A953E\r
+:107A620031F01EC0E0DF0A9561D0D9F41AC061D0AE\r
+:107A7200B9F4D9DF0F7711F416D01BD00093E900C7\r
+:107A82001091EB0010FF0BC00ED010E01093E90034\r
+:107A920021E0F801E55EFD4F20834FD003C042D0C4\r
+:107AA20045D0CFDFC9CF1091EB0010621093EB00ED\r
+:107AB20008951091E800177F1093E800089500914F\r
+:107AC2001D02002311F4AFDF02C0013011F4B7DF51\r
+:107AD200B3CF023031F52DD019F52091F1002F7777\r
+:107AE2002093E90023D000FF19C081F01FD000616C\r
+:107AF200DCDE01E010E0422F0E949F3E0093EA008C\r
+:107B020000E00093EA0012D00860CFDE0BD030E034\r
+:107B1200F901E55EFD4F008310D0DACF03D0D7CF55\r
+:107B2200BFDE089500E00093E90008950091EB00A4\r
+:107B3200089579DF3CDF00230895BADE4ADF0E7F25\r
+:107B4200089583DF46DF02FFFDCF73DF42DF0F7749\r
+:107B520073CF0091D70001600093D7000E948B3849\r
+:107B620000E000931F0208950C94BF388A93FA93A1\r
+:107B7200EA933A922A921A920A927A936A935A93BF\r
+:107B82004A933A932A931A930A938FB70091DA0091\r
+:107B920000FF24C00091D80000FF20C00EEF009328\r
+:107BA200DA000091D90000FF11C001E000930D013D\r
+:107BB200ABD0026096D09AD00860A2D00E949B38C7\r
+:107BC2000091E0000E7F0093E00008C000E0009307\r
+:107BD2000D0100931E0298D0046083D07FD002FF73\r
+:107BE20005C084D002FF02C00BEF75D077D000FF32\r
+:107BF2001BC07CD000FF18C001E000930E016AD0C8\r
+:107C020083D000626ED00EEF6FD0006179D06ED05B\r
+:107C12000F7D76D00091D80000620093D80009B59C\r
+:107C22000D7F09BD00E009BD59D004FF20C05ED020\r
+:107C320004FF1DC009B500FD05C00E94EB3809B55F\r
+:107C420000FFFDCF0091D8000F7D0093D80042D0F5\r
+:107C520000910E01002359F04CD00FEE45D00F7E5B\r
+:107C620052D000643ED042D001604AD042D036D0D9\r
+:107C720005FF0FC03BD005FF0CC000E000930E01D2\r
+:107C820035D00F7E3DD00FED2FD00F7D3CD0006858\r
+:107C920028D024D003FF0DC029D003FF0AC000E082\r
+:107CA20000931F0207EF17D00E94743B2DD0116082\r
+:107CB20018D08FBF09911991299139914991599100\r
+:107CC200699179910990199029903990E991F991E6\r
+:107CD200899118950FEE0093E10008950091E1005B\r
+:107CE20008951183008308950093E1000091E2005A\r
+:107CF20008950091E200006203D00091E200086062\r
+:107D02000093E2000895FCDFE0E2F2E000811181DD\r
+:107D1200089500008895FECF01E60DBF02E00EBF78\r
+:107D2200C2EED2E00E947438002311F00E94D33ECA\r
+:107D32000E9465380E948A3E0C948A3E4A951AF047\r
+:107D4200000F111FFBCF0895BA92AA929A928A92BB\r
+:107D52007A926A925A924A92BA93AA939A938A937D\r
+:107D62000895BB84AA84998488847F806E805D8014\r
+:107D72004C80BB81AA8199818881F0E00FB6F8948A\r
+:107D8200CE0FDF1F0FBE089520E006D0E9F7089559\r
+:107D9200259102D0E9F708952D9301501040202F2C\r
+:107DA200212B089585E890E7FC0105911491FC01CF\r
+:107DB2003296A591B491FC01349625913491422FCB\r
+:107DC200432B19F0F901E4DF01C0DEDF069610E76C\r
+:107DD2008139910748F308952F930CD02F9101D048\r
+:107DE20008953CD0F12FE02F45E047BFE89536D00B\r
+:107DF20012D0089533D0F12FE02F43E047BFE8952A\r
+:107E02002DD008952BD0F12FE02F43E047BFE89506\r
+:107E120025D001D0089522D041E147BFE8951EC088\r
+:107E22001DD0F12FE02F41E247BFC895002D16C0AB\r
+:107E320015D0F12FE02F49E047BFC895002D0EC0A5\r
+:107E4200F32FE22F012E102E41E047BFE89506C026\r
+:107E520005D0002E29E027BFE89500C0022E27B7E3\r
+:107E620020FDFCCF202D0895022E27B726FDFCCF42\r
+:107E7200202D08950E94A53E22974801C901DA01EA\r
+:107E820010C05BD001E0A00E00E0B01E00E4A0161E\r
+:107E920000E0B00608F440C0830120E030E00E9418\r
+:107EA200F23E0A2F0B2B09F440C0082F0F7710E087\r
+:107EB2002C01401A510A320100E4A02E03C00A2FFD\r
+:107EC2000B2BE1F04816590680F0F40101914F01A5\r
+:107ED2000983119729F001914F010883119711C06D\r
+:107EE200F2013196049108830CC0F20104910983D6\r
+:107EF2003196E817F907A1F7F401EDCF1BD00883FB\r
+:107F020019839201088119810E94213F16D0AA94F7\r
+:107F1200B1F62301AA24BB240DD0312F0F3F3F4FCE\r
+:107F220009F4AFCF83011DD0B7CF01E02296ECE078\r
+:107F32000C94B23E82010C945F3802E0400E00E0E5\r
+:107F4200501E08959A938A9380E090E08C0109D0A4\r
+:107F520080589F4F8F3F0FE69007C0F38991999108\r
+:107F6200089520E030E00C94FB3E00000000000089\r
+:067F720000000000FC000D\r
+:107FE4000C94ED3E0C94113F0C94193F0C94213FDA\r
+:0C7FF4000C94F23E0C94033F0C94293FC7\r
+:040000030000700089\r
+:100000000C949D020C94E1020C94E1020C94E10228\r
+:100010000C94E1020C94E1020C94E1020C94E102D4\r
+:100020000C94E1020C94E1020C941C120C94EE125C\r
+:100030000C948D240C94E1020C94E1020C94E102E6\r
+:100040000C94E1020C94E1020C94E1020C94E102A4\r
+:100050000C94E1020C94FA240C94E1020C94E10259\r
+:100060000C94E1020C94E1020C94E1020C94E10284\r
+:100070000C94E1020C94E1020C94E1020C94E10274\r
+:100080000C94860A0C94E1020C94E1020C94E102B7\r
+:100090000C94E1020C94E1020C94E1020C94E10254\r
+:1000A0000C94E1020C94E1020C94E10207634236E5\r
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9\r
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD\r
+:1000D0000000803F08000000BE922449123EABAAF7\r
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52\r
+:1000F000AA3E00000000BF000000803F000000009A\r
+:1001000000084178D3BB4387D1133D190E3CC3BDD2\r
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F\r
+:1001200080EFFFBE01C4FF7F3F0000000000000021\r
+:10013000F1A4F1A3018C028C048C2B0014001A0092\r
+:100140000800150017001C0018000C001200130016\r
+:100150002A00290004001600070009000A000B000D\r
+:100160000D000E000F0033003400E1001D001B00E5\r
+:100170000600190005001100100036003700380095\r
+:1001800028000030E000E200E30002202C002C00F8\r
+:1001900001205000510052004F002B0014001A00A3\r
+:1001A000090013000A000D000F0018001C003300A6\r
+:1001B0002A002900040015001600170007000B0094\r
+:1001C000110008000C0012003400E1001D001B00AB\r
+:1001D0000600190005000E00100036003700380038\r
+:1001E00028000030E000E200E30002202C002C0098\r
+:1001F00001205000510052004F002B003400360007\r
+:10020000370013001C0009000A00060015000F004B\r
+:100210002A00290004001200080018000C00070042\r
+:100220000B001700110016003800E1003300140025\r
+:100230000D000E001B00050010001A0019001D0023\r
+:1002400028000030E000E200E30002202C002C0037\r
+:1002500001205000510052004F0035021E021F02C3\r
+:100260002002210222022302240225022602270262\r
+:100270002A0001003A003B003C003D003E003F00E8\r
+:100280002D022E022F0230023102010040004100F7\r
+:100290004200430044004500032004200520005094\r
+:1002A0000100010001000100010002200100010025\r
+:1002B0000100AB00AA00A900AE0035001E001F001F\r
+:1002C0002000210022002300240025002600270012\r
+:1002D0002A0001003A003B003C003D003E003F0088\r
+:1002E0002D002E002F0030003100010040004100A1\r
+:1002F0004200430044004500032004200520005034\r
+:1003000001000100010001000100010001000100E5\r
+:100310000120AB00AA00A900AE0028035400680029\r
+:100320006500200050006C0061006E0063006B00EF\r
+:1003300020004B006500790062006F0061007200D0\r
+:10034000640000002C034F007200740068006F000E\r
+:100350006C0069006E0065006100720020004B00B7\r
+:100360006500790062006F00610072006400730034\r
+:100370000000040309040902D000060100A03209AC\r
+:100380000400000103010100092111010001223FC5\r
+:10039000000705810308000A0904010001030102A6\r
+:1003A00000092111010001224D0007058203080008\r
+:1003B0000A090402000103000000092111010001E3\r
+:1003C0002236000705830308000A0904030002031C\r
+:1003D000000000092111010001222000070584030B\r
+:1003E00020000107050403200001090404000001A6\r
+:1003F00001000009240100010900010509040500AC\r
+:10040000020103000007240100014100062402014B\r
+:100410000100062402020200092403010301020173\r
+:10042000000924030204010101000905060240003D\r
+:1004300005000005250101010905850240000500B0\r
+:100440000005250101031201100100000008EDFE66\r
+:1004500060600100010200010631FF0974A1010979\r
+:1004600075150025FF952075088102097615002570\r
+:10047000FF952075089102C005010980A101850240\r
+:1004800016010026B7001A01002AB7007510950161\r
+:100490008100C0050C0901A1018503160100269CFD\r
+:1004A000021A01002A9C02751095018100C0050105\r
+:1004B0000902A1010901A100050919012905150079\r
+:1004C00025019505750181029501750381010501DD\r
+:1004D000093009311581257F950275088106093893\r
+:1004E0001581257F950175088106050C0A380215CE\r
+:1004F00081257F950175088106C0C005010906A107\r
+:1005000001050719E029E715002501950875018106\r
+:1005100002950175088101050819012905950575E0\r
+:100520000191029501750391010507190029FF1535\r
+:100530000025FF950675088100C011241FBECFEF6E\r
+:10054000DAE0DEBFCDBF04B603FE24C0809178039D\r
+:1005500090917903A0917A03B0917B038730904BFF\r
+:10056000A740B04BB9F4109278031092790310921F\r
+:100570007A0310927B0314BE84B7877F84BF88E11F\r
+:100580000FB6F89480936000109260000FBEE0E018\r
+:10059000F8E3099511E0A0E0B1E0E2EAFFE502C06E\r
+:1005A00005900D92A63BB107D9F713E0A6EBB1E099\r
+:1005B00001C01D92A837B107E1F70E94F90E0C9413\r
+:1005C000CF2F0C9400000895089561110DC0FC0117\r
+:1005D0008281882331F085EE0E949D190E94B62BFE\r
+:1005E00003C085EE0E94651A80E090E008958B3B81\r
+:1005F000910568F4883A910530F5853A9105C0F483\r
+:100600008430910598F4019709F06FC071C0803E65\r
+:10061000910508F46AC0883E910540F09C01205F76\r
+:1006200031092031310508F060C05CC09C01A1C0D7\r
+:10063000853A910509F45FC0863A910509F45EC0D8\r
+:1006400023E830E496C0883A910509F45AC0893A03\r
+:10065000910509F459C08A3A910509F458C08B3ABA\r
+:10066000910509F457C08C3A910509F456C08D3AAA\r
+:10067000910509F455C0803B910509F454C08E3AA8\r
+:10068000910509F453C08F3A910509F452C0813B9A\r
+:10069000910509F451C0823B910509F450C0833B98\r
+:1006A000910509F44FC0843B910509F44EC0853B88\r
+:1006B000910509F44DC0863B910509F44CC0873B78\r
+:1006C000910509F44BC0883B910509F44AC0893B68\r
+:1006D000910509F449C08A3B910509F048C02AE216\r
+:1006E00036E447C09C01306544C020E030E041C0A2\r
+:1006F00021E030E03EC021E830E43BC022E830E4B5\r
+:1007000038C022EE34E435C029EE34E432C02AEE9B\r
+:1007100034E42FC025EB34E42CC026EB34E429C0AC\r
+:1007200027EB34E426C02CEC34E423C02DEC34E475\r
+:1007300020C023E835E41DC02AE835E41AC022E9C8\r
+:1007400035E417C024E935E414C021E236E411C0D1\r
+:1007500023E236E40EC024E236E40BC025E236E4A0\r
+:1007600008C026E236E405C027E236E402C020E0F5\r
+:1007700034E4C90108959CE0799FF001112490E3CD\r
+:10078000899FE00DF11D1124E60FF11DEE0FFF1FF3\r
+:10079000E65CFE4F25913491C9010895880F991F99\r
+:1007A00082559040FC0125913491C9010895880F2C\r
+:1007B000991F825D9E4FFC0125913491C9010895D6\r
+:1007C0000E94BB039C013A9521153F4108F4DFC00C\r
+:1007D0009C0130522115304120F49F700E94D703B4\r
+:1007E00008959C0130532115304118F49927906CDD\r
+:1007F00008959C0130542031310520F48F709927E1\r
+:10080000946D0895803120E4920719F480E091ED11\r
+:100810000895813140E4940719F480E090ED089543\r
+:10082000823120E4920719F480E092ED089583313B\r
+:1008300040E4940719F480E093ED0895811520E5D4\r
+:10084000920711F40C941F25813040E5940731F490\r
+:100850008091680281608093680208959C013056FF\r
+:100860002115304108F402C097FF02C0906F08952F\r
+:10087000803E9105E0F4803C910568F58133910557\r
+:1008800009F474C048F48932910509F46AC08A32C7\r
+:10089000910509F07AC074C089339105F9F0823866\r
+:1008A0009105E1F08533910509F06FC050C0833E9A\r
+:1008B0009105A9F140F4803E9105C9F0823E910571\r
+:1008C00009F063C01BC0863E910571F1873E91051A\r
+:1008D00009F05BC037C00E94CE03089520917B02CF\r
+:1008E00020FD02C021FF51C080EE90E04EC08091FB\r
+:1008F0007B0280FFF9CF89E390E047C080917B02C3\r
+:1009000082FF0AC080917B0284FF03C080E090E0F8\r
+:100910003CC083EE90E039C082EE90E036C080911A\r
+:100920007B0282FFEFCFF8CF80917B0283FF07C06D\r
+:1009300080917B0284FDEACF87EE90E026C086EEB0\r
+:1009400090E023C080917B0283FFF2CFF8CF8091AB\r
+:100950007B0285FF03C089E290E017C085E390E049\r
+:1009600014C080917B0285FDF9CFF5CF80917B0289\r
+:1009700086FF03C08AE290E008C081E390E005C0F2\r
+:1009800080917B0286FDF9CFF5CF0E94F702089592\r
+:100990005F926F927F928F929F92AF92BF92CF920F\r
+:1009A000DF92EF92FF920F931F93CF93DF93CDB718\r
+:1009B000DEB728970FB6F894DEBF0FBECDBF9E01FD\r
+:1009C0002F5F3F4F4E0189E0880E911C60E070E080\r
+:1009D00000E010E0E12CF12CC12CD12CA12CB12C89\r
+:1009E00088E0782E622E532E41E050E0E3E2F1E001\r
+:1009F000A62DB52D872D01900D928A95E1F7F9016D\r
+:100A0000819191919F01FC01E07FFF27E032F10588\r
+:100A100059F48F709927FA0102C0EE0FFF1F8A95D3\r
+:100A2000E2F7AE2ABF2A37C0E033F10559F48F70E0\r
+:100A30009927FA0102C0EE0FFF1F8A95E2F7CE2A2E\r
+:100A4000DF2A29C0E034F10559F48F709927FA01A3\r
+:100A500002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0A5\r
+:100A6000E035F10559F48F709927FA0102C0EE0FB5\r
+:100A7000FF1F8A95E2F70E2B1F2B0DC0E036F10504\r
+:100A800051F48F709927FA0102C0EE0FFF1F8A956B\r
+:100A9000E2F76E2B7F2B2815390509F0A7CF94B10B\r
+:100AA0008A2D8095892384B985B18A2985B997B122\r
+:100AB0008C2D8095892387B988B18C2988B99AB102\r
+:100AC0008E2D809589238AB98BB18E298BB99DB1E2\r
+:100AD000802F809589238DB98EB1802B8EB990B3EC\r
+:100AE000862F8095892380BB81B3862B81BB289676\r
+:100AF0000FB6F894DEBF0FBECDBFDF91CF911F912F\r
+:100B00000F91FF90EF90DF90CF90BF90AF909F90AC\r
+:100B10008F907F906F905F9008955F926F927F9219\r
+:100B20008F929F92AF92BF92CF92DF92EF92FF92FD\r
+:100B30000F931F93CF93DF93CDB7DEB768970FB6B0\r
+:100B4000F894DEBF0FBECDBF85B7806885BF85B77F\r
+:100B5000806885BF0E94CF076E9A769A0E94C8046B\r
+:100B60009E012F5F3F4F4E0189E1880E911C60E08E\r
+:100B700070E000E010E0E12CF12CC12CD12CA12C74\r
+:100B8000B12C98E1792E622E532E41E050E0EBE239\r
+:100B9000F1E0A62DB52D872D01900D928A95E1F7F4\r
+:100BA000F901819191919F01FC01E07FFF27E032E3\r
+:100BB000F10559F48F709927FA0102C0EE0FFF1F5B\r
+:100BC0008A95E2F7AE2ABF2A37C0E033F10559F41F\r
+:100BD0008F709927FA0102C0EE0FFF1F8A95E2F786\r
+:100BE000CE2ADF2A29C0E034F10559F48F70992705\r
+:100BF000FA0102C0EE0FFF1F8A95E2F7EE2AFF2AE4\r
+:100C00001BC0E035F10559F48F709927FA0102C035\r
+:100C1000EE0FFF1F8A95E2F70E2B1F2B0DC0E0365B\r
+:100C2000F10551F48F709927FA0102C0EE0FFF1FF2\r
+:100C30008A95E2F76E2B7F2B2815390509F0A7CF8F\r
+:100C400094B18A2D8095892384B985B18A2985B983\r
+:100C500097B18C2D8095892387B988B18C2988B963\r
+:100C60009AB18E2D809589238AB98BB18E298BB943\r
+:100C70009DB1802F809589238DB98EB1802B8EB93F\r
+:100C800090B3862F8095892380BB81B3862B81BB4F\r
+:100C90001092B7011092B6011092BF011092BE01DE\r
+:100CA0001092B9011092B8011092C1011092C001C6\r
+:100CB0001092BB011092BA011092C3011092C201AE\r
+:100CC0001092BD011092BC011092C5011092C40196\r
+:100CD00068960FB6F894DEBF0FBECDBFDF91CF91FF\r
+:100CE0001F910F91FF90EF90DF90CF90BF90AF904A\r
+:100CF0009F908F907F906F905F9008955F926F921A\r
+:100D00007F928F929F92AF92BF92CF92DF92EF929B\r
+:100D1000FF920F931F93CF93DF93CDB7DEB7A097CA\r
+:100D20000FB6F894DEBF0FBECDBF7E0149E1E40EE1\r
+:100D3000F11C2EEBC22E21E0D22E5E0151E2A50E57\r
+:100D4000B11C38E0532E470101E010E048E1642E69\r
+:100D500055E0752EE3E2F1E0D401852D01900D926E\r
+:100D60008A95E1F7F701819191917F019C01207FA4\r
+:100D700033272032310589F424B18F709927A801D7\r
+:100D800002C0440F551F8A95E2F7CA01242B24B9EB\r
+:100D900095B18095892385B94FC02033310589F4F9\r
+:100DA00027B18F709927F80102C0EE0FFF1F8A95B7\r
+:100DB000E2F7CF012E2B27B998B18095892388B906\r
+:100DC0003BC02034310589F42AB18F709927A801DE\r
+:100DD00002C0440F551F8A95E2F7CA01242B2AB995\r
+:100DE0009BB1809589238BB927C02035310589F4C3\r
+:100DF0002DB18F709927F80102C0EE0FFF1F8A9561\r
+:100E0000E2F7CF012E2B2DB99EB1809589238EB9A3\r
+:100E100013C02036310581F420B38F709927A801C3\r
+:100E200002C0440F551F8A95E2F7CA01242B20BB4C\r
+:100E300091B38095892381BB50EA5A95F1F7BE01A1\r
+:100E40006F5F7F4F80E090E020E030E0EBE2F1E088\r
+:100E5000DE011196462D01900D924A95E1F7FB01B6\r
+:100E600041915191BF01FA01E07FFF27E032F10586\r
+:100E700011F4E3B113C0E033F10511F4E6B10EC093\r
+:100E8000E034F10511F4E9B109C0E035F10511F4E0\r
+:100E9000ECB104C0E036F105B9F4EFB1F0E04F7009\r
+:100EA000552702C0F595E7954A95E2F7E0FD08C0A1\r
+:100EB000A801022E02C0440F551F0A94E2F702C097\r
+:100EC00040E050E0842B952B2F5F3F4F2C303105B5\r
+:100ED00009F0BCCFF601208131812817390721F0B4\r
+:100EE00091838083709200010E94C804F2E0CF0ECB\r
+:100EF000D11CEA14FB0409F02DCF80910001882356\r
+:100F000061F1815080930001811121C08091BE0167\r
+:100F10009091BF019093B7018093B6018091C00179\r
+:100F20009091C1019093B9018093B8018091C20161\r
+:100F30009091C3019093BB018093BA018091C40149\r
+:100F40009091C5019093BD018093BC0106C08FE9CB\r
+:100F50009FE00197F1F700C0000081E0A0960FB676\r
+:100F6000F894DEBF0FBECDBFDF91CF911F910F91DF\r
+:100F7000FF90EF90DF90CF90BF90AF909F908F90B9\r
+:100F80007F906F905F900895E82FF0E0EE0FFF1FC5\r
+:100F9000EA54FE4F80819181089508950895279A1B\r
+:100FA0002F988FEF9FEF90938700809386008AE0C1\r
+:100FB0008093800089E1809381000C945F2B8111E4\r
+:100FC0000BC080918000877F8093800010928D00FD\r
+:100FD00010928C002F9808952F98833041F48091BF\r
+:100FE00080008860809380008FEF9FEF12C0909107\r
+:100FF000800098609093800023E030E0281B310946\r
+:10100000220F331F8FEF9FEF02C0969587952A9589\r
+:10101000E2F790938D0080938C0008950F931F93B7\r
+:10102000CF93DF93CDB7DEB7CC58D1090FB6F89484\r
+:10103000DEBF0FBECDBF8C01862F642F882379F0D1\r
+:10104000F80192812FE7482F992329F08DE792E04C\r
+:101050000E94F81404C08DE792E00E940815F80180\r
+:1010600080818B3061F49181933009F068C0828176\r
+:10107000882309F4CDC0809103018F5F0EC08A30B0\r
+:10108000E1F5F8019181933009F059C082818823FC\r
+:1010900009F4BEC08091030181508093030120E0D8\r
+:1010A0004BE760E08DE792E00E94E81420E04BE718\r
+:1010B00061E08DE792E00E94E81420E04BE762E0F7\r
+:1010C0008DE792E00E94E81420E04BE763E08DE7B3\r
+:1010D00092E00E94E81420E04BE764E08DE792E0A4\r
+:1010E000C457DF4F0FB6F894DEBF0FBECDBFDF9100\r
+:1010F000CF911F910F910C94E814893069F4F80195\r
+:1011000091819330E1F492819923C9F0809101019A\r
+:101110009091020101960EC0883089F4F801918106\r
+:10112000933069F49281992351F08091010190915B\r
+:10113000020101979093020180930101B0CFF80161\r
+:10114000928140910301992391F196E4E3E4F1E067\r
+:10115000DE01A95BBF4F01900D929A95E1F7405DCA\r
+:10116000F8019181FCE09F9F40191124E091010159\r
+:10117000F0910201E80FF11DEE0FFF1F87E490E0F0\r
+:101180008C0F9D1FE80FF91F8081480F2FE760E04B\r
+:101190008DE792E0C457DF4F0FB6F894DEBF0FBE65\r
+:1011A000CDBFDF91CF911F910F910C94F81496E46D\r
+:1011B000E3E4F1E0DE01119601900D929A95E1F7DA\r
+:1011C000405DF8019181FCE09F9F40191124E0915E\r
+:1011D0000101F0910201E80FF11DEE0FFF1F81E008\r
+:1011E00090E08C0F9D1FE80FF91F8081480F2FE7BB\r
+:1011F00060E08DE792E0C457DF4F0FB6F894DEBF92\r
+:101200000FBECDBFDF91CF911F910F910C940815A8\r
+:10121000C457DF4F0FB6F894DEBF0FBECDBFDF91CE\r
+:10122000CF911F910F910895CF93DF93EA019B0116\r
+:10123000AC0160E074E284E79BE40E945F2C0E94B2\r
+:10124000C72C709397006093960020E130E02C1B30\r
+:101250003D0B02C0759567952A95E2F7709399004A\r
+:1012600060939800DF91CF9108951092020210923E\r
+:10127000010210929000109291001092FD011092C4\r
+:10128000FE011092FF01109200021092FC011092D8\r
+:10129000FB01E9EDF1E0A9ECB1E01192119211929C\r
+:1012A00011921D921D9281E0E93FF807B1F7089570\r
+:1012B000AF92BF92CF92DF92EF92FF920F931F9364\r
+:1012C000CF93DF936B017C0109EF11E047EDA42E72\r
+:1012D00041E0B42EC7E0D0E0A7019601F801929159\r
+:1012E0008291729162918F010E945B2C882349F058\r
+:1012F0002197F2E0AF1AB108CF3F8FEFD80761F71F\r
+:1013000034C0F8011082118212821382F501118219\r
+:101310001082FE01EE0FFF1FEE0FFF1FE752FE4F80\r
+:10132000DE01AA0FBB1FA753BE4FCE011AC0019604\r
+:1013300044815581668177814083518362837383C1\r
+:10134000148215821682178212962D913C91139762\r
+:1013500011963C932E9313961C921E9212973496DC\r
+:1013600012968730910519F7C3CF809101029091B1\r
+:101370000202019797FD05C090930202809301023B\r
+:1013800004C01092020210920102E0910102F09159\r
+:101390000202309789F410929000109291001092FE\r
+:1013A000FD011092FE011092FF01109200021092B6\r
+:1013B000FC011092FB019EC03197DF01AA0FBB1FF9\r
+:1013C000AA0FBB1FA752BE4FCD90DD90ED90FC90B1\r
+:1013D000EE0FFF1FE753FE4FC081D181A090FD01AA\r
+:1013E000B090FE010091FF0110910002A70196014B\r
+:1013F0006A2D7B2D802F912F0E945B2C87FF2FC0A1\r
+:1014000081E08093C801AE016A2D7B2D802F912F42\r
+:101410000E9414092091FD013091FE014091FF01CD\r
+:1014200050910002C701B6010E94F62B20E030E087\r
+:101430004AEF53E40E945F2C9B01AC016A2D7B2D87\r
+:10144000802F912F0E94F72B5B018C01A701960141\r
+:101450007B2D912F0E945B2C1816ACF638C0A7018B\r
+:1014600096016A2D7B2D802F912F0E94AA2D181690\r
+:1014700084F581E08093C801AE016A2D7B2D802F19\r
+:10148000912F0E941409A70196016091FD017091AE\r
+:10149000FE018091FF01909100020E94F62B20E056\r
+:1014A00030E04AEF53E40E945F2C9B01AC016A2DAF\r
+:1014B0007B2D802F912F0E94F62B5B018C01A701C1\r
+:1014C00096017B2D912F0E94AA2D87FFD5CF1092D8\r
+:1014D000C801AE01C701B6010E941409C092FD0106\r
+:1014E000D092FE01E092FF01F0920002D093FC0145\r
+:1014F000C093FB01DF91CF911F910F91FF90EF906F\r
+:10150000DF90CF90BF90AF90089508951F920F92F3\r
+:101510000FB60F9211242F933F934F935F936F93C6\r
+:101520007F938F939F93AF93BF93EF93FF9380919C\r
+:10153000960090919700892B09F455C08091C801BD\r
+:10154000811151C08091F9019091FA01813091058A\r
+:1015500071F082309105C1F0892BC1F52091FD0118\r
+:101560003091FE014091FF01509100021DC0609139\r
+:10157000FD017091FE018091FF01909100029B019D\r
+:10158000AC010E94F72B0EC020E030E040E450E4B4\r
+:101590006091FD017091FE018091FF019091000228\r
+:1015A0000E94AE2D9B01AC0160E074E284E79BE4F5\r
+:1015B0000E945F2C0E94C72C709397006093960046\r
+:1015C0007595679570939900609398008091F901E3\r
+:1015D0009091FA01019663E070E00E948A2F909347\r
+:1015E000FA018093F901FF91EF91BF91AF919F9123\r
+:1015F0008F917F916F915F914F913F912F910F90BC\r
+:101600000FBE0F901F901895AF92BF92CF92DF92AE\r
+:10161000EF92FF920F931F93CF93DF936B017C01A7\r
+:10162000EA0120E030E0A9010E94AA2D18160CF072\r
+:10163000B4C03E9A82E8809390008AE18093910042\r
+:10164000A090FD01B090FE010091FF0110910002F9\r
+:1016500020E030E0A9016A2D7B2D802F912F0E9480\r
+:101660005B2C81112DC0AE01C701B6010E94140987\r
+:10167000C092FD01D092FE01E092FF01F0920002C3\r
+:10168000D093FC01C093FB01809101029091020272\r
+:10169000FC01EE0FFF1FEE0FFF1FE752FE4FC0824F\r
+:1016A000D182E282F382FC01EE0FFF1FE753FE4F6F\r
+:1016B000D183C083019690930202809301026DC092\r
+:1016C000A70196016A2D7B2D802F912F0E945B2C04\r
+:1016D00087FF2CC0AE016A2D7B2D802F912F0E9499\r
+:1016E00014092091FD013091FE014091FF015091BC\r
+:1016F0000002C701B6010E94F62B20E030E04AEF5D\r
+:1017000053E40E945F2C9B01AC016A2D7B2D802F3E\r
+:10171000912F0E94F72B5B018C01A70196017B2D75\r
+:10172000912F0E945B2C1816ACF69DCFA701960155\r
+:101730006A2D7B2D802F912F0E94AA2D18160CF058\r
+:1017400092CFAE016A2D7B2D802F912F0E9414091C\r
+:10175000A70196016091FD017091FE018091FF014A\r
+:10176000909100020E94F62B20E030E04AEF53E413\r
+:101770000E945F2C9B01AC016A2D7B2D802F912F45\r
+:101780000E94F62B5B018C01A70196017B2D912F06\r
+:101790000E94AA2D87FFD5CF66CFDF91CF911F91F1\r
+:1017A0000F91FF90EF90DF90CF90BF90AF90089592\r
+:1017B00080910C020895CF93DF9300D01F92CDB794\r
+:1017C000DEB720916E03243021F523E029839B832B\r
+:1017D0008A832093E9008FEF06C095ED9A95F1F783\r
+:1017E0000000882329F09091E800815095FFF5CF03\r
+:1017F0008091E80085FF0DC040E050E063E070E0BC\r
+:10180000CE0101960E94BA0F8091E8008E778093F6\r
+:10181000E8000F900F900F90DF91CF910895CF9334\r
+:10182000DF9300D01F92CDB7DEB720916E03243036\r
+:1018300029F522E029839B838A8383E08093E90052\r
+:101840008FEF06C095ED9A95F1F70000882329F0F7\r
+:101850009091E800815095FFF5CF8091E80085FFD9\r
+:101860000DC040E050E063E070E0CE0101960E94C0\r
+:10187000BA0F8091E8008E778093E8000F900F9068\r
+:101880000F90DF91CF91089520916E032430F9F4E9\r
+:1018900022E02093E9002FEF06C035ED3A95F1F7ED\r
+:1018A0000000222329F03091E800215035FFF5CFC8\r
+:1018B0002091E80025FF0BC040E050E065E070E0BB\r
+:1018C0000E94BA0F8091E8008E778093E800089517\r
+:1018D000CF93DF93EC0180916E03843041F581E07A\r
+:1018E0008093E9008FEF06C095ED9A95F1F700001F\r
+:1018F000882329F09091E800815095FFF5CF8091E1\r
+:10190000E80085FF14C040E050E068E070E0CE01E0\r
+:101910000E94BA0F8091E8008E778093E80088E0FB\r
+:10192000FE01A4E0B2E001900D928A95E1F7DF910B\r
+:10193000CF910895BF92CF92DF92EF92FF920F93D3\r
+:101940001F93CF93DF937C01B62EE90100E010E0F6\r
+:10195000C42ED12C0BC04991202F2B0D2F774F7700\r
+:101960006FE0C7010E94E8140F5F1F4F0C151D05A3\r
+:1019700094F3DF91CF911F910F91FF90EF90DF9043\r
+:10198000CF90BF90089570E06F5F7F4F6F707727A3\r
+:101990000C94E8140F931F93CF93C42F63307105F9\r
+:1019A00009F04AC0842F807F803849F1803909F0DE\r
+:1019B00043C0622F6F7770E080E090E00E94FA2CC5\r
+:1019C00020E030E040E451E40E945F2C9B01AC0138\r
+:1019D00060E070E080E090E40E94112E0F7710E04C\r
+:1019E00023E0159507952A95E1F72DEC3CEC42E0B4\r
+:1019F00053E40E94AE2DA8010E94040B1DC0622F6B\r
+:101A00006F7770E080E090E00E94FA2C20E030E0F8\r
+:101A100040E451E40E945F2C9B01AC0160E070E067\r
+:101A200080E090E40E94112E2DEC3CEC42E053E467\r
+:101A30000E94AE2D0E945809CC3F29F4CF911F91EE\r
+:101A40000F910C943509CF911F910F9108950F9329\r
+:101A50001F93CF93DF93CDB7DEB727970FB6F894D8\r
+:101A6000DEBF0FBECDBF8C0114C08A810E94C2149C\r
+:101A70009A819D839B819E839C819F8381111EC03F\r
+:101A800089818430B1F08730A1F08630A1F08530B3\r
+:101A9000A1F0BE016F5F7F4F84E091E00E942F189C\r
+:101AA0008111E3CF84E091E00E9420180E949B14F2\r
+:101AB0000DC083E003C082E001C081E0AE014B5F56\r
+:101AC0005F4F682FC8010E945515E3CF27960FB6C8\r
+:101AD000F894DEBF0FBECDBFDF91CF911F910F9164\r
+:101AE0000895EF92FF920F93CF93DF9300D000D031\r
+:101AF00000D0CDB7DEB77B014A832B830C83842FC4\r
+:101B00002E834D830E94C2142E814D8181111BC0F2\r
+:101B100082E0E816F10479F083E0E816F10421F0A0\r
+:101B2000EA94EF2821F50BC0073F11F487E001C0CC\r
+:101B300084E089830BC0273FD9F786E0FACF473F7F\r
+:101B4000B9F785E0F6CF42954F704983BE016F5FCC\r
+:101B50007F4F84E091E00E94E51784E091E00E94CD\r
+:101B6000031884E091E00E9420180E949B1426969E\r
+:101B70000FB6F894DEBF0FBECDBFDF91CF910F91AE\r
+:101B8000FF90EF90089580916D03811109C00E942C\r
+:101B9000A1110E94FE118091E20084608093E20016\r
+:101BA000089510926D03089508950C94E4020C9426\r
+:101BB000892480916E03843049F58091E9008F700B\r
+:101BC0009091EC0090FF02C090E801C090E0982B4B\r
+:101BD00084E08093E9008091EB0080FF14C0809145\r
+:101BE000EE0087FD03C00FC01092F1008091E80065\r
+:101BF00085FDFACF8091E80080FF05C08091E80064\r
+:101C00008E778093E8009F709093E900089542E0FA\r
+:101C100061EC81E00E94171142E061EC82E00E94D9\r
+:101C2000171142E061EC83E00E94171146E261EC7B\r
+:101C300084E00E94171142E361E885E00E941711D9\r
+:101C400042E360E886E00C941711809170038330C2\r
+:101C500009F454C030F4813071F0823009F0AAC028\r
+:101C600091C08A3009F47EC08B3009F45FC089309E\r
+:101C700009F0A0C020C080916F03813A09F09AC09A\r
+:101C80008091E800877F8093E800809173039091B2\r
+:101C90007403892B21F060E080E090E003C068E0ED\r
+:101CA00084E092E070E00E9458108091E8008B7709\r
+:101CB0008093E800089580916F03813209F07AC023\r
+:101CC0008091730390917403892B09F073C0809104\r
+:101CD000E800877F8093E80005C080916E03882329\r
+:101CE00009F468C08091E80082FFF7CF8091F1008D\r
+:101CF00080930C028091E8008B7758C080916F032D\r
+:101D0000813A09F057C08091730390917403892B35\r
+:101D100009F050C08091E800877F8093E8008091AF\r
+:101D2000E80080FFFCCF80911A013BC080916F03D7\r
+:101D3000813209F03FC08091730390917403892B25\r
+:101D4000C9F58091E800877F8093E8000E944E11DA\r
+:101D50009091710381E0911101C080E080931A019C\r
+:101D60000C948C1E80916F03813221F58091E800E4\r
+:101D7000877F8093E8000E944E11809172038093C8\r
+:101D80000302089580916F03813AA1F48091E800E5\r
+:101D9000877F8093E8008091E80080FFFCCF8091EE\r
+:101DA00003028093F1008091E8008E778093E80031\r
+:101DB0000C944E11089584B7877F84BF88E10FB6D5\r
+:101DC000F89480936000109260000FBE90E080E86D\r
+:101DD0000FB6F89480936100909361000FBE0E944B\r
+:101DE000A1110E94FE11E2EEF0E080818460808308\r
+:101DF00008958DE792E00E94241561E77DE08DE76C\r
+:101E000092E00E947A1567E27DE08DE792E00E9401\r
+:101E10007E150E94DB0E78946AEC7CE08DE792E000\r
+:101E20000E94201563EC7CE08DE792E00E9418157B\r
+:101E30006AE97CE08DE792E00E941C150E94850A09\r
+:101E40000E949B140E94AC1880E191E00E945418FB\r
+:101E50000BC00E944E2480916C03882329F00E94BD\r
+:101E6000742481110E94A40F80916E03853089F340\r
+:101E70008DE792E00E942D170E94B618F5CF292F0A\r
+:101E8000332723303105B1F04CF42130310509F40A\r
+:101E90004DC02230310509F04EC007C02132310556\r
+:101EA00041F12232310591F146C0E0EDF0E086E7E4\r
+:101EB00093E045C099278130910569F08230910502\r
+:101EC00089F0892B09F037C0E2E7F3E0E491F0E014\r
+:101ED00082E793E034C0E4E4F3E0E491F0E084E4EA\r
+:101EE00093E02DC0EAE1F3E0E491F0E08AE193E0D1\r
+:101EF00026C0643000F5E62FF0E0EE0FFF1FE75735\r
+:101F0000FE4F80819181E9E0F0E019C0643098F4DF\r
+:101F1000E62FF0E0DF01AA0FBB1FAF56BE4F8D9139\r
+:101F20009C91E756FE4FE081F0E009C0E2E1F0E06D\r
+:101F300086E494E004C0E0E0F0E080E090E0DA01C4\r
+:101F40008D939C93CF01089580E189BD82E189BD85\r
+:101F500009B400FEFDCF8091D8008F7D8093D8001A\r
+:101F60008091E00082608093E0008091E00081FD3C\r
+:101F7000FCCF0895BF92CF92DF92EF92FF920F9322\r
+:101F80001F93CF93DF937C018B01EA010E946F11B5\r
+:101F9000B82E811133C0209731F028813981021B7E\r
+:101FA000130BE20EF31EC12CD12C23C08091E8004C\r
+:101FB00085FD15C08091E8008E778093E80020971A\r
+:101FC00049F0888199818C0D9D1D9983888325E036\r
+:101FD000B22E14C00E946F11882359F00EC0F70171\r
+:101FE00081917F018093F10001501109FFEFCF1A19\r
+:101FF000DF0A01151105D1F601C0B82E8B2DDF9136\r
+:10200000CF911F910F91FF90EF90DF90CF90BF90F5\r
+:102010000895BF92CF92DF92EF92FF920F931F939A\r
+:10202000CF93DF937C018B01EA010E946F11B82EE0\r
+:10203000811133C0209731F028813981021B130BA5\r
+:10204000E20EF31EC12CD12C23C08091E80085FD47\r
+:1020500015C08091E8008B778093E800209749F0C5\r
+:10206000888199818C0D9D1D9983888345E0B42ECC\r
+:1020700014C00E946F11882359F00EC08091F100A6\r
+:10208000F70181937F0101501109FFEFCF1ADF0A99\r
+:1020900001151105D1F601C0B82E8B2DDF91CF911E\r
+:1020A0001F910F91FF90EF90DF90CF90BF90089518\r
+:1020B00040917503509176034617570748F0611514\r
+:1020C000710539F44091E8004E774093E80001C073\r
+:1020D000BA01FC0140E033C080916E03882309F40B\r
+:1020E00042C0853009F441C08091E80083FD39C0C9\r
+:1020F0008091E80082FD2FC08091E80080FF1FC022\r
+:102100009091F3008091F200392F20E0A901482B33\r
+:10211000CA0106C041914093F100615071090196D6\r
+:102120006115710519F088309105A0F341E0089719\r
+:1021300009F040E08091E8008E778093E800611517\r
+:10214000710551F64111C8CF06C080916E038823F6\r
+:1021500051F0853051F08091E80082FFF6CF80E0A9\r
+:10216000089581E0089582E0089583E00895409104\r
+:102170007503509176034617570748F061157105AE\r
+:1021800039F44091E8004E774093E80001C0BA016D\r
+:10219000FC0140E034C080916E03882309F443C001\r
+:1021A000853009F442C08091E80083FD3AC08091F7\r
+:1021B000E80082FD30C08091E80080FF20C090914F\r
+:1021C000F3008091F200392F20E0A901482BCA01C9\r
+:1021D00007C044914093F100319661507109019616\r
+:1021E0006115710519F08830910598F341E0089761\r
+:1021F00009F040E08091E8008E778093E800611557\r
+:10220000710549F64111C7CF06C080916E0388233E\r
+:1022100051F0853051F08091E80082FFF6CF80E0E8\r
+:10222000089581E0089582E0089583E00895982F4D\r
+:102230002CC09093E900981739F07091EC00209130\r
+:10224000ED005091F00003C0242F762F50E021FDC7\r
+:1022500002C09F5F1AC03091EB003E7F3093EB00CD\r
+:102260003091ED003D7F3093ED003091EB00316017\r
+:102270003093EB007093EC002093ED005093F0004E\r
+:102280002091EE0027FDE5CF07C0973090F28F70C8\r
+:102290008093E90081E0089580E0089580916F03C4\r
+:1022A00087FD05C08091E80080FF0EC012C08091BC\r
+:1022B000E80082FD05C080916E038111F8CF08957A\r
+:1022C0008091E8008B7708C080916E038111EACF7E\r
+:1022D00008958091E8008E778093E80008958091BA\r
+:1022E000E4009091E50045E62091EC0020FD1FC040\r
+:1022F00023C020916E03222391F0253091F020918C\r
+:10230000EB0025FD10C02091E4003091E500281776\r
+:10231000390751F34150C90139F784E0089582E04B\r
+:10232000089583E0089581E0089580E00895209164\r
+:10233000E80020FFDECFF9CF2091E80022FFD9CFBF\r
+:10234000F4CF0E940F120E941712E0EEF0E080819D\r
+:1023500081608083E8EDF0E080818F77808319BC15\r
+:10236000A7EDB0E08C918E7F8C9380818F7E8083EF\r
+:1023700010926D0308950F931F93CF93DF930E94E4\r
+:102380000F120E941712C8EDD0E088818F778883E2\r
+:1023900088818068888388818F7D888319BC1092AA\r
+:1023A0006E0310926A0310926C0310926B0300EE9E\r
+:1023B00010E0F80180818B7F808388818160888331\r
+:1023C00042E060E080E00E941711E1EEF0E08081E1\r
+:1023D0008E7F8083E2EEF0E0808181608083808167\r
+:1023E00088608083F80180818E7F8083888180610E\r
+:1023F0008883DF91CF911F910F910895E8EDF0E070\r
+:1024000080818F7E8083E7EDF0E080818160808332\r
+:1024100084E082BF81E080936D030C94BB11E8EDF2\r
+:10242000F0E080818E7F80831092E2000895109208\r
+:10243000DA001092E10008951F920F920FB60F92EA\r
+:1024400011242F933F934F935F936F937F938F93B9\r
+:102450009F93AF93BF93EF93FF938091E10082FF2F\r
+:102460000BC08091E20082FF07C08091E1008B7F6A\r
+:102470008093E1000E94D90D8091DA0080FF1FC097\r
+:102480008091D80080FF1BC08091DA008E7F8093FE\r
+:10249000DA008091D90080FF0DC080E189BD82E122\r
+:1024A00089BD09B400FEFDCF81E080936E030E94D8\r
+:1024B000C30D05C019BC10926E030E94D10D80910E\r
+:1024C000E10080FF19C08091E20080FF15C080917B\r
+:1024D000E2008E7F8093E2008091E2008061809331\r
+:1024E000E2008091D80080628093D80019BC85E01A\r
+:1024F00080936E030E94D50D8091E10084FF30C06F\r
+:102500008091E20084FF2CC080E189BD82E189BD19\r
+:1025100009B400FEFDCF8091D8008F7D8093D80054\r
+:102520008091E1008F7E8093E1008091E2008F7EB8\r
+:102530008093E2008091E20081608093E2008091CC\r
+:102540006A03882311F084E007C08091E30087FFCD\r
+:1025500002C083E001C081E080936E030E94D70D2A\r
+:102560008091E10083FF29C08091E20083FF25C0B4\r
+:102570008091E100877F8093E10082E080936E0389\r
+:1025800010926A038091E1008E7F8093E100809138\r
+:10259000E2008E7F8093E2008091E2008061809370\r
+:1025A000E20042E060E080E00E9417118091F000BC\r
+:1025B00088608093F0000E94D40DFF91EF91BF914D\r
+:1025C000AF919F918F917F916F915F914F913F91CB\r
+:1025D0002F910F900FBE0F901F9018951F920F9282\r
+:1025E0000FB60F9211242F933F934F935F936F93E6\r
+:1025F0007F938F939F93AF93BF93CF93EF93FF936B\r
+:102600008091E9008F709091EC0090FF02C090E8FB\r
+:1026100001C090E0C92FC82B1092E9008091F00012\r
+:10262000877F8093F00078940E9432131092E90023\r
+:102630008091F00088608093F000CF70C093E90033\r
+:10264000FF91EF91CF91BF91AF919F918F917F912A\r
+:102650006F915F914F913F912F910F900FBE0F900F\r
+:102660001F9018951F93CF93DF93CDB7DEB7AC972C\r
+:102670000FB6F894DEBF0FBECDBFEFE6F3E080915A\r
+:10268000F100819323E0E737F207C9F70E94250E96\r
+:102690008091E80083FF37C180916F0390917003B0\r
+:1026A000953009F488C038F49130B1F170F093306E\r
+:1026B00009F029C131C0983009F4F8C0993009F403\r
+:1026C00004C1963009F01FC19DC0803821F08238C6\r
+:1026D00009F019C108C080916B0390916C03992394\r
+:1026E00089F082600FC080917303909174038F70A2\r
+:1026F00099278093E9008091EB0085FB882780F97A\r
+:102700001092E9009091E800977F9093E800809301\r
+:10271000F1001092F100D5C0882319F0823009F041\r
+:10272000F2C08F7121F0823009F0EDC00BC08091B2\r
+:102730007103813009F0E7C0933009F080E08093A5\r
+:102740006C032FC08091710381112BC080917303A2\r
+:10275000909174038F709927009709F4D4C08093E7\r
+:10276000E9002091EB0020FF1CC020917003233072\r
+:1027700021F48091EB00806212C09091EB00906197\r
+:102780009093EB0021E030E001C0220F8A95EAF738\r
+:102790002093EA001092EA008091EB008860809319\r
+:1027A000EB001092E9008091E800877F8093E800B9\r
+:1027B0000E944E11A8C08111A6C080917103909112\r
+:1027C00072038F779927182F9091E3009078982BB8\r
+:1027D0009093E3008091E800877F8093E8000E9457\r
+:1027E0004E118091E80080FFFCCF8091E30080686B\r
+:1027F0008093E300112311F083E001C082E0809315\r
+:102800006E0381C08058823008F07DC080917103D2\r
+:10281000909172038C3D23E0920779F583E08A83DF\r
+:102820008AE289834FB7F894DE01139620E03EE0F8\r
+:1028300051E2E32FF0E050935700E49120FF03C0F2\r
+:10284000E295EF703F5FEF708E2F90E0EA3010F06E\r
+:10285000C79601C0C0968D939D932F5F243149F791\r
+:102860004FBF8091E800877F8093E8006AE270E0C4\r
+:10287000CE0101960E94581013C0AE01455D5F4F16\r
+:10288000609173030E943F0F0097E9F12091E800E7\r
+:10289000277F2093E800BC018BA59CA50E94B71060\r
+:1028A0008091E8008B778093E8002DC0803859F53F\r
+:1028B0008091E800877F8093E80080916A0380938D\r
+:1028C000F1008091E8008E7771CF81111CC090914A\r
+:1028D00071039230C0F48091E800877F8093E80014\r
+:1028E00090936A030E944E1180916A03811104C083\r
+:1028F0008091E30087FF02C084E001C081E0809303\r
+:102900006E030E94070E8091E80083FF0AC0809149\r
+:10291000E800877F8093E8008091EB0080628093DD\r
+:10292000EB00AC960FB6F894DEBF0FBECDBFDF91C3\r
+:10293000CF911F910895CF9380916E038823B1F0BA\r
+:102940008091E9008F709091EC0090FF02C090E8B8\r
+:1029500001C090E0C92FC82B1092E9008091E800D7\r
+:1029600083FD0E943213CF70C093E900CF91089588\r
+:10297000881F8827881F089591E0883F08F490E019\r
+:10298000892F0895982F907F903B99F038F49039D3\r
+:1029900081F0903A71F09038C9F40BC0903DA1F0ED\r
+:1029A00018F4903C99F410C0903E19F0903F71F4E7\r
+:1029B00002C083E00895E82FE15FEF3038F4F0E0E3\r
+:1029C000E356FE4F8081089582E0089580E00895E7\r
+:1029D0000F932F774F776F70606BDC01ED91FC9157\r
+:1029E000022F242F462F63E070E009950F91089580\r
+:1029F0000F932F774F776F706069DC01ED91FC9139\r
+:102A0000022F242F462F63E070E009950F9108955F\r
+:102A10000F932F774F776F706068DC01ED91FC9119\r
+:102A2000022F242F462F63E070E009950F9108953F\r
+:102A3000FC01738362830895FC01738F628F089594\r
+:102A4000FC01758F648F0895CF93DF93EC011DA275\r
+:102A50001FA21EA2BC01685D7F4F40EC88519F4FB2\r
+:102A60000E9461171B821A821D821C821F821E8295\r
+:102A7000198618861B861A861D861C861F861E864A\r
+:102A8000198A188A1B8A1A8A1D8A1C8A1F8A1E8A1A\r
+:102A9000198E188E1B8E1A8E1D8E1C8E1F8E1E8EEA\r
+:102AA00019A218A2DF91CF910895CF92DF92FF92E1\r
+:102AB0000F931F93CF93DF931F92CDB7DEB7F62E00\r
+:102AC0006A018C0108511F4F08C0F60161916F0126\r
+:102AD000C80149830E94681749818C2D841B8F157A\r
+:102AE000A0F30F90DF91CF911F910F91FF90DF9096\r
+:102AF000CF900895FC01718360830895FC0171A358\r
+:102B000060A30895AF92BF92CF92DF92EF92FF92AF\r
+:102B10000F931F93CF93DF9300D01F92CDB7DEB7F3\r
+:102B20007C016B01142FB22EA02EDC0195968C91A6\r
+:102B300095978430F1F45A96ED91FC915B9730971C\r
+:102B400009F4D8C0CB01019763E070E00E94762FB2\r
+:102B5000DB01AA0FBB1FA60FB71F49832A830B8374\r
+:102B60004C2D4A1B9E012F5F3F4FBD01C7010995A8\r
+:102B7000B1C06230710509F453C06330710529F0AA\r
+:102B80006130710509F09CC083C0842F807F803A3A\r
+:102B900001F130F48038B9F0803909F0ABC00DC0D4\r
+:102BA000803EE9F0803F09F1803B09F0A3C0D701E6\r
+:102BB0001296ED91FC91139723C0D7011496ED91D5\r
+:102BC000FC9115971DC0D7011696ED91FC911797B2\r
+:102BD00017C0D7011896ED91FC91199711C0D70134\r
+:102BE0001A96ED91FC911B970BC0423F09F082C0F1\r
+:102BF000D7011C96ED91FC911D97309731F47AC066\r
+:102C0000309709F477C0123F21F42A2D4B2D62EF43\r
+:102C100004C0612F6F702A2D4B2DC70109955AC032\r
+:102C2000842F807F803D59F0803F79F0803C09F00F\r
+:102C300061C0D7011E96ED91FC911F9719C0D70175\r
+:102C40005096ED91FC91519713C0433F31F4D70159\r
+:102C50005296ED91FC91539708C0413F09F04AC04C\r
+:102C6000D7015496ED91FC915597309741F442C0AD\r
+:102C7000309709F43FC0133F11F0113F19F44B2D69\r
+:102C8000612F03C0612F6F704B2DC701099522C0C2\r
+:102C9000842F0E94BC14882331F0D7015696ED9101\r
+:102CA000FC91579707C0163F29F5D7015896ED912B\r
+:102CB000FC9159973097F1F0612FC70109950AC02F\r
+:102CC00064307105A8F416C00A2D2B2D412FB601D2\r
+:102CD000C7010995D7015E96ED91FC915F973097FA\r
+:102CE00089F00A2D2B2D412FB601C70109950AC085\r
+:102CF000C12CD12CD7015C96ED91FC915D9730975A\r
+:102D000019F7E8CF0F900F900F90DF91CF911F919F\r
+:102D10000F91FF90EF90DF90CF90BF90AF9008950C\r
+:102D2000EF92FF920F931F93CF93DF93EC01162F37\r
+:102D3000862F0E94BC14882369F0FDA081E08DA33A\r
+:102D400000E020E0412F61E070E0CE010E9482159A\r
+:102D5000FDA27CC0812F0E94B8144DA1882309F4E4\r
+:102D600040C0443029F01AA321E030E03FA32EA355\r
+:102D7000812F0E94C214813031F070F0823051F006\r
+:102D8000833059F507C08DA300E020E0412F61E0BA\r
+:102D900070E01EC08DA35AC0103F19F0173FE9F430\r
+:102DA00004C084E08DA31AA33FC02EA13FA1C90196\r
+:102DB00063E070E00E94762F8C0F9D1FFC0112A330\r
+:102DC000B9016F5F7F4F7FA36EA30CA12BA14AA116\r
+:102DD000CE010E9482151DA239C01DA21FA21EA2F3\r
+:102DE00035C0442399F12EA13FA1C90163E070E0F1\r
+:102DF0000E94762F7C01FE01E80FF91F12A3B90192\r
+:102E00006F5F7F4F7FA36EA38130910591F082E0C9\r
+:102E1000E816F104D9F40CA12BA14AA1CE010E941D\r
+:102E200082158DA1843091F081E090E09FA38EA364\r
+:102E30000DC0423059F400E02BA14AA1CE010E94FE\r
+:102E400082158DA1843011F0FFA2EEA2DF91CF9107\r
+:102E50001F910F91FF90EF900895CF92DF92EF9224\r
+:102E6000FF920F931F93CF93DF93EC01E8A1F9A199\r
+:102E7000309709F009958E0108511F4FC8010E9433\r
+:102E80009A17E12CF12CC82ED12C0FC060E0C8019C\r
+:102E90000E94AE17682FCE010E94901661E0C80113\r
+:102EA0000E94BF178FEFE81AF80AEC14FD0470F3C4\r
+:102EB000DF91CF911F910F91FF90EF90DF90CF9016\r
+:102EC0000895FC0142837483638311821082089504\r
+:102ED0000F931F93CF93DF93EC01062F0E94E0170F\r
+:102EE000182F298130E0C90101966A8170E00E94A3\r
+:102EF0008A2F488150E08417950729F4812F0E947A\r
+:102F0000E31780E012C0EB81FC81E20FF31F008326\r
+:102F10002981822F90E001966A8170E00E948A2FB9\r
+:102F20008983812F0E94E31781E0DF91CF911F9168\r
+:102F30000F910895CF93DF93EC010E94E017298150\r
+:102F40009881291710F0C22F02C0CA81C20FC91B75\r
+:102F50000E94E3178C2FDF91CF910895FC0120810F\r
+:102F6000862F90E0820F911D628170E00E948A2F6F\r
+:102F70000380F481E02DE80FF91F808108950F93FD\r
+:102F80001F93CF93DF931F92CDB7DEB78C01698378\r
+:102F90000E94E017482FF80180816981262F30E0D8\r
+:102FA000280F311D6281C90170E00E948A2F808341\r
+:102FB000842F0F90DF91CF911F910F910C94E31705\r
+:102FC0008FB7F89408958FBF0895FC01CB0120912D\r
+:102FD0006E032430B1F421812F702093E90040E08A\r
+:102FE00050E064E070E00E94BA0F81110BC0909134\r
+:102FF000E80095FD07C09091E8009E779093E80067\r
+:10300000089582E0089520916E032430A9F4FC0114\r
+:1030100081818F708093E9003091F3002091F2005C\r
+:10302000932F80E0822B892B49F08091E8008E77E6\r
+:103030008093E8000C946F1182E0089580E0089579\r
+:1030400020916E03243051F4FC0121812F702093D4\r
+:10305000E9002091E80020FD0C9403180895FC017C\r
+:10306000CB0120916E03243011F080E00895268179\r
+:103070002F702093E9002091E80022FFF6CF2091E5\r
+:10308000E80025FFF2CF40E050E064E070E00E94ED\r
+:1030900009108091E80085FD05C08091E8008B77DC\r
+:1030A0008093E80081E0089590930F0280930E02D0\r
+:1030B000089580910E0290910F020895E0910E0202\r
+:1030C000F0910F02309721F00190F081E02D0994EA\r
+:1030D00080E00895E0910E02F0910F02309721F008\r
+:1030E0000280F381E02D09940895E0910E02F091A1\r
+:1030F0000F02309721F00480F581E02D09940895A6\r
+:1031000020911002309111028217930771F0909371\r
+:10311000110280931002E0910E02F0910F0230979D\r
+:1031200021F00680F781E02D099408952091120284\r
+:10313000309113028217930771F0909313028093DA\r
+:103140001202E0910E02F0910F02309721F00084FC\r
+:10315000F185E02D099408950E94B6240E948D0502\r
+:103160000E948A250C945F2B0C94CE075F926F927D\r
+:103170007F928F929F92AF92BF92CF92DF92EF9207\r
+:10318000FF920F931F93CF93DF93CDB7DEB72A97AC\r
+:103190000FB6F894DEBF0FBECDBF0E947E0694E14D\r
+:1031A000C92E92E0D92E00E010E0AA24A394B12CFD\r
+:1031B000502E802F0E94C4073C01F601E190F1904F\r
+:1031C0006F01E826F926E114F10431F40F5F1F4F77\r
+:1031D0000430110569F73AC08091680281FD0E94B0\r
+:1031E000CD0720E030E04501022E02C0880C991C7A\r
+:1031F0000A94E2F7C4018E219F21892B09F12E83C5\r
+:103200005F826820792081E0672809F480E0888760\r
+:103210000E94BF248160782F9A8789874E815F81C1\r
+:1032200068858A850E946F19F801EE0FFF1FEC5E1A\r
+:10323000FD4F80819181882599259183808316C0D7\r
+:103240002F5F3F4F2C30310571F6C0CF8FEF898350\r
+:103250008A831B820E94BF248160782F9D838C8388\r
+:1032600049815A816B818D810E946F190E94772854\r
+:1032700010911C020E945E181817D9F00E945E1867\r
+:1032800080931C022A960FB6F894DEBF0FBECDBF06\r
+:10329000DF91CF911F910F91FF90EF90DF90CF9032\r
+:1032A000BF90AF909F908F907F906F905F900C94A5\r
+:1032B000B4182A960FB6F894DEBF0FBECDBFDF91CB\r
+:1032C000CF911F910F91FF90EF90DF90CF90BF9023\r
+:1032D000AF909F908F907F906F905F900895CF9365\r
+:1032E000DF93CDB7DEB72B970FB6F894DEBF0FBED6\r
+:1032F000CDBF4F83588769877A878B87DE01119608\r
+:1033000086E0FD0111928A95E9F785E0FE01379686\r
+:1033100001900D928A95E1F749815A816B817C81F8\r
+:103320008D819E810E9447212B960FB6F894DEBFB7\r
+:103330000FBECDBFDF91CF910895CF93C82F8823C3\r
+:1033400009F4C1C0823859F40E945E1881FDBBC0E7\r
+:1033500089E30E94AC230E94282489E30CC08338AF\r
+:1033600079F40E945E1880FDAEC083E50E94AC2314\r
+:103370000E94282483E50E94CE23CF910C94282418\r
+:10338000843859F40E945E1882FD9DC087E40E9433\r
+:10339000AC230E94282487E4EECF8450813A48F47D\r
+:1033A0008C2F0E94C72A81118EC08C2F0E94AC23C3\r
+:1033B000E4CF8C2F805E883050F4C77081E090E0BD\r
+:1033C00001C0880FCA95EAF70E94EF23D6CF8C2F51\r
+:1033D000855A833078F4C53A29F0C63A31F482E848\r
+:1033E00090E005C081E890E002C083E890E0CF91D2\r
+:1033F0000C9480188C2F885A833108F064C0C83A26\r
+:1034000039F1C93A41F1CA3A49F1CB3A51F1CC3AD2\r
+:1034100059F1CD3A61F1C03B69F1CE3A71F1CF3A41\r
+:1034200079F1C13B81F1C23B89F1C33B91F1C43BCE\r
+:1034300099F1C53BA1F1C63BA9F1C73BB1F1C83B2E\r
+:10344000B9F1C93BC1F1CA3BC9F58AE292E038C083\r
+:1034500082EE90E035C089EE90E032C08AEE90E0D6\r
+:103460002FC085EB90E02CC086EB90E029C087EB65\r
+:1034700090E026C08CEC90E023C08DEC90E020C062\r
+:1034800083E891E01DC08AE891E01AC082E991E0EA\r
+:1034900017C084E991E014C081E292E011C083E298\r
+:1034A00092E00EC084E292E00BC085E292E008C098\r
+:1034B00086E292E005C087E292E002C080E090E000\r
+:1034C000CF910C949618CF910895882309F44DC09C\r
+:1034D000823859F40E945E1881FF47C089E30E9438\r
+:1034E000AC230E94282489E30CC0833871F40E9425\r
+:1034F0005E1880FF3AC083E50E94AC230E94282416\r
+:1035000083E50E94CE230C942824843859F40E9429\r
+:103510005E1882FF2AC087E40E94AC230E94282400\r
+:1035200087E4EFCF982F9450913A08F4EACF982F80\r
+:10353000905E983058F4282F277081E090E001C009\r
+:10354000880F2A95EAF70E94F523DDCF982F955A28\r
+:10355000933020F480E090E00C948018885A8331F6\r
+:1035600020F480E090E00C9496180895882321F0D0\r
+:103570000E94EF230C9428240895882321F00E94B0\r
+:10358000F5230C9428240895BF92CF92DF92EF92F6\r
+:10359000FF920F931F93CF93DF93CDB7DEB727979B\r
+:1035A0000FB6F894DEBF0FBECDBF8C0185E0F801E9\r
+:1035B000DE01119601900D928A95E1F7F8013081B4\r
+:1035C0002181F280558152955F7083819481892B8E\r
+:1035D00039F02F3F41F481E090E03F3F31F003C0EC\r
+:1035E00081E090E002C080E090E080FD73C3398309\r
+:1035F0002A8389819A815E830E946923B92E8F83F1\r
+:103600000E9468230E9490222B2D22952F7030E07B\r
+:103610005E816F812530310509F4E6C06CF42430F9\r
+:1036200031050CF0A2C04B2D407F8B2D8F702230C6\r
+:1036300031050CF045C017C02C3031054CF42A3050\r
+:1036400031050CF0E7C12830310509F043C3E5C06E\r
+:103650002D30310509F4BAC20CF4A2C22F30310565\r
+:1036600009F038C323C3182F411101C002C01295BD\r
+:10367000107FFF2059F0112309F46BC2812F6F8353\r
+:103680000E94FF230E9428246F8163C2862F0E941C\r
+:10369000651A112309F41EC3812F0E940524279661\r
+:1036A0000FB6F894DEBF0FBECDBFDF91CF911F9153\r
+:1036B0000F91FF90EF90DF90CF90BF900C94282453\r
+:1036C000403211F08295807F662319F0613071F5E8\r
+:1036D00023C0FF20B1F0511101C032C0513081F53B\r
+:1036E00027960FB6F894DEBF0FBECDBFDF91CF9106\r
+:1036F0001F910F91FF90EF90DF90CF90BF900C94AF\r
+:103700000F24511101C003C0513009F4E3C28E836C\r
+:103710000E9412248E819AC1FF2021F0563008F0B9\r
+:10372000D9C20EC0553008F0D5C290C1FF20C9F0F3\r
+:10373000552331F0F801958190FF0BC29F7095835E\r
+:1037400027960FB6F894DEBF0FBECDBFDF91CF91A5\r
+:103750001F910F91FF90EF90DF90CF90BF900C944E\r
+:10376000B61A552309F472C109C22B2D2695269548\r
+:10377000237030E02115310529F02130310509F0A1\r
+:10378000A9C219C0FF2021F0862F9B2D937002C083\r
+:1037900080E090E027960FB6F894DEBF0FBECDBF55\r
+:1037A000DF91CF911F910F91FF90EF90DF90CF901D\r
+:1037B000BF900C948018FF2021F0862F9B2D9370D2\r
+:1037C00002C080E090E027960FB6F894DEBF0FBEEF\r
+:1037D000CDBFDF91CF911F910F91FF90EF90DF90C0\r
+:1037E000CF90BF900C949618862FFF2019F00E945E\r
+:1037F0007D2702C00E94E52727960FB6F894DEBF0A\r
+:103800000FBECDBFDF91CF911F910F91FF90EF9031\r
+:10381000DF90CF90BF900C946C288B2D837009F0B3\r
+:1038200079C0F11057C2262F229526952770220FB6\r
+:10383000220F862F8F70C82ED12CE12CF12C022E56\r
+:1038400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF4\r
+:1038500010C06FE070E080E090E004C0660F771F5A\r
+:10386000881F991F2A95D2F760957095809590953D\r
+:1038700003C060E070E0CB012B2D269526952370C8\r
+:10388000422F50E042305105D9F04330510569F1E3\r
+:103890006C297D298E299F294130510551F12796A8\r
+:1038A0000FB6F894DEBF0FBECDBFDF91CF911F9151\r
+:1038B0000F91FF90EF90DF90CF90BF900C94A522D6\r
+:1038C0006C297D298E299F2927960FB6F894DEBF93\r
+:1038D0000FBECDBFDF91CF911F910F91FF90EF9061\r
+:1038E000DF90CF90BF900C94B7220E94A522C70111\r
+:1038F000B60127960FB6F894DEBF0FBECDBFDF919D\r
+:10390000CF911F910F91FF90EF90DF90CF90BF90DC\r
+:103910000C949322FF2019F08B2D817001C08695A5\r
+:10392000882309F4D7C1262F229526952770220FC8\r
+:10393000220F862F8F70C82ED12CE12CF12C022E55\r
+:1039400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF3\r
+:1039500010C06FE070E080E090E004C0660F771F59\r
+:10396000881F991F2A95D2F760957095809590953C\r
+:1039700003C060E070E0CB012B2D269526952370C7\r
+:10398000422F50E042305105D9F04330510569F1E2\r
+:103990006C297D298E299F294130510551F12796A7\r
+:1039A0000FB6F894DEBF0FBECDBFDF91CF911F9150\r
+:1039B0000F91FF90EF90DF90CF90BF900C94442335\r
+:1039C0006C297D298E299F2927960FB6F894DEBF92\r
+:1039D0000FBECDBFDF91CF911F910F91FF90EF9060\r
+:1039E000DF90CF90BF900C9456230E944423C701D0\r
+:1039F000B60127960FB6F894DEBF0FBECDBFDF919C\r
+:103A0000CF911F910F91FF90EF90DF90CF90BF90DB\r
+:103A10000C943223603F59F120F4603E08F494C0C6\r
+:103A200008C0623F09F467C0F0F1633F09F08CC041\r
+:103A300065C0162F1F708B2D8F71FF2021F00E9403\r
+:103A4000DD22812F7DCE0E94F822812F27960FB68E\r
+:103A5000F894DEBF0FBECDBFDF91CF911F910F91C4\r
+:103A6000FF90EF90DF90CF90BF900C94BD1AFF2095\r
+:103A7000B1F0553008F02EC18B2D8F7127960FB6FF\r
+:103A8000F894DEBF0FBECDBFDF91CF911F910F9194\r
+:103A9000FF90EF90DF90CF90BF900C94172356309B\r
+:103AA00008F018C1E9CFFF2099F08B2D8F71279670\r
+:103AB0000FB6F894DEBF0FBECDBFDF91CF911F913F\r
+:103AC0000F91FF90EF90DF90CF90BF900C94DD228C\r
+:103AD0008B2D8F7127960FB6F894DEBF0FBECDBF2A\r
+:103AE000DF91CF911F910F91FF90EF90DF90CF90DA\r
+:103AF000BF900C94F822F110EBCFD7CFFF2099F0B4\r
+:103B00008B2D8F7127960FB6F894DEBF0FBECDBFF9\r
+:103B1000DF91CF911F910F91FF90EF90DF90CF90A9\r
+:103B2000BF900C94CE2227960FB6F894DEBF0FBE3E\r
+:103B3000CDBFDF91CF911F910F91FF90EF90DF905C\r
+:103B4000CF90BF900C94C922FF20A9F0552309F40F\r
+:103B5000ACCF862F27960FB6F894DEBF0FBECDBF31\r
+:103B6000DF91CF911F910F91FF90EF90DF90CF9059\r
+:103B7000BF900C949D19552309F4AACF862F279640\r
+:103B80000FB6F894DEBF0FBECDBFDF91CF911F916E\r
+:103B90000F91FF90EF90DF90CF90BF900C94651A3B\r
+:103BA0004B2D4F70C8010E94E50227960FB6F8947E\r
+:103BB000DEBF0FBECDBFDF91CF911F910F91FF9060\r
+:103BC000EF90DF90CF90BF900C94FD21F11082C058\r
+:103BD0009B2D9F70492F50E04230510599F144F4DC\r
+:103BE0004115510569F04130510509F073C019C004\r
+:103BF00043305105C1F14430510509F06BC044C058\r
+:103C000027960FB6F894DEBF0FBECDBFDF91CF91E0\r
+:103C10001F910F91FF90EF90DF90CF90BF900C9489\r
+:103C2000702B27960FB6F894DEBF0FBECDBFDF9185\r
+:103C3000CF911F910F91FF90EF90DF90CF90BF90A9\r
+:103C40000C94872B27960FB6F894DEBF0FBECDBF1E\r
+:103C5000DF91CF911F910F91FF90EF90DF90CF9068\r
+:103C6000BF900C94A32B27960FB6F894DEBF0FBE1F\r
+:103C7000CDBFDF91CF911F910F91FF90EF90DF901B\r
+:103C8000CF90BF900C94B62B862F27960FB6F89442\r
+:103C9000DEBF0FBECDBFDF91CF911F910F91FF907F\r
+:103CA000EF90DF90CF90BF900C94DA2B4B2D4F709C\r
+:103CB000C80127960FB6F894DEBF0FBECDBFDF91C7\r
+:103CC000CF911F910F91FF90EF90DF90CF90BF9019\r
+:103CD0000C940E0827960FB6F894DEBF0FBECDBF2A\r
+:103CE000DF91CF911F910F91FF90EF90DF90CF90D8\r
+:103CF000BF9008950E940C240E94E1230E94282472\r
+:103D00000E9418290E946C2880E090E00E94801890\r
+:103D100080E090E00C9496180E94FC230C947A1E8C\r
+:103D20000E946923292F22952F7030E02C30310515\r
+:103D30004CF42A3031056CF422503109223031051F\r
+:103D400070F407C02C30310531F02F30310539F4D3\r
+:103D500002C081E0089593FB882780F9089580E0F0\r
+:103D60000895CF93DF9300D000D01F92CDB7DEB778\r
+:103D70000F900F900F900F900F90DF91CF910895BB\r
+:103D8000CF93DF9300D000D000D0CDB7DEB726961A\r
+:103D90000FB6F894DEBF0FBECDBFDF91CF9108956F\r
+:103DA0001F93CF93DF93C091530216E012C0D0E06F\r
+:103DB0001C9FF0011D9FF00D1124ED5DFD4F408112\r
+:103DC000518162817381848195810E94C01E2196F8\r
+:103DD000C77080915402C813EACFDF91CF911F9131\r
+:103DE000089540911D0250911E0260911F02709132\r
+:103DF000200280912102909122020C94C01E0F9308\r
+:103E00001F93CF93DF938091220282958F7009F0E8\r
+:103E100069C080911F02882309F464C0A0915302F5\r
+:103E2000D0915402B0911D02C0911E0280912002D7\r
+:103E30009091210221E030E0BF3F11F020E030E01E\r
+:103E4000122FBC016095709506E04AC0009721F0E2\r
+:103E5000CF3F29F4212F05C021E030E002C020E04F\r
+:103E600030E020FD3BC04A2F50E0049FF001059F49\r
+:103E7000F00D1124ED5DFD4F2181C2132FC0208173\r
+:103E8000B2132CC02281211129C02381348128172B\r
+:103E9000390718F0281B390B02C0260F371F283CA2\r
+:103EA0003105E0F4809122028F70806180932202BC\r
+:103EB00086E0849FF001859FF00D1124E85DFD4FA1\r
+:103EC00080818F70806180838DE192E00E94C41AAE\r
+:103ED000DF91CF911F910F910C94D01EAF5FA7700F\r
+:103EE000AD13B4CFDF91CF911F910F910895EF9251\r
+:103EF000FF920F931F93CF93DF93CDB7DEB76297F7\r
+:103F00000FB6F894DEBF0FBECDBF8C0185E0F8017F\r
+:103F1000DE011D9601900D928A95E1F7D8014C9132\r
+:103F200011965C91119712966C9112971396ED90E1\r
+:103F3000FC90149770911D02E0911E028091200266\r
+:103F400090912102009739F0EF3F41F421E030E0F9\r
+:103F50007F3F31F003C021E030E002C020E030E0DC\r
+:103F600020FD5CC120911F02222309F4F1C0E81654\r
+:103F7000F90628F09701281B390BC90104C0809568\r
+:103F800090958E0D9F1D883C910508F098C08091FA\r
+:103F90002202982F907F09F064C0E51314C07413B7\r
+:103FA00012C0611110C08F708061809322020E9444\r
+:103FB000F11E8DE192E00E94C41A80912202D80184\r
+:103FC00015968C9343C1EF2839F05F3F41F481E0AF\r
+:103FD00090E04F3F31F003C081E090E002C080E00C\r
+:103FE00090E080FD03C081E0862702C080E090E081\r
+:103FF00080FF2EC0809153022091540236E013C0FE\r
+:1040000090E0389FF001399FF00D1124ED5DFD4FD8\r
+:104010007181571306C07081471303C07281671303\r
+:1040200017C0019687708213EBCF12C19F7059F0B1\r
+:10403000882309F40BC107C09F7029F0F80195810E\r
+:10404000907F09F403C1805E883008F4FFC0D2C0BD\r
+:10405000662309F4FBC080912202816080932202D2\r
+:10406000F5C0E51308C0741306C0611104C0D8017F\r
+:1040700015968C939DC04D875E878D859E856A8B36\r
+:104080000E94901E6A89882309F4B4C0662309F44B\r
+:10409000B1C020912202822F82958F7090E002970A\r
+:1040A0000CF4C6C080911D0290911E0298878F83E8\r
+:1040B0001986FB86EA862C87CE01079646C080913A\r
+:1040C0002202982F907F59F47E2DF98AE88A8989F7\r
+:1040D0000E94B11E8DE192E00E94C41A95C0E513C2\r
+:1040E00011C074130FC061110DC0F8018583C801A0\r
+:1040F0000E94C41AEDE1F2E086E0DF011D928A958C\r
+:10410000E9F7A2C04D875E878D859E856A8B0E94E8\r
+:10411000901E6A89882309F46DC0662309F46AC079\r
+:1041200020912202822F82958F7090E002970CF4EA\r
+:104130007FC080911D0290911E029A8389831B8209\r
+:10414000FD82EC822E83CE0101960E94C41A70C0BB\r
+:10415000E816F90628F09701281B390BC90104C09D\r
+:10416000809590958E0D9F1D883C910508F046C066\r
+:10417000662309F43FC0E51330C074132EC02091AC\r
+:10418000220220FD21C0322F32953F70832F90E014\r
+:104190000097D1F0D80115962C9315970F9741F001\r
+:1041A000832F8F5F8295807F2F70282B15962C93FD\r
+:1041B000C8010E94C41A86E0F801ADE1B2E00190A6\r
+:1041C0000D928A95E1F73EC086E0F801ADE1B2E0DC\r
+:1041D00001900D928A95E1F737C04D875E878D85F6\r
+:1041E0009E850E94901E811123C0809122028160D1\r
+:1041F00080932202C8010E94C41A26C07E2DF98A2B\r
+:10420000E88A89890E94B11EEDE1F2E086E0DF01D3\r
+:104210001D928A95E9F70E94F11E18C0662351F39A\r
+:104220004D875E878D859E850E94901E882311F3A1\r
+:1042300086E0F801ADE1B2E001900D928A95E1F7D8\r
+:104240000E94FF1E0E94F11E81E014C080E012C097\r
+:104250004D875E878D859E850E946923292F229533\r
+:104260002F7030E0223031050CF4E0CE24303105DF\r
+:104270000CF6E2CE62960FB6F894DEBF0FBECDBF4D\r
+:10428000DF91CF911F910F91FF90EF9008951F93B1\r
+:10429000CF93DF93CDB7DEB72C970FB6F894DEBF80\r
+:1042A0000FBECDBF4F83588769877A878B879C87DE\r
+:1042B000CE0107960E94771F8823D9F02F81388579\r
+:1042C0008A859B85892B39F03F3F19F080E090E08B\r
+:1042D00004C02F3FD9F781E090E0892B09F06DC031\r
+:1042E0004F81588569857A858B859C850E94C01E83\r
+:1042F00064C086E0FE013796DE01119601900D92B2\r
+:104300008A95E1F7FF81E8854A855B85411551056E\r
+:1043100039F0EF3F41F481E090E0FF3F31F003C01E\r
+:1043200081E090E002C080E090E080FD46C02091F6\r
+:10433000540230E0C90101968770992760915302B9\r
+:1043400070E08617970709F440C0F983EA835D831C\r
+:104350004C8396E0929FD001939FB00D1124AD5DE8\r
+:10436000BD4FFE01319601900D929A95E1F7809331\r
+:1043700054020E94D01E21C0189FC00111248D5DDF\r
+:104380009D4F0E94771F882371F1E09153021E9F79\r
+:10439000F0011124ED5DFD4F4081518162817381F7\r
+:1043A000848195810E94C01E8091530290E0019605\r
+:1043B000877099278093530201C016E080915302C1\r
+:1043C000909154028913D8CF0EC00E948C1E109277\r
+:1043D000540210925302EDE1F2E086E0DF011D92FB\r
+:1043E0008A95E9F7EACF2C960FB6F894DEBF0FBE98\r
+:1043F000CDBFDF91CF911F910895DF92EF92FF9291\r
+:104400000F931F93CF93DF93EC01009709F46CC0D7\r
+:10441000D12CEE24E394F12C8E010F5F1F4FFE018F\r
+:104420008491843748F4843008F04AC0813071F0B8\r
+:10443000823009F059C01EC0853709F43DC070F1C3\r
+:10444000982F9458903708F04FC03DC02296F8013D\r
+:104450008491982F905E983050F48770FE2D01C0A3\r
+:10446000FF0F8A95EAF78F2F0E94FF2330C00E942A\r
+:104470009D192DC02296F8018491982F905E983056\r
+:1044800050F48770FE2D01C0FF0F8A95EAF78F2F39\r
+:104490000E9405241CC00E94651A19C02296F801CA\r
+:1044A000049107C08FE99FE00197F1F700C0000079\r
+:1044B00001500111F7CF0BC02296F801D49007C02C\r
+:1044C0000E949D1903C08F770E94651AE8018D2D07\r
+:1044D00007C08150EFE9FFE03197F1F700C000001D\r
+:1044E000882309F499CFF5CFDF91CF911F910F91D8\r
+:1044F000FF90EF90DF9008956093590270935A02F5\r
+:1045000080935B0290935C020C947A1E6093550238\r
+:104510007093560280935702909358020C947A1E1F\r
+:1045200008950C947C220F931F93009159021091CF\r
+:104530005A0220915B0230915C02602B712B822B1E\r
+:10454000932B1F910F910C947C220F931F9300913A\r
+:10455000590210915A0220915B0230915C02602353\r
+:104560007123822393231F910F910C947C220F932C\r
+:104570001F930091590210915A0220915B023091D1\r
+:104580005C0260277127822793271F910F910C945B\r
+:104590007C2260E070E0CB010C94862241E050E088\r
+:1045A00060E070E004C0440F551F661F771F8A95B6\r
+:1045B000D2F7CB01BA010C94862241E050E060E0D2\r
+:1045C00070E004C0440F551F661F771F8A95D2F70D\r
+:1045D0008091550290915602A0915702B0915802D5\r
+:1045E000482B592B6A2B7B2BCB01BA010C948622CA\r
+:1045F00041E050E060E070E004C0440F551F661FCA\r
+:10460000771F8A95D2F74095509560957095809167\r
+:10461000550290915602A0915702B091580248233A\r
+:1046200059236A237B23CB01BA010C94862241E0F3\r
+:1046300050E060E070E004C0440F551F661F771F14\r
+:104640008A95D2F78091550290915602A091570217\r
+:10465000B0915802482759276A277B27CB01BA0116\r
+:104660000C9486220F931F930091550210915602CD\r
+:104670002091570230915802602B712B822B932B83\r
+:104680001F910F910C9486220F931F930091550256\r
+:1046900010915602209157023091580260237123E5\r
+:1046A000822393231F910F910C9486220F931F93C3\r
+:1046B00000915502109156022091570230915802F4\r
+:1046C00060277127822793271F910F910C948622D0\r
+:1046D0000895CF92DF92EF92FF920F931F93CF93A3\r
+:1046E000DF93EC01C0905902D0905A02E0905B0237\r
+:1046F000F0905C028091550290915602A091570271\r
+:10470000B0915802C82AD92AEA2AFB2A0FE110E000\r
+:10471000B701A601002E04C0769567955795479579\r
+:104720000A94D2F740FF08C0BE01802F0E94E00328\r
+:104730008130910509F007C00150110948F7BE0109\r
+:1047400080E00E94E003DF91CF911F910F91FF90D5\r
+:10475000EF90DF90CF90089540911B0150911C0184\r
+:1047600020E030E09FEFFA01E20FF31F628168174B\r
+:10477000A1F09F3F19F4611101C0922F2F5F3F4FAD\r
+:104780002630310581F707C0FA01E90FF11D97FDC9\r
+:10479000FA95828308959F3FB9F7089540911B01D0\r
+:1047A00050911C0120E030E0FA01E20FF31F9281EA\r
+:1047B000981301C012822F5F3F4F26303105A1F7B9\r
+:1047C000089581E090E0E0911B01F0911C01E80F59\r
+:1047D000F91F1082019688309105A9F708959091EC\r
+:1047E0005D02982B90935D020895809590915D02F3\r
+:1047F000982390935D02089510925D020895909120\r
+:104800005E02982B90935E020895809590915E02CF\r
+:10481000982390935E02089510925E02089580930B\r
+:104820005F02089510925F02089540911B0150911C\r
+:104830001C0120E030E080E0FA01E20FF31F9181DB\r
+:1048400091118F5F2F5F3F4F27303105A9F70895F2\r
+:10485000E0911B01F0911C0180915D028083E09149\r
+:104860001B01F0911C01808190915E02892B808355\r
+:1048700090915F02992361F0E0911B01F0911C017E\r
+:104880008081892B80830E94152481110E9412242B\r
+:1048900080911B0190911C010C946A1880916E0309\r
+:1048A000843009F11092690220E488E190E00FB6AB\r
+:1048B000F894A895809360000FBE2093600083B7A2\r
+:1048C000817F846083BF83B7816083BF789488953C\r
+:1048D00083B78E7F83BF88E10FB6F8948093600022\r
+:1048E000109260000FBE0895CF930E94E3020E94D1\r
+:1048F0007E060E94E402C0E08C2F0E94C407892B30\r
+:1049000029F4CF5FC430C1F780E001C081E0CF91CE\r
+:1049100008950E948C1E0C945F2B1F920F920FB66D\r
+:104920000F9211248F939F93AF93BF93809169024D\r
+:10493000811113C080916A0290916B02A0916C0268\r
+:10494000B0916D024196A11DB11D80936A029093B2\r
+:104950006B02A0936C02B0936D02BF91AF919F91D7\r
+:104960008F910F900FBE0F901F90189582E084BD1D\r
+:1049700093E095BD9AEF97BD80936E0008958FB731\r
+:10498000F89440916A0250916B0260916C027091B0\r
+:104990006D028FBFCA010895CF92DF92EF92FF920E\r
+:1049A0000F931F932FB7F89440916A0250916B02B6\r
+:1049B00060916C0270916D022FBF6A017B01EE2441\r
+:1049C000FF248C0120E030E0C016D106E206F30699\r
+:1049D00020F09A01281B390B05C09C0120953095C9\r
+:1049E000240F351FC9011F910F91FF90EF90DF90A9\r
+:1049F000CF9008951F920F920FB60F9211248F93AC\r
+:104A00009F93AF93BF9380916A0290916B02A091A4\r
+:104A10006C02B0916D020196A11DB11D80936A02D6\r
+:104A200090936B02A0936C02B0936D02BF91AF9113\r
+:104A30009F918F910F900FBE0F901F9018950E941D\r
+:104A4000A111F8942FEF87EA91E621508040904021\r
+:104A5000E1F700C0000087E090EBDC018093780371\r
+:104A600090937903A0937A03B0937B032CE088E1C1\r
+:104A700090E00FB6F894A895809360000FBE209345\r
+:104A80006000FFCFCF92DF92EF92FF920F931F93C0\r
+:104A9000CF93DF93C82ED12C01E010E08D2D0E9422\r
+:104AA000C4077C01C0E0D0E098010C2E02C0220FA8\r
+:104AB000331F0A94E2F72E213F21232B29F421965C\r
+:104AC000CC30D10589F708C06C2F7D2D80E00E9485\r
+:104AD000BB03C812F4CF06C0D39484E0D812DECF53\r
+:104AE00080E001C081E0DF91CF911F910F91FF9095\r
+:104AF000EF90DF90CF900895CF93C82F8CE20E9463\r
+:104B00004225882321F08C2FCF910C94422580E000\r
+:104B1000CF910895CF930E94CD26811102C00E94AB\r
+:104B2000AE26C5E608C00E947E068FE39CE9019789\r
+:104B3000F1F700C00000C150B1F789E20E947C2566\r
+:104B400081110AC18AE20E947C2581110E94AE2651\r
+:104B500085E00E947C2581110E941F250E94D82695\r
+:104B60008093680287E00E947C25882399F18BE17D\r
+:104B70000E947C25882351F09091680291FB882740\r
+:104B800080F921E0822780FB91F922C08EE00E940B\r
+:104B90007C25882351F09091680292FB882780F948\r
+:104BA00021E0822780FB92F913C080E10E947C25DE\r
+:104BB00090916802882341F093FB882780F921E0D7\r
+:104BC000822780FB93F904C0892F809580FB90F9A0\r
+:104BD00090936802809168020E94DC260E94EA2677\r
+:104BE00080937B0280EE0E947C25882341F0809197\r
+:104BF0007B02982F909590FB80F980937B0289E34C\r
+:104C00000E947C25882359F090917B0291FB882794\r
+:104C100080F921E0822780FB91F990937B0282EE5C\r
+:104C20000E947C25882359F090917B0292FB882773\r
+:104C300080F921E0822780FB92F990937B0286EE37\r
+:104C40000E947C25882359F090917B0293FB882752\r
+:104C500080F921E0822780FB93F990937B0283EE19\r
+:104C60000E947C25882359F090917B0294FB882731\r
+:104C700080F921E0822780FB94F990937B0285E301\r
+:104C80000E947C25882359F090917B0295FB882710\r
+:104C900080F921E0822780FB95F990937B0281E3E4\r
+:104CA0000E947C25882359F090917B0296FB8827EF\r
+:104CB00080F921E0822780FB96F990937B0281E1C5\r
+:104CC0000E947C25882359F090917B0297FB8827CE\r
+:104CD00080F921E0822780FB97F990937B028091F5\r
+:104CE0007B020E94EE2687E20E947C25C82F8EE17F\r
+:104CF0000E947C258111C2608FE10E947C25811178\r
+:104D0000C46080E20E947C258111C86081E20E941B\r
+:104D10007C258111C06182E20E947C258111C062E4\r
+:104D200083E20E947C258111C06484E20E947C257C\r
+:104D3000882311F0C06802C0CC2329F08C2F0E9478\r
+:104D4000E5266C2F03C00E94E126682F70E080E00A\r
+:104D500090E0CF910C949122CF9108956DEE7EEF6B\r
+:104D600080E090E00E94BA2F60E082E090E00E9434\r
+:104D7000AC2F60E083E090E00E94AC2F60E084E024\r
+:104D800090E00E94AC2F60E085E090E00E94AC2FA4\r
+:104D900060E086E090E00C94AC2F80E090E00E9410\r
+:104DA000A62F21E08D3E9E4F09F020E0822F08952E\r
+:104DB00082E090E00C949E2F682F82E090E00C94AB\r
+:104DC000AC2F83E090E00C949E2F682F83E090E05E\r
+:104DD0000C94AC2F84E090E00C949E2F682F84E01C\r
+:104DE00090E00C94AC2F86E090E00C949E2F682FFE\r
+:104DF00086E090E00C94AC2F8091760280FF0BC08F\r
+:104E00006091200185E0689FB00111247595679538\r
+:104E1000759567952AC081FF09C06091200185E0E2\r
+:104E2000689FB0011124759567951FC082FF07C068\r
+:104E30006091200185E0689FB001112416C0409167\r
+:104E400070024423C9F060911F01461788F7209132\r
+:104E5000200185E0289F90011124429FC001439FBB\r
+:104E6000900D112470E00E948A2F6038710540F483\r
+:104E70006115710539F002C065E070E0862F089574\r
+:104E80008FE7089581E008958091760280FF08C041\r
+:104E900060911E0170E0759567957595679521C0C5\r
+:104EA00081FF06C060911E0170E07595679519C07D\r
+:104EB00082FF04C060911E0170E010C080917002FA\r
+:104EC0008823C1F060911D018617A0F790911E0103\r
+:104ED000989FC001112470E00E948A2F60387105EC\r
+:104EE00028F46115710521F0862F08958FE7089544\r
+:104EF00081E0089561E070E0F4CF803F21F40E94EA\r
+:104F0000FC26819504C0813F29F40E94FC268093F1\r
+:104F100073020895823F21F40E94FC26819504C00B\r
+:104F2000833F29F40E94FC26809372020895893FF2\r
+:104F300019F40E94442705C08A3F31F40E94442797\r
+:104F400081958093740208958B3F21F40E94442739\r
+:104F5000819504C08C3F29F40E94442780937502F8\r
+:104F60000895843F21F480917102816017C0853FCC\r
+:104F700021F480917102826011C0863F21F48091FA\r
+:104F8000710284600BC0873F21F4809171028860B8\r
+:104F900005C0883F31F48091710280618093710275\r
+:104FA00008958D3F21F48091760281600BC08E3F81\r
+:104FB00021F480917602826005C08F3F29F48091B0\r
+:104FC00076028460809376020895803F29F4809170\r
+:104FD000730287FF6EC007C0813F41F48091730266\r
+:104FE00018160CF066C01092730263C090917202A2\r
+:104FF000823F19F497FF5DC005C0833F31F4191655\r
+:105000000CF057C01092720254C0893F31F4809165\r
+:10501000740218160CF04DC006C08A3F39F4809116\r
+:10502000740287FF46C01092740243C08B3F29F47C\r
+:105030008091750287FF3DC006C08C3F39F4809196\r
+:1050400075021816B4F51092750233C0843F21F42E\r
+:10505000809171028E7F05C0853F31F4809171028D\r
+:105060008D7F8093710225C0863F21F4809171026B\r
+:105070008B7FF7CF873F21F480917102877FF1CF3B\r
+:10508000883F21F4809171028F7EEBCF8D3F21F418\r
+:10509000809176028E7F0BC08E3F21F48091760244\r
+:1050A0008D7F05C08F3F29F4809176028B7F80939E\r
+:1050B00076028091720281110EC08091730281117B\r
+:1050C0000AC080917402811106C08091750281111D\r
+:1050D00002C010927002089581E792E00E94751854\r
+:1050E0000E94BF2490936F0280936E020895CF9325\r
+:1050F00080916E0290916F020E94CC2440917002C8\r
+:10510000442321F02091210130E006C020912201AA\r
+:105110005AE0259F900111248217930708F486C056\r
+:105120008091720281110DC090917302911109C09A\r
+:1051300090917402911105C090917502992309F420\r
+:1051400075C04F3F19F04F5F40937002181624F45A\r
+:105150000E94FC26809372028091720287FF05C034\r
+:105160000E94FC268195809372028091730218162A\r
+:1051700024F40E94FC26809373028091730287FFBF\r
+:1051800005C00E94FC268195809373026091720293\r
+:10519000662339F1C0917302CC2319F1772767FD9B\r
+:1051A0007095872F972F0E94FA2C23E333E343E374\r
+:1051B0005FE30E94AE2D0E94C72C609372026C2F99\r
+:1051C000772767FD7095872F972F0E94FA2C23E38E\r
+:1051D00033E343E35FE30E94AE2D0E94C72C60934C\r
+:1051E000730280917402181624F40E94442780935D\r
+:1051F00074028091740287FF05C00E944427819544\r
+:105200008093740280917502181624F40E9444273A\r
+:10521000809375028091750287FF05C00E94442724\r
+:10522000819580937502CF910C946C28CF9108954D\r
+:10523000E1E7F2E085E0DF011D928A95E9F710923F\r
+:105240007002109276020895833089F130F4813033\r
+:1052500061F0823009F06EC019C0853009F449C090\r
+:10526000B8F1863009F066C055C020912201862F22\r
+:1052700090E0820F911D8F3F910520F4620F6093A3\r
+:10528000220108958FEF809322010895209121013A\r
+:10529000862F90E0820F911D8F3F910520F4620FC1\r
+:1052A0006093210108958FEF80932101089520914B\r
+:1052B0002001862F90E0820F911D8F3F910520F4F1\r
+:1052C000620F6093200108958FEF8093200108956D\r
+:1052D00020911F01862F90E0820F911D8F3F910535\r
+:1052E00020F4620F60931F0108958FEF80931F01D8\r
+:1052F000089520911E01862F90E0820F911D8F3F0F\r
+:10530000910520F4620F60931E0108958FEF809342\r
+:105310001E01089520911D01862F90E0820F911D9E\r
+:105320008F3F910520F4620F60931D0108958FEF68\r
+:1053300080931D010895833021F130F4813059F0BC\r
+:10534000823009F049C012C0853089F128F18630D9\r
+:1053500009F042C037C080912201681720F4861BF3\r
+:1053600080932201089510922201089580912101D5\r
+:10537000681720F4861B8093210108951092210163\r
+:10538000089580912001681720F4861B80932001E6\r
+:10539000089510922001089580911F01681720F44C\r
+:1053A000861B80931F01089510921F01089580911C\r
+:1053B0001E01681720F4861B80931E010895109229\r
+:1053C0001E01089580911D01681720F4861B8093AB\r
+:1053D0001D01089510921D01089541E050E060E024\r
+:1053E00070E004C0440F551F661F771F8A95D2F7DF\r
+:1053F000CB01BA010E9491220C948C1E873208F5D1\r
+:105400008E3108F0B9C08E3009F47EC060F4873068\r
+:1054100009F465C018F4863059F549C0883051F157\r
+:105420008B3031F5AEC0883130F4863108F0A9C038\r
+:105430008031F1F473C0893109F4A3C08B31C1F418\r
+:1054400059C08933F1F068F4893209F493C018F433\r
+:10545000873271F48FC0853309F48CC0883341F4EE\r
+:1054600090C0863409F46BC008F488C0883449F1D0\r
+:1054700080E008950E94D8260E94EA260E94F32622\r
+:1054800080C00E945918892B59F00E945918909396\r
+:105490007902809378020E948C1E80E090E004C024\r
+:1054A00080917802909179020E9454186AC080918C\r
+:1054B0006802817F8E7F8093680281E0809377020B\r
+:1054C00008950E948C1E2FEF83ED90E321508040C1\r
+:1054D0009040E1F700C000000E941F2552C080915B\r
+:1054E000680280FF03C0817F8E7F01C0816080934E\r
+:1054F000680247C09091680291FB882780F921E0FB\r
+:10550000822780FB91F913C09091680292FB882753\r
+:1055100080F921E0822780FB92F909C0909168020E\r
+:1055200093FB882780F921E0822780FB93F99093F1\r
+:105530006802882331F191609093680222C081E86B\r
+:1055400090E00E9480182FEF81EE94E0215080407F\r
+:105550009040E1F700C0000080E090E00E948018D9\r
+:105560002FEF89E698E1215080409040E1F700C09C\r
+:10557000000007C080E003C08D5101C089530E9424\r
+:10558000ED2981E0089580E0089580E00895CF93AB\r
+:10559000C82F80917702813071F020F0823009F0BD\r
+:1055A00083C037C0A0911B01B0911C018C91823245\r
+:1055B00009F07CC007C0A0911B01B0911C018C9127\r
+:1055C000823249F48C2F0E94C32A81111EC08C2F75\r
+:1055D0000E94FE291CC08C2F0E94C52A811115C073\r
+:1055E000C43169F030F4CB3081F0C03109F062C0D1\r
+:1055F00009C0C93221F0C83309F05CC006C010925E\r
+:10560000770258C082E08093770281E090E0817059\r
+:1056100054C0C932C1F060F4C431A9F020F4C730DD\r
+:1056200009F046C02EC0CE51CA3008F041C011C0AA\r
+:10563000CE3409F118F4CB34D9F517C0C13599F03F\r
+:10564000C235B1F50EC010927A0281E080937702E4\r
+:1056500034C0EC2FF0E0E455FE4F808180937A0255\r
+:1056600027C061E003C061E007C06AE080917A0270\r
+:105670000E9424291DC06AE080917A020E949B2921\r
+:1056800017C08EE18093220182E3809321018AE09A\r
+:105690008093200184E180931F0188E080931E01A4\r
+:1056A00088E280931D0104C01092770280E005C05B\r
+:1056B00081E003C080E090E0AACFCF9108950E94DE\r
+:1056C000CD26811102C00E94AE260E94F32680934F\r
+:1056D000770380FF02C0869501C080E00C94DF074D\r
+:1056E00080917703982F9695292F30E0233031054C\r
+:1056F0004CF49F5F990F8170892B816080937703B1\r
+:105700000E94F7268091770386950C94DF0780919D\r
+:105710007703982F969591F09158990F8170892B66\r
+:10572000809377038E7F91E009F490E08091770376\r
+:1057300090FB80F9809377030E94F726809177038E\r
+:1057400086950C94DF0780917703982F909590FBB6\r
+:1057500080F9809377030E94F7268091770380FF7A\r
+:1057600002C0869501C080E00C94DF07309177037A\r
+:10577000232F26952F5F2F77822F90E0317004978B\r
+:105780002CF4220F232B2093770302C0309377034E\r
+:1057900080917703282F2E7F91E009F490E090FB11\r
+:1057A00080F9809377030E94F7268091770386958E\r
+:1057B0000C94DF0720917703922F96959827990FE5\r
+:1057C000822F8170892B809377038E7F91E009F47B\r
+:1057D00090E08091770390FB80F9809377030E949B\r
+:1057E000F7268091770386950C94DF075058BB27E6\r
+:1057F000AA270ED075C166D130F06BD120F031F4FC\r
+:105800009F3F11F41EF45BC10EF4E095E7FB51C11C\r
+:10581000E92F77D180F3BA176207730784079507DA\r
+:1058200018F071F49EF58FC10EF4E0950B2EBA2F8F\r
+:10583000A02D0B01B90190010C01CA01A001112496\r
+:10584000FF27591B99F0593F50F4503E68F11A1642\r
+:10585000F040A22F232F342F4427585FF3CF4695D3\r
+:1058600037952795A795F0405395C9F77EF41F16F5\r
+:10587000BA0B620B730B840BBAF09150A1F0FF0FBF\r
+:10588000BB1F661F771F881FC2F70EC0BA0F621FAB\r
+:10589000731F841F48F4879577956795B795F7959B\r
+:1058A0009E3F08F0B3CF9395880F08F09927EE0F2D\r
+:1058B000979587950895D9D008F481E008950CD084\r
+:1058C0000FC107D140F0FED030F021F45F3F19F056\r
+:1058D000F0C0511139C1F3C014D198F39923C9F321\r
+:1058E0005523B1F3951B550BBB27AA2762177307E6\r
+:1058F000840738F09F5F5F4F220F331F441FAA1F9A\r
+:10590000A9F333D00E2E3AF0E0E830D09150504059\r
+:10591000E695001CCAF729D0FE2F27D0660F771F07\r
+:10592000881FBB1F261737074807AB07B0E809F0E9\r
+:10593000BB0B802DBF01FF2793585F4F2AF09E3F7E\r
+:10594000510568F0B6C000C15F3FECF3983EDCF350\r
+:10595000869577956795B795F7959F5FC9F7880FF7\r
+:10596000911D9695879597F90895E1E0660F771F49\r
+:10597000881FBB1F621773078407BA0720F0621BDA\r
+:10598000730B840BBA0BEE1F88F7E095089504D0D3\r
+:105990006894B111D9C00895BCD088F09F5790F099\r
+:1059A000B92F9927B751A0F0D1F0660F771F881F44\r
+:1059B000991F1AF0BA95C9F712C0B13081F0C3D05F\r
+:1059C000B1E00895C0C0672F782F8827B85F39F0FD\r
+:1059D000B93FCCF3869577956795B395D9F73EF4A3\r
+:1059E00090958095709561957F4F8F4F9F4F08954B\r
+:1059F000E89409C097FB3EF4909580957095619569\r
+:105A00007F4F8F4F9F4F9923A9F0F92F96E9BB271E\r
+:105A10009395F695879577956795B795F111F8CF9A\r
+:105A2000FAF4BB0F11F460FF1BC06F5F7F4F8F4F05\r
+:105A30009F4F16C0882311F096E911C0772321F0FB\r
+:105A40009EE8872F762F05C0662371F096E8862F93\r
+:105A500070E060E02AF09A95660F771F881FDAF7EA\r
+:105A6000880F9695879597F90895990F0008550F17\r
+:105A7000AA0BE0E8FEEF16161706E807F907C0F0D4\r
+:105A800012161306E407F50798F0621B730B840BDC\r
+:105A9000950B39F40A2661F0232B242B252B21F4B6\r
+:105AA00008950A2609F4A140A6958FEF811D811D56\r
+:105AB000089597F99F6780E870E060E008959FEF90\r
+:105AC00080EC089500240A94161617061806090695\r
+:105AD000089500240A941216130614060506089564\r
+:105AE000092E0394000C11F4882352F0BB0F40F4EC\r
+:105AF000BF2B11F460FF04C06F5F7F4F8F4F9F4F2C\r
+:105B0000089557FD9058440F551F59F05F3F71F0AD\r
+:105B10004795880F97FB991F61F09F3F79F0879514\r
+:105B20000895121613061406551FF2CF4695F1DF9D\r
+:105B300008C0161617061806991FF1CF869571052D\r
+:105B4000610508940895E894BB2766277727CB0161\r
+:105B500097F908958ADF08F48FEF08950BD0C0CF2E\r
+:105B6000B1DF28F0B6DF18F0952309F0A2CFA7CF58\r
+:105B70001124EACFC6DFA0F3959FD1F3950F50E033\r
+:105B8000551F629FF001729FBB27F00DB11D639FEF\r
+:105B9000AA27F00DB11DAA1F649F6627B00DA11D95\r
+:105BA000661F829F2227B00DA11D621F739FB00D3B\r
+:105BB000A11D621F839FA00D611D221F749F3327AB\r
+:105BC000A00D611D231F849F600D211D822F762F44\r
+:105BD0006A2F11249F5750408AF0E1F088234AF041\r
+:105BE000EE0FFF1FBB1F661F771F881F915050408D\r
+:105BF000A9F79E3F510570F05CCFA6CF5F3FECF355\r
+:105C0000983EDCF3869577956795B795F795E79578\r
+:105C10009F5FC1F7FE2B880F911D9695879597F989\r
+:105C20000895FA01EE0FFF1F30962105310599F115\r
+:105C30006115710561F48038BFE39B0749F16894F1\r
+:105C40009038810561F08038BFEF9B0741F09923C0\r
+:105C500042F5FF3FE1053105210511F1E894089473\r
+:105C6000E795D901AA2329F4AB2FBE2FF85FD0F313\r
+:105C700010C0FF5F70F4A695E0F7F73950F019F007\r
+:105C8000FF3A38F49F779F930CD00F9007FC905801\r
+:105C900008953EF014CF60E070E080E89FE308953F\r
+:105CA0004FE79F775F934F933F932F939ED02F9112\r
+:105CB0003F914F915F9152DF05C019F40EF0F9CE7C\r
+:105CC00042CFFDCE26DFC8F39638C0F707F80F9213\r
+:105CD000E8942BE33AEA48EB5FE74EDF0F920F922E\r
+:105CE0000F924DB75EB70F92C0D0ECEAF0E016D03D\r
+:105CF0004F915F91EF91FF91E595EE1FFF1F49F0E6\r
+:105D0000FE57E0684427EE0F441FFA95E1F74195EE\r
+:105D1000550B32D00F9007FE26C00895DF93CF9326\r
+:105D20001F930F93FF92EF92DF927B018C01689497\r
+:105D300005C0DA2EEF011EDFFE01E894A591259142\r
+:105D4000359145915591AEF3EF0162DDFE0197016A\r
+:105D5000A801DA9479F7DF90EF90FF900F911F91EF\r
+:105D6000CF91DF9108959B01AC0160E070E080E885\r
+:105D70009FE3A5CD9ECEACC0CCDEE8F39923D9F34A\r
+:105D8000940F511DBBF39150504094F059F088236B\r
+:105D900032F0660F771F881F91505040C1F79E3F29\r
+:105DA000510544F7880F911D9695879597F90895A9\r
+:105DB0005F3FACF0983E9CF0BB2786957795679542\r
+:105DC000B79508F4B1609395C1F7BB0F58F711F47C\r
+:105DD00060FFE8CF6F5F7F4F8F4F9F4FE3CFB4CE11\r
+:105DE0000EF076C06CCE689464CE93DEC8F399232F\r
+:105DF000D1F3C6F3DF93CF931F930F93FF92C92F75\r
+:105E0000DD2788232AF02197660F771F881FDAF78E\r
+:105E100020E030E040E85FEB9FE3883920F0803EEF\r
+:105E200030F021968F77E3DCE4EDF0E003C0DFDCB7\r
+:105E3000E1E0F1E073DF8B01BE01EC01FB2E6F5757\r
+:105E400071097595771F880B990BD4DD28E132E72E\r
+:105E500041E35FE38FDEAF2D9801AE01FF900F911C\r
+:105E60001F91CF91DF91D4DC3BCEFA01DC01AA0F68\r
+:105E7000BB1F9B01AC01BF5728F4222733274427BF\r
+:105E800050781FC0B75188F4AB2F00244695379542\r
+:105E90002795011CA395D2F3002069F0220F331F30\r
+:105EA000441FB395DAF30DD0A1CC61307105A0E8A1\r
+:105EB0008A07B94630F49B01AC016627772788270B\r
+:105EC0009078309621F02083318342835383089564\r
+:105ED0009F3F31F0915020F4879577956795B7955E\r
+:105EE000880F911D9695879597F90895AA1BBB1B5E\r
+:105EF00051E107C0AA1FBB1FA617B70710F0A61BCA\r
+:105F0000B70B881F991F5A95A9F780959095BC01EA\r
+:105F1000CD01089597FB072E16F4009407D077FD66\r
+:105F200009D00E94762F07FC05D03EF4909581950C\r
+:105F30009F4F0895709561957F4F0895F999FECF11\r
+:105F400092BD81BDF89A992780B50895A8E1B0E087\r
+:105F500042E050E00C94C12F262FF999FECF1FBAD2\r
+:105F600092BD81BD20BD0FB6F894FA9AF99A0FBE82\r
+:105F7000019608950E94AC2F272F0C94AD2FDC01C1\r
+:105F8000CB01FC01F999FECF06C0F2BDE1BDF89A44\r
+:105F9000319600B40D9241505040B8F70895F894EE\r
+:025FA000FFCF31\r
+:105FA2000507000C058540000001064000000100C5\r
+:105FB200D80B680C440C0F0CDB0B01600228081490\r
+:105FC2000A321E40004500250026006100600020C4\r
+:105FD2000037006400650066006700440046002444\r
+:105FE2000047000000020004000500070009000B42\r
+:105FF200000C000E0010001100130015001700180D\r
+:10600200001A001C001D001F00210023002400268E\r
+:1060120000280029002B002D002F00300032003410\r
+:10602200003500370039003B008803A103BA03D3CF\r
+:1060320003FB04AE04780458043F4D3620020302E9\r
+:10604200000001000101010101000101010203043C\r
+:0660520005060708090025\r
+:00000001FF\r
--- /dev/null
+:100000000C94DA040C941E050C941E050C941E0529\r
+:100010000C941E050C941E050C941E050C941E05D4\r
+:100020000C941E050C941E050C94B7180C94891999\r
+:100030000C94EC270C941E050C941E050C941E05C4\r
+:100040000C941E050C941E050C941E050C941E05A4\r
+:100050000C941E050C9454280C941E050C941E053B\r
+:100060000C941E050C941E050C941E050C941E0584\r
+:100070000C941E050C941E050C941E050C941E0574\r
+:100080000C94AD0E0C941E050C941E050C941E05CC\r
+:100090000C941E050C941E050C941E050C941E0554\r
+:1000A0000C941E050C941E050C941E0579058905FB\r
+:1000B0009B05AB05B105C005CC05D205E005E905FA\r
+:1000C000FA050A0610064006F619181A061B181A31\r
+:1000D000061B5D1A801A061BD51AE81AEB1DEB1DCC\r
+:1000E000281E281E821EC01E38213821D91E382104\r
+:1000F000DA1FDA1F9D20B4203821232107634236FE\r
+:10010000B79BD8A71A39685618AEBAAB558C1D3CA8\r
+:10011000B7CC5763BD6DEDFD753EF6177231BF006C\r
+:100120000000803F08000000BE922449123EABAAA6\r
+:10013000AA2ABECDCCCC4C3E00000080BEABAAAA01\r
+:10014000AA3E00000000BF000000803F0000000049\r
+:1001500000084178D3BB4387D1133D190E3CC3BD82\r
+:100160004282AD2B3E68EC8276BED98FE1A93E4C2F\r
+:1001700080EFFFBE01C4FF7F3F00000000002B00A6\r
+:1001800014001A000800150017001C0018000C00CD\r
+:10019000120013002A0029000400160007000900BD\r
+:1001A0000A000B000D000E000F0033003400E100C8\r
+:1001B0001D001B000600190005001100100036008C\r
+:1001C0003700380028000530E000E200E30003308B\r
+:1001D0002C002C0004305000510052004F002B0026\r
+:1001E00014001A00090013000A000D000F00180087\r
+:1001F0001C0033002A002900040015001600170017\r
+:1002000007000B00110008000C0012003400E10090\r
+:100210001D001B000600190005000E00100036002E\r
+:100220003700380028000530E000E200E30003302A\r
+:100230002C002C0004305000510052004F002B00C5\r
+:1002400034003600370013001C0009000A000600C5\r
+:1002500015000F002A0029000400120008001800F1\r
+:100260000C0007000B001700110016003800E10019\r
+:10027000330014000D000E001B00050010001A00D2\r
+:1002800019001D0028000530E000E200E300033003\r
+:100290002C002C0004305000510052004F00350259\r
+:1002A0001E021F0220022102220223022402250232\r
+:1002B000260227022A004C003A003B003C003D0089\r
+:1002C0003E003F002D022E022F02300231020100BB\r
+:1002D000400041004200430044004500010001008D\r
+:1002E0000100010001000100010001000100010006\r
+:1002F000010001000100AB00AA00A900AE0035001A\r
+:100300001E001F00200021002200230024002500E1\r
+:10031000260027002A004C003A003B003C003D002C\r
+:100320003E003F002D002E002F0030003100010064\r
+:10033000400041004200430044004500010001002C\r
+:1003400001000100010001000100010001000100A5\r
+:10035000010001000100AB00AA00A900AE000000EE\r
+:10036000000000000000000000000000000000008D\r
+:10037000000000000000000000000000000000007D\r
+:10038000000000000000000000000000000000006D\r
+:10039000000000000000000000000000000000005D\r
+:1003A000000000000000000000000000000003301A\r
+:1003B00000000000043000000000000000001E00EB\r
+:1003C0001E001E001E001E001E001E001E001E003D\r
+:1003D0001E001E001E00000014001A000800150078\r
+:1003E00017001C0018000C00120013002F00000062\r
+:1003F00004001600070009000A000B000D000E00A3\r
+:100400000F00330034000D3000000000060019001A\r
+:1004100000000000110010000000000000000000BB\r
+:1004200000000000000000000000000000000000CC\r
+:1004300000000000000000000000000000000000BC\r
+:1004400000000000000000000000000000000000AC\r
+:10045000000000000000000000000000000000009C\r
+:10046000000000000000000000000000000000008C\r
+:10047000000000000000000000000000000000007C\r
+:10048000000000000000000000000000000000006C\r
+:10049000000000000000000000000000000000005C\r
+:1004A000000000000000000000000000000000004C\r
+:1004B000000000000000000000000000000000003C\r
+:1004C000000000000000000000000000000000002C\r
+:1004D000000000000000000000000000000000001C\r
+:1004E000000000000000000000000000000000000C\r
+:1004F00000000000000000000000000000000000FC\r
+:1005000000000000000000000000000000000000EB\r
+:1005100000000000000000000000000000000000DB\r
+:1005200000000000000000000000000000000000CB\r
+:1005300000000000000000000000000000000000BB\r
+:1005400000000000000000000000000000000000AB\r
+:10055000000000000000000000000000000000009B\r
+:10056000000000000000000000000000000000008B\r
+:10057000000000000000000000000000000000007B\r
+:10058000000000000000000000000000000000006B\r
+:10059000000000000000000000000000000000005B\r
+:1005A000000000000000000000000000000000004B\r
+:1005B000000000000000000000000000000000003B\r
+:1005C000000000000000000000000000000000002B\r
+:1005D000000000000000000000000000000000001B\r
+:1005E000000000000000000000000000000000000B\r
+:1005F00000000000000000000000000000000000FB\r
+:1006000000000000000000000000000000000000EA\r
+:1006100000000000000000000000000000000000DA\r
+:1006200000000000000000000000000000000000CA\r
+:1006300000000000000000000000000000000000BA\r
+:1006400000000000000000000000000000000000AA\r
+:10065000000000000000000000000000000000009A\r
+:10066000000000000000000000000000000000008A\r
+:10067000000000000000000000000000000000007A\r
+:10068000000000000000000000000000000000006A\r
+:10069000000000000000000000000000000000005A\r
+:1006A000000000000000000000000000000000004A\r
+:1006B000000000000000000000000000000000003A\r
+:1006C000000000000000000000000000000000002A\r
+:1006D000000000000000000000000000000000001A\r
+:1006E000000000000000000000000000000000000A\r
+:1006F00000000000000000000000000000000000FA\r
+:1007000000000000000000000000000000000000E9\r
+:1007100000000000000000000000000000000000D9\r
+:1007200000000000000000000000000000000000C9\r
+:1007300000000000000000000000000000000000B9\r
+:1007400000000000000000000000000000000000A9\r
+:100750000000000000000000000000000000000099\r
+:100760000000000000000000000000000000000089\r
+:100770000000000000000000000000000000010078\r
+:100780000050010001000100010001000100010012\r
+:10079000010001004C00010001000100073006309B\r
+:1007A000135012500030013002300C3001000100B3\r
+:1007B0000B300A300930083001000100010001004F\r
+:1007C0000100010001000100010001000100010021\r
+:1007D00001000100010001000100010001002803E7\r
+:1007E000540068006500200050006C0061006E003D\r
+:1007F00063006B0020004B006500790062006F0011\r
+:1008000061007200640000002C034F00720074004D\r
+:1008100068006F006C0069006E0065006100720086\r
+:1008200020004B006500790062006F0061007200DB\r
+:100830006400730000000403090409026D00040150\r
+:1008400000A0FA09040000010301010009211101BF\r
+:100850000001223F000705810308000A0904010086\r
+:100860000103010200092111010001224D000705C9\r
+:10087000820308000A0904020001030000000921A4\r
+:10088000110100012236000705830308000A09044C\r
+:1008900003000103000000092111010001223900B9\r
+:1008A000070584031000011201100100000008ED8B\r
+:1008B000FE606001000102000105010906A10105B9\r
+:1008C0000719E029E7150025019508750181020542\r
+:1008D0000819012905950575019102950175039186\r
+:1008E0000105071900297715002501957875018103\r
+:1008F00002C005010980A101850216010026B7008A\r
+:100900001A01002AB700751095018100C0050C0975\r
+:1009100001A1018503160100269C021A01002A9CF0\r
+:1009200002751095018100C005010902A1010901AC\r
+:10093000A100050919012905150025019505750175\r
+:100940008102950175038101050109300931158185\r
+:10095000257F95027508810609381581257F950147\r
+:1009600075088106050C0A38021581257F950175E9\r
+:10097000088106C0C005010906A101050719E02983\r
+:10098000E71500250195087501810295017508811B\r
+:100990000105081901290595057501910295017553\r
+:1009A0000391010507190029FF150025FF9506751C\r
+:1009B000088100C011241FBECFEFDAE0DEBFCDBF3B\r
+:1009C00004B603FE24C08091690490916A04A0914A\r
+:1009D0006B04B0916C048730904BA740B04BB9F4D6\r
+:1009E0001092690410926A0410926B0410926C04C5\r
+:1009F00014BE84B7877F84BF88E10FB6F8948093D4\r
+:100A00006000109260000FBEE0E0F8E3099513E08B\r
+:100A1000A0E0B1E0E2E4F4E602C005900D92A23657\r
+:100A2000B107D9F714E0A2E6B3E001C01D92A936E0\r
+:100A3000B107E1F70E94FD150C941F320C940000E1\r
+:100A4000279A2F988FEF9FEF9093870080938600CF\r
+:100A50008AE08093800089E1809381000C94562D78\r
+:100A6000282F81110BC080918000877F80938000A8\r
+:100A700010928D0010928C002F9808952F988091DD\r
+:100A80008000886080938000233019F48FEF9FEFFF\r
+:100A90000FC083E090E0821B9109880F991F2FEF10\r
+:100AA0003FEFA90102C0569547958A95E2F7CA0122\r
+:100AB00090938D0080938C000895CF93DF93EC0189\r
+:100AC0000E94ED28BE0180E090E0DF91CF910C9470\r
+:100AD00018250F931F93462F50E04E30510508F014\r
+:100AE000DEC0DC01FA01EA5AFF4F12968C910C9499\r
+:100AF000E331882309F4D3C000E010E0980140E01E\r
+:100B000064E070E089E292E00E942B1281E090E0C4\r
+:100B10000FC0882309F4C3C000E010E0980140E052\r
+:100B200066E070E089EB91E00E942B1282E090E099\r
+:100B30000E945D05B4C0882309F4B1C000E010E054\r
+:100B4000980140E068E070E089EE91E00E942B128D\r
+:100B500084E090E0EDCF882311F083E005C083E0CE\r
+:100B60000CC0882349F084E00E94952540E164E0B0\r
+:100B700083E00E946D0A93C084E00E94B625F6CF00\r
+:100B8000882331F085EE0E947F1C0E94AD2D87C026\r
+:100B900085EE0E94471D83C0882309F480C00E940F\r
+:100BA000BF0D7DC0882309F47AC00E94B80D00E013\r
+:100BB00010E0980140E065E070E089E492E027C031\r
+:100BC000882309F46CC085E00E94B6250E94E00DE0\r
+:100BD00066C0882309F463C000E010E0980140E09B\r
+:100BE00068E070E089E191E00E942B1285E00E94AC\r
+:100BF000952555C0882309F452C00E94BE1200E01A\r
+:100C000010E0980140E068E070E089E191E00E9426\r
+:100C10002B1245C0882309F442C00E94C912EFCFAD\r
+:100C20008823E9F100E010E0980140E066E070E020\r
+:100C300089E891E00E942B1284E00E94B62583E0AF\r
+:100C40000E94B62580E10E94B62585E00E94B62567\r
+:100C50000E94E00D86E00E9495250E94DA2881110D\r
+:100C600002C00E94B6280E94F22890E09093680487\r
+:100C7000809367048068809367040E94F6280FC001\r
+:100C8000882369F000E010E0980140E066E070E041\r
+:100C900089E591E00E942B1286E00E94B62580E053\r
+:100CA00090E01F910F9108950F931F932FEF89EFFD\r
+:100CB00090E0215080409040E1F700C0000000E04B\r
+:100CC00010E0980140E065E070E089E492E00E9465\r
+:100CD0002B121F910F9108950F931F9300E010E0C6\r
+:100CE000980140E063E070E081E091E00E942B1207\r
+:100CF0002FEF82E597E0215080409040E1F700C05F\r
+:100D000000001F910F910895CF92DF92EF92FF9212\r
+:100D10000F931F93CF93DF93CDB7DEB7CC58D10994\r
+:100D20000FB6F894DEBF0FBECDBF2091210425FF82\r
+:100D3000C5C08C01FC01928180910001992309F4C6\r
+:100D400060C096E4EEE8F2E0DE01A95BBF4F0190DF\r
+:100D50000D929A95E1F7F8019081E0916203F0918C\r
+:100D60006303E90FF11DEE0FFF1F27E430E02C0FA6\r
+:100D70003D1FE20FF31F60817181680F711D88278D\r
+:100D800077FD8095982F0E94F12E20E030E040E41E\r
+:100D900051E40E94562E6B017C01F801218184E010\r
+:100DA00090E0821B9109BC01882777FD8095982FE0\r
+:100DB0000E94F12E9B01AC01C701B6010E94EE2DED\r
+:100DC0009B01AC0160E070E080E090E40E94643040\r
+:100DD00020E030E04CE551E40E9401304FE050E06B\r
+:100DE000C457DF4F0FB6F894DEBF0FBECDBFDF9103\r
+:100DF000CF911F910F91FF90EF90DF90CF900C94C7\r
+:100E0000CB1196E4EEE8F2E0DE01119601900D922E\r
+:100E10009A95E1F7F8019081E0916203F091630304\r
+:100E2000E90FF11DEE0FFF1F21E030E02C0F3D1FF9\r
+:100E3000E20FF31F60817181680F711D882777FDB4\r
+:100E40008095982F0E94F12E20E030E040E451E49C\r
+:100E50000E94562E6B017C01F801218184E090E014\r
+:100E6000821B9109BC01882777FD8095982F0E94ED\r
+:100E7000F12E9B01AC01C701B6010E94EE2D9B0132\r
+:100E8000AC0160E070E080E090E40E94643020E01B\r
+:100E900030E04CE551E40E940130C457DF4F0FB6FB\r
+:100EA000F894DEBF0FBECDBFDF91CF911F910F91A0\r
+:100EB000FF90EF90DF90CF900C94130EC457DF4F4C\r
+:100EC0000FB6F894DEBF0FBECDBFDF91CF911F915B\r
+:100ED0000F91FF90EF90DF90CF90089508950E94BA\r
+:100EE00020056E9A769A0C9454060C946E070C9416\r
+:100EF00084060895880F991FFC01E250F040859107\r
+:100F000094910895880F991FFC01E258FE4F859136\r
+:100F1000949108950F931F93CF93DF93EC01811564\r
+:100F200020E49207A0F5C11580E3D80708F0E1C0DE\r
+:100F3000C83ED105D8F4C03ED10508F0EEC1C83A8C\r
+:100F4000D10578F4C53AD10508F074C0C130D10597\r
+:100F500009F46DC008F4DEC1C430D10508F0DDC16C\r
+:100F6000D9C1CB3BD10508F470C0D4C1C11590E202\r
+:100F7000D90708F0B9C0C11521E0D20708F0CDC1EA\r
+:100F8000C03FD10508F4C6C18E01106506C2C1304C\r
+:100F900080E5D80709F4BDC068F5C13120E4D20767\r
+:100FA00009F4AEC050F4C03190E4D90708F0A5C0F0\r
+:100FB000CF70DD278E01146DF0C1C33120E4D2075C\r
+:100FC00009F4A4C008F49FC0C115D04509F0A2C11E\r
+:100FD0000E945C210E94E00D0E946C069FEF24E3BA\r
+:100FE0008CE0915020408040E1F700C000000E945A\r
+:100FF0007928D3C1C11520E6D20730F4C11581E5A7\r
+:10100000D80708F48CC02DC1C11590E7D90708F4A2\r
+:1010100081C1C11520E8D20708F478C1C11580E963\r
+:10102000D80708F077C1DF708E01106AB6C101E001\r
+:1010300010E0B3C1C53AD10509F471C1C63AD10572\r
+:1010400009F070C102E810E4A8C1C83AD10509F45A\r
+:101050006CC1C93AD10509F46BC1CA3AD10509F48A\r
+:101060006AC1CB3AD10509F469C1CC3AD10509F47A\r
+:1010700068C1CD3AD10509F467C1C03BD10509F477\r
+:1010800066C1CE3AD10509F465C1CF3AD10509F45C\r
+:1010900064C1C13BD10509F463C1C23BD10509F468\r
+:1010A00062C1C33BD10509F461C1C43BD10509F458\r
+:1010B00060C1C53BD10509F45FC1C63BD10509F448\r
+:1010C0005EC1C73BD10509F45DC1C83BD10509F438\r
+:1010D0005CC1C93BD10509F45BC1CA3BD10509F428\r
+:1010E0005AC100E014E459C1CE019F700E948207EA\r
+:1010F00055C1DD278E01106C50C100E011ED4DC1CE\r
+:1011000000E010ED4AC100E012ED47C100E013ED30\r
+:1011100044C180913D04816080933D043EC10E94A2\r
+:10112000DA28811102C00E94B6280E94F22890E0BD\r
+:101130009093680480936704C23090E5D90721F446\r
+:1011400080916704816086C0C43020E5D20721F415\r
+:101150008091670482607EC0C63080E5D80721F4A4\r
+:1011600080916704846076C0C83090E5D90719F48F\r
+:101170008091670427C0CA3020E5D20721F480910E\r
+:101180006704806167C0CC3080E5D80721F4809186\r
+:10119000670480625FC0CE3090E5D90721F480916A\r
+:1011A0006704806457C0C03120E5D20721F48091E4\r
+:1011B000670480684FC0C23180E5D80729F4809168\r
+:1011C00067048460886046C0C33090E5D90721F485\r
+:1011D000809167048E7F3EC0C53020E5D20721F4A0\r
+:1011E000809167048D7F36C0C73080E5D80721F431\r
+:1011F000809167048B7F2EC0C93090E5D90719F420\r
+:101200008091670426C0CB3020E5D20721F480917D\r
+:1012100067048F7E1FC0CD3080E5D80721F4809110\r
+:1012200067048F7D17C0CF3090E5D90721F48091F6\r
+:1012300067048F7B0FC0C13120E5D20721F4809174\r
+:1012400067048F7707C0C331D04531F480916704BC\r
+:101250008B7F877F80936704809167040E94F628C4\r
+:101260009CC08D2F99278F70992781309105D9F4D3\r
+:101270009E012370332702C0880F991F2A95E2F739\r
+:101280009C688E0144E0000F111F4A95E1F700278A\r
+:101290001370802B912B53E0CC0FDD1F5A95E1F793\r
+:1012A000C076DD272FC08230910531F4DC2FCC27AA\r
+:1012B0008E01016F106A71C08330910569F4CE010F\r
+:1012C0008370992701E010E002C0000F111F8A957A\r
+:1012D000E2F7C8019C680FC0049709F05EC0CE0118\r
+:1012E0008370992701E010E002C0000F111F8A955A\r
+:1012F000E2F7C8019A6823E0CC0FDD1F2A95E1F7D9\r
+:10130000C07ED7708C010C2B1D2B47C0DF708E0167\r
+:10131000106243C000E010E040C08E013EC001E812\r
+:1013200010E43BC003E810E438C002EE14E435C01A\r
+:1013300009EE14E432C00AEE14E42FC005EB14E405\r
+:101340002CC006EB14E429C007EB14E426C00CEC17\r
+:1013500014E423C00DEC14E420C003E815E41DC020\r
+:101360000AE815E41AC002E915E417C004E915E417\r
+:1013700014C001E216E411C003E216E40EC004E258\r
+:1013800016E40BC005E216E408C006E216E405C048\r
+:1013900007E216E402C00AE216E4C801DF91CF9129\r
+:1013A0001F910F9108959CE0799FF001112490E323\r
+:1013B000899FE00DF11D1124E60FF11DEE0FFF1FB7\r
+:1013C000E258FE4F85919491803E9105E0F4803C77\r
+:1013D000910558F58133910509F46FC048F48932BD\r
+:1013E000910509F463C08A32910509F46DC072C099\r
+:1013F00089339105E9F082389105D1F08533910563\r
+:1014000009F44DC067C0833E910581F138F4803EF8\r
+:101410009105B9F0823E9105D9F05CC0863E9105F8\r
+:1014200061F1873E9105A1F155C00E947A070895A8\r
+:101430002091670420FD02C021FF4CC080EE90E0A7\r
+:1014400049C08091670480FFF9CF89E390E042C0F2\r
+:101450008091670482FF0EC08091670484FF03C0FF\r
+:1014600080E090E037C083EE90E034C08091670464\r
+:1014700082FFF2CF82EE90E02DC08091670483FF5F\r
+:101480000BC08091670484FDEBCF87EE90E022C013\r
+:101490008091670483FFF5CF86EE90E01BC08091BA\r
+:1014A000670485FF07C089E290E014C0809167045B\r
+:1014B00085FFF9CF85E390E00DC08091670486FF3A\r
+:1014C00007C08AE290E006C08091670486FFF9CFEA\r
+:1014D00081E390E00E948A070895CF92DF92EF9215\r
+:1014E000FF920F931F9301E010E020E030E06801CD\r
+:1014F000790104C0CC0CDD1CEE1CFF1C8A95D2F7D0\r
+:1015000004C0000F111F221F331F6A95D2F70C2948\r
+:101510001D292E293F29C0902104D0902204E0905B\r
+:101520002304F0902404C022D122E222F322842F4B\r
+:10153000C016D106E206F30641F41F910F91FF9009\r
+:10154000EF90DF90CF900C9495251F910F91FF9015\r
+:10155000EF90DF90CF900C94B62508950C94AD0ACF\r
+:101560005F926F927F928F929F92AF92BF92CF9233\r
+:10157000DF92EF92FF920F931F93CF93DF93CDB73C\r
+:10158000DEB728970FB6F894DEBF0FBECDBFCE01F1\r
+:1015900001966C014E0199E0890E911C20E030E02B\r
+:1015A00040E050E060E070E000E010E0E12CF12C61\r
+:1015B0006C2C5D2C88E0782EAA24A394B12CE4ED49\r
+:1015C000F2E0A62DB52D872D01900D928A95E1F7B9\r
+:1015D000F601819191916F01FC01E07FFF27E032DC\r
+:1015E000F10559F48F709927F50102C0EE0FFF1F26\r
+:1015F0008A95E2F7EE2AFF2A37C0E033F10559F465\r
+:101600008F709927F50102C0EE0FFF1F8A95E2F750\r
+:101610000E2B1F2B29C0E034F10559F48F70992748\r
+:10162000F50102C0EE0FFF1F8A95E2F76E2B7F2BAC\r
+:101630001BC0E035F10559F48F709927F50102C000\r
+:10164000EE0FFF1F8A95E2F74E2B5F2B0DC0E036A1\r
+:10165000F10551F48F709927F50102C0EE0FFF1FBD\r
+:101660008A95E2F72E2B3F2BC814D90409F0A7CF97\r
+:1016700084B19E2D9095892384B985B1E82AE5B877\r
+:1016800087B1902F9095892387B988B1082B08B925\r
+:101690008AB1962F909589238AB98BB1682B6BB943\r
+:1016A0008DB1942F909589238DB98EB1482B4EB969\r
+:1016B00080B3922F9095892380BB81B3282B21BBC7\r
+:1016C00028960FB6F894DEBF0FBECDBFDF91CF9145\r
+:1016D0001F910F91FF90EF90DF90CF90BF90AF9050\r
+:1016E0009F908F907F906F905F9008955F926F9220\r
+:1016F0007F928F929F92AF92BF92CF92DF92EF92A2\r
+:10170000FF920F931F93CF93DF93CDB7DEB7689708\r
+:101710000FB6F894DEBF0FBECDBF85B7806885BF1A\r
+:1017200085B7806885BF0E94B00ACE0101966C0122\r
+:101730004E0199E1890E911C20E030E040E050E03C\r
+:1017400060E070E000E010E0E12CF12C6C2C5D2CEE\r
+:1017500088E1782EAA24A394B12CECEDF2E0A62D1A\r
+:10176000B52D872D01900D928A95E1F7F6018191B3\r
+:1017700091916F01FC01E07FFF27E032F10559F400\r
+:101780008F709927F50102C0EE0FFF1F8A95E2F7CF\r
+:10179000EE2AFF2A37C0E033F10559F48F709927FC\r
+:1017A000F50102C0EE0FFF1F8A95E2F70E2B1F2BEB\r
+:1017B00029C0E034F10559F48F709927F50102C072\r
+:1017C000EE0FFF1F8A95E2F76E2B7F2B1BC0E035D3\r
+:1017D000F10559F48F709927F50102C0EE0FFF1F34\r
+:1017E0008A95E2F74E2B5F2B0DC0E036F10551F4E0\r
+:1017F0008F709927F50102C0EE0FFF1F8A95E2F75F\r
+:101800002E2B3F2BC814D90409F0A7CF84B19E2DED\r
+:101810009095892384B985B1E82AE5B887B1902FDE\r
+:101820009095892387B988B1082B08B98AB1962F7A\r
+:10183000909589238AB98BB1682B6BB98DB1942FA0\r
+:10184000909589238DB98EB1482B4EB980B3922FD4\r
+:101850009095892380BB81B3282B21BB10926D0307\r
+:1018600010926C03109265031092640310926F0340\r
+:1018700010926E0310926703109266031092710328\r
+:101880001092700310926903109268031092730310\r
+:101890001092720310926B0310926A0368960FB64F\r
+:1018A000F894DEBF0FBECDBFDF91CF911F910F9196\r
+:1018B000FF90EF90DF90CF90BF90AF909F908F9070\r
+:1018C0007F906F905F900C946F077F928F929F92A2\r
+:1018D000AF92BF92CF92DF92EF92FF920F931F933E\r
+:1018E000CF93DF93CDB7DEB7A0970FB6F894DEBFE6\r
+:1018F0000FBECDBF6E0149E1C40ED11C84E6E82EB7\r
+:1019000083E0F82E98E0792EBC2CAD2C01E010E09D\r
+:1019100028E1822E35E0932EE4EDF2E0AB2DBA2DD6\r
+:10192000872D01900D928A95E1F7F60181919191B1\r
+:101930006F019C01207F33272032310591F424B1BF\r
+:101940008F709927A80102C0440F551F8A95E2F7AE\r
+:10195000CA01922F982B94B995B18095892385B9A6\r
+:1019600053C02033310591F427B18F709927F801C6\r
+:1019700002C0EE0FFF1F8A95E2F7CF01922F982B3E\r
+:1019800097B998B18095892388B93EC02034310534\r
+:1019900091F42AB18F709927A80102C0440F551FF6\r
+:1019A0008A95E2F7CA01922F982B9AB99BB180953C\r
+:1019B00089238BB929C02035310591F42DB18F7061\r
+:1019C0009927F80102C0EE0FFF1F8A95E2F7CF01B9\r
+:1019D000922F982B9DB99EB1809589238EB914C002\r
+:1019E0002036310589F420B38F709927A80102C0F1\r
+:1019F000440F551F8A95E2F7CA01922F982B90BB8E\r
+:101A000091B38095892381BB50EA5A95F1F7BE01C5\r
+:101A10006F5F7F4F20E030E040E050E0ECEDF2E01F\r
+:101A2000DE011196882D01900D928A95E1F7FB0158\r
+:101A300081919191BF01FC01E07FFF27E032F10528\r
+:101A400011F4E3B113C0E033F10511F4E6B10EC0B7\r
+:101A5000E034F10511F4E9B109C0E035F10511F404\r
+:101A6000ECB104C0E036F105B9F4EFB1F0E08F70ED\r
+:101A7000992702C0F595E7958A95E2F7E0FD08C041\r
+:101A8000C801042E02C0880F991F0A94E2F702C011\r
+:101A900080E090E0282B392B4F5F5F4F4C30510591\r
+:101AA00009F0BCCFF701808191818217930721F063\r
+:101AB00031832083909271020E94B00AF2E0EF0E0F\r
+:101AC000F11C4CE6E41643E0F40609F025CF8091C2\r
+:101AD0007102882361F1815080937102882339F06B\r
+:101AE0008FE99FE00197F1F700C0000020C08091CE\r
+:101AF00064039091650390936D0380936C038091D0\r
+:101B000066039091670390936F0380936E038091B7\r
+:101B1000680390916903909371038093700380919F\r
+:101B20006A0390916B0390937303809372030E94F6\r
+:101B3000750781E0A0960FB6F894DEBF0FBECDBF4B\r
+:101B4000DF91CF911F910F91FF90EF90DF90CF9099\r
+:101B5000BF90AF909F908F907F900895E82FF0E016\r
+:101B6000EE0FFF1FE459FC4F808191810895089585\r
+:101B7000809152048160809352040C9408298091D2\r
+:101B800052048E7F809352040C9408290E94DA2814\r
+:101B9000811102C00E94B6280E9404298093520439\r
+:101BA0003E9A809171008D7F8093710082E08093D6\r
+:101BB00090008AE18093910081E0809376030895FC\r
+:101BC00080917603811102C00E94C60D1092C60357\r
+:101BD0001092C503809171008D7F80937100809178\r
+:101BE00090008F7780939000109288031092870363\r
+:101BF0001092BF031092C0031092C1031092C2034F\r
+:101C00001092BE031092BD03EDE9F3E0ADE8B3E03E\r
+:101C100011921192119211921D921D9283E0ED3B4F\r
+:101C2000F807B1F70895CF92DF92EF92FF920F93EA\r
+:101C30001F93CF93DF9320918703222309F484C05D\r
+:101C40006B017C0180917603811102C00E94C60D58\r
+:101C50000DEB13E0C7E0D0E0A7019601F8019291E7\r
+:101C60008291729162918F010E94522E811131C036\r
+:101C7000FE01EE0FFF1FEE0FFF1FE356FC4F108219\r
+:101C8000118212821382DE01AA0FBB1FA357BC4F21\r
+:101C900011961C921E92C730D105E9F0219644811D\r
+:101CA0005581668177814083518362837383148277\r
+:101CB00015821682178212968D919C911397119618\r
+:101CC0009C938E9313961C921E92129734961296A2\r
+:101CD000E2CF219708F68091C5039091C603019742\r
+:101CE00097FD05C09093C6038093C50304C010926E\r
+:101CF000C6031092C5038091C5039091C60320913D\r
+:101D0000C3033091C4032817390724F01092C40389\r
+:101D10001092C303892BC1F4809171008D7F809351\r
+:101D20007100809190008F77809390001092BF0394\r
+:101D30001092C0031092C1031092C2031092BE030E\r
+:101D40001092BD0310928703DF91CF911F910F91E5\r
+:101D5000FF90EF90DF90CF9008951F920F920FB6F3\r
+:101D60000F9211244F925F926F927F928F929F9267\r
+:101D7000AF92BF92CF92DF92EF92FF922F933F9359\r
+:101D80004F935F936F937F938F939F93AF93BF9383\r
+:101D9000CF93DF93EF93FF9380918703882309F418\r
+:101DA0009BC1C091C503D091C6031C161D060CF043\r
+:101DB00093C14090770350907803609079037090BE\r
+:101DC0007A0320E030E0A901C301B2010E94FD2F97\r
+:101DD00018160CF065C0C130D10509F452C08091CD\r
+:101DE000C3039091C403BE010E94CF317C01909344\r
+:101DF000C4038093C3038090890390908A03A090CA\r
+:101E00008B03B0908C0320E030E040E85FE3C50135\r
+:101E1000B4010E94EE2D6093890370938A0380932E\r
+:101E20008B0390938C03F701EE0FFF1FEE0FFF1F44\r
+:101E3000E356FC4FA30192016081718182819381FD\r
+:101E40000E94562E20E030E040E05EE30E94013028\r
+:101E50009B01AC01C501B4010E94FD2F18168CF442\r
+:101E6000C7010196BE010E94CF319093C4038093B5\r
+:101E7000C3031092890310928A0310928B0310926D\r
+:101E80008C03E091C303F091C403EE0FFF1FEE0F2C\r
+:101E9000FF1FE356FC4F6081718182819381D0C026\r
+:101EA000C090BF03D090C003E090C103F090C20384\r
+:101EB00020E030E0A901C701B6010E94522E21970F\r
+:101EC000882309F4A2C0FE01EE0FFF1FEE0FFF1FD3\r
+:101ED000E356FC4F80809180A280B380A5019401DD\r
+:101EE000C701B6010E94522E87FF31C0A50194019F\r
+:101EF00060E070E08CED93EC0E94562E20E030E024\r
+:101F000040E451E40E94562E20E030E040E05FE3E0\r
+:101F10000E9401309B01AC0160E070E080E090E441\r
+:101F20000E9464309B01AC01C501B4010E940130E4\r
+:101F30009B01AC01C701B6010E94522E87FF07C06A\r
+:101F4000A701960160E070E08CED93E439C0A50133\r
+:101F50009401C701B6010E94FD2F18160CF055C060\r
+:101F6000A501940160E070E08CED93E40E94562E90\r
+:101F700020E030E040E451E40E94562E20E030E0C2\r
+:101F800040E05FE30E9401309B01AC0160E070E043\r
+:101F900080E090E40E9464309B01AC01C501B40173\r
+:101FA0000E9401309B01AC01C701B6010E94FD2FC8\r
+:101FB00018165CF5A701960160E070E08CED93ECDB\r
+:101FC0000E94562E20E030E040E451E40E94562E5C\r
+:101FD00020E030E040E05FE30E9401309B01AC0173\r
+:101FE00060E070E080E090E40E9464309B01AC010E\r
+:101FF000C701B6010E9401306093BF037093C00314\r
+:102000008093C1039093C20313C0FE01EE0FFF1F24\r
+:10201000EE0FFF1FE356FC4F80819181A281B381B7\r
+:102020008093BF039093C003A093C103B093C203F6\r
+:102030006091BF037091C0038091C1039091C2036E\r
+:1020400020917403309175032F3F4FEF340731F027\r
+:102050002F5F3F4F30937503209374030E94D41277\r
+:102060006B017C0120E034E244EF51E40E94522EE7\r
+:1020700087FF08C086EFC82E88E2D82E84EFE82EAE\r
+:1020800081E4F82E20E030E040E051E4C701B601E1\r
+:102090000E9401309B01AC0160E074E284E79BE4A4\r
+:1020A0000E94562E6B017C010E94BE2E70939700F9\r
+:1020B00060939600209172023091730240917402F5\r
+:1020C00050917502C701B6010E9401300E94BE2ED8\r
+:1020D000709399006093980080918803882309F495\r
+:1020E00033C1C0908303D0908403E0908503F090C7\r
+:1020F000860320E030E0A901C701B6010E94FD2F50\r
+:102100001816D4F580917403909175038F3F2FEFCB\r
+:10211000920729F001969093750380937403C70189\r
+:10212000B6010E94D41220E030E040E051E40E9469\r
+:1021300001309B01AC0160E074E284E79BE40E9403\r
+:10214000562E6B017C010E94BE2E70939700609307\r
+:102150009600209172023091730240917402509166\r
+:102160007502C701B6010E9401300E94BE2E709315\r
+:1021700099006093980008C0109297001092960002\r
+:10218000109299001092980060917D0370917E03E7\r
+:102190006F5F7F4F70937E0360937D032091960065\r
+:1021A0003091970080E090E0232BF1F0C0919600F1\r
+:1021B000D09197000E94EF2E6B017C01BE0180E060\r
+:1021C00090E00E94EF2E9B01AC0160917F03709123\r
+:1021D000800380918103909182030E94562E20E01B\r
+:1021E0003FEF4FE757E410C00E94EF2E6B017C01D8\r
+:1021F00020E030EE4FEF54E460917F037091800354\r
+:1022000080918103909182030E9401309B01AC0177\r
+:10221000C701B6010E94FD2F87FD96C080917B0308\r
+:102220008F5F80937B0390E020914E0430914F04A8\r
+:1022300082179307A0F080915904882319F0109217\r
+:102240007B030DC0809171008D7F80937100809120\r
+:1022500090008F7780939000109288037DC08091CA\r
+:102260007C03C0917B03811128C0C0905304D0909F\r
+:102270005404E0905504F090560420E030E0A901A9\r
+:10228000C701B6010E94FD2F1816BCF481E08093AF\r
+:102290007C031092830310928403109285031092A2\r
+:1022A0008603C0927F03D0928003E0928103F09274\r
+:1022B0008203C150C0937B0343C010927C031092F1\r
+:1022C000750310927403E0915004F091510448E0BA\r
+:1022D000C49FE00DF11D112480819181A281B38101\r
+:1022E0008093830390938403A0938503B093860324\r
+:1022F00020E030E040E85EE364817581868197816B\r
+:102300000E9401306B017C0120E030E048EC52E497\r
+:1023100060917602709177028091780290917902B3\r
+:102320000E94562E9B01AC01C701B6010E940130EC\r
+:1023300060937F0370938003809381039093820363\r
+:1023400010927E0310927D038091520480FD04C0A0\r
+:102350001092880310928703FF91EF91DF91CF9144\r
+:10236000BF91AF919F918F917F916F915F914F91AD\r
+:102370003F912F91FF90EF90DF90CF90BF90AF9063\r
+:102380009F908F907F906F905F904F900F900FBEB7\r
+:102390000F901F901895CF92DF92EF92FF92CF93FC\r
+:1023A000DF936B017C01EA0180917603811102C009\r
+:1023B0000E94C60D8091520480FF46C08091C503E3\r
+:1023C0009091C60308970CF03FC0809171008D7FFB\r
+:1023D000809371008091880381110E94E00D81E05B\r
+:1023E00080938703109275031092740320E030E00D\r
+:1023F000A901C701B6010E94FD2F1816DCF48091D7\r
+:10240000C5039091C603FC01EE0FFF1FEE0FFF1FE7\r
+:10241000E356FC4FC082D182E282F382FC01EE0FD0\r
+:10242000FF1FE357FC4FD183C08301969093C603EF\r
+:102430008093C503809171008260809371008091C8\r
+:102440009000806880939000DF91CF91FF90EF9093\r
+:10245000DF90CF9008958F929F92AF92BF92CF92CC\r
+:10246000DF92EF92FF920F931F93CF93DF93EC01D4\r
+:102470007B01D42E4801590180917603811102C05D\r
+:102480000E94C60D8091520480FF6BC08091710044\r
+:102490008D7F809371008091870381110E94E00DF0\r
+:1024A00081E080938803D0935104C0935004F0924C\r
+:1024B0004F04E0924E04D0925904809253049092BB\r
+:1024C0005404A0925504B0925604109289031092BD\r
+:1024D0008A0310928B0310928C0310927B038881E5\r
+:1024E0009981AA81BB818093830390938403A093F5\r
+:1024F0008503B093860320E030E040E85EE36C8122\r
+:102500007D818E819F810E9401306B017C0120E0E2\r
+:1025100030E048EC52E4609176027091770280914D\r
+:102520007802909179020E94562E9B01AC01C7015E\r
+:10253000B6010E94013060937F0370938003809303\r
+:1025400081039093820310927E0310927D03809109\r
+:102550007100826080937100809190008068809308\r
+:102560009000DF91CF911F910F91FF90EF90DF903E\r
+:10257000CF90BF90AF909F908F9008958091C703A8\r
+:1025800090E0019666E070E00E94CF318093C7032F\r
+:1025900008958091C70390E0019766E070E00E9483\r
+:1025A000CF318093C70308958F929F92AF92BF92CD\r
+:1025B000CF92DF92EF92FF920F931F93CF93DF930F\r
+:1025C0006B017C01C0917403D0917503BE0180E062\r
+:1025D00090E00E94EF2E4B015C01A701960160E0A4\r
+:1025E00070E08CE594E40E94562E9B01AC01C5017D\r
+:1025F000B4010E9401300E94C32E2091C7032330F2\r
+:1026000009F473C028F4222351F02130E9F02CC1E1\r
+:10261000243009F4A0C0253009F4E0C025C180E0D1\r
+:1026200090E0A0E0BFE38093720290937302A093C6\r
+:102630007402B0937502109277031092780310928F\r
+:10264000790310927A0310C11092770310927803E5\r
+:102650001092790310927A036431710540F46A3064\r
+:10266000710560F520E030E040E85EE32BC0693C96\r
+:10267000710508F0AAC080E090E00E94EF2E20E0F3\r
+:1026800030E040EA51E40E94ED2D20E030E044E3E8\r
+:1026900053E40E94562E9B01AC010E94013020E0C1\r
+:1026A00030E040E05EE30E9401309B01AC0160E05D\r
+:1026B00070E080E09EE30E94ED2D44C020E030E019\r
+:1026C00040E05FE3C701B6010E9401306B017C016D\r
+:1026D00080E090E0A0E0BEE38093720290937302EA\r
+:1026E000A0937402B0937502BFC01092770310924A\r
+:1026F00078031092790310927A034AE0469F900182\r
+:10270000479F300D1124C90168EB7BE00E94BB316B\r
+:10271000BC016C5D754077FF03C0719561957109CF\r
+:10272000882777FD8095982F0E94F12E2EE333ECB9\r
+:102730004EE259E30E94013020E030E040EC5EE3DD\r
+:102740000E94EE2D60937202709373028093740264\r
+:102750009093750289C010927703109278031092BB\r
+:10276000790310927A03CE0183709927892BE1F0C7\r
+:10277000BE016170772780E090E00E94EF2E20E09C\r
+:1027800030E040E05EE30E94013020E030E040E4D1\r
+:102790005FE30E94EE2D6093720270937302809348\r
+:1027A0007402909375020CC080E090E0A0E0BFE35B\r
+:1027B0008093720290937302A0937402B093750297\r
+:1027C000C770DD27CD2B09F04FC010927202109216\r
+:1027D0007302109274021092750246C01092770331\r
+:1027E000109278031092790310927A0300E010E0BF\r
+:1027F00020E03FE30093720210937302209374026F\r
+:10280000309375026739710578F180E090E00E949D\r
+:10281000EF2E20E030E047E153E40E94ED2D20E070\r
+:1028200030E04AE754E40E94562E20E030E048E4CD\r
+:1028300052E40E94013020E030E040EA51E40E947E\r
+:10284000332F0E94BE2E660F771F660F771FFB0186\r
+:10285000EC50FD4F2081318142815381C701B60187\r
+:102860000E9401306B017C01C701B601DF91CF915D\r
+:102870001F910F91FF90EF90DF90CF90BF90AF909E\r
+:102880009F908F9008958091D8030895CF93DF9300\r
+:1028900000D01F92CDB7DEB79C0180915E048430DA\r
+:1028A00019F593E099833B832A839093E9008FEF96\r
+:1028B0009091E800815095FD06C095ED9A95F1F74D\r
+:1028C00000008111F5CF8091E80085FF0DC040E048\r
+:1028D00050E063E070E0CE0101960E94A71680915F\r
+:1028E000E8008E778093E8000F900F900F90DF91B3\r
+:1028F000CF910895CF93DF9300D01F92CDB7DEB76D\r
+:1029000020915E04243021F522E029839B838A8371\r
+:1029100083E08093E9008FEF9091E800815095FD6E\r
+:1029200006C095ED9A95F1F700008111F5CF8091E1\r
+:10293000E80085FF0DC040E050E063E070E0CE01AC\r
+:1029400001960E94A7168091E8008E778093E80098\r
+:102950000F900F900F90DF91CF91089520915E041A\r
+:102960002430F1F422E02093E9002FEF3091E800C9\r
+:10297000215035FD06C035ED3A95F1F700002111E3\r
+:10298000F5CF2091E80025FF0BC040E050E065E066\r
+:1029900070E00E94A7168091E8008E778093E8008F\r
+:1029A0000895CF93DF93EC0190915E04943009F089\r
+:1029B00046C0809184028823D9F0809185028823C3\r
+:1029C000B9F09093E9008FEF9091E800815095FD68\r
+:1029D00006C095E19A95F1F700008111F5CF80913D\r
+:1029E000E80085FF2CC040E050E060E170E017C0D7\r
+:1029F00081E08093E9008FEF9091E800815095FD90\r
+:102A000006C095ED9A95F1F700008111F5CF809100\r
+:102A1000E80085FF14C040E050E068E070E0CE01BF\r
+:102A20000E94A7168091E8008E778093E80080E1ED\r
+:102A3000FE01A8ECB3E001900D928A95E1F7DF91D9\r
+:102A4000CF91089580915D04811109C00E943C18C6\r
+:102A50000E9499188091E20084608093E2000895BA\r
+:102A600010925D040895089508950C94E12742E0C2\r
+:102A700061EC81E00E94B61742E061EC82E00E94C6\r
+:102A8000B61742E061EC83E00E94B61742E161ECC8\r
+:102A900084E00C94B61780916004833009F455C02B\r
+:102AA00030F4813071F0823009F48EC008958A309C\r
+:102AB00009F47AC08B3009F460C0893009F09CC0F9\r
+:102AC00020C080915F04813A09F096C08091E800AF\r
+:102AD000877F8093E8008091630490916404892B40\r
+:102AE00021F460E188EC93E003C060E080E090E0D6\r
+:102AF00070E00E94F2168091E8008B778093E800E6\r
+:102B0000089580915F04813209F076C0809163045A\r
+:102B100090916404009719F0039709F06DC08091BB\r
+:102B2000E800877F8093E8008091E80082FD05C07F\r
+:102B300080915E048111F8CF5FC08091F100809395\r
+:102B4000D8038091E8008B7753C080915F04813A6D\r
+:102B500009F052C08091630490916404892B09F0BC\r
+:102B60004BC08091E800877F8093E8008091E80067\r
+:102B700080FFFCCF8091840236C080915F04813257\r
+:102B8000D9F58091630490916404892BA9F5809113\r
+:102B9000E800877F8093E8000E94EB178091610432\r
+:102BA000809384020C945C2180915F04813221F532\r
+:102BB0008091E800877F8093E8000E94EB17809166\r
+:102BC00062048093D903089580915F04813AA1F44F\r
+:102BD0008091E800877F8093E8008091E80080FF83\r
+:102BE000FCCF8091D9038093F1008091E8008E772B\r
+:102BF0008093E8000C94EB17089584B7877F84BF17\r
+:102C000088E10FB6F89480936000109260000FBEC8\r
+:102C100090E080E80FB6F894809361009093610093\r
+:102C20000FBE0E948E1B0E943C180E949918809132\r
+:102C3000E20084608093E20078940E941F1B0E944F\r
+:102C4000901B8AE792E00E943A1B80915E048530D7\r
+:102C500069F40E949B2780915C048823B1F30E9451\r
+:102C6000C927882391F30E949116EFCF0E94981BE9\r
+:102C7000ECCF292F332723303105C9F064F42130FC\r
+:102C8000310581F02230310509F043C08DE690E036\r
+:102C90002AE338E042C021323105F1F02232310519\r
+:102CA00041F137C082E190E027EA38E036C0992749\r
+:102CB0008130910541F08230910541F0892B49F531\r
+:102CC000E6E3F8E005C0E8E0F8E002C0EEEDF7E08A\r
+:102CD000849190E09F0121C06430D8F4E62FF0E0A9\r
+:102CE000EE0FFF1FE05BFC4F2081318189E090E017\r
+:102CF00014C0643070F470E0FB01EE0FFF1FE85B5E\r
+:102D0000FC4F20813181FB01EC5BFC4F808190E026\r
+:102D100004C080E090E020E030E0FA0131832083BD\r
+:102D2000089580E189BD82E189BD09B400FEFDCF2F\r
+:102D30008091D8008F7D8093D8008091E0008260E0\r
+:102D40008093E0008091E00081FDFCCF0895CF9258\r
+:102D5000DF92EF92FF920F931F93CF93DF93EC01DB\r
+:102D60008B016A010E940A18811133C0C114D10479\r
+:102D700039F0F60180819181081B190BC80FD91F0A\r
+:102D8000E12CF12C0115110519F18091E80085FD68\r
+:102D900016C08091E8008E778093E800C114D104BA\r
+:102DA00049F0F60180819181E80EF91EF182E082FE\r
+:102DB00085E00FC00E940A18882321F30AC0899178\r
+:102DC0008093F10001501109FFEFEF1AFF0ADACFEB\r
+:102DD00080E0DF91CF911F910F91FF90EF90DF90F6\r
+:102DE000CF90089520916504309166042617370727\r
+:102DF00048F06115710539F42091E8002E77209391\r
+:102E0000E80001C0B90140E061157105A9F1209108\r
+:102E10005E04222309F443C0253009F442C0209106\r
+:102E2000E80023FD40C02091E80022FD32C020913F\r
+:102E3000E80020FFE9CF4091F3002091F20030E05C\r
+:102E4000342BFC01CF016115710559F02830310593\r
+:102E500040F481918093F100615071092F5F3F4FE1\r
+:102E6000F1CF41E02830310509F040E02091E80041\r
+:102E70002E772093E800C8CF4111C9CF0AC08091B6\r
+:102E80005E04882361F0853061F08091E80083FD65\r
+:102E90000AC08091E80082FFF2CF80E0089582E0CE\r
+:102EA000089583E0089581E00895209165043091AC\r
+:102EB00066042617370748F06115710539F420912B\r
+:102EC000E8002E772093E80001C0B901FC0120E062\r
+:102ED0006115710591F180915E04882309F440C069\r
+:102EE000853009F43FC08091E80083FD3DC08091AA\r
+:102EF000E80082FD2FC08091E80080FFE9CF20919B\r
+:102F0000F3008091F20090E0922B6115710559F069\r
+:102F10008830910540F424912093F100319661505E\r
+:102F200071090196F2CF21E0089709F020E0809125\r
+:102F3000E8008E778093E800CBCF2111CCCF0AC078\r
+:102F400080915E04882361F0853061F08091E80013\r
+:102F500083FD0AC08091E80082FFF2CF80E00895EF\r
+:102F600082E0089583E0089581E00895982F9730D6\r
+:102F700058F59093E900981739F07091EC00209182\r
+:102F8000ED005091F00003C0242F762F50E021FF78\r
+:102F900019C03091EB003E7F3093EB003091ED0093\r
+:102FA0003D7F3093ED003091EB0031603093EB00CA\r
+:102FB0007093EC002093ED005093F0002091EE0010\r
+:102FC00027FF07C09F5FD3CF8F708093E90081E018\r
+:102FD000089580E0089580915F0487FF11C080917B\r
+:102FE000E80082FD05C080915E048111F8CF11C018\r
+:102FF0008091E8008B770BC080915E04882349F0B4\r
+:103000008091E80080FFF8CF8091E8008E77809370\r
+:10301000E80008952091E4003091E50095E64091A4\r
+:10302000EC00842F817040FF22C08091E80080FD79\r
+:103030001CC080915E04882391F0853091F08091CE\r
+:10304000EB0085FD10C04091E4005091E50042176F\r
+:10305000530729F39A01915011F784E0089582E013\r
+:10306000089583E0089581E0089580E008954091F7\r
+:10307000E80042FFDECF08950E94AA180E94B2180D\r
+:10308000E0EEF0E0808181608083E8EDF0E0808117\r
+:103090008F77808319BCA7EDB0E08C918E7F8C93E5\r
+:1030A00080818F7E808310925D0408950F931F931B\r
+:1030B000CF93DF930E94AA180E94B218C8EDD0E007\r
+:1030C00088818F77888388818068888388818F7DD5\r
+:1030D000888319BC10925E0410925A0410925C040A\r
+:1030E00010925B0400EE10E0F80180818B7F8083FA\r
+:1030F00088818160888342E060E080E00E94B617AA\r
+:10310000E1EEF0E080818E7F8083E2EEF0E080816E\r
+:1031100081608083808188608083F80180818E7FD8\r
+:103120008083888180618883DF91CF911F910F9187\r
+:103130000895E8EDF0E080818F7E8083E7EDF0E098\r
+:1031400080818160808384E082BF81E080935D0420\r
+:103150000C945618E8EDF0E080818E7F8083109209\r
+:10316000E20008951092DA001092E10008951F9293\r
+:103170000F920FB60F9211242F933F934F935F93AB\r
+:103180006F937F938F939F93AF93BF93EF93FF932F\r
+:103190008091E10082FF0BC08091E20082FF07C0B6\r
+:1031A0008091E1008B7F8093E1000E941E1B809143\r
+:1031B000DA0080FF1FC08091D80080FF1BC0809183\r
+:1031C000DA008E7F8093DA008091D90080FF0DC0F5\r
+:1031D00080E189BD82E189BD09B400FEFDCF81E0B7\r
+:1031E00080935E040E94221505C019BC10925E04F3\r
+:1031F0000E9430158091E10080FF19C08091E200AB\r
+:1032000080FF15C08091E2008E7F8093E200809164\r
+:10321000E20080618093E2008091D8008062809318\r
+:10322000D80019BC85E080935E040E94341580911B\r
+:10323000E10084FF30C08091E20084FF2CC080E177\r
+:1032400089BD82E189BD09B400FEFDCF8091D8001F\r
+:103250008F7D8093D8008091E1008F7E8093E10084\r
+:103260008091E2008F7E8093E2008091E200816095\r
+:103270008093E20080915A04882311F084E007C013\r
+:103280008091E30087FD02C081E001C083E080936C\r
+:103290005E040E9435158091E10083FF29C0809172\r
+:1032A000E20083FF25C08091E100877F8093E100E9\r
+:1032B00082E080935E0410925A048091E1008E7F38\r
+:1032C0008093E1008091E2008E7F8093E200809104\r
+:1032D000E20080618093E20042E060E080E00E94D2\r
+:1032E000B6178091F00088608093F0000E9433153B\r
+:1032F000FF91EF91BF91AF919F918F917F916F91CE\r
+:103300005F914F913F912F910F900FBE0F901F90A3\r
+:1033100018951F920F920FB60F9211242F933F937F\r
+:103320004F935F936F937F938F939F93AF93BF93CD\r
+:10333000CF93DF93EF93FF93C091E900CF7080911B\r
+:10334000EC00D82FD17080FDD0E81092E900809178\r
+:10335000F000877F8093F00078940E94CD1910923E\r
+:10336000E9008091F00088608093F000CD2BCF7051\r
+:10337000C093E900FF91EF91DF91CF91BF91AF91A1\r
+:103380009F918F917F916F915F914F913F912F917D\r
+:103390000F900FBE0F901F9018951F93CF93DF9340\r
+:1033A000CDB7DEB7AA970FB6F894DEBF0FBECDBF7C\r
+:1033B000EFE5F4E088E08E0F9091F10091938E1389\r
+:1033C000FBCF0E944B158091E80083FF1FC18091C5\r
+:1033D0005F0490916004492F50E04A30510508F095\r
+:1033E00015C1FA01EC59FF4F0C94E331803881F09C\r
+:1033F000823809F00BC1809163048F708093E900DB\r
+:103400008091EB0085FB882780F91092E90006C0C7\r
+:1034100080915B0490915C04911182609091E8002E\r
+:10342000977F9093E8008093F1001092F100C8C05C\r
+:10343000282F2D7F09F0EAC0882319F0823061F02F\r
+:10344000E5C080916104813009F0E0C0933009F05B\r
+:1034500080E080935C042BC080916104811127C0BF\r
+:10346000809163048F7009F4D1C08093E9002091AA\r
+:10347000EB0020FF1CC0933021F48091EB008062B0\r
+:1034800014C09091EB0090619093EB0021E030E04C\r
+:10349000A90102C0440F551F8A95E2F74093EA0044\r
+:1034A0001092EA008091EB0088608093EB0010920C\r
+:1034B000E9008091E800877F86C08111A7C0109144\r
+:1034C00061041F778091E3008078812B8093E30073\r
+:1034D0008091E800877F8093E8000E94EB1780913D\r
+:1034E000E80080FFFCCF8091E30080688093E300D8\r
+:1034F000111102C082E001C083E080935E0486C0A7\r
+:103500008058823008F082C08091610490916204FA\r
+:103510008C3D53E0950779F583E08A838AE28983BD\r
+:103520004FB7F894DE01139620E03EE051E2E32F1E\r
+:10353000F0E050935700E49120FF03C0E295EF7054\r
+:103540003F5FEF708E2F90E0EA3010F0C79601C019\r
+:10355000C0968D939D932F5F243149F74FBF809183\r
+:10356000E800877F8093E8006AE270E0CE01019670\r
+:103570000E94F21614C0AE014F5F5F4F609163046A\r
+:103580000E943916BC01009709F440C09091E800F0\r
+:10359000977F9093E80089819A810E9455178091C6\r
+:1035A000E8008B778093E80031C0803879F580910E\r
+:1035B000E800877F8093E80080915A048093F100AF\r
+:1035C0008091E8008E778093E8000E94EB171EC080\r
+:1035D00081111CC0909161049230C0F48091E80088\r
+:1035E000877F8093E80090935A040E94EB178091A4\r
+:1035F0005A04811106C08091E30087FD02C081E07A\r
+:1036000001C084E080935E040E9437158091E80039\r
+:1036100083FF0AC08091E800877F8093E800809153\r
+:10362000EB0080628093EB00AA960FB6F894DEBFA1\r
+:103630000FBECDBFDF91CF911F9108950895CF9315\r
+:1036400080915E048823A1F0C091E900CF70909131\r
+:10365000EC00892F817090FD80E8C82B1092E90062\r
+:103660008091E80083FD0E94CD19CF70C093E900DE\r
+:10367000CF9108959093DF038093DE030895E09146\r
+:10368000DE03F091DF03309721F00190F081E02D0F\r
+:10369000099480E00895E091DE03F091DF03309714\r
+:1036A00021F00280F381E02D09940895E091DE037A\r
+:1036B000F091DF03309721F00480F581E02D09942B\r
+:1036C00008952091DC033091DD038217930771F098\r
+:1036D0009093DD038093DC03E091DE03F091DF0340\r
+:1036E000309721F00680F781E02D0994089520910C\r
+:1036F000DA033091DB038217930771F09093DB03B9\r
+:103700008093DA03E091DE03F091DF03309721F03C\r
+:103710000084F185E02D0994089508950C948D1B83\r
+:103720000E9415280E94760B0E949B280C94562D0F\r
+:103730004F925F927F928F929F92AF92BF92CF9261\r
+:10374000DF92EF92FF920F931F93CF93DF93CDB74A\r
+:10375000DEB72A970FB6F894DEBF0FBECDBF0E942A\r
+:10376000650C91EEC92E93E0D92E00E010E0AA245A\r
+:10377000A394B12C702E802F0E94AE0D4C01F60147\r
+:10378000419051906F014826592641145104B1F4DB\r
+:103790000F5F1F4F0430110569F78FEF89838A830C\r
+:1037A0001B820E941E288160782F9D838C83498113\r
+:1037B0005A816B818D810E94511C3AC080913D04D9\r
+:1037C00081FD0E94B70D20E030E07501022E02C09D\r
+:1037D000EE0CFF1C0A94E2F7C70184219521892B86\r
+:1037E00009F12E837F828E209F2091E0892809F4A1\r
+:1037F00090E098870E941E288160782F9A87898799\r
+:103800004E815F8168858A850E94511C000F111FBF\r
+:10381000F801EF51FC4F80819181E826F926F18271\r
+:10382000E08206C02F5F3F4F2C30310571F6B0CFDC\r
+:103830000E94872A1091E0030E943F1B1817D9F0BD\r
+:103840000E943F1B8093E0032A960FB6F894DEBFD8\r
+:103850000FBECDBFDF91CF911F910F91FF90EF90E1\r
+:10386000DF90CF90BF90AF909F908F907F905F90B0\r
+:103870004F900C94AE0A2A960FB6F894DEBF0FBE96\r
+:10388000CDBFDF91CF911F910F91FF90EF90DF900F\r
+:10389000CF90BF90AF909F908F907F905F904F9010\r
+:1038A0000895CF93DF93CDB7DEB72B970FB6F8947B\r
+:1038B000DEBF0FBECDBF4F83588769877A878B875E\r
+:1038C000DE01119686E0FD0111928A95E9F785E007\r
+:1038D000FE01379601900D928A95E1F749815A8150\r
+:1038E0006B817C818D819E810E94F6232B960FB681\r
+:1038F000F894DEBF0FBECDBFDF91CF910895CF9377\r
+:10390000882309F4C2C0C82F823859F40E943F1B93\r
+:1039100081FDBBC089E30E949F260E946C2789E33A\r
+:103920000CC0833879F40E943F1B80FDAEC083E554\r
+:103930000E949F260E946C2783E50E94E126CF917A\r
+:103940000C946C27843859F40E943F1B82FD9DC063\r
+:1039500087E40E949F260E946C2787E4EECF8CEFBD\r
+:103960008C0F813A48F48C2F0E94BE2C81118DC09F\r
+:103970008C2F0E949F26E3CF80E28C0F883048F482\r
+:10398000C77081E001C0880FCA95EAF70E94252719\r
+:10399000D6CF8BE58C0F833078F4C53A29F0C63A40\r
+:1039A00031F083E890E005C081E890E002C082E851\r
+:1039B00090E0CF910C94611B88E58C0F833108F067\r
+:1039C00064C0C83A39F1C93A41F1CA3A49F1CB3A2F\r
+:1039D00051F1CC3A59F1CD3A61F1C03B69F1CE3A9F\r
+:1039E00071F1CF3A79F1C13B81F1C23B89F1C33B1F\r
+:1039F00091F1C43B99F1C53BA1F1C63BA9F1C73B8D\r
+:103A0000B1F1C83BB9F1C93BC1F1CA3BC9F180E092\r
+:103A100090E038C082EE90E035C089EE90E032C090\r
+:103A20008AEE90E02FC085EB90E02CC086EB90E012\r
+:103A300029C087EB90E026C08CEC90E023C08DEC91\r
+:103A400090E020C083E891E01DC08AE891E01AC0B0\r
+:103A500082E991E017C084E991E014C081E292E02C\r
+:103A600011C083E292E00EC084E292E00BC085E2D6\r
+:103A700092E008C086E292E005C087E292E002C0D0\r
+:103A80008AE292E0CF910C94771BCF91089588231E\r
+:103A900009F44BC0823859F40E943F1B81FF45C096\r
+:103AA00089E30E949F260E946C2789E30CC083381B\r
+:103AB00071F40E943F1B80FF38C083E50E949F265F\r
+:103AC0000E946C2783E50E94E1260C946C278438C1\r
+:103AD00059F40E943F1B82FF28C087E40E949F2662\r
+:103AE0000E946C2787E4EFCF9CEF980F913A58F330\r
+:103AF00090E2980F983050F4877091E001C0990FD0\r
+:103B00008A95EAF7892F0E942B27DFCF9BE5980F34\r
+:103B1000933020F480E090E00C94611B885A83314C\r
+:103B200020F480E090E00C94771B0895882321F026\r
+:103B30000E9425270C946C270895882321F00E9469\r
+:103B40002B270C946C270895BF92CF92DF92EF92AF\r
+:103B5000FF920F931F93CF93DF9300D000D000D03C\r
+:103B6000CDB7DEB725E0FC01DE01119601900D9284\r
+:103B70002A95E1F7FC01D0801181028125812295EF\r
+:103B80002F7043815481452B09F472C31F3F21F4E8\r
+:103B9000FFEFDF1609F46CC37C012E830E947707C8\r
+:103BA000D9821A8369817A81802F0E949B26182FDF\r
+:103BB000B92E0E9450260E9417252E81002319F04D\r
+:103BC0000E9442272E81EB2DE295EF70F0E0E25942\r
+:103BD000FF4F0C94E3318B2D807F9B2D9F70F92E2E\r
+:103BE000882319F0F29480EFF822002389F0FF2057\r
+:103BF00009F47CC280E2810F883020F48F2D0E946E\r
+:103C0000252703C08F2D0E9435270E946C276EC286\r
+:103C1000812F0E94471DFF2009F42AC3105E8F2DBB\r
+:103C2000183018F40E942B2702C00E943B272696CA\r
+:103C30000FB6F894DEBF0FBECDBFDF91CF911F91BD\r
+:103C40000F91FF90EF90DF90CF90BF900C946C2776\r
+:103C50008B2D807F9B2D9F70803211F4892F03C0A4\r
+:103C6000892F8295807F112319F0113011F12BC01B\r
+:103C70000023A9F0222389F1213079F526960FB689\r
+:103C8000F894DEBF0FBECDBFDF91CF911F910F9192\r
+:103C9000FF90EF90DF90CF90BF900C945527222398\r
+:103CA00019F0213009F4E4C28E830E9458278E81D6\r
+:103CB0009BC1002321F0263008F0DAC20EC0253067\r
+:103CC00008F0D6C291C10023C9F0222331F0F701D8\r
+:103CD000958190FF0BC29F70958326960FB6F8943E\r
+:103CE000DEBF0FBECDBFDF91CF911F910F91FF902F\r
+:103CF000EF90DF90CF90BF900C94961D222309F493\r
+:103D000073C109C22B2D26952695237030E021150D\r
+:103D1000310521F021303105D1F0AAC2002321F074\r
+:103D2000812F9B2D937002C080E090E026960FB605\r
+:103D3000F894DEBF0FBECDBFDF91CF911F910F91E1\r
+:103D4000FF90EF90DF90CF90BF900C94611B002309\r
+:103D500021F0812F9B2D937002C080E090E0269689\r
+:103D60000FB6F894DEBF0FBECDBFDF91CF911F918C\r
+:103D70000F91FF90EF90DF90CF90BF900C94771B46\r
+:103D8000812F002319F00E948F2902C00E94F72979\r
+:103D900026960FB6F894DEBF0FBECDBFDF91CF9150\r
+:103DA0001F910F91FF90EF90DF90CF90BF900C94F8\r
+:103DB0007C2A8B2D837009F07BC0011159C2812FA1\r
+:103DC000829586958770880F880F912F9F70C92ED6\r
+:103DD000D12CE12CF12C082E04C0CC0CDD1CEE1CE7\r
+:103DE000FF1C0A94D2F714FF12C04FE050E060E0CD\r
+:103DF00070E004C0440F551F661F771F8A95D2F7E5\r
+:103E0000CB01BA01609570958095909503C060E0F4\r
+:103E100070E0CB012B2D269526952370422F50E084\r
+:103E200042305105D9F04330510569F16C297D29A3\r
+:103E30008E299F294130510551F126960FB6F894ED\r
+:103E4000DEBF0FBECDBFDF91CF911F910F91FF90CD\r
+:103E5000EF90DF90CF90BF900C943E256C297D2988\r
+:103E60008E299F2926960FB6F894DEBF0FBECDBFD0\r
+:103E7000DF91CF911F910F91FF90EF90DF90CF9046\r
+:103E8000BF900C945A250E943E25C701B601269684\r
+:103E90000FB6F894DEBF0FBECDBFDF91CF911F915B\r
+:103EA0000F91FF90EF90DF90CF90BF900C94222560\r
+:103EB000002319F08B2D817001C08695882309F4A9\r
+:103EC000D7C1812F829586958770880F880F912F93\r
+:103ED0009F70C92ED12CE12CF12C082E04C0CC0CE3\r
+:103EE000DD1CEE1CFF1C0A94D2F714FF12C04FE039\r
+:103EF00050E060E070E004C0440F551F661F771F5C\r
+:103F00008A95D2F7CB01BA0160957095809590950E\r
+:103F100003C060E070E0CB012B2D26952695237021\r
+:103F2000422F50E042305105D9F04330510569F13C\r
+:103F30006C297D298E299F294130510551F1269602\r
+:103F40000FB6F894DEBF0FBECDBFDF91CF911F91AA\r
+:103F50000F91FF90EF90DF90CF90BF900C941826B8\r
+:103F60006C297D298E299F2926960FB6F894DEBFED\r
+:103F70000FBECDBFDF91CF911F910F91FF90EF90BA\r
+:103F8000DF90CF90BF900C9434260E941826C70172\r
+:103F9000B60126960FB6F894DEBF0FBECDBFDF91F7\r
+:103FA000CF911F910F91FF90EF90DF90CF90BF9036\r
+:103FB0000C94FC25103F49F118F4103E48F491C0D0\r
+:103FC000123F09F453C0E8F1133F09F464C089C0FB\r
+:103FD0001F708B2D8F71002321F00E949525812F5A\r
+:103FE0007CCE0E94B625812F26960FB6F894DEBFB0\r
+:103FF0000FBECDBFDF91CF911F910F91FF90EF903A\r
+:10400000DF90CF90BF900C949D1D0023B1F0253020\r
+:1040100008F02EC18B2D8F7126960FB6F894DEBF57\r
+:104020000FBECDBFDF91CF911F910F91FF90EF9009\r
+:10403000DF90CF90BF900C94DB25263008F018C19C\r
+:10404000E9CF0023A9F08B2D8F7126960FB6F89437\r
+:10405000DEBF0FBECDBFDF91CF911F910F91FF90BB\r
+:10406000EF90DF90CF90BF900C949525002359F3EB\r
+:104070008B2D8F7126960FB6F894DEBF0FBECDBF85\r
+:10408000DF91CF911F910F91FF90EF90DF90CF9034\r
+:10409000BF900C94B625002399F08B2D8F71269636\r
+:1040A0000FB6F894DEBF0FBECDBFDF91CF911F9149\r
+:1040B0000F91FF90EF90DF90CF90BF900C948025F0\r
+:1040C00026960FB6F894DEBF0FBECDBFDF91CF911D\r
+:1040D0001F910F91FF90EF90DF90CF90BF900C94C5\r
+:1040E00076250023A9F0222309F4ADCF812F26964F\r
+:1040F0000FB6F894DEBF0FBECDBFDF91CF911F91F9\r
+:104100000F91FF90EF90DF90CF90BF900C947F1CA9\r
+:10411000222309F4ADCF812F26960FB6F894DEBF87\r
+:104120000FBECDBFDF91CF911F910F91FF90EF9008\r
+:10413000DF90CF90BF900C94471D4B2D4F70612F97\r
+:10414000C7010E94690526960FB6F894DEBF0FBE20\r
+:10415000CDBFDF91CF911F910F91FF90EF90DF9036\r
+:10416000CF90BF900C949A24011182C09B2D9F7018\r
+:10417000492F50E04230510509F443C0C4F44115C1\r
+:10418000510571F14130510509F072C026960FB604\r
+:10419000F894DEBF0FBECDBFDF91CF911F910F917D\r
+:1041A000FF90EF90DF90CF90BF900C947E2D433026\r
+:1041B0005105C1F14430510509F05AC0812F2696AE\r
+:1041C0000FB6F894DEBF0FBECDBFDF91CF911F9128\r
+:1041D0000F91FF90EF90DF90CF90BF900C94D02D77\r
+:1041E00026960FB6F894DEBF0FBECDBFDF91CF91FC\r
+:1041F0001F910F91FF90EF90DF90CF90BF900C94A4\r
+:10420000672D26960FB6F894DEBF0FBECDBFDF91A7\r
+:10421000CF911F910F91FF90EF90DF90CF90BF90C3\r
+:104220000C949A2D26960FB6F894DEBF0FBECDBF24\r
+:10423000DF91CF911F910F91FF90EF90DF90CF9082\r
+:10424000BF900C94AD2D4B2D4F70612FC70126965A\r
+:104250000FB6F894DEBF0FBECDBFDF91CF911F9197\r
+:104260000F91FF90EF90DF90CF90BF900C94790763\r
+:1042700026960FB6F894DEBF0FBECDBFDF91CF916B\r
+:104280001F910F91FF90EF90DF90CF90BF90089516\r
+:104290000E9442270E9452270E9417270E946C27E3\r
+:1042A0000E942D2B0E947C2A80E090E00E94611BDE\r
+:1042B00080E090E00C94771B0E9432270C944821F8\r
+:1042C0000E949026292F22952F7030E02C30310546\r
+:1042D0004CF42A3031056CF422503109223031057A\r
+:1042E00088F407C02C30310549F02F30310531F00A\r
+:1042F00009C0803E48F0803F29F406C093FB882720\r
+:1043000080F9089580E0089581E00895CF93DF93C8\r
+:1043100000D000D01F92CDB7DEB70F900F900F9056\r
+:104320000F900F90DF91CF910895CF93DF9300D03E\r
+:1043300000D000D0CDB7DEB726960FB6F894DEBF1A\r
+:104340000FBECDBFDF91CF9108951F93CF93DF9321\r
+:10435000C091E90316E08091EA03C81799F0D0E014\r
+:104360001C9FF0011D9FF00D1124E551FC4F408171\r
+:10437000518162817381848195810E94952121966A\r
+:10438000C770E9CFDF91CF911F91089540911B0431\r
+:1043900050911C0460911D0470911E0480911F04B3\r
+:1043A000909120040C9495218091200482958F7027\r
+:1043B00009F054C080911D04882309F44FC08091F6\r
+:1043C000E903A091EA0360911B0470911C044091E1\r
+:1043D0001E0450911F04B6E08A1709F43FC090E014\r
+:1043E00041155105C1F17F3F11F46F3FA1F1B89F15\r
+:1043F000F001B99FF00D1124E551FC4F218172139A\r
+:104400002AC02081621327C02281211124C0238168\r
+:1044100034812417350710F421503109241B350B42\r
+:10442000283C3105C0F4209120042F702061209396\r
+:10443000200426E0289FF001299FF00D1124E0516F\r
+:10444000FC4F80818F70806180838BE194E00E94BB\r
+:10445000A41D0C94A52101968770BECF0895CF921C\r
+:10446000DF92EF92FF920F931F93CF93DF93CDB71D\r
+:10447000DEB762970FB6F894DEBF0FBECDBF8C01DA\r
+:1044800085E0F801DE011D9601900D928A95E1F715\r
+:10449000D8014C9111965C91119712966C911297DC\r
+:1044A0001396CD90DC90149730911B0470911C04EE\r
+:1044B00080911E0490911F04009709F46BC17F3F07\r
+:1044C00019F43F3F09F466C1E0901D04EE2009F4A1\r
+:1044D000C0C020912004C816D90628F0F601E81BB8\r
+:1044E000F90BCF0104C0809590958C0D9D1DFF2484\r
+:1044F000F394883C910578F0F12C207F09F0C6C038\r
+:104500007C2DD98AC88A89890E9486218BE194E012\r
+:104510000E94A41DB1C0822F807F09F046C0751390\r
+:1045200014C0341312C0611110C02F702061209389\r
+:1045300020040E94C6218BE194E00E94A41D80917A\r
+:104540002004D80115968C932EC0CD2819F15F3F19\r
+:1045500011F44F3FF9F0F62E61111CC08091E90370\r
+:104560002091EA0336E0821709F45AC090E0389FA0\r
+:10457000F001399FF00D1124E551FC4F7181571363\r
+:1045800006C07081471303C07281711103C0019688\r
+:104590008770E9CFF62E662309F418C180912004B4\r
+:1045A000816080932004F12C11C1751308C034136D\r
+:1045B00006C0611104C080912004D801C3C04D879A\r
+:1045C0005E878D859E856A8B0E9460216A8988231B\r
+:1045D000E1F16623D1F120912004822F82958F7022\r
+:1045E00090E0029774F080911B0490911C049887CE\r
+:1045F0008F831986DB86CA862C87CE0107960E9498\r
+:10460000A41D86E0F801ABE1B4E001900D928A951B\r
+:10461000E1F70E94D4210E94C621FF24F394D6C062\r
+:104620004D875E878D859E850E949026292F229535\r
+:104630002F7030E0223031050CF0BCC09F7009F0C3\r
+:10464000B6C0805E883008F4C1C0C8010E94A41DB5\r
+:10465000E4CFC816D90608F453C0F601E81BF90BDD\r
+:10466000CF01883C910508F450C0F12C7C2DD98AEB\r
+:10467000C88A89890E948621EBE1F4E086E0DF01A7\r
+:104680001D928A95E9F70E94C621A0C0751314C037\r
+:10469000341312C0611110C080912004F801858389\r
+:1046A000C8010E94A41D86E0EBE1F4E0DF011D9249\r
+:1046B0008A95E9F7FE2C8AC04D875E878D859E8599\r
+:1046C0006A8B0E9460216A89882309F4BECF662321\r
+:1046D00009F4BBCF20912004822F82958F7090E047\r
+:1046E00002970CF48ECF80911B0490911C049A8346\r
+:1046F00089831B82DD82CC822E83CE0101967FCFFF\r
+:10470000809590958C0D9D1DACCFF62E662309F4F7\r
+:104710009CCF75132EC034132CC02091200420FD93\r
+:104720001FC0822F82958F70D9F0D80115962C93D7\r
+:1047300015978F3049F08F5F982F9295907F822F39\r
+:104740008F70892B15968C93C8010E94A41D86E05A\r
+:10475000F801ABE1B4E001900D928A95E1F793CFB7\r
+:1047600086E0F801ABE1B4E001900D928A95E1F7A3\r
+:104770002DC04D875E878D859E850E9460218111A9\r
+:1047800040CF80912004816080932004C8010E9462\r
+:10479000A41D1CC0662309F458CF4D875E878D8504\r
+:1047A0009E850E946021882309F44FCF2ACF811172\r
+:1047B00048CF0CC0243031050CF047CF9F7009F46E\r
+:1047C00040CFF8019581907F09F03BCF8F2D629605\r
+:1047D0000FB6F894DEBF0FBECDBFDF91CF911F9112\r
+:1047E0000F91FF90EF90DF90CF9008951F93CF939C\r
+:1047F000DF93CDB7DEB72C970FB6F894DEBF0FBEB0\r
+:10480000CDBF4F83588769877A878B879C87CE0176\r
+:1048100007960E942F22882369F08F8198852A8528\r
+:104820003B85232BF1F19F3F09F063C08F3F09F0D7\r
+:1048300060C037C086E0FE013796DE011196019018\r
+:104840000D928A95E1F76F817885EA85FB8530972F\r
+:1048500041F17F3F11F46F3F21F12091EA0330E0F5\r
+:10486000C9010196877099274091E90350E08417A8\r
+:10487000950709F447C069837A83FD83EC8396E04A\r
+:10488000929FD001939FB00D1124A551BC4FFE0102\r
+:10489000319601900D929A95E1F78093EA030E9478\r
+:1048A000A52116E08091E9039091EA038917C1F1EF\r
+:1048B000189FC001112485519C4F0E942F228823EC\r
+:1048C00079F1E091E9031E9FF0011124E551FC4FBD\r
+:1048D0004081518162817381848195810E949521FB\r
+:1048E0008091E90390E00196877099278093E9030E\r
+:1048F000D9CF4F81588569857A858B859C850E94A3\r
+:104900009521CFCF0E945C211092EA031092E90317\r
+:10491000EBE1F4E086E0DF011D928A95E9F7C1CF73\r
+:104920002C960FB6F894DEBF0FBECDBFDF91CF91AE\r
+:104930001F910895EF92FF920F931F93CF93DF93F0\r
+:104940008C01009709F46CC0F12CEE24E394E8018B\r
+:104950002196F8018491843740F4843008F051C0E6\r
+:10496000813081F0823019F15BC0853709F444C091\r
+:10497000A8F19CE7980F903708F052C08F770E94FB\r
+:10498000471D41C00E5F1F4FFE01C49180E28C0F96\r
+:10499000883048F4C7708E2D01C0880FCA95EAF799\r
+:1049A0000E94452714C08C2F0E947F1C2DC00E5FD3\r
+:1049B0001F4FFE01C49180E28C0F883058F4C770FD\r
+:1049C0008E2D01C0880FCA95EAF70E944B270E94DE\r
+:1049D0006C271AC08C2F0E94471D16C00E5F1F4FF8\r
+:1049E000FE01C491CC2381F08FE99FE00197F1F79C\r
+:1049F00000C00000C150F6CF0E5F1F4FFE01F490C3\r
+:104A000003C00E947F1C8E018F2D882309F49FCF45\r
+:104A1000EFE9FFE03197F1F700C000008150F5CFDA\r
+:104A2000DF91CF911F910F91FF90EF90089508951E\r
+:104A300060932504709326048093270490932804A0\r
+:104A40000C9448210F931F93009125041091260484\r
+:104A50002091270430912804DC01CB01802B912B7D\r
+:104A6000A22BB32B8093250490932604A0932704B4\r
+:104A7000B09328041F910F910C9448210F931F931A\r
+:104A800000912504109126042091270430912804D8\r
+:104A9000DC01CB0180239123A223B323809325043F\r
+:104AA00090932604A0932704B09328041F910F919C\r
+:104AB0000C9448210F931F93009125041091260414\r
+:104AC0002091270430912804DC01CB018027912715\r
+:104AD000A227B3278093250490932604A09327044C\r
+:104AE000B09328041F910F910C9448211092210437\r
+:104AF0001092220410922304109224040C94482152\r
+:104B000041E050E060E070E004C0440F551F661FB4\r
+:104B1000771F8A95D2F74093210450932204609323\r
+:104B20002304709324040C94482141E050E060E099\r
+:104B300070E004C0440F551F661F771F8A95D2F797\r
+:104B40008091210490912204A0912304B091240427\r
+:104B5000482B592B6A2B7B2B409321045093220422\r
+:104B600060932304709324040C94482141E050E0A6\r
+:104B700060E070E004C0440F551F661F771F8A95E0\r
+:104B8000D2F7409550956095709580912104909151\r
+:104B90002204A0912304B0912404482359236A23BA\r
+:104BA0007B23409321045093220460932304709349\r
+:104BB00024040C94482141E050E060E070E004C01F\r
+:104BC000440F551F661F771F8A95D2F780912104E5\r
+:104BD00090912204A0912304B091240448275927DE\r
+:104BE0006A277B2740932104509322046093230477\r
+:104BF000709324040C9448210F931F930091210477\r
+:104C0000109122042091230430912404DC01CB0173\r
+:104C1000802B912BA22BB32B809321049093220401\r
+:104C2000A0932304B09324041F910F910C94482166\r
+:104C30000F931F93009121041091220420912304CB\r
+:104C400030912404DC01CB0180239123A223B323E0\r
+:104C50008093210490932204A0932304B09324040E\r
+:104C60001F910F910C9448210F931F9300912104E1\r
+:104C7000109122042091230430912404DC01CB0103\r
+:104C800080279127A227B3278093210490932204A1\r
+:104C9000A0932304B09324041F910F910C944821F6\r
+:104CA0000895CF92DF92EF92FF920F931F93CF93CD\r
+:104CB000DF938C01C0902504D0902604E090270457\r
+:104CC000F09028048091210490912204A091230463\r
+:104CD000B0912404C82AD92AEA2AFB2ACFE1D0E0DD\r
+:104CE000D701C6010C2E04C0B695A7959795879558\r
+:104CF0000A94D2F780FF06C0B8018C2F0E94D30916\r
+:104D0000019721F4219760F780E001C08C2FDF919B\r
+:104D1000CF911F910F91FF90EF90DF90CF9008956A\r
+:104D2000CF93DF93EC010E945126BE010E94D3096C\r
+:104D3000DF91CF910895CB010E9490260895909124\r
+:104D40008402992321F090918502911109C020914C\r
+:104D5000860230918702F90132969FEF40E01FC032\r
+:104D6000982F9695969596959F3050F5E0918602EE\r
+:104D7000F0918702E90FF11D877021E030E0A90171\r
+:104D800002C0440F551F8A95E2F7CA019181892B11\r
+:104D9000818308959F3F39F04F5F4E3041F051912C\r
+:104DA0005813F8CF0DC05111F7CF942FF5CF9F3F77\r
+:104DB00039F0F901E90FF11D97FDFA958283089505\r
+:104DC000089590918402992321F090918502911188\r
+:104DD00009C02091860230918702F9013296205F46\r
+:104DE0003F4F1FC0982F9695969596959F30F0F45B\r
+:104DF000E0918602F0918702E90FF11D877021E0B2\r
+:104E000030E0A90102C0440F551F8A95E2F7CA019C\r
+:104E1000809591818923818308953196E217F30764\r
+:104E200029F090819813F9CF1082F7CF089581E08F\r
+:104E300090E0E0918602F0918702E80FF91F10825E\r
+:104E4000019680319105A9F7089590913C04892B32\r
+:104E500080933C040895809590913C04892380932D\r
+:104E60003C04089510923C04089590913B04892BD2\r
+:104E700080933B040895809590913B04892380930F\r
+:104E80003B04089510923B04089590913A04892BB5\r
+:104E900080933A040895809590913A0489238093F1\r
+:104EA0003A04089510923A040895809329040895CD\r
+:104EB0001092290408958091860290918702FC0146\r
+:104EC00031969C01205F3F4F80E0919191118F5F5F\r
+:104ED000E217F307D1F70895E0918602F091870277\r
+:104EE00080913C048083E0918602F091870290815A\r
+:104EF00080913B04892B8083E0918602F0918702A8\r
+:104F0000908180913A04892B8083809129048823A1\r
+:104F100061F0E0918602F09187029081892B808375\r
+:104F20000E945B2781111092290480918602909142\r
+:104F300087020C944B1B80915E04843039F11092EF\r
+:104F40003E0420E488E190E00FB6F894A8958093A1\r
+:104F500060000FBE2093600080E00E94300580E07A\r
+:104F60000E94AE0A83B7817F846083BF83B781606C\r
+:104F700083BF7894889583B78E7F83BF88E10FB60F\r
+:104F8000F89480936000109260000FBE0895089519\r
+:104F90000895CF9380E00E9430050E94C7270E94A9\r
+:104FA000650C0E94C827C0E08C2F0E94AE0D892B93\r
+:104FB00029F4CF5FC430C1F780E001C081E0CF9118\r
+:104FC00008950E945C2180E00E9430050E94562DC9\r
+:104FD0000E943F1B0C94AE0A1F920F920FB60F92C5\r
+:104FE00011248F939F93AF93BF9380913E048111BF\r
+:104FF00013C080913F0490914004A0914104B0916E\r
+:1050000042044196A11DB11D80933F04909340043A\r
+:10501000A0934104B0934204BF91AF919F918F91AF\r
+:105020000F900FBE0F901F90189582E084BD93E003\r
+:1050300095BD9AEF97BD80936E0008952FB7F894B1\r
+:1050400080913F0490914004A0914104B0914204AA\r
+:105050002FBF0895CF92DF92EF92FF920F931F938D\r
+:105060002FB7F89440913F0450914004609141045F\r
+:10507000709142042FBF6A017B01EE24FF248C0152\r
+:1050800020E030E0C016D106E206F30610F44150ED\r
+:1050900051099A01281B390BC9011F910F91FF90EB\r
+:1050A000EF90DF90CF9008951F920F920FB60F925E\r
+:1050B00011248F939F93AF93BF9380913F0490915E\r
+:1050C0004004A0914104B09142040196A11DB11D7C\r
+:1050D00080933F0490934004A0934104B093420412\r
+:1050E000BF91AF919F918F910F900FBE0F901F9026\r
+:1050F00018950E943C18F8942FEF87EA91E621500A\r
+:1051000080409040E1F700C0000087E090EBDC01B8\r
+:105110008093690490936A04A0936B04B0936C0429\r
+:105120009CE088E10FB6F894A895809360000FBECC\r
+:1051300090936000FFCF0E94DA28811102C00E9484\r
+:10514000B6280E94E52880933D040E94F2288093AF\r
+:10515000670487FB882780F9809385020E94E928ED\r
+:10516000682F70E080E090E00C9418256DEE7EEFE3\r
+:1051700080E090E00E94093260E082E090E00E94CE\r
+:10518000F73160E083E090E00E94F73160E084E076\r
+:1051900090E00E94F73160E085E090E00E94F731F6\r
+:1051A00060E086E090E00E94F7316FEF87E090E0EA\r
+:1051B0000C94F73180E090E00E94F13121E08D3EC7\r
+:1051C0009E4F09F020E0822F089582E090E00C9439\r
+:1051D000E93183E090E00C94E931682F83E090E0BE\r
+:1051E0000C94F73184E090E00C94E931682F84E06E\r
+:1051F00090E00C94F73186E090E00C94E931682F50\r
+:1052000086E090E00C94F73187E090E00C94E9316F\r
+:10521000682F87E090E00C94F7318091450480FF7F\r
+:105220000BC060918B0285E0689FB00111247595D9\r
+:105230006795759567952BC081FF09C060918B02BA\r
+:1052400085E0689FB00111247595679520C082FFA5\r
+:1052500007C060918B0285E0689FB001112417C0E0\r
+:10526000909146049923D1F060918A02961788F7AD\r
+:1052700020918B0285E0289F90011124929FA0012C\r
+:10528000939F500D112470E0CA010E94CF31603805\r
+:10529000710540F46115710539F002C065E070E0F8\r
+:1052A000862F08958FE7089581E008958091450441\r
+:1052B00080FF08C06091890270E0759567957595CB\r
+:1052C000679521C081FF06C06091890270E07595E5\r
+:1052D000679519C082FF04C06091890270E010C018\r
+:1052E000909146049923C1F0609188029617A0F727\r
+:1052F00080918902899FC001112470E00E94CF3102\r
+:105300006038710528F46115710521F0862F089524\r
+:105310008FE7089581E0089561E070E0F4CF803F69\r
+:1053200021F40E940D29819504C0813F29F40E9437\r
+:105330000D29809349040895823F21F40E940D298C\r
+:10534000819504C0833F29F40E940D29809348046D\r
+:105350000895893F19F40E94562905C08A3F31F407\r
+:105360000E945629819580934A0408958B3F21F429\r
+:105370000E945629819504C08C3F29F40E94562929\r
+:1053800080934B040895843F21F480914704816009\r
+:1053900017C0853F21F480914704826011C0863F89\r
+:1053A00021F48091470484600BC0873F21F48091F1\r
+:1053B0004704886005C0883F31F4809147048061CC\r
+:1053C0008093470408958D3F21F4809145048160C6\r
+:1053D0000BC08E3F21F480914504826005C08F3F51\r
+:1053E00029F4809145048460809345040895803FAA\r
+:1053F00039F48091490487FF6CC01092490469C058\r
+:10540000813F29F4809149041816BCF362C0909141\r
+:105410004804823F29F497FF5CC01092480459C0A9\r
+:10542000833F19F41916CCF354C0893F41F480919D\r
+:105430004A0418160CF04DC010924A044AC08A3F24\r
+:1054400029F480914A0487FF44C0F6CF8B3F39F49A\r
+:1054500080914B0487FF3DC010924B043AC08C3FB3\r
+:1054600029F480914B041816BCF333C0843F21F417\r
+:10547000809147048E7F17C0853F21F480914704B7\r
+:105480008D7F11C0863F21F4809147048B7F0BC034\r
+:10549000873F21F480914704877F05C0883F31F41E\r
+:1054A000809147048F7E8093470413C08D3F21F481\r
+:1054B000809145048E7F0BC08E3F21F4809145047E\r
+:1054C0008D7F05C08F3F29F4809145048B7F8093A9\r
+:1054D00045048091480481110EC0809149048111D6\r
+:1054E0000AC080914A04811106C080914B04811149\r
+:1054F00002C010924604089587E494E00E94561B6F\r
+:105500000E941E28909344048093430408951F939F\r
+:10551000CF93DF9380914304909144040E942A2802\r
+:10552000AC0190914604992321F020918C0230E047\r
+:1055300006C020918D028AE0289F90011124421715\r
+:10554000530708F486C080914804C0914904D09163\r
+:105550004A0410914B04811107C0C11176C0D111CA\r
+:1055600074C0111172C075C09F3F19F09F5F909376\r
+:105570004604181624F40E940D2980934804809153\r
+:10558000480487FF05C00E940D2981958093480437\r
+:105590001C1624F40E940D2980934904809149042B\r
+:1055A00087FF05C00E940D29819580934904609171\r
+:1055B0004804662339F1C0914904CC2319F17727B7\r
+:1055C00067FD7095872F972F0E94F12E23E333E319\r
+:1055D00043E35FE30E9401300E94BE2E60934804C3\r
+:1055E0006C2F772767FD7095872F972F0E94F12EDC\r
+:1055F00023E333E343E35FE30E9401300E94BE2EC6\r
+:10560000609349041D1624F40E94562980934A048D\r
+:1056100080914A0487FF05C00E9456298195809396\r
+:105620004A04111624F40E94562980934B04809159\r
+:105630004B0487FF05C00E945629819580934B0437\r
+:10564000DF91CF911F910C947C2A9F3F09F08ECF60\r
+:1056500096CFDF91CF911F910895E7E4F4E085E0C4\r
+:10566000DF011D928A95E9F71092460410924504D5\r
+:105670000895833081F128F4813059F08230D1F0DF\r
+:105680000895853009F449C0B8F1863009F456C050\r
+:10569000089580918D02262F30E0280F311D2F3F75\r
+:1056A000310524F4680F60938D0208958FEF809385\r
+:1056B0008D02089580918C02262F30E0280F311D35\r
+:1056C0002F3F310524F4680F60938C0208958FEF0B\r
+:1056D00080938C02089580918B02262F30E0280F52\r
+:1056E000311D2F3F310524F4680F60938B0208951C\r
+:1056F0008FEF80938B02089580918A02262F30E0ED\r
+:10570000280F311D2F3F310524F4680F60938A0262\r
+:1057100008958FEF80938A02089580918902262F41\r
+:1057200030E0280F311D2F3F310524F4680F6093BE\r
+:10573000890208958FEF80938902089580918802ED\r
+:10574000262F30E0280F311D2F3F310524F4680F3C\r
+:105750006093880208958FEF8093880208958330C4\r
+:1057600011F128F4813049F0823091F008958530AC\r
+:1057700081F120F18630C1F1089580918D02681782\r
+:1057800020F4861B80938D02089510928D02089557\r
+:1057900080918C02681720F4861B80938C020895F8\r
+:1057A00010928C02089580918B02681720F4861B5A\r
+:1057B00080938B02089510928B02089580918A0243\r
+:1057C000681720F4861B80938A02089510928A023B\r
+:1057D000089580918902681720F4861B80938902BE\r
+:1057E000089510928902089580918802681720F424\r
+:1057F000861B8093880208951092880208950F9363\r
+:105800001F93873208F048C08E3108F094C0803171\r
+:1058100009F47EC008F5873009F468C068F4863062\r
+:1058200009F0A4C080913D04817F8E7F80933D0468\r
+:1058300081E080934D049BC08B3009F490C08E3082\r
+:1058400009F094C080913D0482FB222720F991E069\r
+:10585000922790FB82F965C0863109F480C060F41C\r
+:10586000813109F083C00E945C219091850281E022\r
+:1058700089278093850273C0893109F470C08B3108\r
+:1058800009F074C080913D0481FB222720F991E04A\r
+:10589000922790FB81F945C0883309F460C050F429\r
+:1058A000893209F45EC0853309F45BC0873209F49C\r
+:1058B00058C05CC0833409F454C028F48A3308F417\r
+:1058C00055C0895339C0883409F050C00E945C210A\r
+:1058D0000E946C060FEF13ED20E3015010402040B2\r
+:1058E000E1F700C000000E94792839C090913D0482\r
+:1058F000892F8095817080FB90F929F096609860DF\r
+:1059000090933D0434C0997F977F90933D0427C0C6\r
+:1059100080913D0483FB222720F991E0922790FBA0\r
+:1059200083F980933D049923D1F080913D048160F7\r
+:1059300080933D0414C08D5141E050E060E070E080\r
+:105940008A019B0104C0000F111F221F331F8A957B\r
+:10595000D2F7C901B8010E9418250E945C2181E09C\r
+:1059600006C061E070E080E090E0F5CF80E01F913C\r
+:105970000F91089580E0089580E00895CF93C82F97\r
+:1059800080914D04813069F018F08230C9F184C0F3\r
+:10599000E0918602F09187028081823209F07EC018\r
+:1059A00007C0E0918602F09187028081823261F423\r
+:1059B0008C2F0E94BA2C811104C08C2F0E94FF2BC7\r
+:1059C0001DC081E090E01AC08C2F0E94BC2C811178\r
+:1059D00014C0C43179F048F4CB3079F0C03109F00B\r
+:1059E00061C082E080934D0408C0C93219F0C83309\r
+:1059F00021F058C010924D0455C081E0817054C010\r
+:105A0000C93291F120F5C43179F1B0F4C73009F011\r
+:105A100047C08EE180938D0282E380938C028AE0FE\r
+:105A200080938B0284E180938A0288E080938902CC\r
+:105A300088E28093880234C0CE51C63088F5EC2FBE\r
+:105A4000F0E0E85AFC4F808180934C0429C0CE34AA\r
+:105A5000E9F020F4CB3421F56AE013C0C13579F0C8\r
+:105A6000C235F1F461E00DC080914C04882319F037\r
+:105A700010924C0415C081E080934D0415C061E084\r
+:105A800006C080914C040E94392B0AC06AE08091C4\r
+:105A90004C040E94AF2B04C010924D0480E004C05F\r
+:105AA00081E002C080E0AACFCF9108950E94DA2859\r
+:105AB000811102C00E94B6280E94FB2880936804CE\r
+:105AC00080FF02C0869501C080E00C943005809173\r
+:105AD0006804982F9695292F30E0233031054CF437\r
+:105AE0009F5F990F8170892B8160809368040E9469\r
+:105AF000FF288091680486950C9430058091680495\r
+:105B0000982F969591F09158990F8170892B8093D9\r
+:105B100068048E7F91E009F490E08091680490FB26\r
+:105B200080F9809368040E94FF288091680486951C\r
+:105B30000C94300580916804982F909590FB80F923\r
+:105B4000809368040E94FF288091680480FF02C04F\r
+:105B5000869501C080E00C94300590916804892FEF\r
+:105B600086958F5F8F779170843028F4880F892B0A\r
+:105B70008093680402C090936804809168048E7FCB\r
+:105B800091E009F490E08091680490FB80F98093A3\r
+:105B900068040E94FF288091680486950C94300563\r
+:105BA00020916804922F96958927982F990F822F1C\r
+:105BB0008170892B809368048E7F91E009F490E0D6\r
+:105BC0008091680490FB80F9809368040E94FF280C\r
+:105BD0008091680486950C9430055058BB27AA27FD\r
+:105BE0000ED0D1C1C2D130F0C7D120F031F49F3FE7\r
+:105BF00011F41EF4B7C10EF4E095E7FB9FC1E92F45\r
+:105C0000D3D180F3BA17620773078407950718F09A\r
+:105C100071F49EF5EBC10EF4E0950B2EBA2FA02D7A\r
+:105C20000B01B90190010C01CA01A0011124FF2749\r
+:105C3000591B99F0593F50F4503E68F11A16F04044\r
+:105C4000A22F232F342F4427585FF3CF4695379543\r
+:105C50002795A795F0405395C9F77EF41F16BA0B08\r
+:105C6000620B730B840BBAF09150A1F0FF0FBB1FB6\r
+:105C7000661F771F881FC2F70EC0BA0F621F731FFF\r
+:105C8000841F48F4879577956795B795F7959E3F5C\r
+:105C900008F0B3CF9395880F08F09927EE0F9795EA\r
+:105CA0008795089527D108F481E008950CD06BC141\r
+:105CB00063D140F05AD130F021F45F3F19F03EC17A\r
+:105CC000511195C14FC170D198F39923C9F3552350\r
+:105CD000B1F3951B550BBB27AA27621773078407DF\r
+:105CE00038F09F5F5F4F220F331F441FAA1FA9F395\r
+:105CF00033D00E2E3AF0E0E830D091505040E69587\r
+:105D0000001CCAF729D0FE2F27D0660F771F881FE7\r
+:105D1000BB1F261737074807AB07B0E809F0BB0BD6\r
+:105D2000802DBF01FF2793585F4F2AF09E3F5105FA\r
+:105D300068F004C15CC15F3FECF3983EDCF38695EC\r
+:105D400077956795B795F7959F5FC9F7880F911D70\r
+:105D50009695879597F90895E1E0660F771F881F5C\r
+:105D6000BB1F621773078407BA0720F0621B730B0F\r
+:105D7000840BBA0BEE1F88F7E095089504D0689461\r
+:105D8000B11135C1089518D188F09F5790F0B92FFF\r
+:105D90009927B751A0F0D1F0660F771F881F991F80\r
+:105DA0001AF0BA95C9F712C0B13081F01FD1B1E035\r
+:105DB00008951CC1672F782F8827B85F39F0B93F45\r
+:105DC000CCF3869577956795B395D9F73EF4909582\r
+:105DD0008095709561957F4F8F4F9F4F0895E89400\r
+:105DE00009C097FB3EF490958095709561957F4F23\r
+:105DF0008F4F9F4F9923A9F0F92F96E9BB279395D1\r
+:105E0000F695879577956795B795F111F8CFFAF4E0\r
+:105E1000BB0F11F460FF1BC06F5F7F4F8F4F9F4F11\r
+:105E200016C0882311F096E911C0772321F09EE86F\r
+:105E3000872F762F05C0662371F096E8862F70E0D5\r
+:105E400060E02AF09A95660F771F881FDAF7880FAF\r
+:105E50009695879597F9089588D018F011F08CD011\r
+:105E600038F480C0C4C0E92F9FD0B0F35523C9F3E4\r
+:105E7000E7FB6217730784079507A8F199F3E92FE9\r
+:105E8000FF2788232AF03197660F771F881FDAF7DC\r
+:105E9000952F5527442332F091505040220F331F45\r
+:105EA000441FD2F7BB27E91BF50B621B730B840B56\r
+:105EB000B109C1F222F4620F731F841FB11D319723\r
+:105EC0002AF0660F771F881FBB1FEFCF91505040FD\r
+:105ED0005AF041F0882332F0660F771F881F9150E7\r
+:105EE0005040C1F7939530C08695779567959F5F31\r
+:105EF000D9F7F8CF990F0008550FAA0BE0E8FEEF8D\r
+:105F000016161706E807F907C0F012161306E4077D\r
+:105F1000F50798F0621B730B840B950B39F40A2676\r
+:105F200061F0232B242B252B21F408950A2609F454\r
+:105F3000A140A6958FEF811D811D089597F99F6758\r
+:105F400080E870E060E008959F3F31F0915020F4C8\r
+:105F5000879577956795B795880F911D9695879545\r
+:105F600097F908959FEF80EC089500240A9416167F\r
+:105F7000170618060906089500240A941216130637\r
+:105F8000140605060895092E0394000C11F48823C5\r
+:105F900052F0BB0F40F4BF2B11F460FF04C06F5FE1\r
+:105FA0007F4F8F4F9F4F089557FD9058440F551FB7\r
+:105FB00059F05F3F71F04795880F97FB991F61F08B\r
+:105FC0009F3F79F087950895121613061406551F02\r
+:105FD000F2CF4695F1DF08C0161617061806991F6E\r
+:105FE000F1CF86957105610508940895E894BB2763\r
+:105FF00066277727CB0197F908957CDF08F48FEFA8\r
+:1060000008950BD0C0CFB1DF28F0B6DF18F095238C\r
+:1060100009F094CFA7CF1124EACFC6DFA0F3959F54\r
+:10602000D1F3950F50E0551F629FF001729FBB277F\r
+:10603000F00DB11D639FAA27F00DB11DAA1F649F2B\r
+:106040006627B00DA11D661F829F2227B00DA11DDE\r
+:10605000621F739FB00DA11D621F839FA00D611D64\r
+:10606000221F749F3327A00D611D231F849F600D85\r
+:10607000211D822F762F6A2F11249F5750408AF0BE\r
+:10608000E1F088234AF0EE0FFF1FBB1F661F771F4A\r
+:10609000881F91505040A9F79E3F510570F04ECF98\r
+:1060A000A6CF5F3FECF3983EDCF386957795679536\r
+:1060B000B795F795E7959F5FC1F7FE2B880F911D68\r
+:1060C0009695879597F90895FA01EE0FFF1F309680\r
+:1060D0002105310599F16115710561F48038BFE33F\r
+:1060E0009B0749F168949038810561F08038BFEFD3\r
+:1060F0009B0741F0992342F5FF3FE105310521055A\r
+:1061000011F1E8940894E795D901AA2329F4AB2F5B\r
+:10611000BE2FF85FD0F310C0FF5F70F4A695E0F7D4\r
+:10612000F73950F019F0FF3A38F49F779F930CD06D\r
+:106130000F9007FC905808953EF014CF60E070E097\r
+:1061400080E89FE308954FE79F775F934F933F93D6\r
+:106150002F939ED02F913F914F915F9152DF05C0B9\r
+:1061600019F40EF0EBCE42CFFDCE26DFC8F3963801\r
+:10617000C0F707F80F92E8942BE33AEA48EB5FE7A1\r
+:106180004EDF0F920F920F924DB75EB70F92C0D0B5\r
+:10619000ECEFF0E016D04F915F91EF91FF91E59514\r
+:1061A000EE1FFF1F49F0FE57E0684427EE0F441F23\r
+:1061B000FA95E1F74195550B32D00F9007FE26C0B6\r
+:1061C0000895DF93CF931F930F93FF92EF92DF9287\r
+:1061D0007B018C01689405C0DA2EEF011EDFFE0101\r
+:1061E000E894A5912591359145915591AEF3EF0134\r
+:1061F00006DDFE019701A801DA9479F7DF90EF90B0\r
+:10620000FF900F911F91CF91DF9108959B01AC01F9\r
+:1062100060E070E080E89FE349CD90CE95CECCDE83\r
+:10622000E8F39923D9F3940F511DBBF391505040DB\r
+:1062300094F059F0882332F0660F771F881F915031\r
+:106240005040C1F79E3F510544F7880F911D969528\r
+:10625000879597F908955F3FACF0983E9CF0BB2777\r
+:10626000869577956795B79508F4B1609395C1F7D2\r
+:10627000BB0F58F711F460FFE8CF6F5F7F4F8F4F70\r
+:106280009F4FE3CFB4CE0EF05FCE6CCE689456CE67\r
+:1062900093DEC8F39923D1F3C6F3DF93CF931F9313\r
+:1062A0000F93FF92C92FDD2788232AF02197660FCD\r
+:1062B000771F881FDAF720E030E040E85FEB9FE3CC\r
+:1062C000883920F0803E30F021968F7787DCE4E239\r
+:1062D000F1E003C083DCE1E5F1E073DF8B01BE0197\r
+:1062E000EC01FB2E6F5771097595771F880B990B81\r
+:1062F00078DD28E132E741E35FE38FDEAF2D9801DF\r
+:10630000AE01FF900F911F91CF91DF9178DC3BCED2\r
+:10631000FA01DC01AA0FBB1F9B01AC01BF5728F497\r
+:1063200022273327442750781FC0B75188F4AB2F5A\r
+:106330000024469537952795011CA395D2F300209C\r
+:1063400069F0220F331F441FB395DAF30DD045CC0B\r
+:1063500061307105A0E88A07B94630F49B01AC01B1\r
+:106360006627772788279078309621F0208331831D\r
+:10637000428353830895AA1BBB1B51E107C0AA1F88\r
+:10638000BB1FA617B70710F0A61BB70B881F991FD6\r
+:106390005A95A9F780959095BC01CD01089597FB7A\r
+:1063A000072E16F4009407D077FD09D00E94BB3168\r
+:1063B00007FC05D03EF4909581959F4F0895709508\r
+:1063C00061957F4F0895EE0FFF1F0590F491E02D2A\r
+:1063D0000994F999FECF92BD81BDF89A992780B5AD\r
+:1063E0000895A8E1B0E042E050E00C941132262F6D\r
+:1063F000F999FECF92BD81BDF89A019700B40216BB\r
+:1064000039F01FBA20BD0FB6F894FA9AF99A0FBE68\r
+:1064100008950196272F0E94F8310C94F731DC0182\r
+:10642000CB01FC01F999FECF06C0F2BDE1BDF89A9F\r
+:10643000319600B40D9241505040B8F70895F89449\r
+:02644000FFCF8C\r
+:106442000C52D02445000000410000DC4400000052\r
+:106452004152D0A4440000404100005C44000000CE\r
+:106462004148F17644000000415C978A44000000F4\r
+:10647200411FD592440000004152D0A444000000C4\r
+:10648200415CFFB844000000410AA7CF440000006D\r
+:10649200410000DC44000000410AA7CF4400000094\r
+:1064A200410000DC440000004100000000000080C8\r
+:1064B2004000005C450000404100000000000080F8\r
+:1064C2004052D02445000040410AA7CF44000000BA\r
+:1064D200410000DC44000000410000000000008098\r
+:1064E2004052D024450000404100000000000080DE\r
+:1064F2004000005C45000040410AA7CF4400000074\r
+:10650200410000DC44000000410000000000008067\r
+:106512004052D024450000404100000000000080AD\r
+:10652200400AA74F45000040410AA7CF440000009F\r
+:10653200410000DC44000000410000000000008037\r
+:106542004052D024450000004100000000000080BD\r
+:10655200405CFF3845000000410000000000008060\r
+:106562004052D02445000000410AA7CF4400000059\r
+:10657200410000DC440000004100000000000080F7\r
+:106582004052D024450000804153D02445000040B1\r
+:106592004160970A450000004154D0A44400000025\r
+:1065A200410000DC440000004160970A450000A061\r
+:1065B20041050000003F0000C8424314D114AE144C\r
+:1065C2007A14461401012A042808140A321E000013\r
+:1065D200020004000500070009000B000C000E0079\r
+:1065E2001000110013001500170018001A001C00FB\r
+:1065F2001D001F002100230024002600280029007E\r
+:106602002B002D002F0030003200340035003700FF\r
+:1066120039003B0040004500250026006100600073\r
+:1066220020003700640065006600670044004600F1\r
+:10663200240047003149803F5D8B803FF8BF803F97\r
+:10664200CAE1803F73ED803FCAE1803FF8BF803FDF\r
+:106652005D8B803F3149803F0000803FF16D7F3F7D\r
+:1066620075EA7E3F4C827E3F833F7E3F84287E3F99\r
+:10667200833F7E3F4C827E3F75EA7E3FF16D7F3FD6\r
+:106682000000803F3F4D363975092809F208B908E4\r
+:106692004C0865087E0897080102030405060708EE\r
+:0266A2000900ED\r
+:00000001FF\r
--- /dev/null
+:020000020000FC\r
+:047000000C948D3E21\r
+:047028000C94B73DD0\r
+:10702F0012010002FF010020EB03F42F0000010208\r
+:10703F00030109021200010100803209040000005F\r
+:10704F00000000000C03410054004D0045004C00AF\r
+:10705F001603410054006D00330032005500340018\r
+:10706F004400460055000C0331002E0030002E0066\r
+:10707F0030000403090416010C0100000C0000018C\r
+:02708F006C7F14\r
+:1070920012BD01BDF89A00B5089501E00895F9996D\r
+:1070A200FECF12BD01BD20BDFA9AF99AF6CFF99929\r
+:1070B200FECF0C944938F80104910895F8013491F7\r
+:1070C20031962491890108950091610000930C0189\r
+:1070D20000E80093610001E00093610005BF02E057\r
+:1070E20005BF0C9486380091D70001600093D70049\r
+:1070F200A89507EF04BF0091600000610093600053\r
+:1071020000E00093600001E008950E94AA3D0E9401\r
+:10711200B53DFDCF0CD00F7708D0006806D00061D6\r
+:1071220004D0016028D0789408950093D80000918B\r
+:10713200D8000895FCDF00621ED04CD009B500FFD4\r
+:10714200FDCFF5DF0F7D17D00091E0000E7F009399\r
+:10715200E0000091E000077F0093E0000091E20070\r
+:1071620001600093E2000091E20008600093E200F7\r
+:1071720078940C94743B0093D800089500910D010B\r
+:10718200002359F40091D90000FF07C0D0DF006846\r
+:10719200F2DF01E000930D01CDDFE0E2F2E00081D9\r
+:1071A200018100FF0DC0008111811E7F11830083C8\r
+:1071B20001E00093EA0000E00093EA0000931E025F\r
+:1071C20000E00093E9000091E80003FF02C00E9482\r
+:1071D200F23B0895A89539D000E40093600000E0E6\r
+:1071E200009381000093800010E0009385000093DB\r
+:1071F200840001E006BB00918100036000938100DE\r
+:107202000091600007FFFCCF00E80093600010933C\r
+:107212008100A89507EF04BF18D010936000209159\r
+:1072220084003091850010938100109380001093A8\r
+:1072320085001093840001E006BB2D3D354010F01F\r
+:1072420002E101C002E009BD089500916000006101\r
+:107252000093600008950E94AD3E239741D100E063\r
+:1072620000930901B5D104811581012B51F437D165\r
+:1072720000910701002309F4B9C000E0009307015F\r
+:10728200B5C058D102FFFDCF37D1068335D1009367\r
+:107292000F0132D1009310012FD1009311012CD193\r
+:1072A2000093120129D10093130102852091130149\r
+:1072B20030911201409111015091100116811A95DD\r
+:1072C20041F01250A9F01A9599F11A9509F473C078\r
+:1072D2008BC010910F01113011F411E001C010E0C8\r
+:1072E200138799D00C3F11F414D17FC077D17DC0A0\r
+:1072F20092D010910F01112329F01A9549F01A9595\r
+:10730200A9F073C010E013870C3F09F06EC0ECCFF8\r
+:1073120056D103C04CD109F468C00D911C9144D1DF\r
+:107322000F3FC1F305E0009309015FC011E0EBCF0D\r
+:10733200D2D029F00250E1F10A9541F056C0FDD0B9\r
+:107342000E94A33F0FEF00930A014FC0552319F08B\r
+:107352005A9579F04AC04ED00DEF04BF74D0EAD0EE\r
+:1073620003FFFDCF67D051D04AD008E00093600000\r
+:10737200FFCF40D068D0DED003FFFDCF5BD03FD03F\r
+:1073820044D00FEF1FE004C009811A810150104060\r
+:1073920009831A8309811A81012BB1F700E800934E\r
+:1073A200610000910C01009361000C940000FFCF7A\r
+:1073B20001E003871AC08FD019F00A9539F015C081\r
+:1073C200535098F4BAD002E000870FC0505339F0FE\r
+:1073D2005A9541F05F52B1F35A95A1F306C002E00B\r
+:1073E2000883F0CF01E0FCCFA8D079D02396E4E067\r
+:1073F2000C94BA3E01E005BF00E005BF089500917C\r
+:10740200D8000F770093D800089509B50D7F09BD04\r
+:1074120000E009BD08955183408333832283109194\r
+:10742200E8001B7F1093E8001091E8001F7710938B\r
+:10743200E80008955DD053D0F8940091E000016017\r
+:107442000093E000089579D04AC0219749D0009175\r
+:107452000601035019F00250B9F00BC03CD021F0E4\r
+:107462000A9559F00A9529F400910A010C3F19F482\r
+:1074720050D02196089567D0FCCF0091010100936E\r
+:10748200F100009100010AC01091100124D019F0FE\r
+:107492000A9549F0EECF135018F400E00093F10082\r
+:1074A2001ED044D0E6CF105339F01A9539F01F524E\r
+:1074B20041F01A9541F0F4CF08E5F0CF00E006D094\r
+:1074C200EDCF02E0FCCF04E001D0E8CF10E020E0F5\r
+:1074D20030E00C94113F00910F010023089521C068\r
+:1074E2000BD008D007D00093040106D00093050109\r
+:1074F20021D00BC000D008830091F10008950091C3\r
+:10750200EB0000620093EB0015D0077F0093E800C8\r
+:107512000895F5DF02E00093080103E000930901FA\r
+:10752200089559D007D000FFFDCF089503D002FF80\r
+:10753200FDCF03C00091E8000895FCDF0B7FE6DF7A\r
+:10754200F9DF0F77E3CF0E94AC3E42D038D006C0BD\r
+:107552002BD00093F1002BD059F43DD0082F092BEA\r
+:10756200A9F0E8DF02FD12C0E5DF00FFFDCF4424F1\r
+:10757200042D4394003289F300910B0100230D91F5\r
+:107582001C9131F311970E945838E3CFD3DF00FFEB\r
+:10759200FDCF21D0CFDF00FFFDCFCCDF02FFFDCF3B\r
+:1075A200CCDFE5E00C94B93E11970C945C380D9158\r
+:1075B2001C910F5F1F4F1C930E93019708958281B8\r
+:1075C200938100811181801B910B0196DF01089547\r
+:1075D200E0E0F1E00895AEDF0E7F98CF0E94A93E71\r
+:1075E200F7DF80819181A081B181AF710481158122\r
+:1075F20000521040048315830AC000910B0100233E\r
+:1076020031F4A301920103E911E00E943B3F47D00C\r
+:10761200B8F1662477242C0111C06EDFF301ED5618\r
+:10762200FE4F008301E0600E00E0701E01960091A3\r
+:10763200F200002311F033D0B8F47FDF30D0E8F24B\r
+:10764200F301B096E238F040C0F674DF02FFFDCFDE\r
+:107652000091F200BDDF24813581201B304024835C\r
+:107662003583E5CF49DFAA95AA23E1F700910B0103\r
+:10767200013099F62091F1008C010E945038D6CF4A\r
+:1076820004811581012B21F055DF02FFFDCF55DF6B\r
+:10769200A2DF50DF00FFFDCFE8E00C94B63EE0E051\r
+:1076A200F1E0028113810817190708952091EB0078\r
+:1076B20021602093EB000093EC000091ED0002703A\r
+:1076C200012B0093ED000091ED0002600093ED00AC\r
+:1076D2001091EE00012F000F00E0001F0895412FCE\r
+:1076E2000093E900089500E009D000FD05C000E024\r
+:1076F200F7DF10E202E0DACF00E00895F1DF009157\r
+:10770200EB0008950F770132A9F5112369F11A955B\r
+:1077120059F01A9561F01A9569F01A95F9F01A95CF\r
+:10772200C1F01A95D9F024C00E942C3920C00E94C1\r
+:10773200263A1DC029D00091090123D001E01FD0B3\r
+:1077420020D0009108011BD00E94923A0E94973AE1\r
+:107752000EC01AD00091080114D007C002E00093B5\r
+:10776200080100E0009309010FD00E94923A03C081\r
+:107772000E94803A02C001E0089500E0089501D01D\r
+:1077820000E00093F10008950091E800077F009364\r
+:10779200E800089508950350F9F4112339F01A9579\r
+:1077A20051F01A9581F01A9599F016C004E016D09E\r
+:1077B20001E810E703C011D003E510E7E7E1F2E0CA\r
+:1077C20000831183D8CF06E109D00FE510E7F6CF89\r
+:1077D20004D005E710E7F2CFD0CF0CE000931A02F5\r
+:1077E200089527D120D100931D02E1D0212F11232A\r
+:1077F20029F12A95E9F02250F1F0225099F02A95C8\r
+:1078020049F0225061F02A9581F02A95E1F02A95FB\r
+:10781200E9F023C0003809F44FC00C94833B0038D0\r
+:10782200E1F7C8C00023C9F71EC00023B1F72DC07D\r
+:10783200033098F744C1033080F70BC1003868F376\r
+:10784200033858F7C9C0013841F77BC1013051F400\r
+:10785200FCD0BFD000FD06C0FCCF0E94833B0023BA\r
+:1078620009F41ED008951091E3001078DCD00F7750\r
+:10787200012B0093E300E9D0ACD000FFFDCF0091D3\r
+:10788200E30000680093E300089591D0123040F4C1\r
+:107892000FD010931E02DAD000911E020C94CB3B43\r
+:1078A2000091EB0001D004C000620093EB00089548\r
+:1078B2000091E800077FC0C0BA93AA93229700E024\r
+:1078C2000093190274D0AFD0202F2A9519F02A956F\r
+:1078D200E9F022C002E100931A020FE210E7E7E1A9\r
+:1078E200F2E0008311839DD008839DD00983E0DFFD\r
+:1078F20000911A0210E02881398102171307A8F4B7\r
+:107902000F7181F401E00093190211C002E10093AA\r
+:107912001A0201E410E7E3CF0E94CC3B002319F7DF\r
+:107922008ED040C01093190202C020931A027ED05A\r
+:10793200A7E1B2E001C08AD000911A02002309F146\r
+:1079420048D004FD1EC045D000FD03C042D004FF54\r
+:10795200FACF10E0012F1395003281F0ED91FC91E6\r
+:107962001197049133D02D913C912F5F3F4F3C935F\r
+:107972002E93FD0103810A95038361F72AD004FF48\r
+:10798200DACF00911902013039F423D004FD04C08A\r
+:1079920020D000FFFDCF5AD01CD004FFFDCF46D02F\r
+:1079A20018D00B7F49D02296A991B99108951091D0\r
+:1079B200F10008957DDF00911E0208D047D009D062\r
+:1079C2000F773AD006D002FFFDCFBFC00093F1007F\r
+:1079D20008950091E800089524D010911D021058D6\r
+:1079E20029F01A9589F01A9591F019C061DF00917A\r
+:1079F2001C02ECDF00E0EADF29D0EBDF02FFFDCF63\r
+:107A020018D0E7DF0F770CC053DF00E0F2CF51D080\r
+:107A12000F7710E0F801E55EFD4F0081EACF0FD04D\r
+:107A22000BC001D000D00091F1000895D2DF0F7E8B\r
+:107A320003C00091E8000B7F0093E80008950091D5\r
+:107A4200EB0032DFC6DF077F089532DFC2DF0E7F31\r
+:107A5200F3CF00911D02002329F00A9509F10A953E\r
+:107A620031F01EC0E0DF0A9561D0D9F41AC061D0AE\r
+:107A7200B9F4D9DF0F7711F416D01BD00093E900C7\r
+:107A82001091EB0010FF0BC00ED010E01093E90034\r
+:107A920021E0F801E55EFD4F20834FD003C042D0C4\r
+:107AA20045D0CFDFC9CF1091EB0010621093EB00ED\r
+:107AB20008951091E800177F1093E800089500914F\r
+:107AC2001D02002311F4AFDF02C0013011F4B7DF51\r
+:107AD200B3CF023031F52DD019F52091F1002F7777\r
+:107AE2002093E90023D000FF19C081F01FD000616C\r
+:107AF200DCDE01E010E0422F0E949F3E0093EA008C\r
+:107B020000E00093EA0012D00860CFDE0BD030E034\r
+:107B1200F901E55EFD4F008310D0DACF03D0D7CF55\r
+:107B2200BFDE089500E00093E90008950091EB00A4\r
+:107B3200089579DF3CDF00230895BADE4ADF0E7F25\r
+:107B4200089583DF46DF02FFFDCF73DF42DF0F7749\r
+:107B520073CF0091D70001600093D7000E948B3849\r
+:107B620000E000931F0208950C94BF388A93FA93A1\r
+:107B7200EA933A922A921A920A927A936A935A93BF\r
+:107B82004A933A932A931A930A938FB70091DA0091\r
+:107B920000FF24C00091D80000FF20C00EEF009328\r
+:107BA200DA000091D90000FF11C001E000930D013D\r
+:107BB200ABD0026096D09AD00860A2D00E949B38C7\r
+:107BC2000091E0000E7F0093E00008C000E0009307\r
+:107BD2000D0100931E0298D0046083D07FD002FF73\r
+:107BE20005C084D002FF02C00BEF75D077D000FF32\r
+:107BF2001BC07CD000FF18C001E000930E016AD0C8\r
+:107C020083D000626ED00EEF6FD0006179D06ED05B\r
+:107C12000F7D76D00091D80000620093D80009B59C\r
+:107C22000D7F09BD00E009BD59D004FF20C05ED020\r
+:107C320004FF1DC009B500FD05C00E94EB3809B55F\r
+:107C420000FFFDCF0091D8000F7D0093D80042D0F5\r
+:107C520000910E01002359F04CD00FEE45D00F7E5B\r
+:107C620052D000643ED042D001604AD042D036D0D9\r
+:107C720005FF0FC03BD005FF0CC000E000930E01D2\r
+:107C820035D00F7E3DD00FED2FD00F7D3CD0006858\r
+:107C920028D024D003FF0DC029D003FF0AC000E082\r
+:107CA20000931F0207EF17D00E94743B2DD0116082\r
+:107CB20018D08FBF09911991299139914991599100\r
+:107CC200699179910990199029903990E991F991E6\r
+:107CD200899118950FEE0093E10008950091E1005B\r
+:107CE20008951183008308950093E1000091E2005A\r
+:107CF20008950091E200006203D00091E200086062\r
+:107D02000093E2000895FCDFE0E2F2E000811181DD\r
+:107D1200089500008895FECF01E60DBF02E00EBF78\r
+:107D2200C2EED2E00E947438002311F00E94D33ECA\r
+:107D32000E9465380E948A3E0C948A3E4A951AF047\r
+:107D4200000F111FFBCF0895BA92AA929A928A92BB\r
+:107D52007A926A925A924A92BA93AA939A938A937D\r
+:107D62000895BB84AA84998488847F806E805D8014\r
+:107D72004C80BB81AA8199818881F0E00FB6F8948A\r
+:107D8200CE0FDF1F0FBE089520E006D0E9F7089559\r
+:107D9200259102D0E9F708952D9301501040202F2C\r
+:107DA200212B089585E890E7FC0105911491FC01CF\r
+:107DB2003296A591B491FC01349625913491422FCB\r
+:107DC200432B19F0F901E4DF01C0DEDF069610E76C\r
+:107DD2008139910748F308952F930CD02F9101D048\r
+:107DE20008953CD0F12FE02F45E047BFE89536D00B\r
+:107DF20012D0089533D0F12FE02F43E047BFE8952A\r
+:107E02002DD008952BD0F12FE02F43E047BFE89506\r
+:107E120025D001D0089522D041E147BFE8951EC088\r
+:107E22001DD0F12FE02F41E247BFC895002D16C0AB\r
+:107E320015D0F12FE02F49E047BFC895002D0EC0A5\r
+:107E4200F32FE22F012E102E41E047BFE89506C026\r
+:107E520005D0002E29E027BFE89500C0022E27B7E3\r
+:107E620020FDFCCF202D0895022E27B726FDFCCF42\r
+:107E7200202D08950E94A53E22974801C901DA01EA\r
+:107E820010C05BD001E0A00E00E0B01E00E4A0161E\r
+:107E920000E0B00608F440C0830120E030E00E9418\r
+:107EA200F23E0A2F0B2B09F440C0082F0F7710E087\r
+:107EB2002C01401A510A320100E4A02E03C00A2FFD\r
+:107EC2000B2BE1F04816590680F0F40101914F01A5\r
+:107ED2000983119729F001914F010883119711C06D\r
+:107EE200F2013196049108830CC0F20104910983D6\r
+:107EF2003196E817F907A1F7F401EDCF1BD00883FB\r
+:107F020019839201088119810E94213F16D0AA94F7\r
+:107F1200B1F62301AA24BB240DD0312F0F3F3F4FCE\r
+:107F220009F4AFCF83011DD0B7CF01E02296ECE078\r
+:107F32000C94B23E82010C945F3802E0400E00E0E5\r
+:107F4200501E08959A938A9380E090E08C0109D0A4\r
+:107F520080589F4F8F3F0FE69007C0F38991999108\r
+:107F6200089520E030E00C94FB3E00000000000089\r
+:067F720000000000FC000D\r
+:107FE4000C94ED3E0C94113F0C94193F0C94213FDA\r
+:0C7FF4000C94F23E0C94033F0C94293FC7\r
+:040000030000700089\r
+:100000000C94DA040C941E050C941E050C941E0529\r
+:100010000C941E050C941E050C941E050C941E05D4\r
+:100020000C941E050C941E050C94B7180C94891999\r
+:100030000C94EC270C941E050C941E050C941E05C4\r
+:100040000C941E050C941E050C941E050C941E05A4\r
+:100050000C941E050C9454280C941E050C941E053B\r
+:100060000C941E050C941E050C941E050C941E0584\r
+:100070000C941E050C941E050C941E050C941E0574\r
+:100080000C94AD0E0C941E050C941E050C941E05CC\r
+:100090000C941E050C941E050C941E050C941E0554\r
+:1000A0000C941E050C941E050C941E0579058905FB\r
+:1000B0009B05AB05B105C005CC05D205E005E905FA\r
+:1000C000FA050A0610064006F619181A061B181A31\r
+:1000D000061B5D1A801A061BD51AE81AEB1DEB1DCC\r
+:1000E000281E281E821EC01E38213821D91E382104\r
+:1000F000DA1FDA1F9D20B4203821232107634236FE\r
+:10010000B79BD8A71A39685618AEBAAB558C1D3CA8\r
+:10011000B7CC5763BD6DEDFD753EF6177231BF006C\r
+:100120000000803F08000000BE922449123EABAAA6\r
+:10013000AA2ABECDCCCC4C3E00000080BEABAAAA01\r
+:10014000AA3E00000000BF000000803F0000000049\r
+:1001500000084178D3BB4387D1133D190E3CC3BD82\r
+:100160004282AD2B3E68EC8276BED98FE1A93E4C2F\r
+:1001700080EFFFBE01C4FF7F3F00000000002B00A6\r
+:1001800014001A000800150017001C0018000C00CD\r
+:10019000120013002A0029000400160007000900BD\r
+:1001A0000A000B000D000E000F0033003400E100C8\r
+:1001B0001D001B000600190005001100100036008C\r
+:1001C0003700380028000530E000E200E30003308B\r
+:1001D0002C002C0004305000510052004F002B0026\r
+:1001E00014001A00090013000A000D000F00180087\r
+:1001F0001C0033002A002900040015001600170017\r
+:1002000007000B00110008000C0012003400E10090\r
+:100210001D001B000600190005000E00100036002E\r
+:100220003700380028000530E000E200E30003302A\r
+:100230002C002C0004305000510052004F002B00C5\r
+:1002400034003600370013001C0009000A000600C5\r
+:1002500015000F002A0029000400120008001800F1\r
+:100260000C0007000B001700110016003800E10019\r
+:10027000330014000D000E001B00050010001A00D2\r
+:1002800019001D0028000530E000E200E300033003\r
+:100290002C002C0004305000510052004F00350259\r
+:1002A0001E021F0220022102220223022402250232\r
+:1002B000260227022A004C003A003B003C003D0089\r
+:1002C0003E003F002D022E022F02300231020100BB\r
+:1002D000400041004200430044004500010001008D\r
+:1002E0000100010001000100010001000100010006\r
+:1002F000010001000100AB00AA00A900AE0035001A\r
+:100300001E001F00200021002200230024002500E1\r
+:10031000260027002A004C003A003B003C003D002C\r
+:100320003E003F002D002E002F0030003100010064\r
+:10033000400041004200430044004500010001002C\r
+:1003400001000100010001000100010001000100A5\r
+:10035000010001000100AB00AA00A900AE000000EE\r
+:10036000000000000000000000000000000000008D\r
+:10037000000000000000000000000000000000007D\r
+:10038000000000000000000000000000000000006D\r
+:10039000000000000000000000000000000000005D\r
+:1003A000000000000000000000000000000003301A\r
+:1003B00000000000043000000000000000001E00EB\r
+:1003C0001E001E001E001E001E001E001E001E003D\r
+:1003D0001E001E001E00000014001A000800150078\r
+:1003E00017001C0018000C00120013002F00000062\r
+:1003F00004001600070009000A000B000D000E00A3\r
+:100400000F00330034000D3000000000060019001A\r
+:1004100000000000110010000000000000000000BB\r
+:1004200000000000000000000000000000000000CC\r
+:1004300000000000000000000000000000000000BC\r
+:1004400000000000000000000000000000000000AC\r
+:10045000000000000000000000000000000000009C\r
+:10046000000000000000000000000000000000008C\r
+:10047000000000000000000000000000000000007C\r
+:10048000000000000000000000000000000000006C\r
+:10049000000000000000000000000000000000005C\r
+:1004A000000000000000000000000000000000004C\r
+:1004B000000000000000000000000000000000003C\r
+:1004C000000000000000000000000000000000002C\r
+:1004D000000000000000000000000000000000001C\r
+:1004E000000000000000000000000000000000000C\r
+:1004F00000000000000000000000000000000000FC\r
+:1005000000000000000000000000000000000000EB\r
+:1005100000000000000000000000000000000000DB\r
+:1005200000000000000000000000000000000000CB\r
+:1005300000000000000000000000000000000000BB\r
+:1005400000000000000000000000000000000000AB\r
+:10055000000000000000000000000000000000009B\r
+:10056000000000000000000000000000000000008B\r
+:10057000000000000000000000000000000000007B\r
+:10058000000000000000000000000000000000006B\r
+:10059000000000000000000000000000000000005B\r
+:1005A000000000000000000000000000000000004B\r
+:1005B000000000000000000000000000000000003B\r
+:1005C000000000000000000000000000000000002B\r
+:1005D000000000000000000000000000000000001B\r
+:1005E000000000000000000000000000000000000B\r
+:1005F00000000000000000000000000000000000FB\r
+:1006000000000000000000000000000000000000EA\r
+:1006100000000000000000000000000000000000DA\r
+:1006200000000000000000000000000000000000CA\r
+:1006300000000000000000000000000000000000BA\r
+:1006400000000000000000000000000000000000AA\r
+:10065000000000000000000000000000000000009A\r
+:10066000000000000000000000000000000000008A\r
+:10067000000000000000000000000000000000007A\r
+:10068000000000000000000000000000000000006A\r
+:10069000000000000000000000000000000000005A\r
+:1006A000000000000000000000000000000000004A\r
+:1006B000000000000000000000000000000000003A\r
+:1006C000000000000000000000000000000000002A\r
+:1006D000000000000000000000000000000000001A\r
+:1006E000000000000000000000000000000000000A\r
+:1006F00000000000000000000000000000000000FA\r
+:1007000000000000000000000000000000000000E9\r
+:1007100000000000000000000000000000000000D9\r
+:1007200000000000000000000000000000000000C9\r
+:1007300000000000000000000000000000000000B9\r
+:1007400000000000000000000000000000000000A9\r
+:100750000000000000000000000000000000000099\r
+:100760000000000000000000000000000000000089\r
+:100770000000000000000000000000000000010078\r
+:100780000050010001000100010001000100010012\r
+:10079000010001004C00010001000100073006309B\r
+:1007A000135012500030013002300C3001000100B3\r
+:1007B0000B300A300930083001000100010001004F\r
+:1007C0000100010001000100010001000100010021\r
+:1007D00001000100010001000100010001002803E7\r
+:1007E000540068006500200050006C0061006E003D\r
+:1007F00063006B0020004B006500790062006F0011\r
+:1008000061007200640000002C034F00720074004D\r
+:1008100068006F006C0069006E0065006100720086\r
+:1008200020004B006500790062006F0061007200DB\r
+:100830006400730000000403090409026D00040150\r
+:1008400000A0FA09040000010301010009211101BF\r
+:100850000001223F000705810308000A0904010086\r
+:100860000103010200092111010001224D000705C9\r
+:10087000820308000A0904020001030000000921A4\r
+:10088000110100012236000705830308000A09044C\r
+:1008900003000103000000092111010001223900B9\r
+:1008A000070584031000011201100100000008ED8B\r
+:1008B000FE606001000102000105010906A10105B9\r
+:1008C0000719E029E7150025019508750181020542\r
+:1008D0000819012905950575019102950175039186\r
+:1008E0000105071900297715002501957875018103\r
+:1008F00002C005010980A101850216010026B7008A\r
+:100900001A01002AB700751095018100C0050C0975\r
+:1009100001A1018503160100269C021A01002A9CF0\r
+:1009200002751095018100C005010902A1010901AC\r
+:10093000A100050919012905150025019505750175\r
+:100940008102950175038101050109300931158185\r
+:10095000257F95027508810609381581257F950147\r
+:1009600075088106050C0A38021581257F950175E9\r
+:10097000088106C0C005010906A101050719E02983\r
+:10098000E71500250195087501810295017508811B\r
+:100990000105081901290595057501910295017553\r
+:1009A0000391010507190029FF150025FF9506751C\r
+:1009B000088100C011241FBECFEFDAE0DEBFCDBF3B\r
+:1009C00004B603FE24C08091690490916A04A0914A\r
+:1009D0006B04B0916C048730904BA740B04BB9F4D6\r
+:1009E0001092690410926A0410926B0410926C04C5\r
+:1009F00014BE84B7877F84BF88E10FB6F8948093D4\r
+:100A00006000109260000FBEE0E0F8E3099513E08B\r
+:100A1000A0E0B1E0E2E4F4E602C005900D92A23657\r
+:100A2000B107D9F714E0A2E6B3E001C01D92A936E0\r
+:100A3000B107E1F70E94FD150C941F320C940000E1\r
+:100A4000279A2F988FEF9FEF9093870080938600CF\r
+:100A50008AE08093800089E1809381000C94562D78\r
+:100A6000282F81110BC080918000877F80938000A8\r
+:100A700010928D0010928C002F9808952F988091DD\r
+:100A80008000886080938000233019F48FEF9FEFFF\r
+:100A90000FC083E090E0821B9109880F991F2FEF10\r
+:100AA0003FEFA90102C0569547958A95E2F7CA0122\r
+:100AB00090938D0080938C000895CF93DF93EC0189\r
+:100AC0000E94ED28BE0180E090E0DF91CF910C9470\r
+:100AD00018250F931F93462F50E04E30510508F014\r
+:100AE000DEC0DC01FA01EA5AFF4F12968C910C9499\r
+:100AF000E331882309F4D3C000E010E0980140E01E\r
+:100B000064E070E089E292E00E942B1281E090E0C4\r
+:100B10000FC0882309F4C3C000E010E0980140E052\r
+:100B200066E070E089EB91E00E942B1282E090E099\r
+:100B30000E945D05B4C0882309F4B1C000E010E054\r
+:100B4000980140E068E070E089EE91E00E942B128D\r
+:100B500084E090E0EDCF882311F083E005C083E0CE\r
+:100B60000CC0882349F084E00E94952540E164E0B0\r
+:100B700083E00E946D0A93C084E00E94B625F6CF00\r
+:100B8000882331F085EE0E947F1C0E94AD2D87C026\r
+:100B900085EE0E94471D83C0882309F480C00E940F\r
+:100BA000BF0D7DC0882309F47AC00E94B80D00E013\r
+:100BB00010E0980140E065E070E089E492E027C031\r
+:100BC000882309F46CC085E00E94B6250E94E00DE0\r
+:100BD00066C0882309F463C000E010E0980140E09B\r
+:100BE00068E070E089E191E00E942B1285E00E94AC\r
+:100BF000952555C0882309F452C00E94BE1200E01A\r
+:100C000010E0980140E068E070E089E191E00E9426\r
+:100C10002B1245C0882309F442C00E94C912EFCFAD\r
+:100C20008823E9F100E010E0980140E066E070E020\r
+:100C300089E891E00E942B1284E00E94B62583E0AF\r
+:100C40000E94B62580E10E94B62585E00E94B62567\r
+:100C50000E94E00D86E00E9495250E94DA2881110D\r
+:100C600002C00E94B6280E94F22890E09093680487\r
+:100C7000809367048068809367040E94F6280FC001\r
+:100C8000882369F000E010E0980140E066E070E041\r
+:100C900089E591E00E942B1286E00E94B62580E053\r
+:100CA00090E01F910F9108950F931F932FEF89EFFD\r
+:100CB00090E0215080409040E1F700C0000000E04B\r
+:100CC00010E0980140E065E070E089E492E00E9465\r
+:100CD0002B121F910F9108950F931F9300E010E0C6\r
+:100CE000980140E063E070E081E091E00E942B1207\r
+:100CF0002FEF82E597E0215080409040E1F700C05F\r
+:100D000000001F910F910895CF92DF92EF92FF9212\r
+:100D10000F931F93CF93DF93CDB7DEB7CC58D10994\r
+:100D20000FB6F894DEBF0FBECDBF2091210425FF82\r
+:100D3000C5C08C01FC01928180910001992309F4C6\r
+:100D400060C096E4EEE8F2E0DE01A95BBF4F0190DF\r
+:100D50000D929A95E1F7F8019081E0916203F0918C\r
+:100D60006303E90FF11DEE0FFF1F27E430E02C0FA6\r
+:100D70003D1FE20FF31F60817181680F711D88278D\r
+:100D800077FD8095982F0E94F12E20E030E040E41E\r
+:100D900051E40E94562E6B017C01F801218184E010\r
+:100DA00090E0821B9109BC01882777FD8095982FE0\r
+:100DB0000E94F12E9B01AC01C701B6010E94EE2DED\r
+:100DC0009B01AC0160E070E080E090E40E94643040\r
+:100DD00020E030E04CE551E40E9401304FE050E06B\r
+:100DE000C457DF4F0FB6F894DEBF0FBECDBFDF9103\r
+:100DF000CF911F910F91FF90EF90DF90CF900C94C7\r
+:100E0000CB1196E4EEE8F2E0DE01119601900D922E\r
+:100E10009A95E1F7F8019081E0916203F091630304\r
+:100E2000E90FF11DEE0FFF1F21E030E02C0F3D1FF9\r
+:100E3000E20FF31F60817181680F711D882777FDB4\r
+:100E40008095982F0E94F12E20E030E040E451E49C\r
+:100E50000E94562E6B017C01F801218184E090E014\r
+:100E6000821B9109BC01882777FD8095982F0E94ED\r
+:100E7000F12E9B01AC01C701B6010E94EE2D9B0132\r
+:100E8000AC0160E070E080E090E40E94643020E01B\r
+:100E900030E04CE551E40E940130C457DF4F0FB6FB\r
+:100EA000F894DEBF0FBECDBFDF91CF911F910F91A0\r
+:100EB000FF90EF90DF90CF900C94130EC457DF4F4C\r
+:100EC0000FB6F894DEBF0FBECDBFDF91CF911F915B\r
+:100ED0000F91FF90EF90DF90CF90089508950E94BA\r
+:100EE00020056E9A769A0C9454060C946E070C9416\r
+:100EF00084060895880F991FFC01E250F040859107\r
+:100F000094910895880F991FFC01E258FE4F859136\r
+:100F1000949108950F931F93CF93DF93EC01811564\r
+:100F200020E49207A0F5C11580E3D80708F0E1C0DE\r
+:100F3000C83ED105D8F4C03ED10508F0EEC1C83A8C\r
+:100F4000D10578F4C53AD10508F074C0C130D10597\r
+:100F500009F46DC008F4DEC1C430D10508F0DDC16C\r
+:100F6000D9C1CB3BD10508F470C0D4C1C11590E202\r
+:100F7000D90708F0B9C0C11521E0D20708F0CDC1EA\r
+:100F8000C03FD10508F4C6C18E01106506C2C1304C\r
+:100F900080E5D80709F4BDC068F5C13120E4D20767\r
+:100FA00009F4AEC050F4C03190E4D90708F0A5C0F0\r
+:100FB000CF70DD278E01146DF0C1C33120E4D2075C\r
+:100FC00009F4A4C008F49FC0C115D04509F0A2C11E\r
+:100FD0000E945C210E94E00D0E946C069FEF24E3BA\r
+:100FE0008CE0915020408040E1F700C000000E945A\r
+:100FF0007928D3C1C11520E6D20730F4C11581E5A7\r
+:10100000D80708F48CC02DC1C11590E7D90708F4A2\r
+:1010100081C1C11520E8D20708F478C1C11580E963\r
+:10102000D80708F077C1DF708E01106AB6C101E001\r
+:1010300010E0B3C1C53AD10509F471C1C63AD10572\r
+:1010400009F070C102E810E4A8C1C83AD10509F45A\r
+:101050006CC1C93AD10509F46BC1CA3AD10509F48A\r
+:101060006AC1CB3AD10509F469C1CC3AD10509F47A\r
+:1010700068C1CD3AD10509F467C1C03BD10509F477\r
+:1010800066C1CE3AD10509F465C1CF3AD10509F45C\r
+:1010900064C1C13BD10509F463C1C23BD10509F468\r
+:1010A00062C1C33BD10509F461C1C43BD10509F458\r
+:1010B00060C1C53BD10509F45FC1C63BD10509F448\r
+:1010C0005EC1C73BD10509F45DC1C83BD10509F438\r
+:1010D0005CC1C93BD10509F45BC1CA3BD10509F428\r
+:1010E0005AC100E014E459C1CE019F700E948207EA\r
+:1010F00055C1DD278E01106C50C100E011ED4DC1CE\r
+:1011000000E010ED4AC100E012ED47C100E013ED30\r
+:1011100044C180913D04816080933D043EC10E94A2\r
+:10112000DA28811102C00E94B6280E94F22890E0BD\r
+:101130009093680480936704C23090E5D90721F446\r
+:1011400080916704816086C0C43020E5D20721F415\r
+:101150008091670482607EC0C63080E5D80721F4A4\r
+:1011600080916704846076C0C83090E5D90719F48F\r
+:101170008091670427C0CA3020E5D20721F480910E\r
+:101180006704806167C0CC3080E5D80721F4809186\r
+:10119000670480625FC0CE3090E5D90721F480916A\r
+:1011A0006704806457C0C03120E5D20721F48091E4\r
+:1011B000670480684FC0C23180E5D80729F4809168\r
+:1011C00067048460886046C0C33090E5D90721F485\r
+:1011D000809167048E7F3EC0C53020E5D20721F4A0\r
+:1011E000809167048D7F36C0C73080E5D80721F431\r
+:1011F000809167048B7F2EC0C93090E5D90719F420\r
+:101200008091670426C0CB3020E5D20721F480917D\r
+:1012100067048F7E1FC0CD3080E5D80721F4809110\r
+:1012200067048F7D17C0CF3090E5D90721F48091F6\r
+:1012300067048F7B0FC0C13120E5D20721F4809174\r
+:1012400067048F7707C0C331D04531F480916704BC\r
+:101250008B7F877F80936704809167040E94F628C4\r
+:101260009CC08D2F99278F70992781309105D9F4D3\r
+:101270009E012370332702C0880F991F2A95E2F739\r
+:101280009C688E0144E0000F111F4A95E1F700278A\r
+:101290001370802B912B53E0CC0FDD1F5A95E1F793\r
+:1012A000C076DD272FC08230910531F4DC2FCC27AA\r
+:1012B0008E01016F106A71C08330910569F4CE010F\r
+:1012C0008370992701E010E002C0000F111F8A957A\r
+:1012D000E2F7C8019C680FC0049709F05EC0CE0118\r
+:1012E0008370992701E010E002C0000F111F8A955A\r
+:1012F000E2F7C8019A6823E0CC0FDD1F2A95E1F7D9\r
+:10130000C07ED7708C010C2B1D2B47C0DF708E0167\r
+:10131000106243C000E010E040C08E013EC001E812\r
+:1013200010E43BC003E810E438C002EE14E435C01A\r
+:1013300009EE14E432C00AEE14E42FC005EB14E405\r
+:101340002CC006EB14E429C007EB14E426C00CEC17\r
+:1013500014E423C00DEC14E420C003E815E41DC020\r
+:101360000AE815E41AC002E915E417C004E915E417\r
+:1013700014C001E216E411C003E216E40EC004E258\r
+:1013800016E40BC005E216E408C006E216E405C048\r
+:1013900007E216E402C00AE216E4C801DF91CF9129\r
+:1013A0001F910F9108959CE0799FF001112490E323\r
+:1013B000899FE00DF11D1124E60FF11DEE0FFF1FB7\r
+:1013C000E258FE4F85919491803E9105E0F4803C77\r
+:1013D000910558F58133910509F46FC048F48932BD\r
+:1013E000910509F463C08A32910509F46DC072C099\r
+:1013F00089339105E9F082389105D1F08533910563\r
+:1014000009F44DC067C0833E910581F138F4803EF8\r
+:101410009105B9F0823E9105D9F05CC0863E9105F8\r
+:1014200061F1873E9105A1F155C00E947A070895A8\r
+:101430002091670420FD02C021FF4CC080EE90E0A7\r
+:1014400049C08091670480FFF9CF89E390E042C0F2\r
+:101450008091670482FF0EC08091670484FF03C0FF\r
+:1014600080E090E037C083EE90E034C08091670464\r
+:1014700082FFF2CF82EE90E02DC08091670483FF5F\r
+:101480000BC08091670484FDEBCF87EE90E022C013\r
+:101490008091670483FFF5CF86EE90E01BC08091BA\r
+:1014A000670485FF07C089E290E014C0809167045B\r
+:1014B00085FFF9CF85E390E00DC08091670486FF3A\r
+:1014C00007C08AE290E006C08091670486FFF9CFEA\r
+:1014D00081E390E00E948A070895CF92DF92EF9215\r
+:1014E000FF920F931F9301E010E020E030E06801CD\r
+:1014F000790104C0CC0CDD1CEE1CFF1C8A95D2F7D0\r
+:1015000004C0000F111F221F331F6A95D2F70C2948\r
+:101510001D292E293F29C0902104D0902204E0905B\r
+:101520002304F0902404C022D122E222F322842F4B\r
+:10153000C016D106E206F30641F41F910F91FF9009\r
+:10154000EF90DF90CF900C9495251F910F91FF9015\r
+:10155000EF90DF90CF900C94B62508950C94AD0ACF\r
+:101560005F926F927F928F929F92AF92BF92CF9233\r
+:10157000DF92EF92FF920F931F93CF93DF93CDB73C\r
+:10158000DEB728970FB6F894DEBF0FBECDBFCE01F1\r
+:1015900001966C014E0199E0890E911C20E030E02B\r
+:1015A00040E050E060E070E000E010E0E12CF12C61\r
+:1015B0006C2C5D2C88E0782EAA24A394B12CE4ED49\r
+:1015C000F2E0A62DB52D872D01900D928A95E1F7B9\r
+:1015D000F601819191916F01FC01E07FFF27E032DC\r
+:1015E000F10559F48F709927F50102C0EE0FFF1F26\r
+:1015F0008A95E2F7EE2AFF2A37C0E033F10559F465\r
+:101600008F709927F50102C0EE0FFF1F8A95E2F750\r
+:101610000E2B1F2B29C0E034F10559F48F70992748\r
+:10162000F50102C0EE0FFF1F8A95E2F76E2B7F2BAC\r
+:101630001BC0E035F10559F48F709927F50102C000\r
+:10164000EE0FFF1F8A95E2F74E2B5F2B0DC0E036A1\r
+:10165000F10551F48F709927F50102C0EE0FFF1FBD\r
+:101660008A95E2F72E2B3F2BC814D90409F0A7CF97\r
+:1016700084B19E2D9095892384B985B1E82AE5B877\r
+:1016800087B1902F9095892387B988B1082B08B925\r
+:101690008AB1962F909589238AB98BB1682B6BB943\r
+:1016A0008DB1942F909589238DB98EB1482B4EB969\r
+:1016B00080B3922F9095892380BB81B3282B21BBC7\r
+:1016C00028960FB6F894DEBF0FBECDBFDF91CF9145\r
+:1016D0001F910F91FF90EF90DF90CF90BF90AF9050\r
+:1016E0009F908F907F906F905F9008955F926F9220\r
+:1016F0007F928F929F92AF92BF92CF92DF92EF92A2\r
+:10170000FF920F931F93CF93DF93CDB7DEB7689708\r
+:101710000FB6F894DEBF0FBECDBF85B7806885BF1A\r
+:1017200085B7806885BF0E94B00ACE0101966C0122\r
+:101730004E0199E1890E911C20E030E040E050E03C\r
+:1017400060E070E000E010E0E12CF12C6C2C5D2CEE\r
+:1017500088E1782EAA24A394B12CECEDF2E0A62D1A\r
+:10176000B52D872D01900D928A95E1F7F6018191B3\r
+:1017700091916F01FC01E07FFF27E032F10559F400\r
+:101780008F709927F50102C0EE0FFF1F8A95E2F7CF\r
+:10179000EE2AFF2A37C0E033F10559F48F709927FC\r
+:1017A000F50102C0EE0FFF1F8A95E2F70E2B1F2BEB\r
+:1017B00029C0E034F10559F48F709927F50102C072\r
+:1017C000EE0FFF1F8A95E2F76E2B7F2B1BC0E035D3\r
+:1017D000F10559F48F709927F50102C0EE0FFF1F34\r
+:1017E0008A95E2F74E2B5F2B0DC0E036F10551F4E0\r
+:1017F0008F709927F50102C0EE0FFF1F8A95E2F75F\r
+:101800002E2B3F2BC814D90409F0A7CF84B19E2DED\r
+:101810009095892384B985B1E82AE5B887B1902FDE\r
+:101820009095892387B988B1082B08B98AB1962F7A\r
+:10183000909589238AB98BB1682B6BB98DB1942FA0\r
+:10184000909589238DB98EB1482B4EB980B3922FD4\r
+:101850009095892380BB81B3282B21BB10926D0307\r
+:1018600010926C03109265031092640310926F0340\r
+:1018700010926E0310926703109266031092710328\r
+:101880001092700310926903109268031092730310\r
+:101890001092720310926B0310926A0368960FB64F\r
+:1018A000F894DEBF0FBECDBFDF91CF911F910F9196\r
+:1018B000FF90EF90DF90CF90BF90AF909F908F9070\r
+:1018C0007F906F905F900C946F077F928F929F92A2\r
+:1018D000AF92BF92CF92DF92EF92FF920F931F933E\r
+:1018E000CF93DF93CDB7DEB7A0970FB6F894DEBFE6\r
+:1018F0000FBECDBF6E0149E1C40ED11C84E6E82EB7\r
+:1019000083E0F82E98E0792EBC2CAD2C01E010E09D\r
+:1019100028E1822E35E0932EE4EDF2E0AB2DBA2DD6\r
+:10192000872D01900D928A95E1F7F60181919191B1\r
+:101930006F019C01207F33272032310591F424B1BF\r
+:101940008F709927A80102C0440F551F8A95E2F7AE\r
+:10195000CA01922F982B94B995B18095892385B9A6\r
+:1019600053C02033310591F427B18F709927F801C6\r
+:1019700002C0EE0FFF1F8A95E2F7CF01922F982B3E\r
+:1019800097B998B18095892388B93EC02034310534\r
+:1019900091F42AB18F709927A80102C0440F551FF6\r
+:1019A0008A95E2F7CA01922F982B9AB99BB180953C\r
+:1019B00089238BB929C02035310591F42DB18F7061\r
+:1019C0009927F80102C0EE0FFF1F8A95E2F7CF01B9\r
+:1019D000922F982B9DB99EB1809589238EB914C002\r
+:1019E0002036310589F420B38F709927A80102C0F1\r
+:1019F000440F551F8A95E2F7CA01922F982B90BB8E\r
+:101A000091B38095892381BB50EA5A95F1F7BE01C5\r
+:101A10006F5F7F4F20E030E040E050E0ECEDF2E01F\r
+:101A2000DE011196882D01900D928A95E1F7FB0158\r
+:101A300081919191BF01FC01E07FFF27E032F10528\r
+:101A400011F4E3B113C0E033F10511F4E6B10EC0B7\r
+:101A5000E034F10511F4E9B109C0E035F10511F404\r
+:101A6000ECB104C0E036F105B9F4EFB1F0E08F70ED\r
+:101A7000992702C0F595E7958A95E2F7E0FD08C041\r
+:101A8000C801042E02C0880F991F0A94E2F702C011\r
+:101A900080E090E0282B392B4F5F5F4F4C30510591\r
+:101AA00009F0BCCFF701808191818217930721F063\r
+:101AB00031832083909271020E94B00AF2E0EF0E0F\r
+:101AC000F11C4CE6E41643E0F40609F025CF8091C2\r
+:101AD0007102882361F1815080937102882339F06B\r
+:101AE0008FE99FE00197F1F700C0000020C08091CE\r
+:101AF00064039091650390936D0380936C038091D0\r
+:101B000066039091670390936F0380936E038091B7\r
+:101B1000680390916903909371038093700380919F\r
+:101B20006A0390916B0390937303809372030E94F6\r
+:101B3000750781E0A0960FB6F894DEBF0FBECDBF4B\r
+:101B4000DF91CF911F910F91FF90EF90DF90CF9099\r
+:101B5000BF90AF909F908F907F900895E82FF0E016\r
+:101B6000EE0FFF1FE459FC4F808191810895089585\r
+:101B7000809152048160809352040C9408298091D2\r
+:101B800052048E7F809352040C9408290E94DA2814\r
+:101B9000811102C00E94B6280E9404298093520439\r
+:101BA0003E9A809171008D7F8093710082E08093D6\r
+:101BB00090008AE18093910081E0809376030895FC\r
+:101BC00080917603811102C00E94C60D1092C60357\r
+:101BD0001092C503809171008D7F80937100809178\r
+:101BE00090008F7780939000109288031092870363\r
+:101BF0001092BF031092C0031092C1031092C2034F\r
+:101C00001092BE031092BD03EDE9F3E0ADE8B3E03E\r
+:101C100011921192119211921D921D9283E0ED3B4F\r
+:101C2000F807B1F70895CF92DF92EF92FF920F93EA\r
+:101C30001F93CF93DF9320918703222309F484C05D\r
+:101C40006B017C0180917603811102C00E94C60D58\r
+:101C50000DEB13E0C7E0D0E0A7019601F8019291E7\r
+:101C60008291729162918F010E94522E811131C036\r
+:101C7000FE01EE0FFF1FEE0FFF1FE356FC4F108219\r
+:101C8000118212821382DE01AA0FBB1FA357BC4F21\r
+:101C900011961C921E92C730D105E9F0219644811D\r
+:101CA0005581668177814083518362837383148277\r
+:101CB00015821682178212968D919C911397119618\r
+:101CC0009C938E9313961C921E92129734961296A2\r
+:101CD000E2CF219708F68091C5039091C603019742\r
+:101CE00097FD05C09093C6038093C50304C010926E\r
+:101CF000C6031092C5038091C5039091C60320913D\r
+:101D0000C3033091C4032817390724F01092C40389\r
+:101D10001092C303892BC1F4809171008D7F809351\r
+:101D20007100809190008F77809390001092BF0394\r
+:101D30001092C0031092C1031092C2031092BE030E\r
+:101D40001092BD0310928703DF91CF911F910F91E5\r
+:101D5000FF90EF90DF90CF9008951F920F920FB6F3\r
+:101D60000F9211244F925F926F927F928F929F9267\r
+:101D7000AF92BF92CF92DF92EF92FF922F933F9359\r
+:101D80004F935F936F937F938F939F93AF93BF9383\r
+:101D9000CF93DF93EF93FF9380918703882309F418\r
+:101DA0009BC1C091C503D091C6031C161D060CF043\r
+:101DB00093C14090770350907803609079037090BE\r
+:101DC0007A0320E030E0A901C301B2010E94FD2F97\r
+:101DD00018160CF065C0C130D10509F452C08091CD\r
+:101DE000C3039091C403BE010E94CF317C01909344\r
+:101DF000C4038093C3038090890390908A03A090CA\r
+:101E00008B03B0908C0320E030E040E85FE3C50135\r
+:101E1000B4010E94EE2D6093890370938A0380932E\r
+:101E20008B0390938C03F701EE0FFF1FEE0FFF1F44\r
+:101E3000E356FC4FA30192016081718182819381FD\r
+:101E40000E94562E20E030E040E05EE30E94013028\r
+:101E50009B01AC01C501B4010E94FD2F18168CF442\r
+:101E6000C7010196BE010E94CF319093C4038093B5\r
+:101E7000C3031092890310928A0310928B0310926D\r
+:101E80008C03E091C303F091C403EE0FFF1FEE0F2C\r
+:101E9000FF1FE356FC4F6081718182819381D0C026\r
+:101EA000C090BF03D090C003E090C103F090C20384\r
+:101EB00020E030E0A901C701B6010E94522E21970F\r
+:101EC000882309F4A2C0FE01EE0FFF1FEE0FFF1FD3\r
+:101ED000E356FC4F80809180A280B380A5019401DD\r
+:101EE000C701B6010E94522E87FF31C0A50194019F\r
+:101EF00060E070E08CED93EC0E94562E20E030E024\r
+:101F000040E451E40E94562E20E030E040E05FE3E0\r
+:101F10000E9401309B01AC0160E070E080E090E441\r
+:101F20000E9464309B01AC01C501B4010E940130E4\r
+:101F30009B01AC01C701B6010E94522E87FF07C06A\r
+:101F4000A701960160E070E08CED93E439C0A50133\r
+:101F50009401C701B6010E94FD2F18160CF055C060\r
+:101F6000A501940160E070E08CED93E40E94562E90\r
+:101F700020E030E040E451E40E94562E20E030E0C2\r
+:101F800040E05FE30E9401309B01AC0160E070E043\r
+:101F900080E090E40E9464309B01AC01C501B40173\r
+:101FA0000E9401309B01AC01C701B6010E94FD2FC8\r
+:101FB00018165CF5A701960160E070E08CED93ECDB\r
+:101FC0000E94562E20E030E040E451E40E94562E5C\r
+:101FD00020E030E040E05FE30E9401309B01AC0173\r
+:101FE00060E070E080E090E40E9464309B01AC010E\r
+:101FF000C701B6010E9401306093BF037093C00314\r
+:102000008093C1039093C20313C0FE01EE0FFF1F24\r
+:10201000EE0FFF1FE356FC4F80819181A281B381B7\r
+:102020008093BF039093C003A093C103B093C203F6\r
+:102030006091BF037091C0038091C1039091C2036E\r
+:1020400020917403309175032F3F4FEF340731F027\r
+:102050002F5F3F4F30937503209374030E94D41277\r
+:102060006B017C0120E034E244EF51E40E94522EE7\r
+:1020700087FF08C086EFC82E88E2D82E84EFE82EAE\r
+:1020800081E4F82E20E030E040E051E4C701B601E1\r
+:102090000E9401309B01AC0160E074E284E79BE4A4\r
+:1020A0000E94562E6B017C010E94BE2E70939700F9\r
+:1020B00060939600209172023091730240917402F5\r
+:1020C00050917502C701B6010E9401300E94BE2ED8\r
+:1020D000709399006093980080918803882309F495\r
+:1020E00033C1C0908303D0908403E0908503F090C7\r
+:1020F000860320E030E0A901C701B6010E94FD2F50\r
+:102100001816D4F580917403909175038F3F2FEFCB\r
+:10211000920729F001969093750380937403C70189\r
+:10212000B6010E94D41220E030E040E051E40E9469\r
+:1021300001309B01AC0160E074E284E79BE40E9403\r
+:10214000562E6B017C010E94BE2E70939700609307\r
+:102150009600209172023091730240917402509166\r
+:102160007502C701B6010E9401300E94BE2E709315\r
+:1021700099006093980008C0109297001092960002\r
+:10218000109299001092980060917D0370917E03E7\r
+:102190006F5F7F4F70937E0360937D032091960065\r
+:1021A0003091970080E090E0232BF1F0C0919600F1\r
+:1021B000D09197000E94EF2E6B017C01BE0180E060\r
+:1021C00090E00E94EF2E9B01AC0160917F03709123\r
+:1021D000800380918103909182030E94562E20E01B\r
+:1021E0003FEF4FE757E410C00E94EF2E6B017C01D8\r
+:1021F00020E030EE4FEF54E460917F037091800354\r
+:1022000080918103909182030E9401309B01AC0177\r
+:10221000C701B6010E94FD2F87FD96C080917B0308\r
+:102220008F5F80937B0390E020914E0430914F04A8\r
+:1022300082179307A0F080915904882319F0109217\r
+:102240007B030DC0809171008D7F80937100809120\r
+:1022500090008F7780939000109288037DC08091CA\r
+:102260007C03C0917B03811128C0C0905304D0909F\r
+:102270005404E0905504F090560420E030E0A901A9\r
+:10228000C701B6010E94FD2F1816BCF481E08093AF\r
+:102290007C031092830310928403109285031092A2\r
+:1022A0008603C0927F03D0928003E0928103F09274\r
+:1022B0008203C150C0937B0343C010927C031092F1\r
+:1022C000750310927403E0915004F091510448E0BA\r
+:1022D000C49FE00DF11D112480819181A281B38101\r
+:1022E0008093830390938403A0938503B093860324\r
+:1022F00020E030E040E85EE364817581868197816B\r
+:102300000E9401306B017C0120E030E048EC52E497\r
+:1023100060917602709177028091780290917902B3\r
+:102320000E94562E9B01AC01C701B6010E940130EC\r
+:1023300060937F0370938003809381039093820363\r
+:1023400010927E0310927D038091520480FD04C0A0\r
+:102350001092880310928703FF91EF91DF91CF9144\r
+:10236000BF91AF919F918F917F916F915F914F91AD\r
+:102370003F912F91FF90EF90DF90CF90BF90AF9063\r
+:102380009F908F907F906F905F904F900F900FBEB7\r
+:102390000F901F901895CF92DF92EF92FF92CF93FC\r
+:1023A000DF936B017C01EA0180917603811102C009\r
+:1023B0000E94C60D8091520480FF46C08091C503E3\r
+:1023C0009091C60308970CF03FC0809171008D7FFB\r
+:1023D000809371008091880381110E94E00D81E05B\r
+:1023E00080938703109275031092740320E030E00D\r
+:1023F000A901C701B6010E94FD2F1816DCF48091D7\r
+:10240000C5039091C603FC01EE0FFF1FEE0FFF1FE7\r
+:10241000E356FC4FC082D182E282F382FC01EE0FD0\r
+:10242000FF1FE357FC4FD183C08301969093C603EF\r
+:102430008093C503809171008260809371008091C8\r
+:102440009000806880939000DF91CF91FF90EF9093\r
+:10245000DF90CF9008958F929F92AF92BF92CF92CC\r
+:10246000DF92EF92FF920F931F93CF93DF93EC01D4\r
+:102470007B01D42E4801590180917603811102C05D\r
+:102480000E94C60D8091520480FF6BC08091710044\r
+:102490008D7F809371008091870381110E94E00DF0\r
+:1024A00081E080938803D0935104C0935004F0924C\r
+:1024B0004F04E0924E04D0925904809253049092BB\r
+:1024C0005404A0925504B0925604109289031092BD\r
+:1024D0008A0310928B0310928C0310927B038881E5\r
+:1024E0009981AA81BB818093830390938403A093F5\r
+:1024F0008503B093860320E030E040E85EE36C8122\r
+:102500007D818E819F810E9401306B017C0120E0E2\r
+:1025100030E048EC52E4609176027091770280914D\r
+:102520007802909179020E94562E9B01AC01C7015E\r
+:10253000B6010E94013060937F0370938003809303\r
+:1025400081039093820310927E0310927D03809109\r
+:102550007100826080937100809190008068809308\r
+:102560009000DF91CF911F910F91FF90EF90DF903E\r
+:10257000CF90BF90AF909F908F9008958091C703A8\r
+:1025800090E0019666E070E00E94CF318093C7032F\r
+:1025900008958091C70390E0019766E070E00E9483\r
+:1025A000CF318093C70308958F929F92AF92BF92CD\r
+:1025B000CF92DF92EF92FF920F931F93CF93DF930F\r
+:1025C0006B017C01C0917403D0917503BE0180E062\r
+:1025D00090E00E94EF2E4B015C01A701960160E0A4\r
+:1025E00070E08CE594E40E94562E9B01AC01C5017D\r
+:1025F000B4010E9401300E94C32E2091C7032330F2\r
+:1026000009F473C028F4222351F02130E9F02CC1E1\r
+:10261000243009F4A0C0253009F4E0C025C180E0D1\r
+:1026200090E0A0E0BFE38093720290937302A093C6\r
+:102630007402B0937502109277031092780310928F\r
+:10264000790310927A0310C11092770310927803E5\r
+:102650001092790310927A036431710540F46A3064\r
+:10266000710560F520E030E040E85EE32BC0693C96\r
+:10267000710508F0AAC080E090E00E94EF2E20E0F3\r
+:1026800030E040EA51E40E94ED2D20E030E044E3E8\r
+:1026900053E40E94562E9B01AC010E94013020E0C1\r
+:1026A00030E040E05EE30E9401309B01AC0160E05D\r
+:1026B00070E080E09EE30E94ED2D44C020E030E019\r
+:1026C00040E05FE3C701B6010E9401306B017C016D\r
+:1026D00080E090E0A0E0BEE38093720290937302EA\r
+:1026E000A0937402B0937502BFC01092770310924A\r
+:1026F00078031092790310927A034AE0469F900182\r
+:10270000479F300D1124C90168EB7BE00E94BB316B\r
+:10271000BC016C5D754077FF03C0719561957109CF\r
+:10272000882777FD8095982F0E94F12E2EE333ECB9\r
+:102730004EE259E30E94013020E030E040EC5EE3DD\r
+:102740000E94EE2D60937202709373028093740264\r
+:102750009093750289C010927703109278031092BB\r
+:10276000790310927A03CE0183709927892BE1F0C7\r
+:10277000BE016170772780E090E00E94EF2E20E09C\r
+:1027800030E040E05EE30E94013020E030E040E4D1\r
+:102790005FE30E94EE2D6093720270937302809348\r
+:1027A0007402909375020CC080E090E0A0E0BFE35B\r
+:1027B0008093720290937302A0937402B093750297\r
+:1027C000C770DD27CD2B09F04FC010927202109216\r
+:1027D0007302109274021092750246C01092770331\r
+:1027E000109278031092790310927A0300E010E0BF\r
+:1027F00020E03FE30093720210937302209374026F\r
+:10280000309375026739710578F180E090E00E949D\r
+:10281000EF2E20E030E047E153E40E94ED2D20E070\r
+:1028200030E04AE754E40E94562E20E030E048E4CD\r
+:1028300052E40E94013020E030E040EA51E40E947E\r
+:10284000332F0E94BE2E660F771F660F771FFB0186\r
+:10285000EC50FD4F2081318142815381C701B60187\r
+:102860000E9401306B017C01C701B601DF91CF915D\r
+:102870001F910F91FF90EF90DF90CF90BF90AF909E\r
+:102880009F908F9008958091D8030895CF93DF9300\r
+:1028900000D01F92CDB7DEB79C0180915E048430DA\r
+:1028A00019F593E099833B832A839093E9008FEF96\r
+:1028B0009091E800815095FD06C095ED9A95F1F74D\r
+:1028C00000008111F5CF8091E80085FF0DC040E048\r
+:1028D00050E063E070E0CE0101960E94A71680915F\r
+:1028E000E8008E778093E8000F900F900F90DF91B3\r
+:1028F000CF910895CF93DF9300D01F92CDB7DEB76D\r
+:1029000020915E04243021F522E029839B838A8371\r
+:1029100083E08093E9008FEF9091E800815095FD6E\r
+:1029200006C095ED9A95F1F700008111F5CF8091E1\r
+:10293000E80085FF0DC040E050E063E070E0CE01AC\r
+:1029400001960E94A7168091E8008E778093E80098\r
+:102950000F900F900F90DF91CF91089520915E041A\r
+:102960002430F1F422E02093E9002FEF3091E800C9\r
+:10297000215035FD06C035ED3A95F1F700002111E3\r
+:10298000F5CF2091E80025FF0BC040E050E065E066\r
+:1029900070E00E94A7168091E8008E778093E8008F\r
+:1029A0000895CF93DF93EC0190915E04943009F089\r
+:1029B00046C0809184028823D9F0809185028823C3\r
+:1029C000B9F09093E9008FEF9091E800815095FD68\r
+:1029D00006C095E19A95F1F700008111F5CF80913D\r
+:1029E000E80085FF2CC040E050E060E170E017C0D7\r
+:1029F00081E08093E9008FEF9091E800815095FD90\r
+:102A000006C095ED9A95F1F700008111F5CF809100\r
+:102A1000E80085FF14C040E050E068E070E0CE01BF\r
+:102A20000E94A7168091E8008E778093E80080E1ED\r
+:102A3000FE01A8ECB3E001900D928A95E1F7DF91D9\r
+:102A4000CF91089580915D04811109C00E943C18C6\r
+:102A50000E9499188091E20084608093E2000895BA\r
+:102A600010925D040895089508950C94E12742E0C2\r
+:102A700061EC81E00E94B61742E061EC82E00E94C6\r
+:102A8000B61742E061EC83E00E94B61742E161ECC8\r
+:102A900084E00C94B61780916004833009F455C02B\r
+:102AA00030F4813071F0823009F48EC008958A309C\r
+:102AB00009F47AC08B3009F460C0893009F09CC0F9\r
+:102AC00020C080915F04813A09F096C08091E800AF\r
+:102AD000877F8093E8008091630490916404892B40\r
+:102AE00021F460E188EC93E003C060E080E090E0D6\r
+:102AF00070E00E94F2168091E8008B778093E800E6\r
+:102B0000089580915F04813209F076C0809163045A\r
+:102B100090916404009719F0039709F06DC08091BB\r
+:102B2000E800877F8093E8008091E80082FD05C07F\r
+:102B300080915E048111F8CF5FC08091F100809395\r
+:102B4000D8038091E8008B7753C080915F04813A6D\r
+:102B500009F052C08091630490916404892B09F0BC\r
+:102B60004BC08091E800877F8093E8008091E80067\r
+:102B700080FFFCCF8091840236C080915F04813257\r
+:102B8000D9F58091630490916404892BA9F5809113\r
+:102B9000E800877F8093E8000E94EB178091610432\r
+:102BA000809384020C945C2180915F04813221F532\r
+:102BB0008091E800877F8093E8000E94EB17809166\r
+:102BC00062048093D903089580915F04813AA1F44F\r
+:102BD0008091E800877F8093E8008091E80080FF83\r
+:102BE000FCCF8091D9038093F1008091E8008E772B\r
+:102BF0008093E8000C94EB17089584B7877F84BF17\r
+:102C000088E10FB6F89480936000109260000FBEC8\r
+:102C100090E080E80FB6F894809361009093610093\r
+:102C20000FBE0E948E1B0E943C180E949918809132\r
+:102C3000E20084608093E20078940E941F1B0E944F\r
+:102C4000901B8AE792E00E943A1B80915E048530D7\r
+:102C500069F40E949B2780915C048823B1F30E9451\r
+:102C6000C927882391F30E949116EFCF0E94981BE9\r
+:102C7000ECCF292F332723303105C9F064F42130FC\r
+:102C8000310581F02230310509F043C08DE690E036\r
+:102C90002AE338E042C021323105F1F02232310519\r
+:102CA00041F137C082E190E027EA38E036C0992749\r
+:102CB0008130910541F08230910541F0892B49F531\r
+:102CC000E6E3F8E005C0E8E0F8E002C0EEEDF7E08A\r
+:102CD000849190E09F0121C06430D8F4E62FF0E0A9\r
+:102CE000EE0FFF1FE05BFC4F2081318189E090E017\r
+:102CF00014C0643070F470E0FB01EE0FFF1FE85B5E\r
+:102D0000FC4F20813181FB01EC5BFC4F808190E026\r
+:102D100004C080E090E020E030E0FA0131832083BD\r
+:102D2000089580E189BD82E189BD09B400FEFDCF2F\r
+:102D30008091D8008F7D8093D8008091E0008260E0\r
+:102D40008093E0008091E00081FDFCCF0895CF9258\r
+:102D5000DF92EF92FF920F931F93CF93DF93EC01DB\r
+:102D60008B016A010E940A18811133C0C114D10479\r
+:102D700039F0F60180819181081B190BC80FD91F0A\r
+:102D8000E12CF12C0115110519F18091E80085FD68\r
+:102D900016C08091E8008E778093E800C114D104BA\r
+:102DA00049F0F60180819181E80EF91EF182E082FE\r
+:102DB00085E00FC00E940A18882321F30AC0899178\r
+:102DC0008093F10001501109FFEFEF1AFF0ADACFEB\r
+:102DD00080E0DF91CF911F910F91FF90EF90DF90F6\r
+:102DE000CF90089520916504309166042617370727\r
+:102DF00048F06115710539F42091E8002E77209391\r
+:102E0000E80001C0B90140E061157105A9F1209108\r
+:102E10005E04222309F443C0253009F442C0209106\r
+:102E2000E80023FD40C02091E80022FD32C020913F\r
+:102E3000E80020FFE9CF4091F3002091F20030E05C\r
+:102E4000342BFC01CF016115710559F02830310593\r
+:102E500040F481918093F100615071092F5F3F4FE1\r
+:102E6000F1CF41E02830310509F040E02091E80041\r
+:102E70002E772093E800C8CF4111C9CF0AC08091B6\r
+:102E80005E04882361F0853061F08091E80083FD65\r
+:102E90000AC08091E80082FFF2CF80E0089582E0CE\r
+:102EA000089583E0089581E00895209165043091AC\r
+:102EB00066042617370748F06115710539F420912B\r
+:102EC000E8002E772093E80001C0B901FC0120E062\r
+:102ED0006115710591F180915E04882309F440C069\r
+:102EE000853009F43FC08091E80083FD3DC08091AA\r
+:102EF000E80082FD2FC08091E80080FFE9CF20919B\r
+:102F0000F3008091F20090E0922B6115710559F069\r
+:102F10008830910540F424912093F100319661505E\r
+:102F200071090196F2CF21E0089709F020E0809125\r
+:102F3000E8008E778093E800CBCF2111CCCF0AC078\r
+:102F400080915E04882361F0853061F08091E80013\r
+:102F500083FD0AC08091E80082FFF2CF80E00895EF\r
+:102F600082E0089583E0089581E00895982F9730D6\r
+:102F700058F59093E900981739F07091EC00209182\r
+:102F8000ED005091F00003C0242F762F50E021FF78\r
+:102F900019C03091EB003E7F3093EB003091ED0093\r
+:102FA0003D7F3093ED003091EB0031603093EB00CA\r
+:102FB0007093EC002093ED005093F0002091EE0010\r
+:102FC00027FF07C09F5FD3CF8F708093E90081E018\r
+:102FD000089580E0089580915F0487FF11C080917B\r
+:102FE000E80082FD05C080915E048111F8CF11C018\r
+:102FF0008091E8008B770BC080915E04882349F0B4\r
+:103000008091E80080FFF8CF8091E8008E77809370\r
+:10301000E80008952091E4003091E50095E64091A4\r
+:10302000EC00842F817040FF22C08091E80080FD79\r
+:103030001CC080915E04882391F0853091F08091CE\r
+:10304000EB0085FD10C04091E4005091E50042176F\r
+:10305000530729F39A01915011F784E0089582E013\r
+:10306000089583E0089581E0089580E008954091F7\r
+:10307000E80042FFDECF08950E94AA180E94B2180D\r
+:10308000E0EEF0E0808181608083E8EDF0E0808117\r
+:103090008F77808319BCA7EDB0E08C918E7F8C93E5\r
+:1030A00080818F7E808310925D0408950F931F931B\r
+:1030B000CF93DF930E94AA180E94B218C8EDD0E007\r
+:1030C00088818F77888388818068888388818F7DD5\r
+:1030D000888319BC10925E0410925A0410925C040A\r
+:1030E00010925B0400EE10E0F80180818B7F8083FA\r
+:1030F00088818160888342E060E080E00E94B617AA\r
+:10310000E1EEF0E080818E7F8083E2EEF0E080816E\r
+:1031100081608083808188608083F80180818E7FD8\r
+:103120008083888180618883DF91CF911F910F9187\r
+:103130000895E8EDF0E080818F7E8083E7EDF0E098\r
+:1031400080818160808384E082BF81E080935D0420\r
+:103150000C945618E8EDF0E080818E7F8083109209\r
+:10316000E20008951092DA001092E10008951F9293\r
+:103170000F920FB60F9211242F933F934F935F93AB\r
+:103180006F937F938F939F93AF93BF93EF93FF932F\r
+:103190008091E10082FF0BC08091E20082FF07C0B6\r
+:1031A0008091E1008B7F8093E1000E941E1B809143\r
+:1031B000DA0080FF1FC08091D80080FF1BC0809183\r
+:1031C000DA008E7F8093DA008091D90080FF0DC0F5\r
+:1031D00080E189BD82E189BD09B400FEFDCF81E0B7\r
+:1031E00080935E040E94221505C019BC10925E04F3\r
+:1031F0000E9430158091E10080FF19C08091E200AB\r
+:1032000080FF15C08091E2008E7F8093E200809164\r
+:10321000E20080618093E2008091D8008062809318\r
+:10322000D80019BC85E080935E040E94341580911B\r
+:10323000E10084FF30C08091E20084FF2CC080E177\r
+:1032400089BD82E189BD09B400FEFDCF8091D8001F\r
+:103250008F7D8093D8008091E1008F7E8093E10084\r
+:103260008091E2008F7E8093E2008091E200816095\r
+:103270008093E20080915A04882311F084E007C013\r
+:103280008091E30087FD02C081E001C083E080936C\r
+:103290005E040E9435158091E10083FF29C0809172\r
+:1032A000E20083FF25C08091E100877F8093E100E9\r
+:1032B00082E080935E0410925A048091E1008E7F38\r
+:1032C0008093E1008091E2008E7F8093E200809104\r
+:1032D000E20080618093E20042E060E080E00E94D2\r
+:1032E000B6178091F00088608093F0000E9433153B\r
+:1032F000FF91EF91BF91AF919F918F917F916F91CE\r
+:103300005F914F913F912F910F900FBE0F901F90A3\r
+:1033100018951F920F920FB60F9211242F933F937F\r
+:103320004F935F936F937F938F939F93AF93BF93CD\r
+:10333000CF93DF93EF93FF93C091E900CF7080911B\r
+:10334000EC00D82FD17080FDD0E81092E900809178\r
+:10335000F000877F8093F00078940E94CD1910923E\r
+:10336000E9008091F00088608093F000CD2BCF7051\r
+:10337000C093E900FF91EF91DF91CF91BF91AF91A1\r
+:103380009F918F917F916F915F914F913F912F917D\r
+:103390000F900FBE0F901F9018951F93CF93DF9340\r
+:1033A000CDB7DEB7AA970FB6F894DEBF0FBECDBF7C\r
+:1033B000EFE5F4E088E08E0F9091F10091938E1389\r
+:1033C000FBCF0E944B158091E80083FF1FC18091C5\r
+:1033D0005F0490916004492F50E04A30510508F095\r
+:1033E00015C1FA01EC59FF4F0C94E331803881F09C\r
+:1033F000823809F00BC1809163048F708093E900DB\r
+:103400008091EB0085FB882780F91092E90006C0C7\r
+:1034100080915B0490915C04911182609091E8002E\r
+:10342000977F9093E8008093F1001092F100C8C05C\r
+:10343000282F2D7F09F0EAC0882319F0823061F02F\r
+:10344000E5C080916104813009F0E0C0933009F05B\r
+:1034500080E080935C042BC080916104811127C0BF\r
+:10346000809163048F7009F4D1C08093E9002091AA\r
+:10347000EB0020FF1CC0933021F48091EB008062B0\r
+:1034800014C09091EB0090619093EB0021E030E04C\r
+:10349000A90102C0440F551F8A95E2F74093EA0044\r
+:1034A0001092EA008091EB0088608093EB0010920C\r
+:1034B000E9008091E800877F86C08111A7C0109144\r
+:1034C00061041F778091E3008078812B8093E30073\r
+:1034D0008091E800877F8093E8000E94EB1780913D\r
+:1034E000E80080FFFCCF8091E30080688093E300D8\r
+:1034F000111102C082E001C083E080935E0486C0A7\r
+:103500008058823008F082C08091610490916204FA\r
+:103510008C3D53E0950779F583E08A838AE28983BD\r
+:103520004FB7F894DE01139620E03EE051E2E32F1E\r
+:10353000F0E050935700E49120FF03C0E295EF7054\r
+:103540003F5FEF708E2F90E0EA3010F0C79601C019\r
+:10355000C0968D939D932F5F243149F74FBF809183\r
+:10356000E800877F8093E8006AE270E0CE01019670\r
+:103570000E94F21614C0AE014F5F5F4F609163046A\r
+:103580000E943916BC01009709F440C09091E800F0\r
+:10359000977F9093E80089819A810E9455178091C6\r
+:1035A000E8008B778093E80031C0803879F580910E\r
+:1035B000E800877F8093E80080915A048093F100AF\r
+:1035C0008091E8008E778093E8000E94EB171EC080\r
+:1035D00081111CC0909161049230C0F48091E80088\r
+:1035E000877F8093E80090935A040E94EB178091A4\r
+:1035F0005A04811106C08091E30087FD02C081E07A\r
+:1036000001C084E080935E040E9437158091E80039\r
+:1036100083FF0AC08091E800877F8093E800809153\r
+:10362000EB0080628093EB00AA960FB6F894DEBFA1\r
+:103630000FBECDBFDF91CF911F9108950895CF9315\r
+:1036400080915E048823A1F0C091E900CF70909131\r
+:10365000EC00892F817090FD80E8C82B1092E90062\r
+:103660008091E80083FD0E94CD19CF70C093E900DE\r
+:10367000CF9108959093DF038093DE030895E09146\r
+:10368000DE03F091DF03309721F00190F081E02D0F\r
+:10369000099480E00895E091DE03F091DF03309714\r
+:1036A00021F00280F381E02D09940895E091DE037A\r
+:1036B000F091DF03309721F00480F581E02D09942B\r
+:1036C00008952091DC033091DD038217930771F098\r
+:1036D0009093DD038093DC03E091DE03F091DF0340\r
+:1036E000309721F00680F781E02D0994089520910C\r
+:1036F000DA033091DB038217930771F09093DB03B9\r
+:103700008093DA03E091DE03F091DF03309721F03C\r
+:103710000084F185E02D0994089508950C948D1B83\r
+:103720000E9415280E94760B0E949B280C94562D0F\r
+:103730004F925F927F928F929F92AF92BF92CF9261\r
+:10374000DF92EF92FF920F931F93CF93DF93CDB74A\r
+:10375000DEB72A970FB6F894DEBF0FBECDBF0E942A\r
+:10376000650C91EEC92E93E0D92E00E010E0AA245A\r
+:10377000A394B12C702E802F0E94AE0D4C01F60147\r
+:10378000419051906F014826592641145104B1F4DB\r
+:103790000F5F1F4F0430110569F78FEF89838A830C\r
+:1037A0001B820E941E288160782F9D838C83498113\r
+:1037B0005A816B818D810E94511C3AC080913D04D9\r
+:1037C00081FD0E94B70D20E030E07501022E02C09D\r
+:1037D000EE0CFF1C0A94E2F7C70184219521892B86\r
+:1037E00009F12E837F828E209F2091E0892809F4A1\r
+:1037F00090E098870E941E288160782F9A87898799\r
+:103800004E815F8168858A850E94511C000F111FBF\r
+:10381000F801EF51FC4F80819181E826F926F18271\r
+:10382000E08206C02F5F3F4F2C30310571F6B0CFDC\r
+:103830000E94872A1091E0030E943F1B1817D9F0BD\r
+:103840000E943F1B8093E0032A960FB6F894DEBFD8\r
+:103850000FBECDBFDF91CF911F910F91FF90EF90E1\r
+:10386000DF90CF90BF90AF909F908F907F905F90B0\r
+:103870004F900C94AE0A2A960FB6F894DEBF0FBE96\r
+:10388000CDBFDF91CF911F910F91FF90EF90DF900F\r
+:10389000CF90BF90AF909F908F907F905F904F9010\r
+:1038A0000895CF93DF93CDB7DEB72B970FB6F8947B\r
+:1038B000DEBF0FBECDBF4F83588769877A878B875E\r
+:1038C000DE01119686E0FD0111928A95E9F785E007\r
+:1038D000FE01379601900D928A95E1F749815A8150\r
+:1038E0006B817C818D819E810E94F6232B960FB681\r
+:1038F000F894DEBF0FBECDBFDF91CF910895CF9377\r
+:10390000882309F4C2C0C82F823859F40E943F1B93\r
+:1039100081FDBBC089E30E949F260E946C2789E33A\r
+:103920000CC0833879F40E943F1B80FDAEC083E554\r
+:103930000E949F260E946C2783E50E94E126CF917A\r
+:103940000C946C27843859F40E943F1B82FD9DC063\r
+:1039500087E40E949F260E946C2787E4EECF8CEFBD\r
+:103960008C0F813A48F48C2F0E94BE2C81118DC09F\r
+:103970008C2F0E949F26E3CF80E28C0F883048F482\r
+:10398000C77081E001C0880FCA95EAF70E94252719\r
+:10399000D6CF8BE58C0F833078F4C53A29F0C63A40\r
+:1039A00031F083E890E005C081E890E002C082E851\r
+:1039B00090E0CF910C94611B88E58C0F833108F067\r
+:1039C00064C0C83A39F1C93A41F1CA3A49F1CB3A2F\r
+:1039D00051F1CC3A59F1CD3A61F1C03B69F1CE3A9F\r
+:1039E00071F1CF3A79F1C13B81F1C23B89F1C33B1F\r
+:1039F00091F1C43B99F1C53BA1F1C63BA9F1C73B8D\r
+:103A0000B1F1C83BB9F1C93BC1F1CA3BC9F180E092\r
+:103A100090E038C082EE90E035C089EE90E032C090\r
+:103A20008AEE90E02FC085EB90E02CC086EB90E012\r
+:103A300029C087EB90E026C08CEC90E023C08DEC91\r
+:103A400090E020C083E891E01DC08AE891E01AC0B0\r
+:103A500082E991E017C084E991E014C081E292E02C\r
+:103A600011C083E292E00EC084E292E00BC085E2D6\r
+:103A700092E008C086E292E005C087E292E002C0D0\r
+:103A80008AE292E0CF910C94771BCF91089588231E\r
+:103A900009F44BC0823859F40E943F1B81FF45C096\r
+:103AA00089E30E949F260E946C2789E30CC083381B\r
+:103AB00071F40E943F1B80FF38C083E50E949F265F\r
+:103AC0000E946C2783E50E94E1260C946C278438C1\r
+:103AD00059F40E943F1B82FF28C087E40E949F2662\r
+:103AE0000E946C2787E4EFCF9CEF980F913A58F330\r
+:103AF00090E2980F983050F4877091E001C0990FD0\r
+:103B00008A95EAF7892F0E942B27DFCF9BE5980F34\r
+:103B1000933020F480E090E00C94611B885A83314C\r
+:103B200020F480E090E00C94771B0895882321F026\r
+:103B30000E9425270C946C270895882321F00E9469\r
+:103B40002B270C946C270895BF92CF92DF92EF92AF\r
+:103B5000FF920F931F93CF93DF9300D000D000D03C\r
+:103B6000CDB7DEB725E0FC01DE01119601900D9284\r
+:103B70002A95E1F7FC01D0801181028125812295EF\r
+:103B80002F7043815481452B09F472C31F3F21F4E8\r
+:103B9000FFEFDF1609F46CC37C012E830E947707C8\r
+:103BA000D9821A8369817A81802F0E949B26182FDF\r
+:103BB000B92E0E9450260E9417252E81002319F04D\r
+:103BC0000E9442272E81EB2DE295EF70F0E0E25942\r
+:103BD000FF4F0C94E3318B2D807F9B2D9F70F92E2E\r
+:103BE000882319F0F29480EFF822002389F0FF2057\r
+:103BF00009F47CC280E2810F883020F48F2D0E946E\r
+:103C0000252703C08F2D0E9435270E946C276EC286\r
+:103C1000812F0E94471DFF2009F42AC3105E8F2DBB\r
+:103C2000183018F40E942B2702C00E943B272696CA\r
+:103C30000FB6F894DEBF0FBECDBFDF91CF911F91BD\r
+:103C40000F91FF90EF90DF90CF90BF900C946C2776\r
+:103C50008B2D807F9B2D9F70803211F4892F03C0A4\r
+:103C6000892F8295807F112319F0113011F12BC01B\r
+:103C70000023A9F0222389F1213079F526960FB689\r
+:103C8000F894DEBF0FBECDBFDF91CF911F910F9192\r
+:103C9000FF90EF90DF90CF90BF900C945527222398\r
+:103CA00019F0213009F4E4C28E830E9458278E81D6\r
+:103CB0009BC1002321F0263008F0DAC20EC0253067\r
+:103CC00008F0D6C291C10023C9F0222331F0F701D8\r
+:103CD000958190FF0BC29F70958326960FB6F8943E\r
+:103CE000DEBF0FBECDBFDF91CF911F910F91FF902F\r
+:103CF000EF90DF90CF90BF900C94961D222309F493\r
+:103D000073C109C22B2D26952695237030E021150D\r
+:103D1000310521F021303105D1F0AAC2002321F074\r
+:103D2000812F9B2D937002C080E090E026960FB605\r
+:103D3000F894DEBF0FBECDBFDF91CF911F910F91E1\r
+:103D4000FF90EF90DF90CF90BF900C94611B002309\r
+:103D500021F0812F9B2D937002C080E090E0269689\r
+:103D60000FB6F894DEBF0FBECDBFDF91CF911F918C\r
+:103D70000F91FF90EF90DF90CF90BF900C94771B46\r
+:103D8000812F002319F00E948F2902C00E94F72979\r
+:103D900026960FB6F894DEBF0FBECDBFDF91CF9150\r
+:103DA0001F910F91FF90EF90DF90CF90BF900C94F8\r
+:103DB0007C2A8B2D837009F07BC0011159C2812FA1\r
+:103DC000829586958770880F880F912F9F70C92ED6\r
+:103DD000D12CE12CF12C082E04C0CC0CDD1CEE1CE7\r
+:103DE000FF1C0A94D2F714FF12C04FE050E060E0CD\r
+:103DF00070E004C0440F551F661F771F8A95D2F7E5\r
+:103E0000CB01BA01609570958095909503C060E0F4\r
+:103E100070E0CB012B2D269526952370422F50E084\r
+:103E200042305105D9F04330510569F16C297D29A3\r
+:103E30008E299F294130510551F126960FB6F894ED\r
+:103E4000DEBF0FBECDBFDF91CF911F910F91FF90CD\r
+:103E5000EF90DF90CF90BF900C943E256C297D2988\r
+:103E60008E299F2926960FB6F894DEBF0FBECDBFD0\r
+:103E7000DF91CF911F910F91FF90EF90DF90CF9046\r
+:103E8000BF900C945A250E943E25C701B601269684\r
+:103E90000FB6F894DEBF0FBECDBFDF91CF911F915B\r
+:103EA0000F91FF90EF90DF90CF90BF900C94222560\r
+:103EB000002319F08B2D817001C08695882309F4A9\r
+:103EC000D7C1812F829586958770880F880F912F93\r
+:103ED0009F70C92ED12CE12CF12C082E04C0CC0CE3\r
+:103EE000DD1CEE1CFF1C0A94D2F714FF12C04FE039\r
+:103EF00050E060E070E004C0440F551F661F771F5C\r
+:103F00008A95D2F7CB01BA0160957095809590950E\r
+:103F100003C060E070E0CB012B2D26952695237021\r
+:103F2000422F50E042305105D9F04330510569F13C\r
+:103F30006C297D298E299F294130510551F1269602\r
+:103F40000FB6F894DEBF0FBECDBFDF91CF911F91AA\r
+:103F50000F91FF90EF90DF90CF90BF900C941826B8\r
+:103F60006C297D298E299F2926960FB6F894DEBFED\r
+:103F70000FBECDBFDF91CF911F910F91FF90EF90BA\r
+:103F8000DF90CF90BF900C9434260E941826C70172\r
+:103F9000B60126960FB6F894DEBF0FBECDBFDF91F7\r
+:103FA000CF911F910F91FF90EF90DF90CF90BF9036\r
+:103FB0000C94FC25103F49F118F4103E48F491C0D0\r
+:103FC000123F09F453C0E8F1133F09F464C089C0FB\r
+:103FD0001F708B2D8F71002321F00E949525812F5A\r
+:103FE0007CCE0E94B625812F26960FB6F894DEBFB0\r
+:103FF0000FBECDBFDF91CF911F910F91FF90EF903A\r
+:10400000DF90CF90BF900C949D1D0023B1F0253020\r
+:1040100008F02EC18B2D8F7126960FB6F894DEBF57\r
+:104020000FBECDBFDF91CF911F910F91FF90EF9009\r
+:10403000DF90CF90BF900C94DB25263008F018C19C\r
+:10404000E9CF0023A9F08B2D8F7126960FB6F89437\r
+:10405000DEBF0FBECDBFDF91CF911F910F91FF90BB\r
+:10406000EF90DF90CF90BF900C949525002359F3EB\r
+:104070008B2D8F7126960FB6F894DEBF0FBECDBF85\r
+:10408000DF91CF911F910F91FF90EF90DF90CF9034\r
+:10409000BF900C94B625002399F08B2D8F71269636\r
+:1040A0000FB6F894DEBF0FBECDBFDF91CF911F9149\r
+:1040B0000F91FF90EF90DF90CF90BF900C948025F0\r
+:1040C00026960FB6F894DEBF0FBECDBFDF91CF911D\r
+:1040D0001F910F91FF90EF90DF90CF90BF900C94C5\r
+:1040E00076250023A9F0222309F4ADCF812F26964F\r
+:1040F0000FB6F894DEBF0FBECDBFDF91CF911F91F9\r
+:104100000F91FF90EF90DF90CF90BF900C947F1CA9\r
+:10411000222309F4ADCF812F26960FB6F894DEBF87\r
+:104120000FBECDBFDF91CF911F910F91FF90EF9008\r
+:10413000DF90CF90BF900C94471D4B2D4F70612F97\r
+:10414000C7010E94690526960FB6F894DEBF0FBE20\r
+:10415000CDBFDF91CF911F910F91FF90EF90DF9036\r
+:10416000CF90BF900C949A24011182C09B2D9F7018\r
+:10417000492F50E04230510509F443C0C4F44115C1\r
+:10418000510571F14130510509F072C026960FB604\r
+:10419000F894DEBF0FBECDBFDF91CF911F910F917D\r
+:1041A000FF90EF90DF90CF90BF900C947E2D433026\r
+:1041B0005105C1F14430510509F05AC0812F2696AE\r
+:1041C0000FB6F894DEBF0FBECDBFDF91CF911F9128\r
+:1041D0000F91FF90EF90DF90CF90BF900C94D02D77\r
+:1041E00026960FB6F894DEBF0FBECDBFDF91CF91FC\r
+:1041F0001F910F91FF90EF90DF90CF90BF900C94A4\r
+:10420000672D26960FB6F894DEBF0FBECDBFDF91A7\r
+:10421000CF911F910F91FF90EF90DF90CF90BF90C3\r
+:104220000C949A2D26960FB6F894DEBF0FBECDBF24\r
+:10423000DF91CF911F910F91FF90EF90DF90CF9082\r
+:10424000BF900C94AD2D4B2D4F70612FC70126965A\r
+:104250000FB6F894DEBF0FBECDBFDF91CF911F9197\r
+:104260000F91FF90EF90DF90CF90BF900C94790763\r
+:1042700026960FB6F894DEBF0FBECDBFDF91CF916B\r
+:104280001F910F91FF90EF90DF90CF90BF90089516\r
+:104290000E9442270E9452270E9417270E946C27E3\r
+:1042A0000E942D2B0E947C2A80E090E00E94611BDE\r
+:1042B00080E090E00C94771B0E9432270C944821F8\r
+:1042C0000E949026292F22952F7030E02C30310546\r
+:1042D0004CF42A3031056CF422503109223031057A\r
+:1042E00088F407C02C30310549F02F30310531F00A\r
+:1042F00009C0803E48F0803F29F406C093FB882720\r
+:1043000080F9089580E0089581E00895CF93DF93C8\r
+:1043100000D000D01F92CDB7DEB70F900F900F9056\r
+:104320000F900F90DF91CF910895CF93DF9300D03E\r
+:1043300000D000D0CDB7DEB726960FB6F894DEBF1A\r
+:104340000FBECDBFDF91CF9108951F93CF93DF9321\r
+:10435000C091E90316E08091EA03C81799F0D0E014\r
+:104360001C9FF0011D9FF00D1124E551FC4F408171\r
+:10437000518162817381848195810E94952121966A\r
+:10438000C770E9CFDF91CF911F91089540911B0431\r
+:1043900050911C0460911D0470911E0480911F04B3\r
+:1043A000909120040C9495218091200482958F7027\r
+:1043B00009F054C080911D04882309F44FC08091F6\r
+:1043C000E903A091EA0360911B0470911C044091E1\r
+:1043D0001E0450911F04B6E08A1709F43FC090E014\r
+:1043E00041155105C1F17F3F11F46F3FA1F1B89F15\r
+:1043F000F001B99FF00D1124E551FC4F218172139A\r
+:104400002AC02081621327C02281211124C0238168\r
+:1044100034812417350710F421503109241B350B42\r
+:10442000283C3105C0F4209120042F702061209396\r
+:10443000200426E0289FF001299FF00D1124E0516F\r
+:10444000FC4F80818F70806180838BE194E00E94BB\r
+:10445000A41D0C94A52101968770BECF0895CF921C\r
+:10446000DF92EF92FF920F931F93CF93DF93CDB71D\r
+:10447000DEB762970FB6F894DEBF0FBECDBF8C01DA\r
+:1044800085E0F801DE011D9601900D928A95E1F715\r
+:10449000D8014C9111965C91119712966C911297DC\r
+:1044A0001396CD90DC90149730911B0470911C04EE\r
+:1044B00080911E0490911F04009709F46BC17F3F07\r
+:1044C00019F43F3F09F466C1E0901D04EE2009F4A1\r
+:1044D000C0C020912004C816D90628F0F601E81BB8\r
+:1044E000F90BCF0104C0809590958C0D9D1DFF2484\r
+:1044F000F394883C910578F0F12C207F09F0C6C038\r
+:104500007C2DD98AC88A89890E9486218BE194E012\r
+:104510000E94A41DB1C0822F807F09F046C0751390\r
+:1045200014C0341312C0611110C02F702061209389\r
+:1045300020040E94C6218BE194E00E94A41D80917A\r
+:104540002004D80115968C932EC0CD2819F15F3F19\r
+:1045500011F44F3FF9F0F62E61111CC08091E90370\r
+:104560002091EA0336E0821709F45AC090E0389FA0\r
+:10457000F001399FF00D1124E551FC4F7181571363\r
+:1045800006C07081471303C07281711103C0019688\r
+:104590008770E9CFF62E662309F418C180912004B4\r
+:1045A000816080932004F12C11C1751308C034136D\r
+:1045B00006C0611104C080912004D801C3C04D879A\r
+:1045C0005E878D859E856A8B0E9460216A8988231B\r
+:1045D000E1F16623D1F120912004822F82958F7022\r
+:1045E00090E0029774F080911B0490911C049887CE\r
+:1045F0008F831986DB86CA862C87CE0107960E9498\r
+:10460000A41D86E0F801ABE1B4E001900D928A951B\r
+:10461000E1F70E94D4210E94C621FF24F394D6C062\r
+:104620004D875E878D859E850E949026292F229535\r
+:104630002F7030E0223031050CF0BCC09F7009F0C3\r
+:10464000B6C0805E883008F4C1C0C8010E94A41DB5\r
+:10465000E4CFC816D90608F453C0F601E81BF90BDD\r
+:10466000CF01883C910508F450C0F12C7C2DD98AEB\r
+:10467000C88A89890E948621EBE1F4E086E0DF01A7\r
+:104680001D928A95E9F70E94C621A0C0751314C037\r
+:10469000341312C0611110C080912004F801858389\r
+:1046A000C8010E94A41D86E0EBE1F4E0DF011D9249\r
+:1046B0008A95E9F7FE2C8AC04D875E878D859E8599\r
+:1046C0006A8B0E9460216A89882309F4BECF662321\r
+:1046D00009F4BBCF20912004822F82958F7090E047\r
+:1046E00002970CF48ECF80911B0490911C049A8346\r
+:1046F00089831B82DD82CC822E83CE0101967FCFFF\r
+:10470000809590958C0D9D1DACCFF62E662309F4F7\r
+:104710009CCF75132EC034132CC02091200420FD93\r
+:104720001FC0822F82958F70D9F0D80115962C93D7\r
+:1047300015978F3049F08F5F982F9295907F822F39\r
+:104740008F70892B15968C93C8010E94A41D86E05A\r
+:10475000F801ABE1B4E001900D928A95E1F793CFB7\r
+:1047600086E0F801ABE1B4E001900D928A95E1F7A3\r
+:104770002DC04D875E878D859E850E9460218111A9\r
+:1047800040CF80912004816080932004C8010E9462\r
+:10479000A41D1CC0662309F458CF4D875E878D8504\r
+:1047A0009E850E946021882309F44FCF2ACF811172\r
+:1047B00048CF0CC0243031050CF047CF9F7009F46E\r
+:1047C00040CFF8019581907F09F03BCF8F2D629605\r
+:1047D0000FB6F894DEBF0FBECDBFDF91CF911F9112\r
+:1047E0000F91FF90EF90DF90CF9008951F93CF939C\r
+:1047F000DF93CDB7DEB72C970FB6F894DEBF0FBEB0\r
+:10480000CDBF4F83588769877A878B879C87CE0176\r
+:1048100007960E942F22882369F08F8198852A8528\r
+:104820003B85232BF1F19F3F09F063C08F3F09F0D7\r
+:1048300060C037C086E0FE013796DE011196019018\r
+:104840000D928A95E1F76F817885EA85FB8530972F\r
+:1048500041F17F3F11F46F3F21F12091EA0330E0F5\r
+:10486000C9010196877099274091E90350E08417A8\r
+:10487000950709F447C069837A83FD83EC8396E04A\r
+:10488000929FD001939FB00D1124A551BC4FFE0102\r
+:10489000319601900D929A95E1F78093EA030E9478\r
+:1048A000A52116E08091E9039091EA038917C1F1EF\r
+:1048B000189FC001112485519C4F0E942F228823EC\r
+:1048C00079F1E091E9031E9FF0011124E551FC4FBD\r
+:1048D0004081518162817381848195810E949521FB\r
+:1048E0008091E90390E00196877099278093E9030E\r
+:1048F000D9CF4F81588569857A858B859C850E94A3\r
+:104900009521CFCF0E945C211092EA031092E90317\r
+:10491000EBE1F4E086E0DF011D928A95E9F7C1CF73\r
+:104920002C960FB6F894DEBF0FBECDBFDF91CF91AE\r
+:104930001F910895EF92FF920F931F93CF93DF93F0\r
+:104940008C01009709F46CC0F12CEE24E394E8018B\r
+:104950002196F8018491843740F4843008F051C0E6\r
+:10496000813081F0823019F15BC0853709F444C091\r
+:10497000A8F19CE7980F903708F052C08F770E94FB\r
+:10498000471D41C00E5F1F4FFE01C49180E28C0F96\r
+:10499000883048F4C7708E2D01C0880FCA95EAF799\r
+:1049A0000E94452714C08C2F0E947F1C2DC00E5FD3\r
+:1049B0001F4FFE01C49180E28C0F883058F4C770FD\r
+:1049C0008E2D01C0880FCA95EAF70E944B270E94DE\r
+:1049D0006C271AC08C2F0E94471D16C00E5F1F4FF8\r
+:1049E000FE01C491CC2381F08FE99FE00197F1F79C\r
+:1049F00000C00000C150F6CF0E5F1F4FFE01F490C3\r
+:104A000003C00E947F1C8E018F2D882309F49FCF45\r
+:104A1000EFE9FFE03197F1F700C000008150F5CFDA\r
+:104A2000DF91CF911F910F91FF90EF90089508951E\r
+:104A300060932504709326048093270490932804A0\r
+:104A40000C9448210F931F93009125041091260484\r
+:104A50002091270430912804DC01CB01802B912B7D\r
+:104A6000A22BB32B8093250490932604A0932704B4\r
+:104A7000B09328041F910F910C9448210F931F931A\r
+:104A800000912504109126042091270430912804D8\r
+:104A9000DC01CB0180239123A223B323809325043F\r
+:104AA00090932604A0932704B09328041F910F919C\r
+:104AB0000C9448210F931F93009125041091260414\r
+:104AC0002091270430912804DC01CB018027912715\r
+:104AD000A227B3278093250490932604A09327044C\r
+:104AE000B09328041F910F910C9448211092210437\r
+:104AF0001092220410922304109224040C94482152\r
+:104B000041E050E060E070E004C0440F551F661FB4\r
+:104B1000771F8A95D2F74093210450932204609323\r
+:104B20002304709324040C94482141E050E060E099\r
+:104B300070E004C0440F551F661F771F8A95D2F797\r
+:104B40008091210490912204A0912304B091240427\r
+:104B5000482B592B6A2B7B2B409321045093220422\r
+:104B600060932304709324040C94482141E050E0A6\r
+:104B700060E070E004C0440F551F661F771F8A95E0\r
+:104B8000D2F7409550956095709580912104909151\r
+:104B90002204A0912304B0912404482359236A23BA\r
+:104BA0007B23409321045093220460932304709349\r
+:104BB00024040C94482141E050E060E070E004C01F\r
+:104BC000440F551F661F771F8A95D2F780912104E5\r
+:104BD00090912204A0912304B091240448275927DE\r
+:104BE0006A277B2740932104509322046093230477\r
+:104BF000709324040C9448210F931F930091210477\r
+:104C0000109122042091230430912404DC01CB0173\r
+:104C1000802B912BA22BB32B809321049093220401\r
+:104C2000A0932304B09324041F910F910C94482166\r
+:104C30000F931F93009121041091220420912304CB\r
+:104C400030912404DC01CB0180239123A223B323E0\r
+:104C50008093210490932204A0932304B09324040E\r
+:104C60001F910F910C9448210F931F9300912104E1\r
+:104C7000109122042091230430912404DC01CB0103\r
+:104C800080279127A227B3278093210490932204A1\r
+:104C9000A0932304B09324041F910F910C944821F6\r
+:104CA0000895CF92DF92EF92FF920F931F93CF93CD\r
+:104CB000DF938C01C0902504D0902604E090270457\r
+:104CC000F09028048091210490912204A091230463\r
+:104CD000B0912404C82AD92AEA2AFB2ACFE1D0E0DD\r
+:104CE000D701C6010C2E04C0B695A7959795879558\r
+:104CF0000A94D2F780FF06C0B8018C2F0E94D30916\r
+:104D0000019721F4219760F780E001C08C2FDF919B\r
+:104D1000CF911F910F91FF90EF90DF90CF9008956A\r
+:104D2000CF93DF93EC010E945126BE010E94D3096C\r
+:104D3000DF91CF910895CB010E9490260895909124\r
+:104D40008402992321F090918502911109C020914C\r
+:104D5000860230918702F90132969FEF40E01FC032\r
+:104D6000982F9695969596959F3050F5E0918602EE\r
+:104D7000F0918702E90FF11D877021E030E0A90171\r
+:104D800002C0440F551F8A95E2F7CA019181892B11\r
+:104D9000818308959F3F39F04F5F4E3041F051912C\r
+:104DA0005813F8CF0DC05111F7CF942FF5CF9F3F77\r
+:104DB00039F0F901E90FF11D97FDFA958283089505\r
+:104DC000089590918402992321F090918502911188\r
+:104DD00009C02091860230918702F9013296205F46\r
+:104DE0003F4F1FC0982F9695969596959F30F0F45B\r
+:104DF000E0918602F0918702E90FF11D877021E0B2\r
+:104E000030E0A90102C0440F551F8A95E2F7CA019C\r
+:104E1000809591818923818308953196E217F30764\r
+:104E200029F090819813F9CF1082F7CF089581E08F\r
+:104E300090E0E0918602F0918702E80FF91F10825E\r
+:104E4000019680319105A9F7089590913C04892B32\r
+:104E500080933C040895809590913C04892380932D\r
+:104E60003C04089510923C04089590913B04892BD2\r
+:104E700080933B040895809590913B04892380930F\r
+:104E80003B04089510923B04089590913A04892BB5\r
+:104E900080933A040895809590913A0489238093F1\r
+:104EA0003A04089510923A040895809329040895CD\r
+:104EB0001092290408958091860290918702FC0146\r
+:104EC00031969C01205F3F4F80E0919191118F5F5F\r
+:104ED000E217F307D1F70895E0918602F091870277\r
+:104EE00080913C048083E0918602F091870290815A\r
+:104EF00080913B04892B8083E0918602F0918702A8\r
+:104F0000908180913A04892B8083809129048823A1\r
+:104F100061F0E0918602F09187029081892B808375\r
+:104F20000E945B2781111092290480918602909142\r
+:104F300087020C944B1B80915E04843039F11092EF\r
+:104F40003E0420E488E190E00FB6F894A8958093A1\r
+:104F500060000FBE2093600080E00E94300580E07A\r
+:104F60000E94AE0A83B7817F846083BF83B781606C\r
+:104F700083BF7894889583B78E7F83BF88E10FB60F\r
+:104F8000F89480936000109260000FBE0895089519\r
+:104F90000895CF9380E00E9430050E94C7270E94A9\r
+:104FA000650C0E94C827C0E08C2F0E94AE0D892B93\r
+:104FB00029F4CF5FC430C1F780E001C081E0CF9118\r
+:104FC00008950E945C2180E00E9430050E94562DC9\r
+:104FD0000E943F1B0C94AE0A1F920F920FB60F92C5\r
+:104FE00011248F939F93AF93BF9380913E048111BF\r
+:104FF00013C080913F0490914004A0914104B0916E\r
+:1050000042044196A11DB11D80933F04909340043A\r
+:10501000A0934104B0934204BF91AF919F918F91AF\r
+:105020000F900FBE0F901F90189582E084BD93E003\r
+:1050300095BD9AEF97BD80936E0008952FB7F894B1\r
+:1050400080913F0490914004A0914104B0914204AA\r
+:105050002FBF0895CF92DF92EF92FF920F931F938D\r
+:105060002FB7F89440913F0450914004609141045F\r
+:10507000709142042FBF6A017B01EE24FF248C0152\r
+:1050800020E030E0C016D106E206F30610F44150ED\r
+:1050900051099A01281B390BC9011F910F91FF90EB\r
+:1050A000EF90DF90CF9008951F920F920FB60F925E\r
+:1050B00011248F939F93AF93BF9380913F0490915E\r
+:1050C0004004A0914104B09142040196A11DB11D7C\r
+:1050D00080933F0490934004A0934104B093420412\r
+:1050E000BF91AF919F918F910F900FBE0F901F9026\r
+:1050F00018950E943C18F8942FEF87EA91E621500A\r
+:1051000080409040E1F700C0000087E090EBDC01B8\r
+:105110008093690490936A04A0936B04B0936C0429\r
+:105120009CE088E10FB6F894A895809360000FBECC\r
+:1051300090936000FFCF0E94DA28811102C00E9484\r
+:10514000B6280E94E52880933D040E94F2288093AF\r
+:10515000670487FB882780F9809385020E94E928ED\r
+:10516000682F70E080E090E00C9418256DEE7EEFE3\r
+:1051700080E090E00E94093260E082E090E00E94CE\r
+:10518000F73160E083E090E00E94F73160E084E076\r
+:1051900090E00E94F73160E085E090E00E94F731F6\r
+:1051A00060E086E090E00E94F7316FEF87E090E0EA\r
+:1051B0000C94F73180E090E00E94F13121E08D3EC7\r
+:1051C0009E4F09F020E0822F089582E090E00C9439\r
+:1051D000E93183E090E00C94E931682F83E090E0BE\r
+:1051E0000C94F73184E090E00C94E931682F84E06E\r
+:1051F00090E00C94F73186E090E00C94E931682F50\r
+:1052000086E090E00C94F73187E090E00C94E9316F\r
+:10521000682F87E090E00C94F7318091450480FF7F\r
+:105220000BC060918B0285E0689FB00111247595D9\r
+:105230006795759567952BC081FF09C060918B02BA\r
+:1052400085E0689FB00111247595679520C082FFA5\r
+:1052500007C060918B0285E0689FB001112417C0E0\r
+:10526000909146049923D1F060918A02961788F7AD\r
+:1052700020918B0285E0289F90011124929FA0012C\r
+:10528000939F500D112470E0CA010E94CF31603805\r
+:10529000710540F46115710539F002C065E070E0F8\r
+:1052A000862F08958FE7089581E008958091450441\r
+:1052B00080FF08C06091890270E0759567957595CB\r
+:1052C000679521C081FF06C06091890270E07595E5\r
+:1052D000679519C082FF04C06091890270E010C018\r
+:1052E000909146049923C1F0609188029617A0F727\r
+:1052F00080918902899FC001112470E00E94CF3102\r
+:105300006038710528F46115710521F0862F089524\r
+:105310008FE7089581E0089561E070E0F4CF803F69\r
+:1053200021F40E940D29819504C0813F29F40E9437\r
+:105330000D29809349040895823F21F40E940D298C\r
+:10534000819504C0833F29F40E940D29809348046D\r
+:105350000895893F19F40E94562905C08A3F31F407\r
+:105360000E945629819580934A0408958B3F21F429\r
+:105370000E945629819504C08C3F29F40E94562929\r
+:1053800080934B040895843F21F480914704816009\r
+:1053900017C0853F21F480914704826011C0863F89\r
+:1053A00021F48091470484600BC0873F21F48091F1\r
+:1053B0004704886005C0883F31F4809147048061CC\r
+:1053C0008093470408958D3F21F4809145048160C6\r
+:1053D0000BC08E3F21F480914504826005C08F3F51\r
+:1053E00029F4809145048460809345040895803FAA\r
+:1053F00039F48091490487FF6CC01092490469C058\r
+:10540000813F29F4809149041816BCF362C0909141\r
+:105410004804823F29F497FF5CC01092480459C0A9\r
+:10542000833F19F41916CCF354C0893F41F480919D\r
+:105430004A0418160CF04DC010924A044AC08A3F24\r
+:1054400029F480914A0487FF44C0F6CF8B3F39F49A\r
+:1054500080914B0487FF3DC010924B043AC08C3FB3\r
+:1054600029F480914B041816BCF333C0843F21F417\r
+:10547000809147048E7F17C0853F21F480914704B7\r
+:105480008D7F11C0863F21F4809147048B7F0BC034\r
+:10549000873F21F480914704877F05C0883F31F41E\r
+:1054A000809147048F7E8093470413C08D3F21F481\r
+:1054B000809145048E7F0BC08E3F21F4809145047E\r
+:1054C0008D7F05C08F3F29F4809145048B7F8093A9\r
+:1054D00045048091480481110EC0809149048111D6\r
+:1054E0000AC080914A04811106C080914B04811149\r
+:1054F00002C010924604089587E494E00E94561B6F\r
+:105500000E941E28909344048093430408951F939F\r
+:10551000CF93DF9380914304909144040E942A2802\r
+:10552000AC0190914604992321F020918C0230E047\r
+:1055300006C020918D028AE0289F90011124421715\r
+:10554000530708F486C080914804C0914904D09163\r
+:105550004A0410914B04811107C0C11176C0D111CA\r
+:1055600074C0111172C075C09F3F19F09F5F909376\r
+:105570004604181624F40E940D2980934804809153\r
+:10558000480487FF05C00E940D2981958093480437\r
+:105590001C1624F40E940D2980934904809149042B\r
+:1055A00087FF05C00E940D29819580934904609171\r
+:1055B0004804662339F1C0914904CC2319F17727B7\r
+:1055C00067FD7095872F972F0E94F12E23E333E319\r
+:1055D00043E35FE30E9401300E94BE2E60934804C3\r
+:1055E0006C2F772767FD7095872F972F0E94F12EDC\r
+:1055F00023E333E343E35FE30E9401300E94BE2EC6\r
+:10560000609349041D1624F40E94562980934A048D\r
+:1056100080914A0487FF05C00E9456298195809396\r
+:105620004A04111624F40E94562980934B04809159\r
+:105630004B0487FF05C00E945629819580934B0437\r
+:10564000DF91CF911F910C947C2A9F3F09F08ECF60\r
+:1056500096CFDF91CF911F910895E7E4F4E085E0C4\r
+:10566000DF011D928A95E9F71092460410924504D5\r
+:105670000895833081F128F4813059F08230D1F0DF\r
+:105680000895853009F449C0B8F1863009F456C050\r
+:10569000089580918D02262F30E0280F311D2F3F75\r
+:1056A000310524F4680F60938D0208958FEF809385\r
+:1056B0008D02089580918C02262F30E0280F311D35\r
+:1056C0002F3F310524F4680F60938C0208958FEF0B\r
+:1056D00080938C02089580918B02262F30E0280F52\r
+:1056E000311D2F3F310524F4680F60938B0208951C\r
+:1056F0008FEF80938B02089580918A02262F30E0ED\r
+:10570000280F311D2F3F310524F4680F60938A0262\r
+:1057100008958FEF80938A02089580918902262F41\r
+:1057200030E0280F311D2F3F310524F4680F6093BE\r
+:10573000890208958FEF80938902089580918802ED\r
+:10574000262F30E0280F311D2F3F310524F4680F3C\r
+:105750006093880208958FEF8093880208958330C4\r
+:1057600011F128F4813049F0823091F008958530AC\r
+:1057700081F120F18630C1F1089580918D02681782\r
+:1057800020F4861B80938D02089510928D02089557\r
+:1057900080918C02681720F4861B80938C020895F8\r
+:1057A00010928C02089580918B02681720F4861B5A\r
+:1057B00080938B02089510928B02089580918A0243\r
+:1057C000681720F4861B80938A02089510928A023B\r
+:1057D000089580918902681720F4861B80938902BE\r
+:1057E000089510928902089580918802681720F424\r
+:1057F000861B8093880208951092880208950F9363\r
+:105800001F93873208F048C08E3108F094C0803171\r
+:1058100009F47EC008F5873009F468C068F4863062\r
+:1058200009F0A4C080913D04817F8E7F80933D0468\r
+:1058300081E080934D049BC08B3009F490C08E3082\r
+:1058400009F094C080913D0482FB222720F991E069\r
+:10585000922790FB82F965C0863109F480C060F41C\r
+:10586000813109F083C00E945C219091850281E022\r
+:1058700089278093850273C0893109F470C08B3108\r
+:1058800009F074C080913D0481FB222720F991E04A\r
+:10589000922790FB81F945C0883309F460C050F429\r
+:1058A000893209F45EC0853309F45BC0873209F49C\r
+:1058B00058C05CC0833409F454C028F48A3308F417\r
+:1058C00055C0895339C0883409F050C00E945C210A\r
+:1058D0000E946C060FEF13ED20E3015010402040B2\r
+:1058E000E1F700C000000E94792839C090913D0482\r
+:1058F000892F8095817080FB90F929F096609860DF\r
+:1059000090933D0434C0997F977F90933D0427C0C6\r
+:1059100080913D0483FB222720F991E0922790FBA0\r
+:1059200083F980933D049923D1F080913D048160F7\r
+:1059300080933D0414C08D5141E050E060E070E080\r
+:105940008A019B0104C0000F111F221F331F8A957B\r
+:10595000D2F7C901B8010E9418250E945C2181E09C\r
+:1059600006C061E070E080E090E0F5CF80E01F913C\r
+:105970000F91089580E0089580E00895CF93C82F97\r
+:1059800080914D04813069F018F08230C9F184C0F3\r
+:10599000E0918602F09187028081823209F07EC018\r
+:1059A00007C0E0918602F09187028081823261F423\r
+:1059B0008C2F0E94BA2C811104C08C2F0E94FF2BC7\r
+:1059C0001DC081E090E01AC08C2F0E94BC2C811178\r
+:1059D00014C0C43179F048F4CB3079F0C03109F00B\r
+:1059E00061C082E080934D0408C0C93219F0C83309\r
+:1059F00021F058C010924D0455C081E0817054C010\r
+:105A0000C93291F120F5C43179F1B0F4C73009F011\r
+:105A100047C08EE180938D0282E380938C028AE0FE\r
+:105A200080938B0284E180938A0288E080938902CC\r
+:105A300088E28093880234C0CE51C63088F5EC2FBE\r
+:105A4000F0E0E85AFC4F808180934C0429C0CE34AA\r
+:105A5000E9F020F4CB3421F56AE013C0C13579F0C8\r
+:105A6000C235F1F461E00DC080914C04882319F037\r
+:105A700010924C0415C081E080934D0415C061E084\r
+:105A800006C080914C040E94392B0AC06AE08091C4\r
+:105A90004C040E94AF2B04C010924D0480E004C05F\r
+:105AA00081E002C080E0AACFCF9108950E94DA2859\r
+:105AB000811102C00E94B6280E94FB2880936804CE\r
+:105AC00080FF02C0869501C080E00C943005809173\r
+:105AD0006804982F9695292F30E0233031054CF437\r
+:105AE0009F5F990F8170892B8160809368040E9469\r
+:105AF000FF288091680486950C9430058091680495\r
+:105B0000982F969591F09158990F8170892B8093D9\r
+:105B100068048E7F91E009F490E08091680490FB26\r
+:105B200080F9809368040E94FF288091680486951C\r
+:105B30000C94300580916804982F909590FB80F923\r
+:105B4000809368040E94FF288091680480FF02C04F\r
+:105B5000869501C080E00C94300590916804892FEF\r
+:105B600086958F5F8F779170843028F4880F892B0A\r
+:105B70008093680402C090936804809168048E7FCB\r
+:105B800091E009F490E08091680490FB80F98093A3\r
+:105B900068040E94FF288091680486950C94300563\r
+:105BA00020916804922F96958927982F990F822F1C\r
+:105BB0008170892B809368048E7F91E009F490E0D6\r
+:105BC0008091680490FB80F9809368040E94FF280C\r
+:105BD0008091680486950C9430055058BB27AA27FD\r
+:105BE0000ED0D1C1C2D130F0C7D120F031F49F3FE7\r
+:105BF00011F41EF4B7C10EF4E095E7FB9FC1E92F45\r
+:105C0000D3D180F3BA17620773078407950718F09A\r
+:105C100071F49EF5EBC10EF4E0950B2EBA2FA02D7A\r
+:105C20000B01B90190010C01CA01A0011124FF2749\r
+:105C3000591B99F0593F50F4503E68F11A16F04044\r
+:105C4000A22F232F342F4427585FF3CF4695379543\r
+:105C50002795A795F0405395C9F77EF41F16BA0B08\r
+:105C6000620B730B840BBAF09150A1F0FF0FBB1FB6\r
+:105C7000661F771F881FC2F70EC0BA0F621F731FFF\r
+:105C8000841F48F4879577956795B795F7959E3F5C\r
+:105C900008F0B3CF9395880F08F09927EE0F9795EA\r
+:105CA0008795089527D108F481E008950CD06BC141\r
+:105CB00063D140F05AD130F021F45F3F19F03EC17A\r
+:105CC000511195C14FC170D198F39923C9F3552350\r
+:105CD000B1F3951B550BBB27AA27621773078407DF\r
+:105CE00038F09F5F5F4F220F331F441FAA1FA9F395\r
+:105CF00033D00E2E3AF0E0E830D091505040E69587\r
+:105D0000001CCAF729D0FE2F27D0660F771F881FE7\r
+:105D1000BB1F261737074807AB07B0E809F0BB0BD6\r
+:105D2000802DBF01FF2793585F4F2AF09E3F5105FA\r
+:105D300068F004C15CC15F3FECF3983EDCF38695EC\r
+:105D400077956795B795F7959F5FC9F7880F911D70\r
+:105D50009695879597F90895E1E0660F771F881F5C\r
+:105D6000BB1F621773078407BA0720F0621B730B0F\r
+:105D7000840BBA0BEE1F88F7E095089504D0689461\r
+:105D8000B11135C1089518D188F09F5790F0B92FFF\r
+:105D90009927B751A0F0D1F0660F771F881F991F80\r
+:105DA0001AF0BA95C9F712C0B13081F01FD1B1E035\r
+:105DB00008951CC1672F782F8827B85F39F0B93F45\r
+:105DC000CCF3869577956795B395D9F73EF4909582\r
+:105DD0008095709561957F4F8F4F9F4F0895E89400\r
+:105DE00009C097FB3EF490958095709561957F4F23\r
+:105DF0008F4F9F4F9923A9F0F92F96E9BB279395D1\r
+:105E0000F695879577956795B795F111F8CFFAF4E0\r
+:105E1000BB0F11F460FF1BC06F5F7F4F8F4F9F4F11\r
+:105E200016C0882311F096E911C0772321F09EE86F\r
+:105E3000872F762F05C0662371F096E8862F70E0D5\r
+:105E400060E02AF09A95660F771F881FDAF7880FAF\r
+:105E50009695879597F9089588D018F011F08CD011\r
+:105E600038F480C0C4C0E92F9FD0B0F35523C9F3E4\r
+:105E7000E7FB6217730784079507A8F199F3E92FE9\r
+:105E8000FF2788232AF03197660F771F881FDAF7DC\r
+:105E9000952F5527442332F091505040220F331F45\r
+:105EA000441FD2F7BB27E91BF50B621B730B840B56\r
+:105EB000B109C1F222F4620F731F841FB11D319723\r
+:105EC0002AF0660F771F881FBB1FEFCF91505040FD\r
+:105ED0005AF041F0882332F0660F771F881F9150E7\r
+:105EE0005040C1F7939530C08695779567959F5F31\r
+:105EF000D9F7F8CF990F0008550FAA0BE0E8FEEF8D\r
+:105F000016161706E807F907C0F012161306E4077D\r
+:105F1000F50798F0621B730B840B950B39F40A2676\r
+:105F200061F0232B242B252B21F408950A2609F454\r
+:105F3000A140A6958FEF811D811D089597F99F6758\r
+:105F400080E870E060E008959F3F31F0915020F4C8\r
+:105F5000879577956795B795880F911D9695879545\r
+:105F600097F908959FEF80EC089500240A9416167F\r
+:105F7000170618060906089500240A941216130637\r
+:105F8000140605060895092E0394000C11F48823C5\r
+:105F900052F0BB0F40F4BF2B11F460FF04C06F5FE1\r
+:105FA0007F4F8F4F9F4F089557FD9058440F551FB7\r
+:105FB00059F05F3F71F04795880F97FB991F61F08B\r
+:105FC0009F3F79F087950895121613061406551F02\r
+:105FD000F2CF4695F1DF08C0161617061806991F6E\r
+:105FE000F1CF86957105610508940895E894BB2763\r
+:105FF00066277727CB0197F908957CDF08F48FEFA8\r
+:1060000008950BD0C0CFB1DF28F0B6DF18F095238C\r
+:1060100009F094CFA7CF1124EACFC6DFA0F3959F54\r
+:10602000D1F3950F50E0551F629FF001729FBB277F\r
+:10603000F00DB11D639FAA27F00DB11DAA1F649F2B\r
+:106040006627B00DA11D661F829F2227B00DA11DDE\r
+:10605000621F739FB00DA11D621F839FA00D611D64\r
+:10606000221F749F3327A00D611D231F849F600D85\r
+:10607000211D822F762F6A2F11249F5750408AF0BE\r
+:10608000E1F088234AF0EE0FFF1FBB1F661F771F4A\r
+:10609000881F91505040A9F79E3F510570F04ECF98\r
+:1060A000A6CF5F3FECF3983EDCF386957795679536\r
+:1060B000B795F795E7959F5FC1F7FE2B880F911D68\r
+:1060C0009695879597F90895FA01EE0FFF1F309680\r
+:1060D0002105310599F16115710561F48038BFE33F\r
+:1060E0009B0749F168949038810561F08038BFEFD3\r
+:1060F0009B0741F0992342F5FF3FE105310521055A\r
+:1061000011F1E8940894E795D901AA2329F4AB2F5B\r
+:10611000BE2FF85FD0F310C0FF5F70F4A695E0F7D4\r
+:10612000F73950F019F0FF3A38F49F779F930CD06D\r
+:106130000F9007FC905808953EF014CF60E070E097\r
+:1061400080E89FE308954FE79F775F934F933F93D6\r
+:106150002F939ED02F913F914F915F9152DF05C0B9\r
+:1061600019F40EF0EBCE42CFFDCE26DFC8F3963801\r
+:10617000C0F707F80F92E8942BE33AEA48EB5FE7A1\r
+:106180004EDF0F920F920F924DB75EB70F92C0D0B5\r
+:10619000ECEFF0E016D04F915F91EF91FF91E59514\r
+:1061A000EE1FFF1F49F0FE57E0684427EE0F441F23\r
+:1061B000FA95E1F74195550B32D00F9007FE26C0B6\r
+:1061C0000895DF93CF931F930F93FF92EF92DF9287\r
+:1061D0007B018C01689405C0DA2EEF011EDFFE0101\r
+:1061E000E894A5912591359145915591AEF3EF0134\r
+:1061F00006DDFE019701A801DA9479F7DF90EF90B0\r
+:10620000FF900F911F91CF91DF9108959B01AC01F9\r
+:1062100060E070E080E89FE349CD90CE95CECCDE83\r
+:10622000E8F39923D9F3940F511DBBF391505040DB\r
+:1062300094F059F0882332F0660F771F881F915031\r
+:106240005040C1F79E3F510544F7880F911D969528\r
+:10625000879597F908955F3FACF0983E9CF0BB2777\r
+:10626000869577956795B79508F4B1609395C1F7D2\r
+:10627000BB0F58F711F460FFE8CF6F5F7F4F8F4F70\r
+:106280009F4FE3CFB4CE0EF05FCE6CCE689456CE67\r
+:1062900093DEC8F39923D1F3C6F3DF93CF931F9313\r
+:1062A0000F93FF92C92FDD2788232AF02197660FCD\r
+:1062B000771F881FDAF720E030E040E85FEB9FE3CC\r
+:1062C000883920F0803E30F021968F7787DCE4E239\r
+:1062D000F1E003C083DCE1E5F1E073DF8B01BE0197\r
+:1062E000EC01FB2E6F5771097595771F880B990B81\r
+:1062F00078DD28E132E741E35FE38FDEAF2D9801DF\r
+:10630000AE01FF900F911F91CF91DF9178DC3BCED2\r
+:10631000FA01DC01AA0FBB1F9B01AC01BF5728F497\r
+:1063200022273327442750781FC0B75188F4AB2F5A\r
+:106330000024469537952795011CA395D2F300209C\r
+:1063400069F0220F331F441FB395DAF30DD045CC0B\r
+:1063500061307105A0E88A07B94630F49B01AC01B1\r
+:106360006627772788279078309621F0208331831D\r
+:10637000428353830895AA1BBB1B51E107C0AA1F88\r
+:10638000BB1FA617B70710F0A61BB70B881F991FD6\r
+:106390005A95A9F780959095BC01CD01089597FB7A\r
+:1063A000072E16F4009407D077FD09D00E94BB3168\r
+:1063B00007FC05D03EF4909581959F4F0895709508\r
+:1063C00061957F4F0895EE0FFF1F0590F491E02D2A\r
+:1063D0000994F999FECF92BD81BDF89A992780B5AD\r
+:1063E0000895A8E1B0E042E050E00C941132262F6D\r
+:1063F000F999FECF92BD81BDF89A019700B40216BB\r
+:1064000039F01FBA20BD0FB6F894FA9AF99A0FBE68\r
+:1064100008950196272F0E94F8310C94F731DC0182\r
+:10642000CB01FC01F999FECF06C0F2BDE1BDF89A9F\r
+:10643000319600B40D9241505040B8F70895F89449\r
+:02644000FFCF8C\r
+:106442000C52D02445000000410000DC4400000052\r
+:106452004152D0A4440000404100005C44000000CE\r
+:106462004148F17644000000415C978A44000000F4\r
+:10647200411FD592440000004152D0A444000000C4\r
+:10648200415CFFB844000000410AA7CF440000006D\r
+:10649200410000DC44000000410AA7CF4400000094\r
+:1064A200410000DC440000004100000000000080C8\r
+:1064B2004000005C450000404100000000000080F8\r
+:1064C2004052D02445000040410AA7CF44000000BA\r
+:1064D200410000DC44000000410000000000008098\r
+:1064E2004052D024450000404100000000000080DE\r
+:1064F2004000005C45000040410AA7CF4400000074\r
+:10650200410000DC44000000410000000000008067\r
+:106512004052D024450000404100000000000080AD\r
+:10652200400AA74F45000040410AA7CF440000009F\r
+:10653200410000DC44000000410000000000008037\r
+:106542004052D024450000004100000000000080BD\r
+:10655200405CFF3845000000410000000000008060\r
+:106562004052D02445000000410AA7CF4400000059\r
+:10657200410000DC440000004100000000000080F7\r
+:106582004052D024450000804153D02445000040B1\r
+:106592004160970A450000004154D0A44400000025\r
+:1065A200410000DC440000004160970A450000A061\r
+:1065B20041050000003F0000C8424314D114AE144C\r
+:1065C2007A14461401012A042808140A321E000013\r
+:1065D200020004000500070009000B000C000E0079\r
+:1065E2001000110013001500170018001A001C00FB\r
+:1065F2001D001F002100230024002600280029007E\r
+:106602002B002D002F0030003200340035003700FF\r
+:1066120039003B0040004500250026006100600073\r
+:1066220020003700640065006600670044004600F1\r
+:10663200240047003149803F5D8B803FF8BF803F97\r
+:10664200CAE1803F73ED803FCAE1803FF8BF803FDF\r
+:106652005D8B803F3149803F0000803FF16D7F3F7D\r
+:1066620075EA7E3F4C827E3F833F7E3F84287E3F99\r
+:10667200833F7E3F4C827E3F75EA7E3FF16D7F3FD6\r
+:106682000000803F3F4D363975092809F208B908E4\r
+:106692004C0865087E0897080102030405060708EE\r
+:0266A2000900ED\r
+:00000001FF\r
+++ /dev/null
-:020000020000FC\r
-:047000000C948D3E21\r
-:047028000C94B73DD0\r
-:10702F0012010002FF010020EB03F42F0000010208\r
-:10703F00030109021200010100803209040000005F\r
-:10704F00000000000C03410054004D0045004C00AF\r
-:10705F001603410054006D00330032005500340018\r
-:10706F004400460055000C0331002E0030002E0066\r
-:10707F0030000403090416010C0100000C0000018C\r
-:02708F006C7F14\r
-:1070920012BD01BDF89A00B5089501E00895F9996D\r
-:1070A200FECF12BD01BD20BDFA9AF99AF6CFF99929\r
-:1070B200FECF0C944938F80104910895F8013491F7\r
-:1070C20031962491890108950091610000930C0189\r
-:1070D20000E80093610001E00093610005BF02E057\r
-:1070E20005BF0C9486380091D70001600093D70049\r
-:1070F200A89507EF04BF0091600000610093600053\r
-:1071020000E00093600001E008950E94AA3D0E9401\r
-:10711200B53DFDCF0CD00F7708D0006806D00061D6\r
-:1071220004D0016028D0789408950093D80000918B\r
-:10713200D8000895FCDF00621ED04CD009B500FFD4\r
-:10714200FDCFF5DF0F7D17D00091E0000E7F009399\r
-:10715200E0000091E000077F0093E0000091E20070\r
-:1071620001600093E2000091E20008600093E200F7\r
-:1071720078940C94743B0093D800089500910D010B\r
-:10718200002359F40091D90000FF07C0D0DF006846\r
-:10719200F2DF01E000930D01CDDFE0E2F2E00081D9\r
-:1071A200018100FF0DC0008111811E7F11830083C8\r
-:1071B20001E00093EA0000E00093EA0000931E025F\r
-:1071C20000E00093E9000091E80003FF02C00E9482\r
-:1071D200F23B0895A89539D000E40093600000E0E6\r
-:1071E200009381000093800010E0009385000093DB\r
-:1071F200840001E006BB00918100036000938100DE\r
-:107202000091600007FFFCCF00E80093600010933C\r
-:107212008100A89507EF04BF18D010936000209159\r
-:1072220084003091850010938100109380001093A8\r
-:1072320085001093840001E006BB2D3D354010F01F\r
-:1072420002E101C002E009BD089500916000006101\r
-:107252000093600008950E94AD3E239741D100E063\r
-:1072620000930901B5D104811581012B51F437D165\r
-:1072720000910701002309F4B9C000E0009307015F\r
-:10728200B5C058D102FFFDCF37D1068335D1009367\r
-:107292000F0132D1009310012FD1009311012CD193\r
-:1072A2000093120129D10093130102852091130149\r
-:1072B20030911201409111015091100116811A95DD\r
-:1072C20041F01250A9F01A9599F11A9509F473C078\r
-:1072D2008BC010910F01113011F411E001C010E0C8\r
-:1072E200138799D00C3F11F414D17FC077D17DC0A0\r
-:1072F20092D010910F01112329F01A9549F01A9595\r
-:10730200A9F073C010E013870C3F09F06EC0ECCFF8\r
-:1073120056D103C04CD109F468C00D911C9144D1DF\r
-:107322000F3FC1F305E0009309015FC011E0EBCF0D\r
-:10733200D2D029F00250E1F10A9541F056C0FDD0B9\r
-:107342000E94A33F0FEF00930A014FC0552319F08B\r
-:107352005A9579F04AC04ED00DEF04BF74D0EAD0EE\r
-:1073620003FFFDCF67D051D04AD008E00093600000\r
-:10737200FFCF40D068D0DED003FFFDCF5BD03FD03F\r
-:1073820044D00FEF1FE004C009811A810150104060\r
-:1073920009831A8309811A81012BB1F700E800934E\r
-:1073A200610000910C01009361000C940000FFCF7A\r
-:1073B20001E003871AC08FD019F00A9539F015C081\r
-:1073C200535098F4BAD002E000870FC0505339F0FE\r
-:1073D2005A9541F05F52B1F35A95A1F306C002E00B\r
-:1073E2000883F0CF01E0FCCFA8D079D02396E4E067\r
-:1073F2000C94BA3E01E005BF00E005BF089500917C\r
-:10740200D8000F770093D800089509B50D7F09BD04\r
-:1074120000E009BD08955183408333832283109194\r
-:10742200E8001B7F1093E8001091E8001F7710938B\r
-:10743200E80008955DD053D0F8940091E000016017\r
-:107442000093E000089579D04AC0219749D0009175\r
-:107452000601035019F00250B9F00BC03CD021F0E4\r
-:107462000A9559F00A9529F400910A010C3F19F482\r
-:1074720050D02196089567D0FCCF0091010100936E\r
-:10748200F100009100010AC01091100124D019F0FE\r
-:107492000A9549F0EECF135018F400E00093F10082\r
-:1074A2001ED044D0E6CF105339F01A9539F01F524E\r
-:1074B20041F01A9541F0F4CF08E5F0CF00E006D094\r
-:1074C200EDCF02E0FCCF04E001D0E8CF10E020E0F5\r
-:1074D20030E00C94113F00910F010023089521C068\r
-:1074E2000BD008D007D00093040106D00093050109\r
-:1074F20021D00BC000D008830091F10008950091C3\r
-:10750200EB0000620093EB0015D0077F0093E800C8\r
-:107512000895F5DF02E00093080103E000930901FA\r
-:10752200089559D007D000FFFDCF089503D002FF80\r
-:10753200FDCF03C00091E8000895FCDF0B7FE6DF7A\r
-:10754200F9DF0F77E3CF0E94AC3E42D038D006C0BD\r
-:107552002BD00093F1002BD059F43DD0082F092BEA\r
-:10756200A9F0E8DF02FD12C0E5DF00FFFDCF4424F1\r
-:10757200042D4394003289F300910B0100230D91F5\r
-:107582001C9131F311970E945838E3CFD3DF00FFEB\r
-:10759200FDCF21D0CFDF00FFFDCFCCDF02FFFDCF3B\r
-:1075A200CCDFE5E00C94B93E11970C945C380D9158\r
-:1075B2001C910F5F1F4F1C930E93019708958281B8\r
-:1075C200938100811181801B910B0196DF01089547\r
-:1075D200E0E0F1E00895AEDF0E7F98CF0E94A93E71\r
-:1075E200F7DF80819181A081B181AF710481158122\r
-:1075F20000521040048315830AC000910B0100233E\r
-:1076020031F4A301920103E911E00E943B3F47D00C\r
-:10761200B8F1662477242C0111C06EDFF301ED5618\r
-:10762200FE4F008301E0600E00E0701E01960091A3\r
-:10763200F200002311F033D0B8F47FDF30D0E8F24B\r
-:10764200F301B096E238F040C0F674DF02FFFDCFDE\r
-:107652000091F200BDDF24813581201B304024835C\r
-:107662003583E5CF49DFAA95AA23E1F700910B0103\r
-:10767200013099F62091F1008C010E945038D6CF4A\r
-:1076820004811581012B21F055DF02FFFDCF55DF6B\r
-:10769200A2DF50DF00FFFDCFE8E00C94B63EE0E051\r
-:1076A200F1E0028113810817190708952091EB0078\r
-:1076B20021602093EB000093EC000091ED0002703A\r
-:1076C200012B0093ED000091ED0002600093ED00AC\r
-:1076D2001091EE00012F000F00E0001F0895412FCE\r
-:1076E2000093E900089500E009D000FD05C000E024\r
-:1076F200F7DF10E202E0DACF00E00895F1DF009157\r
-:10770200EB0008950F770132A9F5112369F11A955B\r
-:1077120059F01A9561F01A9569F01A95F9F01A95CF\r
-:10772200C1F01A95D9F024C00E942C3920C00E94C1\r
-:10773200263A1DC029D00091090123D001E01FD0B3\r
-:1077420020D0009108011BD00E94923A0E94973AE1\r
-:107752000EC01AD00091080114D007C002E00093B5\r
-:10776200080100E0009309010FD00E94923A03C081\r
-:107772000E94803A02C001E0089500E0089501D01D\r
-:1077820000E00093F10008950091E800077F009364\r
-:10779200E800089508950350F9F4112339F01A9579\r
-:1077A20051F01A9581F01A9599F016C004E016D09E\r
-:1077B20001E810E703C011D003E510E7E7E1F2E0CA\r
-:1077C20000831183D8CF06E109D00FE510E7F6CF89\r
-:1077D20004D005E710E7F2CFD0CF0CE000931A02F5\r
-:1077E200089527D120D100931D02E1D0212F11232A\r
-:1077F20029F12A95E9F02250F1F0225099F02A95C8\r
-:1078020049F0225061F02A9581F02A95E1F02A95FB\r
-:10781200E9F023C0003809F44FC00C94833B0038D0\r
-:10782200E1F7C8C00023C9F71EC00023B1F72DC07D\r
-:10783200033098F744C1033080F70BC1003868F376\r
-:10784200033858F7C9C0013841F77BC1013051F400\r
-:10785200FCD0BFD000FD06C0FCCF0E94833B0023BA\r
-:1078620009F41ED008951091E3001078DCD00F7750\r
-:10787200012B0093E300E9D0ACD000FFFDCF0091D3\r
-:10788200E30000680093E300089591D0123040F4C1\r
-:107892000FD010931E02DAD000911E020C94CB3B43\r
-:1078A2000091EB0001D004C000620093EB00089548\r
-:1078B2000091E800077FC0C0BA93AA93229700E024\r
-:1078C2000093190274D0AFD0202F2A9519F02A956F\r
-:1078D200E9F022C002E100931A020FE210E7E7E1A9\r
-:1078E200F2E0008311839DD008839DD00983E0DFFD\r
-:1078F20000911A0210E02881398102171307A8F4B7\r
-:107902000F7181F401E00093190211C002E10093AA\r
-:107912001A0201E410E7E3CF0E94CC3B002319F7DF\r
-:107922008ED040C01093190202C020931A027ED05A\r
-:10793200A7E1B2E001C08AD000911A02002309F146\r
-:1079420048D004FD1EC045D000FD03C042D004FF54\r
-:10795200FACF10E0012F1395003281F0ED91FC91E6\r
-:107962001197049133D02D913C912F5F3F4F3C935F\r
-:107972002E93FD0103810A95038361F72AD004FF48\r
-:10798200DACF00911902013039F423D004FD04C08A\r
-:1079920020D000FFFDCF5AD01CD004FFFDCF46D02F\r
-:1079A20018D00B7F49D02296A991B99108951091D0\r
-:1079B200F10008957DDF00911E0208D047D009D062\r
-:1079C2000F773AD006D002FFFDCFBFC00093F1007F\r
-:1079D20008950091E800089524D010911D021058D6\r
-:1079E20029F01A9589F01A9591F019C061DF00917A\r
-:1079F2001C02ECDF00E0EADF29D0EBDF02FFFDCF63\r
-:107A020018D0E7DF0F770CC053DF00E0F2CF51D080\r
-:107A12000F7710E0F801E55EFD4F0081EACF0FD04D\r
-:107A22000BC001D000D00091F1000895D2DF0F7E8B\r
-:107A320003C00091E8000B7F0093E80008950091D5\r
-:107A4200EB0032DFC6DF077F089532DFC2DF0E7F31\r
-:107A5200F3CF00911D02002329F00A9509F10A953E\r
-:107A620031F01EC0E0DF0A9561D0D9F41AC061D0AE\r
-:107A7200B9F4D9DF0F7711F416D01BD00093E900C7\r
-:107A82001091EB0010FF0BC00ED010E01093E90034\r
-:107A920021E0F801E55EFD4F20834FD003C042D0C4\r
-:107AA20045D0CFDFC9CF1091EB0010621093EB00ED\r
-:107AB20008951091E800177F1093E800089500914F\r
-:107AC2001D02002311F4AFDF02C0013011F4B7DF51\r
-:107AD200B3CF023031F52DD019F52091F1002F7777\r
-:107AE2002093E90023D000FF19C081F01FD000616C\r
-:107AF200DCDE01E010E0422F0E949F3E0093EA008C\r
-:107B020000E00093EA0012D00860CFDE0BD030E034\r
-:107B1200F901E55EFD4F008310D0DACF03D0D7CF55\r
-:107B2200BFDE089500E00093E90008950091EB00A4\r
-:107B3200089579DF3CDF00230895BADE4ADF0E7F25\r
-:107B4200089583DF46DF02FFFDCF73DF42DF0F7749\r
-:107B520073CF0091D70001600093D7000E948B3849\r
-:107B620000E000931F0208950C94BF388A93FA93A1\r
-:107B7200EA933A922A921A920A927A936A935A93BF\r
-:107B82004A933A932A931A930A938FB70091DA0091\r
-:107B920000FF24C00091D80000FF20C00EEF009328\r
-:107BA200DA000091D90000FF11C001E000930D013D\r
-:107BB200ABD0026096D09AD00860A2D00E949B38C7\r
-:107BC2000091E0000E7F0093E00008C000E0009307\r
-:107BD2000D0100931E0298D0046083D07FD002FF73\r
-:107BE20005C084D002FF02C00BEF75D077D000FF32\r
-:107BF2001BC07CD000FF18C001E000930E016AD0C8\r
-:107C020083D000626ED00EEF6FD0006179D06ED05B\r
-:107C12000F7D76D00091D80000620093D80009B59C\r
-:107C22000D7F09BD00E009BD59D004FF20C05ED020\r
-:107C320004FF1DC009B500FD05C00E94EB3809B55F\r
-:107C420000FFFDCF0091D8000F7D0093D80042D0F5\r
-:107C520000910E01002359F04CD00FEE45D00F7E5B\r
-:107C620052D000643ED042D001604AD042D036D0D9\r
-:107C720005FF0FC03BD005FF0CC000E000930E01D2\r
-:107C820035D00F7E3DD00FED2FD00F7D3CD0006858\r
-:107C920028D024D003FF0DC029D003FF0AC000E082\r
-:107CA20000931F0207EF17D00E94743B2DD0116082\r
-:107CB20018D08FBF09911991299139914991599100\r
-:107CC200699179910990199029903990E991F991E6\r
-:107CD200899118950FEE0093E10008950091E1005B\r
-:107CE20008951183008308950093E1000091E2005A\r
-:107CF20008950091E200006203D00091E200086062\r
-:107D02000093E2000895FCDFE0E2F2E000811181DD\r
-:107D1200089500008895FECF01E60DBF02E00EBF78\r
-:107D2200C2EED2E00E947438002311F00E94D33ECA\r
-:107D32000E9465380E948A3E0C948A3E4A951AF047\r
-:107D4200000F111FFBCF0895BA92AA929A928A92BB\r
-:107D52007A926A925A924A92BA93AA939A938A937D\r
-:107D62000895BB84AA84998488847F806E805D8014\r
-:107D72004C80BB81AA8199818881F0E00FB6F8948A\r
-:107D8200CE0FDF1F0FBE089520E006D0E9F7089559\r
-:107D9200259102D0E9F708952D9301501040202F2C\r
-:107DA200212B089585E890E7FC0105911491FC01CF\r
-:107DB2003296A591B491FC01349625913491422FCB\r
-:107DC200432B19F0F901E4DF01C0DEDF069610E76C\r
-:107DD2008139910748F308952F930CD02F9101D048\r
-:107DE20008953CD0F12FE02F45E047BFE89536D00B\r
-:107DF20012D0089533D0F12FE02F43E047BFE8952A\r
-:107E02002DD008952BD0F12FE02F43E047BFE89506\r
-:107E120025D001D0089522D041E147BFE8951EC088\r
-:107E22001DD0F12FE02F41E247BFC895002D16C0AB\r
-:107E320015D0F12FE02F49E047BFC895002D0EC0A5\r
-:107E4200F32FE22F012E102E41E047BFE89506C026\r
-:107E520005D0002E29E027BFE89500C0022E27B7E3\r
-:107E620020FDFCCF202D0895022E27B726FDFCCF42\r
-:107E7200202D08950E94A53E22974801C901DA01EA\r
-:107E820010C05BD001E0A00E00E0B01E00E4A0161E\r
-:107E920000E0B00608F440C0830120E030E00E9418\r
-:107EA200F23E0A2F0B2B09F440C0082F0F7710E087\r
-:107EB2002C01401A510A320100E4A02E03C00A2FFD\r
-:107EC2000B2BE1F04816590680F0F40101914F01A5\r
-:107ED2000983119729F001914F010883119711C06D\r
-:107EE200F2013196049108830CC0F20104910983D6\r
-:107EF2003196E817F907A1F7F401EDCF1BD00883FB\r
-:107F020019839201088119810E94213F16D0AA94F7\r
-:107F1200B1F62301AA24BB240DD0312F0F3F3F4FCE\r
-:107F220009F4AFCF83011DD0B7CF01E02296ECE078\r
-:107F32000C94B23E82010C945F3802E0400E00E0E5\r
-:107F4200501E08959A938A9380E090E08C0109D0A4\r
-:107F520080589F4F8F3F0FE69007C0F38991999108\r
-:107F6200089520E030E00C94FB3E00000000000089\r
-:067F720000000000FC000D\r
-:107FE4000C94ED3E0C94113F0C94193F0C94213FDA\r
-:0C7FF4000C94F23E0C94033F0C94293FC7\r
-:040000030000700089\r
-:100000000C949D020C94E1020C94E1020C94E10228\r
-:100010000C94E1020C94E1020C94E1020C94E102D4\r
-:100020000C94E1020C94E1020C941C120C94EE125C\r
-:100030000C948D240C94E1020C94E1020C94E102E6\r
-:100040000C94E1020C94E1020C94E1020C94E102A4\r
-:100050000C94E1020C94FA240C94E1020C94E10259\r
-:100060000C94E1020C94E1020C94E1020C94E10284\r
-:100070000C94E1020C94E1020C94E1020C94E10274\r
-:100080000C94860A0C94E1020C94E1020C94E102B7\r
-:100090000C94E1020C94E1020C94E1020C94E10254\r
-:1000A0000C94E1020C94E1020C94E10207634236E5\r
-:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9\r
-:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD\r
-:1000D0000000803F08000000BE922449123EABAAF7\r
-:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52\r
-:1000F000AA3E00000000BF000000803F000000009A\r
-:1001000000084178D3BB4387D1133D190E3CC3BDD2\r
-:100110004282AD2B3E68EC8276BED98FE1A93E4C7F\r
-:1001200080EFFFBE01C4FF7F3F0000000000000021\r
-:10013000F1A4F1A3018C028C048C2B0014001A0092\r
-:100140000800150017001C0018000C001200130016\r
-:100150002A00290004001600070009000A000B000D\r
-:100160000D000E000F0033003400E1001D001B00E5\r
-:100170000600190005001100100036003700380095\r
-:1001800028000030E000E200E30002202C002C00F8\r
-:1001900001205000510052004F002B0014001A00A3\r
-:1001A000090013000A000D000F0018001C003300A6\r
-:1001B0002A002900040015001600170007000B0094\r
-:1001C000110008000C0012003400E1001D001B00AB\r
-:1001D0000600190005000E00100036003700380038\r
-:1001E00028000030E000E200E30002202C002C0098\r
-:1001F00001205000510052004F002B003400360007\r
-:10020000370013001C0009000A00060015000F004B\r
-:100210002A00290004001200080018000C00070042\r
-:100220000B001700110016003800E1003300140025\r
-:100230000D000E001B00050010001A0019001D0023\r
-:1002400028000030E000E200E30002202C002C0037\r
-:1002500001205000510052004F0035021E021F02C3\r
-:100260002002210222022302240225022602270262\r
-:100270002A0001003A003B003C003D003E003F00E8\r
-:100280002D022E022F0230023102010040004100F7\r
-:100290004200430044004500032004200520005094\r
-:1002A0000100010001000100010002200100010025\r
-:1002B0000100AB00AA00A900AE0035001E001F001F\r
-:1002C0002000210022002300240025002600270012\r
-:1002D0002A0001003A003B003C003D003E003F0088\r
-:1002E0002D002E002F0030003100010040004100A1\r
-:1002F0004200430044004500032004200520005034\r
-:1003000001000100010001000100010001000100E5\r
-:100310000120AB00AA00A900AE0028035400680029\r
-:100320006500200050006C0061006E0063006B00EF\r
-:1003300020004B006500790062006F0061007200D0\r
-:10034000640000002C034F007200740068006F000E\r
-:100350006C0069006E0065006100720020004B00B7\r
-:100360006500790062006F00610072006400730034\r
-:100370000000040309040902D000060100A03209AC\r
-:100380000400000103010100092111010001223FC5\r
-:10039000000705810308000A0904010001030102A6\r
-:1003A00000092111010001224D0007058203080008\r
-:1003B0000A090402000103000000092111010001E3\r
-:1003C0002236000705830308000A0904030002031C\r
-:1003D000000000092111010001222000070584030B\r
-:1003E00020000107050403200001090404000001A6\r
-:1003F00001000009240100010900010509040500AC\r
-:10040000020103000007240100014100062402014B\r
-:100410000100062402020200092403010301020173\r
-:10042000000924030204010101000905060240003D\r
-:1004300005000005250101010905850240000500B0\r
-:100440000005250101031201100100000008EDFE66\r
-:1004500060600100010200010631FF0974A1010979\r
-:1004600075150025FF952075088102097615002570\r
-:10047000FF952075089102C005010980A101850240\r
-:1004800016010026B7001A01002AB7007510950161\r
-:100490008100C0050C0901A1018503160100269CFD\r
-:1004A000021A01002A9C02751095018100C0050105\r
-:1004B0000902A1010901A100050919012905150079\r
-:1004C00025019505750181029501750381010501DD\r
-:1004D000093009311581257F950275088106093893\r
-:1004E0001581257F950175088106050C0A380215CE\r
-:1004F00081257F950175088106C0C005010906A107\r
-:1005000001050719E029E715002501950875018106\r
-:1005100002950175088101050819012905950575E0\r
-:100520000191029501750391010507190029FF1535\r
-:100530000025FF950675088100C011241FBECFEF6E\r
-:10054000DAE0DEBFCDBF04B603FE24C0809178039D\r
-:1005500090917903A0917A03B0917B038730904BFF\r
-:10056000A740B04BB9F4109278031092790310921F\r
-:100570007A0310927B0314BE84B7877F84BF88E11F\r
-:100580000FB6F89480936000109260000FBEE0E018\r
-:10059000F8E3099511E0A0E0B1E0E2EAFFE502C06E\r
-:1005A00005900D92A63BB107D9F713E0A6EBB1E099\r
-:1005B00001C01D92A837B107E1F70E94F90E0C9413\r
-:1005C000CF2F0C9400000895089561110DC0FC0117\r
-:1005D0008281882331F085EE0E949D190E94B62BFE\r
-:1005E00003C085EE0E94651A80E090E008958B3B81\r
-:1005F000910568F4883A910530F5853A9105C0F483\r
-:100600008430910598F4019709F06FC071C0803E65\r
-:10061000910508F46AC0883E910540F09C01205F76\r
-:1006200031092031310508F060C05CC09C01A1C0D7\r
-:10063000853A910509F45FC0863A910509F45EC0D8\r
-:1006400023E830E496C0883A910509F45AC0893A03\r
-:10065000910509F459C08A3A910509F458C08B3ABA\r
-:10066000910509F457C08C3A910509F456C08D3AAA\r
-:10067000910509F455C0803B910509F454C08E3AA8\r
-:10068000910509F453C08F3A910509F452C0813B9A\r
-:10069000910509F451C0823B910509F450C0833B98\r
-:1006A000910509F44FC0843B910509F44EC0853B88\r
-:1006B000910509F44DC0863B910509F44CC0873B78\r
-:1006C000910509F44BC0883B910509F44AC0893B68\r
-:1006D000910509F449C08A3B910509F048C02AE216\r
-:1006E00036E447C09C01306544C020E030E041C0A2\r
-:1006F00021E030E03EC021E830E43BC022E830E4B5\r
-:1007000038C022EE34E435C029EE34E432C02AEE9B\r
-:1007100034E42FC025EB34E42CC026EB34E429C0AC\r
-:1007200027EB34E426C02CEC34E423C02DEC34E475\r
-:1007300020C023E835E41DC02AE835E41AC022E9C8\r
-:1007400035E417C024E935E414C021E236E411C0D1\r
-:1007500023E236E40EC024E236E40BC025E236E4A0\r
-:1007600008C026E236E405C027E236E402C020E0F5\r
-:1007700034E4C90108959CE0799FF001112490E3CD\r
-:10078000899FE00DF11D1124E60FF11DEE0FFF1FF3\r
-:10079000E65CFE4F25913491C9010895880F991F99\r
-:1007A00082559040FC0125913491C9010895880F2C\r
-:1007B000991F825D9E4FFC0125913491C9010895D6\r
-:1007C0000E94BB039C013A9521153F4108F4DFC00C\r
-:1007D0009C0130522115304120F49F700E94D703B4\r
-:1007E00008959C0130532115304118F49927906CDD\r
-:1007F00008959C0130542031310520F48F709927E1\r
-:10080000946D0895803120E4920719F480E091ED11\r
-:100810000895813140E4940719F480E090ED089543\r
-:10082000823120E4920719F480E092ED089583313B\r
-:1008300040E4940719F480E093ED0895811520E5D4\r
-:10084000920711F40C941F25813040E5940731F490\r
-:100850008091680281608093680208959C013056FF\r
-:100860002115304108F402C097FF02C0906F08952F\r
-:10087000803E9105E0F4803C910568F58133910557\r
-:1008800009F474C048F48932910509F46AC08A32C7\r
-:10089000910509F07AC074C089339105F9F0823866\r
-:1008A0009105E1F08533910509F06FC050C0833E9A\r
-:1008B0009105A9F140F4803E9105C9F0823E910571\r
-:1008C00009F063C01BC0863E910571F1873E91051A\r
-:1008D00009F05BC037C00E94CE03089520917B02CF\r
-:1008E00020FD02C021FF51C080EE90E04EC08091FB\r
-:1008F0007B0280FFF9CF89E390E047C080917B02C3\r
-:1009000082FF0AC080917B0284FF03C080E090E0F8\r
-:100910003CC083EE90E039C082EE90E036C080911A\r
-:100920007B0282FFEFCFF8CF80917B0283FF07C06D\r
-:1009300080917B0284FDEACF87EE90E026C086EEB0\r
-:1009400090E023C080917B0283FFF2CFF8CF8091AB\r
-:100950007B0285FF03C089E290E017C085E390E049\r
-:1009600014C080917B0285FDF9CFF5CF80917B0289\r
-:1009700086FF03C08AE290E008C081E390E005C0F2\r
-:1009800080917B0286FDF9CFF5CF0E94F702089592\r
-:100990005F926F927F928F929F92AF92BF92CF920F\r
-:1009A000DF92EF92FF920F931F93CF93DF93CDB718\r
-:1009B000DEB728970FB6F894DEBF0FBECDBF9E01FD\r
-:1009C0002F5F3F4F4E0189E0880E911C60E070E080\r
-:1009D00000E010E0E12CF12CC12CD12CA12CB12C89\r
-:1009E00088E0782E622E532E41E050E0E3E2F1E001\r
-:1009F000A62DB52D872D01900D928A95E1F7F9016D\r
-:100A0000819191919F01FC01E07FFF27E032F10588\r
-:100A100059F48F709927FA0102C0EE0FFF1F8A95D3\r
-:100A2000E2F7AE2ABF2A37C0E033F10559F48F70E0\r
-:100A30009927FA0102C0EE0FFF1F8A95E2F7CE2A2E\r
-:100A4000DF2A29C0E034F10559F48F709927FA01A3\r
-:100A500002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0A5\r
-:100A6000E035F10559F48F709927FA0102C0EE0FB5\r
-:100A7000FF1F8A95E2F70E2B1F2B0DC0E036F10504\r
-:100A800051F48F709927FA0102C0EE0FFF1F8A956B\r
-:100A9000E2F76E2B7F2B2815390509F0A7CF94B10B\r
-:100AA0008A2D8095892384B985B18A2985B997B122\r
-:100AB0008C2D8095892387B988B18C2988B99AB102\r
-:100AC0008E2D809589238AB98BB18E298BB99DB1E2\r
-:100AD000802F809589238DB98EB1802B8EB990B3EC\r
-:100AE000862F8095892380BB81B3862B81BB289676\r
-:100AF0000FB6F894DEBF0FBECDBFDF91CF911F912F\r
-:100B00000F91FF90EF90DF90CF90BF90AF909F90AC\r
-:100B10008F907F906F905F9008955F926F927F9219\r
-:100B20008F929F92AF92BF92CF92DF92EF92FF92FD\r
-:100B30000F931F93CF93DF93CDB7DEB768970FB6B0\r
-:100B4000F894DEBF0FBECDBF85B7806885BF85B77F\r
-:100B5000806885BF0E94CF076E9A769A0E94C8046B\r
-:100B60009E012F5F3F4F4E0189E1880E911C60E08E\r
-:100B700070E000E010E0E12CF12CC12CD12CA12C74\r
-:100B8000B12C98E1792E622E532E41E050E0EBE239\r
-:100B9000F1E0A62DB52D872D01900D928A95E1F7F4\r
-:100BA000F901819191919F01FC01E07FFF27E032E3\r
-:100BB000F10559F48F709927FA0102C0EE0FFF1F5B\r
-:100BC0008A95E2F7AE2ABF2A37C0E033F10559F41F\r
-:100BD0008F709927FA0102C0EE0FFF1F8A95E2F786\r
-:100BE000CE2ADF2A29C0E034F10559F48F70992705\r
-:100BF000FA0102C0EE0FFF1F8A95E2F7EE2AFF2AE4\r
-:100C00001BC0E035F10559F48F709927FA0102C035\r
-:100C1000EE0FFF1F8A95E2F70E2B1F2B0DC0E0365B\r
-:100C2000F10551F48F709927FA0102C0EE0FFF1FF2\r
-:100C30008A95E2F76E2B7F2B2815390509F0A7CF8F\r
-:100C400094B18A2D8095892384B985B18A2985B983\r
-:100C500097B18C2D8095892387B988B18C2988B963\r
-:100C60009AB18E2D809589238AB98BB18E298BB943\r
-:100C70009DB1802F809589238DB98EB1802B8EB93F\r
-:100C800090B3862F8095892380BB81B3862B81BB4F\r
-:100C90001092B7011092B6011092BF011092BE01DE\r
-:100CA0001092B9011092B8011092C1011092C001C6\r
-:100CB0001092BB011092BA011092C3011092C201AE\r
-:100CC0001092BD011092BC011092C5011092C40196\r
-:100CD00068960FB6F894DEBF0FBECDBFDF91CF91FF\r
-:100CE0001F910F91FF90EF90DF90CF90BF90AF904A\r
-:100CF0009F908F907F906F905F9008955F926F921A\r
-:100D00007F928F929F92AF92BF92CF92DF92EF929B\r
-:100D1000FF920F931F93CF93DF93CDB7DEB7A097CA\r
-:100D20000FB6F894DEBF0FBECDBF7E0149E1E40EE1\r
-:100D3000F11C2EEBC22E21E0D22E5E0151E2A50E57\r
-:100D4000B11C38E0532E470101E010E048E1642E69\r
-:100D500055E0752EE3E2F1E0D401852D01900D926E\r
-:100D60008A95E1F7F701819191917F019C01207FA4\r
-:100D700033272032310589F424B18F709927A801D7\r
-:100D800002C0440F551F8A95E2F7CA01242B24B9EB\r
-:100D900095B18095892385B94FC02033310589F4F9\r
-:100DA00027B18F709927F80102C0EE0FFF1F8A95B7\r
-:100DB000E2F7CF012E2B27B998B18095892388B906\r
-:100DC0003BC02034310589F42AB18F709927A801DE\r
-:100DD00002C0440F551F8A95E2F7CA01242B2AB995\r
-:100DE0009BB1809589238BB927C02035310589F4C3\r
-:100DF0002DB18F709927F80102C0EE0FFF1F8A9561\r
-:100E0000E2F7CF012E2B2DB99EB1809589238EB9A3\r
-:100E100013C02036310581F420B38F709927A801C3\r
-:100E200002C0440F551F8A95E2F7CA01242B20BB4C\r
-:100E300091B38095892381BB50EA5A95F1F7BE01A1\r
-:100E40006F5F7F4F80E090E020E030E0EBE2F1E088\r
-:100E5000DE011196462D01900D924A95E1F7FB01B6\r
-:100E600041915191BF01FA01E07FFF27E032F10586\r
-:100E700011F4E3B113C0E033F10511F4E6B10EC093\r
-:100E8000E034F10511F4E9B109C0E035F10511F4E0\r
-:100E9000ECB104C0E036F105B9F4EFB1F0E04F7009\r
-:100EA000552702C0F595E7954A95E2F7E0FD08C0A1\r
-:100EB000A801022E02C0440F551F0A94E2F702C097\r
-:100EC00040E050E0842B952B2F5F3F4F2C303105B5\r
-:100ED00009F0BCCFF601208131812817390721F0B4\r
-:100EE00091838083709200010E94C804F2E0CF0ECB\r
-:100EF000D11CEA14FB0409F02DCF80910001882356\r
-:100F000061F1815080930001811121C08091BE0167\r
-:100F10009091BF019093B7018093B6018091C00179\r
-:100F20009091C1019093B9018093B8018091C20161\r
-:100F30009091C3019093BB018093BA018091C40149\r
-:100F40009091C5019093BD018093BC0106C08FE9CB\r
-:100F50009FE00197F1F700C0000081E0A0960FB676\r
-:100F6000F894DEBF0FBECDBFDF91CF911F910F91DF\r
-:100F7000FF90EF90DF90CF90BF90AF909F908F90B9\r
-:100F80007F906F905F900895E82FF0E0EE0FFF1FC5\r
-:100F9000EA54FE4F80819181089508950895279A1B\r
-:100FA0002F988FEF9FEF90938700809386008AE0C1\r
-:100FB0008093800089E1809381000C945F2B8111E4\r
-:100FC0000BC080918000877F8093800010928D00FD\r
-:100FD00010928C002F9808952F98833041F48091BF\r
-:100FE00080008860809380008FEF9FEF12C0909107\r
-:100FF000800098609093800023E030E0281B310946\r
-:10100000220F331F8FEF9FEF02C0969587952A9589\r
-:10101000E2F790938D0080938C0008950F931F93B7\r
-:10102000CF93DF93CDB7DEB7CC58D1090FB6F89484\r
-:10103000DEBF0FBECDBF8C01862F642F882379F0D1\r
-:10104000F80192812FE7482F992329F08DE792E04C\r
-:101050000E94F81404C08DE792E00E940815F80180\r
-:1010600080818B3061F49181933009F068C0828176\r
-:10107000882309F4CDC0809103018F5F0EC08A30B0\r
-:10108000E1F5F8019181933009F059C082818823FC\r
-:1010900009F4BEC08091030181508093030120E0D8\r
-:1010A0004BE760E08DE792E00E94E81420E04BE718\r
-:1010B00061E08DE792E00E94E81420E04BE762E0F7\r
-:1010C0008DE792E00E94E81420E04BE763E08DE7B3\r
-:1010D00092E00E94E81420E04BE764E08DE792E0A4\r
-:1010E000C457DF4F0FB6F894DEBF0FBECDBFDF9100\r
-:1010F000CF911F910F910C94E814893069F4F80195\r
-:1011000091819330E1F492819923C9F0809101019A\r
-:101110009091020101960EC0883089F4F801918106\r
-:10112000933069F49281992351F08091010190915B\r
-:10113000020101979093020180930101B0CFF80161\r
-:10114000928140910301992391F196E4E3E4F1E067\r
-:10115000DE01A95BBF4F01900D929A95E1F7405DCA\r
-:10116000F8019181FCE09F9F40191124E091010159\r
-:10117000F0910201E80FF11DEE0FFF1F87E490E0F0\r
-:101180008C0F9D1FE80FF91F8081480F2FE760E04B\r
-:101190008DE792E0C457DF4F0FB6F894DEBF0FBE65\r
-:1011A000CDBFDF91CF911F910F910C94F81496E46D\r
-:1011B000E3E4F1E0DE01119601900D929A95E1F7DA\r
-:1011C000405DF8019181FCE09F9F40191124E0915E\r
-:1011D0000101F0910201E80FF11DEE0FFF1F81E008\r
-:1011E00090E08C0F9D1FE80FF91F8081480F2FE7BB\r
-:1011F00060E08DE792E0C457DF4F0FB6F894DEBF92\r
-:101200000FBECDBFDF91CF911F910F910C940815A8\r
-:10121000C457DF4F0FB6F894DEBF0FBECDBFDF91CE\r
-:10122000CF911F910F910895CF93DF93EA019B0116\r
-:10123000AC0160E074E284E79BE40E945F2C0E94B2\r
-:10124000C72C709397006093960020E130E02C1B30\r
-:101250003D0B02C0759567952A95E2F7709399004A\r
-:1012600060939800DF91CF9108951092020210923E\r
-:10127000010210929000109291001092FD011092C4\r
-:10128000FE011092FF01109200021092FC011092D8\r
-:10129000FB01E9EDF1E0A9ECB1E01192119211929C\r
-:1012A00011921D921D9281E0E93FF807B1F7089570\r
-:1012B000AF92BF92CF92DF92EF92FF920F931F9364\r
-:1012C000CF93DF936B017C0109EF11E047EDA42E72\r
-:1012D00041E0B42EC7E0D0E0A7019601F801929159\r
-:1012E0008291729162918F010E945B2C882349F058\r
-:1012F0002197F2E0AF1AB108CF3F8FEFD80761F71F\r
-:1013000034C0F8011082118212821382F501118219\r
-:101310001082FE01EE0FFF1FEE0FFF1FE752FE4F80\r
-:10132000DE01AA0FBB1FA753BE4FCE011AC0019604\r
-:1013300044815581668177814083518362837383C1\r
-:10134000148215821682178212962D913C91139762\r
-:1013500011963C932E9313961C921E9212973496DC\r
-:1013600012968730910519F7C3CF809101029091B1\r
-:101370000202019797FD05C090930202809301023B\r
-:1013800004C01092020210920102E0910102F09159\r
-:101390000202309789F410929000109291001092FE\r
-:1013A000FD011092FE011092FF01109200021092B6\r
-:1013B000FC011092FB019EC03197DF01AA0FBB1FF9\r
-:1013C000AA0FBB1FA752BE4FCD90DD90ED90FC90B1\r
-:1013D000EE0FFF1FE753FE4FC081D181A090FD01AA\r
-:1013E000B090FE010091FF0110910002A70196014B\r
-:1013F0006A2D7B2D802F912F0E945B2C87FF2FC0A1\r
-:1014000081E08093C801AE016A2D7B2D802F912F42\r
-:101410000E9414092091FD013091FE014091FF01CD\r
-:1014200050910002C701B6010E94F62B20E030E087\r
-:101430004AEF53E40E945F2C9B01AC016A2D7B2D87\r
-:10144000802F912F0E94F72B5B018C01A701960141\r
-:101450007B2D912F0E945B2C1816ACF638C0A7018B\r
-:1014600096016A2D7B2D802F912F0E94AA2D181690\r
-:1014700084F581E08093C801AE016A2D7B2D802F19\r
-:10148000912F0E941409A70196016091FD017091AE\r
-:10149000FE018091FF01909100020E94F62B20E056\r
-:1014A00030E04AEF53E40E945F2C9B01AC016A2DAF\r
-:1014B0007B2D802F912F0E94F62B5B018C01A701C1\r
-:1014C00096017B2D912F0E94AA2D87FFD5CF1092D8\r
-:1014D000C801AE01C701B6010E941409C092FD0106\r
-:1014E000D092FE01E092FF01F0920002D093FC0145\r
-:1014F000C093FB01DF91CF911F910F91FF90EF906F\r
-:10150000DF90CF90BF90AF90089508951F920F92F3\r
-:101510000FB60F9211242F933F934F935F936F93C6\r
-:101520007F938F939F93AF93BF93EF93FF9380919C\r
-:10153000960090919700892B09F455C08091C801BD\r
-:10154000811151C08091F9019091FA01813091058A\r
-:1015500071F082309105C1F0892BC1F52091FD0118\r
-:101560003091FE014091FF01509100021DC0609139\r
-:10157000FD017091FE018091FF01909100029B019D\r
-:10158000AC010E94F72B0EC020E030E040E450E4B4\r
-:101590006091FD017091FE018091FF019091000228\r
-:1015A0000E94AE2D9B01AC0160E074E284E79BE4F5\r
-:1015B0000E945F2C0E94C72C709397006093960046\r
-:1015C0007595679570939900609398008091F901E3\r
-:1015D0009091FA01019663E070E00E948A2F909347\r
-:1015E000FA018093F901FF91EF91BF91AF919F9123\r
-:1015F0008F917F916F915F914F913F912F910F90BC\r
-:101600000FBE0F901F901895AF92BF92CF92DF92AE\r
-:10161000EF92FF920F931F93CF93DF936B017C01A7\r
-:10162000EA0120E030E0A9010E94AA2D18160CF072\r
-:10163000B4C03E9A82E8809390008AE18093910042\r
-:10164000A090FD01B090FE010091FF0110910002F9\r
-:1016500020E030E0A9016A2D7B2D802F912F0E9480\r
-:101660005B2C81112DC0AE01C701B6010E94140987\r
-:10167000C092FD01D092FE01E092FF01F0920002C3\r
-:10168000D093FC01C093FB01809101029091020272\r
-:10169000FC01EE0FFF1FEE0FFF1FE752FE4FC0824F\r
-:1016A000D182E282F382FC01EE0FFF1FE753FE4F6F\r
-:1016B000D183C083019690930202809301026DC092\r
-:1016C000A70196016A2D7B2D802F912F0E945B2C04\r
-:1016D00087FF2CC0AE016A2D7B2D802F912F0E9499\r
-:1016E00014092091FD013091FE014091FF015091BC\r
-:1016F0000002C701B6010E94F62B20E030E04AEF5D\r
-:1017000053E40E945F2C9B01AC016A2D7B2D802F3E\r
-:10171000912F0E94F72B5B018C01A70196017B2D75\r
-:10172000912F0E945B2C1816ACF69DCFA701960155\r
-:101730006A2D7B2D802F912F0E94AA2D18160CF058\r
-:1017400092CFAE016A2D7B2D802F912F0E9414091C\r
-:10175000A70196016091FD017091FE018091FF014A\r
-:10176000909100020E94F62B20E030E04AEF53E413\r
-:101770000E945F2C9B01AC016A2D7B2D802F912F45\r
-:101780000E94F62B5B018C01A70196017B2D912F06\r
-:101790000E94AA2D87FFD5CF66CFDF91CF911F91F1\r
-:1017A0000F91FF90EF90DF90CF90BF90AF90089592\r
-:1017B00080910C020895CF93DF9300D01F92CDB794\r
-:1017C000DEB720916E03243021F523E029839B832B\r
-:1017D0008A832093E9008FEF06C095ED9A95F1F783\r
-:1017E0000000882329F09091E800815095FFF5CF03\r
-:1017F0008091E80085FF0DC040E050E063E070E0BC\r
-:10180000CE0101960E94BA0F8091E8008E778093F6\r
-:10181000E8000F900F900F90DF91CF910895CF9334\r
-:10182000DF9300D01F92CDB7DEB720916E03243036\r
-:1018300029F522E029839B838A8383E08093E90052\r
-:101840008FEF06C095ED9A95F1F70000882329F0F7\r
-:101850009091E800815095FFF5CF8091E80085FFD9\r
-:101860000DC040E050E063E070E0CE0101960E94C0\r
-:10187000BA0F8091E8008E778093E8000F900F9068\r
-:101880000F90DF91CF91089520916E032430F9F4E9\r
-:1018900022E02093E9002FEF06C035ED3A95F1F7ED\r
-:1018A0000000222329F03091E800215035FFF5CFC8\r
-:1018B0002091E80025FF0BC040E050E065E070E0BB\r
-:1018C0000E94BA0F8091E8008E778093E800089517\r
-:1018D000CF93DF93EC0180916E03843041F581E07A\r
-:1018E0008093E9008FEF06C095ED9A95F1F700001F\r
-:1018F000882329F09091E800815095FFF5CF8091E1\r
-:10190000E80085FF14C040E050E068E070E0CE01E0\r
-:101910000E94BA0F8091E8008E778093E80088E0FB\r
-:10192000FE01A4E0B2E001900D928A95E1F7DF910B\r
-:10193000CF910895BF92CF92DF92EF92FF920F93D3\r
-:101940001F93CF93DF937C01B62EE90100E010E0F6\r
-:10195000C42ED12C0BC04991202F2B0D2F774F7700\r
-:101960006FE0C7010E94E8140F5F1F4F0C151D05A3\r
-:1019700094F3DF91CF911F910F91FF90EF90DF9043\r
-:10198000CF90BF90089570E06F5F7F4F6F707727A3\r
-:101990000C94E8140F931F93CF93C42F63307105F9\r
-:1019A00009F04AC0842F807F803849F1803909F0DE\r
-:1019B00043C0622F6F7770E080E090E00E94FA2CC5\r
-:1019C00020E030E040E451E40E945F2C9B01AC0138\r
-:1019D00060E070E080E090E40E94112E0F7710E04C\r
-:1019E00023E0159507952A95E1F72DEC3CEC42E0B4\r
-:1019F00053E40E94AE2DA8010E94040B1DC0622F6B\r
-:101A00006F7770E080E090E00E94FA2C20E030E0F8\r
-:101A100040E451E40E945F2C9B01AC0160E070E067\r
-:101A200080E090E40E94112E2DEC3CEC42E053E467\r
-:101A30000E94AE2D0E945809CC3F29F4CF911F91EE\r
-:101A40000F910C943509CF911F910F9108950F9329\r
-:101A50001F93CF93DF93CDB7DEB727970FB6F894D8\r
-:101A6000DEBF0FBECDBF8C0114C08A810E94C2149C\r
-:101A70009A819D839B819E839C819F8381111EC03F\r
-:101A800089818430B1F08730A1F08630A1F08530B3\r
-:101A9000A1F0BE016F5F7F4F84E091E00E942F189C\r
-:101AA0008111E3CF84E091E00E9420180E949B14F2\r
-:101AB0000DC083E003C082E001C081E0AE014B5F56\r
-:101AC0005F4F682FC8010E945515E3CF27960FB6C8\r
-:101AD000F894DEBF0FBECDBFDF91CF911F910F9164\r
-:101AE0000895EF92FF920F93CF93DF9300D000D031\r
-:101AF00000D0CDB7DEB77B014A832B830C83842FC4\r
-:101B00002E834D830E94C2142E814D8181111BC0F2\r
-:101B100082E0E816F10479F083E0E816F10421F0A0\r
-:101B2000EA94EF2821F50BC0073F11F487E001C0CC\r
-:101B300084E089830BC0273FD9F786E0FACF473F7F\r
-:101B4000B9F785E0F6CF42954F704983BE016F5FCC\r
-:101B50007F4F84E091E00E94E51784E091E00E94CD\r
-:101B6000031884E091E00E9420180E949B1426969E\r
-:101B70000FB6F894DEBF0FBECDBFDF91CF910F91AE\r
-:101B8000FF90EF90089580916D03811109C00E942C\r
-:101B9000A1110E94FE118091E20084608093E20016\r
-:101BA000089510926D03089508950C94E4020C9426\r
-:101BB000892480916E03843049F58091E9008F700B\r
-:101BC0009091EC0090FF02C090E801C090E0982B4B\r
-:101BD00084E08093E9008091EB0080FF14C0809145\r
-:101BE000EE0087FD03C00FC01092F1008091E80065\r
-:101BF00085FDFACF8091E80080FF05C08091E80064\r
-:101C00008E778093E8009F709093E900089542E0FA\r
-:101C100061EC81E00E94171142E061EC82E00E94D9\r
-:101C2000171142E061EC83E00E94171146E261EC7B\r
-:101C300084E00E94171142E361E885E00E941711D9\r
-:101C400042E360E886E00C941711809170038330C2\r
-:101C500009F454C030F4813071F0823009F0AAC028\r
-:101C600091C08A3009F47EC08B3009F45FC089309E\r
-:101C700009F0A0C020C080916F03813A09F09AC09A\r
-:101C80008091E800877F8093E800809173039091B2\r
-:101C90007403892B21F060E080E090E003C068E0ED\r
-:101CA00084E092E070E00E9458108091E8008B7709\r
-:101CB0008093E800089580916F03813209F07AC023\r
-:101CC0008091730390917403892B09F073C0809104\r
-:101CD000E800877F8093E80005C080916E03882329\r
-:101CE00009F468C08091E80082FFF7CF8091F1008D\r
-:101CF00080930C028091E8008B7758C080916F032D\r
-:101D0000813A09F057C08091730390917403892B35\r
-:101D100009F050C08091E800877F8093E8008091AF\r
-:101D2000E80080FFFCCF80911A013BC080916F03D7\r
-:101D3000813209F03FC08091730390917403892B25\r
-:101D4000C9F58091E800877F8093E8000E944E11DA\r
-:101D50009091710381E0911101C080E080931A019C\r
-:101D60000C948C1E80916F03813221F58091E800E4\r
-:101D7000877F8093E8000E944E11809172038093C8\r
-:101D80000302089580916F03813AA1F48091E800E5\r
-:101D9000877F8093E8008091E80080FFFCCF8091EE\r
-:101DA00003028093F1008091E8008E778093E80031\r
-:101DB0000C944E11089584B7877F84BF88E10FB6D5\r
-:101DC000F89480936000109260000FBE90E080E86D\r
-:101DD0000FB6F89480936100909361000FBE0E944B\r
-:101DE000A1110E94FE11E2EEF0E080818460808308\r
-:101DF00008958DE792E00E94241561E77DE08DE76C\r
-:101E000092E00E947A1567E27DE08DE792E00E9401\r
-:101E10007E150E94DB0E78946AEC7CE08DE792E000\r
-:101E20000E94201563EC7CE08DE792E00E9418157B\r
-:101E30006AE97CE08DE792E00E941C150E94850A09\r
-:101E40000E949B140E94AC1880E191E00E945418FB\r
-:101E50000BC00E944E2480916C03882329F00E94BD\r
-:101E6000742481110E94A40F80916E03853089F340\r
-:101E70008DE792E00E942D170E94B618F5CF292F0A\r
-:101E8000332723303105B1F04CF42130310509F40A\r
-:101E90004DC02230310509F04EC007C02132310556\r
-:101EA00041F12232310591F146C0E0EDF0E086E7E4\r
-:101EB00093E045C099278130910569F08230910502\r
-:101EC00089F0892B09F037C0E2E7F3E0E491F0E014\r
-:101ED00082E793E034C0E4E4F3E0E491F0E084E4EA\r
-:101EE00093E02DC0EAE1F3E0E491F0E08AE193E0D1\r
-:101EF00026C0643000F5E62FF0E0EE0FFF1FE75735\r
-:101F0000FE4F80819181E9E0F0E019C0643098F4DF\r
-:101F1000E62FF0E0DF01AA0FBB1FAF56BE4F8D9139\r
-:101F20009C91E756FE4FE081F0E009C0E2E1F0E06D\r
-:101F300086E494E004C0E0E0F0E080E090E0DA01C4\r
-:101F40008D939C93CF01089580E189BD82E189BD85\r
-:101F500009B400FEFDCF8091D8008F7D8093D8001A\r
-:101F60008091E00082608093E0008091E00081FD3C\r
-:101F7000FCCF0895BF92CF92DF92EF92FF920F9322\r
-:101F80001F93CF93DF937C018B01EA010E946F11B5\r
-:101F9000B82E811133C0209731F028813981021B7E\r
-:101FA000130BE20EF31EC12CD12C23C08091E8004C\r
-:101FB00085FD15C08091E8008E778093E80020971A\r
-:101FC00049F0888199818C0D9D1D9983888325E036\r
-:101FD000B22E14C00E946F11882359F00EC0F70171\r
-:101FE00081917F018093F10001501109FFEFCF1A19\r
-:101FF000DF0A01151105D1F601C0B82E8B2DDF9136\r
-:10200000CF911F910F91FF90EF90DF90CF90BF90F5\r
-:102010000895BF92CF92DF92EF92FF920F931F939A\r
-:10202000CF93DF937C018B01EA010E946F11B82EE0\r
-:10203000811133C0209731F028813981021B130BA5\r
-:10204000E20EF31EC12CD12C23C08091E80085FD47\r
-:1020500015C08091E8008B778093E800209749F0C5\r
-:10206000888199818C0D9D1D9983888345E0B42ECC\r
-:1020700014C00E946F11882359F00EC08091F100A6\r
-:10208000F70181937F0101501109FFEFCF1ADF0A99\r
-:1020900001151105D1F601C0B82E8B2DDF91CF911E\r
-:1020A0001F910F91FF90EF90DF90CF90BF90089518\r
-:1020B00040917503509176034617570748F0611514\r
-:1020C000710539F44091E8004E774093E80001C073\r
-:1020D000BA01FC0140E033C080916E03882309F40B\r
-:1020E00042C0853009F441C08091E80083FD39C0C9\r
-:1020F0008091E80082FD2FC08091E80080FF1FC022\r
-:102100009091F3008091F200392F20E0A901482B33\r
-:10211000CA0106C041914093F100615071090196D6\r
-:102120006115710519F088309105A0F341E0089719\r
-:1021300009F040E08091E8008E778093E800611517\r
-:10214000710551F64111C8CF06C080916E038823F6\r
-:1021500051F0853051F08091E80082FFF6CF80E0A9\r
-:10216000089581E0089582E0089583E00895409104\r
-:102170007503509176034617570748F061157105AE\r
-:1021800039F44091E8004E774093E80001C0BA016D\r
-:10219000FC0140E034C080916E03882309F443C001\r
-:1021A000853009F442C08091E80083FD3AC08091F7\r
-:1021B000E80082FD30C08091E80080FF20C090914F\r
-:1021C000F3008091F200392F20E0A901482BCA01C9\r
-:1021D00007C044914093F100319661507109019616\r
-:1021E0006115710519F08830910598F341E0089761\r
-:1021F00009F040E08091E8008E778093E800611557\r
-:10220000710549F64111C7CF06C080916E0388233E\r
-:1022100051F0853051F08091E80082FFF6CF80E0E8\r
-:10222000089581E0089582E0089583E00895982F4D\r
-:102230002CC09093E900981739F07091EC00209130\r
-:10224000ED005091F00003C0242F762F50E021FDC7\r
-:1022500002C09F5F1AC03091EB003E7F3093EB00CD\r
-:102260003091ED003D7F3093ED003091EB00316017\r
-:102270003093EB007093EC002093ED005093F0004E\r
-:102280002091EE0027FDE5CF07C0973090F28F70C8\r
-:102290008093E90081E0089580E0089580916F03C4\r
-:1022A00087FD05C08091E80080FF0EC012C08091BC\r
-:1022B000E80082FD05C080916E038111F8CF08957A\r
-:1022C0008091E8008B7708C080916E038111EACF7E\r
-:1022D00008958091E8008E778093E80008958091BA\r
-:1022E000E4009091E50045E62091EC0020FD1FC040\r
-:1022F00023C020916E03222391F0253091F020918C\r
-:10230000EB0025FD10C02091E4003091E500281776\r
-:10231000390751F34150C90139F784E0089582E04B\r
-:10232000089583E0089581E0089580E00895209164\r
-:10233000E80020FFDECFF9CF2091E80022FFD9CFBF\r
-:10234000F4CF0E940F120E941712E0EEF0E080819D\r
-:1023500081608083E8EDF0E080818F77808319BC15\r
-:10236000A7EDB0E08C918E7F8C9380818F7E8083EF\r
-:1023700010926D0308950F931F93CF93DF930E94E4\r
-:102380000F120E941712C8EDD0E088818F778883E2\r
-:1023900088818068888388818F7D888319BC1092AA\r
-:1023A0006E0310926A0310926C0310926B0300EE9E\r
-:1023B00010E0F80180818B7F808388818160888331\r
-:1023C00042E060E080E00E941711E1EEF0E08081E1\r
-:1023D0008E7F8083E2EEF0E0808181608083808167\r
-:1023E00088608083F80180818E7F8083888180610E\r
-:1023F0008883DF91CF911F910F910895E8EDF0E070\r
-:1024000080818F7E8083E7EDF0E080818160808332\r
-:1024100084E082BF81E080936D030C94BB11E8EDF2\r
-:10242000F0E080818E7F80831092E2000895109208\r
-:10243000DA001092E10008951F920F920FB60F92EA\r
-:1024400011242F933F934F935F936F937F938F93B9\r
-:102450009F93AF93BF93EF93FF938091E10082FF2F\r
-:102460000BC08091E20082FF07C08091E1008B7F6A\r
-:102470008093E1000E94D90D8091DA0080FF1FC097\r
-:102480008091D80080FF1BC08091DA008E7F8093FE\r
-:10249000DA008091D90080FF0DC080E189BD82E122\r
-:1024A00089BD09B400FEFDCF81E080936E030E94D8\r
-:1024B000C30D05C019BC10926E030E94D10D80910E\r
-:1024C000E10080FF19C08091E20080FF15C080917B\r
-:1024D000E2008E7F8093E2008091E2008061809331\r
-:1024E000E2008091D80080628093D80019BC85E01A\r
-:1024F00080936E030E94D50D8091E10084FF30C06F\r
-:102500008091E20084FF2CC080E189BD82E189BD19\r
-:1025100009B400FEFDCF8091D8008F7D8093D80054\r
-:102520008091E1008F7E8093E1008091E2008F7EB8\r
-:102530008093E2008091E20081608093E2008091CC\r
-:102540006A03882311F084E007C08091E30087FFCD\r
-:1025500002C083E001C081E080936E030E94D70D2A\r
-:102560008091E10083FF29C08091E20083FF25C0B4\r
-:102570008091E100877F8093E10082E080936E0389\r
-:1025800010926A038091E1008E7F8093E100809138\r
-:10259000E2008E7F8093E2008091E2008061809370\r
-:1025A000E20042E060E080E00E9417118091F000BC\r
-:1025B00088608093F0000E94D40DFF91EF91BF914D\r
-:1025C000AF919F918F917F916F915F914F913F91CB\r
-:1025D0002F910F900FBE0F901F9018951F920F9282\r
-:1025E0000FB60F9211242F933F934F935F936F93E6\r
-:1025F0007F938F939F93AF93BF93CF93EF93FF936B\r
-:102600008091E9008F709091EC0090FF02C090E8FB\r
-:1026100001C090E0C92FC82B1092E9008091F00012\r
-:10262000877F8093F00078940E9432131092E90023\r
-:102630008091F00088608093F000CF70C093E90033\r
-:10264000FF91EF91CF91BF91AF919F918F917F912A\r
-:102650006F915F914F913F912F910F900FBE0F900F\r
-:102660001F9018951F93CF93DF93CDB7DEB7AC972C\r
-:102670000FB6F894DEBF0FBECDBFEFE6F3E080915A\r
-:10268000F100819323E0E737F207C9F70E94250E96\r
-:102690008091E80083FF37C180916F0390917003B0\r
-:1026A000953009F488C038F49130B1F170F093306E\r
-:1026B00009F029C131C0983009F4F8C0993009F403\r
-:1026C00004C1963009F01FC19DC0803821F08238C6\r
-:1026D00009F019C108C080916B0390916C03992394\r
-:1026E00089F082600FC080917303909174038F70A2\r
-:1026F00099278093E9008091EB0085FB882780F97A\r
-:102700001092E9009091E800977F9093E800809301\r
-:10271000F1001092F100D5C0882319F0823009F041\r
-:10272000F2C08F7121F0823009F0EDC00BC08091B2\r
-:102730007103813009F0E7C0933009F080E08093A5\r
-:102740006C032FC08091710381112BC080917303A2\r
-:10275000909174038F709927009709F4D4C08093E7\r
-:10276000E9002091EB0020FF1CC020917003233072\r
-:1027700021F48091EB00806212C09091EB00906197\r
-:102780009093EB0021E030E001C0220F8A95EAF738\r
-:102790002093EA001092EA008091EB008860809319\r
-:1027A000EB001092E9008091E800877F8093E800B9\r
-:1027B0000E944E11A8C08111A6C080917103909112\r
-:1027C00072038F779927182F9091E3009078982BB8\r
-:1027D0009093E3008091E800877F8093E8000E9457\r
-:1027E0004E118091E80080FFFCCF8091E30080686B\r
-:1027F0008093E300112311F083E001C082E0809315\r
-:102800006E0381C08058823008F07DC080917103D2\r
-:10281000909172038C3D23E0920779F583E08A83DF\r
-:102820008AE289834FB7F894DE01139620E03EE0F8\r
-:1028300051E2E32FF0E050935700E49120FF03C0F2\r
-:10284000E295EF703F5FEF708E2F90E0EA3010F06E\r
-:10285000C79601C0C0968D939D932F5F243149F791\r
-:102860004FBF8091E800877F8093E8006AE270E0C4\r
-:10287000CE0101960E94581013C0AE01455D5F4F16\r
-:10288000609173030E943F0F0097E9F12091E800E7\r
-:10289000277F2093E800BC018BA59CA50E94B71060\r
-:1028A0008091E8008B778093E8002DC0803859F53F\r
-:1028B0008091E800877F8093E80080916A0380938D\r
-:1028C000F1008091E8008E7771CF81111CC090914A\r
-:1028D00071039230C0F48091E800877F8093E80014\r
-:1028E00090936A030E944E1180916A03811104C083\r
-:1028F0008091E30087FF02C084E001C081E0809303\r
-:102900006E030E94070E8091E80083FF0AC0809149\r
-:10291000E800877F8093E8008091EB0080628093DD\r
-:10292000EB00AC960FB6F894DEBF0FBECDBFDF91C3\r
-:10293000CF911F910895CF9380916E038823B1F0BA\r
-:102940008091E9008F709091EC0090FF02C090E8B8\r
-:1029500001C090E0C92FC82B1092E9008091E800D7\r
-:1029600083FD0E943213CF70C093E900CF91089588\r
-:10297000881F8827881F089591E0883F08F490E019\r
-:10298000892F0895982F907F903B99F038F49039D3\r
-:1029900081F0903A71F09038C9F40BC0903DA1F0ED\r
-:1029A00018F4903C99F410C0903E19F0903F71F4E7\r
-:1029B00002C083E00895E82FE15FEF3038F4F0E0E3\r
-:1029C000E356FE4F8081089582E0089580E00895E7\r
-:1029D0000F932F774F776F70606BDC01ED91FC9157\r
-:1029E000022F242F462F63E070E009950F91089580\r
-:1029F0000F932F774F776F706069DC01ED91FC9139\r
-:102A0000022F242F462F63E070E009950F9108955F\r
-:102A10000F932F774F776F706068DC01ED91FC9119\r
-:102A2000022F242F462F63E070E009950F9108953F\r
-:102A3000FC01738362830895FC01738F628F089594\r
-:102A4000FC01758F648F0895CF93DF93EC011DA275\r
-:102A50001FA21EA2BC01685D7F4F40EC88519F4FB2\r
-:102A60000E9461171B821A821D821C821F821E8295\r
-:102A7000198618861B861A861D861C861F861E864A\r
-:102A8000198A188A1B8A1A8A1D8A1C8A1F8A1E8A1A\r
-:102A9000198E188E1B8E1A8E1D8E1C8E1F8E1E8EEA\r
-:102AA00019A218A2DF91CF910895CF92DF92FF92E1\r
-:102AB0000F931F93CF93DF931F92CDB7DEB7F62E00\r
-:102AC0006A018C0108511F4F08C0F60161916F0126\r
-:102AD000C80149830E94681749818C2D841B8F157A\r
-:102AE000A0F30F90DF91CF911F910F91FF90DF9096\r
-:102AF000CF900895FC01718360830895FC0171A358\r
-:102B000060A30895AF92BF92CF92DF92EF92FF92AF\r
-:102B10000F931F93CF93DF9300D01F92CDB7DEB7F3\r
-:102B20007C016B01142FB22EA02EDC0195968C91A6\r
-:102B300095978430F1F45A96ED91FC915B9730971C\r
-:102B400009F4D8C0CB01019763E070E00E94762FB2\r
-:102B5000DB01AA0FBB1FA60FB71F49832A830B8374\r
-:102B60004C2D4A1B9E012F5F3F4FBD01C7010995A8\r
-:102B7000B1C06230710509F453C06330710529F0AA\r
-:102B80006130710509F09CC083C0842F807F803A3A\r
-:102B900001F130F48038B9F0803909F0ABC00DC0D4\r
-:102BA000803EE9F0803F09F1803B09F0A3C0D701E6\r
-:102BB0001296ED91FC91139723C0D7011496ED91D5\r
-:102BC000FC9115971DC0D7011696ED91FC911797B2\r
-:102BD00017C0D7011896ED91FC91199711C0D70134\r
-:102BE0001A96ED91FC911B970BC0423F09F082C0F1\r
-:102BF000D7011C96ED91FC911D97309731F47AC066\r
-:102C0000309709F477C0123F21F42A2D4B2D62EF43\r
-:102C100004C0612F6F702A2D4B2DC70109955AC032\r
-:102C2000842F807F803D59F0803F79F0803C09F00F\r
-:102C300061C0D7011E96ED91FC911F9719C0D70175\r
-:102C40005096ED91FC91519713C0433F31F4D70159\r
-:102C50005296ED91FC91539708C0413F09F04AC04C\r
-:102C6000D7015496ED91FC915597309741F442C0AD\r
-:102C7000309709F43FC0133F11F0113F19F44B2D69\r
-:102C8000612F03C0612F6F704B2DC701099522C0C2\r
-:102C9000842F0E94BC14882331F0D7015696ED9101\r
-:102CA000FC91579707C0163F29F5D7015896ED912B\r
-:102CB000FC9159973097F1F0612FC70109950AC02F\r
-:102CC00064307105A8F416C00A2D2B2D412FB601D2\r
-:102CD000C7010995D7015E96ED91FC915F973097FA\r
-:102CE00089F00A2D2B2D412FB601C70109950AC085\r
-:102CF000C12CD12CD7015C96ED91FC915D9730975A\r
-:102D000019F7E8CF0F900F900F90DF91CF911F919F\r
-:102D10000F91FF90EF90DF90CF90BF90AF9008950C\r
-:102D2000EF92FF920F931F93CF93DF93EC01162F37\r
-:102D3000862F0E94BC14882369F0FDA081E08DA33A\r
-:102D400000E020E0412F61E070E0CE010E9482159A\r
-:102D5000FDA27CC0812F0E94B8144DA1882309F4E4\r
-:102D600040C0443029F01AA321E030E03FA32EA355\r
-:102D7000812F0E94C214813031F070F0823051F006\r
-:102D8000833059F507C08DA300E020E0412F61E0BA\r
-:102D900070E01EC08DA35AC0103F19F0173FE9F430\r
-:102DA00004C084E08DA31AA33FC02EA13FA1C90196\r
-:102DB00063E070E00E94762F8C0F9D1FFC0112A330\r
-:102DC000B9016F5F7F4F7FA36EA30CA12BA14AA116\r
-:102DD000CE010E9482151DA239C01DA21FA21EA2F3\r
-:102DE00035C0442399F12EA13FA1C90163E070E0F1\r
-:102DF0000E94762F7C01FE01E80FF91F12A3B90192\r
-:102E00006F5F7F4F7FA36EA38130910591F082E0C9\r
-:102E1000E816F104D9F40CA12BA14AA1CE010E941D\r
-:102E200082158DA1843091F081E090E09FA38EA364\r
-:102E30000DC0423059F400E02BA14AA1CE010E94FE\r
-:102E400082158DA1843011F0FFA2EEA2DF91CF9107\r
-:102E50001F910F91FF90EF900895CF92DF92EF9224\r
-:102E6000FF920F931F93CF93DF93EC01E8A1F9A199\r
-:102E7000309709F009958E0108511F4FC8010E9433\r
-:102E80009A17E12CF12CC82ED12C0FC060E0C8019C\r
-:102E90000E94AE17682FCE010E94901661E0C80113\r
-:102EA0000E94BF178FEFE81AF80AEC14FD0470F3C4\r
-:102EB000DF91CF911F910F91FF90EF90DF90CF9016\r
-:102EC0000895FC0142837483638311821082089504\r
-:102ED0000F931F93CF93DF93EC01062F0E94E0170F\r
-:102EE000182F298130E0C90101966A8170E00E94A3\r
-:102EF0008A2F488150E08417950729F4812F0E947A\r
-:102F0000E31780E012C0EB81FC81E20FF31F008326\r
-:102F10002981822F90E001966A8170E00E948A2FB9\r
-:102F20008983812F0E94E31781E0DF91CF911F9168\r
-:102F30000F910895CF93DF93EC010E94E017298150\r
-:102F40009881291710F0C22F02C0CA81C20FC91B75\r
-:102F50000E94E3178C2FDF91CF910895FC0120810F\r
-:102F6000862F90E0820F911D628170E00E948A2F6F\r
-:102F70000380F481E02DE80FF91F808108950F93FD\r
-:102F80001F93CF93DF931F92CDB7DEB78C01698378\r
-:102F90000E94E017482FF80180816981262F30E0D8\r
-:102FA000280F311D6281C90170E00E948A2F808341\r
-:102FB000842F0F90DF91CF911F910F910C94E31705\r
-:102FC0008FB7F89408958FBF0895FC01CB0120912D\r
-:102FD0006E032430B1F421812F702093E90040E08A\r
-:102FE00050E064E070E00E94BA0F81110BC0909134\r
-:102FF000E80095FD07C09091E8009E779093E80067\r
-:10300000089582E0089520916E032430A9F4FC0114\r
-:1030100081818F708093E9003091F3002091F2005C\r
-:10302000932F80E0822B892B49F08091E8008E77E6\r
-:103030008093E8000C946F1182E0089580E0089579\r
-:1030400020916E03243051F4FC0121812F702093D4\r
-:10305000E9002091E80020FD0C9403180895FC017C\r
-:10306000CB0120916E03243011F080E00895268179\r
-:103070002F702093E9002091E80022FFF6CF2091E5\r
-:10308000E80025FFF2CF40E050E064E070E00E94ED\r
-:1030900009108091E80085FD05C08091E8008B77DC\r
-:1030A0008093E80081E0089590930F0280930E02D0\r
-:1030B000089580910E0290910F020895E0910E0202\r
-:1030C000F0910F02309721F00190F081E02D0994EA\r
-:1030D00080E00895E0910E02F0910F02309721F008\r
-:1030E0000280F381E02D09940895E0910E02F091A1\r
-:1030F0000F02309721F00480F581E02D09940895A6\r
-:1031000020911002309111028217930771F0909371\r
-:10311000110280931002E0910E02F0910F0230979D\r
-:1031200021F00680F781E02D099408952091120284\r
-:10313000309113028217930771F0909313028093DA\r
-:103140001202E0910E02F0910F02309721F00084FC\r
-:10315000F185E02D099408950E94B6240E948D0502\r
-:103160000E948A250C945F2B0C94CE075F926F927D\r
-:103170007F928F929F92AF92BF92CF92DF92EF9207\r
-:10318000FF920F931F93CF93DF93CDB7DEB72A97AC\r
-:103190000FB6F894DEBF0FBECDBF0E947E0694E14D\r
-:1031A000C92E92E0D92E00E010E0AA24A394B12CFD\r
-:1031B000502E802F0E94C4073C01F601E190F1904F\r
-:1031C0006F01E826F926E114F10431F40F5F1F4F77\r
-:1031D0000430110569F73AC08091680281FD0E94B0\r
-:1031E000CD0720E030E04501022E02C0880C991C7A\r
-:1031F0000A94E2F7C4018E219F21892B09F12E83C5\r
-:103200005F826820792081E0672809F480E0888760\r
-:103210000E94BF248160782F9A8789874E815F81C1\r
-:1032200068858A850E946F19F801EE0FFF1FEC5E1A\r
-:10323000FD4F80819181882599259183808316C0D7\r
-:103240002F5F3F4F2C30310571F6C0CF8FEF898350\r
-:103250008A831B820E94BF248160782F9D838C8388\r
-:1032600049815A816B818D810E946F190E94772854\r
-:1032700010911C020E945E181817D9F00E945E1867\r
-:1032800080931C022A960FB6F894DEBF0FBECDBF06\r
-:10329000DF91CF911F910F91FF90EF90DF90CF9032\r
-:1032A000BF90AF909F908F907F906F905F900C94A5\r
-:1032B000B4182A960FB6F894DEBF0FBECDBFDF91CB\r
-:1032C000CF911F910F91FF90EF90DF90CF90BF9023\r
-:1032D000AF909F908F907F906F905F900895CF9365\r
-:1032E000DF93CDB7DEB72B970FB6F894DEBF0FBED6\r
-:1032F000CDBF4F83588769877A878B87DE01119608\r
-:1033000086E0FD0111928A95E9F785E0FE01379686\r
-:1033100001900D928A95E1F749815A816B817C81F8\r
-:103320008D819E810E9447212B960FB6F894DEBFB7\r
-:103330000FBECDBFDF91CF910895CF93C82F8823C3\r
-:1033400009F4C1C0823859F40E945E1881FDBBC0E7\r
-:1033500089E30E94AC230E94282489E30CC08338AF\r
-:1033600079F40E945E1880FDAEC083E50E94AC2314\r
-:103370000E94282483E50E94CE23CF910C94282418\r
-:10338000843859F40E945E1882FD9DC087E40E9433\r
-:10339000AC230E94282487E4EECF8450813A48F47D\r
-:1033A0008C2F0E94C72A81118EC08C2F0E94AC23C3\r
-:1033B000E4CF8C2F805E883050F4C77081E090E0BD\r
-:1033C00001C0880FCA95EAF70E94EF23D6CF8C2F51\r
-:1033D000855A833078F4C53A29F0C63A31F482E848\r
-:1033E00090E005C081E890E002C083E890E0CF91D2\r
-:1033F0000C9480188C2F885A833108F064C0C83A26\r
-:1034000039F1C93A41F1CA3A49F1CB3A51F1CC3AD2\r
-:1034100059F1CD3A61F1C03B69F1CE3A71F1CF3A41\r
-:1034200079F1C13B81F1C23B89F1C33B91F1C43BCE\r
-:1034300099F1C53BA1F1C63BA9F1C73BB1F1C83B2E\r
-:10344000B9F1C93BC1F1CA3BC9F58AE292E038C083\r
-:1034500082EE90E035C089EE90E032C08AEE90E0D6\r
-:103460002FC085EB90E02CC086EB90E029C087EB65\r
-:1034700090E026C08CEC90E023C08DEC90E020C062\r
-:1034800083E891E01DC08AE891E01AC082E991E0EA\r
-:1034900017C084E991E014C081E292E011C083E298\r
-:1034A00092E00EC084E292E00BC085E292E008C098\r
-:1034B00086E292E005C087E292E002C080E090E000\r
-:1034C000CF910C949618CF910895882309F44DC09C\r
-:1034D000823859F40E945E1881FF47C089E30E9438\r
-:1034E000AC230E94282489E30CC0833871F40E9425\r
-:1034F0005E1880FF3AC083E50E94AC230E94282416\r
-:1035000083E50E94CE230C942824843859F40E9429\r
-:103510005E1882FF2AC087E40E94AC230E94282400\r
-:1035200087E4EFCF982F9450913A08F4EACF982F80\r
-:10353000905E983058F4282F277081E090E001C009\r
-:10354000880F2A95EAF70E94F523DDCF982F955A28\r
-:10355000933020F480E090E00C948018885A8331F6\r
-:1035600020F480E090E00C9496180895882321F0D0\r
-:103570000E94EF230C9428240895882321F00E94B0\r
-:10358000F5230C9428240895BF92CF92DF92EF92F6\r
-:10359000FF920F931F93CF93DF93CDB7DEB727979B\r
-:1035A0000FB6F894DEBF0FBECDBF8C0185E0F801E9\r
-:1035B000DE01119601900D928A95E1F7F8013081B4\r
-:1035C0002181F280558152955F7083819481892B8E\r
-:1035D00039F02F3F41F481E090E03F3F31F003C0EC\r
-:1035E00081E090E002C080E090E080FD73C3398309\r
-:1035F0002A8389819A815E830E946923B92E8F83F1\r
-:103600000E9468230E9490222B2D22952F7030E07B\r
-:103610005E816F812530310509F4E6C06CF42430F9\r
-:1036200031050CF0A2C04B2D407F8B2D8F702230C6\r
-:1036300031050CF045C017C02C3031054CF42A3050\r
-:1036400031050CF0E7C12830310509F043C3E5C06E\r
-:103650002D30310509F4BAC20CF4A2C22F30310565\r
-:1036600009F038C323C3182F411101C002C01295BD\r
-:10367000107FFF2059F0112309F46BC2812F6F8353\r
-:103680000E94FF230E9428246F8163C2862F0E941C\r
-:10369000651A112309F41EC3812F0E940524279661\r
-:1036A0000FB6F894DEBF0FBECDBFDF91CF911F9153\r
-:1036B0000F91FF90EF90DF90CF90BF900C94282453\r
-:1036C000403211F08295807F662319F0613071F5E8\r
-:1036D00023C0FF20B1F0511101C032C0513081F53B\r
-:1036E00027960FB6F894DEBF0FBECDBFDF91CF9106\r
-:1036F0001F910F91FF90EF90DF90CF90BF900C94AF\r
-:103700000F24511101C003C0513009F4E3C28E836C\r
-:103710000E9412248E819AC1FF2021F0563008F0B9\r
-:10372000D9C20EC0553008F0D5C290C1FF20C9F0F3\r
-:10373000552331F0F801958190FF0BC29F7095835E\r
-:1037400027960FB6F894DEBF0FBECDBFDF91CF91A5\r
-:103750001F910F91FF90EF90DF90CF90BF900C944E\r
-:10376000B61A552309F472C109C22B2D2695269548\r
-:10377000237030E02115310529F02130310509F0A1\r
-:10378000A9C219C0FF2021F0862F9B2D937002C083\r
-:1037900080E090E027960FB6F894DEBF0FBECDBF55\r
-:1037A000DF91CF911F910F91FF90EF90DF90CF901D\r
-:1037B000BF900C948018FF2021F0862F9B2D9370D2\r
-:1037C00002C080E090E027960FB6F894DEBF0FBEEF\r
-:1037D000CDBFDF91CF911F910F91FF90EF90DF90C0\r
-:1037E000CF90BF900C949618862FFF2019F00E945E\r
-:1037F0007D2702C00E94E52727960FB6F894DEBF0A\r
-:103800000FBECDBFDF91CF911F910F91FF90EF9031\r
-:10381000DF90CF90BF900C946C288B2D837009F0B3\r
-:1038200079C0F11057C2262F229526952770220FB6\r
-:10383000220F862F8F70C82ED12CE12CF12C022E56\r
-:1038400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF4\r
-:1038500010C06FE070E080E090E004C0660F771F5A\r
-:10386000881F991F2A95D2F760957095809590953D\r
-:1038700003C060E070E0CB012B2D269526952370C8\r
-:10388000422F50E042305105D9F04330510569F1E3\r
-:103890006C297D298E299F294130510551F12796A8\r
-:1038A0000FB6F894DEBF0FBECDBFDF91CF911F9151\r
-:1038B0000F91FF90EF90DF90CF90BF900C94A522D6\r
-:1038C0006C297D298E299F2927960FB6F894DEBF93\r
-:1038D0000FBECDBFDF91CF911F910F91FF90EF9061\r
-:1038E000DF90CF90BF900C94B7220E94A522C70111\r
-:1038F000B60127960FB6F894DEBF0FBECDBFDF919D\r
-:10390000CF911F910F91FF90EF90DF90CF90BF90DC\r
-:103910000C949322FF2019F08B2D817001C08695A5\r
-:10392000882309F4D7C1262F229526952770220FC8\r
-:10393000220F862F8F70C82ED12CE12CF12C022E55\r
-:1039400004C0CC0CDD1CEE1CFF1C0A94D2F764FFF3\r
-:1039500010C06FE070E080E090E004C0660F771F59\r
-:10396000881F991F2A95D2F760957095809590953C\r
-:1039700003C060E070E0CB012B2D269526952370C7\r
-:10398000422F50E042305105D9F04330510569F1E2\r
-:103990006C297D298E299F294130510551F12796A7\r
-:1039A0000FB6F894DEBF0FBECDBFDF91CF911F9150\r
-:1039B0000F91FF90EF90DF90CF90BF900C94442335\r
-:1039C0006C297D298E299F2927960FB6F894DEBF92\r
-:1039D0000FBECDBFDF91CF911F910F91FF90EF9060\r
-:1039E000DF90CF90BF900C9456230E944423C701D0\r
-:1039F000B60127960FB6F894DEBF0FBECDBFDF919C\r
-:103A0000CF911F910F91FF90EF90DF90CF90BF90DB\r
-:103A10000C943223603F59F120F4603E08F494C0C6\r
-:103A200008C0623F09F467C0F0F1633F09F08CC041\r
-:103A300065C0162F1F708B2D8F71FF2021F00E9403\r
-:103A4000DD22812F7DCE0E94F822812F27960FB68E\r
-:103A5000F894DEBF0FBECDBFDF91CF911F910F91C4\r
-:103A6000FF90EF90DF90CF90BF900C94BD1AFF2095\r
-:103A7000B1F0553008F02EC18B2D8F7127960FB6FF\r
-:103A8000F894DEBF0FBECDBFDF91CF911F910F9194\r
-:103A9000FF90EF90DF90CF90BF900C94172356309B\r
-:103AA00008F018C1E9CFFF2099F08B2D8F71279670\r
-:103AB0000FB6F894DEBF0FBECDBFDF91CF911F913F\r
-:103AC0000F91FF90EF90DF90CF90BF900C94DD228C\r
-:103AD0008B2D8F7127960FB6F894DEBF0FBECDBF2A\r
-:103AE000DF91CF911F910F91FF90EF90DF90CF90DA\r
-:103AF000BF900C94F822F110EBCFD7CFFF2099F0B4\r
-:103B00008B2D8F7127960FB6F894DEBF0FBECDBFF9\r
-:103B1000DF91CF911F910F91FF90EF90DF90CF90A9\r
-:103B2000BF900C94CE2227960FB6F894DEBF0FBE3E\r
-:103B3000CDBFDF91CF911F910F91FF90EF90DF905C\r
-:103B4000CF90BF900C94C922FF20A9F0552309F40F\r
-:103B5000ACCF862F27960FB6F894DEBF0FBECDBF31\r
-:103B6000DF91CF911F910F91FF90EF90DF90CF9059\r
-:103B7000BF900C949D19552309F4AACF862F279640\r
-:103B80000FB6F894DEBF0FBECDBFDF91CF911F916E\r
-:103B90000F91FF90EF90DF90CF90BF900C94651A3B\r
-:103BA0004B2D4F70C8010E94E50227960FB6F8947E\r
-:103BB000DEBF0FBECDBFDF91CF911F910F91FF9060\r
-:103BC000EF90DF90CF90BF900C94FD21F11082C058\r
-:103BD0009B2D9F70492F50E04230510599F144F4DC\r
-:103BE0004115510569F04130510509F073C019C004\r
-:103BF00043305105C1F14430510509F06BC044C058\r
-:103C000027960FB6F894DEBF0FBECDBFDF91CF91E0\r
-:103C10001F910F91FF90EF90DF90CF90BF900C9489\r
-:103C2000702B27960FB6F894DEBF0FBECDBFDF9185\r
-:103C3000CF911F910F91FF90EF90DF90CF90BF90A9\r
-:103C40000C94872B27960FB6F894DEBF0FBECDBF1E\r
-:103C5000DF91CF911F910F91FF90EF90DF90CF9068\r
-:103C6000BF900C94A32B27960FB6F894DEBF0FBE1F\r
-:103C7000CDBFDF91CF911F910F91FF90EF90DF901B\r
-:103C8000CF90BF900C94B62B862F27960FB6F89442\r
-:103C9000DEBF0FBECDBFDF91CF911F910F91FF907F\r
-:103CA000EF90DF90CF90BF900C94DA2B4B2D4F709C\r
-:103CB000C80127960FB6F894DEBF0FBECDBFDF91C7\r
-:103CC000CF911F910F91FF90EF90DF90CF90BF9019\r
-:103CD0000C940E0827960FB6F894DEBF0FBECDBF2A\r
-:103CE000DF91CF911F910F91FF90EF90DF90CF90D8\r
-:103CF000BF9008950E940C240E94E1230E94282472\r
-:103D00000E9418290E946C2880E090E00E94801890\r
-:103D100080E090E00C9496180E94FC230C947A1E8C\r
-:103D20000E946923292F22952F7030E02C30310515\r
-:103D30004CF42A3031056CF422503109223031051F\r
-:103D400070F407C02C30310531F02F30310539F4D3\r
-:103D500002C081E0089593FB882780F9089580E0F0\r
-:103D60000895CF93DF9300D000D01F92CDB7DEB778\r
-:103D70000F900F900F900F900F90DF91CF910895BB\r
-:103D8000CF93DF9300D000D000D0CDB7DEB726961A\r
-:103D90000FB6F894DEBF0FBECDBFDF91CF9108956F\r
-:103DA0001F93CF93DF93C091530216E012C0D0E06F\r
-:103DB0001C9FF0011D9FF00D1124ED5DFD4F408112\r
-:103DC000518162817381848195810E94C01E2196F8\r
-:103DD000C77080915402C813EACFDF91CF911F9131\r
-:103DE000089540911D0250911E0260911F02709132\r
-:103DF000200280912102909122020C94C01E0F9308\r
-:103E00001F93CF93DF938091220282958F7009F0E8\r
-:103E100069C080911F02882309F464C0A0915302F5\r
-:103E2000D0915402B0911D02C0911E0280912002D7\r
-:103E30009091210221E030E0BF3F11F020E030E01E\r
-:103E4000122FBC016095709506E04AC0009721F0E2\r
-:103E5000CF3F29F4212F05C021E030E002C020E04F\r
-:103E600030E020FD3BC04A2F50E0049FF001059F49\r
-:103E7000F00D1124ED5DFD4F2181C2132FC0208173\r
-:103E8000B2132CC02281211129C02381348128172B\r
-:103E9000390718F0281B390B02C0260F371F283CA2\r
-:103EA0003105E0F4809122028F70806180932202BC\r
-:103EB00086E0849FF001859FF00D1124E85DFD4FA1\r
-:103EC00080818F70806180838DE192E00E94C41AAE\r
-:103ED000DF91CF911F910F910C94D01EAF5FA7700F\r
-:103EE000AD13B4CFDF91CF911F910F910895EF9251\r
-:103EF000FF920F931F93CF93DF93CDB7DEB76297F7\r
-:103F00000FB6F894DEBF0FBECDBF8C0185E0F8017F\r
-:103F1000DE011D9601900D928A95E1F7D8014C9132\r
-:103F200011965C91119712966C9112971396ED90E1\r
-:103F3000FC90149770911D02E0911E028091200266\r
-:103F400090912102009739F0EF3F41F421E030E0F9\r
-:103F50007F3F31F003C021E030E002C020E030E0DC\r
-:103F600020FD5CC120911F02222309F4F1C0E81654\r
-:103F7000F90628F09701281B390BC90104C0809568\r
-:103F800090958E0D9F1D883C910508F098C08091FA\r
-:103F90002202982F907F09F064C0E51314C07413B7\r
-:103FA00012C0611110C08F708061809322020E9444\r
-:103FB000F11E8DE192E00E94C41A80912202D80184\r
-:103FC00015968C9343C1EF2839F05F3F41F481E0AF\r
-:103FD00090E04F3F31F003C081E090E002C080E00C\r
-:103FE00090E080FD03C081E0862702C080E090E081\r
-:103FF00080FF2EC0809153022091540236E013C0FE\r
-:1040000090E0389FF001399FF00D1124ED5DFD4FD8\r
-:104010007181571306C07081471303C07281671303\r
-:1040200017C0019687708213EBCF12C19F7059F0B1\r
-:10403000882309F40BC107C09F7029F0F80195810E\r
-:10404000907F09F403C1805E883008F4FFC0D2C0BD\r
-:10405000662309F4FBC080912202816080932202D2\r
-:10406000F5C0E51308C0741306C0611104C0D8017F\r
-:1040700015968C939DC04D875E878D859E856A8B36\r
-:104080000E94901E6A89882309F4B4C0662309F44B\r
-:10409000B1C020912202822F82958F7090E002970A\r
-:1040A0000CF4C6C080911D0290911E0298878F83E8\r
-:1040B0001986FB86EA862C87CE01079646C080913A\r
-:1040C0002202982F907F59F47E2DF98AE88A8989F7\r
-:1040D0000E94B11E8DE192E00E94C41A95C0E513C2\r
-:1040E00011C074130FC061110DC0F8018583C801A0\r
-:1040F0000E94C41AEDE1F2E086E0DF011D928A958C\r
-:10410000E9F7A2C04D875E878D859E856A8B0E94E8\r
-:10411000901E6A89882309F46DC0662309F46AC079\r
-:1041200020912202822F82958F7090E002970CF4EA\r
-:104130007FC080911D0290911E029A8389831B8209\r
-:10414000FD82EC822E83CE0101960E94C41A70C0BB\r
-:10415000E816F90628F09701281B390BC90104C09D\r
-:10416000809590958E0D9F1D883C910508F046C066\r
-:10417000662309F43FC0E51330C074132EC02091AC\r
-:10418000220220FD21C0322F32953F70832F90E014\r
-:104190000097D1F0D80115962C9315970F9741F001\r
-:1041A000832F8F5F8295807F2F70282B15962C93FD\r
-:1041B000C8010E94C41A86E0F801ADE1B2E00190A6\r
-:1041C0000D928A95E1F73EC086E0F801ADE1B2E0DC\r
-:1041D00001900D928A95E1F737C04D875E878D85F6\r
-:1041E0009E850E94901E811123C0809122028160D1\r
-:1041F00080932202C8010E94C41A26C07E2DF98A2B\r
-:10420000E88A89890E94B11EEDE1F2E086E0DF01D3\r
-:104210001D928A95E9F70E94F11E18C0662351F39A\r
-:104220004D875E878D859E850E94901E882311F3A1\r
-:1042300086E0F801ADE1B2E001900D928A95E1F7D8\r
-:104240000E94FF1E0E94F11E81E014C080E012C097\r
-:104250004D875E878D859E850E946923292F229533\r
-:104260002F7030E0223031050CF4E0CE24303105DF\r
-:104270000CF6E2CE62960FB6F894DEBF0FBECDBF4D\r
-:10428000DF91CF911F910F91FF90EF9008951F93B1\r
-:10429000CF93DF93CDB7DEB72C970FB6F894DEBF80\r
-:1042A0000FBECDBF4F83588769877A878B879C87DE\r
-:1042B000CE0107960E94771F8823D9F02F81388579\r
-:1042C0008A859B85892B39F03F3F19F080E090E08B\r
-:1042D00004C02F3FD9F781E090E0892B09F06DC031\r
-:1042E0004F81588569857A858B859C850E94C01E83\r
-:1042F00064C086E0FE013796DE01119601900D92B2\r
-:104300008A95E1F7FF81E8854A855B85411551056E\r
-:1043100039F0EF3F41F481E090E0FF3F31F003C01E\r
-:1043200081E090E002C080E090E080FD46C02091F6\r
-:10433000540230E0C90101968770992760915302B9\r
-:1043400070E08617970709F440C0F983EA835D831C\r
-:104350004C8396E0929FD001939FB00D1124AD5DE8\r
-:10436000BD4FFE01319601900D929A95E1F7809331\r
-:1043700054020E94D01E21C0189FC00111248D5DDF\r
-:104380009D4F0E94771F882371F1E09153021E9F79\r
-:10439000F0011124ED5DFD4F4081518162817381F7\r
-:1043A000848195810E94C01E8091530290E0019605\r
-:1043B000877099278093530201C016E080915302C1\r
-:1043C000909154028913D8CF0EC00E948C1E109277\r
-:1043D000540210925302EDE1F2E086E0DF011D92FB\r
-:1043E0008A95E9F7EACF2C960FB6F894DEBF0FBE98\r
-:1043F000CDBFDF91CF911F910895DF92EF92FF9291\r
-:104400000F931F93CF93DF93EC01009709F46CC0D7\r
-:10441000D12CEE24E394F12C8E010F5F1F4FFE018F\r
-:104420008491843748F4843008F04AC0813071F0B8\r
-:10443000823009F059C01EC0853709F43DC070F1C3\r
-:10444000982F9458903708F04FC03DC02296F8013D\r
-:104450008491982F905E983050F48770FE2D01C0A3\r
-:10446000FF0F8A95EAF78F2F0E94FF2330C00E942A\r
-:104470009D192DC02296F8018491982F905E983056\r
-:1044800050F48770FE2D01C0FF0F8A95EAF78F2F39\r
-:104490000E9405241CC00E94651A19C02296F801CA\r
-:1044A000049107C08FE99FE00197F1F700C0000079\r
-:1044B00001500111F7CF0BC02296F801D49007C02C\r
-:1044C0000E949D1903C08F770E94651AE8018D2D07\r
-:1044D00007C08150EFE9FFE03197F1F700C000001D\r
-:1044E000882309F499CFF5CFDF91CF911F910F91D8\r
-:1044F000FF90EF90DF9008956093590270935A02F5\r
-:1045000080935B0290935C020C947A1E6093550238\r
-:104510007093560280935702909358020C947A1E1F\r
-:1045200008950C947C220F931F93009159021091CF\r
-:104530005A0220915B0230915C02602B712B822B1E\r
-:10454000932B1F910F910C947C220F931F9300913A\r
-:10455000590210915A0220915B0230915C02602353\r
-:104560007123822393231F910F910C947C220F932C\r
-:104570001F930091590210915A0220915B023091D1\r
-:104580005C0260277127822793271F910F910C945B\r
-:104590007C2260E070E0CB010C94862241E050E088\r
-:1045A00060E070E004C0440F551F661F771F8A95B6\r
-:1045B000D2F7CB01BA010C94862241E050E060E0D2\r
-:1045C00070E004C0440F551F661F771F8A95D2F70D\r
-:1045D0008091550290915602A0915702B0915802D5\r
-:1045E000482B592B6A2B7B2BCB01BA010C948622CA\r
-:1045F00041E050E060E070E004C0440F551F661FCA\r
-:10460000771F8A95D2F74095509560957095809167\r
-:10461000550290915602A0915702B091580248233A\r
-:1046200059236A237B23CB01BA010C94862241E0F3\r
-:1046300050E060E070E004C0440F551F661F771F14\r
-:104640008A95D2F78091550290915602A091570217\r
-:10465000B0915802482759276A277B27CB01BA0116\r
-:104660000C9486220F931F930091550210915602CD\r
-:104670002091570230915802602B712B822B932B83\r
-:104680001F910F910C9486220F931F930091550256\r
-:1046900010915602209157023091580260237123E5\r
-:1046A000822393231F910F910C9486220F931F93C3\r
-:1046B00000915502109156022091570230915802F4\r
-:1046C00060277127822793271F910F910C948622D0\r
-:1046D0000895CF92DF92EF92FF920F931F93CF93A3\r
-:1046E000DF93EC01C0905902D0905A02E0905B0237\r
-:1046F000F0905C028091550290915602A091570271\r
-:10470000B0915802C82AD92AEA2AFB2A0FE110E000\r
-:10471000B701A601002E04C0769567955795479579\r
-:104720000A94D2F740FF08C0BE01802F0E94E00328\r
-:104730008130910509F007C00150110948F7BE0109\r
-:1047400080E00E94E003DF91CF911F910F91FF90D5\r
-:10475000EF90DF90CF90089540911B0150911C0184\r
-:1047600020E030E09FEFFA01E20FF31F628168174B\r
-:10477000A1F09F3F19F4611101C0922F2F5F3F4FAD\r
-:104780002630310581F707C0FA01E90FF11D97FDC9\r
-:10479000FA95828308959F3FB9F7089540911B01D0\r
-:1047A00050911C0120E030E0FA01E20FF31F9281EA\r
-:1047B000981301C012822F5F3F4F26303105A1F7B9\r
-:1047C000089581E090E0E0911B01F0911C01E80F59\r
-:1047D000F91F1082019688309105A9F708959091EC\r
-:1047E0005D02982B90935D020895809590915D02F3\r
-:1047F000982390935D02089510925D020895909120\r
-:104800005E02982B90935E020895809590915E02CF\r
-:10481000982390935E02089510925E02089580930B\r
-:104820005F02089510925F02089540911B0150911C\r
-:104830001C0120E030E080E0FA01E20FF31F9181DB\r
-:1048400091118F5F2F5F3F4F27303105A9F70895F2\r
-:10485000E0911B01F0911C0180915D028083E09149\r
-:104860001B01F0911C01808190915E02892B808355\r
-:1048700090915F02992361F0E0911B01F0911C017E\r
-:104880008081892B80830E94152481110E9412242B\r
-:1048900080911B0190911C010C946A1880916E0309\r
-:1048A000843009F11092690220E488E190E00FB6AB\r
-:1048B000F894A895809360000FBE2093600083B7A2\r
-:1048C000817F846083BF83B7816083BF789488953C\r
-:1048D00083B78E7F83BF88E10FB6F8948093600022\r
-:1048E000109260000FBE0895CF930E94E3020E94D1\r
-:1048F0007E060E94E402C0E08C2F0E94C407892B30\r
-:1049000029F4CF5FC430C1F780E001C081E0CF91CE\r
-:1049100008950E948C1E0C945F2B1F920F920FB66D\r
-:104920000F9211248F939F93AF93BF93809169024D\r
-:10493000811113C080916A0290916B02A0916C0268\r
-:10494000B0916D024196A11DB11D80936A029093B2\r
-:104950006B02A0936C02B0936D02BF91AF919F91D7\r
-:104960008F910F900FBE0F901F90189582E084BD1D\r
-:1049700093E095BD9AEF97BD80936E0008958FB731\r
-:10498000F89440916A0250916B0260916C027091B0\r
-:104990006D028FBFCA010895CF92DF92EF92FF920E\r
-:1049A0000F931F932FB7F89440916A0250916B02B6\r
-:1049B00060916C0270916D022FBF6A017B01EE2441\r
-:1049C000FF248C0120E030E0C016D106E206F30699\r
-:1049D00020F09A01281B390B05C09C0120953095C9\r
-:1049E000240F351FC9011F910F91FF90EF90DF90A9\r
-:1049F000CF9008951F920F920FB60F9211248F93AC\r
-:104A00009F93AF93BF9380916A0290916B02A091A4\r
-:104A10006C02B0916D020196A11DB11D80936A02D6\r
-:104A200090936B02A0936C02B0936D02BF91AF9113\r
-:104A30009F918F910F900FBE0F901F9018950E941D\r
-:104A4000A111F8942FEF87EA91E621508040904021\r
-:104A5000E1F700C0000087E090EBDC018093780371\r
-:104A600090937903A0937A03B0937B032CE088E1C1\r
-:104A700090E00FB6F894A895809360000FBE209345\r
-:104A80006000FFCFCF92DF92EF92FF920F931F93C0\r
-:104A9000CF93DF93C82ED12C01E010E08D2D0E9422\r
-:104AA000C4077C01C0E0D0E098010C2E02C0220FA8\r
-:104AB000331F0A94E2F72E213F21232B29F421965C\r
-:104AC000CC30D10589F708C06C2F7D2D80E00E9485\r
-:104AD000BB03C812F4CF06C0D39484E0D812DECF53\r
-:104AE00080E001C081E0DF91CF911F910F91FF9095\r
-:104AF000EF90DF90CF900895CF93C82F8CE20E9463\r
-:104B00004225882321F08C2FCF910C94422580E000\r
-:104B1000CF910895CF930E94CD26811102C00E94AB\r
-:104B2000AE26C5E608C00E947E068FE39CE9019789\r
-:104B3000F1F700C00000C150B1F789E20E947C2566\r
-:104B400081110AC18AE20E947C2581110E94AE2651\r
-:104B500085E00E947C2581110E941F250E94D82695\r
-:104B60008093680287E00E947C25882399F18BE17D\r
-:104B70000E947C25882351F09091680291FB882740\r
-:104B800080F921E0822780FB91F922C08EE00E940B\r
-:104B90007C25882351F09091680292FB882780F948\r
-:104BA00021E0822780FB92F913C080E10E947C25DE\r
-:104BB00090916802882341F093FB882780F921E0D7\r
-:104BC000822780FB93F904C0892F809580FB90F9A0\r
-:104BD00090936802809168020E94DC260E94EA2677\r
-:104BE00080937B0280EE0E947C25882341F0809197\r
-:104BF0007B02982F909590FB80F980937B0289E34C\r
-:104C00000E947C25882359F090917B0291FB882794\r
-:104C100080F921E0822780FB91F990937B0282EE5C\r
-:104C20000E947C25882359F090917B0292FB882773\r
-:104C300080F921E0822780FB92F990937B0286EE37\r
-:104C40000E947C25882359F090917B0293FB882752\r
-:104C500080F921E0822780FB93F990937B0283EE19\r
-:104C60000E947C25882359F090917B0294FB882731\r
-:104C700080F921E0822780FB94F990937B0285E301\r
-:104C80000E947C25882359F090917B0295FB882710\r
-:104C900080F921E0822780FB95F990937B0281E3E4\r
-:104CA0000E947C25882359F090917B0296FB8827EF\r
-:104CB00080F921E0822780FB96F990937B0281E1C5\r
-:104CC0000E947C25882359F090917B0297FB8827CE\r
-:104CD00080F921E0822780FB97F990937B028091F5\r
-:104CE0007B020E94EE2687E20E947C25C82F8EE17F\r
-:104CF0000E947C258111C2608FE10E947C25811178\r
-:104D0000C46080E20E947C258111C86081E20E941B\r
-:104D10007C258111C06182E20E947C258111C062E4\r
-:104D200083E20E947C258111C06484E20E947C257C\r
-:104D3000882311F0C06802C0CC2329F08C2F0E9478\r
-:104D4000E5266C2F03C00E94E126682F70E080E00A\r
-:104D500090E0CF910C949122CF9108956DEE7EEF6B\r
-:104D600080E090E00E94BA2F60E082E090E00E9434\r
-:104D7000AC2F60E083E090E00E94AC2F60E084E024\r
-:104D800090E00E94AC2F60E085E090E00E94AC2FA4\r
-:104D900060E086E090E00C94AC2F80E090E00E9410\r
-:104DA000A62F21E08D3E9E4F09F020E0822F08952E\r
-:104DB00082E090E00C949E2F682F82E090E00C94AB\r
-:104DC000AC2F83E090E00C949E2F682F83E090E05E\r
-:104DD0000C94AC2F84E090E00C949E2F682F84E01C\r
-:104DE00090E00C94AC2F86E090E00C949E2F682FFE\r
-:104DF00086E090E00C94AC2F8091760280FF0BC08F\r
-:104E00006091200185E0689FB00111247595679538\r
-:104E1000759567952AC081FF09C06091200185E0E2\r
-:104E2000689FB0011124759567951FC082FF07C068\r
-:104E30006091200185E0689FB001112416C0409167\r
-:104E400070024423C9F060911F01461788F7209132\r
-:104E5000200185E0289F90011124429FC001439FBB\r
-:104E6000900D112470E00E948A2F6038710540F483\r
-:104E70006115710539F002C065E070E0862F089574\r
-:104E80008FE7089581E008958091760280FF08C041\r
-:104E900060911E0170E0759567957595679521C0C5\r
-:104EA00081FF06C060911E0170E07595679519C07D\r
-:104EB00082FF04C060911E0170E010C080917002FA\r
-:104EC0008823C1F060911D018617A0F790911E0103\r
-:104ED000989FC001112470E00E948A2F60387105EC\r
-:104EE00028F46115710521F0862F08958FE7089544\r
-:104EF00081E0089561E070E0F4CF803F21F40E94EA\r
-:104F0000FC26819504C0813F29F40E94FC268093F1\r
-:104F100073020895823F21F40E94FC26819504C00B\r
-:104F2000833F29F40E94FC26809372020895893FF2\r
-:104F300019F40E94442705C08A3F31F40E94442797\r
-:104F400081958093740208958B3F21F40E94442739\r
-:104F5000819504C08C3F29F40E94442780937502F8\r
-:104F60000895843F21F480917102816017C0853FCC\r
-:104F700021F480917102826011C0863F21F48091FA\r
-:104F8000710284600BC0873F21F4809171028860B8\r
-:104F900005C0883F31F48091710280618093710275\r
-:104FA00008958D3F21F48091760281600BC08E3F81\r
-:104FB00021F480917602826005C08F3F29F48091B0\r
-:104FC00076028460809376020895803F29F4809170\r
-:104FD000730287FF6EC007C0813F41F48091730266\r
-:104FE00018160CF066C01092730263C090917202A2\r
-:104FF000823F19F497FF5DC005C0833F31F4191655\r
-:105000000CF057C01092720254C0893F31F4809165\r
-:10501000740218160CF04DC006C08A3F39F4809116\r
-:10502000740287FF46C01092740243C08B3F29F47C\r
-:105030008091750287FF3DC006C08C3F39F4809196\r
-:1050400075021816B4F51092750233C0843F21F42E\r
-:10505000809171028E7F05C0853F31F4809171028D\r
-:105060008D7F8093710225C0863F21F4809171026B\r
-:105070008B7FF7CF873F21F480917102877FF1CF3B\r
-:10508000883F21F4809171028F7EEBCF8D3F21F418\r
-:10509000809176028E7F0BC08E3F21F48091760244\r
-:1050A0008D7F05C08F3F29F4809176028B7F80939E\r
-:1050B00076028091720281110EC08091730281117B\r
-:1050C0000AC080917402811106C08091750281111D\r
-:1050D00002C010927002089581E792E00E94751854\r
-:1050E0000E94BF2490936F0280936E020895CF9325\r
-:1050F00080916E0290916F020E94CC2440917002C8\r
-:10510000442321F02091210130E006C020912201AA\r
-:105110005AE0259F900111248217930708F486C056\r
-:105120008091720281110DC090917302911109C09A\r
-:1051300090917402911105C090917502992309F420\r
-:1051400075C04F3F19F04F5F40937002181624F45A\r
-:105150000E94FC26809372028091720287FF05C034\r
-:105160000E94FC268195809372028091730218162A\r
-:1051700024F40E94FC26809373028091730287FFBF\r
-:1051800005C00E94FC268195809373026091720293\r
-:10519000662339F1C0917302CC2319F1772767FD9B\r
-:1051A0007095872F972F0E94FA2C23E333E343E374\r
-:1051B0005FE30E94AE2D0E94C72C609372026C2F99\r
-:1051C000772767FD7095872F972F0E94FA2C23E38E\r
-:1051D00033E343E35FE30E94AE2D0E94C72C60934C\r
-:1051E000730280917402181624F40E94442780935D\r
-:1051F00074028091740287FF05C00E944427819544\r
-:105200008093740280917502181624F40E9444273A\r
-:10521000809375028091750287FF05C00E94442724\r
-:10522000819580937502CF910C946C28CF9108954D\r
-:10523000E1E7F2E085E0DF011D928A95E9F710923F\r
-:105240007002109276020895833089F130F4813033\r
-:1052500061F0823009F06EC019C0853009F449C090\r
-:10526000B8F1863009F066C055C020912201862F22\r
-:1052700090E0820F911D8F3F910520F4620F6093A3\r
-:10528000220108958FEF809322010895209121013A\r
-:10529000862F90E0820F911D8F3F910520F4620FC1\r
-:1052A0006093210108958FEF80932101089520914B\r
-:1052B0002001862F90E0820F911D8F3F910520F4F1\r
-:1052C000620F6093200108958FEF8093200108956D\r
-:1052D00020911F01862F90E0820F911D8F3F910535\r
-:1052E00020F4620F60931F0108958FEF80931F01D8\r
-:1052F000089520911E01862F90E0820F911D8F3F0F\r
-:10530000910520F4620F60931E0108958FEF809342\r
-:105310001E01089520911D01862F90E0820F911D9E\r
-:105320008F3F910520F4620F60931D0108958FEF68\r
-:1053300080931D010895833021F130F4813059F0BC\r
-:10534000823009F049C012C0853089F128F18630D9\r
-:1053500009F042C037C080912201681720F4861BF3\r
-:1053600080932201089510922201089580912101D5\r
-:10537000681720F4861B8093210108951092210163\r
-:10538000089580912001681720F4861B80932001E6\r
-:10539000089510922001089580911F01681720F44C\r
-:1053A000861B80931F01089510921F01089580911C\r
-:1053B0001E01681720F4861B80931E010895109229\r
-:1053C0001E01089580911D01681720F4861B8093AB\r
-:1053D0001D01089510921D01089541E050E060E024\r
-:1053E00070E004C0440F551F661F771F8A95D2F7DF\r
-:1053F000CB01BA010E9491220C948C1E873208F5D1\r
-:105400008E3108F0B9C08E3009F47EC060F4873068\r
-:1054100009F465C018F4863059F549C0883051F157\r
-:105420008B3031F5AEC0883130F4863108F0A9C038\r
-:105430008031F1F473C0893109F4A3C08B31C1F418\r
-:1054400059C08933F1F068F4893209F493C018F433\r
-:10545000873271F48FC0853309F48CC0883341F4EE\r
-:1054600090C0863409F46BC008F488C0883449F1D0\r
-:1054700080E008950E94D8260E94EA260E94F32622\r
-:1054800080C00E945918892B59F00E945918909396\r
-:105490007902809378020E948C1E80E090E004C024\r
-:1054A00080917802909179020E9454186AC080918C\r
-:1054B0006802817F8E7F8093680281E0809377020B\r
-:1054C00008950E948C1E2FEF83ED90E321508040C1\r
-:1054D0009040E1F700C000000E941F2552C080915B\r
-:1054E000680280FF03C0817F8E7F01C0816080934E\r
-:1054F000680247C09091680291FB882780F921E0FB\r
-:10550000822780FB91F913C09091680292FB882753\r
-:1055100080F921E0822780FB92F909C0909168020E\r
-:1055200093FB882780F921E0822780FB93F99093F1\r
-:105530006802882331F191609093680222C081E86B\r
-:1055400090E00E9480182FEF81EE94E0215080407F\r
-:105550009040E1F700C0000080E090E00E948018D9\r
-:105560002FEF89E698E1215080409040E1F700C09C\r
-:10557000000007C080E003C08D5101C089530E9424\r
-:10558000ED2981E0089580E0089580E00895CF93AB\r
-:10559000C82F80917702813071F020F0823009F0BD\r
-:1055A00083C037C0A0911B01B0911C018C91823245\r
-:1055B00009F07CC007C0A0911B01B0911C018C9127\r
-:1055C000823249F48C2F0E94C32A81111EC08C2F75\r
-:1055D0000E94FE291CC08C2F0E94C52A811115C073\r
-:1055E000C43169F030F4CB3081F0C03109F062C0D1\r
-:1055F00009C0C93221F0C83309F05CC006C010925E\r
-:10560000770258C082E08093770281E090E0817059\r
-:1056100054C0C932C1F060F4C431A9F020F4C730DD\r
-:1056200009F046C02EC0CE51CA3008F041C011C0AA\r
-:10563000CE3409F118F4CB34D9F517C0C13599F03F\r
-:10564000C235B1F50EC010927A0281E080937702E4\r
-:1056500034C0EC2FF0E0E455FE4F808180937A0255\r
-:1056600027C061E003C061E007C06AE080917A0270\r
-:105670000E9424291DC06AE080917A020E949B2921\r
-:1056800017C08EE18093220182E3809321018AE09A\r
-:105690008093200184E180931F0188E080931E01A4\r
-:1056A00088E280931D0104C01092770280E005C05B\r
-:1056B00081E003C080E090E0AACFCF9108950E94DE\r
-:1056C000CD26811102C00E94AE260E94F32680934F\r
-:1056D000770380FF02C0869501C080E00C94DF074D\r
-:1056E00080917703982F9695292F30E0233031054C\r
-:1056F0004CF49F5F990F8170892B816080937703B1\r
-:105700000E94F7268091770386950C94DF0780919D\r
-:105710007703982F969591F09158990F8170892B66\r
-:10572000809377038E7F91E009F490E08091770376\r
-:1057300090FB80F9809377030E94F726809177038E\r
-:1057400086950C94DF0780917703982F909590FBB6\r
-:1057500080F9809377030E94F7268091770380FF7A\r
-:1057600002C0869501C080E00C94DF07309177037A\r
-:10577000232F26952F5F2F77822F90E0317004978B\r
-:105780002CF4220F232B2093770302C0309377034E\r
-:1057900080917703282F2E7F91E009F490E090FB11\r
-:1057A00080F9809377030E94F7268091770386958E\r
-:1057B0000C94DF0720917703922F96959827990FE5\r
-:1057C000822F8170892B809377038E7F91E009F47B\r
-:1057D00090E08091770390FB80F9809377030E949B\r
-:1057E000F7268091770386950C94DF075058BB27E6\r
-:1057F000AA270ED075C166D130F06BD120F031F4FC\r
-:105800009F3F11F41EF45BC10EF4E095E7FB51C11C\r
-:10581000E92F77D180F3BA176207730784079507DA\r
-:1058200018F071F49EF58FC10EF4E0950B2EBA2F8F\r
-:10583000A02D0B01B90190010C01CA01A001112496\r
-:10584000FF27591B99F0593F50F4503E68F11A1642\r
-:10585000F040A22F232F342F4427585FF3CF4695D3\r
-:1058600037952795A795F0405395C9F77EF41F16F5\r
-:10587000BA0B620B730B840BBAF09150A1F0FF0FBF\r
-:10588000BB1F661F771F881FC2F70EC0BA0F621FAB\r
-:10589000731F841F48F4879577956795B795F7959B\r
-:1058A0009E3F08F0B3CF9395880F08F09927EE0F2D\r
-:1058B000979587950895D9D008F481E008950CD084\r
-:1058C0000FC107D140F0FED030F021F45F3F19F056\r
-:1058D000F0C0511139C1F3C014D198F39923C9F321\r
-:1058E0005523B1F3951B550BBB27AA2762177307E6\r
-:1058F000840738F09F5F5F4F220F331F441FAA1F9A\r
-:10590000A9F333D00E2E3AF0E0E830D09150504059\r
-:10591000E695001CCAF729D0FE2F27D0660F771F07\r
-:10592000881FBB1F261737074807AB07B0E809F0E9\r
-:10593000BB0B802DBF01FF2793585F4F2AF09E3F7E\r
-:10594000510568F0B6C000C15F3FECF3983EDCF350\r
-:10595000869577956795B795F7959F5FC9F7880FF7\r
-:10596000911D9695879597F90895E1E0660F771F49\r
-:10597000881FBB1F621773078407BA0720F0621BDA\r
-:10598000730B840BBA0BEE1F88F7E095089504D0D3\r
-:105990006894B111D9C00895BCD088F09F5790F099\r
-:1059A000B92F9927B751A0F0D1F0660F771F881F44\r
-:1059B000991F1AF0BA95C9F712C0B13081F0C3D05F\r
-:1059C000B1E00895C0C0672F782F8827B85F39F0FD\r
-:1059D000B93FCCF3869577956795B395D9F73EF4A3\r
-:1059E00090958095709561957F4F8F4F9F4F08954B\r
-:1059F000E89409C097FB3EF4909580957095619569\r
-:105A00007F4F8F4F9F4F9923A9F0F92F96E9BB271E\r
-:105A10009395F695879577956795B795F111F8CF9A\r
-:105A2000FAF4BB0F11F460FF1BC06F5F7F4F8F4F05\r
-:105A30009F4F16C0882311F096E911C0772321F0FB\r
-:105A40009EE8872F762F05C0662371F096E8862F93\r
-:105A500070E060E02AF09A95660F771F881FDAF7EA\r
-:105A6000880F9695879597F90895990F0008550F17\r
-:105A7000AA0BE0E8FEEF16161706E807F907C0F0D4\r
-:105A800012161306E407F50798F0621B730B840BDC\r
-:105A9000950B39F40A2661F0232B242B252B21F4B6\r
-:105AA00008950A2609F4A140A6958FEF811D811D56\r
-:105AB000089597F99F6780E870E060E008959FEF90\r
-:105AC00080EC089500240A94161617061806090695\r
-:105AD000089500240A941216130614060506089564\r
-:105AE000092E0394000C11F4882352F0BB0F40F4EC\r
-:105AF000BF2B11F460FF04C06F5F7F4F8F4F9F4F2C\r
-:105B0000089557FD9058440F551F59F05F3F71F0AD\r
-:105B10004795880F97FB991F61F09F3F79F0879514\r
-:105B20000895121613061406551FF2CF4695F1DF9D\r
-:105B300008C0161617061806991FF1CF869571052D\r
-:105B4000610508940895E894BB2766277727CB0161\r
-:105B500097F908958ADF08F48FEF08950BD0C0CF2E\r
-:105B6000B1DF28F0B6DF18F0952309F0A2CFA7CF58\r
-:105B70001124EACFC6DFA0F3959FD1F3950F50E033\r
-:105B8000551F629FF001729FBB27F00DB11D639FEF\r
-:105B9000AA27F00DB11DAA1F649F6627B00DA11D95\r
-:105BA000661F829F2227B00DA11D621F739FB00D3B\r
-:105BB000A11D621F839FA00D611D221F749F3327AB\r
-:105BC000A00D611D231F849F600D211D822F762F44\r
-:105BD0006A2F11249F5750408AF0E1F088234AF041\r
-:105BE000EE0FFF1FBB1F661F771F881F915050408D\r
-:105BF000A9F79E3F510570F05CCFA6CF5F3FECF355\r
-:105C0000983EDCF3869577956795B795F795E79578\r
-:105C10009F5FC1F7FE2B880F911D9695879597F989\r
-:105C20000895FA01EE0FFF1F30962105310599F115\r
-:105C30006115710561F48038BFE39B0749F16894F1\r
-:105C40009038810561F08038BFEF9B0741F09923C0\r
-:105C500042F5FF3FE1053105210511F1E894089473\r
-:105C6000E795D901AA2329F4AB2FBE2FF85FD0F313\r
-:105C700010C0FF5F70F4A695E0F7F73950F019F007\r
-:105C8000FF3A38F49F779F930CD00F9007FC905801\r
-:105C900008953EF014CF60E070E080E89FE308953F\r
-:105CA0004FE79F775F934F933F932F939ED02F9112\r
-:105CB0003F914F915F9152DF05C019F40EF0F9CE7C\r
-:105CC00042CFFDCE26DFC8F39638C0F707F80F9213\r
-:105CD000E8942BE33AEA48EB5FE74EDF0F920F922E\r
-:105CE0000F924DB75EB70F92C0D0ECEAF0E016D03D\r
-:105CF0004F915F91EF91FF91E595EE1FFF1F49F0E6\r
-:105D0000FE57E0684427EE0F441FFA95E1F74195EE\r
-:105D1000550B32D00F9007FE26C00895DF93CF9326\r
-:105D20001F930F93FF92EF92DF927B018C01689497\r
-:105D300005C0DA2EEF011EDFFE01E894A591259142\r
-:105D4000359145915591AEF3EF0162DDFE0197016A\r
-:105D5000A801DA9479F7DF90EF90FF900F911F91EF\r
-:105D6000CF91DF9108959B01AC0160E070E080E885\r
-:105D70009FE3A5CD9ECEACC0CCDEE8F39923D9F34A\r
-:105D8000940F511DBBF39150504094F059F088236B\r
-:105D900032F0660F771F881F91505040C1F79E3F29\r
-:105DA000510544F7880F911D9695879597F90895A9\r
-:105DB0005F3FACF0983E9CF0BB2786957795679542\r
-:105DC000B79508F4B1609395C1F7BB0F58F711F47C\r
-:105DD00060FFE8CF6F5F7F4F8F4F9F4FE3CFB4CE11\r
-:105DE0000EF076C06CCE689464CE93DEC8F399232F\r
-:105DF000D1F3C6F3DF93CF931F930F93FF92C92F75\r
-:105E0000DD2788232AF02197660F771F881FDAF78E\r
-:105E100020E030E040E85FEB9FE3883920F0803EEF\r
-:105E200030F021968F77E3DCE4EDF0E003C0DFDCB7\r
-:105E3000E1E0F1E073DF8B01BE01EC01FB2E6F5757\r
-:105E400071097595771F880B990BD4DD28E132E72E\r
-:105E500041E35FE38FDEAF2D9801AE01FF900F911C\r
-:105E60001F91CF91DF91D4DC3BCEFA01DC01AA0F68\r
-:105E7000BB1F9B01AC01BF5728F4222733274427BF\r
-:105E800050781FC0B75188F4AB2F00244695379542\r
-:105E90002795011CA395D2F3002069F0220F331F30\r
-:105EA000441FB395DAF30DD0A1CC61307105A0E8A1\r
-:105EB0008A07B94630F49B01AC016627772788270B\r
-:105EC0009078309621F02083318342835383089564\r
-:105ED0009F3F31F0915020F4879577956795B7955E\r
-:105EE000880F911D9695879597F90895AA1BBB1B5E\r
-:105EF00051E107C0AA1FBB1FA617B70710F0A61BCA\r
-:105F0000B70B881F991F5A95A9F780959095BC01EA\r
-:105F1000CD01089597FB072E16F4009407D077FD66\r
-:105F200009D00E94762F07FC05D03EF4909581950C\r
-:105F30009F4F0895709561957F4F0895F999FECF11\r
-:105F400092BD81BDF89A992780B50895A8E1B0E087\r
-:105F500042E050E00C94C12F262FF999FECF1FBAD2\r
-:105F600092BD81BD20BD0FB6F894FA9AF99A0FBE82\r
-:105F7000019608950E94AC2F272F0C94AD2FDC01C1\r
-:105F8000CB01FC01F999FECF06C0F2BDE1BDF89A44\r
-:105F9000319600B40D9241505040B8F70895F894EE\r
-:025FA000FFCF31\r
-:105FA2000507000C058540000001064000000100C5\r
-:105FB200D80B680C440C0F0CDB0B01600228081490\r
-:105FC2000A321E40004500250026006100600020C4\r
-:105FD2000037006400650066006700440046002444\r
-:105FE2000047000000020004000500070009000B42\r
-:105FF200000C000E0010001100130015001700180D\r
-:10600200001A001C001D001F00210023002400268E\r
-:1060120000280029002B002D002F00300032003410\r
-:10602200003500370039003B008803A103BA03D3CF\r
-:1060320003FB04AE04780458043F4D3620020302E9\r
-:10604200000001000101010101000101010203043C\r
-:0660520005060708090025\r
-:00000001FF\r
# 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,
+# 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.
#----------------------------------------------------------------------------
# Target file name (without extension).
-TARGET = preonic_lufa
+TARGET = preonic
+
# Directory common source filess exist
TOP_DIR = ../..
+TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
-SRC = extended_keymap_common.c \
- matrix.c \
- led.c \
- backlight.c
+SRC = preonic.c
+
+ifdef keymap
+ KEYMAP = $(keymap)
+endif
ifdef KEYMAP
- SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP).c
else
- SRC := extended_keymaps/extended_keymap_default.c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
+else
+$(error Keymap file does not exist)
+endif
endif
+else
+ifneq ("$(wildcard keymaps/default.c)","")
+ KEYMAP_FILE = keymaps/default.c
+else
+ KEYMAP_FILE = keymaps/default/keymap.c
+endif
+endif
+SRC := $(KEYMAP_FILE) $(SRC)
CONFIG_H = config.h
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+# change to "no" to disable the options, or define them in the makefile.mk in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # 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 = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = yes # MIDI controls
-BACKLIGHT_ENABLE = yes
-
-ifdef MIDI_ENABLE
- SRC += keymap_midi.c \
- beeps.c
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+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"
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
+VPATH += $(TMK_DIR)
-include $(TOP_DIR)/protocol/lufa.mk
-include $(TOP_DIR)/common.mk
-include $(TOP_DIR)/rules.mk
+include $(TOP_DIR)/quantum/quantum.mk
+++ /dev/null
-#----------------------------------------------------------------------------
-# 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 = gh60_pjrc
-
-# Directory common source filess exist
-TOP_DIR = ../..
-
-# Directory keyboard dependent files exist
-TARGET_DIR = .
-
-# project specific files
-SRC = keymap_common.c \
- matrix.c \
- led.c
-
-ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
-else
- SRC := keymap_jack.c $(SRC)
-endif
-
-CONFIG_H = config.h
-
-
-# MCU name, you MUST set this to match the board you are using
-# type "make clean" after changing this, so all files will be rebuilt
-MCU = atmega32u4
-#MCU = at90usb1286
-
-
-# Processor frequency.
-# Normally the first thing your program should do is set the clock prescaler,
-# so your program will run at the correct speed. You should also set this
-# variable to same clock speed. The _delay_ms() macro uses this, and many
-# examples use this variable to calculate timings. Do not add a "UL" here.
-F_CPU = 16000000
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
-# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+5000)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+600)
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover(+500)
-#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support
-
-
-# Search Path
-VPATH += $(TARGET_DIR)
-VPATH += $(TOP_DIR)
-
-include $(TOP_DIR)/protocol/pjrc.mk
-include $(TOP_DIR)/common.mk
-include $(TOP_DIR)/rules.mk
-
-plain: OPT_DEFS += -DKEYMAP_PLAIN
-plain: all
-
-poker: OPT_DEFS += -DKEYMAP_POKER
-poker: all
-
-poker_set: OPT_DEFS += -DKEYMAP_POKER_SET
-poker_set: all
-
-poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT
-poker_bit: all
+++ /dev/null
-# Planck Firmware Guide
-
-## Setting up the environment
-
-### Windows
-1. Install [WinAVR Tools](http://sourceforge.net/projects/winavr/) for AVR GCC compiler.
-2. Install [DFU-Programmer][dfu-prog] (the -win one).
-3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver.
-
-### Mac
-1. Install [CrossPack](http://www.obdev.at/products/crosspack/index.html) or install Xcode from the App Store and install the Command Line Tools from `Xcode->Preferences->Downloads`.
-2. Install [DFU-Programmer][dfu-prog].
-
-### Linux
-1. Install AVR GCC with your favorite package manager.
-2. Install [DFU-Programmer][dfu-prog].
-
-##Verify Your Installation
-1. Clone the following repository: https://github.com/jackhumbert/tmk_keyboard
-2. Open a Terminal and `cd` into `tmk_keyboard/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 COMMON=true`: compile with the common (non-extended) keymap
-* `make MATRIX=<matrix_file>`: compile with the referenced matrix file. Default if unspecified is `matrix_pcb.c`. For handwired boards, use `matrix_handwired.c`.
-* `make KEYMAP=<keymap>`: compile with the extended keymap file `extended_keymaps/extended_keymap_<keymap>.c`
-* `make COMMON=true KEYMAP=<keymap>`: compile with the common keymap file `common_keymaps/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.
-
-## Extended keymap
-
-### Keymap
-
-Unlike the common keymap, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/tmk_keyboard/blob/master/keyboard/planck/extended_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 `extended_keymaps/extended_keymaps_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/
-Planck keyboard firmware
+Preonic keyboard firmware
======================
-DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
+DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
-## Extended Keymap
-If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies:
+## Quantum MK Firmware
-- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able)
-- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit
-- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards)
-- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too)
+For the full Quantum feature list, see [the parent README.md](/README.md).
-### Some notes on usage:
+## Building
-- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix
-- Keep an eye on the Makefile - this needs to include the correct files to work
-- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent
-
-## Build
-
-Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup)
-
-Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST).
+Download or clone the whole firmware and navigate to the keyboard/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button.
Depending on which keymap you would like to use, you will have to compile slightly differently.
-####Default
-To build with the default keymap, simply move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows:
-```
-$ make
-```
-
-## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
-
-####**Extended Keymaps**
+### Default
+To build with the default keymap, simply run `make`.
-To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like:
-```
-$ make KEYMAP=[common|jack|<name>]
-```
-_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\<name\>.c__**
+### 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 a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
-####**Common Keymaps**
-
-Building with a common keymap is as simple as adding the COMMON option. Note that only
+To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```
-$ make KEYMAP=[common|jack|<name>] COMMON=true
+$ make KEYMAP=[default|jack|<name>]
```
-_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\<name\>.c__**
-
-## Notable TMK forks (which some of the keymap files are from)
-- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
-- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c)
-- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck)
-- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid)
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
+++ /dev/null
-define reset
-SIGNAL SIGHUP
-end
-file planck_lufa.elf
-target remote localhost:4242
-break main
+++ /dev/null
-// Simple analog to digitial conversion
-
-#include <avr/io.h>
-#include <avr/pgmspace.h>
-#include <stdint.h>
-#include "analog.h"
-
-
-static uint8_t aref = (1<<REFS0); // default to AREF = Vcc
-
-
-void analogReference(uint8_t mode)
-{
- aref = mode & 0xC0;
-}
-
-
-// Arduino compatible pin input
-int16_t analogRead(uint8_t pin)
-{
-#if defined(__AVR_ATmega32U4__)
- static const uint8_t PROGMEM pin_to_mux[] = {
- 0x00, 0x01, 0x04, 0x05, 0x06, 0x07,
- 0x25, 0x24, 0x23, 0x22, 0x21, 0x20};
- if (pin >= 12) return 0;
- return adc_read(pgm_read_byte(pin_to_mux + pin));
-#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
- if (pin >= 8) return 0;
- return adc_read(pin);
-#else
- return 0;
-#endif
-}
-
-// Mux input
-int16_t adc_read(uint8_t mux)
-{
-#if defined(__AVR_AT90USB162__)
- return 0;
-#else
- uint8_t low;
-
- ADCSRA = (1<<ADEN) | ADC_PRESCALER; // enable ADC
- ADCSRB = (1<<ADHSM) | (mux & 0x20); // high speed mode
- ADMUX = aref | (mux & 0x1F); // configure mux input
- ADCSRA = (1<<ADEN) | ADC_PRESCALER | (1<<ADSC); // start the conversion
- while (ADCSRA & (1<<ADSC)) ; // wait for result
- low = ADCL; // must read LSB first
- return (ADCH << 8) | low; // must read MSB only once!
-#endif
-}
-
-
+++ /dev/null
-#ifndef _analog_h_included__
-#define _analog_h_included__
-
-#include <stdint.h>
-
-void analogReference(uint8_t mode);
-int16_t analogRead(uint8_t pin);
-int16_t adc_read(uint8_t mux);
-
-#define ADC_REF_POWER (1<<REFS0)
-#define ADC_REF_INTERNAL ((1<<REFS1) | (1<<REFS0))
-#define ADC_REF_EXTERNAL (0)
-
-// These prescaler values are for high speed mode, ADHSM = 1
-#if F_CPU == 16000000L
-#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS1))
-#elif F_CPU == 8000000L
-#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS0))
-#elif F_CPU == 4000000L
-#define ADC_PRESCALER ((1<<ADPS2))
-#elif F_CPU == 2000000L
-#define ADC_PRESCALER ((1<<ADPS1) | (1<<ADPS0))
-#elif F_CPU == 1000000L
-#define ADC_PRESCALER ((1<<ADPS1))
-#else
-#define ADC_PRESCALER ((1<<ADPS0))
-#endif
-
-// some avr-libc versions do not properly define ADHSM
-#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
-#if !defined(ADHSM)
-#define ADHSM (7)
-#endif
-#endif
-
-#endif
+++ /dev/null
-
-#include <avr/io.h>
-#include "backlight.h"
-
-#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));
- }
-}
\ No newline at end of file
+++ /dev/null
-#include "beeps.h"
-#include <math.h>
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-#include <avr/io.h>
-
-#define PI 3.14159265
-
-void delay_us(int count) {
- while(count--) {
- _delay_us(1);
- }
-}
-
-int voices = 0;
-double frequency = 0;
-int volume = 0;
-int position = 0;
-
-double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-bool sliding = false;
-#define RANGE 1000
-volatile int i=0; //elements of the wave
-
-
-void beeps() {
- play_notes();
-}
-
-void send_freq(double freq, int vol) {
- int duty = (((double)F_CPU) / freq);
- ICR3 = duty; // Set max to the period
- OCR3A = duty >> (0x10 - vol); // Set compare to half the period
-}
-
-void stop_all_notes() {
- voices = 0;
- TCCR3A = 0;
- TCCR3B = 0;
- frequency = 0;
- volume = 0;
-
- for (int i = 0; i < 8; i++) {
- frequencies[i] = 0;
- volumes[i] = 0;
- }
-}
-
-void stop_note(double freq) {
- for (int i = 7; i >= 0; i--) {
- if (frequencies[i] == freq) {
- frequencies[i] = 0;
- volumes[i] = 0;
- for (int j = i; (j < 7); j++) {
- frequencies[j] = frequencies[j+1];
- frequencies[j+1] = 0;
- volumes[j] = volumes[j+1];
- volumes[j+1] = 0;
- }
- }
- }
- voices--;
- if (voices < 0)
- voices = 0;
- if (voices == 0) {
- TCCR3A = 0;
- TCCR3B = 0;
- frequency = 0;
- volume = 0;
- } else {
- double freq = frequencies[voices - 1];
- int vol = volumes[voices - 1];
- if (frequency < freq) {
- sliding = true;
- for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) {
- send_freq(f, vol);
- }
- sliding = false;
- } else if (frequency > freq) {
- sliding = true;
- for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) {
- send_freq(f, vol);
- }
- sliding = false;
- }
- send_freq(freq, vol);
- frequency = freq;
- volume = vol;
- }
-}
-
-void init_notes() {
- // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (1 << WGM10);
- // TCCR1B = (1 << COM1B1) | (0 << COM1A0) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
-
- // DDRC |= (1<<6);
-
- // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
- // TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30);
-
- // ICR3 = 0xFFFF;
- // OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element
-
-
- // cli();
-
- // /* Enable interrupt on timer2 == 127, with clk/8 prescaler. At 16MHz,
- // this gives a timer interrupt at 15625Hz. */
- // TIMSK3 = (1 << OCIE3A);
-
- // /* clear/reset timer on match */
- // // TCCR3A = 1<<WGM31 | 0<<WGM30; CTC mode, reset on match
- // // TCCR3B = 0<<CS32 | 1<<CS31 | 0<<CS30; /* clk, /8 prescaler */
-
- // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
- // TCCR3B = (0 << WGM33) | (0 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30);
-
-
- // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10);
- // TCCR1B = (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
- // // SPCR = 0x50;
- // // SPSR = 0x01;
- // DDRC |= (1<<6);
- // // ICR3 = 0xFFFF;
- // // OCR3A=80;
- // PORTC |= (1<<6);
-
- // sei();
-}
-
-// #define highByte(c) ((c >> 8) & 0x00FF)
-// #define lowByte(c) (c & 0x00FF)
-
-ISR(TIMER3_COMPA_vect) {
-
- if (ICR3 > 0 && !sliding) {
- switch (position) {
- case 0: {
- int duty = (((double)F_CPU) / (frequency));
- ICR3 = duty; // Set max to the period
- OCR3A = duty >> 1; // Set compare to half the period
- break;
- }
- case 1: {
- int duty = (((double)F_CPU) / (frequency*2));
- ICR3 = duty; // Set max to the period
- OCR3A = duty >> 1; // Set compare to half the period
- break;
- }
- case 2: {
- int duty = (((double)F_CPU) / (frequency*3));
- ICR3 = duty; // Set max to the period
- OCR3A = duty >> 1; // Set compare to half the period
- break;
- }
- }
- position = (position + 1) % 3;
- }
-// /* OCR2A has been cleared, per TCCR2A above */
-// // OCR3A = 127;
-
-// // pos1 += incr1;
-// // pos2 += incr2;
-// // pos3 += incr3;
-
-// // sample = sinewave[highByte(pos1)] + sinewave[highByte(pos2)] + sinewave[highByte(pos3)];
-
-// // OCR3A = sample;
-
-
-// OCR3A=pgm_read_byte(&sinewave[pos1]);
-// pos1++;
-// // PORTC &= ~(1<<6);
-
-// /* buffered, 1x gain, active mode */
-// // SPDR = highByte(sample) | 0x70;
-// // while (!(SPSR & (1<<SPIF)));
-
-// // SPDR = lowByte(sample);
-// // while (!(SPSR & (1<<SPIF)));
-
-// // PORTC |= (1<<6);
-}
-
-void play_note(double freq, int vol) {
-
- if (freq > 0) {
- DDRC |= (1<<6);
-
- TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
- TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30);
-
- if (frequency != 0) {
- if (frequency < freq) {
- for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) {
- send_freq(f, vol);
- }
- } else if (frequency > freq) {
- for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) {
- send_freq(f, vol);
- }
- }
- }
- send_freq(freq, vol);
- frequency = freq;
- volume = vol;
-
- frequencies[voices] = frequency;
- volumes[voices] = volume;
- voices++;
- }
- // ICR3 = 0xFFFF;
- // for (int i = 0; i < 10000; i++) {
- // OCR3A = round((sin(i*freq)*.5)+.5)*0xFFFF;
- // // _delay_us(50);
- // }
-
- // TCCR3A = 0;
- // TCCR3B = 0;
-}
-
-// void note(int x, float length) {
-// DDRC |= (1<<6);
-// int t = (int)(440*pow(2,-x/12.0)); // starting note
-// for (int y = 0; y < length*1000/t; y++) { // note length
-// PORTC |= (1<<6);
-// delay_us(t);
-// PORTC &= ~(1<<6);
-// delay_us(t);
-// }
-// PORTC &= ~(1<<6);
-// }
-
-// void true_note(float x, float y, float length) {
-// for (uint32_t i = 0; i < length * 50; i++) {
-// uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8));
-// for (int u = 0; u < 8; u++) {
-// if (v & (1 << u) && !(PORTC&(1<<6)))
-// PORTC |= (1<<6);
-// else if (PORTC&(1<<6))
-// PORTC &= ~(1<<6);
-// }
-// }
-// PORTC &= ~(1<<6);
-// }
\ No newline at end of file
+++ /dev/null
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-
-void note(int x, float length);
-void beeps();
-void true_note(float x, float y, float length);
-void play_note(double freq, int vol);
-void stop_note(double freq);
-void stop_all_notes();
-void init_notes();
\ No newline at end of file
#ifndef CONFIG_H
#define CONFIG_H
-#include "config_definitions.h"
+#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6062
+#define PRODUCT_ID 0x6061
#define DEVICE_VER 0x0001
#define MANUFACTURER Ortholinear Keyboards
#define PRODUCT The Preonic Keyboard
/* Planck PCB default pin-out */
#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define ROWS (int []){ D1, D0, D5, B5, B6 }
+#define ROWS (int []){ D2, D5, B5, B6, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
+/* ws2812 RGB LED */
+#define ws2812_PORTREG PORTD
+#define ws2812_DDRREG DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28 // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
-#define NO_DEBUG
+// #define NO_DEBUG
/* disable print */
-#define NO_PRINT
+// #define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
+++ /dev/null
-#ifndef CONFIG_DEFINITIONS_H
-#define CONFIG_DEFINITIONS_H
-
-#define B0 0x20
-#define B1 0x21
-#define B2 0x22
-#define B3 0x23
-#define B4 0x24
-#define B5 0x25
-#define B6 0x26
-#define B7 0x27
-#define C0 0x30
-#define C1 0x31
-#define C2 0x32
-#define C3 0x33
-#define C4 0x34
-#define C5 0x35
-#define C6 0x36
-#define C7 0x37
-#define D0 0x40
-#define D1 0x41
-#define D2 0x42
-#define D3 0x43
-#define D4 0x44
-#define D5 0x45
-#define D6 0x46
-#define D7 0x47
-#define E0 0x50
-#define E1 0x51
-#define E2 0x52
-#define E3 0x53
-#define E4 0x54
-#define E5 0x55
-#define E6 0x56
-#define E7 0x57
-#define F0 0x60
-#define F1 0x61
-#define F2 0x62
-#define F3 0x63
-#define F4 0x64
-#define F5 0x65
-#define F6 0x66
-#define F7 0x67
-
-
-
-
-
-#endif
-
+++ /dev/null
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "extended_keymap_common.h"
-#include "report.h"
-#include "keycode.h"
-#include "action_layer.h"
-#include "action.h"
-#include "action_macro.h"
-#include "debug.h"
-#include "backlight.h"
-#include "keymap_midi.h"
-#include <lufa.h>
-
-static action_t keycode_to_action(uint16_t keycode);
-
-/* converts key to action */
-action_t action_for_key(uint8_t layer, keypos_t key)
-{
- // 16bit keycodes - important
- uint16_t keycode = keymap_key_to_keycode(layer, key);
-
- if (keycode >= 0x0100 && keycode < 0x2000) {
- // Has a modifier
- action_t action;
- // Split it up
- action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF);
- return action;
- } else if (keycode >= 0x2000 && keycode < 0x3000) {
- // Is a shortcut for function layer, pull last 12bits
- return keymap_func_to_action(keycode & 0xFFF);
- } else if (keycode >= 0x3000 && keycode < 0x4000) {
- action_t action;
- action.code = ACTION_MACRO(keycode & 0xFF);
- return action;
- } else if (keycode >= BL_0 & keycode <= BL_15) {
- action_t action;
- action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F);
- return action;
- } else if (keycode == BL_DEC) {
- action_t action;
- action.code = ACTION_BACKLIGHT_DECREASE();
- return action;
- } else if (keycode == BL_INC) {
- action_t action;
- action.code = ACTION_BACKLIGHT_INCREASE();
- return action;
- } else if (keycode == BL_TOGG) {
- action_t action;
- action.code = ACTION_BACKLIGHT_TOGGLE();
- return action;
- } else if (keycode == BL_STEP) {
- action_t action;
- action.code = ACTION_BACKLIGHT_STEP();
- return action;
- } else if (keycode == RESET) {
- bootloader_jump();
- return;
- } else if (keycode == DEBUG) {
- print("\nDEBUG: enabled.\n");
- debug_enable = true;
- return;
- } else if (keycode >= 0x6000 && keycode < 0x7000) {
- action_t action;
- action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8);
- return action;
- }
-
- switch (keycode) {
- case KC_FN0 ... KC_FN31:
- return keymap_fn_to_action(keycode);
-#ifdef BOOTMAGIC_ENABLE
- case KC_CAPSLOCK:
- case KC_LOCKING_CAPS:
- if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
- return keycode_to_action(KC_LCTL);
- }
- return keycode_to_action(keycode);
- case KC_LCTL:
- if (keymap_config.swap_control_capslock) {
- return keycode_to_action(KC_CAPSLOCK);
- }
- return keycode_to_action(KC_LCTL);
- case KC_LALT:
- if (keymap_config.swap_lalt_lgui) {
- if (keymap_config.no_gui) {
- return keycode_to_action(ACTION_NO);
- }
- return keycode_to_action(KC_LGUI);
- }
- return keycode_to_action(KC_LALT);
- case KC_LGUI:
- if (keymap_config.swap_lalt_lgui) {
- return keycode_to_action(KC_LALT);
- }
- if (keymap_config.no_gui) {
- return keycode_to_action(ACTION_NO);
- }
- return keycode_to_action(KC_LGUI);
- case KC_RALT:
- if (keymap_config.swap_ralt_rgui) {
- if (keymap_config.no_gui) {
- return keycode_to_action(ACTION_NO);
- }
- return keycode_to_action(KC_RGUI);
- }
- return keycode_to_action(KC_RALT);
- case KC_RGUI:
- if (keymap_config.swap_ralt_rgui) {
- return keycode_to_action(KC_RALT);
- }
- if (keymap_config.no_gui) {
- return keycode_to_action(ACTION_NO);
- }
- return keycode_to_action(KC_RGUI);
- case KC_GRAVE:
- if (keymap_config.swap_grave_esc) {
- return keycode_to_action(KC_ESC);
- }
- return keycode_to_action(KC_GRAVE);
- case KC_ESC:
- if (keymap_config.swap_grave_esc) {
- return keycode_to_action(KC_GRAVE);
- }
- return keycode_to_action(KC_ESC);
- case KC_BSLASH:
- if (keymap_config.swap_backslash_backspace) {
- return keycode_to_action(KC_BSPACE);
- }
- return keycode_to_action(KC_BSLASH);
- case KC_BSPACE:
- if (keymap_config.swap_backslash_backspace) {
- return keycode_to_action(KC_BSLASH);
- }
- return keycode_to_action(KC_BSPACE);
-#endif
- default:
- return keycode_to_action(keycode);
- }
-}
-
-
-/* Macro */
-__attribute__ ((weak))
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- return MACRO_NONE;
-}
-
-/* Function */
-__attribute__ ((weak))
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-}
-
-/* translates keycode to action */
-static action_t keycode_to_action(uint16_t keycode)
-{
- action_t action;
- switch (keycode) {
- case KC_A ... KC_EXSEL:
- case KC_LCTRL ... KC_RGUI:
- action.code = ACTION_KEY(keycode);
- break;
- case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE:
- action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode));
- break;
- case KC_AUDIO_MUTE ... KC_WWW_FAVORITES:
- action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode));
- break;
- case KC_MS_UP ... KC_MS_ACCEL2:
- action.code = ACTION_MOUSEKEY(keycode);
- break;
- case KC_TRNS:
- action.code = ACTION_TRANSPARENT;
- break;
- default:
- action.code = ACTION_NO;
- break;
- }
- return action;
-}
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
-{
- // Read entire word (16bits)
- return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
-}
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode)
-{
- return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
-}
-
-action_t keymap_func_to_action(uint16_t keycode)
-{
- // For FUNC without 8bit limit
- return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };
-}
+++ /dev/null
-/*
-Copyright 2012,2013 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 KEYMAP_H
-#define KEYMAP_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "action.h"
-#include <avr/pgmspace.h>
-#include "keycode.h"
-#include "keymap.h"
-#include "action_macro.h"
-#include "report.h"
-#include "host.h"
-// #include "print.h"
-#include "debug.h"
-
-#ifdef BOOTMAGIC_ENABLE
-/* NOTE: Not portable. Bit field order depends on implementation */
-typedef union {
- uint16_t raw;
- struct {
- bool swap_control_capslock:1;
- bool capslock_to_control:1;
- bool swap_lalt_lgui:1;
- bool swap_ralt_rgui:1;
- bool no_gui:1;
- bool swap_grave_esc:1;
- bool swap_backslash_backspace:1;
- bool nkro:1;
- };
-} keymap_config_t;
-keymap_config_t keymap_config;
-#endif
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode);
-
-/* translates Fn keycode to action */
-action_t keymap_func_to_action(uint16_t keycode);
-
-extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
-extern const uint16_t fn_actions[];
-
-// Ability to use mods in layouts
-#define LCTL(kc) kc | 0x0100
-#define LSFT(kc) kc | 0x0200
-#define LALT(kc) kc | 0x0400
-#define LGUI(kc) kc | 0x0800
-#define RCTL(kc) kc | 0x1100
-#define RSFT(kc) kc | 0x1200
-#define RALT(kc) kc | 0x1400
-#define RGUI(kc) kc | 0x1800
-
-// Alias for function layers than expand past FN31
-#define FUNC(kc) kc | 0x2000
-
-// Aliases
-#define S(kc) LSFT(kc)
-#define F(kc) FUNC(kc)
-
-// For software implementation of colemak
-#define CM_Q KC_Q
-#define CM_W KC_W
-#define CM_F KC_E
-#define CM_P KC_R
-#define CM_G KC_T
-#define CM_J KC_Y
-#define CM_L KC_U
-#define CM_U KC_I
-#define CM_Y KC_O
-#define CM_SCLN KC_P
-
-#define CM_A KC_A
-#define CM_R KC_S
-#define CM_S KC_D
-#define CM_T KC_F
-#define CM_D KC_G
-#define CM_H KC_H
-#define CM_N KC_J
-#define CM_E KC_K
-#define CM_I KC_L
-#define CM_O KC_SCLN
-
-#define CM_Z KC_Z
-#define CM_X KC_X
-#define CM_C KC_C
-#define CM_V KC_V
-#define CM_B KC_B
-#define CM_K KC_N
-#define CM_M KC_M
-#define CM_COMM KC_COMM
-#define CM_DOT KC_DOT
-#define CM_SLSH KC_SLSH
-
-// Make it easy to support these in macros
-#define KC_CM_Q CM_Q
-#define KC_CM_W CM_W
-#define KC_CM_F CM_F
-#define KC_CM_P CM_P
-#define KC_CM_G CM_G
-#define KC_CM_J CM_J
-#define KC_CM_L CM_L
-#define KC_CM_U CM_U
-#define KC_CM_Y CM_Y
-#define KC_CM_SCLN CM_SCLN
-
-#define KC_CM_A CM_A
-#define KC_CM_R CM_R
-#define KC_CM_S CM_S
-#define KC_CM_T CM_T
-#define KC_CM_D CM_D
-#define KC_CM_H CM_H
-#define KC_CM_N CM_N
-#define KC_CM_E CM_E
-#define KC_CM_I CM_I
-#define KC_CM_O CM_O
-
-#define KC_CM_Z CM_Z
-#define KC_CM_X CM_X
-#define KC_CM_C CM_C
-#define KC_CM_V CM_V
-#define KC_CM_B CM_B
-#define KC_CM_K CM_K
-#define KC_CM_M CM_M
-#define KC_CM_COMM CM_COMM
-#define KC_CM_DOT CM_DOT
-#define KC_CM_SLSH CM_SLSH
-
-#define M(kc) kc | 0x3000
-
-#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
-
-#define BL_ON 0x4009
-#define BL_OFF 0x4000
-#define BL_0 0x4000
-#define BL_1 0x4001
-#define BL_2 0x4002
-#define BL_3 0x4003
-#define BL_4 0x4004
-#define BL_5 0x4005
-#define BL_6 0x4006
-#define BL_7 0x4007
-#define BL_8 0x4008
-#define BL_9 0x4009
-#define BL_10 0x400A
-#define BL_11 0x400B
-#define BL_12 0x400C
-#define BL_13 0x400D
-#define BL_14 0x400E
-#define BL_15 0x400F
-#define BL_DEC 0x4010
-#define BL_INC 0x4011
-#define BL_TOGG 0x4012
-#define BL_STEP 0x4013
-
-#define RESET 0x5000
-#define DEBUG 0x5001
-
-#define MIDI(n) n | 0x6000
-
-#endif
+++ /dev/null
-#include "extended_keymap_common.h"
-#include "backlight.h"
-#include "lufa.h"
-#include "debug.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
- {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
- {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
- {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-[2] = { /* RAISE */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
- {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[4] = { /* TENKEY */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_7, KC_KP_8, KC_KP_9, KC_P, KC_BSPC},
- {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_4, KC_KP_5, KC_KP_6, KC_SCLN, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_1, KC_KP_2, KC_KP_3, KC_SLSH, KC_ENT},
- {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
- [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
-
- [3] = ACTION_DEFAULT_LAYER_SET(0),
- [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- midi_send_noteon(&midi_device, 1, 64, 127);
- backlight_step();
- } else {
- unregister_code(KC_RSFT);
- midi_send_noteoff(&midi_device, 1, 64, 127);
- }
- break;
- }
- return MACRO_NONE;
-};
+++ /dev/null
-#include "extended_keymap_common.h"
-#include "backlight.h"
-#include "action_layer.h"
-#include "keymap_midi.h"
-#include "beeps.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
- {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
- {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-[2] = { /* RAISE */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
- {KC_GRV, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
- {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[4] = { /* TENKEY */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_7, KC_KP_8, KC_KP_9, KC_P, KC_BSPC},
- {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_4, KC_KP_5, KC_KP_6, KC_SCLN, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_1, KC_KP_2, KC_KP_3, KC_SLSH, KC_ENT},
- {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-[5] = {
- { MIDI12 },
- { MIDI12 },
- { MIDI12 },
- { MIDI12 },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), MIDI, MIDI, MIDI, MIDI}
-}
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
- [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
-
- [3] = ACTION_DEFAULT_LAYER_SET(0),
- [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch(id) {
- case 0:
- if (record->event.pressed) {
- // register_code(KC_RSFT);
- backlight_set(BACKLIGHT_LEVELS);
- default_layer_and(0);
- default_layer_or((1<<5));
- } else {
- // unregister_code(KC_RSFT);
- backlight_set(0);
- default_layer_and(0);
- default_layer_or(0);
- }
- break;
- }
- return MACRO_NONE;
-};
--- /dev/null
+dfu-programmer atmega32u4 erase --force
+dfu-programmer atmega32u4 flash preonic_pcb.hex
+dfu-programmer atmega32u4 reset
\ No newline at end of file
+++ /dev/null
-/*
-Copyright 2015 Jack Humbert <jack.humb@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "extended_keymap_common.h"
-#include "keymap_midi.h"
-#include <lufa.h>
-
-uint8_t starting_note = 0x0C;
-int offset = 7;
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- if (id != 0) {
- if (record->event.pressed) {
- midi_send_noteon(&midi_device, opt, (id & 0xFF), 127);
- } else {
- midi_send_noteoff(&midi_device, opt, (id & 0xFF), 127);
- }
- }
-
- if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
- if (record->event.pressed) {
- starting_note++;
- play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- return;
- } else {
- stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
- stop_all_notes();
- return;
- }
- }
- if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
- if (record->event.pressed) {
- starting_note--;
- play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- return;
- } else {
- stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
- stop_all_notes();
- return;
- }
- }
-
- if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
- offset++;
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- stop_all_notes();
- for (int i = 0; i <= 7; i++) {
- play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- _delay_us(80000);
- stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
- _delay_us(8000);
- }
- return;
- }
- if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
- offset--;
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- stop_all_notes();
- for (int i = 0; i <= 7; i++) {
- play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- _delay_us(80000);
- stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
- _delay_us(8000);
- }
- return;
- }
-
- if (record->event.pressed) {
- // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
- midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
- play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
- } else {
- // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
- midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
- stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
-Copyright 2015 Jack Humbert <jack.humb@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 KEYMAP_MIDI_H
-#define KEYMAP_MIDI_H
-
-#define MIDI 0x6000
-#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000
-
-#define CHNL(note, channel) (note + (channel << 8))
-
-#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \
- 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
- 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \
- 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \
- 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
-
-#define N_CN1 (0x600C + (12 * -1) + 0 )
-#define N_CN1S (0x600C + (12 * -1) + 1 )
-#define N_DN1F (0x600C + (12 * -1) + 1 )
-#define N_DN1 (0x600C + (12 * -1) + 2 )
-#define N_DN1S (0x600C + (12 * -1) + 3 )
-#define N_EN1F (0x600C + (12 * -1) + 3 )
-#define N_EN1 (0x600C + (12 * -1) + 4 )
-#define N_FN1 (0x600C + (12 * -1) + 5 )
-#define N_FN1S (0x600C + (12 * -1) + 6 )
-#define N_GN1F (0x600C + (12 * -1) + 6 )
-#define N_GN1 (0x600C + (12 * -1) + 7 )
-#define N_GN1S (0x600C + (12 * -1) + 8 )
-#define N_AN1F (0x600C + (12 * -1) + 8 )
-#define N_AN1 (0x600C + (12 * -1) + 9 )
-#define N_AN1S (0x600C + (12 * -1) + 10)
-#define N_BN1F (0x600C + (12 * -1) + 10)
-#define N_BN1 (0x600C + (12 * -1) + 11)
-#define N_C0 (0x600C + (12 * 0) + 0 )
-#define N_C0S (0x600C + (12 * 0) + 1 )
-#define N_D0F (0x600C + (12 * 0) + 1 )
-#define N_D0 (0x600C + (12 * 0) + 2 )
-#define N_D0S (0x600C + (12 * 0) + 3 )
-#define N_E0F (0x600C + (12 * 0) + 3 )
-#define N_E0 (0x600C + (12 * 0) + 4 )
-#define N_F0 (0x600C + (12 * 0) + 5 )
-#define N_F0S (0x600C + (12 * 0) + 6 )
-#define N_G0F (0x600C + (12 * 0) + 6 )
-#define N_G0 (0x600C + (12 * 0) + 7 )
-#define N_G0S (0x600C + (12 * 0) + 8 )
-#define N_A0F (0x600C + (12 * 0) + 8 )
-#define N_A0 (0x600C + (12 * 0) + 9 )
-#define N_A0S (0x600C + (12 * 0) + 10)
-#define N_B0F (0x600C + (12 * 0) + 10)
-#define N_B0 (0x600C + (12 * 0) + 11)
-#define N_C1 (0x600C + (12 * 1) + 0 )
-#define N_C1S (0x600C + (12 * 1) + 1 )
-#define N_D1F (0x600C + (12 * 1) + 1 )
-#define N_D1 (0x600C + (12 * 1) + 2 )
-#define N_D1S (0x600C + (12 * 1) + 3 )
-#define N_E1F (0x600C + (12 * 1) + 3 )
-#define N_E1 (0x600C + (12 * 1) + 4 )
-#define N_F1 (0x600C + (12 * 1) + 5 )
-#define N_F1S (0x600C + (12 * 1) + 6 )
-#define N_G1F (0x600C + (12 * 1) + 6 )
-#define N_G1 (0x600C + (12 * 1) + 7 )
-#define N_G1S (0x600C + (12 * 1) + 8 )
-#define N_A1F (0x600C + (12 * 1) + 8 )
-#define N_A1 (0x600C + (12 * 1) + 9 )
-#define N_A1S (0x600C + (12 * 1) + 10)
-#define N_B1F (0x600C + (12 * 1) + 10)
-#define N_B1 (0x600C + (12 * 1) + 11)
-#define N_C2 (0x600C + (12 * 2) + 0 )
-#define N_C2S (0x600C + (12 * 2) + 1 )
-#define N_D2F (0x600C + (12 * 2) + 1 )
-#define N_D2 (0x600C + (12 * 2) + 2 )
-#define N_D2S (0x600C + (12 * 2) + 3 )
-#define N_E2F (0x600C + (12 * 2) + 3 )
-#define N_E2 (0x600C + (12 * 2) + 4 )
-#define N_F2 (0x600C + (12 * 2) + 5 )
-#define N_F2S (0x600C + (12 * 2) + 6 )
-#define N_G2F (0x600C + (12 * 2) + 6 )
-#define N_G2 (0x600C + (12 * 2) + 7 )
-#define N_G2S (0x600C + (12 * 2) + 8 )
-#define N_A2F (0x600C + (12 * 2) + 8 )
-#define N_A2 (0x600C + (12 * 2) + 9 )
-#define N_A2S (0x600C + (12 * 2) + 10)
-#define N_B2F (0x600C + (12 * 2) + 10)
-#define N_B2 (0x600C + (12 * 2) + 11)
-#define N_C3 (0x600C + (12 * 3) + 0 )
-#define N_C3S (0x600C + (12 * 3) + 1 )
-#define N_D3F (0x600C + (12 * 3) + 1 )
-#define N_D3 (0x600C + (12 * 3) + 2 )
-#define N_D3S (0x600C + (12 * 3) + 3 )
-#define N_E3F (0x600C + (12 * 3) + 3 )
-#define N_E3 (0x600C + (12 * 3) + 4 )
-#define N_F3 (0x600C + (12 * 3) + 5 )
-#define N_F3S (0x600C + (12 * 3) + 6 )
-#define N_G3F (0x600C + (12 * 3) + 6 )
-#define N_G3 (0x600C + (12 * 3) + 7 )
-#define N_G3S (0x600C + (12 * 3) + 8 )
-#define N_A3F (0x600C + (12 * 3) + 8 )
-#define N_A3 (0x600C + (12 * 3) + 9 )
-#define N_A3S (0x600C + (12 * 3) + 10)
-#define N_B3F (0x600C + (12 * 3) + 10)
-#define N_B3 (0x600C + (12 * 3) + 11)
-#define N_C4 (0x600C + (12 * 4) + 0 )
-#define N_C4S (0x600C + (12 * 4) + 1 )
-#define N_D4F (0x600C + (12 * 4) + 1 )
-#define N_D4 (0x600C + (12 * 4) + 2 )
-#define N_D4S (0x600C + (12 * 4) + 3 )
-#define N_E4F (0x600C + (12 * 4) + 3 )
-#define N_E4 (0x600C + (12 * 4) + 4 )
-#define N_F4 (0x600C + (12 * 4) + 5 )
-#define N_F4S (0x600C + (12 * 4) + 6 )
-#define N_G4F (0x600C + (12 * 4) + 6 )
-#define N_G4 (0x600C + (12 * 4) + 7 )
-#define N_G4S (0x600C + (12 * 4) + 8 )
-#define N_A4F (0x600C + (12 * 4) + 8 )
-#define N_A4 (0x600C + (12 * 4) + 9 )
-#define N_A4S (0x600C + (12 * 4) + 10)
-#define N_B4F (0x600C + (12 * 4) + 10)
-#define N_B4 (0x600C + (12 * 4) + 11)
-#define N_C5 (0x600C + (12 * 5) + 0 )
-#define N_C5S (0x600C + (12 * 5) + 1 )
-#define N_D5F (0x600C + (12 * 5) + 1 )
-#define N_D5 (0x600C + (12 * 5) + 2 )
-#define N_D5S (0x600C + (12 * 5) + 3 )
-#define N_E5F (0x600C + (12 * 5) + 3 )
-#define N_E5 (0x600C + (12 * 5) + 4 )
-#define N_F5 (0x600C + (12 * 5) + 5 )
-#define N_F5S (0x600C + (12 * 5) + 6 )
-#define N_G5F (0x600C + (12 * 5) + 6 )
-#define N_G5 (0x600C + (12 * 5) + 7 )
-#define N_G5S (0x600C + (12 * 5) + 8 )
-#define N_A5F (0x600C + (12 * 5) + 8 )
-#define N_A5 (0x600C + (12 * 5) + 9 )
-#define N_A5S (0x600C + (12 * 5) + 10)
-#define N_B5F (0x600C + (12 * 5) + 10)
-#define N_B5 (0x600C + (12 * 5) + 11)
-#define N_C6 (0x600C + (12 * 6) + 0 )
-#define N_C6S (0x600C + (12 * 6) + 1 )
-#define N_D6F (0x600C + (12 * 6) + 1 )
-#define N_D6 (0x600C + (12 * 6) + 2 )
-#define N_D6S (0x600C + (12 * 6) + 3 )
-#define N_E6F (0x600C + (12 * 6) + 3 )
-#define N_E6 (0x600C + (12 * 6) + 4 )
-#define N_F6 (0x600C + (12 * 6) + 5 )
-#define N_F6S (0x600C + (12 * 6) + 6 )
-#define N_G6F (0x600C + (12 * 6) + 6 )
-#define N_G6 (0x600C + (12 * 6) + 7 )
-#define N_G6S (0x600C + (12 * 6) + 8 )
-#define N_A6F (0x600C + (12 * 6) + 8 )
-#define N_A6 (0x600C + (12 * 6) + 9 )
-#define N_A6S (0x600C + (12 * 6) + 10)
-#define N_B6F (0x600C + (12 * 6) + 10)
-#define N_B6 (0x600C + (12 * 6) + 11)
-#define N_C7 (0x600C + (12 * 7) + 0 )
-#define N_C7S (0x600C + (12 * 7) + 1 )
-#define N_D7F (0x600C + (12 * 7) + 1 )
-#define N_D7 (0x600C + (12 * 7) + 2 )
-#define N_D7S (0x600C + (12 * 7) + 3 )
-#define N_E7F (0x600C + (12 * 7) + 3 )
-#define N_E7 (0x600C + (12 * 7) + 4 )
-#define N_F7 (0x600C + (12 * 7) + 5 )
-#define N_F7S (0x600C + (12 * 7) + 6 )
-#define N_G7F (0x600C + (12 * 7) + 6 )
-#define N_G7 (0x600C + (12 * 7) + 7 )
-#define N_G7S (0x600C + (12 * 7) + 8 )
-#define N_A7F (0x600C + (12 * 7) + 8 )
-#define N_A7 (0x600C + (12 * 7) + 9 )
-#define N_A7S (0x600C + (12 * 7) + 10)
-#define N_B7F (0x600C + (12 * 7) + 10)
-#define N_B7 (0x600C + (12 * 7) + 11)
-#define N_C8 (0x600C + (12 * 8) + 0 )
-#define N_C8S (0x600C + (12 * 8) + 1 )
-#define N_D8F (0x600C + (12 * 8) + 1 )
-#define N_D8 (0x600C + (12 * 8) + 2 )
-#define N_D8S (0x600C + (12 * 8) + 3 )
-#define N_E8F (0x600C + (12 * 8) + 3 )
-#define N_E8 (0x600C + (12 * 8) + 4 )
-#define N_F8 (0x600C + (12 * 8) + 5 )
-#define N_F8S (0x600C + (12 * 8) + 6 )
-#define N_G8F (0x600C + (12 * 8) + 6 )
-#define N_G8 (0x600C + (12 * 8) + 7 )
-#define N_G8S (0x600C + (12 * 8) + 8 )
-#define N_A8F (0x600C + (12 * 8) + 8 )
-#define N_A8 (0x600C + (12 * 8) + 9 )
-#define N_A8S (0x600C + (12 * 8) + 10)
-#define N_B8F (0x600C + (12 * 8) + 10)
-#define N_B8 (0x600C + (12 * 8) + 11)
-#define N_C8 (0x600C + (12 * 8) + 0 )
-#define N_C8S (0x600C + (12 * 8) + 1 )
-#define N_D8F (0x600C + (12 * 8) + 1 )
-#define N_D8 (0x600C + (12 * 8) + 2 )
-#define N_D8S (0x600C + (12 * 8) + 3 )
-#define N_E8F (0x600C + (12 * 8) + 3 )
-#define N_E8 (0x600C + (12 * 8) + 4 )
-#define N_F8 (0x600C + (12 * 8) + 5 )
-#define N_F8S (0x600C + (12 * 8) + 6 )
-#define N_G8F (0x600C + (12 * 8) + 6 )
-#define N_G8 (0x600C + (12 * 8) + 7 )
-#define N_G8S (0x600C + (12 * 8) + 8 )
-#define N_A8F (0x600C + (12 * 8) + 8 )
-#define N_A8 (0x600C + (12 * 8) + 9 )
-#define N_A8S (0x600C + (12 * 8) + 10)
-#define N_B8F (0x600C + (12 * 8) + 10)
-#define N_B8 (0x600C + (12 * 8) + 11)
-
-#endif
\ No newline at end of file
--- /dev/null
+# The default Preonic layout - largely based on the Planck's
\ No newline at end of file
--- /dev/null
+#include "preonic.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _MUSIC 5
+#define _ADJUST 16
+
+// Macro name shortcuts
+#define QWERTY M(_QWERTY)
+#define COLEMAK M(_COLEMAK)
+#define DVORAK M(_DVORAK)
+#define LOWER M(_LOWER)
+#define RAISE M(_RAISE)
+#define M_BL 5
+#define AUD_OFF M(6)
+#define AUD_ON M(7)
+#define MUS_OFF M(8)
+#define MUS_ON M(9)
+#define VC_IN M(10)
+#define VC_DE M(11)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = {
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL},
+ {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
+ {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL},
+ {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
+ {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Music (reserved for process_action_user)
+ *
+ */
+[_MUSIC] = {
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Musoff|Mus on| | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+ {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
+ {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+ {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______},
+ {_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+#ifdef AUDIO_ENABLE
+float start_up[][2] = {
+ {440.0*pow(2.0,(14)/12.0), 20},
+ {440.0*pow(2.0,(26)/12.0), 8},
+ {440.0*pow(2.0,(18)/12.0), 20},
+ {440.0*pow(2.0,(26)/12.0), 8}
+};
+
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+float goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void persistant_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch(id) {
+ case _QWERTY:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_QWERTY);
+ }
+ break;
+ case _COLEMAK:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_COLEMAK);
+ }
+ break;
+ case _DVORAK:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_DVORAK);
+ }
+ break;
+ case _LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ break;
+ case _RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ break;
+ case M_BL:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ case 6:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ audio_off();
+ #endif
+ }
+ break;
+ case 7:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ audio_on();
+ PLAY_NOTE_ARRAY(start_up, false, 0);
+ #endif
+ }
+ break;
+ case 8:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ layer_off(_MUSIC);
+ stop_all_notes();
+ #endif
+ }
+ break;
+ case 9:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+ layer_on(_MUSIC);
+ #endif
+ }
+ break;
+ case 10:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ voice_iterate();
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+ #endif
+ }
+ break;
+ case 11:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ voice_deiterate();
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+ #endif
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+ #ifdef AUDIO_ENABLE
+ _delay_ms(20); // gets rid of tick
+ PLAY_NOTE_ARRAY(start_up, false, 0);
+ #endif
+}
+
+#ifdef AUDIO_ENABLE
+
+uint8_t starting_note = 0x0C;
+int offset = 0;
+
+void process_action_user(keyrecord_t *record) {
+
+ if (IS_LAYER_ON(_MUSIC)) {
+ if (record->event.pressed) {
+ play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
+ } else {
+ stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
+ }
+ }
+
+}
+
+void play_goodbye_tone()
+{
+ PLAY_NOTE_ARRAY(goodbye, false, 0);
+ _delay_ms(150);
+}
+
+#endif
\ No newline at end of file
--- /dev/null
+AUDIO_ENABLE = yes
\ No newline at end of file
--- /dev/null
+# Lock layout
+
+This layout is designed for having a lock switch in the lower-left-hand corner, and for experimenting with MIDI/audio features. It's constantly in development, so don't expect anything to work/be documented correctly!
\ No newline at end of file
--- /dev/null
+// 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 "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+#include "action_layer.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+#define _MI 5
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_CM] = { /* Colemak */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
+ {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
+ {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_RS] = { /* RAISE */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_MI] = { /* MIDI */
+ {MIDI12},
+ {MIDI12},
+ {MIDI12},
+ {MIDI12},
+ {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MIDI, MIDI, MIDI, MIDI}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+float start_up[][2] = {
+ {440.0*pow(2.0,(67)/12.0), 600},
+ {0, 50},
+ {440.0*pow(2.0,(64)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(55)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(60)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(64)/12.0), 1000},
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ default_layer_state = 1<<5;
+ } else {
+ unregister_code(KC_RSFT);
+ default_layer_state = 1<<0;
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+ init_notes();
+ play_notes(&start_up, 9, false);
+}
--- /dev/null
+# The Default Planck Layout
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QW] = { /* Qwerty */
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_CM] = { /* Colemak */
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_DV] = { /* Dvorak */
+ {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
+ {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
+ {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_RS] = { /* RAISE */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ },
+ [_LW] = { /* LOWER */
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ }
+ };
\ No newline at end of file
--- /dev/null
+// 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 "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_CM] = { /* Colemak */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
+ {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
+ {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_RS] = { /* RAISE */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+// Guitar Notes
+#define N_E 13180.5
+#define N_B 9870.8
+#define N_G 15680.0
+#define N_D 11740.7
+#define N_E 13180.5
+
+float start_up[][2] = {
+ { N_E, 500 },
+ { 0, 50 },
+ { N_E, 500 },
+ { 0, 50 },
+ { N_E, 500 },
+ { 0, 50 },
+ { N_B, 500 },
+ { 0, 50 },
+ { N_E, 1000 },
+ { 0, 50 },
+ { N_G, 1500 },
+ { 0, 50 },
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+#ifdef AUDIO_ENABLE
+ init_notes();
+ play_notes(&start_up, 12, false);
+#endif
+}
+
+void process_action_user(keyrecord_t *record) {
+#ifdef AUDIO_ENABLE
+ if (record->event.pressed) {
+ float keypress[][2] = {
+ {440.0*pow(2.0,(record->event.key.col*7)/12.0), 600}
+ };
+ play_notes(&keypress, 1, false);
+ }
+#endif
+}
+++ /dev/null
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <avr/io.h>
-#include "stdint.h"
-#include "led.h"
-
-
-void led_set(uint8_t usb_led)
-{
- // // Using PE6 Caps Lock LED
- // if (usb_led & (1<<USB_LED_CAPS_LOCK))
- // {
- // // Output high.
- // DDRE |= (1<<6);
- // PORTE |= (1<<6);
- // }
- // else
- // {
- // // Output low.
- // DDRE &= ~(1<<6);
- // PORTE &= ~(1<<6);
- // }
-}
+++ /dev/null
-/*
-Copyright 2012 Jun Wako
-Generated by planckkeyboard.com (2014 Jack Humbert)
-
-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/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 10
-#endif
-static uint8_t debouncing = DEBOUNCE;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
- backlight_init_ports();
-
- // Turn status LED on
- DDRE |= (1<<6);
- PORTE |= (1<<6);
-
- // initialize row and col
- unselect_rows();
- init_cols();
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-}
-
-
-uint8_t matrix_scan(void)
-{
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i] != cols) {
- matrix_debouncing[i] = cols;
- if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
- }
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- matrix[i] = matrix_debouncing[i];
- }
- }
- }
-
- return 1;
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- int B = 0, C = 0, D = 0, E = 0, F = 0;
- for(int x = 0; x < MATRIX_COLS; x++) {
- int col = COLS[x];
- if ((col & 0xF0) == 0x20) {
- B |= (1<<(col & 0x0F));
- } else if ((col & 0xF0) == 0x30) {
- C |= (1<<(col & 0x0F));
- } else if ((col & 0xF0) == 0x40) {
- D |= (1<<(col & 0x0F));
- } else if ((col & 0xF0) == 0x50) {
- E |= (1<<(col & 0x0F));
- } else if ((col & 0xF0) == 0x60) {
- F |= (1<<(col & 0x0F));
- }
- }
- DDRB &= ~(B); PORTB |= (B);
- DDRC &= ~(C); PORTC |= (C);
- DDRD &= ~(D); PORTD |= (D);
- DDRE &= ~(E); PORTE |= (E);
- DDRF &= ~(F); PORTF |= (F);
-}
-
-static matrix_row_t read_cols(void)
-{
- matrix_row_t result = 0;
- for(int x = 0; x < MATRIX_COLS; x++) {
- int col = COLS[x];
- if ((col & 0xF0) == 0x20) {
- result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1<<x));
- } else if ((col & 0xF0) == 0x30) {
- result |= (PINC&(1<<(col & 0x0F)) ? 0 : (1<<x));
- } else if ((col & 0xF0) == 0x40) {
- result |= (PIND&(1<<(col & 0x0F)) ? 0 : (1<<x));
- } else if ((col & 0xF0) == 0x50) {
- result |= (PINE&(1<<(col & 0x0F)) ? 0 : (1<<x));
- } else if ((col & 0xF0) == 0x60) {
- result |= (PINF&(1<<(col & 0x0F)) ? 0 : (1<<x));
- }
- }
- return result;
-}
-
-static void unselect_rows(void)
-{
- int B = 0, C = 0, D = 0, E = 0, F = 0;
- for(int x = 0; x < MATRIX_ROWS; x++) {
- int row = ROWS[x];
- if ((row & 0xF0) == 0x20) {
- B |= (1<<(row & 0x0F));
- } else if ((row & 0xF0) == 0x30) {
- C |= (1<<(row & 0x0F));
- } else if ((row & 0xF0) == 0x40) {
- D |= (1<<(row & 0x0F));
- } else if ((row & 0xF0) == 0x50) {
- E |= (1<<(row & 0x0F));
- } else if ((row & 0xF0) == 0x60) {
- F |= (1<<(row & 0x0F));
- }
- }
- DDRB &= ~(B); PORTB |= (B);
- DDRC &= ~(C); PORTC |= (C);
- DDRD &= ~(D); PORTD |= (D);
- DDRE &= ~(E); PORTE |= (E);
- DDRF &= ~(F); PORTF |= (F);
-}
-
-static void select_row(uint8_t row)
-{
- int row_pin = ROWS[row];
- if ((row_pin & 0xF0) == 0x20) {
- DDRB |= (1<<(row_pin & 0x0F));
- PORTB &= ~(1<<(row_pin & 0x0F));
- } else if ((row_pin & 0xF0) == 0x30) {
- DDRC |= (1<<(row_pin & 0x0F));
- PORTC &= ~(1<<(row_pin & 0x0F));
- } else if ((row_pin & 0xF0) == 0x40) {
- DDRD |= (1<<(row_pin & 0x0F));
- PORTD &= ~(1<<(row_pin & 0x0F));
- } else if ((row_pin & 0xF0) == 0x50) {
- DDRE |= (1<<(row_pin & 0x0F));
- PORTE &= ~(1<<(row_pin & 0x0F));
- } else if ((row_pin & 0xF0) == 0x60) {
- DDRF |= (1<<(row_pin & 0x0F));
- PORTF &= ~(1<<(row_pin & 0x0F));
- }
-}
\ No newline at end of file
--- /dev/null
+#include "preonic.h"
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+
+};
+
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {
+
+};
+
+void matrix_init_kb(void) {
+ #ifdef BACKLIGHT_ENABLE
+ backlight_init_ports();
+ #endif
+
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_init();
+ #endif
+
+
+ // Turn status LED on
+ DDRE |= (1<<6);
+ PORTE |= (1<<6);
+
+ matrix_init_user();
+};
+
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+};
+
+void process_action_kb(keyrecord_t *record) {
+ process_action_user(record);
+}
+
+#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
--- /dev/null
+#ifndef PREONIC_H
+#define PREONIC_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+#ifdef RGBLIGHT_ENABLE
+ #include "rgblight.h"
+#endif
+#include <stddef.h>
+#include <avr/io.h>
+#ifdef MIDI_ENABLE
+ #include <keymap_midi.h>
+#endif
+
+#define PREONIC_MIT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \
+ { k40, k41, k42, k43, k44, k45, k45, k47, k48, k49, k4a, k4b } \
+}
+
+#define PREONIC_GRID( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+void process_action_kb(keyrecord_t *record);
+
+#endif
--- /dev/null
+:100000000C947C050C94C0050C94C0050C94C005A0\r
+:100010000C94C0050C94C0050C94C0050C94C0054C\r
+:100020000C94C0050C94C0050C94C7180C94991935\r
+:100030000C94B2270C94C0050C94C0050C94C00518\r
+:100040000C94C0050C94C0050C94C0050C94C0051C\r
+:100050000C94C0050C941A280C94C0050C94C0058F\r
+:100060000C94C0050C94C0050C94C0050C94C005FC\r
+:100070000C94C0050C94C0050C94C0050C94C005EC\r
+:100080000C94E50E0C94C0050C94C0050C94C005AE\r
+:100090000C94C0050C94C0050C94C0050C94C005CC\r
+:1000A0000C94C0050C94C0050C94C0051B062B06CF\r
+:1000B0003D064D06530662066E06730680068806E8\r
+:1000C00098069D06061A281A161B281A161B6D1A62\r
+:1000D000901A161BE51AF81AFB1DFB1D381E381E58\r
+:1000E000921ED01E48214821E91E4821EA1FEA1F1E\r
+:1000F000AD20C4204821332107634236B79BD8A7DF\r
+:100100001A39685618AEBAAB558C1D3CB7CC57633C\r
+:10011000BD6DEDFD753EF6177231BF000000803FEA\r
+:1001200008000000BE922449123EABAAAA2ABECD06\r
+:10013000CCCC4C3E00000080BEABAAAAAA3E000078\r
+:100140000000BF000000803F000000000008417870\r
+:10015000D3BB4387D1133D190E3CC3BD4282AD2BA7\r
+:100160003E68EC8276BED98FE1A93E4C80EFFFBE9F\r
+:1001700001C4FF7F3F000000000035001E001F008B\r
+:100180002000210022002300240025002600270053\r
+:100190002A002B0014001A000800150017001C008C\r
+:1001A00018000C00120013004C0029000400160077\r
+:1001B000070009000A000B000D000E000F003300BD\r
+:1001C0003400E1001D001B000600190005001100AD\r
+:1001D000100036003700380028000530E000E2004B\r
+:1001E000E30003302C002C0004305000510052007A\r
+:1001F0004F0035001E001F002000210022002300B8\r
+:1002000024002500260027002A002B0014001A00D5\r
+:10021000090013000A000D000F0018001C00330035\r
+:100220004C002900040015001600170007000B0001\r
+:10023000110008000C0012003400E1001D001B003A\r
+:100240000600190005000E001000360037003800C7\r
+:1002500028000530E000E200E30003302C002C0011\r
+:1002600004305000510052004F0035001E001F00A6\r
+:100270002000210022002300240025002600270062\r
+:100280002A002B0034003600370013001C00090040\r
+:100290000A00060015000F004C002900040012009F\r
+:1002A000080018000C0007000B00170011001600D2\r
+:1002B0003800E100330014000D000E001B000500A3\r
+:1002C00010001A0019001D0028000530E000E200AF\r
+:1002D000E30003302C002C00043050005100520089\r
+:1002E0004F0035021E021F022002210222022302B9\r
+:1002F00024022502260227022A0035021E021F02BE\r
+:1003000020022102220223022402250226022702C1\r
+:100310004C004C003A003B003C003D003E003F00DA\r
+:100320002D022E022F023002310201004000410056\r
+:1003300042004300440045000100010001000100AB\r
+:1003400001000100010001000100010001000100A5\r
+:100350000100AB00AA00A900AE0035001E001F007E\r
+:100360002000210022002300240025002600270071\r
+:100370002A0035001E001F0020002100220023005B\r
+:1003800024002500260027004C004C003A003B00CA\r
+:100390003C003D003E003F002D002E002F003000AD\r
+:1003A000310001004000410042004300440045008C\r
+:1003B0000100010001000100010001000100010035\r
+:1003C00001000100010001000100AB00AA00A9002A\r
+:1003D000AE0000000000000000000000000000006F\r
+:1003E000000000000000000000000000000000000D\r
+:1003F00000000000000000000000000000000000FD\r
+:1004000000000000000000000000000000000000EC\r
+:1004100000000000000000000000000000000000DC\r
+:1004200000000000000000000000000000000000CC\r
+:100430000000000000000000000003300000000089\r
+:100440000430000000000000000000000000000078\r
+:10045000000000000000000000000000000000009C\r
+:10046000000000000000000000000000000000008C\r
+:10047000000000000000000000000000000000007C\r
+:10048000000000000000000000000000000000006C\r
+:10049000000000000000000000000000000000005C\r
+:1004A000000000000000000000000000000000004C\r
+:1004B000000000000000000000000000000000003C\r
+:1004C000000000000000000000000000000000002C\r
+:1004D000000000000000000000000000000000001C\r
+:1004E000000000000000000000000000000000000C\r
+:1004F00000000000000000000000000000000000FC\r
+:1005000000000000000000000000000000000000EB\r
+:1005100000000000000000000000000000000000DB\r
+:1005200000000000000000000000000000000000CB\r
+:1005300000000000000000000000000000000000BB\r
+:1005400000000000000000000000000000000000AB\r
+:10055000000000000000000000000000000000009B\r
+:10056000000000000000000000000000000000008B\r
+:10057000000000000000000000000000000000007B\r
+:10058000000000000000000000000000000000006B\r
+:10059000000000000000000000000000000000005B\r
+:1005A000000000000000000000000000000000004B\r
+:1005B000000000000000000000000000000000003B\r
+:1005C000000000000000000000000000000000002B\r
+:1005D000000000000000000000000000000000001B\r
+:1005E000000000000000000000000000000000000B\r
+:1005F00000000000000000000000000000000000FB\r
+:1006000000000000000000000000000000000000EA\r
+:1006100000000000000000000000000000000000DA\r
+:1006200000000000000000000000000000000000CA\r
+:1006300000000000000000000000000000000000BA\r
+:1006400000000000000000000000000000000000AA\r
+:10065000000000000000000000000000000000009A\r
+:10066000000000000000000000000000000000008A\r
+:10067000000000000000000000000000000000007A\r
+:10068000000000000000000000000000000000006A\r
+:10069000000000000000000000000000000000005A\r
+:1006A000000000000000000000000000000000004A\r
+:1006B000000000000000000000000000000000003A\r
+:1006C000000000000000000000000000000000002A\r
+:1006D000000000000000000000000000000000001A\r
+:1006E000000000000000000000000000000000000A\r
+:1006F00000000000000000000000000000000000FA\r
+:1007000000000000000000000000000000000000E9\r
+:1007100000000000000000000000000000000000D9\r
+:1007200000000000000000000000000000000000C9\r
+:1007300000000000000000000000000000000000B9\r
+:1007400000000000000000000000000000000000A9\r
+:100750000000000000000000000000000000000099\r
+:100760000000000000000000000000000000000089\r
+:100770000000000000000000000000000000000079\r
+:100780000000000000000000000000000000000069\r
+:100790000000000000000000000000000000000059\r
+:1007A0000000000000000000000000000000000049\r
+:1007B0000000000000000000000000000000000039\r
+:1007C0000000000000000000000000000000000029\r
+:1007D0000000000000000000000000000000000019\r
+:1007E0000000000000000000000000000000000009\r
+:1007F00000000000000000000000000000000000F9\r
+:1008000000000000000000000000000000000000E8\r
+:1008100000000000000000000000000000000000D8\r
+:1008200000000000000000000000000000000000C8\r
+:1008300000000000000000000000000000000000B8\r
+:1008400000000000000000000000000000000000A8\r
+:100850000000000000000000000000000000000098\r
+:100860000000000000000000000000000000000088\r
+:100870000000000000000000000000000000000078\r
+:100880000000000000000000000000000000000068\r
+:100890000000000000000000000000000000000058\r
+:1008A0000000000000000000000000000000000048\r
+:1008B0000000000000000000000000000000000038\r
+:1008C0000000000000000000000000000000000028\r
+:1008D0000000000000000000000000000000000018\r
+:1008E0000000000000000000000000000000000008\r
+:1008F000000000000000000000003A003B003C0047\r
+:100900003D003E003F0040004100420043004400E3\r
+:10091000450001000050010001000100010001003C\r
+:1009200001000100010001004C0001000100010074\r
+:1009300007300630135012500030013002300100F1\r
+:10094000010001000B300A300930083001000100BD\r
+:10095000010001000100010001000100010001008F\r
+:10096000010001000100010001000100010001007F\r
+:1009700001002A0354006800650020005000720046\r
+:1009800065006F006E006900630020004B00650089\r
+:10099000790062006F0061007200640000002C03A7\r
+:1009A0004F007200740068006F006C0069006E00F8\r
+:1009B00065006100720020004B0065007900620054\r
+:1009C0006F006100720064007300000004030904FA\r
+:1009D00009025400030100A0FA0904000001030108\r
+:1009E0000100092111010001223F000705810308D0\r
+:1009F000000A09040100010301020009211101009C\r
+:100A000001224D000705820308000A0904020001C3\r
+:100A100003000000092111010001223600070583AF\r
+:100A20000308000A1201100100000008EDFE6160D9\r
+:100A300001000102000105010980A10185021601E2\r
+:100A40000026B7001A01002AB70075109501810031\r
+:100A5000C0050C0901A1018503160100269C021A9C\r
+:100A600001002A9C02751095018100C00501090250\r
+:100A7000A1010901A1000509190129051500250198\r
+:100A80009505750181029501750381010501093004\r
+:100A900009311581257F9502750881060938158170\r
+:100AA000257F950175088106050C0A3802158125F8\r
+:100AB0007F950175088106C0C005010906A10105E1\r
+:100AC0000719E029E71500250195087501810295B0\r
+:100AD0000175088101050819012905950575019120\r
+:100AE000029501750391010507190029FF150025DD\r
+:100AF000FF950675088100C011241FBECFEFDAE014\r
+:100B0000DEBFCDBF04B603FE24C08091F3039091F5\r
+:100B1000F403A091F503B091F6038730904BA74002\r
+:100B2000B04BB9F41092F3031092F4031092F50352\r
+:100B30001092F60314BE84B7877F84BF88E10FB696\r
+:100B4000F89480936000109260000FBEE0E0F8E33C\r
+:100B5000099512E0A0E0B1E0E8EAF3E602C00590F2\r
+:100B60000D92A63FB107D9F713E0A6EFB2E001C09E\r
+:100B70001D92A33FB107E1F70E940D160C94D231EC\r
+:100B80000C940000279A2F988FEF9FEF9093870087\r
+:100B9000809386008AE08093800089E180938100C1\r
+:100BA0000C94092D282F81110BC080918000877F24\r
+:100BB0008093800010928D0010928C002F980895E1\r
+:100BC0002F9880918000886080938000233019F4F2\r
+:100BD0008FEF9FEF0FC083E090E0821B9109880F99\r
+:100BE000991F2FEF3FEFA90102C0569547958A95AF\r
+:100BF000E2F7CA0190938D0080938C000895CF9303\r
+:100C0000DF93EC010E94AE28BE0180E090E0DF910E\r
+:100C1000CF910C9428250F931F93462F50E04C3012\r
+:100C2000510508F098C0DC01FA01EA5AFF4F12960C\r
+:100C30008C910C949631882309F48DC000E010E06B\r
+:100C4000980140E064E070E089EC91E00E9463125A\r
+:100C500081E090E00FC0882309F47DC000E010E03F\r
+:100C6000980140E066E070E089E591E00E9463123F\r
+:100C700082E090E00E94FF056EC0882309F46BC0FB\r
+:100C800000E010E0980140E068E070E089E891E061\r
+:100C90000E94631284E090E0EDCF882311F083E09E\r
+:100CA00005C083E00CC0882349F084E00E94A5259C\r
+:100CB00040E164E083E00E94C90A4DC084E00E94E4\r
+:100CC000C625F6CF882331F085EE0E948F1C0E9446\r
+:100CD000602D41C085EE0E94571D3DC08823D9F18B\r
+:100CE0000E94F70D38C08823B1F10E94F00D00E09A\r
+:100CF00010E0980140E064E070E089EE91E029C0E6\r
+:100D0000882349F185E00E94C6250E94180E23C061\r
+:100D1000882309F100E010E0980140E068E070E00D\r
+:100D200089E191E00E94631285E00E94A52513C02D\r
+:100D3000882389F00E94F61204C0882361F00E9483\r
+:100D4000011300E010E0980140E068E070E089E104\r
+:100D500091E00E94631280E090E01F910F9108954E\r
+:100D60000F931F932FEF89EF90E021508040904028\r
+:100D7000E1F700C0000000E010E0980140E064E00E\r
+:100D800070E089EE91E00E9463121F910F91089527\r
+:100D9000CF92DF92EF92FF920F931F93CF93DF9347\r
+:100DA000CDB7DEB7CC58D1090FB6F894DEBF0FBE71\r
+:100DB000CDBF2091B30325FFC5C08C01FC019281FA\r
+:100DC00080910001992309F460C096E4E5E2F2E025\r
+:100DD000DE01A95BBF4F01900D929A95E1F7F801F2\r
+:100DE0009081E091F602F091F702E90FF11DEE0F0C\r
+:100DF000FF1F27E430E02C0F3D1FE20FF31F60813F\r
+:100E00007181680F711D882777FD8095982F0E944A\r
+:100E1000A42E20E030E040E451E40E94092E6B0152\r
+:100E20007C01F801218185E090E0821B9109BC01E1\r
+:100E3000882777FD8095982F0E94A42E9B01AC01F6\r
+:100E4000C701B6010E94A12D9B01AC0160E070E0DA\r
+:100E500080E090E40E94173020E030E04CE551E45F\r
+:100E60000E94B42F4FE050E0C457DF4F0FB6F89404\r
+:100E7000DEBF0FBECDBFDF91CF911F910F91FF90CD\r
+:100E8000EF90DF90CF900C94031296E4E5E2F2E04D\r
+:100E9000DE01119601900D929A95E1F7F80190818B\r
+:100EA000E091F602F091F702E90FF11DEE0FFF1F3E\r
+:100EB00021E030E02C0F3D1FE20FF31F60817181B4\r
+:100EC000680F711D882777FD8095982F0E94A42EAA\r
+:100ED00020E030E040E451E40E94092E6B017C01E7\r
+:100EE000F801218185E090E0821B9109BC018827EF\r
+:100EF00077FD8095982F0E94A42E9B01AC01C7011D\r
+:100F0000B6010E94A12D9B01AC0160E070E080E081\r
+:100F100090E40E94173020E030E04CE551E40E945C\r
+:100F2000B42FC457DF4F0FB6F894DEBF0FBECDBF4E\r
+:100F3000DF91CF911F910F91FF90EF90DF90CF90B5\r
+:100F40000C944B0EC457DF4F0FB6F894DEBF0FBEA4\r
+:100F5000CDBFDF91CF911F910F91FF90EF90DF9068\r
+:100F6000CF9008950F931F9300E010E0980140E0A8\r
+:100F700063E070E081E091E00E9463122FEF82E570\r
+:100F800097E0215080409040E1F700C000001F91A1\r
+:100F90000F91089508950E94C2056E9A769A0C9456\r
+:100FA000B0060C94CA070C94C8060895880F991FC0\r
+:100FB000FC01E650F040859194910895880F991FA7\r
+:100FC000FC01E658FE4F8591949108950F931F936D\r
+:100FD000CF93DF93EC01811520E49207A0F5C115B2\r
+:100FE00080E3D80708F0E1C0C83ED105D8F4C03E80\r
+:100FF000D10508F0EEC1C83AD10578F4C53AD1055B\r
+:1010000008F074C0C130D10509F46DC008F4DEC128\r
+:10101000C430D10508F0DDC1D9C1CB3BD10508F4FE\r
+:1010200070C0D4C1C11590E2D90708F0B9C0C1158C\r
+:1010300021E0D20708F0CDC1C03FD10508F4C6C1F8\r
+:101040008E01106506C2C13080E5D80709F4BDC025\r
+:1010500068F5C13120E4D20709F4AEC050F4C031C4\r
+:1010600090E4D90708F0A5C0CF70DD278E01146D7C\r
+:10107000F0C1C33120E4D20709F4A4C008F49FC032\r
+:10108000C115D04509F0A2C10E946C210E94180E22\r
+:101090000E94B2079FEF24E38CE0915020408040F3\r
+:1010A000E1F700C000000E943F28D3C1C11520E62F\r
+:1010B000D20730F4C11581E5D80708F48CC02DC1E2\r
+:1010C000C11590E7D90708F481C1C11520E8D207FE\r
+:1010D00008F478C1C11580E9D80708F077C1DF703E\r
+:1010E0008E01106AB6C101E010E0B3C1C53AD10566\r
+:1010F00009F471C1C63AD10509F070C102E810E4E3\r
+:10110000A8C1C83AD10509F46CC1C93AD10509F49E\r
+:101110006BC1CA3AD10509F46AC1CB3AD10509F4C9\r
+:1011200069C1CC3AD10509F468C1CD3AD10509F4B9\r
+:1011300067C1C03BD10509F466C1CE3AD10509F4B7\r
+:1011400065C1CF3AD10509F464C1C13BD10509F4A9\r
+:1011500063C1C23BD10509F462C1C33BD10509F4A7\r
+:1011600061C1C43BD10509F460C1C53BD10509F497\r
+:101170005FC1C63BD10509F45EC1C73BD10509F487\r
+:101180005DC1C83BD10509F45CC1C93BD10509F477\r
+:101190005BC1CA3BD10509F45AC100E014E459C14E\r
+:1011A000CE019F700E94DE0755C1DD278E01106CB5\r
+:1011B00050C100E011ED4DC100E010ED4AC100E06A\r
+:1011C00012ED47C100E013ED44C18091C703816077\r
+:1011D0008093C7033EC10E949B28811102C00E94D8\r
+:1011E00077280E94B32890E09093F2038093F10354\r
+:1011F000C23090E5D90721F48091F103816086C067\r
+:10120000C43020E5D20721F48091F10382607EC0D2\r
+:10121000C63080E5D80721F48091F103846076C060\r
+:10122000C83090E5D90719F48091F10327C0CA307E\r
+:1012300020E5D20721F48091F103806167C0CC30B2\r
+:1012400080E5D80721F48091F10380625FC0CE3041\r
+:1012500090E5D90721F48091F103806457C0C03133\r
+:1012600020E5D20721F48091F10380684FC0C2319C\r
+:1012700080E5D80729F48091F1038460886046C036\r
+:10128000C33090E5D90721F48091F1038E7F3EC0F1\r
+:10129000C53020E5D20721F48091F1038D7F36C05F\r
+:1012A000C73080E5D80721F48091F1038B7F2EC0F1\r
+:1012B000C93090E5D90719F48091F10326C0CB30ED\r
+:1012C00020E5D20721F48091F1038F7E1FC0CD303D\r
+:1012D00080E5D80721F48091F1038F7D17C0CF30CE\r
+:1012E00090E5D90721F48091F1038F7B0FC0C131C4\r
+:1012F00020E5D20721F48091F1038F7707C0C33135\r
+:10130000D04531F48091F1038B7F877F8093F10387\r
+:101310008091F1030E94B7289CC08D2F99278F7070\r
+:10132000992781309105D9F49E012370332702C09B\r
+:10133000880F991F2A95E2F79C688E0144E0000F00\r
+:10134000111F4A95E1F700271370802B912B53E072\r
+:10135000CC0FDD1F5A95E1F7C076DD272FC0823014\r
+:10136000910531F4DC2FCC278E01016F106A71C01A\r
+:101370008330910569F4CE018370992701E010E074\r
+:1013800002C0000F111F8A95E2F7C8019C680FC0C8\r
+:10139000049709F05EC0CE018370992701E010E048\r
+:1013A00002C0000F111F8A95E2F7C8019A6823E076\r
+:1013B000CC0FDD1F2A95E1F7C07ED7708C010C2B76\r
+:1013C0001D2B47C0DF708E01106243C000E010E0AB\r
+:1013D00040C08E013EC001E810E43BC003E810E4C9\r
+:1013E00038C002EE14E435C009EE14E432C00AEE4F\r
+:1013F00014E42FC005EB14E42CC006EB14E429C060\r
+:1014000007EB14E426C00CEC14E423C00DEC14E448\r
+:1014100020C003E815E41DC00AE815E41AC002E97B\r
+:1014200015E417C004E915E414C001E216E411C084\r
+:1014300003E216E40EC004E216E40BC005E216E473\r
+:1014400008C006E216E405C007E216E402C00AE29C\r
+:1014500016E4C801DF91CF911F910F9108959CE090\r
+:10146000799FF00111249CE3899FE00DF11D112467\r
+:10147000E60FF11DEE0FFF1FE658FE4F8591949188\r
+:10148000803E9105E0F4803C910558F5813391054B\r
+:1014900009F46FC048F48932910509F463C08A32B7\r
+:1014A000910509F46DC072C089339105E9F0823865\r
+:1014B0009105D1F08533910509F44DC067C0833E95\r
+:1014C000910581F138F4803E9105B9F0823E910595\r
+:1014D000D9F05CC0863E910561F1873E9105A1F18E\r
+:1014E00055C00E94D60708952091F10320FD02C047\r
+:1014F00021FF4CC080EE90E049C08091F10380FF55\r
+:10150000F9CF89E390E042C08091F10382FF0EC0E1\r
+:101510008091F10384FF03C080E090E037C083EE48\r
+:1015200090E034C08091F10382FFF2CF82EE90E030\r
+:101530002DC08091F10383FF0BC08091F10384FDE6\r
+:10154000EBCF87EE90E022C08091F10383FFF5CFCF\r
+:1015500086EE90E01BC08091F10385FF07C089E211\r
+:1015600090E014C08091F10385FFF9CF85E390E00E\r
+:101570000DC08091F10386FF07C08AE290E006C0AB\r
+:101580008091F10386FFF9CF81E390E00E94E607A6\r
+:101590000895CF92DF92EF92FF920F931F9301E095\r
+:1015A00010E020E030E06801790104C0CC0CDD1CC3\r
+:1015B000EE1CFF1C8A95D2F704C0000F111F221FDA\r
+:1015C000331F6A95D2F70C291D292E293F29C09077\r
+:1015D000B303D090B403E090B503F090B603C022FB\r
+:1015E000D122E222F322842FC016D106E206F306AE\r
+:1015F00041F41F910F91FF90EF90DF90CF900C94EA\r
+:10160000A5251F910F91FF90EF90DF90CF900C9444\r
+:10161000C62508950C94090B5F926F927F928F926A\r
+:101620009F92AF92BF92CF92DF92EF92FF920F9371\r
+:101630001F93CF93DF93CDB7DEB72A970FB6F894F9\r
+:10164000DEBF0FBECDBFCE0101966C014E019BE007\r
+:10165000890E911C20E030E040E050E060E070E056\r
+:1016600000E010E0E12CF12C6C2C5D2C8AE0782E4F\r
+:10167000AA24A394B12CEBE6F2E0A62DB52D872D7C\r
+:1016800001900D928A95E1F7F601819191916F0198\r
+:10169000FC01E07FFF27E032F10559F48F709927B4\r
+:1016A000F50102C0EE0FFF1F8A95E2F7EE2AFF2A2E\r
+:1016B00037C0E033F10559F48F709927F50102C066\r
+:1016C000EE0FFF1F8A95E2F70E2B1F2B29C0E03487\r
+:1016D000F10559F48F709927F50102C0EE0FFF1F35\r
+:1016E0008A95E2F76E2B7F2B1BC0E035F10559F48C\r
+:1016F0008F709927F50102C0EE0FFF1F8A95E2F760\r
+:101700004E2B5F2B0DC0E036F10551F48F709927F9\r
+:10171000F50102C0EE0FFF1F8A95E2F72E2B3F2B3B\r
+:10172000C814D90409F0A7CF84B19E2D90958923C0\r
+:1017300084B985B1E82AE5B887B1902F90958923BF\r
+:1017400087B988B1082B08B98AB1962F909589235B\r
+:101750008AB98BB1682B6BB98DB1942F9095892381\r
+:101760008DB98EB1482B4EB980B3922F90958923B5\r
+:1017700080BB81B3282B21BB2A960FB6F894DEBF1D\r
+:101780000FBECDBFDF91CF911F910F91FF90EF90D2\r
+:10179000DF90CF90BF90AF909F908F907F906F9091\r
+:1017A0005F9008955F926F927F928F929F92AF9217\r
+:1017B000BF92CF92DF92EF92FF920F931F93CF933E\r
+:1017C000DF93CDB7DEB768970FB6F894DEBF0FBED4\r
+:1017D000CDBF85B7806885BF85B7806885BF0E940B\r
+:1017E0000C0BCE0101966C014E0199E1890E911C02\r
+:1017F00020E030E040E050E060E070E000E010E029\r
+:10180000E12CF12C6C2C5D2C88E1782EAA24A39479\r
+:10181000B12CE5E7F2E0A62DB52D872D01900D92B4\r
+:101820008A95E1F7F601819191916F01FC01E07FCA\r
+:10183000FF27E032F10559F48F709927F50102C0B6\r
+:10184000EE0FFF1F8A95E2F7EE2AFF2A37C0E0333A\r
+:10185000F10559F48F709927F50102C0EE0FFF1FB3\r
+:101860008A95E2F70E2B1F2B29C0E034F10559F4BD\r
+:101870008F709927F50102C0EE0FFF1F8A95E2F7DE\r
+:101880006E2B7F2B1BC0E035F10559F48F70992723\r
+:10189000F50102C0EE0FFF1F8A95E2F74E2B5F2B7A\r
+:1018A0000DC0E036F10551F48F709927F50102C0A3\r
+:1018B000EE0FFF1F8A95E2F72E2B3F2BC814D90499\r
+:1018C00009F0A7CF84B19E2D9095892384B985B165\r
+:1018D000E82AE5B887B1902F9095892387B988B118\r
+:1018E000082B08B98AB1962F909589238AB98BB1B4\r
+:1018F000682B6BB98DB1942F909589238DB98EB1DA\r
+:10190000482B4EB980B3922F9095892380BB81B329\r
+:10191000282B21BBE2E0F3E0A8EFB2E01192119294\r
+:101920001D921D9283E0EC30F807C1F768960FB660\r
+:10193000F894DEBF0FBECDBFDF91CF911F910F9105\r
+:10194000FF90EF90DF90CF90BF90AF909F908F90DF\r
+:101950007F906F905F900C94CB075F926F927F9215\r
+:101960008F929F92AF92BF92CF92DF92EF92FF92AF\r
+:101970000F931F93CF93DF93CDB7DEB7A2970FB628\r
+:10198000F894DEBF0FBECDBF6E0149E1C40ED11C7D\r
+:1019900088EFA82E82E0B82E75019AE0592E4601F4\r
+:1019A00001E010E028E1622E35E0732EEBE6F2E074\r
+:1019B000D401852D01900D928A95E1F7D6018D9184\r
+:1019C0009D916D019C01207F33272032310591F4D8\r
+:1019D00024B18F709927F80102C0EE0FFF1F8A957E\r
+:1019E000E2F7CF01922F982B94B995B18095892376\r
+:1019F00085B953C02033310591F427B18F709927F1\r
+:101A0000A80102C0440F551F8A95E2F7CA01922F20\r
+:101A1000982B97B998B18095892388B93EC0203416\r
+:101A2000310591F42AB18F709927D80102C0AA0F0D\r
+:101A3000BB1F8A95E2F7CD01922F982B9AB99BB1E3\r
+:101A4000809589238BB929C02035310591F42DB1BA\r
+:101A50008F709927F80102C0EE0FFF1F8A95E2F7F9\r
+:101A6000CF01922F982B9DB99EB1809589238EB975\r
+:101A700014C02036310589F420B38F709927A8014E\r
+:101A800002C0440F551F8A95E2F7CA01922F982B86\r
+:101A900090BB91B38095892381BB50EA5A95F1F7A9\r
+:101AA000BE016F5F7F4F20E030E040E050E0E5E7AF\r
+:101AB000F2E0DE011196862D01900D928A95E1F7F4\r
+:101AC000DB018D919D91BD01FC01E07FFF27E0329C\r
+:101AD000F10511F4E3B113C0E033F10511F4E6B1FF\r
+:101AE0000EC0E034F10511F4E9B109C0E035F105AB\r
+:101AF00011F4ECB104C0E036F105B9F4EFB1F0E057\r
+:101B00008F70992702C0F595E7958A95E2F7E0FD79\r
+:101B100008C0C801042E02C0880F991F0A94E2F77A\r
+:101B200002C080E090E0282B392B4F5F5F4F4C3094\r
+:101B3000510509F0BCCFF70180819181821793078D\r
+:101B400021F031832083709209020E940C0BF2E095\r
+:101B5000EF0EF11C42E0E41643E0F40609F026CF54\r
+:101B6000809109028823C9F081508093090288235B\r
+:101B700039F08FE99FE00197F1F700C000000DC038\r
+:101B8000E2E0F3E0D5018D919D915D018193919308\r
+:101B9000B2E0AB16B3E0BB06A9F70E94D10781E023\r
+:101BA000A2960FB6F894DEBF0FBECDBFDF91CF91E6\r
+:101BB0001F910F91FF90EF90DF90CF90BF90AF906B\r
+:101BC0009F908F907F906F905F900895E82FF0E046\r
+:101BD000EE0FFF1FEE5FFC4F808191810895089505\r
+:101BE0008091DC0381608093DC030C94C928809190\r
+:101BF000DC038E7F8093DC030C94C9280E949B2811\r
+:101C0000811102C00E9477280E94C5288093DC03BE\r
+:101C10003E9A809171008D7F8093710082E0809365\r
+:101C200090008AE18093910081E080930E030895F3\r
+:101C300080910E03811102C00E94FE0D10925E037E\r
+:101C400010925D03809171008D7F8093710080916F\r
+:101C500090008F77809390001092200310921F03C2\r
+:101C600010925703109258031092590310925A037E\r
+:101C70001092560310925503E5E3F3E0A5E2B3E0BA\r
+:101C800011921192119211921D921D9283E0E535ED\r
+:101C9000F807B1F70895CF92DF92EF92FF920F937A\r
+:101CA0001F93CF93DF9320911F03222309F484C055\r
+:101CB0006B017C0180910E03811102C00E94FE0D18\r
+:101CC00005E513E0C7E0D0E0A7019601F801929185\r
+:101CD0008291729162918F010E94052E811131C013\r
+:101CE000FE01EE0FFF1FEE0FFF1FEB5CFC4F10829B\r
+:101CF000118212821382DE01AA0FBB1FAB5DBC4FA3\r
+:101D000011961C921E92C730D105E9F021964481AC\r
+:101D10005581668177814083518362837383148206\r
+:101D200015821682178212968D919C9113971196A7\r
+:101D30009C938E9313961C921E9212973496129631\r
+:101D4000E2CF219708F680915D0390915E030197A1\r
+:101D500097FD05C090935E0380935D0304C01092CD\r
+:101D60005E0310925D0380915D0390915E0320916C\r
+:101D70005B0330915C032817390724F010925C0351\r
+:101D800010925B03892BC1F4809171008D7F809349\r
+:101D90007100809190008F7780939000109257038C\r
+:101DA000109258031092590310925A03109256033E\r
+:101DB0001092550310921F03DF91CF911F910F9145\r
+:101DC000FF90EF90DF90CF9008951F920F920FB683\r
+:101DD0000F9211244F925F926F927F928F929F92F7\r
+:101DE000AF92BF92CF92DF92EF92FF922F933F93E9\r
+:101DF0004F935F936F937F938F939F93AF93BF9313\r
+:101E0000CF93DF93EF93FF9380911F03882309F40F\r
+:101E10009BC1C0915D03D0915E031C161D060CF0A2\r
+:101E200093C140900F035090100360901103709085\r
+:101E3000120320E030E0A901C301B2010E94B02FDB\r
+:101E400018160CF065C0C130D10509F452C080915C\r
+:101E50005B0390915C03BE010E9482317C019093F0\r
+:101E60005C0380935B038090210390902203A090F9\r
+:101E70002303B090240320E030E040E85FE3C50195\r
+:101E8000B4010E94A12D60932103709322038093DB\r
+:101E9000230390932403F701EE0FFF1FEE0FFF1FA4\r
+:101EA000EB5CFC4FA301920160817181828193817F\r
+:101EB0000E94092E20E030E040E05EE30E94B42F53\r
+:101EC0009B01AC01C501B4010E94B02F18168CF41F\r
+:101ED000C7010196BE010E94823190935C038093FA\r
+:101EE0005B0310922103109222031092230310929D\r
+:101EF0002403E0915B03F0915C03EE0FFF1FEE0FF4\r
+:101F0000FF1FEB5CFC4F6081718182819381D0C0A7\r
+:101F1000C0905703D0905803E0905903F0905A03B3\r
+:101F200020E030E0A901C701B6010E94052E2197EB\r
+:101F3000882309F4A2C0FE01EE0FFF1FEE0FFF1F62\r
+:101F4000EB5CFC4F80809180A280B380A50194015E\r
+:101F5000C701B6010E94052E87FF31C0A50194017B\r
+:101F600060E070E08CED93EC0E94092E20E030E000\r
+:101F700040E451E40E94092E20E030E040E05FE3BD\r
+:101F80000E94B42F9B01AC0160E070E080E090E41F\r
+:101F90000E9417309B01AC01C501B4010E94B42F0F\r
+:101FA0009B01AC01C701B6010E94052E87FF07C047\r
+:101FB000A701960160E070E08CED93E439C0A501C3\r
+:101FC0009401C701B6010E94B02F18160CF055C03D\r
+:101FD000A501940160E070E08CED93E40E94092E6D\r
+:101FE00020E030E040E451E40E94092E20E030E09F\r
+:101FF00040E05FE30E94B42F9B01AC0160E070E021\r
+:1020000080E090E40E9417309B01AC01C501B4014F\r
+:102010000E94B42F9B01AC01C701B6010E94B02FF2\r
+:1020200018165CF5A701960160E070E08CED93EC6A\r
+:102030000E94092E20E030E040E451E40E94092E85\r
+:1020400020E030E040E05FE30E94B42F9B01AC0150\r
+:1020500060E070E080E090E40E9417309B01AC01EA\r
+:10206000C701B6010E94B42F6093570370935803C1\r
+:102070008093590390935A0313C0FE01EE0FFF1F84\r
+:10208000EE0FFF1FEB5CFC4F80819181A281B38139\r
+:102090008093570390935803A0935903B0935A0326\r
+:1020A00060915703709158038091590390915A039E\r
+:1020B00020910C0330910D032F3F4FEF340731F087\r
+:1020C0002F5F3F4F30930D0320930C030E940C139E\r
+:1020D0006B017C0120E034E244EF51E40E94052EC4\r
+:1020E00087FF08C086EFC82E88E2D82E84EFE82E3E\r
+:1020F00081E4F82E20E030E040E051E4C701B60171\r
+:102100000E94B42F9B01AC0160E074E284E79BE481\r
+:102110000E94092E6B017C010E94712E7093970022\r
+:102120006093960020910A0230910B0240910C02BC\r
+:1021300050910D02C701B6010E94B42F0E94712E6A\r
+:10214000709399006093980080912003882309F48C\r
+:1021500033C1C0901B03D0901C03E0901D03F0908E\r
+:102160001E0320E030E0A901C701B6010E94B02F94\r
+:102170001816D4F580910C0390910D038F3F2FEF2B\r
+:10218000920729F0019690930D0380930C03C701E9\r
+:10219000B6010E940C1320E030E040E051E40E94C0\r
+:1021A000B42F9B01AC0160E074E284E79BE40E94E1\r
+:1021B000092E6B017C010E94712E70939700609331\r
+:1021C000960020910A0230910B0240910C0250912E\r
+:1021D0000D02C701B6010E94B42F0E94712E7093A8\r
+:1021E00099006093980008C0109297001092960092\r
+:1021F0001092990010929800609115037091160347\r
+:102200006F5F7F4F709316036093150320919600C4\r
+:102210003091970080E090E0232BF1F0C091960080\r
+:10222000D09197000E94A22E6B017C01BE0180E03C\r
+:1022300090E00E94A22E9B01AC0160911703709167\r
+:1022400018038091190390911A030E94092E20E02F\r
+:102250003FEF4FE757E410C00E94A22E6B017C01B4\r
+:1022600020E030EE4FEF54E46091170370911803B3\r
+:102270008091190390911A030E94B42F9B01AC0125\r
+:10228000C701B6010E94B02F87FD96C0809113034D\r
+:102290008F5F8093130390E02091D8033091D9038E\r
+:1022A00082179307A0F08091E303882319F010921E\r
+:1022B00013030DC0809171008D7F80937100809118\r
+:1022C00090008F7780939000109220037DC08091C2\r
+:1022D0001403C0911303811128C0C090DD03D09076\r
+:1022E000DE03E090DF03F090E00320E030E0A9019E\r
+:1022F000C701B6010E94B02F1816BCF481E080938C\r
+:10230000140310921B0310921C0310921D031092D1\r
+:102310001E03C0921703D0921803E0921903F092A3\r
+:102320001A03C150C093130343C0109214031092B8\r
+:102330000D0310920C03E091DA03F091DB0348E007\r
+:10234000C49FE00DF11D112480819181A281B38190\r
+:1023500080931B0390931C03A0931D03B0931E0353\r
+:1023600020E030E040E85EE36481758186819781FA\r
+:102370000E94B42F6B017C0120E030E048EC52E475\r
+:1023800060910E0270910F028091100290911102E3\r
+:102390000E94092E9B01AC01C701B6010E94B42F17\r
+:1023A00060931703709318038093190390931A0393\r
+:1023B00010921603109215038091DC0380FD04C077\r
+:1023C0001092200310921F03FF91EF91DF91CF91A4\r
+:1023D000BF91AF919F918F917F916F915F914F913D\r
+:1023E0003F912F91FF90EF90DF90CF90BF90AF90F3\r
+:1023F0009F908F907F906F905F904F900F900FBE47\r
+:102400000F901F901895CF92DF92EF92FF92CF938B\r
+:10241000DF936B017C01EA0180910E03811102C000\r
+:102420000E94FE0D8091DC0380FF46C080915D0319\r
+:1024300090915E0308970CF03FC0809171008D7FF2\r
+:10244000809371008091200381110E94180E81E019\r
+:1024500080931F0310920D0310920C0320E030E0D4\r
+:10246000A901C701B6010E94B02F1816DCF48091B3\r
+:102470005D0390915E03FC01EE0FFF1FEE0FFF1F47\r
+:10248000EB5CFC4FC082D182E282F382FC01EE0F52\r
+:10249000FF1FEB5DFC4FD183C083019690935E03D9\r
+:1024A00080935D03809171008260809371008091C0\r
+:1024B0009000806880939000DF91CF91FF90EF9023\r
+:1024C000DF90CF9008958F929F92AF92BF92CF925C\r
+:1024D000DF92EF92FF920F931F93CF93DF93EC0164\r
+:1024E0007B01D42E4801590180910E03811102C055\r
+:1024F0000E94FE0D8091DC0380FF6BC08091710013\r
+:102500008D7F8093710080911F0381110E94180EAE\r
+:1025100081E080932003D093DB03C093DA03F09231\r
+:10252000D903E092D803D092E3038092DD03909226\r
+:10253000DE03A092DF03B092E00310922103109219\r
+:102540002203109223031092240310921303888114\r
+:102550009981AA81BB8180931B0390931C03A09354\r
+:102560001D03B0931E0320E030E040E85EE36C8181\r
+:102570007D818E819F810E94B42F6B017C0120E0C0\r
+:1025800030E048EC52E460910E0270910F028091AD\r
+:102590001002909111020E94092E9B01AC01C7010B\r
+:1025A000B6010E94B42F60931703709318038093B1\r
+:1025B000190390931A031092160310921503809139\r
+:1025C0007100826080937100809190008068809398\r
+:1025D0009000DF91CF911F910F91FF90EF90DF90CE\r
+:1025E000CF90BF90AF909F908F90089580915F03A0\r
+:1025F00090E0019666E070E00E94823180935F0374\r
+:10260000089580915F0390E0019766E070E00E947A\r
+:10261000823180935F0308958F929F92AF92BF9211\r
+:10262000CF92DF92EF92FF920F931F93CF93DF939E\r
+:102630006B017C01C0910C03D0910D03BE0180E0C1\r
+:1026400090E00E94A22E4B015C01A701960160E080\r
+:1026500070E08CE594E40E94092E9B01AC01C50159\r
+:10266000B4010E94B42F0E94762E20915F03233084\r
+:1026700009F473C028F4222351F02130E9F02CC171\r
+:10268000243009F4A0C0253009F4E0C025C180E061\r
+:1026900090E0A0E0BFE380930A0290930B02A09326\r
+:1026A0000C02B0930D0210920F03109210031092BF\r
+:1026B00011031092120310C110920F031092100315\r
+:1026C00010921103109212036431710540F46A30C4\r
+:1026D000710560F520E030E040E85EE32BC0693C26\r
+:1026E000710508F0AAC080E090E00E94A22E20E0D0\r
+:1026F00030E040EA51E40E94A02D20E030E044E3C5\r
+:1027000053E40E94092E9B01AC010E94B42F20E0EB\r
+:1027100030E040E05EE30E94B42F9B01AC0160E03A\r
+:1027200070E080E09EE30E94A02D44C020E030E0F5\r
+:1027300040E05FE3C701B6010E94B42F6B017C014A\r
+:1027400080E090E0A0E0BEE380930A0290930B0249\r
+:10275000A0930C02B0930D02BFC010920F03109211\r
+:10276000100310921103109212034AE0469F900149\r
+:10277000479F300D1124C90168EB7BE00E946E3148\r
+:10278000BC016C5D754077FF03C07195619571095F\r
+:10279000882777FD8095982F0E94A42E2EE333EC96\r
+:1027A0004EE259E30E94B42F20E030E040EC5EE3BB\r
+:1027B0000E94A12D60930A0270930B0280930C0279\r
+:1027C00090930D0289C010920F0310921003109283\r
+:1027D000110310921203CE0183709927892BE1F027\r
+:1027E000BE016170772780E090E00E94A22E20E079\r
+:1027F00030E040E05EE30E94B42F20E030E040E4AF\r
+:102800005FE30E94A12D60930A0270930B028093F4\r
+:102810000C0290930D020CC080E090E0A0E0BFE3BA\r
+:1028200080930A0290930B02A0930C02B0930D02C6\r
+:10283000C770DD27CD2B09F04FC010920A0210920D\r
+:102840000B0210920C0210920D0246C010920F0360\r
+:1028500010921003109211031092120300E010E086\r
+:1028600020E03FE300930A0210930B0220930C0236\r
+:1028700030930D026739710578F180E090E00E9495\r
+:10288000A22E20E030E047E153E40E94A02D20E09A\r
+:1028900030E04AE754E40E94092E20E030E048E4AA\r
+:1028A00052E40E94B42F20E030E040EA51E40E945C\r
+:1028B000E62E0E94712E660F771F660F771FFB01B1\r
+:1028C000E357FD4F2081318142815381C701B60119\r
+:1028D0000E94B42F6B017C01C701B601DF91CF913B\r
+:1028E0001F910F91FF90EF90DF90CF90BF90AF902E\r
+:1028F0009F908F900895809168030895CF93DF9300\r
+:1029000000D01F92CDB7DEB79C018091E8038430E0\r
+:1029100019F593E099833B832A839093E9008FEF25\r
+:102920009091E800815095FD06C095ED9A95F1F7DC\r
+:1029300000008111F5CF8091E80085FF0DC040E0D7\r
+:1029400050E063E070E0CE0101960E94B7168091DE\r
+:10295000E8008E778093E8000F900F900F90DF9142\r
+:10296000CF910895CF93DF9300D01F92CDB7DEB7FC\r
+:102970002091E803243021F522E029839B838A8378\r
+:1029800083E08093E9008FEF9091E800815095FDFE\r
+:1029900006C095ED9A95F1F700008111F5CF809171\r
+:1029A000E80085FF0DC040E050E063E070E0CE013C\r
+:1029B00001960E94B7168091E8008E778093E80018\r
+:1029C0000F900F900F90DF91CF9108952091E80321\r
+:1029D0002430F1F422E02093E9002FEF3091E80059\r
+:1029E000215035FD06C035ED3A95F1F70000211173\r
+:1029F000F5CF2091E80025FF0BC040E050E065E0F6\r
+:102A000070E00E94B7168091E8008E778093E8000E\r
+:102A10000895CF93DF932091E803243039F521E026\r
+:102A20002093E9002FEF3091E800215035FD06C0DA\r
+:102A300035ED3A95F1F700002111F5CF2091E8002E\r
+:102A400025FF14C0EC0140E050E068E070E00E9417\r
+:102A5000B7168091E8008E778093E80088E0FE0149\r
+:102A6000A0E6B3E001900D928A95E1F7DF91CF9156\r
+:102A700008958091E703811109C00E944C180E94BB\r
+:102A8000A9188091E20084608093E200089510927A\r
+:102A9000E7030895089508950C94A72742E061EC98\r
+:102AA00081E00E94C61742E061EC82E00E94C617F6\r
+:102AB00042E061EC83E00C94C6178091EA03833016\r
+:102AC00009F453C030F4813071F0823009F48CC0C5\r
+:102AD00008958A3009F478C08B3009F45EC08930DB\r
+:102AE00009F09AC020C08091E903813A09F094C0AE\r
+:102AF0008091E800877F8093E8008091ED039091BA\r
+:102B0000EE03892B21F468E080E693E003C060E0E7\r
+:102B100080E090E070E00E9402178091E8008B77DF\r
+:102B20008093E80008958091E903813209F074C030\r
+:102B30008091ED039091EE03892B09F06DC0809197\r
+:102B4000E800877F8093E8008091E80082FD05C05F\r
+:102B50008091E8038111F8CF5FC08091F1008093EC\r
+:102B600068038091E8008B7753C08091E903813A34\r
+:102B700009F052C08091ED039091EE03892B09F08A\r
+:102B80004BC08091E800877F8093E8008091E80047\r
+:102B900080FFFCCF80911C0236C08091E903813216\r
+:102BA000D9F58091ED039091EE03892BA9F58091E1\r
+:102BB000E800877F8093E8000E94FB178091EB0379\r
+:102BC00080931C020C946C218091E903813221F5E1\r
+:102BD0008091E800877F8093E8000E94FB17809136\r
+:102BE000EC038093690308958091E903813AA1F48D\r
+:102BF0008091E800877F8093E8008091E80080FF63\r
+:102C0000FCCF809169038093F1008091E8008E777A\r
+:102C10008093E8000C94FB17089584B7877F84BFE6\r
+:102C200088E10FB6F89480936000109260000FBEA8\r
+:102C300090E080E80FB6F894809361009093610073\r
+:102C40000FBE0E949E1B0E944C180E94A9188091E2\r
+:102C5000E20084608093E20078940E942F1B0E941F\r
+:102C6000A01B82E192E00E944A1B8091E80385301C\r
+:102C700069F40E9461278091E6038823B1F30E94E2\r
+:102C80008F27882391F30E94A116EFCF0E94A81BE3\r
+:102C9000ECCF292F332723303105C9F064F42130DC\r
+:102CA000310581F02230310509F043C084E590E020\r
+:102CB00020ED39E042C021323105F1F022323105F8\r
+:102CC00041F137C082E190E024E23AE036C0992732\r
+:102CD0008130910541F08230910541F0892B49F511\r
+:102CE000ECECF9E005C0EEE9F9E002C0E2E7F9E05A\r
+:102CF000849190E09F0121C06330D8F4E62FF0E08A\r
+:102D0000EE0FFF1FEA51FD4F2081318189E090E0F5\r
+:102D100014C0633070F470E0FB01EE0FFF1FE0524F\r
+:102D2000FD4F20813181FB01E352FD4F808190E016\r
+:102D300004C080E090E020E030E0FA01318320839D\r
+:102D4000089580E189BD82E189BD09B400FEFDCF0F\r
+:102D50008091D8008F7D8093D8008091E0008260C0\r
+:102D60008093E0008091E00081FDFCCF0895CF9238\r
+:102D7000DF92EF92FF920F931F93CF93DF93EC01BB\r
+:102D80008B016A010E941A18811133C0C114D10449\r
+:102D900039F0F60180819181081B190BC80FD91FEA\r
+:102DA000E12CF12C0115110519F18091E80085FD48\r
+:102DB00016C08091E8008E778093E800C114D1049A\r
+:102DC00049F0F60180819181E80EF91EF182E082DE\r
+:102DD00085E00FC00E941A18882321F30AC0899148\r
+:102DE0008093F10001501109FFEFEF1AFF0ADACFCB\r
+:102DF00080E0DF91CF911F910F91FF90EF90DF90D6\r
+:102E0000CF9008952091EF033091F00326173707F4\r
+:102E100048F06115710539F42091E8002E77209370\r
+:102E2000E80001C0B90140E061157105A9F12091E8\r
+:102E3000E803222309F443C0253009F442C020915D\r
+:102E4000E80023FD40C02091E80022FD32C020911F\r
+:102E5000E80020FFE9CF4091F3002091F20030E03C\r
+:102E6000342BFC01CF016115710559F02830310573\r
+:102E700040F481918093F100615071092F5F3F4FC1\r
+:102E8000F1CF41E02830310509F040E02091E80021\r
+:102E90002E772093E800C8CF4111C9CF0AC0809196\r
+:102EA000E803882361F0853061F08091E80083FDBC\r
+:102EB0000AC08091E80082FFF2CF80E0089582E0AE\r
+:102EC000089583E0089581E008952091EF03309103\r
+:102ED000F0032617370748F06115710539F4209182\r
+:102EE000E8002E772093E80001C0B901FC0120E042\r
+:102EF0006115710591F18091E803882309F440C0C0\r
+:102F0000853009F43FC08091E80083FD3DC0809189\r
+:102F1000E80082FD2FC08091E80080FFE9CF20917A\r
+:102F2000F3008091F20090E0922B6115710559F049\r
+:102F30008830910540F424912093F100319661503E\r
+:102F400071090196F2CF21E0089709F020E0809105\r
+:102F5000E8008E778093E800CBCF2111CCCF0AC058\r
+:102F60008091E803882361F0853061F08091E8006A\r
+:102F700083FD0AC08091E80082FFF2CF80E00895CF\r
+:102F800082E0089583E0089581E00895982F9730B6\r
+:102F900058F59093E900981739F07091EC00209162\r
+:102FA000ED005091F00003C0242F762F50E021FF58\r
+:102FB00019C03091EB003E7F3093EB003091ED0073\r
+:102FC0003D7F3093ED003091EB0031603093EB00AA\r
+:102FD0007093EC002093ED005093F0002091EE00F0\r
+:102FE00027FF07C09F5FD3CF8F708093E90081E0F8\r
+:102FF000089580E008958091E90387FF11C08091D2\r
+:10300000E80082FD05C08091E8038111F8CF11C06E\r
+:103010008091E8008B770BC08091E803882349F00A\r
+:103020008091E80080FFF8CF8091E8008E77809350\r
+:10303000E80008952091E4003091E50095E6409184\r
+:10304000EC00842F817040FF22C08091E80080FD59\r
+:103050001CC08091E803882391F0853091F0809125\r
+:10306000EB0085FD10C04091E4005091E50042174F\r
+:10307000530729F39A01915011F784E0089582E0F3\r
+:10308000089583E0089581E0089580E008954091D7\r
+:10309000E80042FFDECF08950E94BA180E94C218CD\r
+:1030A000E0EEF0E0808181608083E8EDF0E08081F7\r
+:1030B0008F77808319BCA7EDB0E08C918E7F8C93C5\r
+:1030C00080818F7E80831092E70308950F931F9372\r
+:1030D000CF93DF930E94BA180E94C218C8EDD0E0C7\r
+:1030E00088818F77888388818068888388818F7DB5\r
+:1030F000888319BC1092E8031092E4031092E6034F\r
+:103100001092E50300EE10E0F80180818B7F808350\r
+:1031100088818160888342E060E080E00E94C61779\r
+:10312000E1EEF0E080818E7F8083E2EEF0E080814E\r
+:1031300081608083808188608083F80180818E7FB8\r
+:103140008083888180618883DF91CF911F910F9167\r
+:103150000895E8EDF0E080818F7E8083E7EDF0E078\r
+:1031600080818160808384E082BF81E08093E70377\r
+:103170000C946618E8EDF0E080818E7F80831092D9\r
+:10318000E20008951092DA001092E10008951F9273\r
+:103190000F920FB60F9211242F933F934F935F938B\r
+:1031A0006F937F938F939F93AF93BF93EF93FF930F\r
+:1031B0008091E10082FF0BC08091E20082FF07C096\r
+:1031C0008091E1008B7F8093E1000E942E1B809113\r
+:1031D000DA0080FF1FC08091D80080FF1BC0809163\r
+:1031E000DA008E7F8093DA008091D90080FF0DC0D5\r
+:1031F00080E189BD82E189BD09B400FEFDCF81E097\r
+:103200008093E8030E94391505C019BC1092E803A9\r
+:103210000E9447158091E10080FF19C08091E20073\r
+:1032200080FF15C08091E2008E7F8093E200809144\r
+:10323000E20080618093E2008091D80080628093F8\r
+:10324000D80019BC85E08093E8030E944B1580915B\r
+:10325000E10084FF30C08091E20084FF2CC080E157\r
+:1032600089BD82E189BD09B400FEFDCF8091D800FF\r
+:103270008F7D8093D8008091E1008F7E8093E10064\r
+:103280008091E2008F7E8093E2008091E200816075\r
+:103290008093E2008091E403882311F084E007C06A\r
+:1032A0008091E30087FD02C081E001C083E080934C\r
+:1032B000E8030E944C158091E10083FF29C08091B2\r
+:1032C000E20083FF25C08091E100877F8093E100C9\r
+:1032D00082E08093E8031092E4038091E1008E7F06\r
+:1032E0008093E1008091E2008E7F8093E2008091E4\r
+:1032F000E20080618093E20042E060E080E00E94B2\r
+:10330000C6178091F00088608093F0000E944A15F3\r
+:10331000FF91EF91BF91AF919F918F917F916F91AD\r
+:103320005F914F913F912F910F900FBE0F901F9083\r
+:1033300018951F920F920FB60F9211242F933F935F\r
+:103340004F935F936F937F938F939F93AF93BF93AD\r
+:10335000CF93DF93EF93FF93C091E900CF708091FB\r
+:10336000EC00D82FD17080FDD0E81092E900809158\r
+:10337000F000877F8093F00078940E94DD1910920E\r
+:10338000E9008091F00088608093F000CD2BCF7031\r
+:10339000C093E900FF91EF91DF91CF91BF91AF9181\r
+:1033A0009F918F917F916F915F914F913F912F915D\r
+:1033B0000F900FBE0F901F9018951F93CF93DF9320\r
+:1033C000CDB7DEB7AA970FB6F894DEBF0FBECDBF5C\r
+:1033D000E9EEF3E088E08E0F9091F10091938E1367\r
+:1033E000FBCF0E945D158091E80083FF1FC1809193\r
+:1033F000E9039091EA03492F50E04A30510508F063\r
+:1034000015C1FA01EE59FF4F0C949631803881F0C6\r
+:10341000823809F00BC18091ED038F708093E90031\r
+:103420008091EB0085FB882780F91092E90006C0A7\r
+:103430008091E5039091E603911182609091E800FC\r
+:10344000977F9093E8008093F1001092F100C8C03C\r
+:10345000282F2D7F09F0EAC0882319F0823061F00F\r
+:10346000E5C08091EB03813009F0E0C0933009F0B2\r
+:1034700080E08093E6032BC08091EB03811127C08D\r
+:103480008091ED038F7009F4D1C08093E900209101\r
+:10349000EB0020FF1CC0933021F48091EB00806290\r
+:1034A00014C09091EB0090619093EB0021E030E02C\r
+:1034B000A90102C0440F551F8A95E2F74093EA0024\r
+:1034C0001092EA008091EB0088608093EB001092EC\r
+:1034D000E9008091E800877F86C08111A7C0109124\r
+:1034E000EB031F778091E3008078812B8093E300CA\r
+:1034F0008091E800877F8093E8000E94FB1780910D\r
+:10350000E80080FFFCCF8091E30080688093E300B7\r
+:10351000111102C082E001C083E08093E80386C0FD\r
+:103520008058823008F082C08091EB039091EC03C8\r
+:103530008C3D53E0950779F583E08A838AE289839D\r
+:103540004FB7F894DE01139620E03EE051E2E32FFE\r
+:10355000F0E050935700E49120FF03C0E295EF7034\r
+:103560003F5FEF708E2F90E0EA3010F0C79601C0F9\r
+:10357000C0968D939D932F5F243149F74FBF809163\r
+:10358000E800877F8093E8006AE270E0CE01019650\r
+:103590000E94021714C0AE014F5F5F4F6091ED03B0\r
+:1035A0000E944916BC01009709F440C09091E800C0\r
+:1035B000977F9093E80089819A810E946517809196\r
+:1035C000E8008B778093E80031C0803879F58091EE\r
+:1035D000E800877F8093E8008091E4038093F10006\r
+:1035E0008091E8008E778093E8000E94FB171EC050\r
+:1035F00081111CC09091EB039230C0F48091E800DF\r
+:10360000877F8093E8009093E4030E94FB178091EA\r
+:10361000E403811106C08091E30087FD02C081E0D0\r
+:1036200001C084E08093E8030E944E158091E80079\r
+:1036300083FF0AC08091E800877F8093E800809133\r
+:10364000EB0080628093EB00AA960FB6F894DEBF81\r
+:103650000FBECDBFDF91CF911F9108950895CF93F5\r
+:103660008091E8038823A1F0C091E900CF70909188\r
+:10367000EC00892F817090FD80E8C82B1092E90042\r
+:103680008091E80083FD0E94DD19CF70C093E900AE\r
+:10369000CF91089590936F0380936E030895E09106\r
+:1036A0006E03F0916F03309721F00190F081E02DCF\r
+:1036B000099480E00895E0916E03F0916F033097D4\r
+:1036C00021F00280F381E02D09940895E0916E03CA\r
+:1036D000F0916F03309721F00480F581E02D09947B\r
+:1036E000089520916C0330916D038217930771F058\r
+:1036F00090936D0380936C03E0916E03F0916F03E0\r
+:10370000309721F00680F781E02D099408952091EB\r
+:103710006A0330916B038217930771F090936B03E8\r
+:1037200080936A03E0916E03F0916F03309721F06C\r
+:103730000084F185E02D0994089508950C949D1B53\r
+:103740000E94DB270E94D20B0E9461280C94092D55\r
+:103750004F925F927F928F929F92AF92BF92CF9241\r
+:10376000DF92EF92FF920F931F93CF93DF93CDB72A\r
+:10377000DEB72A970FB6F894DEBF0FBECDBF0E940A\r
+:10378000AD0C91E7C92E93E0D92E00E010E0AA24F9\r
+:10379000A394B12C702E802F0E94E60D4C01F601EF\r
+:1037A000419051906F014826592641145104B1F4BB\r
+:1037B0000F5F1F4F0530110569F78FEF89838A83EB\r
+:1037C0001B820E94E4278160782F9D838C8349812E\r
+:1037D0005A816B818D810E94611C3AC08091C70320\r
+:1037E00081FD0E94EF0D20E030E07501022E02C045\r
+:1037F000EE0CFF1C0A94E2F7C70184219521892B66\r
+:1038000009F12E837F828E209F2091E0892809F480\r
+:1038100090E098870E94E4278160782F9A878987B3\r
+:103820004E815F8168858A850E94611C000F111F8F\r
+:10383000F801EF58FC4F80819181E826F926F1824A\r
+:10384000E08206C02F5F3F4F2C30310571F6B0CFBC\r
+:103850000E94482A109170030E944F1B1817D9F03C\r
+:103860000E944F1B809370032A960FB6F894DEBF18\r
+:103870000FBECDBFDF91CF911F910F91FF90EF90C1\r
+:10388000DF90CF90BF90AF909F908F907F905F9090\r
+:103890004F900C940A0B2A960FB6F894DEBF0FBE19\r
+:1038A000CDBFDF91CF911F910F91FF90EF90DF90EF\r
+:1038B000CF90BF90AF909F908F907F905F904F90F0\r
+:1038C0000895CF93DF93CDB7DEB72B970FB6F8945B\r
+:1038D000DEBF0FBECDBF4F83588769877A878B873E\r
+:1038E000DE01119686E0FD0111928A95E9F785E0E7\r
+:1038F000FE01379601900D928A95E1F749815A8130\r
+:103900006B817C818D819E810E9406242B960FB64F\r
+:10391000F894DEBF0FBECDBFDF91CF910895CF9356\r
+:10392000882309F4C2C0C82F823859F40E944F1B63\r
+:1039300081FDBBC089E30E94AF260E94322789E344\r
+:103940000CC0833879F40E944F1B80FDAEC083E524\r
+:103950000E94AF260E94322783E50E94CC26CF9199\r
+:103960000C943227843859F40E944F1B82FD9DC06D\r
+:1039700087E40E94AF260E94322787E4EECF8CEFC7\r
+:103980008C0F813A48F48C2F0E94712C81118DC0CC\r
+:103990008C2F0E94AF26E3CF80E28C0F883048F452\r
+:1039A000C77081E001C0880FCA95EAF70E94EB2634\r
+:1039B000D6CF8BE58C0F833078F4C53A29F0C63A20\r
+:1039C00031F083E890E005C081E890E002C082E831\r
+:1039D00090E0CF910C94711B88E58C0F833108F037\r
+:1039E00064C0C83A39F1C93A41F1CA3A49F1CB3A0F\r
+:1039F00051F1CC3A59F1CD3A61F1C03B69F1CE3A7F\r
+:103A000071F1CF3A79F1C13B81F1C23B89F1C33BFE\r
+:103A100091F1C43B99F1C53BA1F1C63BA9F1C73B6C\r
+:103A2000B1F1C83BB9F1C93BC1F1CA3BC9F180E072\r
+:103A300090E038C082EE90E035C089EE90E032C070\r
+:103A40008AEE90E02FC085EB90E02CC086EB90E0F2\r
+:103A500029C087EB90E026C08CEC90E023C08DEC71\r
+:103A600090E020C083E891E01DC08AE891E01AC090\r
+:103A700082E991E017C084E991E014C081E292E00C\r
+:103A800011C083E292E00EC084E292E00BC085E2B6\r
+:103A900092E008C086E292E005C087E292E002C0B0\r
+:103AA0008AE292E0CF910C94871BCF9108958823EE\r
+:103AB00009F44BC0823859F40E944F1B81FF45C066\r
+:103AC00089E30E94AF260E94322789E30CC0833825\r
+:103AD00071F40E944F1B80FF38C083E50E94AF261F\r
+:103AE0000E94322783E50E94CC260C94322784382A\r
+:103AF00059F40E944F1B82FF28C087E40E94AF2622\r
+:103B00000E94322787E4EFCF9CEF980F913A58F349\r
+:103B100090E2980F983050F4877091E001C0990FAF\r
+:103B20008A95EAF7892F0E94F126DFCF9BE5980F4F\r
+:103B3000933020F480E090E00C94711B885A83311C\r
+:103B400020F480E090E00C94871B0895882321F0F6\r
+:103B50000E94EB260C9432270895882321F00E94BE\r
+:103B6000F1260C9432270895BF92CF92DF92EF9204\r
+:103B7000FF920F931F93CF93DF9300D000D000D01C\r
+:103B8000CDB7DEB725E0FC01DE01119601900D9264\r
+:103B90002A95E1F7FC01D0801181028125812295CF\r
+:103BA0002F7043815481452B09F472C31F3F21F4C8\r
+:103BB000FFEFDF1609F46CC37C012E830E94D3074C\r
+:103BC000D9821A8369817A81802F0E94AB26182FAF\r
+:103BD000B92E0E9460260E9427252E81002319F00D\r
+:103BE0000E9408272E81EB2DE295EF70F0E0E4595A\r
+:103BF000FF4F0C9496318B2D807F9B2D9F70F92E5B\r
+:103C0000882319F0F29480EFF822002389F0FF2036\r
+:103C100009F47CC280E2810F883020F48F2D0E944D\r
+:103C2000EB2603C08F2D0E94FB260E9432276EC216\r
+:103C3000812F0E94571DFF2009F42AC3105E8F2D8B\r
+:103C4000183018F40E94F12602C00E94012726961F\r
+:103C50000FB6F894DEBF0FBECDBFDF91CF911F919D\r
+:103C60000F91FF90EF90DF90CF90BF900C94322790\r
+:103C70008B2D807F9B2D9F70803211F4892F03C084\r
+:103C8000892F8295807F112319F0113011F12BC0FB\r
+:103C90000023A9F0222389F1213079F526960FB669\r
+:103CA000F894DEBF0FBECDBFDF91CF911F910F9172\r
+:103CB000FF90EF90DF90CF90BF900C941B272223B2\r
+:103CC00019F0213009F4E4C28E830E941E278E81F0\r
+:103CD0009BC1002321F0263008F0DAC20EC0253047\r
+:103CE00008F0D6C291C10023C9F0222331F0F701B8\r
+:103CF000958190FF0BC29F70958326960FB6F8941E\r
+:103D0000DEBF0FBECDBFDF91CF911F910F91FF900E\r
+:103D1000EF90DF90CF90BF900C94A61D222309F462\r
+:103D200073C109C22B2D26952695237030E02115ED\r
+:103D3000310521F021303105D1F0AAC2002321F054\r
+:103D4000812F9B2D937002C080E090E026960FB6E5\r
+:103D5000F894DEBF0FBECDBFDF91CF911F910F91C1\r
+:103D6000FF90EF90DF90CF90BF900C94711B0023D9\r
+:103D700021F0812F9B2D937002C080E090E0269669\r
+:103D80000FB6F894DEBF0FBECDBFDF91CF911F916C\r
+:103D90000F91FF90EF90DF90CF90BF900C94871B16\r
+:103DA000812F002319F00E94502902C00E94B829D7\r
+:103DB00026960FB6F894DEBF0FBECDBFDF91CF9130\r
+:103DC0001F910F91FF90EF90DF90CF90BF900C94D8\r
+:103DD0003D2A8B2D837009F07BC0011159C2812FC0\r
+:103DE000829586958770880F880F912F9F70C92EB6\r
+:103DF000D12CE12CF12C082E04C0CC0CDD1CEE1CC7\r
+:103E0000FF1C0A94D2F714FF12C04FE050E060E0AC\r
+:103E100070E004C0440F551F661F771F8A95D2F7C4\r
+:103E2000CB01BA01609570958095909503C060E0D4\r
+:103E300070E0CB012B2D269526952370422F50E064\r
+:103E400042305105D9F04330510569F16C297D2983\r
+:103E50008E299F294130510551F126960FB6F894CD\r
+:103E6000DEBF0FBECDBFDF91CF911F910F91FF90AD\r
+:103E7000EF90DF90CF90BF900C944E256C297D2958\r
+:103E80008E299F2926960FB6F894DEBF0FBECDBFB0\r
+:103E9000DF91CF911F910F91FF90EF90DF90CF9026\r
+:103EA000BF900C946A250E944E25C701B601269644\r
+:103EB0000FB6F894DEBF0FBECDBFDF91CF911F913B\r
+:103EC0000F91FF90EF90DF90CF90BF900C94322530\r
+:103ED000002319F08B2D817001C08695882309F489\r
+:103EE000D7C1812F829586958770880F880F912F73\r
+:103EF0009F70C92ED12CE12CF12C082E04C0CC0CC3\r
+:103F0000DD1CEE1CFF1C0A94D2F714FF12C04FE018\r
+:103F100050E060E070E004C0440F551F661F771F3B\r
+:103F20008A95D2F7CB01BA016095709580959095EE\r
+:103F300003C060E070E0CB012B2D26952695237001\r
+:103F4000422F50E042305105D9F04330510569F11C\r
+:103F50006C297D298E299F294130510551F12696E2\r
+:103F60000FB6F894DEBF0FBECDBFDF91CF911F918A\r
+:103F70000F91FF90EF90DF90CF90BF900C94282688\r
+:103F80006C297D298E299F2926960FB6F894DEBFCD\r
+:103F90000FBECDBFDF91CF911F910F91FF90EF909A\r
+:103FA000DF90CF90BF900C9444260E942826C70132\r
+:103FB000B60126960FB6F894DEBF0FBECDBFDF91D7\r
+:103FC000CF911F910F91FF90EF90DF90CF90BF9016\r
+:103FD0000C940C26103F49F118F4103E48F491C09F\r
+:103FE000123F09F453C0E8F1133F09F464C089C0DB\r
+:103FF0001F708B2D8F71002321F00E94A525812F2A\r
+:104000007CCE0E94C625812F26960FB6F894DEBF7F\r
+:104010000FBECDBFDF91CF911F910F91FF90EF9019\r
+:10402000DF90CF90BF900C94AD1D0023B1F02530F0\r
+:1040300008F02EC18B2D8F7126960FB6F894DEBF37\r
+:104040000FBECDBFDF91CF911F910F91FF90EF90E9\r
+:10405000DF90CF90BF900C94EB25263008F018C16C\r
+:10406000E9CF0023A9F08B2D8F7126960FB6F89417\r
+:10407000DEBF0FBECDBFDF91CF911F910F91FF909B\r
+:10408000EF90DF90CF90BF900C94A525002359F3BB\r
+:104090008B2D8F7126960FB6F894DEBF0FBECDBF65\r
+:1040A000DF91CF911F910F91FF90EF90DF90CF9014\r
+:1040B000BF900C94C625002399F08B2D8F71269606\r
+:1040C0000FB6F894DEBF0FBECDBFDF91CF911F9129\r
+:1040D0000F91FF90EF90DF90CF90BF900C949025C0\r
+:1040E00026960FB6F894DEBF0FBECDBFDF91CF91FD\r
+:1040F0001F910F91FF90EF90DF90CF90BF900C94A5\r
+:1041000086250023A9F0222309F4ADCF812F26961E\r
+:104110000FB6F894DEBF0FBECDBFDF91CF911F91D8\r
+:104120000F91FF90EF90DF90CF90BF900C948F1C79\r
+:10413000222309F4ADCF812F26960FB6F894DEBF67\r
+:104140000FBECDBFDF91CF911F910F91FF90EF90E8\r
+:10415000DF90CF90BF900C94571D4B2D4F70612F67\r
+:10416000C7010E940B0626960FB6F894DEBF0FBE5D\r
+:10417000CDBFDF91CF911F910F91FF90EF90DF9016\r
+:10418000CF90BF900C94AA24011182C09B2D9F70E8\r
+:10419000492F50E04230510509F443C0C4F44115A1\r
+:1041A000510571F14130510509F072C026960FB6E4\r
+:1041B000F894DEBF0FBECDBFDF91CF911F910F915D\r
+:1041C000FF90EF90DF90CF90BF900C94312D433053\r
+:1041D0005105C1F14430510509F05AC0812F26968E\r
+:1041E0000FB6F894DEBF0FBECDBFDF91CF911F9108\r
+:1041F0000F91FF90EF90DF90CF90BF900C94832DA4\r
+:1042000026960FB6F894DEBF0FBECDBFDF91CF91DB\r
+:104210001F910F91FF90EF90DF90CF90BF900C9483\r
+:104220001A2D26960FB6F894DEBF0FBECDBFDF91D4\r
+:10423000CF911F910F91FF90EF90DF90CF90BF90A3\r
+:104240000C944D2D26960FB6F894DEBF0FBECDBF51\r
+:10425000DF91CF911F910F91FF90EF90DF90CF9062\r
+:10426000BF900C94602D4B2D4F70612FC701269687\r
+:104270000FB6F894DEBF0FBECDBFDF91CF911F9177\r
+:104280000F91FF90EF90DF90CF90BF900C94D507E7\r
+:1042900026960FB6F894DEBF0FBECDBFDF91CF914B\r
+:1042A0001F910F91FF90EF90DF90CF90BF900895F6\r
+:1042B0000E9408270E9418270E94DD260E943227AC\r
+:1042C0000E94EE2A0E943D2A80E090E00E94711B2D\r
+:1042D00080E090E00C94871B0E94F8260C945821F3\r
+:1042E0000E94A026292F22952F7030E02C30310516\r
+:1042F0004CF42A3031056CF422503109223031055A\r
+:1043000088F407C02C30310549F02F30310531F0E9\r
+:1043100009C0803E48F0803F29F406C093FB8827FF\r
+:1043200080F9089580E0089581E00895CF93DF93A8\r
+:1043300000D000D01F92CDB7DEB70F900F900F9036\r
+:104340000F900F90DF91CF910895CF93DF9300D01E\r
+:1043500000D000D0CDB7DEB726960FB6F894DEBFFA\r
+:104360000FBECDBFDF91CF9108951F93CF93DF9301\r
+:10437000C0917B0316E080917C03C81799F0D0E0D0\r
+:104380001C9FF0011D9FF00D1124E358FC4F40814C\r
+:10439000518162817381848195810E94A52121963A\r
+:1043A000C770E9CFDF91CF911F9108954091AD0380\r
+:1043B0005091AE036091AF037091B0038091B1034F\r
+:1043C0009091B2030C94A5218091B20382958F70D5\r
+:1043D00009F054C08091AF03882309F44FC0809145\r
+:1043E0007B03A0917C036091AD037091AE0340917B\r
+:1043F000B0035091B103B6E08A1709F43FC090E0D2\r
+:1044000041155105C1F17F3F11F46F3FA1F1B89FF4\r
+:10441000F001B99FF00D1124E358FC4F2181721374\r
+:104420002AC02081621327C02281211124C0238148\r
+:1044300034812417350710F421503109241B350B22\r
+:10444000283C3105C0F42091B2032F7020612093E5\r
+:10445000B20326E0289FF001299FF00D1124EE57AA\r
+:10446000FC4F80818F70806180838DEA93E00E9491\r
+:10447000B41D0C94B52101968770BECF0895CF92DC\r
+:10448000DF92EF92FF920F931F93CF93DF93CDB7FD\r
+:10449000DEB762970FB6F894DEBF0FBECDBF8C01BA\r
+:1044A00085E0F801DE011D9601900D928A95E1F7F5\r
+:1044B000D8014C9111965C91119712966C911297BC\r
+:1044C0001396CD90DC9014973091AD037091AE03AC\r
+:1044D0008091B0039091B103009709F46BC17F3FC5\r
+:1044E00019F43F3F09F466C1E090AF03EE2009F4F0\r
+:1044F000C0C02091B203C816D90628F0F601E81B07\r
+:10450000F90BCF0104C0809590958C0D9D1DFF2463\r
+:10451000F394883C910578F0F12C207F09F0C6C017\r
+:104520007C2DD98AC88A89890E9496218DEA93E0D8\r
+:104530000E94B41DB1C0822F807F09F046C0751360\r
+:1045400014C0341312C0611110C02F702061209369\r
+:10455000B2030E94D6218DEA93E00E94B41D80919F\r
+:10456000B203D80115968C932EC0CD2819F15F3F68\r
+:1045700011F44F3FF9F0F62E61111CC080917B03BE\r
+:1045800020917C0336E0821709F45AC090E0389FEE\r
+:10459000F001399FF00D1124E358FC4F718157133E\r
+:1045A00006C07081471303C07281711103C0019668\r
+:1045B0008770E9CFF62E662309F418C18091B20303\r
+:1045C00081608093B203F12C11C1751308C03413BC\r
+:1045D00006C0611104C08091B203D801C3C04D87E9\r
+:1045E0005E878D859E856A8B0E9470216A898823EB\r
+:1045F000E1F16623D1F12091B203822F82958F7071\r
+:1046000090E0029774F08091AD039091AE0398878B\r
+:104610008F831986DB86CA862C87CE0107960E9477\r
+:10462000B41D86E0F801ADEAB3E001900D928A95E1\r
+:10463000E1F70E94E4210E94D621FF24F394D6C022\r
+:104640004D875E878D859E850E94A026292F229505\r
+:104650002F7030E0223031050CF0BCC09F7009F0A3\r
+:10466000B6C0805E883008F4C1C0C8010E94B41D85\r
+:10467000E4CFC816D90608F453C0F601E81BF90BBD\r
+:10468000CF01883C910508F450C0F12C7C2DD98ACB\r
+:10469000C88A89890E949621EDEAF3E086E0DF016D\r
+:1046A0001D928A95E9F70E94D621A0C0751314C007\r
+:1046B000341312C0611110C08091B203F8018583D8\r
+:1046C000C8010E94B41D86E0EDEAF3E0DF011D920F\r
+:1046D0008A95E9F7FE2C8AC04D875E878D859E8579\r
+:1046E0006A8B0E9470216A89882309F4BECF6623F1\r
+:1046F00009F4BBCF2091B203822F82958F7090E096\r
+:1047000002970CF48ECF8091AD039091AE039A8303\r
+:1047100089831B82DD82CC822E83CE0101967FCFDE\r
+:10472000809590958C0D9D1DACCFF62E662309F4D7\r
+:104730009CCF75132EC034132CC02091B20320FDE2\r
+:104740001FC0822F82958F70D9F0D80115962C93B7\r
+:1047500015978F3049F08F5F982F9295907F822F19\r
+:104760008F70892B15968C93C8010E94B41D86E02A\r
+:10477000F801ADEAB3E001900D928A95E1F793CF8D\r
+:1047800086E0F801ADEAB3E001900D928A95E1F779\r
+:104790002DC04D875E878D859E850E947021811179\r
+:1047A00040CF8091B20381608093B203C8010E9420\r
+:1047B000B41D1CC0662309F458CF4D875E878D85D4\r
+:1047C0009E850E947021882309F44FCF2ACF811142\r
+:1047D00048CF0CC0243031050CF047CF9F7009F44E\r
+:1047E00040CFF8019581907F09F03BCF8F2D6296E5\r
+:1047F0000FB6F894DEBF0FBECDBFDF91CF911F91F2\r
+:104800000F91FF90EF90DF90CF9008951F93CF937B\r
+:10481000DF93CDB7DEB72C970FB6F894DEBF0FBE8F\r
+:10482000CDBF4F83588769877A878B879C87CE0156\r
+:1048300007960E943F22882369F08F8198852A85F8\r
+:104840003B85232BF1F19F3F09F063C08F3F09F0B7\r
+:1048500060C037C086E0FE013796DE0111960190F8\r
+:104860000D928A95E1F76F817885EA85FB8530970F\r
+:1048700041F17F3F11F46F3F21F120917C0330E043\r
+:10488000C90101968770992740917B0350E08417F6\r
+:10489000950709F447C069837A83FD83EC8396E02A\r
+:1048A000929FD001939FB00D1124A358BC4FFE01DD\r
+:1048B000319601900D929A95E1F780937C030E94C6\r
+:1048C000B52116E080917B0390917C038917C1F19B\r
+:1048D000189FC001112483589C4F0E943F228823B7\r
+:1048E00079F1E0917B031E9FF0011124E358FC4F06\r
+:1048F0004081518162817381848195810E94A521CB\r
+:1049000080917B0390E001968770992780937B03C9\r
+:10491000D9CF4F81588569857A858B859C850E9482\r
+:10492000A521CFCF0E946C2110927C0310927B03B3\r
+:10493000EDEAF3E086E0DF011D928A95E9F7C1CF49\r
+:104940002C960FB6F894DEBF0FBECDBFDF91CF918E\r
+:104950001F910895EF92FF920F931F93CF93DF93D0\r
+:104960008C01009709F46CC0F12CEE24E394E8016B\r
+:104970002196F8018491843740F4843008F051C0C6\r
+:10498000813081F0823019F15BC0853709F444C071\r
+:10499000A8F19CE7980F903708F052C08F770E94DB\r
+:1049A000571D41C00E5F1F4FFE01C49180E28C0F66\r
+:1049B000883048F4C7708E2D01C0880FCA95EAF779\r
+:1049C0000E940B2714C08C2F0E948F1C2DC00E5FDD\r
+:1049D0001F4FFE01C49180E28C0F883058F4C770DD\r
+:1049E0008E2D01C0880FCA95EAF70E9411270E94F8\r
+:1049F00032271AC08C2F0E94571D16C00E5F1F4F02\r
+:104A0000FE01C491CC2381F08FE99FE00197F1F77B\r
+:104A100000C00000C150F6CF0E5F1F4FFE01F490A2\r
+:104A200003C00E948F1C8E018F2D882309F49FCF15\r
+:104A3000EFE9FFE03197F1F700C000008150F5CFBA\r
+:104A4000DF91CF911F910F91FF90EF9008950895FE\r
+:104A50006093B7037093B8038093B9039093BA033C\r
+:104A60000C9458210F931F930091B7031091B80332\r
+:104A70002091B9033091BA03DC01CB01802B912B3B\r
+:104A8000A22BB32B8093B7039093B803A093B903E1\r
+:104A9000B093BA031F910F910C9458210F931F9359\r
+:104AA0000091B7031091B8032091B9033091BA0374\r
+:104AB000DC01CB0180239123A223B3238093B7038E\r
+:104AC0009093B803A093B903B093BA031F910F91C9\r
+:104AD0000C9458210F931F930091B7031091B803C2\r
+:104AE0002091B9033091BA03DC01CB0180279127D3\r
+:104AF000A227B3278093B7039093B803A093B90379\r
+:104B0000B093BA031F910F910C9458211092B303E4\r
+:104B10001092B4031092B5031092B6030C9458216E\r
+:104B200041E050E060E070E004C0440F551F661F94\r
+:104B3000771F8A95D2F74093B3035093B4036093E1\r
+:104B4000B5037093B6030C94582141E050E060E047\r
+:104B500070E004C0440F551F661F771F8A95D2F777\r
+:104B60008091B3039091B403A091B503B091B603C3\r
+:104B7000482B592B6A2B7B2B4093B3035093B403E0\r
+:104B80006093B5037093B6030C94582141E050E054\r
+:104B900060E070E004C0440F551F661F771F8A95C0\r
+:104BA000D2F740955095609570958091B3039091A0\r
+:104BB000B403A091B503B091B603482359236A23E7\r
+:104BC0007B234093B3035093B4036093B503709376\r
+:104BD000B6030C94582141E050E060E070E004C05E\r
+:104BE000440F551F661F771F8A95D2F78091B30334\r
+:104BF0009091B403A091B503B091B603482759270B\r
+:104C00006A277B274093B3035093B4036093B503A3\r
+:104C10007093B6030C9458210F931F930091B30324\r
+:104C20001091B4032091B5033091B603DC01CB01A0\r
+:104C3000802B912BA22BB32B8093B3039093B403BF\r
+:104C4000A093B503B093B6031F910F910C94582114\r
+:104C50000F931F930091B3031091B4032091B503F8\r
+:104C60003091B603DC01CB0180239123A223B3232F\r
+:104C70008093B3039093B403A093B503B093B603AA\r
+:104C80001F910F910C9458210F931F930091B30320\r
+:104C90001091B4032091B5033091B603DC01CB0130\r
+:104CA00080279127A227B3278093B3039093B4035F\r
+:104CB000A093B503B093B6031F910F910C945821A4\r
+:104CC0000895CF92DF92EF92FF920F931F93CF93AD\r
+:104CD000DF938C01C090B703D090B803E090B90384\r
+:104CE000F090BA038091B3039091B403A091B503FF\r
+:104CF000B091B603C82AD92AEA2AFB2ACFE1D0E02C\r
+:104D0000D701C6010C2E04C0B695A7959795879537\r
+:104D10000A94D2F780FF06C0B8018C2F0E942F0A98\r
+:104D2000019721F4219760F780E001C08C2FDF917B\r
+:104D3000CF911F910F91FF90EF90DF90CF9008954A\r
+:104D4000CF93DF93EC010E946126BE010E942F0ADF\r
+:104D5000DF91CF910895CB010E94A0260895209164\r
+:104D60001D0230911E02F90132969FEF40E05191F1\r
+:104D7000581789F09F3F19F4511101C0942F4F5FCC\r
+:104D80004630A9F79F3F39F0F901E90FF11D97FD72\r
+:104D9000FA9582830895089520911D0230911E0294\r
+:104DA000F9013296285F3F4F9081981301C010821D\r
+:104DB0003196E217F307C1F7089581E090E0E091A2\r
+:104DC0001D02F0911E02E80FF91F10820196883033\r
+:104DD0009105A9F708959091C603892B8093C60386\r
+:104DE000089580959091C60389238093C603089502\r
+:104DF0001092C60308959091C503892B8093C50333\r
+:104E0000089580959091C50389238093C5030895E3\r
+:104E10001092C50308959091C403892B8093C40315\r
+:104E2000089580959091C40389238093C4030895C5\r
+:104E30001092C40308958093BB0308951092BB039E\r
+:104E4000089580911D0290911E02FC0131969C01F3\r
+:104E5000285F3F4F80E0919191118F5FE217F30738\r
+:104E6000D1F70895E0911D02F0911E028091C603D2\r
+:104E70008083E0911D02F0911E0290818091C50314\r
+:104E8000892B8083E0911D02F0911E029081809118\r
+:104E9000C403892B80838091BB03882361F0E09158\r
+:104EA0001D02F0911E029081892B80830E94212790\r
+:104EB00081111092BB0380911D0290911E020C94EF\r
+:104EC0005B1B8091E803843039F11092C80320E421\r
+:104ED00088E190E00FB6F894A895809360000FBE2B\r
+:104EE0002093600080E00E94D20580E00E940A0BBF\r
+:104EF00083B7817F846083BF83B7816083BF7894E9\r
+:104F0000889583B78E7F83BF88E10FB6F89480932E\r
+:104F10006000109260000FBE089508950895CF9329\r
+:104F200080E00E94D2050E948D270E94AD0C0E9455\r
+:104F30008E27C0E08C2F0E94E60D892B29F4CF5FCD\r
+:104F4000C530C1F780E001C081E0CF9108950E9493\r
+:104F50006C2180E00E94D2050E94092D0E944F1B07\r
+:104F60000C940A0B1F920F920FB60F9211248F937D\r
+:104F70009F93AF93BF938091C803811113C0809119\r
+:104F8000C9039091CA03A091CB03B091CC03419681\r
+:104F9000A11DB11D8093C9039093CA03A093CB03B5\r
+:104FA000B093CC03BF91AF919F918F910F900FBEA3\r
+:104FB0000F901F90189582E084BD93E095BD9AEF05\r
+:104FC00097BD80936E0008952FB7F8948091C90320\r
+:104FD0009091CA03A091CB03B091CC032FBF089549\r
+:104FE000CF92DF92EF92FF920F931F932FB7F89417\r
+:104FF0004091C9035091CA036091CB037091CC03D7\r
+:105000002FBF6A017B01EE24FF248C0120E030E0F9\r
+:10501000C016D106E206F30610F4415051099A0178\r
+:10502000281B390BC9011F910F91FF90EF90DF9062\r
+:10503000CF9008951F920F920FB60F9211248F9365\r
+:105040009F93AF93BF938091C9039091CA03A0919E\r
+:10505000CB03B091CC030196A11DB11D8093C90370\r
+:105060009093CA03A093CB03B093CC03BF91AF91AD\r
+:105070009F918F910F900FBE0F901F9018950E94D7\r
+:105080004C18F8942FEF87EA91E621508040904029\r
+:10509000E1F700C0000087E090EBDC018093F303B0\r
+:1050A0009093F403A093F503B093F6039CE088E19A\r
+:1050B0000FB6F894A895809360000FBE909360009F\r
+:1050C000FFCF0E949B28811102C00E9477280E9476\r
+:1050D000A6288093C7030E94B3288093F1030E94FF\r
+:1050E000AA28682F70E080E090E00C9428256DEEEF\r
+:1050F0007EEF80E090E00E94BC3160E082E090E0D2\r
+:105100000E94AA3160E083E090E00E94AA3160E052\r
+:1051100084E090E00E94AA3160E085E090E00E9487\r
+:10512000AA3160E086E090E00E94AA316FEF87E04C\r
+:1051300090E00C94AA3180E090E00E94A43121E03C\r
+:105140008D3E9E4F09F020E0822F089582E090E08E\r
+:105150000C949C3183E090E00C949C31682F83E0A8\r
+:1051600090E00C94AA3184E090E00C949C31682F7C\r
+:1051700084E090E00C94AA3186E090E00C949C319D\r
+:10518000682F86E090E00C94AA3187E090E00C94C0\r
+:105190009C31682F87E090E00C94AA318091CF0376\r
+:1051A00080FF0BC06091220285E0689FB00111244E\r
+:1051B00075956795759567952BC081FF09C06091BE\r
+:1051C000220285E0689FB00111247595679520C083\r
+:1051D00082FF07C06091220285E0689FB001112420\r
+:1051E00017C09091D0039923D1F0609121029617B6\r
+:1051F00088F72091220285E0289F90011124929F38\r
+:10520000A001939F500D112470E0CA010E948231C9\r
+:105210006038710540F46115710539F002C065E030\r
+:1052200070E0862F08958FE7089581E008958091BA\r
+:10523000CF0380FF08C06091200270E075956795EC\r
+:105240007595679521C081FF06C06091200270E0CE\r
+:105250007595679519C082FF04C06091200270E0C7\r
+:1052600010C09091D0039923C1F060911F0296174E\r
+:10527000A0F780912002899FC001112470E00E9454\r
+:1052800082316038710528F46115710521F0862F8F\r
+:1052900008958FE7089581E0089561E070E0F4CF0C\r
+:1052A000803F21F40E94CE28819504C0813F29F4DB\r
+:1052B0000E94CE288093D3030895823F21F40E9458\r
+:1052C000CE28819504C0833F29F40E94CE28809384\r
+:1052D000D2030895893F19F40E94172905C08A3F17\r
+:1052E00031F40E94172981958093D40308958B3F50\r
+:1052F00021F40E941729819504C08C3F29F40E9453\r
+:1053000017298093D5030895843F21F48091D10318\r
+:10531000816017C0853F21F48091D103826011C064\r
+:10532000863F21F48091D10384600BC0873F21F434\r
+:105330008091D103886005C0883F31F48091D1030A\r
+:1053400080618093D10308958D3F21F48091CF0334\r
+:1053500081600BC08E3F21F48091CF03826005C035\r
+:105360008F3F29F48091CF0384608093CF03089509\r
+:10537000803F39F48091D30387FF6CC01092D30330\r
+:1053800069C0813F29F48091D3031816BCF362C031\r
+:105390009091D203823F29F497FF5CC01092D20310\r
+:1053A00059C0833F19F41916CCF354C0893F41F416\r
+:1053B0008091D40318160CF04DC01092D4034AC04B\r
+:1053C0008A3F29F48091D40387FF44C0F6CF8B3FF6\r
+:1053D00039F48091D50387FF3DC01092D5033AC0C0\r
+:1053E0008C3F29F48091D5031816BCF333C0843F59\r
+:1053F00021F48091D1038E7F17C0853F21F48091E5\r
+:10540000D1038D7F11C0863F21F48091D1038B7F22\r
+:105410000BC0873F21F48091D103877F05C0883F6F\r
+:1054200031F48091D1038F7E8093D10313C08D3FDF\r
+:1054300021F48091CF038E7F0BC08E3F21F48091A9\r
+:10544000CF038D7F05C08F3F29F48091CF038B7FE1\r
+:105450008093CF038091D20381110EC08091D3033A\r
+:1054600081110AC08091D403811106C08091D503B7\r
+:10547000811102C01092D003089581ED93E00E9443\r
+:10548000661B0E94E4279093CE038093CD0308957A\r
+:105490001F93CF93DF938091CD039091CE030E9411\r
+:1054A000F027AC019091D003992321F020912302A1\r
+:1054B00030E006C0209124028AE0289F9001112448\r
+:1054C0004217530708F486C08091D203C091D303DA\r
+:1054D000D091D4031091D503811107C0C11176C0BA\r
+:1054E000D11174C0111172C075C09F3F19F09F5F38\r
+:1054F0009093D003181624F40E94CE288093D203F0\r
+:105500008091D20387FF05C00E94CE2881958093A9\r
+:10551000D2031C1624F40E94CE288093D3038091DA\r
+:10552000D30387FF05C00E94CE2881958093D303C3\r
+:105530006091D203662339F1C091D303CC2319F1D2\r
+:10554000772767FD7095872F972F0E94A42E23E35E\r
+:1055500033E343E35FE30E94B42F0E94712E609314\r
+:10556000D2036C2F772767FD7095872F972F0E94A6\r
+:10557000A42E23E333E343E35FE30E94B42F0E94AE\r
+:10558000712E6093D3031D1624F40E941729809373\r
+:10559000D4038091D40387FF05C00E941729819509\r
+:1055A0008093D403111624F40E9417298093D50305\r
+:1055B0008091D50387FF05C00E94172981958093AC\r
+:1055C000D503DF91CF911F910C943D2A9F3F09F0A5\r
+:1055D0008ECF96CFDF91CF911F910895E1EDF3E04B\r
+:1055E00085E0DF011D928A95E9F71092D0031092B1\r
+:1055F000CF030895833081F128F4813059F082304F\r
+:10560000D1F00895853009F449C0B8F1863009F425\r
+:1056100056C0089580912402262F30E0280F311DB6\r
+:105620002F3F310524F4680F6093240208958FEF13\r
+:1056300080932402089580912302262F30E0280FC2\r
+:10564000311D2F3F310524F4680F60932302089524\r
+:105650008FEF80932302089580912202262F30E05D\r
+:10566000280F311D2F3F310524F4680F609322026B\r
+:1056700008958FEF80932202089580912102262FB2\r
+:1056800030E0280F311D2F3F310524F4680F60935F\r
+:10569000210208958FEF80932102089580912002C6\r
+:1056A000262F30E0280F311D2F3F310524F4680FDD\r
+:1056B0006093200208958FEF8093200208958091D7\r
+:1056C0001F02262F30E0280F311D2F3F310524F413\r
+:1056D000680F60931F0208958FEF80931F02089553\r
+:1056E000833011F128F4813049F0823091F008952F\r
+:1056F000853081F120F18630C1F108958091240236\r
+:10570000681720F4861B80932402089510922402C7\r
+:10571000089580912302681720F4861B809323024A\r
+:10572000089510922302089580912202681720F4B0\r
+:10573000861B809322020895109222020895809180\r
+:105740002102681720F4861B80932102089510928D\r
+:105750002102089580912002681720F4861B80930F\r
+:105760002002089510922002089580911F02681768\r
+:1057700020F4861B80931F02089510921F02089543\r
+:105780000F931F938732D8F58E3108F087C08E3083\r
+:1057900009F471C098F4873009F45BC08B3009F4C8\r
+:1057A00091C0863009F095C08091C703817F8E7FBC\r
+:1057B0008093C70381E08093D7038CC0863109F4BE\r
+:1057C00081C068F4803109F084C08091C70383FBF5\r
+:1057D000222720F991E0922790FB83F955C0893167\r
+:1057E00009F470C08B3109F074C08091C70381FB4C\r
+:1057F000222720F991E0922790FB81F945C0883358\r
+:1058000009F460C050F4893209F45EC0853309F4AC\r
+:105810005BC0873209F458C05CC0833409F454C0BB\r
+:1058200028F48A3308F455C0895339C0883409F004\r
+:1058300050C00E946C210E94B2070FEF13ED20E3CD\r
+:10584000015010402040E1F700C000000E943F28B6\r
+:1058500039C09091C703892F8095817080FB90F9A2\r
+:1058600029F0966098609093C70334C0997F977F22\r
+:105870009093C70327C08091C70382FB222720F99A\r
+:1058800091E0922790FB82F98093C7039923D1F08E\r
+:105890008091C70381608093C70314C08D5141E09C\r
+:1058A00050E060E070E08A019B0104C0000F111F0E\r
+:1058B000221F331F8A95D2F7C901B8010E942825FB\r
+:1058C0000E946C2181E006C061E070E080E090E021\r
+:1058D000F5CF80E01F910F91089580E0089580E05A\r
+:1058E0000895CF93C82F8091D703813069F018F0C5\r
+:1058F0008230C9F184C0E0911D02F0911E028081C6\r
+:10590000823209F07EC007C0E0911D02F0911E02B4\r
+:105910008081823261F48C2F0E946D2C811104C031\r
+:105920008C2F0E94C02B1DC081E090E01AC08C2FEC\r
+:105930000E946F2C811114C0C43179F048F4CB302F\r
+:1059400079F0C03109F061C082E08093D70308C0CC\r
+:10595000C93219F0C83321F058C01092D70355C08E\r
+:1059600081E0817054C0C93291F120F5C43179F1E0\r
+:10597000B0F4C73009F047C08EE18093240282E37F\r
+:10598000809323028AE08093220284E180932102A3\r
+:1059900088E08093200288E280931F0234C0CE51B9\r
+:1059A000C63088F5EC2FF0E0E451FD4F8081809304\r
+:1059B000D60329C0CE34E9F020F4CB3421F56AE0D7\r
+:1059C00013C0C13579F0C235F1F461E00DC08091AA\r
+:1059D000D603882319F01092D60315C081E0809376\r
+:1059E000D70315C061E006C08091D6030E94FA2A51\r
+:1059F0000AC06AE08091D6030E94702B04C0109206\r
+:105A0000D70380E004C081E002C080E0AACFCF913C\r
+:105A100008950E949B28811102C00E9477280E944D\r
+:105A2000BC288093F20380FF02C0869501C080E00D\r
+:105A30000C94D2058091F203982F9695292F30E08F\r
+:105A4000233031054CF49F5F990F8170892B816061\r
+:105A50008093F2030E94C0288091F20386950C94F3\r
+:105A6000D2058091F203982F969591F09158990F55\r
+:105A70008170892B8093F2038E7F91E009F490E08E\r
+:105A80008091F20390FB80F98093F2030E94C0287A\r
+:105A90008091F20386950C94D2058091F203982FA1\r
+:105AA000909590FB80F98093F2030E94C02880912A\r
+:105AB000F20380FF02C0869501C080E00C94D205FD\r
+:105AC0009091F203892F86958F5F8F779170843044\r
+:105AD00028F4880F892B8093F20302C09093F2037D\r
+:105AE0008091F2038E7F91E009F490E08091F203BF\r
+:105AF00090FB80F98093F2030E94C0288091F2030A\r
+:105B000086950C94D2052091F203922F96958927C1\r
+:105B1000982F990F822F8170892B8093F2038E7FAB\r
+:105B200091E009F490E08091F20390FB80F980937A\r
+:105B3000F2030E94C0288091F20386950C94D2054E\r
+:105B40005058BB27AA270ED0D1C1C2D130F0C7D13F\r
+:105B500020F031F49F3F11F41EF4B7C10EF4E0952C\r
+:105B6000E7FB9FC1E92FD3D180F3BA176207730710\r
+:105B70008407950718F071F49EF5EBC10EF4E095DB\r
+:105B80000B2EBA2FA02D0B01B90190010C01CA01F7\r
+:105B9000A0011124FF27591B99F0593F50F4503EA2\r
+:105BA00068F11A16F040A22F232F342F4427585F94\r
+:105BB000F3CF469537952795A795F0405395C9F7AC\r
+:105BC0007EF41F16BA0B620B730B840BBAF0915064\r
+:105BD000A1F0FF0FBB1F661F771F881FC2F70EC003\r
+:105BE000BA0F621F731F841F48F4879577956795D6\r
+:105BF000B795F7959E3F08F0B3CF9395880F08F0BF\r
+:105C00009927EE0F97958795089527D108F481E09D\r
+:105C100008950CD06BC163D140F05AD130F021F41B\r
+:105C20005F3F19F03EC1511195C14FC170D198F33A\r
+:105C30009923C9F35523B1F3951B550BBB27AA270D\r
+:105C400062177307840738F09F5F5F4F220F331F7F\r
+:105C5000441FAA1FA9F333D00E2E3AF0E0E830D04B\r
+:105C600091505040E695001CCAF729D0FE2F27D04E\r
+:105C7000660F771F881FBB1F261737074807AB071C\r
+:105C8000B0E809F0BB0B802DBF01FF2793585F4F91\r
+:105C90002AF09E3F510568F004C15CC15F3FECF300\r
+:105CA000983EDCF3869577956795B795F7959F5F56\r
+:105CB000C9F7880F911D9695879597F90895E1E0AA\r
+:105CC000660F771F881FBB1F621773078407BA0709\r
+:105CD00020F0621B730B840BBA0BEE1F88F7E09564\r
+:105CE000089504D06894B11135C1089518D188F091\r
+:105CF0009F5790F0B92F9927B751A0F0D1F0660FB8\r
+:105D0000771F881F991F1AF0BA95C9F712C0B130D2\r
+:105D100081F01FD1B1E008951CC1672F782F88272B\r
+:105D2000B85F39F0B93FCCF3869577956795B39511\r
+:105D3000D9F73EF490958095709561957F4F8F4F80\r
+:105D40009F4F0895E89409C097FB3EF49095809585\r
+:105D5000709561957F4F8F4F9F4F9923A9F0F92F31\r
+:105D600096E9BB279395F695879577956795B795AF\r
+:105D7000F111F8CFFAF4BB0F11F460FF1BC06F5F95\r
+:105D80007F4F8F4F9F4F16C0882311F096E911C0A7\r
+:105D9000772321F09EE8872F762F05C0662371F0C8\r
+:105DA00096E8862F70E060E02AF09A95660F771FDC\r
+:105DB000881FDAF7880F9695879597F9089588D008\r
+:105DC00018F011F08CD038F480C0C4C0E92F9FD0F7\r
+:105DD000B0F35523C9F3E7FB6217730784079507F0\r
+:105DE000A8F199F3E92FFF2788232AF03197660F4E\r
+:105DF000771F881FDAF7952F5527442332F09150EB\r
+:105E00005040220F331F441FD2F7BB27E91BF50B6D\r
+:105E1000621B730B840BB109C1F222F4620F731F72\r
+:105E2000841FB11D31972AF0660F771F881FBB1F93\r
+:105E3000EFCF915050405AF041F0882332F0660F76\r
+:105E4000771F881F91505040C1F7939530C08695B9\r
+:105E5000779567959F5FD9F7F8CF990F0008550F91\r
+:105E6000AA0BE0E8FEEF16161706E807F907C0F0E0\r
+:105E700012161306E407F50798F0621B730B840BE8\r
+:105E8000950B39F40A2661F0232B242B252B21F4C2\r
+:105E900008950A2609F4A140A6958FEF811D811D62\r
+:105EA000089597F99F6780E870E060E008959F3F4C\r
+:105EB00031F0915020F4879577956795B795880FC5\r
+:105EC000911D9695879597F908959FEF80EC089519\r
+:105ED00000240A94161617061806090608950024C9\r
+:105EE0000A9412161306140605060895092E039443\r
+:105EF000000C11F4882352F0BB0F40F4BF2B11F4B7\r
+:105F000060FF04C06F5F7F4F8F4F9F4F089557FD15\r
+:105F10009058440F551F59F05F3F71F04795880F17\r
+:105F200097FB991F61F09F3F79F0879508951216AE\r
+:105F300013061406551FF2CF4695F1DF08C016165A\r
+:105F400017061806991FF1CF86957105610508940B\r
+:105F50000895E894BB2766277727CB0197F9089522\r
+:105F60007CDF08F48FEF08950BD0C0CFB1DF28F0AD\r
+:105F7000B6DF18F0952309F094CFA7CF1124EACF0C\r
+:105F8000C6DFA0F3959FD1F3950F50E0551F629F98\r
+:105F9000F001729FBB27F00DB11D639FAA27F00D82\r
+:105FA000B11DAA1F649F6627B00DA11D661F829FA9\r
+:105FB0002227B00DA11D621F739FB00DA11D621F8E\r
+:105FC000839FA00D611D221F749F3327A00D611DAB\r
+:105FD000231F849F600D211D822F762F6A2F11248D\r
+:105FE0009F5750408AF0E1F088234AF0EE0FFF1FE0\r
+:105FF000BB1F661F771F881F91505040A9F79E3F17\r
+:10600000510570F04ECFA6CF5F3FECF3983EDCF326\r
+:10601000869577956795B795F795E7959F5FC1F753\r
+:10602000FE2B880F911D9695879597F90895FA0193\r
+:10603000EE0FFF1F30962105310599F161157105AD\r
+:1060400061F48038BFE39B0749F16894903881057B\r
+:1060500061F08038BFEF9B0741F0992342F5FF3F85\r
+:10606000E1053105210511F1E8940894E795D9017E\r
+:10607000AA2329F4AB2FBE2FF85FD0F310C0FF5F27\r
+:1060800070F4A695E0F7F73950F019F0FF3A38F4BC\r
+:106090009F779F930CD00F9007FC905808953EF087\r
+:1060A00014CF60E070E080E89FE308954FE79F77AA\r
+:1060B0005F934F933F932F939ED02F913F914F919A\r
+:1060C0005F9152DF05C019F40EF0EBCE42CFFDCE4A\r
+:1060D00026DFC8F39638C0F707F80F92E8942BE351\r
+:1060E0003AEA48EB5FE74EDF0F920F920F924DB7FF\r
+:1060F0005EB70F92C0D0E8EFF0E016D04F915F91FD\r
+:10610000EF91FF91E595EE1FFF1F49F0FE57E06804\r
+:106110004427EE0F441FFA95E1F74195550B32D015\r
+:106120000F9007FE26C00895DF93CF931F930F9320\r
+:10613000FF92EF92DF927B018C01689405C0DA2E0A\r
+:10614000EF011EDFFE01E894A5912591359145915F\r
+:106150005591AEF3EF0106DDFE019701A801DA9437\r
+:1061600079F7DF90EF90FF900F911F91CF91DF9122\r
+:1061700008959B01AC0160E070E080E89FE349CDA9\r
+:1061800090CE95CECCDEE8F39923D9F3940F511D30\r
+:10619000BBF39150504094F059F0882332F0660FD1\r
+:1061A000771F881F91505040C1F79E3F510544F71B\r
+:1061B000880F911D9695879597F908955F3FACF0EC\r
+:1061C000983E9CF0BB27869577956795B79508F420\r
+:1061D000B1609395C1F7BB0F58F711F460FFE8CF9A\r
+:1061E0006F5F7F4F8F4F9F4FE3CFB4CE0EF05FCEE8\r
+:1061F0006CCE689456CE93DEC8F39923D1F3C6F3E0\r
+:10620000DF93CF931F930F93FF92C92FDD2788232E\r
+:106210002AF02197660F771F881FDAF720E030E019\r
+:1062200040E85FEB9FE3883920F0803E30F0219614\r
+:106230008F7787DCE0E2F1E003C083DCEDE4F1E09E\r
+:1062400073DF8B01BE01EC01FB2E6F577109759551\r
+:10625000771F880B990B78DD28E132E741E35FE394\r
+:106260008FDEAF2D9801AE01FF900F911F91CF915E\r
+:10627000DF9178DC3BCEFA01DC01AA0FBB1F9B014A\r
+:10628000AC01BF5728F422273327442750781FC07A\r
+:10629000B75188F4AB2F0024469537952795011CFC\r
+:1062A000A395D2F3002069F0220F331F441FB3954A\r
+:1062B000DAF30DD045CC61307105A0E88A07B94604\r
+:1062C00030F49B01AC0166277727882790783096B9\r
+:1062D00021F020833183428353830895AA1BBB1B83\r
+:1062E00051E107C0AA1FBB1FA617B70710F0A61BD6\r
+:1062F000B70B881F991F5A95A9F780959095BC01F7\r
+:10630000CD01089597FB072E16F4009407D077FD72\r
+:1063100009D00E946E3107FC05D03EF4909581951E\r
+:106320009F4F0895709561957F4F0895EE0FFF1F61\r
+:106330000590F491E02D0994F999FECF92BD81BDAD\r
+:10634000F89A992780B50895A8E1B0E042E050E0BE\r
+:106350000C94C431262FF999FECF92BD81BDF89AD5\r
+:10636000019700B4021639F01FBA20BD0FB6F89499\r
+:10637000FA9AF99A0FBE08950196272F0E94AB3121\r
+:106380000C94AA31DC01CB01FC01F999FECF06C0C7\r
+:10639000F2BDE1BDF89A319600B40D9241505040E3\r
+:0863A000B8F70895F894FFCF4F\r
+:1063A8000C52D02445000000410000DC44000000ED\r
+:1063B8004152D0A4440000404100005C4400000069\r
+:1063C8004148F17644000000415C978A440000008F\r
+:1063D800411FD592440000004152D0A4440000005F\r
+:1063E800415CFFB844000000410AA7CF4400000008\r
+:1063F800410000DC44000000410AA7CF440000002F\r
+:10640800410000DC44000000410000000000008062\r
+:106418004052D024450000404100000000000080A8\r
+:10642800400AA74F45000040410AA7CF440000009A\r
+:10643800410000DC44000000410000000000008032\r
+:106448004052D024450000004100000000000080B8\r
+:10645800405CFF384500000041000000000000805B\r
+:106468004052D02445000000410AA7CF4400000054\r
+:10647800410000DC440000004100000000000080F2\r
+:106488004052D024450000804110F176440000A01D\r
+:106498004112F1F6440000004141909B440000A0E5\r
+:1064A8004112F1F64400000041050000003F0000E1\r
+:1064B800C8427B140915E614B2147E1401BC0328E3\r
+:1064C80008140A321E000002000400050007000933\r
+:1064D800000B000C000E001000110013001500172F\r
+:1064E8000018001A001C001D001F002100230024B2\r
+:1064F800002600280029002B002D002F0030003234\r
+:106508000034003500370039003B004200450025C3\r
+:106518000026004300610060002000370064006529\r
+:1065280000660067004400460024004700314980A7\r
+:106538003F5D8B803FF8BF803FCAE1803F73ED80AD\r
+:106548003FCAE1803FF8BF803F5D8B803F31498083\r
+:106558003F0000803FF16D7F3F75EA7E3F4C827EB1\r
+:106568003F833F7E3F84287E3F833F7E3F4C827E31\r
+:106578003F75EA7E3FF16D7F3F0000803F3F4D361B\r
+:10658800B90A6C0A360AE209FB09140A0102030473\r
+:06659800050607080900DA\r
+:00000001FF\r
--- /dev/null
+:020000020000FC\r
+:047000000C948D3E21\r
+:047028000C94B73DD0\r
+:10702F0012010002FF010020EB03F42F0000010208\r
+:10703F00030109021200010100803209040000005F\r
+:10704F00000000000C03410054004D0045004C00AF\r
+:10705F001603410054006D00330032005500340018\r
+:10706F004400460055000C0331002E0030002E0066\r
+:10707F0030000403090416010C0100000C0000018C\r
+:02708F006C7F14\r
+:1070920012BD01BDF89A00B5089501E00895F9996D\r
+:1070A200FECF12BD01BD20BDFA9AF99AF6CFF99929\r
+:1070B200FECF0C944938F80104910895F8013491F7\r
+:1070C20031962491890108950091610000930C0189\r
+:1070D20000E80093610001E00093610005BF02E057\r
+:1070E20005BF0C9486380091D70001600093D70049\r
+:1070F200A89507EF04BF0091600000610093600053\r
+:1071020000E00093600001E008950E94AA3D0E9401\r
+:10711200B53DFDCF0CD00F7708D0006806D00061D6\r
+:1071220004D0016028D0789408950093D80000918B\r
+:10713200D8000895FCDF00621ED04CD009B500FFD4\r
+:10714200FDCFF5DF0F7D17D00091E0000E7F009399\r
+:10715200E0000091E000077F0093E0000091E20070\r
+:1071620001600093E2000091E20008600093E200F7\r
+:1071720078940C94743B0093D800089500910D010B\r
+:10718200002359F40091D90000FF07C0D0DF006846\r
+:10719200F2DF01E000930D01CDDFE0E2F2E00081D9\r
+:1071A200018100FF0DC0008111811E7F11830083C8\r
+:1071B20001E00093EA0000E00093EA0000931E025F\r
+:1071C20000E00093E9000091E80003FF02C00E9482\r
+:1071D200F23B0895A89539D000E40093600000E0E6\r
+:1071E200009381000093800010E0009385000093DB\r
+:1071F200840001E006BB00918100036000938100DE\r
+:107202000091600007FFFCCF00E80093600010933C\r
+:107212008100A89507EF04BF18D010936000209159\r
+:1072220084003091850010938100109380001093A8\r
+:1072320085001093840001E006BB2D3D354010F01F\r
+:1072420002E101C002E009BD089500916000006101\r
+:107252000093600008950E94AD3E239741D100E063\r
+:1072620000930901B5D104811581012B51F437D165\r
+:1072720000910701002309F4B9C000E0009307015F\r
+:10728200B5C058D102FFFDCF37D1068335D1009367\r
+:107292000F0132D1009310012FD1009311012CD193\r
+:1072A2000093120129D10093130102852091130149\r
+:1072B20030911201409111015091100116811A95DD\r
+:1072C20041F01250A9F01A9599F11A9509F473C078\r
+:1072D2008BC010910F01113011F411E001C010E0C8\r
+:1072E200138799D00C3F11F414D17FC077D17DC0A0\r
+:1072F20092D010910F01112329F01A9549F01A9595\r
+:10730200A9F073C010E013870C3F09F06EC0ECCFF8\r
+:1073120056D103C04CD109F468C00D911C9144D1DF\r
+:107322000F3FC1F305E0009309015FC011E0EBCF0D\r
+:10733200D2D029F00250E1F10A9541F056C0FDD0B9\r
+:107342000E94A33F0FEF00930A014FC0552319F08B\r
+:107352005A9579F04AC04ED00DEF04BF74D0EAD0EE\r
+:1073620003FFFDCF67D051D04AD008E00093600000\r
+:10737200FFCF40D068D0DED003FFFDCF5BD03FD03F\r
+:1073820044D00FEF1FE004C009811A810150104060\r
+:1073920009831A8309811A81012BB1F700E800934E\r
+:1073A200610000910C01009361000C940000FFCF7A\r
+:1073B20001E003871AC08FD019F00A9539F015C081\r
+:1073C200535098F4BAD002E000870FC0505339F0FE\r
+:1073D2005A9541F05F52B1F35A95A1F306C002E00B\r
+:1073E2000883F0CF01E0FCCFA8D079D02396E4E067\r
+:1073F2000C94BA3E01E005BF00E005BF089500917C\r
+:10740200D8000F770093D800089509B50D7F09BD04\r
+:1074120000E009BD08955183408333832283109194\r
+:10742200E8001B7F1093E8001091E8001F7710938B\r
+:10743200E80008955DD053D0F8940091E000016017\r
+:107442000093E000089579D04AC0219749D0009175\r
+:107452000601035019F00250B9F00BC03CD021F0E4\r
+:107462000A9559F00A9529F400910A010C3F19F482\r
+:1074720050D02196089567D0FCCF0091010100936E\r
+:10748200F100009100010AC01091100124D019F0FE\r
+:107492000A9549F0EECF135018F400E00093F10082\r
+:1074A2001ED044D0E6CF105339F01A9539F01F524E\r
+:1074B20041F01A9541F0F4CF08E5F0CF00E006D094\r
+:1074C200EDCF02E0FCCF04E001D0E8CF10E020E0F5\r
+:1074D20030E00C94113F00910F010023089521C068\r
+:1074E2000BD008D007D00093040106D00093050109\r
+:1074F20021D00BC000D008830091F10008950091C3\r
+:10750200EB0000620093EB0015D0077F0093E800C8\r
+:107512000895F5DF02E00093080103E000930901FA\r
+:10752200089559D007D000FFFDCF089503D002FF80\r
+:10753200FDCF03C00091E8000895FCDF0B7FE6DF7A\r
+:10754200F9DF0F77E3CF0E94AC3E42D038D006C0BD\r
+:107552002BD00093F1002BD059F43DD0082F092BEA\r
+:10756200A9F0E8DF02FD12C0E5DF00FFFDCF4424F1\r
+:10757200042D4394003289F300910B0100230D91F5\r
+:107582001C9131F311970E945838E3CFD3DF00FFEB\r
+:10759200FDCF21D0CFDF00FFFDCFCCDF02FFFDCF3B\r
+:1075A200CCDFE5E00C94B93E11970C945C380D9158\r
+:1075B2001C910F5F1F4F1C930E93019708958281B8\r
+:1075C200938100811181801B910B0196DF01089547\r
+:1075D200E0E0F1E00895AEDF0E7F98CF0E94A93E71\r
+:1075E200F7DF80819181A081B181AF710481158122\r
+:1075F20000521040048315830AC000910B0100233E\r
+:1076020031F4A301920103E911E00E943B3F47D00C\r
+:10761200B8F1662477242C0111C06EDFF301ED5618\r
+:10762200FE4F008301E0600E00E0701E01960091A3\r
+:10763200F200002311F033D0B8F47FDF30D0E8F24B\r
+:10764200F301B096E238F040C0F674DF02FFFDCFDE\r
+:107652000091F200BDDF24813581201B304024835C\r
+:107662003583E5CF49DFAA95AA23E1F700910B0103\r
+:10767200013099F62091F1008C010E945038D6CF4A\r
+:1076820004811581012B21F055DF02FFFDCF55DF6B\r
+:10769200A2DF50DF00FFFDCFE8E00C94B63EE0E051\r
+:1076A200F1E0028113810817190708952091EB0078\r
+:1076B20021602093EB000093EC000091ED0002703A\r
+:1076C200012B0093ED000091ED0002600093ED00AC\r
+:1076D2001091EE00012F000F00E0001F0895412FCE\r
+:1076E2000093E900089500E009D000FD05C000E024\r
+:1076F200F7DF10E202E0DACF00E00895F1DF009157\r
+:10770200EB0008950F770132A9F5112369F11A955B\r
+:1077120059F01A9561F01A9569F01A95F9F01A95CF\r
+:10772200C1F01A95D9F024C00E942C3920C00E94C1\r
+:10773200263A1DC029D00091090123D001E01FD0B3\r
+:1077420020D0009108011BD00E94923A0E94973AE1\r
+:107752000EC01AD00091080114D007C002E00093B5\r
+:10776200080100E0009309010FD00E94923A03C081\r
+:107772000E94803A02C001E0089500E0089501D01D\r
+:1077820000E00093F10008950091E800077F009364\r
+:10779200E800089508950350F9F4112339F01A9579\r
+:1077A20051F01A9581F01A9599F016C004E016D09E\r
+:1077B20001E810E703C011D003E510E7E7E1F2E0CA\r
+:1077C20000831183D8CF06E109D00FE510E7F6CF89\r
+:1077D20004D005E710E7F2CFD0CF0CE000931A02F5\r
+:1077E200089527D120D100931D02E1D0212F11232A\r
+:1077F20029F12A95E9F02250F1F0225099F02A95C8\r
+:1078020049F0225061F02A9581F02A95E1F02A95FB\r
+:10781200E9F023C0003809F44FC00C94833B0038D0\r
+:10782200E1F7C8C00023C9F71EC00023B1F72DC07D\r
+:10783200033098F744C1033080F70BC1003868F376\r
+:10784200033858F7C9C0013841F77BC1013051F400\r
+:10785200FCD0BFD000FD06C0FCCF0E94833B0023BA\r
+:1078620009F41ED008951091E3001078DCD00F7750\r
+:10787200012B0093E300E9D0ACD000FFFDCF0091D3\r
+:10788200E30000680093E300089591D0123040F4C1\r
+:107892000FD010931E02DAD000911E020C94CB3B43\r
+:1078A2000091EB0001D004C000620093EB00089548\r
+:1078B2000091E800077FC0C0BA93AA93229700E024\r
+:1078C2000093190274D0AFD0202F2A9519F02A956F\r
+:1078D200E9F022C002E100931A020FE210E7E7E1A9\r
+:1078E200F2E0008311839DD008839DD00983E0DFFD\r
+:1078F20000911A0210E02881398102171307A8F4B7\r
+:107902000F7181F401E00093190211C002E10093AA\r
+:107912001A0201E410E7E3CF0E94CC3B002319F7DF\r
+:107922008ED040C01093190202C020931A027ED05A\r
+:10793200A7E1B2E001C08AD000911A02002309F146\r
+:1079420048D004FD1EC045D000FD03C042D004FF54\r
+:10795200FACF10E0012F1395003281F0ED91FC91E6\r
+:107962001197049133D02D913C912F5F3F4F3C935F\r
+:107972002E93FD0103810A95038361F72AD004FF48\r
+:10798200DACF00911902013039F423D004FD04C08A\r
+:1079920020D000FFFDCF5AD01CD004FFFDCF46D02F\r
+:1079A20018D00B7F49D02296A991B99108951091D0\r
+:1079B200F10008957DDF00911E0208D047D009D062\r
+:1079C2000F773AD006D002FFFDCFBFC00093F1007F\r
+:1079D20008950091E800089524D010911D021058D6\r
+:1079E20029F01A9589F01A9591F019C061DF00917A\r
+:1079F2001C02ECDF00E0EADF29D0EBDF02FFFDCF63\r
+:107A020018D0E7DF0F770CC053DF00E0F2CF51D080\r
+:107A12000F7710E0F801E55EFD4F0081EACF0FD04D\r
+:107A22000BC001D000D00091F1000895D2DF0F7E8B\r
+:107A320003C00091E8000B7F0093E80008950091D5\r
+:107A4200EB0032DFC6DF077F089532DFC2DF0E7F31\r
+:107A5200F3CF00911D02002329F00A9509F10A953E\r
+:107A620031F01EC0E0DF0A9561D0D9F41AC061D0AE\r
+:107A7200B9F4D9DF0F7711F416D01BD00093E900C7\r
+:107A82001091EB0010FF0BC00ED010E01093E90034\r
+:107A920021E0F801E55EFD4F20834FD003C042D0C4\r
+:107AA20045D0CFDFC9CF1091EB0010621093EB00ED\r
+:107AB20008951091E800177F1093E800089500914F\r
+:107AC2001D02002311F4AFDF02C0013011F4B7DF51\r
+:107AD200B3CF023031F52DD019F52091F1002F7777\r
+:107AE2002093E90023D000FF19C081F01FD000616C\r
+:107AF200DCDE01E010E0422F0E949F3E0093EA008C\r
+:107B020000E00093EA0012D00860CFDE0BD030E034\r
+:107B1200F901E55EFD4F008310D0DACF03D0D7CF55\r
+:107B2200BFDE089500E00093E90008950091EB00A4\r
+:107B3200089579DF3CDF00230895BADE4ADF0E7F25\r
+:107B4200089583DF46DF02FFFDCF73DF42DF0F7749\r
+:107B520073CF0091D70001600093D7000E948B3849\r
+:107B620000E000931F0208950C94BF388A93FA93A1\r
+:107B7200EA933A922A921A920A927A936A935A93BF\r
+:107B82004A933A932A931A930A938FB70091DA0091\r
+:107B920000FF24C00091D80000FF20C00EEF009328\r
+:107BA200DA000091D90000FF11C001E000930D013D\r
+:107BB200ABD0026096D09AD00860A2D00E949B38C7\r
+:107BC2000091E0000E7F0093E00008C000E0009307\r
+:107BD2000D0100931E0298D0046083D07FD002FF73\r
+:107BE20005C084D002FF02C00BEF75D077D000FF32\r
+:107BF2001BC07CD000FF18C001E000930E016AD0C8\r
+:107C020083D000626ED00EEF6FD0006179D06ED05B\r
+:107C12000F7D76D00091D80000620093D80009B59C\r
+:107C22000D7F09BD00E009BD59D004FF20C05ED020\r
+:107C320004FF1DC009B500FD05C00E94EB3809B55F\r
+:107C420000FFFDCF0091D8000F7D0093D80042D0F5\r
+:107C520000910E01002359F04CD00FEE45D00F7E5B\r
+:107C620052D000643ED042D001604AD042D036D0D9\r
+:107C720005FF0FC03BD005FF0CC000E000930E01D2\r
+:107C820035D00F7E3DD00FED2FD00F7D3CD0006858\r
+:107C920028D024D003FF0DC029D003FF0AC000E082\r
+:107CA20000931F0207EF17D00E94743B2DD0116082\r
+:107CB20018D08FBF09911991299139914991599100\r
+:107CC200699179910990199029903990E991F991E6\r
+:107CD200899118950FEE0093E10008950091E1005B\r
+:107CE20008951183008308950093E1000091E2005A\r
+:107CF20008950091E200006203D00091E200086062\r
+:107D02000093E2000895FCDFE0E2F2E000811181DD\r
+:107D1200089500008895FECF01E60DBF02E00EBF78\r
+:107D2200C2EED2E00E947438002311F00E94D33ECA\r
+:107D32000E9465380E948A3E0C948A3E4A951AF047\r
+:107D4200000F111FFBCF0895BA92AA929A928A92BB\r
+:107D52007A926A925A924A92BA93AA939A938A937D\r
+:107D62000895BB84AA84998488847F806E805D8014\r
+:107D72004C80BB81AA8199818881F0E00FB6F8948A\r
+:107D8200CE0FDF1F0FBE089520E006D0E9F7089559\r
+:107D9200259102D0E9F708952D9301501040202F2C\r
+:107DA200212B089585E890E7FC0105911491FC01CF\r
+:107DB2003296A591B491FC01349625913491422FCB\r
+:107DC200432B19F0F901E4DF01C0DEDF069610E76C\r
+:107DD2008139910748F308952F930CD02F9101D048\r
+:107DE20008953CD0F12FE02F45E047BFE89536D00B\r
+:107DF20012D0089533D0F12FE02F43E047BFE8952A\r
+:107E02002DD008952BD0F12FE02F43E047BFE89506\r
+:107E120025D001D0089522D041E147BFE8951EC088\r
+:107E22001DD0F12FE02F41E247BFC895002D16C0AB\r
+:107E320015D0F12FE02F49E047BFC895002D0EC0A5\r
+:107E4200F32FE22F012E102E41E047BFE89506C026\r
+:107E520005D0002E29E027BFE89500C0022E27B7E3\r
+:107E620020FDFCCF202D0895022E27B726FDFCCF42\r
+:107E7200202D08950E94A53E22974801C901DA01EA\r
+:107E820010C05BD001E0A00E00E0B01E00E4A0161E\r
+:107E920000E0B00608F440C0830120E030E00E9418\r
+:107EA200F23E0A2F0B2B09F440C0082F0F7710E087\r
+:107EB2002C01401A510A320100E4A02E03C00A2FFD\r
+:107EC2000B2BE1F04816590680F0F40101914F01A5\r
+:107ED2000983119729F001914F010883119711C06D\r
+:107EE200F2013196049108830CC0F20104910983D6\r
+:107EF2003196E817F907A1F7F401EDCF1BD00883FB\r
+:107F020019839201088119810E94213F16D0AA94F7\r
+:107F1200B1F62301AA24BB240DD0312F0F3F3F4FCE\r
+:107F220009F4AFCF83011DD0B7CF01E02296ECE078\r
+:107F32000C94B23E82010C945F3802E0400E00E0E5\r
+:107F4200501E08959A938A9380E090E08C0109D0A4\r
+:107F520080589F4F8F3F0FE69007C0F38991999108\r
+:107F6200089520E030E00C94FB3E00000000000089\r
+:067F720000000000FC000D\r
+:107FE4000C94ED3E0C94113F0C94193F0C94213FDA\r
+:0C7FF4000C94F23E0C94033F0C94293FC7\r
+:040000030000700089\r
+:100000000C947C050C94C0050C94C0050C94C005A0\r
+:100010000C94C0050C94C0050C94C0050C94C0054C\r
+:100020000C94C0050C94C0050C94C7180C94991935\r
+:100030000C94B2270C94C0050C94C0050C94C00518\r
+:100040000C94C0050C94C0050C94C0050C94C0051C\r
+:100050000C94C0050C941A280C94C0050C94C0058F\r
+:100060000C94C0050C94C0050C94C0050C94C005FC\r
+:100070000C94C0050C94C0050C94C0050C94C005EC\r
+:100080000C94E50E0C94C0050C94C0050C94C005AE\r
+:100090000C94C0050C94C0050C94C0050C94C005CC\r
+:1000A0000C94C0050C94C0050C94C0051B062B06CF\r
+:1000B0003D064D06530662066E06730680068806E8\r
+:1000C00098069D06061A281A161B281A161B6D1A62\r
+:1000D000901A161BE51AF81AFB1DFB1D381E381E58\r
+:1000E000921ED01E48214821E91E4821EA1FEA1F1E\r
+:1000F000AD20C4204821332107634236B79BD8A7DF\r
+:100100001A39685618AEBAAB558C1D3CB7CC57633C\r
+:10011000BD6DEDFD753EF6177231BF000000803FEA\r
+:1001200008000000BE922449123EABAAAA2ABECD06\r
+:10013000CCCC4C3E00000080BEABAAAAAA3E000078\r
+:100140000000BF000000803F000000000008417870\r
+:10015000D3BB4387D1133D190E3CC3BD4282AD2BA7\r
+:100160003E68EC8276BED98FE1A93E4C80EFFFBE9F\r
+:1001700001C4FF7F3F000000000035001E001F008B\r
+:100180002000210022002300240025002600270053\r
+:100190002A002B0014001A000800150017001C008C\r
+:1001A00018000C00120013004C0029000400160077\r
+:1001B000070009000A000B000D000E000F003300BD\r
+:1001C0003400E1001D001B000600190005001100AD\r
+:1001D000100036003700380028000530E000E2004B\r
+:1001E000E30003302C002C0004305000510052007A\r
+:1001F0004F0035001E001F002000210022002300B8\r
+:1002000024002500260027002A002B0014001A00D5\r
+:10021000090013000A000D000F0018001C00330035\r
+:100220004C002900040015001600170007000B0001\r
+:10023000110008000C0012003400E1001D001B003A\r
+:100240000600190005000E001000360037003800C7\r
+:1002500028000530E000E200E30003302C002C0011\r
+:1002600004305000510052004F0035001E001F00A6\r
+:100270002000210022002300240025002600270062\r
+:100280002A002B0034003600370013001C00090040\r
+:100290000A00060015000F004C002900040012009F\r
+:1002A000080018000C0007000B00170011001600D2\r
+:1002B0003800E100330014000D000E001B000500A3\r
+:1002C00010001A0019001D0028000530E000E200AF\r
+:1002D000E30003302C002C00043050005100520089\r
+:1002E0004F0035021E021F022002210222022302B9\r
+:1002F00024022502260227022A0035021E021F02BE\r
+:1003000020022102220223022402250226022702C1\r
+:100310004C004C003A003B003C003D003E003F00DA\r
+:100320002D022E022F023002310201004000410056\r
+:1003300042004300440045000100010001000100AB\r
+:1003400001000100010001000100010001000100A5\r
+:100350000100AB00AA00A900AE0035001E001F007E\r
+:100360002000210022002300240025002600270071\r
+:100370002A0035001E001F0020002100220023005B\r
+:1003800024002500260027004C004C003A003B00CA\r
+:100390003C003D003E003F002D002E002F003000AD\r
+:1003A000310001004000410042004300440045008C\r
+:1003B0000100010001000100010001000100010035\r
+:1003C00001000100010001000100AB00AA00A9002A\r
+:1003D000AE0000000000000000000000000000006F\r
+:1003E000000000000000000000000000000000000D\r
+:1003F00000000000000000000000000000000000FD\r
+:1004000000000000000000000000000000000000EC\r
+:1004100000000000000000000000000000000000DC\r
+:1004200000000000000000000000000000000000CC\r
+:100430000000000000000000000003300000000089\r
+:100440000430000000000000000000000000000078\r
+:10045000000000000000000000000000000000009C\r
+:10046000000000000000000000000000000000008C\r
+:10047000000000000000000000000000000000007C\r
+:10048000000000000000000000000000000000006C\r
+:10049000000000000000000000000000000000005C\r
+:1004A000000000000000000000000000000000004C\r
+:1004B000000000000000000000000000000000003C\r
+:1004C000000000000000000000000000000000002C\r
+:1004D000000000000000000000000000000000001C\r
+:1004E000000000000000000000000000000000000C\r
+:1004F00000000000000000000000000000000000FC\r
+:1005000000000000000000000000000000000000EB\r
+:1005100000000000000000000000000000000000DB\r
+:1005200000000000000000000000000000000000CB\r
+:1005300000000000000000000000000000000000BB\r
+:1005400000000000000000000000000000000000AB\r
+:10055000000000000000000000000000000000009B\r
+:10056000000000000000000000000000000000008B\r
+:10057000000000000000000000000000000000007B\r
+:10058000000000000000000000000000000000006B\r
+:10059000000000000000000000000000000000005B\r
+:1005A000000000000000000000000000000000004B\r
+:1005B000000000000000000000000000000000003B\r
+:1005C000000000000000000000000000000000002B\r
+:1005D000000000000000000000000000000000001B\r
+:1005E000000000000000000000000000000000000B\r
+:1005F00000000000000000000000000000000000FB\r
+:1006000000000000000000000000000000000000EA\r
+:1006100000000000000000000000000000000000DA\r
+:1006200000000000000000000000000000000000CA\r
+:1006300000000000000000000000000000000000BA\r
+:1006400000000000000000000000000000000000AA\r
+:10065000000000000000000000000000000000009A\r
+:10066000000000000000000000000000000000008A\r
+:10067000000000000000000000000000000000007A\r
+:10068000000000000000000000000000000000006A\r
+:10069000000000000000000000000000000000005A\r
+:1006A000000000000000000000000000000000004A\r
+:1006B000000000000000000000000000000000003A\r
+:1006C000000000000000000000000000000000002A\r
+:1006D000000000000000000000000000000000001A\r
+:1006E000000000000000000000000000000000000A\r
+:1006F00000000000000000000000000000000000FA\r
+:1007000000000000000000000000000000000000E9\r
+:1007100000000000000000000000000000000000D9\r
+:1007200000000000000000000000000000000000C9\r
+:1007300000000000000000000000000000000000B9\r
+:1007400000000000000000000000000000000000A9\r
+:100750000000000000000000000000000000000099\r
+:100760000000000000000000000000000000000089\r
+:100770000000000000000000000000000000000079\r
+:100780000000000000000000000000000000000069\r
+:100790000000000000000000000000000000000059\r
+:1007A0000000000000000000000000000000000049\r
+:1007B0000000000000000000000000000000000039\r
+:1007C0000000000000000000000000000000000029\r
+:1007D0000000000000000000000000000000000019\r
+:1007E0000000000000000000000000000000000009\r
+:1007F00000000000000000000000000000000000F9\r
+:1008000000000000000000000000000000000000E8\r
+:1008100000000000000000000000000000000000D8\r
+:1008200000000000000000000000000000000000C8\r
+:1008300000000000000000000000000000000000B8\r
+:1008400000000000000000000000000000000000A8\r
+:100850000000000000000000000000000000000098\r
+:100860000000000000000000000000000000000088\r
+:100870000000000000000000000000000000000078\r
+:100880000000000000000000000000000000000068\r
+:100890000000000000000000000000000000000058\r
+:1008A0000000000000000000000000000000000048\r
+:1008B0000000000000000000000000000000000038\r
+:1008C0000000000000000000000000000000000028\r
+:1008D0000000000000000000000000000000000018\r
+:1008E0000000000000000000000000000000000008\r
+:1008F000000000000000000000003A003B003C0047\r
+:100900003D003E003F0040004100420043004400E3\r
+:10091000450001000050010001000100010001003C\r
+:1009200001000100010001004C0001000100010074\r
+:1009300007300630135012500030013002300100F1\r
+:10094000010001000B300A300930083001000100BD\r
+:10095000010001000100010001000100010001008F\r
+:10096000010001000100010001000100010001007F\r
+:1009700001002A0354006800650020005000720046\r
+:1009800065006F006E006900630020004B00650089\r
+:10099000790062006F0061007200640000002C03A7\r
+:1009A0004F007200740068006F006C0069006E00F8\r
+:1009B00065006100720020004B0065007900620054\r
+:1009C0006F006100720064007300000004030904FA\r
+:1009D00009025400030100A0FA0904000001030108\r
+:1009E0000100092111010001223F000705810308D0\r
+:1009F000000A09040100010301020009211101009C\r
+:100A000001224D000705820308000A0904020001C3\r
+:100A100003000000092111010001223600070583AF\r
+:100A20000308000A1201100100000008EDFE6160D9\r
+:100A300001000102000105010980A10185021601E2\r
+:100A40000026B7001A01002AB70075109501810031\r
+:100A5000C0050C0901A1018503160100269C021A9C\r
+:100A600001002A9C02751095018100C00501090250\r
+:100A7000A1010901A1000509190129051500250198\r
+:100A80009505750181029501750381010501093004\r
+:100A900009311581257F9502750881060938158170\r
+:100AA000257F950175088106050C0A3802158125F8\r
+:100AB0007F950175088106C0C005010906A10105E1\r
+:100AC0000719E029E71500250195087501810295B0\r
+:100AD0000175088101050819012905950575019120\r
+:100AE000029501750391010507190029FF150025DD\r
+:100AF000FF950675088100C011241FBECFEFDAE014\r
+:100B0000DEBFCDBF04B603FE24C08091F3039091F5\r
+:100B1000F403A091F503B091F6038730904BA74002\r
+:100B2000B04BB9F41092F3031092F4031092F50352\r
+:100B30001092F60314BE84B7877F84BF88E10FB696\r
+:100B4000F89480936000109260000FBEE0E0F8E33C\r
+:100B5000099512E0A0E0B1E0E8EAF3E602C00590F2\r
+:100B60000D92A63FB107D9F713E0A6EFB2E001C09E\r
+:100B70001D92A33FB107E1F70E940D160C94D231EC\r
+:100B80000C940000279A2F988FEF9FEF9093870087\r
+:100B9000809386008AE08093800089E180938100C1\r
+:100BA0000C94092D282F81110BC080918000877F24\r
+:100BB0008093800010928D0010928C002F980895E1\r
+:100BC0002F9880918000886080938000233019F4F2\r
+:100BD0008FEF9FEF0FC083E090E0821B9109880F99\r
+:100BE000991F2FEF3FEFA90102C0569547958A95AF\r
+:100BF000E2F7CA0190938D0080938C000895CF9303\r
+:100C0000DF93EC010E94AE28BE0180E090E0DF910E\r
+:100C1000CF910C9428250F931F93462F50E04C3012\r
+:100C2000510508F098C0DC01FA01EA5AFF4F12960C\r
+:100C30008C910C949631882309F48DC000E010E06B\r
+:100C4000980140E064E070E089EC91E00E9463125A\r
+:100C500081E090E00FC0882309F47DC000E010E03F\r
+:100C6000980140E066E070E089E591E00E9463123F\r
+:100C700082E090E00E94FF056EC0882309F46BC0FB\r
+:100C800000E010E0980140E068E070E089E891E061\r
+:100C90000E94631284E090E0EDCF882311F083E09E\r
+:100CA00005C083E00CC0882349F084E00E94A5259C\r
+:100CB00040E164E083E00E94C90A4DC084E00E94E4\r
+:100CC000C625F6CF882331F085EE0E948F1C0E9446\r
+:100CD000602D41C085EE0E94571D3DC08823D9F18B\r
+:100CE0000E94F70D38C08823B1F10E94F00D00E09A\r
+:100CF00010E0980140E064E070E089EE91E029C0E6\r
+:100D0000882349F185E00E94C6250E94180E23C061\r
+:100D1000882309F100E010E0980140E068E070E00D\r
+:100D200089E191E00E94631285E00E94A52513C02D\r
+:100D3000882389F00E94F61204C0882361F00E9483\r
+:100D4000011300E010E0980140E068E070E089E104\r
+:100D500091E00E94631280E090E01F910F9108954E\r
+:100D60000F931F932FEF89EF90E021508040904028\r
+:100D7000E1F700C0000000E010E0980140E064E00E\r
+:100D800070E089EE91E00E9463121F910F91089527\r
+:100D9000CF92DF92EF92FF920F931F93CF93DF9347\r
+:100DA000CDB7DEB7CC58D1090FB6F894DEBF0FBE71\r
+:100DB000CDBF2091B30325FFC5C08C01FC019281FA\r
+:100DC00080910001992309F460C096E4E5E2F2E025\r
+:100DD000DE01A95BBF4F01900D929A95E1F7F801F2\r
+:100DE0009081E091F602F091F702E90FF11DEE0F0C\r
+:100DF000FF1F27E430E02C0F3D1FE20FF31F60813F\r
+:100E00007181680F711D882777FD8095982F0E944A\r
+:100E1000A42E20E030E040E451E40E94092E6B0152\r
+:100E20007C01F801218185E090E0821B9109BC01E1\r
+:100E3000882777FD8095982F0E94A42E9B01AC01F6\r
+:100E4000C701B6010E94A12D9B01AC0160E070E0DA\r
+:100E500080E090E40E94173020E030E04CE551E45F\r
+:100E60000E94B42F4FE050E0C457DF4F0FB6F89404\r
+:100E7000DEBF0FBECDBFDF91CF911F910F91FF90CD\r
+:100E8000EF90DF90CF900C94031296E4E5E2F2E04D\r
+:100E9000DE01119601900D929A95E1F7F80190818B\r
+:100EA000E091F602F091F702E90FF11DEE0FFF1F3E\r
+:100EB00021E030E02C0F3D1FE20FF31F60817181B4\r
+:100EC000680F711D882777FD8095982F0E94A42EAA\r
+:100ED00020E030E040E451E40E94092E6B017C01E7\r
+:100EE000F801218185E090E0821B9109BC018827EF\r
+:100EF00077FD8095982F0E94A42E9B01AC01C7011D\r
+:100F0000B6010E94A12D9B01AC0160E070E080E081\r
+:100F100090E40E94173020E030E04CE551E40E945C\r
+:100F2000B42FC457DF4F0FB6F894DEBF0FBECDBF4E\r
+:100F3000DF91CF911F910F91FF90EF90DF90CF90B5\r
+:100F40000C944B0EC457DF4F0FB6F894DEBF0FBEA4\r
+:100F5000CDBFDF91CF911F910F91FF90EF90DF9068\r
+:100F6000CF9008950F931F9300E010E0980140E0A8\r
+:100F700063E070E081E091E00E9463122FEF82E570\r
+:100F800097E0215080409040E1F700C000001F91A1\r
+:100F90000F91089508950E94C2056E9A769A0C9456\r
+:100FA000B0060C94CA070C94C8060895880F991FC0\r
+:100FB000FC01E650F040859194910895880F991FA7\r
+:100FC000FC01E658FE4F8591949108950F931F936D\r
+:100FD000CF93DF93EC01811520E49207A0F5C115B2\r
+:100FE00080E3D80708F0E1C0C83ED105D8F4C03E80\r
+:100FF000D10508F0EEC1C83AD10578F4C53AD1055B\r
+:1010000008F074C0C130D10509F46DC008F4DEC128\r
+:10101000C430D10508F0DDC1D9C1CB3BD10508F4FE\r
+:1010200070C0D4C1C11590E2D90708F0B9C0C1158C\r
+:1010300021E0D20708F0CDC1C03FD10508F4C6C1F8\r
+:101040008E01106506C2C13080E5D80709F4BDC025\r
+:1010500068F5C13120E4D20709F4AEC050F4C031C4\r
+:1010600090E4D90708F0A5C0CF70DD278E01146D7C\r
+:10107000F0C1C33120E4D20709F4A4C008F49FC032\r
+:10108000C115D04509F0A2C10E946C210E94180E22\r
+:101090000E94B2079FEF24E38CE0915020408040F3\r
+:1010A000E1F700C000000E943F28D3C1C11520E62F\r
+:1010B000D20730F4C11581E5D80708F48CC02DC1E2\r
+:1010C000C11590E7D90708F481C1C11520E8D207FE\r
+:1010D00008F478C1C11580E9D80708F077C1DF703E\r
+:1010E0008E01106AB6C101E010E0B3C1C53AD10566\r
+:1010F00009F471C1C63AD10509F070C102E810E4E3\r
+:10110000A8C1C83AD10509F46CC1C93AD10509F49E\r
+:101110006BC1CA3AD10509F46AC1CB3AD10509F4C9\r
+:1011200069C1CC3AD10509F468C1CD3AD10509F4B9\r
+:1011300067C1C03BD10509F466C1CE3AD10509F4B7\r
+:1011400065C1CF3AD10509F464C1C13BD10509F4A9\r
+:1011500063C1C23BD10509F462C1C33BD10509F4A7\r
+:1011600061C1C43BD10509F460C1C53BD10509F497\r
+:101170005FC1C63BD10509F45EC1C73BD10509F487\r
+:101180005DC1C83BD10509F45CC1C93BD10509F477\r
+:101190005BC1CA3BD10509F45AC100E014E459C14E\r
+:1011A000CE019F700E94DE0755C1DD278E01106CB5\r
+:1011B00050C100E011ED4DC100E010ED4AC100E06A\r
+:1011C00012ED47C100E013ED44C18091C703816077\r
+:1011D0008093C7033EC10E949B28811102C00E94D8\r
+:1011E00077280E94B32890E09093F2038093F10354\r
+:1011F000C23090E5D90721F48091F103816086C067\r
+:10120000C43020E5D20721F48091F10382607EC0D2\r
+:10121000C63080E5D80721F48091F103846076C060\r
+:10122000C83090E5D90719F48091F10327C0CA307E\r
+:1012300020E5D20721F48091F103806167C0CC30B2\r
+:1012400080E5D80721F48091F10380625FC0CE3041\r
+:1012500090E5D90721F48091F103806457C0C03133\r
+:1012600020E5D20721F48091F10380684FC0C2319C\r
+:1012700080E5D80729F48091F1038460886046C036\r
+:10128000C33090E5D90721F48091F1038E7F3EC0F1\r
+:10129000C53020E5D20721F48091F1038D7F36C05F\r
+:1012A000C73080E5D80721F48091F1038B7F2EC0F1\r
+:1012B000C93090E5D90719F48091F10326C0CB30ED\r
+:1012C00020E5D20721F48091F1038F7E1FC0CD303D\r
+:1012D00080E5D80721F48091F1038F7D17C0CF30CE\r
+:1012E00090E5D90721F48091F1038F7B0FC0C131C4\r
+:1012F00020E5D20721F48091F1038F7707C0C33135\r
+:10130000D04531F48091F1038B7F877F8093F10387\r
+:101310008091F1030E94B7289CC08D2F99278F7070\r
+:10132000992781309105D9F49E012370332702C09B\r
+:10133000880F991F2A95E2F79C688E0144E0000F00\r
+:10134000111F4A95E1F700271370802B912B53E072\r
+:10135000CC0FDD1F5A95E1F7C076DD272FC0823014\r
+:10136000910531F4DC2FCC278E01016F106A71C01A\r
+:101370008330910569F4CE018370992701E010E074\r
+:1013800002C0000F111F8A95E2F7C8019C680FC0C8\r
+:10139000049709F05EC0CE018370992701E010E048\r
+:1013A00002C0000F111F8A95E2F7C8019A6823E076\r
+:1013B000CC0FDD1F2A95E1F7C07ED7708C010C2B76\r
+:1013C0001D2B47C0DF708E01106243C000E010E0AB\r
+:1013D00040C08E013EC001E810E43BC003E810E4C9\r
+:1013E00038C002EE14E435C009EE14E432C00AEE4F\r
+:1013F00014E42FC005EB14E42CC006EB14E429C060\r
+:1014000007EB14E426C00CEC14E423C00DEC14E448\r
+:1014100020C003E815E41DC00AE815E41AC002E97B\r
+:1014200015E417C004E915E414C001E216E411C084\r
+:1014300003E216E40EC004E216E40BC005E216E473\r
+:1014400008C006E216E405C007E216E402C00AE29C\r
+:1014500016E4C801DF91CF911F910F9108959CE090\r
+:10146000799FF00111249CE3899FE00DF11D112467\r
+:10147000E60FF11DEE0FFF1FE658FE4F8591949188\r
+:10148000803E9105E0F4803C910558F5813391054B\r
+:1014900009F46FC048F48932910509F463C08A32B7\r
+:1014A000910509F46DC072C089339105E9F0823865\r
+:1014B0009105D1F08533910509F44DC067C0833E95\r
+:1014C000910581F138F4803E9105B9F0823E910595\r
+:1014D000D9F05CC0863E910561F1873E9105A1F18E\r
+:1014E00055C00E94D60708952091F10320FD02C047\r
+:1014F00021FF4CC080EE90E049C08091F10380FF55\r
+:10150000F9CF89E390E042C08091F10382FF0EC0E1\r
+:101510008091F10384FF03C080E090E037C083EE48\r
+:1015200090E034C08091F10382FFF2CF82EE90E030\r
+:101530002DC08091F10383FF0BC08091F10384FDE6\r
+:10154000EBCF87EE90E022C08091F10383FFF5CFCF\r
+:1015500086EE90E01BC08091F10385FF07C089E211\r
+:1015600090E014C08091F10385FFF9CF85E390E00E\r
+:101570000DC08091F10386FF07C08AE290E006C0AB\r
+:101580008091F10386FFF9CF81E390E00E94E607A6\r
+:101590000895CF92DF92EF92FF920F931F9301E095\r
+:1015A00010E020E030E06801790104C0CC0CDD1CC3\r
+:1015B000EE1CFF1C8A95D2F704C0000F111F221FDA\r
+:1015C000331F6A95D2F70C291D292E293F29C09077\r
+:1015D000B303D090B403E090B503F090B603C022FB\r
+:1015E000D122E222F322842FC016D106E206F306AE\r
+:1015F00041F41F910F91FF90EF90DF90CF900C94EA\r
+:10160000A5251F910F91FF90EF90DF90CF900C9444\r
+:10161000C62508950C94090B5F926F927F928F926A\r
+:101620009F92AF92BF92CF92DF92EF92FF920F9371\r
+:101630001F93CF93DF93CDB7DEB72A970FB6F894F9\r
+:10164000DEBF0FBECDBFCE0101966C014E019BE007\r
+:10165000890E911C20E030E040E050E060E070E056\r
+:1016600000E010E0E12CF12C6C2C5D2C8AE0782E4F\r
+:10167000AA24A394B12CEBE6F2E0A62DB52D872D7C\r
+:1016800001900D928A95E1F7F601819191916F0198\r
+:10169000FC01E07FFF27E032F10559F48F709927B4\r
+:1016A000F50102C0EE0FFF1F8A95E2F7EE2AFF2A2E\r
+:1016B00037C0E033F10559F48F709927F50102C066\r
+:1016C000EE0FFF1F8A95E2F70E2B1F2B29C0E03487\r
+:1016D000F10559F48F709927F50102C0EE0FFF1F35\r
+:1016E0008A95E2F76E2B7F2B1BC0E035F10559F48C\r
+:1016F0008F709927F50102C0EE0FFF1F8A95E2F760\r
+:101700004E2B5F2B0DC0E036F10551F48F709927F9\r
+:10171000F50102C0EE0FFF1F8A95E2F72E2B3F2B3B\r
+:10172000C814D90409F0A7CF84B19E2D90958923C0\r
+:1017300084B985B1E82AE5B887B1902F90958923BF\r
+:1017400087B988B1082B08B98AB1962F909589235B\r
+:101750008AB98BB1682B6BB98DB1942F9095892381\r
+:101760008DB98EB1482B4EB980B3922F90958923B5\r
+:1017700080BB81B3282B21BB2A960FB6F894DEBF1D\r
+:101780000FBECDBFDF91CF911F910F91FF90EF90D2\r
+:10179000DF90CF90BF90AF909F908F907F906F9091\r
+:1017A0005F9008955F926F927F928F929F92AF9217\r
+:1017B000BF92CF92DF92EF92FF920F931F93CF933E\r
+:1017C000DF93CDB7DEB768970FB6F894DEBF0FBED4\r
+:1017D000CDBF85B7806885BF85B7806885BF0E940B\r
+:1017E0000C0BCE0101966C014E0199E1890E911C02\r
+:1017F00020E030E040E050E060E070E000E010E029\r
+:10180000E12CF12C6C2C5D2C88E1782EAA24A39479\r
+:10181000B12CE5E7F2E0A62DB52D872D01900D92B4\r
+:101820008A95E1F7F601819191916F01FC01E07FCA\r
+:10183000FF27E032F10559F48F709927F50102C0B6\r
+:10184000EE0FFF1F8A95E2F7EE2AFF2A37C0E0333A\r
+:10185000F10559F48F709927F50102C0EE0FFF1FB3\r
+:101860008A95E2F70E2B1F2B29C0E034F10559F4BD\r
+:101870008F709927F50102C0EE0FFF1F8A95E2F7DE\r
+:101880006E2B7F2B1BC0E035F10559F48F70992723\r
+:10189000F50102C0EE0FFF1F8A95E2F74E2B5F2B7A\r
+:1018A0000DC0E036F10551F48F709927F50102C0A3\r
+:1018B000EE0FFF1F8A95E2F72E2B3F2BC814D90499\r
+:1018C00009F0A7CF84B19E2D9095892384B985B165\r
+:1018D000E82AE5B887B1902F9095892387B988B118\r
+:1018E000082B08B98AB1962F909589238AB98BB1B4\r
+:1018F000682B6BB98DB1942F909589238DB98EB1DA\r
+:10190000482B4EB980B3922F9095892380BB81B329\r
+:10191000282B21BBE2E0F3E0A8EFB2E01192119294\r
+:101920001D921D9283E0EC30F807C1F768960FB660\r
+:10193000F894DEBF0FBECDBFDF91CF911F910F9105\r
+:10194000FF90EF90DF90CF90BF90AF909F908F90DF\r
+:101950007F906F905F900C94CB075F926F927F9215\r
+:101960008F929F92AF92BF92CF92DF92EF92FF92AF\r
+:101970000F931F93CF93DF93CDB7DEB7A2970FB628\r
+:10198000F894DEBF0FBECDBF6E0149E1C40ED11C7D\r
+:1019900088EFA82E82E0B82E75019AE0592E4601F4\r
+:1019A00001E010E028E1622E35E0732EEBE6F2E074\r
+:1019B000D401852D01900D928A95E1F7D6018D9184\r
+:1019C0009D916D019C01207F33272032310591F4D8\r
+:1019D00024B18F709927F80102C0EE0FFF1F8A957E\r
+:1019E000E2F7CF01922F982B94B995B18095892376\r
+:1019F00085B953C02033310591F427B18F709927F1\r
+:101A0000A80102C0440F551F8A95E2F7CA01922F20\r
+:101A1000982B97B998B18095892388B93EC0203416\r
+:101A2000310591F42AB18F709927D80102C0AA0F0D\r
+:101A3000BB1F8A95E2F7CD01922F982B9AB99BB1E3\r
+:101A4000809589238BB929C02035310591F42DB1BA\r
+:101A50008F709927F80102C0EE0FFF1F8A95E2F7F9\r
+:101A6000CF01922F982B9DB99EB1809589238EB975\r
+:101A700014C02036310589F420B38F709927A8014E\r
+:101A800002C0440F551F8A95E2F7CA01922F982B86\r
+:101A900090BB91B38095892381BB50EA5A95F1F7A9\r
+:101AA000BE016F5F7F4F20E030E040E050E0E5E7AF\r
+:101AB000F2E0DE011196862D01900D928A95E1F7F4\r
+:101AC000DB018D919D91BD01FC01E07FFF27E0329C\r
+:101AD000F10511F4E3B113C0E033F10511F4E6B1FF\r
+:101AE0000EC0E034F10511F4E9B109C0E035F105AB\r
+:101AF00011F4ECB104C0E036F105B9F4EFB1F0E057\r
+:101B00008F70992702C0F595E7958A95E2F7E0FD79\r
+:101B100008C0C801042E02C0880F991F0A94E2F77A\r
+:101B200002C080E090E0282B392B4F5F5F4F4C3094\r
+:101B3000510509F0BCCFF70180819181821793078D\r
+:101B400021F031832083709209020E940C0BF2E095\r
+:101B5000EF0EF11C42E0E41643E0F40609F026CF54\r
+:101B6000809109028823C9F081508093090288235B\r
+:101B700039F08FE99FE00197F1F700C000000DC038\r
+:101B8000E2E0F3E0D5018D919D915D018193919308\r
+:101B9000B2E0AB16B3E0BB06A9F70E94D10781E023\r
+:101BA000A2960FB6F894DEBF0FBECDBFDF91CF91E6\r
+:101BB0001F910F91FF90EF90DF90CF90BF90AF906B\r
+:101BC0009F908F907F906F905F900895E82FF0E046\r
+:101BD000EE0FFF1FEE5FFC4F808191810895089505\r
+:101BE0008091DC0381608093DC030C94C928809190\r
+:101BF000DC038E7F8093DC030C94C9280E949B2811\r
+:101C0000811102C00E9477280E94C5288093DC03BE\r
+:101C10003E9A809171008D7F8093710082E0809365\r
+:101C200090008AE18093910081E080930E030895F3\r
+:101C300080910E03811102C00E94FE0D10925E037E\r
+:101C400010925D03809171008D7F8093710080916F\r
+:101C500090008F77809390001092200310921F03C2\r
+:101C600010925703109258031092590310925A037E\r
+:101C70001092560310925503E5E3F3E0A5E2B3E0BA\r
+:101C800011921192119211921D921D9283E0E535ED\r
+:101C9000F807B1F70895CF92DF92EF92FF920F937A\r
+:101CA0001F93CF93DF9320911F03222309F484C055\r
+:101CB0006B017C0180910E03811102C00E94FE0D18\r
+:101CC00005E513E0C7E0D0E0A7019601F801929185\r
+:101CD0008291729162918F010E94052E811131C013\r
+:101CE000FE01EE0FFF1FEE0FFF1FEB5CFC4F10829B\r
+:101CF000118212821382DE01AA0FBB1FAB5DBC4FA3\r
+:101D000011961C921E92C730D105E9F021964481AC\r
+:101D10005581668177814083518362837383148206\r
+:101D200015821682178212968D919C9113971196A7\r
+:101D30009C938E9313961C921E9212973496129631\r
+:101D4000E2CF219708F680915D0390915E030197A1\r
+:101D500097FD05C090935E0380935D0304C01092CD\r
+:101D60005E0310925D0380915D0390915E0320916C\r
+:101D70005B0330915C032817390724F010925C0351\r
+:101D800010925B03892BC1F4809171008D7F809349\r
+:101D90007100809190008F7780939000109257038C\r
+:101DA000109258031092590310925A03109256033E\r
+:101DB0001092550310921F03DF91CF911F910F9145\r
+:101DC000FF90EF90DF90CF9008951F920F920FB683\r
+:101DD0000F9211244F925F926F927F928F929F92F7\r
+:101DE000AF92BF92CF92DF92EF92FF922F933F93E9\r
+:101DF0004F935F936F937F938F939F93AF93BF9313\r
+:101E0000CF93DF93EF93FF9380911F03882309F40F\r
+:101E10009BC1C0915D03D0915E031C161D060CF0A2\r
+:101E200093C140900F035090100360901103709085\r
+:101E3000120320E030E0A901C301B2010E94B02FDB\r
+:101E400018160CF065C0C130D10509F452C080915C\r
+:101E50005B0390915C03BE010E9482317C019093F0\r
+:101E60005C0380935B038090210390902203A090F9\r
+:101E70002303B090240320E030E040E85FE3C50195\r
+:101E8000B4010E94A12D60932103709322038093DB\r
+:101E9000230390932403F701EE0FFF1FEE0FFF1FA4\r
+:101EA000EB5CFC4FA301920160817181828193817F\r
+:101EB0000E94092E20E030E040E05EE30E94B42F53\r
+:101EC0009B01AC01C501B4010E94B02F18168CF41F\r
+:101ED000C7010196BE010E94823190935C038093FA\r
+:101EE0005B0310922103109222031092230310929D\r
+:101EF0002403E0915B03F0915C03EE0FFF1FEE0FF4\r
+:101F0000FF1FEB5CFC4F6081718182819381D0C0A7\r
+:101F1000C0905703D0905803E0905903F0905A03B3\r
+:101F200020E030E0A901C701B6010E94052E2197EB\r
+:101F3000882309F4A2C0FE01EE0FFF1FEE0FFF1F62\r
+:101F4000EB5CFC4F80809180A280B380A50194015E\r
+:101F5000C701B6010E94052E87FF31C0A50194017B\r
+:101F600060E070E08CED93EC0E94092E20E030E000\r
+:101F700040E451E40E94092E20E030E040E05FE3BD\r
+:101F80000E94B42F9B01AC0160E070E080E090E41F\r
+:101F90000E9417309B01AC01C501B4010E94B42F0F\r
+:101FA0009B01AC01C701B6010E94052E87FF07C047\r
+:101FB000A701960160E070E08CED93E439C0A501C3\r
+:101FC0009401C701B6010E94B02F18160CF055C03D\r
+:101FD000A501940160E070E08CED93E40E94092E6D\r
+:101FE00020E030E040E451E40E94092E20E030E09F\r
+:101FF00040E05FE30E94B42F9B01AC0160E070E021\r
+:1020000080E090E40E9417309B01AC01C501B4014F\r
+:102010000E94B42F9B01AC01C701B6010E94B02FF2\r
+:1020200018165CF5A701960160E070E08CED93EC6A\r
+:102030000E94092E20E030E040E451E40E94092E85\r
+:1020400020E030E040E05FE30E94B42F9B01AC0150\r
+:1020500060E070E080E090E40E9417309B01AC01EA\r
+:10206000C701B6010E94B42F6093570370935803C1\r
+:102070008093590390935A0313C0FE01EE0FFF1F84\r
+:10208000EE0FFF1FEB5CFC4F80819181A281B38139\r
+:102090008093570390935803A0935903B0935A0326\r
+:1020A00060915703709158038091590390915A039E\r
+:1020B00020910C0330910D032F3F4FEF340731F087\r
+:1020C0002F5F3F4F30930D0320930C030E940C139E\r
+:1020D0006B017C0120E034E244EF51E40E94052EC4\r
+:1020E00087FF08C086EFC82E88E2D82E84EFE82E3E\r
+:1020F00081E4F82E20E030E040E051E4C701B60171\r
+:102100000E94B42F9B01AC0160E074E284E79BE481\r
+:102110000E94092E6B017C010E94712E7093970022\r
+:102120006093960020910A0230910B0240910C02BC\r
+:1021300050910D02C701B6010E94B42F0E94712E6A\r
+:10214000709399006093980080912003882309F48C\r
+:1021500033C1C0901B03D0901C03E0901D03F0908E\r
+:102160001E0320E030E0A901C701B6010E94B02F94\r
+:102170001816D4F580910C0390910D038F3F2FEF2B\r
+:10218000920729F0019690930D0380930C03C701E9\r
+:10219000B6010E940C1320E030E040E051E40E94C0\r
+:1021A000B42F9B01AC0160E074E284E79BE40E94E1\r
+:1021B000092E6B017C010E94712E70939700609331\r
+:1021C000960020910A0230910B0240910C0250912E\r
+:1021D0000D02C701B6010E94B42F0E94712E7093A8\r
+:1021E00099006093980008C0109297001092960092\r
+:1021F0001092990010929800609115037091160347\r
+:102200006F5F7F4F709316036093150320919600C4\r
+:102210003091970080E090E0232BF1F0C091960080\r
+:10222000D09197000E94A22E6B017C01BE0180E03C\r
+:1022300090E00E94A22E9B01AC0160911703709167\r
+:1022400018038091190390911A030E94092E20E02F\r
+:102250003FEF4FE757E410C00E94A22E6B017C01B4\r
+:1022600020E030EE4FEF54E46091170370911803B3\r
+:102270008091190390911A030E94B42F9B01AC0125\r
+:10228000C701B6010E94B02F87FD96C0809113034D\r
+:102290008F5F8093130390E02091D8033091D9038E\r
+:1022A00082179307A0F08091E303882319F010921E\r
+:1022B00013030DC0809171008D7F80937100809118\r
+:1022C00090008F7780939000109220037DC08091C2\r
+:1022D0001403C0911303811128C0C090DD03D09076\r
+:1022E000DE03E090DF03F090E00320E030E0A9019E\r
+:1022F000C701B6010E94B02F1816BCF481E080938C\r
+:10230000140310921B0310921C0310921D031092D1\r
+:102310001E03C0921703D0921803E0921903F092A3\r
+:102320001A03C150C093130343C0109214031092B8\r
+:102330000D0310920C03E091DA03F091DB0348E007\r
+:10234000C49FE00DF11D112480819181A281B38190\r
+:1023500080931B0390931C03A0931D03B0931E0353\r
+:1023600020E030E040E85EE36481758186819781FA\r
+:102370000E94B42F6B017C0120E030E048EC52E475\r
+:1023800060910E0270910F028091100290911102E3\r
+:102390000E94092E9B01AC01C701B6010E94B42F17\r
+:1023A00060931703709318038093190390931A0393\r
+:1023B00010921603109215038091DC0380FD04C077\r
+:1023C0001092200310921F03FF91EF91DF91CF91A4\r
+:1023D000BF91AF919F918F917F916F915F914F913D\r
+:1023E0003F912F91FF90EF90DF90CF90BF90AF90F3\r
+:1023F0009F908F907F906F905F904F900F900FBE47\r
+:102400000F901F901895CF92DF92EF92FF92CF938B\r
+:10241000DF936B017C01EA0180910E03811102C000\r
+:102420000E94FE0D8091DC0380FF46C080915D0319\r
+:1024300090915E0308970CF03FC0809171008D7FF2\r
+:10244000809371008091200381110E94180E81E019\r
+:1024500080931F0310920D0310920C0320E030E0D4\r
+:10246000A901C701B6010E94B02F1816DCF48091B3\r
+:102470005D0390915E03FC01EE0FFF1FEE0FFF1F47\r
+:10248000EB5CFC4FC082D182E282F382FC01EE0F52\r
+:10249000FF1FEB5DFC4FD183C083019690935E03D9\r
+:1024A00080935D03809171008260809371008091C0\r
+:1024B0009000806880939000DF91CF91FF90EF9023\r
+:1024C000DF90CF9008958F929F92AF92BF92CF925C\r
+:1024D000DF92EF92FF920F931F93CF93DF93EC0164\r
+:1024E0007B01D42E4801590180910E03811102C055\r
+:1024F0000E94FE0D8091DC0380FF6BC08091710013\r
+:102500008D7F8093710080911F0381110E94180EAE\r
+:1025100081E080932003D093DB03C093DA03F09231\r
+:10252000D903E092D803D092E3038092DD03909226\r
+:10253000DE03A092DF03B092E00310922103109219\r
+:102540002203109223031092240310921303888114\r
+:102550009981AA81BB8180931B0390931C03A09354\r
+:102560001D03B0931E0320E030E040E85EE36C8181\r
+:102570007D818E819F810E94B42F6B017C0120E0C0\r
+:1025800030E048EC52E460910E0270910F028091AD\r
+:102590001002909111020E94092E9B01AC01C7010B\r
+:1025A000B6010E94B42F60931703709318038093B1\r
+:1025B000190390931A031092160310921503809139\r
+:1025C0007100826080937100809190008068809398\r
+:1025D0009000DF91CF911F910F91FF90EF90DF90CE\r
+:1025E000CF90BF90AF909F908F90089580915F03A0\r
+:1025F00090E0019666E070E00E94823180935F0374\r
+:10260000089580915F0390E0019766E070E00E947A\r
+:10261000823180935F0308958F929F92AF92BF9211\r
+:10262000CF92DF92EF92FF920F931F93CF93DF939E\r
+:102630006B017C01C0910C03D0910D03BE0180E0C1\r
+:1026400090E00E94A22E4B015C01A701960160E080\r
+:1026500070E08CE594E40E94092E9B01AC01C50159\r
+:10266000B4010E94B42F0E94762E20915F03233084\r
+:1026700009F473C028F4222351F02130E9F02CC171\r
+:10268000243009F4A0C0253009F4E0C025C180E061\r
+:1026900090E0A0E0BFE380930A0290930B02A09326\r
+:1026A0000C02B0930D0210920F03109210031092BF\r
+:1026B00011031092120310C110920F031092100315\r
+:1026C00010921103109212036431710540F46A30C4\r
+:1026D000710560F520E030E040E85EE32BC0693C26\r
+:1026E000710508F0AAC080E090E00E94A22E20E0D0\r
+:1026F00030E040EA51E40E94A02D20E030E044E3C5\r
+:1027000053E40E94092E9B01AC010E94B42F20E0EB\r
+:1027100030E040E05EE30E94B42F9B01AC0160E03A\r
+:1027200070E080E09EE30E94A02D44C020E030E0F5\r
+:1027300040E05FE3C701B6010E94B42F6B017C014A\r
+:1027400080E090E0A0E0BEE380930A0290930B0249\r
+:10275000A0930C02B0930D02BFC010920F03109211\r
+:10276000100310921103109212034AE0469F900149\r
+:10277000479F300D1124C90168EB7BE00E946E3148\r
+:10278000BC016C5D754077FF03C07195619571095F\r
+:10279000882777FD8095982F0E94A42E2EE333EC96\r
+:1027A0004EE259E30E94B42F20E030E040EC5EE3BB\r
+:1027B0000E94A12D60930A0270930B0280930C0279\r
+:1027C00090930D0289C010920F0310921003109283\r
+:1027D000110310921203CE0183709927892BE1F027\r
+:1027E000BE016170772780E090E00E94A22E20E079\r
+:1027F00030E040E05EE30E94B42F20E030E040E4AF\r
+:102800005FE30E94A12D60930A0270930B028093F4\r
+:102810000C0290930D020CC080E090E0A0E0BFE3BA\r
+:1028200080930A0290930B02A0930C02B0930D02C6\r
+:10283000C770DD27CD2B09F04FC010920A0210920D\r
+:102840000B0210920C0210920D0246C010920F0360\r
+:1028500010921003109211031092120300E010E086\r
+:1028600020E03FE300930A0210930B0220930C0236\r
+:1028700030930D026739710578F180E090E00E9495\r
+:10288000A22E20E030E047E153E40E94A02D20E09A\r
+:1028900030E04AE754E40E94092E20E030E048E4AA\r
+:1028A00052E40E94B42F20E030E040EA51E40E945C\r
+:1028B000E62E0E94712E660F771F660F771FFB01B1\r
+:1028C000E357FD4F2081318142815381C701B60119\r
+:1028D0000E94B42F6B017C01C701B601DF91CF913B\r
+:1028E0001F910F91FF90EF90DF90CF90BF90AF902E\r
+:1028F0009F908F900895809168030895CF93DF9300\r
+:1029000000D01F92CDB7DEB79C018091E8038430E0\r
+:1029100019F593E099833B832A839093E9008FEF25\r
+:102920009091E800815095FD06C095ED9A95F1F7DC\r
+:1029300000008111F5CF8091E80085FF0DC040E0D7\r
+:1029400050E063E070E0CE0101960E94B7168091DE\r
+:10295000E8008E778093E8000F900F900F90DF9142\r
+:10296000CF910895CF93DF9300D01F92CDB7DEB7FC\r
+:102970002091E803243021F522E029839B838A8378\r
+:1029800083E08093E9008FEF9091E800815095FDFE\r
+:1029900006C095ED9A95F1F700008111F5CF809171\r
+:1029A000E80085FF0DC040E050E063E070E0CE013C\r
+:1029B00001960E94B7168091E8008E778093E80018\r
+:1029C0000F900F900F90DF91CF9108952091E80321\r
+:1029D0002430F1F422E02093E9002FEF3091E80059\r
+:1029E000215035FD06C035ED3A95F1F70000211173\r
+:1029F000F5CF2091E80025FF0BC040E050E065E0F6\r
+:102A000070E00E94B7168091E8008E778093E8000E\r
+:102A10000895CF93DF932091E803243039F521E026\r
+:102A20002093E9002FEF3091E800215035FD06C0DA\r
+:102A300035ED3A95F1F700002111F5CF2091E8002E\r
+:102A400025FF14C0EC0140E050E068E070E00E9417\r
+:102A5000B7168091E8008E778093E80088E0FE0149\r
+:102A6000A0E6B3E001900D928A95E1F7DF91CF9156\r
+:102A700008958091E703811109C00E944C180E94BB\r
+:102A8000A9188091E20084608093E200089510927A\r
+:102A9000E7030895089508950C94A72742E061EC98\r
+:102AA00081E00E94C61742E061EC82E00E94C617F6\r
+:102AB00042E061EC83E00C94C6178091EA03833016\r
+:102AC00009F453C030F4813071F0823009F48CC0C5\r
+:102AD00008958A3009F478C08B3009F45EC08930DB\r
+:102AE00009F09AC020C08091E903813A09F094C0AE\r
+:102AF0008091E800877F8093E8008091ED039091BA\r
+:102B0000EE03892B21F468E080E693E003C060E0E7\r
+:102B100080E090E070E00E9402178091E8008B77DF\r
+:102B20008093E80008958091E903813209F074C030\r
+:102B30008091ED039091EE03892B09F06DC0809197\r
+:102B4000E800877F8093E8008091E80082FD05C05F\r
+:102B50008091E8038111F8CF5FC08091F1008093EC\r
+:102B600068038091E8008B7753C08091E903813A34\r
+:102B700009F052C08091ED039091EE03892B09F08A\r
+:102B80004BC08091E800877F8093E8008091E80047\r
+:102B900080FFFCCF80911C0236C08091E903813216\r
+:102BA000D9F58091ED039091EE03892BA9F58091E1\r
+:102BB000E800877F8093E8000E94FB178091EB0379\r
+:102BC00080931C020C946C218091E903813221F5E1\r
+:102BD0008091E800877F8093E8000E94FB17809136\r
+:102BE000EC038093690308958091E903813AA1F48D\r
+:102BF0008091E800877F8093E8008091E80080FF63\r
+:102C0000FCCF809169038093F1008091E8008E777A\r
+:102C10008093E8000C94FB17089584B7877F84BFE6\r
+:102C200088E10FB6F89480936000109260000FBEA8\r
+:102C300090E080E80FB6F894809361009093610073\r
+:102C40000FBE0E949E1B0E944C180E94A9188091E2\r
+:102C5000E20084608093E20078940E942F1B0E941F\r
+:102C6000A01B82E192E00E944A1B8091E80385301C\r
+:102C700069F40E9461278091E6038823B1F30E94E2\r
+:102C80008F27882391F30E94A116EFCF0E94A81BE3\r
+:102C9000ECCF292F332723303105C9F064F42130DC\r
+:102CA000310581F02230310509F043C084E590E020\r
+:102CB00020ED39E042C021323105F1F022323105F8\r
+:102CC00041F137C082E190E024E23AE036C0992732\r
+:102CD0008130910541F08230910541F0892B49F511\r
+:102CE000ECECF9E005C0EEE9F9E002C0E2E7F9E05A\r
+:102CF000849190E09F0121C06330D8F4E62FF0E08A\r
+:102D0000EE0FFF1FEA51FD4F2081318189E090E0F5\r
+:102D100014C0633070F470E0FB01EE0FFF1FE0524F\r
+:102D2000FD4F20813181FB01E352FD4F808190E016\r
+:102D300004C080E090E020E030E0FA01318320839D\r
+:102D4000089580E189BD82E189BD09B400FEFDCF0F\r
+:102D50008091D8008F7D8093D8008091E0008260C0\r
+:102D60008093E0008091E00081FDFCCF0895CF9238\r
+:102D7000DF92EF92FF920F931F93CF93DF93EC01BB\r
+:102D80008B016A010E941A18811133C0C114D10449\r
+:102D900039F0F60180819181081B190BC80FD91FEA\r
+:102DA000E12CF12C0115110519F18091E80085FD48\r
+:102DB00016C08091E8008E778093E800C114D1049A\r
+:102DC00049F0F60180819181E80EF91EF182E082DE\r
+:102DD00085E00FC00E941A18882321F30AC0899148\r
+:102DE0008093F10001501109FFEFEF1AFF0ADACFCB\r
+:102DF00080E0DF91CF911F910F91FF90EF90DF90D6\r
+:102E0000CF9008952091EF033091F00326173707F4\r
+:102E100048F06115710539F42091E8002E77209370\r
+:102E2000E80001C0B90140E061157105A9F12091E8\r
+:102E3000E803222309F443C0253009F442C020915D\r
+:102E4000E80023FD40C02091E80022FD32C020911F\r
+:102E5000E80020FFE9CF4091F3002091F20030E03C\r
+:102E6000342BFC01CF016115710559F02830310573\r
+:102E700040F481918093F100615071092F5F3F4FC1\r
+:102E8000F1CF41E02830310509F040E02091E80021\r
+:102E90002E772093E800C8CF4111C9CF0AC0809196\r
+:102EA000E803882361F0853061F08091E80083FDBC\r
+:102EB0000AC08091E80082FFF2CF80E0089582E0AE\r
+:102EC000089583E0089581E008952091EF03309103\r
+:102ED000F0032617370748F06115710539F4209182\r
+:102EE000E8002E772093E80001C0B901FC0120E042\r
+:102EF0006115710591F18091E803882309F440C0C0\r
+:102F0000853009F43FC08091E80083FD3DC0809189\r
+:102F1000E80082FD2FC08091E80080FFE9CF20917A\r
+:102F2000F3008091F20090E0922B6115710559F049\r
+:102F30008830910540F424912093F100319661503E\r
+:102F400071090196F2CF21E0089709F020E0809105\r
+:102F5000E8008E778093E800CBCF2111CCCF0AC058\r
+:102F60008091E803882361F0853061F08091E8006A\r
+:102F700083FD0AC08091E80082FFF2CF80E00895CF\r
+:102F800082E0089583E0089581E00895982F9730B6\r
+:102F900058F59093E900981739F07091EC00209162\r
+:102FA000ED005091F00003C0242F762F50E021FF58\r
+:102FB00019C03091EB003E7F3093EB003091ED0073\r
+:102FC0003D7F3093ED003091EB0031603093EB00AA\r
+:102FD0007093EC002093ED005093F0002091EE00F0\r
+:102FE00027FF07C09F5FD3CF8F708093E90081E0F8\r
+:102FF000089580E008958091E90387FF11C08091D2\r
+:10300000E80082FD05C08091E8038111F8CF11C06E\r
+:103010008091E8008B770BC08091E803882349F00A\r
+:103020008091E80080FFF8CF8091E8008E77809350\r
+:10303000E80008952091E4003091E50095E6409184\r
+:10304000EC00842F817040FF22C08091E80080FD59\r
+:103050001CC08091E803882391F0853091F0809125\r
+:10306000EB0085FD10C04091E4005091E50042174F\r
+:10307000530729F39A01915011F784E0089582E0F3\r
+:10308000089583E0089581E0089580E008954091D7\r
+:10309000E80042FFDECF08950E94BA180E94C218CD\r
+:1030A000E0EEF0E0808181608083E8EDF0E08081F7\r
+:1030B0008F77808319BCA7EDB0E08C918E7F8C93C5\r
+:1030C00080818F7E80831092E70308950F931F9372\r
+:1030D000CF93DF930E94BA180E94C218C8EDD0E0C7\r
+:1030E00088818F77888388818068888388818F7DB5\r
+:1030F000888319BC1092E8031092E4031092E6034F\r
+:103100001092E50300EE10E0F80180818B7F808350\r
+:1031100088818160888342E060E080E00E94C61779\r
+:10312000E1EEF0E080818E7F8083E2EEF0E080814E\r
+:1031300081608083808188608083F80180818E7FB8\r
+:103140008083888180618883DF91CF911F910F9167\r
+:103150000895E8EDF0E080818F7E8083E7EDF0E078\r
+:1031600080818160808384E082BF81E08093E70377\r
+:103170000C946618E8EDF0E080818E7F80831092D9\r
+:10318000E20008951092DA001092E10008951F9273\r
+:103190000F920FB60F9211242F933F934F935F938B\r
+:1031A0006F937F938F939F93AF93BF93EF93FF930F\r
+:1031B0008091E10082FF0BC08091E20082FF07C096\r
+:1031C0008091E1008B7F8093E1000E942E1B809113\r
+:1031D000DA0080FF1FC08091D80080FF1BC0809163\r
+:1031E000DA008E7F8093DA008091D90080FF0DC0D5\r
+:1031F00080E189BD82E189BD09B400FEFDCF81E097\r
+:103200008093E8030E94391505C019BC1092E803A9\r
+:103210000E9447158091E10080FF19C08091E20073\r
+:1032200080FF15C08091E2008E7F8093E200809144\r
+:10323000E20080618093E2008091D80080628093F8\r
+:10324000D80019BC85E08093E8030E944B1580915B\r
+:10325000E10084FF30C08091E20084FF2CC080E157\r
+:1032600089BD82E189BD09B400FEFDCF8091D800FF\r
+:103270008F7D8093D8008091E1008F7E8093E10064\r
+:103280008091E2008F7E8093E2008091E200816075\r
+:103290008093E2008091E403882311F084E007C06A\r
+:1032A0008091E30087FD02C081E001C083E080934C\r
+:1032B000E8030E944C158091E10083FF29C08091B2\r
+:1032C000E20083FF25C08091E100877F8093E100C9\r
+:1032D00082E08093E8031092E4038091E1008E7F06\r
+:1032E0008093E1008091E2008E7F8093E2008091E4\r
+:1032F000E20080618093E20042E060E080E00E94B2\r
+:10330000C6178091F00088608093F0000E944A15F3\r
+:10331000FF91EF91BF91AF919F918F917F916F91AD\r
+:103320005F914F913F912F910F900FBE0F901F9083\r
+:1033300018951F920F920FB60F9211242F933F935F\r
+:103340004F935F936F937F938F939F93AF93BF93AD\r
+:10335000CF93DF93EF93FF93C091E900CF708091FB\r
+:10336000EC00D82FD17080FDD0E81092E900809158\r
+:10337000F000877F8093F00078940E94DD1910920E\r
+:10338000E9008091F00088608093F000CD2BCF7031\r
+:10339000C093E900FF91EF91DF91CF91BF91AF9181\r
+:1033A0009F918F917F916F915F914F913F912F915D\r
+:1033B0000F900FBE0F901F9018951F93CF93DF9320\r
+:1033C000CDB7DEB7AA970FB6F894DEBF0FBECDBF5C\r
+:1033D000E9EEF3E088E08E0F9091F10091938E1367\r
+:1033E000FBCF0E945D158091E80083FF1FC1809193\r
+:1033F000E9039091EA03492F50E04A30510508F063\r
+:1034000015C1FA01EE59FF4F0C949631803881F0C6\r
+:10341000823809F00BC18091ED038F708093E90031\r
+:103420008091EB0085FB882780F91092E90006C0A7\r
+:103430008091E5039091E603911182609091E800FC\r
+:10344000977F9093E8008093F1001092F100C8C03C\r
+:10345000282F2D7F09F0EAC0882319F0823061F00F\r
+:10346000E5C08091EB03813009F0E0C0933009F0B2\r
+:1034700080E08093E6032BC08091EB03811127C08D\r
+:103480008091ED038F7009F4D1C08093E900209101\r
+:10349000EB0020FF1CC0933021F48091EB00806290\r
+:1034A00014C09091EB0090619093EB0021E030E02C\r
+:1034B000A90102C0440F551F8A95E2F74093EA0024\r
+:1034C0001092EA008091EB0088608093EB001092EC\r
+:1034D000E9008091E800877F86C08111A7C0109124\r
+:1034E000EB031F778091E3008078812B8093E300CA\r
+:1034F0008091E800877F8093E8000E94FB1780910D\r
+:10350000E80080FFFCCF8091E30080688093E300B7\r
+:10351000111102C082E001C083E08093E80386C0FD\r
+:103520008058823008F082C08091EB039091EC03C8\r
+:103530008C3D53E0950779F583E08A838AE289839D\r
+:103540004FB7F894DE01139620E03EE051E2E32FFE\r
+:10355000F0E050935700E49120FF03C0E295EF7034\r
+:103560003F5FEF708E2F90E0EA3010F0C79601C0F9\r
+:10357000C0968D939D932F5F243149F74FBF809163\r
+:10358000E800877F8093E8006AE270E0CE01019650\r
+:103590000E94021714C0AE014F5F5F4F6091ED03B0\r
+:1035A0000E944916BC01009709F440C09091E800C0\r
+:1035B000977F9093E80089819A810E946517809196\r
+:1035C000E8008B778093E80031C0803879F58091EE\r
+:1035D000E800877F8093E8008091E4038093F10006\r
+:1035E0008091E8008E778093E8000E94FB171EC050\r
+:1035F00081111CC09091EB039230C0F48091E800DF\r
+:10360000877F8093E8009093E4030E94FB178091EA\r
+:10361000E403811106C08091E30087FD02C081E0D0\r
+:1036200001C084E08093E8030E944E158091E80079\r
+:1036300083FF0AC08091E800877F8093E800809133\r
+:10364000EB0080628093EB00AA960FB6F894DEBF81\r
+:103650000FBECDBFDF91CF911F9108950895CF93F5\r
+:103660008091E8038823A1F0C091E900CF70909188\r
+:10367000EC00892F817090FD80E8C82B1092E90042\r
+:103680008091E80083FD0E94DD19CF70C093E900AE\r
+:10369000CF91089590936F0380936E030895E09106\r
+:1036A0006E03F0916F03309721F00190F081E02DCF\r
+:1036B000099480E00895E0916E03F0916F033097D4\r
+:1036C00021F00280F381E02D09940895E0916E03CA\r
+:1036D000F0916F03309721F00480F581E02D09947B\r
+:1036E000089520916C0330916D038217930771F058\r
+:1036F00090936D0380936C03E0916E03F0916F03E0\r
+:10370000309721F00680F781E02D099408952091EB\r
+:103710006A0330916B038217930771F090936B03E8\r
+:1037200080936A03E0916E03F0916F03309721F06C\r
+:103730000084F185E02D0994089508950C949D1B53\r
+:103740000E94DB270E94D20B0E9461280C94092D55\r
+:103750004F925F927F928F929F92AF92BF92CF9241\r
+:10376000DF92EF92FF920F931F93CF93DF93CDB72A\r
+:10377000DEB72A970FB6F894DEBF0FBECDBF0E940A\r
+:10378000AD0C91E7C92E93E0D92E00E010E0AA24F9\r
+:10379000A394B12C702E802F0E94E60D4C01F601EF\r
+:1037A000419051906F014826592641145104B1F4BB\r
+:1037B0000F5F1F4F0530110569F78FEF89838A83EB\r
+:1037C0001B820E94E4278160782F9D838C8349812E\r
+:1037D0005A816B818D810E94611C3AC08091C70320\r
+:1037E00081FD0E94EF0D20E030E07501022E02C045\r
+:1037F000EE0CFF1C0A94E2F7C70184219521892B66\r
+:1038000009F12E837F828E209F2091E0892809F480\r
+:1038100090E098870E94E4278160782F9A878987B3\r
+:103820004E815F8168858A850E94611C000F111F8F\r
+:10383000F801EF58FC4F80819181E826F926F1824A\r
+:10384000E08206C02F5F3F4F2C30310571F6B0CFBC\r
+:103850000E94482A109170030E944F1B1817D9F03C\r
+:103860000E944F1B809370032A960FB6F894DEBF18\r
+:103870000FBECDBFDF91CF911F910F91FF90EF90C1\r
+:10388000DF90CF90BF90AF909F908F907F905F9090\r
+:103890004F900C940A0B2A960FB6F894DEBF0FBE19\r
+:1038A000CDBFDF91CF911F910F91FF90EF90DF90EF\r
+:1038B000CF90BF90AF909F908F907F905F904F90F0\r
+:1038C0000895CF93DF93CDB7DEB72B970FB6F8945B\r
+:1038D000DEBF0FBECDBF4F83588769877A878B873E\r
+:1038E000DE01119686E0FD0111928A95E9F785E0E7\r
+:1038F000FE01379601900D928A95E1F749815A8130\r
+:103900006B817C818D819E810E9406242B960FB64F\r
+:10391000F894DEBF0FBECDBFDF91CF910895CF9356\r
+:10392000882309F4C2C0C82F823859F40E944F1B63\r
+:1039300081FDBBC089E30E94AF260E94322789E344\r
+:103940000CC0833879F40E944F1B80FDAEC083E524\r
+:103950000E94AF260E94322783E50E94CC26CF9199\r
+:103960000C943227843859F40E944F1B82FD9DC06D\r
+:1039700087E40E94AF260E94322787E4EECF8CEFC7\r
+:103980008C0F813A48F48C2F0E94712C81118DC0CC\r
+:103990008C2F0E94AF26E3CF80E28C0F883048F452\r
+:1039A000C77081E001C0880FCA95EAF70E94EB2634\r
+:1039B000D6CF8BE58C0F833078F4C53A29F0C63A20\r
+:1039C00031F083E890E005C081E890E002C082E831\r
+:1039D00090E0CF910C94711B88E58C0F833108F037\r
+:1039E00064C0C83A39F1C93A41F1CA3A49F1CB3A0F\r
+:1039F00051F1CC3A59F1CD3A61F1C03B69F1CE3A7F\r
+:103A000071F1CF3A79F1C13B81F1C23B89F1C33BFE\r
+:103A100091F1C43B99F1C53BA1F1C63BA9F1C73B6C\r
+:103A2000B1F1C83BB9F1C93BC1F1CA3BC9F180E072\r
+:103A300090E038C082EE90E035C089EE90E032C070\r
+:103A40008AEE90E02FC085EB90E02CC086EB90E0F2\r
+:103A500029C087EB90E026C08CEC90E023C08DEC71\r
+:103A600090E020C083E891E01DC08AE891E01AC090\r
+:103A700082E991E017C084E991E014C081E292E00C\r
+:103A800011C083E292E00EC084E292E00BC085E2B6\r
+:103A900092E008C086E292E005C087E292E002C0B0\r
+:103AA0008AE292E0CF910C94871BCF9108958823EE\r
+:103AB00009F44BC0823859F40E944F1B81FF45C066\r
+:103AC00089E30E94AF260E94322789E30CC0833825\r
+:103AD00071F40E944F1B80FF38C083E50E94AF261F\r
+:103AE0000E94322783E50E94CC260C94322784382A\r
+:103AF00059F40E944F1B82FF28C087E40E94AF2622\r
+:103B00000E94322787E4EFCF9CEF980F913A58F349\r
+:103B100090E2980F983050F4877091E001C0990FAF\r
+:103B20008A95EAF7892F0E94F126DFCF9BE5980F4F\r
+:103B3000933020F480E090E00C94711B885A83311C\r
+:103B400020F480E090E00C94871B0895882321F0F6\r
+:103B50000E94EB260C9432270895882321F00E94BE\r
+:103B6000F1260C9432270895BF92CF92DF92EF9204\r
+:103B7000FF920F931F93CF93DF9300D000D000D01C\r
+:103B8000CDB7DEB725E0FC01DE01119601900D9264\r
+:103B90002A95E1F7FC01D0801181028125812295CF\r
+:103BA0002F7043815481452B09F472C31F3F21F4C8\r
+:103BB000FFEFDF1609F46CC37C012E830E94D3074C\r
+:103BC000D9821A8369817A81802F0E94AB26182FAF\r
+:103BD000B92E0E9460260E9427252E81002319F00D\r
+:103BE0000E9408272E81EB2DE295EF70F0E0E4595A\r
+:103BF000FF4F0C9496318B2D807F9B2D9F70F92E5B\r
+:103C0000882319F0F29480EFF822002389F0FF2036\r
+:103C100009F47CC280E2810F883020F48F2D0E944D\r
+:103C2000EB2603C08F2D0E94FB260E9432276EC216\r
+:103C3000812F0E94571DFF2009F42AC3105E8F2D8B\r
+:103C4000183018F40E94F12602C00E94012726961F\r
+:103C50000FB6F894DEBF0FBECDBFDF91CF911F919D\r
+:103C60000F91FF90EF90DF90CF90BF900C94322790\r
+:103C70008B2D807F9B2D9F70803211F4892F03C084\r
+:103C8000892F8295807F112319F0113011F12BC0FB\r
+:103C90000023A9F0222389F1213079F526960FB669\r
+:103CA000F894DEBF0FBECDBFDF91CF911F910F9172\r
+:103CB000FF90EF90DF90CF90BF900C941B272223B2\r
+:103CC00019F0213009F4E4C28E830E941E278E81F0\r
+:103CD0009BC1002321F0263008F0DAC20EC0253047\r
+:103CE00008F0D6C291C10023C9F0222331F0F701B8\r
+:103CF000958190FF0BC29F70958326960FB6F8941E\r
+:103D0000DEBF0FBECDBFDF91CF911F910F91FF900E\r
+:103D1000EF90DF90CF90BF900C94A61D222309F462\r
+:103D200073C109C22B2D26952695237030E02115ED\r
+:103D3000310521F021303105D1F0AAC2002321F054\r
+:103D4000812F9B2D937002C080E090E026960FB6E5\r
+:103D5000F894DEBF0FBECDBFDF91CF911F910F91C1\r
+:103D6000FF90EF90DF90CF90BF900C94711B0023D9\r
+:103D700021F0812F9B2D937002C080E090E0269669\r
+:103D80000FB6F894DEBF0FBECDBFDF91CF911F916C\r
+:103D90000F91FF90EF90DF90CF90BF900C94871B16\r
+:103DA000812F002319F00E94502902C00E94B829D7\r
+:103DB00026960FB6F894DEBF0FBECDBFDF91CF9130\r
+:103DC0001F910F91FF90EF90DF90CF90BF900C94D8\r
+:103DD0003D2A8B2D837009F07BC0011159C2812FC0\r
+:103DE000829586958770880F880F912F9F70C92EB6\r
+:103DF000D12CE12CF12C082E04C0CC0CDD1CEE1CC7\r
+:103E0000FF1C0A94D2F714FF12C04FE050E060E0AC\r
+:103E100070E004C0440F551F661F771F8A95D2F7C4\r
+:103E2000CB01BA01609570958095909503C060E0D4\r
+:103E300070E0CB012B2D269526952370422F50E064\r
+:103E400042305105D9F04330510569F16C297D2983\r
+:103E50008E299F294130510551F126960FB6F894CD\r
+:103E6000DEBF0FBECDBFDF91CF911F910F91FF90AD\r
+:103E7000EF90DF90CF90BF900C944E256C297D2958\r
+:103E80008E299F2926960FB6F894DEBF0FBECDBFB0\r
+:103E9000DF91CF911F910F91FF90EF90DF90CF9026\r
+:103EA000BF900C946A250E944E25C701B601269644\r
+:103EB0000FB6F894DEBF0FBECDBFDF91CF911F913B\r
+:103EC0000F91FF90EF90DF90CF90BF900C94322530\r
+:103ED000002319F08B2D817001C08695882309F489\r
+:103EE000D7C1812F829586958770880F880F912F73\r
+:103EF0009F70C92ED12CE12CF12C082E04C0CC0CC3\r
+:103F0000DD1CEE1CFF1C0A94D2F714FF12C04FE018\r
+:103F100050E060E070E004C0440F551F661F771F3B\r
+:103F20008A95D2F7CB01BA016095709580959095EE\r
+:103F300003C060E070E0CB012B2D26952695237001\r
+:103F4000422F50E042305105D9F04330510569F11C\r
+:103F50006C297D298E299F294130510551F12696E2\r
+:103F60000FB6F894DEBF0FBECDBFDF91CF911F918A\r
+:103F70000F91FF90EF90DF90CF90BF900C94282688\r
+:103F80006C297D298E299F2926960FB6F894DEBFCD\r
+:103F90000FBECDBFDF91CF911F910F91FF90EF909A\r
+:103FA000DF90CF90BF900C9444260E942826C70132\r
+:103FB000B60126960FB6F894DEBF0FBECDBFDF91D7\r
+:103FC000CF911F910F91FF90EF90DF90CF90BF9016\r
+:103FD0000C940C26103F49F118F4103E48F491C09F\r
+:103FE000123F09F453C0E8F1133F09F464C089C0DB\r
+:103FF0001F708B2D8F71002321F00E94A525812F2A\r
+:104000007CCE0E94C625812F26960FB6F894DEBF7F\r
+:104010000FBECDBFDF91CF911F910F91FF90EF9019\r
+:10402000DF90CF90BF900C94AD1D0023B1F02530F0\r
+:1040300008F02EC18B2D8F7126960FB6F894DEBF37\r
+:104040000FBECDBFDF91CF911F910F91FF90EF90E9\r
+:10405000DF90CF90BF900C94EB25263008F018C16C\r
+:10406000E9CF0023A9F08B2D8F7126960FB6F89417\r
+:10407000DEBF0FBECDBFDF91CF911F910F91FF909B\r
+:10408000EF90DF90CF90BF900C94A525002359F3BB\r
+:104090008B2D8F7126960FB6F894DEBF0FBECDBF65\r
+:1040A000DF91CF911F910F91FF90EF90DF90CF9014\r
+:1040B000BF900C94C625002399F08B2D8F71269606\r
+:1040C0000FB6F894DEBF0FBECDBFDF91CF911F9129\r
+:1040D0000F91FF90EF90DF90CF90BF900C949025C0\r
+:1040E00026960FB6F894DEBF0FBECDBFDF91CF91FD\r
+:1040F0001F910F91FF90EF90DF90CF90BF900C94A5\r
+:1041000086250023A9F0222309F4ADCF812F26961E\r
+:104110000FB6F894DEBF0FBECDBFDF91CF911F91D8\r
+:104120000F91FF90EF90DF90CF90BF900C948F1C79\r
+:10413000222309F4ADCF812F26960FB6F894DEBF67\r
+:104140000FBECDBFDF91CF911F910F91FF90EF90E8\r
+:10415000DF90CF90BF900C94571D4B2D4F70612F67\r
+:10416000C7010E940B0626960FB6F894DEBF0FBE5D\r
+:10417000CDBFDF91CF911F910F91FF90EF90DF9016\r
+:10418000CF90BF900C94AA24011182C09B2D9F70E8\r
+:10419000492F50E04230510509F443C0C4F44115A1\r
+:1041A000510571F14130510509F072C026960FB6E4\r
+:1041B000F894DEBF0FBECDBFDF91CF911F910F915D\r
+:1041C000FF90EF90DF90CF90BF900C94312D433053\r
+:1041D0005105C1F14430510509F05AC0812F26968E\r
+:1041E0000FB6F894DEBF0FBECDBFDF91CF911F9108\r
+:1041F0000F91FF90EF90DF90CF90BF900C94832DA4\r
+:1042000026960FB6F894DEBF0FBECDBFDF91CF91DB\r
+:104210001F910F91FF90EF90DF90CF90BF900C9483\r
+:104220001A2D26960FB6F894DEBF0FBECDBFDF91D4\r
+:10423000CF911F910F91FF90EF90DF90CF90BF90A3\r
+:104240000C944D2D26960FB6F894DEBF0FBECDBF51\r
+:10425000DF91CF911F910F91FF90EF90DF90CF9062\r
+:10426000BF900C94602D4B2D4F70612FC701269687\r
+:104270000FB6F894DEBF0FBECDBFDF91CF911F9177\r
+:104280000F91FF90EF90DF90CF90BF900C94D507E7\r
+:1042900026960FB6F894DEBF0FBECDBFDF91CF914B\r
+:1042A0001F910F91FF90EF90DF90CF90BF900895F6\r
+:1042B0000E9408270E9418270E94DD260E943227AC\r
+:1042C0000E94EE2A0E943D2A80E090E00E94711B2D\r
+:1042D00080E090E00C94871B0E94F8260C945821F3\r
+:1042E0000E94A026292F22952F7030E02C30310516\r
+:1042F0004CF42A3031056CF422503109223031055A\r
+:1043000088F407C02C30310549F02F30310531F0E9\r
+:1043100009C0803E48F0803F29F406C093FB8827FF\r
+:1043200080F9089580E0089581E00895CF93DF93A8\r
+:1043300000D000D01F92CDB7DEB70F900F900F9036\r
+:104340000F900F90DF91CF910895CF93DF9300D01E\r
+:1043500000D000D0CDB7DEB726960FB6F894DEBFFA\r
+:104360000FBECDBFDF91CF9108951F93CF93DF9301\r
+:10437000C0917B0316E080917C03C81799F0D0E0D0\r
+:104380001C9FF0011D9FF00D1124E358FC4F40814C\r
+:10439000518162817381848195810E94A52121963A\r
+:1043A000C770E9CFDF91CF911F9108954091AD0380\r
+:1043B0005091AE036091AF037091B0038091B1034F\r
+:1043C0009091B2030C94A5218091B20382958F70D5\r
+:1043D00009F054C08091AF03882309F44FC0809145\r
+:1043E0007B03A0917C036091AD037091AE0340917B\r
+:1043F000B0035091B103B6E08A1709F43FC090E0D2\r
+:1044000041155105C1F17F3F11F46F3FA1F1B89FF4\r
+:10441000F001B99FF00D1124E358FC4F2181721374\r
+:104420002AC02081621327C02281211124C0238148\r
+:1044300034812417350710F421503109241B350B22\r
+:10444000283C3105C0F42091B2032F7020612093E5\r
+:10445000B20326E0289FF001299FF00D1124EE57AA\r
+:10446000FC4F80818F70806180838DEA93E00E9491\r
+:10447000B41D0C94B52101968770BECF0895CF92DC\r
+:10448000DF92EF92FF920F931F93CF93DF93CDB7FD\r
+:10449000DEB762970FB6F894DEBF0FBECDBF8C01BA\r
+:1044A00085E0F801DE011D9601900D928A95E1F7F5\r
+:1044B000D8014C9111965C91119712966C911297BC\r
+:1044C0001396CD90DC9014973091AD037091AE03AC\r
+:1044D0008091B0039091B103009709F46BC17F3FC5\r
+:1044E00019F43F3F09F466C1E090AF03EE2009F4F0\r
+:1044F000C0C02091B203C816D90628F0F601E81B07\r
+:10450000F90BCF0104C0809590958C0D9D1DFF2463\r
+:10451000F394883C910578F0F12C207F09F0C6C017\r
+:104520007C2DD98AC88A89890E9496218DEA93E0D8\r
+:104530000E94B41DB1C0822F807F09F046C0751360\r
+:1045400014C0341312C0611110C02F702061209369\r
+:10455000B2030E94D6218DEA93E00E94B41D80919F\r
+:10456000B203D80115968C932EC0CD2819F15F3F68\r
+:1045700011F44F3FF9F0F62E61111CC080917B03BE\r
+:1045800020917C0336E0821709F45AC090E0389FEE\r
+:10459000F001399FF00D1124E358FC4F718157133E\r
+:1045A00006C07081471303C07281711103C0019668\r
+:1045B0008770E9CFF62E662309F418C18091B20303\r
+:1045C00081608093B203F12C11C1751308C03413BC\r
+:1045D00006C0611104C08091B203D801C3C04D87E9\r
+:1045E0005E878D859E856A8B0E9470216A898823EB\r
+:1045F000E1F16623D1F12091B203822F82958F7071\r
+:1046000090E0029774F08091AD039091AE0398878B\r
+:104610008F831986DB86CA862C87CE0107960E9477\r
+:10462000B41D86E0F801ADEAB3E001900D928A95E1\r
+:10463000E1F70E94E4210E94D621FF24F394D6C022\r
+:104640004D875E878D859E850E94A026292F229505\r
+:104650002F7030E0223031050CF0BCC09F7009F0A3\r
+:10466000B6C0805E883008F4C1C0C8010E94B41D85\r
+:10467000E4CFC816D90608F453C0F601E81BF90BBD\r
+:10468000CF01883C910508F450C0F12C7C2DD98ACB\r
+:10469000C88A89890E949621EDEAF3E086E0DF016D\r
+:1046A0001D928A95E9F70E94D621A0C0751314C007\r
+:1046B000341312C0611110C08091B203F8018583D8\r
+:1046C000C8010E94B41D86E0EDEAF3E0DF011D920F\r
+:1046D0008A95E9F7FE2C8AC04D875E878D859E8579\r
+:1046E0006A8B0E9470216A89882309F4BECF6623F1\r
+:1046F00009F4BBCF2091B203822F82958F7090E096\r
+:1047000002970CF48ECF8091AD039091AE039A8303\r
+:1047100089831B82DD82CC822E83CE0101967FCFDE\r
+:10472000809590958C0D9D1DACCFF62E662309F4D7\r
+:104730009CCF75132EC034132CC02091B20320FDE2\r
+:104740001FC0822F82958F70D9F0D80115962C93B7\r
+:1047500015978F3049F08F5F982F9295907F822F19\r
+:104760008F70892B15968C93C8010E94B41D86E02A\r
+:10477000F801ADEAB3E001900D928A95E1F793CF8D\r
+:1047800086E0F801ADEAB3E001900D928A95E1F779\r
+:104790002DC04D875E878D859E850E947021811179\r
+:1047A00040CF8091B20381608093B203C8010E9420\r
+:1047B000B41D1CC0662309F458CF4D875E878D85D4\r
+:1047C0009E850E947021882309F44FCF2ACF811142\r
+:1047D00048CF0CC0243031050CF047CF9F7009F44E\r
+:1047E00040CFF8019581907F09F03BCF8F2D6296E5\r
+:1047F0000FB6F894DEBF0FBECDBFDF91CF911F91F2\r
+:104800000F91FF90EF90DF90CF9008951F93CF937B\r
+:10481000DF93CDB7DEB72C970FB6F894DEBF0FBE8F\r
+:10482000CDBF4F83588769877A878B879C87CE0156\r
+:1048300007960E943F22882369F08F8198852A85F8\r
+:104840003B85232BF1F19F3F09F063C08F3F09F0B7\r
+:1048500060C037C086E0FE013796DE0111960190F8\r
+:104860000D928A95E1F76F817885EA85FB8530970F\r
+:1048700041F17F3F11F46F3F21F120917C0330E043\r
+:10488000C90101968770992740917B0350E08417F6\r
+:10489000950709F447C069837A83FD83EC8396E02A\r
+:1048A000929FD001939FB00D1124A358BC4FFE01DD\r
+:1048B000319601900D929A95E1F780937C030E94C6\r
+:1048C000B52116E080917B0390917C038917C1F19B\r
+:1048D000189FC001112483589C4F0E943F228823B7\r
+:1048E00079F1E0917B031E9FF0011124E358FC4F06\r
+:1048F0004081518162817381848195810E94A521CB\r
+:1049000080917B0390E001968770992780937B03C9\r
+:10491000D9CF4F81588569857A858B859C850E9482\r
+:10492000A521CFCF0E946C2110927C0310927B03B3\r
+:10493000EDEAF3E086E0DF011D928A95E9F7C1CF49\r
+:104940002C960FB6F894DEBF0FBECDBFDF91CF918E\r
+:104950001F910895EF92FF920F931F93CF93DF93D0\r
+:104960008C01009709F46CC0F12CEE24E394E8016B\r
+:104970002196F8018491843740F4843008F051C0C6\r
+:10498000813081F0823019F15BC0853709F444C071\r
+:10499000A8F19CE7980F903708F052C08F770E94DB\r
+:1049A000571D41C00E5F1F4FFE01C49180E28C0F66\r
+:1049B000883048F4C7708E2D01C0880FCA95EAF779\r
+:1049C0000E940B2714C08C2F0E948F1C2DC00E5FDD\r
+:1049D0001F4FFE01C49180E28C0F883058F4C770DD\r
+:1049E0008E2D01C0880FCA95EAF70E9411270E94F8\r
+:1049F00032271AC08C2F0E94571D16C00E5F1F4F02\r
+:104A0000FE01C491CC2381F08FE99FE00197F1F77B\r
+:104A100000C00000C150F6CF0E5F1F4FFE01F490A2\r
+:104A200003C00E948F1C8E018F2D882309F49FCF15\r
+:104A3000EFE9FFE03197F1F700C000008150F5CFBA\r
+:104A4000DF91CF911F910F91FF90EF9008950895FE\r
+:104A50006093B7037093B8038093B9039093BA033C\r
+:104A60000C9458210F931F930091B7031091B80332\r
+:104A70002091B9033091BA03DC01CB01802B912B3B\r
+:104A8000A22BB32B8093B7039093B803A093B903E1\r
+:104A9000B093BA031F910F910C9458210F931F9359\r
+:104AA0000091B7031091B8032091B9033091BA0374\r
+:104AB000DC01CB0180239123A223B3238093B7038E\r
+:104AC0009093B803A093B903B093BA031F910F91C9\r
+:104AD0000C9458210F931F930091B7031091B803C2\r
+:104AE0002091B9033091BA03DC01CB0180279127D3\r
+:104AF000A227B3278093B7039093B803A093B90379\r
+:104B0000B093BA031F910F910C9458211092B303E4\r
+:104B10001092B4031092B5031092B6030C9458216E\r
+:104B200041E050E060E070E004C0440F551F661F94\r
+:104B3000771F8A95D2F74093B3035093B4036093E1\r
+:104B4000B5037093B6030C94582141E050E060E047\r
+:104B500070E004C0440F551F661F771F8A95D2F777\r
+:104B60008091B3039091B403A091B503B091B603C3\r
+:104B7000482B592B6A2B7B2B4093B3035093B403E0\r
+:104B80006093B5037093B6030C94582141E050E054\r
+:104B900060E070E004C0440F551F661F771F8A95C0\r
+:104BA000D2F740955095609570958091B3039091A0\r
+:104BB000B403A091B503B091B603482359236A23E7\r
+:104BC0007B234093B3035093B4036093B503709376\r
+:104BD000B6030C94582141E050E060E070E004C05E\r
+:104BE000440F551F661F771F8A95D2F78091B30334\r
+:104BF0009091B403A091B503B091B603482759270B\r
+:104C00006A277B274093B3035093B4036093B503A3\r
+:104C10007093B6030C9458210F931F930091B30324\r
+:104C20001091B4032091B5033091B603DC01CB01A0\r
+:104C3000802B912BA22BB32B8093B3039093B403BF\r
+:104C4000A093B503B093B6031F910F910C94582114\r
+:104C50000F931F930091B3031091B4032091B503F8\r
+:104C60003091B603DC01CB0180239123A223B3232F\r
+:104C70008093B3039093B403A093B503B093B603AA\r
+:104C80001F910F910C9458210F931F930091B30320\r
+:104C90001091B4032091B5033091B603DC01CB0130\r
+:104CA00080279127A227B3278093B3039093B4035F\r
+:104CB000A093B503B093B6031F910F910C945821A4\r
+:104CC0000895CF92DF92EF92FF920F931F93CF93AD\r
+:104CD000DF938C01C090B703D090B803E090B90384\r
+:104CE000F090BA038091B3039091B403A091B503FF\r
+:104CF000B091B603C82AD92AEA2AFB2ACFE1D0E02C\r
+:104D0000D701C6010C2E04C0B695A7959795879537\r
+:104D10000A94D2F780FF06C0B8018C2F0E942F0A98\r
+:104D2000019721F4219760F780E001C08C2FDF917B\r
+:104D3000CF911F910F91FF90EF90DF90CF9008954A\r
+:104D4000CF93DF93EC010E946126BE010E942F0ADF\r
+:104D5000DF91CF910895CB010E94A0260895209164\r
+:104D60001D0230911E02F90132969FEF40E05191F1\r
+:104D7000581789F09F3F19F4511101C0942F4F5FCC\r
+:104D80004630A9F79F3F39F0F901E90FF11D97FD72\r
+:104D9000FA9582830895089520911D0230911E0294\r
+:104DA000F9013296285F3F4F9081981301C010821D\r
+:104DB0003196E217F307C1F7089581E090E0E091A2\r
+:104DC0001D02F0911E02E80FF91F10820196883033\r
+:104DD0009105A9F708959091C603892B8093C60386\r
+:104DE000089580959091C60389238093C603089502\r
+:104DF0001092C60308959091C503892B8093C50333\r
+:104E0000089580959091C50389238093C5030895E3\r
+:104E10001092C50308959091C403892B8093C40315\r
+:104E2000089580959091C40389238093C4030895C5\r
+:104E30001092C40308958093BB0308951092BB039E\r
+:104E4000089580911D0290911E02FC0131969C01F3\r
+:104E5000285F3F4F80E0919191118F5FE217F30738\r
+:104E6000D1F70895E0911D02F0911E028091C603D2\r
+:104E70008083E0911D02F0911E0290818091C50314\r
+:104E8000892B8083E0911D02F0911E029081809118\r
+:104E9000C403892B80838091BB03882361F0E09158\r
+:104EA0001D02F0911E029081892B80830E94212790\r
+:104EB00081111092BB0380911D0290911E020C94EF\r
+:104EC0005B1B8091E803843039F11092C80320E421\r
+:104ED00088E190E00FB6F894A895809360000FBE2B\r
+:104EE0002093600080E00E94D20580E00E940A0BBF\r
+:104EF00083B7817F846083BF83B7816083BF7894E9\r
+:104F0000889583B78E7F83BF88E10FB6F89480932E\r
+:104F10006000109260000FBE089508950895CF9329\r
+:104F200080E00E94D2050E948D270E94AD0C0E9455\r
+:104F30008E27C0E08C2F0E94E60D892B29F4CF5FCD\r
+:104F4000C530C1F780E001C081E0CF9108950E9493\r
+:104F50006C2180E00E94D2050E94092D0E944F1B07\r
+:104F60000C940A0B1F920F920FB60F9211248F937D\r
+:104F70009F93AF93BF938091C803811113C0809119\r
+:104F8000C9039091CA03A091CB03B091CC03419681\r
+:104F9000A11DB11D8093C9039093CA03A093CB03B5\r
+:104FA000B093CC03BF91AF919F918F910F900FBEA3\r
+:104FB0000F901F90189582E084BD93E095BD9AEF05\r
+:104FC00097BD80936E0008952FB7F8948091C90320\r
+:104FD0009091CA03A091CB03B091CC032FBF089549\r
+:104FE000CF92DF92EF92FF920F931F932FB7F89417\r
+:104FF0004091C9035091CA036091CB037091CC03D7\r
+:105000002FBF6A017B01EE24FF248C0120E030E0F9\r
+:10501000C016D106E206F30610F4415051099A0178\r
+:10502000281B390BC9011F910F91FF90EF90DF9062\r
+:10503000CF9008951F920F920FB60F9211248F9365\r
+:105040009F93AF93BF938091C9039091CA03A0919E\r
+:10505000CB03B091CC030196A11DB11D8093C90370\r
+:105060009093CA03A093CB03B093CC03BF91AF91AD\r
+:105070009F918F910F900FBE0F901F9018950E94D7\r
+:105080004C18F8942FEF87EA91E621508040904029\r
+:10509000E1F700C0000087E090EBDC018093F303B0\r
+:1050A0009093F403A093F503B093F6039CE088E19A\r
+:1050B0000FB6F894A895809360000FBE909360009F\r
+:1050C000FFCF0E949B28811102C00E9477280E9476\r
+:1050D000A6288093C7030E94B3288093F1030E94FF\r
+:1050E000AA28682F70E080E090E00C9428256DEEEF\r
+:1050F0007EEF80E090E00E94BC3160E082E090E0D2\r
+:105100000E94AA3160E083E090E00E94AA3160E052\r
+:1051100084E090E00E94AA3160E085E090E00E9487\r
+:10512000AA3160E086E090E00E94AA316FEF87E04C\r
+:1051300090E00C94AA3180E090E00E94A43121E03C\r
+:105140008D3E9E4F09F020E0822F089582E090E08E\r
+:105150000C949C3183E090E00C949C31682F83E0A8\r
+:1051600090E00C94AA3184E090E00C949C31682F7C\r
+:1051700084E090E00C94AA3186E090E00C949C319D\r
+:10518000682F86E090E00C94AA3187E090E00C94C0\r
+:105190009C31682F87E090E00C94AA318091CF0376\r
+:1051A00080FF0BC06091220285E0689FB00111244E\r
+:1051B00075956795759567952BC081FF09C06091BE\r
+:1051C000220285E0689FB00111247595679520C083\r
+:1051D00082FF07C06091220285E0689FB001112420\r
+:1051E00017C09091D0039923D1F0609121029617B6\r
+:1051F00088F72091220285E0289F90011124929F38\r
+:10520000A001939F500D112470E0CA010E948231C9\r
+:105210006038710540F46115710539F002C065E030\r
+:1052200070E0862F08958FE7089581E008958091BA\r
+:10523000CF0380FF08C06091200270E075956795EC\r
+:105240007595679521C081FF06C06091200270E0CE\r
+:105250007595679519C082FF04C06091200270E0C7\r
+:1052600010C09091D0039923C1F060911F0296174E\r
+:10527000A0F780912002899FC001112470E00E9454\r
+:1052800082316038710528F46115710521F0862F8F\r
+:1052900008958FE7089581E0089561E070E0F4CF0C\r
+:1052A000803F21F40E94CE28819504C0813F29F4DB\r
+:1052B0000E94CE288093D3030895823F21F40E9458\r
+:1052C000CE28819504C0833F29F40E94CE28809384\r
+:1052D000D2030895893F19F40E94172905C08A3F17\r
+:1052E00031F40E94172981958093D40308958B3F50\r
+:1052F00021F40E941729819504C08C3F29F40E9453\r
+:1053000017298093D5030895843F21F48091D10318\r
+:10531000816017C0853F21F48091D103826011C064\r
+:10532000863F21F48091D10384600BC0873F21F434\r
+:105330008091D103886005C0883F31F48091D1030A\r
+:1053400080618093D10308958D3F21F48091CF0334\r
+:1053500081600BC08E3F21F48091CF03826005C035\r
+:105360008F3F29F48091CF0384608093CF03089509\r
+:10537000803F39F48091D30387FF6CC01092D30330\r
+:1053800069C0813F29F48091D3031816BCF362C031\r
+:105390009091D203823F29F497FF5CC01092D20310\r
+:1053A00059C0833F19F41916CCF354C0893F41F416\r
+:1053B0008091D40318160CF04DC01092D4034AC04B\r
+:1053C0008A3F29F48091D40387FF44C0F6CF8B3FF6\r
+:1053D00039F48091D50387FF3DC01092D5033AC0C0\r
+:1053E0008C3F29F48091D5031816BCF333C0843F59\r
+:1053F00021F48091D1038E7F17C0853F21F48091E5\r
+:10540000D1038D7F11C0863F21F48091D1038B7F22\r
+:105410000BC0873F21F48091D103877F05C0883F6F\r
+:1054200031F48091D1038F7E8093D10313C08D3FDF\r
+:1054300021F48091CF038E7F0BC08E3F21F48091A9\r
+:10544000CF038D7F05C08F3F29F48091CF038B7FE1\r
+:105450008093CF038091D20381110EC08091D3033A\r
+:1054600081110AC08091D403811106C08091D503B7\r
+:10547000811102C01092D003089581ED93E00E9443\r
+:10548000661B0E94E4279093CE038093CD0308957A\r
+:105490001F93CF93DF938091CD039091CE030E9411\r
+:1054A000F027AC019091D003992321F020912302A1\r
+:1054B00030E006C0209124028AE0289F9001112448\r
+:1054C0004217530708F486C08091D203C091D303DA\r
+:1054D000D091D4031091D503811107C0C11176C0BA\r
+:1054E000D11174C0111172C075C09F3F19F09F5F38\r
+:1054F0009093D003181624F40E94CE288093D203F0\r
+:105500008091D20387FF05C00E94CE2881958093A9\r
+:10551000D2031C1624F40E94CE288093D3038091DA\r
+:10552000D30387FF05C00E94CE2881958093D303C3\r
+:105530006091D203662339F1C091D303CC2319F1D2\r
+:10554000772767FD7095872F972F0E94A42E23E35E\r
+:1055500033E343E35FE30E94B42F0E94712E609314\r
+:10556000D2036C2F772767FD7095872F972F0E94A6\r
+:10557000A42E23E333E343E35FE30E94B42F0E94AE\r
+:10558000712E6093D3031D1624F40E941729809373\r
+:10559000D4038091D40387FF05C00E941729819509\r
+:1055A0008093D403111624F40E9417298093D50305\r
+:1055B0008091D50387FF05C00E94172981958093AC\r
+:1055C000D503DF91CF911F910C943D2A9F3F09F0A5\r
+:1055D0008ECF96CFDF91CF911F910895E1EDF3E04B\r
+:1055E00085E0DF011D928A95E9F71092D0031092B1\r
+:1055F000CF030895833081F128F4813059F082304F\r
+:10560000D1F00895853009F449C0B8F1863009F425\r
+:1056100056C0089580912402262F30E0280F311DB6\r
+:105620002F3F310524F4680F6093240208958FEF13\r
+:1056300080932402089580912302262F30E0280FC2\r
+:10564000311D2F3F310524F4680F60932302089524\r
+:105650008FEF80932302089580912202262F30E05D\r
+:10566000280F311D2F3F310524F4680F609322026B\r
+:1056700008958FEF80932202089580912102262FB2\r
+:1056800030E0280F311D2F3F310524F4680F60935F\r
+:10569000210208958FEF80932102089580912002C6\r
+:1056A000262F30E0280F311D2F3F310524F4680FDD\r
+:1056B0006093200208958FEF8093200208958091D7\r
+:1056C0001F02262F30E0280F311D2F3F310524F413\r
+:1056D000680F60931F0208958FEF80931F02089553\r
+:1056E000833011F128F4813049F0823091F008952F\r
+:1056F000853081F120F18630C1F108958091240236\r
+:10570000681720F4861B80932402089510922402C7\r
+:10571000089580912302681720F4861B809323024A\r
+:10572000089510922302089580912202681720F4B0\r
+:10573000861B809322020895109222020895809180\r
+:105740002102681720F4861B80932102089510928D\r
+:105750002102089580912002681720F4861B80930F\r
+:105760002002089510922002089580911F02681768\r
+:1057700020F4861B80931F02089510921F02089543\r
+:105780000F931F938732D8F58E3108F087C08E3083\r
+:1057900009F471C098F4873009F45BC08B3009F4C8\r
+:1057A00091C0863009F095C08091C703817F8E7FBC\r
+:1057B0008093C70381E08093D7038CC0863109F4BE\r
+:1057C00081C068F4803109F084C08091C70383FBF5\r
+:1057D000222720F991E0922790FB83F955C0893167\r
+:1057E00009F470C08B3109F074C08091C70381FB4C\r
+:1057F000222720F991E0922790FB81F945C0883358\r
+:1058000009F460C050F4893209F45EC0853309F4AC\r
+:105810005BC0873209F458C05CC0833409F454C0BB\r
+:1058200028F48A3308F455C0895339C0883409F004\r
+:1058300050C00E946C210E94B2070FEF13ED20E3CD\r
+:10584000015010402040E1F700C000000E943F28B6\r
+:1058500039C09091C703892F8095817080FB90F9A2\r
+:1058600029F0966098609093C70334C0997F977F22\r
+:105870009093C70327C08091C70382FB222720F99A\r
+:1058800091E0922790FB82F98093C7039923D1F08E\r
+:105890008091C70381608093C70314C08D5141E09C\r
+:1058A00050E060E070E08A019B0104C0000F111F0E\r
+:1058B000221F331F8A95D2F7C901B8010E942825FB\r
+:1058C0000E946C2181E006C061E070E080E090E021\r
+:1058D000F5CF80E01F910F91089580E0089580E05A\r
+:1058E0000895CF93C82F8091D703813069F018F0C5\r
+:1058F0008230C9F184C0E0911D02F0911E028081C6\r
+:10590000823209F07EC007C0E0911D02F0911E02B4\r
+:105910008081823261F48C2F0E946D2C811104C031\r
+:105920008C2F0E94C02B1DC081E090E01AC08C2FEC\r
+:105930000E946F2C811114C0C43179F048F4CB302F\r
+:1059400079F0C03109F061C082E08093D70308C0CC\r
+:10595000C93219F0C83321F058C01092D70355C08E\r
+:1059600081E0817054C0C93291F120F5C43179F1E0\r
+:10597000B0F4C73009F047C08EE18093240282E37F\r
+:10598000809323028AE08093220284E180932102A3\r
+:1059900088E08093200288E280931F0234C0CE51B9\r
+:1059A000C63088F5EC2FF0E0E451FD4F8081809304\r
+:1059B000D60329C0CE34E9F020F4CB3421F56AE0D7\r
+:1059C00013C0C13579F0C235F1F461E00DC08091AA\r
+:1059D000D603882319F01092D60315C081E0809376\r
+:1059E000D70315C061E006C08091D6030E94FA2A51\r
+:1059F0000AC06AE08091D6030E94702B04C0109206\r
+:105A0000D70380E004C081E002C080E0AACFCF913C\r
+:105A100008950E949B28811102C00E9477280E944D\r
+:105A2000BC288093F20380FF02C0869501C080E00D\r
+:105A30000C94D2058091F203982F9695292F30E08F\r
+:105A4000233031054CF49F5F990F8170892B816061\r
+:105A50008093F2030E94C0288091F20386950C94F3\r
+:105A6000D2058091F203982F969591F09158990F55\r
+:105A70008170892B8093F2038E7F91E009F490E08E\r
+:105A80008091F20390FB80F98093F2030E94C0287A\r
+:105A90008091F20386950C94D2058091F203982FA1\r
+:105AA000909590FB80F98093F2030E94C02880912A\r
+:105AB000F20380FF02C0869501C080E00C94D205FD\r
+:105AC0009091F203892F86958F5F8F779170843044\r
+:105AD00028F4880F892B8093F20302C09093F2037D\r
+:105AE0008091F2038E7F91E009F490E08091F203BF\r
+:105AF00090FB80F98093F2030E94C0288091F2030A\r
+:105B000086950C94D2052091F203922F96958927C1\r
+:105B1000982F990F822F8170892B8093F2038E7FAB\r
+:105B200091E009F490E08091F20390FB80F980937A\r
+:105B3000F2030E94C0288091F20386950C94D2054E\r
+:105B40005058BB27AA270ED0D1C1C2D130F0C7D13F\r
+:105B500020F031F49F3F11F41EF4B7C10EF4E0952C\r
+:105B6000E7FB9FC1E92FD3D180F3BA176207730710\r
+:105B70008407950718F071F49EF5EBC10EF4E095DB\r
+:105B80000B2EBA2FA02D0B01B90190010C01CA01F7\r
+:105B9000A0011124FF27591B99F0593F50F4503EA2\r
+:105BA00068F11A16F040A22F232F342F4427585F94\r
+:105BB000F3CF469537952795A795F0405395C9F7AC\r
+:105BC0007EF41F16BA0B620B730B840BBAF0915064\r
+:105BD000A1F0FF0FBB1F661F771F881FC2F70EC003\r
+:105BE000BA0F621F731F841F48F4879577956795D6\r
+:105BF000B795F7959E3F08F0B3CF9395880F08F0BF\r
+:105C00009927EE0F97958795089527D108F481E09D\r
+:105C100008950CD06BC163D140F05AD130F021F41B\r
+:105C20005F3F19F03EC1511195C14FC170D198F33A\r
+:105C30009923C9F35523B1F3951B550BBB27AA270D\r
+:105C400062177307840738F09F5F5F4F220F331F7F\r
+:105C5000441FAA1FA9F333D00E2E3AF0E0E830D04B\r
+:105C600091505040E695001CCAF729D0FE2F27D04E\r
+:105C7000660F771F881FBB1F261737074807AB071C\r
+:105C8000B0E809F0BB0B802DBF01FF2793585F4F91\r
+:105C90002AF09E3F510568F004C15CC15F3FECF300\r
+:105CA000983EDCF3869577956795B795F7959F5F56\r
+:105CB000C9F7880F911D9695879597F90895E1E0AA\r
+:105CC000660F771F881FBB1F621773078407BA0709\r
+:105CD00020F0621B730B840BBA0BEE1F88F7E09564\r
+:105CE000089504D06894B11135C1089518D188F091\r
+:105CF0009F5790F0B92F9927B751A0F0D1F0660FB8\r
+:105D0000771F881F991F1AF0BA95C9F712C0B130D2\r
+:105D100081F01FD1B1E008951CC1672F782F88272B\r
+:105D2000B85F39F0B93FCCF3869577956795B39511\r
+:105D3000D9F73EF490958095709561957F4F8F4F80\r
+:105D40009F4F0895E89409C097FB3EF49095809585\r
+:105D5000709561957F4F8F4F9F4F9923A9F0F92F31\r
+:105D600096E9BB279395F695879577956795B795AF\r
+:105D7000F111F8CFFAF4BB0F11F460FF1BC06F5F95\r
+:105D80007F4F8F4F9F4F16C0882311F096E911C0A7\r
+:105D9000772321F09EE8872F762F05C0662371F0C8\r
+:105DA00096E8862F70E060E02AF09A95660F771FDC\r
+:105DB000881FDAF7880F9695879597F9089588D008\r
+:105DC00018F011F08CD038F480C0C4C0E92F9FD0F7\r
+:105DD000B0F35523C9F3E7FB6217730784079507F0\r
+:105DE000A8F199F3E92FFF2788232AF03197660F4E\r
+:105DF000771F881FDAF7952F5527442332F09150EB\r
+:105E00005040220F331F441FD2F7BB27E91BF50B6D\r
+:105E1000621B730B840BB109C1F222F4620F731F72\r
+:105E2000841FB11D31972AF0660F771F881FBB1F93\r
+:105E3000EFCF915050405AF041F0882332F0660F76\r
+:105E4000771F881F91505040C1F7939530C08695B9\r
+:105E5000779567959F5FD9F7F8CF990F0008550F91\r
+:105E6000AA0BE0E8FEEF16161706E807F907C0F0E0\r
+:105E700012161306E407F50798F0621B730B840BE8\r
+:105E8000950B39F40A2661F0232B242B252B21F4C2\r
+:105E900008950A2609F4A140A6958FEF811D811D62\r
+:105EA000089597F99F6780E870E060E008959F3F4C\r
+:105EB00031F0915020F4879577956795B795880FC5\r
+:105EC000911D9695879597F908959FEF80EC089519\r
+:105ED00000240A94161617061806090608950024C9\r
+:105EE0000A9412161306140605060895092E039443\r
+:105EF000000C11F4882352F0BB0F40F4BF2B11F4B7\r
+:105F000060FF04C06F5F7F4F8F4F9F4F089557FD15\r
+:105F10009058440F551F59F05F3F71F04795880F17\r
+:105F200097FB991F61F09F3F79F0879508951216AE\r
+:105F300013061406551FF2CF4695F1DF08C016165A\r
+:105F400017061806991FF1CF86957105610508940B\r
+:105F50000895E894BB2766277727CB0197F9089522\r
+:105F60007CDF08F48FEF08950BD0C0CFB1DF28F0AD\r
+:105F7000B6DF18F0952309F094CFA7CF1124EACF0C\r
+:105F8000C6DFA0F3959FD1F3950F50E0551F629F98\r
+:105F9000F001729FBB27F00DB11D639FAA27F00D82\r
+:105FA000B11DAA1F649F6627B00DA11D661F829FA9\r
+:105FB0002227B00DA11D621F739FB00DA11D621F8E\r
+:105FC000839FA00D611D221F749F3327A00D611DAB\r
+:105FD000231F849F600D211D822F762F6A2F11248D\r
+:105FE0009F5750408AF0E1F088234AF0EE0FFF1FE0\r
+:105FF000BB1F661F771F881F91505040A9F79E3F17\r
+:10600000510570F04ECFA6CF5F3FECF3983EDCF326\r
+:10601000869577956795B795F795E7959F5FC1F753\r
+:10602000FE2B880F911D9695879597F90895FA0193\r
+:10603000EE0FFF1F30962105310599F161157105AD\r
+:1060400061F48038BFE39B0749F16894903881057B\r
+:1060500061F08038BFEF9B0741F0992342F5FF3F85\r
+:10606000E1053105210511F1E8940894E795D9017E\r
+:10607000AA2329F4AB2FBE2FF85FD0F310C0FF5F27\r
+:1060800070F4A695E0F7F73950F019F0FF3A38F4BC\r
+:106090009F779F930CD00F9007FC905808953EF087\r
+:1060A00014CF60E070E080E89FE308954FE79F77AA\r
+:1060B0005F934F933F932F939ED02F913F914F919A\r
+:1060C0005F9152DF05C019F40EF0EBCE42CFFDCE4A\r
+:1060D00026DFC8F39638C0F707F80F92E8942BE351\r
+:1060E0003AEA48EB5FE74EDF0F920F920F924DB7FF\r
+:1060F0005EB70F92C0D0E8EFF0E016D04F915F91FD\r
+:10610000EF91FF91E595EE1FFF1F49F0FE57E06804\r
+:106110004427EE0F441FFA95E1F74195550B32D015\r
+:106120000F9007FE26C00895DF93CF931F930F9320\r
+:10613000FF92EF92DF927B018C01689405C0DA2E0A\r
+:10614000EF011EDFFE01E894A5912591359145915F\r
+:106150005591AEF3EF0106DDFE019701A801DA9437\r
+:1061600079F7DF90EF90FF900F911F91CF91DF9122\r
+:1061700008959B01AC0160E070E080E89FE349CDA9\r
+:1061800090CE95CECCDEE8F39923D9F3940F511D30\r
+:10619000BBF39150504094F059F0882332F0660FD1\r
+:1061A000771F881F91505040C1F79E3F510544F71B\r
+:1061B000880F911D9695879597F908955F3FACF0EC\r
+:1061C000983E9CF0BB27869577956795B79508F420\r
+:1061D000B1609395C1F7BB0F58F711F460FFE8CF9A\r
+:1061E0006F5F7F4F8F4F9F4FE3CFB4CE0EF05FCEE8\r
+:1061F0006CCE689456CE93DEC8F39923D1F3C6F3E0\r
+:10620000DF93CF931F930F93FF92C92FDD2788232E\r
+:106210002AF02197660F771F881FDAF720E030E019\r
+:1062200040E85FEB9FE3883920F0803E30F0219614\r
+:106230008F7787DCE0E2F1E003C083DCEDE4F1E09E\r
+:1062400073DF8B01BE01EC01FB2E6F577109759551\r
+:10625000771F880B990B78DD28E132E741E35FE394\r
+:106260008FDEAF2D9801AE01FF900F911F91CF915E\r
+:10627000DF9178DC3BCEFA01DC01AA0FBB1F9B014A\r
+:10628000AC01BF5728F422273327442750781FC07A\r
+:10629000B75188F4AB2F0024469537952795011CFC\r
+:1062A000A395D2F3002069F0220F331F441FB3954A\r
+:1062B000DAF30DD045CC61307105A0E88A07B94604\r
+:1062C00030F49B01AC0166277727882790783096B9\r
+:1062D00021F020833183428353830895AA1BBB1B83\r
+:1062E00051E107C0AA1FBB1FA617B70710F0A61BD6\r
+:1062F000B70B881F991F5A95A9F780959095BC01F7\r
+:10630000CD01089597FB072E16F4009407D077FD72\r
+:1063100009D00E946E3107FC05D03EF4909581951E\r
+:106320009F4F0895709561957F4F0895EE0FFF1F61\r
+:106330000590F491E02D0994F999FECF92BD81BDAD\r
+:10634000F89A992780B50895A8E1B0E042E050E0BE\r
+:106350000C94C431262FF999FECF92BD81BDF89AD5\r
+:10636000019700B4021639F01FBA20BD0FB6F89499\r
+:10637000FA9AF99A0FBE08950196272F0E94AB3121\r
+:106380000C94AA31DC01CB01FC01F999FECF06C0C7\r
+:10639000F2BDE1BDF89A319600B40D9241505040E3\r
+:0863A000B8F70895F894FFCF4F\r
+:1063A8000C52D02445000000410000DC44000000ED\r
+:1063B8004152D0A4440000404100005C4400000069\r
+:1063C8004148F17644000000415C978A440000008F\r
+:1063D800411FD592440000004152D0A4440000005F\r
+:1063E800415CFFB844000000410AA7CF4400000008\r
+:1063F800410000DC44000000410AA7CF440000002F\r
+:10640800410000DC44000000410000000000008062\r
+:106418004052D024450000404100000000000080A8\r
+:10642800400AA74F45000040410AA7CF440000009A\r
+:10643800410000DC44000000410000000000008032\r
+:106448004052D024450000004100000000000080B8\r
+:10645800405CFF384500000041000000000000805B\r
+:106468004052D02445000000410AA7CF4400000054\r
+:10647800410000DC440000004100000000000080F2\r
+:106488004052D024450000804110F176440000A01D\r
+:106498004112F1F6440000004141909B440000A0E5\r
+:1064A8004112F1F64400000041050000003F0000E1\r
+:1064B800C8427B140915E614B2147E1401BC0328E3\r
+:1064C80008140A321E000002000400050007000933\r
+:1064D800000B000C000E001000110013001500172F\r
+:1064E8000018001A001C001D001F002100230024B2\r
+:1064F800002600280029002B002D002F0030003234\r
+:106508000034003500370039003B004200450025C3\r
+:106518000026004300610060002000370064006529\r
+:1065280000660067004400460024004700314980A7\r
+:106538003F5D8B803FF8BF803FCAE1803F73ED80AD\r
+:106548003FCAE1803FF8BF803F5D8B803F31498083\r
+:106558003F0000803FF16D7F3F75EA7E3F4C827EB1\r
+:106568003F833F7E3F84287E3F833F7E3F4C827E31\r
+:106578003F75EA7E3FF16D7F3F0000803F3F4D361B\r
+:10658800B90A6C0A360AE209FB09140A0102030473\r
+:06659800050607080900DA\r
+:00000001FF\r
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+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 = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB 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 = YES # MIDI controls
-# UNICODE_ENABLE = YES # Unicode
-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB 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 = YES # MIDI controls
+# UNICODE_ENABLE = YES # Unicode
+# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/* key combination for command */
+
+/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */
+#define FORCE_NKRO
+
+/*
+ * Magic key options
+ * These options 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
+
+/* remap magic keys */
+//#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 BSLS
+//#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.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-#endif
+#endif
\ No newline at end of file
__attribute__ ((weak))
void matrix_init_user(void) {
- // leave this function blank - it can be defined in a keymap file
+ // 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
+ // leave this function blank - it can be defined in a keymap file
};
__attribute__ ((weak))
void led_set_user(uint8_t usb_led) {
- // leave this function blank - it can be defined in a keymap file
+ // 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
-
- // Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS)
- DDRD |= (1<<6);
- PORTD |= (1<<6);
-
- matrix_init_user();
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ // Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS)
+ DDRD |= (1<<6);
+ PORTD |= (1<<6);
+
+ matrix_init_user();
};
void amatrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
- matrix_scan_user();
+ matrix_scan_user();
};
void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// output low
// Hi-Z
DDRC &= ~(1<<6);
PORTC &= ~(1<<6);
- }
-
- led_set_user(usb_led);
+ }
+
+ led_set_user(usb_led);
};
\ No newline at end of file
# Script to make a new quantum project
# Jack Humbert 2015
+if [ -z "$1" ]; then
+ echo "Usage: $0 <keyboard_name>"
+ exit 1
+fi
+
KEYBOARD=$1
KEYBOARD_UPPERCASE=$(echo $1 | awk '{print toupper($0)}')
+++ /dev/null
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-#include <avr/io.h>
-
-#include "audio.h"
-#include "keymap_common.h"
-
-#define PI 3.14159265
-
-// #define PWM_AUDIO
-
-#ifdef PWM_AUDIO
- #include "wave.h"
- #define SAMPLE_DIVIDER 39
- #define SAMPLE_RATE (2000000.0/SAMPLE_DIVIDER/2048)
- // Resistor value of 1/ (2 * PI * 10nF * (2000000 hertz / SAMPLE_DIVIDER / 10)) for 10nF cap
-#endif
-
-void delay_us(int count) {
- while(count--) {
- _delay_us(1);
- }
-}
-
-int voices = 0;
-int voice_place = 0;
-double frequency = 0;
-int volume = 0;
-long position = 0;
-
-double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-bool sliding = false;
-
-int max = 0xFF;
-float sum = 0;
-int value = 128;
-float place = 0;
-float places[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-
-uint16_t place_int = 0;
-bool repeat = true;
-uint8_t * sample;
-uint16_t sample_length = 0;
-
-
-bool notes = false;
-bool note = false;
-float note_frequency = 0;
-float note_length = 0;
-uint16_t note_position = 0;
-float (* notes_pointer)[][2];
-uint8_t notes_length;
-bool notes_repeat;
-uint8_t current_note = 0;
-
-void stop_all_notes() {
- voices = 0;
- #ifdef PWM_AUDIO
- TIMSK3 &= ~_BV(OCIE3A);
- #else
- TIMSK3 &= ~_BV(OCIE3A);
- TCCR3A &= ~_BV(COM3A1);
- #endif
- notes = false;
- note = false;
- frequency = 0;
- volume = 0;
-
- for (int i = 0; i < 8; i++) {
- frequencies[i] = 0;
- volumes[i] = 0;
- }
-}
-
-void stop_note(double freq) {
- #ifdef PWM_AUDIO
- freq = freq / SAMPLE_RATE;
- #endif
- for (int i = 7; i >= 0; i--) {
- if (frequencies[i] == freq) {
- frequencies[i] = 0;
- volumes[i] = 0;
- for (int j = i; (j < 7); j++) {
- frequencies[j] = frequencies[j+1];
- frequencies[j+1] = 0;
- volumes[j] = volumes[j+1];
- volumes[j+1] = 0;
- }
- }
- }
- voices--;
- if (voices < 0)
- voices = 0;
- if (voices == 0) {
- #ifdef PWM_AUDIO
- TIMSK3 &= ~_BV(OCIE3A);
- #else
- TIMSK3 &= ~_BV(OCIE3A);
- TCCR3A &= ~_BV(COM3A1);
- #endif
- frequency = 0;
- volume = 0;
- note = false;
- } else {
- double freq = frequencies[voices - 1];
- int vol = volumes[voices - 1];
- double starting_f = frequency;
- if (frequency < freq) {
- sliding = true;
- for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) {
- frequency = f;
- }
- sliding = false;
- } else if (frequency > freq) {
- sliding = true;
- for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) {
- frequency = f;
- }
- sliding = false;
- }
- frequency = freq;
- volume = vol;
- }
-}
-
-void init_notes() {
-
- #ifdef PWM_AUDIO
- PLLFRQ = _BV(PDIV2);
- PLLCSR = _BV(PLLE);
- while(!(PLLCSR & _BV(PLOCK)));
- PLLFRQ |= _BV(PLLTM0); /* PCK 48MHz */
-
- /* Init a fast PWM on Timer4 */
- TCCR4A = _BV(COM4A0) | _BV(PWM4A); /* Clear OC4A on Compare Match */
- TCCR4B = _BV(CS40); /* No prescaling => f = PCK/256 = 187500Hz */
- OCR4A = 0;
-
- /* Enable the OC4A output */
- DDRC |= _BV(PORTC6);
-
- TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs
-
- TCCR3A = 0x0; // Options not needed
- TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC
- OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback
- #else
- DDRC |= _BV(PORTC6);
-
- TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs
-
- TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
- TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30);
- #endif
-}
-
-
-ISR(TIMER3_COMPA_vect) {
-
- if (note) {
- #ifdef PWM_AUDIO
- if (voices == 1) {
- // SINE
- OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2;
-
- // SQUARE
- // if (((int)place) >= 1024){
- // OCR4A = 0xFF >> 2;
- // } else {
- // OCR4A = 0x00;
- // }
-
- // SAWTOOTH
- // OCR4A = (int)place / 4;
-
- // TRIANGLE
- // if (((int)place) >= 1024) {
- // OCR4A = (int)place / 2;
- // } else {
- // OCR4A = 2048 - (int)place / 2;
- // }
-
- place += frequency;
-
- if (place >= SINE_LENGTH)
- place -= SINE_LENGTH;
-
- } else {
- int sum = 0;
- for (int i = 0; i < voices; i++) {
- // SINE
- sum += pgm_read_byte(&sinewave[(uint16_t)places[i]]) >> 2;
-
- // SQUARE
- // if (((int)places[i]) >= 1024){
- // sum += 0xFF >> 2;
- // } else {
- // sum += 0x00;
- // }
-
- places[i] += frequencies[i];
-
- if (places[i] >= SINE_LENGTH)
- places[i] -= SINE_LENGTH;
- }
- OCR4A = sum;
- }
- #else
- if (frequency > 0) {
- // ICR3 = (int)(((double)F_CPU) / frequency); // Set max to the period
- // OCR3A = (int)(((double)F_CPU) / frequency) >> 1; // Set compare to half the period
- if (place > 10) {
- voice_place = (voice_place + 1) % voices;
- place = 0.0;
- }
- ICR3 = (int)(((double)F_CPU) / frequencies[voice_place]); // Set max to the period
- OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1; // Set compare to half the period
- place++;
- }
- #endif
- }
-
- // SAMPLE
- // OCR4A = pgm_read_byte(&sample[(uint16_t)place_int]);
-
- // place_int++;
-
- // if (place_int >= sample_length)
- // if (repeat)
- // place_int -= sample_length;
- // else
- // TIMSK3 &= ~_BV(OCIE3A);
-
-
- if (notes) {
- #ifdef PWM_AUDIO
- OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 0;
-
- place += note_frequency;
- if (place >= SINE_LENGTH)
- place -= SINE_LENGTH;
- #else
- if (note_frequency > 0) {
- ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period
- OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period
- }
- #endif
-
-
- note_position++;
- if (note_position >= note_length) {
- current_note++;
- if (current_note >= notes_length) {
- if (notes_repeat) {
- current_note = 0;
- } else {
- #ifdef PWM_AUDIO
- TIMSK3 &= ~_BV(OCIE3A);
- #else
- TIMSK3 &= ~_BV(OCIE3A);
- TCCR3A &= ~_BV(COM3A1);
- #endif
- notes = false;
- return;
- }
- }
- #ifdef PWM_AUDIO
- note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE;
- note_length = (*notes_pointer)[current_note][1];
- #else
- note_frequency = (*notes_pointer)[current_note][0];
- note_length = (*notes_pointer)[current_note][1] / 4;
- #endif
- note_position = 0;
- }
-
- }
-
-}
-
-void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) {
- if (note)
- stop_all_notes();
- notes = true;
-
- notes_pointer = np;
- notes_length = n_length;
- notes_repeat = n_repeat;
-
- place = 0;
- current_note = 0;
- #ifdef PWM_AUDIO
- note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE;
- note_length = (*notes_pointer)[current_note][1];
- #else
- note_frequency = (*notes_pointer)[current_note][0];
- note_length = (*notes_pointer)[current_note][1] / 4;
- #endif
- note_position = 0;
-
-
- #ifdef PWM_AUDIO
- TIMSK3 |= _BV(OCIE3A);
- #else
- TIMSK3 |= _BV(OCIE3A);
- TCCR3A |= _BV(COM3A1);
- #endif
-}
-
-void play_sample(uint8_t * s, uint16_t l, bool r) {
- stop_all_notes();
- place_int = 0;
- sample = s;
- sample_length = l;
- repeat = r;
-
- #ifdef PWM_AUDIO
- TIMSK3 |= _BV(OCIE3A);
- #else
- #endif
-}
-
-void play_note(double freq, int vol) {
- if (notes)
- stop_all_notes();
- note = true;
- #ifdef PWM_AUDIO
- freq = freq / SAMPLE_RATE;
- #endif
- if (freq > 0) {
- if (frequency != 0) {
- double starting_f = frequency;
- if (frequency < freq) {
- for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) {
- frequency = f;
- }
- } else if (frequency > freq) {
- for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) {
- frequency = f;
- }
- }
- }
- frequency = freq;
- volume = vol;
-
- frequencies[voices] = frequency;
- volumes[voices] = volume;
- voices++;
- }
-
- #ifdef PWM_AUDIO
- TIMSK3 |= _BV(OCIE3A);
- #else
- TIMSK3 |= _BV(OCIE3A);
- TCCR3A |= _BV(COM3A1);
- #endif
-
-}
\ No newline at end of file
+++ /dev/null
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-
-void play_sample(uint8_t * s, uint16_t l, bool r);
-void play_note(double freq, int vol);
-void stop_note(double freq);
-void stop_all_notes();
-void init_notes();
-void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat);
\ No newline at end of file
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <avr/pgmspace.h>
+#include <avr/interrupt.h>
+#include <avr/io.h>
+#include "print.h"
+#include "audio.h"
+#include "keymap_common.h"
+
+#include "eeconfig.h"
+
+#ifdef VIBRATO_ENABLE
+ #include "vibrato_lut.h"
+#endif
+
+#define PI 3.14159265
+
+#define CPU_PRESCALER 8
+
+#ifdef PWM_AUDIO
+ #include "wave.h"
+ #define SAMPLE_DIVIDER 39
+ #define SAMPLE_RATE (2000000.0/SAMPLE_DIVIDER/2048)
+ // Resistor value of 1/ (2 * PI * 10nF * (2000000 hertz / SAMPLE_DIVIDER / 10)) for 10nF cap
+
+ float places[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+ uint16_t place_int = 0;
+ bool repeat = true;
+#endif
+
+void delay_us(int count) {
+ while(count--) {
+ _delay_us(1);
+ }
+}
+
+int voices = 0;
+int voice_place = 0;
+float frequency = 0;
+int volume = 0;
+long position = 0;
+
+float frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+bool sliding = false;
+
+int max = 0xFF;
+float sum = 0;
+float place = 0;
+
+uint8_t * sample;
+uint16_t sample_length = 0;
+// float freq = 0;
+
+bool notes = false;
+bool note = false;
+float note_frequency = 0;
+float note_length = 0;
+float note_tempo = TEMPO_DEFAULT;
+float note_timbre = TIMBRE_DEFAULT;
+uint16_t note_position = 0;
+float (* notes_pointer)[][2];
+uint16_t notes_count;
+bool notes_repeat;
+float notes_rest;
+bool note_resting = false;
+
+uint8_t current_note = 0;
+uint8_t rest_counter = 0;
+
+#ifdef VIBRATO_ENABLE
+float vibrato_counter = 0;
+float vibrato_strength = .5;
+float vibrato_rate = 0.125;
+#endif
+
+float polyphony_rate = 0;
+
+bool inited = false;
+
+audio_config_t audio_config;
+
+uint16_t envelope_index = 0;
+
+void audio_toggle(void) {
+ audio_config.enable ^= 1;
+ eeconfig_update_audio(audio_config.raw);
+}
+
+void audio_on(void) {
+ audio_config.enable = 1;
+ eeconfig_update_audio(audio_config.raw);
+}
+
+void audio_off(void) {
+ audio_config.enable = 0;
+ eeconfig_update_audio(audio_config.raw);
+}
+
+#ifdef VIBRATO_ENABLE
+// Vibrato rate functions
+
+void set_vibrato_rate(float rate) {
+ vibrato_rate = rate;
+}
+
+void increase_vibrato_rate(float change) {
+ vibrato_rate *= change;
+}
+
+void decrease_vibrato_rate(float change) {
+ vibrato_rate /= change;
+}
+
+#ifdef VIBRATO_STRENGTH_ENABLE
+
+void set_vibrato_strength(float strength) {
+ vibrato_strength = strength;
+}
+
+void increase_vibrato_strength(float change) {
+ vibrato_strength *= change;
+}
+
+void decrease_vibrato_strength(float change) {
+ vibrato_strength /= change;
+}
+
+#endif
+
+#endif
+
+// Polyphony functions
+
+void set_polyphony_rate(float rate) {
+ polyphony_rate = rate;
+}
+
+void enable_polyphony() {
+ polyphony_rate = 5;
+}
+
+void disable_polyphony() {
+ polyphony_rate = 0;
+}
+
+void increase_polyphony_rate(float change) {
+ polyphony_rate *= change;
+}
+
+void decrease_polyphony_rate(float change) {
+ polyphony_rate /= change;
+}
+
+// Timbre function
+
+void set_timbre(float timbre) {
+ note_timbre = timbre;
+}
+
+// Tempo functions
+
+void set_tempo(float tempo) {
+ note_tempo = tempo;
+}
+
+void decrease_tempo(uint8_t tempo_change) {
+ note_tempo += (float) tempo_change;
+}
+
+void increase_tempo(uint8_t tempo_change) {
+ if (note_tempo - (float) tempo_change < 10) {
+ note_tempo = 10;
+ } else {
+ note_tempo -= (float) tempo_change;
+ }
+}
+
+void audio_init() {
+
+ /* check signature */
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ audio_config.raw = eeconfig_read_audio();
+
+ #ifdef PWM_AUDIO
+ PLLFRQ = _BV(PDIV2);
+ PLLCSR = _BV(PLLE);
+ while(!(PLLCSR & _BV(PLOCK)));
+ PLLFRQ |= _BV(PLLTM0); /* PCK 48MHz */
+
+ /* Init a fast PWM on Timer4 */
+ TCCR4A = _BV(COM4A0) | _BV(PWM4A); /* Clear OC4A on Compare Match */
+ TCCR4B = _BV(CS40); /* No prescaling => f = PCK/256 = 187500Hz */
+ OCR4A = 0;
+
+ /* Enable the OC4A output */
+ DDRC |= _BV(PORTC6);
+
+ TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs
+
+ TCCR3A = 0x0; // Options not needed
+ TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC
+ OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback
+ #else
+ DDRC |= _BV(PORTC6);
+
+ TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs
+
+ TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
+ TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30);
+ #endif
+
+ inited = true;
+}
+
+void stop_all_notes() {
+ if (!inited) {
+ audio_init();
+ }
+ voices = 0;
+ #ifdef PWM_AUDIO
+ TIMSK3 &= ~_BV(OCIE3A);
+ #else
+ TIMSK3 &= ~_BV(OCIE3A);
+ TCCR3A &= ~_BV(COM3A1);
+ #endif
+ notes = false;
+ note = false;
+ frequency = 0;
+ volume = 0;
+
+ for (int i = 0; i < 8; i++) {
+ frequencies[i] = 0;
+ volumes[i] = 0;
+ }
+}
+
+void stop_note(float freq) {
+ if (note) {
+ if (!inited) {
+ audio_init();
+ }
+ #ifdef PWM_AUDIO
+ freq = freq / SAMPLE_RATE;
+ #endif
+ for (int i = 7; i >= 0; i--) {
+ if (frequencies[i] == freq) {
+ frequencies[i] = 0;
+ volumes[i] = 0;
+ for (int j = i; (j < 7); j++) {
+ frequencies[j] = frequencies[j+1];
+ frequencies[j+1] = 0;
+ volumes[j] = volumes[j+1];
+ volumes[j+1] = 0;
+ }
+ break;
+ }
+ }
+ voices--;
+ if (voices < 0)
+ voices = 0;
+ if (voice_place >= voices) {
+ voice_place = 0;
+ }
+ if (voices == 0) {
+ #ifdef PWM_AUDIO
+ TIMSK3 &= ~_BV(OCIE3A);
+ #else
+ TIMSK3 &= ~_BV(OCIE3A);
+ TCCR3A &= ~_BV(COM3A1);
+ #endif
+ frequency = 0;
+ volume = 0;
+ note = false;
+ }
+ }
+}
+
+#ifdef VIBRATO_ENABLE
+
+float mod(float a, int b)
+{
+ float r = fmod(a, b);
+ return r < 0 ? r + b : r;
+}
+
+float vibrato(float average_freq) {
+ #ifdef VIBRATO_STRENGTH_ENABLE
+ float vibrated_freq = average_freq * pow(VIBRATO_LUT[(int)vibrato_counter], vibrato_strength);
+ #else
+ float vibrated_freq = average_freq * VIBRATO_LUT[(int)vibrato_counter];
+ #endif
+ vibrato_counter = mod((vibrato_counter + vibrato_rate * (1.0 + 440.0/average_freq)), VIBRATO_LUT_LENGTH);
+ return vibrated_freq;
+}
+
+#endif
+
+ISR(TIMER3_COMPA_vect) {
+ if (note) {
+ #ifdef PWM_AUDIO
+ if (voices == 1) {
+ // SINE
+ OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2;
+
+ // SQUARE
+ // if (((int)place) >= 1024){
+ // OCR4A = 0xFF >> 2;
+ // } else {
+ // OCR4A = 0x00;
+ // }
+
+ // SAWTOOTH
+ // OCR4A = (int)place / 4;
+
+ // TRIANGLE
+ // if (((int)place) >= 1024) {
+ // OCR4A = (int)place / 2;
+ // } else {
+ // OCR4A = 2048 - (int)place / 2;
+ // }
+
+ place += frequency;
+
+ if (place >= SINE_LENGTH)
+ place -= SINE_LENGTH;
+
+ } else {
+ int sum = 0;
+ for (int i = 0; i < voices; i++) {
+ // SINE
+ sum += pgm_read_byte(&sinewave[(uint16_t)places[i]]) >> 2;
+
+ // SQUARE
+ // if (((int)places[i]) >= 1024){
+ // sum += 0xFF >> 2;
+ // } else {
+ // sum += 0x00;
+ // }
+
+ places[i] += frequencies[i];
+
+ if (places[i] >= SINE_LENGTH)
+ places[i] -= SINE_LENGTH;
+ }
+ OCR4A = sum;
+ }
+ #else
+ if (voices > 0) {
+ float freq;
+ if (polyphony_rate > 0) {
+ if (voices > 1) {
+ voice_place %= voices;
+ if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) {
+ voice_place = (voice_place + 1) % voices;
+ place = 0.0;
+ }
+ }
+ #ifdef VIBRATO_ENABLE
+ if (vibrato_strength > 0) {
+ freq = vibrato(frequencies[voice_place]);
+ } else {
+ #else
+ {
+ #endif
+ freq = frequencies[voice_place];
+ }
+ } else {
+ if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) {
+ frequency = frequency * pow(2, 440/frequency/12/2);
+ } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) {
+ frequency = frequency * pow(2, -440/frequency/12/2);
+ } else {
+ frequency = frequencies[voices - 1];
+ }
+
+
+ #ifdef VIBRATO_ENABLE
+ if (vibrato_strength > 0) {
+ freq = vibrato(frequency);
+ } else {
+ #else
+ {
+ #endif
+ freq = frequency;
+ }
+ }
+
+ if (envelope_index < 65535) {
+ envelope_index++;
+ }
+ freq = voice_envelope(freq);
+
+ if (freq < 30.517578125)
+ freq = 30.52;
+ ICR3 = (int)(((double)F_CPU) / (freq * CPU_PRESCALER)); // Set max to the period
+ OCR3A = (int)((((double)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); // Set compare to half the period
+ }
+ #endif
+ }
+
+ // SAMPLE
+ // OCR4A = pgm_read_byte(&sample[(uint16_t)place_int]);
+
+ // place_int++;
+
+ // if (place_int >= sample_length)
+ // if (repeat)
+ // place_int -= sample_length;
+ // else
+ // TIMSK3 &= ~_BV(OCIE3A);
+
+
+ if (notes) {
+ #ifdef PWM_AUDIO
+ OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 0;
+
+ place += note_frequency;
+ if (place >= SINE_LENGTH)
+ place -= SINE_LENGTH;
+ #else
+ if (note_frequency > 0) {
+ float freq;
+
+ #ifdef VIBRATO_ENABLE
+ if (vibrato_strength > 0) {
+ freq = vibrato(note_frequency);
+ } else {
+ #else
+ {
+ #endif
+ freq = note_frequency;
+ }
+
+ if (envelope_index < 65535) {
+ envelope_index++;
+ }
+ freq = voice_envelope(freq);
+
+ ICR3 = (int)(((double)F_CPU) / (freq * CPU_PRESCALER)); // Set max to the period
+ OCR3A = (int)((((double)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); // Set compare to half the period
+ } else {
+ ICR3 = 0;
+ OCR3A = 0;
+ }
+ #endif
+
+
+ note_position++;
+ bool end_of_note = false;
+ if (ICR3 > 0)
+ end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF));
+ else
+ end_of_note = (note_position >= (note_length * 0x7FF));
+ if (end_of_note) {
+ current_note++;
+ if (current_note >= notes_count) {
+ if (notes_repeat) {
+ current_note = 0;
+ } else {
+ #ifdef PWM_AUDIO
+ TIMSK3 &= ~_BV(OCIE3A);
+ #else
+ TIMSK3 &= ~_BV(OCIE3A);
+ TCCR3A &= ~_BV(COM3A1);
+ #endif
+ notes = false;
+ return;
+ }
+ }
+ if (!note_resting && (notes_rest > 0)) {
+ note_resting = true;
+ note_frequency = 0;
+ note_length = notes_rest;
+ current_note--;
+ } else {
+ note_resting = false;
+ #ifdef PWM_AUDIO
+ note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE;
+ note_length = (*notes_pointer)[current_note][1] * (note_tempo / 100);
+ #else
+ envelope_index = 0;
+ note_frequency = (*notes_pointer)[current_note][0];
+ note_length = ((*notes_pointer)[current_note][1] / 4) * (note_tempo / 100);
+ #endif
+ }
+ note_position = 0;
+ }
+
+ }
+
+ if (!audio_config.enable) {
+ notes = false;
+ note = false;
+ }
+}
+
+void play_note(float freq, int vol) {
+
+ if (!inited) {
+ audio_init();
+ }
+
+if (audio_config.enable && voices < 8) {
+ TIMSK3 &= ~_BV(OCIE3A);
+ // Cancel notes if notes are playing
+ if (notes)
+ stop_all_notes();
+ note = true;
+ envelope_index = 0;
+ #ifdef PWM_AUDIO
+ freq = freq / SAMPLE_RATE;
+ #endif
+ if (freq > 0) {
+ frequencies[voices] = freq;
+ volumes[voices] = vol;
+ voices++;
+ }
+
+ #ifdef PWM_AUDIO
+ TIMSK3 |= _BV(OCIE3A);
+ #else
+ TIMSK3 |= _BV(OCIE3A);
+ TCCR3A |= _BV(COM3A1);
+ #endif
+}
+
+}
+
+void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) {
+
+ if (!inited) {
+ audio_init();
+ }
+
+if (audio_config.enable) {
+ TIMSK3 &= ~_BV(OCIE3A);
+ // Cancel note if a note is playing
+ if (note)
+ stop_all_notes();
+ notes = true;
+
+ notes_pointer = np;
+ notes_count = n_count;
+ notes_repeat = n_repeat;
+ notes_rest = n_rest;
+
+ place = 0;
+ current_note = 0;
+ #ifdef PWM_AUDIO
+ note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE;
+ note_length = (*notes_pointer)[current_note][1] * (note_tempo / 100);
+ #else
+ note_frequency = (*notes_pointer)[current_note][0];
+ note_length = ((*notes_pointer)[current_note][1] / 4) * (note_tempo / 100);
+ #endif
+ note_position = 0;
+
+
+ #ifdef PWM_AUDIO
+ TIMSK3 |= _BV(OCIE3A);
+ #else
+ TIMSK3 |= _BV(OCIE3A);
+ TCCR3A |= _BV(COM3A1);
+ #endif
+}
+
+}
+
+#ifdef PWM_AUDIO
+void play_sample(uint8_t * s, uint16_t l, bool r) {
+ if (!inited) {
+ audio_init();
+ }
+
+ if (audio_config.enable) {
+ TIMSK3 &= ~_BV(OCIE3A);
+ stop_all_notes();
+ place_int = 0;
+ sample = s;
+ sample_length = l;
+ repeat = r;
+
+ TIMSK3 |= _BV(OCIE3A);
+ }
+}
+#endif
+
+//------------------------------------------------------------------------------
+// Override these functions in your keymap file to play different tunes on
+// startup and bootloader jump
+__attribute__ ((weak))
+void play_startup_tone()
+{
+}
+
+
+
+__attribute__ ((weak))
+void play_goodbye_tone()
+{
+
+}
+//------------------------------------------------------------------------------
--- /dev/null
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "musical_notes.h"
+#include "song_list.h"
+#include "voices.h"
+
+#ifndef AUDIO_H
+#define AUDIO_H
+
+// Largely untested PWM audio mode (doesn't sound as good)
+// #define PWM_AUDIO
+
+// #define VIBRATO_ENABLE
+
+// Enable vibrato strength/amplitude - slows down ISR too much
+// #define VIBRATO_STRENGTH_ENABLE
+
+typedef union {
+ uint8_t raw;
+ struct {
+ bool enable :1;
+ uint8_t level :7;
+ };
+} audio_config_t;
+
+void audio_toggle(void);
+void audio_on(void);
+void audio_off(void);
+
+// Vibrato rate functions
+
+#ifdef VIBRATO_ENABLE
+
+void set_vibrato_rate(float rate);
+void increase_vibrato_rate(float change);
+void decrease_vibrato_rate(float change);
+
+#ifdef VIBRATO_STRENGTH_ENABLE
+
+void set_vibrato_strength(float strength);
+void increase_vibrato_strength(float change);
+void decrease_vibrato_strength(float change);
+
+#endif
+
+#endif
+
+// Polyphony functions
+
+void set_polyphony_rate(float rate);
+void enable_polyphony(void);
+void disable_polyphony(void);
+void increase_polyphony_rate(float change);
+void decrease_polyphony_rate(float change);
+
+void set_timbre(float timbre);
+void set_tempo(float tempo);
+
+void increase_tempo(uint8_t tempo_change);
+void decrease_tempo(uint8_t tempo_change);
+
+void audio_init(void);
+
+#ifdef PWM_AUDIO
+void play_sample(uint8_t * s, uint16_t l, bool r);
+#endif
+void play_note(float freq, int vol);
+void stop_note(float freq);
+void stop_all_notes(void);
+void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest);
+
+#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \
+ 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
+ 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \
+ 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \
+ 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
+
+// These macros are used to allow play_notes to play an array of indeterminate
+// length. This works around the limitation of C's sizeof operation on pointers.
+// The global float array for the song must be used here.
+#define NOTE_ARRAY_SIZE(x) ((int16_t)(sizeof(x) / (sizeof(x[0]))))
+#define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style));
+
+void play_goodbye_tone(void);
+void play_startup_tone(void);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+
+#define FREQUENCY_LUT_LENGTH 349
+
+const uint16_t FREQUENCY_LUT[FREQUENCY_LUT_LENGTH] = {
+0x8E0B,
+0x8C02,
+0x8A00,
+0x8805,
+0x8612,
+0x8426,
+0x8241,
+0x8063,
+0x7E8C,
+0x7CBB,
+0x7AF2,
+0x792E,
+0x7772,
+0x75BB,
+0x740B,
+0x7261,
+0x70BD,
+0x6F20,
+0x6D88,
+0x6BF6,
+0x6A69,
+0x68E3,
+0x6762,
+0x65E6,
+0x6470,
+0x6300,
+0x6194,
+0x602E,
+0x5ECD,
+0x5D71,
+0x5C1A,
+0x5AC8,
+0x597B,
+0x5833,
+0x56EF,
+0x55B0,
+0x5475,
+0x533F,
+0x520E,
+0x50E1,
+0x4FB8,
+0x4E93,
+0x4D73,
+0x4C57,
+0x4B3E,
+0x4A2A,
+0x491A,
+0x480E,
+0x4705,
+0x4601,
+0x4500,
+0x4402,
+0x4309,
+0x4213,
+0x4120,
+0x4031,
+0x3F46,
+0x3E5D,
+0x3D79,
+0x3C97,
+0x3BB9,
+0x3ADD,
+0x3A05,
+0x3930,
+0x385E,
+0x3790,
+0x36C4,
+0x35FB,
+0x3534,
+0x3471,
+0x33B1,
+0x32F3,
+0x3238,
+0x3180,
+0x30CA,
+0x3017,
+0x2F66,
+0x2EB8,
+0x2E0D,
+0x2D64,
+0x2CBD,
+0x2C19,
+0x2B77,
+0x2AD8,
+0x2A3A,
+0x299F,
+0x2907,
+0x2870,
+0x27DC,
+0x2749,
+0x26B9,
+0x262B,
+0x259F,
+0x2515,
+0x248D,
+0x2407,
+0x2382,
+0x2300,
+0x2280,
+0x2201,
+0x2184,
+0x2109,
+0x2090,
+0x2018,
+0x1FA3,
+0x1F2E,
+0x1EBC,
+0x1E4B,
+0x1DDC,
+0x1D6E,
+0x1D02,
+0x1C98,
+0x1C2F,
+0x1BC8,
+0x1B62,
+0x1AFD,
+0x1A9A,
+0x1A38,
+0x19D8,
+0x1979,
+0x191C,
+0x18C0,
+0x1865,
+0x180B,
+0x17B3,
+0x175C,
+0x1706,
+0x16B2,
+0x165E,
+0x160C,
+0x15BB,
+0x156C,
+0x151D,
+0x14CF,
+0x1483,
+0x1438,
+0x13EE,
+0x13A4,
+0x135C,
+0x1315,
+0x12CF,
+0x128A,
+0x1246,
+0x1203,
+0x11C1,
+0x1180,
+0x1140,
+0x1100,
+0x10C2,
+0x1084,
+0x1048,
+0x100C,
+0xFD1,
+0xF97,
+0xF5E,
+0xF25,
+0xEEE,
+0xEB7,
+0xE81,
+0xE4C,
+0xE17,
+0xDE4,
+0xDB1,
+0xD7E,
+0xD4D,
+0xD1C,
+0xCEC,
+0xCBC,
+0xC8E,
+0xC60,
+0xC32,
+0xC05,
+0xBD9,
+0xBAE,
+0xB83,
+0xB59,
+0xB2F,
+0xB06,
+0xADD,
+0xAB6,
+0xA8E,
+0xA67,
+0xA41,
+0xA1C,
+0x9F7,
+0x9D2,
+0x9AE,
+0x98A,
+0x967,
+0x945,
+0x923,
+0x901,
+0x8E0,
+0x8C0,
+0x8A0,
+0x880,
+0x861,
+0x842,
+0x824,
+0x806,
+0x7E8,
+0x7CB,
+0x7AF,
+0x792,
+0x777,
+0x75B,
+0x740,
+0x726,
+0x70B,
+0x6F2,
+0x6D8,
+0x6BF,
+0x6A6,
+0x68E,
+0x676,
+0x65E,
+0x647,
+0x630,
+0x619,
+0x602,
+0x5EC,
+0x5D7,
+0x5C1,
+0x5AC,
+0x597,
+0x583,
+0x56E,
+0x55B,
+0x547,
+0x533,
+0x520,
+0x50E,
+0x4FB,
+0x4E9,
+0x4D7,
+0x4C5,
+0x4B3,
+0x4A2,
+0x491,
+0x480,
+0x470,
+0x460,
+0x450,
+0x440,
+0x430,
+0x421,
+0x412,
+0x403,
+0x3F4,
+0x3E5,
+0x3D7,
+0x3C9,
+0x3BB,
+0x3AD,
+0x3A0,
+0x393,
+0x385,
+0x379,
+0x36C,
+0x35F,
+0x353,
+0x347,
+0x33B,
+0x32F,
+0x323,
+0x318,
+0x30C,
+0x301,
+0x2F6,
+0x2EB,
+0x2E0,
+0x2D6,
+0x2CB,
+0x2C1,
+0x2B7,
+0x2AD,
+0x2A3,
+0x299,
+0x290,
+0x287,
+0x27D,
+0x274,
+0x26B,
+0x262,
+0x259,
+0x251,
+0x248,
+0x240,
+0x238,
+0x230,
+0x228,
+0x220,
+0x218,
+0x210,
+0x209,
+0x201,
+0x1FA,
+0x1F2,
+0x1EB,
+0x1E4,
+0x1DD,
+0x1D6,
+0x1D0,
+0x1C9,
+0x1C2,
+0x1BC,
+0x1B6,
+0x1AF,
+0x1A9,
+0x1A3,
+0x19D,
+0x197,
+0x191,
+0x18C,
+0x186,
+0x180,
+0x17B,
+0x175,
+0x170,
+0x16B,
+0x165,
+0x160,
+0x15B,
+0x156,
+0x151,
+0x14C,
+0x148,
+0x143,
+0x13E,
+0x13A,
+0x135,
+0x131,
+0x12C,
+0x128,
+0x124,
+0x120,
+0x11C,
+0x118,
+0x114,
+0x110,
+0x10C,
+0x108,
+0x104,
+0x100,
+0xFD,
+0xF9,
+0xF5,
+0xF2,
+0xEE
+};
\ No newline at end of file
--- /dev/null
+#ifndef MUSICAL_NOTES_H
+#define MUSICAL_NOTES_H
+
+// Tempo Placeholder
+#define TEMPO_DEFAULT 100
+
+
+#define SONG(notes...) { notes }
+
+
+// Note Types
+#define MUSICAL_NOTE(note, duration) {(NOTE##note), duration}
+#define WHOLE_NOTE(note) MUSICAL_NOTE(note, 64)
+#define HALF_NOTE(note) MUSICAL_NOTE(note, 32)
+#define QUARTER_NOTE(note) MUSICAL_NOTE(note, 16)
+#define EIGHTH_NOTE(note) MUSICAL_NOTE(note, 8)
+#define SIXTEENTH_NOTE(note) MUSICAL_NOTE(note, 4)
+
+#define WHOLE_DOT_NOTE(note) MUSICAL_NOTE(note, 64+32)
+#define HALF_DOT_NOTE(note) MUSICAL_NOTE(note, 32+16)
+#define QUARTER_DOT_NOTE(note) MUSICAL_NOTE(note, 16+8)
+#define EIGHTH_DOT_NOTE(note) MUSICAL_NOTE(note, 8+4)
+#define SIXTEENTH_DOT_NOTE(note) MUSICAL_NOTE(note, 4+2)
+
+// Note Type Shortcuts
+#define M__NOTE(note, duration) MUSICAL_NOTE(note, duration)
+#define W__NOTE(n) WHOLE_NOTE(n)
+#define H__NOTE(n) HALF_NOTE(n)
+#define Q__NOTE(n) QUARTER_NOTE(n)
+#define E__NOTE(n) EIGHTH_NOTE(n)
+#define S__NOTE(n) SIXTEENTH_NOTE(n)
+#define WD_NOTE(n) WHOLE_DOT_NOTE(n)
+#define HD_NOTE(n) HALF_DOT_NOTE(n)
+#define QD_NOTE(n) QUARTER_DOT_NOTE(n)
+#define ED_NOTE(n) EIGHTH_DOT_NOTE(n)
+#define SD_NOTE(n) SIXTEENTH_DOT_NOTE(n)
+
+// Note Styles
+// Staccato makes sure there is a rest between each note. Think: TA TA TA
+// Legato makes notes flow together. Think: TAAA
+#define STACCATO 0.01
+#define LEGATO 0
+
+// Note Timbre
+// Changes how the notes sound
+#define TIMBRE_12 0.125
+#define TIMBRE_25 0.250
+#define TIMBRE_50 0.500
+#define TIMBRE_75 0.750
+#define TIMBRE_DEFAULT TIMBRE_50
+
+
+// Notes - # = Octave
+
+#define NOTE_REST 0.00
+
+/* These notes are currently bugged
+#define NOTE_C0 16.35
+#define NOTE_CS0 17.32
+#define NOTE_D0 18.35
+#define NOTE_DS0 19.45
+#define NOTE_E0 20.60
+#define NOTE_F0 21.83
+#define NOTE_FS0 23.12
+#define NOTE_G0 24.50
+#define NOTE_GS0 25.96
+#define NOTE_A0 27.50
+#define NOTE_AS0 29.14
+#define NOTE_B0 30.87
+#define NOTE_C1 32.70
+#define NOTE_CS1 34.65
+#define NOTE_D1 36.71
+#define NOTE_DS1 38.89
+#define NOTE_E1 41.20
+#define NOTE_F1 43.65
+#define NOTE_FS1 46.25
+#define NOTE_G1 49.00
+#define NOTE_GS1 51.91
+#define NOTE_A1 55.00
+#define NOTE_AS1 58.27
+*/
+
+#define NOTE_B1 61.74
+#define NOTE_C2 65.41
+#define NOTE_CS2 69.30
+#define NOTE_D2 73.42
+#define NOTE_DS2 77.78
+#define NOTE_E2 82.41
+#define NOTE_F2 87.31
+#define NOTE_FS2 92.50
+#define NOTE_G2 98.00
+#define NOTE_GS2 103.83
+#define NOTE_A2 110.00
+#define NOTE_AS2 116.54
+#define NOTE_B2 123.47
+#define NOTE_C3 130.81
+#define NOTE_CS3 138.59
+#define NOTE_D3 146.83
+#define NOTE_DS3 155.56
+#define NOTE_E3 164.81
+#define NOTE_F3 174.61
+#define NOTE_FS3 185.00
+#define NOTE_G3 196.00
+#define NOTE_GS3 207.65
+#define NOTE_A3 220.00
+#define NOTE_AS3 233.08
+#define NOTE_B3 246.94
+#define NOTE_C4 261.63
+#define NOTE_CS4 277.18
+#define NOTE_D4 293.66
+#define NOTE_DS4 311.13
+#define NOTE_E4 329.63
+#define NOTE_F4 349.23
+#define NOTE_FS4 369.99
+#define NOTE_G4 392.00
+#define NOTE_GS4 415.30
+#define NOTE_A4 440.00
+#define NOTE_AS4 466.16
+#define NOTE_B4 493.88
+#define NOTE_C5 523.25
+#define NOTE_CS5 554.37
+#define NOTE_D5 587.33
+#define NOTE_DS5 622.25
+#define NOTE_E5 659.26
+#define NOTE_F5 698.46
+#define NOTE_FS5 739.99
+#define NOTE_G5 783.99
+#define NOTE_GS5 830.61
+#define NOTE_A5 880.00
+#define NOTE_AS5 932.33
+#define NOTE_B5 987.77
+#define NOTE_C6 1046.50
+#define NOTE_CS6 1108.73
+#define NOTE_D6 1174.66
+#define NOTE_DS6 1244.51
+#define NOTE_E6 1318.51
+#define NOTE_F6 1396.91
+#define NOTE_FS6 1479.98
+#define NOTE_G6 1567.98
+#define NOTE_GS6 1661.22
+#define NOTE_A6 1760.00
+#define NOTE_AS6 1864.66
+#define NOTE_B6 1975.53
+#define NOTE_C7 2093.00
+#define NOTE_CS7 2217.46
+#define NOTE_D7 2349.32
+#define NOTE_DS7 2489.02
+#define NOTE_E7 2637.02
+#define NOTE_F7 2793.83
+#define NOTE_FS7 2959.96
+#define NOTE_G7 3135.96
+#define NOTE_GS7 3322.44
+#define NOTE_A7 3520.00
+#define NOTE_AS7 3729.31
+#define NOTE_B7 3951.07
+#define NOTE_C8 4186.01
+#define NOTE_CS8 4434.92
+#define NOTE_D8 4698.64
+#define NOTE_DS8 4978.03
+#define NOTE_E8 5274.04
+#define NOTE_F8 5587.65
+#define NOTE_FS8 5919.91
+#define NOTE_G8 6271.93
+#define NOTE_GS8 6644.88
+#define NOTE_A8 7040.00
+#define NOTE_AS8 7458.62
+#define NOTE_B8 7902.13
+
+// Flat Aliases
+#define NOTE_DF0 NOTE_CS0
+#define NOTE_EF0 NOTE_DS0
+#define NOTE_GF0 NOTE_FS0
+#define NOTE_AF0 NOTE_GS0
+#define NOTE_BF0 NOTE_AS0
+#define NOTE_DF1 NOTE_CS1
+#define NOTE_EF1 NOTE_DS1
+#define NOTE_GF1 NOTE_FS1
+#define NOTE_AF1 NOTE_GS1
+#define NOTE_BF1 NOTE_AS1
+#define NOTE_DF2 NOTE_CS2
+#define NOTE_EF2 NOTE_DS2
+#define NOTE_GF2 NOTE_FS2
+#define NOTE_AF2 NOTE_GS2
+#define NOTE_BF2 NOTE_AS2
+#define NOTE_DF3 NOTE_CS3
+#define NOTE_EF3 NOTE_DS3
+#define NOTE_GF3 NOTE_FS3
+#define NOTE_AF3 NOTE_GS3
+#define NOTE_BF3 NOTE_AS3
+#define NOTE_DF4 NOTE_CS4
+#define NOTE_EF4 NOTE_DS4
+#define NOTE_GF4 NOTE_FS4
+#define NOTE_AF4 NOTE_GS4
+#define NOTE_BF4 NOTE_AS4
+#define NOTE_DF5 NOTE_CS5
+#define NOTE_EF5 NOTE_DS5
+#define NOTE_GF5 NOTE_FS5
+#define NOTE_AF5 NOTE_GS5
+#define NOTE_BF5 NOTE_AS5
+#define NOTE_DF6 NOTE_CS6
+#define NOTE_EF6 NOTE_DS6
+#define NOTE_GF6 NOTE_FS6
+#define NOTE_AF6 NOTE_GS6
+#define NOTE_BF6 NOTE_AS6
+#define NOTE_DF7 NOTE_CS7
+#define NOTE_EF7 NOTE_DS7
+#define NOTE_GF7 NOTE_FS7
+#define NOTE_AF7 NOTE_GS7
+#define NOTE_BF7 NOTE_AS7
+#define NOTE_DF8 NOTE_CS8
+#define NOTE_EF8 NOTE_DS8
+#define NOTE_GF8 NOTE_FS8
+#define NOTE_AF8 NOTE_GS8
+#define NOTE_BF8 NOTE_AS8
+
+
+#endif
\ No newline at end of file
--- /dev/null
+#include "musical_notes.h"
+
+#ifndef SONG_LIST_H
+#define SONG_LIST_H
+
+#define ODE_TO_JOY \
+ Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \
+ Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \
+ Q__NOTE(_C4), Q__NOTE(_C4), Q__NOTE(_D4), Q__NOTE(_E4), \
+ QD_NOTE(_E4), E__NOTE(_D4), H__NOTE(_D4),
+
+#define ROCK_A_BYE_BABY \
+ QD_NOTE(_B4), E__NOTE(_D4), Q__NOTE(_B5), \
+ H__NOTE(_A5), Q__NOTE(_G5), \
+ QD_NOTE(_B4), E__NOTE(_D5), Q__NOTE(_G5), \
+ H__NOTE(_FS5),
+
+#define CLOSE_ENCOUNTERS_5_NOTE \
+ Q__NOTE(_D5), \
+ Q__NOTE(_E5), \
+ Q__NOTE(_C5), \
+ Q__NOTE(_C4), \
+ Q__NOTE(_G4),
+
+#define DOE_A_DEER \
+ QD_NOTE(_C4), E__NOTE(_D4), \
+ QD_NOTE(_E4), E__NOTE(_C4), \
+ Q__NOTE(_E4), Q__NOTE(_C4), \
+ Q__NOTE(_E4),
+
+#define GOODBYE_SOUND \
+ E__NOTE(_E7), \
+ E__NOTE(_A6), \
+ ED_NOTE(_E6),
+
+#define STARTUP_SOUND \
+ ED_NOTE(_E7 ), \
+ E__NOTE(_CS7), \
+ E__NOTE(_E6 ), \
+ E__NOTE(_A6 ), \
+ M__NOTE(_CS7, 20),
+
+#define QWERTY_SOUND \
+ E__NOTE(_GS6 ), \
+ E__NOTE(_A6 ), \
+ S__NOTE(_REST), \
+ Q__NOTE(_E7 ),
+
+#define COLEMAK_SOUND \
+ E__NOTE(_GS6 ), \
+ E__NOTE(_A6 ), \
+ S__NOTE(_REST), \
+ ED_NOTE(_E7 ), \
+ S__NOTE(_REST), \
+ ED_NOTE(_GS7 ),
+
+#define DVORAK_SOUND \
+ E__NOTE(_GS6 ), \
+ E__NOTE(_A6 ), \
+ S__NOTE(_REST), \
+ E__NOTE(_E7 ), \
+ S__NOTE(_REST), \
+ E__NOTE(_FS7 ), \
+ S__NOTE(_REST), \
+ E__NOTE(_E7 ),
+
+#define PLOVER_SOUND \
+ E__NOTE(_GS6 ), \
+ E__NOTE(_A6 ), \
+ S__NOTE(_REST), \
+ ED_NOTE(_E7 ), \
+ S__NOTE(_REST), \
+ ED_NOTE(_A7 ),
+
+#define PLOVER_GOODBYE_SOUND \
+ E__NOTE(_GS6 ), \
+ E__NOTE(_A6 ), \
+ S__NOTE(_REST), \
+ ED_NOTE(_A7 ), \
+ S__NOTE(_REST), \
+ ED_NOTE(_E7 ),
+
+#define MUSIC_SCALE_SOUND \
+ E__NOTE(_A5 ), \
+ E__NOTE(_B5 ), \
+ E__NOTE(_CS6), \
+ E__NOTE(_D6 ), \
+ E__NOTE(_E6 ), \
+ E__NOTE(_FS6), \
+ E__NOTE(_GS6), \
+ E__NOTE(_A6 ),
+
+#define CAPS_LOCK_ON_SOUND \
+ E__NOTE(_A3), \
+ E__NOTE(_B3),
+
+#define CAPS_LOCK_OFF_SOUND \
+ E__NOTE(_B3), \
+ E__NOTE(_A3),
+
+#define SCROLL_LOCK_ON_SOUND \
+ E__NOTE(_D4), \
+ E__NOTE(_E4),
+
+#define SCROLL_LOCK_OFF_SOUND \
+ E__NOTE(_E4), \
+ E__NOTE(_D4),
+
+#define NUM_LOCK_ON_SOUND \
+ E__NOTE(_D5), \
+ E__NOTE(_E5),
+
+#define NUM_LOCK_OFF_SOUND \
+ E__NOTE(_E5), \
+ E__NOTE(_D5),
+
+#endif
--- /dev/null
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+
+#define VIBRATO_LUT_LENGTH 20
+
+const float VIBRATO_LUT[VIBRATO_LUT_LENGTH] = { \
+1.00223368114872,
+1.00425299436105,
+1.00585842560279,
+1.00689052852052,
+1.0072464122237,
+1.00689052852052,
+1.00585842560279,
+1.00425299436105,
+1.00223368114872,
+1,
+0.99777129706302,
+0.99576501699778,
+0.994175695650927,
+0.993156625943589,
+0.992805720491269,
+0.993156625943589,
+0.994175695650927,
+0.99576501699778,
+0.99777129706302,
+1
+};
\ No newline at end of file
--- /dev/null
+#include "voices.h"
+#include "stdlib.h"
+#include "vibrato_lut.h"
+
+// these are imported from audio.c
+extern uint16_t envelope_index;
+extern float note_timbre;
+extern float polyphony_rate;
+
+voice_type voice = default_voice;
+
+void set_voice(voice_type v) {
+ voice = v;
+}
+
+void voice_iterate() {
+ voice = (voice + 1) % number_of_voices;
+}
+
+void voice_deiterate() {
+ voice = (voice - 1) % number_of_voices;
+}
+
+float voice_envelope(float frequency) {
+ // envelope_index ranges from 0 to 0xFFFF, which is preserved at 880.0 Hz
+ uint16_t compensated_index = (uint16_t)((float)envelope_index * (880.0 / frequency));
+
+ switch (voice) {
+ case default_voice:
+ note_timbre = TIMBRE_50;
+ polyphony_rate = 0;
+ break;
+
+ case butts_fader:
+ polyphony_rate = 0;
+ switch (compensated_index) {
+ case 0 ... 9:
+ frequency = frequency / 4;
+ note_timbre = TIMBRE_12;
+ break;
+
+ case 10 ... 19:
+ frequency = frequency / 2;
+ note_timbre = TIMBRE_12;
+ break;
+
+ case 20 ... 200:
+ note_timbre = .125 - pow(((float)compensated_index - 20) / (200 - 20), 2)*.125;
+ break;
+
+ default:
+ note_timbre = 0;
+ break;
+ }
+ break;
+
+ // case octave_crunch:
+ // polyphony_rate = 0;
+ // switch (compensated_index) {
+ // case 0 ... 9:
+ // case 20 ... 24:
+ // case 30 ... 32:
+ // frequency = frequency / 2;
+ // note_timbre = TIMBRE_12;
+ // break;
+
+ // case 10 ... 19:
+ // case 25 ... 29:
+ // case 33 ... 35:
+ // frequency = frequency * 2;
+ // note_timbre = TIMBRE_12;
+ // break;
+
+ // default:
+ // note_timbre = TIMBRE_12;
+ // break;
+ // }
+ // break;
+
+ case duty_osc:
+ // This slows the loop down a substantial amount, so higher notes may freeze
+ polyphony_rate = 0;
+ switch (compensated_index) {
+ default:
+ #define OCS_SPEED 10
+ #define OCS_AMP .25
+ // sine wave is slow
+ // note_timbre = (sin((float)compensated_index/10000*OCS_SPEED) * OCS_AMP / 2) + .5;
+ // triangle wave is a bit faster
+ note_timbre = (float)abs((compensated_index*OCS_SPEED % 3000) - 1500) * ( OCS_AMP / 1500 ) + (1 - OCS_AMP) / 2;
+ break;
+ }
+ break;
+
+ case duty_octave_down:
+ polyphony_rate = 0;
+ note_timbre = (envelope_index % 2) * .125 + .375 * 2;
+ if ((envelope_index % 4) == 0)
+ note_timbre = 0.5;
+ if ((envelope_index % 8) == 0)
+ note_timbre = 0;
+ break;
+ case delayed_vibrato:
+ polyphony_rate = 0;
+ note_timbre = TIMBRE_50;
+ #define VOICE_VIBRATO_DELAY 150
+ #define VOICE_VIBRATO_SPEED 50
+ switch (compensated_index) {
+ case 0 ... VOICE_VIBRATO_DELAY:
+ break;
+ default:
+ frequency = frequency * VIBRATO_LUT[(int)fmod((((float)compensated_index - (VOICE_VIBRATO_DELAY + 1))/1000*VOICE_VIBRATO_SPEED), VIBRATO_LUT_LENGTH)];
+ break;
+ }
+ break;
+ // case delayed_vibrato_octave:
+ // polyphony_rate = 0;
+ // if ((envelope_index % 2) == 1) {
+ // note_timbre = 0.55;
+ // } else {
+ // note_timbre = 0.45;
+ // }
+ // #define VOICE_VIBRATO_DELAY 150
+ // #define VOICE_VIBRATO_SPEED 50
+ // switch (compensated_index) {
+ // case 0 ... VOICE_VIBRATO_DELAY:
+ // break;
+ // default:
+ // frequency = frequency * VIBRATO_LUT[(int)fmod((((float)compensated_index - (VOICE_VIBRATO_DELAY + 1))/1000*VOICE_VIBRATO_SPEED), VIBRATO_LUT_LENGTH)];
+ // break;
+ // }
+ // break;
+ // case duty_fifth_down:
+ // note_timbre = 0.5;
+ // if ((envelope_index % 3) == 0)
+ // note_timbre = 0.75;
+ // break;
+ // case duty_fourth_down:
+ // note_timbre = 0.0;
+ // if ((envelope_index % 12) == 0)
+ // note_timbre = 0.75;
+ // if (((envelope_index % 12) % 4) != 1)
+ // note_timbre = 0.75;
+ // break;
+ // case duty_third_down:
+ // note_timbre = 0.5;
+ // if ((envelope_index % 5) == 0)
+ // note_timbre = 0.75;
+ // break;
+ // case duty_fifth_third_down:
+ // note_timbre = 0.5;
+ // if ((envelope_index % 5) == 0)
+ // note_timbre = 0.75;
+ // if ((envelope_index % 3) == 0)
+ // note_timbre = 0.25;
+ // break;
+
+ default:
+ break;
+ }
+
+ return frequency;
+}
\ No newline at end of file
--- /dev/null
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "musical_notes.h"
+#include "song_list.h"
+
+#ifndef VOICES_H
+#define VOICES_H
+
+float voice_envelope(float frequency);
+
+typedef enum {
+ default_voice,
+ butts_fader,
+ octave_crunch,
+ duty_osc,
+ duty_octave_down,
+ delayed_vibrato,
+ // delayed_vibrato_octave,
+ // duty_fifth_down,
+ // duty_fourth_down,
+ // duty_third_down,
+ // duty_fifth_third_down,
+ number_of_voices // important that this is last
+} voice_type;
+
+void set_voice(voice_type v);
+void voice_iterate(void);
+void voice_deiterate(void);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+
+#define SINE_LENGTH 2048
+
+const uint8_t sinewave[] PROGMEM= //2048 values
+{
+0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,
+0x83,0x83,0x83,0x84,0x84,0x85,0x85,0x85,
+0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x88,
+0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,
+0x8c,0x8c,0x8d,0x8d,0x8e,0x8e,0x8e,0x8f,
+0x8f,0x8f,0x90,0x90,0x91,0x91,0x91,0x92,
+0x92,0x93,0x93,0x93,0x94,0x94,0x95,0x95,
+0x95,0x96,0x96,0x96,0x97,0x97,0x98,0x98,
+0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9b,
+0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,
+0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,
+0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,
+0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,
+0xa7,0xa8,0xa8,0xa9,0xa9,0xa9,0xaa,0xaa,
+0xaa,0xab,0xab,0xac,0xac,0xac,0xad,0xad,
+0xad,0xae,0xae,0xae,0xaf,0xaf,0xb0,0xb0,
+0xb0,0xb1,0xb1,0xb1,0xb2,0xb2,0xb2,0xb3,
+0xb3,0xb4,0xb4,0xb4,0xb5,0xb5,0xb5,0xb6,
+0xb6,0xb6,0xb7,0xb7,0xb7,0xb8,0xb8,0xb8,
+0xb9,0xb9,0xba,0xba,0xba,0xbb,0xbb,0xbb,
+0xbc,0xbc,0xbc,0xbd,0xbd,0xbd,0xbe,0xbe,
+0xbe,0xbf,0xbf,0xbf,0xc0,0xc0,0xc0,0xc1,
+0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc3,
+0xc4,0xc4,0xc4,0xc5,0xc5,0xc5,0xc6,0xc6,
+0xc6,0xc7,0xc7,0xc7,0xc8,0xc8,0xc8,0xc9,
+0xc9,0xc9,0xca,0xca,0xca,0xcb,0xcb,0xcb,
+0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,
+0xce,0xce,0xcf,0xcf,0xcf,0xcf,0xd0,0xd0,
+0xd0,0xd1,0xd1,0xd1,0xd2,0xd2,0xd2,0xd2,
+0xd3,0xd3,0xd3,0xd4,0xd4,0xd4,0xd5,0xd5,
+0xd5,0xd5,0xd6,0xd6,0xd6,0xd7,0xd7,0xd7,
+0xd7,0xd8,0xd8,0xd8,0xd9,0xd9,0xd9,0xd9,
+0xda,0xda,0xda,0xda,0xdb,0xdb,0xdb,0xdc,
+0xdc,0xdc,0xdc,0xdd,0xdd,0xdd,0xdd,0xde,
+0xde,0xde,0xde,0xdf,0xdf,0xdf,0xe0,0xe0,
+0xe0,0xe0,0xe1,0xe1,0xe1,0xe1,0xe2,0xe2,
+0xe2,0xe2,0xe3,0xe3,0xe3,0xe3,0xe4,0xe4,
+0xe4,0xe4,0xe4,0xe5,0xe5,0xe5,0xe5,0xe6,
+0xe6,0xe6,0xe6,0xe7,0xe7,0xe7,0xe7,0xe8,
+0xe8,0xe8,0xe8,0xe8,0xe9,0xe9,0xe9,0xe9,
+0xea,0xea,0xea,0xea,0xea,0xeb,0xeb,0xeb,
+0xeb,0xeb,0xec,0xec,0xec,0xec,0xec,0xed,
+0xed,0xed,0xed,0xed,0xee,0xee,0xee,0xee,
+0xee,0xef,0xef,0xef,0xef,0xef,0xf0,0xf0,
+0xf0,0xf0,0xf0,0xf0,0xf1,0xf1,0xf1,0xf1,
+0xf1,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf3,
+0xf3,0xf3,0xf3,0xf3,0xf3,0xf4,0xf4,0xf4,
+0xf4,0xf4,0xf4,0xf5,0xf5,0xf5,0xf5,0xf5,
+0xf5,0xf5,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
+0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
+0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
+0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
+0xfa,0xfa,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,
+0xfb,0xfb,0xfb,0xfb,0xfc,0xfc,0xfc,0xfc,
+0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
+0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe,
+0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+0xfe,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,
+0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+0xfe,0xfe,0xfe,0xfd,0xfd,0xfd,0xfd,0xfd,
+0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
+0xfd,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xfc,0xfc,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,
+0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfa,
+0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
+0xfa,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+0xf9,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
+0xf8,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
+0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf5,
+0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf4,0xf4,
+0xf4,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf3,
+0xf3,0xf3,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,
+0xf1,0xf1,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,
+0xf0,0xf0,0xf0,0xef,0xef,0xef,0xef,0xef,
+0xee,0xee,0xee,0xee,0xee,0xed,0xed,0xed,
+0xed,0xed,0xec,0xec,0xec,0xec,0xec,0xeb,
+0xeb,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xea,
+0xea,0xe9,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,
+0xe8,0xe8,0xe7,0xe7,0xe7,0xe7,0xe6,0xe6,
+0xe6,0xe6,0xe5,0xe5,0xe5,0xe5,0xe4,0xe4,
+0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe3,0xe2,
+0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe1,0xe0,
+0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,
+0xde,0xde,0xdd,0xdd,0xdd,0xdd,0xdc,0xdc,
+0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,
+0xda,0xd9,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,
+0xd7,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,
+0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,
+0xd3,0xd2,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,
+0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xcf,0xce,
+0xce,0xce,0xcd,0xcd,0xcd,0xcc,0xcc,0xcc,
+0xcb,0xcb,0xcb,0xcb,0xca,0xca,0xca,0xc9,
+0xc9,0xc9,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7,
+0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc4,0xc4,
+0xc4,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc1,
+0xc1,0xc1,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,
+0xbe,0xbe,0xbe,0xbd,0xbd,0xbd,0xbc,0xbc,
+0xbc,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xb9,
+0xb9,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb6,
+0xb6,0xb6,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,
+0xb3,0xb3,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,
+0xb0,0xb0,0xb0,0xaf,0xaf,0xae,0xae,0xae,
+0xad,0xad,0xad,0xac,0xac,0xac,0xab,0xab,
+0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa8,
+0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa5,0xa5,
+0xa5,0xa4,0xa4,0xa3,0xa3,0xa3,0xa2,0xa2,
+0xa2,0xa1,0xa1,0xa0,0xa0,0xa0,0x9f,0x9f,
+0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9c,0x9c,
+0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x99,0x99,
+0x98,0x98,0x98,0x97,0x97,0x96,0x96,0x96,
+0x95,0x95,0x95,0x94,0x94,0x93,0x93,0x93,
+0x92,0x92,0x91,0x91,0x91,0x90,0x90,0x8f,
+0x8f,0x8f,0x8e,0x8e,0x8e,0x8d,0x8d,0x8c,
+0x8c,0x8c,0x8b,0x8b,0x8a,0x8a,0x8a,0x89,
+0x89,0x88,0x88,0x88,0x87,0x87,0x87,0x86,
+0x86,0x85,0x85,0x85,0x84,0x84,0x83,0x83,
+0x83,0x82,0x82,0x81,0x81,0x81,0x80,0x80,
+0x80,0x7f,0x7f,0x7e,0x7e,0x7e,0x7d,0x7d,
+0x7c,0x7c,0x7c,0x7b,0x7b,0x7a,0x7a,0x7a,
+0x79,0x79,0x78,0x78,0x78,0x77,0x77,0x77,
+0x76,0x76,0x75,0x75,0x75,0x74,0x74,0x73,
+0x73,0x73,0x72,0x72,0x71,0x71,0x71,0x70,
+0x70,0x70,0x6f,0x6f,0x6e,0x6e,0x6e,0x6d,
+0x6d,0x6c,0x6c,0x6c,0x6b,0x6b,0x6a,0x6a,
+0x6a,0x69,0x69,0x69,0x68,0x68,0x67,0x67,
+0x67,0x66,0x66,0x65,0x65,0x65,0x64,0x64,
+0x64,0x63,0x63,0x62,0x62,0x62,0x61,0x61,
+0x61,0x60,0x60,0x5f,0x5f,0x5f,0x5e,0x5e,
+0x5d,0x5d,0x5d,0x5c,0x5c,0x5c,0x5b,0x5b,
+0x5a,0x5a,0x5a,0x59,0x59,0x59,0x58,0x58,
+0x58,0x57,0x57,0x56,0x56,0x56,0x55,0x55,
+0x55,0x54,0x54,0x53,0x53,0x53,0x52,0x52,
+0x52,0x51,0x51,0x51,0x50,0x50,0x4f,0x4f,
+0x4f,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4c,
+0x4c,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x49,
+0x49,0x49,0x48,0x48,0x48,0x47,0x47,0x47,
+0x46,0x46,0x45,0x45,0x45,0x44,0x44,0x44,
+0x43,0x43,0x43,0x42,0x42,0x42,0x41,0x41,
+0x41,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3e,
+0x3e,0x3e,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,
+0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x39,0x39,
+0x39,0x38,0x38,0x38,0x37,0x37,0x37,0x36,
+0x36,0x36,0x35,0x35,0x35,0x34,0x34,0x34,
+0x34,0x33,0x33,0x33,0x32,0x32,0x32,0x31,
+0x31,0x31,0x30,0x30,0x30,0x30,0x2f,0x2f,
+0x2f,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,
+0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2a,0x2a,
+0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,0x28,
+0x28,0x27,0x27,0x27,0x26,0x26,0x26,0x26,
+0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x23,
+0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x21,
+0x21,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,
+0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,
+0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x17,
+0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
+0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x12,
+0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,
+0x11,0x10,0x10,0x10,0x10,0x10,0xf,0xf,
+0xf,0xf,0xf,0xf,0xe,0xe,0xe,0xe,
+0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xc,
+0xc,0xc,0xc,0xc,0xc,0xb,0xb,0xb,
+0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0x9,0x9,0x9,0x9,0x9,0x9,
+0x9,0x8,0x8,0x8,0x8,0x8,0x8,0x8,
+0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,
+0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6,
+0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,
+0x5,0x5,0x4,0x4,0x4,0x4,0x4,0x4,
+0x4,0x4,0x4,0x4,0x3,0x3,0x3,0x3,
+0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,
+0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,
+0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x1,
+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
+0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,
+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
+0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,
+0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,
+0x2,0x3,0x3,0x3,0x3,0x3,0x3,0x3,
+0x3,0x3,0x3,0x3,0x3,0x4,0x4,0x4,
+0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x5,
+0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,
+0x5,0x6,0x6,0x6,0x6,0x6,0x6,0x6,
+0x6,0x7,0x7,0x7,0x7,0x7,0x7,0x7,
+0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x8,
+0x9,0x9,0x9,0x9,0x9,0x9,0x9,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xb,0xb,
+0xb,0xb,0xb,0xb,0xc,0xc,0xc,0xc,
+0xc,0xc,0xd,0xd,0xd,0xd,0xd,0xd,
+0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,
+0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,
+0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
+0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x14,
+0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+0x17,0x17,0x18,0x18,0x18,0x18,0x19,0x19,
+0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,
+0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,
+0x1f,0x1f,0x1f,0x20,0x20,0x20,0x21,0x21,
+0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23,
+0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x25,
+0x25,0x26,0x26,0x26,0x26,0x27,0x27,0x27,
+0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,
+0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2c,0x2c,
+0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x31,
+0x31,0x31,0x32,0x32,0x32,0x33,0x33,0x33,
+0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36,
+0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,
+0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3b,0x3b,
+0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,
+0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,
+0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,
+0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x46,
+0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x49,
+0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,
+0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,
+0x4f,0x4f,0x4f,0x50,0x50,0x51,0x51,0x51,
+0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x54,
+0x55,0x55,0x55,0x56,0x56,0x56,0x57,0x57,
+0x58,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,
+0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,
+0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x60,
+0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x63,
+0x64,0x64,0x64,0x65,0x65,0x65,0x66,0x66,
+0x67,0x67,0x67,0x68,0x68,0x69,0x69,0x69,
+0x6a,0x6a,0x6a,0x6b,0x6b,0x6c,0x6c,0x6c,
+0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,
+0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x73,
+0x73,0x73,0x74,0x74,0x75,0x75,0x75,0x76,
+0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x79,
+0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,
+0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f
+};
\ No newline at end of file
#include "debug.h"
#include "backlight.h"
#include "keymap_midi.h"
+#include "bootloader.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
#include <stdio.h>
#include <inttypes.h>
#ifdef AUDIO_ENABLE
#include "audio.h"
-
- float goodbye[][2] = {
- {440.0*pow(2.0,(67)/12.0), 400},
- {0, 50},
- {440.0*pow(2.0,(60)/12.0), 400},
- {0, 50},
- {440.0*pow(2.0,(55)/12.0), 600},
- };
-#endif
+#endif /* AUDIO_ENABLE */
static action_t keycode_to_action(uint16_t keycode);
/* converts key to action */
action_t action_for_key(uint8_t layer, keypos_t key)
{
- // 16bit keycodes - important
+ // 16bit keycodes - important
uint16_t keycode = keymap_key_to_keycode(layer, key);
- if (keycode >= 0x0100 && keycode < 0x2000) {
- // Has a modifier
- action_t action;
- // Split it up
- action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key
- return action;
- } else if (keycode >= 0x2000 && keycode < 0x3000) {
- // Is a shortcut for function layer, pull last 12bits
- // This means we have 4,096 FN macros at our disposal
- return keymap_func_to_action(keycode & 0xFFF);
- } else if (keycode >= 0x3000 && keycode < 0x4000) {
- // When the code starts with 3, it's an action macro.
- action_t action;
- action.code = ACTION_MACRO(keycode & 0xFF);
- return action;
-#ifdef BACKLIGHT_ENABLE
- } else if (keycode >= BL_0 && keycode <= BL_15) {
- action_t action;
- action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F);
- return action;
- } else if (keycode == BL_DEC) {
- action_t action;
- action.code = ACTION_BACKLIGHT_DECREASE();
- return action;
- } else if (keycode == BL_INC) {
- action_t action;
- action.code = ACTION_BACKLIGHT_INCREASE();
- return action;
- } else if (keycode == BL_TOGG) {
- action_t action;
- action.code = ACTION_BACKLIGHT_TOGGLE();
- return action;
- } else if (keycode == BL_STEP) {
- action_t action;
- action.code = ACTION_BACKLIGHT_STEP();
- return action;
-#endif
- } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here
- clear_keyboard();
- #ifdef AUDIO_ENABLE
- play_notes(&goodbye, 5, false);
- #endif
- _delay_ms(250);
- #ifdef ATREUS_ASTAR
- *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific
- #endif
- bootloader_jump();
- return;
- } else if (keycode == DEBUG) { // DEBUG is 0x5001
- // TODO: Does this actually work?
- print("\nDEBUG: enabled.\n");
- debug_enable = true;
- return;
- } else if (keycode >= 0x5000 && keycode < 0x6000) {
- // Layer movement shortcuts
- // See .h to see constraints/usage
- int type = (keycode >> 0x8) & 0xF;
- if (type == 0x1) {
- // Layer set "GOTO"
- int when = (keycode >> 0x4) & 0x3;
- int layer = keycode & 0xF;
- action_t action;
- action.code = ACTION_LAYER_SET(layer, when);
- return action;
- } else if (type == 0x2) {
- // Momentary layer
- int layer = keycode & 0xFF;
- action_t action;
- action.code = ACTION_LAYER_MOMENTARY(layer);
- return action;
- } else if (type == 0x3) {
- // Set default layer
- int layer = keycode & 0xFF;
- action_t action;
- action.code = ACTION_DEFAULT_LAYER_SET(layer);
- return action;
- } else if (type == 0x4) {
- // Set default layer
- int layer = keycode & 0xFF;
- action_t action;
- action.code = ACTION_LAYER_TOGGLE(layer);
- return action;
- }
-#ifdef MIDI_ENABLE
- } else if (keycode >= 0x6000 && keycode < 0x7000) {
- action_t action;
- action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8);
- return action;
-#endif
- } else if (keycode >= 0x7000 && keycode < 0x8000) {
- action_t action;
- action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
- return action;
- } else if (keycode >= 0x8000 && keycode < 0x9000) {
- action_t action;
- action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
- return action;
-#ifdef UNICODE_ENABLE
- } else if (keycode >= 0x8000000) {
- action_t action;
- uint16_t unicode = keycode & ~(0x8000);
- action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8);
- return action;
-#endif
- } else {
-
- }
-
switch (keycode) {
case KC_FN0 ... KC_FN31:
return keymap_fn_to_action(keycode);
-#ifdef BOOTMAGIC_ENABLE
case KC_CAPSLOCK:
case KC_LOCKING_CAPS:
if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
return keycode_to_action(KC_BSLASH);
}
return keycode_to_action(KC_BSPACE);
-#endif
default:
return keycode_to_action(keycode);
}
case KC_TRNS:
action.code = ACTION_TRANSPARENT;
break;
+ case 0x0100 ... 0x1FFF: ;
+ // Has a modifier
+ // Split it up
+ action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key
+ break;
+ case 0x2000 ... 0x2FFF:
+ // Is a shortcut for function layer, pull last 12bits
+ // This means we have 4,096 FN macros at our disposal
+ return keymap_func_to_action(keycode & 0xFFF);
+ break;
+ case 0x3000 ... 0x3FFF: ;
+ // When the code starts with 3, it's an action macro.
+ action.code = ACTION_MACRO(keycode & 0xFF);
+ break;
+ #ifdef BACKLIGHT_ENABLE
+ case BL_0 ... BL_15:
+ action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F);
+ break;
+ case BL_DEC:
+ action.code = ACTION_BACKLIGHT_DECREASE();
+ break;
+ case BL_INC:
+ action.code = ACTION_BACKLIGHT_INCREASE();
+ break;
+ case BL_TOGG:
+ action.code = ACTION_BACKLIGHT_TOGGLE();
+ break;
+ case BL_STEP:
+ action.code = ACTION_BACKLIGHT_STEP();
+ break;
+ #endif
+ case RESET: ; // RESET is 0x5000, which is why this is here
+ clear_keyboard();
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ play_goodbye_tone();
+ #endif
+ _delay_ms(250);
+ #ifdef ATREUS_ASTAR
+ *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific
+ #endif
+ bootloader_jump();
+ break;
+ case DEBUG: ; // DEBUG is 0x5001
+ print("\nDEBUG: enabled.\n");
+ debug_enable = true;
+ break;
+ case 0x5002 ... 0x50FF:
+ // MAGIC actions (BOOTMAGIC without the boot)
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ /* keymap config */
+ keymap_config.raw = eeconfig_read_keymap();
+ if (keycode == MAGIC_SWAP_CONTROL_CAPSLOCK) {
+ keymap_config.swap_control_capslock = 1;
+ } else if (keycode == MAGIC_CAPSLOCK_TO_CONTROL) {
+ keymap_config.capslock_to_control = 1;
+ } else if (keycode == MAGIC_SWAP_LALT_LGUI) {
+ keymap_config.swap_lalt_lgui = 1;
+ } else if (keycode == MAGIC_SWAP_RALT_RGUI) {
+ keymap_config.swap_ralt_rgui = 1;
+ } else if (keycode == MAGIC_NO_GUI) {
+ keymap_config.no_gui = 1;
+ } else if (keycode == MAGIC_SWAP_GRAVE_ESC) {
+ keymap_config.swap_grave_esc = 1;
+ } else if (keycode == MAGIC_SWAP_BACKSLASH_BACKSPACE) {
+ keymap_config.swap_backslash_backspace = 1;
+ } else if (keycode == MAGIC_HOST_NKRO) {
+ keymap_config.nkro = 1;
+ } else if (keycode == MAGIC_SWAP_ALT_GUI) {
+ keymap_config.swap_lalt_lgui = 1;
+ keymap_config.swap_ralt_rgui = 1;
+ }
+ /* UNs */
+ else if (keycode == MAGIC_UNSWAP_CONTROL_CAPSLOCK) {
+ keymap_config.swap_control_capslock = 0;
+ } else if (keycode == MAGIC_UNCAPSLOCK_TO_CONTROL) {
+ keymap_config.capslock_to_control = 0;
+ } else if (keycode == MAGIC_UNSWAP_LALT_LGUI) {
+ keymap_config.swap_lalt_lgui = 0;
+ } else if (keycode == MAGIC_UNSWAP_RALT_RGUI) {
+ keymap_config.swap_ralt_rgui = 0;
+ } else if (keycode == MAGIC_UNNO_GUI) {
+ keymap_config.no_gui = 0;
+ } else if (keycode == MAGIC_UNSWAP_GRAVE_ESC) {
+ keymap_config.swap_grave_esc = 0;
+ } else if (keycode == MAGIC_UNSWAP_BACKSLASH_BACKSPACE) {
+ keymap_config.swap_backslash_backspace = 0;
+ } else if (keycode == MAGIC_UNHOST_NKRO) {
+ keymap_config.nkro = 0;
+ } else if (keycode == MAGIC_UNSWAP_ALT_GUI) {
+ keymap_config.swap_lalt_lgui = 0;
+ keymap_config.swap_ralt_rgui = 0;
+ }
+ eeconfig_update_keymap(keymap_config.raw);
+ break;
+ case 0x5100 ... 0x5FFF: ;
+ // Layer movement shortcuts
+ // See .h to see constraints/usage
+ int type = (keycode >> 0x8) & 0xF;
+ if (type == 0x1) {
+ // Layer set "GOTO"
+ int when = (keycode >> 0x4) & 0x3;
+ int layer = keycode & 0xF;
+ action.code = ACTION_LAYER_SET(layer, when);
+ } else if (type == 0x2) {
+ // Momentary layer
+ int layer = keycode & 0xFF;
+ action.code = ACTION_LAYER_MOMENTARY(layer);
+ } else if (type == 0x3) {
+ // Set default layer
+ int layer = keycode & 0xFF;
+ action.code = ACTION_DEFAULT_LAYER_SET(layer);
+ } else if (type == 0x4) {
+ // Set default layer
+ int layer = keycode & 0xFF;
+ action.code = ACTION_LAYER_TOGGLE(layer);
+ }
+ break;
+ #ifdef MIDI_ENABLE
+ case 0x6000 ... 0x6FFF:
+ action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8);
+ break;
+ #endif
+ case 0x7000 ... 0x7FFF:
+ action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
+ break;
+ case 0x8000 ... 0x8FFF:
+ action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
+ break;
+ #ifdef UNICODE_ENABLE
+ case 0x8000000 ... 0x8FFFFFF:
+ uint16_t unicode = keycode & ~(0x8000);
+ action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8);
+ break;
+ #endif
default:
action.code = ACTION_NO;
break;
/* translates key to keycode */
uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
- // Read entire word (16bits)
+ // Read entire word (16bits)
return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
}
action_t keymap_func_to_action(uint16_t keycode)
{
- // For FUNC without 8bit limit
+ // For FUNC without 8bit limit
return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };
}
+
+void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
// #include "print.h"
#include "debug.h"
-#ifdef BOOTMAGIC_ENABLE
/* NOTE: Not portable. Bit field order depends on implementation */
typedef union {
uint16_t raw;
bool nkro:1;
};
} keymap_config_t;
-keymap_config_t keymap_config;
-#endif
/* translates key to keycode */
#define RESET 0x5000
#define DEBUG 0x5001
+// MAGIC keycodes
+#define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002
+#define MAGIC_UNSWAP_CONTROL_CAPSLOCK 0x5003
+#define MAGIC_CAPSLOCK_TO_CONTROL 0x5004
+#define MAGIC_UNCAPSLOCK_TO_CONTROL 0x5005
+#define MAGIC_SWAP_LALT_LGUI 0x5006
+#define MAGIC_UNSWAP_LALT_LGUI 0x5007
+#define MAGIC_SWAP_RALT_RGUI 0x5008
+#define MAGIC_UNSWAP_RALT_RGUI 0x5009
+#define MAGIC_NO_GUI 0x500a
+#define MAGIC_UNNO_GUI 0x500b
+#define MAGIC_SWAP_GRAVE_ESC 0x500c
+#define MAGIC_UNSWAP_GRAVE_ESC 0x500d
+#define MAGIC_SWAP_BACKSLASH_BACKSPACE 0x500e
+#define MAGIC_UNSWAP_BACKSLASH_BACKSPACE 0x500f
+#define MAGIC_HOST_NKRO 0x5010
+#define MAGIC_UNHOST_NKRO 0x5011
+#define MAGIC_SWAP_ALT_GUI 0x5012
+#define MAGIC_UNSWAP_ALT_GUI 0x5013
+
+#define AG_SWAP MAGIC_SWAP_ALT_GUI
+#define AG_NORM MAGIC_UNSWAP_ALT_GUI
+
+
// GOTO layer - 16 layers max
// when:
// ON_PRESS = 1
// Toggle to layer - 256 layer max
#define TG(layer) (layer | 0x5400)
-#define MIDI(n) (n | 0x6000)
-
// M-od, T-ap - 256 keycode max
#define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8))
#define CTL_T(kc) MT(0x1, kc)
#define GUI_T(kc) MT(0x8, kc)
#define C_S_T(kc) MT(0x3, kc) // Control + Shift e.g. for gnome-terminal
#define MEH_T(kc) MT(0x7, kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl
-#define LCAG_T(kc) MT(0xD, kc) // Left control alt and gui
+#define LCAG_T(kc) MT(0xD, kc) // Left control alt and gui
#define ALL_T(kc) MT(0xF, kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
#define UNICODE(n) (n | 0x8000)
#define UC(n) UNICODE(n)
+// For tri-layer
+void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3);
+#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer)))
+#define IS_LAYER_OFF(layer) (~layer_state & (1UL << (layer)))
+
#endif
// Alt gr
// normal characters
-#define DE_Z KC_Y
-#define DE_Y KC_Z
+#define DE_OSX_Z KC_Y
+#define DE_OSX_Y KC_Z
-#define DE_A KC_A
-#define DE_B KC_B
-#define DE_C KC_C
-#define DE_D KC_D
-#define DE_E KC_E
-#define DE_F KC_F
-#define DE_G KC_G
-#define DE_H KC_H
-#define DE_I KC_I
-#define DE_J KC_J
-#define DE_K KC_K
-#define DE_L KC_L
-#define DE_M KC_M
-#define DE_N KC_N
-#define DE_O KC_O
-#define DE_P KC_P
-#define DE_Q KC_Q
-#define DE_R KC_R
-#define DE_S KC_S
-#define DE_T KC_T
-#define DE_U KC_U
-#define DE_V KC_V
-#define DE_W KC_W
-#define DE_X KC_X
+#define DE_OSX_A KC_A
+#define DE_OSX_B KC_B
+#define DE_OSX_C KC_C
+#define DE_OSX_D KC_D
+#define DE_OSX_E KC_E
+#define DE_OSX_F KC_F
+#define DE_OSX_G KC_G
+#define DE_OSX_H KC_H
+#define DE_OSX_I KC_I
+#define DE_OSX_J KC_J
+#define DE_OSX_K KC_K
+#define DE_OSX_L KC_L
+#define DE_OSX_M KC_M
+#define DE_OSX_N KC_N
+#define DE_OSX_O KC_O
+#define DE_OSX_P KC_P
+#define DE_OSX_Q KC_Q
+#define DE_OSX_R KC_R
+#define DE_OSX_S KC_S
+#define DE_OSX_T KC_T
+#define DE_OSX_U KC_U
+#define DE_OSX_V KC_V
+#define DE_OSX_W KC_W
+#define DE_OSX_X KC_X
-#define DE_0 KC_0
-#define DE_1 KC_1
-#define DE_2 KC_2
-#define DE_3 KC_3
-#define DE_4 KC_4
-#define DE_5 KC_5
-#define DE_6 KC_6
-#define DE_7 KC_7
-#define DE_8 KC_8
-#define DE_9 KC_9
+#define DE_OSX_0 KC_0
+#define DE_OSX_1 KC_1
+#define DE_OSX_2 KC_2
+#define DE_OSX_3 KC_3
+#define DE_OSX_4 KC_4
+#define DE_OSX_5 KC_5
+#define DE_OSX_6 KC_6
+#define DE_OSX_7 KC_7
+#define DE_OSX_8 KC_8
+#define DE_OSX_9 KC_9
-#define DE_DOT KC_DOT
-#define DE_COMM KC_COMM
+#define DE_OSX_DOT KC_DOT
+#define DE_OSX_COMM KC_COMM
-#define DE_SS KC_MINS
-#define DE_AE KC_QUOT
-#define DE_UE KC_LBRC
-#define DE_OE KC_SCLN
+#define DE_OSX_SS KC_MINS
+#define DE_OSX_AE KC_QUOT
+#define DE_OSX_UE KC_LBRC
+#define DE_OSX_OE KC_SCLN
-#define DE_CIRC KC_NUBS // accent circumflex ^ and ring °
-#define DE_ACUT KC_EQL // accent acute ´ and grave `
-#define DE_PLUS KC_RBRC // + and * and ~
-#define DE_HASH KC_BSLS // # and '
-#define DE_LESS KC_GRV // < and > and |
-#define DE_MINS KC_SLSH // - and _
+#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
+#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
+#define DE_OSX_PLUS KC_RBRC // + and * and ~
+#define DE_OSX_HASH KC_BSLS // # and '
+#define DE_OSX_LESS KC_GRV // < and > and |
+#define DE_OSX_MINS KC_SLSH // - and _
// shifted characters
-#define DE_RING LSFT(DE_CIRC) // °
-#define DE_EXLM LSFT(KC_1) // !
-#define DE_DQOT LSFT(KC_2) // "
-#define DE_PARA LSFT(KC_3) // §
-#define DE_DLR LSFT(KC_4) // $
-#define DE_PERC LSFT(KC_5) // %
-#define DE_AMPR LSFT(KC_6) // &
-#define DE_SLSH LSFT(KC_7) // /
-#define DE_LPRN LSFT(KC_8) // (
-#define DE_RPRN LSFT(KC_9) // )
-#define DE_EQL LSFT(KC_0) // =
-#define DE_QST LSFT(DE_SS) // ?
-#define DE_GRV LSFT(DE_ACUT) // `
-#define DE_ASTR LSFT(DE_PLUS) // *
-#define DE_QUOT LSFT(DE_HASH) // '
-#define DE_MORE LSFT(DE_LESS) // >
-#define DE_COLN LSFT(KC_DOT) // :
-#define DE_SCLN LSFT(KC_COMM) // ;
-#define DE_UNDS LSFT(DE_MINS) // _
+#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
+#define DE_OSX_EXLM LSFT(KC_1) // !
+#define DE_OSX_DQOT LSFT(KC_2) // "
+#define DE_OSX_PARA LSFT(KC_3) // §
+#define DE_OSX_DLR LSFT(KC_4) // $
+#define DE_OSX_PERC LSFT(KC_5) // %
+#define DE_OSX_AMPR LSFT(KC_6) // &
+#define DE_OSX_SLSH LSFT(KC_7) // /
+#define DE_OSX_LPRN LSFT(KC_8) // (
+#define DE_OSX_RPRN LSFT(KC_9) // )
+#define DE_OSX_EQL LSFT(KC_0) // =
+#define DE_OSX_QST LSFT(DE_OSX_SS) // ?
+#define DE_OSX_GRV LSFT(DE_OSX_ACUT) // `
+#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
+#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
+#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
+#define DE_OSX_COLN LSFT(KC_DOT) // :
+#define DE_OSX_SCLN LSFT(KC_COMM) // ;
+#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
// Alt-ed characters
-#define DE_SQ2 LALT(KC_2) // ²
-#define DE_SQ3 LALT(KC_3) // ³
-#define DE_LCBR LALT(KC_8) // {
-#define DE_LBRC LALT(KC_5) // [
-#define DE_RBRC LALT(KC_6) // ]
-#define DE_RCBR LALT(KC_9) // }
-#define DE_BSLS LALT(LSFT(KC_7)) // backslash
-#define DE_AT LALT(DE_L) // @
-#define DE_EURO LALT(KC_E) // €
-#define DE_TILD LALT(DE_N) // ~
-#define DE_PIPE LALT(DE_7) // |
+//#define DE_OSX_SQ2 LALT(KC_2) // ²
+//#define DE_OSX_SQ3 LALT(KC_3) // ³
+#define DE_OSX_LCBR LALT(KC_8) // {
+#define DE_OSX_LBRC LALT(KC_5) // [
+#define DE_OSX_RBRC LALT(KC_6) // ]
+#define DE_OSX_RCBR LALT(KC_9) // }
+#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
+#define DE_OSX_AT LALT(DE_OSX_L) // @
+#define DE_OSX_EURO LALT(KC_E) // €
+#define DE_OSX_TILD LALT(DE_OSX_N) // ~
+#define DE_OSX_PIPE LALT(DE_OSX_7) // |
#endif
--- /dev/null
+#ifndef KEYMAP_PLOVER_H
+#define KEYMAP_PLOVER_H
+
+#include "keymap_common.h"
+
+#define PV_NUM KC_1
+#define PV_LS KC_Q
+#define PV_LT KC_W
+#define PV_LP KC_E
+#define PV_LH KC_R
+#define PV_LK KC_S
+#define PV_LW KC_D
+#define PV_LR KC_F
+
+#define PV_STAR KC_Y
+#define PV_RF KC_U
+#define PV_RP KC_I
+#define PV_RL KC_O
+#define PV_RT KC_P
+#define PV_RD KC_LBRC
+#define PV_RR KC_J
+#define PV_RB KC_K
+#define PV_RG KC_L
+#define PV_RS KC_SCLN
+#define PV_RZ KC_QUOT
+
+#define PV_A KC_C
+#define PV_O KC_V
+#define PV_E KC_N
+#define PV_U KC_M
+
+#endif
if (record->event.pressed) {
// midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
- midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
+ // midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
} else {
// midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
- midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
+ // midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
}
}
\ No newline at end of file
#include <lufa.h>
-#define MIDI 0x6000
+#define MIDI(n) ((n) | 0x6000)
#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000
#define CHNL(note, channel) (note + (channel << 8))
}
+__attribute__ ((weak))
void led_set(uint8_t usb_led)
{
SRC += $(QUANTUM_DIR)/matrix.c
endif
-ifdef MIDI_ENABLE
+ifeq ($(strip $(MIDI_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/keymap_midi.c
endif
-ifdef AUDIO_ENABLE
- SRC += $(QUANTUM_DIR)/audio.c
+ifeq ($(strip $(AUDIO_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/voices.c
endif
-ifdef UNICODE_ENABLE
+ifeq ($(strip $(UNICODE_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/keymap_unicode.c
endif
-ifdef RGBLIGHT_ENABLE
+ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/light_ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
OPT_DEFS += -DRGBLIGHT_ENABLE
# Search Path
VPATH += $(TOP_DIR)/$(QUANTUM_DIR)
+VPATH += $(TOP_DIR)/$(QUANTUM_DIR)/keymap_extras
+VPATH += $(TOP_DIR)/$(QUANTUM_DIR)/audio
include $(TMK_DIR)/protocol/lufa.mk
uint32_t eeconfig_read_rgblight(void) {
return eeprom_read_dword(EECONFIG_RGBLIGHT);
}
-void eeconfig_write_rgblight(uint32_t val) {
- eeprom_write_dword(EECONFIG_RGBLIGHT, val);
+void eeconfig_update_rgblight(uint32_t val) {
+ eeprom_update_dword(EECONFIG_RGBLIGHT, val);
}
-void eeconfig_write_rgblight_default(void) {
- dprintf("eeconfig_write_rgblight_default\n");
+void eeconfig_update_rgblight_default(void) {
+ dprintf("eeconfig_update_rgblight_default\n");
rgblight_config.enable = 1;
rgblight_config.mode = 1;
rgblight_config.hue = 200;
rgblight_config.sat = 204;
rgblight_config.val = 204;
- eeconfig_write_rgblight(rgblight_config.raw);
+ eeconfig_update_rgblight(rgblight_config.raw);
}
void eeconfig_debug_rgblight(void) {
dprintf("rgblight_config eprom\n");
if (!eeconfig_is_enabled()) {
dprintf("rgblight_init eeconfig is not enabled.\n");
eeconfig_init();
- eeconfig_write_rgblight_default();
+ eeconfig_update_rgblight_default();
}
rgblight_config.raw = eeconfig_read_rgblight();
if (!rgblight_config.mode) {
dprintf("rgblight_init rgblight_config.mode = 0. Write default values to EEPROM.\n");
- eeconfig_write_rgblight_default();
+ eeconfig_update_rgblight_default();
rgblight_config.raw = eeconfig_read_rgblight();
}
eeconfig_debug_rgblight(); // display current eeprom values
} else {
rgblight_config.mode = mode;
}
- eeconfig_write_rgblight(rgblight_config.raw);
- dprintf("rgblight mode: %u\n", rgblight_config.mode);
+ eeconfig_update_rgblight(rgblight_config.raw);
+ xprintf("rgblight mode: %u\n", rgblight_config.mode);
if (rgblight_config.mode == 1) {
rgblight_timer_disable();
} else if (rgblight_config.mode >=2 && rgblight_config.mode <=23) {
void rgblight_toggle(void) {
rgblight_config.enable ^= 1;
- eeconfig_write_rgblight(rgblight_config.raw);
- dprintf("rgblight toggle: rgblight_config.enable = %u\n", rgblight_config.enable);
+ eeconfig_update_rgblight(rgblight_config.raw);
+ xprintf("rgblight toggle: rgblight_config.enable = %u\n", rgblight_config.enable);
if (rgblight_config.enable) {
rgblight_mode(rgblight_config.mode);
} else {
rgblight_config.hue = hue;
rgblight_config.sat = sat;
rgblight_config.val = val;
- eeconfig_write_rgblight(rgblight_config.raw);
- dprintf("rgblight set hsv [EEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
+ eeconfig_update_rgblight(rgblight_config.raw);
+ xprintf("rgblight set hsv [EEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
}
}
#define EECONFIG_RGBLIGHT (uint8_t *)7
uint32_t eeconfig_read_rgblight(void);
-void eeconfig_write_rgblight(uint32_t val);
-void eeconfig_write_rgblight_default(void);
+void eeconfig_update_rgblight(uint32_t val);
+void eeconfig_update_rgblight_default(void);
void eeconfig_debug_rgblight(void);
void sethsv(uint16_t hue, uint8_t sat, uint8_t val, struct cRGB *led1);
# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+# 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 = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB 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 = YES # MIDI controls
-# UNICODE_ENABLE = YES # Unicode
-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+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 = no # 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
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` and see keymap document (you can find in top README.md) and existent keymap files.
+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:
```
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
-// Planck PCB default pin-out
-// Change this to how you wired your keyboard
-// COLS: Left to right, ROWS: Top to bottom
+/*
+ * 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 COLS (int []){ F1, F0, B0 }
#define ROWS (int []){ D0, D5 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
-/* define if matrix has ghost */
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
#define BACKLIGHT_LEVELS 3
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/* key combination for command */
+/*
+ * 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.
// leave this function blank - it can be defined in a keymap file
}
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {
+ // leave this function blank - it can be defined in a keymap file
+}
+
__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
-
+
matrix_init_user();
}
void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
matrix_scan_user();
}
+void process_action_kb(keyrecord_t *record) {
+ // put your per-action keyboard code here
+ // runs for every action, just before processing by the firmware
+
+ 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);
-}
\ No newline at end of file
+}
+
+#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
#include "matrix.h"
#include "keymap_common.h"
-#include "backlight.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+#include <avr/io.h>
#include <stddef.h>
// This a shortcut to help you visually see your layout.
{ \
{ k00, k01, k02 }, \
{ k10, KC_NO, k11 }, \
-}
+}
void matrix_init_user(void);
void matrix_scan_user(void);
+void process_action_user(keyrecord_t *record);
void led_set_user(uint8_t usb_led);
-#endif
\ No newline at end of file
+#endif
--- /dev/null
+`eeprom_reset.hex` is to reset the eeprom on the Atmega32u4, like this:
+
+ dfu-programmer atmega32u4 erase
+ dfu-programmer atmega32u4 flash --eeprom eeprom-reset.bin
+
+ You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom.
\ No newline at end of file
--- /dev/null
+:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:00000001FF
+++ /dev/null
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <avr/pgmspace.h>
-
-#define SINE_LENGTH 2048
-
-const uint8_t sinewave[] PROGMEM= //2048 values
-{
-0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,
-0x83,0x83,0x83,0x84,0x84,0x85,0x85,0x85,
-0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x88,
-0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,
-0x8c,0x8c,0x8d,0x8d,0x8e,0x8e,0x8e,0x8f,
-0x8f,0x8f,0x90,0x90,0x91,0x91,0x91,0x92,
-0x92,0x93,0x93,0x93,0x94,0x94,0x95,0x95,
-0x95,0x96,0x96,0x96,0x97,0x97,0x98,0x98,
-0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9b,
-0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,
-0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,
-0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,
-0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,
-0xa7,0xa8,0xa8,0xa9,0xa9,0xa9,0xaa,0xaa,
-0xaa,0xab,0xab,0xac,0xac,0xac,0xad,0xad,
-0xad,0xae,0xae,0xae,0xaf,0xaf,0xb0,0xb0,
-0xb0,0xb1,0xb1,0xb1,0xb2,0xb2,0xb2,0xb3,
-0xb3,0xb4,0xb4,0xb4,0xb5,0xb5,0xb5,0xb6,
-0xb6,0xb6,0xb7,0xb7,0xb7,0xb8,0xb8,0xb8,
-0xb9,0xb9,0xba,0xba,0xba,0xbb,0xbb,0xbb,
-0xbc,0xbc,0xbc,0xbd,0xbd,0xbd,0xbe,0xbe,
-0xbe,0xbf,0xbf,0xbf,0xc0,0xc0,0xc0,0xc1,
-0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc3,
-0xc4,0xc4,0xc4,0xc5,0xc5,0xc5,0xc6,0xc6,
-0xc6,0xc7,0xc7,0xc7,0xc8,0xc8,0xc8,0xc9,
-0xc9,0xc9,0xca,0xca,0xca,0xcb,0xcb,0xcb,
-0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,
-0xce,0xce,0xcf,0xcf,0xcf,0xcf,0xd0,0xd0,
-0xd0,0xd1,0xd1,0xd1,0xd2,0xd2,0xd2,0xd2,
-0xd3,0xd3,0xd3,0xd4,0xd4,0xd4,0xd5,0xd5,
-0xd5,0xd5,0xd6,0xd6,0xd6,0xd7,0xd7,0xd7,
-0xd7,0xd8,0xd8,0xd8,0xd9,0xd9,0xd9,0xd9,
-0xda,0xda,0xda,0xda,0xdb,0xdb,0xdb,0xdc,
-0xdc,0xdc,0xdc,0xdd,0xdd,0xdd,0xdd,0xde,
-0xde,0xde,0xde,0xdf,0xdf,0xdf,0xe0,0xe0,
-0xe0,0xe0,0xe1,0xe1,0xe1,0xe1,0xe2,0xe2,
-0xe2,0xe2,0xe3,0xe3,0xe3,0xe3,0xe4,0xe4,
-0xe4,0xe4,0xe4,0xe5,0xe5,0xe5,0xe5,0xe6,
-0xe6,0xe6,0xe6,0xe7,0xe7,0xe7,0xe7,0xe8,
-0xe8,0xe8,0xe8,0xe8,0xe9,0xe9,0xe9,0xe9,
-0xea,0xea,0xea,0xea,0xea,0xeb,0xeb,0xeb,
-0xeb,0xeb,0xec,0xec,0xec,0xec,0xec,0xed,
-0xed,0xed,0xed,0xed,0xee,0xee,0xee,0xee,
-0xee,0xef,0xef,0xef,0xef,0xef,0xf0,0xf0,
-0xf0,0xf0,0xf0,0xf0,0xf1,0xf1,0xf1,0xf1,
-0xf1,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf3,
-0xf3,0xf3,0xf3,0xf3,0xf3,0xf4,0xf4,0xf4,
-0xf4,0xf4,0xf4,0xf5,0xf5,0xf5,0xf5,0xf5,
-0xf5,0xf5,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
-0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
-0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
-0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
-0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
-0xfa,0xfa,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,
-0xfb,0xfb,0xfb,0xfb,0xfc,0xfc,0xfc,0xfc,
-0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
-0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe,
-0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
-0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
-0xfe,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,
-0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
-0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
-0xfe,0xfe,0xfe,0xfd,0xfd,0xfd,0xfd,0xfd,
-0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
-0xfd,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xfc,0xfc,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,
-0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfa,
-0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
-0xfa,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
-0xf9,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
-0xf8,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
-0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf5,
-0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf4,0xf4,
-0xf4,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf3,
-0xf3,0xf3,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,
-0xf1,0xf1,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,
-0xf0,0xf0,0xf0,0xef,0xef,0xef,0xef,0xef,
-0xee,0xee,0xee,0xee,0xee,0xed,0xed,0xed,
-0xed,0xed,0xec,0xec,0xec,0xec,0xec,0xeb,
-0xeb,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xea,
-0xea,0xe9,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,
-0xe8,0xe8,0xe7,0xe7,0xe7,0xe7,0xe6,0xe6,
-0xe6,0xe6,0xe5,0xe5,0xe5,0xe5,0xe4,0xe4,
-0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe3,0xe2,
-0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe1,0xe0,
-0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,
-0xde,0xde,0xdd,0xdd,0xdd,0xdd,0xdc,0xdc,
-0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,
-0xda,0xd9,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,
-0xd7,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,
-0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,
-0xd3,0xd2,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,
-0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xcf,0xce,
-0xce,0xce,0xcd,0xcd,0xcd,0xcc,0xcc,0xcc,
-0xcb,0xcb,0xcb,0xcb,0xca,0xca,0xca,0xc9,
-0xc9,0xc9,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7,
-0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc4,0xc4,
-0xc4,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc1,
-0xc1,0xc1,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,
-0xbe,0xbe,0xbe,0xbd,0xbd,0xbd,0xbc,0xbc,
-0xbc,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xb9,
-0xb9,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb6,
-0xb6,0xb6,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,
-0xb3,0xb3,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,
-0xb0,0xb0,0xb0,0xaf,0xaf,0xae,0xae,0xae,
-0xad,0xad,0xad,0xac,0xac,0xac,0xab,0xab,
-0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa8,
-0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa5,0xa5,
-0xa5,0xa4,0xa4,0xa3,0xa3,0xa3,0xa2,0xa2,
-0xa2,0xa1,0xa1,0xa0,0xa0,0xa0,0x9f,0x9f,
-0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9c,0x9c,
-0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x99,0x99,
-0x98,0x98,0x98,0x97,0x97,0x96,0x96,0x96,
-0x95,0x95,0x95,0x94,0x94,0x93,0x93,0x93,
-0x92,0x92,0x91,0x91,0x91,0x90,0x90,0x8f,
-0x8f,0x8f,0x8e,0x8e,0x8e,0x8d,0x8d,0x8c,
-0x8c,0x8c,0x8b,0x8b,0x8a,0x8a,0x8a,0x89,
-0x89,0x88,0x88,0x88,0x87,0x87,0x87,0x86,
-0x86,0x85,0x85,0x85,0x84,0x84,0x83,0x83,
-0x83,0x82,0x82,0x81,0x81,0x81,0x80,0x80,
-0x80,0x7f,0x7f,0x7e,0x7e,0x7e,0x7d,0x7d,
-0x7c,0x7c,0x7c,0x7b,0x7b,0x7a,0x7a,0x7a,
-0x79,0x79,0x78,0x78,0x78,0x77,0x77,0x77,
-0x76,0x76,0x75,0x75,0x75,0x74,0x74,0x73,
-0x73,0x73,0x72,0x72,0x71,0x71,0x71,0x70,
-0x70,0x70,0x6f,0x6f,0x6e,0x6e,0x6e,0x6d,
-0x6d,0x6c,0x6c,0x6c,0x6b,0x6b,0x6a,0x6a,
-0x6a,0x69,0x69,0x69,0x68,0x68,0x67,0x67,
-0x67,0x66,0x66,0x65,0x65,0x65,0x64,0x64,
-0x64,0x63,0x63,0x62,0x62,0x62,0x61,0x61,
-0x61,0x60,0x60,0x5f,0x5f,0x5f,0x5e,0x5e,
-0x5d,0x5d,0x5d,0x5c,0x5c,0x5c,0x5b,0x5b,
-0x5a,0x5a,0x5a,0x59,0x59,0x59,0x58,0x58,
-0x58,0x57,0x57,0x56,0x56,0x56,0x55,0x55,
-0x55,0x54,0x54,0x53,0x53,0x53,0x52,0x52,
-0x52,0x51,0x51,0x51,0x50,0x50,0x4f,0x4f,
-0x4f,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4c,
-0x4c,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x49,
-0x49,0x49,0x48,0x48,0x48,0x47,0x47,0x47,
-0x46,0x46,0x45,0x45,0x45,0x44,0x44,0x44,
-0x43,0x43,0x43,0x42,0x42,0x42,0x41,0x41,
-0x41,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3e,
-0x3e,0x3e,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,
-0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x39,0x39,
-0x39,0x38,0x38,0x38,0x37,0x37,0x37,0x36,
-0x36,0x36,0x35,0x35,0x35,0x34,0x34,0x34,
-0x34,0x33,0x33,0x33,0x32,0x32,0x32,0x31,
-0x31,0x31,0x30,0x30,0x30,0x30,0x2f,0x2f,
-0x2f,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,
-0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2a,0x2a,
-0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,0x28,
-0x28,0x27,0x27,0x27,0x26,0x26,0x26,0x26,
-0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x23,
-0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x21,
-0x21,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,
-0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
-0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,
-0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x17,
-0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
-0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
-0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x12,
-0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,
-0x11,0x10,0x10,0x10,0x10,0x10,0xf,0xf,
-0xf,0xf,0xf,0xf,0xe,0xe,0xe,0xe,
-0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xc,
-0xc,0xc,0xc,0xc,0xc,0xb,0xb,0xb,
-0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0x9,0x9,0x9,0x9,0x9,0x9,
-0x9,0x8,0x8,0x8,0x8,0x8,0x8,0x8,
-0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,
-0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6,
-0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,
-0x5,0x5,0x4,0x4,0x4,0x4,0x4,0x4,
-0x4,0x4,0x4,0x4,0x3,0x3,0x3,0x3,
-0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,
-0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,
-0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x1,
-0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
-0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
-0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,
-0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
-0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
-0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,
-0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,
-0x2,0x3,0x3,0x3,0x3,0x3,0x3,0x3,
-0x3,0x3,0x3,0x3,0x3,0x4,0x4,0x4,
-0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x5,
-0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,
-0x5,0x6,0x6,0x6,0x6,0x6,0x6,0x6,
-0x6,0x7,0x7,0x7,0x7,0x7,0x7,0x7,
-0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x8,
-0x9,0x9,0x9,0x9,0x9,0x9,0x9,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xb,0xb,
-0xb,0xb,0xb,0xb,0xc,0xc,0xc,0xc,
-0xc,0xc,0xd,0xd,0xd,0xd,0xd,0xd,
-0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,
-0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,
-0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
-0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x14,
-0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
-0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
-0x17,0x17,0x18,0x18,0x18,0x18,0x19,0x19,
-0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,
-0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,
-0x1f,0x1f,0x1f,0x20,0x20,0x20,0x21,0x21,
-0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23,
-0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x25,
-0x25,0x26,0x26,0x26,0x26,0x27,0x27,0x27,
-0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,
-0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2c,0x2c,
-0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
-0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x31,
-0x31,0x31,0x32,0x32,0x32,0x33,0x33,0x33,
-0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36,
-0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,
-0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3b,0x3b,
-0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,
-0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,
-0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,
-0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x46,
-0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x49,
-0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,
-0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,
-0x4f,0x4f,0x4f,0x50,0x50,0x51,0x51,0x51,
-0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x54,
-0x55,0x55,0x55,0x56,0x56,0x56,0x57,0x57,
-0x58,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,
-0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,
-0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x60,
-0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x63,
-0x64,0x64,0x64,0x65,0x65,0x65,0x66,0x66,
-0x67,0x67,0x67,0x68,0x68,0x69,0x69,0x69,
-0x6a,0x6a,0x6a,0x6b,0x6b,0x6c,0x6c,0x6c,
-0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,
-0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x73,
-0x73,0x73,0x74,0x74,0x75,0x75,0x75,0x76,
-0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x79,
-0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,
-0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f
-};
\ No newline at end of file
# Option modules
-ifdef BOOTMAGIC_ENABLE
+ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes)
SRC += $(COMMON_DIR)/bootmagic.c
SRC += $(COMMON_DIR)/avr/eeconfig.c
OPT_DEFS += -DBOOTMAGIC_ENABLE
+else
+ SRC += $(COMMON_DIR)/magic.c
+ SRC += $(COMMON_DIR)/avr/eeconfig.c
endif
-ifdef MOUSEKEY_ENABLE
+ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
SRC += $(COMMON_DIR)/mousekey.c
OPT_DEFS += -DMOUSEKEY_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
endif
-ifdef EXTRAKEY_ENABLE
+ifeq ($(strip $(EXTRAKEY_ENABLE)), yes)
OPT_DEFS += -DEXTRAKEY_ENABLE
endif
-ifdef CONSOLE_ENABLE
+ifeq ($(strip $(CONSOLE_ENABLE)), yes)
OPT_DEFS += -DCONSOLE_ENABLE
else
OPT_DEFS += -DNO_PRINT
OPT_DEFS += -DNO_DEBUG
endif
-ifdef COMMAND_ENABLE
+ifeq ($(strip $(COMMAND_ENABLE)), yes)
SRC += $(COMMON_DIR)/command.c
OPT_DEFS += -DCOMMAND_ENABLE
endif
-ifdef NKRO_ENABLE
+ifeq ($(strip $(NKRO_ENABLE)), yes)
OPT_DEFS += -DNKRO_ENABLE
endif
-ifdef MIDI_ENABLE
+ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
endif
-ifdef AUDIO_ENABLE
+ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
endif
-ifdef USB_6KRO_ENABLE
+ifeq ($(strip $(USB_6KRO_ENABLE)), yes)
OPT_DEFS += -DUSB_6KRO_ENABLE
endif
-ifdef SLEEP_LED_ENABLE
+ifeq ($(strip $(SLEEP_LED_ENABLE)), yes)
SRC += $(COMMON_DIR)/sleep_led.c
OPT_DEFS += -DSLEEP_LED_ENABLE
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
endif
-ifdef BACKLIGHT_ENABLE
+ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
SRC += $(COMMON_DIR)/backlight.c
+ SRC += $(COMMON_DIR)/avr/eeconfig.c
OPT_DEFS += -DBACKLIGHT_ENABLE
endif
-ifdef BLUETOOTH_ENABLE
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
OPT_DEFS += -DBLUETOOTH_ENABLE
endif
-ifdef KEYMAP_SECTION_ENABLE
+ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes)
OPT_DEFS += -DKEYMAP_SECTION_ENABLE
ifeq ($(strip $(MCU)),atmega32u2)
#endif
}
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+bool disable_action_cache = false;
+
+void process_action_nocache(keyrecord_t *record)
+{
+ disable_action_cache = true;
+ process_action(record);
+ disable_action_cache = false;
+}
+#else
+void process_action_nocache(keyrecord_t *record)
+{
+ process_action(record);
+}
+#endif
+
+__attribute__ ((weak))
+void process_action_kb(keyrecord_t *record) {}
+
void process_action(keyrecord_t *record)
{
keyevent_t event = record->event;
if (IS_NOEVENT(event)) { return; }
- action_t action = layer_switch_get_action(event.key);
+ process_action_kb(record);
+
+ action_t action = store_or_get_action(event.pressed, event.key);
dprint("ACTION: "); debug_action(action);
#ifndef NO_ACTION_LAYER
dprint(" layer_state: "); layer_debug();
action.key.mods<<4;
if (event.pressed) {
if (mods) {
- add_weak_mods(mods);
+ if (IS_MOD(action.key.code)) {
+ // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless.
+ // this also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT)
+ add_mods(mods);
+ } else {
+ add_weak_mods(mods);
+ }
send_keyboard_report();
}
register_code(action.key.code);
} else {
unregister_code(action.key.code);
if (mods) {
- del_weak_mods(mods);
+ if (IS_MOD(action.key.code)) {
+ del_mods(mods);
+ } else {
+ del_weak_mods(mods);
+ }
send_keyboard_report();
}
}
/* user defined special function */
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt);
+/* keyboard-specific key event (pre)processing */
+void process_action_kb(keyrecord_t *record);
+
/* Utilities for actions. */
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+extern bool disable_action_cache;
+#endif
+void process_action_nocache(keyrecord_t *record);
void process_action(keyrecord_t *record);
void register_code(uint8_t code);
void unregister_code(uint8_t code);
#define ACTION_BACKLIGHT_DECREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_DECREASE << 8)
#define ACTION_BACKLIGHT_TOGGLE() ACTION(ACT_BACKLIGHT, BACKLIGHT_TOGGLE << 8)
#define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8)
-#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | level)
+#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | (level))
/* Command */
#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (addr))
/* Function */
#endif
-/*
+/*
* Default Layer State
*/
uint32_t default_layer_state = 0;
#ifndef NO_ACTION_LAYER
-/*
+/*
* Keymap Layer State
*/
uint32_t layer_state = 0;
}
#endif
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {0};
+void update_source_layers_cache(keypos_t key, uint8_t layer)
+{
+ const uint8_t key_number = key.col + (key.row * MATRIX_COLS);
+ const uint8_t storage_row = key_number / 8;
+ const uint8_t storage_bit = key_number % 8;
-action_t layer_switch_get_action(keypos_t key)
+ for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) {
+ source_layers_cache[storage_row][bit_number] ^=
+ (-((layer & (1U << bit_number)) != 0)
+ ^ source_layers_cache[storage_row][bit_number])
+ & (1U << storage_bit);
+ }
+}
+
+uint8_t read_source_layers_cache(keypos_t key)
+{
+ const uint8_t key_number = key.col + (key.row * MATRIX_COLS);
+ const uint8_t storage_row = key_number / 8;
+ const uint8_t storage_bit = key_number % 8;
+ uint8_t layer = 0;
+
+ for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) {
+ layer |=
+ ((source_layers_cache[storage_row][bit_number]
+ & (1U << storage_bit)) != 0)
+ << bit_number;
+ }
+
+ return layer;
+}
+#endif
+
+/*
+ * Make sure the action triggered when the key is released is the same
+ * one as the one triggered on press. It's important for the mod keys
+ * when the layer is switched after the down event but before the up
+ * event as they may get stuck otherwise.
+ */
+action_t store_or_get_action(bool pressed, keypos_t key)
+{
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+ if (disable_action_cache) {
+ return layer_switch_get_action(key);
+ }
+
+ uint8_t layer;
+
+ if (pressed) {
+ layer = layer_switch_get_layer(key);
+ update_source_layers_cache(key, layer);
+ }
+ else {
+ layer = read_source_layers_cache(key);
+ }
+ return action_for_key(layer, key);
+#else
+ return layer_switch_get_action(key);
+#endif
+}
+
+
+int8_t layer_switch_get_layer(keypos_t key)
{
action_t action;
action.code = ACTION_TRANSPARENT;
if (layers & (1UL<<i)) {
action = action_for_key(i, key);
if (action.code != ACTION_TRANSPARENT) {
- return action;
+ return i;
}
}
}
/* fall back to layer 0 */
- action = action_for_key(0, key);
- return action;
+ return 0;
#else
- action = action_for_key(biton32(default_layer_state), key);
- return action;
+ return biton32(default_layer_state);
#endif
}
+
+action_t layer_switch_get_action(keypos_t key)
+{
+ return action_for_key(layer_switch_get_layer(key), key);
+}
#define layer_and(state)
#define layer_xor(state)
#define layer_debug()
+
+#endif
+
+/* pressed actions cache */
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+/* The number of bits needed to represent the layer number: log2(32). */
+#define MAX_LAYER_BITS 5
+void update_source_layers_cache(keypos_t key, uint8_t layer);
+uint8_t read_source_layers_cache(keypos_t key);
#endif
+action_t store_or_get_action(bool pressed, keypos_t key);
+/* return the topmost non-transparent layer currently associated with key */
+int8_t layer_switch_get_layer(keypos_t key);
/* return action depending on current layer status */
action_t layer_switch_get_action(keypos_t key);
if (event.pressed) {
tapping_key.tap.interrupted = true;
}
- // enqueue
+ // enqueue
return false;
}
}
return false;
}
+__attribute__((unused))
bool waiting_buffer_has_anykey_pressed(void)
{
for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) {
void eeconfig_init(void)
{
- eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
- eeprom_write_byte(EECONFIG_DEBUG, 0);
- eeprom_write_byte(EECONFIG_DEFAULT_LAYER, 0);
- eeprom_write_byte(EECONFIG_KEYMAP, 0);
- eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0);
+ eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
+ eeprom_update_byte(EECONFIG_DEBUG, 0);
+ eeprom_update_byte(EECONFIG_DEFAULT_LAYER, 0);
+ eeprom_update_byte(EECONFIG_KEYMAP, 0);
+ eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL, 0);
#ifdef BACKLIGHT_ENABLE
- eeprom_write_byte(EECONFIG_BACKLIGHT, 0);
+ eeprom_update_byte(EECONFIG_BACKLIGHT, 0);
+#endif
+#ifdef AUDIO_ENABLE
+ eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default
#endif
}
void eeconfig_enable(void)
{
- eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
+ eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
}
void eeconfig_disable(void)
{
- eeprom_write_word(EECONFIG_MAGIC, 0xFFFF);
+ eeprom_update_word(EECONFIG_MAGIC, 0xFFFF);
}
bool eeconfig_is_enabled(void)
}
uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); }
-void eeconfig_write_debug(uint8_t val) { eeprom_write_byte(EECONFIG_DEBUG, val); }
+void eeconfig_update_debug(uint8_t val) { eeprom_update_byte(EECONFIG_DEBUG, val); }
uint8_t eeconfig_read_default_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); }
-void eeconfig_write_default_layer(uint8_t val) { eeprom_write_byte(EECONFIG_DEFAULT_LAYER, val); }
+void eeconfig_update_default_layer(uint8_t val) { eeprom_update_byte(EECONFIG_DEFAULT_LAYER, val); }
uint8_t eeconfig_read_keymap(void) { return eeprom_read_byte(EECONFIG_KEYMAP); }
-void eeconfig_write_keymap(uint8_t val) { eeprom_write_byte(EECONFIG_KEYMAP, val); }
+void eeconfig_update_keymap(uint8_t val) { eeprom_update_byte(EECONFIG_KEYMAP, val); }
#ifdef BACKLIGHT_ENABLE
uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT); }
-void eeconfig_write_backlight(uint8_t val) { eeprom_write_byte(EECONFIG_BACKLIGHT, val); }
+void eeconfig_update_backlight(uint8_t val) { eeprom_update_byte(EECONFIG_BACKLIGHT, val); }
+#endif
+
+#ifdef AUDIO_ENABLE
+uint8_t eeconfig_read_audio(void) { return eeprom_read_byte(EECONFIG_AUDIO); }
+void eeconfig_update_audio(uint8_t val) { eeprom_update_byte(EECONFIG_AUDIO, val); }
#endif
#include "suspend.h"
#include "timer.h"
#include "led.h"
+
#ifdef PROTOCOL_LUFA
-#include "lufa.h"
+ #include "lufa.h"
#endif
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+#endif /* AUDIO_ENABLE */
+
+
#define wdt_intr_enable(value) \
__asm__ __volatile__ ( \
wdt_intr_enable(wdto);
#ifdef BACKLIGHT_ENABLE
-backlight_set(0);
+ backlight_set(0);
#endif
+ // Turn off LED indicators
+ led_set(0);
+
+ #ifdef AUDIO_ENABLE
+ // This sometimes disables the start-up noise, so it's been disabled
+ // stop_all_notes();
+ #endif /* AUDIO_ENABLE */
+
// TODO: more power saving
// See PicoPower application note
// - I/O port input with pullup
{
backlight_config.level++;
backlight_config.enable = 1;
- eeconfig_write_backlight(backlight_config.raw);
+ eeconfig_update_backlight(backlight_config.raw);
}
dprintf("backlight increase: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
{
backlight_config.level--;
backlight_config.enable = !!backlight_config.level;
- eeconfig_write_backlight(backlight_config.raw);
+ eeconfig_update_backlight(backlight_config.raw);
}
dprintf("backlight decrease: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
void backlight_toggle(void)
{
backlight_config.enable ^= 1;
- eeconfig_write_backlight(backlight_config.raw);
+ eeconfig_update_backlight(backlight_config.raw);
dprintf("backlight toggle: %u\n", backlight_config.enable);
backlight_set(backlight_config.enable ? backlight_config.level : 0);
}
backlight_config.level = 0;
}
backlight_config.enable = !!backlight_config.level;
- eeconfig_write_backlight(backlight_config.raw);
+ eeconfig_update_backlight(backlight_config.raw);
dprintf("backlight step: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
}
{
backlight_config.level ^= level;
backlight_config.enable = !!backlight_config.level;
- eeconfig_write_backlight(backlight_config.raw);
+ eeconfig_update_backlight(backlight_config.raw);
backlight_set(backlight_config.level);
}
debug_config.enable = !debug_config.enable;
}
}
- eeconfig_write_debug(debug_config.raw);
+ eeconfig_update_debug(debug_config.raw);
/* keymap config */
keymap_config.raw = eeconfig_read_keymap();
if (bootmagic_scan_keycode(BOOTMAGIC_HOST_NKRO)) {
keymap_config.nkro = !keymap_config.nkro;
}
- eeconfig_write_keymap(keymap_config.raw);
+ eeconfig_update_keymap(keymap_config.raw);
#ifdef NKRO_ENABLE
keyboard_nkro = keymap_config.nkro;
if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_6)) { default_layer |= (1<<6); }
if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_7)) { default_layer |= (1<<7); }
if (default_layer) {
- eeconfig_write_default_layer(default_layer);
+ eeconfig_update_default_layer(default_layer);
default_layer_set((uint32_t)default_layer);
} else {
default_layer = eeconfig_read_default_layer();
# include "usbdrv.h"
#endif
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+#endif /* AUDIO_ENABLE */
+
static bool command_common(uint8_t code);
static void command_common_help(void);
+static void print_version(void);
+static void print_status(void);
static bool command_console(uint8_t code);
static void command_console_help(void);
#ifdef MOUSEKEY_ENABLE
***********************************************************/
static void command_common_help(void)
{
- print("\n\t- Magic -\n"
- "d: debug\n"
- "x: debug matrix\n"
- "k: debug keyboard\n"
- "m: debug mouse\n"
- "v: version\n"
- "s: status\n"
- "c: console mode\n"
- "0-4: layer0-4(F10-F4)\n"
- "Paus: bootloader\n"
+ print( "\n\t- Magic -\n"
+ STR(MAGIC_KEY_DEBUG ) ": Debug Message Toggle\n"
+ STR(MAGIC_KEY_DEBUG_MATRIX) ": Matrix Debug Mode Toggle - Show keypresses in matrix grid\n"
+ STR(MAGIC_KEY_DEBUG_KBD ) ": Keyboard Debug Toggle - Show keypress report\n"
+ STR(MAGIC_KEY_DEBUG_MOUSE ) ": Debug Mouse Toggle\n"
+ STR(MAGIC_KEY_VERSION ) ": Version\n"
+ STR(MAGIC_KEY_STATUS ) ": Status\n"
+ STR(MAGIC_KEY_CONSOLE ) ": Activate Console Mode\n"
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+ STR(MAGIC_KEY_LAYER0 ) ": Switch to Layer 0\n"
+ STR(MAGIC_KEY_LAYER1 ) ": Switch to Layer 1\n"
+ STR(MAGIC_KEY_LAYER2 ) ": Switch to Layer 2\n"
+ STR(MAGIC_KEY_LAYER3 ) ": Switch to Layer 3\n"
+ STR(MAGIC_KEY_LAYER4 ) ": Switch to Layer 4\n"
+ STR(MAGIC_KEY_LAYER5 ) ": Switch to Layer 5\n"
+ STR(MAGIC_KEY_LAYER6 ) ": Switch to Layer 6\n"
+ STR(MAGIC_KEY_LAYER7 ) ": Switch to Layer 7\n"
+ STR(MAGIC_KEY_LAYER8 ) ": Switch to Layer 8\n"
+ STR(MAGIC_KEY_LAYER9 ) ": Switch to Layer 9\n"
+#endif
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+ "F1-F10: Switch to Layer 0-9 (F10 = L0)\n"
+#endif
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+ "0-9: Switch to Layer 0-9\n"
+#endif
+
+ STR(MAGIC_KEY_LAYER0_ALT1 ) ": Switch to Layer 0 (alternate key 1)\n"
+ STR(MAGIC_KEY_LAYER0_ALT2 ) ": Switch to Layer 0 (alternate key 2)\n"
+ STR(MAGIC_KEY_BOOTLOADER ) ": Jump to Bootloader (Reset)\n"
#ifdef KEYBOARD_LOCK_ENABLE
- "Caps: Lock\n"
+ STR(MAGIC_KEY_LOCK ) ": Lock\n"
#endif
#ifdef BOOTMAGIC_ENABLE
- "e: eeprom\n"
+ STR(MAGIC_KEY_EEPROM ) ": Print EEPROM Settings\n"
#endif
#ifdef NKRO_ENABLE
- "n: NKRO\n"
+ STR(MAGIC_KEY_NKRO ) ": NKRO Toggle\n"
#endif
#ifdef SLEEP_LED_ENABLE
- "z: sleep LED test\n"
+ STR(MAGIC_KEY_SLEEP_LED ) ": Sleep LED Test\n"
#endif
);
}
+static void print_version(void)
+{
+ // print version & information
+ print("\n\t- Version -\n");
+ print("DESC: " STR(DESCRIPTION) "\n");
+ print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
+ "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
+ "VER: " STR(DEVICE_VER) "\n");
+ print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n");
+
+ /* build options */
+ print("OPTIONS:"
+
+#ifdef PROTOCOL_PJRC
+ " PJRC"
+#endif
+#ifdef PROTOCOL_LUFA
+ " LUFA"
+#endif
+#ifdef PROTOCOL_VUSB
+ " VUSB"
+#endif
+#ifdef BOOTMAGIC_ENABLE
+ " BOOTMAGIC"
+#endif
+#ifdef MOUSEKEY_ENABLE
+ " MOUSEKEY"
+#endif
+#ifdef EXTRAKEY_ENABLE
+ " EXTRAKEY"
+#endif
+#ifdef CONSOLE_ENABLE
+ " CONSOLE"
+#endif
+#ifdef COMMAND_ENABLE
+ " COMMAND"
+#endif
+#ifdef NKRO_ENABLE
+ " NKRO"
+#endif
+#ifdef KEYMAP_SECTION_ENABLE
+ " KEYMAP_SECTION"
+#endif
+
+ " " STR(BOOTLOADER_SIZE) "\n");
+
+ print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__)
+ " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__
+ " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n");
+
+ return;
+}
+
+static void print_status(void)
+{
+
+ print("\n\t- Status -\n");
+
+ print_val_hex8(host_keyboard_leds());
+ print_val_hex8(keyboard_protocol);
+ print_val_hex8(keyboard_idle);
+#ifdef NKRO_ENABLE
+ print_val_hex8(keyboard_nkro);
+#endif
+ print_val_hex32(timer_count);
+
+#ifdef PROTOCOL_PJRC
+ print_val_hex8(UDCON);
+ print_val_hex8(UDIEN);
+ print_val_hex8(UDINT);
+ print_val_hex8(usb_keyboard_leds);
+ print_val_hex8(usb_keyboard_idle_count);
+#endif
+
+#ifdef PROTOCOL_PJRC
+# if USB_COUNT_SOF
+ print_val_hex8(usbSofCount);
+# endif
+#endif
+ return;
+}
+
#ifdef BOOTMAGIC_ENABLE
static void print_eeconfig(void)
{
+#ifndef NO_PRINT
print("default_layer: "); print_dec(eeconfig_read_default_layer()); print("\n");
debug_config_t dc;
print("backlight_config.raw: "); print_hex8(bc.raw); print("\n");
print(".enable: "); print_dec(bc.enable); print("\n");
print(".level: "); print_dec(bc.level); print("\n");
-#endif
+#endif /* BACKLIGHT_ENABLE */
+
+#endif /* !NO_PRINT */
+
}
-#endif
+#endif /* BOOTMAGIC_ENABLE */
static bool command_common(uint8_t code)
{
+
+#ifdef KEYBOARD_LOCK_ENABLE
static host_driver_t *host_driver = 0;
+#endif
+
switch (code) {
+
#ifdef SLEEP_LED_ENABLE
- case KC_Z:
- // test breathing sleep LED
- print("Sleep LED test\n");
+
+ // test breathing sleep LED
+ case MAGIC_KC(MAGIC_KEY_SLEEP_LED):
+ print("Sleep LED Test\n");
sleep_led_toggle();
led_set(host_keyboard_leds());
break;
#endif
+
#ifdef BOOTMAGIC_ENABLE
- case KC_E:
+
+ // print stored eeprom config
+ case MAGIC_KC(MAGIC_KEY_EEPROM):
print("eeconfig:\n");
print_eeconfig();
break;
#endif
+
#ifdef KEYBOARD_LOCK_ENABLE
- case KC_CAPSLOCK:
+
+ // lock/unlock keyboard
+ case MAGIC_KC(MAGIC_KEY_LOCK):
if (host_get_driver()) {
host_driver = host_get_driver();
clear_keyboard();
}
break;
#endif
- case KC_H:
- case KC_SLASH: /* ? */
+
+ // print help
+ case MAGIC_KC(MAGIC_KEY_HELP1):
+ case MAGIC_KC(MAGIC_KEY_HELP2):
command_common_help();
break;
- case KC_C:
+
+ // activate console
+ case MAGIC_KC(MAGIC_KEY_CONSOLE):
debug_matrix = false;
debug_keyboard = false;
debug_mouse = false;
print("C> ");
command_state = CONSOLE;
break;
- case KC_PAUSE:
- clear_keyboard();
- print("\n\nbootloader... ");
+
+ // jump to bootloader
+ case MAGIC_KC(MAGIC_KEY_BOOTLOADER):
+ clear_keyboard(); // clear to prevent stuck keys
+ print("\n\nJumping to bootloader... ");
+ #ifdef AUDIO_ENABLE
+ play_goodbye_tone();
+ #endif
_delay_ms(1000);
bootloader_jump(); // not return
break;
- case KC_D:
+
+ // debug toggle
+ case MAGIC_KC(MAGIC_KEY_DEBUG):
+ debug_enable = !debug_enable;
if (debug_enable) {
+ print("\ndebug: on\n");
+ debug_matrix = true;
+ debug_keyboard = true;
+ debug_mouse = true;
+ } else {
print("\ndebug: off\n");
debug_matrix = false;
debug_keyboard = false;
debug_mouse = false;
- debug_enable = false;
- } else {
- print("\ndebug: on\n");
- debug_enable = true;
}
break;
- case KC_X: // debug matrix toggle
+
+ // debug matrix toggle
+ case MAGIC_KC(MAGIC_KEY_DEBUG_MATRIX):
debug_matrix = !debug_matrix;
if (debug_matrix) {
print("\nmatrix: on\n");
print("\nmatrix: off\n");
}
break;
- case KC_K: // debug keyboard toggle
+
+ // debug keyboard toggle
+ case MAGIC_KC(MAGIC_KEY_DEBUG_KBD):
debug_keyboard = !debug_keyboard;
if (debug_keyboard) {
print("\nkeyboard: on\n");
print("\nkeyboard: off\n");
}
break;
- case KC_M: // debug mouse toggle
+
+ // debug mouse toggle
+ case MAGIC_KC(MAGIC_KEY_DEBUG_MOUSE):
debug_mouse = !debug_mouse;
if (debug_mouse) {
print("\nmouse: on\n");
debug_enable = true;
} else {
- print("\nmouse: off\n");
+ print("\nmouse: off\n");
}
break;
- case KC_V: // print version & information
- print("\n\t- Version -\n");
- print("DESC: " STR(DESCRIPTION) "\n");
- print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
- "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
- "VER: " STR(DEVICE_VER) "\n");
- print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n");
- /* build options */
- print("OPTIONS:"
-#ifdef PROTOCOL_PJRC
- " PJRC"
-#endif
-#ifdef PROTOCOL_LUFA
- " LUFA"
-#endif
-#ifdef PROTOCOL_VUSB
- " VUSB"
-#endif
-#ifdef BOOTMAGIC_ENABLE
- " BOOTMAGIC"
-#endif
-#ifdef MOUSEKEY_ENABLE
- " MOUSEKEY"
-#endif
-#ifdef EXTRAKEY_ENABLE
- " EXTRAKEY"
-#endif
-#ifdef CONSOLE_ENABLE
- " CONSOLE"
-#endif
-#ifdef COMMAND_ENABLE
- " COMMAND"
-#endif
-#ifdef NKRO_ENABLE
- " NKRO"
-#endif
-#ifdef KEYMAP_SECTION_ENABLE
- " KEYMAP_SECTION"
-#endif
- " " STR(BOOTLOADER_SIZE) "\n");
- print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__)
- " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__
- " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n");
- break;
- case KC_S:
- print("\n\t- Status -\n");
- print_val_hex8(host_keyboard_leds());
- print_val_hex8(keyboard_protocol);
- print_val_hex8(keyboard_idle);
-#ifdef NKRO_ENABLE
- print_val_hex8(keyboard_nkro);
-#endif
- print_val_hex32(timer_count);
-
-#ifdef PROTOCOL_PJRC
- print_val_hex8(UDCON);
- print_val_hex8(UDIEN);
- print_val_hex8(UDINT);
- print_val_hex8(usb_keyboard_leds);
- print_val_hex8(usb_keyboard_idle_count);
-#endif
+ // print version
+ case MAGIC_KC(MAGIC_KEY_VERSION):
+ print_version();
+ break;
-#ifdef PROTOCOL_PJRC
-# if USB_COUNT_SOF
- print_val_hex8(usbSofCount);
-# endif
-#endif
+ // print status
+ case MAGIC_KC(MAGIC_KEY_STATUS):
+ print_status();
break;
+
#ifdef NKRO_ENABLE
- case KC_N:
- clear_keyboard(); //Prevents stuck keys.
+
+ // NKRO toggle
+ case MAGIC_KC(MAGIC_KEY_NKRO):
+ clear_keyboard(); // clear to prevent stuck keys
keyboard_nkro = !keyboard_nkro;
if (keyboard_nkro)
print("NKRO: on\n");
print("NKRO: off\n");
break;
#endif
- case KC_ESC:
- case KC_GRV:
- case KC_0:
+
+ // switch layers
+
+ case MAGIC_KC(MAGIC_KEY_LAYER0_ALT1):
+ case MAGIC_KC(MAGIC_KEY_LAYER0_ALT2):
+ switch_default_layer(0);
+ break;
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+
+ case MAGIC_KC(MAGIC_KEY_LAYER0):
+ switch_default_layer(0);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER1):
+ switch_default_layer(1);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER2):
+ switch_default_layer(2);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER3):
+ switch_default_layer(3);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER4):
+ switch_default_layer(4);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER5):
+ switch_default_layer(5);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER6):
+ switch_default_layer(6);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER7):
+ switch_default_layer(7);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER8):
+ switch_default_layer(8);
+ break;
+
+ case MAGIC_KC(MAGIC_KEY_LAYER9):
+ switch_default_layer(9);
+ break;
+#endif
+
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+
+ case KC_F1 ... KC_F9:
+ switch_default_layer((code - KC_F1) + 1);
+ break;
case KC_F10:
switch_default_layer(0);
break;
+#endif
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+
case KC_1 ... KC_9:
switch_default_layer((code - KC_1) + 1);
break;
- case KC_F1 ... KC_F9:
- switch_default_layer((code - KC_F1) + 1);
+ case KC_0:
+ switch_default_layer(0);
break;
+#endif
+
default:
print("?");
return false;
static void mousekey_param_print(void)
{
+#ifndef NO_PRINT
print("\n\t- Values -\n");
print("1: delay(*10ms): "); pdec(mk_delay); print("\n");
print("2: interval(ms): "); pdec(mk_interval); print("\n");
print("4: time_to_max: "); pdec(mk_time_to_max); print("\n");
print("5: wheel_max_speed: "); pdec(mk_wheel_max_speed); print("\n");
print("6: wheel_time_to_max: "); pdec(mk_wheel_time_to_max); print("\n");
+#endif /* !NO_PRINT */
+
}
//#define PRINT_SET_VAL(v) print(#v " = "); print_dec(v); print("\n");
"pgdown: -10\n"
"\n"
"speed = delta * max_speed * (repeat / time_to_max)\n");
- xprintf("where delta: cursor=%d, wheel=%d\n"
+ xprintf("where delta: cursor=%d, wheel=%d\n"
"See http://en.wikipedia.org/wiki/Mouse_keys\n", MOUSEKEY_MOVE_DELTA, MOUSEKEY_WHEEL_DELTA);
}
#define command_proc(code) false
#endif
+
+#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+#endif
+
+#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+#endif
+
+#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+#endif
+
+#ifndef MAGIC_KEY_HELP1
+#define MAGIC_KEY_HELP1 H
+#endif
+
+#ifndef MAGIC_KEY_HELP2
+#define MAGIC_KEY_HELP2 SLASH
+#endif
+
+#ifndef MAGIC_KEY_DEBUG
+#define MAGIC_KEY_DEBUG D
+#endif
+
+#ifndef MAGIC_KEY_DEBUG_MATRIX
+#define MAGIC_KEY_DEBUG_MATRIX X
+#endif
+
+#ifndef MAGIC_KEY_DEBUG_KBD
+#define MAGIC_KEY_DEBUG_KBD K
+#endif
+
+#ifndef MAGIC_KEY_DEBUG_MOUSE
+#define MAGIC_KEY_DEBUG_MOUSE M
+#endif
+
+#ifndef MAGIC_KEY_VERSION
+#define MAGIC_KEY_VERSION V
+#endif
+
+#ifndef MAGIC_KEY_STATUS
+#define MAGIC_KEY_STATUS S
+#endif
+
+#ifndef MAGIC_KEY_CONSOLE
+#define MAGIC_KEY_CONSOLE C
+#endif
+
+#ifndef MAGIC_KEY_LAYER0_ALT1
+#define MAGIC_KEY_LAYER0_ALT1 ESC
+#endif
+
+#ifndef MAGIC_KEY_LAYER0_ALT2
+#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+#endif
+
+#ifndef MAGIC_KEY_LAYER0
+#define MAGIC_KEY_LAYER0 0
+#endif
+
+#ifndef MAGIC_KEY_LAYER1
+#define MAGIC_KEY_LAYER1 1
+#endif
+
+#ifndef MAGIC_KEY_LAYER2
+#define MAGIC_KEY_LAYER2 2
+#endif
+
+#ifndef MAGIC_KEY_LAYER3
+#define MAGIC_KEY_LAYER3 3
+#endif
+
+#ifndef MAGIC_KEY_LAYER4
+#define MAGIC_KEY_LAYER4 4
+#endif
+
+#ifndef MAGIC_KEY_LAYER5
+#define MAGIC_KEY_LAYER5 5
+#endif
+
+#ifndef MAGIC_KEY_LAYER6
+#define MAGIC_KEY_LAYER6 6
+#endif
+
+#ifndef MAGIC_KEY_LAYER7
+#define MAGIC_KEY_LAYER7 7
+#endif
+
+#ifndef MAGIC_KEY_LAYER8
+#define MAGIC_KEY_LAYER8 8
#endif
+
+#ifndef MAGIC_KEY_LAYER9
+#define MAGIC_KEY_LAYER9 9
+#endif
+
+#ifndef MAGIC_KEY_BOOTLOADER
+#define MAGIC_KEY_BOOTLOADER PAUSE
+#endif
+
+#ifndef MAGIC_KEY_LOCK
+#define MAGIC_KEY_LOCK CAPS
+#endif
+
+#ifndef MAGIC_KEY_EEPROM
+#define MAGIC_KEY_EEPROM E
+#endif
+
+#ifndef MAGIC_KEY_NKRO
+#define MAGIC_KEY_NKRO N
+#endif
+
+#ifndef MAGIC_KEY_SLEEP_LED
+#define MAGIC_KEY_SLEEP_LED Z
+
+#endif
+
+#define XMAGIC_KC(key) KC_##key
+#define MAGIC_KC(key) XMAGIC_KC(key)
+
+#endif
\ No newline at end of file
#define EECONFIG_KEYMAP (uint8_t *)4
#define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5
#define EECONFIG_BACKLIGHT (uint8_t *)6
+#define EECONFIG_AUDIO (uint8_t *)7
/* debug bit */
void eeconfig_disable(void);
uint8_t eeconfig_read_debug(void);
-void eeconfig_write_debug(uint8_t val);
+void eeconfig_update_debug(uint8_t val);
uint8_t eeconfig_read_default_layer(void);
-void eeconfig_write_default_layer(uint8_t val);
+void eeconfig_update_default_layer(uint8_t val);
uint8_t eeconfig_read_keymap(void);
-void eeconfig_write_keymap(uint8_t val);
+void eeconfig_update_keymap(uint8_t val);
#ifdef BACKLIGHT_ENABLE
uint8_t eeconfig_read_backlight(void);
-void eeconfig_write_backlight(uint8_t val);
+void eeconfig_update_backlight(uint8_t val);
+#endif
+
+#ifdef AUDIO_ENABLE
+uint8_t eeconfig_read_audio(void);
+void eeconfig_update_audio(uint8_t val);
#endif
#endif
#include "command.h"
#include "util.h"
#include "sendchar.h"
-#include "bootmagic.h"
+#ifdef BOOTMAGIC_ENABLE
+ #include "bootmagic.h"
+#else
+ #include "magic.h"
+#endif
#include "eeconfig.h"
#include "backlight.h"
#ifdef MOUSEKEY_ENABLE
void keyboard_init(void)
{
+
timer_init();
matrix_init();
#ifdef PS2_MOUSE_ENABLE
#ifdef BOOTMAGIC_ENABLE
bootmagic();
+#else
+ magic();
#endif
#ifdef BACKLIGHT_ENABLE
backlight_init();
#endif
+
+#if defined(NKRO_ENABLE) && defined(FORCE_NKRO)
+ keyboard_nkro = true;
+#endif
+
}
/*
#include "action_macro.h"
#include "wait.h"
#include "debug.h"
-
+#include "bootloader.h"
static action_t keycode_to_action(uint8_t keycode);
action.code = ACTION_TRANSPARENT;
break;
case KC_BOOTLOADER:
+ action.code = ACTION_NO;
clear_keyboard();
wait_ms(50);
bootloader_jump(); // not return
#include <stdbool.h>
#include "action.h"
-
-#ifdef BOOTMAGIC_ENABLE
/* NOTE: Not portable. Bit field order depends on implementation */
typedef union {
uint8_t raw;
};
} keymap_config_t;
keymap_config_t keymap_config;
-#endif
/* translates key to keycode */
--- /dev/null
+#include <stdint.h>
+#include <stdbool.h>
+#include <util/delay.h>
+#include "matrix.h"
+#include "bootloader.h"
+#include "debug.h"
+#include "keymap.h"
+#include "host.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#include "magic.h"
+
+keymap_config_t keymap_config;
+
+void magic(void)
+{
+ /* check signature */
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+
+ /* debug enable */
+ debug_config.raw = eeconfig_read_debug();
+
+ /* keymap config */
+ keymap_config.raw = eeconfig_read_keymap();
+
+#ifdef NKRO_ENABLE
+ keyboard_nkro = keymap_config.nkro;
+#endif
+
+ uint8_t default_layer = 0;
+ default_layer = eeconfig_read_default_layer();
+ default_layer_set((uint32_t)default_layer);
+
+}
\ No newline at end of file
--- /dev/null
+#ifndef MAGIC_H
+#define MAGIC_H
+
+void magic(void);
+
+#endif
/* Very basic print functions, intended to be used with usb_debug_only.c
* http://www.pjrc.com/teensy/
* Copyright (c) 2008 PJRC.COM, LLC
- *
+ *
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#else /* NO_PRINT */
-#define xprintf
-#define print
-#define println
+#define xprintf(fmt, ...)
+#define print(s)
+#define println(s)
#define print_set_sendchar(func)
#define print_dec(data)
#define print_decs(data)
$(LUFA_DIR)/descriptor.c \
$(LUFA_SRC_USB)
-ifdef MIDI_ENABLE
+ifeq ($(strip $(MIDI_ENABLE)), yes)
LUFA_SRC += $(LUFA_DIR)/midi/midi.c \
$(LUFA_DIR)/midi/midi_device.c \
$(LUFA_DIR)/midi/bytequeue/bytequeue.c \
$(LUFA_SRC_USBCLASS)
endif
-ifdef BLUETOOTH_ENABLE
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
$(TMK_DIR)/protocol/serial_uart.c
endif
else
{
/* Write the next EEPROM byte from the endpoint */
- eeprom_write_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte());
+ eeprom_update_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte());
/* Increment the address counter after use */
CurrAddress += 2;
else if (Command == AVR109_COMMAND_WriteEEPROM)
{
/* Read the byte from the endpoint and write it to the EEPROM */
- eeprom_write_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte());
+ eeprom_update_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte());
/* Increment the address after use */
CurrAddress += 2;
}
/* Read the byte from the USB interface and write to to the EEPROM */
- eeprom_write_byte((uint8_t*)StartAddr, Endpoint_Read_8());
+ eeprom_update_byte((uint8_t*)StartAddr, Endpoint_Read_8());
/* Adjust counters */
StartAddr++;
-/*
+/*
* Copyright 2012 Jun Wako <wakojun@gmail.com>
* This file is based on:
* LUFA-120219/Demos/Device/Lowlevel/KeyboardMouse
{
/* Create a temporary buffer to hold the read in report from the host */
uint8_t ConsoleData[CONSOLE_EPSIZE];
-
+
/* Read Console Report Data */
Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL);
-
+
/* Process Console Report Data */
//ProcessConsoleHIDReport(ConsoleData);
}
Endpoint_SelectEndpoint(ep);
}
-#else
-static void Console_Task(void)
-{
-}
#endif
print("[D]");
/* For battery powered device */
USB_IsInitialized = false;
-/* TODO: This doesn't work. After several plug in/outs can not be enumerated.
+/* TODO: This doesn't work. After several plug in/outs can not be enumerated.
if (USB_IsInitialized) {
USB_Disable(); // Disable all interrupts
USB_Controller_Enable();
#ifdef MIDI_ENABLE
ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
- ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
+ ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
#endif
}
}
/*******************************************************************************
- * Host driver
+ * Host driver
******************************************************************************/
static uint8_t keyboard_leds(void)
{
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x02);
bluefruit_serial_send((bitmap>>8)&0xFF);
- bluefruit_serial_send(bitmap&0xFF);
+ bluefruit_serial_send(bitmap&0xFF);
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x00);