From 2ae44470e01287c48f3852ac54a87d7fc4e747c2 Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Tue, 29 Mar 2016 12:06:32 -0400 Subject: [PATCH 01/14] Fix error in Planck makefile comment [This comment](https://www.reddit.com/r/olkb/comments/428umx/rgb_underglow/czaivbc) states that because both audio output and RGB support require the user of timer 3, they can't be enabled at the same time. That makes sense, I can see where audio.c uses timer 3. But this comment in the code states that the incompatibility is with MIDI support, which doesn't make sense based on what I see in the code. Please enlighten me if I'm mistaken. --- keyboard/planck/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 307b0c7f4f..03d2601761 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -143,7 +143,7 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # 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. +# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. ifdef BACKLIGHT_ENABLE SRC += backlight.c From 8f1ea16ad5e34446bad63bf2357432f256c4298a Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Tue, 29 Mar 2016 16:35:06 -0400 Subject: [PATCH 02/14] Fix #198 --- 1-setup-path-win.bat | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 49fb00e149..6957dbc3f4 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -1,9 +1,14 @@ @echo off -setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1 + +reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul +echo. + if NOT ["%errorlevel%"]==["0"] ( - echo FAILED. Rerun with administrator privileges. - pause + echo FAILED. You probably just need to run the script with administrator privileges. ) else ( echo Success! - pause + setx QMK QMK > nul ) + +echo. +pause From 95fba250ef2029ccdedb34500c5d1e96f6d065cf Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Tue, 29 Mar 2016 21:53:36 -0400 Subject: [PATCH 03/14] Updated several keyboard folders to use new keymap naming scheme --- BUILD_GUIDE.md | 5 ++++- keyboard/alps64/Makefile | 4 ++-- .../alps64/{keymap_plain.c => keymaps/default.c} | 0 keyboard/alps64/{keymap_hasu.c => keymaps/hasu.c} | 0 keyboard/atomic/Makefile | 4 ++-- keyboard/atomic/README.md | 4 ++-- .../atomic/keymaps/{keymap_abienz.c => abienz.c} | 0 .../atomic/keymaps/{keymap_default.c => default.c} | 0 .../keymaps/{keymap_michelle.c => michelle.c} | 0 keyboard/atreus/Makefile | 4 ++-- keyboard/atreus/README.md | 4 ++-- .../atreus/keymaps/{keymap_default.c => default.c} | 0 keyboard/atreus/keymaps/{keymap_gerb.c => gerb.c} | 0 keyboard/gh60/Makefile | 4 ++-- keyboard/gh60/Makefile.pjrc | 4 ++-- keyboard/gh60/README.md | 14 +++++++------- keyboard/gh60/{keymap_hasu.c => keymaps/hasu.c} | 0 keyboard/gh60/{keymap_hhkb.c => keymaps/hhkb.c} | 0 keyboard/gh60/{keymap_plain.c => keymaps/plain.c} | 0 keyboard/gh60/{keymap_poker.c => keymaps/poker.c} | 0 .../{keymap_poker_bit.c => keymaps/poker_bit.c} | 0 .../{keymap_poker_set.c => keymaps/poker_set.c} | 0 .../gh60/{keymap_spacefn.c => keymaps/spacefn.c} | 0 keyboard/hhkb/Makefile | 8 ++++---- keyboard/hhkb/Makefile.pjrc | 4 ++-- keyboard/hhkb/Makefile.rn42 | 8 ++++---- keyboard/hhkb/README.md | 2 +- keyboard/hhkb/{keymap_hasu.c => keymaps/hasu.c} | 0 keyboard/hhkb/{keymap_hhkb.c => keymaps/hhkb.c} | 0 keyboard/hhkb/{keymap_jp.c => keymaps/jp.c} | 0 .../hhkb/{keymap_spacefn.c => keymaps/spacefn.c} | 0 keyboard/hhkb_qmk/Makefile | 4 ++-- keyboard/hhkb_qmk/README.md | 4 ++-- .../keymaps/{keymap_default.c => default.c} | 0 .../hhkb_qmk/keymaps/{keymap_lxol.c => lxol.c} | 0 keyboard/jd45/Makefile | 4 ++-- .../jd45/keymaps/{keymap_default.c => default.c} | 0 .../jd45/keymaps/{keymap_justin.c => justin.c} | 0 keyboard/planck/README.md | 4 ++-- .../common_keymaps/keymap_mitch.c | 0 quantum/template/README.md | 2 +- 41 files changed, 45 insertions(+), 42 deletions(-) rename keyboard/alps64/{keymap_plain.c => keymaps/default.c} (100%) rename keyboard/alps64/{keymap_hasu.c => keymaps/hasu.c} (100%) rename keyboard/atomic/keymaps/{keymap_abienz.c => abienz.c} (100%) rename keyboard/atomic/keymaps/{keymap_default.c => default.c} (100%) rename keyboard/atomic/keymaps/{keymap_michelle.c => michelle.c} (100%) rename keyboard/atreus/keymaps/{keymap_default.c => default.c} (100%) rename keyboard/atreus/keymaps/{keymap_gerb.c => gerb.c} (100%) rename keyboard/gh60/{keymap_hasu.c => keymaps/hasu.c} (100%) rename keyboard/gh60/{keymap_hhkb.c => keymaps/hhkb.c} (100%) rename keyboard/gh60/{keymap_plain.c => keymaps/plain.c} (100%) rename keyboard/gh60/{keymap_poker.c => keymaps/poker.c} (100%) rename keyboard/gh60/{keymap_poker_bit.c => keymaps/poker_bit.c} (100%) rename keyboard/gh60/{keymap_poker_set.c => keymaps/poker_set.c} (100%) rename keyboard/gh60/{keymap_spacefn.c => keymaps/spacefn.c} (100%) rename keyboard/hhkb/{keymap_hasu.c => keymaps/hasu.c} (100%) rename keyboard/hhkb/{keymap_hhkb.c => keymaps/hhkb.c} (100%) rename keyboard/hhkb/{keymap_jp.c => keymaps/jp.c} (100%) rename keyboard/hhkb/{keymap_spacefn.c => keymaps/spacefn.c} (100%) rename keyboard/hhkb_qmk/keymaps/{keymap_default.c => default.c} (100%) rename keyboard/hhkb_qmk/keymaps/{keymap_lxol.c => lxol.c} (100%) rename keyboard/jd45/keymaps/{keymap_default.c => default.c} (100%) rename keyboard/jd45/keymaps/{keymap_justin.c => justin.c} (100%) rename keyboard/planck/{ => old_keymap_files}/common_keymaps/keymap_mitch.c (100%) diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md index 22df53c30d..f7a57d2fc9 100644 --- a/BUILD_GUIDE.md +++ b/BUILD_GUIDE.md @@ -44,7 +44,10 @@ If you have any problems building the firmware, you can try using a tool called 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=` 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= dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the .hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html) diff --git a/keyboard/alps64/Makefile b/keyboard/alps64/Makefile index e90dcedb67..7634c4280e 100644 --- a/keyboard/alps64/Makefile +++ b/keyboard/alps64/Makefile @@ -53,9 +53,9 @@ SRC = keymap_common.c \ 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 diff --git a/keyboard/alps64/keymap_plain.c b/keyboard/alps64/keymaps/default.c similarity index 100% rename from keyboard/alps64/keymap_plain.c rename to keyboard/alps64/keymaps/default.c diff --git a/keyboard/alps64/keymap_hasu.c b/keyboard/alps64/keymaps/hasu.c similarity index 100% rename from keyboard/alps64/keymap_hasu.c rename to keyboard/alps64/keymaps/hasu.c diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index e678b4efa8..da6d0ac60c 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -54,9 +54,9 @@ SRC = atomic.c \ backlight.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 CONFIG_H = config.h diff --git a/keyboard/atomic/README.md b/keyboard/atomic/README.md index c8e83cf55a..0e42370ba6 100644 --- a/keyboard/atomic/README.md +++ b/keyboard/atomic/README.md @@ -16,10 +16,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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_.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 `.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|] ``` -Keymaps follow the format **__keymap\_\.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/atomic/keymaps/keymap_abienz.c b/keyboard/atomic/keymaps/abienz.c similarity index 100% rename from keyboard/atomic/keymaps/keymap_abienz.c rename to keyboard/atomic/keymaps/abienz.c diff --git a/keyboard/atomic/keymaps/keymap_default.c b/keyboard/atomic/keymaps/default.c similarity index 100% rename from keyboard/atomic/keymaps/keymap_default.c rename to keyboard/atomic/keymaps/default.c diff --git a/keyboard/atomic/keymaps/keymap_michelle.c b/keyboard/atomic/keymaps/michelle.c similarity index 100% rename from keyboard/atomic/keymaps/keymap_michelle.c rename to keyboard/atomic/keymaps/michelle.c diff --git a/keyboard/atreus/Makefile b/keyboard/atreus/Makefile index 2e542d62ed..a6fddd70d2 100644 --- a/keyboard/atreus/Makefile +++ b/keyboard/atreus/Makefile @@ -53,9 +53,9 @@ TARGET_DIR = . 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 diff --git a/keyboard/atreus/README.md b/keyboard/atreus/README.md index 4db7ac1203..aacf2841f4 100644 --- a/keyboard/atreus/README.md +++ b/keyboard/atreus/README.md @@ -177,10 +177,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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_.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 `.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|] ``` -Keymaps follow the format **__keymap\_\.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/atreus/keymaps/keymap_default.c b/keyboard/atreus/keymaps/default.c similarity index 100% rename from keyboard/atreus/keymaps/keymap_default.c rename to keyboard/atreus/keymaps/default.c diff --git a/keyboard/atreus/keymaps/keymap_gerb.c b/keyboard/atreus/keymaps/gerb.c similarity index 100% rename from keyboard/atreus/keymaps/keymap_gerb.c rename to keyboard/atreus/keymaps/gerb.c diff --git a/keyboard/gh60/Makefile b/keyboard/gh60/Makefile index daba0f6449..4c8f9dc8ab 100644 --- a/keyboard/gh60/Makefile +++ b/keyboard/gh60/Makefile @@ -53,9 +53,9 @@ SRC = keymap_common.c \ 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 diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc index 11bd3b7840..8ed73a248d 100644 --- a/keyboard/gh60/Makefile.pjrc +++ b/keyboard/gh60/Makefile.pjrc @@ -53,9 +53,9 @@ SRC = keymap_common.c \ 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 diff --git a/keyboard/gh60/README.md b/keyboard/gh60/README.md index 510cb5c8b6..41a757ea3a 100644 --- a/keyboard/gh60/README.md +++ b/keyboard/gh60/README.md @@ -21,7 +21,7 @@ Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason t ## Keymap -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document(you can find in 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 `.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: @@ -29,8 +29,8 @@ To build firmware binary hex file with a certain keymap just do `make` with `KEY ### 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} @@ -63,7 +63,7 @@ while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](key ### 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 ,-----------------------------------------------------------. @@ -80,11 +80,11 @@ See [keymap_plain.c](keymap_plain.c) for detail. ### 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 ,-----------------------------------------------------------. @@ -113,7 +113,7 @@ This layout proposed by spiceBar uses space bar to change layer with using Dual ### 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| -| =| \| `| diff --git a/keyboard/gh60/keymap_hasu.c b/keyboard/gh60/keymaps/hasu.c similarity index 100% rename from keyboard/gh60/keymap_hasu.c rename to keyboard/gh60/keymaps/hasu.c diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymaps/hhkb.c similarity index 100% rename from keyboard/gh60/keymap_hhkb.c rename to keyboard/gh60/keymaps/hhkb.c diff --git a/keyboard/gh60/keymap_plain.c b/keyboard/gh60/keymaps/plain.c similarity index 100% rename from keyboard/gh60/keymap_plain.c rename to keyboard/gh60/keymaps/plain.c diff --git a/keyboard/gh60/keymap_poker.c b/keyboard/gh60/keymaps/poker.c similarity index 100% rename from keyboard/gh60/keymap_poker.c rename to keyboard/gh60/keymaps/poker.c diff --git a/keyboard/gh60/keymap_poker_bit.c b/keyboard/gh60/keymaps/poker_bit.c similarity index 100% rename from keyboard/gh60/keymap_poker_bit.c rename to keyboard/gh60/keymaps/poker_bit.c diff --git a/keyboard/gh60/keymap_poker_set.c b/keyboard/gh60/keymaps/poker_set.c similarity index 100% rename from keyboard/gh60/keymap_poker_set.c rename to keyboard/gh60/keymaps/poker_set.c diff --git a/keyboard/gh60/keymap_spacefn.c b/keyboard/gh60/keymaps/spacefn.c similarity index 100% rename from keyboard/gh60/keymap_spacefn.c rename to keyboard/gh60/keymaps/spacefn.c diff --git a/keyboard/hhkb/Makefile b/keyboard/hhkb/Makefile index 5a179bd24d..d434246cef 100644 --- a/keyboard/hhkb/Makefile +++ b/keyboard/hhkb/Makefile @@ -129,17 +129,17 @@ NKRO_ENABLE = yes # USB Nkey Rollover # 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 diff --git a/keyboard/hhkb/Makefile.pjrc b/keyboard/hhkb/Makefile.pjrc index 7d0f8c3a9c..403a8ec60a 100644 --- a/keyboard/hhkb/Makefile.pjrc +++ b/keyboard/hhkb/Makefile.pjrc @@ -18,9 +18,9 @@ SRC = keymap_common.c \ 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 diff --git a/keyboard/hhkb/Makefile.rn42 b/keyboard/hhkb/Makefile.rn42 index cbb2b744c9..a730442af0 100644 --- a/keyboard/hhkb/Makefile.rn42 +++ b/keyboard/hhkb/Makefile.rn42 @@ -122,17 +122,17 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # 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 diff --git a/keyboard/hhkb/README.md b/keyboard/hhkb/README.md index fcd72e1941..e20c23d823 100644 --- a/keyboard/hhkb/README.md +++ b/keyboard/hhkb/README.md @@ -76,7 +76,7 @@ Use [Teensy Loader] if your controller is Teensy/Teensy++. ##Keymap -To define your own keymap create file named `keymap_.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 `.c` and see keymap document (you can find in top README.md) and existent keymap files. ##Hardware diff --git a/keyboard/hhkb/keymap_hasu.c b/keyboard/hhkb/keymaps/hasu.c similarity index 100% rename from keyboard/hhkb/keymap_hasu.c rename to keyboard/hhkb/keymaps/hasu.c diff --git a/keyboard/hhkb/keymap_hhkb.c b/keyboard/hhkb/keymaps/hhkb.c similarity index 100% rename from keyboard/hhkb/keymap_hhkb.c rename to keyboard/hhkb/keymaps/hhkb.c diff --git a/keyboard/hhkb/keymap_jp.c b/keyboard/hhkb/keymaps/jp.c similarity index 100% rename from keyboard/hhkb/keymap_jp.c rename to keyboard/hhkb/keymaps/jp.c diff --git a/keyboard/hhkb/keymap_spacefn.c b/keyboard/hhkb/keymaps/spacefn.c similarity index 100% rename from keyboard/hhkb/keymap_spacefn.c rename to keyboard/hhkb/keymaps/spacefn.c diff --git a/keyboard/hhkb_qmk/Makefile b/keyboard/hhkb_qmk/Makefile index 8bd44100b7..21ba261a23 100644 --- a/keyboard/hhkb_qmk/Makefile +++ b/keyboard/hhkb_qmk/Makefile @@ -54,9 +54,9 @@ SRC = hhkb_qmk.c \ 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 diff --git a/keyboard/hhkb_qmk/README.md b/keyboard/hhkb_qmk/README.md index 606025c411..389407b3aa 100644 --- a/keyboard/hhkb_qmk/README.md +++ b/keyboard/hhkb_qmk/README.md @@ -171,10 +171,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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_.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 `.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|] ``` -Keymaps follow the format **__keymap\_\.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/hhkb_qmk/keymaps/keymap_default.c b/keyboard/hhkb_qmk/keymaps/default.c similarity index 100% rename from keyboard/hhkb_qmk/keymaps/keymap_default.c rename to keyboard/hhkb_qmk/keymaps/default.c diff --git a/keyboard/hhkb_qmk/keymaps/keymap_lxol.c b/keyboard/hhkb_qmk/keymaps/lxol.c similarity index 100% rename from keyboard/hhkb_qmk/keymaps/keymap_lxol.c rename to keyboard/hhkb_qmk/keymaps/lxol.c diff --git a/keyboard/jd45/Makefile b/keyboard/jd45/Makefile index 076dced829..f6a8d10c58 100644 --- a/keyboard/jd45/Makefile +++ b/keyboard/jd45/Makefile @@ -54,9 +54,9 @@ SRC = jd45.c \ 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 diff --git a/keyboard/jd45/keymaps/keymap_default.c b/keyboard/jd45/keymaps/default.c similarity index 100% rename from keyboard/jd45/keymaps/keymap_default.c rename to keyboard/jd45/keymaps/default.c diff --git a/keyboard/jd45/keymaps/keymap_justin.c b/keyboard/jd45/keymaps/justin.c similarity index 100% rename from keyboard/jd45/keymaps/keymap_justin.c rename to keyboard/jd45/keymaps/justin.c diff --git a/keyboard/planck/README.md b/keyboard/planck/README.md index 3ba0cc1527..d9a1e3beee 100644 --- a/keyboard/planck/README.md +++ b/keyboard/planck/README.md @@ -16,13 +16,13 @@ Depending on which keymap you would like to use, you will have to compile slight 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 `.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 `.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|] ``` -Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.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) diff --git a/keyboard/planck/common_keymaps/keymap_mitch.c b/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c similarity index 100% rename from keyboard/planck/common_keymaps/keymap_mitch.c rename to keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c diff --git a/quantum/template/README.md b/quantum/template/README.md index dc163a2f4b..39f9f59d10 100644 --- a/quantum/template/README.md +++ b/quantum/template/README.md @@ -15,7 +15,7 @@ Depending on which keymap you would like to use, you will have to compile slight 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 `.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 `.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: ``` From ac0729787ff0e8d1bd1202a28f5edf9125c00b0c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 30 Mar 2016 00:43:07 -0400 Subject: [PATCH 04/14] preonic update --- keyboard/preonic/Makefile | 54 ++-- keyboard/preonic/Makefile.pjrc | 116 --------- keyboard/preonic/PCB_GUIDE.md | 116 --------- keyboard/preonic/README.md | 49 +--- keyboard/preonic/__avr_gdbinit | 6 - keyboard/preonic/analog.c | 53 ---- keyboard/preonic/analog.h | 36 --- keyboard/preonic/beeps.c | 246 ------------------ keyboard/preonic/beeps.h | 12 - keyboard/preonic/config.h | 18 +- keyboard/preonic/config_definitions.h | 50 ---- keyboard/preonic/extended_keymap_common.c | 216 --------------- keyboard/preonic/extended_keymap_common.h | 181 ------------- .../extended_keymap_default.c | 70 ----- .../extended_keymaps/extended_keymap_lock.c | 81 ------ keyboard/preonic/keymap_midi.c | 110 -------- keyboard/preonic/keymap_midi.h | 220 ---------------- keyboard/preonic/led.c | 38 --- keyboard/preonic/matrix.c | 234 ----------------- quantum/keymap_midi.c | 4 +- 20 files changed, 65 insertions(+), 1845 deletions(-) delete mode 100644 keyboard/preonic/Makefile.pjrc delete mode 100644 keyboard/preonic/PCB_GUIDE.md delete mode 100644 keyboard/preonic/__avr_gdbinit delete mode 100644 keyboard/preonic/analog.c delete mode 100644 keyboard/preonic/analog.h delete mode 100644 keyboard/preonic/beeps.c delete mode 100644 keyboard/preonic/beeps.h delete mode 100644 keyboard/preonic/config_definitions.h delete mode 100644 keyboard/preonic/extended_keymap_common.c delete mode 100644 keyboard/preonic/extended_keymap_common.h delete mode 100644 keyboard/preonic/extended_keymaps/extended_keymap_default.c delete mode 100644 keyboard/preonic/extended_keymaps/extended_keymap_lock.c delete mode 100644 keyboard/preonic/keymap_midi.c delete mode 100644 keyboard/preonic/keymap_midi.h delete mode 100644 keyboard/preonic/led.c delete mode 100644 keyboard/preonic/matrix.c diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 0145e44bc6..664aff7321 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -27,7 +27,7 @@ # 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. @@ -39,25 +39,41 @@ #---------------------------------------------------------------------------- # 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 @@ -120,24 +136,26 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration # 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 +# 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 -BACKLIGHT_ENABLE = yes +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 MIDI_ENABLE - SRC += keymap_midi.c \ - beeps.c +ifdef BACKLIGHT_ENABLE + SRC += backlight.c 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)/protocol/lufa.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk +include $(TOP_DIR)/quantum/quantum.mk diff --git a/keyboard/preonic/Makefile.pjrc b/keyboard/preonic/Makefile.pjrc deleted file mode 100644 index be83ba18b1..0000000000 --- a/keyboard/preonic/Makefile.pjrc +++ /dev/null @@ -1,116 +0,0 @@ -#---------------------------------------------------------------------------- -# 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 diff --git a/keyboard/preonic/PCB_GUIDE.md b/keyboard/preonic/PCB_GUIDE.md deleted file mode 100644 index c3004c75a4..0000000000 --- a/keyboard/preonic/PCB_GUIDE.md +++ /dev/null @@ -1,116 +0,0 @@ -# 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=`: compile with the referenced matrix file. Default if unspecified is `matrix_pcb.c`. For handwired boards, use `matrix_handwired.c`. -* `make KEYMAP=`: compile with the extended keymap file `extended_keymaps/extended_keymap_.c` -* `make COMMON=true KEYMAP=`: compile with the common keymap file `common_keymaps/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 dfu` - use the necessary `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_`: the Colemak equivalent of a key (in place of `KC_`), 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` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC()` notation. `F()` 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()` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`): - - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_A), END); - break; - case 1: - return MACRODOWN(TYPE(KC_B), END); - break; - case 2: - return MACRODOWN(TYPE(KC_C), END); - break; - case 3: - return MACRODOWN(TYPE(KC_D), END); - break; - } - return MACRO_NONE; - -`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke. - -[cygwin]: https://www.cygwin.com/ -[mingw]: http://www.mingw.org/ -[mhv]: https://infernoembedded.com/products/avr-tools -[winavr]: http://winavr.sourceforge.net/ -[crosspack]: http://www.obdev.at/products/crosspack/index.html -[dfu-prog]: http://dfu-programmer.sourceforge.net/ diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index ee824d26e0..3ba0cc1527 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -2,54 +2,29 @@ Planck keyboard firmware ====================== DIY/Assembled compact ortholinear 40% 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/planck 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 -``` +### Default +To build with the default keymap, simply run `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_.c` and see keymap document (you can find in top README.md) and existent keymap files. - -####**Extended Keymaps** +### 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 `.c` and see keymap document (you can find in top README.md) and existent keymap files. -To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: ``` -$ make KEYMAP=[common|jack|] +$ make KEYMAP=[default|jack|] ``` -_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\.c__** +Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. -####**Common Keymaps** - -Building with a common keymap is as simple as adding the COMMON option. Note that only -``` -$ make KEYMAP=[common|jack|] COMMON=true -``` -_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\.c__** - -## Notable TMK forks (which some of the keymap files are from) +### Notable 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) diff --git a/keyboard/preonic/__avr_gdbinit b/keyboard/preonic/__avr_gdbinit deleted file mode 100644 index afc51e6d19..0000000000 --- a/keyboard/preonic/__avr_gdbinit +++ /dev/null @@ -1,6 +0,0 @@ -define reset -SIGNAL SIGHUP -end -file planck_lufa.elf -target remote localhost:4242 -break main diff --git a/keyboard/preonic/analog.c b/keyboard/preonic/analog.c deleted file mode 100644 index 49b84ee0e8..0000000000 --- a/keyboard/preonic/analog.c +++ /dev/null @@ -1,53 +0,0 @@ -// Simple analog to digitial conversion - -#include -#include -#include -#include "analog.h" - - -static uint8_t aref = (1<= 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< - -void analogReference(uint8_t mode); -int16_t analogRead(uint8_t pin); -int16_t adc_read(uint8_t mux); - -#define ADC_REF_POWER (1< -#include -#include -#include - -#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<> 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< 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 diff --git a/keyboard/preonic/beeps.h b/keyboard/preonic/beeps.h deleted file mode 100644 index 378983c605..0000000000 --- a/keyboard/preonic/beeps.h +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include -#include -#include - -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 diff --git a/keyboard/preonic/config.h b/keyboard/preonic/config.h index cad269c9d4..5528667fa7 100644 --- a/keyboard/preonic/config.h +++ b/keyboard/preonic/config.h @@ -18,11 +18,11 @@ along with this program. If not, see . #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 @@ -34,7 +34,10 @@ along with this program. If not, see . /* 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 @@ -55,6 +58,15 @@ along with this program. If not, see . 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. diff --git a/keyboard/preonic/config_definitions.h b/keyboard/preonic/config_definitions.h deleted file mode 100644 index fd138b8841..0000000000 --- a/keyboard/preonic/config_definitions.h +++ /dev/null @@ -1,50 +0,0 @@ -#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 - diff --git a/keyboard/preonic/extended_keymap_common.c b/keyboard/preonic/extended_keymap_common.c deleted file mode 100644 index 4fa80de7cf..0000000000 --- a/keyboard/preonic/extended_keymap_common.c +++ /dev/null @@ -1,216 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "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 - -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]) }; -} diff --git a/keyboard/preonic/extended_keymap_common.h b/keyboard/preonic/extended_keymap_common.h deleted file mode 100644 index 7ccfa1b039..0000000000 --- a/keyboard/preonic/extended_keymap_common.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifndef KEYMAP_H -#define KEYMAP_H - -#include -#include -#include "action.h" -#include -#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 diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_default.c b/keyboard/preonic/extended_keymaps/extended_keymap_default.c deleted file mode 100644 index b52f60fd08..0000000000 --- a/keyboard/preonic/extended_keymaps/extended_keymap_default.c +++ /dev/null @@ -1,70 +0,0 @@ -#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; -}; diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c b/keyboard/preonic/extended_keymaps/extended_keymap_lock.c deleted file mode 100644 index ec7bc776ac..0000000000 --- a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c +++ /dev/null @@ -1,81 +0,0 @@ -#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; -}; diff --git a/keyboard/preonic/keymap_midi.c b/keyboard/preonic/keymap_midi.c deleted file mode 100644 index a0fa59990c..0000000000 --- a/keyboard/preonic/keymap_midi.c +++ /dev/null @@ -1,110 +0,0 @@ -/* -Copyright 2015 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 . -*/ - -#include "extended_keymap_common.h" -#include "keymap_midi.h" -#include - -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 diff --git a/keyboard/preonic/keymap_midi.h b/keyboard/preonic/keymap_midi.h deleted file mode 100644 index c5917f884e..0000000000 --- a/keyboard/preonic/keymap_midi.h +++ /dev/null @@ -1,220 +0,0 @@ -/* -Copyright 2015 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 . -*/ - -#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 diff --git a/keyboard/preonic/led.c b/keyboard/preonic/led.c deleted file mode 100644 index 2c05746607..0000000000 --- a/keyboard/preonic/led.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright 2012 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include -#include "stdint.h" -#include "led.h" - - -void led_set(uint8_t usb_led) -{ - // // Using PE6 Caps Lock LED - // if (usb_led & (1<. -*/ - -/* - * scan matrix - */ -#include -#include -#include -#include -#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<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 From b8ac5095708b5023f5e3e375b22534f8b395741f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 30 Mar 2016 00:45:37 -0400 Subject: [PATCH 05/14] .hex files --- keyboard/preonic/Makefile | 4 +- keyboard/preonic/preonic_pcb.hex | 1702 +++++++++++++++++++++++ keyboard/preonic/preonic_pcb_silent.hex | 1189 ++++++++++++++++ 3 files changed, 2893 insertions(+), 2 deletions(-) create mode 100644 keyboard/preonic/preonic_pcb.hex create mode 100644 keyboard/preonic/preonic_pcb_silent.hex diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 664aff7321..89c48e50a9 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # 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 +# 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. diff --git a/keyboard/preonic/preonic_pcb.hex b/keyboard/preonic/preonic_pcb.hex new file mode 100644 index 0000000000..5bdc190e1d --- /dev/null +++ b/keyboard/preonic/preonic_pcb.hex @@ -0,0 +1,1702 @@ +:100000000C94D4020C9418030C9418030C94180349 +:100010000C9418030C9418030C9418030C941803F4 +:100020000C9418030C9418030C94E8160C94BA174B +:100030000C946C290C9418030C9418030C9418035A +:100040000C9418030C9418030C9418030C941803C4 +:100050000C9418030C94D9290C9418030C941803CD +:100060000C9418030C9418030C9418030C941803A4 +:100070000C9418030C9418030C9418030C94180394 +:100080000C941C0E0C9418030C9418030C94180375 +:100090000C9418030C9418030C9418030C94180374 +:1000A0000C9418030C9418030C941803076342363D +:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9 +:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD +:1000D0000000803F08000000BE922449123EABAAF7 +:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52 +:1000F000AA3E00000000BF000000803F000000009A +:1001000000084178D3BB4387D1133D190E3CC3BDD2 +:100110004282AD2B3E68EC8276BED98FE1A93E4C7F +:1001200080EFFFBE01C4FF7F3F00000000003500EC +:100130001E001F00200021002200230024002500B3 +:10014000260027002A002B0014001A0008001500C2 +:1001500017001C0018000C00120013002A002900D0 +:1001600004001600070009000A000B000D000E0035 +:100170000F0033003400E1001D001B0006001900D1 +:10018000050011001000360037003800280000304C +:10019000E000E200E30003522C002C000452500067 +:1001A000510052004F0035001E001F0020002100AA +:1001B0002200230024002500260027002A002B000F +:1001C00014001A00090013000A000D000F001800A7 +:1001D0001C0033002A002900040015001600170037 +:1001E00007000B00110008000C0012003400E100B1 +:1001F0001D001B000600190005000E00100036004F +:100200003700380028000030E000E200E30003522D +:100210002C002C0004525000510052004F003500B9 +:100220001E001F00200021002200230024002500C2 +:10023000260027002A002B00340036003700130068 +:100240001C0009000A00060015000F002A00290002 +:1002500004001200080018000C0007000B00170033 +:10026000110016003800E100330014000D000E00EC +:100270001B00050010001A0019001D0028000030A6 +:10028000E000E200E30003522C002C000452500076 +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00350212 +:1002B0001E021F0220022102220223022402250222 +:1002C000260227022A0001003A003B003C003D00C4 +:1002D0003E003F002D022E022F02300231020100AB +:1002E00040004100420043004400450000530153D8 +:1002F0000253005001000100010001000100010053 +:10030000010001000100AB00AA00A900AE00350009 +:100310001E001F00200021002200230024002500D1 +:10032000260027002A0035001E001F0020002100A3 +:100330002200230024002500260027002A000100B7 +:100340003A003B003C003D003E003F002D002E00E7 +:100350002F00300031000100400041004200430006 +:1003600044004500005301530253005001000100B6 +:100370000100010001000100010001000100AB00CB +:10038000AA00A900AE002A035400680065002000FE +:100390005000720065006F006E006900630020006D +:1003A0004B006500790062006F006100720064001C +:1003B00000002C034F007200740068006F006C0096 +:1003C00069006E0065006100720020004B0065004E +:1003D000790062006F006100720064007300000029 +:1003E000040309040902D000060100A0FA09040070 +:1003F000000103010100092111010001223F000752 +:1004000005810308000A0904010001030102000933 +:100410002111010001224D000705820308000A098D +:10042000040200010300000009211101000122362D +:10043000000705830308000A090403000203000003 +:10044000000921110100012220000705840320007A +:100450000107050403200001090404000001010054 +:100460000009240100010900010509040500020139 +:1004700003000007240100014100062402010100DD +:1004800006240202020009240301030102010009FB +:1004900024030204010101000905060240000500D1 +:1004A0000005250101010905850240000500000540 +:1004B000250101031201100100000008EDFE61603A +:1004C0000100010200010631FF0974A1010975153F +:1004D0000025FF9520750881020976150025FF95F6 +:1004E0002075089102C005010980A101850216014D +:1004F0000026B7001A01002AB70075109501810087 +:10050000C0050C0901A1018503160100269C021AF1 +:1005100001002A9C02751095018100C005010902A5 +:10052000A1010901A10005091901290515002501ED +:100530009505750181029501750381010501093059 +:1005400009311581257F95027508810609381581C5 +:10055000257F950175088106050C0A38021581254D +:100560007F950175088106C0C005010906A1010536 +:100570000719E029E7150025019508750181029505 +:100580000175088101050819012905950575019175 +:10059000029501750391010507190029FF15002532 +:1005A000FF950675088100C011241FBECFEFDAE069 +:1005B000DEBFCDBF04B603FE24C080910404909139 +:1005C0000504A0910604B09107048730904BA74022 +:1005D000B04BB9F410920404109205041092060472 +:1005E0001092070414BE84B7877F84BF88E10FB6DA +:1005F000F89480936000109260000FBEE0E0F8E392 +:10060000099512E0A0E0B1E0EEE1F9E602C0059044 +:100610000D92A832B107D9F714E0A8E2B2E001C008 +:100620001D92A430B107E1F70E94A0130C948D3401 +:100630000C94000061110DC0FC018281882331F00F +:1006400085EE0E94671E0E94683003C085EE0E94FE +:100650002F1F80E090E008950E940F0E40E050E0D0 +:1006600069E070E080E091E00C94600F08950E94D2 +:1006700049036E9A769A8CE293E0892B11F00C94E0 +:100680002C03089586E393E0892B11F00C94360334 +:100690000895279A2F988FEF9FEF9093870080936C +:1006A00086008AE08093800089E1809381000C9429 +:1006B000113081110BC080918000877F8093800072 +:1006C00010928D0010928C002F9808952F988330EF +:1006D00041F4809180008860809380008FEF9FEFCD +:1006E00012C09091800098609093800023E030E0E9 +:1006F000281B3109220F331F8FEF9FEF02C0969501 +:1007000087952A95E2F790938D0080938C00089549 +:100710008B3B910568F4883A910530F5853A91054F +:10072000C0F48430910598F4019709F06FC071C04E +:10073000803E910508F46AC0883E910540F09C0116 +:10074000205F31092031310508F060C05CC09C0198 +:10075000A1C0853A910509F45FC0863A910509F474 +:100760005EC023E830E496C0883A910509F45AC087 +:10077000893A910509F459C08A3A910509F458C09B +:100780008B3A910509F457C08C3A910509F456C08B +:100790008D3A910509F455C0803B910509F454C088 +:1007A0008E3A910509F453C08F3A910509F452C06D +:1007B000813B910509F451C0823B910509F450C079 +:1007C000833B910509F44FC0843B910509F44EC069 +:1007D000853B910509F44DC0863B910509F44CC059 +:1007E000873B910509F44BC0883B910509F44AC049 +:1007F000893B910509F449C08A3B910509F048C03D +:100800002AE236E447C09C01306544C020E030E075 +:1008100041C021E030E03EC021E830E43BC022E8A6 +:1008200030E438C022EE34E435C029EE34E432C07E +:100830002AEE34E42FC025EB34E42CC026EB34E45C +:1008400029C027EB34E426C02CEC34E423C02DEC83 +:1008500034E420C023E835E41DC02AE835E41AC09A +:1008600022E935E417C024E935E414C021E236E476 +:1008700011C023E236E40EC024E236E40BC025E2C8 +:1008800036E408C026E236E405C027E236E402C0BA +:1008900020E034E4C90108959CE0799FF00111241F +:1008A0009CE3899FE00DF11D1124E60FF11DEE0F71 +:1008B000FF1FE25DFE4F25913491C9010895880F15 +:1008C000991F82559040FC0125913491C9010895EA +:1008D000880F991F825D9E4FFC0125913491C901BB +:1008E00008950E944C049C019A9581159F4110F433 +:1008F000C9010895C90190528115904128F4C90198 +:100900009F700E9468040895C90190538115904119 +:1009100020F4C9019927906C0895C901905440971B +:1009200028F4C9018F709927946D0895203180E4CF +:10093000380719F480E091ED0895213190E43907EA +:1009400019F480E090ED0895223140E4340719F461 +:1009500080E092ED0895233180E4380719F480E0B7 +:1009600093ED0895211590E5390799F40E945623D7 +:1009700040E065E088E491E00E94600F2FEF44E3DF +:100980008CE0215040408040E1F700C000000C9412 +:10099000FE29213090E5390731F48091F002816021 +:1009A0008093F0020895C90190558115904108F097 +:1009B00062C0432F55274F70552741305105F9F438 +:1009C000C90174E0880F991F7A95E1F78827937021 +:1009D000B901E3E0660F771FEA95E1F760767727C4 +:1009E000862B972B9C682370332702C0440F551F1A +:1009F0002A95E2F74F715527842B952B08954230A5 +:100A0000510529F4922F8827816F906A0895433009 +:100A10005105B9F4C90153E0880F991F5A95E1F7C0 +:100A2000807E97702370332741E050E002C0440F6E +:100A3000551F2A95E2F74F715527842B952B9C68FB +:100A400008954430510589F5C90143E0880F991F85 +:100A50004A95E1F7807E97702370332741E050E09C +:100A600002C0440F551F2A95E2F74F715527842B7A +:100A7000952B9A680895C90190568115904118F4F4 +:100A8000C901906F0895C90190578115904120F4D4 +:100A9000C9019F7090620895C901905881159041D5 +:100AA00020F4C9019F70906A0895203E3105E0F45A +:100AB000203C310568F52133310509F475C048F44F +:100AC0002932310509F46BC02A32310509F07BC0A7 +:100AD00075C02933310501F122383105E9F025339C +:100AE000310509F070C051C0233E3105B1F140F429 +:100AF000203E3105D1F0223E310509F064C01CC012 +:100B0000263E310579F1273E310509F05CC038C039 +:100B1000C9010E945F0408958091010380FD02C015 +:100B200081FF51C080EE90E04FC08091010380FFB3 +:100B3000F9CF89E390E048C08091010382FF0AC0A9 +:100B40008091010384FF03C080E090E03DC083EE0C +:100B500090E03AC082EE90E037C08091010382FFBE +:100B6000EFCFF8CF8091010383FF07C0809101038D +:100B700084FDEACF87EE90E027C086EE90E024C0A7 +:100B80008091010383FFF2CFF8CF8091010385FFAD +:100B900003C089E290E018C085E390E015C0809121 +:100BA000010385FDF9CFF5CF8091010386FF03C0D6 +:100BB0008AE290E009C081E390E006C080910103E1 +:100BC00086FDF9CFF5CFC9010E94880308950895E5 +:100BD0005F926F927F928F929F92AF92BF92CF92CD +:100BE000DF92EF92FF920F931F93CF93DF93CDB7D6 +:100BF000DEB72A970FB6F894DEBF0FBECDBF9E01B9 +:100C00002F5F3F4F4E018BE0880E911C60E070E03B +:100C100000E010E0E12CF12CC12CD12CA12CB12C46 +:100C20008AE0782E622E532E41E050E0E3E9F1E0B5 +:100C3000A62DB52D872D01900D928A95E1F7F9012A +:100C4000819191919F01FC01E07FFF27E032F10546 +:100C500059F48F709927FA0102C0EE0FFF1F8A9591 +:100C6000E2F7AE2ABF2A37C0E033F10559F48F709E +:100C70009927FA0102C0EE0FFF1F8A95E2F7CE2AEC +:100C8000DF2A29C0E034F10559F48F709927FA0161 +:100C900002C0EE0FFF1F8A95E2F7EE2AFF2A1BC063 +:100CA000E035F10559F48F709927FA0102C0EE0F73 +:100CB000FF1F8A95E2F70E2B1F2B0DC0E036F105C2 +:100CC00051F48F709927FA0102C0EE0FFF1F8A9529 +:100CD000E2F76E2B7F2B2815390509F0A7CF94B1C9 +:100CE0008A2D8095892384B985B18A2985B997B1E0 +:100CF0008C2D8095892387B988B18C2988B99AB1C0 +:100D00008E2D809589238AB98BB18E298BB99DB19F +:100D1000802F809589238DB98EB1802B8EB990B3A9 +:100D2000862F8095892380BB81B3862B81BB2A9631 +:100D30000FB6F894DEBF0FBECDBFDF91CF911F91EC +:100D40000F91FF90EF90DF90CF90BF90AF909F906A +:100D50008F907F906F905F9008955F926F927F92D7 +:100D60008F929F92AF92BF92CF92DF92EF92FF92BB +:100D70000F931F93CF93DF93CDB7DEB768970FB66E +:100D8000F894DEBF0FBECDBF85B7806885BF85B73D +:100D9000806885BF0E94E8059E012F5F3F4F4E018E +:100DA00089E1880E911C60E070E000E010E0E12C29 +:100DB000F12CC12CD12CA12CB12C98E1792E622ED2 +:100DC000532E41E050E0EDE9F1E0A62DB52D872D41 +:100DD00001900D928A95E1F7F901819191919F011E +:100DE000FC01E07FFF27E032F10559F48F7099276D +:100DF000FA0102C0EE0FFF1F8A95E2F7AE2ABF2A62 +:100E000037C0E033F10559F48F709927FA0102C019 +:100E1000EE0FFF1F8A95E2F7CE2ADF2A29C0E034C1 +:100E2000F10559F48F709927FA0102C0EE0FFF1FE8 +:100E30008A95E2F7EE2AFF2A1BC0E035F10559F446 +:100E40008F709927FA0102C0EE0FFF1F8A95E2F713 +:100E50000E2B1F2B0DC0E036F10551F48F70992732 +:100E6000FA0102C0EE0FFF1F8A95E2F76E2B7F2B6F +:100E70002815390509F0A7CF94B18A2D80958923CB +:100E800084B985B18A2985B997B18C2D809589233C +:100E900087B988B18C2988B99AB18E2D809589231C +:100EA0008AB98BB18E298BB99DB1802F809589230A +:100EB0008DB98EB1802B8EB990B3862F8095892302 +:100EC00080BB81B3862B81BB10922902109228022D +:100ED000109233021092320210922B0210922A02C8 +:100EE000109235021092340210922D0210922C02B0 +:100EF000109237021092360210922F0210922E0298 +:100F0000109239021092380210923102109230027F +:100F100010923B0210923A0287E393E0892BB9F0DA +:100F200068960FB6F894DEBF0FBECDBFDF91CF91AC +:100F30001F910F91FF90EF90DF90CF90BF90AF90F7 +:100F40009F908F907F906F905F900C94370368967E +:100F50000FB6F894DEBF0FBECDBFDF91CF911F91CA +:100F60000F91FF90EF90DF90CF90BF90AF909F9048 +:100F70008F907F906F905F9008955F926F927F92B5 +:100F80008F929F92AF92BF92CF92DF92EF92FF9299 +:100F90000F931F93CF93DF93CDB7DEB7A2970FB612 +:100FA000F894DEBF0FBECDBF7E0149E1E40EF11C17 +:100FB00022E3C22E22E0D22E5E0153E2A50EB11C26 +:100FC0003AE0532E470101E010E048E1642E55E07D +:100FD000752EE3E9F1E0D401852D01900D928A95FB +:100FE000E1F7F701819191917F019C01207F3327E7 +:100FF0002032310589F424B18F709927A80102C0ED +:10100000440F551F8A95E2F7CA01242B24B995B1E4 +:101010008095892385B94FC02033310589F427B1E4 +:101020008F709927F80102C0EE0FFF1F8A95E2F733 +:10103000CF012E2B27B998B18095892388B93BC061 +:101040002034310589F42AB18F709927A80102C094 +:10105000440F551F8A95E2F7CA01242B2AB99BB188 +:10106000809589238BB927C02035310589F42DB1AE +:101070008F709927F80102C0EE0FFF1F8A95E2F7E3 +:10108000CF012E2B2DB99EB1809589238EB913C027 +:101090002036310581F420B38F709927A80102C052 +:1010A000440F551F8A95E2F7CA01242B20BB91B348 +:1010B0008095892381BB50EA5A95F1F7BE016F5F95 +:1010C0007F4F80E090E020E030E0EDE9F1E0DE01EC +:1010D0001196462D01900D924A95E1F7FB01419141 +:1010E0005191BF01FA01E07FFF27E032F10511F4D1 +:1010F000E3B113C0E033F10511F4E6B10EC0E03402 +:10110000F10511F4E9B109C0E035F10511F4ECB1D4 +:1011100004C0E036F105B9F4EFB1F0E04F705527A7 +:1011200002C0F595E7954A95E2F7E0FD08C0A801F1 +:10113000022E02C0440F551F0A94E2F702C040E09D +:1011400050E0842B952B2F5F3F4F2C30310509F059 +:10115000BCCFF601208131812817390721F0918316 +:101160008083709270010E94E805F2E0CF0ED11CDE +:10117000EA14FB0409F02DCF809170018823A1F1BE +:10118000815080937001882339F08FE99FE00197A7 +:10119000F1F700C0000028C0809132029091330224 +:1011A0009093290280932802809134029091350215 +:1011B00090932B0280932A028091360290913702FD +:1011C00090932D0280932C028091380290913902E5 +:1011D00090932F0280932E0280913A0290913B02CD +:1011E000909331028093300282E493E0892B11F0D6 +:1011F0000E94420381E0A2960FB6F894DEBF0FBEB4 +:10120000CDBFDF91CF911F910F91FF90EF90DF90B5 +:10121000CF90BF90AF909F908F907F906F905F9096 +:101220000895E82FF0E0EE0FFF1FE85DFD4F80818D +:10123000918108950895CF92DF92EF92FF920F93DC +:101240001F93CF93DF93CDB7DEB7CC5BD2400FB601 +:10125000F894DEBF0FBECDBF8C01862F642F88238C +:1012600079F0F80192812FE7482F992329F083E044 +:1012700093E00E94C41904C083E093E00E94D41953 +:10128000F80180818B3091F59181943009F0A8C2EA +:101290009281809173019923B1F08F5F80937301E4 +:1012A00096E4E5EBF1E0DE01A958BD4F01900D9207 +:1012B0009A95E1F7E0917101F0917201EE0FFF1F35 +:1012C00027E732E036C096E4E5EBF1E0DE01AF5C03 +:1012D000BD4F01900D929A95E1F7E0917101F09167 +:1012E0007201EE0FFF1F21E332E093C08A3009F054 +:1012F000CBC0F8019181943009F072C29281809143 +:101300007301992309F473C081508093730196E4AB +:10131000E5EBF1E0DE01A551BE4F01900D929A95EB +:10132000E1F7E0917101F0917201EE0FFF1F2BEEDA +:1013300031E02C0F3D1FE20FF31F60817181680FB8 +:10134000711D882777FD8095982F0E94AC3120E091 +:1013500030E040E451E40E94113120E030E040E808 +:1013600050E40E94A9309B01AC0160E070E080E095 +:1013700090E40E94C33221E230ED42E053E40E9447 +:1013800060324CE050E00E94BB0F20E04BE760E091 +:1013900083E093E00E94B41920E04BE761E083E032 +:1013A00093E00E94B41920E04BE762E083E093E011 +:1013B0000E94B41920E04BE763E083E093E00E94D1 +:1013C000B41920E04BE764E083E093E0C454DD4FC0 +:1013D0000FB6F894DEBF0FBECDBFDF91CF911F9146 +:1013E0000F91FF90EF90DF90CF900C94B41996E49A +:1013F000E5EBF1E0DE01AB55BE4F01900D929A9501 +:10140000E1F7E0917101F0917201EE0FFF1F25EA03 +:1014100031E02C0F3D1FE20FF31F60817181680FD7 +:10142000711D882777FD8095982F0E94AC3120E0B0 +:1014300030E040E451E40E94113120E030E040E827 +:1014400050E40E94A9309B01AC0160E070E080E0B4 +:1014500090E40E94C33221E230ED42E053E40E9466 +:1014600060320E94EB0CC454DD4F0FB6F894DEBF1F +:101470000FBECDBFDF91CF911F910F91FF90EF90E5 +:10148000DF90CF900C94BE0C893009F0D3C0F801E6 +:101490009181943009F0A4C19281992309F4A0C1EB +:1014A00080917101909172010196909372018093E5 +:1014B000710120E04BE760E083E093E00E94B41903 +:1014C00020E04BE761E083E093E00E94B41920E064 +:1014D0004BE762E083E093E00E94B41920E04BE721 +:1014E00063E083E093E00E94B41920E04BE764E0FE +:1014F00083E093E00E94B4190E94BE0C00E010E06B +:10150000E6E4FE2E80917301E5EBF1E0DE01A15AE5 +:10151000BE4F9F2D01900D929A95E1F7E0917101D8 +:10152000F0917201E00FF11FEE0FFF1F2FE531E088 +:101530002C0F3D1FE20FF31F60817181680F711D39 +:10154000882777FD8095982F0E94AC3120E030E00D +:1015500040E451E40E94113120E030E040E850E4E2 +:101560000E94A9309B01AC0160E070E080E090E453 +:101570000E94C33221E230ED42E053E40E94603227 +:101580004CE050E00E94BB0F3FEF87EE93E03150FC +:1015900080409040E1F700C0000080917301E5EBCE +:1015A000F1E0DE01A75EBE4F9F2D01900D929A954E +:1015B000E1F7E0917101F0917201E00FF11FEE0F80 +:1015C000FF1F29E131E02C0F3D1FE20FF31F608167 +:1015D0007181680F711D882777FD8095982F0E9473 +:1015E000AC3120E030E040E451E40E94113120E0D1 +:1015F00030E040E850E40E94A9309B01AC0160E07B +:1016000070E080E090E40E94C33221E230ED42E0DD +:1016100053E40E9460320E94EB0C8FEF9CE701972D +:10162000F1F700C000000F5F1F4F0830110509F0EF +:1016300069CF94C1883009F0D3C0F801918194300A +:1016400009F0CEC09281992309F4CAC0809171013A +:10165000909172010197909372018093710120E043 +:101660004BE760E083E093E00E94B41920E04BE791 +:1016700061E083E093E00E94B41920E04BE762E070 +:1016800083E093E00E94B41920E04BE763E083E03D +:1016900093E00E94B41920E04BE764E083E093E01C +:1016A0000E94B4190E94BE0C00E010E056E4F52E32 +:1016B00080917301E5EBF1E0DE01AD52BF4F9F2D4C +:1016C00001900D929A95E1F7E0917101F09172010C +:1016D000E00FF11FEE0FFF1F23ED30E02C0F3D1F39 +:1016E000E20FF31F60817181680F711D882777FDFC +:1016F0008095982F0E94AC3120E030E040E451E426 +:101700000E94113120E030E040E850E40E94A9300E +:101710009B01AC0160E070E080E090E40E94C33285 +:1017200021E230ED42E053E40E9460324CE050E0B0 +:101730000E94BB0F3FEF87EE93E031508040904016 +:10174000E1F700C0000080917301E5EBF1E0DE01FC +:10175000A357BF4F9F2D01900D929A95E1F7E0910D +:101760007101F0917201E00FF11FEE0FFF1F2DE8E4 +:1017700030E02C0F3D1FE20FF31F60817181680F75 +:10178000711D882777FD8095982F0E94AC3120E04D +:1017900030E040E451E40E94113120E030E040E8C4 +:1017A00050E40E94A9309B01AC0160E070E080E051 +:1017B00090E40E94C33221E230ED42E053E40E9403 +:1017C00060320E94EB0C8FEF9CE70197F1F700C0AD +:1017D00000000F5F1F4F0830110509F069CFBEC030 +:1017E000F801228190917301222309F45DC026E45F +:1017F000E5EBF1E0DE01A95BBF4F01900D922A9568 +:10180000E1F7E0917101F0917201E80FF11DEE0F27 +:10181000FF1F27E430E02C0F3D1FE20FF31F608114 +:101820007181690F711D882777FD8095982F0E941F +:10183000AC3120E030E040E451E40E9411316B0112 +:101840007C01F801818165E070E0681B71098827DF +:1018500077FD8095982F0E94AC319B01AC01C701A8 +:10186000B6010E94A9309B01AC0160E070E080E00D +:1018700090E40E94C33221E230ED42E053E40E9442 +:1018800060324FE050E0C454DD4F0FB6F894DEBF35 +:101890000FBECDBFDF91CF911F910F91FF90EF90C1 +:1018A000DF90CF900C94BB0F26E4E5EBF1E0DE0176 +:1018B000119601900D922A95E1F7E0917101F09156 +:1018C0007201E80FF11DEE0FFF1F21E030E02C0F39 +:1018D0003D1FE20FF31F60817181690F711D882721 +:1018E00077FD8095982F0E94AC3120E030E040E4F5 +:1018F00051E40E9411316B017C01F801818165E0A6 +:1019000070E0681B7109882777FD8095982F0E94E9 +:10191000AC319B01AC01C701B6010E94A9309B010B +:10192000AC0160E070E080E090E40E94C33221E20C +:1019300030ED42E053E40E946032C454DD4F0FB6F4 +:10194000F894DEBF0FBECDBFDF91CF911F910F91F5 +:10195000FF90EF90DF90CF900C94EB0CC454DD4FD0 +:101960000FB6F894DEBF0FBECDBFDF91CF911F91B0 +:101970000F91FF90EF90DF90CF9008951092870223 +:1019800010928602809171008D7F8093710080910A +:1019900090008F7780939000109248021092470237 +:1019A00010928002109281021092820210928302A1 +:1019B00010927F0210927E02EEE5F2E0AEE4B2E019 +:1019C00011921192119211921D921D9282E0EE37A6 +:1019D000F807B1F708956F927F928F929F92AF921E +:1019E000BF92CF92DF92EF92FF920F931F93CF930C +:1019F000DF936B017C010EE712E04CE5A42E42E080 +:101A0000B42EC7E0D0E0A7019601F801929182912F +:101A1000729162918F010E940D31882349F02197C4 +:101A2000F2E0AF1AB108CF3F8FEFD80761F734C0AB +:101A3000F8011082118212821382F5011182108244 +:101A4000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01FA +:101A5000AA0FBB1FA25BBD4FCE011AC001964481E5 +:101A600055816681778140835183628373831482B9 +:101A700015821682178212962D913C91139711961A +:101A80003C932E9313961C921E92129734961296A4 +:101A90008730910519F7C3CF809186029091870214 +:101AA000019797FD05C0909387028093860204C03A +:101AB0001092870210928602E0918602F0918702CE +:101AC0003097C9F4809171008D7F8093710080916F +:101AD00090008F7780939000109280021092810284 +:101AE000109282021092830210927F0210927E0264 +:101AF0001092470285C03197DF01AA0FBB1FAA0FC2 +:101B0000BB1FA25ABD4FCD90DD90ED90FC90EE0F23 +:101B1000FF1FE25BFD4FC081D18160908002709019 +:101B200081028090820290908302A7019601662D27 +:101B3000772D882D992D0E940D3187FF25C0262DE8 +:101B4000372D482D592DC701B6010E94A83020E03D +:101B500030E04AEF54E40E9411315B018C012A2DE0 +:101B60003B2D402F512F662D772D882D992D0E94CA +:101B7000A9303B014C01A7019601772D992D0E94B8 +:101B80000D31181664F72EC0A7019601662D772D2A +:101B9000882D992D0E945C32181634F5A701960104 +:101BA000662D772D882D992D0E94A83020E030E0F9 +:101BB0004AEF54E40E9411315B018C012A2D3B2D28 +:101BC000402F512F662D772D882D992D0E94A830FA +:101BD0003B014C01A7019601772D992D0E945C32A3 +:101BE00087FFECCF10924D02C0928002D09281020A +:101BF000E0928202F0928302D0937F02C0937E0231 +:101C0000DF91CF911F910F91FF90EF90DF90CF90D8 +:101C1000BF90AF909F908F907F906F9008953E9A65 +:101C2000E1E7F0E080818D7F808382E08093900007 +:101C30008AE18093910008951F920F920FB60F9240 +:101C40001124CF92DF92EF92FF922F933F934F9305 +:101C50005F936F937F938F939F93AF93BF93CF9334 +:101C6000DF93EF93FF9380914702882309F479C0B3 +:101C700020E030E0A90160918002709181028091A2 +:101C80008202909183020E945C3218160CF069C0A7 +:101C900020E030E040E251E46091490270914A0254 +:101CA00080914B0290914C020E945C321816BCF459 +:101CB00080918402909185020196609186027091D4 +:101CC00087020E9448349093850280938402109288 +:101CD000490210924A0210924B0210924C02C0919B +:101CE0008402D0918502CC0FDD1FCC0FDD1FC25ABC +:101CF000DD4F288139814A815B8160E074E284E7AD +:101D00009BE40E9411310E94793170939700609397 +:101D10009600288139814A815B8160E074E284E722 +:101D20009BE40E9411310E947931759567957093FB +:101D300099006093980020E030E040E85FE3609114 +:101D4000490270914A0280914B0290914C020E948C +:101D5000A9306093490270934A0280934B0290939A +:101D60004C0280914802882309F493C0C09043023A +:101D7000D0904402E0904502F090460220E030E02E +:101D8000A901C701B6010E945C321816F4F4A7013C +:101D9000960160E074E284E79BE40E9411310E94A6 +:101DA00079317093970060939600A701960160E0E7 +:101DB00074E284E79BE40E9411310E9479317595A9 +:101DC0006795709399006093980060913D027091BF +:101DD0003E026F5F7F4F70933E0260933D0280E052 +:101DE00090E00E94AA3120913F0230914002409140 +:101DF0004102509142020E945C3287FD4AC08091AC +:101E00003C028F5F80933C029091F0038917A0F011 +:101E10008091F503882319F010923C020DC0809147 +:101E200071008D7F80937100809190008F778093F7 +:101E30009000109248022DC0E091F103F091F2035E +:101E400080913C0298E0899FE00DF11D1124808172 +:101E50009181A281B3818093430290934402A09325 +:101E60004502B093460220E030E040E85EE3648142 +:101E70007581868197810E94603260933F027093E2 +:101E80004002809341029093420210923E021092CF +:101E90003D02FF91EF91DF91CF91BF91AF919F9163 +:101EA0008F917F916F915F914F913F912F91FF9013 +:101EB000EF90DF90CF900F900FBE0F901F9018956E +:101EC0000F931F93CF93DF9300D0CDB7DEB78C0174 +:101ED00080914702882331F04A8369830E94BE0CB7 +:101EE00069814A8181E0809348021093F203009354 +:101EF000F1036093F0034093F503109249021092AE +:101F00004A0210924B0210924C0210923C02F801CD +:101F10004081518162817381409343025093440216 +:101F2000609345027093460220E030E040E85EE3B3 +:101F300064817581868197810E94603260933F023F +:101F400070934002809341029093420210923E02AD +:101F500010923D02809171008260809371008091A7 +:101F600090008068809390000F900F90DF91CF9148 +:101F70001F910F9108956F927F928F929F92AF92CF +:101F8000BF92CF92DF92EF92FF920F931F93CF9366 +:101F9000DF936B017C01EA018091480281110E946C +:101FA000BE0C81E08093470220E030E0A901C70128 +:101FB000B6010E945C3218160CF09AC06090800244 +:101FC00070908102809082029090830220E030E045 +:101FD000A901662D772D882D992D0E940D31811133 +:101FE00028C0C0928002D0928102E0928202F092D8 +:101FF0008302D0937F02C0937E02809186029091EB +:102000008702FC01EE0FFF1FEE0FFF1FE25AFD4F8C +:10201000C082D182E282F382FC01EE0FFF1FE25BFD +:10202000FD4FD183C08301969093870280938602EF +:102030005FC0A7019601662D772D882D992D0E94EE +:102040000D3187FF25C0262D372D482D592DC7016D +:10205000B6010E94A83020E030E04AEF54E40E942C +:1020600011315B018C012A2D3B2D402F512F662D04 +:10207000772D882D992D0E94A9303B014C01A70195 +:102080009601772D992D0E940D31181664F7A9CF6E +:10209000A7019601662D772D882D992D0E945C321F +:1020A00018160CF09ECFA7019601662D772D882D6E +:1020B000992D0E94A83020E030E04AEF54E40E94BD +:1020C00011315B018C012A2D3B2D402F512F662DA4 +:1020D000772D882D992D0E94A8303B014C01A70136 +:1020E0009601772D992D0E945C3287FFECCF79CF36 +:1020F000809171008260809371008091900080686F +:1021000080939000DF91CF911F910F91FF90EF90FE +:10211000DF90CF90BF90AF909F908F907F906F9007 +:102120000895809191020895CF93DF9300D01F927C +:10213000CDB7DEB72091FA03243021F523E02983BF +:102140009B838A832093E9008FEF06C095ED9A95D3 +:10215000F1F70000882329F09091E800815095FF65 +:10216000F5CF8091E80085FF0DC040E050E063E0CE +:1021700070E0CE0101960E947E148091E8008E7777 +:102180008093E8000F900F900F90DF91CF9108950A +:10219000CF93DF9300D01F92CDB7DEB72091FA0323 +:1021A000243029F522E029839B838A8383E080936E +:1021B000E9008FEF06C095ED9A95F1F700008823AE +:1021C00029F09091E800815095FFF5CF8091E800CB +:1021D00085FF0DC040E050E063E070E0CE01019665 +:1021E0000E947E148091E8008E778093E8000F9023 +:1021F0000F900F90DF91CF9108952091FA03243032 +:10220000F9F422E02093E9002FEF06C035ED3A956E +:10221000F1F70000222329F03091E800215035FF2A +:10222000F5CF2091E80025FF0BC040E050E065E0CD +:1022300070E00E947E148091E8008E778093E80021 +:102240000895CF93DF93EC018091FA03843041F538 +:1022500081E08093E9008FEF06C095ED9A95F1F744 +:102260000000882329F09091E800815095FFF5CF78 +:102270008091E80085FF14C040E050E068E070E025 +:10228000CE010E947E148091E8008E778093E80052 +:1022900088E0FE01A9E8B2E001900D928A95E1F78D +:1022A000DF91CF910895BF92CF92DF92EF92FF928C +:1022B0000F931F93CF93DF937C01B62EE90100E0CB +:1022C00010E0C42ED12C0BC04991202F2B0D2F775D +:1022D0004F776FE0C7010E94B4190F5F1F4F0C15B5 +:1022E0001D0594F3DF91CF911F910F91FF90EF9017 +:1022F000DF90CF90BF90089570E06F5F7F4F6F7059 +:1023000077270C94B4190F931F93CF93C42F633086 +:10231000710509F04AC0842F807F803849F18039E7 +:1023200009F043C0622F6F7770E080E090E00E9478 +:10233000AC3120E030E040E451E40E9411319B01D7 +:10234000AC0160E070E080E090E40E94C3320F775F +:1023500010E023E0159507952A95E1F72DEC3CEC6C +:1023600042E053E40E946032A8010E94BB0F1DC0EE +:10237000622F6F7770E080E090E00E94AC3120E047 +:1023800030E040E451E40E9411319B01AC0160E077 +:1023900070E080E090E40E94C3322DEC3CEC42E01F +:1023A00053E40E9460320E94EB0CCC3F29F4CF91A1 +:1023B0001F910F910C94BE0CCF911F910F91089516 +:1023C0000F931F93CF93DF93CDB7DEB727970FB649 +:1023D000F894DEBF0FBECDBF8C0114C08A810E946D +:1023E0008E199A819D839B819E839C819F838111FD +:1023F0001EC089818430B1F08730A1F08630A1F011 +:102400008530A1F0BE016F5F7F4F84E791E00E94AD +:10241000FB1C8111E3CF84E791E00E94EC1C0E9439 +:1024200067190DC083E003C082E001C081E0AE0106 +:102430004B5F5F4F682FC8010E94211AE3CF279698 +:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5 +:102450000F910895EF92FF920F93CF93DF9300D0E7 +:1024600000D000D0CDB7DEB77B014A832B830C832D +:10247000842F2E834D830E948E192E814D818111D0 +:102480001BC082E0E816F10479F083E0E816F1045D +:1024900021F0EA94EF2821F50BC0073F11F487E003 +:1024A00001C084E089830BC0273FD9F786E0FACFCB +:1024B000473FB9F785E0F6CF42954F704983BE019B +:1024C0006F5F7F4F84E791E00E94B11C84E791E049 +:1024D0000E94CF1C84E791E00E94EC1C0E946719C7 +:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119 +:1024F0000F91FF90EF9008958091F903811109C029 +:102500000E946D160E94CA168091E200846080933A +:10251000E20008951092F9030895089508950C9427 +:102520006129809192028F5F8093920262E30E9400 +:102530002834911135C01092920280919302882321 +:1025400079F18091FA03843049F58091E9008F7028 +:102550009091EC0090FF02C090E801C090E0982BB1 +:1025600084E08093E9008091EB0080FF14C08091AB +:10257000EE0087FD03C00FC01092F1008091E800CB +:1025800085FDFACF8091E80080FF05C08091E800CA +:102590008E778093E8009F709093E90010929302E9 +:1025A000089542E061EC81E00E94E31542E061ECB5 +:1025B00082E00E94E31542E061EC83E00E94E315B3 +:1025C00042E261EC84E00E94E31542E361E885E0C9 +:1025D0000E94E31542E360E886E00C94E3158091E5 +:1025E000FC03833009F454C030F4813071F0823040 +:1025F00009F0A5C08CC08A3009F479C08B3009F489 +:102600005FC0893009F09BC020C08091FB03813AF4 +:1026100009F095C08091E800877F8093E800809161 +:10262000FF0390910004892B21F060E080E090E0AE +:1026300003C068E089E892E070E00E941C15809178 +:10264000E8008B778093E80008958091FB03813246 +:1026500009F075C08091FF0390910004892B09F067 +:102660006EC08091E800877F8093E80005C080916C +:10267000FA03882309F463C08091E80082FFF7CF52 +:102680008091F100809391028091E8008B7753C094 +:102690008091FB03813A09F052C08091FF03909131 +:1026A0000004892B09F04BC08091E800877F80935C +:1026B000E8008091E80080FFFCCF80918A0136C05D +:1026C0008091FB038132D9F58091FF039091000442 +:1026D000892BA9F58091E800877F8093E8000E940C +:1026E0001A168091FD0380938A010C9456238091E1 +:1026F000FB03813221F58091E800877F8093E80019 +:102700000E941A168091FE0380938802089580919A +:10271000FB03813AA1F48091E800877F8093E80071 +:102720008091E80080FFFCCF809188028093F100C7 +:102730008091E8008E778093E8000C941A16089533 +:1027400083E093E00E94F0196AE272E183E093E093 +:102750000E94461A60EE71E183E093E00E944A1AFB +:1027600084B7877F84BF88E10FB6F89480936000B8 +:10277000109260000FBE90E080E80FB6F89480934E +:102780006100909361000FBE0E94741D0E946D163F +:102790000E94CA168091E20084608093E2007894DF +:1027A00063E871E183E093E00E94EC196CE771E16A +:1027B00083E093E00E94E41963E571E183E093E034 +:1027C0000E94E8190E940F0E0E9467190E94761D50 +:1027D00080E891E00E94201D0BC00E941E2980917C +:1027E000F803882329F00E94492981110E94681466 +:1027F0008091FA03853089F383E093E00E94F91B0E +:102800000E94801DF5CF292F332723303105B1F0E9 +:102810004CF42130310509F44DC02230310509F066 +:102820004EC007C02132310541F12232310591F10C +:1028300046C0E0EDF0E084EE93E045C0992781309A +:10284000910569F08230910589F0892B09F037C034 +:10285000E0EEF3E0E491F0E080EE93E034C0E2EBF0 +:10286000F3E0E491F0E082EB93E02DC0E6E8F3E0E2 +:10287000E491F0E086E893E026C0643000F5E62FAE +:10288000F0E0EE0FFF1FE550FE4F80819181E9E0FF +:10289000F0E019C0643098F4E62FF0E0DF01AA0FF1 +:1028A000BB1FAD5FBD4F8D919C91E55FFD4FE081FA +:1028B000F0E009C0E2E1F0E084EB94E004C0E0E085 +:1028C000F0E080E090E0DA018D939C93CF010895D1 +:1028D00080E189BD82E189BD09B400FEFDCF809110 +:1028E000D8008F7D8093D8008091E0008260809333 +:1028F000E0008091E00081FDFCCF0895BF92CF926F +:10290000DF92EF92FF920F931F93CF93DF937C019F +:102910008B01EA010E943B16B82E811133C020972B +:1029200031F028813981021B130BE20EF31EC12CFA +:10293000D12C23C08091E80085FD15C08091E8006E +:102940008E778093E800209749F0888199818C0DDB +:102950009D1D9983888325E0B22E14C00E943B16EA +:10296000882359F00EC0F70181917F018093F10017 +:1029700001501109FFEFCF1ADF0A01151105D1F639 +:1029800001C0B82E8B2DDF91CF911F910F91FF9039 +:10299000EF90DF90CF90BF900895BF92CF92DF92DB +:1029A000EF92FF920F931F93CF93DF937C018B01E4 +:1029B000EA010E943B16B82E811133C0209731F0F6 +:1029C00028813981021B130BE20EF31EC12CD12C7E +:1029D00023C08091E80085FD15C08091E8008B77C9 +:1029E0008093E800209749F0888199818C0D9D1D86 +:1029F0009983888345E0B42E14C00E943B16882337 +:102A000059F00EC08091F100F70181937F010150D0 +:102A10001109FFEFCF1ADF0A01151105D1F601C028 +:102A2000B82E8B2DDF91CF911F910F91FF90EF90DA +:102A3000DF90CF90BF90089540910104509102041F +:102A40004617570748F06115710539F44091E800C1 +:102A50004E774093E80001C0BA01FC0140E033C06A +:102A60008091FA03882309F444C0853009F443C0F7 +:102A70008091E80083FD41C08091E80082FD33C071 +:102A80008091E80080FF1FC09091F3008091F200D8 +:102A9000392F20E0A901482BCA0106C0419140937B +:102AA000F1006150710901966115710519F08830C6 +:102AB0009105A0F341E0089709F040E08091E8001B +:102AC0008E778093E8006115710551F64111C8CFEA +:102AD0000AC08091FA03882361F0853061F080910B +:102AE000E80083FD0AC08091E80082FFF2CF80E019 +:102AF000089582E0089583E0089581E0089540916B +:102B00000104509102044617570748F061157105FA +:102B100039F44091E8004E774093E80001C0BA01D3 +:102B2000FC0140E034C08091FA03882309F445C0D9 +:102B3000853009F444C08091E80083FD42C0809153 +:102B4000E80082FD34C08091E80080FF20C09091B1 +:102B5000F3008091F200392F20E0A901482BCA012F +:102B600007C044914093F10031966150710901967C +:102B70006115710519F08830910598F341E00897C7 +:102B800009F040E08091E8008E778093E8006115BD +:102B9000710549F64111C7CF0AC08091FA03882315 +:102BA00061F0853061F08091E80083FD0AC080917A +:102BB000E80082FFF2CF80E0089582E0089583E08C +:102BC000089581E00895982F2CC09093E9009817FC +:102BD00039F07091EC002091ED005091F00003C0AD +:102BE000242F762F50E021FD02C09F5F1AC0309144 +:102BF000EB003E7F3093EB003091ED003D7F309352 +:102C0000ED003091EB0031603093EB007093EC00FD +:102C10002093ED005093F0002091EE0027FDE5CFCA +:102C200007C0973090F28F708093E90081E008959B +:102C300080E008958091FB0387FD05C08091E80046 +:102C400080FF0EC012C08091E80082FD05C0809117 +:102C5000FA038111F8CF08958091E8008B7708C0BE +:102C60008091FA038111EACF08958091E8008E7770 +:102C70008093E80008958091E4009091E50045E696 +:102C80002091EC0020FD1FC023C02091FA032223D5 +:102C900091F0253091F02091EB0025FD10C020919E +:102CA000E4003091E5002817390751F34150C9017C +:102CB00039F784E0089582E0089583E0089581E083 +:102CC000089580E008952091E80020FFDECFF9CF3D +:102CD0002091E80022FFD9CFF4CF0E94DB160E949A +:102CE000E316E0EEF0E0808181608083E8EDF0E0C3 +:102CF00080818F77808319BCA7EDB0E08C918E7FA7 +:102D00008C9380818F7E80831092F90308950F93B6 +:102D10001F93CF93DF930E94DB160E94E316C8ED4A +:102D2000D0E088818F7788838881806888838881D4 +:102D30008F7D888319BC1092FA031092F6031092CB +:102D4000F8031092F70300EE10E0F80180818B7F0A +:102D5000808388818160888342E060E080E00E9417 +:102D6000E315E1EEF0E080818E7F8083E2EEF0E01B +:102D7000808181608083808188608083F801808188 +:102D80008E7F8083888180618883DF91CF911F91BE +:102D90000F910895E8EDF0E080818F7E8083E7ED6C +:102DA000F0E080818160808384E082BF81E0809355 +:102DB000F9030C948716E8EDF0E080818E7F808324 +:102DC0001092E20008951092DA001092E100089546 +:102DD0001F920F920FB60F9211242F933F934F9390 +:102DE0005F936F937F938F939F93AF93BF93EF9373 +:102DF000FF938091E10082FF0BC08091E20082FF8F +:102E000007C08091E1008B7F8093E1000E949112C6 +:102E10008091DA0080FF1FC08091D80080FF1BC026 +:102E20008091DA008E7F8093DA008091D90080FF54 +:102E30000DC080E189BD82E189BD09B400FEFDCFEE +:102E400081E08093FA030E947C1205C019BC1092A5 +:102E5000FA030E948A128091E10080FF19C08091DC +:102E6000E20080FF15C08091E2008E7F8093E20037 +:102E70008091E20080618093E2008091D8008062BE +:102E80008093D80019BC85E08093FA030E948E12CB +:102E90008091E10084FF30C08091E20084FF2CC06B +:102EA00080E189BD82E189BD09B400FEFDCF80913A +:102EB000D8008F7D8093D8008091E1008F7E809331 +:102EC000E1008091E2008F7E8093E2008091E20039 +:102ED00081608093E2008091F603882311F084E002 +:102EE00007C08091E30087FF02C083E001C081E05A +:102EF0008093FA030E948F128091E10083FF29C022 +:102F00008091E20083FF25C08091E100877F80935C +:102F1000E10082E08093FA031092F6038091E100D1 +:102F20008E7F8093E1008091E2008E7F8093E200AB +:102F30008091E20080618093E20042E060E080E006 +:102F40000E94E3158091F00088608093F0000E9459 +:102F50008D12FF91EF91BF91AF919F918F917F91D2 +:102F60006F915F914F913F912F910F900FBE0F90F6 +:102F70001F9018951F920F920FB60F9211242F9346 +:102F80003F934F935F936F937F938F939F93AF93F1 +:102F9000BF93CF93EF93FF938091E9008F7090914F +:102FA000EC0090FF02C090E801C090E0C92FC82B50 +:102FB0001092E9008091F000877F8093F000789470 +:102FC0000E94FE171092E9008091F00088608093C3 +:102FD000F000CF70C093E900FF91EF91CF91BF91C6 +:102FE000AF919F918F917F916F915F914F913F91A1 +:102FF0002F910F900FBE0F901F9018951F93CF9396 +:10300000DF93CDB7DEB7AC970FB6F894DEBF0FBE37 +:10301000CDBFEBEFF3E08091F100819324E0E3304A +:10302000F207C9F70E94EF128091E80083FF37C1D1 +:103030008091FB039091FC03953009F488C038F42B +:103040009130B1F170F0933009F029C131C098305E +:1030500009F4F8C0993009F404C1963009F01FC191 +:103060009DC0803821F0823809F019C108C08091D4 +:10307000F7039091F803992389F082600FC0809143 +:10308000FF03909100048F7099278093E90080914D +:10309000EB0085FB882780F91092E9009091E80009 +:1030A000977F9093E8008093F1001092F100D5C0D3 +:1030B000882319F0823009F0F2C08F7121F082303C +:1030C00009F0EDC00BC08091FD03813009F0E7C02D +:1030D000933009F080E08093F8032FC08091FD03C6 +:1030E00081112BC08091FF03909100048F7099276C +:1030F000009709F4D4C08093E9002091EB0020FFF1 +:103100001CC02091FC03233021F48091EB008062ED +:1031100012C09091EB0090619093EB0021E030E0C1 +:1031200001C0220F8A95EAF72093EA001092EA0084 +:103130008091EB0088608093EB001092E900809111 +:10314000E800877F8093E8000E941A16A8C08111CA +:10315000A6C08091FD039091FE038F779927182FC9 +:103160009091E3009078982B9093E3008091E80091 +:10317000877F8093E8000E941A168091E80080FF04 +:10318000FCCF8091E30080688093E300112311F06D +:1031900083E001C082E08093FA0381C080588230CE +:1031A00008F07DC08091FD039091FE038C3D23E0EB +:1031B000920779F583E08A838AE289834FB7F8948E +:1031C000DE01139620E03EE051E2E32FF0E0509361 +:1031D0005700E49120FF03C0E295EF703F5FEF706E +:1031E0008E2F90E0EA3010F0C79601C0C0968D9304 +:1031F0009D932F5F243149F74FBF8091E800877F6F +:103200008093E8006AE270E0CE0101960E941C15EE +:1032100013C0AE01455D5F4F6091FF030E94031430 +:103220000097E9F12091E800277F2093E800BC0196 +:103230008BA59CA50E947F158091E8008B778093D9 +:10324000E8002DC0803859F58091E800877F809391 +:10325000E8008091F6038093F1008091E8008E777A +:1032600071CF81111CC09091FD039230C0F4809108 +:10327000E800877F8093E8009093F6030E941A1677 +:103280008091F603811104C08091E30087FF02C0A2 +:1032900084E001C081E08093FA030E94D112809102 +:1032A000E80083FF0AC08091E800877F8093E800F0 +:1032B0008091EB0080628093EB00AC960FB6F8949F +:1032C000DEBF0FBECDBFDF91CF911F910895CF9389 +:1032D0008091FA038823B1F08091E9008F7090917A +:1032E000EC0090FF02C090E801C090E0C92FC82B0D +:1032F0001092E9008091E80083FD0E94FE17CF70D4 +:10330000C093E900CF910895881F8827881F0895EA +:1033100091E0883F08F490E0892F0895982F907FDE +:10332000903B99F038F4903981F0903A71F09038F0 +:10333000C9F40BC0903DA1F018F4903C99F410C072 +:10334000903E19F0903F71F402C083E00895E82F99 +:10335000E15FEF3038F4F0E0E15FFD4F80810895E8 +:1033600082E0089580E008950F932F774F776F7074 +:10337000606BDC01ED91FC91022F242F462F63E05E +:1033800070E009950F9108950F932F774F776F7025 +:103390006069DC01ED91FC91022F242F462F63E040 +:1033A00070E009950F9108950F932F774F776F7005 +:1033B0006068DC01ED91FC91022F242F462F63E021 +:1033C00070E009950F910895FC017383628308955D +:1033D000FC01738F628F0895FC01758F648F0895CF +:1033E000CF93DF93EC011DA21FA21EA2BC01685D5A +:1033F0007F4F40EC88519F4F0E942D1C1B821A82E8 +:103400001D821C821F821E82198618861B861A86C0 +:103410001D861C861F861E86198A188A1B8A1A8A90 +:103420001D8A1C8A1F8A1E8A198E188E1B8E1A8E60 +:103430001D8E1C8E1F8E1E8E19A218A2DF91CF9199 +:103440000895CF92DF92FF920F931F93CF93DF9354 +:103450001F92CDB7DEB7F62E6A018C0108511F4FBF +:1034600008C0F60161916F01C80149830E94341CB4 +:1034700049818C2D841B8F15A0F30F90DF91CF9184 +:103480001F910F91FF90DF90CF900895FC01718301 +:1034900060830895FC0171A360A30895AF92BF9269 +:1034A000CF92DF92EF92FF920F931F93CF93DF9310 +:1034B00000D01F92CDB7DEB77C016B01142FB22E66 +:1034C000A02EDC0195968C9195978430F1F45A9654 +:1034D000ED91FC915B97309709F4D8C0CB0101972F +:1034E00063E070E00E943434DB01AA0FBB1FA60F1B +:1034F000B71F49832A830B834C2D4A1B9E012F5FE4 +:103500003F4FBD01C7010995B1C06230710509F493 +:1035100053C06330710529F06130710509F09CC01A +:1035200083C0842F807F803A01F130F48038B9F075 +:10353000803909F0ABC00DC0803EE9F0803F09F151 +:10354000803B09F0A3C0D7011296ED91FC9113972F +:1035500023C0D7011496ED91FC9115971DC0D7019A +:103560001696ED91FC91179717C0D7011896ED911B +:10357000FC91199711C0D7011A96ED91FC911B97F8 +:103580000BC0423F09F082C0D7011C96ED91FC911F +:103590001D97309731F47AC0309709F477C0123F05 +:1035A00021F42A2D4B2D62EF04C0612F6F702A2D5C +:1035B0004B2DC70109955AC0842F807F803D59F05B +:1035C000803F79F0803C09F061C0D7011E96ED91F3 +:1035D000FC911F9719C0D7015096ED91FC9151971E +:1035E00013C0433F31F4D7015296ED91FC915397AC +:1035F00008C0413F09F04AC0D7015496ED91FC91B3 +:103600005597309741F442C0309709F43FC0133FBB +:1036100011F0113F19F44B2D612F03C0612F6F7012 +:103620004B2DC701099522C0842F0E948819882339 +:1036300031F0D7015696ED91FC91579707C0163F90 +:1036400029F5D7015896ED91FC9159973097F1F0F3 +:10365000612FC70109950AC064307105A8F416C02E +:103660000A2D2B2D412FB601C7010995D7015E9672 +:10367000ED91FC915F97309789F00A2D2B2D412F0A +:10368000B601C70109950AC0C12CD12CD7015C969F +:10369000ED91FC915D97309719F7E8CF0F900F905F +:1036A0000F90DF91CF911F910F91FF90EF90DF90DE +:1036B000CF90BF90AF900895EF92FF920F931F931A +:1036C000CF93DF93EC01162F862F0E948819882351 +:1036D00069F0FDA081E08DA300E020E0412F61E0D2 +:1036E00070E0CE010E944E1AFDA27CC0812F0E9484 +:1036F00084194DA1882309F440C0443029F01AA34D +:1037000021E030E03FA32EA3812F0E948E1981304B +:1037100031F070F0823051F0833059F507C08DA33D +:1037200000E020E0412F61E070E01EC08DA35AC090 +:10373000103F19F0173FE9F404C084E08DA31AA3E9 +:103740003FC02EA13FA1C90163E070E00E94343464 +:103750008C0F9D1FFC0112A3B9016F5F7F4F7FA3E8 +:103760006EA30CA12BA14AA1CE010E944E1A1DA24C +:1037700039C01DA21FA21EA235C0442399F12EA15B +:103780003FA1C90163E070E00E9434347C01FE0176 +:10379000E80FF91F12A3B9016F5F7F4F7FA36EA3DC +:1037A0008130910591F082E0E816F104D9F40CA182 +:1037B0002BA14AA1CE010E944E1A8DA1843091F016 +:1037C00081E090E09FA38EA30DC0423059F400E049 +:1037D0002BA14AA1CE010E944E1A8DA1843011F076 +:1037E000FFA2EEA2DF91CF911F910F91FF90EF907A +:1037F0000895CF92DF92EF92FF920F931F93CF9392 +:10380000DF93EC01E8A1F9A1309709F009958E0149 +:1038100008511F4FC8010E94661CE12CF12CC82ED4 +:10382000D12C0FC060E0C8010E947A1C682FCE0125 +:103830000E945C1B61E0C8010E948B1C8FEFE81A9C +:10384000F80AEC14FD0470F3DF91CF911F910F91F2 +:10385000FF90EF90DF90CF900895FC014283748336 +:1038600063831182108208950F931F93CF93DF9388 +:10387000EC01062F0E94AC1C182F298130E0C901F1 +:1038800001966A8170E00E944834488150E08417B4 +:10389000950729F4812F0E94AF1C80E012C0EB81B4 +:1038A000FC81E20FF31F00832981822F90E00196B3 +:1038B0006A8170E00E9448348983812F0E94AF1C86 +:1038C00081E0DF91CF911F910F910895CF93DF9306 +:1038D000EC010E94AC1C29819881291710F0C22F9D +:1038E00002C0CA81C20FC91B0E94AF1C8C2FDF917E +:1038F000CF910895FC012081862F90E0820F911DC9 +:10390000628170E00E9448340380F481E02DE80F6A +:10391000F91F808108950F931F93CF93DF931F9218 +:10392000CDB7DEB78C0169830E94AC1C482FF8012B +:1039300080816981262F30E0280F311D6281C90105 +:1039400070E00E9448348083842F0F90DF91CF91E4 +:103950001F910F910C94AF1C8FB7F89408958FBFEF +:103960000895FC01CB012091FA032430B1F42181A8 +:103970002F702093E90040E050E064E070E00E9486 +:103980007E1481110BC09091E80095FD07C09091C5 +:10399000E8009E779093E800089582E008952091D2 +:1039A000FA032430A9F4FC0181818F708093E9002F +:1039B0003091F3002091F200932F80E0822B892B2D +:1039C00049F08091E8008E778093E8000C943B16D4 +:1039D00082E0089580E008952091FA03243051F4A4 +:1039E000FC0121812F702093E9002091E80020FD47 +:1039F0000C94CF1C0895FC01CB012091FA032430D4 +:103A000011F080E0089526812F702093E900209125 +:103A1000E80022FFF6CF2091E80025FFF2CF40E03A +:103A200050E064E070E00E94CD148091E80085FDD4 +:103A300005C08091E8008B778093E80081E00895CD +:103A400090939502809394020895E0919402F091EE +:103A50009502309721F00190F081E02D099480E0EB +:103A60000895E0919402F0919502309721F0028040 +:103A7000F381E02D09940895E0919402F09195026C +:103A8000309721F00480F581E02D0994089520916C +:103A90009602309197028217930771F090939702E4 +:103AA00080939602E0919402F0919502309721F074 +:103AB0000680F781E02D09940895209198023091B5 +:103AC00099028217930771F090939902809398025C +:103AD000E0919402F0919502309721F00084F185F5 +:103AE000E02D0994089508950C94731D0E94952962 +:103AF0000E94AD060E94692A0C9411300C94E705CF +:103B00005F926F927F928F929F92AF92BF92CF926D +:103B1000DF92EF92FF920F931F93CF93DF93CDB776 +:103B2000DEB72A970FB6F894DEBF0FBECDBF0E9456 +:103B3000BD079AE9C92E92E0D92E00E010E0AA2430 +:103B4000A394B12C502E802F0E9411093C01F60144 +:103B5000E190F1906F01E826F926E114F10431F4C7 +:103B60000F5F1F4F0530110569F73AC08091F002D1 +:103B700081FD0E941A0920E030E04501022E02C0BA +:103B8000880C991C0A94E2F7C4018E219F21892B8D +:103B900009F12E835F826820792081E0672809F48B +:103BA00080E088870E949E298160782F9A87898784 +:103BB0004E815F8168858A850E94391EF801EE0F6B +:103BC000FF1FE656FD4F80819181882599259183BD +:103BD000808316C02F5F3F4F2C30310571F6C0CF68 +:103BE0008FEF89838A831B820E949E298160782FB0 +:103BF0009D838C8349815A816B818D810E94391EFE +:103C00000E94562D1091A4020E94251D1817D9F06C +:103C10000E94251D8093A4022A960FB6F894DEBF59 +:103C20000FBECDBFDF91CF911F910F91FF90EF900D +:103C3000DF90CF90BF90AF909F908F907F906F90CC +:103C40005F900C947E1D2A960FB6F894DEBF0FBECF +:103C5000CDBFDF91CF911F910F91FF90EF90DF903B +:103C6000CF90BF90AF909F908F907F906F905F901C +:103C70000895CF93DF93CDB7DEB72B970FB6F894A7 +:103C8000DEBF0FBECDBF4F83588769877A878B878A +:103C9000DE01119686E0FD0111928A95E9F785E033 +:103CA000FE01379601900D928A95E1F749815A817C +:103CB0006B817C818D819E810E9415262B960FB68B +:103CC000F894DEBF0FBECDBFDF91CF910895CF93A3 +:103CD000C82F882309F4C1C0823859F40E94251DD9 +:103CE00081FDBBC089E30E947C280E94F82889E3FB +:103CF0000CC0833879F40E94251D80FDAEC083E599 +:103D00000E947C280E94F82883E50E949E28CF917B +:103D10000C94F828843859F40E94251D82FD9DC01A +:103D200087E40E947C280E94F82887E4EECF845024 +:103D3000813A48F48C2F0E94732F81118EC08C2FF2 +:103D40000E947C28E4CF8C2F805E883050F4C770AE +:103D500081E090E001C0880FCA95EAF70E94BF2871 +:103D6000D6CF8C2F855A833078F4C53A29F0C63ADD +:103D700031F482E890E005C081E890E002C083E879 +:103D800090E0CF910C94471D8C2F885A833108F016 +:103D900064C0C83A39F1C93A41F1CA3A49F1CB3A5B +:103DA00051F1CC3A59F1CD3A61F1C03B69F1CE3ACB +:103DB00071F1CF3A79F1C13B81F1C23B89F1C33B4B +:103DC00091F1C43B99F1C53BA1F1C63BA9F1C73BB9 +:103DD000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2AF +:103DE00092E038C082EE90E035C089EE90E032C0BB +:103DF0008AEE90E02FC085EB90E02CC086EB90E03F +:103E000029C087EB90E026C08CEC90E023C08DECBD +:103E100090E020C083E891E01DC08AE891E01AC0DC +:103E200082E991E017C084E991E014C081E292E058 +:103E300011C083E292E00EC084E292E00BC085E202 +:103E400092E008C086E292E005C087E292E002C0FC +:103E500080E090E0CF910C945D1DCF910895882370 +:103E600009F44DC0823859F40E94251D81FF47C0D6 +:103E700089E30E947C280E94F82889E30CC08338DB +:103E800071F40E94251D80FF3AC083E50E947C28C2 +:103E90000E94F82883E50E949E280C94F828843814 +:103EA00059F40E94251D82FF2AC087E40E947C28C5 +:103EB0000E94F82887E4EFCF982F9450913A08F4A5 +:103EC000EACF982F905E983058F4282F277081E021 +:103ED00090E001C0880F2A95EAF70E94C528DDCF3F +:103EE000982F955A933020F480E090E00C94471D71 +:103EF000885A833120F480E090E00C945D1D089591 +:103F0000882321F00E94BF280C94F8280895882364 +:103F100021F00E94C5280C94F8280895BF92CF92F2 +:103F2000DF92EF92FF920F931F93CF93DF93CDB762 +:103F3000DEB727970FB6F894DEBF0FBECDBF8C015A +:103F400085E0F801DE01119601900D928A95E1F766 +:103F5000F80130812181F280558152955F70838113 +:103F60009481892B39F02F3F41F481E090E03F3F6D +:103F700031F003C081E090E002C080E090E080FD7D +:103F800073C339832A8389819A815E830E94392889 +:103F9000B92E8F830E9438280E9460272B2D2295EE +:103FA0002F7030E05E816F812530310509F4E6C065 +:103FB0006CF4243031050CF0A2C04B2D407F8B2DCA +:103FC0008F70223031050CF045C017C02C30310500 +:103FD0004CF42A3031050CF0E7C12830310509F0E6 +:103FE00043C3E5C02D30310509F4BAC20CF4A2C2B6 +:103FF0002F30310509F038C323C3182F411101C0F8 +:1040000002C01295107FFF2059F0112309F46BC2F2 +:10401000812F6F830E94CF280E94F8286F8163C28E +:10402000862F0E942F1F112309F41EC3812F0E9487 +:10403000D52827960FB6F894DEBF0FBECDBFDF910F +:10404000CF911F910F91FF90EF90DF90CF90BF9095 +:104050000C94F828403211F08295807F662319F085 +:10406000613071F523C0FF20B1F0511101C032C0A1 +:10407000513081F527960FB6F894DEBF0FBECDBF45 +:10408000DF91CF911F910F91FF90EF90DF90CF9034 +:10409000BF900C94DF28511101C003C0513009F4C6 +:1040A000E3C28E830E94E2288E819AC1FF2021F014 +:1040B000563008F0D9C20EC0553008F0D5C290C1B4 +:1040C000FF20C9F0552331F0F801958190FF0BC214 +:1040D0009F70958327960FB6F894DEBF0FBECDBFB5 +:1040E000DF91CF911F910F91FF90EF90DF90CF90D4 +:1040F000BF900C94801F552309F472C109C22B2D67 +:1041000026952695237030E02115310529F02130C0 +:10411000310509F0A9C219C0FF2021F0862F9B2D7F +:10412000937002C080E090E027960FB6F894DEBF4F +:104130000FBECDBFDF91CF911F910F91FF90EF90F8 +:10414000DF90CF90BF900C94471DFF2021F0862F69 +:104150009B2D937002C080E090E027960FB6F894F4 +:10416000DEBF0FBECDBFDF91CF911F910F91FF90AA +:10417000EF90DF90CF90BF900C945D1D862FFF20B5 +:1041800019F00E945C2C02C00E94C42C27960FB626 +:10419000F894DEBF0FBECDBFDF91CF911F910F917D +:1041A000FF90EF90DF90CF90BF900C944B2D8B2D14 +:1041B000837009F079C0F11057C2262F22952695F9 +:1041C0002770220F220F862F8F70C82ED12CE12C42 +:1041D000F12C022E04C0CC0CDD1CEE1CFF1C0A943A +:1041E000D2F764FF10C06FE070E080E090E004C0A0 +:1041F000660F771F881F991F2A95D2F760957095D3 +:104200008095909503C060E070E0CB012B2D269542 +:1042100026952370422F50E042305105D9F04330AB +:10422000510569F16C297D298E299F29413051055D +:1042300051F127960FB6F894DEBF0FBECDBFDF91C8 +:10424000CF911F910F91FF90EF90DF90CF90BF9093 +:104250000C9475276C297D298E299F2927960FB6E6 +:10426000F894DEBF0FBECDBFDF91CF911F910F91AC +:10427000FF90EF90DF90CF90BF900C9487270E9423 +:104280007527C701B60127960FB6F894DEBF0FBE9B +:10429000CDBFDF91CF911F910F91FF90EF90DF90F5 +:1042A000CF90BF900C946327FF2019F08B2D817065 +:1042B00001C08695882309F4D7C1262F229526951B +:1042C0002770220F220F862F8F70C82ED12CE12C41 +:1042D000F12C022E04C0CC0CDD1CEE1CFF1C0A9439 +:1042E000D2F764FF10C06FE070E080E090E004C09F +:1042F000660F771F881F991F2A95D2F760957095D2 +:104300008095909503C060E070E0CB012B2D269541 +:1043100026952370422F50E042305105D9F04330AA +:10432000510569F16C297D298E299F29413051055C +:1043300051F127960FB6F894DEBF0FBECDBFDF91C7 +:10434000CF911F910F91FF90EF90DF90CF90BF9092 +:104350000C9414286C297D298E299F2927960FB645 +:10436000F894DEBF0FBECDBFDF91CF911F910F91AB +:10437000FF90EF90DF90CF90BF900C9426280E9482 +:104380001428C701B60127960FB6F894DEBF0FBEFA +:10439000CDBFDF91CF911F910F91FF90EF90DF90F4 +:1043A000CF90BF900C940228603F59F120F4603EFA +:1043B00008F494C008C0623F09F467C0F0F1633F9D +:1043C00009F08CC065C0162F1F708B2D8F71FF20D8 +:1043D00021F00E94AD27812F7DCE0E94C827812F1A +:1043E00027960FB6F894DEBF0FBECDBFDF91CF91F9 +:1043F0001F910F91FF90EF90DF90CF90BF900C94A2 +:10440000871FFF20B1F0553008F02EC18B2D8F7122 +:1044100027960FB6F894DEBF0FBECDBFDF91CF91C8 +:104420001F910F91FF90EF90DF90CF90BF900C9471 +:10443000E727563008F018C1E9CFFF2099F08B2DFF +:104440008F7127960FB6F894DEBF0FBECDBFDF91F8 +:10445000CF911F910F91FF90EF90DF90CF90BF9081 +:104460000C94AD278B2D8F7127960FB6F894DEBF75 +:104470000FBECDBFDF91CF911F910F91FF90EF90B5 +:10448000DF90CF90BF900C94C827F110EBCFD7CF1F +:10449000FF2099F08B2D8F7127960FB6F894DEBF11 +:1044A0000FBECDBFDF91CF911F910F91FF90EF9085 +:1044B000DF90CF90BF900C949E2727960FB6F8946C +:1044C000DEBF0FBECDBFDF91CF911F910F91FF9047 +:1044D000EF90DF90CF90BF900C949927FF20A9F028 +:1044E000552309F4ACCF862F27960FB6F894DEBF7C +:1044F0000FBECDBFDF91CF911F910F91FF90EF9035 +:10450000DF90CF90BF900C94671E552309F4AACF7B +:10451000862F27960FB6F894DEBF0FBECDBFDF9172 +:10452000CF911F910F91FF90EF90DF90CF90BF90B0 +:104530000C942F1F4B2D4F70C8010E941A03279611 +:104540000FB6F894DEBF0FBECDBFDF91CF911F91A4 +:104550000F91FF90EF90DF90CF90BF900C94CB26FF +:10456000F11082C09B2D9F70492F50E042305105C1 +:1045700099F144F44115510569F04130510509F0B4 +:1045800073C019C043305105C1F14430510509F0E1 +:104590006BC044C027960FB6F894DEBF0FBECDBFE8 +:1045A000DF91CF911F910F91FF90EF90DF90CF900F +:1045B000BF900C94223027960FB6F894DEBF0FBE42 +:1045C000CDBFDF91CF911F910F91FF90EF90DF90C2 +:1045D000CF90BF900C94393027960FB6F894DEBF79 +:1045E0000FBECDBFDF91CF911F910F91FF90EF9044 +:1045F000DF90CF90BF900C94553027960FB6F8946B +:10460000DEBF0FBECDBFDF91CF911F910F91FF9005 +:10461000EF90DF90CF90BF900C946830862F279654 +:104620000FB6F894DEBF0FBECDBFDF91CF911F91C3 +:104630000F91FF90EF90DF90CF90BF900C948C3053 +:104640004B2D4F70C80127960FB6F894DEBF0FBEF2 +:10465000CDBFDF91CF911F910F91FF90EF90DF9031 +:10466000CF90BF900C941B0927960FB6F894DEBF2D +:104670000FBECDBFDF91CF911F910F91FF90EF90B3 +:10468000DF90CF90BF9008950E94DC280E94B1284F +:104690000E94F8280E94F72D0E944B2D80E090E0A8 +:1046A0000E94471D80E090E00C945D1D0E94CC2884 +:1046B0000C9444230E943928292F22952F7030E032 +:1046C0002C3031054CF42A3031056CF4225031097C +:1046D0002230310590F407C02C30310551F02F30D5 +:1046E000310559F406C0803E10F0803F31F481E07E +:1046F000089593FB882780F9089580E00895CF936B +:10470000DF9300D000D01F92CDB7DEB70F900F908F +:104710000F900F900F90DF91CF910895CF93DF937B +:1047200000D000D000D0CDB7DEB726960FB6F894F3 +:10473000DEBF0FBECDBFDF91CF9108951F93CF9302 +:10474000DF93C091DB0216E012C0D0E01C9FF001A5 +:104750001D9FF00D1124E555FD4F4081518162816F +:104760007381848195810E948E232196C7708091E8 +:10477000DC02C813EACFDF91CF911F9108954091D9 +:10478000A5025091A6026091A7027091A8028091A3 +:10479000A9029091AA020C948E230F931F93CF939A +:1047A000DF938091AA0282958F7009F069C0809191 +:1047B000A702882309F464C0A091DB02D091DC0237 +:1047C000B091A502C091A6028091A8029091A90281 +:1047D00021E030E0BF3F11F020E030E0122FBC01BB +:1047E0006095709506E04AC0009721F0CF3F29F40C +:1047F000212F05C021E030E002C020E030E020FDA4 +:104800003BC04A2F50E0049FF001059FF00D11249A +:10481000E555FD4F2181C2132FC02081B2132CC05A +:104820002281211129C0238134812817390718F0EA +:10483000281B390B02C0260F371F283C3105E0F436 +:104840008091AA028F7080618093AA0286E0849F83 +:10485000F001859FF00D1124E055FD4F80818F7090 +:104860008061808385EA92E00E948E1FDF91CF9164 +:104870001F910F910C949E23AF5FA770AD13B4CF1F +:10488000DF91CF911F910F910895EF92FF920F93B7 +:104890001F93CF93DF93CDB7DEB762970FB6F8942F +:1048A000DEBF0FBECDBF8C0185E0F801DE011D9695 +:1048B00001900D928A95E1F7D8014C9111965C9187 +:1048C000119712966C9112971396ED90FC90149795 +:1048D0007091A502E091A6028091A8029091A90290 +:1048E000009739F0EF3F41F421E030E07F3F31F0B5 +:1048F00003C021E030E002C020E030E020FD5CC1D8 +:104900002091A702222309F4F1C0E816F90628F045 +:104910009701281B390BC90104C0809590958E0D15 +:104920009F1D883C910508F098C08091AA02982F9D +:10493000907F09F064C0E51314C0741312C06111B4 +:1049400010C08F7080618093AA020E94BF2385EA05 +:1049500092E00E948E1F8091AA02D80115968C9336 +:1049600043C1EF2839F05F3F41F481E090E04F3FD1 +:1049700031F003C081E090E002C080E090E080FD73 +:1049800003C081E0862702C080E090E080FF2EC057 +:104990008091DB022091DC0236E013C090E0389F6A +:1049A000F001399FF00D1124E555FD4F718157132A +:1049B00006C07081471303C07281671317C0019648 +:1049C00087708213EBCF12C19F7059F0882309F4CE +:1049D0000BC107C09F7029F0F8019581907F09F401 +:1049E00003C1805E883008F4FFC0D2C0662309F49A +:1049F000FBC08091AA0281608093AA02F5C0E513F2 +:104A000008C0741306C0611104C0D80115968C93B8 +:104A10009DC04D875E878D859E856A8B0E945A2337 +:104A20006A89882309F4B4C0662309F4B1C02091CF +:104A3000AA02822F82958F7090E002970CF4C6C074 +:104A40008091A5029091A60298878F831986FB8694 +:104A5000EA862C87CE01079646C08091AA02982F3D +:104A6000907F59F47E2DF98AE88A89890E947F23F4 +:104A700085EA92E00E948E1F95C0E51311C0741361 +:104A80000FC061110DC0F8018583C8010E948E1FFF +:104A9000E5EAF2E086E0DF011D928A95E9F7A2C01F +:104AA0004D875E878D859E856A8B0E945A236A8911 +:104AB000882309F46DC0662309F46AC02091AA0214 +:104AC000822F82958F7090E002970CF47FC08091C6 +:104AD000A5029091A6029A8389831B82FD82EC82B3 +:104AE0002E83CE0101960E948E1F70C0E816F90633 +:104AF00028F09701281B390BC90104C080959095B7 +:104B00008E0D9F1D883C910508F046C0662309F470 +:104B10003FC0E51330C074132EC02091AA0220FDBF +:104B200021C0322F32953F70832F90E00097D1F053 +:104B3000D80115962C9315970F9741F0832F8F5F0F +:104B40008295807F2F70282B15962C93C8010E9488 +:104B50008E1F86E0F801A5EAB2E001900D928A95D9 +:104B6000E1F73EC086E0F801A5EAB2E001900D92BF +:104B70008A95E1F737C04D875E878D859E850E94B7 +:104B80005A23811123C08091AA0281608093AA02D6 +:104B9000C8010E948E1F26C07E2DF98AE88A898965 +:104BA0000E947F23E5EAF2E086E0DF011D928A950C +:104BB000E9F70E94BF2318C0662351F34D875E8733 +:104BC0008D859E850E945A23882311F386E0F80183 +:104BD000A5EAB2E001900D928A95E1F70E94CD23FB +:104BE0000E94BF2381E014C080E012C04D875E8721 +:104BF0008D859E850E943928292F22952F7030E0BF +:104C0000223031050CF4E0CE243031050CF6E2CE32 +:104C100062960FB6F894DEBF0FBECDBFDF91CF9185 +:104C20001F910F91FF90EF9008951F93CF93DF9303 +:104C3000CDB7DEB72C970FB6F894DEBF0FBECDBF51 +:104C40004F83588769877A878B879C87CE01079621 +:104C50000E9445248823D9F02F8138858A859B8539 +:104C6000892B39F03F3F19F080E090E004C02F3FDE +:104C7000D9F781E090E0892B09F06DC04F8158850C +:104C800069857A858B859C850E948E2364C086E029 +:104C9000FE013796DE01119601900D928A95E1F79B +:104CA000FF81E8854A855B854115510539F0EF3F65 +:104CB00041F481E090E0FF3F31F003C081E090E0FB +:104CC00002C080E090E080FD46C02091DC0230E030 +:104CD000C9010196877099276091DB0270E0861701 +:104CE000970709F440C0F983EA835D834C8396E01B +:104CF000929FD001939FB00D1124A555BD4FFE0189 +:104D0000319601900D929A95E1F78093DC020E9412 +:104D10009E2321C0189FC001112485559D4F0E94DC +:104D20004524882371F1E091DB021E9FF0011124DC +:104D3000E555FD4F40815181628173818481958168 +:104D40000E948E238091DB0290E001968770992764 +:104D50008093DB0201C016E08091DB029091DC02BF +:104D60008913D8CF0EC00E9456231092DC021092F5 +:104D7000DB02E5EAF2E086E0DF011D928A95E9F7C1 +:104D8000EACF2C960FB6F894DEBF0FBECDBFDF91F1 +:104D9000CF911F910895DF92EF92FF920F931F938F +:104DA000CF93DF93EC01009709F46EC0D12CEE2471 +:104DB000E394F12C8E010F5F1F4FFE018491843725 +:104DC00048F4843008F04CC0813071F0823009F032 +:104DD0005BC01EC0853709F43FC080F1982F9458FE +:104DE000903708F051C03FC02296F8018491982F67 +:104DF000905E983050F48770FE2D01C0FF0F8A95A9 +:104E0000EAF78F2F0E94CF2813C00E94671E2FC081 +:104E10002296F8018491982F905E983060F4877004 +:104E2000FE2D01C0FF0F8A95EAF78F2F0E94D5282B +:104E30000E94F8281CC00E942F1F19C02296F8015A +:104E4000049107C08FE99FE00197F1F700C00000CF +:104E500001500111F7CF0BC02296F801D49007C082 +:104E60000E94671E03C08F770E942F1FE8018D2DBF +:104E700007C08150EFE9FFE03197F1F700C0000073 +:104E8000882309F497CFF5CFDF91CF911F910F9130 +:104E9000FF90EF90DF9008956093E1027093E2023B +:104EA0008093E3029093E4020C9444236093DD0228 +:104EB0007093DE028093DF029093E0020C9444230F +:104EC00008950C944C270F931F930091E1021091C9 +:104ED000E2022091E3023091E402602B712B822BDD +:104EE000932B1F910F910C944C270F931F930091BC +:104EF000E1021091E2022091E3023091E40260238A +:104F00007123822393231F910F910C944C270F93AD +:104F10001F930091E1021091E2022091E30230918F +:104F2000E40260277127822793271F910F910C9429 +:104F30004C2760E070E0CB010C94562741E050E034 +:104F400060E070E004C0440F551F661F771F8A950C +:104F5000D2F7CB01BA010C94562741E050E060E053 +:104F600070E004C0440F551F661F771F8A95D2F763 +:104F70008091DD029091DE02A091DF02B091E0020B +:104F8000482B592B6A2B7B2BCB01BA010C9456274B +:104F900041E050E060E070E004C0440F551F661F20 +:104FA000771F8A95D2F740955095609570958091BE +:104FB000DD029091DE02A091DF02B091E002482371 +:104FC00059236A237B23CB01BA010C94562741E075 +:104FD00050E060E070E004C0440F551F661F771F6B +:104FE0008A95D2F78091DD029091DE02A091DF02D6 +:104FF000B091E002482759276A277B27CB01BA01E5 +:105000000C9456270F931F930091DD021091DE023E +:105010002091DF023091E002602B712B822B932BC9 +:105020001F910F910C9456270F931F930091DD024F +:105030001091DE022091DF023091E00260237123A3 +:10504000822393231F910F910C9456270F931F9344 +:105050000091DD021091DE022091DF023091E0022A +:1050600060277127822793271F910F910C94562751 +:105070000895CF92DF92EF92FF920F931F93CF93F9 +:10508000DF93EC01C090E102D090E202E090E302F5 +:10509000F090E4028091DD029091DE02A091DF02A7 +:1050A000B091E002C82AD92AEA2AFB2A0FE110E0CF +:1050B000B701A601002E04C07695679557954795D0 +:1050C0000A94D2F740FF08C0BE01802F0E947104ED +:1050D0008130910509F007C00150110948F7BE0160 +:1050E00080E00E947104DF91CF911F910F91FF909A +:1050F000EF90DF90CF90089540918B0150918C01FB +:1051000020E030E09FEFFA01E20FF31F62816817A1 +:10511000A1F09F3F19F4611101C0922F2F5F3F4F03 +:105120002630310581F707C0FA01E90FF11D97FD1F +:10513000FA95828308959F3FB9F7089540918B01B6 +:1051400050918C0120E030E0FA01E20FF31F9281D0 +:10515000981301C012822F5F3F4F26303105A1F70F +:10516000089581E090E0E0918B01F0918C01E80FCF +:10517000F91F1082019688309105A9F70895909142 +:10518000E502982B9093E502089580959091E502B1 +:1051900098239093E50208951092E5020895909166 +:1051A000E602982B9093E602089580959091E6028E +:1051B00098239093E60208951092E6020895809352 +:1051C000E70208951092E702089540918B015091F3 +:1051D0008C0120E030E080E0FA01E20FF31F9181C2 +:1051E00091118F5F2F5F3F4F27303105A9F7089549 +:1051F000E0918B01F0918C018091E5028083E09138 +:105200008B01F0918C0180819091E602892B808343 +:105210009091E702992361F0E0918B01F0918C016C +:105220008081892B80830E94E52881110E94E228D9 +:1052300080918B0190918C010C94311D8091FA0327 +:10524000843021F11092F10220E488E190E00FB661 +:10525000F894A895809360000FBE2093600080E0D2 +:105260000E94590383B7817F846083BF83B78160C5 +:1052700083BF7894889583B78E7F83BF88E10FB60C +:10528000F89480936000109260000FBE0895089516 +:105290000895CF9380E00E9459030E9447290E94FD +:1052A000BD070E944829C0E08C2F0E941109892B5C +:1052B00029F4CF5FC530C1F780E001C081E0CF9114 +:1052C00008950E94562380E00E9459030E941130E5 +:1052D0000E94251D0C94E7051F920F920FB60F92A6 +:1052E00011248F939F93AF93BF938091F10281110B +:1052F00013C08091F2029091F302A091F402B09158 +:10530000F5024196A11DB11D8093F2029093F30224 +:10531000A093F402B093F502BF91AF919F918F914A +:105320000F900FBE0F901F90189582E084BD93E000 +:1053300095BD9AEF97BD80936E0008958FB7F8944E +:105340004091F2025091F3026091F4027091F502E3 +:105350008FBFCA010895CF92DF92EF92FF920F9311 +:105360001F932FB7F8944091F2025091F30260918D +:10537000F4027091F5022FBF6A017B01EE24FF2435 +:105380008C0120E030E0C016D106E206F30620F0E2 +:105390009A01281B390B05C09C0120953095240FDC +:1053A000351FC9011F910F91FF90EF90DF90CF90B3 +:1053B00008951F920F920FB60F9211248F939F930F +:1053C000AF93BF938091F2029091F302A091F40207 +:1053D000B091F5020196A11DB11D8093F202909348 +:1053E000F302A093F402B093F502BF91AF919F91A5 +:1053F0008F910F900FBE0F901F9018950E946D1601 +:10540000F8942FEF87EA91E6215080409040E1F731 +:1054100000C0000087E090EBDC01809304049093CF +:105420000504A0930604B09307042CE088E190E003 +:105430000FB6F894A895809360000FBE209360008B +:10544000FFCFCF92DF92EF92FF920F931F93CF93F4 +:10545000DF93C82ED12C01E010E08D2D0E941109A0 +:105460007C01C0E0D0E098010C2E02C0220F331F57 +:105470000A94E2F72E213F21232B29F42196CC30E8 +:10548000D10589F708C06C2F7D2D80E00E944C0467 +:10549000C812F4CF06C0D39485E0D812DECF80E0E6 +:1054A00001C081E0DF91CF911F910F91FF90EF90AC +:1054B000DF90CF900895CF93C82F8CE20E94212ACD +:1054C000882321F08C2FCF910C94212A80E0CF915A +:1054D0000895CF930E94AC2B811102C00E948D2BA6 +:1054E000C5E608C00E94BD078FE39CE90197F1F76C +:1054F00000C00000C150B1F789E20E945B2A81110F +:105500000AC18AE20E945B2A81110E948D2B85E0EC +:105510000E945B2A81110E94FE290E94B72B809372 +:10552000F00287E00E945B2A882399F18BE10E94B8 +:105530005B2A882351F09091F00291FB882780F933 +:1055400021E0822780FB91F922C08EE00E945B2A35 +:10555000882351F09091F00292FB882780F921E096 +:10556000822780FB92F913C080E10E945B2A909110 +:10557000F002882341F093FB882780F921E08227FD +:1055800080FB93F904C0892F809580FB90F990935C +:10559000F0028091F0020E94BB2B0E94C92B8093E5 +:1055A000010380EE0E945B2A882341F08091010371 +:1055B000982F909590FB80F98093010389E30E94D6 +:1055C0005B2A882359F09091010391FB882780F989 +:1055D00021E0822780FB91F99093010382EE0E94E3 +:1055E0005B2A882359F09091010392FB882780F968 +:1055F00021E0822780FB92F99093010386EE0E94BE +:105600005B2A882359F09091010393FB882780F946 +:1056100021E0822780FB93F99093010383EE0E949F +:105620005B2A882359F09091010394FB882780F925 +:1056300021E0822780FB94F99093010385E30E9487 +:105640005B2A882359F09091010395FB882780F904 +:1056500021E0822780FB95F99093010381E30E946A +:105660005B2A882359F09091010396FB882780F9E3 +:1056700021E0822780FB96F99093010381E10E944B +:105680005B2A882359F09091010397FB882780F9C2 +:1056900021E0822780FB97F9909301038091010319 +:1056A0000E94CD2B87E20E945B2AC82F8EE10E94C8 +:1056B0005B2A8111C2608FE10E945B2A8111C46064 +:1056C00080E20E945B2A8111C86081E20E945B2A0D +:1056D0008111C06182E20E945B2A8111C06283E273 +:1056E0000E945B2A8111C06484E20E945B2A8823A5 +:1056F00011F0C06802C0CC2329F08C2F0E94C42B6B +:105700006C2F03C00E94C02B682F70E080E090E0F7 +:10571000CF910C946127CF9108956DEE7EEF80E0DC +:1057200090E00E94783460E082E090E00E946A3469 +:1057300060E083E090E00E946A3460E084E090E002 +:105740000E946A3460E085E090E00E946A3460E084 +:1057500086E090E00C946A3480E090E00E9464342B +:1057600021E08D3E9E4F09F020E0822F089582E0D7 +:1057700090E00C945C34682F82E090E00C946A34E2 +:1057800083E090E00C945C34682F83E090E00C940C +:105790006A3484E090E00C945C34682F84E090E0FC +:1057A0000C946A3486E090E00C945C34682F86E0B8 +:1057B00090E00C946A348091FE0280FF0BC06091EF +:1057C000900185E0689FB0011124759567957595E6 +:1057D00067952AC081FF09C06091900185E0689FAC +:1057E000B0011124759567951FC082FF07C06091B5 +:1057F000900185E0689FB001112416C04091F80225 +:105800004423C9F060918F01461788F720919001D9 +:1058100085E0289F90011124429FC001439F900D75 +:10582000112470E00E9448346038710540F461151D +:10583000710539F002C065E070E0862F08958FE7AA +:10584000089581E008958091FE0280FF08C0609174 +:105850008E0170E0759567957595679521C081FFFC +:1058600006C060918E0170E07595679519C082FF42 +:1058700004C060918E0170E010C08091F80288230E +:10588000C1F060918D018617A0F790918E01989FCD +:10589000C001112470E00E9448346038710528F47A +:1058A0006115710521F0862F08958FE7089581E035 +:1058B000089561E070E0F4CF803F21F40E94DB2B7B +:1058C000819504C0813F29F40E94DB2B8093FB0269 +:1058D0000895823F21F40E94DB2B819504C0833F11 +:1058E00029F40E94DB2B8093FA020895893F19F472 +:1058F0000E94232C05C08A3F31F40E94232C8195FD +:105900008093FC0208958B3F21F40E94232C819503 +:1059100004C08C3F29F40E94232C8093FD0208953B +:10592000843F21F48091F902816017C0853F21F402 +:105930008091F902826011C0863F21F48091F902C2 +:1059400084600BC0873F21F48091F902886005C014 +:10595000883F31F48091F90280618093F9020895C3 +:105960008D3F21F48091FE0281600BC08E3F21F4B7 +:105970008091FE02826005C08F3F29F48091FE0273 +:1059800084608093FE020895803F29F48091FB0299 +:1059900087FF6EC007C0813F41F48091FB0218165B +:1059A0000CF066C01092FB0263C09091FA02823F35 +:1059B00019F497FF5DC005C0833F31F419160CF050 +:1059C00057C01092FA0254C0893F31F48091FC0212 +:1059D00018160CF04DC006C08A3F39F48091FC02C5 +:1059E00087FF46C01092FC0243C08B3F29F4809190 +:1059F000FD0287FF3DC006C08C3F39F48091FD0257 +:105A00001816B4F51092FD0233C0843F21F4809142 +:105A1000F9028E7F05C0853F31F48091F9028D7FB8 +:105A20008093F90225C0863F21F48091F9028B7F93 +:105A3000F7CF873F21F48091F902877FF1CF883F2C +:105A400021F48091F9028F7EEBCF8D3F21F480917C +:105A5000FE028E7F0BC08E3F21F48091FE028D7F6F +:105A600005C08F3F29F48091FE028B7F8093FE0258 +:105A70008091FA0281110EC08091FB0281110AC04F +:105A80008091FC02811106C08091FD02811102C04B +:105A90001092F802089589EF92E00E943C1D0E9446 +:105AA0009E299093F7028093F6020895CF938091F8 +:105AB000F6029091F7020E94AB294091F80244232C +:105AC00021F02091910130E006C0209192015AE02E +:105AD000259F900111248217930708F486C08091B6 +:105AE000FA0281110DC09091FB02911109C09091B1 +:105AF000FC02911105C09091FD02992309F475C033 +:105B00004F3F19F04F5F4093F802181624F40E949B +:105B1000DB2B8093FA028091FA0287FF05C00E9476 +:105B2000DB2B81958093FA028091FB02181624F4F6 +:105B30000E94DB2B8093FB028091FB0287FF05C054 +:105B40000E94DB2B81958093FB026091FA02662311 +:105B500039F1C091FB02CC2319F1772767FD7095CD +:105B6000872F972F0E94AC3123E333E343E35FE3B6 +:105B70000E9460320E9479316093FA026C2F77277D +:105B800067FD7095872F972F0E94AC3123E333E395 +:105B900043E35FE30E9460320E9479316093FB022D +:105BA0008091FC02181624F40E94232C8093FC029E +:105BB0008091FC0287FF05C00E94232C8195809371 +:105BC000FC028091FD02181624F40E94232C80937D +:105BD000FD028091FD0287FF05C00E94232C819564 +:105BE0008093FD02CF910C944B2DCF910895E9EF56 +:105BF000F2E085E0DF011D928A95E9F71092F80244 +:105C00001092FE020895833089F130F4813061F002 +:105C1000823009F06EC019C0853009F449C0B8F16E +:105C2000863009F066C055C020919201862F90E021 +:105C3000820F911D8F3F910520F4620F60939201B6 +:105C400008958FEF80939201089520919101862FFE +:105C500090E0820F911D8F3F910520F4620F6093B9 +:105C6000910108958FEF8093910108952091900103 +:105C7000862F90E0820F911D8F3F910520F4620FD7 +:105C80006093900108958FEF809390010895209183 +:105C90008F01862F90E0820F911D8F3F910520F498 +:105CA000620F60938F0108958FEF80938F010895A5 +:105CB00020918E01862F90E0820F911D8F3F9105DC +:105CC00020F4620F60938E0108958FEF80938E0110 +:105CD000089520918D01862F90E0820F911D8F3FB6 +:105CE000910520F4620F60938D0108958FEF8093EA +:105CF0008D010895833021F130F4813059F08230E4 +:105D000009F049C012C0853089F128F1863009F0C8 +:105D100042C037C080919201681720F4861B80939F +:105D2000920108951092920108958091910168174F +:105D300020F4861B8093910108951092910108959B +:105D400080919001681720F4861B8093900108953C +:105D500010929001089580918F01681720F4861B9E +:105D600080938F01089510928F01089580918E0184 +:105D7000681720F4861B80938E01089510928E017F +:105D8000089580918D01681720F4861B80938D0102 +:105D9000089510928D01089541E050E060E070E0B8 +:105DA00004C0440F551F661F771F8A95D2F7CB0199 +:105DB000BA010E9461270C945623873200F58E3178 +:105DC00008F086C08E3009F466C060F4873009F4AC +:105DD0004DC018F4863049F531C0883041F18B3020 +:105DE00021F57BC0863109F478C018F48031E9F4DC +:105DF0005CC0893109F471C08B31B9F442C0883379 +:105E000009F46BC048F4893209F460C0853309F4A1 +:105E10005DC0873251F45AC0833409F457C018F476 +:105E20008A3318F057C0883499F080E008950E94B2 +:105E3000B72B0E94C92B0E94D22B4FC08091F00239 +:105E4000817F8E7F8093F00281E08093FF0208952E +:105E50000E9456232FEF83ED90E321508040904025 +:105E6000E1F700C000000E94FE2937C08091F002D7 +:105E700080FF03C0817F8E7F01C081608093F0022C +:105E80002CC09091F00291FB882780F921E08227B5 +:105E900080FB91F913C09091F00292FB882780F962 +:105EA00021E0822780FB92F909C09091F00293FBD8 +:105EB000882780F921E0822780FB93F99093F002F4 +:105EC000882359F091609093F00207C080E003C0EE +:105ED0008D5101C089530E94CC2E81E0089580E04D +:105EE000089580E00895CF93C82F8091FF028130FC +:105EF00071F020F0823009F089C037C0A0918B0189 +:105F0000B0918C018C91823209F082C007C0A091BF +:105F10008B01B0918C018C91823249F48C2F0E94BC +:105F20006F2F81111EC08C2F0E94DD2E1CC08C2F64 +:105F30000E94712F811115C0C43169F030F4CB304B +:105F400081F0C03109F068C009C0C93221F0C833FE +:105F500009F062C006C01092FF025EC082E080932A +:105F6000FF0281E090E081705AC0C932C9F060F44C +:105F7000C431B1F020F4C73009F04CC034C0CE5168 +:105F8000C63008F047C017C0CE3439F120F4CB3406 +:105F900009F040C01CC0C135C1F0C235D9F513C0ED +:105FA00080910003882319F01092000333C081E030 +:105FB0008093FF0234C0EC2FF0E0E25EFD4F808161 +:105FC0008093000327C061E003C061E007C06AE07E +:105FD000809100030E94032E1DC06AE0809100039F +:105FE0000E947A2E17C08EE18093920182E3809303 +:105FF00091018AE08093900184E180938F0188E091 +:1060000080938E0188E280938D0104C01092FF027C +:1060100080E005C081E003C080E090E0A4CFCF9194 +:1060200008950E94AC2B811102C00E948D2B0E940A +:10603000D22B8093030480FF02C0869501C080E0CC +:106040000C94590380910304982F9695292F30E0E2 +:10605000233031054CF49F5F990F8170892B81604B +:10606000809303040E94D62B8091030486950C94A0 +:10607000590380910304982F969591F09158990FA8 +:106080008170892B809303048E7F91E009F490E066 +:106090008091030490FB80F9809303040E94D62B27 +:1060A0008091030486950C94590380910304982FE2 +:1060B000909590FB80F9809303040E94D62B8091E9 +:1060C000030480FF02C0869501C080E00C94590350 +:1060D00030910304232F26952F5F2F77822F90E096 +:1060E000317004972CF4220F232B2093030402C059 +:1060F0003093030480910304282F2E7F91E009F44C +:1061000090E090FB80F9809303040E94D62B80914D +:10611000030486950C94590320910304922F9695BD +:106120009827990F822F8170892B809303048E7F8B +:1061300091E009F490E08091030490FB80F9809352 +:1061400003040E94D62B8091030486950C94590376 +:106150005058BB27AA270ED075C166D130F06BD13D +:1061600020F031F49F3F11F41EF45BC10EF4E09572 +:10617000E7FB51C1E92F77D180F3BA1762077307A4 +:106180008407950718F071F49EF58FC10EF4E09521 +:106190000B2EBA2FA02D0B01B90190010C01CA01E1 +:1061A000A0011124FF27591B99F0593F50F4503E8C +:1061B00068F11A16F040A22F232F342F4427585F7E +:1061C000F3CF469537952795A795F0405395C9F796 +:1061D0007EF41F16BA0B620B730B840BBAF091504E +:1061E000A1F0FF0FBB1F661F771F881FC2F70EC0ED +:1061F000BA0F621F731F841F48F4879577956795C0 +:10620000B795F7959E3F08F0B3CF9395880F08F0A8 +:106210009927EE0F979587950895D9D008F481E0D6 +:1062200008950CD00FC107D140F0FED030F021F41A +:106230005F3F19F0F0C0511139C1F3C014D198F388 +:106240009923C9F35523B1F3951B550BBB27AA27F7 +:1062500062177307840738F09F5F5F4F220F331F69 +:10626000441FAA1FA9F333D00E2E3AF0E0E830D035 +:1062700091505040E695001CCAF729D0FE2F27D038 +:10628000660F771F881FBB1F261737074807AB0706 +:10629000B0E809F0BB0B802DBF01FF2793585F4F7B +:1062A0002AF09E3F510568F0B6C000C15F3FECF395 +:1062B000983EDCF3869577956795B795F7959F5F40 +:1062C000C9F7880F911D9695879597F90895E1E094 +:1062D000660F771F881FBB1F621773078407BA07F3 +:1062E00020F0621B730B840BBA0BEE1F88F7E0954E +:1062F000089504D06894B111D9C00895BCD088F035 +:106300009F5790F0B92F9927B751A0F0D1F0660FA1 +:10631000771F881F991F1AF0BA95C9F712C0B130BC +:1063200081F0C3D0B1E00895C0C0672F782F8827CF +:10633000B85F39F0B93FCCF3869577956795B395FB +:10634000D9F73EF490958095709561957F4F8F4F6A +:106350009F4F0895E89409C097FB3EF4909580956F +:10636000709561957F4F8F4F9F4F9923A9F0F92F1B +:1063700096E9BB279395F695879577956795B79599 +:10638000F111F8CFFAF4BB0F11F460FF1BC06F5F7F +:106390007F4F8F4F9F4F16C0882311F096E911C091 +:1063A000772321F09EE8872F762F05C0662371F0B2 +:1063B00096E8862F70E060E02AF09A95660F771FC6 +:1063C000881FDAF7880F9695879597F90895990FA2 +:1063D0000008550FAA0BE0E8FEEF16161706E807AF +:1063E000F907C0F012161306E407F50798F0621BD0 +:1063F000730B840B950B39F40A2661F0232B242BA5 +:10640000252B21F408950A2609F4A140A6958FEFC3 +:10641000811D811D089597F99F6780E870E060E015 +:1064200008959FEF80EC089500240A94161617062D +:1064300018060906089500240A9412161306140675 +:1064400005060895092E0394000C11F4882352F0D8 +:10645000BB0F40F4BF2B11F460FF04C06F5F7F4F90 +:106460008F4F9F4F089557FD9058440F551F59F077 +:106470005F3F71F04795880F97FB991F61F09F3F31 +:1064800079F087950895121613061406551FF2CF5A +:106490004695F1DF08C0161617061806991FF1CFAA +:1064A00086957105610508940895E894BB276627D1 +:1064B0007727CB0197F908958ADF08F48FEF0895C5 +:1064C0000BD0C0CFB1DF28F0B6DF18F0952309F06C +:1064D000A2CFA7CF1124EACFC6DFA0F3959FD1F3B7 +:1064E000950F50E0551F629FF001729FBB27F00D82 +:1064F000B11D639FAA27F00DB11DAA1F649F6627D7 +:10650000B00DA11D661F829F2227B00DA11D621F25 +:10651000739FB00DA11D621F839FA00D611D221FDF +:10652000749F3327A00D611D231F849F600D211DC3 +:10653000822F762F6A2F11249F5750408AF0E1F066 +:1065400088234AF0EE0FFF1FBB1F661F771F881FAF +:1065500091505040A9F79E3F510570F05CCFA6CFF7 +:106560005F3FECF3983EDCF3869577956795B7959A +:10657000F795E7959F5FC1F7FE2B880F911D9695C4 +:10658000879597F90895FA01EE0FFF1F30962105C0 +:10659000310599F16115710561F48038BFE39B07FE +:1065A00049F168949038810561F08038BFEF9B070E +:1065B00041F0992342F5FF3FE1053105210511F135 +:1065C000E8940894E795D901AA2329F4AB2FBE2FAC +:1065D000F85FD0F310C0FF5F70F4A695E0F7F739CD +:1065E00050F019F0FF3A38F49F779F930CD00F903A +:1065F00007FC905808953EF014CF60E070E080E80A +:106600009FE308954FE79F775F934F933F932F93B7 +:106610009ED02F913F914F915F9152DF05C019F4A9 +:106620000EF0F9CE42CFFDCE26DFC8F39638C0F784 +:1066300007F80F92E8942BE33AEA48EB5FE74EDF66 +:106640000F920F920F924DB75EB70F92C0D0ECEA47 +:10665000F0E016D04F915F91EF91FF91E595EE1F1D +:10666000FF1F49F0FE57E0684427EE0F441FFA95DC +:10667000E1F74195550B32D00F9007FE26C00895E3 +:10668000DF93CF931F930F93FF92EF92DF927B01E3 +:106690008C01689405C0DA2EEF011EDFFE01E8943C +:1066A000A5912591359145915591AEF3EF0162DDAC +:1066B000FE019701A801DA9479F7DF90EF90FF903F +:1066C0000F911F91CF91DF9108959B01AC0160E084 +:1066D00070E080E89FE3A5CD9ECEACC0CCDEE8F3B1 +:1066E0009923D9F3940F511DBBF39150504094F06E +:1066F00059F0882332F0660F771F881F9150504061 +:10670000C1F79E3F510544F7880F911D96958795D7 +:1067100097F908955F3FACF0983E9CF0BB278695B3 +:1067200077956795B79508F4B1609395C1F7BB0F5E +:1067300058F711F460FFE8CF6F5F7F4F8F4F9F4F87 +:10674000E3CFB4CE0EF076C06CCE689464CE93DE08 +:10675000C8F39923D1F3C6F3DF93CF931F930F931D +:10676000FF92C92FDD2788232AF02197660F771F14 +:10677000881FDAF720E030E040E85FEB9FE38839DC +:1067800020F0803E30F021968F77E3DCE4EDF0E0FE +:1067900003C0DFDCE1E0F1E073DF8B01BE01EC015F +:1067A000FB2E6F5771097595771F880B990BD4DDF8 +:1067B00028E132E741E35FE38FDEAF2D9801AE01C0 +:1067C000FF900F911F91CF91DF91D4DC3BCEFA0166 +:1067D000DC01AA0FBB1F9B01AC01BF5728F4222785 +:1067E0003327442750781FC0B75188F4AB2F0024BB +:1067F000469537952795011CA395D2F3002069F0A3 +:10680000220F331F441FB395DAF30DD0A1CC6130B2 +:106810007105A0E88A07B94630F49B01AC016627F0 +:10682000772788279078309621F020833183428320 +:10683000538308959F3F31F0915020F487957795C9 +:106840006795B795880F911D9695879597F9089547 +:10685000991B79E004C0991F961708F0961B881FB2 +:106860007A95C9F780950895AA1BBB1B51E107C013 +:10687000AA1FBB1FA617B70710F0A61BB70B881FD0 +:10688000991F5A95A9F780959095BC01CD0108955F +:1068900097FB072E16F4009407D077FD09D00E94CD +:1068A000343407FC05D03EF4909581959F4F0895B0 +:1068B000709561957F4F0895F999FECF92BD81BD86 +:1068C000F89A992780B50895A8E1B0E042E050E039 +:1068D0000C947F34262FF999FECF1FBA92BD81BD4B +:1068E00020BD0FB6F894FA9AF99A0FBE0196089552 +:1068F0000E946A34272F0C946B34DC01CB01FC011D +:10690000F999FECF06C0F2BDE1BDF89A319600B408 +:0E6910000D9241505040B8F70895F894FFCF13 +:10691E0055D0A44600001644000000000000484276 +:10692E0061978A460000C8430000000000004842FC +:10693E0055D024460000C843000000000000484225 +:10694E0000005C460000C843000000000000484202 +:10695E0061978A4600007A4455D0A4460000C84389 +:10696E00000000000000484200005C460000C843E2 +:10697E00000000000000484255D024460000164496 +:10698E000507000C058540000001064000000100CF +:10699E0091102111FD10C810941001E8022808145E +:1069AE000A321E42004500250026004300610060A9 +:1069BE000020003700640065006600670044004652 +:1069CE000024004700000002000400050007000933 +:1069DE00000B000C000E0010001100130015001724 +:1069EE000018001A001C001D001F002100230024A7 +:1069FE00002600280029002B002D002F0030003229 +:106A0E000034003500370039003B00F6030F042830 +:106A1E0004410469051C05E604C6043F4D362002F8 +:106A2E000302000001000101010101000101010248 +:086A3E00030405060708090026 +:00000001FF diff --git a/keyboard/preonic/preonic_pcb_silent.hex b/keyboard/preonic/preonic_pcb_silent.hex new file mode 100644 index 0000000000..cc59d3fe8d --- /dev/null +++ b/keyboard/preonic/preonic_pcb_silent.hex @@ -0,0 +1,1189 @@ +:100000000C9465020C94A9020C94A9020C94A90208 +:100010000C94A9020C94A9020C94A9020C94A902B4 +:100020000C94A9020C94A9020C94430D0C94150E87 +:100030000C942B1C0C94A9020C94A9020C94A902F8 +:100040000C94A9020C94A9020C94A9020C94A90284 +:100050000C94A9020C94981C0C94A9020C94A9026B +:100060000C94A9020C94A9020C94A9020C94A90264 +:100070000C94A9020C94A9020C94A9020C94A90254 +:100080000C94A9020C94A9020C94A9020C94A90244 +:100090000C94A9020C94A9020C94A9020C94A90234 +:1000A0000C94A9020C94A9020C94A90235001E001C +:1000B0001F0020002100220023002400250026002C +:1000C00027002A002B0014001A0008001500170052 +:1000D0001C0018000C00120013002A002900040064 +:1000E0001600070009000A000B000D000E000F00AB +:1000F00033003400E1001D001B000600190005005C +:100100001100100036003700380028000030E000F1 +:10011000E200E30003522C002C0004525000510076 +:1001200052004F0035001E001F0020002100220059 +:10013000230024002500260027002A002B0014009D +:100140001A00090013000A000D000F0018001C001F +:1001500033002A00290004001500160017000700CC +:100160000B00110008000C0012003400E1001D001B +:100170001B000600190005000E00100036003700B5 +:10018000380028000030E000E200E30003522C00B9 +:100190002C0004525000510052004F0035001E0048 +:1001A0001F0020002100220023002400250026003B +:1001B00027002A002B0034003600370013001C00F3 +:1001C00009000A00060015000F002A00290004009B +:1001D0001200080018000C0007000B0017001100A7 +:1001E00016003800E100330014000D000E001B0063 +:1001F000050010001A0019001D0028000030E00062 +:10020000E200E30003522C002C0004525000510085 +:1002100052004F0035001E001F0020002100220068 +:10022000230024002500260027002A0035021E0294 +:100230001F0220022102220223022402250226029A +:1002400027022A0001003A003B003C003D003E002E +:100250003F002D022E022F02300231020100400029 +:100260004100420043004400450000530153025343 +:100270000050010001000100010001000100010027 +:1002800001000100AB00AA00A900AE0035001E006D +:100290001F0020002100220023002400250026004A +:1002A00027002A0035001E001F0020002100220028 +:1002B000230024002500260027002A0001003A0020 +:1002C0003B003C003D003E003F002D002E002F0073 +:1002D0003000310001004000410042004300440072 +:1002E000450000530153025300500100010001007A +:1002F000010001000100010001000100AB00AA00A3 +:10030000A900AE002A0354006800650020005000D8 +:10031000720065006F006E006900630020004B00F2 +:100320006500790062006F006100720064000000E7 +:100330002C034F007200740068006F006C006900AD +:100340006E0065006100720020004B0065007900BE +:1003500062006F006100720064007300000004031B +:10036000090409027400040100A0FA090400000154 +:1003700003010100092111010001223F000705814D +:100380000308000A09040100010301020009211108 +:10039000010001224D000705820308000A0904023A +:1003A00000010300000009211101000122360007AD +:1003B00005830308000A0904030002030000000982 +:1003C00021110100012220000705840320000107FC +:1003D0000504032000011201100100000008EDFED9 +:1003E00061600100010200010631FF0974A10109E9 +:1003F00075150025FF9520750881020976150025E1 +:10040000FF952075089102C005010980A1018502B0 +:1004100016010026B7001A01002AB70075109501D1 +:100420008100C0050C0901A1018503160100269C6D +:10043000021A01002A9C02751095018100C0050175 +:100440000902A1010901A1000509190129051500E9 +:10045000250195057501810295017503810105014D +:10046000093009311581257F950275088106093803 +:100470001581257F950175088106050C0A3802153E +:1004800081257F950175088106C0C005010906A177 +:1004900001050719E029E715002501950875018177 +:1004A0000295017508810105081901290595057551 +:1004B0000191029501750391010507190029FF15A6 +:1004C0000025FF950675088100C011241FBECFEFDF +:1004D000DAE0DEBFCDBF04B603FE24C08091F10197 +:1004E0009091F201A091F301B091F4018730904B0B +:1004F000A740B04BB9F41092F1011092F2011092A2 +:10050000F3011092F40114BE84B7877F84BF88E1A1 +:100510000FB6F89480936000109260000FBEE0E088 +:10052000F8E3099511E0A0E0B1E0E0EEF9E402C0E3 +:1005300005900D92A435B107D9F711E0A4E5B1E01B +:1005400001C01D92A13FB107E1F70E94720A0C940D +:10055000EE240C94000061110DC0FC0182818823FF +:1005600031F085EE0E9426110E94272303C085EEFC +:100570000E94EE1180E090E00895089508950E9491 +:10058000D1026E9A769A8DEB92E0892B11F00C9441 +:10059000BD0208958EEB92E0892B11F00C94BE02FF +:1005A0000895279A2F988FEF9FEF9093870080935D +:1005B00086008AE08093800089E1809381000C941A +:1005C000D02281110BC080918000877F80938000B2 +:1005D00010928D0010928C002F9808952F988330E0 +:1005E00041F4809180008860809380008FEF9FEFBE +:1005F00012C09091800098609093800023E030E0DA +:10060000281B3109220F331F8FEF9FEF02C09695F1 +:1006100087952A95E2F790938D0080938C0008953A +:100620008B3B910568F4883A910530F5853A910540 +:10063000C0F48430910598F4019709F06FC071C03F +:10064000803E910508F46AC0883E910540F09C0107 +:10065000205F31092031310508F060C05CC09C0189 +:10066000A1C0853A910509F45FC0863A910509F465 +:100670005EC023E830E496C0883A910509F45AC078 +:10068000893A910509F459C08A3A910509F458C08C +:100690008B3A910509F457C08C3A910509F456C07C +:1006A0008D3A910509F455C0803B910509F454C079 +:1006B0008E3A910509F453C08F3A910509F452C05E +:1006C000813B910509F451C0823B910509F450C06A +:1006D000833B910509F44FC0843B910509F44EC05A +:1006E000853B910509F44DC0863B910509F44CC04A +:1006F000873B910509F44BC0883B910509F44AC03A +:10070000893B910509F449C08A3B910509F048C02D +:100710002AE236E447C09C01306544C020E030E066 +:1007200041C021E030E03EC021E830E43BC022E897 +:1007300030E438C022EE34E435C029EE34E432C06F +:100740002AEE34E42FC025EB34E42CC026EB34E44D +:1007500029C027EB34E426C02CEC34E423C02DEC74 +:1007600034E420C023E835E41DC02AE835E41AC08B +:1007700022E935E417C024E935E414C021E236E467 +:1007800011C023E236E40EC024E236E40BC025E2B9 +:1007900036E408C026E236E405C027E236E402C0AB +:1007A00020E034E4C901089508959CE0799FF001A8 +:1007B00011249CE3899FE00DF11D1124E60FF11D2A +:1007C000EE0FFF1FE455FF4F25913491C9010895A5 +:1007D000880F991F845D9040FC0125913491C901D7 +:1007E0000895880F991F84559F4FFC0125913491DE +:1007F000C90108950E94D5039C019A9581159F41D6 +:1008000010F4C9010895C90190528115904128F44E +:10081000C9019F700E94F1030895C9019053811589 +:10082000904120F4C9019927906C0895C901905412 +:10083000409728F4C9018F709927946D089520314D +:1008400080E4380719F480E091ED0895213190E4B7 +:10085000390719F480E090ED0895223140E434071F +:1008600019F480E092ED0895233180E4380719F4FB +:1008700080E093ED0895211590E5390769F40E9411 +:1008800015162FEF44E38CE0215040408040E1F703 +:1008900000C000000C94BD1C213090E5390731F4F4 +:1008A0008091D00181608093D0010895C901905555 +:1008B0008115904108F062C0432F55274F7055278E +:1008C00041305105F9F4C90174E0880F991F7A95F8 +:1008D000E1F788279370B901E3E0660F771FEA9587 +:1008E000E1F760767727862B972B9C682370332758 +:1008F00002C0440F551F2A95E2F74F715527842BEC +:10090000952B08954230510529F4922F8827816F45 +:10091000906A089543305105B9F4C90153E0880F36 +:10092000991F5A95E1F7807E97702370332741E035 +:1009300050E002C0440F551F2A95E2F74F7155272A +:10094000842B952B9C6808954430510549F5C901C5 +:1009500043E0880F991F4A95E1F7807E97702370D6 +:10096000332741E050E002C0440F551F2A95E2F7BB +:100970004F715527842B952B9A680895C90190577C +:100980008115904120F4C9019F7090620895C901BA +:1009900090588115904120F4C9019F70906A089584 +:1009A000203E3105E0F4203C310568F52133310566 +:1009B00009F475C048F42932310509F46BC02A32B4 +:1009C000310509F07BC075C02933310501F12238AA +:1009D0003105E9F02533310509F070C051C0233EDF +:1009E0003105B1F140F4203E3105D1F0223E310510 +:1009F00009F064C01CC0263E310579F1273E31055F +:100A000009F05CC038C0C9010E94E80308958091D4 +:100A1000E10180FD02C081FF51C080EE90E04FC037 +:100A20008091E10180FFF9CF89E390E048C0809197 +:100A3000E10182FF0AC08091E10184FF03C080E0F0 +:100A400090E03DC083EE90E03AC082EE90E037C087 +:100A50008091E10182FFEFCFF8CF8091E10183FF28 +:100A600007C08091E10184FDEACF87EE90E027C0C6 +:100A700086EE90E024C08091E10183FFF2CFF8CFB1 +:100A80008091E10185FF03C089E290E018C085E311 +:100A900090E015C08091E10185FDF9CFF5CF8091FF +:100AA000E10186FF03C08AE290E009C081E390E0A3 +:100AB00006C08091E10186FDF9CFF5CFC9010E9402 +:100AC0001003089508955F926F927F928F929F9284 +:100AD000AF92BF92CF92DF92EF92FF920F931F934C +:100AE000CF93DF93CDB7DEB72A970FB6F894DEBF6A +:100AF0000FBECDBF9E012F5F3F4F4E018BE0880E92 +:100B0000911C60E070E000E010E0E12CF12CC12CC1 +:100B1000D12CA12CB12C8AE0782E622E532E41E0EC +:100B200050E0E4E1F1E0A62DB52D872D01900D9266 +:100B30008A95E1F7F901819191919F01FC01E07F94 +:100B4000FF27E032F10559F48F709927FA0102C0AE +:100B5000EE0FFF1F8A95E2F7AE2ABF2A37C0E033B7 +:100B6000F10559F48F709927FA0102C0EE0FFF1FAB +:100B70008A95E2F7CE2ADF2A29C0E034F10559F43C +:100B80008F709927FA0102C0EE0FFF1F8A95E2F7D6 +:100B9000EE2AFF2A1BC0E035F10559F48F70992722 +:100BA000FA0102C0EE0FFF1F8A95E2F70E2B1F2BF2 +:100BB0000DC0E036F10551F48F709927FA0102C09B +:100BC000EE0FFF1F8A95E2F76E2B7F2B2815390554 +:100BD00009F0A7CF94B18A2D8095892384B985B176 +:100BE0008A2985B997B18C2D8095892387B988B1D9 +:100BF0008C2988B99AB18E2D809589238AB98BB1B9 +:100C00008E298BB99DB1802F809589238DB98EB1A6 +:100C1000802B8EB990B3862F8095892380BB81B3BA +:100C2000862B81BB2A960FB6F894DEBF0FBECDBFD0 +:100C3000DF91CF911F910F91FF90EF90DF90CF90B8 +:100C4000BF90AF909F908F907F906F905F9008952E +:100C50005F926F927F928F929F92AF92BF92CF924C +:100C6000DF92EF92FF920F931F93CF93DF93CDB755 +:100C7000DEB768970FB6F894DEBF0FBECDBF85B75D +:100C8000806885BF85B7806885BF0E9463059E0127 +:100C90002F5F3F4F4E0189E1880E911C60E070E0AC +:100CA00000E010E0E12CF12CC12CD12CA12CB12CB6 +:100CB00098E1792E622E532E41E050E0EEE1F1E012 +:100CC000A62DB52D872D01900D928A95E1F7F9019A +:100CD000819191919F01FC01E07FFF27E032F105B6 +:100CE00059F48F709927FA0102C0EE0FFF1F8A9501 +:100CF000E2F7AE2ABF2A37C0E033F10559F48F700E +:100D00009927FA0102C0EE0FFF1F8A95E2F7CE2A5B +:100D1000DF2A29C0E034F10559F48F709927FA01D0 +:100D200002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0D2 +:100D3000E035F10559F48F709927FA0102C0EE0FE2 +:100D4000FF1F8A95E2F70E2B1F2B0DC0E036F10531 +:100D500051F48F709927FA0102C0EE0FFF1F8A9598 +:100D6000E2F76E2B7F2B2815390509F0A7CF94B138 +:100D70008A2D8095892384B985B18A2985B997B14F +:100D80008C2D8095892387B988B18C2988B99AB12F +:100D90008E2D809589238AB98BB18E298BB99DB10F +:100DA000802F809589238DB98EB1802B8EB990B319 +:100DB000862F8095892380BB81B3862B81BB1092BF +:100DC00055011092540110925F0110925E01109231 +:100DD0005701109256011092610110926001109219 +:100DE0005901109258011092630110926201109201 +:100DF0005B0110925A0110926501109264011092E9 +:100E00005D0110925C0110926701109266018FEBF8 +:100E100092E0892BB9F068960FB6F894DEBF0FBE4A +:100E2000CDBFDF91CF911F910F91FF90EF90DF9099 +:100E3000CF90BF90AF909F908F907F906F905F907A +:100E40000C94BF0268960FB6F894DEBF0FBECDBFFC +:100E5000DF91CF911F910F91FF90EF90DF90CF9096 +:100E6000BF90AF909F908F907F906F905F9008950C +:100E70005F926F927F928F929F92AF92BF92CF922A +:100E8000DF92EF92FF920F931F93CF93DF93CDB733 +:100E9000DEB7A2970FB6F894DEBF0FBECDBF7E01BE +:100EA00049E1E40EF11C2EE5C22E21E0D22E5E01B6 +:100EB00053E2A50EB11C3AE0532E470101E010E0C9 +:100EC00048E1642E55E0752EE4E1F1E0D401852D72 +:100ED00001900D928A95E1F7F701819191917F013F +:100EE0009C01207F33272032310589F424B18F7093 +:100EF0009927A80102C0440F551F8A95E2F7CA013D +:100F0000242B24B995B18095892385B94FC020330E +:100F1000310589F427B18F709927F80102C0EE0FCF +:100F2000FF1F8A95E2F7CF012E2B27B998B1809544 +:100F3000892388B93BC02034310589F42AB18F70E8 +:100F40009927A80102C0440F551F8A95E2F7CA01EC +:100F5000242B2AB99BB1809589238BB927C02035D2 +:100F6000310589F42DB18F709927F80102C0EE0F79 +:100F7000FF1F8A95E2F7CF012E2B2DB99EB18095E8 +:100F800089238EB913C02036310581F420B38F70C8 +:100F90009927A80102C0440F551F8A95E2F7CA019C +:100FA000242B20BB91B38095892381BB50EA5A95AD +:100FB000F1F7BE016F5F7F4F80E090E020E030E00E +:100FC000EEE1F1E0DE011196462D01900D924A9579 +:100FD000E1F7FB0141915191BF01FA01E07FFF2749 +:100FE000E032F10511F4E3B113C0E033F10511F47F +:100FF000E6B10EC0E034F10511F4E9B109C0E03505 +:10100000F10511F4ECB104C0E036F105B9F4EFB12B +:10101000F0E04F70552702C0F595E7954A95E2F745 +:10102000E0FD08C0A801022E02C0440F551F0A941B +:10103000E2F702C040E050E0842B952B2F5F3F4F3A +:101040002C30310509F0BCCFF60120813181281701 +:10105000390721F091838083709200010E9463051B +:10106000F2E0CF0ED11CEA14FB0409F02DCF8091E1 +:1010700000018823A1F1815080930001882339F079 +:101080008FE99FE00197F1F700C0000028C0809130 +:101090005E0190915F01909355018093540180917E +:1010A0006001909161019093570180935601809166 +:1010B000620190916301909359018093580180914E +:1010C00064019091650190935B0180935A01809136 +:1010D00066019091670190935D0180935C018AECB9 +:1010E00092E0892B11F00E94CA0281E0A2960FB60D +:1010F000F894DEBF0FBECDBFDF91CF911F910F914E +:10110000FF90EF90DF90CF90BF90AF909F908F9027 +:101110007F906F905F900895E82FF0E0EE0FFF1F33 +:10112000EC5AFE4F8081918108950895809171015C +:101130000895CF93DF9300D01F92CDB7DEB72091F3 +:10114000E701243021F523E029839B838A832093C0 +:10115000E9008FEF06C095ED9A95F1F7000088231E +:1011600029F09091E800815095FFF5CF8091E8003B +:1011700085FF0DC040E050E063E070E0CE010196D5 +:101180000E94280B8091E8008E778093E8000F90F2 +:101190000F900F90DF91CF910895CF93DF9300D000 +:1011A0001F92CDB7DEB72091E701243029F522E068 +:1011B00029839B838A8383E08093E9008FEF06C0B5 +:1011C00095ED9A95F1F70000882329F09091E800B9 +:1011D000815095FFF5CF8091E80085FF0DC040E07C +:1011E00050E063E070E0CE0101960E94280B8091F0 +:1011F000E8008E778093E8000F900F900F90DF91BA +:10120000CF9108952091E7012430F9F422E0209352 +:10121000E9002FEF06C035ED3A95F1F700002223E3 +:1012200029F03091E800215035FFF5CF2091E800FA +:1012300025FF0BC040E050E065E070E00E94280B05 +:101240008091E8008E778093E8000895CF93DF9334 +:10125000EC018091E701843041F581E08093E90061 +:101260008FEF06C095ED9A95F1F70000882329F0DD +:101270009091E800815095FFF5CF8091E80085FFBF +:1012800014C040E050E068E070E0CE010E94280BFE +:101290008091E8008E778093E80088E0FE01A9E65F +:1012A000B1E001900D928A95E1F7DF91CF91089519 +:1012B0008091E601811109C00E94C80C0E94250D91 +:1012C0008091E20084608093E20008951092E6012C +:1012D0000895089508950C94201C809172018F5FE9 +:1012E0008093720162E30E948924911135C01092AB +:1012F000720180917301882379F18091E701843034 +:1013000049F58091E9008F709091EC0090FF02C048 +:1013100090E801C090E0982B84E08093E9008091F0 +:10132000EB0080FF14C08091EE0087FD03C00FC06A +:101330001092F1008091E80085FDFACF8091E800DD +:1013400080FF05C08091E8008E778093E8009F7051 +:101350009093E90010927301089542E061EC81E0FE +:101360000E943E0C42E061EC82E00E943E0C42E0B2 +:1013700061EC83E00E943E0C42E261EC84E00C945C +:101380003E0C8091E901833009F454C030F481307F +:1013900071F0823009F0A5C08CC08A3009F479C0A0 +:1013A0008B3009F45FC0893009F09BC020C0809168 +:1013B000E801813A09F095C08091E800877F809329 +:1013C000E8008091EC019091ED01892B21F060E023 +:1013D00080E090E003C068E089E691E070E00E9460 +:1013E000770B8091E8008B778093E80008958091D7 +:1013F000E801813209F075C08091EC019091ED0116 +:10140000892B09F06EC08091E800877F8093E80007 +:1014100005C08091E701882309F463C08091E8004A +:1014200082FFF7CF8091F100809371018091E800F5 +:101430008B7753C08091E801813A09F052C08091C6 +:10144000EC019091ED01892B09F04BC08091E800EF +:10145000877F8093E8008091E80080FFFCCF809137 +:101460000B0136C08091E8018132D9F58091EC0101 +:101470009091ED01892BA9F58091E800877F8093F9 +:10148000E8000E94750C8091EA0180930B010C9496 +:1014900015168091E801813221F58091E800877F5F +:1014A0008093E8000E94750C8091EB0180936801A5 +:1014B00008958091E801813AA1F48091E800877F46 +:1014C0008093E8008091E80080FFFCCF8091680164 +:1014D0008093F1008091E8008E778093E8000C946F +:1014E000750C089584B7877F84BF88E10FB6F894A0 +:1014F00080936000109260000FBE90E080E80FB60D +:10150000F89480936100909361000FBE0E943310A5 +:101510000E94C80C0E94250D8091E2008460809397 +:10152000E20078940E94C20F0E94351081E091E0A1 +:101530000E94DF0F0BC00E94DD1B8091E501882314 +:1015400029F00E94081C81110E94120B8091E70172 +:10155000853089F30E943F10F9CF292F332723309C +:101560003105B1F04CF42130310509F44DC0223081 +:10157000310509F04EC007C02132310541F1223258 +:10158000310591F146C0E4E7F0E082E693E045C022 +:1015900099278130910569F08230910589F0892B76 +:1015A00009F037C0EEE5F3E0E491F0E08EE593E07A +:1015B00034C0E0E3F3E0E491F0E080E393E02DC099 +:1015C000E4E0F3E0E491F0E084E093E026C06430EE +:1015D00000F5E62FF0E0EE0FFF1FEA5CFE4F808182 +:1015E0009181E9E0F0E019C0643098F4E62FF0E072 +:1015F000DF01AA0FBB1FA25CBE4F8D919C91EA5BDD +:10160000FE4FE081F0E009C0E2E1F0E086ED93E01A +:1016100004C0E0E0F0E080E090E0DA018D939C937C +:10162000CF01089580E189BD82E189BD09B400FE42 +:10163000FDCF8091D8008F7D8093D8008091E0000D +:1016400082608093E0008091E00081FDFCCF0895EE +:10165000BF92CF92DF92EF92FF920F931F93CF939F +:10166000DF937C018B01EA010E94960CB82E811158 +:1016700033C0209731F028813981021B130BE20E11 +:10168000F31EC12CD12C23C08091E80085FD15C02C +:101690008091E8008E778093E800209749F0888158 +:1016A00099818C0D9D1D9983888325E0B22E14C0ED +:1016B0000E94960C882359F00EC0F70181917F019A +:1016C0008093F10001501109FFEFCF1ADF0A0115D5 +:1016D0001105D1F601C0B82E8B2DDF91CF911F914E +:1016E0000F91FF90EF90DF90CF90BF9008954091C1 +:1016F000EE015091EF014617570748F0611571054B +:1017000039F44091E8004E774093E80001C0BA01F7 +:10171000FC0140E033C08091E701882309F444C014 +:10172000853009F443C08091E80083FD41C0809179 +:10173000E80082FD33C08091E80080FF1FC09091D7 +:10174000F3008091F200392F20E0A901482BCA0153 +:1017500006C041914093F1006150710901966115F5 +:10176000710519F088309105A0F341E0089709F060 +:1017700040E08091E8008E778093E8006115710564 +:1017800051F64111C8CF0AC08091E701882361F06A +:10179000853061F08091E80083FD0AC08091E80007 +:1017A00082FFF2CF80E0089582E0089583E00895FB +:1017B00081E008954091EE015091EF0146175707DF +:1017C00048F06115710539F44091E8004E77409377 +:1017D000E80001C0BA01FC0140E034C08091E7019B +:1017E000882309F445C0853009F444C08091E8009D +:1017F00083FD42C08091E80082FD34C08091E80002 +:1018000080FF20C09091F3008091F200392F20E0FA +:10181000A901482BCA0107C044914093F1003196B9 +:101820006150710901966115710519F088309105B3 +:1018300098F341E0089709F040E08091E8008E7746 +:101840008093E8006115710549F64111C7CF0AC0C0 +:101850008091E701882361F0853061F08091E80094 +:1018600083FD0AC08091E80082FFF2CF80E00895F6 +:1018700082E0089583E0089581E00895982F2CC0B8 +:101880009093E900981739F07091EC002091ED00E9 +:101890005091F00003C0242F762F50E021FD02C0AC +:1018A0009F5F1AC03091EB003E7F3093EB00309188 +:1018B000ED003D7F3093ED003091EB0031603093CF +:1018C000EB007093EC002093ED005093F00020911A +:1018D000EE0027FDE5CF07C0973090F28F70809320 +:1018E000E90081E0089580E008958091E80187FD96 +:1018F00005C08091E80080FF0EC012C08091E80012 +:1019000082FD05C08091E7018111F8CF0895809193 +:10191000E8008B7708C08091E7018111EACF089534 +:101920008091E8008E778093E80008958091E4002C +:101930009091E50045E62091EC0020FD1FC023C0FA +:101940002091E701222391F0253091F02091EB00C6 +:1019500025FD10C02091E4003091E50028173907DB +:1019600051F34150C90139F784E0089582E00895A8 +:1019700083E0089581E0089580E008952091E800D3 +:1019800020FFDECFF9CF2091E80022FFD9CFF4CF9E +:101990000E94360D0E943E0DE0EEF0E080818160F5 +:1019A0008083E8EDF0E080818F77808319BCA7ED1C +:1019B000B0E08C918E7F8C9380818F7E808310929B +:1019C000E60108950F931F93CF93DF930E94360D86 +:1019D0000E943E0DC8EDD0E088818F778883888192 +:1019E0008068888388818F7D888319BC1092E70185 +:1019F0001092E3011092E5011092E40100EE10E074 +:101A0000F80180818B7F808388818160888342E0B8 +:101A100060E080E00E943E0CE1EEF0E080818E7F8D +:101A20008083E2EEF0E08081816080838081886045 +:101A30008083F80180818E7F8083888180618883A4 +:101A4000DF91CF911F910F910895E8EDF0E0808133 +:101A50008F7E8083E7EDF0E080818160808384E089 +:101A600082BF81E08093E6010C94E20CE8EDF0E0A7 +:101A700080818E7F80831092E20008951092DA00B8 +:101A80001092E10008951F920F920FB60F92112449 +:101A90002F933F934F935F936F937F938F939F9376 +:101AA000AF93BF93EF93FF938091E10082FF0BC050 +:101AB0008091E20082FF07C08091E1008B7F8093DC +:101AC000E1000E946D098091DA0080FF1FC08091C3 +:101AD000D80080FF1BC08091DA008E7F8093DA00EF +:101AE0008091D90080FF0DC080E189BD82E189BD70 +:101AF00009B400FEFDCF81E08093E7010E94580900 +:101B000005C019BC1092E7010E9466098091E100AE +:101B100080FF19C08091E20080FF15C08091E20033 +:101B20008E7F8093E2008091E20080618093E200EA +:101B30008091D80080628093D80019BC85E08093A2 +:101B4000E7010E946A098091E10084FF30C0809122 +:101B5000E20084FF2CC080E189BD82E189BD09B427 +:101B600000FEFDCF8091D8008F7D8093D8008091BA +:101B7000E1008F7E8093E1008091E2008F7E809370 +:101B8000E2008091E20081608093E2008091E301B5 +:101B9000882311F084E007C08091E30087FF02C032 +:101BA00083E001C081E08093E7010E946B0980918E +:101BB000E10083FF29C08091E20083FF25C080916E +:101BC000E100877F8093E10082E08093E70110923B +:101BD000E3018091E1008E7F8093E1008091E2003B +:101BE0008E7F8093E2008091E20080618093E2002A +:101BF00042E060E080E00E943E0C8091F00088604E +:101C00008093F0000E946909FF91EF91BF91AF911D +:101C10009F918F917F916F915F914F913F912F9104 +:101C20000F900FBE0F901F9018951F920F920FB636 +:101C30000F9211242F933F934F935F936F937F9352 +:101C40008F939F93AF93BF93CF93EF93FF93809125 +:101C5000E9008F709091EC0090FF02C090E801C005 +:101C600090E0C92FC82B1092E9008091F000877F87 +:101C70008093F00078940E94590E1092E9008091B0 +:101C8000F00088608093F000CF70C093E900FF916E +:101C9000EF91CF91BF91AF919F918F917F916F9174 +:101CA0005F914F913F912F910F900FBE0F901F901A +:101CB00018951F93CF93DF93CDB7DEB7AC970FB6D0 +:101CC000F894DEBF0FBECDBFE8EEF1E08091F100E9 +:101CD000819321E0E03FF207C9F70E94C10980919A +:101CE000E80083FF37C18091E8019091E9019530C8 +:101CF00009F488C038F49130B1F170F0933009F0F4 +:101D000029C131C0983009F4F8C0993009F404C1F0 +:101D1000963009F01FC19DC0803821F0823809F04B +:101D200019C108C08091E4019091E501992389F0DF +:101D300082600FC08091EC019091ED018F70992726 +:101D40008093E9008091EB0085FB882780F9109251 +:101D5000E9009091E800977F9093E8008093F1006C +:101D60001092F100D5C0882319F0823009F0F2C03A +:101D70008F7121F0823009F0EDC00BC08091EA0133 +:101D8000813009F0E7C0933009F080E08093E501ED +:101D90002FC08091EA0181112BC08091EC019091BC +:101DA000ED018F709927009709F4D4C08093E90062 +:101DB0002091EB0020FF1CC02091E901233021F489 +:101DC0008091EB00806212C09091EB009061909343 +:101DD000EB0021E030E001C0220F8A95EAF7209362 +:101DE000EA001092EA008091EB0088608093EB009B +:101DF0001092E9008091E800877F8093E8000E94BC +:101E0000750CA8C08111A6C08091EA019091EB01E8 +:101E10008F779927182F9091E3009078982B9093C3 +:101E2000E3008091E800877F8093E8000E94750CB2 +:101E30008091E80080FFFCCF8091E3008068809370 +:101E4000E300112311F083E001C082E08093E701F9 +:101E500081C08058823008F07DC08091EA01909165 +:101E6000EB018C3D23E0920779F583E08A838AE2D7 +:101E700089834FB7F894DE01139620E03EE051E2EB +:101E8000E32FF0E050935700E49120FF03C0E29568 +:101E9000EF703F5FEF708E2F90E0EA3010F0C79642 +:101EA00001C0C0968D939D932F5F243149F74FBF9A +:101EB0008091E800877F8093E8006AE270E0CE01BD +:101EC00001960E94770B13C0AE01455D5F4F609194 +:101ED000EC010E94AD0A0097E9F12091E800277F0C +:101EE0002093E800BC018BA59CA50E94DA0B809191 +:101EF000E8008B778093E8002DC0803859F58091F9 +:101F0000E800877F8093E8008091E3018093F100EF +:101F10008091E8008E7771CF81111CC09091EA0109 +:101F20009230C0F48091E800877F8093E80090931E +:101F3000E3010E94750C8091E301811104C080913E +:101F4000E30087FF02C084E001C081E08093E701E5 +:101F50000E94AD098091E80083FF0AC08091E800EB +:101F6000877F8093E8008091EB0080628093EB0094 +:101F7000AC960FB6F894DEBF0FBECDBFDF91CF9108 +:101F80001F910895CF938091E7018823B1F080914C +:101F9000E9008F709091EC0090FF02C090E801C0C2 +:101FA00090E0C92FC82B1092E9008091E80083FDD2 +:101FB0000E94590ECF70C093E900CF91089590937D +:101FC0007501809374010895E0917401F091750199 +:101FD000309721F00190F081E02D099480E0089580 +:101FE000E0917401F0917501309721F00280F38146 +:101FF000E02D09940895E0917401F09175013097F6 +:1020000021F00480F581E02D099408952091760156 +:10201000309177018217930771F090937701809345 +:102020007601E0917401F0917501309721F00680FE +:10203000F781E02D0994089520917801309179017C +:102040008217930771F09093790180937801E09162 +:102050007401F0917501309721F00084F185E02D35 +:102060000994089508950C9432100E94541C0E9403 +:1020700028060E94281D0C94D0220C9462055F92C1 +:102080006F927F928F929F92AF92BF92CF92DF9288 +:10209000EF92FF920F931F93CF93DF93CDB7DEB7ED +:1020A0002A970FB6F894DEBF0FBECDBF0E94380747 +:1020B0009AE7C92E91E0D92E00E010E0AA24A3945B +:1020C000B12C502E802F0E948C083C01F601E1902B +:1020D000F1906F01E826F926E114F10431F40F5F65 +:1020E0001F4F0530110569F73AC08091D00181FD7D +:1020F0000E94950820E030E04501022E02C0880CC5 +:10210000991C0A94E2F7C4018E219F21892B09F1C1 +:102110002E835F826820792081E0672809F480E0BF +:1021200088870E945D1C8160782F9A8789874E81FD +:102130005F8168858A850E94F810F801EE0FFF1F05 +:10214000E658FE4F8081918188259925918380836F +:1021500016C02F5F3F4F2C30310571F6C0CF8FEF87 +:1021600089838A831B820E945D1C8160782F9D83F6 +:102170008C8349815A816B818D810E94F8100E9465 +:102180001520109184010E94E40F1817D9F00E94C5 +:10219000E40F809384012A960FB6F894DEBF0FBE39 +:1021A000CDBFDF91CF911F910F91FF90EF90DF9006 +:1021B000CF90BF90AF909F908F907F906F905F90E7 +:1021C0000C943D102A960FB6F894DEBF0FBECDBF1B +:1021D000DF91CF911F910F91FF90EF90DF90CF9003 +:1021E000BF90AF909F908F907F906F905F90089579 +:1021F000CF93DF93CDB7DEB72B970FB6F894DEBF42 +:102200000FBECDBF4F83588769877A878B87DE01E2 +:10221000119686E0FD0111928A95E9F785E0FE01AD +:10222000379601900D928A95E1F749815A816B8129 +:102230007C818D819E810E94D4182B960FB6F894D4 +:10224000DEBF0FBECDBFDF91CF910895CF93C82FD2 +:10225000882309F4C1C0823859F40E94E40F81FD3B +:10226000BBC089E30E943B1B0E94B71B89E30CC0E3 +:10227000833879F40E94E40F80FDAEC083E50E94AC +:102280003B1B0E94B71B83E50E945D1BCF910C9402 +:10229000B71B843859F40E94E40F82FD9DC087E487 +:1022A0000E943B1B0E94B71B87E4EECF8450813A0B +:1022B00048F48C2F0E94322281118EC08C2F0E94F4 +:1022C0003B1BE4CF8C2F805E883050F4C77081E0D8 +:1022D00090E001C0880FCA95EAF70E947E1BD6CF16 +:1022E0008C2F855A833078F4C53A29F0C63A31F4F8 +:1022F00082E890E005C081E890E002C083E890E0C9 +:10230000CF910C9406108C2F885A833108F064C04A +:10231000C83A39F1C93A41F1CA3A49F1CB3A51F1D7 +:10232000CC3A59F1CD3A61F1C03B69F1CE3A71F145 +:10233000CF3A79F1C13B81F1C23B89F1C33B91F1C5 +:10234000C43B99F1C53BA1F1C63BA9F1C73BB1F133 +:10235000C83BB9F1C93BC1F1CA3BC9F58AE292E079 +:1023600038C082EE90E035C089EE90E032C08AEE4F +:1023700090E02FC085EB90E02CC086EB90E029C068 +:1023800087EB90E026C08CEC90E023C08DEC90E0D1 +:1023900020C083E891E01DC08AE891E01AC082E97C +:1023A00091E017C084E991E014C081E292E011C08D +:1023B00083E292E00EC084E292E00BC085E292E0FC +:1023C00008C086E292E005C087E292E002C080E0A9 +:1023D00090E0CF910C941C10CF910895882309F4BC +:1023E0004DC0823859F40E94E40F81FF47C089E351 +:1023F0000E943B1B0E94B71B89E30CC0833871F419 +:102400000E94E40F80FF3AC083E50E943B1B0E94BC +:10241000B71B83E50E945D1B0C94B71B843859F4ED +:102420000E94E40F82FF2AC087E40E943B1B0E94A7 +:10243000B71B87E4EFCF982F9450913A08F4EACF76 +:10244000982F905E983058F4282F277081E090E004 +:1024500001C0880F2A95EAF70E94841BDDCF982FD0 +:10246000955A933020F480E090E00C940610885A3E +:10247000833120F480E090E00C941C1008958823B0 +:1024800021F00E947E1B0C94B71B0895882321F035 +:102490000E94841B0C94B71B0895BF92CF92DF92C9 +:1024A000EF92FF920F931F93CF93DF93CDB7DEB7D9 +:1024B00027970FB6F894DEBF0FBECDBF8C0185E025 +:1024C000F801DE01119601900D928A95E1F7F8016D +:1024D00030812181F280558152955F708381948192 +:1024E000892B39F02F3F41F481E090E03F3F31F0FC +:1024F00003C081E090E002C080E090E080FD73C303 +:1025000039832A8389819A815E830E94F81AB92EC1 +:102510008F830E94F71A0E941F1A2B2D22952F706D +:1025200030E05E816F812530310509F4E6C06CF43E +:10253000243031050CF0A2C04B2D407F8B2D8F70C5 +:10254000223031050CF045C017C02C3031054CF459 +:102550002A3031050CF0E7C12830310509F043C3BA +:10256000E5C02D30310509F4BAC20CF4A2C22F30F7 +:10257000310509F038C323C3182F411101C002C02F +:102580001295107FFF2059F0112309F46BC2812F9F +:102590006F830E948E1B0E94B71B6F8163C2862FC0 +:1025A0000E94EE11112309F41EC3812F0E94941B77 +:1025B00027960FB6F894DEBF0FBECDBFDF91CF9147 +:1025C0001F910F91FF90EF90DF90CF90BF900C94F0 +:1025D000B71B403211F08295807F662319F061307D +:1025E00071F523C0FF20B1F0511101C032C051304C +:1025F00081F527960FB6F894DEBF0FBECDBFDF91F1 +:10260000CF911F910F91FF90EF90DF90CF90BF90EF +:102610000C949E1B511101C003C0513009F4E3C258 +:102620008E830E94A11B8E819AC1FF2021F056301B +:1026300008F0D9C20EC0553008F0D5C290C1FF20B5 +:10264000C9F0552331F0F801958190FF0BC29F70BE +:10265000958327960FB6F894DEBF0FBECDBFDF91EE +:10266000CF911F910F91FF90EF90DF90CF90BF908F +:102670000C943F12552309F472C109C22B2D2695E3 +:102680002695237030E02115310529F021303105E0 +:1026900009F0A9C219C0FF2021F0862F9B2D93704D +:1026A00002C080E090E027960FB6F894DEBF0FBE20 +:1026B000CDBFDF91CF911F910F91FF90EF90DF90F1 +:1026C000CF90BF900C940610FF2021F0862F9B2DF9 +:1026D000937002C080E090E027960FB6F894DEBFBA +:1026E0000FBECDBFDF91CF911F910F91FF90EF9063 +:1026F000DF90CF90BF900C941C10862FFF2019F014 +:102700000E941B1F02C00E94831F27960FB6F894D9 +:10271000DEBF0FBECDBFDF91CF911F910F91FF9014 +:10272000EF90DF90CF90BF900C940A208B2D837098 +:1027300009F079C0F11057C2262F229526952770EF +:10274000220F220F862F8F70C82ED12CE12CF12C56 +:10275000022E04C0CC0CDD1CEE1CFF1C0A94D2F728 +:1027600064FF10C06FE070E080E090E004C0660F8E +:10277000771F881F991F2A95D2F7609570958095CD +:10278000909503C060E070E0CB012B2D2695269537 +:102790002370422F50E042305105D9F043305105AB +:1027A00069F16C297D298E299F294130510551F10C +:1027B00027960FB6F894DEBF0FBECDBFDF91CF9145 +:1027C0001F910F91FF90EF90DF90CF90BF900C94EE +:1027D000341A6C297D298E299F2927960FB6F894E3 +:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044 +:1027F000EF90DF90CF90BF900C94461A0E94341A4D +:10280000C701B60127960FB6F894DEBF0FBECDBF45 +:10281000DF91CF911F910F91FF90EF90DF90CF90BC +:10282000BF900C94221AFF2019F08B2D817001C0EB +:102830008695882309F4D7C1262F229526952770DF +:10284000220F220F862F8F70C82ED12CE12CF12C55 +:10285000022E04C0CC0CDD1CEE1CFF1C0A94D2F727 +:1028600064FF10C06FE070E080E090E004C0660F8D +:10287000771F881F991F2A95D2F7609570958095CC +:10288000909503C060E070E0CB012B2D2695269536 +:102890002370422F50E042305105D9F043305105AA +:1028A00069F16C297D298E299F294130510551F10B +:1028B00027960FB6F894DEBF0FBECDBFDF91CF9144 +:1028C0001F910F91FF90EF90DF90CF90BF900C94ED +:1028D000D31A6C297D298E299F2927960FB6F89443 +:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043 +:1028F000EF90DF90CF90BF900C94E51A0E94D31A0E +:10290000C701B60127960FB6F894DEBF0FBECDBF44 +:10291000DF91CF911F910F91FF90EF90DF90CF90BB +:10292000BF900C94C11A603F59F120F4603E08F446 +:1029300094C008C0623F09F467C0F0F1633F09F03A +:102940008CC065C0162F1F708B2D8F71FF2021F05A +:102950000E946C1A812F7DCE0E94871A812F2796A4 +:102960000FB6F894DEBF0FBECDBFDF91CF911F91A0 +:102970000F91FF90EF90DF90CF90BF900C94461294 +:10298000FF20B1F0553008F02EC18B2D8F712796A6 +:102990000FB6F894DEBF0FBECDBFDF91CF911F9170 +:1029A0000F91FF90EF90DF90CF90BF900C94A61AFC +:1029B000563008F018C1E9CFFF2099F08B2D8F71A8 +:1029C00027960FB6F894DEBF0FBECDBFDF91CF9133 +:1029D0001F910F91FF90EF90DF90CF90BF900C94DC +:1029E0006C1A8B2D8F7127960FB6F894DEBF0FBE31 +:1029F000CDBFDF91CF911F910F91FF90EF90DF90AE +:102A0000CF90BF900C94871AF110EBCFD7CFFF2057 +:102A100099F08B2D8F7127960FB6F894DEBF0FBEFD +:102A2000CDBFDF91CF911F910F91FF90EF90DF907D +:102A3000CF90BF900C945D1A27960FB6F894DEBF26 +:102A40000FBECDBFDF91CF911F910F91FF90EF90FF +:102A5000DF90CF90BF900C94581AFF20A9F0552317 +:102A600009F4ACCF862F27960FB6F894DEBF0FBEC1 +:102A7000CDBFDF91CF911F910F91FF90EF90DF902D +:102A8000CF90BF900C942611552309F4AACF862F1E +:102A900027960FB6F894DEBF0FBECDBFDF91CF9162 +:102AA0001F910F91FF90EF90DF90CF90BF900C940B +:102AB000EE114B2D4F70C8010E94AB0227960FB646 +:102AC000F894DEBF0FBECDBFDF91CF911F910F9164 +:102AD000FF90EF90DF90CF90BF900C948A19F11087 +:102AE00082C09B2D9F70492F50E04230510599F1D3 +:102AF00044F44115510569F04130510509F073C0A6 +:102B000019C043305105C1F14430510509F06BC083 +:102B100044C027960FB6F894DEBF0FBECDBFDF913D +:102B2000CF911F910F91FF90EF90DF90CF90BF90CA +:102B30000C94E12227960FB6F894DEBF0FBECDBFEE +:102B4000DF91CF911F910F91FF90EF90DF90CF9089 +:102B5000BF900C94F82227960FB6F894DEBF0FBEF4 +:102B6000CDBFDF91CF911F910F91FF90EF90DF903C +:102B7000CF90BF900C94142327960FB6F894DEBF25 +:102B80000FBECDBFDF91CF911F910F91FF90EF90BE +:102B9000DF90CF90BF900C942723862F27960FB6F7 +:102BA000F894DEBF0FBECDBFDF91CF911F910F9183 +:102BB000FF90EF90DF90CF90BF900C944B234B2D64 +:102BC0004F70C80127960FB6F894DEBF0FBECDBF79 +:102BD000DF91CF911F910F91FF90EF90DF90CF90F9 +:102BE000BF900C94D40327960FB6F894DEBF0FBEA7 +:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC +:102C0000CF90BF9008950E949B1B0E94701B0E9452 +:102C1000B71B0E94B6200E940A2080E090E00E942C +:102C2000061080E090E00C941C100E948B1B0C940A +:102C300003160E94F81A292F22952F7030E02C30AD +:102C400031054CF42A3031056CF422503109223020 +:102C5000310590F407C02C30310551F02F3031058B +:102C600059F406C0803E10F0803F31F481E00895B1 +:102C700093FB882780F9089580E00895CF93DF9330 +:102C800000D000D01F92CDB7DEB70F900F900F90FD +:102C90000F900F90DF91CF910895CF93DF9300D0E5 +:102CA00000D000D0CDB7DEB726960FB6F894DEBFC1 +:102CB0000FBECDBFDF91CF9108951F93CF93DF93C8 +:102CC000C091BB0116E012C0D0E01C9FF0011D9F17 +:102CD000F00D1124E557FE4F4081518162817381CF +:102CE000848195810E944D162196C7708091BC0108 +:102CF000C813EACFDF91CF911F91089540918501CC +:102D000050918601609187017091880180918901BD +:102D100090918A010C944D160F931F93CF93DF93DC +:102D200080918A0182958F7009F069C08091870136 +:102D3000882309F464C0A091BB01D091BC01B0917B +:102D40008501C0918601809188019091890121E0DF +:102D500030E0BF3F11F020E030E0122FBC01609561 +:102D6000709506E04AC0009721F0CF3F29F4212F4B +:102D700005C021E030E002C020E030E020FD3BC093 +:102D80004A2F50E0049FF001059FF00D1124E557F4 +:102D9000FE4F2181C2132FC02081B2132CC022818B +:102DA000211129C0238134812817390718F0281BE5 +:102DB000390B02C0260F371F283C3105E0F4809103 +:102DC0008A018F70806180938A0186E0849FF00180 +:102DD000859FF00D1124E057FE4F80818F70806138 +:102DE000808385E891E00E944D12DF91CF911F9181 +:102DF0000F910C945D16AF5FA770AD13B4CFDF9148 +:102E0000CF911F910F910895EF92FF920F931F930F +:102E1000CF93DF93CDB7DEB762970FB6F894DEBFDE +:102E20000FBECDBF8C0185E0F801DE011D9601903B +:102E30000D928A95E1F7D8014C9111965C9111970A +:102E400012966C9112971396ED90FC9014977091D6 +:102E50008501E09186018091880190918901009718 +:102E600039F0EF3F41F421E030E07F3F31F003C023 +:102E700021E030E002C020E030E020FD5CC1209184 +:102E80008701222309F4F1C0E816F90628F097011A +:102E9000281B390BC90104C0809590958E0D9F1D8C +:102EA000883C910508F098C080918A01982F907F06 +:102EB00009F064C0E51314C0741312C0611110C08E +:102EC0008F70806180938A010E947E1685E891E070 +:102ED0000E944D1280918A01D80115968C9343C1AE +:102EE000EF2839F05F3F41F481E090E04F3F31F04F +:102EF00003C081E090E002C080E090E080FD03C06C +:102F000081E0862702C080E090E080FF2EC08091A3 +:102F1000BB012091BC0136E013C090E0389FF00166 +:102F2000399FF00D1124E557FE4F7181571306C0EC +:102F30007081471303C07281671317C001968770B1 +:102F40008213EBCF12C19F7059F0882309F40BC193 +:102F500007C09F7029F0F8019581907F09F403C1A3 +:102F6000805E883008F4FFC0D2C0662309F4FBC03D +:102F700080918A01816080938A01F5C0E51308C0C1 +:102F8000741306C0611104C0D80115968C939DC0BE +:102F90004D875E878D859E856A8B0E9419166A898A +:102FA000882309F4B4C0662309F4B1C020918A01D2 +:102FB000822F82958F7090E002970CF4C6C08091AA +:102FC00085019091860198878F831986FB86EA8612 +:102FD0002C87CE01079646C080918A01982F907F5A +:102FE00059F47E2DF98AE88A89890E943E1685E87F +:102FF00091E00E944D1295C0E51311C074130FC0EB +:1030000061110DC0F8018583C8010E944D12E5E8E9 +:10301000F1E086E0DF011D928A95E9F7A2C04D87B5 +:103020005E878D859E856A8B0E9419166A89882322 +:1030300009F46DC0662309F46AC020918A01822FC9 +:1030400082958F7090E002970CF47FC0809185018B +:10305000909186019A8389831B82FD82EC822E8364 +:10306000CE0101960E944D1270C0E816F90628F0B4 +:103070009701281B390BC90104C0809590958E0DCE +:103080009F1D883C910508F046C0662309F43FC0A7 +:10309000E51330C074132EC020918A0120FD21C099 +:1030A000322F32953F70832F90E00097D1F0D801F6 +:1030B00015962C9315970F9741F0832F8F5F82956C +:1030C000807F2F70282B15962C93C8010E944D12DB +:1030D00086E0F801A5E8B1E001900D928A95E1F74C +:1030E0003EC086E0F801A5E8B1E001900D928A9516 +:1030F000E1F737C04D875E878D859E850E94191642 +:10310000811123C080918A01816080938A01C80166 +:103110000E944D1226C07E2DF98AE88A89890E9474 +:103120003E16E5E8F1E086E0DF011D928A95E9F7B9 +:103130000E947E1618C0662351F34D875E878D85E9 +:103140009E850E941916882311F386E0F801A5E8F0 +:10315000B1E001900D928A95E1F70E948C160E94D1 +:103160007E1681E014C080E012C04D875E878D8599 +:103170009E850E94F81A292F22952F7030E0223068 +:1031800031050CF4E0CE243031050CF6E2CE629627 +:103190000FB6F894DEBF0FBECDBFDF91CF911F9168 +:1031A0000F91FF90EF9008951F93CF93DF93CDB7CA +:1031B000DEB72C970FB6F894DEBF0FBECDBF4F839E +:1031C000588769877A878B879C87CE0107960E94EC +:1031D00004178823D9F02F8138858A859B85892B10 +:1031E00039F03F3F19F080E090E004C02F3FD9F75D +:1031F00081E090E0892B09F06DC04F815885698589 +:103200007A858B859C850E944D1664C086E0FE0100 +:103210003796DE01119601900D928A95E1F7FF81B4 +:10322000E8854A855B854115510539F0EF3F41F44A +:1032300081E090E0FF3F31F003C081E090E002C008 +:1032400080E090E080FD46C02091BC0130E0C901E3 +:103250000196877099276091BB0170E086179707E8 +:1032600009F440C0F983EA835D834C8396E0929F22 +:10327000D001939FB00D1124A557BE4FFE0131968A +:1032800001900D929A95E1F78093BC010E945D1622 +:1032900021C0189FC001112485579E4F0E9404171A +:1032A000882371F1E091BB011E9FF0011124E557C5 +:1032B000FE4F4081518162817381848195810E949A +:1032C0004D168091BB0190E00196877099278093FD +:1032D000BB0101C016E08091BB019091BC01891334 +:1032E000D8CF0EC00E9415161092BC011092BB01DF +:1032F000E5E8F1E086E0DF011D928A95E9F7EACF83 +:103300002C960FB6F894DEBF0FBECDBFDF91CF91E4 +:103310001F910895DF92EF92FF920F931F93CF9327 +:10332000DF93EC01009709F46EC0D12CEE24E394F6 +:10333000F12C8E010F5F1F4FFE018491843748F4FA +:10334000843008F04CC0813071F0823009F05BC0ED +:103350001EC0853709F43FC080F1982F94589037EC +:1033600008F051C03FC02296F8018491982F905EDA +:10337000983050F48770FE2D01C0FF0F8A95EAF750 +:103380008F2F0E948E1B13C00E9426112FC02296E1 +:10339000F8018491982F905E983060F48770FE2D2C +:1033A00001C0FF0F8A95EAF78F2F0E94941B0E949D +:1033B000B71B1CC00E94EE1119C02296F80104919F +:1033C00007C08FE99FE00197F1F700C000000150AE +:1033D0000111F7CF0BC02296F801D49007C00E94CC +:1033E000261103C08F770E94EE11E8018D2D07C0D2 +:1033F0008150EFE9FFE03197F1F700C0000088232A +:1034000009F497CFF5CFDF91CF911F910F91FF90E6 +:10341000EF90DF9008956093C1017093C201809393 +:10342000C3019093C4010C9403166093BD01709383 +:10343000BE018093BF019093C0010C9403160895C0 +:103440000C940B1A0F931F930091C1011091C201AC +:103450002091C3013091C401602B712B822B932BDF +:103460001F910F910C940B1A0F931F930091C101A0 +:103470001091C2012091C3013091C40160237123D6 +:10348000822393231F910F910C940B1A0F931F9378 +:103490000091C1011091C2012091C3013091C4017A +:1034A00060277127822793271F910F910C940B1A85 +:1034B00060E070E0CB010C94151A41E050E060E050 +:1034C00070E004C0440F551F661F771F8A95D2F71E +:1034D000CB01BA010C94151A41E050E060E070E0B5 +:1034E00004C0440F551F661F771F8A95D2F780913D +:1034F000BD019091BE01A091BF01B091C001482BC8 +:10350000592B6A2B7B2BCB01BA010C94151A41E085 +:1035100050E060E070E004C0440F551F661F771F45 +:103520008A95D2F740955095609570958091BD0130 +:103530009091BE01A091BF01B091C00148235923D1 +:103540006A237B23CB01BA010C94151A41E050E0A9 +:1035500060E070E004C0440F551F661F771F8A9516 +:10356000D2F78091BD019091BE01A091BF01B091B1 +:10357000C001482759276A277B27CB01BA010C9441 +:10358000151A0F931F930091BD011091BE01209158 +:10359000BF013091C001602B712B822B932B1F91A7 +:1035A0000F910C94151A0F931F930091BD01109168 +:1035B000BE012091BF013091C0016023712382239D +:1035C00093231F910F910C94151A0F931F93009141 +:1035D000BD011091BE012091BF013091C001602753 +:1035E0007127822793271F910F910C94151A089524 +:1035F000CF92DF92EF92FF920F931F93CF93DF93BF +:10360000EC01C090C101D090C201E090C301F090E4 +:10361000C4018091BD019091BE01A091BF01B09104 +:10362000C001C82AD92AEA2AFB2A0FE110E0B70113 +:10363000A601002E04C076956795579547950A9484 +:10364000D2F740FF08C0BE01802F0E94FA038130EC +:10365000910509F007C00150110948F7BE0180E04B +:103660000E94FA03DF91CF911F910F91FF90EF908D +:10367000DF90CF90089540910C0150910D0120E012 +:1036800030E09FEFFA01E20FF31F62816817A1F0AB +:103690009F3F19F4611101C0922F2F5F3F4F2630D9 +:1036A000310581F707C0FA01E90FF11D97FDFA9581 +:1036B000828308959F3FB9F7089540910C0150917E +:1036C0000D0120E030E0FA01E20FF31F9281981320 +:1036D00001C012822F5F3F4F26303105A1F70895B8 +:1036E00081E090E0E0910C01F0910D01E80FF91FED +:1036F0001082019688309105A9F708959091C5012F +:10370000982B9093C501089580959091C5019823B9 +:103710009093C50108951092C50108959091C60136 +:10372000982B9093C601089580959091C601982397 +:103730009093C60108951092C60108958093C70121 +:1037400008951092C701089540910C0150910D0108 +:1037500020E030E080E0FA01E20FF31F9181911147 +:103760008F5F2F5F3F4F27303105A9F70895E09114 +:103770000C01F0910D018091C5018083E0910C0155 +:10378000F0910D0180819091C601892B80839091E9 +:10379000C701992361F0E0910C01F0910D01808146 +:1037A000892B80830E94A41B81110E94A11B809100 +:1037B0000C0190910D010C94F00F8091E701843081 +:1037C00021F11092D10120E488E190E00FB6F89445 +:1037D000A895809360000FBE2093600080E00E9457 +:1037E000E10283B7817F846083BF83B7816083BF39 +:1037F0007894889583B78E7F83BF88E10FB6F8945D +:1038000080936000109260000FBE0895089508959F +:10381000CF9380E00E94E1020E94061C0E943807BC +:103820000E94071CC0E08C2F0E948C08892B29F471 +:10383000CF5FC530C1F780E001C081E0CF9108952E +:103840000E94151680E00E94E1020E94D0220E9490 +:10385000E40F0C9462051F920F920FB60F92112481 +:103860008F939F93AF93BF938091D101811113C028 +:103870008091D2019091D301A091D401B091D50152 +:103880004196A11DB11D8093D2019093D301A093C5 +:10389000D401B093D501BF91AF919F918F910F90BB +:1038A0000FBE0F901F90189582E084BD93E095BDE8 +:1038B0009AEF97BD80936E0008958FB7F89440916A +:1038C000D2015091D3016091D4017091D5018FBF85 +:1038D000CA010895CF92DF92EF92FF920F931F9348 +:1038E0002FB7F8944091D2015091D3016091D40147 +:1038F0007091D5012FBF6A017B01EE24FF248C015A +:1039000020E030E0C016D106E206F30620F09A016E +:10391000281B390B05C09C0120953095240F351FBD +:10392000C9011F910F91FF90EF90DF90CF90089504 +:103930001F920F920FB60F9211248F939F93AF9304 +:10394000BF938091D2019091D301A091D401B09105 +:10395000D5010196A11DB11D8093D2019093D30191 +:10396000A093D401B093D501BF91AF919F918F9156 +:103970000F900FBE0F901F9018950E94C80CF894DE +:103980002FEF87EA91E6215080409040E1F700C098 +:10399000000087E090EBDC018093F1019093F2014D +:1039A000A093F301B093F4012CE088E190E00FB60E +:1039B000F894A895809360000FBE20936000FFCF1D +:1039C000CF92DF92EF92FF920F931F93CF93DF93EB +:1039D000C82ED12C01E010E08D2D0E948C087C01B6 +:1039E000C0E0D0E098010C2E02C0220F331F0A94D1 +:1039F000E2F72E213F21232B29F42196CC30D1054B +:103A000089F708C06C2F7D2D80E00E94D503C81275 +:103A1000F4CF06C0D39485E0D812DECF80E001C099 +:103A200081E0DF91CF911F910F91FF90EF90DF9098 +:103A3000CF900895CF93C82F8CE20E94E01C88237A +:103A400021F08C2FCF910C94E01C80E0CF91089551 +:103A5000CF930E946B1E811102C00E944C1EC5E6CE +:103A600008C00E9438078FE39CE90197F1F700C076 +:103A70000000C150B1F789E20E941A1D81110AC1EC +:103A80008AE20E941A1D81110E944C1E85E00E944C +:103A90001A1D81110E94BD1C0E94761E8093D001C8 +:103AA00087E00E941A1D882399F18BE10E941A1D5C +:103AB000882351F09091D00191FB882780F921E073 +:103AC000822780FB91F922C08EE00E941A1D882374 +:103AD00051F09091D00192FB882780F921E0822754 +:103AE00080FB92F913C080E10E941A1D9091D001D1 +:103AF000882341F093FB882780F921E0822780FB0F +:103B000093F904C0892F809580FB90F99093D001A0 +:103B10008091D0010E947A1E0E94881E8093E1014C +:103B200080EE0E941A1D882341F08091E101982FB8 +:103B3000909590FB80F98093E10189E30E941A1D22 +:103B4000882359F09091E10191FB882780F921E0C9 +:103B5000822780FB91F99093E10182EE0E941A1D69 +:103B6000882359F09091E10192FB882780F921E0A8 +:103B7000822780FB92F99093E10186EE0E941A1D44 +:103B8000882359F09091E10193FB882780F921E087 +:103B9000822780FB93F99093E10183EE0E941A1D26 +:103BA000882359F09091E10194FB882780F921E066 +:103BB000822780FB94F99093E10185E30E941A1D0E +:103BC000882359F09091E10195FB882780F921E045 +:103BD000822780FB95F99093E10181E30E941A1DF1 +:103BE000882359F09091E10196FB882780F921E024 +:103BF000822780FB96F99093E10181E10E941A1DD2 +:103C0000882359F09091E10197FB882780F921E002 +:103C1000822780FB97F99093E1018091E1010E9456 +:103C20008C1E87E20E941A1DC82F8EE10E941A1D69 +:103C30008111C2608FE10E941A1D8111C46080E26F +:103C40000E941A1D8111C86081E20E941A1D811113 +:103C5000C06182E20E941A1D8111C06283E20E944B +:103C60001A1D8111C06484E20E941A1D882311F07C +:103C7000C06802C0CC2329F08C2F0E94831E6C2FB9 +:103C800003C00E947F1E682F70E080E090E0CF911B +:103C90000C94201ACF9108956DEE7EEF80E090E0B5 +:103CA0000E94D92460E082E090E00E94CB2460E092 +:103CB00083E090E00E94CB2460E084E090E00E94EA +:103CC000CB2460E085E090E00E94CB2460E086E0B9 +:103CD00090E00C94CB2480E090E00E94C52421E089 +:103CE0008D3E9E4F09F020E0822F089582E090E003 +:103CF0000C94BD24682F82E090E00C94CB2483E0E8 +:103D000090E00C94BD24682F83E090E00C94CB24C9 +:103D100084E090E00C94BD24682F84E090E00C9443 +:103D2000CB2486E090E00C94BD24682F86E090E0E0 +:103D30000C94CB248091DE0180FF0BC060911101B7 +:103D400085E0689FB0011124759567957595679515 +:103D50002AC081FF09C06091110185E0689FB00110 +:103D60001124759567951FC082FF07C060911101EE +:103D700085E0689FB001112416C04091D80144230A +:103D8000C9F060911001461788F72091110185E074 +:103D9000289F90011124429FC001439F900D112440 +:103DA00070E00E9495246038710540F4611571053A +:103DB00039F002C065E070E0862F08958FE708951E +:103DC00081E008958091DE0180FF08C060910F01BD +:103DD00070E0759567957595679521C081FF06C060 +:103DE00060910F0170E07595679519C082FF04C05E +:103DF00060910F0170E010C08091D8018823C1F05C +:103E000060910E018617A0F790910F01989FC00155 +:103E1000112470E00E9495246038710528F4611522 +:103E2000710521F0862F08958FE7089581E00895A8 +:103E300061E070E0F4CF803F21F40E949A1E8195EA +:103E400004C0813F29F40E949A1E8093DB010895EB +:103E5000823F21F40E949A1E819504C0833F29F479 +:103E60000E949A1E8093DA010895893F19F40E94F6 +:103E7000E21E05C08A3F31F40E94E21E81958093C4 +:103E8000DC0108958B3F21F40E94E21E819504C05D +:103E90008C3F29F40E94E21E8093DD010895843F47 +:103EA00021F48091D901816017C0853F21F4809170 +:103EB000D901826011C0863F21F48091D9018460CC +:103EC0000BC0873F21F48091D901886005C0883FED +:103ED00031F48091D90180618093D90108958D3F9B +:103EE00021F48091DE0181600BC08E3F21F480912E +:103EF000DE01826005C08F3F29F48091DE0184607D +:103F00008093DE010895803F29F48091DB0187FFD3 +:103F10006EC007C0813F41F48091DB0118160CF0A0 +:103F200066C01092DB0163C09091DA01823F19F400 +:103F300097FF5DC005C0833F31F419160CF057C0E0 +:103F40001092DA0154C0893F31F48091DC011816D7 +:103F50000CF04DC006C08A3F39F48091DC0187FF28 +:103F600046C01092DC0143C08B3F29F48091DD01F3 +:103F700087FF3DC006C08C3F39F48091DD011816E3 +:103F8000B4F51092DD0133C0843F21F48091D90152 +:103F90008E7F05C0853F31F48091D9018D7F80935C +:103FA000D90125C0863F21F48091D9018B7FF7CFBD +:103FB000873F21F48091D901877FF1CF883F21F499 +:103FC0008091D9018F7EEBCF8D3F21F48091DE016E +:103FD0008E7F0BC08E3F21F48091DE018D7F05C066 +:103FE0008F3F29F48091DE018B7F8093DE018091E9 +:103FF000DA0181110EC08091DB0181110AC080912C +:10400000DC01811106C08091DD01811102C0109296 +:10401000D801089589ED91E00E94FB0F0E945D1C7C +:104020009093D7018093D6010895CF938091D601C4 +:104030009091D7010E946A1C4091D801442321F03D +:104040002091120130E006C0209113015AE0259F13 +:10405000900111248217930708F486C08091DA0139 +:1040600081110DC09091DB01911109C09091DC018B +:10407000911105C09091DD01992309F475C04F3F5E +:1040800019F04F5F4093D801181624F40E949A1E2D +:104090008093DA018091DA0187FF05C00E949A1EA1 +:1040A00081958093DA018091DB01181624F40E9437 +:1040B0009A1E8093DB018091DB0187FF05C00E947F +:1040C0009A1E81958093DB016091DA01662339F1B4 +:1040D000C091DB01CC2319F1772767FD7095872FFD +:1040E000972F0E949A2323E333E343E35FE30E9485 +:1040F000FE230E9467236093DA016C2F772767FD08 +:104100007095872F972F0E949A2323E333E343E38D +:104110005FE30E94FE230E9467236093DB0180918E +:10412000DC01181624F40E94E21E8093DC018091C9 +:10413000DC0187FF05C00E94E21E81958093DC01AF +:104140008091DD01181624F40E94E21E8093DD01A7 +:104150008091DD0187FF05C00E94E21E819580935A +:10416000DD01CF910C940A20CF910895E9EDF1E0A3 +:1041700085E0DF011D928A95E9F71092D80110922F +:10418000DE010895833089F130F4813061F08230AE +:1041900009F06EC019C0853009F449C0B8F1863005 +:1041A00009F066C055C020911301862F90E0820F60 +:1041B000911D8F3F910520F4620F609313010895C4 +:1041C0008FEF80931301089520911201862F90E0C4 +:1041D000820F911D8F3F910520F4620F60931201B1 +:1041E00008958FEF80931201089520911101862F79 +:1041F00090E0820F911D8F3F910520F4620F609334 +:10420000110108958FEF80931101089520911001FD +:10421000862F90E0820F911D8F3F910520F4620F51 +:104220006093100108958FEF8093100108952091FD +:104230000F01862F90E0820F911D8F3F910520F492 +:10424000620F60930F0108958FEF80930F0108951F +:1042500020910E01862F90E0820F911D8F3F9105D6 +:1042600020F4620F60930E0108958FEF80930E018A +:104270000895833021F130F4813059F0823009F013 +:1042800049C012C0853089F128F1863009F042C05A +:1042900037C080911301681720F4861B80931301A7 +:1042A000089510921301089580911201681720F467 +:1042B000861B809312010895109212010895809137 +:1042C0001101681720F4861B809311010895109244 +:1042D0001101089580911001681720F4861B8093C6 +:1042E0001001089510921001089580910F01681730 +:1042F00020F4861B80930F01089510920F010895FA +:1043000080910E01681720F4861B80930E0108959A +:1043100010920E01089541E050E060E070E004C0AA +:10432000440F551F661F771F8A95D2F7CB01BA013C +:104330000E94201A0C941516873200F58E3108F071 +:1043400086C08E3009F466C060F4873009F44DC031 +:1043500018F4863049F531C0883041F18B3021F5B1 +:104360007BC0863109F478C018F48031E9F45CC070 +:10437000893109F471C08B31B9F442C0883309F432 +:104380006BC048F4893209F460C0853309F45DC01C +:10439000873251F45AC0833409F457C018F48A3371 +:1043A00018F057C0883499F080E008950E94761E76 +:1043B0000E94881E0E94911E4FC08091D001817F73 +:1043C0008E7F8093D00181E08093DF0108950E9469 +:1043D00015162FEF83ED90E3215080409040E1F7D8 +:1043E00000C000000E94BD1C37C08091D00180FF3A +:1043F00003C0817F8E7F01C081608093D0012CC07B +:104400009091D00191FB882780F921E0822780FBE1 +:1044100091F913C09091D00192FB882780F921E097 +:10442000822780FB92F909C09091D00193FB8827E5 +:1044300080F921E0822780FB93F99093D0018823B3 +:1044400059F091609093D00107C080E003C08D5176 +:1044500001C089530E948B2181E0089580E0089576 +:1044600080E00895CF93C82F8091DF01813071F0F3 +:1044700020F0823009F089C037C0A0910C01B091C2 +:104480000D018C91823209F082C007C0A0910C010D +:10449000B0910D018C91823249F48C2F0E942E2212 +:1044A00081111EC08C2F0E949C211CC08C2F0E9449 +:1044B0003022811115C0C43169F030F4CB3081F065 +:1044C000C03109F068C009C0C93221F0C83309F011 +:1044D00062C006C01092DF015EC082E08093DF01FF +:1044E00081E090E081705AC0C932C9F060F4C431F3 +:1044F000B1F020F4C73009F04CC034C0CE51C63002 +:1045000008F047C017C0CE3439F120F4CB3409F09D +:1045100040C01CC0C135C1F0C235D9F513C080916F +:10452000E001882319F01092E00133C081E080930C +:10453000DF0134C0EC2FF0E0E65BFE4F808180931A +:10454000E00127C061E003C061E007C06AE080913C +:10455000E0010E94C2201DC06AE08091E0010E943B +:10456000392117C08EE18093130182E380931201F9 +:104570008AE08093110184E18093100188E08093A8 +:104580000F0188E280930E0104C01092DF0180E0E9 +:1045900005C081E003C080E090E0A4CFCF910895F2 +:1045A0000E946B1E811102C00E944C1E0E94911E2F +:1045B0008093F00180FF02C0869501C080E00C94DA +:1045C000E1028091F001982F9695292F30E0233059 +:1045D00031054CF49F5F990F8170892B8160809326 +:1045E000F0010E94951E8091F00186950C94E102E5 +:1045F0008091F001982F969591F09158990F8170C4 +:10460000892B8093F0018E7F91E009F490E08091F6 +:10461000F00190FB80F98093F0010E94951E80913B +:10462000F00186950C94E1028091F001982F90950D +:1046300090FB80F98093F0010E94951E8091F0011B +:1046400080FF02C0869501C080E00C94E1023091A9 +:10465000F001232F26952F5F2F77822F90E0317066 +:1046600004972CF4220F232B2093F00102C03093E7 +:10467000F0018091F001282F2E7F91E009F490E065 +:1046800090FB80F98093F0010E94951E8091F001CB +:1046900086950C94E1022091F001922F969598272F +:1046A000990F822F8170892B8093F0018E7F91E08A +:1046B00009F490E08091F00190FB80F98093F00183 +:1046C0000E94951E8091F00186950C94E10204D021 +:1046D0006894B1118DC0089570D088F09F5790F004 +:1046E000B92F9927B751A0F0D1F0660F771F881F17 +:1046F000991F1AF0BA95C9F712C0B13081F077D07E +:10470000B1E0089574C0672F782F8827B85F39F01B +:10471000B93FCCF3869577956795B395D9F73EF475 +:1047200090958095709561957F4F8F4F9F4F08951D +:10473000E89409C097FB3EF490958095709561953B +:104740007F4F8F4F9F4F9923A9F0F92F96E9BB27F1 +:104750009395F695879577956795B795F111F8CF6D +:10476000FAF4BB0F11F460FF1BC06F5F7F4F8F4FD8 +:104770009F4F16C0882311F096E911C0772321F0CE +:104780009EE8872F762F05C0662371F096E8862F66 +:1047900070E060E02AF09A95660F771F881FDAF7BD +:1047A000880F9695879597F9089557FD9058440F6F +:1047B000551F59F05F3F71F04795880F97FB991F80 +:1047C00061F09F3F79F0879508951216130614063D +:1047D000551FF2CF4695F1DF08C0161617061806CA +:1047E000991FF1CF86957105610508940895E894A5 +:1047F000BB2766277727CB0197F908950BD078C0A0 +:1048000069D028F06ED018F0952309F05AC05FC027 +:104810001124EECFCADFA0F3959FD1F3950F50E09E +:10482000551F629FF001729FBB27F00DB11D639F62 +:10483000AA27F00DB11DAA1F649F6627B00DA11D08 +:10484000661F829F2227B00DA11D621F739FB00DAE +:10485000A11D621F839FA00D611D221F749F33271E +:10486000A00D611D231F849F600D211D822F762FB7 +:104870006A2F11249F5750408AF0E1F088234AF0B4 +:10488000EE0FFF1FBB1F661F771F881F9150504000 +:10489000A9F79E3F510570F014C0AACF5F3FECF31B +:1048A000983EDCF3869577956795B795F795E795EC +:1048B0009F5FC1F7FE2B880F911D9695879597F9FD +:1048C000089597F99F6780E870E060E008959FEF92 +:1048D00080EC089500240A94161617061806090697 +:1048E000089500240A941216130614060506089566 +:1048F000092E0394000C11F4882352F0BB0F40F4EE +:10490000BF2B11F460FF04C06F5F7F4F8F4F9F4F2D +:104910000895991B79E004C0991F961708F0961B1B +:10492000881F7A95C9F78095089597FB072E16F48E +:10493000009407D077FD09D00E94A92407FC05D078 +:104940003EF4909581959F4F0895709561957F4FA6 +:104950000895AA1BBB1B51E107C0AA1FBB1FA617C6 +:10496000B70710F0A61BB70B881F991F5A95A9F718 +:1049700080959095BC01CD010895F999FECF92BD27 +:1049800081BDF89A992780B50895A8E1B0E042E08A +:1049900050E00C94E024262FF999FECF1FBA92BD67 +:1049A00081BD20BD0FB6F894FA9AF99A0FBE019610 +:1049B00008950E94CB24272F0C94CC24DC01CB013A +:1049C000FC01F999FECF06C0F2BDE1BDF89A31961F +:1049D00000B40D9241505040B8F70895F894FFCFBD +:1049E00005960826090209CD08990801C80128087A +:1049F000140A321E420045002500260043006100D3 +:104A00006000200037006400650066006700440015 +:104A100046002400470074038D03A603BF038B04E4 +:104A20003E040804E8033F4D362001020304050656 +:044A3000070809006A +:00000001FF From 47b537c87fd1d2d7671eaf5c49f20bba40afad25 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 30 Mar 2016 00:46:45 -0400 Subject: [PATCH 06/14] preonic readme --- keyboard/preonic/README.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index 3ba0cc1527..0c09466559 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -1,6 +1,6 @@ -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). ## Quantum MK Firmware @@ -8,7 +8,7 @@ For the full Quantum feature list, see [the parent README.md](/README.md). ## Building -Download or clone the whole firmware and navigate to the keyboard/planck 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. +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. @@ -23,9 +23,3 @@ To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` $ make KEYMAP=[default|jack|] ``` Keymaps follow the format **__.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) -- [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) From 09d567045cb011b2fd7984cf3277b4875e677153 Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Wed, 30 Mar 2016 09:17:06 -0400 Subject: [PATCH 07/14] Fixed minor issues with Preonic readme --- keyboard/preonic/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index 0c09466559..4a33a3e4e0 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -16,10 +16,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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 `.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 `.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|] ``` -Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. From 3b703eff33963a5756b3e3f16019d6ddae8a7874 Mon Sep 17 00:00:00 2001 From: Miha Rekar Date: Wed, 30 Mar 2016 17:03:03 +0200 Subject: [PATCH 08/14] Tiny fix of Planck diagrams --- keyboard/planck/keymaps/default/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index d995eb9e58..988deee99d 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| From ac3f3a85d571658fe2dcb98458cfd0c14e418150 Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Wed, 30 Mar 2016 11:36:35 -0400 Subject: [PATCH 09/14] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6a6bbed40b..9857330679 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring 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. @@ -309,4 +309,4 @@ what things are (and likely aren't) too risky. - 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 + From fe6c3e4f0fe1abb38d64ce3f4d48db7aea63aad0 Mon Sep 17 00:00:00 2001 From: David Mohr Date: Tue, 29 Mar 2016 23:49:34 -0600 Subject: [PATCH 10/14] Squisher's international dvorak variant for ergodox ez See README.md --- .../keymaps/dvorak_intl_squisher/README.md | 29 +++ .../dvorak_intl_squisher/keyboard-layout0.png | Bin 0 -> 73585 bytes .../dvorak_intl_squisher/keyboard-layout1.png | Bin 0 -> 59122 bytes .../dvorak_intl_squisher/keyboard-layout2.png | Bin 0 -> 53319 bytes .../keymaps/dvorak_intl_squisher/keymap.c | 185 ++++++++++++++++++ 5 files changed, 214 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md new file mode 100644 index 0000000000..984106ff46 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md @@ -0,0 +1,29 @@ +# 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 diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png new file mode 100644 index 0000000000000000000000000000000000000000..6a36f9bfa1259aa74b6a8e956596dbd86c5a89c5 GIT binary patch literal 73585 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℞(z@1+r2Me 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 LtDnm{r-UW|Kd^GV literal 0 HcmV?d00001 diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png new file mode 100644 index 0000000000000000000000000000000000000000..23f56ff4c00858a47be2a5229ae882fde99163c7 GIT binary patch literal 53319 zcmeAS@N?(olHy`uVBq!ia0y~yU@>H1U|hk$#=yW3A6>VQfkA=6)5S5QV$Per^(7%+ z=l(w*UwlC@^Gr(^$K6>0xlX4iapaY4P}-e!Fv_vyZC}-g1k>#3;ulS>3!lAcboLHh z?RHz_T8QQ%wcTQO%v6nq5BqS;OmXT=P_%vB&*A2#%$L;QVf6g-pMMX{H7Cw|;#V~D z`|rQI{LfeZas0sZ{bSYL-&K3>ufMai{LYU5|M#CecTT^wv~=&6ce~$z+xPd|ZG{#A zCk{mr5$Kqn{``OS_q*lQyLatcWo>P}-{jqy|M#lj@0EPN@AtcvhuirdALh4rv5`{; zsfTDfbX>l^hu{8>Ks&#@TYCEQmxtT=>#INT^_1VQ{eESlvilTy6|hPWabl*7Wf9BV zxpS9WflObwdiCq2&h31f_8L$(D7H*Uk+CY_h>eZ?Z~gAVLg)D(v{m4iU7QNC=>5Lm zdGB{@zh4*q^B~OaiY-eXJ?^(ZX8nH8=l>Q*;GXLEw&(A++Ybbq;Rs1b?X7d+MhI6L=;Dh9hIJoz+|AqmX@?NV^EWuJ=d@U` zgM8Fh`1qLW-n04w91E5&cdz{HeRO5;@(164PnP?=qww(*bT{Uxi*+wtw~p`j_I&fM z0F9P&=gukWt(1DyCu=>$eDA~?8p8y;nM!Yz<}>WbJ(6TN zW!khuZ_AROotdejscG2N)WozSMo%Yl6U)X3o{u};v}qWEwMt5MW;3k2`K2}6EXiCZ zNg%r8Xwr_a*P=HTJaoEp?V48os?QlK*RDP4Yks%oXt%hsSa)Y`N6_b`zpOy%pv3)^ zR71Ae-iNb#Z*aCt91%Np`gCAO$dpY5Teodnv~y>qc2soqWVvh=AxBS7&TH#pwYMpH zot^&bb%THt$3@wdV5=Lm&5G7N6llKTR99!WE$3!Y*v2lm#T;zS9PNiYT$G{&`Pv0} z*aUms&Rf0Hjo!9k!-jwy=P9%FuU=p4$i4lA;4Yz_Jzg+< zUR?UT$+x%XyH{3P%2hmITpY2xOm|!U{du3FCckp!nAmtlO7*1oE2)OKUx}q>-8^;` zbU5ZXW;HIIUe|L);P&m?fe{fMd-mAeseZpVVq4D4K%LlKBCM>eC(fUDude?6z*OyO zw}2A!N>i^z)32B^?ETX0%u}@Pfk5+(rYlU|`hO+Pt=_y@_~_B28v6SFzy8l~QV}|M znBTrf(l~9w=FP!troY7_c5wV-E|MI^3;y@EKvn==E;NVNk%irJJ z%x*WIKQ%QqX>Z7NU8fFPkF|k8dzY+Ze6dtsCTT)3D=5O3h(%PrJYEnNyv)ZjH}`F1 zy?CdK01w;7`u}w$B_$b0_tpLu;9!|#SGi}~HZi$=cf#)J4X>@W?US)w^yfyfVE0i0 z9=6GPQ`)O@=e&$t^;%5vh}@EE8p|s^W0@~_`|DpV?ViC4cSrk?>l40y{km}7x^sm% z6rWwuCh_*|+lZY-s?W~OW?z5ZJ7`0~L8d8Fr>fQp?LTSg^GtQ?flJ=@FI10vmolrg z+-SZc<*NU8!E~ARjlUFg{Z$TnPnY0xzvbMsHhQ~~wY9X}eEz9Zr>`OkP7Vornfe?J$+U?XzdkzIfq6!>?ae$1h#D(D3Zpvn3xR_g0za?fK}YoSbpg z8=Uqoc=t_z)hiAO&Z?K}d!JNz-W8ttVrewb+Anjrv`OS`w|;rKul)VJ-T;l3b?fv> z%FC^%9d74Wmf>5xa^=f460FUR6*h7tn7C4Jk%K}*h0VG@P8S;&yZ5Wv7P@P>>^fes zC2pB`1jG$1?^Osoy>ZOyT{OM!g7?1ZS8OM~i?cdr)c(GLKWVKRkQpVEv1s#Qa6Dkf~>W+`pn5{o;ulNhzbu;0 z=kfKDYFpSZzIF*ozpj&pOT_n0p9TX2TNhubZYR4zUeYwPl9_QkFOB_~B*E8I5sodhoiGm=XKE=H+mNI{t z^mu92V@M9|iu>iLU-hyfL?7yfi4T{|ka4cM=*$;FnAM>ux@I-W>;OjPOpZO1k{|eaqp*EnBxf{PFSess8`nU%q@%5b9Kr z;WLi^62#Xo(Q?8aoX`u-s@cbXDPogJ%ILTvJUgy_`P#L-4+|t39T=?3-dy0?f4@IK zW6GBub7$#Sy?lwBTn?Jf{!?@Dv}8fYLd78eoT`%tI)5&jJ`W|i$80`%UVQHy#&!uQ zrLRYpP3M_2gD%Frxmdy4>?mVf74mcA@;<@$B){Iuky8#fACT3W7Hw@!=%^XLAsJyK!Q*DhDZ zv2*9n8ygavCvMklb5hK?v4L^t&YcmP)6QW-HaKY}oGtBelR;^y`zGs^6vCiw$Un0`LoM)*< zF`H+$3a{4}-h)yW%)KLEo_~*L{dMaf4XTq1cHjL_wfDxBOkwFo$1FDHt$>xqMYE=# zEI6Ac=C@~`&j*xpvn0zoW^>xv2WvYgdbs>7TzY!ucC~e}yRS{;-MDTYUu|vesr8Dx z*Xv*23$ME@&z?@%k!H-T{;m_vESYnsAAeMk;L+0WDih>kW0zksW%lguW5?W{9ybX) z^w6NFxHvF2R@W?k<+}9=1|9r%KOBCVPU%{=Zrv1qCFyl}Gv2{-2BfKTJtxiJ(yX&z zY$u*XEh!II>PBth;J5p+;M1WDaqX}*4dUuP?{{FRVZ2=lByLMTC6 zV7c!e+yBjagAo+Jl2gy7{hD_o1*L8|Jkf94tXWbi>FI}`e_ps~5mRVrs9RuUWasU? z-Mo6!x%Kz`c(mbpje>xKzkmOyIZGa0SsDD{_un(q8J5)7&lE_q3(B4nvcBR@Bq(cL zne4aE=f3dFHz;*x#?zGS{QTpqLRSX_1vS0Ayj=R|o12?A=G-*evVD8E#q*i^k{d`u4&Y78-ck;~B&duqZG)ZW&hK5GN z>8FP#sd@`^AMLRRnP!ow=*wX!4QlX)+q_!?>KMH$4B7_``aWG}p8fax@7;@gdhkNy zy?gf(^Er)8+mtJhCK=wTdc8JcM}cBicJ@^BmluPgqq}G4?c(ef*LTwqGu|b@8!j_v zn*QX8`zENh%;>)&rF!*rCdlJo4rGBn{%UD3sId^;Cc(?gYf1V z;alh0Y99AbTKf9#fq{Xi4qd%b*}jRcKg()IXl`kOylMH*-cGNPf2f`%UgeHie?fbPkDZww2N)SuC&>v*<#yr zZ!fFKef!09_7&TSE8$Hi!Ctq(`1t++jTR4;M-hh}8Z;eDIJMk~zdY%+jI(y!&!0bU zY)bVG0%fcMi#2zYW!FP`S_W$skKNl_JypEbSaO}B*V*vMNXZ(z`I}f5-ThHxH)Yzi zuCGC`maXbl?^jX|uLKTf{xqufPgyiQ57gMnkxY7X^Yc&Z8H+Ej_;hlHDv_Gf2iHc!++z1O^62{>o%d-TyFDk>@f((3|swoXseHSSvKJzYs(pa1C5qt5dl=^}Tz z8m=g|UH+766tve!)>+#Y+(2?o;_DJdRPz}P2mzs|L>^p}9LzJC6P zY@_G%>+Njh_(5HeJ>TzDM^#OoHf>qWq#6?`*W~2IWhSPkOKY4qpMUNg896fo(Hscc zyJj8Zq`g}IZl=#a`se58tuf369TN|n*5BW=v-r7^x;ne7t82xBM)nUcm(S07saoo< za@N}w+JSj}ZS7&v@R)@$7hJl!x;Et9wJJ1}`LHP{VSe>H%QJH zJik5?aDFE6SbYBv)_os)^AEiL{&=##-9hR6J&pChx7UMQ+<5O^+}k}%-gPdiT-mX3 z>b}X>1eC?PAAY-?e|-D?zi*eg&Yk0HAaTU>dQ9`|{C$xjJo{gyE$PYJ`#KxD zUoVtZggAAgxAEBjzIomt^U{)ok6wNL`Qd^ye`avP(tC%@Zz;MdO+2v7cXm(ofh*Uq zKRz*0`Bd?wt_YpB1cQoeh5cWoj8JQAO=lii$<^1b-|uOD^Cm~eq9EbK^KW0jE?lyN z#ozw#ma@2@?=C@mLXKVF%H%a<6AF%s;_5%%+|CrIM}pg{@%>X zYC17H0<6~~cedLlKK^*_pB1;S#xm{vyxy0WmroX%GG)pGcl%#~m()MbmVvl0w)}3Z zyIdtpJD=>K@cq9+zkL7xxRG7%0BC6C`@L%ZyzSD*`(!UKJ7Bd_QB7z*zaiT`wc>}Z z;z@sgeBANx*XxV-@8@rs-e++UQCwZ#YjMQj`0I)8atHbAe;i&iKQ=zTKfm^M^sP$X zEBu+&N}O@Kjucp2l1s|DyG!)u&6^*7)~r~w#w9dV)YH+`l{IhYQ?VU)^Y;9B)SZ+x zzweI(4$G|foo$wQagnR1{qOJl|J$zH{m$y`o=1f< zLGH3TQlN54DyhXuF(oy1;j(3FFF8FY1qTN+Z@=9eprNAGmR=Q^E0e$Xs~9Mk@Bdo{ za*>CM(2JKZ9m~qhyu7_XK4|983Qd@MM?kpq$@wE1`ufNJe#a6-Ma9J%)6dUSwEz87 zzrOQ!{{Fie`k=HI|NmEbg^gTESsCBYJOBRG=|pT`cztc{<#XO-4ufdVJ@)bI`g&Pm zH6MwfjQzjwzE3*T!ujL!{C`VA8%v9veN-m#8`gbY9sltD|G)Qpzy3N`zK?nPZQkv- zdp|xt&cDy;+S{_n7Zy4nt9r==?aFO>RQmt#_vCA9A}wlveVK4Rc29-jyM4d&lJ^RA zvb@{-JuasH@7IdwbIU*6OrO7S=T6D^-?y%Ru>b$r-mUs&hin|b%?F0A?(U7**Y)Pu zR0@HD)63i2F!>ly>iS4okWWvz=-&m6ZY(i9Qn353=lrrg)!*}4oD@q+OBe3meS4#f zU5&)U0tsJV-}Ivz5m*_eB|1~v#J|2$} zjaY7eB*nQWJib;mc)6dejhy+l>;`ZBy&}8I-UiLnUOumV6>RKeO@*v=8Bb+p<&U@d z_0~T&|N2$sGt0#DrL@nR7n<{HK5>SviD=BcyzJqkZat^M!i|^KPrmhZsd8Dx*YDpS zm+${AyC+V+sHo_}+WcB>`=2NM1^QPW+UrMr7ex)x5|mwZ~_a7(vF@Qtrg+IJ_sn(DEk(BfvdGtX8;FX_@x z-XDirxj#;x|A$4|JnzVw$jzW=0#)o^7ERAmdEW``Ivulgc*N?hU-goyU83j{yrHcn zyB<_X$@Q~~$JcBWt3BEYa)qP*X4EbhX!zxUfV1B|c#ml5>#a#gx$aav?mabk&aGh3 z0F}{c%<&{X!zWMRWl6}cI8gOAxBTA9J14>3MYU*>AJ6L5s|&wg4OfO%k{=GTPu;6@ z(og^Hg6YM3Esg}dhP%AWndk3<>7Vzg`OoY5eBNF@Z@YBfcIoMHRhnjbcQW=&zx+_Z z+4+sd#`=%l@eekg)^m=Hm9_i%MEK9w_4P;BZok)6|7&@@Q-1#Xjd4~^`p>HhI~F1u zX(H_szZ~_SSNhJgk<87_^-vMAD15~7@Av-y(!%O~N2K%jByNG&aI7k6|L1eoC(fNa z*2v7>R+ASWFTW>Fe_quqP365Mt)MYA^(uIA4;mjlT^X0oXUI0gG+QjL>ZR)9y>s~5 zC8Uh530Hr9b~a)|g5#z0b>D8LPqj7idIgTL24O^_88nFc)MmYLyTo$8xre^Jy=_?d z$YsyJU$5P&EoJ!(O;XmVe^c(aX_EiC}=!x&I?5Ffky2h z9u!vdIdG&?_+i=ZkNp2X@K^kLxxDv#k(EqR#)%03H;D4}=kxi;zg~~eUow5&h3+`3 z2S{ZxXf)39y!OrOo*~Mn@rVJwjY5a_|NFZB#L1Hfcfa3f{bTd=_&P~;KA8ji|D4{R zaJY@vt?DHgXh6~L3%o%N9=HCy$KuEY&UOi@q~o1`4>0pT_;gy|Jvdm{Z;nM{ue5p6 zqa&R^j+yUkoUHCI^?Io?XcQ5t(gKe)p8Nbrz*!A6Iwh-KR$p&l_kH*MgRj3Hdi?Q0 zcKmOtce~%)#Zi&n`e{c(SDeN zg$XoG7xv?CU5nGgCCA@hsksQ6vp^boMH?~nX7f8EzV{1C6h4^cTet7UQyz;W7X((S zo9#_`aD+a_^dHlf;Cb}o;^I^NwxW0M-sNCn(%c)P7k*0JZMKJsP~+*RLO4gknzGG4 zqZWMbkFQ?2(h{K2;@r-+aQE(L?OnTeZ76>3_vYSS>!s7LzdpLS-)_~Oi8ozSQ&soG zt-n!Y`4)XVES|aG>@xnC%`;!3j4)W-+IMs1GuT>y=pVCY&)!)4-0#Zu>)Ec(&djrB z&kmORzN7H*hRV-rPo6$qxNl!vrLnYjZ*T93lP4WZOSh6>*NY?X6^}hGwE1$u88i>w z#w*>k$JY=sF+IyPyKOHiBXG9_9)Gkj%e}?2{(3j3uo};=SxvX!9@|s-IUqLH_R-cH zBhaARcX*b5YN9{+;jFVdb1G_QK0pbD7f;%DRDMpY*n96FyUxs(+i%;hzdpLmclHed z(_@{b&P0tXKAL5k&6e-m1>bU^1s>v%Wj&8e*w1dr7eMfn>_ zuDf~0>C>%aXoE@*_t?nsHyvE?X;Fsw!GwYjjb6}M`8uCuRT(~Ib93>lSFa|0p8Dz+ z7hCg>2hIFb;+}?UMCH2b}jiP0+}d3erlF))?EY83}n=11|opOYHDfQ*x0Y3h~b-+6rQRyKpbHYxkQIKPVXpAH(A*v4b{r_R2rx_TFY+;{CvxI7K0*^VSrlx-QS#wIP zqwMkLp8-)(T4l`(V6&B8S^g7uu}Pd2czo9UzDr%5-M`oS|9Rj3e1Wpzzuv44!voIz zwk@~w_s55h6SdWA=XHcQmPmlG1Z!~`yT-$o~fI#xG9?6I;8G>nN zXSIS_Z10z9`_&Yzb6M|m95xj^QNmeWEMj$elFxj*yP(c<=E0ly?%DmoGMf0=kH@J) z&|_WT8_lZ3>jIBwrq4V0^73-S@^>*)rcalCzf@Z$X~IR&B(rCB$HZ6Gkw>b6RE}Nf zWW9Du;PJzD`D3};@1|{;-pBL&>dl*-j~*pWnLb^6zuqyVH7FluO0)>Pofx(FM(~%z z>lBY2XtuSsvU>2b;=-j%Nn56`>vxqTh?tmKt(BhS%vGzjD)z>K zhwP#f_~mRmTDirOPEFASRl8@+@Av%wz5oB^Z3p_&IzGN!K7Y}!T~V*MPmcIH%ckE6M-oobz_Sc^)6{KmPmu z{`IB%+>DQSs0dX&>Qo2C=a(;EBwl|#sXl+s)1}OZD?RTDdwvcQbk?p_U#oa*SLy45 zqoUy&;wBRpEmB$&z1=T{hkef)ksJH=+4;=3limO4sXnOHIme=qDf`-*gHNZ&ugh)p zP46&FJjCKN$3ieNG7^-&rKF^KzR$9$H2U`L?&>|9QD0{nrE+CuXP^JI+e4)(!Jy;s z@9&EjFLu`c_V#wWgTjQ8toZ0??*8M-NO`i$_G$4FenY?ccD<|D?~}6s`_jMnt5IQx zBFf0<#t5G6_v@_p{e7FSuKVgqPSZh!bvvI)-KqI}c2Uv~SAA{PZ+FY@AN}$1F(_#H zGG(~M^^R;zKE6d~Ly&k{P`kv+J+EHBE_`xA5Y&=}4I3{1y((T7HW~g#bG~wB$3ksC znIw<9!k!<4B%QUFm>!Yv@X5^7w2|ZI;^GPj3UUfED1PPxUzg?sS}_y3S6EqJpMU$^ zGU;2lZf&X56_HNL(${q6K^pa&ix`u*5p37)%=34zk4(~$$41{>g!YtlJoH#%d!*yI zeSOg9Pft%9R)5R!nQu3D$$}+ISnPjY>}Q+LrmNa^a?cvGzU}v_xV@+A9i6`aPwJCr z&mO(o{T{T;ad9qm1jt@E`SrE6$Esg;Aom;aR2lbMK>G0d{S2gMQUzfK7Y_d z#qPh9r?)qE*!sBMH*a!4Yo#K=qhp+wSSq`P^*|} zb!5U0^+^wwI`g5OE3%6U)lVnlx{MilwQkX~FKh9IZ}^k}8%>pUM;+8{7Ny z^Yi(k51yT!-F|kqc{bD*KEoHKd5GSy<;~ZtRBh`AwNN?NOKZx&!I+YtzBnx&?kEHe7e6}E*$f&iy;bFjviu6ZSZWW$ivt%IyHB3CLs?YmZn8y`zPbrt?85L@ zt&x6ye0*{?7Eg+Q|N2#MJ+}N|ulYTLOWxtop6Qgy?Gn43^nZdz=XX`ZS~YE);(^O1 z{95I*GOm+Fy8ZH=xVoRIF|}W>p0b^x4;or)x*~N{v90bxcigIpd(>g`)z29^#dY?+ zSjwIJwdzr)dckSk?L7Z}J~-IyoVPb-d*0lMal2qC_L5{$&BxLw&*zrQwM%?iB)+%j z6U-F&VylETarHkA%Nt~0TeD>T-mI%yYa%xvlUToNm(`cAUp3F4%s?c~kA6IV7vNYu zmHf5p|KIP07hS~{u3ei8o|Jev|NqbVy;4am&5ku64zhzLHrB1vyK?<{|4L6mr!VeV zy^jQ(?O&iR?wV4PbmRX0{-!1-pSf0{H>HKowNB5waJn+?_4W1cb#-=SZ*DaD+y515 z=a)aW_xrtWZ@ryIRw%mRSOjo-#w-yG^Z(Ch4NXl)KR-UuHjJzO_Qugf$~8Dx zSV~%YYtr>~u^n!UHT!2f^Ef?G*y>i;u}~f~c!RvM&CAMg&;NhFH&%VkS`)RE>-)Xx z^%DAbL4ldD#hE7FZ=0ty~JLk`7dN?YA5*Dk-%9rvYZ8`8}GnqwdK{eE}& zNT;x2<);*%c{Y-uVYb-vyQzDo_ko7b4k)rI9tl};O=J02k*bT`ap#a1SxlAq_U#*} z-C$Ah;J}0ParJ*opFDZ;;7F%1Xy6_+V0O5&(njvel`B0vUYNDsx)tR!)5!HFbgA8x zEAyQ6L8)&J8+2sxc%ST#XXg7m|NZ-Sa6V{U`*r+(t8KZr)7C)7@(kucrpWJiaOVeq z_*tW&s~frxy7W_Z>+%cU_AjR1TD@{5r+n>~iACb-Pmo4>!;*e9%l~2ExA|}&a{h17 zK=k(eb-Opl?Q+tudU>EA4$%;{eDo-~9MlVmiRn3a&hIH~L@B763$!?J@4>GQ=u<4sNO-w{g3^daXs`fUep6*F{d1>j1)2E#a3k`4GzCAS`G$E|C z(arO%CTJ*f>9?w{SHmyfy0r?HD6067)=VDgjAJ&n5bI7nJIi#(yIrpfo=y#y0?pKJ ztovK_R9e^R#7^g^-bs*AZLhaqpG@|DwE4VU@ViGXHK2|mWa=Bb-0*=5$c5j&eLHx+ z2(&TcRDHJPtoub`A|eX*_Vde=1e63iK|R8S(?NxkUo+HiuiyXpTQ|q5)a&QQ<&U16 zoD5!{B7m6qwt4wKnQNj43%~szgS0a<4yGpwC~<(hmW8v#ujiyaC2qx@(;hEx?_j&1 z_ENozHf{{G2CYWxb(<^)owfdi=!hK6jEmVkbE;VA12C z&;Z(I(0c#9yM~BY)g8aH(_a!;IxW!Ya?a}Aty@tQHgZVu+;w@+jx=L!?3t)*#uo2wUB7duq;>f_m)hFB zVJ0Rf3wG|bd|KEqZO%8_Jl`!YPVUv~*Hg_mZ@hHlM#r2vG9lsN-6WXr_eT!2st?rh zy>llf=f;MECvJ;4FBCA#xzTXvPRyFf&1pBXZ>E68{SfQiPG!ca9X6dE30gXcIx2Kw zC9k1efAZyJz8|Xg&M-(kv|zpFj=OnhW}EY0y?RwS?zGzDBj_tHL8EzxICr+G#y6?II&k}wT?3VEv6UKaqCvpQ{SpBSFT-qv}|_Xp+`r% z1-p;-=(!vgWncdEbc#=YhfI=y5@hVM@RrnpFR%fzRnz@IV;nh>NhT&H4;~zBKE=F< znVnC@!P(jQmio4LhB7Bt@7W{c>guY=9iE-7J!|&tt&6s9HGR3!O-T?GKyPnt%``o7 zcDDKBRjb!Im6e$-^Pk_RKEFoj@87?tip*j_d!qV}H_w_S^|bfaxiD*$>-;tzkg7s*KMl*zmQ3<=H3bO%bA;;aa8+i z_S%wpR^K37x;)hzCwj2xO+Ovv{O85ueuK5@SCn;VUb7AZZ|duigb@@Loa#~GQKj){qipFVxsQ1UWJCwki%jcIzZU3>P} zh=_~x+Z~O51smm^ls#o~RoBaGhLu={2y35X@F!!;EK79Qic#1$M`Na{Y z>Sfor<=zH$w>H~tU%s4OfBzpNzqwYaOQx^u+43MKKVSaO+M9d7-&_4>d&1(MYa<;U z89#mgT&d2cc!Wdcy2dw=y#K7svrB>-wJqkf#XYMx$^Rn1`nudDpiZ#oms2Isafa5` zR?qo;-fqiQt>TJX9}XQ?TeeIsB{h}z=9~Th|NZ{)Y5M*i&^T9=Sj6hy$LaRJB|!^C zZ{6y;cQ5YE{r&Q;uC5XL>-KJp1C7Id-21-v{hIT8pUet&J-fvB&q-oHP7+26ibd)*GEn>TN2XlNYx_4W0~o9Xi@8tg6OrKxdc5U3uX0S~LK>({Pr zJ^om5cS9g-(eBeH^NLd-!$hzanB=5F0si48bKYwa`W*8j2p?K^_r|`$)_WuHZ z?o8hf8t6q`V+kr3@r@*|X8rc#<71HX-`9P&{`1nm-YG6lu20T(Rc_8v<^NPBCo8Yp{|~ex>EsQ?W2@Ki>$-L=>}lnu+urVNpC|27pY&*{ zQCpZtc8B4F8J8{vRoKXhh=?p$vZQ56!m~3o3wFjtY)auw+Bjo|gxY7X0TF^<@faPYzW>H6_~Q?O$_7O{xO zRVdp1c)87UdIHmWs!UL_l7#Py5RZqP1775z|9?R`lq3AFN1J8X@|FMe}#^Ti7nGJgH~ zwQuRdg^Xv+O1>1RD9&um9QoG0weT4m9>&`0wZQ!*9z#Ssj!bq@<;Lzg-dqjnIJ> zza4%3_xt_hpdtF#@&Bt%JkPtmjra5O^XAuHpHV#4E?)=QQVg1XXy=!AQ#z>F))%*I zuT|Kqd1S624C8vUzW#5v&ulZ^<9)Kye{OC}K5meE%f#m65#cB?&>BL$`Hk@OkH}u+~Uey98)}aNnn?>mTg>eoy+( z&L!Yg$xW=>1y@7EdH>CH=J~rv&2P?%xvvXABbd;|{pxEK-BxvL2yiIK^=t1BD0%SW z;$lz#I}^DkzB80rJ3a5HiDXX4xlg|y2`EqWc(8W+y+bXW!Udn6cqZ>HX$1|HDQ|U) zlub%WPfz~&>FI}`HO=cDUj8IXJ2qemn(RJlkr6 z!bdJk`SnVZkX92~gC!pw?FNnd@fp5w)vuC#jIUhjWozW-)>f6sDx67Irx5SKWN_^~+`d#Vc2O?(F{p9t?tX z7*kCQZAxE>fHr@~|Nn7((VmjVxO1PRB$8q(9=6V~C{)th^8qw1yKvE>LmB$9pfOC) z?#sopNngHwOS-lu5*%=5m3Iq|%Uaa_+EOI{5@|5=R7O(8|G(cKgBHR0`}b?;$AU&f z4ls}b!|`e{7xW^MPBNC`2XMg|A!ubd~l$VdC{JdCeY|5=CZ`|_W%Dp zSlwOfn6(ewu>fzro#e-3ZEgK=>iQbi=xsTH?^2de&jXELVlMxCea`y*kxpUtDHubj z_wL1=nQJZn{Z4Uzk-Rl@^c3Cx$hhPE^2hn>J}^I(^E-*;{58i4uC5B5VOgx!CvU&* z&T&6|*@fbJOEA1Y?Yj2*Jx$Z&syuhL2Y*6JJlckTKF|N()2+9QjWrNTzHyu(4`$mqMd=RCf8 z`*yeWyB*FunNd0Fx4r257C z_w9fD-*xxhlH;4o-^WdvG9}~bQt8DXKmGn|QTl4ir)2-5Cnu{v{Qi5UewAiBv?RLd zZNDRJ@_hYwo#6esN!L4TkIR-n`10~{#h;JIK`Xya%*`Jk=@ib$%{`hrJ+^Jts#OR7 zo8M&peXsic$0l3%xQ7K2xw*Mfdzs1`=FO9HQ4(x9oQQ2#aSwA^`Jr=G!Y)R z;rWTxByCPE^nU_gxoGY8=K1`3xvg8b-q@JT-qqFR_Q#xkS>NyP?~k{N$8~&tef{x` zjmdiw&QF{U9%a0A8NS#Vv<4Nl!t&9)6X1=`Wpi$n->X!IE?|AM`~Kf|9si%r6o2#N z~ok44>wW_g8)9tpR%<<2n8z83l4&EKCt zuI}g4gY2SnD-WInZ4~nQiPI~9;YSX;zg7g~BSx+eS^nvZOLJfHvf zO*&}hOLn$)RdqGH{;998uk-)2&)Y7o?l@Ys=V#=Ss^_WG+!Wjy7Mk1-zA@T4w~V3xqSXH(eRkYH*a!8L_`w) z{`&gk&F1rL|K~^N?PQ%EQ^fi0&CSJES#OiJymMyE;w5HBe0V^!4jVHrD*btE|4%ta zPkfor%%)A7j7rMNwC>*#Tr?{}r|r|HA`vmMq&qtbK^udn=|nbt`&M@QA1`QFI&Rr| z#vN&w*{!eTT>9psc7-=KYYO7914_1b-`rTaYV~U8vNE%Gdp`T^`SofwN2}9{l`9YO zn%`*v4e*A9Xxw)ZTGVx1u9_!!xnJw~=gz*qyiN-R;%dK!LXY41{q60xKh~hRu{}QE zz{Xs@O45?jy97|H_pspk)oMt*zT~uW=YQ?%HJq+U~bv1&98g z4^Ed}FW$6C$kNhs+ntRnTix&u(H?tTm~(3jXWV*m(2kfdrmWj<_f~#>ws6<3sw1$0 zXVYuF!Qc&`_cuIuRS`M}S|7h>kIn7;h3YQmZ2O|7&Yqq9a@#NK_j`nwE?t`ZuY4)! zsFs;L*K^Vy9(jElb={=1x;bbt>+tKZe0B*ZRqo`O?}^hl%e{4^ZH1xV8tLSlCR?{` zd2onZ-{^?dr--2^vcZ5#c{C{7T7wo>Pp{?z# zA|z?^eep$&Teogaic^1BAaV2N&5X=U$;q=9c*Q{Rc z93MabQ}&5>uTPh(-AW2e*+82#BUOZw zw9@UqFWR=P>_g1`t=ZyCjSO+sZ%u#vturw*Q`;LCwmzWVEhp*aR#x1^U5E>p1>JEC^Z{N97a(CHV zCx3r_p-z@QIoqz--DQdrJd2htP5tn{`eCbhKtMplqen?CPKr;Z1D!4{UAmO@^Ru(g zadG!1JU_H$+qOqrug5uC$Q+xf><+3X{`@FxIh<%>YC5;{tc#MM&up{Y6K`L?RNCt1 z3EGeRVAfe4x2VlC_o*A*L}|koSgd#L7JGP*T|OjE;%(B=F3}G^Yd%!%U9nhbQ-{=4 z)lZ*4yZ<%S2JI;a9ioKiWPw)57P(ccyebQ2w4=A@xrT*_MMXtDDB3ycUZ2GW+dq@l z{k6`Y7JvEjrK5?I@2@ot1r|KpZ|j=HAHG{8+3R-k%9WO5$K2N5*qR-F$+vatuEbr} zGt9i7K7BgFx;*dFd7k#eH+GljpUPgmem(#1@9*6e1P-i=-OVQ6JJEy1ZazO~`>k2d zjRVh91#~-)CRM!Ic>KY~iU*&6vSrsqN8f&M*A1j8KR^Fe_Jgn2|0}X8DJe-f)WYe!@4LN&iIi(??cSxXuRcCL&c6P!@%`le zxwp+?s^4xsasK@AXJ=1_Uzf_^6-e4p0>8OE7q^~ z-*xitwp?i&IesfEt4nrvptynW_xDtf$2@IeOVOsS+qWlQT@|XKsd@0r%gen<-`?De z*p_p1LiDMb`n8_w@oLJoigWouJ5@6?GcTR5e!KPhhi9|%mzDM&NiuA4QZz9!;kkLm z_Un~k&@#mGeV=9Pj<#qVJyooKsn+c9?EHP5ZEbB!u3wy6ey{U={r}&Y^2 z{;9JsDk_?EujuxjJ3Rp!Caboy^4RDv-nY;0TMvIVl9LHZKT07wA5^A?2jd zj+k{z&hG{7MV?=s_;n6{tCRCPCn*IPzT{I=G&Akrgn`doDCo0H1+V^|Gev(gj9&fX-1_u_9pKPSsD9Z#EvEFnKcb{PX5ddRcat zy=}Vx{`kMYzmNa9`ww)yN51uspXclQ9zA-rr7sfX;-_0cv$RzSrr=oqdPx(sxL4P? zr>%`m#-<{m(xC*@J=4s;Ec5QjHQP4j%Bj<*FJ7@iBlTfcZmw%_@#e5C+qS9MUh`0C znlwphP3-P4@PTsZlP7Uu<{q=n^ZhFKy}PxQd!omYZLgpG`1rWPZL#P4>7YfjPo6*T ze;GQZWyzuU-;-ZmSqW+~Z_B;ic4dcyLc_9UYSH_z%lEonyixIOwTALU4lXXPOI3P3 zpcDZ*5H8!SR>B+Y;0R{^5bjo|4i}|9&_)Rfo@F&!UkcQ>oip6>XzKj={kqZHRK9Y7 zPsTfCd+Fn?O{v^m+}uY&htz3lYd4>N9=y$Ai}d{S?UybEZHx>1<)`s(#hiGaDiEEKpMM&H8nSTR-8{6wPV--Bb~Uh5WHepr!L_(DN6jDIS|=JAeNp zZK+W*)>vM1MtS;!pw_xJbtmzL&tJ{#%nc)(<*-`oRgCQj83f7HaS=MWirGr>16JKH%q zS(&Mk;orCI`+HwS>W5htJYaBI7;x$J>s#6DkDi*Ut-BL;qTPKesj4%x!}(|NSoo?`}^}JhC6-x_6=mh z%eD8nZrys~+_`OkPKCk_1iYS8Wq7M*W>3g^&=T_O-hW@bV}}IjxP^zU;%w&^LY5>iTc##sTV=BN`Pb330VfsynKpug~v2P3PffqZ0z>YTg}f0Ptxq_?*91W zaliW6QUw8t&)T8Kz2f8Lt*opBI9M*+xY4m~n;Gczl4a|+Y!S)ZF8%cB(~hG_r;T0#i_wM!W+GTa| z{H}?+*cME$Lt5`1bR7G7_eoI+FPF;ufw$XN>;;eaR905bu&Ffq^!f9~!pCk;kC*9H z{(8AQFeqq}$@$*i-VV3Lr_LV+ox0JtxB9!107t_2cXykQ@65ez1{z}r)v3#TXHPjk zC1qav{8}+koyu!|$Kc6M@!jR`-4p~4+}m4i{OJz&YM$?>u1=aH^znRc<+q#Z6X(zG zKRH<)v>Y4M5DW~Qc;ewk@EMfJ7NE`5nQ>Z48B6v|0r?;Ov zb?RX8!mV3H*YEu%b?D)SPu8823jh50IA#4_P=j{DK)j-23CsnUgBd zE#J%UKmXb8{P&Y79~R61<+#2sRyd?v{Z0F_%ss!~?f&tgnLp$!@Aq3vuklX15n45; zRl!Yda^uaMbHxp1i_`wH&OhH?{rw&1En7Rgz7Q?d-!dYPH&jVxm9TK;GZ*CM=3dC! z`r^%-J2SU`tdM#9_%R1tv&Ztwo6ZMoiiwFC*xBjr_!ku&{qSp5>i=^`<@D$JO*fCL z{`qF}`GDZy#j7qEY@Ns05xcZ~N^I8G&MQgN=iL8bAfwrFkiQ3fY!>U9Fl`w=cE=X) z>3R#-tl`Pc&8@Vr^ZMWBRJO9TS+#7cT)JY%#}5ykw`|!Wv*Ts4O#ANg_fCs1F4(_6 z{$u-_ojWZhc-StO=w@VVh*(XXw(7X*^wV#*q}`Q(E2>-j}RMSmaj?wK}C%%<{_ z%eQiUu`F9=f!$vH&F6BmzI0wm2-mDR+-y-Kko^6D0Z;S9i4%pNcI)pu@b~xk!k3p+ zO-xKQxY`dlf;yH>?N@j1wEXiX-QKylc=Mb0kvzMv>^dm4+lzlIyJ65u5iKn(m&M;V zM(_j&2Uq&F-GASH`>mU=FYi3tYPH?Gtwn!-m6nv0aNJtk68&ax%H~Lx=7Y5_f6B_r z7Fft^s?T@&SgKcQAnu662E(Sr_3_T~5M|JUB!U%qfp z#Yd*J&60WBt@Hcm&YO2{`}%js-hX#qd{JSl*U3C*!+_V44L3roWS*T_W;Wl0w=8yV zm1z06NYYHFj`*-6;gyZxAR(3y_!VM&NK2+F9NJt!b@L<6r(0sz)>hA$@ zaeeXse_da-&3mo1&c@YW0;&Z-`=9OR`(HTL*~xjqr1$2{$QCEXmctKi*mo{p&aO6@ z^Zow+`yS=}a(8n}Fq+9Cx_9}qWdgl!sq?E_KkUB$mv5qn%6YlI#|fKn8Wd*bxp-QTajTlc8L+H{7b@Rx-bX8QKpO`P>sOV!J)~d1i%Whad+_f{7IC<=M-ZEjwUv#?Q-Y{eA%+HrB7=JZ#O2zKCaK zXS13*q@|@f1d3d{ejV%y(D-ME+v4AEetkI1fAR8VWw0OS&6B&ct2Fz*#OKF)-(_@K zdV6^TL{v3C-MoFf``53koBMw!J_z1*`qZgUMyY9OX$K5=G`bFb`t+&q?)v!s$BrCn z$zWK%YnPO=vht?er7>5k*c8g9$_16Jys93wI=1M2bhYM9g=4+a<}R1JKmp1JIs)0d ztH46%$KmN7Dj$A)Oy2YTUiGT2u!t%aIQ+Dzlj}^Ni0X}t55B&>K4boTcLjkH#nUop zxn*Z-_qZjW-0t?~)vKn%iuZy{Ck8B2{_*OnHVYG@qx*+@d#hi(2lpiT>wh?BY>k>S zbt-6^^jF=Isi6As)$7+Ex2~_{efsoi#rwVAKRi0h{pHJ-2Z#CX@0cI^SRrHLt33Pc zDLZlQ#P7duci(<{Z29~;t=}_bOyb-Y3(EDYueVVX>QoTmP?+iS=zQOcLB>34o#i}Nz;2#kx<`=M-PY024^xMA0>uCHIePI~lx|9{(v zX`*{d7iUU|ii#qFAY0(^>h=4Y&ZY^MKC$eZ{6}y0?Aaa1AOAk0QvN!1N)lIv)!a6} z<-&V5KA3wTC}(ArghiilDbwmzt3GU=|CdK?GUwg9cNb(z@f=P_NLaAs_-h>@4wesZ z^XsL}X7k$G+CH%0JD5s7`mrLW;BAo%d;8&q8E+TnOk*+hnz%V* zdQ`2_)?2FI_idd%i8rZ3H==9NgtOD$tvz<^SX%~5e3o+1>R7M)37xS^+ohT%X8N$X zEf#EUZf@$UQ4lz=I($9f*V?eKumc8X?DqDoTc<3U7U zU*Do#yQIYR<6OeSukU+aV>u;2Y^qR1OpJ?#jM$dFd-uxb=H_ndzwG!}wEwsuUwiqS z_QN;ko=tPzykeexec!8BuO{(4kP(B#th*vOY3~9j?Z6m;#aG00^rj!aabw0SGo`J! zzCPpq`7mHINVfIU$K&#kzrDTPRA$K2+}hfzT)Q|%ul?!M)Bq9IwnPJC;2A6pJkHqIc*cww46cC@F)=ouzQ;#I9Qg5L$AcN$w`_Uv z@NoO4^H-e$A?5Lki+Wpsxv<{^MX$Kf5e4pPH(cKY^@6=>U~bOd>!vL6ciy~tZUz!M zHzwY{bLYsLH#!yE<;sK8`unGxEt`H?HOk!U@|T7AzTUk{ zm#SX8oxT1#_wKuTQC3qt_UyHM#_Ye;Brd&i-#)t;XVWTd=Is%iQ++(eyr$E!xY&44 z-1-OeIa{3~qM|0%=7}|hoW6SQoZpVS?S3&pUtSjDieb^CAtFX2%w%g?m0${rj^s=kd}qrbdPwGwC&9+4pV~$g~G& zuyieQxNLIh;f4f*$3H(mH;~}D@cQeA-+zD4^Y`~}UZmlucrr+R`sv2U76+p;`yMB3 zjq;D(uPVT?VC70qv)Q@#D?aWLmzI`3zRh;7pRx!S=euBjIhzB&-|yG|eMgrCuXnEn zN=iyLUd#~j34b1Zq5JFIAJf+G9Ol@TvNb{{BRkuA>ulG}H+5Dr2Jx`F@J%|oB*D{B z>EpJ=&6i&u*<1acWxg>_^Ua%)Pl|RZ&GwsC!ef+ym9Z|-U17qh$M&0CSR&-^(~>90R!i)u`6(pg%9-}y3%HjX_w8p*2(&&t zqWAR%EZ+#vhUXjih3nVz^R+u)5Zkx)zGt2L&M!tmD@97IV&nc=`P<038%TttoccT4 zJU@Dso08x`!>v(kGjei7t}<|fTfM60aam7}c8eR#K3lN+Zsq5KtSl}OS4Fvg?^ha2 zE@uYzcJ%e}#q6t*3|k%gq0&Uk)kJD)?K-hTudlBcn$YR{MyYJ&F}Z1`p^^ZyfYZu7or_3A}^Zyz7;zj)yS!{n1HQC1}p$G>ek?(KUd$uMSrovc{5s(x@%Rh87j01lng za;rpNIjXX4-MTd+C+Emw_x^9T&o>)hyLK&Q{^r&Vd-mvPMpgg+_ZRGgojZ358{EwP z{^5f`kK5u!QR`NH<#BkUW!n+^YNPkN+H8H54o5Y!jomkvO6`7fZ#!T2`RC2Y9}8|t zuBnmf?(Sax%eV4xYk`H%iv0nxvAx^2ZA-qtiH(Wzq}ddn!y4OoQ#C|{a-COR&H8Sc zWYao@Z|=2P@8idh%$pNhKGK)1573#CRTDFyU=JxL}5k2L7@paYx9R;@a!U`qI z@4x?Ecs0v^Pst0FW8N=&dU_7zm>qst!0}3>K&Jf7`+Zxts#<+JeE9H%tgRPbe^m`M z3-h`3a!ZCA)A7O$H*+e!y@@>88*Ug8897l$x_I~9P3Qj}UU1ErVdLsA3S}#ggHrL{ z2?}g8ZyeD}nw|wpArEt4vkkAwr}5l_+`nXTU)c6&a11b8CY9u|CX`iS|7KU z>99f5O%5ApXXh2`*4a&QJCfOdz3}AIq6Zd!LHw?qjL!H&+wsb^YhACDSeP1xGgnr{ zRQzpCFwj`BKfyra!nJE^FE@Po{=Iu!$X#C(sj0T9e>B#tU*Ekg#tS624u|AJ6Woq zlCCxN(2W}raW5xH=<4cDTIv(@_^82|&fajt374EDB_sk|PKV-k^)wOxc{UTTxN3Zr zzIlCpJohX83nsnSu7yeTx&lUAAD`5A?Ql_Apuu%A<&%qX4WE|b zj*5>;I%3@!Y+))w6KnOnC;BZvXy6kU@J6BT-{<*#-1T8WL*GU-|0$@9%rf*Qb8?^)>tE{wK9&)%U(WJ`+<@P%{Hma&4>Qpb#r_KAxZ10{Ic zYIkw}|G@vhq5Atf*^``)=1Sk|oHc*G{>(91`-_o9pL2M)xQ-Y%Xn~7{n|?B)eedt@e{cKKQV~C+)2A=%jEJ4g?IP&_t*b9UVq0t&*?ts z3InwryrNuX9-@3-5l?c4Mg=sDAk7)FhFTB)q#Lb`_}l@a~Av zDO;fDq&I!?-`#RkuU-v3$o%Jg-8bWs($c53%_Ua7U0q#!Zhu;AU~Jsn*~u9o(h3^G z`tG$fXi-w1TtBFDX5GP8g7{JCp%|E{}v7IXc!Y}>|V$KQT9 zA|hf!Y25Q7OC3GECP+glHA`*v`a+rTHMk+OXN-ug?qj9~b0dOVyXXb?1)Ap3LvR|L!P# zEtZv)_2KFC_*47J%9OXiJDT|5_FF%H|M$|>`|tDjx-}O+KgY@T`Ny=?>*MxLdU}`p z;$DF!@&3PWHlH^zGi!^`*=F2ko_FWK`TBpKYyY1=a)c#l<&-ta;ToVONR`IixpOnJ zvL@BOonUNcxmh!JPe<(1%;}&`JEXN4&RF(w`;6JMXK&j7KW^K$Z3hbHyy#sp>o~Y2 zaekhy@KsQ$vV2*0Ku$%v?}?i)U%fiyE?>(Mx99z*r>8eWtu>I~*>L;qh6tS;&Awr%L`#~*j3c!z@fJR)4JUaKA-I(CdrX(C6)taIAEl2TGlSF>8r zrcM5kcM(&3>J6f{fI+uM7QDqGxo@$mI=t!LAOYwQdS3ty#* z-pnaWxAolWYuoYgVWNc$Uxbd>pO5nY4Nsjqm9RDHVTn~>aB#E!z8_5TwO=MC2smf% za@hUwYk<=iL=K;M zT9gnOW}tAOP-fMtRS6p-K3zNZ&eAtfByL|#<)inS*Y-YJalxdw`un@LESlf@#E%zB zNJumsO*%OL-^=-3Wf_w;pLw+-WpiYp?UaKD9Yeyyr^j?oi#pHnC@j|wzAX& z?aK%ZWb8k_SyUOc;Y?+y$PZ(p@a>te!n&uuYJo5Kz!e27@8Tr_{P;H zZ;_k(_8qGv^>=>Pofo3j+SSG78QT(6c4&!!_gp^}p-F31z8`w6KjUm#%+4ZKv2NDA zd-t-Qe?9ry>4>;EvD}rfKL5OM=Z;RK+JY&U7T&Fr+$|fkPj&U}w{{z&pZchQP9bhT zJaK#3vgOOm@44sQ?LMp&R(52%#El%YA2oIde+qGdn)fkZ%By~UQk7_P)DW?n_U`C` z0}P;=URpXZGLm!q?b;PRtB&`}KYnzydqdRPrt^z0YAm|A;!ScmM^Kf<;>C+EWSDp? z4cheIZ0=R#ZIc2&&+NSsTBY%@=d3fNXg|TfDC?N_yV~yO|Nj1-#OI~?Qb~q&rSvmU z4Qyg^AjPONE!4-~KRGK)>wM!Q*+t#r`inMg61u)FR(r=0m5CMAlVfw*r{}NKda~ex z32(0(bMwIkt1c~^I#o14WNJG1@xqGlcgr7s{^^%;7v!los$Gk`HkG(^<%I1yl8}+X z@%-Fe;jOS#Y-( zzv`Tgm5?G${HJ5cSx}ly-JCBgzVxM%OxxSHxh+nL7t5Ng=K7h0+Dxpt?KUyrdzbmt zx&FS-U%%pIYfj1f6E=xA4nt($Ri(=JPL!q}=6}eawdqy3T}Hd+;xX4mJOG zn|l-yn^S&CR-1zgr*ECNTrZoLnVF^3mm5|rv@_g&>eMN&vL#-EeUAge!j|3oIH~&n zskHmsLhkD3Y@dBu=&dzp(8?(p*IE0IH?Iy~-_`Z)W9HXC_f^%jJT9BOySJCS`C!Ad zXK50>$C9_E^d5iA(SG>2P-D&4SE9#`9dj{t;9+C_Qnfds?bMeqTNZh@OSB1Yxt+A} z$<}i^Y&?e-tXkz&z%y0q$OGewvhuozlCrX`aqGcNY~zZIS#D<4UwGzSzO+|>TkKhp z1yzUtQiucc2{LCT;g8I!p5v+6;R@kd2R9;1!^ zSJq{iaJ40F*tDq$G_IUfS}OYZ@#7hD=7?-P{j^ASwcq|Lpfc|C)1bGYc(46>HGI_t z*Bhs=T@%ZgC05e*r_O#$lZ_ouJ}zEbm|(Et1~`ddyj{|LH0aB<)f*#t#JXL-SZl4F)8fAB$bsjd-)>P5 ztCH(<>AO=@nw-qcbGT#O^}|LcCM=Urf-a>A2@5-vw)yGQeFZY?U5f;I-B?d=+qP|+ z%WVUGetzfGSDn^h=iV0ejM>8LqW#V8DRNzhA3D_6?|-vDG|QHGf^qcAf*BvJvh5~b zLKIfDi^^1m@`GO-KMrb0fF~Iu<^O=j`_Ip_Z9bYLDEcK>NLX0dK&rRm>=GH&4bQ5IK638f2^WM zs=x&k-o+Oqz7$RJQDbgCs8G>;wot}t;RGe)sG^-RN)tOWIuC*_C1`77JJ_SVFZuYb zTelkjpSyNVOsMn7#!`JZclV2zE^QLtVKCFD(ob>z-6IBP8sBf-u|s3l-mCZS@$J5= zH*>EksQ36o)X7YHZF^8`Y;TEG?43oluWhZ5&Z-7T~Y8RDh zO4c3x_ci{%sgIg)RaKS9%w;DGc&e(Z5{zbk*k1p8JG)%Ml&(9{YtBCxzUnF=FYm53 zby6*__@Q6FZkGh?d-^Qz*YDqj|Nc~7{Pk_+O3fChh0d7`9ZL_KUOIi^>8A$_dX}(t z98EfSdAUF9f7z}@8}_X`Q#NsBNS6El6n(jVc7Ay~n~A1hK(ndawsHO2{jflSo11%6 z{cNX-pP!b#kb3p@ZR^n_%?Nk(>8BG53k8#tlNU7}JA9x}2GSvYP_%Qw#f%4^f0nse zrKhDC7#cEmE!wbSM+bP1+Lc+;qMWPt%87Ne{{8#6>2=7-r{&z-+>5ebJUcsEeOp^! z^|3IcCuf%FoLl6-q-6J#KHfLr!CK)1GlM{?*Z?fnHXCrH~4WMy-;omNAgN&B$Nbs+!)s(b6{`y$2^otiS z1ZqHc>XcaN{{E%QVrT4hVjVlb9B2@F>(;GJ=ana(*l6Og>86fFAG7b}O7oqE4;A30_CVHeizh*x9q=JOVy64Yj1=faXzsg}}V!V3wv${~e zcl)njzx+ycYybUxK53UxXNys@^X%EPt?ycYyJc!(vPD@ydztoTYlR&fH#TONaLrog zdV8i^+rov4H*(CbT)hgqXx3~tud}nW_4%J)#e3bj#rV&FMoske6?Xo9zddU0hMPHy zey3}Q1bz9ZDR$uF&l=D+s*{onI*>x5S{9KOd^GhUJ~c;FJvKEmVw!wX<%N$%ta#(H z%)nTdy>b1gPI(3LPT087FlDp*`!yS+_Z>-jpKBbS^y!@S`vZB~AOHFJ`FCD_|Dkt6 zlQ(WO3=mO$B?IZSfsXWQI)63F>dTjxmxEufnQ$^CAU=NmDIw;SeD-VCt}U>dyQA#w ztOuW0uGG9>(hJ&!x8sNUB#tQqpp& zsi~P++p1MsfxR3{r%601vTQk=c<|>*b~gQ(9R+LrY=S=Q65oBj`}%9qD| zWT^ugbpNmyv<$h#%Jpl&vE#=@SGOyPO1ydd*0r|Q){`%o?$o%vAX2<}a z>&DmT=2};Lc`@;gbn?a*FJ3epe>|}k;$6_fc&$>wxV=@XRmH#l{QNxkO8LSw?G-k4 zNm2^4XV0E7ckbPC;kS?(EO=A*smrZ5SFc?I9icRJsq^X6rzb6SHqX0badm6y<72!R zuWelzz;XKY=}q;UogyM51xwxJ?CW~E#r3Bp%kH~+FB7;r1;i%z_V&*G)PMJ>9%Q0x#p>0~N0S=QrU}c;cdGdF!w@pArlzhg z*z1-mzuW17D@Uu0&#YyM1`-pzmim>}o;`bZ;i5%O1_8%j&(JV@{B(g3vt2-#PW#dK z-w(enJDg*-c;iMv(6IjHWZ1C&yo#CUK7BHBS~%fBb=BUun7vh@LHw$6{ip5fS~qOn zs=BJ($i{|eu3z~p-SCr=4v{NL_gr};yz;8v&g%!kvq5hb`M!Dh@ZsEV?SKFNm5`AM z5n*O#{_){3e_&Wx8)*5*ruB`J+j_2l{P45pLxoLKwi0yu*fg4>=GW#4vHtVzTw`Nn z5586CKAHJ4RYmCk^`KCltMzGVY>f^M8<#qRDvXu?w&&fQv{v>B=niwxMAkm>!v?Op zkygHDW@avPZ#6bDM(BuTY`vAdwLK+LOs=0jYOPq=Zdt3jdh5FbY~+sr`0-<98voNG z%afCqu3DvKVq(IP7P!)p-*r{)#_O+D(-~UlGM=cAt%v*W0MvJWpan%Xm7iG5^X@d9 zei|fleSQ4#!|nX3xz%O2CVbTDiO^x2>sP+4L@;7n>&1*IIV-i=Cr>>6bb^nXW1xuA zM2~rKZO0!sx-D+Jn+Lkp+3x3)$xUC3Y~=Xo_$^O)dEw2QHJ}P1XsL5^bF=!bpsxx> zGkJ8xxY^i`dh=|$`MC4=DOUUZmS>Z1zim7GP=I%m*FpA=U#e{1lv#hNvbB*re=cro z^bxa}KJ$Lref{**`(n|ocklA9T)pb~YT*W*YAwf0NrzuA?0CDDt=Vy!4^t6afLNBa z{?=bESzEo|{oD_(Y@(+M&vvlzTo=DzZ)Nv}O`DW{SLwDaU8))w3p!%&*|W5hCGQ_^ z39$vOfv|3za<{MP{(E-SA6U0eI{sQ98{J)usGZATPlpY5{x44*Y{*J_uNkZ3rW;*^}M45~-V zc7HaSux#0~G9!m4I;Fze;g2o&_}ZDL>&M$ouF}Zc9{ugU8Ph|Pz}5as!gfEIr(Ycy zBcLq6G35*I^KakGm>LgERNn?_mF^SZSbnryTt6T>T6>4slr`NSAoIjpd(sUg5)33< z@{b-rcFfDELVxnfhD3>$!w>hoX*zHB8?=IBx?ZePYO3nJ+V6Lrr_QjD;RB8HZQtJg zPjactV+IS@S^zfCESQUT`>x%)9~SLQiO-+u!=^W#J2p1<_r1cjG&U38}yd~S8H z&;_kMDiwV6amS)k!AU2VWbpo58@>HOiB;k6Z@CAbFTKVz@%m{Fw&tcPNw#LjvfZ`I z_eGp}_wHR@&132N76J1c#AS7!9`3wgo+ROBvNv}5Wl%@*dbHW^YY(ShN(_wZWPE?7 zEA_yKjEB>BIRCs==wLsT*#;)zH>Ht^IY@%$Wy&{IJmI(%QMs5|oRj z1R=-Rrw8#bUAByErjOeOno9LoIg+9>FgwQ_q;>Ey_kdPB< z&osCG)6&vnIS!ip6>**V<=5>SH*Q#}a81qOG_sHlW|Nhk3YiViu?OkfvsKAbt3V4z3(`E=>8l_zd)qd%ioJ0MO&2Vg{b28! zwQD=O&X$&yEn2vcQEf7(%=Z1Ok6*cRJEU%Bu7%F()vFUE((dbK`1|vpI(_=1|Nk%k zzvp~^^(xDz{@)*u>PJtWsAzN@dh=$@8m6u!mC2qbXFpK)pLb&4y_OfRUI|_8NPsMm zsK328CpR~-tV~SAHLP@$6CBPj?kGO=1?T>fJPQ2uA_cP^wvFhuEdn%RZa$da$o!*dcEV#4+(l$Cj9nv;h zHRlG4lcD7bwfTt>u2-MDFH_>XC!m z+9y6g|L@KD59als&E4;b{|uWZ;;J~)XWE%R7As0lRv!@0MDX7=xl z;p^`1UZBAxEG%rjw!Z(+{l9lX_wKy=&6l>h^1k^43qGF1Q&J+Qi@bjQdVz-5hu>em zd^wP`vE$ududOrZ%Li5GmzI{E%(x`Lq23BzVpek#+=*R#3KUDi(@#%TpRrwf)-uuJ z&pW3#mk7QovzFm&e^C5SEj~}0D={(A(Lng&ySux8Jg@)ve9uOCX=&%s(5V^QPC5Gc z`zy=vHK*R3bm8;_E!iNa@|N`T^E#(VxGcUnNyE@%`Q-!&HUE%rD>mqGPd?c)apFXq z-}Rqo-+%D?{{MXss&rHf?=Id@ZGW@-_S?3*dDE{rN5;fVx!dLx5gR-8Oj9;!c44m| zhk7U6-QFkJKm+kCm#0rXbA8`8)2p{szt<=V_;sb9pLZ~AGv~R#9x6{J*F1hmtnR z>|B##zA=Kw#8+9UQ(^X0_Xz=~GOPalDD>PCV#@<+KrD9e|8^5JKb2sh5#4$4*fF+6 z7d0|w*($da4Vz)Q`z3gv)bZzwZZ-4EBgM+*7c7w)ftjl=# z`41-;IIO?k{YvnnN$jO6ji4is3lA<(I$pRTYHh{0H#6V7?sc%xgf`fop9ZgjjE}Eh z!<@X*(87Xa`st-nkb>27!pW2bv)P6g7CZ9aebx=#9GR;1{8#qTeF4>}tAOw>UAkQL_0P}GAAYPbu(FD}P6BjwK? zO;-26aQSjGXa)K?-L6GmQ2}9HAzG@pimpEXc;ID8*Ql)!gChU{zn>IVJb7B3y4EE) zg0Ej5yhiZyOVEVkt=qRhZ%X@9XD`FYo_BW_>)J5wRp*5}UA)}tpRTxXB*VwO&UeQ4 z_c7@7eRlbp1zEc}ShgPAULq2;95krN*4$P4WbwrnFM11eb9JSpr7vE*sQ4p>Q#bTz zL{yYe?#mw!4l;vg6nJ@g7aio>f4@I^d)~nuv&W~VYHx_pdGYqGZiW2awbKhH?a~T* z`KxZfywzO4!tHxsmPm<;if)=}{c&#Ip@#(r4|cmKH7@s`e<;NWbga_UsZ&AY)-P^0 z=o^BThkSU@2w6oK7dNeTt>~dsr@B&hUOw6_p13iB<$C(c7YjuWefwtCbZ|k!>$~9j zY_>~9Qx|xF6ZN{F#VO4ae^ekFejBc4wH|&LAOdQ)MMg^Ax^?T*m3vpS#2Xi=fku(% zpI3jSp|N%8swsL-?(XbTQc|Es;g6c4qM(g^OzRnyo@z+&upPX#aIa1MKN+!Z*3#0_ z4G}sUZss(d`;rK&)0AfG)>Tdlc{$$-vq=`b+-KojW@#Z1}ns zv214J>%I?Kyx(>+$1OQoSx2lpVcNmCwzjr{cXupbe62coxKKwdIH$oBvZ|0l`*@)> zW028tvnCr@Ht zAGVu=WodDMcj&a#RQoStpa28)=zP_DFJE|BvPkpx9=482!P{Do8Bg?hfHZmVdFD(> zA79_ZtgNi(*XBO9C@Cvjv})C=C0~t}m^l3U{W~x^TKjjE_7oqr=3l?6zI^}AU3Wfd z8^gVO_uPzTx+n+;ynR_xn_+>Y0tNNyZU>36{UKg zSxSKRDail5C=W_*si~J45?ilopxacG9((daPSq-^H5; z)Ti!r>3bWq>~bbc^TFh;K2MwDs`kp2?Ut?DD<{{VuD)TLb;neXJ!e-46hCu!cVBq@ zbzo$qrc}X_OsSh|j9lA=IbTj&&DZW6#IFk8K%uy&=4X(}gBy46`bMo2;$S(X=ONJS zpde88@#pjT-P=Ou&Y0m~BRBo;hG>rH=;#HRQ6a4N6AT=UiGBCF z4)#i$vzW&G5NdWZjfvY=!`YT7z}4EfwA#?XfMN1U&~9+hkkH$*=c#Xee0|@t=#-^D z(9zZHoF-vY@qq!QmG*1v)~%{H|IN(bskOBI)2pl6H{WWsRM_ZA9C!%sjs5-m7u0@j zbkJah`0n5I5-Z-t7dsX%R6KaNP(dKz?n8@-6|1`ww%>mEwaPW$eCjI3P20AybuD6f z3mKqi_EDSsz;|EB%Ly|!B}53*^qP()O}xU8DB-p-S6Z@dV$RB}jS(!~?R<+@DuiVnn9e7`!*=6s znFLSUo=c63H-+mzHsGt&ntBMdn*09qj};-;w_SYxdEwTrp(StibaZ60_UY*8B;@4y zm^>(#u;_EHuC_jP>ePc0E70J{@qYQ|z3PVz7HGUW;HMO%%C>j!-bvZhuXhAIzIFBW z*9{Rmld3elbbm)jL%LEOVCm1Z) zxl__@@yCcN$&VE>4+|s~26zPNKVEQ2(e&Q4G$YB7@Nn+3>6Sj7j#hKo4jUZ5wAVxB zUfOqwUbh=>%R<7!-U(Otx+pEsc;)eE?e6D~<9_I@`u45t;PZzC65ZY1o7Nw7n(%7L zm76y^ckQwY2@U0BE9hF-t|Wf@_HB;#!%dMPHR?-2!)CLT1vpqN6&-n)8XZogfo1^? z?)v4TRJdkW)lN$f@r5f_a`N)>f=0kOEczzjZF71My{hZ#)$FZN875LEcl}yi#-S;? zx2M?)G_ai#pRewySY;+HE#2X^ctK{=h9xgH@bK~;Oxp|^xdxT`H*+deGi8o9F3WUT z9GH`nBa<1Io15F&Rl~>6|31T|Tl8)hz{{KJtpA=c<1UB7V zlaan~;X=hZ*5!Ovd*ed*RV8?|jGEsm*iN~1D{4>0M<-BcUVx*>u}Ol3>EW5+_;~#a z<2s4hmLRuNA9vRNHjB{{kBW+Nk)5Anq`8~7b;HJuiZ_G4{`vXYK!RtH71L1-*+gt1$43Lcy4hjMXZrr$GxA5ZK$C)NlqW6Qo zDlj!RWOOph2XL@3Edcj%nhwr`&Qh63@y6(hn@I82*xf&8@#(Qspoo~bc>h}OiKm|m z@U^qfjj~gye0YfUVr|c|%%ks;Po@a*9OmeA_V(tE(VMhSI|hKaY0pe zbzpqF{_iSKlH92PN|FW3UcP><-KFQW^5d(k+9#!b>{w$pgcGW&qBfe($iKJ8(L_pg zZ|wTDYh9C*AFrIs*LnBH@4t1RC`j8Z8NM#2@o3V?-3Rr}?B?^Azq>QBcJEv^&~m9} zc7DG%(Pd?2hf<70L%%;VShHqL$219>x<3-)`f)8slLUD>To(r(O`Gy@Y2xL}mw&&J zg3N92EPl>)%~>_6Yzqp$^&dj&aInq(j;ar2VPnJ-FqEqbLig-hmmr(9jGne?pL zvsJTCPQ4Wr>cz8R@nYvqOJ6;C@}$$UN?KalTGp*>`gc$k$=V896(rWpYBt-qz)r6H z;>Exz)2Ay>^*XulnP2nHot7aXAu_ACt`&e!J%L8CuV$Sso|C*$B4d`Dijd{RHSIBa z?0t__ym_Rgr9Zy7xVZLwdRm$Q51T4$qW4Tl+vg&~-K(p^``5HDVgYq_w$`?_w=cY! z6{>#8TS0)My^+O`gXPf7qt8EgzEaYNygEPsv_?vJc(^!d$4&IAO*-131h#i?Z-9o% ztfKW-vs{DURq{@l?6dQE^rm-jn+|SIseL}TJYoCo!he5$)^7iO{NcB^w}1S2+@Bhs zzx?Fkc7D*|zUwm_7gT?Lw{X)Yp|ahwkUd?M#pyLQGCYUpR7`MKbtEAnfkADu=cbUZ zL)PN%({i~D;&>IYZpYPE z=dI9diZS3(uDJ2MRPfcSS0BE-3_j?*aT5RUl_6eVHk|L4_nOLg_T0I7r>dWUrhHb` z?&6U-e(?3zXD?Gh(>$xQk3D#xa3;;zXlBow>~|)R^@2jGBwxCFSNCSoRQ_{v z;j>-%mV60_n5L>5&dG9UW(&mKN1hgSzEZkiQoF{Fsc6%dEh@9h-hQpRc;}AJ%(Ast zrmcdsXEyOJ4O=am>nzE`=D(NsY2p_nz4(1R-A9||&70RGQ@HwS*ZO_GyuN)^V~?-< zsk$aC+wp$y`K*kb9GBEo)jN6RacO6+T)E=sb|iE99NCbh1F!F{*y!W8rq2`tgRvAyG4(Rc78aiK40e7?4M}sgQm*+`ui)3a5bhzMjB7!(=yy}`|YHI zr!Jqe(lVPpd-kG(r|#;8w_fAakEpqI@Kn-)*9%=12OebL%iQUuAaG7frNdD{;G9fS z=CeJ@`!{Y>{Jn6i0BFyTR;kiQv$J6|w@+_Y+P(Yt`#(QF@150P zz@uC}%X0m6&=%LPMxcdv+iw@XyJJ~lBX==6Qf^x6!pkoY81%e(?dvDeCMf%R@BPz{ zKRPVFcpz`P^XjXMHg7i0&zF#wXZOAA`Zlh3&QGOKvt{7X-3#~c?|;AZlBtrIn3zkn z`}S?y4!taS^z7{HMUQRl?e%x_wklk;s!B*;Ff}zzUzgM4pfD#E+=QB=InSn&Y5VQk zWqdoJYw->y2$a-KUB@WY>EgorAGCx_O6rr$rMpw2US9b2&FtCp=Z0ox)5>3;+N2W| z9lh{k#)Ug~c-Dq#Yb2d0{{Aj@%hs(Y_ucbiTz|d$+O@EQ??YDY5^r~0CG4M`{=Cnv zB|?3khl^y#VF7hWjUzv}h#)6>(7 zsx-XxB%gc@D4Ra_ZQSqll~aux9V~7`61nk~ty@C>j)&N^bw1`;|e-%L6@>GV^+GY7JAav-~f=FgnT=zCe! zep?c#xAAIW1$2$vS2qO#4s~A6Bms^VV@Cx6jmp>-C;rb113b2v#Vx=5R#^Q`?TqCb zT(4ih-gG;VV`Yff7PEhlK5Ry2reMvvO*)fKE_q`nQ`U3&<(GYHc={fHcyN$;#@RF< zfB(q`jw*UCzx?BS{r~bAXP?zNo;`We^Mc9R6%A=dGg%HBG=1K)bSbOebnh*5+7cyn zbaYPSIVXze*PGTGsun&!H@7xbtfuUo{J#(EH;@0)_z>IK;>F|U?!NG1 z258*iVvowKWumvIW_-8X2HhV7ZcP`Jt6K2|RcYM4dl$Ttx>t~c<&dWns2%3`wdU*9 z@I`Ogyd%XQDlCaw_3Lk4#@48etx-Ju{M}aiOQT-b3k2zgLR$b^8K#t6-Z%T?$&~rh^*Z zrb;c}4m^CAn6WkL;!2Xu#{~|wRcez@9>_4!iV}D1 zxp^}((EZ-Sf&(v04n6+3;+@#1r>Ccbw-!SdBKvJB=}3)qoyPZ3O2LV5_R%Cq9kI!^ zdo>x`5)(E?uzY7$O?$DYQaLv10C>sqg$oxHZd`PGsT(dXF7A5z)UDgMAC_1ZzP)97 zk>MO@#??#&wnEF7X*LU!<5qBv3NYoDw+m_2I}~^A`gK?S4b05U7WM!3q}cA56urub zM|l-vl8F>(t?zRG`CNTFC(Yd&qNN%I>bSJ-+-Z69`fQ;Yvu8ISObEy=$WKd4n;(1k z?poUBXD>9?Af!EWM@seRaBaq>KdZ_=;Pz# z(ET?F?aNM{^gOyPX6ma8Cg5$l4o#q7nFl7-W6-tiq@=q!n}J58%KSDxdhLorOsI*1|=3UFJ8X}MN#LzeRd}krcd(bInoqc zbNXsCOa9aqf}pi&g))mSu1H{5zHOUWZ*Ol?<6XoinLKwzkCzL7)YyS;oP(6r8fM_y zG34Zl6CF$RoHRrx{rwQh0qQBXIyIT+oA^2}zYJ=r{eS=euYI6nKhTPyw$c2Iw6ydhDFsMPDN-7cv~fm~>=g6-d(-$jIn8GIs6ARB;-Me_x|2Jj(-E{` z>J9h91wzb_B~XsN9Q)>|%?@35=xV?Nt>pwr^ zwdfPJT@t-E>|)4Amq)oT1FYswyW8gEvHbF)rOu!o&%M&-De?JU&yMv7Z=1|C7qm?fqwtF);0czRwQpH#1#NwfRPNBj3A zYfn9R`NoY7_kOvz)#u9JfCh-}_JKCF3%z~x_-j?+*H@vQwo~eVPOqPMx9#vI@DQ(F zmi~FrJWXtDuaDZYv}p%nYXOv@Q4Yz>p`adrTH+hK74Axc;Q5fqPkpBxcX5=KmQIpV z;5n?J_xZ`$+5cC67t5Z%;_^%I4psFak)=1jbp|bU-kx_?>8)^g%lYTRx`q<+^5Hq1 zjOzszx1@jh_U%y8MvrZYX%fqxe0NpkyJZY&?rn?^S=+v8@7~@NqfQ3}g;@)?P4}Lz z_weTCbZ8D@gXADre}DdWcXyYsaE?`)cw^^Lu2!cXf8W>Z|9%+4GcDCMKeX3PSxQRk z!p)nS8OpwwRqHjxK?gp33cH%Oy_;?Ak2Rt@b2VDR*T;2cHGI$wz5H^^o7cX)Dd5qd z?y{|cNu7-6-<568kk?=lZGJ$n`(?{PAPq(R)h!A=}q)ef{z>_)_KrmJ=yP z1v_J2yn1!(``M{MNeagvJzA7;yzkq$GK;x>F}urrO&S(onYQ|7ju>cRuG0z7!o#@r z;v!Cc;H?ZQr!u!~+h$;G%?+B9_{hiXds#zYU;Sn@3zMTM#M!d3v9UX1ZpxV}tDHXQh950SjhGg?WZju(&z5Bb^rS|<_*xaSqrfpFylq+L(O0K* zbaXo2&DYh{E!Y|JObZrN<@A?AEVcP^r$O%Q6r~g?&QMkXF zW1z5(fI51n4;$#J3m-M%x{uxQA|)TZRqjoj(Q-I(gHHFh(pfu%JMI zt=aL5T47byu9Q3>Zbhlyq@tprf|wuYxRTZy3U_YL4W0U;LRVK;QG|>0)|0PQh2P)B z-n>42*3X0dbqiJqH6NaEGR5WeMWId>=;FacNgFxJegqbs4qfT9?c&A27hkL9SeN?+ z@vF|Z{p+)>#EQ2qv2RWF#_8wI`OWZAtJoWN^SW50gMx@Kq}kJ&C}Co1dN6A%ms}7( z_x&tGq0WTl-aQ5`(+;LI7Grh^M~8t){5_UubZJTYz6i`}L2!$zoc&MLW6u!(3f9u3)P&(F_4 zoVI!4%9WYRmrQU_5V*nuYNWG-PCl7(;rey|Z+fX4?0fAHqgJ9*nP)Tiye|8UE()eg|0Ve4`YW}p4>>9l@oyf*(t@FVfhc zQ=K8(3R++j9)9@s*F{^mhJHBTaySv(;Ye2ekhIh3{^IT1#X)CT@$+!azY-UJqJon( z*~-c)ATEw?{(1LrTuhA%svx~p&7_SI@9ykm?mpUd@7}$p{5@r_Q`f9pC-yaA_l_MM zpi`aRSM80v@wUuDhVS5WuY7jRYjy=0860kl1z(m(ef|2i;@_XjlRe>v4=ng5dboVJ zyEaUFo_)RE?^~AMH9wzD-w?I7>9Js^i&v2HBhZx|T-O36(|?J%(~_O|2Y1kYOktc+|h*GTwjA$`-v5^pS=eyztc~j z`1<<##}^m7|33C)ix&^yY4BMGKQ=}c*j0Q;aR2l1^LhLBvuVPAiiL%RXUv^D_3ksL z{gXo`OcD1IJN0SSym_EW!i&zD$0}5XI3XLrKu6{r?H1p(UK}((r)@ z*B9^KA7Ah`K%{lLe*CF@=^{>AQ-#hJW#{I$UVeFG_xpX?Kjx%Ho;iE=q+OiO=|hh{ zIxN5ZmZgl7h3VlMa1-j`8BpfEc8#sqt=Zr1=aYyk$;Xc$FVNt6S@P?I=@s^uN+Drk ztAZ-tpPg+!=}@)WWKLyesJ7q4tG-*2cV566yMW1tex;hUV^S@W?|8dQ)`=wb`Rb^mk*yy0p zuxgdoL56eCO%c^@iaGiD$})V)V%={ycZ2IoP?ZtD-+KOl<*IuZJbS{Uqopr_8XKUA z)F(}#w8ZqVzVm3(j>5-mI%3@qbe|;NT)V$u%9LWw*p^$jqD;)pxVAa?sNCBY;=BCv zCTmX6PDY(uL06xDeh69>@%8ofkLRr4Ke)HI`p3uq`X2A;dIxjNK)1+j`)H*XwA2~A zsG-k7%V@IS^1#4A#Tj2e|G&L^{tUBof9fCX&C!$C(gix!@hYPzV^)i&W|hhMLX&f9za@WT&%p90FN_e4cS&8T*C*>XgQ zP4J@F{hH6bGJNd!>i_>;(?7$<|NoS%`B{^9-JRI_^XJbk_G_}UvJ$r6E-jb!@$q?c zdci@THEY)%eExZ9tRkp)tEkI7352+pPC1 zP2{Mti;sKv$4hN8N2^nt_5L8%g)h*cCxaX72MafYL$SiU^}0z zle053pR85OyLa!l)IWc6a&p1Wm^R&TQP+cK&h)(eJ|Ra(PtR$R%H7xRZ*9#MU}0=+ zZM8nE|2;V`FYmO| zJq_`Nd-uxv`ub)@uk!QvpS@4x1ZWAvrL=}6yI4~;?RJ`$I>)|VE^M{v*RNlzL18V! zmt0d5^Zow16)PSDU$0FoC=h5;c=4{~)=R-=A8-NpZ%%YUS$X;4w9UC%pCsS@x}|ZI z_vML+$}ir(zrNQkCGyy%OaESc+8iwXe!hNoULI&Ui%Z~@T3Z2*2M3$ktF1s&qaDW| zFFRkWwCHb#E05A59v3CSEnBv{$lHIf^W;g-AAjpunjLLweh7Sjch|T^$->44G!by< z(4j5qpFVG0x@y&`w(gEqtF*3Mzb-xRT}Nu8X&BHU06o?ymZ;O*)HL ztmxpLQL81?`6jb`!PKduN0JOZCZ+7~Ru@)QR<$LQJ2xlFdA)iu zGcbMW+`j3DA0Aj6z1?U2a~GGN4WRgx^?I5bp(EC@Xhv!G`I4&Y>cTHC0uLA86c!eS zWTV480<+JyffjA-D0Ke5d!kC_P)j&`wnD3F;Q}oMd2Z zJUP_+T7^yD?(+Aq{{43iY&rheu(ocp;r83PGXw=WSOofym)odMI;oPDp04N_bZgPG zvXD^FLZhQeji;YB9ZhOH{y1{}`{3YU32EtO6;IFxA(MJj-)0rhUH`vbT^$}68JQUo z;v<@JHY0G(YH*i0p+euP=10M~yZuIzpex-oW~Kf5qo#C99F+G`HHA7K+}T+yz@oVP z59?m}?Pa@VO-)VPbVE}kkNx?x=Vf<8&XVe1FUxjcyl`QH8S{~h-@iV6+VpPnn}-h* zL79%Po%#K~-+AXAZ{4W++V5CGYAWj{o!5Es@)8maXVa3suh!~K^jNTF&6y7!jXI|* zK0b0iR;)D9!y#}=?8(3lx8H&;FZA@}bP2q(<#R^z$FmvgfhJN{ZSO5zr6naT9T*>< zzeD@X`|qHZ&9eK^n+bc#4-G;>P5&ORHwz07=RLo0c@xXpFl{zAwi5Bqxb@|? zAA^qIdM)c_wk=OqO3EoTR8&h_Tam-*++)#B7lqSChaMVCo3@SL+$2iH&;Nf(Nk=Tl zr^8=gU*|PeI(F=sK=;vYbGbp8vi&iR_lNI^yxO&ZMV1QuaBQy_0wkZ*6IlhKGha8?C20OJ?X^Wa423}rXJl0H0 z>i*37``BLE*x0!3t^e%Vvq6_(@Z0@x`2KZw`TMjzvG%1$o;+QCXQi@Q{@$-*Qc_X{ zUtV0CbL{ogX=~hAr?s}S9)A04@7}#DRpQ{bl`B{39-nJwr2IWe zeRr#zO+`Y*otJ-pe$L3sI`s1L^3r&Iwr0?(y_er-fQtNOxs`7UED|?27b5j#jNlD3@ADXK*x(as2SX6#m^6vG*fENyW zBA}IcK|z~dAM8AtBJ{DM#`|8ws#OKM?}GAFR#wx|q?1{D%=F@#4=Sj59$M_)Z}yZ~ zWwK|Blj7at?<*HOm%qDXSo<#M*`7FkFK_Qs?jq2U&8<$+&kj63-v99P&jlJ@*WBGh zLS4hd#rfpzdO+u}+toc02j4t?otm4=+vt#RnQxg$sHa}da;*euV1Oq z*UfG>^!?u1+1dHE&wgjgg`4YGKYVF+8FnPWeG?0EToR*wDli+WQ+cE473?|boXg133x+O=!X>{U>@l?o~;-YTxY-u>xQ z(Uoi0Ud>azzhdJ?L0(?o4;40T^=UadJjTYx%l<#Ozp~_EWo&Hhij^xH@8(^<%V}t6 z*jQk(NBezpVj| zTEFeLEvIN%)ctz7eAoQwX{k2V-_CrgKIeD#%oz!>$mPrHxn%3!@BPm6IUr7M{ijbw zJbZk!?EE`B_>@4|>05-B{^B)jcou2A(yKZ*-@bpgrlxA=4IpMb-1rp+kq(?VInS)aanFVD|LDsHiT`^%<5$M+)|o9lp6az3}I! z)XUG+Q`c|aTzuS}$4HciO|eUfi<|r6g$oUf7AcjKm*?*iU&58T^G(pD%{z8*cup!Q z?~B=8#@nQ@V8sfL?{Q04X^FU=oc-;5c6RoRnKKP}Oz-~K2}-WNepT(bn|Ju5mX=nM zhrZxNIZ&>8A$rk-cmLnF`GqeoC~n!l{qg7X_Q#)|o_>9MNBq7TN%`6@7q@lKUb#|} zg^AH)QpuoL*4B4lzW7TjWzjzW$U|GrPuGDZfb50Y9%bvc(qTCgT=twI{Vk&^xd!RCwd%s{yFu|qi>J z_eFinmMsnfEG4C-3zsivm#_UIxF$^d)~#C=zQTfgnLz1qZ_-2$7SQ@3jjkV0Ci@q> zzNV|AtLrG@3L4>*)GsTmmi`$R5gTh-v&h=UrsvQhClN8RSKF+5-4=t2=Ffj;M#RO% z-G8{LaQlg}+dqmQmRNoKdOd!&ow#PXdH%gS-#Q$Z{rdGQVf*dEH#ZEYOql}O{ciqU zNvikV&(e*XHYMHQtIWvYXl-rX5Vdw$-0quI|NdBtxHjH@e?QRA)8C)pC9q{#ri6^l z5%u{sOo1YWPfv-;aVslTwStQR^*edn-&uZs+tc6gJV^y~2-)_Gj-yF!{>9SL(x9^X z+qZAEA5F^Z>f+2BKHl1zz2Wv-i@HA+pltl=%E~p-oBaI!L5njAcE&6_Z+=U5*0O_7 zi=J+YRu47M*3`VHJHvHx;E%s`8eN~fKC7jrr}G}xyM6mMD8UJ<`@Ps_2R@rB?U!xF z;;B40_TNktQkaB{H%WsBm2^W{&N9J0W2Si29x~lXdG}rKcXKO2K#ol{gw=I+Y z`t94J7Z(?|J%6RHrnV_-tqcUlIE^DPX>2)4f5`=-n~D=Uj9dex~-Ia%7EbpUtv*UQJPFAt7u(>V>= zw6!Ko`_=2$iJNbhePOxxw#-??_40GcxBI%q^!+&BOCTIYTdt|=j)GIzu&{`C{SX}-P_- z#V_2slk>|)SqW0ai27c>=KQ$mWW0g3zVg=Dj_>zY+Q@-U4p_9v>HF6L3!czW-`F2Z z-lWAHJ8^=etGipU|G4k`^ew+1eYEK6?%tkz*4n^;Vfp1w(1p@rVT-nH6WgAD|K65_ zX{nNsVTfh%%qLTXR;|j@dX`(WJ~TAcqU_C#JjbG}EH1nG=chEidh|%?&_jci$ZNVA zQnC^f7(fS`=H;bjs0&`SI|%Ch+AYqMs;aJ5Tsw?E@O=;-sk-|t(_%13l1c0eDUr^hl|qsFBvyZo#IN`D52tM zbcb_V=amXenZBE%aO;0hYcJ8MIILIEco=q^X~QLgP?=@@_#KlyJE)27Z;U1Cbc9O?3nj;;VLaF zE31T!5f`ppX=!R=+OmE7;{E&O4zl=ihI;{npLVkugRObdsQ6?5-_!w)uPP($mww|M_+1+TY*b7ix69E4_W^4yXwN z+KTi2tAj!VJHOnUpI1tfZ{W>9Wb?=c0mwxyQiK zCf?}+S}VcPwBhB+w|>5Ueo6uy3KBf;Zce^8b*kuzO>2H1DT6mYcI_5jbWx+mPChI= z+&6y1(#?DJtogm9yrQDw@5#3_jnhF(v14O<`|bZpG&eUdJFi?-%Er$AvEBX;(;ehetG1=g@9}JSIp<_jE{=Cb@ix= ziInf{psfoR9yIuK0owf6zh<;`#|{qHz-=}6_U*HaSQ}PmsGy_!_sY&CYu4m=r=7ZS zL!#;6gMBaVO z_g-o958rO*OK)2^XU2?%MH;`$wD(R7`FH%ZfBpKnyIOm64NgJdFNzG(caI2>vV&6@7|rbHR|HEYsc0pySP-gfx5;v z+u}bN$=TP<*|zi*DAz8(yz=+28#iw3%UroDc=hVl6H+6~zk7y;ii)@z*7i-P6me}- z;MjH4IdaXb7T&frpO|v=>d?Z_a@a9}2G7e^6IbQ}7fD2|fDhQ;}PD z_mzoUdk@%0P74eOU|4;1*0!auE?s(;R=h`RW5gK)<|P|8Oz2*6J;p|^{c4t}&b^~a zhL@igm`$5DjVBtkwBf;tiOL(I*6uofS83vjzP?L3`ufUJy`TZCxp6b4K;dpEz@-C-L>s&FSY4JuQ0p=H}*I z>)D$R+UD=w5iTYs#v@*|ckkW;tGUb0a~jP*{nY48$AnbN^-Z?sRUaNSCTc&OtnLre zcV%VpuJzhoO*3cC-17hb)~%*z&YVdoDG^y1pz->VtARv|Mi=O|w6CwP`_AWgahYNb zYRK}1&6JzZRGzS{cejnSePcHN){Iv@8a$i*N>CXd-D7D@5HT9i5nwI zxV1q2&s59zhj@dX7G78;wp#k;+p;oCP|n)o?Ipl+_s%TP8Ha}xFF!9b3$or2cdmKn zym_E1YE77SpPcQiZ9zfHKQS=yAMErT$MoMVh#c= zx^HF6lZuLj>h{YYOepaFk*2jE;Qjm1(9nhZ_Q}chyMHg8e|~znZm7AJ?xrtx;h=%9 z=xAU0`dju^i5}fQg zNuby5KFS#uhoPbiTvsO+AYiDe2A0 znCzjFv_si5H1x;ce|zpsoZ_P<$kocTTWIgsYti7*CP6b((^dzChL0Z$L4$yoFJHEN z9@o>;^8hqPY9aIE+3b8D`En(tThgGMy_YShQu650qXMph+y5r2EnBwCz|gR9<3_{7 zi$xA52)Mes3a~Jm=iRyR*Laf3(_AqJ8#(hcOaiWga{b4@d|dYT_~VZc4z+Uc`m83v z@g&#m%;)Fl6+I{Awa?4GzRppA1vCs-eeTK?kwXs)ZvFOD3khw#{r1>G=k|i9r$jFw zpViUvO$=1*t)CbY*LF7Tw5GnY?DpHeZEb8OW@fMU&3pAM@!KP9X>Dz7P}W}k`|a)R ziJNa$e4AI2Ije2cCZjw1YO7D*@l18uQ}OZ87t49QCA#6#;NhG8Z{NPz?z~@8UVb=l z`{K20d#x9Abi@gR{oJMmy1GuB#qk2~z0+Y@7uIjsAmHrmysO)E{q^ptQ$;U}$L-!3 zF?-%T(CF)K`G6?%{Ch2zUz+H=b6p&G`FVxewCU5Y_s`n_$ zHZoew^}BNQ>e}s@YD$Z)GlRXh@`|9aqkuwJl3%5y=Gn7nGqSRpG`e=JzrVLyeDmhb z%k+0`+PGmu!j9a3$9ko~!yi7G^_NX}uU@^{rW>y6c}r;CZ2dGJ&kXUhX0 zj?34(7)Y4#7;L$jle5xGQc_mdH8XSNJ5wV=!^QxOlwUFD-HbpR4ljTPq~r2;&dOb` z5*m8_eK2Uh+Oo`L{i=e3Gn+v}|A#JJ@^|++H`kgS()4&&F)=VOurc{~-^*>2=FFSd z2AuFX=a*CV@@vKS7fEr^X2pF zW?igJ&B)+5d-kk`zW(tC4;H+9?B?R~8ys(2j{1Ev3epX|U-S9wmgu8@>p&+E`^IOy zz0%Cizd)nwUAk5EHytZ$YhQW&Q}%P`&b6rhwdLKOAQ4v3ki_}Fb7#$;-+uqS`5yK! zU%xsEu!x9?I!=4K<@*$VyB`d#t*tz#Rh1U$f}%{xdDgOpYuECMb+gW|{dRL&tk}T> zf#d!1$4^dH=Z#*KS0ki-+DNFAWzxwdFS*zGfEL@wtq1H&ze2^qy7KS_7;VYj!cUY2o1e>_bxAJ=i@fB zxM&xbCEcKSycMP*ht(aPEyRECx9eps~ADC??~rDdmsLPLTQ5)@;iDyt}(nX9x;%wSHRk^wsC*=ND>l{i)lZxAA@I-o1N& zoXxLe?mx~v`)u2}bAF&!IOz74yLq5D7yq65s$BF^iXM9 zx>R+_)TxOT6&8z&-(9|JUz+H#RXa8^(y&%>+4Gy5)7zf^-n|>-NFRCrQ~BUN>B8m9 z(@)FHo;9mU=k)JwH@5HD)01Jsk&It|et<>+bt^ zbaY%w6m0J3DEjs~{=XDxgv~ha#1gU0g#jF!bU<4<;#notCVOghE!u72o!X$$mGtYo z-_P@}zaC24EV(TvR3tTCc7IfK^x-pSc=p8UJ1xA>x9;c5mzg!6&ze{K|NGtd|Gmx* zje1a1!o_lT(NiwJxmH^rv--aJQ?DSqY*A01pZ}04j7X@t>X*@bLReM?ea~GE> z`#~vc(HvDFPL8IA^LD>=R=4_U=^uXoU0H(X(a+D%m+4*!3lD$z`DclErn0iKhMr#9 z1BJJ%Ds1||StSxwDMJQ@V}-lBy8}d6H|eCu?wK)f-m$Bz!ygt{RQweX4D+rX=yx%ZD!A&{ZnM-Hy7B<|zwW0JE|imzReul@TUDGzXud-zv;8zb-snJbKk7 z?TeQ#HTm2B4JkKoJOBLl=4q>8gZh%IR;AUhy|=Gcdh6D$D!c^X7=22zK`0+A0LxFCb75%7MahNLgmHOE*B+>@^>;Ujt918U*A;sX}6(%a$TL>a`lUDYn9vE z+XF*Fj!c{I#YK`Z>wO)ViT3Tv4$8Y(&q+E6XrqoC`3z=h=E?w#qFWDGzX2a5~t1{< z{`;%+@U+#*$;ll@ldR{xK7IOhhuh)_DxTk8ge+@oZ@+lwPS2-LMQwM51TShI2L;m1 zV{i8Kw6?N(Oj@#g>b~vU#YII$m({y}sk#KNu3x-;dv)&nNh+y#ib`{Hd5w*YC1hny z-|U;*nP9*XC=wVF((?NH`q}?v1qCm@?gT}j(cER3pzN(9#$8oaRdnh!sKuXcT?sst`SglWXlQ6j zdHLb2t&7&K?LEG_qvJ#fI1}v?>~y(s>lT-zK*@ZE^sMB#wm|PwS04Gje_w4Qw`JS5 zS^sJUwr<{Ns}@BaMz=V!4-7t{Xx^Ml{H#>dOQDYJ$yR&e>v1Zvi7 zd4FeDDK}p`^K$?B=YDmZ{PM*_4csA0+IVA`vKlB2f=6tk|MlsBj)jleaB*M3`+K$# zI$|d_?MYqdrX={|??2z-*`Rdh84e!=deMd$Vggo-ZGcywW*GtX94 zrA4*iAij0|(MJotxIG-R&$i8*H*bx2`o)Zr+Jos|T0onq%x3qd|I3WOXu=CRyWstM za~&I&X2+i1-lrucOLp%D-5-~mn+uw7ug_CbQnCewXkc82i&92rW}^bfi`TDDS1p|8 zmz=D;TkpcYlF!e4uUxzK?&KbM2?+;RSJqdrUI}!%`21hv;^OiW)GKkRRGm7#@YR)- zb3Pfxl|4Sjd*$lYng4!ve94%_HvRO};0JF{yScd)JUb(4A;WiPSLx|5=RI6prf`CC zkH-6qS#9&?$w4QFy{}D4FyNSd_Sm#lTh>?ZjhixUTH0Lx%^!bs9)H|;G|4eNUERdj z`0r*xLBZ56P+~h3J<)>&v}RR-1GHXmbKI3m8@V~w<>$VfciuAh+O@C>n|W)VSCyBW zzbUi6b?erR#`cbmPeP#Bp7I?s!wFhfvT)%-+5DCIdU|OS6rZ+&c5Lq0QE}XTB^w*t zgA%KUC02%3R$0HED<~*1WU%Y?ce)wU68pBgj-^&jQEH0J33=9>$d-v{!sI?i{*~zyP zl$5Ltz?BhmW^&xIt=ZSN>3nKyZ%^EO)4;+a<5#unt(6B4I^K9&c30NDwzd{D^P8EO z2r80fEkKcZv9av=Ia$y$#Z{}oE2ixJ|0%Bd@vvP(L*u~N+2+3W^)5GeReo0E;^HcJ zc}W#C+W+F!E6_~ssne$;=O`;JVg@&%tUj3d9)9pZ!S2ro=Z-}k`ulz~`LB5Cu%rCF z+`muL_dhtyZ-3;teEpd_+)7GTA3#o40)a()Kr_gKVDOX`6wMtVprH>=EiNEX*$9d~ zkYc4%+#olD6$i%sc(?oghhvk~{r`Rc{eHjs-?IW>2|>Y^KmYxHZ)k4*{Za37|M~YS ze|=f`G9P3r2z#8rb4O;LU2WC#UKgd0pIwwb*3Y-CPWv?*Y=M%J(ybRaH>X#8dUCQ} zsPoAA`xTFS&F@uwdvjBNo=xSa`OE$1Kl=TC|8ai%KMB8Pt3Wg@x_+78{?7y}rzUm( zd4Hb&e!t)T+p%N+LHeIRfBygcojZ5_*L}ZRt^iT4WaO+g@khP?Je$bh*Z2Rsx_@KY c$N!91811GzdQ~McFfcH9y85}Sb4q9e064l9GXMYp literal 0 HcmV?d00001 diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c new file mode 100644 index 0000000000..82f55b4bc0 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c @@ -0,0 +1,185 @@ +#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; + } + +}; From 5fae86849aad46ac003e2959d853f55759809ac9 Mon Sep 17 00:00:00 2001 From: David Mohr Date: Tue, 29 Mar 2016 23:56:21 -0600 Subject: [PATCH 11/14] Also add compiled hex file --- .../dvorak_intl_squisher.hex | 1127 +++++++++++++++++ 1 file changed, 1127 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex new file mode 100644 index 0000000000..bd70f5829f --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex @@ -0,0 +1,1127 @@ +:100000000C9465020C94AC020C94AC020C94AC02FF +:100010000C94AC020C94AC020C94AC020C94AC02A8 +:100020000C94AC020C94AC020C94B50B0C94870CA1 +:100030000C94AC020C94AC020C94AC020C94AC0288 +:100040000C94AC020C943B210C94AC020C94AC02CA +:100050000C94AC020C94C71A0C94AC020C94AC0235 +:100060000C94AC020C94AC020C94AC020C94AC0258 +:100070000C94AC020C94AC020C94AC020C94AC0248 +:100080000C94AC020C94AC020C94AC020C94AC0238 +:100090000C94AC020C94AC020C94AC020C94AC0228 +:1000A0000C94AC020C94AC020C94AC02F40C160D43 +:1000B000040E160D040E5B0D7E0D040ED30DE60D21 +:1000C000D110D11000110011431181119A139A130C +:1000D0009A119A139B129B126E139A139A138513FB +:1000E0000000F0A12E0029002A00E1003581000067 +:1000F0001E00340004003371E2004D001F00360082 +:1001000012001400E3002B002000370008000D004F +:1001100050002C002100130018000E004F004A0070 +:1001200022001C000C001B0000006571B6004C0092 +:100130000000007F00000154AE004900000000777D +:1001400000000254230009000700050000004600DB +:1001500024000A000B00100052004B00250006008E +:1001600017001A0051002800260015001100190080 +:100170002F00E51427000F0016001D7130004E00FF +:10018000318238002D00E500C100000001000100AF +:1001900001000100010000003A001E0220022202BC +:1001A000010001003B001F022102230201000100A7 +:1001B0003C002F0226022F00AC0001003D0030025F +:1001C00027023000AB0001003E003102350035024D +:1001D000000001000100010000000100000001001A +:1001E0000100010000000100000001003F0052007A +:1001F00051002402000001004000240021001E00E4 +:100200000100A9004100250022001F003700010065 +:1002100042002600230020002700A80043002502FA +:100220002E0231002E00AA0044004500010001000A +:1002300001000000010001000100010001000000B8 +:100240000100140004001D710100010001001A00EA +:1002500016001B0001000100010008000700060055 +:100260000100010001001500090019000100010052 +:10027000010017000A000500000001000100010054 +:100280000000010000000100010001000000010069 +:100290000000010001001C000B0011000000010023 +:1002A000010018000D0010000100010001000C0009 +:1002B0000E00360001000100010012000F0037009F +:1002C00001000100010013003382387101000100B8 +:1002D00001000100010001000100000016034500BB +:1002E000720067006F0044006F0078002000450036 +:1002F0005A00000016034500720067006F004400BA +:100300006F007800200045005A0000000403090433 +:1003100009026D00040100A0FA09040000010301B4 +:100320000100092111010001223F00070581030896 +:10033000000A090401000103010200092111010062 +:1003400001224D000705820308000A09040200018A +:100350000300000009211101000122360007058376 +:100360000308000A09040300010300000009211129 +:100370000100012239000705840310000112011059 +:100380000100000008EDFE07130100010200010555 +:10039000010906A101050719E029E71500250195C6 +:1003A0000875018102050819012905950575019156 +:1003B000029501750391010507190029771500259C +:1003C00001957875018102C005010980A1018502AE +:1003D00016010026B7001A01002AB7007510950112 +:1003E0008100C0050C0901A1018503160100269CAE +:1003F000021A01002A9C02751095018100C00501B6 +:100400000902A1010901A100050919012905150029 +:10041000250195057501810295017503810105018D +:10042000093009311581257F950275088106093843 +:100430001581257F950175088106050C0A3802157E +:1004400081257F950175088106C0C005010906A1B7 +:1004500001050719E029E7150025019508750181B7 +:100460000295017508810105081901290595057591 +:100470000191029501750391010507190029FF15E6 +:100480000025FF950675088100C0000000000000EF +:100490000000000000010204060A0F17202C3A4A4F +:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 +:1004B000B39D87715D4A3A2C20170F0A060402018A +:1004C0000000000000000000000011241FBECFEF5C +:1004D000DAE0DEBFCDBF04B603FE27C08091EF0196 +:1004E0009091F001A091F101B091F2018730904B11 +:1004F000A740B04BD1F41092EF011092F00110928E +:10050000F1011092F20114BE84B7877F84BF0FB649 +:10051000F894A895809160008861809360001092A3 +:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C +:10053000E8E1F6E402C005900D92A433B107D9F7C3 +:1005400021E0A4E3B1E001C01D92AF3EB207E1F7A4 +:100550000E94F6080C940A230C94000061110BC051 +:10056000FC018281882321F085EE0E94660F03C082 +:1005700085EE0E942E1080E090E00895089560912D +:10058000B1017091B2018091B3019091B4010E94C8 +:10059000F01956985E9825982D9826982E982798A9 +:1005A0002F98813019F0823021F00895259A2D9AE4 +:1005B0000895269A2E9A08950C94BF0256985E9834 +:1005C00025982D9826982E9827982F988FEF90E0B1 +:1005D000909389008093880090938B0080938A0089 +:1005E00090938D0080938C00259A2D9A2FEF80E7B1 +:1005F00092E0215080409040E1F700C00000269A30 +:100600002E9A2FEF80E792E0215080409040E1F752 +:1006100000C00000279A2F9A2FEF80E792E0215028 +:1006200080409040E1F700C0000025982D982FEF02 +:1006300080E792E0215080409040E1F700C0000048 +:1006400026982E982FEF80E792E02150804090402E +:10065000E1F700C0000027982F9856985E982598DB +:100660002D9826982E9827982F98089589EA809398 +:10067000800089E08093810024982C983F988AB16B +:100680008F748AB96E98479A8BB1806B8BB9769AC2 +:100690000E94DE020C94BE0280E2809300018091F1 +:1006A000340181110EC00E949B0381E080933401CC +:1006B0002FEF83ED90E3215080409040E1F700C0A0 +:1006C000000080E40E94A1038093000181112EC0EC +:1006D0000E94CB0380930001811128C00E94CB03AC +:1006E00080930001811122C08FE30E94CB0380938D +:1006F000000181111BC00E94C30380E40E94A1037A +:1007000080930001811112C08CE00E94CB03809382 +:10071000000181110BC00E94CB0380930001811165 +:1007200005C08FE30E94CB03809300010E94C303A6 +:100730008091000108951092B9008AE08093B8007A +:10074000089594EA9093BC009091BC0097FFFCCF71 +:100750009091B900987F983021F0903111F081E0AC +:1007600008958093BB0084E88093BC008091BC0016 +:1007700087FFFCCF8091B900887F883111F08034E9 +:1007800071F780E0089584E98093BC008091BC00FB +:1007900084FDFCCF08958093BB0084E88093BC0067 +:1007A0008091BC0087FFFCCF9091B900987F81E0D9 +:1007B000983209F480E0089584E88093BC00809129 +:1007C000BC0087FFFCCF8091BB00089580910001A1 +:1007D000811115C080E40E94A10380930001811162 +:1007E0000CC082E10E94CB0380930001811105C0FF +:1007F0008FEF0E94CB03809300010E94C30384B15A +:10080000807F84B985B1807F85B98AB1837F8AB9B9 +:100810008BB1837F8BB93E98469808950E944C0314 +:10082000809300010E94E60380B38C7080BB81B38B +:10083000836F81BBA6E3B1E0E4E4F1E08EE08E0FCC +:1008400011921D928E13FCCF0C943603BF92CF925F +:10085000DF92EF92FF920F931F93CF93DF938091DC +:100860000001882379F0809135018F5F80933501F5 +:10087000811108C00E944C0380930001811102C0C5 +:100880000E94DE0206E311E0C0E0D0E0DD24D39454 +:1008900082E0C82EEE24E394F12CC730D10500F598 +:1008A00080910001811164C080E40E94A1038093C3 +:1008B0000001811112C082E10E94CB0380930001EC +:1008C00081110BC0C7010C2E01C0880F0A94EAF7F2 +:1008D00080950E94CB03809300010E94C30348C00F +:1008E000CA30A1F028F4C83059F0C93061F005C011 +:1008F000CC3089F070F0CD3089F0209A289810C063 +:10090000219A29980DC0229A2A980AC0239A2B98D6 +:1009100007C0529A01C0539A5B9802C03E9A46980B +:1009200090EA9A95F1F79FB1799902C082E001C0EF +:1009300080E091709D25982B7C9902C084E001C0D5 +:1009400080E0892B7D9902C038E001C030E0832B24 +:100950007E9902C020E101C020E0822B9FB19095DA +:10096000991F9927991F9295990F907E892B0FC0F7 +:1009700080910001811149C080E40E94A10380930D +:100980000001882379F1B12C0E94C3038B2DF8015B +:100990009081981719F08083C09201010E94E603AC +:1009A00021960F5F1F4FCE30D10509F076CF809191 +:1009B0000101882361F1815080930101882339F07E +:1009C0008FE99FE00197F1F700C0000020C0A4E488 +:1009D000B1E0E6E3F1E0CF01825F91919D938E1348 +:1009E000FCCF15C083E10E94CB03809300018111ED +:1009F000CACF81E40E94A103809300018111C3CF7B +:100A00000E94DC03B82EB094BFCF80E0C0CF0E941C +:100A1000DC0281E0DF91CF911F910F91FF90EF9069 +:100A2000DF90CF90BF900895E82FF0E0EC5BFE4F91 +:100A30008081089508958B3B910578F4883A91055B +:100A400040F5853A9105D0F48430910508F0B1C0A5 +:100A50008130910509F4ADC06BC0803E910508F46A +:100A600067C0883E910508F4A4C09C01205F31094D +:100A70002031310508F05CC090650895853A9105F4 +:100A800009F459C0863A910509F058C082E890E40B +:100A90000895883A910509F454C0893A910509F4FA +:100AA00053C08A3A910509F452C08B3A910509F472 +:100AB00051C08C3A910509F450C08D3A910509F462 +:100AC0004FC0803B910509F44EC08E3A910509F460 +:100AD0004DC08F3A910509F44CC0813B910509F452 +:100AE0004BC0823B910509F44AC0833B910509F450 +:100AF00049C0843B910509F448C0853B910509F440 +:100B000047C0863B910509F446C0873B910509F42F +:100B100045C0883B910509F444C0893B910509F41F +:100B200043C08A3B910509F442C080E094E40895F3 +:100B300080E090E0089581E890E4089583E890E4EF +:100B4000089582EE94E4089589EE94E408958AEE7F +:100B500094E4089585EB94E4089586EB94E4089575 +:100B600087EB94E408958CEC94E408958DEC94E480 +:100B7000089583E895E408958AE895E4089582E964 +:100B800095E4089584E995E4089581E296E4089552 +:100B900083E296E4089584E296E4089585E296E47B +:100BA000089586E296E4089587E296E408958AE23D +:100BB00096E40895089596E0799FF001112494E554 +:100BC000899FE00DF11D1124E60FF11DEE0FFF1FAF +:100BD000EC51FF4F859194910895880F991FFC0166 +:100BE000E05AF040859194910895880F991FFC0177 +:100BF000E052FF4F85919491089526E0729FF00195 +:100C0000112444E5849FE00DF11D1124E60FF11D30 +:100C1000EE0FFF1FEC51FF4F859194919C013A9587 +:100C200021154FE1340708F41CC13F512115304113 +:100C300020F49F700E94F50508959C013053211502 +:100C4000304118F49927906C0895811520E592079A +:100C500071F40E94BE134FEF84E39CE0415080404A +:100C60009040E1F700C000000E94EC1AFAC0813009 +:100C700020E5920731F48091CD0181608093CD0110 +:100C8000F0C09C0130552115304108F051C0292F8A +:100C900033272F70332721303105D9F4AC0143704D +:100CA000552702C0220F331F4A95E2F73C68AC017A +:100CB00064E0440F551F6A95E1F744275370242BD5 +:100CC000352B73E0880F991F7A95E1F78076992785 +:100CD0001DC02230310529F4982F8827816F906A32 +:100CE000089523303105A9F4AC014370552721E064 +:100CF00030E002C0220F331F4A95E2F73C6843E020 +:100D0000880F991F4A95E1F7807E9770822B932B6D +:100D1000089524303105E1F4AC014370552721E0FA +:100D200030E002C0220F331F4A95E2F73A68E7CF5E +:100D30009C0130572115304118F49F70906208953E +:100D40009C0130582115304118F49F70906A089525 +:100D5000803E9105E0F4803C910558F58133910582 +:100D600009F46FC048F48932910509F463C08A32EE +:100D7000910509F46DC072C089339105E9F082389C +:100D80009105D1F08533910509F44DC067C0833ECC +:100D9000910581F138F4803E9105B9F0823E9105CC +:100DA000D9F05CC0863E910561F1873E9105A1F1C5 +:100DB00055C00E94ED0508952091E00120FD02C07C +:100DC00021FF4CC080EE90E049C08091E00180FF9F +:100DD000F9CF89E390E042C08091E00182FF0EC02C +:100DE0008091E00184FF03C080E090E037C083EE93 +:100DF00090E034C08091E00182FFF2CF82EE90E07B +:100E00002DC08091E00183FF0BC08091E00184FD43 +:100E1000EBCF87EE90E022C08091E00183FFF5CF19 +:100E200086EE90E01BC08091E00185FF07C089E25B +:100E300090E014C08091E00185FFF9CF85E390E058 +:100E40000DC08091E00186FF07C08AE290E006C0F5 +:100E50008091E00186FFF9CF81E390E00E941B05BD +:100E60000895089508950C943207809162010895C1 +:100E7000CF93DF9300D01F92CDB7DEB79C01809156 +:100E8000E601843019F593E099833B832A8390939C +:100E9000E9008FEF9091E800815095FD06C095ED37 +:100EA0009A95F1F700008111F5CF8091E80085FF58 +:100EB0000DC040E050E063E070E0CE0101960E947A +:100EC000A5098091E8008E778093E8000F900F903D +:100ED0000F90DF91CF910895CF93DF9300D01F92B1 +:100EE000CDB7DEB72091E601243021F522E0298339 +:100EF0009B838A8383E08093E9008FEF9091E800E1 +:100F0000815095FD06C095ED9A95F1F7000081118D +:100F1000F5CF8091E80085FF0DC040E050E063E030 +:100F200070E0CE0101960E94A5098091E8008E77BD +:100F30008093E8000F900F900F90DF91CF9108956C +:100F40002091E6012430F1F422E02093E9002FEF14 +:100F50003091E800215035FD06C035ED3A95F1F7A6 +:100F600000002111F5CF2091E80025FF0BC040E0E3 +:100F700050E065E070E00E94A5098091E8008E775E +:100F80008093E8000895CF93DF93EC019091E60100 +:100F9000943009F046C080910C018823D9F08091EB +:100FA0000D018823B9F09093E9008FEF9091E8004C +:100FB000815095FD06C095E19A95F1F700008111E9 +:100FC000F5CF8091E80085FF2CC040E050E060E163 +:100FD00070E017C081E08093E9008FEF9091E80006 +:100FE000815095FD06C095ED9A95F1F700008111AD +:100FF000F5CF8091E80085FF14C040E050E068E044 +:1010000070E0CE010E94A5098091E8008E77809360 +:10101000E80080E1FE01A2E5B1E001900D928A9521 +:10102000E1F7DF91CF9108958091E501811109C029 +:101030000E943A0B0E94970B8091E200846080939B +:10104000E20008951092E501089508950C94282176 +:101050000E94821A0E942E210E943D0E0C9433079A +:1010600042E061EC81E00E94B40A42E061EC82E07F +:101070000E94B40A42E061EC83E00E94B40A42E1BB +:1010800061EC84E00C94B40A8091E801833009F4A7 +:1010900055C030F4813071F0823009F48EC008956B +:1010A0008A3009F47AC08B3009F460C0893009F0C5 +:1010B0009CC020C08091E701813A09F096C08091E0 +:1010C000E800877F8093E8008091EB019091EC012C +:1010D000892B21F460E182E591E003C060E080E0CB +:1010E00090E070E00E94F0098091E8008B77809397 +:1010F000E80008958091E701813209F076C080917F +:10110000EB019091EC01009719F0039709F06DC085 +:101110008091E800877F8093E8008091E80082FD5D +:1011200005C08091E6018111F8CF5FC08091F10088 +:10113000809362018091E8008B7753C08091E70132 +:10114000813A09F052C08091EB019091EC01892B1A +:1011500009F04BC08091E800877F8093E800809180 +:10116000E80080FFFCCF80910C0136C08091E70140 +:101170008132D9F58091EB019091EC01892BA9F591 +:101180008091E800877F8093E8000E94E90A8091BF +:10119000E90180930C010C94BE138091E701813228 +:1011A00021F58091E800877F8093E8000E94E90A9A +:1011B0008091EA018093630108958091E701813A6B +:1011C000A1F48091E800877F8093E8008091E80097 +:1011D00080FFFCCF809163018093F1008091E80053 +:1011E0008E778093E8000C94E90A089584B7877F8E +:1011F00084BF0FB6F894A8958091600088618093B1 +:101200006000109260000FBE90E080E80FB6F89486 +:1012100080936100909361000FBE0E948C0E0E942B +:101220003A0B0E94970B8091E20084608093E20069 +:1012300078940E941D0E0E948E0E82E091E00E9422 +:10124000380E0E9416218091E601853069F40E94D3 +:10125000401A8091E4018823B1F30E946E1A88231A +:1012600091F30E948F09EFCF0E94940EECCF292FAB +:10127000332723303105C9F064F42130310581F082 +:101280002230310509F043C08DE690E020E133E0E3 +:1012900042C021323105F1F02232310541F137C02F +:1012A00082E190E02DE733E036C099278130910547 +:1012B00041F08230910541F0892B49F5ECE0F3E0F3 +:1012C00005C0E4EFF2E002C0ECEDF2E0849190E0C2 +:1012D0009F0121C06430D8F4E62FF0E0EE0FFF1F2D +:1012E000EE5DFE4F2081318189E090E014C06430D2 +:1012F00070F470E0FB01EE0FFF1FE65EFE4F2081F1 +:101300003181FB01EA5EFE4F808190E004C080E005 +:1013100090E020E030E0FA0131832083089580E1FD +:1013200089BD82E189BD09B400FEFDCF8091D8005E +:101330008F7D8093D8008091E00082608093E000F0 +:101340008091E00081FDFCCF0895CF92DF92EF9273 +:10135000FF920F931F93CF93DF93EC018B016A01F0 +:101360000E94080B811133C0C114D10439F0F60179 +:1013700080819181081B190BC80FD91FE12CF12C1A +:101380000115110519F18091E80085FD16C08091C5 +:10139000E8008E778093E800C114D10449F0F6018B +:1013A00080819181E80EF91EF182E08285E00FC014 +:1013B0000E94080B882321F30AC089918093F100D1 +:1013C00001501109FFEFEF1AFF0ADACF80E0DF9139 +:1013D000CF911F910F91FF90EF90DF90CF900895E4 +:1013E0002091ED013091EE012617370748F0611585 +:1013F000710539F42091E8002E772093E80001C0B0 +:10140000B90140E061157105A9F12091E60122239F +:1014100009F443C0253009F442C02091E80023FDBF +:1014200040C02091E80022FD32C02091E80020FF5A +:10143000E9CF4091F3002091F20030E0342BFC0121 +:10144000CF016115710559F02830310540F48191C3 +:101450008093F100615071092F5F3F4FF1CF41E060 +:101460002830310509F040E02091E8002E772093E4 +:10147000E800C8CF4111C9CF0AC08091E601882396 +:1014800061F0853061F08091E80083FD0AC08091B1 +:10149000E80082FFF2CF80E0089582E0089583E0C3 +:1014A000089581E008952091ED013091EE01261715 +:1014B000370748F06115710539F42091E8002E775F +:1014C0002093E80001C0B901FC0120E0611571051D +:1014D00091F18091E601882309F440C0853009F438 +:1014E0003FC08091E80083FD3DC08091E80082FD0F +:1014F0002FC08091E80080FFE9CF2091F300809118 +:10150000F20090E0922B6115710559F08830910539 +:1015100040F424912093F1003196615071090196B5 +:10152000F2CF21E0089709F020E08091E8008E7763 +:101530008093E800CBCF2111CCCF0AC08091E60187 +:10154000882361F0853061F08091E80083FD0AC056 +:101550008091E80082FFF2CF80E0089582E0089554 +:1015600083E0089581E00895982F973058F590937F +:10157000E900981739F07091EC002091ED0050913E +:10158000F00003C0242F762F50E021FF19C03091C6 +:10159000EB003E7F3093EB003091ED003D7F3093C8 +:1015A000ED003091EB0031603093EB007093EC0074 +:1015B0002093ED005093F0002091EE0027FF07C02C +:1015C0009F5FD3CF8F708093E90081E0089580E022 +:1015D00008958091E70187FF11C08091E80082FDA6 +:1015E00005C08091E6018111F8CF11C08091E8001B +:1015F0008B770BC08091E601882349F08091E80049 +:1016000080FFF8CF8091E8008E778093E8000895FE +:101610002091E4003091E50095E64091EC00842FA4 +:10162000817040FF22C08091E80080FD1CC0809145 +:10163000E601882391F0853091F08091EB0085FDE3 +:1016400010C04091E4005091E5004217530729F380 +:101650009A01915011F784E0089582E0089583E0A3 +:10166000089581E0089580E008954091E80042FFE8 +:10167000DECF08950E94A80B0E94B00BE0EEF0E0D0 +:10168000808181608083E8EDF0E080818F778083C6 +:1016900019BCA7EDB0E08C918E7F8C9380818F7EFA +:1016A00080831092E50108950F931F93CF93DF93EA +:1016B0000E94A80B0E94B00BC8EDD0E088818F7704 +:1016C000888388818068888388818F7D888319BC1E +:1016D0001092E6011092E2011092E4011092E301EF +:1016E00000EE10E0F80180818B7F8083888181602B +:1016F000888342E060E080E00E94B40AE1EEF0E01E +:1017000080818E7F8083E2EEF0E080818160808343 +:10171000808188608083F80180818E7F80838881CA +:1017200080618883DF91CF911F910F910895E8ED3B +:10173000F0E080818F7E8083E7EDF0E08081816042 +:10174000808384E082BF81E08093E5010C94540B98 +:10175000E8EDF0E080818E7F80831092E2000895B2 +:101760001092DA001092E10008951F920F920FB6C6 +:101770000F9211242F933F934F935F936F937F9317 +:101780008F939F93AF93BF93EF93FF938091E1006B +:1017900082FF0BC08091E20082FF07C08091E100D0 +:1017A0008B7F8093E1000E941C0E8091DA0080FF05 +:1017B0001FC08091D80080FF1BC08091DA008E7F0F +:1017C0008093DA008091D90080FF0DC080E189BD4F +:1017D00082E189BD09B400FEFDCF81E08093E6017E +:1017E0000E94140805C019BC1092E6010E9422084C +:1017F0008091E10080FF19C08091E20080FF15C058 +:101800008091E2008E7F8093E2008091E20080610F +:101810008093E2008091D80080628093D80019BC48 +:1018200085E08093E6010E9426088091E10084FF14 +:1018300030C08091E20084FF2CC080E189BD82E14C +:1018400089BD09B400FEFDCF8091D8008F7D8093C3 +:10185000D8008091E1008F7E8093E1008091E200CA +:101860008F7E8093E2008091E20081608093E200AD +:101870008091E201882311F084E007C08091E300A9 +:1018800087FD02C081E001C083E08093E6010E94F1 +:1018900028088091E10083FF29C08091E20083FF46 +:1018A00025C08091E100877F8093E10082E08093F2 +:1018B000E6011092E2018091E1008E7F8093E100C9 +:1018C0008091E2008E7F8093E2008091E20080614F +:1018D0008093E20042E060E080E00E94B40A8091E0 +:1018E000F00088608093F0000E942508FF91EF913E +:1018F000BF91AF919F918F917F916F915F914F9128 +:101900003F912F910F900FBE0F901F9018951F922F +:101910000F920FB60F9211242F933F934F935F9323 +:101920006F937F938F939F93AF93BF93CF93DF93E7 +:10193000EF93FF93C091E900CF708091EC00D82F16 +:10194000D17080FDD0E81092E9008091F000877F8F +:101950008093F00078940E94CB0C1092E900809163 +:10196000F00088608093F000CD2BCF70C093E90029 +:10197000FF91EF91DF91CF91BF91AF919F918F91A7 +:101980007F916F915F914F913F912F910F900FBE7B +:101990000F901F9018951F93CF93DF93CDB7DEB7AD +:1019A000AA970FB6F894DEBF0FBECDBFE7EEF1E009 +:1019B00088E08E0F9091F10091938E13FBCF0E94DF +:1019C00044088091E80083FF1FC18091E701909156 +:1019D000E801492F50E04A30510508F015C1FA01DD +:1019E000EA5AFF4F0C94BF22803881F0823809F008 +:1019F0000BC18091EB018F708093E9008091EB0027 +:101A000085FB882780F91092E90006C08091E301E8 +:101A10009091E401911182609091E800977F9093FA +:101A2000E8008093F1001092F100C8C0282F2D7FAC +:101A300009F0EAC0882319F0823061F0E5C0809196 +:101A4000E901813009F0E0C0933009F080E0809333 +:101A5000E4012BC08091E901811127C08091EB0145 +:101A60008F7009F4D1C08093E9002091EB0020FF32 +:101A70001CC0933021F48091EB00806214C09091DF +:101A8000EB0090619093EB0021E030E0A90102C0EF +:101A9000440F551F8A95E2F74093EA001092EA003E +:101AA0008091EB0088608093EB001092E9008091B8 +:101AB000E800877F86C08111A7C01091E9011F77D8 +:101AC0008091E3008078812B8093E3008091E8008F +:101AD000877F8093E8000E94E90A8091E80080FFF8 +:101AE000FCCF8091E30080688093E300111102C075 +:101AF00082E001C083E08093E60186C08058823096 +:101B000008F082C08091E9019091EA018C3D53E098 +:101B1000950779F583E08A838AE289834FB7F89441 +:101B2000DE01139620E03EE051E2E32FF0E0509317 +:101B30005700E49120FF03C0E295EF703F5FEF7024 +:101B40008E2F90E0EA3010F0C79601C0C0968D93BA +:101B50009D932F5F243149F74FBF8091E800877F25 +:101B60008093E8006AE270E0CE0101960E94F009DD +:101B700014C0AE014F5F5F4F6091EB010E943709C7 +:101B8000BC01892B09F440C09091E800977F9093A5 +:101B9000E80089819A810E94530A8091E8008B773E +:101BA0008093E80031C0803879F58091E800877F24 +:101BB0008093E8008091E2018093F1008091E80039 +:101BC0008E778093E8000E94E90A1EC081111CC034 +:101BD0009091E9019230C0F48091E800877F809372 +:101BE000E8009093E2010E94E90A8091E2018111EC +:101BF00006C08091E30087FD02C081E001C084E05F +:101C00008093E6010E9430088091E80083FF0AC0BB +:101C10008091E800877F8093E8008091EB008062EC +:101C20008093EB00AA960FB6F894DEBF0FBECDBF2F +:101C3000DF91CF911F9108950895CF938091E60190 +:101C40008823A1F0C091E900CF709091EC00892F1A +:101C5000817090FD80E8C82B1092E9008091E80027 +:101C600083FD0E94CB0CCF70C093E900CF91089503 +:101C700090936901809368010895E0916801F09163 +:101C80006901309721F00190F081E02D099480E006 +:101C90000895E0916801F0916901309721F0028088 +:101CA000F381E02D09940895E0916801F0916901B4 +:101CB000309721F00480F581E02D0994089520915A +:101CC0006601309167018217930771F09093670165 +:101CD00080936601E0916801F0916901309721F0ED +:101CE0000680F781E02D09940895209164013091D8 +:101CF00065018217930771F09093650180936401E9 +:101D0000E0916801F0916901309721F00084F1853C +:101D1000E02D0994089508950C948B0E0E94881A62 +:101D20000E940E040C944E1BCF92DF92EF92FF9212 +:101D30000F931F93CF93DF93CDB7DEB72B970FB6DB +:101D4000F894DEBF0FBECDBF0E9426048BE6C82EDE +:101D500081E0D82E00E010E0E02E802F0E941405D4 +:101D6000F60141916F01F42EF826B1F40F5F1F4F79 +:101D70000E30110589F78FEF89838A831B820E94B9 +:101D8000911A8160782F9D838C8349815A816B8160 +:101D90008D810E94370F40C09091CD0191FF04C00A +:101DA0008B870E941A058B8520E030E04F2D50E094 +:101DB000922FBA01022E02C0759567950A94E2F738 +:101DC00060FF24C02E83EF8221E030E0690102C071 +:101DD000CC0CDD1C9A95E2F790E08C219D21892B9B +:101DE00009F420E028870E94911A8160782F9A8751 +:101DF00089874E815F8168858A850E94370FF80147 +:101E0000E559FE4F8081C826C08206C02F5F3F4F34 +:101E10002630310569F6AACF0E94351E10916A015D +:101E20000E943D0E1817A1F00E943D0E80936A019A +:101E30002B960FB6F894DEBF0FBECDBFDF91CF91CA +:101E40001F910F91FF90EF90DF90CF900C9433078C +:101E50002B960FB6F894DEBF0FBECDBFDF91CF91AA +:101E60001F910F91FF90EF90DF90CF900895CF9347 +:101E7000DF93CDB7DEB72B970FB6F894DEBF0FBE5A +:101E8000CDBF4F83588769877A878B87DE0111968C +:101E900086E0FD0111928A95E9F785E0FE0137960B +:101EA00001900D928A95E1F749815A816B817C817D +:101EB0008D819E810E9458162B960FB6F894DEBF36 +:101EC0000FBECDBFDF91CF9108950895CF938823A2 +:101ED00009F4C2C0C82F823859F40E943D0E81FD1A +:101EE000BBC089E30E94F4180E94C11989E30CC0A9 +:101EF000833879F40E943D0E80FDAEC083E50E94D8 +:101F0000F4180E94C11983E50E943619CF910C94F0 +:101F1000C119843859F40E943D0E82FD9DC087E4AA +:101F20000E94F4180E94C11987E4EECF8CEF8C0F49 +:101F3000813A48F48C2F0E947B2081118DC08C2F18 +:101F40000E94F418E3CF80E28C0F883048F4C77009 +:101F500081E001C0880FCA95EAF70E947A19D6CFAE +:101F60008BE58C0F833078F4C53A29F0C63A31F00E +:101F700083E890E005C081E890E002C082E890E04C +:101F8000CF910C945F0E88E58C0F833108F064C00C +:101F9000C83A39F1C93A41F1CA3A49F1CB3A51F15B +:101FA000CC3A59F1CD3A61F1C03B69F1CE3A71F1C9 +:101FB000CF3A79F1C13B81F1C23B89F1C33B91F149 +:101FC000C43B99F1C53BA1F1C63BA9F1C73BB1F1B7 +:101FD000C83BB9F1C93BC1F1CA3BC9F180E090E00F +:101FE00038C082EE90E035C089EE90E032C08AEED3 +:101FF00090E02FC085EB90E02CC086EB90E029C0EC +:1020000087EB90E026C08CEC90E023C08DEC90E054 +:1020100020C083E891E01DC08AE891E01AC082E9FF +:1020200091E017C084E991E014C081E292E011C010 +:1020300083E292E00EC084E292E00BC085E292E07F +:1020400008C086E292E005C087E292E002C08AE220 +:1020500092E0CF910C94750ECF910895882309F4E6 +:102060004BC0823859F40E943D0E81FF45C089E380 +:102070000E94F4180E94C11989E30CC0833871F4DE +:102080000E943D0E80FF38C083E50E94F4180E9434 +:10209000C11983E50E9436190C94C119843859F48A +:1020A0000E943D0E82FF28C087E40E94F4180E941F +:1020B000C11987E4EFCF9CEF980F913A58F390E263 +:1020C000980F983050F4877091E001C0990F8A956D +:1020D000EAF7892F0E948019DFCF9BE5980F933094 +:1020E00020F480E090E00C945F0E885A833120F455 +:1020F00080E090E00C94750E0895882321F00E94F2 +:102100007A190C94C1190895882321F00E9480192E +:102110000C94C1190895BF92CF92DF92EF92FF9273 +:102120000F931F93CF93DF9300D000D000D0CDB793 +:10213000DEB725E0FC01DE01119601900D922A9593 +:10214000E1F7FC01D08011810281258122952F7059 +:1021500043815481452B09F4EDC21F3F21F4FFEF69 +:10216000DF1609F4E7C27C012E830E94650FD98235 +:102170001A8389819A810E94B318182FB92E0E9460 +:10218000B2180E9479172E81002319F00E94971926 +:102190002E81EB2DE295EF70F0E0E05AFF4F0C94AA +:1021A000BF228B2D807F9B2D9F70F92E882319F0E5 +:1021B000F29480EFF822002349F0FF2009F467C26F +:1021C0008F2D0E948A190E94C11961C2812F0E941D +:1021D0002E10FF2009F4AEC28F2D0E949019269672 +:1021E0000FB6F894DEBF0FBECDBFDF91CF911F9128 +:1021F0000F91FF90EF90DF90CF90BF900C94C1199A +:102200003B2D307F8B2D8F70303211F08295807F87 +:10221000112319F0113021F12CC00023B9F0222331 +:1022200009F4A0C1213009F09DC126960FB6F8949B +:10223000DEBF0FBECDBFDF91CF911F910F91FF90F9 +:10224000EF90DF90CF90BF900C94AA19222319F041 +:10225000213009F46FC28E830E94AD198E8196C120 +:10226000002321F0223008F065C27CC1211162C236 +:102270008DC1002321F0222309F474C108C2222356 +:1022800009F484C119C22B2D26952695237030E0C0 +:102290002115310521F021303105D1F04BC2002349 +:1022A00021F0812F9B2D937002C080E090E0269654 +:1022B0000FB6F894DEBF0FBECDBFDF91CF911F9157 +:1022C0000F91FF90EF90DF90CF90BF900C945F0E36 +:1022D000002321F0812F9B2D937002C080E090E0BD +:1022E00026960FB6F894DEBF0FBECDBFDF91CF911B +:1022F0001F910F91FF90EF90DF90CF90BF900C94C3 +:10230000750E812F002319F00E943D1D02C00E940E +:10231000A51D26960FB6F894DEBF0FBECDBFDF9188 +:10232000CF911F910F91FF90EF90DF90CF90BF90D2 +:102330000C942A1E8B2D837009F07BC00111FAC109 +:10234000812F829586958770880F880F912F9F70B7 +:10235000C92ED12CE12CF12C082E04C0CC0CDD1C94 +:10236000EE1CFF1C0A94D2F714FF12C04FE050E09D +:1023700060E070E004C0440F551F661F771F8A9508 +:10238000D2F7CB01BA01609570958095909503C006 +:1023900060E070E0CB012B2D269526952370422F0F +:1023A00050E042305105D9F04330510569F16C29B4 +:1023B0007D298E299F294130510551F126960FB66E +:1023C000F894DEBF0FBECDBFDF91CF911F910F916B +:1023D000FF90EF90DF90CF90BF900C94A0176C29E6 +:1023E0007D298E299F2926960FB6F894DEBF0FBE51 +:1023F000CDBFDF91CF911F910F91FF90EF90DF90B4 +:10240000CF90BF900C94BC170E94A017C701B601D3 +:1024100026960FB6F894DEBF0FBECDBFDF91CF91E9 +:102420001F910F91FF90EF90DF90CF90BF900C9491 +:102430008417002319F08B2D817001C086958823A5 +:1024400009F478C1812F829586958770880F880F4F +:10245000912F9F70C92ED12CE12CF12C082E04C095 +:10246000CC0CDD1CEE1CFF1C0A94D2F714FF12C02A +:102470004FE050E060E070E004C0440F551F661F5D +:10248000771F8A95D2F7CB01BA0160957095809538 +:10249000909503C060E070E0CB012B2D269526952A +:1024A0002370422F50E042305105D9F0433051059E +:1024B00069F16C297D298E299F294130510551F1FF +:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139 +:1024D0001F910F91FF90EF90DF90CF90BF900C94E1 +:1024E0007A186C297D298E299F2926960FB6F89493 +:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037 +:10250000EF90DF90CF90BF900C9496180E947A18AD +:10251000C701B60126960FB6F894DEBF0FBECDBF39 +:10252000DF91CF911F910F91FF90EF90DF90CF90AF +:10253000BF900C945E18103FD1F118F4103E50F487 +:10254000A1C0123F09F463C008F44CC0133F09F462 +:1025500073C098C01F708B2D8F710023A1F00E9453 +:10256000F717812F26960FB6F894DEBF0FBECDBFAA +:10257000DF91CF911F910F91FF90EF90DF90CF905F +:10258000BF900C947D100E941818812F26960FB6CC +:10259000F894DEBF0FBECDBFDF91CF911F910F9199 +:1025A000FF90EF90DF90CF90BF900C9484100023A9 +:1025B000A9F02111BFC08B2D8F7126960FB6F8940C +:1025C000DEBF0FBECDBFDF91CF911F910F91FF9066 +:1025D000EF90DF90CF90BF900C943D18223008F020 +:1025E000A9C0E9CF0023A9F08B2D8F7126960FB6D5 +:1025F000F894DEBF0FBECDBFDF91CF911F910F9139 +:10260000FF90EF90DF90CF90BF900C94F7170023CE +:1026100059F38B2D8F7126960FB6F894DEBF0FBE3F +:10262000CDBFDF91CF911F910F91FF90EF90DF9081 +:10263000CF90BF900C941818002399F08B2D8F71B8 +:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7 +:102650001F910F91FF90EF90DF90CF90BF900C945F +:10266000E21726960FB6F894DEBF0FBECDBFDF91FE +:10267000CF911F910F91FF90EF90DF90CF90BF907F +:102680000C94D8170023A9F0222309F4ADCF812F91 +:1026900026960FB6F894DEBF0FBECDBFDF91CF9167 +:1026A0001F910F91FF90EF90DF90CF90BF900C940F +:1026B000660F222309F4ADCF812F26960FB6F8942A +:1026C000DEBF0FBECDBFDF91CF911F910F91FF9065 +:1026D000EF90DF90CF90BF900C942E104B2D4F7049 +:1026E000612FC7010E94AE0226960FB6F894DEBF96 +:1026F0000FBECDBFDF91CF911F910F91FF90EF9053 +:10270000DF90CF90BF900C94FC164B2D4F70612F33 +:10271000C70126960FB6F894DEBF0FBECDBFDF917E +:10272000CF911F910F91FF90EF90DF90CF90BF90CE +:102730000C94DA0526960FB6F894DEBF0FBECDBF17 +:10274000DF91CF911F910F91FF90EF90DF90CF908D +:10275000BF9008950E9497190E94A7190E946C19B2 +:102760000E94C1190E94DA1E0E942A1E80E090E099 +:102770000E945F0E80E090E00C94750E0E94871915 +:102780000C94AA130E94B318292F22952F7030E0C1 +:102790002C3031054CF42A3031056CF422503109CB +:1027A0002230310588F407C02C30310549F02F3034 +:1027B000310531F009C0803E48F0803F29F406C061 +:1027C00093FB882780F9089580E0089581E00895BB +:1027D000CF93DF9300D000D01F92CDB7DEB70F901C +:1027E0000F900F900F900F90DF91CF910895CF939E +:1027F000DF9300D000D000D0CDB7DEB726960FB65D +:10280000F894DEBF0FBECDBFDF91CF9108951F9327 +:10281000CF93DF93C091790116E080917A01C817B8 +:1028200099F0D0E01C9FF0011D9FF00D1124E55898 +:10283000FE4F4081518162817381848195810E9424 +:10284000F7132196C770E9CFDF91CF911F910895BB +:102850004091AB015091AC016091AD017091AE011E +:102860008091AF019091B0010C94F7138091B00169 +:1028700082958F7009F054C08091AD01882309F4CE +:102880004FC080917901A0917A016091AB01709164 +:10289000AC014091AE015091AF01B6E08A1709F446 +:1028A0003FC090E041155105C1F17F3F11F46F3FEA +:1028B000A1F1B89FF001B99FF00D1124E558FE4F2A +:1028C000218172132AC02081621327C02281211125 +:1028D00024C0238134812417350710F42150310995 +:1028E000241B350B283C3105C0F42091B0012F701A +:1028F00020612093B00126E0289FF001299FF00D70 +:102900001124E058FE4F80818F70806180838BEAB4 +:1029100091E00E948B100C94071401968770BECF33 +:102920000895CF92DF92EF92FF920F931F93CF9370 +:10293000DF93CDB7DEB762970FB6F894DEBF0FBE58 +:10294000CDBF8C0185E0F801DE011D9601900D924E +:102950008A95E1F7D8014C9111965C9111971296E6 +:102960006C9112971396CD90DC9014973091AB0137 +:102970007091AC018091AE019091AF01009709F484 +:102980006BC17F3F19F43F3F09F466C1E090AD0190 +:10299000EE2009F4C0C02091B001C816D90628F075 +:1029A000F601E81BF90BCF0104C0809590958C0DC2 +:1029B0009D1DFF24F394883C910578F0F12C207F35 +:1029C00009F0C6C07C2DD98AC88A89890E94E8137B +:1029D0008BEA91E00E948B10B1C0822F807F09F0BA +:1029E00046C0751314C0341312C0611110C02F708B +:1029F00020612093B0010E9428148BEA91E00E948C +:102A00008B108091B001D80115968C932EC0CD28E3 +:102A100019F15F3F11F44F3FF9F0F62E61111CC020 +:102A20008091790120917A0136E0821709F45AC029 +:102A300090E0389FF001399FF00D1124E558FE4FCA +:102A40007181571306C07081471303C072817111E1 +:102A500003C001968770E9CFF62E662309F418C1EA +:102A60008091B00181608093B001F12C11C1751388 +:102A700008C0341306C0611104C08091B001D801B0 +:102A8000C3C04D875E878D859E856A8B0E94C21369 +:102A90006A898823E1F16623D1F12091B001822F68 +:102AA00082958F7090E0029774F08091AB019091C5 +:102AB000AC0198878F831986DB86CA862C87CE0166 +:102AC00007960E948B1086E0F801ABEAB1E0019016 +:102AD0000D928A95E1F70E9436140E942814FF2473 +:102AE000F394D6C04D875E878D859E850E94B3186E +:102AF000292F22952F7030E0223031050CF0BCC018 +:102B00009F7009F0B6C0805E883008F4C1C0C8016B +:102B10000E948B10E4CFC816D90608F453C0F60102 +:102B2000E81BF90BCF01883C910508F450C0F12C4B +:102B30007C2DD98AC88A89890E94E813EBEAF1E0E2 +:102B400086E0DF011D928A95E9F70E942814A0C053 +:102B5000751314C0341312C0611110C08091B001FC +:102B6000F8018583C8010E948B1086E0EBEAF1E052 +:102B7000DF011D928A95E9F7FE2C8AC04D875E879A +:102B80008D859E856A8B0E94C2136A89882309F409 +:102B9000BECF662309F4BBCF2091B001822F82956E +:102BA0008F7090E002970CF48ECF8091AB019091E2 +:102BB000AC019A8389831B82DD82CC822E83CE0175 +:102BC00001967FCF809590958C0D9D1DACCFF62EF4 +:102BD000662309F49CCF75132EC034132CC02091AA +:102BE000B00120FD1FC0822F82958F70D9F0D801CF +:102BF00015962C9315978F3049F08F5F982F9295EB +:102C0000907F822F8F70892B15968C93C8010E941C +:102C10008B1086E0F801ABEAB1E001900D928A9545 +:102C2000E1F793CF86E0F801ABEAB1E001900D92B5 +:102C30008A95E1F72DC04D875E878D859E850E9420 +:102C4000C213811140CF8091B00181608093B001A7 +:102C5000C8010E948B101CC0662309F458CF4D8711 +:102C60005E878D859E850E94C213882309F44FCF0D +:102C70002ACF811148CF0CC0243031050CF047CF4A +:102C80009F7009F440CFF8019581907F09F03BCF08 +:102C90008F2D62960FB6F894DEBF0FBECDBFDF91C9 +:102CA000CF911F910F91FF90EF90DF90CF900895FB +:102CB0001F93CF93DF93CDB7DEB72C970FB6F89461 +:102CC000DEBF0FBECDBF4F83588769877A878B875A +:102CD0009C87CE0107960E949114882369F08F810A +:102CE00098852A853B85232BF1F19F3F09F063C02E +:102CF0008F3F09F060C037C086E0FE013796DE01E5 +:102D0000119601900D928A95E1F76F817885EA8599 +:102D1000FB85309741F17F3F11F46F3F21F1209106 +:102D20007A0130E0C90101968770992740917901B5 +:102D300050E08417950709F447C069837A83FD83BF +:102D4000EC8396E0929FD001939FB00D1124A5587B +:102D5000BE4FFE01319601900D929A95E1F7809356 +:102D60007A010E94071416E08091790190917A010E +:102D70008917C1F1189FC001112485589E4F0E94E8 +:102D80009114882379F1E09179011E9FF0011124BB +:102D9000E558FE4F40815181628173818481958124 +:102DA0000E94F7138091790190E00196877099272E +:102DB00080937901D9CF4F81588569857A858B8534 +:102DC0009C850E94F713CFCF0E94BE1310927A0108 +:102DD00010927901EBEAF1E086E0DF011D928A951D +:102DE000E9F7C1CF2C960FB6F894DEBF0FBECDBF6A +:102DF000DF91CF911F910895EF92FF920F931F9350 +:102E0000CF93DF938C01892B09F46CC0F12CEE2455 +:102E1000E394E8012196F8018491843740F48430EA +:102E200008F051C0813081F0823019F15BC08537E4 +:102E300009F444C0A8F19CE7980F903708F052C0FD +:102E40008F770E942E1041C00E5F1F4FFE01C4916C +:102E500080E28C0F883048F4C7708E2D01C0880F37 +:102E6000CA95EAF70E949A1914C08C2F0E94660F27 +:102E70002DC00E5F1F4FFE01C49180E28C0F883081 +:102E800058F4C7708E2D01C0880FCA95EAF70E94CA +:102E9000A0190E94C1191AC08C2F0E942E1016C0B2 +:102EA0000E5F1F4FFE01C491CC2381F08FE99FE09C +:102EB0000197F1F700C00000C150F6CF0E5F1F4F21 +:102EC000FE01F49003C00E94660F8E018F2D8823AF +:102ED00009F49FCFEFE9FFE03197F1F700C0000060 +:102EE0008150F5CFDF91CF911F910F91FF90EF901F +:102EF000089508956093B5017093B6018093B7016A +:102F00009093B8010C94AA130F931F930091B501ED +:102F10001091B6012091B7013091B801DC01CB01CD +:102F2000802B912BA22BB32B8093B5019093B601EC +:102F3000A093B701B093B8011F910F910C94AA13FD +:102F40000F931F930091B5011091B6012091B70125 +:102F50003091B801DC01CB0180239123A223B3235C +:102F60008093B5019093B601A093B701B093B801D7 +:102F70001F910F910C94AA130F931F930091B50109 +:102F80001091B6012091B7013091B801DC01CB015D +:102F900080279127A227B3278093B5019093B6018C +:102FA000A093B701B093B8011F910F910C94AA138D +:102FB0001092B1011092B2011092B3011092B401BB +:102FC0000C94AA1341E050E060E070E004C0440FAC +:102FD000551F661F771F8A95D2F74093B101509312 +:102FE000B2016093B3017093B4010C94AA1341E051 +:102FF00050E060E070E004C0440F551F661F771F6B +:103000008A95D2F78091B1019091B201A091B3015C +:10301000B091B401482B592B6A2B7B2B4093B10103 +:103020005093B2016093B3017093B4010C94AA134E +:1030300041E050E060E070E004C0440F551F661F9F +:10304000771F8A95D2F7409550956095709580913D +:10305000B1019091B201A091B301B091B4014823A4 +:1030600059236A237B234093B1015093B2016093AB +:10307000B3017093B4010C94AA1341E050E060E0F6 +:1030800070E004C0440F551F661F771F8A95D2F762 +:103090008091B1019091B201A091B301B091B401BE +:1030A000482759276A277B274093B1015093B201E3 +:1030B0006093B3017093B4010C94AA130F931F9300 +:1030C0000091B1011091B2012091B3013091B4018E +:1030D000DC01CB01802B912BA22BB32B8093B10170 +:1030E0009093B201A093B301B093B4011F910F91DB +:1030F0000C94AA130F931F930091B1011091B20188 +:103100002091B3013091B401DC01CB0180239123E4 +:10311000A223B3238093B1019093B201A093B30192 +:10312000B093B4011F910F910C94AA130F931F93A6 +:103130000091B1011091B2012091B3013091B4011D +:10314000DC01CB0180279127A227B3278093B1010F +:103150009093B201A093B301B093B4011F910F916A +:103160000C94AA130895CF92DF92EF92FF920F93DF +:103170001F93CF93DF938C01C090B501D090B6011F +:10318000E090B701F090B8014091B1015091B201C7 +:103190006091B3017091B401C42AD52AE62AF72AB6 +:1031A000CFE1D0E0D701C6010C2E04C0B695A7959B +:1031B000979587950A94D2F780FF07C0B8018C2FA6 +:1031C0000E94FD058130910531F4219758F7B8012F +:1031D00080E00E94FD05DF91CF911F910F91FF903C +:1031E000EF90DF90CF90089590910C01992321F0FA +:1031F00090910D01911109C020910E0130910F01A4 +:10320000F90132969FEF40E01FC0982F9695969552 +:1032100096959F3050F5E0910E01F0910F01E90F66 +:10322000F11D877021E030E0A90102C0440F551F55 +:103230008A95E2F7CA019181892B818308959F3F86 +:1032400039F04F5F4E3041F051915813F8CF0DC017 +:103250005111F7CF942FF5CF9F3F39F0F901E90FC6 +:10326000F11D97FDFA9582830895089590910C01C0 +:10327000992321F090910D01911109C020910E0127 +:1032800030910F01F9013296205F3F4F1FC0982FF8 +:103290009695969596959F30F0F4E0910E01F091F9 +:1032A0000F01E90FF11D877021E030E0A90102C094 +:1032B000440F551F8A95E2F7CA01809591818923B1 +:1032C000818308953196E217F30729F090819813CE +:1032D000F9CF1082F7CF089581E090E0E0910E01E0 +:1032E000F0910F01E80FF91F1082019680319105CE +:1032F000A9F708959091CC01892B8093CC01089572 +:1033000080959091CC0189238093CC0108951092EF +:10331000CC0108959091CB01892B8093CB01089526 +:1033200080959091CB0189238093CB0108951092D1 +:10333000CB0108959091CA01892B8093CA01089509 +:1033400080959091CA0189238093CA0108951092B3 +:10335000CA0108958093B90108951092B9010895A2 +:1033600080910E0190910F01FC0131969C01205F2C +:103370003F4F80E0919191118F5FE217F307D1F7F2 +:103380000895E0910E01F0910F018091CC018083AE +:10339000E0910E01F0910F0190818091CB01892B7A +:1033A0008083E0910E01F0910F0190818091CA011C +:1033B000892B80838091B901882361F0E0910E010F +:1033C000F0910F019081892B80830E94B0198111A7 +:1033D0001092B90180910E0190910F010C94490E49 +:1033E000CF92DF92EF92FF926C01EE24FF24C11482 +:1033F000D104E104F10421F0C701B60120E101C0CC +:1034000020E0C72ED82EE92EFF24C114D104E104F8 +:10341000F10419F0285FC701B6016B017C0154E08B +:10342000F694E794D794C7945A95D1F7C114D10470 +:10343000E104F10419F02C5FC701B6016B017C01B6 +:1034400042E0F694E794D794C7944A95D1F7C11413 +:10345000D104E104F10419F02E5FC701B601DC01CB +:10346000CB01B695A79597958795892B8A2B8B2BA2 +:1034700009F02F5F822FFF90EF90DF90CF9008959B +:103480008091E601843039F11092CE0120E488E188 +:1034900090E00FB6F894A895809360000FBE20933B +:1034A000600080E00E94330783B7817F846083BF20 +:1034B00083B7816083BF7894889583B78E7F83BFFD +:1034C0000FB6F894A89580916000886180936000A1 +:1034D000109260000FBE089508950895CF930E9442 +:1034E0006C1A0E9426040E946D1AC0E08C2F0E9464 +:1034F0001405811104C0CF5FCE30C1F701C081E057 +:10350000CF9108950E94BE130E943D0E0C94330784 +:1035100082E084BD93E095BD9AEF97BD80936E00E5 +:1035200008952FB7F8948091CF019091D001A09188 +:10353000D101B091D2012FBF0895CF92DF92EF92C7 +:10354000FF920F931F932FB7F8944091CF015091A2 +:10355000D0016091D1017091D2012FBF6A017B012E +:10356000EE24FF248C0120E030E0C016D106E206F4 +:10357000F30610F4415051099A01281B390BC90177 +:103580001F910F91FF90EF90DF90CF9008951F92C1 +:103590000F920FB60F9211248F939F93AF93BF9307 +:1035A0008091CF019091D001A091D101B091D20131 +:1035B0000196A11DB11D8093CF019093D001A093DE +:1035C000D101B093D201BF91AF919F918F910F9094 +:1035D0000FBE0F901F9018950E943A0BF8942FEF92 +:1035E00087EA91E6215080409040E1F700C000005A +:1035F00087E090EBDC018093EF019093F001A093C2 +:10360000F101B093F2019CE088E10FB6F894A8951F +:10361000809360000FBE90936000FFCFEF92FF9207 +:103620000F931F93CF93DF93D82FC0E08C2F0E946E +:10363000140500E010E0E82EF12CC701002E02C0B6 +:10364000959587950A94E2F780FD06C00F5F1F4F9E +:103650000630110591F709C0602F7C2F80E00E9491 +:10366000DB05D813F3CF81E004C0CF5FCE30F1F695 +:1036700080E0DF91CF911F910F91FF90EF9008951F +:10368000CF93C82F8CE20E940E1B882321F08C2F31 +:10369000CF910C940E1B80E0CF910895CF930E94A0 +:1036A000951C811102C00E947B1CC5E6C15049F0E7 +:1036B0000E9426048FE39CE90197F1F700C0000007 +:1036C000F5CF89E20E94401B811113C18AE20E945A +:1036D000401B81110E947B1C85E00E94401B8111D0 +:1036E0000E94EC1A0E94A01C8093CD0187E00E94EA +:1036F000401B8823A9F18BE10E94401B882351F0D5 +:103700008091CD0181FB222720F991E0922790FB47 +:1037100081F90EC08EE00E94401B882361F08091E9 +:10372000CD0182FB222720F991E0922790FB82F9BC +:103730008093CD0115C080E10E94401B9091CD0186 +:10374000882341F093FB222720F981E0822780FB28 +:1037500093F904C0892F809580FB90F99093CD0157 +:103760008091CD010E94A41C0E94B21C8093E001B4 +:1037700080EE0E94401B882341F08091E001982F49 +:10378000909590FB80F98093E00189E30E94401BB3 +:10379000882359F08091E00181FB222720F991E0F4 +:1037A000922790FB81F98093E00182EE0E94401BFA +:1037B000882359F08091E00182FB222720F991E0D3 +:1037C000922790FB82F98093E00186EE0E94401BD5 +:1037D000882359F08091E00183FB222720F991E0B2 +:1037E000922790FB83F98093E00183EE0E94401BB7 +:1037F000882359F08091E00184FB222720F991E091 +:10380000922790FB84F98093E00185E30E94401B9E +:10381000882359F08091E00185FB222720F991E06F +:10382000922790FB85F98093E00181E30E94401B81 +:10383000882359F08091E00186FB222720F991E04E +:10384000922790FB86F98093E00181E10E94401B62 +:10385000882359F08091E00187FB222720F991E02D +:10386000922790FB87F98093E0018091E0010E940C +:10387000B61C8091E00187FB882780F980930D01B9 +:1038800087E20E94401BC82F8EE10E94401B8111DD +:10389000C2608FE10E94401B8111C46080E20E94DF +:1038A000401B8111C86081E20E94401B8111C061F0 +:1038B00082E20E94401B8111C06283E20E94401B91 +:1038C0008111C06484E20E94401B882311F0C0680B +:1038D00002C0CC2329F08C2F0E94AD1C6C2F03C09A +:1038E0000E94A91C682F70E080E090E0CF910C94BA +:1038F0007A17CF9108956DEE7EEF80E090E00E9400 +:10390000F52260E082E090E00E94E72260E083E040 +:1039100090E00E94E72260E084E090E00E94E722CD +:1039200060E085E090E00C94E72280E090E00E9467 +:10393000E12221E08D3E9E4F09F020E0822F089584 +:1039400082E090E00C94D922682F82E090E00C9401 +:10395000E72283E090E00C94D922682F83E090E086 +:103960000C94E72284E090E00C94D922682F84E044 +:1039700090E00C94E7228091D50180FF0BC060910C +:10398000130185E0689FB0011124759567957595C1 +:1039900067952BC081FF09C06091130185E0689F86 +:1039A000B00111247595679520C082FF07C0609112 +:1039B000130185E0689FB001112417C09091D601D2 +:1039C0009923D1F060911201961788F72091130185 +:1039D00085E0289F90011124929FA001939F500D94 +:1039E000112470E0CA010E94AB226038710540F4D6 +:1039F0006115710539F002C065E070E0862F089509 +:103A00008FE7089581E008958091D50180FF08C077 +:103A10006091110170E0759567957595679521C066 +:103A200081FF06C06091110170E07595679519C01E +:103A300082FF04C06091110170E010C09091D60126 +:103A40009923C1F0609110019617A0F780911101A0 +:103A5000899FC001112470E00E94AB22603871057B +:103A600028F46115710521F0862F08958FE70895D8 +:103A700081E0089561E070E0F4CF803F21F40E947E +:103A8000BB1C819504C0813F29F40E94BB1C80931C +:103A9000D9010895823F21F40E94BB1C819504C086 +:103AA000833F29F40E94BB1C8093D8010895893F6D +:103AB00019F40E94041D05C08A3F31F40E94041DC0 +:103AC00081958093DA0108958B3F21F40E94041DB3 +:103AD000819504C08C3F29F40E94041D8093DB0172 +:103AE0000895843F21F48091D701816017C0853FFC +:103AF00021F48091D701826011C0863F21F480912A +:103B0000D70184600BC0873F21F48091D701886082 +:103B100005C0883F31F48091D70180618093D7013F +:103B200008958D3F21F48091D50181600BC08E3FB7 +:103B300021F48091D501826005C08F3F29F48091E6 +:103B4000D50184608093D5010895803F39F4809138 +:103B5000D90187FF6CC01092D90169C0813F29F457 +:103B60008091D9011816BCF362C09091D801823FB0 +:103B700029F497FF5CC01092D80159C0833F19F413 +:103B80001916CCF354C0893F41F48091DA0118161C +:103B90000CF04DC01092DA014AC08A3F29F480919E +:103BA000DA0187FF44C0F6CF8B3F39F48091DB0107 +:103BB00087FF3DC01092DB013AC08C3F29F4809111 +:103BC000DB011816BCF333C0843F21F48091D70188 +:103BD0008E7F17C0853F21F48091D7018D7F11C062 +:103BE000863F21F48091D7018B7F0BC0873F21F462 +:103BF0008091D701877F05C0883F31F48091D7013C +:103C00008F7E8093D70113C08D3F21F48091D50121 +:103C10008E7F0BC08E3F21F48091D5018D7F05C032 +:103C20008F3F29F48091D5018B7F8093D5018091BE +:103C3000D80181110EC08091D90181110AC08091F3 +:103C4000DA01811106C08091DB01811102C010925E +:103C5000D601089587ED91E00E94540E0E94911ABA +:103C60009093D4018093D30108951F93CF93DF9352 +:103C70008091D3019091D4010E949D1AAC01909142 +:103C8000D601992321F02091140130E006C0209143 +:103C900015018AE0289F900111244217530708F468 +:103CA00085C08091D801C091D901D091DA011091DD +:103CB000DB01811107C0C11175C0D11173C0111191 +:103CC00071C074C09F3F19F09F5F9093D601181682 +:103CD00024F40E94BB1C8093D8018091D80187FFF7 +:103CE00005C00E94BB1C81958093D8011C1624F44A +:103CF0000E94BB1C8093D9018091D90187FF05C028 +:103D00000E94BB1C81958093D9016091D8016623E4 +:103D100031F1C091D901CC2311F1062E000C770BA3 +:103D2000880B990B0E94B22123E333E343E35FE363 +:103D30000E9416220E947A216093D8016C2FCC0F2A +:103D4000770B880B990B0E94B22123E333E343E303 +:103D50005FE30E9416220E947A216093D9011D160A +:103D600024F40E94041D8093DA018091DA0187FF18 +:103D700005C00E94041D81958093DA01111624F478 +:103D80000E94041D8093DB018091DB0187FF05C049 +:103D90000E94041D81958093DB01DF91CF911F91DB +:103DA0000C942A1E9F3F09F08FCF97CFDF91CF91C0 +:103DB0001F910895E7EDF1E085E0DF011D928A95FE +:103DC000E9F71092D6011092D5010895833081F160 +:103DD00028F4813059F08230D1F00895853009F40B +:103DE00049C0B8F1863009F456C008958091150194 +:103DF000262F30E0280F311D2F3F310524F4680FA6 +:103E00006093150108958FEF8093150108958091B7 +:103E10001401262F30E0280F311D2F3F310524F4E7 +:103E2000680F6093140108958FEF80931401089533 +:103E300080911301262F30E0280F311D2F3F3105CF +:103E400024F4680F6093130108958FEF809313019A +:103E5000089580911201262F30E0280F311D2F3F49 +:103E6000310524F4680F6093120108958FEF809359 +:103E70001201089580911101262F30E0280F311D85 +:103E80002F3F310524F4680F6093110108958FEFDF +:103E900080931101089580911001262F30E0280FA2 +:103EA000311D2F3F310524F4680F609310010895F0 +:103EB0008FEF809310010895833011F128F4813041 +:103EC00049F0823091F00895853081F120F18630FB +:103ED000C1F1089580911501681720F4861B809325 +:103EE0001501089510921501089580911401681725 +:103EF00020F4861B809314010895109214010895F4 +:103F000080911301681720F4861B80931301089594 +:103F100010921301089580911201681720F4861BF6 +:103F20008093120108951092120108958091110159 +:103F3000681720F4861B80931101089510921101D7 +:103F4000089580911001681720F4861B809310015A +:103F500008951092100108950F931F938D3109F465 +:103F60006AC008F03FC08E3009F484C0C0F48730C6 +:103F700009F46DC068F4863009F0B5C08091CD01B8 +:103F8000817F8E7F8093CD0181E08093DD01ACC085 +:103F9000883009F457C08B3009F46AC0A4C0863158 +:103FA00009F466C078F4803109F477C0813109F0F2 +:103FB0009AC00E94BE1390910D0181E089278093E1 +:103FC0000D0156C0893109F453C08B3109F08BC003 +:103FD0008091CD0181FB222720F991E0922790FB6F +:103FE00081F951C0853309F475C048F4873209F46A +:103FF00071C008F45EC0893209F46CC074C08334A7 +:1040000030F48A3308F053C0883391F16CC08334A4 +:1040100009F460C0883409F066C00E94BE130FEF37 +:1040200013ED20E3015010402040E1F700C00000F4 +:104030000E94EC1A1DC00E9434210E943D0E0E9475 +:10404000330716C00E94A01C0E94B21C11C09091A0 +:10405000CD01892F8095817080FB90F929F09660C1 +:1040600098609093CD0140C0997F977F9093CD0148 +:1040700081E03AC08091CD0182FB222720F991E0B6 +:10408000922790FB82F98093CD01992389F3809147 +:10409000CD0181608093CD01EBCF8091CD0183FB79 +:1040A000222720F991E0922790FB83F9ECCF8953E6 +:1040B00001C08D5141E050E060E070E08A019B0159 +:1040C00004C0000F111F221F331F8A95D2F7C901A8 +:1040D000B80104C061E070E080E090E00E947A17CF +:1040E0000E94BE13C5CF80E01F910F91089580E01C +:1040F000089580E00895CF93C82F8091DD0181302D +:1041000079F018F08230E9F187C0E0910E01F0916A +:104110000F018081813169F0823209F07FC009C0CE +:10412000E0910E01F0910F018081813111F0823216 +:1041300061F48C2F0E947720811104C08C2F0E9483 +:10414000AC1F1DC081E090E01AC08C2F0E94792026 +:10415000811114C0C43179F048F4CB3079F0C0310A +:1041600009F060C082E08093DD0108C0C93219F017 +:10417000C83321F057C01092DD0154C081E0817036 +:1041800053C0C93289F118F5C43171F1A8F4C730B0 +:1041900009F046C08AE08093150194E190931401E0 +:1041A00093E0909313018093120188E080931101B2 +:1041B00088E28093100134C0CE51C63088F5EC2FD0 +:1041C000F0E0E65DFE4F80818093DC0129C0CE34B3 +:1041D000E9F020F4CB3421F56AE013C0C13579F061 +:1041E000C235F1F461E00DC08091DC01882319F043 +:1041F0001092DC0115C081E08093DD0115C061E003 +:1042000006C08091DC010E94E61E0AC06AE080912F +:10421000DC010E945C1F04C01092DD0180E004C03C +:1042200081E002C080E0ABCFCF910895E1E8F0E0FB +:104230008081886080838081816080838FB7F894DB +:1042400093E09093890090ED909388008FBF08953C +:10425000EFE6F0E08081826080830895EFE6F0E091 +:1042600080818D7F80830895EFE6F0E0908182E089 +:104270008927808308951F920F920FB60F92112401 +:104280002F933F934F935F936F937F938F939F935E +:10429000AF93BF93EF93FF938091DE019091DF0185 +:1042A00001969093DF018093DE01811103C082E0CB +:1042B0000E943307E091DF01E695E695F0E0E657CE +:1042C000FB4FE4918091DE018E1303C080E00E94D9 +:1042D0003307FF91EF91BF91AF919F918F917F91A4 +:1042E0006F915F914F913F912F910F900FBE0F9063 +:1042F0001F9018950E9481216894B1110C9410228E +:1043000008950E94F52188F09F5798F0B92F9927BA +:10431000B751B0F0E1F0660F771F881F991F1AF0B0 +:10432000BA95C9F714C0B13091F00E940F22B1E0E4 +:1043300008950C940F22672F782F8827B85F39F0E3 +:10434000B93FCCF3869577956795B395D9F73EF449 +:1043500090958095709561957F4F8F4F9F4F0895F1 +:10436000E89409C097FB3EF490958095709561950F +:104370007F4F8F4F9F4F9923A9F0F92F96E9BB27C5 +:104380009395F695879577956795B795F111F8CF41 +:10439000FAF4BB0F11F460FF1BC06F5F7F4F8F4FAC +:1043A0009F4F16C0882311F096E911C0772321F0A2 +:1043B0009EE8872F762F05C0662371F096E8862F3A +:1043C00070E060E02AF09A95660F771F881FDAF791 +:1043D000880F9695879597F9089557FD9058440F43 +:1043E000551F59F05F3F71F04795880F97FB991F54 +:1043F00061F09F3F79F08795089512161306140611 +:10440000551FF2CF4695F1DF08C01616170618069D +:10441000991FF1CF86957105610508940895E89478 +:10442000BB2766277727CB0197F908950E94292299 +:104430000C949A220E948C2238F00E94932220F041 +:10444000952311F00C9483220C94892211240C944E +:1044500010220E94ED2170F3959FC1F3950F50E05B +:10446000551F629FF001729FBB27F00DB11D639F26 +:10447000AA27F00DB11DAA1F649F6627B00DA11DCC +:10448000661F829F2227B00DA11D621F739FB00D72 +:10449000A11D621F839FA00D611D221F749F3327E2 +:1044A000A00D611D231F849F600D211D822F762F7B +:1044B0006A2F11249F5750409AF0F1F088234AF058 +:1044C000EE0FFF1FBB1F661F771F881F91505040C4 +:1044D000A9F79E3F510580F00C9483220C94102282 +:1044E0005F3FE4F3983ED4F3869577956795B7954B +:1044F000F795E7959F5FC1F7FE2B880F911D969565 +:10450000879597F9089597F99F6780E870E060E0D4 +:1045100008959FEF80EC089500240A94161617065C +:1045200018060906089500240A94121613061406A4 +:1045300005060895092E0394000C11F4882352F007 +:10454000BB0F40F4BF2B11F460FF04C06F5F7F4FBF +:104550008F4F9F4F089597FB072E16F4009407D0B6 +:1045600077FD09D00E94C52207FC05D03EF4909546 +:1045700081959F4F0895709561957F4F0895EE0F37 +:10458000FF1F0590F491E02D0994AA1BBB1B51E17C +:1045900007C0AA1FBB1FA617B70710F0A61BB70BB3 +:1045A000881F991F5A95A9F780959095BC01CD0158 +:1045B0000895F999FECF92BD81BDF89A992780B5EB +:1045C0000895A8E1B0E042E050E00C94FC22262FD0 +:1045D000F999FECF1FBA92BD81BD20BD0FB6F894E8 +:1045E000FA9AF99A0FBE019608950E94E722272FA2 +:1045F0000C94E822DC01CB01FC01F999FECF06C046 +:10460000F2BDE1BDF89A319600B40D924150504090 +:08461000B8F70895F894FFCFFC +:1046180020023507C307A0076C0738070101BA0154 +:1046280028080A03140A3F4D36394B04FE03C80311 +:104638008F0322033B0354036D03010203040506A1 +:044648000708090056 +:00000001FF From a3ed43227385a8ab95b13510e0ecf0ffeed96083 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 30 Mar 2016 16:31:46 -0500 Subject: [PATCH 12/14] Drastically rewrote the path script to handle Explorer's stubborn grasp of EnvVars. Tested on Win7. --- 1-setup-path-win.bat | 79 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 11 deletions(-) diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 6957dbc3f4..2c15857bb7 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -1,14 +1,71 @@ -@echo off +@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION +@ECHO OFF +SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe -reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul -echo. +SET NEWPATH1="C:\MinGW\msys\1.0\bin" +SET NEWPATH2="C:\MinGW\bin" -if NOT ["%errorlevel%"]==["0"] ( - echo FAILED. You probably just need to run the script with administrator privileges. -) else ( - echo Success! - setx QMK QMK > nul -) +:: Make sure paths exist +IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch) +IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch) -echo. -pause +:: 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 +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 From 54b0a2bf765033f636d1d8440081f75126dfee81 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 1 Apr 2016 14:44:08 -0400 Subject: [PATCH 13/14] adding files is always smart --- keyboard/preonic/flash-pcb.sh | 3 + keyboard/preonic/keymaps/default/README.md | 34 +++++++ keyboard/preonic/keymaps/default/keymap.c | 96 +++++++++++++++++++ keyboard/preonic/keymaps/lock/README.md | 3 + keyboard/preonic/keymaps/lock/keymap.c | 105 +++++++++++++++++++++ keyboard/preonic/preonic.c | 36 +++++++ keyboard/preonic/preonic.h | 50 ++++++++++ 7 files changed, 327 insertions(+) create mode 100755 keyboard/preonic/flash-pcb.sh create mode 100644 keyboard/preonic/keymaps/default/README.md create mode 100644 keyboard/preonic/keymaps/default/keymap.c create mode 100644 keyboard/preonic/keymaps/lock/README.md create mode 100644 keyboard/preonic/keymaps/lock/keymap.c create mode 100644 keyboard/preonic/preonic.c create mode 100644 keyboard/preonic/preonic.h diff --git a/keyboard/preonic/flash-pcb.sh b/keyboard/preonic/flash-pcb.sh new file mode 100755 index 0000000000..8b59b83f5e --- /dev/null +++ b/keyboard/preonic/flash-pcb.sh @@ -0,0 +1,3 @@ +dfu-programmer atmega32u4 erase --force +dfu-programmer atmega32u4 flash preonic_pcb.hex +dfu-programmer atmega32u4 reset \ No newline at end of file diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md new file mode 100644 index 0000000000..d2f43bbdb8 --- /dev/null +++ b/keyboard/preonic/keymaps/default/README.md @@ -0,0 +1,34 @@ +# 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 diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c new file mode 100644 index 0000000000..392197f1d8 --- /dev/null +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -0,0 +1,96 @@ +// 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[] = { + +}; + +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 + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +void * matrix_init_user(void) { +#ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 9, false); +#endif +} diff --git a/keyboard/preonic/keymaps/lock/README.md b/keyboard/preonic/keymaps/lock/README.md new file mode 100644 index 0000000000..d21cb990b0 --- /dev/null +++ b/keyboard/preonic/keymaps/lock/README.md @@ -0,0 +1,3 @@ +# 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 diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c new file mode 100644 index 0000000000..e253f25819 --- /dev/null +++ b/keyboard/preonic/keymaps/lock/keymap.c @@ -0,0 +1,105 @@ +// 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); +} diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c new file mode 100644 index 0000000000..a678f7b09f --- /dev/null +++ b/keyboard/preonic/preonic.c @@ -0,0 +1,36 @@ +#include "preonic.h" + +__attribute__ ((weak)) +void * matrix_init_user(void) { + +}; + +__attribute__ ((weak)) +void * matrix_scan_user(void) { + +}; + +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); + + if (matrix_init_user) { + (*matrix_init_user)(); + } +}; + +void * matrix_scan_kb(void) { + if (matrix_scan_user) { + (*matrix_scan_user)(); + } +}; diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h new file mode 100644 index 0000000000..42d2123290 --- /dev/null +++ b/keyboard/preonic/preonic.h @@ -0,0 +1,50 @@ +#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 +#ifdef MIDI_ENABLE + #include +#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); + +#endif From ad3ec12fb62b67fa2a69f3950a073fafc22be8f4 Mon Sep 17 00:00:00 2001 From: tak3over Date: Fri, 1 Apr 2016 15:26:09 -0500 Subject: [PATCH 14/14] Create tak3over.c Custom keymap with an additional function layer for numpad, pgup, pgdn, del, ins, home, end, and additional arrow keys. --- keyboard/planck/keymaps/tak3over.c | 136 +++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 keyboard/planck/keymaps/tak3over.c diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c new file mode 100644 index 0000000000..c49af7d0e7 --- /dev/null +++ b/keyboard/planck/keymaps/tak3over.c @@ -0,0 +1,136 @@ +// 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. +// +// Custom style by tak3over. Dropped the dvorak layer as it was not being used by me. Shifted over +// keys to make room for a second function key on the left side. Now has a keypad and most all +// standard keyboard keys. Including Delete. See TK layer. + +#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 _TK 2 +#define _LW 3 +#define _RS 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 | TK |Raise | Space |Lower | 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(_TK), 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 | TK |Raise | Space |Lower | 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(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* TenKey, Arrow, and Function key Layer + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | Left | Up | Down | Right| Del | * | 4 | 5 | 6 | + | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Home | PGUP | PGDN | End | Ins | . | 1 | 2 | 3 | - |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_TK] = { + {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_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_DEL, KC_ASTR, KC_4, KC_5, KC_6, KC_PLUS, KC_SLSH}, + {KC_LSFT, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_INS, KC_DOT, KC_1, KC_2, KC_3, KC_MINS, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), 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 |Qwerty|Colemk|Brite | Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_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_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), 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} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Brite | Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_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), M(0), 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[] = { + +}; + +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; +};