diff options
121 files changed, 19230 insertions, 5393 deletions
diff --git a/.gitignore b/.gitignore index 49eb2d5587..1e19ce9a87 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ tags build/ *.bak .vagrant/ +.DS_STORE
\ No newline at end of file diff --git a/HAND-WIRE.md b/HAND-WIRE.md new file mode 100644 index 0000000000..3f4d75b272 --- /dev/null +++ b/HAND-WIRE.md @@ -0,0 +1,323 @@ +# Quantum Hand-wiring Guide + +Parts list: +* *x* keyswitches (MX, Matias, Gateron, etc) +* *x* diodes +* Keyboard plate (metal, plastic, cardboard, etc) +* Wire (strained for wiring to the Teensy, anything for the rows/columns) +* Soldering iron set at 600ºF or 315ºC (if temperature-controlled) +* Resin-cored solder (leaded or lead-free) +* Adequate ventilation/a fan +* Tweezers (optional) +* Wire cutters/snippers + +## How the matrix works (why we need diodes) + +The microcontroller (in this case, the Teensy 2.0) will be setup up via the firmware to send a logical 1 to the columns, one at a time, and read from the rows, all at once - this process is called matrix scanning. The matrix is a bunch of open switches that, by default, don't allow any current to pass through - the firmware will read this as no keys being pressed. As soon as you press one key down, the logical 1 that was coming from the column the keyswitch is attached to gets passed through the switch and to the corresponding row - check out the following 2x2 example: + + Column 0 being scanned Column 1 being scanned + x x + col0 col1 col0 col1 + | | | | + row0 ---(key0)---(key1) row0 ---(key0)---(key1) + | | | | + row1 ---(key2)---(key3) row1 ---(key2)---(key3) + +The `x` represents that the column/row associated has a value of 1, or is HIGH. Here, we see that no keys are being pressed, so no rows get an `x`. For one keyswitch, keep in mind that one side of the contacts is connected to its row, and the other, its column. + +When we press `key0`, `col0` gets connected to `row0`, so the values that the firmware receives for that row is `0b01` (the `0b` here means that this is a bit value, meaning all of the following digits are bits - 0 or 1 - and represent the keys in that column). We'll use this notation to show when a keyswitch has been pressed, to show that the column and row are being connected: + + Column 0 being scanned Column 1 being scanned + x x + col0 col1 col0 col1 + | | | | + x row0 ---(-+-0)---(key1) row0 ---(-+-0)---(key1) + | | | | + row1 ---(key2)---(key3) row1 ---(key2)---(key3) + +We can now see that `row0` has an `x`, so has the value of 1. As a whole, the data the firmware receives when `key0` is pressed is + + col0: 0b01 + col1: 0b00 + │└row0 + └row1 + +A problem arises when you start pressing more than one key at a time. Looking at our matrix again, it should become pretty obvious: + + Column 0 being scanned Column 1 being scanned + x x + col0 col1 col0 col1 + | | | | + x row0 ---(-+-0)---(-+-1) x row0 ---(-+-0)---(-+-1) + | | | | + x row1 ---(key2)---(-+-3) x row1 ---(key2)---(-+-3) + + Remember that this ^ is still connected to row1 + +The data we get from that is: + + col0: 0b11 + col1: 0b11 + │└row0 + └row1 + +Which isn't accurate, since we only have 3 keys pressed down, not all 4. This behavior is called ghosting, and only happens in odd scenarios like this, but can be much more common on a bigger keyboard. The way we can get around this is by placing a diode after the keyswitch, but before it connects to its row. A diode only allows current to pass through one way, which will protect our other columns/rows from being activated in the previous example. We'll represent a dioded matrix like this; + + Column 0 being scanned Column 1 being scanned + x x + col0 col1 col0 col1 + │ │ | │ + (key0) (key1) (key0) (key1) + ! │ ! │ ! | ! │ + row0 ─────┴────────┘ │ row0 ─────┴────────┘ │ + │ │ | │ + (key2) (key3) (key2) (key3) + ! ! ! ! + row1 ─────┴────────┘ row1 ─────┴────────┘ + +In practical applications, the black line of the diode will be placed facing the row, and away from the keyswitch - the `!` in this case is the diode, where the gap represents the black line. A good way to remember this is to think of this symbol: `>|` + +Now when we press the three keys, invoking what would be a ghosting scenario: + + Column 0 being scanned Column 1 being scanned + x x + col0 col1 col0 col1 + │ │ │ │ + (┌─┤0) (┌─┤1) (┌─┤0) (┌─┤1) + ! │ ! │ ! │ ! │ + x row0 ─────┴────────┘ │ x row0 ─────┴────────┘ │ + │ │ │ │ + (key2) (┌─┘3) (key2) (┌─┘3) + ! ! ! ! + row1 ─────┴────────┘ x row1 ─────┴────────┘ + +Things act as they should! Which will get us the following data: + + col0: 0b01 + col1: 0b11 + │└row0 + └row1 + +The firmware can then use this correct data to detect what it should do, and eventually, what signals it needs to send to the OS. + +## The actual hand-wiring + +### Getting things in place + +When starting this, you should have all of your stabilisers and keyswitches already installed (and optionally keycaps). If you're using a Cherry-type stabiliser (plate-mounted only, obviously), you'll need to install that before your keyswitches. If you're using Costar ones, you can installed them afterwards. + +To make things easier on yourself, make sure all of the keyswitches are oriented the same way (if they can be - not all layouts support this). Despite this, it's important to remember that the contacts on the keyswitches are completely symmetrical. We'll be using the keyswitch's left side contact for wiring the rows, and the right side one for wiring the columns. + +Get your soldering iron heated-up and collect the rest of the materials from the part list at the beginning of the guide. Place your keyboard so that the bottoms of the keyswitches are accessible - it may be a good idea to place it on a cloth to protect your keyswitches/keycaps. + +Before continuing, plan out where you're going to place your Teensy. If you're working with a board that has a large (6.25u) spacebar, it may be a good idea to place it in-between switches against the plate. Otherwise, you may want to trim some of the leads on the keyswitches where you plan on putting it - this will make it a little harder to solder the wire/diodes, but give you more room to place the Teensy. + +### Preparing the diodes + +It's a little easier to solder the diodes in place if you bend them at a 90º angle immediately after the black line - this will help to make sure you put them on the right way (direction matters), and in the correct position. The diodes will look like this when bent (with longer leads): + + ┌─────┬─┐ + ───┤ │ ├─┐ + └─────┴─┘ │ + │ + +We'll be using the long lead at the bent end to connect it to the elbow (bent part) of the next diode, creating the row. + +### Soldering the diodes + +Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. The straight end of the diode should be touching the left contact on the switch, and the bent end should be facing to the right and resting on the switch there, like this: + + │o + ┌┴┐ o + │ │ O + ├─┤ + └┬┘ + └───────────── + +Letting the diode rest, grab your solder, and touch both it and the soldering iron to the left contact at the same time - the rosin in the solder should make it easy for the solder to flow over both the diode and the keyswitch contact. The diode may move a little, and if it does, carefully position it back it place by grabbing the bent end of the diode - the other end will become hot very quickly. If you find that it's moving too much, using needle-nose pliers of some sort may help to keep the diode still when soldering. + +The smoke that the rosin releases is harmful, so be careful not to breath it or get it in your eyes/face. + +After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiney) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blow on it will accelerate this process. + +When the first diode is complete, the next one will need to be soldered to both the keyswitch, and the previous diode at the new elbow. That will look something like this: + + │o │o + ┌┴┐ o ┌┴┐ o + │ │ O │ │ O + ├─┤ ├─┤ + └┬┘ └┬┘ + └────────────────┴───────────── + +After completing a row, use the wire cutters to trim the excess wire from the tops of the diodes, and from the right side on the final switch. This process will need to completed for each row you have. + +When all of the diodes are completely soldered, it's a good idea to quickly inspect each one to ensure that your solder joints are solid and sturdy - repairing things after this is possible, but more difficult. + +### Soldering the columns + +You'll have some options in the next process - it's a good idea to insulate the column wires (since the diodes aren't), but if you're careful enough, you can use exposed wires for the columns - it's not recommended, though. If you're using single-cored wire, stripping the plastic off of the whole wire and feeding it back on is probably the best option, but can be difficult depending on the size and materials. You'll want to leave parts of the wire exposed where you're going to be solder it onto the keyswitch. + +If you're using stranded wire, it's probably easiest to just use a lot of small wires to connect each keyswitch along the column. It's possible to use one and melt through the insulation, but this isn't recommended, will produce even more harmful fumes, and can ruin your soldering iron. + +Before beginning to solder, it helps to have your wire pre-bent (if using single-cored), or at least have an idea of how you're going to route the column (especially if you're making a staggered board). Where you go in particular doesn't matter too much, as we'll be basing our keymap definitions on how it was wired - just make sure every key in a particular row is in a unique column, and that they're in order from left to right. + +If you're not using any insulation, you can try to keep the column wires elevated, and solder them near the tips of the keyswitch contacts - if the wires are sturdy enough, they won't short out to the row wiring an diodes. + +### Wiring things to the Teensy + +Now that the matrix itself is complete, it's time to connect what you've done to the Teensy. You'll be needing the number of pins equal to your number of columns + your number of rows. There are some pins on the Teensy that are special, like D6 (the LED on the chip), or some of the UART, SPI, I2C, or PWM channels, but only avoid those if you're planning something in addition to a keyboard. If you're unsure about wanting to add something later, you should have enough pins in total to avoid a couple. + +The pins you'll absolutely have to avoid are: GND, VCC, AREF, and RST - all the others are usable and accessible in the firmware. + +Place the Teensy where you plan to put it - you'll have to cut wires to length in the next step, and you'll want to make sure they reach. + +Starting with the first column on the right side, measure out how much wire you'll need to connect it to the first pin on the Teensy - it helps to pick a side that you'll be able to work down, to keep the wires from overlapping too much. It may help to leave a little bit of slack so things aren't too tight. Cut the piece of wire, and solder it to the Teensy, and then the column - you can solder it anywhere along the column, but it may be easiest at the keyswitch. Just be sure the wire doesn't separate from the keyswitch when soldering. + +As you move from column to column, it'll be helpful to write the locations of the pins down. We'll use this data to setup the matrix in the future. + +When you're done with the columns, start with the rows in the same process, from top to bottom, and write them all down. Again, you can solder anywhere along the row, as long as it's after the diode - soldering before the diode (on the keyswitch side) will cause that row not to work. + +As you move along, be sure that the Teensy is staying in place - recutting and soldering the wires is a pain! + +### Getting some basic firmware set-up + +From here, you should have a working keyboard with the correct firmware. Before we attach the Teensy permanently to the keyboard, let's quickly get some firmware loaded onto the Teensy so we can test each keyswitch. + +To start out, download [the firmware](https://github.com/jackhumbert/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/). + +The first thing we're going to do is create a new project using the script in the root directory of the firmware. In your terminal, run this command with `<project_name>` replaced by the name of your project - it'll need to be different from any other project in the `keyboard/` folder: + + ./new_project.sh <project_name> + +You'll want to navigate to the `keyboard/<project_name>/` folder by typing, like the print-out from the script specifies: + + cd keyboard/<project_name> + +#### config.h + +The first thing we're going to want to modify is the `config.h` file. On line 32 and 33, you'll see `MATRIX_ROWS` and `MATRIX_COLS` - set both these variables to however many rows and columns you have on your keyboard. + +On line 38 and 39 you'll see the `COLS` and `ROWS` definitions - this is where you'll enter the pins you used, in order (left-to-right when looking at the top of the keyboard, but right-to-left when looking at the bottom). + +There are some other variables that you'll be able to modify (lines 23-29), but it's not necessary to do that now (or ever, really). + +#### \<project_name\>.h + +The next file you'll want to look at is `<project_name>.h`. You're going to want to rewrite the `KEYMAP` definition - the format and syntax here is extremely important, so pay attention to how things are setup. The first half of the definition are considered the arguments - this is the format that you'll be following in your keymap later on, so you'll want to have as many k*xy* variables here as you do keys. The second half is the part that the firmware actually looks at, and will contain gaps depending on how you wired your matrix. + +We'll dive into how this will work with the following example. Say we have a keyboard like this: + + ┌───┬───┬───┐ + │ │ │ │ + ├───┴─┬─┴───┤ + │ │ │ + └─────┴─────┘ + +This can be described by saying the top row is 3 1u keys, and the bottom row is 2 1.5u keys. The difference between the two rows is important, because the bottom row has an unused column spot (3 v 2). Let's say that this is how we wired the columns: + + ┌───┬───┬───┐ + │ ┋ │ ┋ │ ┋ │ + ├─┋─┴─┬─┴─┋─┤ + │ ┋ │ ┋ │ + └─────┴─────┘ + +The middle column is unused on the bottom row in this example. Our `KEYMAP` definition would look like this: + + #define KEYMAP( \ + k00, k01, k02, \ + k10, k11, \ + ) \ + { \ + { k00, k01, k02 }, \ + { k10, KC_NO, k11 }, \ + } + +Notice how the top half is spaced to resemble our physical layout - this helps us understand which keys are associated with which columns. The bottom half uses the keycode `KC_NO` where there is no keyswitch wired in. It's easiest to keep the bottom half aligned in a grid to help us make sense of how the firmware actually sees the wiring. + +Let's say that instead, we wired our keyboard like this (a fair thing to do): + + ┌───┬───┬───┐ + │ ┋ │ ┋│ ┋ │ + ├─┋─┴─┬┋┴───┤ + │ ┋ │┋ │ + └─────┴─────┘ + +This would require our `KEYMAP` definition to look like this: + + #define KEYMAP( \ + k00, k01, k02, \ + k10, k11, \ + ) \ + { \ + { k00, k01, k02 }, \ + { k10, k11, KC_NO }, \ + } + +Notice how the `k11` and `KC_NO` switched places to represent the wiring, and the unused final column on the bottom row. Sometimes it'll make more sense to put a keyswitch on a particular column, but in the end, it won't matter, as long as all of them are accounted for. You can use this process to write out the `KEYMAP` for your entire keyboard - be sure to remember that your keyboard is actually backwards when looking at the underside of it. + +#### keymaps/default.c + +This is the actual keymap for your keyboard, and the main place you'll make changes as you perfect your layout. `default.c` is the file that gets pull by default when typing `make`, but you can make other files as well, and specify them by typing `make KEYMAP=<variant>`, which will pull `keymaps/<variant>.c`. + +The basis of a keymap is its layers - by default, layer 0 is active. You can activate other layers, the highest of which will be referenced first. Let's start with our base layer. + +Using our previous example, let's say we want to create the following layout: + + ┌───┬───┬───┐ + │ A │ 1 │ H │ + ├───┴─┬─┴───┤ + │ TAB │ SPC │ + └─────┴─────┘ + +This can be accomplished by using the following `keymaps` definition: + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP( /* Base */ + KC_A, KC_1, KC_H, \ + KC_TAB, KC_SPC \ + ), + }; + +Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [tmk_code/doc/keycode.txt](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt) - there are also a lot of aliases to condense your keymap file. + +It's also important to use the `KEYMAP` function we defined earlier - this is what allows the firmware to associate our intended readable keymap with the actual wiring. + +#### Compiling your firmware + +After you've written out your entire keymap, you're ready to get the firmware compiled and onto your Teensy. Before compiling, you'll need to get your [development environment set-up](https://github.com/jackhumbert/qmk_firmware/blob/master/keyboard/planck/PCB_GUIDE.md#setting-up-the-environment) - you can skip the dfu-programmer instructions, but you'll need to download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to get the firmware on your Teensy. + +Once everything is installed, running `make` in the terminal should get you some output, and eventually a `<project_name>.hex` file in that folder. If you're having trouble with this step, see the end of the guide for the trouble-shooting section. + +Once you have your `<project_name>.hex` file, open up the Teensy loader application, and click the file icon. From here, navigate to your `QMK/keyboard/<project_name>/` folder, and select the `<project_name>.hex` file. Plug in your keyboard and press the button on the Teensy - you should see the LED on the device turn off once you do. The Teensy Loader app will change a little, and the buttons should be clickable - click the download button (down arrow), and then the reset button (right arrow), and your keyboard should be ready to go! + +#### Testing your firmware + +Carefully flip your keyboard over, open up a new text document, and try typing - you should get the characters that you put into your keymap. Test each key, and note the ones that aren't working. Here's a quick trouble-shooting guide for non-working keys: + +0. Flip the keyboard back over and short the keyswitch's contacts with a piece wire - this will eliminate the possibility of the keyswitch being bad and needing to be replaced. +1. Check the solder points on the keyswitch - these need to be plump and whole. If you touch it with a moderate amount of force and it comes apart, it's not strong enough. +2. Check the solder joints on the diode - if the diode is loose, part of your row may register, while the other may not. +3. Check the solder joints on the columns - if your column wiring is loose, part or all of the column may not work. +4. Check the solder joints on both sides of the wires going to/from the Teensy - the wires need to be fully soldered and connect to both sides. +5. Check the <project_name>.h file for errors and incorrectly placed `KC_NO`s - if you're unsure where they should be, instead duplicate a k*xy* variable. +6. Check to make sure you actually compiled the firmware and flashed the Teensy correctly. Unless you got error messages in the terminal, or a pop-up during flashing, you probably did everything correctly. + +If you've done all of these things, keep in mind that sometimes you might have had multiple things affecting the keyswitch, so it doesn't hurt to test the keyswitch by shorting it out at the end. + +#### Securing the Teensy, finishing your hardware, getting fancier firmware + +Now that you have a working board, it's time to get things in their permanent positions. I've often used liberal amounts of hot glue to secure and insulate things, so if that's your style, start spreading that stuff like butter. Otherwise, double-sided tape is always an elegant solution, and electrical tape is a distant second. Due to the nature of these builds, a lot of this part is up to you and how you planned (or didn't plan) things out. + +There are a lot of possibilities inside the firmware - check out the [README](https://github.com/jackhumbert/qmk_firmware/blob/master/README.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb) + +## Trouble-shooting compiling + +### Windows + +#### fork: Resource temporarily unavailable + +http://www.avrfreaks.net/forum/windows-81-compilation-error + +### Mac + +### Linux diff --git a/QUICK_START.md b/QUICK_START.md index 6be377db3c..948308ca11 100644 --- a/QUICK_START.md +++ b/QUICK_START.md @@ -20,6 +20,6 @@ See [doc/keymap.md](tmk_core/doc/keymap.md). ## Flashing the firmware -The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/README.md) gives a great example. +The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/readme.md) gives a great example. If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version. @@ -73,7 +73,7 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u KC_PIPE | KC_COLN : -`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. +`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): @@ -86,15 +86,15 @@ These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LS We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped + * `CTL_T(kc)` - is LCTL when held and *kc* when tapped + * `SFT_T(kc)` - is LSFT when held and *kc* when tapped + * `ALT_T(kc)` - is LALT when held and *kc* when tapped + * `GUI_T(kc)` - is LGUI when held and *kc* when tapped * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) * `LCAG_T(kc)` - is CtrlAltGui when held and *kc* when tapped * `MEH_T(kc)` - is like Hyper, but not as cool -- does not include the Cmd/Win key, so just sends Alt+Ctrl+Shift. -### Temporarily setting the default layer +### Temporarily setting the default layer `DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. @@ -115,7 +115,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // case 0: // this would trigger when you hit a key mapped as M(0) if (record->event.pressed) { return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes - } + } break; } return MACRO_NONE; @@ -132,20 +132,80 @@ A macro can include the following commands: So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. -Note: Using macros to have your keyboard send passwords for you is a bad idea. +Note: Using macros to have your keyboard send passwords for you is possible, but a bad idea. -### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) +### Advanced macro functions + +To get more control over the keys/actions your keyboard takes, the following functions are available to you in the `action_get_macro` function block: + +* `record->event.pressed` + +This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is + +```c +if (record->event.pressed) { + // on keydown +} else { + // on keyup +} +``` + +* `register_code(<kc>);` + +This sends the `<kc>` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`. + +* `unregister_code(<kc>);` + +Parallel to `register_code` function, this sends the `<kc>` keyup event to the computer. If you don't use this, the key will be held down until it's sent. + +* `layer_on(<n>);` + +This will turn on the layer `<n>` - the higher layer number will always take priority. Make sure you have `KC_TRNS` for the key you're pressing on the layer you're switching to, or you'll get stick there unless you have another plan. + +* `layer_off(<n>);` + +This will turn off the layer `<n>`. + +* `clear_keyboard();` + +This will clear all mods and keys currently pressed. + +* `clear_mods();` + +This will clear all mods currently pressed. + +* `clear_keyboard_but_mods();` + +This will clear all keys besides the mods currently pressed. + +#### Timer functionality + +It's possible to start timers and read values for time-specific events - here's an example: + +```c +static uint16_t key_timer; +key_timer = timer_read(); +if (timer_elapsed(key_timer) < 100) { + // do something if less than 100ms have passed +} else { + // do something if 100ms or more have passed +} +``` + +It's best to declare the `static uint16_t key_timer;` outside of the macro block (top of file, etc). + +## Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - #include "keymap_<layout>.h" + #include <keymap_extras/keymap_colemak.h> + +If you use Dvorak, use `keymap_dvorak.h` instead of `keymap_colemak.h` for this line. After including this line, you will get access to: -Where <layout> is "colemak" or "dvorak". After including this line, you will get access to: - * `CM_*` for all of the Colemak-equivalent characters * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. + +These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. @@ -188,7 +248,7 @@ The method does not require Unicode support in the keyboard itself but depends i First you need to select a modifier combination that is not in use by any of your programs. CtrlAltWin is not used very widely and should therefore be perfect for this. There is a macro defined for a mod-tab combo `LCAG_T`. -Add this mod-tab combo to a key on your keyboard, e.g.: `LCAG_T(KC_TAB)`. +Add this mod-tab combo to a key on your keyboard, e.g.: `LCAG_T(KC_TAB)`. This makes the key behave like a tab key if pressed and released immediately but changes it to the modifier if used with another key. In the default script of AutoHotkey you can define custom hotkeys. @@ -198,3 +258,54 @@ In the default script of AutoHotkey you can define custom hotkeys. The hotkeys above are for the combination CtrlAltGui and CtrlAltGuiShift plus the letter a. AutoHotkey inserts the Text right of `Send, ` when this combination is pressed. + +## RGB Under Glow Mod + +![Planck with RGB Underglow](https://raw.githubusercontent.com/yangliu/qmk_firmware/planck-rgb/keyboard/planck/keymaps/yang/planck-with-rgb-underglow.jpg) + +Here is a quick demo on Youtube (with NPKC KC60) (https://www.youtube.com/watch?v=VKrpPAHlisY). + +For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring the VCC, GND, and DI, you can enable the underglow in your Makefile. + + 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 add the following options into your config.h, and set them up according your hardware configuration. + + #define ws2812_PORTREG PORTF + #define ws2812_DDRREG DDRF + #define ws2812_pin PF4 + #define RGBLED_NUM 14 // Number of LEDs + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 + +The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboard/planck/keymaps/yang/keymap.c` + +### WS2812 Wiring + +![WS2812 Wiring](https://raw.githubusercontent.com/yangliu/qmk_firmware/planck-rgb/keyboard/planck/keymaps/yang/WS2812-wiring.jpg) + +Please note the USB port can only supply a limited amount of power to the keyboard (500mA by standard, however, modern computer and most usb hubs can provide 700+mA.). According to the data of NeoPixel from Adafruit, 30 WS2812 LEDs require a 5V 1A power supply, LEDs used in this mod should not more than 20. + +## Safety Considerations + +You probably don't want to "brick" your keyboard, making it impossible +to rewrite firmware onto it. Here are some of the parameters to show +what things are (and likely aren't) too risky. + +- If a keyboard map does not include RESET, then, to get into DFU + mode, you will need to press the reset button on the PCB, which + requires unscrewing some bits. +- Messing with tmk_core / common files might make the keyboard + inoperable +- Too large a .hex file is trouble; `make dfu` will erase the block, + test the size (oops, wrong order!), which errors out, failing to + flash the keyboard +- DFU tools do /not/ allow you to write into the bootloader (unless + you throw in extra fruitsalad of options), so there is little risk + there. +- EEPROM has around a 100000 write cycle. You shouldn't rewrite the + firmware repeatedly and continually; that'll burn the EEPROM + eventually. diff --git a/keyboard/atomic/README.md b/keyboard/atomic/README.md index 7c30958438..c8e83cf55a 100644 --- a/keyboard/atomic/README.md +++ b/keyboard/atomic/README.md @@ -4,163 +4,7 @@ DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholi ## Quantum MK Firmware -You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. - - BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // - BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - -## Quick aliases to common actions - -Your keymap can include shortcuts to common operations (called "function actions" in tmk). - -### Switching and toggling layers - -`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. - -`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). - -`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. - -### Fun with modifier keys - -* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias -* `RSFT(kc)` - applies right Shift to *kc* -* `LCTL(kc)` - applies left Control to *kc* -* `RCTL(kc)` - applies right Control to *kc* -* `LALT(kc)` - applies left Alt to *kc* -* `RALT(kc)` - applies right Alt to *kc* -* `LGUI(kc)` - applies left GUI (command/win) to *kc* -* `RGUI(kc)` - applies right GUI (command/win) to *kc* - -You can also chain these, like this: - - LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. - -The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. - - KC_TILD ~ - KC_EXLM ! - KC_AT @ - KC_HASH # - KC_DLR $ - KC_PERC % - KC_CIRC ^ - KC_AMPR & - KC_ASTR * - KC_LPRN ( - KC_RPRN ) - KC_UNDS _ - KC_PLUS + - KC_LCBR { - KC_RCBR } - KC_PIPE | - KC_COLN : - -`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. - -These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): - - * MOD_LCTL - * MOD_LSFT - * MOD_LALT - * MOD_LGUI - -These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. - -We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: - - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped - * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) - -### Temporarily setting the default layer - -`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. - -### Remember: These are just aliases - -These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action). - -Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. - -## Macro shortcuts: Send a whole string when pressing just one key - -Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. -{ - switch(id) { - case 0: // this would trigger when you hit a key mapped as M(0) - if (record->event.pressed) { - return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes - } - break; - } - return MACRO_NONE; -}; -``` -A macro can include the following commands: - -* I() change interval of stroke in milliseconds. -* D() press key. -* U() release key. -* T() type key(press and release). -* W() wait (milliseconds). -* END end mark. - -So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. - -Note: Using macros to have your keyboard send passwords for you is a bad idea. - -### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) - -Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - - #include "keymap_<layout>.h" - -Where <layout> is "colemak" or "dvorak". After including this line, you will get access to: - - * `CM_*` for all of the Colemak-equivalent characters - * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. - -To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. - -## Additional language support - -In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). - -## Unicode support - -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. - -## Other firmware shortcut keycodes - -* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) -* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things -* `BL_ON` - turns the backlight on -* `BL_OFF` - turns the backlight off -* `BL_<n>` - sets the backlight to level *n* -* `BL_INC` - increments the backlight level by one -* `BL_DEC` - decrements the backlight level by one -* `BL_TOGG` - toggles the backlight -* `BL_STEP` - steps through the backlight levels - -Enable the backlight from the Makefile. - -## MIDI functionalty - -This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. - -## Bluetooth functionality - -This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. +For the full Quantum feature list, see [the parent README.md](/README.md). ## Building diff --git a/keyboard/atreus/Makefile b/keyboard/atreus/Makefile new file mode 100644 index 0000000000..2e542d62ed --- /dev/null +++ b/keyboard/atreus/Makefile @@ -0,0 +1,152 @@ +#---------------------------------------------------------------------------- +# 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 = atreus + + +# Directory common source filess exist +TOP_DIR = ../.. +TMK_DIR = ../../tmk_core + +# Directory keyboard dependent files exist +TARGET_DIR = . + +# # project specific files +SRC = atreus.c + +ifdef KEYMAP + SRC := keymaps/keymap_$(KEYMAP).c $(SRC) +else + SRC := keymaps/keymap_default.c $(SRC) +endif + +ifdef TEENSY2 + OPT_DEFS += -DATREUS_TEENSY2 + ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex +else + OPT_DEFS += -DATREUS_ASTAR + ATRUES_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ + avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) +endif + +CONFIG_H = config.h + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +# MIDI_ENABLE = YES # MIDI controls +UNICODE_ENABLE = YES # Unicode +# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID + + +# Optimize size but this may cause error "relocation truncated to fit" +#EXTRALDFLAGS = -Wl,--relax + +# Search Path +VPATH += $(TARGET_DIR) +VPATH += $(TOP_DIR) +VPATH += $(TMK_DIR) + +include $(TOP_DIR)/quantum/quantum.mk + +USB ?= /dev/cu.usbmodem1411 + +upload: build + $(ATRUES_UPLOAD_COMMAND) diff --git a/keyboard/atreus/README.md b/keyboard/atreus/README.md new file mode 100644 index 0000000000..4db7ac1203 --- /dev/null +++ b/keyboard/atreus/README.md @@ -0,0 +1,186 @@ +atreus keyboard firmware +====================== + +## Quantum MK Firmware + +You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. + + BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + MIDI_ENABLE = yes # MIDI controls + # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID + +## Atreus specific information + +These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2, one powered by an A-Star. This repository currently assumes that you have an A-Star powered Atreus. If you are using a Teensy2, specify that by adding `TEENSY2=yes` to your `make` commands. + +If you are coming from the [atreus-firmware](https://github.com/technomancy/atreus-firmware), we've also brought forward the `make upload` command for you to use. + +## Quick aliases to common actions + +Your keymap can include shortcuts to common operations (called "function actions" in tmk). + +### Switching and toggling layers + +`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. + +`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). + +`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + +### Fun with modifier keys + +* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias +* `RSFT(kc)` - applies right Shift to *kc* +* `LCTL(kc)` - applies left Control to *kc* +* `RCTL(kc)` - applies right Control to *kc* +* `LALT(kc)` - applies left Alt to *kc* +* `RALT(kc)` - applies right Alt to *kc* +* `LGUI(kc)` - applies left GUI (command/win) to *kc* +* `RGUI(kc)` - applies right GUI (command/win) to *kc* + +You can also chain these, like this: + + LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. + +The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. + + KC_TILD ~ + KC_EXLM ! + KC_AT @ + KC_HASH # + KC_DLR $ + KC_PERC % + KC_CIRC ^ + KC_AMPR & + KC_ASTR * + KC_LPRN ( + KC_RPRN ) + KC_UNDS _ + KC_PLUS + + KC_LCBR { + KC_RCBR } + KC_PIPE | + KC_COLN : + +`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. + +These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): + + * MOD_LCTL + * MOD_LSFT + * MOD_LALT + * MOD_LGUI + +These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. + +We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: + + * `CTL_T(kc)` - is LCTL when held and *kc* when tapped + * `SFT_T(kc)` - is LSFT when held and *kc* when tapped + * `ALT_T(kc)` - is LALT when held and *kc* when tapped + * `GUI_T(kc)` - is LGUI when held and *kc* when tapped + * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) + +### Temporarily setting the default layer + +`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. + +### Remember: These are just aliases + +These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action). + +Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. + +## Macro shortcuts: Send a whole string when pressing just one key + +Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). + +```c +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. +{ + switch(id) { + case 0: // this would trigger when you hit a key mapped as M(0) + if (record->event.pressed) { + return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes + } + break; + } + return MACRO_NONE; +}; +``` +A macro can include the following commands: + +* I() change interval of stroke in milliseconds. +* D() press key. +* U() release key. +* T() type key(press and release). +* W() wait (milliseconds). +* END end mark. + +So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. + +Note: Using macros to have your keyboard send passwords for you is a bad idea. + +### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) + +Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: + + #include "keymap_<layout>.h" + +Where <layout> is "colemak" or "dvorak". After including this line, you will get access to: + + * `CM_*` for all of the Colemak-equivalent characters + * `DV_*` for all of the Dvorak-equivalent characters + +These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. + +To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. + +## Additional language support + +In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). + +## Unicode support + +You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. + +## Other firmware shortcut keycodes + +* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) +* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things +* `BL_ON` - turns the backlight on +* `BL_OFF` - turns the backlight off +* `BL_<n>` - sets the backlight to level *n* +* `BL_INC` - increments the backlight level by one +* `BL_DEC` - decrements the backlight level by one +* `BL_TOGG` - toggles the backlight +* `BL_STEP` - steps through the backlight levels + +Enable the backlight from the Makefile. + +## MIDI functionalty + +This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. + +## Bluetooth functionality + +This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. + +## 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. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +``` +$ make KEYMAP=[default|jack|<name>] +``` +Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/atreus/atreus.c b/keyboard/atreus/atreus.c new file mode 100644 index 0000000000..bfc893084f --- /dev/null +++ b/keyboard/atreus/atreus.c @@ -0,0 +1,29 @@ +#include "atreus.h" + +__attribute__ ((weak)) +void * matrix_init_user(void) { + // leave these blank +}; + +__attribute__ ((weak)) +void * matrix_scan_user(void) { + // leave these blank +}; + +void * matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + if (matrix_init_user) { + (*matrix_init_user)(); + } +}; + +void * matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + if (matrix_scan_user) { + (*matrix_scan_user)(); + } +}; diff --git a/keyboard/atreus/atreus.h b/keyboard/atreus/atreus.h new file mode 100644 index 0000000000..9dd77859f9 --- /dev/null +++ b/keyboard/atreus/atreus.h @@ -0,0 +1,28 @@ +#ifndef ATREUS_H +#define ATREUS_H + +#include "matrix.h" +#include "keymap_common.h" +#include "backlight.h" +#include <stddef.h> + +// This a shortcut to help you visually see your layout. +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \ +) \ +{ \ + { k00, k01, k02, k03, k04, KC_NO, k05, k06, k07, k08, k09 }, \ + { k10, k11, k12, k13, k14, KC_NO, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \ + { k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \ +} + +void * matrix_init_user(void); +void * matrix_scan_user(void); + +#endif diff --git a/keyboard/atreus/config.h b/keyboard/atreus/config.h new file mode 100644 index 0000000000..ca0cd7e47a --- /dev/null +++ b/keyboard/atreus/config.h @@ -0,0 +1,86 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Technomancy +#define PRODUCT Atreus +#define DESCRIPTION q.m.k. keyboard firmware for Atreus + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +// Change this to how you wired your keyboard +// COLS: Left to right, ROWS: Top to bottom +#if defined(ATREUS_ASTAR) + #define COLS (int []){ B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } + #define ROWS (int []){ D0, D1, D3, D2 } +#elif defined(ATREUS_TEENSY2) + #define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0} + #define ROWS (int []){ D0, D1, D2, D3 } +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +//#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/atreus/keymaps/keymap_default.c b/keyboard/atreus/keymaps/keymap_default.c new file mode 100644 index 0000000000..1c4280ff56 --- /dev/null +++ b/keyboard/atreus/keymaps/keymap_default.c @@ -0,0 +1,51 @@ +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#include "atreus.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _RS 1 +#define _LW 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } +}, +[_RS] = { /* [> RAISE <] */ + {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS}, + {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} +}, +[_LW] = { /* [> LOWER <] */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, + {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, + {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET} +}}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/atreus/keymaps/keymap_gerb.c b/keyboard/atreus/keymaps/keymap_gerb.c new file mode 100644 index 0000000000..1ba3942e3b --- /dev/null +++ b/keyboard/atreus/keymaps/keymap_gerb.c @@ -0,0 +1,66 @@ +// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks +// with the Colemak and Dvorak support yet, but everything else works nicely. + +#include "atreus.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _L1 3 +#define _L2 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT } + }, + [_CM] = { /* Colemak */ + {KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN}, + {KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT } + }, + [_DV] = { /* Dvorak */ + {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L }, + {KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S }, + {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT } + }, + [_L1] = { /* LAYER 1 */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC}, + {KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC}, + {KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS}, + {TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL } + }, + [_L2] = { /* LAYER 2 */ + {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 }, + {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 }, + {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 }, + {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET } + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index 8066c7bb4b..5dfcca2c80 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -93,7 +93,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +# CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend diff --git a/keyboard/ergodox_ez/keymaps/coderkun_neo2/coderkun_neo2.hex b/keyboard/ergodox_ez/keymaps/coderkun_neo2/coderkun_neo2.hex index c4804d4830..2c7f3ec549 100644 --- a/keyboard/ergodox_ez/keymaps/coderkun_neo2/coderkun_neo2.hex +++ b/keyboard/ergodox_ez/keymaps/coderkun_neo2/coderkun_neo2.hex @@ -1,1461 +1,1508 @@ -:100000000C94AF060C94F3060C94F3060C94F306D0
-:100010000C94F3060C94F3060C94F3060C94F3067C
-:100020000C94F3060C94F3060C9406120C94D8125C
-:100030000C94F3060C94F3060C94F3060C94F3065C
-:100040000C94F3060C94B02B0C94F3060C94F3066A
-:100050000C94F3060C94B7210C94F3060C94F3065D
-:100060000C94F3060C94F3060C94F3060C94F3062C
-:100070000C94F3060C94F3060C94F3060C94F3061C
-:100080000C94F3060C94F3060C94F3060C94F3060C
-:100090000C94F3060C94F3060C94F3060C94F306FC
-:1000A0000C94F3060C94F3060C94F3063D135F13C3
-:1000B0004A145F134A14A113C4134A1419142C14BC
-:1000C0007A177A17A817A817EB172718281A281ACB
-:1000D0003F18281A36193619021A281A281A161A19
-:1000E0000000F0A12B0034003900E100E000000026
-:1000F0001E00140004001D00E200007F1F001A0013
-:1001000016001B000152280020000800070006000E
-:10011000E3002C00210015000900190064002D00E7
-:10012000220017000A000500000050002E004A00BF
-:1001300000000100000052002E004D0000000100F0
-:100140000000510023001C000B00110000004F00B4
-:10015000240018000D001000E6002D0025000C0002
-:100160000E003600E7002C00260012000F003700BA
-:10017000015228002700130033003800E600007702
-:100180002A002F003100E500E4000000010001001A
-:100190000100010001000000010001000100010058
-:1001A0000100010001000100010001000100010047
-:1001B000010001000100010001000100010013A77E
-:1001C00015A701000100F400010001000100010079
-:1001D0000000F20001000100000001000000F0003A
-:1001E00001000100000001000000F1000100010019
-:1001F000010001000000F300010042003E003A004F
-:100200000100F500010043003F003B000100010038
-:100210000100440040003C000100010001004500D5
-:1002200041003D000100010001000100010001004A
-:10023000010000000A002530313662003A20002516
-:10024000303258000A722F63203031323334353661
-:100250003738394142434445460A000A00253032C6
-:100260005800626F756E6365213A20006C65667494
-:1002700020736964652061747461636865640A0051
-:100280006C6566742073696465206E6F7420726596
-:1002900073706F6E64696E670A00747279696E6755
-:1002A00020746F207265736574206D637032333013
-:1002B00031380A000A44454255473A20656E61626A
-:1002C0006C65642E0A005B735D004B6579626F613B
-:1002D00072642073746172742E0A005B575D005B58
-:1002E000535D005B525D005B445D005B435D001647
-:1002F000034500720067006F0044006F0078002023
-:100300000045005A00000016034500720067006FA8
-:100310000044006F007800200045005A00000004EF
-:1003200003090409028D00050100A0FA0904000078
-:100330000103010100092111010001223F0007050D
-:10034000810308000A0904010001030102000921D8
-:1003500011010001224D000705820308000A09046B
-:1003600002000103000000092111010001223600F2
-:100370000705830308000A090403000203000000C4
-:10038000092111010001222000070584032000013A
-:100390000705040320000109040400010300000014
-:1003A0000921110100012239000705850310000110
-:1003B0001201100100000008EDFE07130100010208
-:1003C000000105010906A101050719E029E715004B
-:1003D0002501950875018102050819012905950572
-:1003E000750191029501750391010507190029779F
-:1003F00015002501957875018102C00631FF097449
-:10040000A1010975150025FF95207508810209765F
-:10041000150025FF952075089102C005010980A1EE
-:1004200001850216010026B7001A01002AB70075DF
-:100430001095018100C0050C0901A1018503160179
-:1004400000269C021A01002A9C0275109501810069
-:10045000C005010902A1010901A10005091901292D
-:10046000051500250195057501810295017503812A
-:10047000010501093009311581257F950275088133
-:100480000609381581257F950175088106050C0A36
-:1004900038021581257F950175088106C0C00501C8
-:1004A0000906A101050719E029E7150025019508AE
-:1004B0007501810295017508810105081901290559
-:1004C00095057501910295017503910105071900C4
-:1004D00029FF150025FF950675088100C00A002533
-:1004E00030325820006B6579626F6172645F7265AB
-:1004F000706F72743A20000A0025303258006B6524
-:1005000079626F6172645F7365745F6C65643A20D1
-:100510000064656C5F6B65795F6269743A20636142
-:100520006E27742064656C3A20253032580A0061C9
-:1005300064645F6B65795F6269743A2063616E27FA
-:1005400074206164643A20253032580A00646F6E6A
-:10055000652E0A00626F6F676D6167696320736360
-:10056000616E3A202E2E2E2000290A002575002FBC
-:10057000002575005D28002564002000256400200A
-:100580000025640020002564007C002530325800DE
-:100590006D6F7573656B6579205B62746E7C782016
-:1005A00079207620685D287265702F61636C293A26
-:1005B000205B006D6B5F776865656C5F74696D6566
-:1005C0005F746F5F6D6178203D2025640A006D6B5C
-:1005D0005F776865656C5F6D61785F737065656492
-:1005E000203D2025640A006D6B5F74696D655F7442
-:1005F0006F5F6D6178203D2025640A006D6B5F6D33
-:1006000061785F7370656564203D2025640A006D24
-:100610006B5F696E74657276616C203D2025640A9B
-:10062000006D6B5F64656C6179203D2025640A0074
-:100630006D6B5F776865656C5F74696D655F746F1E
-:100640005F6D6178203D2025640A006D6B5F7768DF
-:1006500065656C5F6D61785F7370656564203D20D2
-:1006600025640A006D6B5F74696D655F746F5F6D03
-:100670006178203D2025640A006D6B5F6D61785FB5
-:100680007370656564203D2025640A006D6B5F69A9
-:100690006E74657276616C203D2025640A006D6B76
-:1006A0005F64656C6179203D2025640A000A00259D
-:1006B0007500363A20776865656C5F74696D655FB3
-:1006C000746F5F6D61783A20000A00257500353A35
-:1006D00020776865656C5F6D61785F7370656564D0
-:1006E0003A20000A00257500343A2074696D655F70
-:1006F000746F5F6D61783A20000A00257500333A07
-:10070000206D61785F73706565643A20000A00258A
-:100710007500323A20696E74657276616C286D736B
-:10072000293A20000A00257500313A2064656C6181
-:1007300079282A31306D73293A20000A092D205674
-:10074000616C756573202D0A004D3E004D25643E99
-:1007500020003F007365742064656661756C740ADF
-:1007600000433E200077686572652064656C7461A3
-:100770003A20637572736F723D25642C207768652B
-:10078000656C3D25640A53656520687474703A2F62
-:100790002F656E2E77696B6970656469612E6F7263
-:1007A000672F77696B692F4D6F7573655F6B65791F
-:1007B000730A000A092D204D6F7573656B657920EA
-:1007C0002D0A4553432F713A09717569740A313AFC
-:1007D0000964656C6179282A31306D73290A323ACF
-:1007E00009696E74657276616C286D73290A333AF3
-:1007F000096D61785F73706565640A343A097469DC
-:100800006D655F746F5F6D61780A353A0977686569
-:10081000656C5F6D61785F73706565640A363A096F
-:10082000776865656C5F74696D655F746F5F6D6136
-:10083000780A0A703A097072696E742076616C7574
-:1008400065730A643A097365742064656661756C42
-:1008500074730A75703A092B310A646F776E3A091E
-:100860002D310A706775703A092B31300A70676450
-:100870006F776E3A092D31300A0A7370656564200E
-:100880003D2064656C7461202A206D61785F73700F
-:10089000656564202A2028726570656174202F20A8
-:1008A00074696D655F746F5F6D6178290A003F0040
-:1008B0004D3E2000433E20004C25640A000A092DCD
-:1008C00020436F6E736F6C65202D0A4553432F7163
-:1008D0003A09717569740A6D3A096D6F7573656BC4
-:1008E00065790A000A092D204D61676963202D0A88
-:1008F000643A0964656275670A783A0964656275E5
-:1009000067206D61747269780A6B3A096465627573
-:1009100067206B6579626F6172640A6D3A0964657C
-:10092000627567206D6F7573650A763A0976657230
-:1009300073696F6E0A733A097374617475730A632D
-:100940003A09636F6E736F6C65206D6F64650A3072
-:100950002D343A096C61796572302D342846313076
-:100960002D4634290A506175733A09626F6F746CB1
-:100970006F616465720A653A09656570726F6D0A28
-:100980006E3A094E4B524F0A7A3A09736C6565709C
-:10099000204C454420746573740A000A00257500D4
-:1009A0002E6E6B726F3A20000A002575002E737749
-:1009B00061705F6261636B736C6173685F626163D6
-:1009C0006B73706163653A20000A002575002E7311
-:1009D0007761705F67726176655F6573633A200067
-:1009E0000A002575002E6E6F5F6775693A20000A50
-:1009F000002575002E737761705F72616C745F7291
-:100A00006775693A20000A002575002E73776170BA
-:100A10005F6C616C745F6C6775693A20000A002531
-:100A200075002E636170736C6F636B5F746F5F63CF
-:100A30006F6E74726F6C3A20000A002575002E7379
-:100A40007761705F636F6E74726F6C5F63617073F8
-:100A50006C6F636B3A20000A0025303258006B65DA
-:100A6000796D61705F636F6E6669672E7261773A48
-:100A700020000A002575002E6D6F7573653A200001
-:100A80000A002575002E6B6579626F6172643A20E9
-:100A9000000A002575002E6D61747269783A200095
-:100AA0000A002575002E656E61626C653A20000AA9
-:100AB00000253032580064656275675F636F6E664B
-:100AC00069672E7261773A20000A00257500646517
-:100AD0006661756C745F6C617965723A20003F00E5
-:100AE0004E4B524F3A206F66660A004E4B524F3AB9
-:100AF000206F6E0A0074696D65725F636F756E7446
-:100B00003A202530346C580A006B6579626F617247
-:100B1000645F6E6B726F3A2025580A006B657962CC
-:100B20006F6172645F69646C653A2025580A006BD6
-:100B30006579626F6172645F70726F746F636F6CFE
-:100B40003A2025580A00686F73745F6B6579626F8D
-:100B50006172645F6C65647328293A2025580A0025
-:100B60000A092D20537461747573202D0A004743C0
-:100B7000433A20342E382E32204156522D4C4942D1
-:100B8000433A20312E382E30204156525F41524395
-:100B9000483A20617672350A004F5054494F4E53FF
-:100BA0003A204C55464120424F4F544D414749430E
-:100BB000204D4F5553454B45592045585452414BB4
-:100BC000455920434F4E534F4C4520434F4D4D41C7
-:100BD0004E44204E4B524F203531320A0042554987
-:100BE0004C443A20393232353435322D64697274CE
-:100BF00079202830353A34333A3031204A616E203A
-:100C000032302032303136290A005649443A2030F9
-:100C10007846454544284572676F446F7820455AA9
-:100C200029205049443A20307831333037284572F2
-:100C3000676F446F7820455A29205645523A203034
-:100C400078303030310A00444553433A20742E6DD9
-:100C50002E6B2E206B6579626F61726420666972FB
-:100C60006D7761726520666F72204572676F646F81
-:100C7000780A000A092D2056657273696F6E202D5F
-:100C80000A000A6D6F7573653A206F66660A000A7E
-:100C90006D6F7573653A206F6E0A000A6B65796235
-:100CA0006F6172643A206F66660A000A6B6579624A
-:100CB0006F6172643A206F6E0A000A6D6174726926
-:100CC000783A206F66660A000A6D61747269783A34
-:100CD000206F6E0A000A64656275673A206F6E0ABB
-:100CE000000A64656275673A206F66660A000A0A40
-:100CF000626F6F746C6F616465722E2E2E200043DC
-:100D00003E20006565636F6E6669673A0A00536C42
-:100D1000656570204C454420746573740A000000BA
-:100D2000000000000000000000010204060A0F1786
-:100D3000202C3A4A5D71879DB3C7DAE9F5FCFFFCC8
-:100D4000F5E9DAC7B39D87715D4A3A2C20170F0A7F
-:100D50000604020100000000000000000000112451
-:100D60001FBECFEFDAE0DEBFCDBF04B603FE24C066
-:100D70008091F9019091FA01A091FB01B091FC01E1
-:100D80008730904BA740B04BB9F41092F901109204
-:100D9000FA011092FB011092FC0114BE84B7877F08
-:100DA00084BF88E10FB6F8948093600010926000D1
-:100DB0000FBEE0E0FFE3099511E0A0E0B1E0ECEF49
-:100DC000FAE502C005900D92AA33B107D9F711E0F8
-:100DD000AAE3B1E001C01D92A93FB107E1F70E946B
-:100DE000400F0C947C2D0C940000FF93EF93E09146
-:100DF0003A01F0913B01309709F00995EF91FF918D
-:100E00000895FC018591803011F0EFDFFBCF08954C
-:100E1000FF27E0E230E247FF0CC0419597FF09C091
-:100E2000EDE26095709580959095611D711D811D15
-:100E3000911D27FF02C0219530E350E2AA27660FDB
-:100E4000771F881F991FAA1FA41710F0A41B639572
-:100E50005A95A9F7AA3008F0A95FA05DAF93F39562
-:100E6000611571058105910541F7ED3211F4EF939C
-:100E7000F395F21718F43F93F395FBCF8F91B5DFFD
-:100E8000FA95E1F70895E991F9918591803021F083
-:100E9000853219F0AADFF9CF089520E0E894559142
-:100EA0005532C1F3503311F4689455915A3348F4D4
-:100EB000505390F3220F022E220F220F200D250FE8
-:100EC000F4CF0EF4219589919991533619F3533744
-:100ED00029F1533559F1BC0188279927E8945C36EC
-:100EE00021F48991999168945591543639F446EFDB
-:100EF0007EF077FF0DC08FEF9FEF0AC055374AE0B5
-:100F000039F0583540E121F0523642E009F00895B9
-:100F1000FF93EF937DDFEF91FF91B7CFFF93EF93B7
-:100F2000FC0181918030B9F360DFFBCFFF93EF9339
-:100F300068DFF1CFDF93CF93CDB7DEB72596A3DF80
-:100F4000CF91DF91089561110BC0FC01828188234C
-:100F500021F085EE0E940E1603C085EE0E94D61683
-:100F600080E090E0089508956091BC017091BD010A
-:100F70008091BE019091BF010E94BB2056985E985F
-:100F800025982D9826982E9827982F98813011F41F
-:100F9000259A2D9A56985E98089584EB97E0892BB0
-:100FA00011F00E94B40780E090E0089556985E9892
-:100FB00025982D9826982E9827982F988FEF90E0B7
-:100FC000909389008093880090938B0080938A008F
-:100FD00090938D0080938C00259A2D9A2FEF80E7B7
-:100FE00092E0215080409040E1F700C00000269A36
-:100FF0002E9A2FEF80E792E0215080409040E1F759
-:1010000000C00000279A2F9A2FEF80E792E021502E
-:1010100080409040E1F700C0000025982D982FEF08
-:1010200080E792E0215080409040E1F700C000004E
-:1010300026982E982FEF80E792E021508040904034
-:10104000E1F700C0000027982F9856985E982598E1
-:101050002D9826982E9827982F98089589EA80939E
-:10106000800089E08093810024982C983F988AB171
-:101070008F748AB96E98479A8BB1806B8BB9769AC8
-:101080000E94D60783EB97E0892B11F00E94B307EB
-:1010900080E090E0089580E28093000180913C011F
-:1010A00081110EC00E949A0881E080933C012FEFCD
-:1010B00083ED90E3215080409040E1F700C00000B4
-:1010C00080E40E94A0088093000181112EC00E943C
-:1010D000CA0880930001811128C00E94CA08809329
-:1010E0000001811122C08FE30E94CA088093000191
-:1010F00081111BC00E94C20880E40E94A008809356
-:101100000001811112C08CE00E94CA088093000186
-:1011100081110BC00E94CA0880930001811105C093
-:101120008FE30E94CA08809300010E94C208809148
-:10113000000108951092B9008AE08093B8000895E4
-:1011400094EA9093BC009091BC0097FFFCCF9091E3
-:10115000B900987F983021F0903111F081E0089526
-:101160008093BB0084E88093BC008091BC0087FF23
-:10117000FCCF8091B900887F883111F0803471F7FD
-:1011800080E0089584E98093BC008091BC0084FDD8
-:10119000FCCF08958093BB0084E88093BC008091CD
-:1011A000BC0087FFFCCF9091B900987F81E0983216
-:1011B00009F480E0089584E88093BC008091BC002D
-:1011C00087FFFCCF8091BB000895809100018111C1
-:1011D00015C080E40E94A0088093000181110CC01A
-:1011E00082E10E94CA0880930001811105C08FEF3F
-:1011F0000E94CA08809300010E94C20884B1807FC7
-:1012000084B985B1807F85B98AB1837F8AB98BB172
-:10121000837F8BB93E98469808950E944B0880932F
-:1012200000010E94E50880B38C7080BB81B3836F9E
-:1012300081BBECE4F1E0AEE3B1E011921D9281E0FC
-:10124000EA35F807D1F78EE298E0892B11F00C947B
-:101250002E0808959F92AF92BF92CF92DF92EF92A5
-:10126000FF920F931F93CF93DF9380910001882308
-:10127000E1F080913D018F5F80933D01811115C0A8
-:101280008AE992E00E9401070E944B0880930001C6
-:10129000882329F080E892E00E94010706C08CE6CE
-:1012A00092E00E9401070E94D6070EE311E0C0E021
-:1012B000D0E0BB24B39482E0A82ECC24C394D12CDC
-:1012C0002DE5E22E22E0F22EC73000F580910001DC
-:1012D000811162C080E40E94A00880930001811106
-:1012E00012C082E10E94CA088093000181110BC0E4
-:1012F000C6010C2E01C0880F0A94EAF780950E945F
-:10130000CA08809300010E94C20846C0CA30A1F0FA
-:1013100028F4C83059F0C93061F005C0CC3089F0EC
-:1013200070F0CD3089F0209A289810C0219A299821
-:101330000DC0229A2A980AC0239A2B9807C0529A65
-:1013400001C0539A5B9802C03E9A4698E0EAEA953B
-:10135000F1F78FB1799985C092E081708B25892B47
-:101360007C9B02C090E001C094E0892B7D9B02C071
-:1013700090E001C098E0892B7E9B02C090E001C004
-:1013800090E1892B9FB19095991F9927991F92956C
-:10139000990F907E892B10C080910001811176C039
-:1013A00080E40E94A00880930001882309F45BC0B8
-:1013B000912C0E94C208892DF8019081981739F16B
-:1013C000808380910101882301F18091D70180FF02
-:1013D00004C082E692E00E9401078091D70180FF5D
-:1013E0000CC0809101011F928F93FF92EF920E9497
-:1013F0009A070F900F900F900F908091D70180FF68
-:1014000004C08BE592E00E940107A09201010E94B6
-:10141000E50821960F5F1F4FCE30D10509F054CF5C
-:10142000809101018823B1F08150809301018823CC
-:1014300039F08FE99FE00197F1F700C000000AC082
-:10144000ACE4B1E0EEE3F1E081918D9391E0EC3416
-:10145000F907D1F78DEC97E0892BD1F00E94CD07E9
-:1014600017C090E07ACF83E10E94CA088093000100
-:1014700081119ECF81E40E94A00880930001811118
-:1014800097CF0E94DB08982E909493CF80E094CF62
-:1014900081E0DF91CF911F910F91FF90EF90DF904E
-:1014A000CF90BF90AF909F900895E82FF0E0E45B5D
-:1014B000FE4F80810895CF92DF92EF92FF920F93BB
-:1014C0001F93CF93DF9384E492E00E9401073CE4F2
-:1014D000E32E31E0F32EC0E0D0E04FE3C42E42E033
-:1014E000D42E06E312E0DF93CF93DF92CF920E94D7
-:1014F0009A078CE392E00E940107F70181917F0136
-:1015000090E00E9420219F938F931F930F930E943E
-:101510009A0784E392E00E94010721968DB79EB757
-:1015200008960FB6F8949EBF0FBE8DBFCE30D10582
-:10153000D1F6DF91CF911F910F91FF90EF90DF9047
-:10154000CF9008958B3B910578F4883A910540F54A
-:10155000853A9105D0F48430910508F0B1C081300E
-:10156000910509F4ADC06BC0803E910508F467C0D9
-:10157000883E910508F4A4C09C01205F3109203108
-:10158000310508F05CC090650895853A910509F42D
-:1015900059C0863A910509F458C083E890E408954B
-:1015A000883A910509F454C0893A910509F453C069
-:1015B0008A3A910509F452C08B3A910509F451C059
-:1015C0008C3A910509F450C08D3A910509F44FC049
-:1015D000803B910509F44EC08E3A910509F44DC047
-:1015E0008F3A910509F44CC0813B910509F44BC039
-:1015F000823B910509F44AC0833B910509F449C037
-:10160000843B910509F448C0853B910509F447C026
-:10161000863B910509F446C0873B910509F445C016
-:10162000883B910509F444C0893B910509F443C006
-:101630008A3B910509F042C08AE296E4089580E071
-:1016400090E0089581E890E4089582E890E4089598
-:1016500082EE94E4089589EE94E408958AEE94E489
-:10166000089585EB94E4089586EB94E4089587EB60
-:1016700094E408958CEC94E408958DEC94E408953A
-:1016800083E895E408958AE895E4089582E995E46D
-:10169000089584E995E4089581E296E4089583E24B
-:1016A00096E4089584E296E4089585E296E4089528
-:1016B00086E296E4089587E296E4089580E094E453
-:1016C0000895089596E0799FF001112494E5899F8B
-:1016D000E00DF11D1124E60FF11DEE0FFF1FEC517F
-:1016E000FF4F859194910895880F991F805A9040DB
-:1016F000FC01859194910895880F991F80529F4F06
-:10170000FC0185919491089526E0729FF0011124C7
-:1017100044E5849FE00DF11D1124E60FF11DEE0F4D
-:10172000FF1FEC51FF4F25913491C9019A95811506
-:101730009F4110F4C9010895C9019052811590414B
-:1017400028F4C9019F700E947C0B0895C901905331
-:101750008115904120F4C9019927906C08952115B5
-:1017600080E5380769F40E94491A9FEF24E34CE0B2
-:10177000915020404040E1F700C000000C94DC2173
-:10178000213080E5380751F484EB92E00E94010794
-:101790008091D70181608093D7010895C901905548
-:1017A0008115904108F050C0832F99278F70992799
-:1017B00081309105D9F4A9014370552702C0880FE3
-:1017C000991F4A95E2F79C68A90164E0440F551FF0
-:1017D0006A95E1F744275370842B952B73E0220F11
-:1017E000331F7A95E1F7207633271DC082309105AB
-:1017F00029F4922F8827816F906A0895833091058C
-:10180000A9F4A9014370552781E090E002C0880F38
-:10181000991F4A95E2F79C6843E0220F331F4A95CF
-:10182000E1F7207E3770822B932B08950497F1F413
-:10183000A9014370552781E090E002C0880F991FED
-:101840004A95E2F79A68E8CFC9019057811590410F
-:1018500020F4C9019F7090620895C90190588115C4
-:10186000904120F4C9019F70906A0895203E31058F
-:10187000E0F4203C310558F52133310509F470C0FE
-:1018800048F42932310509F464C02A32310509F4DB
-:101890006EC074C029333105F1F022383105D9F01A
-:1018A0002533310509F44EC069C0233E310589F165
-:1018B00038F4203E3105C1F0223E3105E1F05EC032
-:1018C000263E310569F1273E3105A9F157C0C9010E
-:1018D0000E94740B08958091EA0180FD02C081FF8F
-:1018E0004DC080EE90E04BC08091EA0180FFF9CFBF
-:1018F00089E390E044C08091EA0182FF0EC08091AC
-:10190000EA0184FF03C080E090E039C083EE90E0FC
-:1019100036C08091EA0182FFF2CF82EE90E02FC0C4
-:101920008091EA0183FF0BC08091EA0184FDEBCF37
-:1019300087EE90E024C08091EA0183FFF5CF86EE28
-:1019400090E01DC08091EA0185FF07C089E290E028
-:1019500016C08091EA0185FFF9CF85E390E00FC0C2
-:101960008091EA0186FF07C08AE290E008C080917A
-:10197000EA0186FFF9CF81E390E001C0C9010E942E
-:10198000A20A0895089580916D0108959FB7F89473
-:1019900010925C019FBF9091F001943009F058C003
-:1019A0009091E9009F702091EC0020FF02C020E898
-:1019B00001C020E0292B94E09093E9009091EB0086
-:1019C00090FF43C09091EE0097FF3FC090915A0165
-:1019D000992321F09091E80095FF37C010925A01A9
-:1019E00096E03091E80035FD15C03091F0013430BB
-:1019F00061F53091EB0035FD28C0915021F481E074
-:101A000080935A0122C0EFE9FFE03197F1F700C05F
-:101A10000000E7CF8093F1008091E80085FD0AC0C7
-:101A20008091E80080FFFCCF8091E8008E77809362
-:101A3000E80006C08FB7F89491E090935C018FBFE7
-:101A40002F702093E90080E008952F702093E90023
-:101A50008FEF0895CF93DF9300D01F92CDB7DEB7FD
-:101A60002091F001243019F523E029839B838A8398
-:101A70002093E9008FEF9091E800815095FD06C01A
-:101A800095ED9A95F1F700008111F5CF8091E8006E
-:101A900085FF0DC040E050E063E070E0CE010196AC
-:101AA0000E94F90F8091E8008E778093E8000F90F4
-:101AB0000F900F90DF91CF910895CF93DF9300D0D7
-:101AC0001F92CDB7DEB72091F001243021F522E03E
-:101AD00029839B838A8383E08093E9008FEF909131
-:101AE000E800815095FD06C095ED9A95F1F700004C
-:101AF0008111F5CF8091E80085FF0DC040E050E0F6
-:101B000063E070E0CE0101960E94F90F8091E80039
-:101B10008E778093E8000F900F900F90DF91CF9118
-:101B200008952091F0012430F1F422E02093E9009F
-:101B30002FEF3091E800215035FD06C035ED3A9584
-:101B4000F1F700002111F5CF2091E80025FF0BC02F
-:101B500040E050E065E070E00E94F90F8091E800FD
-:101B60008E778093E8000895CF93DF93EC01809106
-:101B7000F001843009F047C080910C018823E1F026
-:101B800080910D018823C1F085E08093E9008FEFFB
-:101B90009091E800815095FD06C095E19A95F1F786
-:101BA00000008111F5CF8091E80085FF2CC040E056
-:101BB00050E060E170E017C081E08093E9008FEFB2
-:101BC0009091E800815095FD06C095ED9A95F1F74A
-:101BD00000008111F5CF8091E80085FF14C040E03E
-:101BE00050E068E070E0CE010E94F90F8091E800BB
-:101BF0008E778093E80080E1FE01ADE5B1E00190D1
-:101C00000D928A95E1F7DF91CF9108958BEE92E0E6
-:101C10000E9401078091EF01811109C00E948B1180
-:101C20000E94E8118091E20084608093E2000895B0
-:101C300087EE92E00E9401071092EF01089583EE73
-:101C400092E00C9401078FED92E00E9401070C9442
-:101C50009D2B8BED92E00E9401070E9477210E944C
-:101C6000A32B0E9484140C94C20C80915B018F5FA3
-:101C700080935B0162E30E94112D911135C0109297
-:101C80005B0180915C01882379F18091F0018430BF
-:101C900049F58091E9008F709091EC0090FF02C0AF
-:101CA00090E801C090E0982B84E08093E900809157
-:101CB000EB0080FF14C08091EE0087FF10C0809180
-:101CC000E80085FF03C01092F100F9CF8091E80091
-:101CD00080FF05C08091E8008E778093E8009F70B8
-:101CE0009093E90010925C01089542E061EC81E07C
-:101CF0000E94051142E061EC82E00E94051142E081
-:101D000061EC83E00E94051142E261EC84E00E94F4
-:101D1000051142E161EC85E00C9405118091F2011E
-:101D2000833009F455C030F4813071F0823009F409
-:101D30008EC008958A3009F47AC08B3009F460C0EF
-:101D4000893009F09CC020C08091F101813A09F0EE
-:101D500096C08091E800877F8093E8008091F5012C
-:101D60009091F601892B21F060E080E090E003C0C3
-:101D700060E18DE591E070E00E9442108091E80002
-:101D80008B778093E80008958091F101813209F00A
-:101D900076C08091F5019091F601009719F00497B3
-:101DA00009F06DC08091E800877F8093E800809102
-:101DB000E80082FD05C08091F0018111F8CF5FC07D
-:101DC0008091F10080936D018091E8008B7753C082
-:101DD0008091F101813A09F052C08091F501909112
-:101DE000F601892B09F04BC08091E800877F809332
-:101DF000E8008091E80080FFFCCF80910C0136C0A4
-:101E00008091F1018132D9F58091F5019091F6012F
-:101E1000892BA9F58091E800877F8093E8000E94D4
-:101E20003A118091F30180930C010C94491A80912E
-:101E3000F101813221F58091E800877F8093E800ED
-:101E40000E943A118091F40180936E01089580916F
-:101E5000F101813AA1F48091E800877F8093E80046
-:101E60008091E80080FFFCCF80916E018093F100AB
-:101E70008091E8008E778093E8000C943A110895E1
-:101E800084B7877F84BF88E10FB6F89480936000A1
-:101E9000109260000FBE90E080E80FB6F894809337
-:101EA0006100909361000FBE0E940D150E948B117E
-:101EB0000E94E8118091E20084608093E20086EC49
-:101EC0009CE00E94B62078940E9462140E940F1534
-:101ED00082E091E00E947F140E948B2B8AEC92E0BA
-:101EE0000E9401078091F001853089F486EC92E030
-:101EF0000E9401070E943A218091EE01882391F30C
-:101F00000E946221882371F30E94E30FEBCF0E94AD
-:101F10003D15E8CF292F332723303105A9F06CF484
-:101F20002130310509F442C02230310509F043C0A7
-:101F30008DE890E023E233E042C021323105C9F060
-:101F40002232310519F137C099278130910541F0CE
-:101F50008230910541F0892B71F5EFE1F3E005C086
-:101F6000E7E0F3E002C0EFEEF2E0849190E09F0141
-:101F700026C0653000F5E62FF0E0EE0FFF1FEB5DA9
-:101F8000FE4F2081318189E090E019C0653098F4DE
-:101F9000E62FF0E0DF01AA0FBB1FA55EBE4F2D911B
-:101FA0003C91EA5EFE4F808190E009C082E190E0C2
-:101FB00020EB33E004C080E090E020E030E0FA0164
-:101FC00031832083089580E189BD82E189BD09B410
-:101FD00000FEFDCF8091D8008F7D8093D800809146
-:101FE000E00082608093E0008091E00081FDFCCF02
-:101FF0000895CF92DF92EF92FF920F931F93CF93AA
-:10200000DF937C018B01EA010E945B11811131C0D9
-:10201000209731F088819981081B190BE80EF91E71
-:10202000C12CD12C0115110519F18091E80085FD15
-:1020300014C08091E8008E778093E800209741F0EB
-:10204000888199818C0D9D1D9983888385E011C0BD
-:102050000E945B11882331F30CC0F70181917F014D
-:102060008093F10001501109FFEFCF1ADF0ADACF98
-:1020700080E0DF91CF911F910F91FF90EF90DF9063
-:10208000CF9008952091F7013091F8012617370776
-:1020900048F06115710539F42091E8002E772093FE
-:1020A000E80001C0B901FC0120E061157105B9F13A
-:1020B0008091F001882309F440C0853009F43FC0C5
-:1020C0008091E80083FD3DC08091E80082FF06C05A
-:1020D0008091E80082FF26C080E008958091E800AA
-:1020E00080FFE3CF2091F3008091F20090E0922BEB
-:1020F0006115710551F08830910538F421912093D4
-:10210000F100615071090196F3CF21E0089709F0C1
-:1021100020E08091E8008E778093E800C6CF2111FF
-:10212000C7CFD6CF8091F001882339F0853039F0C0
-:102130008091E80083FFCCCF04C082E0089583E063
-:10214000089581E008952091F7013091F801261754
-:10215000370748F06115710539F42091E8002E77B2
-:102160002093E80001C0B901FC0120E06115710570
-:10217000C1F18091F001882309F441C0853009F450
-:1021800040C08091E80083FD3EC08091E80082FF5E
-:1021900006C08091E80082FF27C080E0089580910A
-:1021A000E80080FFE3CF2091F3008091F20090E0FF
-:1021B000922B6115710559F08830910540F42491F6
-:1021C0002093F1003196615071090196F2CF21E020
-:1021D000089709F020E08091E8008E778093E8006E
-:1021E000C5CF2111C6CFD5CF8091F001882339F01A
-:1021F000853039F08091E80083FFCBCF04C082E0C6
-:10220000089583E0089581E00895982F973058F558
-:102210009093E900981739F07091EC002091ED004F
-:102220005091F00003C0242F762F50E021FF19C0F9
-:102230003091EB003E7F3093EB003091ED003D7F1D
-:102240003093ED003091EB0031603093EB007093F0
-:10225000EC002093ED005093F0002091EE0027FF5A
-:1022600007C09F5FD3CF8F708093E90081E008950E
-:1022700080E008958091F10187FD05C08091E8001C
-:1022800080FF0EC012C08091E80082FD05C08091E1
-:10229000F0018111F8CF08958091E8008B7708C094
-:1022A0008091F0018111EACF08958091E8008E7746
-:1022B0008093E80008958091E4009091E50045E660
-:1022C0002091EC0020FF21C02091E80020FD21C0DA
-:1022D0002091F001222389F0253089F02091EB0034
-:1022E00025FD0FC02091E4003091E5002817390743
-:1022F00039F3415041F0C901E3CF82E0089583E012
-:10230000089581E0089584E008952091E80022FF77
-:10231000DFCF80E008950E94F9110E940112E0EEE3
-:10232000F0E0808181608083E8EDF0E080818F774C
-:10233000808319BCA7EDB0E08C918E7F8C93808157
-:102340008F7E80831092EF0108950F931F93CF9398
-:10235000DF930E94F9110E940112C8EDD0E088813C
-:102360008F77888388818068888388818F7D888340
-:1023700019BC1092F0011092EC011092EE01109233
-:10238000ED0100EE10E0F80180818B7F8083888171
-:102390008160888342E060E080E00E940511E1EE08
-:1023A000F0E080818E7F8083E2EEF0E080818160CA
-:1023B0008083808188608083F80180818E7F808324
-:1023C000888180618883DF91CF911F910F9108955B
-:1023D000E8EDF0E080818F7E8083E7EDF0E08081A2
-:1023E0008160808384E082BF81E08093EF010C9460
-:1023F000A511E8EDF0E080818E7F80831092E200ED
-:1024000008951092DA001092E10008951F920F9241
-:102410000FB60F9211242F933F934F935F936F93B7
-:102420007F938F939F93AF93BF93EF93FF9380918D
-:10243000E10082FF0BC08091E20082FF07C0809123
-:10244000E1008B7F8093E1000E94350E8091DA00DD
-:1024500080FF1FC08091D80080FF1BC08091DA00F0
-:102460008E7F8093DA008091D90080FF0DC080E1DB
-:1024700089BD82E189BD09B400FEFDCF81E0809372
-:10248000F0010E94060E05C019BC1092F0010E94D6
-:10249000180E8091E10080FF19C08091E20080FF5A
-:1024A00015C08091E2008E7F8093E2008091E2006F
-:1024B00080618093E2008091D80080628093D80090
-:1024C00019BC85E08093F0010E94230E8091E10009
-:1024D00084FF30C08091E20084FF2CC080E189BD80
-:1024E00082E189BD09B400FEFDCF8091D8008F7DC7
-:1024F0008093D8008091E1008F7E8093E1008091ED
-:10250000E2008F7E8093E2008091E2008160809300
-:10251000E2008091EC01882311F084E007C08091F3
-:10252000E30087FF02C083E001C081E08093F001F7
-:102530000E94290E8091E10083FF29C08091E20072
-:1025400083FF25C08091E100877F8093E10082E0D6
-:102550008093F0011092EC018091E1008E7F8093D6
-:10256000E1008091E2008E7F8093E2008091E200A2
-:1025700080618093E20042E060E080E00E9405110B
-:102580008091F00088608093F0000E941F0EFF9100
-:10259000EF91BF91AF919F918F917F916F915F91DB
-:1025A0004F913F912F910F900FBE0F901F90189554
-:1025B0001F920F920FB60F9211242F933F934F93B8
-:1025C0005F936F937F938F939F93AF93BF93CF93BB
-:1025D000EF93FF93C091E900CF708091EC001092CF
-:1025E000E9008091F000877F8093F00078940E944A
-:1025F00014131092E9008091F00088608093F0003D
-:10260000C093E900FF91EF91CF91BF91AF919F915E
-:102610008F917F916F915F914F913F912F910F908B
-:102620000FBE0F901F9018951F93CF93DF93CDB7D8
-:10263000DEB7AA970FB6F894DEBF0FBECDBFE1EFAD
-:10264000F1E08091F100819321E0E93FF207C9F7C1
-:102650000E948E0E8091E80083FF1CC12091F10141
-:102660003091F201832F90E08A30910508F012C179
-:10267000FC01EA5AFF4F0C94312D203881F02238AA
-:1026800009F008C18091F5018F708093E900809175
-:10269000EB0085FB882780F91092E90006C0809145
-:1026A000ED019091EE01911182609091E800977F89
-:1026B0009093E8008093F1001092F100C5C0822F42
-:1026C0008D7F09F0E7C0222319F0223061F0E2C0CB
-:1026D0008091F301813009F0DDC0333009F080E0F2
-:1026E0008093EE0128C08091F301811124C02091D4
-:1026F000F5012F7009F4CEC02093E9008091EB0022
-:1027000080FF19C08091EB00333011F4806211C05A
-:1027100080618093EB0081E090E0022E01C0880F81
-:102720000A94EAF78093EA001092EA008091EB00A5
-:1027300088608093EB001092E9008091E800877F29
-:1027400086C02111A7C01091F3011F778091E3008B
-:102750008078812B8093E3008091E800877F8093CD
-:10276000E8000E943A118091E80080FFFCCF809140
-:10277000E30080688093E300112311F083E001C03F
-:1027800082E08093F00186C02058223008F082C099
-:102790008091F3019091F4018C3D23E0920779F54B
-:1027A00083E08A838AE289834FB7F894DE01139627
-:1027B00020E03EE051E2E32FF0E050935700E49137
-:1027C00020FF03C0E295EF703F5FEF708E2F90E027
-:1027D000EA3010F0C79601C0C0968D939D932F5F8D
-:1027E000243149F74FBF8091E800877F8093E8004C
-:1027F0006AE270E0CE0101960E94421014C0AE0160
-:102800004F5F5F4F6091F5010E948A0F009709F4B6
-:1028100041C02091E800277F2093E800BC01898116
-:102820009A810E94A3108091E8008B778093E80042
-:1028300031C0203879F58091E800877F8093E800E7
-:102840008091EC018093F1008091E8008E77809375
-:10285000E8000E943A111EC021111CC09091F301A2
-:102860009230C0F48091E800877F8093E8009093D5
-:10287000EC010E943A118091EC01811104C0809119
-:10288000E30087FF02C084E001C081E08093F00193
-:102890000E94750E8091E80083FF0AC08091E800D5
-:1028A000877F8093E8008091EB0080628093EB004B
-:1028B000AA960FB6F894DEBF0FBECDBFDF91CF91C1
-:1028C0001F910895CF938091F0018823B1F08091FA
-:1028D000E9008F709091EC0090FF02C090E801C079
-:1028E00090E0C92FC82B1092E9008091E80083FD89
-:1028F0000E941413CF70C093E900CF910895909374
-:102900007401809373010895E0917301F091740153
-:10291000309721F00190F081E02D099480E0089536
-:10292000FF920F931F93CF93DF938C01E09173017C
-:10293000F0917401309799F10280F381E02D0995AF
-:102940008091D70182FF2BC080FF04C085EE94E008
-:102950000E940107E80180E1F82E0FED14E080915C
-:10296000D70180FF0BC088811F928F931F930F9315
-:102970000E949A070F900F900F900F90FA94219653
-:10298000F110EDCF8091D70180FF09C08DED94E06B
-:10299000DF91CF911F910F91FF900C940107DF9170
-:1029A000CF911F910F91FF900895E0917301F091E5
-:1029B0007401309721F00480F581E02D0994089589
-:1029C00020917101309172018217930771F09093F9
-:1029D000720180937101E0917301F091740130975D
-:1029E00021F00680F781E02D0994089520916F0170
-:1029F000309170018217930771F09093700180936A
-:102A00006F01E0917301F0917401309721F000841F
-:102A1000F185E02D0994089508950C940C150E94F9
-:102A200079210E940D090C943F22CF93C82F8091E9
-:102A3000D70182FF1EC080FF04C08EEF94E00E9489
-:102A400001078091D70180FF0CC01F92CF9329EF1F
-:102A500034E03F932F930E949A070F900F900F90AE
-:102A60000F908091D70180FF04C087EF94E00E940F
-:102A700001078C2FCF910C94C20CCF92DF92EF9272
-:102A8000FF920F931F93CF93DF93CDB7DEB72B97B2
-:102A90000FB6F894DEBF0FBECDBF0E942A0936E7FD
-:102AA000E32E31E0F32E00E010E0C02E802F0E94D4
-:102AB000550AF701D1907F01D826B1F40F5F1F4F5F
-:102AC0000E30110591F78FEF89838A831B820E9454
-:102AD00082218160782F9D838C8349815A816B810B
-:102AE0008D810E94E01541C09091D70191FF04C0F3
-:102AF0008B870E945B0A8B8520E030E04D2D50E0F3
-:102B0000922FBA01022E02C0759567950A94E2F7DA
-:102B100060FF25C02E83CF82EE24E394F12C02C007
-:102B2000EE0CFF1C9A95E2F790E08E219F2121E0A8
-:102B3000892B09F420E028870E9482218160782F68
-:102B40009A8789874E815F8168858A850E94E01512
-:102B5000F801EA58FE4F80818E25808306C02F5FE2
-:102B60003F4F2630310561F6A9CF0E94AD25109167
-:102B700075010E9484141817A1F00E948414809398
-:102B800075012B960FB6F894DEBF0FBECDBFDF9157
-:102B9000CF911F910F91FF90EF90DF90CF900C9409
-:102BA00015152B960FB6F894DEBF0FBECDBFDF9183
-:102BB000CF911F910F91FF90EF90DF90CF900895EC
-:102BC000CF93DF93CDB7DEB72B970FB6F894DEBF68
-:102BD0000FBECDBF4F83588769877A878B87DE0109
-:102BE000119686E0FD0111928A95E9F785E0FE01D4
-:102BF000379601900D928A95E1F749815A816B8150
-:102C00007C818D819E810E94151D2B960FB6F894B4
-:102C1000DEBF0FBECDBFDF91CF910895CF93C82FF8
-:102C2000882309F4C1C0823859F40E94841481FDBC
-:102C3000BBC089E30E94B41F0E94902089E30CC0AE
-:102C4000833879F40E94841480FDAEC083E50E942D
-:102C5000B41F0E94902083E50E940520CF910C9420
-:102C60009020843859F40E94841482FD9DC087E42A
-:102C70000E94B41F0E94902087E4EECF8CEF8C0F4F
-:102C8000813A48F48C2F0E94362A81118DC08C2FF6
-:102C90000E94B41FE3CF80E28C0F883048F4C770E5
-:102CA00081E001C0880FCA95EAF70E945720D6CF6D
-:102CB0008BE58C0F833078F4C53A29F0C63A31F4AD
-:102CC00082E890E005C081E890E002C083E890E0EF
-:102CD000CF910C94E01488E58C0F833108F064C028
-:102CE000C83A39F1C93A41F1CA3A49F1CB3A51F1FE
-:102CF000CC3A59F1CD3A61F1C03B69F1CE3A71F16C
-:102D0000CF3A79F1C13B81F1C23B89F1C33B91F1EB
-:102D1000C43B99F1C53BA1F1C63BA9F1C73BB1F159
-:102D2000C83BB9F1C93BC1F1CA3BC9F58AE292E09F
-:102D300038C082EE90E035C089EE90E032C08AEE75
-:102D400090E02FC085EB90E02CC086EB90E029C08E
-:102D500087EB90E026C08CEC90E023C08DEC90E0F7
-:102D600020C083E891E01DC08AE891E01AC082E9A2
-:102D700091E017C084E991E014C081E292E011C0B3
-:102D800083E292E00EC084E292E00BC085E292E022
-:102D900008C086E292E005C087E292E002C080E0CF
-:102DA00090E0CF910C94F614CF910895882309F404
-:102DB0004BC0823859F40E94841481FF45C089E3D6
-:102DC0000E94B41F0E94902089E30CC0833871F4E4
-:102DD0000E94841480FF38C083E50E94B41F0E94C3
-:102DE000902083E50E9405200C949020843859F4AB
-:102DF0000E94841482FF28C087E40E94B41F0E94AE
-:102E0000902087E4EFCF9CEF980F913A58F390E22F
-:102E1000980F983050F4877091E001C0990F8A950F
-:102E2000EAF7892F0E945D20DFCF9BE5980F933052
-:102E300020F480E090E00C94E014885A833120F470
-:102E400080E090E00C94F6140895882321F00E940D
-:102E500057200C9490200895882321F00E945D2033
-:102E60000C9490200895CF92DF92EF92FF920F93EF
-:102E70001F93CF93DF93CDB7DEB728970FB6F894A3
-:102E8000DEBF0FBECDBF8C0185E0F801DE011196DB
-:102E900001900D928A95E1F7F80140813181F2802D
-:102EA000258122952F7083819481892B31F03F3FBA
-:102EB00031F481E04F3F19F403C081E001C080E0AC
-:102EC00080FDC6C249833A8389819A812F830E94FB
-:102ED000721F9E8388870E94711F0E94441E4E812C
-:102EE000E42FE295EF70F0E0E05AFF4F2F81688504
-:102EF0000C94312D842F807F142F1F70882311F0A4
-:102F00001295107FFF2059F0112309F456C2812F2A
-:102F100068870E9467200E94902068854EC2862F95
-:102F20000E94D616112309F493C2812F0E946D20AE
-:102F300028960FB6F894DEBF0FBECDBFDF91CF91BC
-:102F40001F910F91FF90EF90DF90CF900C94902005
-:102F5000342F307F842F8F70303211F08295807F34
-:102F6000662319F0613019F12CC0FF20B1F0222343
-:102F700009F494C1213009F091C128960FB6F89454
-:102F8000DEBF0FBECDBFDF91CF911F910F91FF909C
-:102F9000EF90DF90CF900C947720222319F021300E
-:102FA00009F456C28E830E947A208E818AC1FF2046
-:102FB00021F0263008F04CC271C1253008F048C21B
-:102FC00080C1FF2021F0222309F468C1F6C1222329
-:102FD00009F477C106C2242F26952695237030E088
-:102FE0002115310521F021303105C9F031C2FF2012
-:102FF00021F0862F942F937002C080E090E02896F5
-:103000000FB6F894DEBF0FBECDBFDF91CF911F91F9
-:103010000F91FF90EF90DF90CF900C94E014FF2081
-:1030200021F0862F942F937002C080E090E02896C4
-:103030000FB6F894DEBF0FBECDBFDF91CF911F91C9
-:103040000F91FF90EF90DF90CF900C94F614862FA5
-:10305000FF2019F00E94332402C00E949B2428966E
-:103060000FB6F894DEBF0FBECDBFDF91CF911F9199
-:103070000F91FF90EF90DF90CF900C942025842F3C
-:10308000837009F076C0F110E3C1262F22952695B2
-:103090002770220F220F862F8F70C82ED12CE12C83
-:1030A000F12C022E04C0CC0CDD1CEE1CFF1C0A947B
-:1030B000D2F764FF10C06FE070E080E090E004C0E1
-:1030C000660F771F881F991F2A95D2F76095709514
-:1030D0008095909503C060E070E0CB01242F269589
-:1030E00026952370422F50E042305105D1F04330F5
-:1030F000510559F16C297D298E299F2941305105AF
-:1031000041F128960FB6F894DEBF0FBECDBFDF9118
-:10311000CF911F910F91FF90EF90DF90CF900C9483
-:10312000691E6C297D298E299F2928960FB6F8944F
-:10313000DEBF0FBECDBFDF91CF911F910F91FF90EA
-:10314000EF90DF90CF900C94831E0E94691EC70100
-:10315000B60128960FB6F894DEBF0FBECDBFDF9143
-:10316000CF911F910F91FF90EF90DF90CF900C9433
-:103170004F1EFF2019F0842F817001C0869588238F
-:1031800009F466C1262F229526952770220F220F5B
-:10319000862F8F70C82ED12CE12CF12C022E04C06A
-:1031A000CC0CDD1CEE1CFF1C0A94D2F764FF10C08F
-:1031B0006FE070E080E090E004C0660F771F881F2A
-:1031C000991F2A95D2F7609570958095909503C0C8
-:1031D00060E070E0CB01242F269526952370422FC6
-:1031E00050E042305105D1F04330510559F16C297E
-:1031F0007D298E299F294130510541F128960FB62E
-:10320000F894DEBF0FBECDBFDF91CF911F910F911C
-:10321000FF90EF90DF90CF900C943D1F6C297D299B
-:103220008E299F2928960FB6F894DEBF0FBECDBF1A
-:10323000DF91CF911F910F91FF90EF90DF90CF9092
-:103240000C94571F0E943D1FC701B60128960FB668
-:10325000F894DEBF0FBECDBFDF91CF911F910F91CC
-:10326000FF90EF90DF90CF900C94231F603FC9F147
-:1032700018F4603E50F49CC0623F09F461C008F449
-:103280004BC0633F09F470C093C0162F1F70842F8A
-:103290008F71FF2099F00E94BC1E812F28960FB6D7
-:1032A000F894DEBF0FBECDBFDF91CF911F910F917C
-:1032B000FF90EF90DF90CF900C9425170E94DD1EB9
-:1032C000812F28960FB6F894DEBF0FBECDBFDF91D9
-:1032D000CF911F910F91FF90EF90DF90CF900C94C2
-:1032E0002C17FF20A9F0253008F0B2C0842F8F7171
-:1032F00028960FB6F894DEBF0FBECDBFDF91CF91F9
-:103300001F910F91FF90EF90DF90CF900C94021FD0
-:10331000263008F09DC0EACFFF20A1F0842F8F71E6
-:1033200028960FB6F894DEBF0FBECDBFDF91CF91C8
-:103330001F910F91FF90EF90DF90CF900C94BC1EE7
-:10334000FF2061F3842F8F7128960FB6F894DEBFAB
-:103350000FBECDBFDF91CF911F910F91FF90EF90E6
-:10336000DF90CF900C94DD1EFF2091F0842F8F71A1
-:1033700028960FB6F894DEBF0FBECDBFDF91CF9178
-:103380001F910F91FF90EF90DF90CF900C94A71EAC
-:1033900028960FB6F894DEBF0FBECDBFDF91CF9158
-:1033A0001F910F91FF90EF90DF90CF900C949D1E96
-:1033B000FF20A1F0222309F4B1CF862F28960FB663
-:1033C000F894DEBF0FBECDBFDF91CF911F910F915B
-:1033D000FF90EF90DF90CF900C940E16222309F40B
-:1033E000B1CF862F28960FB6F894DEBF0FBECDBFA3
-:1033F000DF91CF911F910F91FF90EF90DF90CF90D1
-:103400000C94D6164F70C8010E94A30728960FB6D9
-:10341000F894DEBF0FBECDBFDF91CF911F910F910A
-:10342000FF90EF90DF90CF900C94C21D4F70C801B9
-:1034300028960FB6F894DEBF0FBECDBFDF91CF91B7
-:103440001F910F91FF90EF90DF90CF900C94610B44
-:1034500028960FB6F894DEBF0FBECDBFDF91CF9197
-:103460001F910F91FF90EF90DF90CF9008950E94F1
-:1034700074200E9449200E9490200E944E260E94A3
-:10348000202580E090E00E94E01480E090E00C9421
-:10349000F6140E9464200C94371A0E94721F292F80
-:1034A00022952F7030E02C3031054CF42A30310554
-:1034B0006CF4225031092230310590F407C02C30D1
-:1034C000310551F02F30310539F00AC0803E10F03F
-:1034D000803F31F481E0089593FB882780F90895B7
-:1034E00080E00895CF93DF9300D000D01F92CDB736
-:1034F000DEB70F900F900F900F900F90DF91CF914C
-:103500000895CF93DF9300D000D000D0CDB7DEB7C1
-:1035100026960FB6F894DEBF0FBECDBFDF91CF91D8
-:1035200008951F93CF93DF93C091840116E080919B
-:103530008501C81799F0D0E01C9FF0011D9FF00D88
-:103540001124EA57FE4F4081518162817381848149
-:1035500095810E94811A2196C770E9CFDF91CF91A2
-:103560001F9108954091B6015091B7016091B80143
-:103570007091B9018091BA019091BB010C94811AAC
-:10358000CF938091BB0182958F7009F05FC08091CD
-:10359000B801882309F45AC020918401A0918501C3
-:1035A0006091B6017091B7018091B9019091BA0113
-:1035B00031E06F3F09F030E0B32FC6E02A1709F47D
-:1035C00045C0009721F07F3F21F44B2F03C041E01D
-:1035D00001C040E030E040FD35C0C29FF001C39F14
-:1035E000F00D1124EA57FE4F418174132BC0408126
-:1035F000641328C04281411125C04381548148177A
-:10360000590710F441505109481B590B483C5105CA
-:10361000C8F48091BB018F7080618093BB0186E00C
-:10362000829FF001839FF00D1124E557FE4F8081AA
-:103630008F708061808386EB91E00E943317CF9179
-:103640000C94911A2F5F3F4F2770B8CFCF910895F8
-:10365000CF92DF92EF92FF920F931F93CF93DF935E
-:10366000CDB7DEB762970FB6F894DEBF0FBECDBF01
-:103670008C0185E0F801DE011D9601900D928A957E
-:10368000E1F7D8014C9111965C91119712966C91CB
-:1036900012971396ED90FC9014977091B601E091FB
-:1036A000B7012091B9013091BA012115310531F0EE
-:1036B000EF3F31F481E07F3F19F403C081E001C0A6
-:1036C00080E0B82FB170CB2E80FD6CC1D090B801D6
-:1036D000DD2009F4F5C0F091BB01E216F30638F0E5
-:1036E000C701821B930B883C910548F09BC0209535
-:1036F00030952E0D3F1D283C310508F093C08F2FCB
-:10370000807F09F052C0E51314C0741312C0D62E86
-:1037100061110FC0FF70F061F093BB010E94B21AFB
-:1037200086EB91E00E9433178091BB01F8018583FD
-:103730006CC1EF2831F05F3F31F481E04F3F19F465
-:1037400003C081E001C080E080FD03C081E08627E6
-:1037500001C080E0F82FF170FF2E80FF1CC0809127
-:1037600084012091850136E0821709F428C190E098
-:10377000389FF001399FF00D1124EA57FE4F7181F7
-:10378000571306C07081471303C07281671303C0CB
-:1037900001968770E9CFD62E662309F436C1809151
-:1037A000BB0181608093BB0153C0E51308C0741353
-:1037B00006C0611104C0D8011596FC93AEC04D87B8
-:1037C0005E878D859E856A8B0E944D1A6A89882343
-:1037D00029F1D62E662311F12091BB01822F82950B
-:1037E0008F7090E002970CF460C08091B6019091C8
-:1037F000B70198878F831986FB86EA862C87CE01CE
-:10380000079651C0E51731F14D875E878D859E85FE
-:103810006A8B0E944D1A6A8981112EC0C8010E94CC
-:103820003317A4C08F2F807F69F77E2DF98AE88A2D
-:1038300089890E94721A86EB91E00E943317E6EBA9
-:10384000F1E086E0DF011D928A95E9F70E94B21A45
-:10385000D12CDBC07413D8CF6111D6CFD801159607
-:10386000FC93C8010E943317E6EBF1E086E0DF012C
-:103870001D928A95E9F7C9C0D62E662379F2209168
-:10388000BB01822F82958F7090E0029774F0809137
-:10389000B6019091B7019A8389831B82FD82EC82E5
-:1038A0002E83CE0101960E94331786E0F801A6EB25
-:1038B000B1E001900D928A95E1F70E94C01A6FC0A5
-:1038C000E216F30628F0C701821B930B9C0104C08B
-:1038D000209530952E0D3F1D283C310508F052C033
-:1038E000D62E662309F49ACFE5132CC074132AC090
-:1038F0008091BB0180FD1DC0982F92959F70C9F0EB
-:10390000D80115968C9315979F3039F09F5F92954B
-:10391000907F8F70892B15968C93C8010E94331766
-:1039200086E0F801A6EBB1E001900D928A95E1F7EF
-:1039300036C086E0F801A6EBB1E001900D928A95C1
-:10394000E1F763C04D875E878D859E850E944D1A85
-:10395000882379F086E0F801A6EBB1E001900D92A2
-:103960008A95E1F70E94C01A0E94B21ADD24D3940E
-:103970004CC08091BB0181608093BB01C8010E9453
-:10398000331743C07E2DF98AE88A89890E94721A0A
-:10399000E6EBF1E086E0DF011D928A95E9F70E94EF
-:1039A000B21A33C0662309F439CF4D875E878D85FF
-:1039B0009E850E944D1A882309F430CFCBCF4D87C6
-:1039C0005E878D859E850E94721F292F22952F70FC
-:1039D00030E0223031052CF49F7041F0811106C097
-:1039E0000CC0243031052CF49F7049F4805E88307F
-:1039F00020F0C8010E943317CF2CDC2C06C0D80160
-:103A000015969C91907F91F7F8CF8D2D62960FB609
-:103A1000F894DEBF0FBECDBFDF91CF911F910F9104
-:103A2000FF90EF90DF90CF9008951F93CF93DF9397
-:103A3000CDB7DEB72C970FB6F894DEBF0FBECDBF63
-:103A40004F83588769877A878B879C87CE01079633
-:103A50000E94281B8823C1F02F8138858A859B8589
-:103A6000892B31F03F3F11F080E003C02F3FE1F799
-:103A700081E0811147C04F81588569857A858B85A2
-:103A80009C850E94811A3EC086E0FE013796DE01C9
-:103A9000119601900D928A95E1F7FF81E8854A859C
-:103AA0005B854115510531F0EF3F31F481E0FF3F77
-:103AB00019F403C081E001C080E080FD23C02091A3
-:103AC000850130E0C90101968770992760918401D2
-:103AD00070E086179707F1F1F983EA835D834C83E1
-:103AE00096E0929FD001939FB00D1124AA57BE4F2C
-:103AF000FE01319601900D929A95E1F78093850130
-:103B00000E94911A16E08091840190918501891795
-:103B100079F1189FC00111248A579E4F0E94281BDB
-:103B2000882331F1E09184011E9FF0011124EA57AE
-:103B3000FE4F4081518162817381848195810E9411
-:103B4000811A8091840190E0019687709927809373
-:103B50008401D9CF0E94491A1092850110928401E4
-:103B6000E6EBF1E086E0DF011D928A95E9F7CACF26
-:103B70002C960FB6F894DEBF0FBECDBFDF91CF916C
-:103B80001F910895EF92FF920F931F93CF93DF93AE
-:103B90009C01009709F471C0F12CEE24E394E90133
-:103BA0002196F9018491843740F4843008F056C09E
-:103BB000813081F0823021F160C0853709F449C03D
-:103BC000C0F19CE7980F903708F057C08F770E949C
-:103BD000D61646C089010E5F1F4FFE01849190E208
-:103BE000980F983050F48770FE2D01C0FF0F8A9512
-:103BF000EAF78F2F0E94672015C00E940E1614C08E
-:103C000089010E5F1F4FFE01849190E2980F98305A
-:103C100068F48770FE2D01C0FF0F8A95EAF78F2F99
-:103C20000E946D200E949020E8011AC00E94D616C2
-:103C3000FBCF2E5F3F4FFE01C491CC2341F08FE9B3
-:103C40009FE00197F1F700C00000C150F6CFE901F5
-:103C500007C0FE01F490E901229602C00E940E16F0
-:103C60008F2D882341F0EFE9FFE03197F1F700C095
-:103C700000008150F6CF9E0192CFDF91CF911F912E
-:103C80000F91FF90EF90089508956093C001709395
-:103C9000C1018093C2019093C3010C94371A0F9312
-:103CA0001F930091C0011091C1012091C201309178
-:103CB000C301062B172B282B392B0093C00110931F
-:103CC000C1012093C2013093C3011F910F910C9445
-:103CD000371A0F931F930091C0011091C1012091D9
-:103CE000C2013091C30106231723282339230093EF
-:103CF000C0011093C1012093C2013093C3011F91F1
-:103D00000F910C94371A0F931F930091C0011091DB
-:103D1000C1012091C2013091C3010627172728272E
-:103D200039270093C0011093C1012093C201309341
-:103D3000C3011F910F910C94371A1092BC0110927D
-:103D4000BD011092BE011092BF010C94371A41E0E0
-:103D500050E060E070E004C0440F551F661F771FFD
-:103D60008A95D2F74093BC015093BD016093BE0188
-:103D70007093BF010C94371A41E050E060E070E0AE
-:103D800004C0440F551F661F771F8A95D2F7809194
-:103D9000BC019091BD01A091BE01B091BF01842BE7
-:103DA000952BA62BB72B8093BC019093BD01A093BC
-:103DB000BE01B093BF010C94371A41E050E060E0BF
-:103DC00070E004C0440F551F661F771F8A95D2F715
-:103DD00040955095609570958091BC019091BD0182
-:103DE000A091BE01B091BF0184239523A623B723E0
-:103DF0008093BC019093BD01A093BE01B093BF011D
-:103E00000C94371A41E050E060E070E004C0440FC9
-:103E1000551F661F771F8A95D2F78091BC0190913C
-:103E2000BD01A091BE01B091BF0184279527A627AF
-:103E3000B7278093BC019093BD01A093BE01B093BE
-:103E4000BF010C94371A0F931F930091BC0110917E
-:103E5000BD012091BE013091BF01062B172B282BED
-:103E6000392B0093BC011093BD012093BE01309308
-:103E7000BF011F910F910C94371A0F931F9300915C
-:103E8000BC011091BD012091BE013091BF010623FC
-:103E90001723282339230093BC011093BD012093DD
-:103EA000BE013093BF011F910F910C94371A0F93ED
-:103EB0001F930091BC011091BD012091BE01309172
-:103EC000BF0106271727282739270093BC01109325
-:103ED000BD012093BE013093BF011F910F910C943F
-:103EE000371A0895CF92DF92EF92FF920F931F93AC
-:103EF000CF93DF93EC01C090C001D090C101E0905E
-:103F0000C201F090C3018091BC019091BD01A091CC
-:103F1000BE01B091BF01C82AD92AEA2AFB2A0FE1C3
-:103F200010E0B701A601002E04C07695679557955D
-:103F300047950A94D2F740FF07C0BE01802F0E9428
-:103F4000840B8130910539F40150110950F7BE01FD
-:103F500080E00E94840BDF91CF911F910F91FF9021
-:103F6000EF90DF90CF90089590910C01992361F12B
-:103F700090910D01992341F1982F969596959695DC
-:103F80009F3088F4E0910E01F0910F01E90FF11DCF
-:103F9000877021E030E001C0220F8A95EAF7818125
-:103FA000822B818308959091D70190FF2DC01F929D
-:103FB0008F938FE295E09F938F930E949A070F90C3
-:103FC0000F900F900F90089540910E0150910F01A6
-:103FD00020E030E09FEFFA01E20FF31F62816817E3
-:103FE00099F09F3F19F4611101C0922F2F5F3F4F4D
-:103FF0002E30310581F79F3F39F0FA01E90FF11DAD
-:1040000097FDFA9582830895089590910C01992364
-:1040100069F190910D01992349F1982F9695969504
-:1040200096959F3090F4E0910E01F0910F01E90F09
-:10403000F11D877021E030E001C0220F8A95EAF778
-:10404000209581812823218308959091D70190FFA5
-:104050001FC01F928F9381E195E09F938F930E94E1
-:104060009A070F900F900F900F90089540910E01B6
-:1040700050910F0120E030E0FA01E20FF31F92812E
-:10408000981301C012822F5F3F4F2E303105A1F7E8
-:10409000089581E090E0E0910E01F0910F01E80FAA
-:1040A000F91F1082019680319105A9F7089590912A
-:1040B000D601982B9093D601089580959091D601C2
-:1040C00098239093D60108951092D6010895909167
-:1040D000D501982B9093D501089580959091D501A5
-:1040E00098239093D50108951092D5010895809357
-:1040F000C40108951092C401089540910E01509199
-:104100000F0120E030E080E0FA01E20FF31F91811F
-:1041100091118F5F2F5F3F4F2F303105A9F7089521
-:10412000E0910E01F0910F018091D6018083E09122
-:104130000E01F0910F0180819091D501892B808330
-:104140009091C401992361F0E0910E01F0910F016B
-:104150008081892B80830E947D2081111092C4016F
-:1041600080910E0190910F010C94901490933B015B
-:1041700080933A010895CF92DF92EF92FF920F93CE
-:104180001F936C01EE24FF24C114D104E104F10457
-:1041900021F46B017C0180E001C080E133272F2DE9
-:1041A0001E2D0D2D011511052105310519F0885F12
-:1041B0006801790197018601A4E036952795179546
-:1041C0000795AA95D1F7011511052105310519F0BB
-:1041D0008C5F6801790197018601F2E03695279599
-:1041E00017950795FA95D1F70115110521053105A8
-:1041F00019F08E5F68017901B701A6017695679580
-:1042000057954795452B462B472B09F08F5F1F91FC
-:104210000F91FF90EF90DF90CF9008958295982FA7
-:104220009C7C96959695837344E0849F900111241D
-:10423000922B892F8A7A86959575990F892B0895E7
-:104240001F93CF93DF931F92CDB7DEB799830E9460
-:104250000E21182F9981892F0E940E21212F30E0E5
-:10426000322F2227A901482BCA010F90DF91CF914D
-:104270001F9108958091F001843009F11092D801C6
-:1042800020E488E190E00FB6F894A8958093600050
-:104290000FBE2093600083B7817F846083BF83B7A4
-:1042A000816083BF7894889583B78E7F83BF88E1D0
-:1042B0000FB6F89480936000109260000FBE0895CE
-:1042C00008950895CF930E9460210E942A090E94B8
-:1042D0006121C0E08C2F0E94550A811105C0CF5F7B
-:1042E000CE30C1F780E001C081E0CF9108950C94F9
-:1042F000491A82E084BD93E095BD9AEF97BD809303
-:104300006E0008952FB7F8948091D9019091DA0149
-:10431000A091DB01B091DC012FBF0895CF92DF9215
-:10432000EF92FF920F931F932FB7F8944091D9010A
-:104330005091DA016091DB017091DC012FBF6A01BD
-:104340007B01EE24FF248C0120E030E0C016D10672
-:10435000E206F30610F441505109481B590BCA01FB
-:104360001F910F91FF90EF90DF90CF9008951F92D3
-:104370000F920FB60F9211248F939F93AF93BF9319
-:104380008091D9019091DA01A091DB01B091DC011B
-:104390000196A11DB11D8093D9019093DA01A093DC
-:1043A000DB01B093DC01BF91AF919F918F910F9092
-:1043B0000FBE0F901F9018950E948B11F8942FEF4D
-:1043C00087EA91E6215080409040E1F700C000006C
-:1043D00087E090EBDC018093F9019093FA01A093C0
-:1043E000FB01B093FC012CE088E190E00FB6F8945B
-:1043F000A895809360000FBE20936000FFCFEF92DE
-:10440000FF920F931F93CF93DF93E82EF12C8F2D04
-:104410000E94550AC0E0D0E0082F10E098010C2E51
-:1044200002C0359527950A94E2F720FD05C0219634
-:10443000C630D10599F709C06C2F7F2D80E00E940E
-:10444000620BE812F4CF81E005C0F3948EE0F8121D
-:10445000DECF80E0DF91CF911F910F91FF90EF9021
-:104460000895CF93C82F8CE20E94FF21882321F06A
-:104470008C2FCF910C94FF2180E0CF910895CF93A2
-:104480000E948C23811102C00E94722384E595E072
-:104490000E940107C5E6C15049F00E942A098FE336
-:1044A0009CE90197F1F700C00000F5CF8DE495E09D
-:1044B0000E94010789E20E943122811111C18AE222
-:1044C0000E94312281110E94722385E00E943122D4
-:1044D00081110E94DC210E9497238093D70187E0FD
-:1044E0000E943122882399F18BE10E943122882396
-:1044F00051F09091D70191FB882780F921E0822724
-:1045000080FB91F922C08EE00E943122882351F075
-:104510009091D70192FB882780F921E0822780FBC8
-:1045200092F913C080E10E9431229091D701882333
-:1045300041F093FB882780F921E0822780FB93F9E3
-:1045400004C0892F809580FB90F99093D7018091CA
-:10455000D7010E949B230E94A9238093EA0180EE49
-:104560000E943122882341F08091EA01982F909592
-:1045700090FB80F98093EA0189E30E94312288232D
-:1045800059F09091EA0191FB882780F921E0822778
-:1045900080FB91F99093EA0182EE0E9431228823F8
-:1045A00059F09091EA0192FB882780F921E0822757
-:1045B00080FB92F99093EA0186EE0E9431228823D3
-:1045C00059F09091EA0193FB882780F921E0822736
-:1045D00080FB93F99093EA0183EE0E9431228823B5
-:1045E00059F09091EA0194FB882780F921E0822715
-:1045F00080FB94F99093EA0185E30E94312288239D
-:1046000059F09091EA0195FB882780F921E08227F3
-:1046100080FB95F99093EA0181E30E94312288237F
-:1046200059F09091EA0196FB882780F921E08227D2
-:1046300080FB96F99093EA0181E10E943122882360
-:1046400059F09091EA0197FB882780F921E08227B1
-:1046500080FB97F99093EA018091EA010E94AD23D3
-:104660008091EA0187FB882780F980930D0187E21A
-:104670000E943122C82F8EE10E9431228111C26036
-:104680008FE10E9431228111C46080E20E943122B8
-:104690008111C86081E20E9431228111C06182E2F1
-:1046A0000E9431228111C06283E20E943122811175
-:1046B000C06484E20E943122882311F0C06802C0E5
-:1046C000CC2329F08C2F0E94A4236C2F03C00E94BE
-:1046D000A023682F70E080E090E0CF910C94451EFD
-:1046E000CF9108956DEE7EEF80E090E00E94672DFF
-:1046F00060E082E090E00E94592D60E083E090E06D
-:104700000E94592D60E084E090E00E94592D60E005
-:1047100085E090E00C94592D80E090E00E94532DAC
-:1047200021E08D3E9E4F09F020E0822F089582E027
-:1047300090E00C944B2D682F82E090E00C94592D62
-:1047400083E090E00C944B2D682F83E090E00C9474
-:10475000592D84E090E00C944B2D682F84E090E07C
-:104760000C94592D8091DF0180FF0BC060911301E3
-:1047700085E0689FB00111247595679575956795DB
-:104780002AC081FF09C06091130185E0689FB001D4
-:104790001124759567951FC082FF07C060911301B2
-:1047A00085E0689FB001112416C04091E0014423C8
-:1047B000C9F060911201461788F72091130185E036
-:1047C000289F90011124429FC001439F900D112406
-:1047D00070E00E941D2D6038710540F4611571056F
-:1047E00039F002C065E070E0862F08958FE70895E4
-:1047F00081E008958091DF0180FF08C06091110180
-:1048000070E0759567957595679521C081FF06C025
-:104810006091110170E07595679519C082FF04C021
-:104820006091110170E010C08091E0018823C1F017
-:10483000609110018617A0F790911101989FC00117
-:10484000112470E00E941D2D6038710528F4611557
-:10485000710521F0862F08958FE7089581E008956E
-:1048600061E070E0F4CF803F21F40E94B223819593
-:1048700004C0813F29F40E94B2238093E30108958C
-:10488000823F21F40E94B223819504C0833F29F422
-:104890000E94B2238093E2010895893F19F40E9497
-:1048A000FA2305C08A3F31F40E94FA238195809350
-:1048B000E40108958B3F21F40E94FA23819504C0FE
-:1048C0008C3F29F40E94FA238093E5010895843FE8
-:1048D00021F48091E101816017C0853F21F480912E
-:1048E000E101826011C0863F21F48091E101846082
-:1048F0000BC0873F21F48091E101886005C0883FAB
-:1049000031F48091E10180618093E10108958D3F50
-:1049100021F48091DF0181600BC08E3F21F48091F2
-:10492000DF01826005C08F3F29F48091DF01846040
-:104930008093DF010895803F39F48091E30187FF80
-:104940006CC01092E30169C0813F29F48091E301BA
-:104950001816BCF362C09091E201823F29F497FFE0
-:104960005CC01092E20159C0833F19F41916CCF3D0
-:1049700054C0893F41F48091E40118160CF04DC0F9
-:104980001092E4014AC08A3F29F48091E40187FF34
-:1049900044C0F6CF8B3F39F48091E50187FF3DC0DD
-:1049A0001092E5013AC08C3F29F48091E501181678
-:1049B000BCF333C0843F21F48091E1018E7F17C0A6
-:1049C000853F21F48091E1018D7F11C0863F21F464
-:1049D0008091E1018B7F0BC0873F21F48091E10141
-:1049E000877F05C0883F31F48091E1018F7E8093FD
-:1049F000E10113C08D3F21F48091DF018E7F0BC058
-:104A00008E3F21F48091DF018D7F05C08F3F29F417
-:104A10008091DF018B7F8093DF018091E201811122
-:104A20000EC08091E30181110AC08091E4018111DF
-:104A300006C08091E501811102C01092E001089545
-:104A40008091D70183FF7EC080E995E00E94010735
-:104A50008091E1011F928F938BE895E09F938F9354
-:104A60000E949A0789E895E00E9401072091E201DF
-:104A7000822F992787FD90959F932F9386E895E045
-:104A80009F938F930E949A0784E895E00E94010704
-:104A90002091E301822F992787FD90959F932F9373
-:104AA00081E895E09F938F930E949A078FE795E0A6
-:104AB0000E9401072091E401822F992787FD90959C
-:104AC0009F932F938CE795E09F938F930E949A0773
-:104AD0008AE795E00E9401072091E501822F99273E
-:104AE00087FD90959F932F9387E795E09F938F93F2
-:104AF0000E949A0784E795E00E9401078091E001F7
-:104B00001F928F9381E795E09F938F930E949A075E
-:104B10008FE695E00E9401078091DF011F928F933D
-:104B20008CE695E09F938F930E949A0789E695E023
-:104B30000E9401078DB79EB74C960FB6F8949EBFA2
-:104B40000FBE8DBF81EE91E00E94D5140E9482219C
-:104B50009093DE018093DD0108951F93CF93DF933F
-:104B60008091DD019091DE010E948E214091E00153
-:104B7000442321F02091140130E006C0209115015A
-:104B80005AE0259F900111248217930708F482C0F0
-:104B90008091E2011091E301D091E401C091E5011F
-:104BA000811107C0111105C0D11103C0CC2309F434
-:104BB00071C04F3F19F04F5F4093E001181624F485
-:104BC0000E94B2238093E2018091E20187FF05C039
-:104BD0000E94B22381958093E201111624F40E9471
-:104BE000B2238093E3018091E30187FF05C00E9417
-:104BF000B22381958093E3016091E201662339F14C
-:104C00001091E301112319F1772767FD7095872F24
-:104C1000972F0E94222C23E333E343E35FE30E94B8
-:104C2000862C0E94EF2B6093E201612F772767FDAE
-:104C30007095872F972F0E94222C23E333E343E3C1
-:104C40005FE30E94862C0E94EF2B6093E3011D1608
-:104C500024F40E94FA238093E4018091E40187FF09
-:104C600005C00E94FA2381958093E4011C1624F468
-:104C70000E94FA238093E5018091E50187FF05C03A
-:104C80000E94FA2381958093E501DF91CF911F91D6
-:104C90000C942025DF91CF911F910895E1EEF1E072
-:104CA00085E0DF011D928A95E9F71092E0011092EC
-:104CB000DF01089583EB97E00E9401071F9281E0D6
-:104CC0008F931F9285E08F9385E697E09F938F9354
-:104CD0000E949A070F900F900F900F900F900F90D7
-:104CE00008958330E9F128F4813061F0823009F1D0
-:104CF0000895853009F462C008F449C0863009F48B
-:104D000074C0089520911501862F90E0820F911DA7
-:104D10008F3F910520F4620F6093150103C08FEF60
-:104D200080931501809115011F928F938EE996E073
-:104D300072C020911401862F90E0820F911D8F3F49
-:104D4000910520F4620F6093140103C08FEF8093EC
-:104D50001401809114011F928F938CE896E05BC040
-:104D600020911301862F90E0820F911D8F3F9105B6
-:104D700020F4620F6093130103C08FEF809313013F
-:104D8000809113011F928F9389E796E044C0209190
-:104D90001201862F90E0820F911D8F3F910520F424
-:104DA000620F6093120103C08FEF80931201809114
-:104DB00012011F928F9384E696E02DC0209111017D
-:104DC000862F90E0820F911D8F3F910520F4620F96
-:104DD0006093110103C08FEF809311018091110145
-:104DE0001F928F938BE496E016C020911001862FBE
-:104DF00090E0820F911D8F3F910520F4620F609328
-:104E0000100103C08FEF80931001809110011F9259
-:104E10008F9380E396E09F938F930E949A070F9061
-:104E20000F900F900F900895833081F128F4813016
-:104E300059F08230D1F00895853009F449C0B8F1B5
-:104E4000863009F456C0089580911501681720F442
-:104E5000861B8093150102C01092150180911501E7
-:104E60001F928F9381E296E054C0809114016817DD
-:104E700020F4861B8093140102C0109214018091CB
-:104E800014011F928F938FE096E043C0809113012D
-:104E9000681720F4861B8093130102C0109213013F
-:104EA000809113011F928F938CEF95E032C0809117
-:104EB0001201681720F4861B8093120102C0109221
-:104EC0001201809112011F928F9387EE95E021C00D
-:104ED00080911101681720F4861B8093110102C094
-:104EE00010921101809111011F928F938EEC95E029
-:104EF00010C080911001681720F4861B8093100168
-:104F000002C010921001809110011F928F9383EBC9
-:104F100095E09F938F930E949A070F900F900F90A8
-:104F20000F900895CF93C82F1F928F9328EB38E0EE
-:104F30003F932F930E949A0761E070E080E090E039
-:104F400004C0660F771F881F991FCA95D2F70E9469
-:104F5000451E0F900F900F900F90CF910C94491A0F
-:104F6000CF938D3109F465C0B0F58E3009F4CBC113
-:104F700000F5873009F49BC1A8F4863009F06AC2B5
-:104F80008091D701817F8E7F8093D7018DEB98E050
-:104F90000E9401078FEF9CE00E94010781E080934F
-:104FA000E70180C1883009F44FC08B3009F47CC11F
-:104FB00051C2863109F4EDC138F4803109F4B6C12B
-:104FC000813109F42DC246C2893109F4CBC18B313C
-:104FD00009F486C13FC2853309F434C248F48732EC
-:104FE00009F430C208F430C2893209F42BC232C24B
-:104FF000833438F48A3308F029C2883309F454C161
-:1050000029C2833409F41EC2883409F023C20E94E5
-:10501000491A8EEE9CE00E9401079FEF23ED80E38A
-:10502000915020408040E1F700C000000E94DC2148
-:1050300039C18EE09DE00E9401070E94A92B0E94C9
-:1050400084140E94C20C2EC183E09DE00E940107DF
-:105050008EEC9AE00E9401070E94A0231F928F937A
-:105060008BEC9AE09F938F930E949A0789EC9AE0C9
-:105070000E9401070E949723C82F86EB9AE00E94A6
-:1050800001071F92CF9321EB3AE03F932F930E94A9
-:105090009A078FEA9AE00E94010785EA9AE00E9447
-:1050A00001078C2F81701F928F9322EA3AE03F9381
-:1050B0002F930E949A0780EA9AE00E94010786E9EE
-:1050C0009AE00E940107C1FB882780F91F928F9305
-:1050D00023E93AE03F932F930E949A0781E99AE0EF
-:1050E0000E94010785E89AE00E940107C2FB882719
-:1050F00080F91F928F9322E83AE03F932F930E940A
-:105100009A0780E89AE00E94010787E79AE00E94E8
-:105110000107C3FBCC27C0F91F92CF9384E79AE025
-:105120009F938F930E949A0782E79AE00E9401075B
-:105130000E94A923C82F8EE59AE00E9401071F92C2
-:10514000CF9329E53AE03F932F930E949A0787E592
-:105150009AE00E9401078EE39AE00E9401078C2FDB
-:1051600081701F928F932BE33AE03F932F930E941D
-:105170009A078DB79EB780960FB6F8949EBF0FBE64
-:105180008DBF89E39AE00E94010782E29AE00E94C3
-:105190000107C1FB882780F91F928F932FE13AE026
-:1051A0003F932F930E949A078DE19AE00E94010796
-:1051B0008BE09AE00E940107C2FB882780F91F92CA
-:1051C0008F9328E03AE03F932F930E949A0786E05E
-:1051D0009AE00E94010784EF99E00E940107C3FB57
-:1051E000882780F91F928F9321EF39E03F932F9307
-:1051F0000E949A078FEE99E00E94010785EE99E0E0
-:105200000E940107C4FB882780F91F928F9322EE2A
-:1052100039E03F932F930E949A0780EE99E00E9415
-:1052200001078EEC99E00E940107C5FB882780F9F1
-:105230001F928F932BEC39E03F932F930E949A0794
-:1052400089EC99E00E9401078DEA99E00E9401072C
-:10525000C6FB882780F91F928F932AEA39E03F9393
-:105260002F930E949A0788EA99E00E94010780EA3A
-:1052700099E00E940107C7FBCC27C0F91F92CF938A
-:105280008DE999E09F938F930E949A078BE999E0AB
-:105290000E9401078DB79EB74C960FB6F8949EBF3B
-:1052A0000FBE8DBFC1E0DBC084EE98E058C0809196
-:1052B000D701C82FC17080FF09C081EE9CE00E9419
-:1052C00001078091D701817F8E7F44C085ED9CE0EE
-:1052D0000E9401078091D70181608093D701E2CFBE
-:1052E0008091D70181FBCC27C0F991E0C927C0FB91
-:1052F00081F98093D701CC2319F088EC9CE025C07C
-:105300008AEB9CE02CC08091D70182FBCC27C0F9AE
-:1053100091E0C927C0FB82F98093D701CC2319F013
-:105320008BEA9CE012C08BE99CE019C08091D70108
-:1053300083FBCC27C0F991E0C927C0FB83F9809398
-:10534000D701CC2351F08FE89CE00E9401078091A7
-:10535000D70181608093D70182C082E89CE00E94DF
-:105360000107A0CF83E79CE00E94010787E49CE04F
-:105370000E9401078AE09CE00E9401078DED9BE0FE
-:105380000E94010789E99BE00E9401078EE69BE0ED
-:10539000E6CF80E69BE00E9401070E9484141F92E2
-:1053A0008F9386E49BE09F938F930E949A0780914E
-:1053B0000C011F928F938FE29BE09F938F930E942B
-:1053C0009A0780916E011F928F938CE19BE09F93CF
-:1053D0008F930E949A0780910D011F928F9389E00D
-:1053E0009BE09F938F930E949A078091D90190919F
-:1053F000DA01A091DB01B091DC01BF93AF939F93E1
-:105400008F9385EF9AE09F938F930E949A078DB7B1
-:105410009EB746960FB6F8949EBF0FBE8DBF42CF83
-:105420000E94491AC0910D0181E0C827C0930D0167
-:10543000CC2329F08BEE9AE00E94010710C080EE89
-:105440009AE08DCF80E003C08D5101C089530E9446
-:10545000922728CF8EED9AE00E940107C0E08C2FA2
-:10546000CF91089580E0089580E00895CF93C82FEC
-:105470008091E701813081F020F0823009F44CC046
-:1054800042C1A0910E01B0910F018C91813169F060
-:10549000823209F03AC109C0A0910E01B0910F010A
-:1054A0008C91813111F0823249F48C2F0E94322A82
-:1054B00081112FC08C2F0E94B0272CC08C2F0E94EE
-:1054C000342A811126C0C431E1F070F4CB3081F070
-:1054D000C031D1F40E945A2680EB98E00E94010767
-:1054E00082E08093E70115C0C93259F0C83361F4F6
-:1054F0008DEB98E00E94010784EB98E00E94010781
-:1055000008C01092E70103C18EEA98E00E940107EB
-:10551000FEC081E08170FDC0C43220F5CE3108F0BC
-:10552000C0C0CB3099F1C8F4C73009F0D2C08AE0CE
-:105530008093150194E19093140193E090931301EB
-:105540008093120188E08093110188E2809310011A
-:1055500084E597E00E940107BFC0C33149F1C4311F
-:10556000C1F0B7C0CB3409F4A9C028F4C93289F01E
-:10557000C83361F0AEC0C13509F49EC0C23509F42C
-:1055800099C0CE3409F0A5C06AE09EC00E945A2698
-:10559000A3C08091E601882319F01092E6019CC017
-:1055A00081E697E00E94010781E08093E701B1C0A6
-:1055B0008BE397E00E94010789E297E00E940107D0
-:1055C000809115011F928F9386E297E09F938F93AE
-:1055D0000E949A0784E297E00E94010782E197E027
-:1055E0000E940107809114011F928F938FE097E032
-:1055F0009F938F930E949A078DE097E00E94010786
-:105600008EEF96E00E940107809113011F928F9305
-:105610008BEF96E09F938F930E949A0789EF96E015
-:105620000E94010788EE96E00E9401078091120116
-:105630001F928F9385EE96E09F938F930E949A0717
-:1056400083EE96E00E9401078EEC96E00E9401072F
-:10565000809111011F928F938BEC96E09F938F9313
-:105660000E949A0789EC96E00E94010782EB96E07F
-:105670000E940107809110011F928F938FEA96E09C
-:105680009F938F930E949A078DEA96E00E940107EC
-:105690008DB79EB748960FB6F8949EBF0FBE8DBFCC
-:1056A0001BC0CE51EC2FF0E0E15DFE4F8081809376
-:1056B000E60112C061E003C061E006C06AE08091CB
-:1056C000E6010E94712608C08091E6010E9414271D
-:1056D00003C082E597E013C08091E601882369F05A
-:1056E0001F928F938CE497E09F938F930E949A0769
-:1056F0000F900F900F900F9004C089E497E00E94E4
-:10570000010781E006C01092E70180E002C080E05E
-:1057100001CFCF910895E1E8F0E080818860808337
-:105720008081816080838FB7F89493E090938900A3
-:1057300090ED909388008FBF0895EFE6F0E08081B0
-:10574000826080830895EFE6F0E080818D7F808322
-:105750000895EFE6F0E0808192E089278083089544
-:105760001F920F920FB60F9211242F933F934F93D6
-:105770005F936F937F938F939F93AF93BF93EF93B9
-:10578000FF938091E8019091E90101969093E901DE
-:105790008093E801811103C082E00E94C20CE09175
-:1057A000E901E695E695F0E0E25EF24FE491809142
-:1057B000E8018E1303C080E00E94C20CFF91EF91BC
-:1057C000BF91AF919F918F917F916F915F914F9119
-:1057D0003F912F910F900FBE0F901F90189504D0FE
-:1057E0006894B1118DC0089570D088F09F5790F0E3
-:1057F000B92F9927B751A0F0D1F0660F771F881FF6
-:10580000991F1AF0BA95C9F712C0B13081F077D05C
-:10581000B1E0089574C0672F782F8827B85F39F0FA
-:10582000B93FCCF3869577956795B395D9F73EF454
-:1058300090958095709561957F4F8F4F9F4F0895FC
-:10584000E89409C097FB3EF490958095709561951A
-:105850007F4F8F4F9F4F9923A9F0F92F96E9BB27D0
-:105860009395F695879577956795B795F111F8CF4C
-:10587000FAF4BB0F11F460FF1BC06F5F7F4F8F4FB7
-:105880009F4F16C0882311F096E911C0772321F0AD
-:105890009EE8872F762F05C0662371F096E8862F45
-:1058A00070E060E02AF09A95660F771F881FDAF79C
-:1058B000880F9695879597F9089557FD9058440F4E
-:1058C000551F59F05F3F71F04795880F97FB991F5F
-:1058D00061F09F3F79F0879508951216130614061C
-:1058E000551FF2CF4695F1DF08C0161617061806A9
-:1058F000991FF1CF86957105610508940895E89484
-:10590000BB2766277727CB0197F908950BD078C07E
-:1059100069D028F06ED018F0952309F05AC05FC006
-:105920001124EECFCADFA0F3959FD1F3950F50E07D
-:10593000551F629FF001729FBB27F00DB11D639F41
-:10594000AA27F00DB11DAA1F649F6627B00DA11DE7
-:10595000661F829F2227B00DA11D621F739FB00D8D
-:10596000A11D621F839FA00D611D221F749F3327FD
-:10597000A00D611D231F849F600D211D822F762F96
-:105980006A2F11249F5750408AF0E1F088234AF093
-:10599000EE0FFF1FBB1F661F771F881F91505040DF
-:1059A000A9F79E3F510570F014C0AACF5F3FECF3FA
-:1059B000983EDCF3869577956795B795F795E795CB
-:1059C0009F5FC1F7FE2B880F911D9695879597F9DC
-:1059D000089597F99F6780E870E060E008959FEF71
-:1059E00080EC089500240A94161617061806090676
-:1059F000089500240A941216130614060506089545
-:105A0000092E0394000C11F4882352F0BB0F40F4CC
-:105A1000BF2B11F460FF04C06F5F7F4F8F4F9F4F0C
-:105A20000895991B79E004C0991F961708F0961BFA
-:105A3000881F7A95C9F78095089597FB072E16F46D
-:105A4000009407D077FD09D00E94372D07FC05D0C0
-:105A50003EF4909581959F4F0895709561957F4F85
-:105A60000895EE0FFF1F0590F491E02D0994AA1BF5
-:105A7000BB1B51E107C0AA1FBB1FA617B70710F039
-:105A8000A61BB70B881F991F5A95A9F7809590956B
-:105A9000BC01CD010895F999FECF92BD81BDF89A60
-:105AA000992780B50895A8E1B0E042E050E00C9459
-:105AB0006E2D262FF999FECF1FBA92BD81BD20BD54
-:105AC0000FB6F894FA9AF99A0FBE019608950E94BB
-:105AD000592D272F0C945A2DDC01CB01FC01F9998B
-:105AE000FECF06C0F2BDE1BDF89A319600B40D922A
-:0C5AF00041505040B8F70895F894FFCFE3
-:105AFC002002C30CB40D910D5D0D2A0D0101C501E1
-:105B0C0028080A03140A3F4D3620399E0451041B01
-:105B1C0004FB03C20335034E0367038003A0030198
-:0A5B2C000203040506070809000043
+:100000000C94B0070C94F7070C94F7070C94F707BF
+:100010000C94F7070C94F7070C94F7070C94F70768
+:100020000C94F7070C94F7070C947E130C9450145F
+:100030000C94F7070C94F7070C94F7070C94F70748
+:100040000C94F7070C94142D0C94F7070C94F707F5
+:100050000C94F7070C940D230C94F7070C94F707F6
+:100060000C94F7070C94F7070C94F7070C94F70718
+:100070000C94F7070C94F7070C94F7070C94F70708
+:100080000C94F7070C94F7070C94F7070C94F707F8
+:100090000C94F7070C94F7070C94F7070C94F707E8
+:1000A0000C94F7070C94F7070C94F707BD14DF14B2
+:1000B000D215DF14D21524154715D2159C15AF158E
+:1000C000FD18FD182C192C196F19A919B61BB61B90
+:1000D000C219B61BB71AB71A8A1BB61BB61BA11BCF
+:1000E00000F001F002F0F0A3F0A42B00340039007E
+:1000F000E100E00000001E00140004001D00E2000A
+:10010000007F1F001A0016001B0003522800200069
+:10011000080007000600E3002C002100150009007C
+:10012000190064002D00220017000A0005000000DD
+:1001300050002E004A0000000154000052002E0022
+:100140004D00000002540000510023001C000B0071
+:10015000110000004F00240018000D001000E60000
+:100160002D0025000C000E003600E7002C002600B4
+:1001700012000F003700035228002700130033003D
+:100180003800E60000772A002F003100E500E40087
+:1001900000002B0006003900E100E00000001E0016
+:1001A000130007003400E200007F1F0017000B005F
+:1001B0001400035228002000090033001500E3005A
+:1001C0002C0021000E0012001A0004522D00220003
+:1001D0000F000C001100000050002E004A0000002B
+:1001E0000100000052002E004D0000000100000040
+:1001F00051002300050018000D0000004F002400EE
+:1002000004003800100004522D00250016001C00C8
+:100210003600E7002C0026000A00080037000352D1
+:100220002800270019001B002D00E60000772A0097
+:100230001D003100E500E40000002B001D0000005F
+:10024000E100E00000001E001B0018002F00E2008B
+:10025000007F1F0019000C0033000352280020000B
+:100260000F0004003400E3002C0021000600080009
+:10027000130004522D0022001A0012001C0000007E
+:1002800050002E004A0000000100000052002E0025
+:100290004D00000001000000510023000E00160078
+:1002A000050000004F0024000B0011001000045254
+:1002B0002D0025000A0015003600E7002C0026005E
+:1002C0000900170037000352280027001400070018
+:1002D0000D00E60000772A002D000000E500E40094
+:1002E0000000010001000100010001000000010008
+:1002F00001000100010001000100010001000100F6
+:1003000001000100010001000100010001000100E5
+:100310000100010013A715A701000100F40001006E
+:100320000100010001000000F200010001000000D6
+:1003300001000000F00001000100000001000000C9
+:10034000F10001000100010001000000F3000100C4
+:1003500042003E003A000100F500010043003F006A
+:100360003B00010001000100440040003C0001008E
+:1003700001000100450041003D00010001000100B5
+:100380000100010001000100000000000000000069
+:1003900000000000000000004B004A00290000009F
+:1003A000000000002A0050002B00010000000000A7
+:1003B0005200510049000000000000004C004F00B6
+:1003C00028000100000000004E004D007A000000EF
+:1003D000000000000000000001000000000000001C
+:1003E000000000000100000000000000000000000C
+:1003F0000000000000000000240021001E00010099
+:1004000000000000250022001F0000000000000086
+:10041000260023002000010000000000300036000C
+:10042000000000000000000038003700000000005D
+:1004300000000A002530313662003A2000253032B3
+:1004400058000A722F632030313233343536373852
+:10045000394142434445460A000A002530325800DB
+:10046000626F756E6365213A20006C656674207357
+:100470006964652061747461636865640A006C6511
+:1004800066742073696465206E6F74207265737082
+:100490006F6E64696E670A00747279696E672074A2
+:1004A0006F207265736574206D637032333031383C
+:1004B0000A000A44454255473A20656E61626C6500
+:1004C000642E0A005B735D004B6579626F61726434
+:1004D0002073746172742E0A005B575D005B535D7C
+:1004E000005B525D005B445D005B435D00160345AD
+:1004F00000720067006F0044006F00780020004524
+:10050000005A00000016034500720067006F0044A7
+:10051000006F007800200045005A00000004030925
+:100520000409028D00050100A0FA0904000001037E
+:10053000010100092111010001223F00070581038B
+:1005400008000A0904010001030102000921110148
+:100550000001224D000705820308000A0904020079
+:1005600001030000000921110100012236000705E6
+:10057000830308000A0904030002030000000921A4
+:100580001101000122200007058403200001070556
+:1005900004032000010904040001030000000921F4
+:1005A0001101000122390007058503100001120125
+:1005B000100100000008EDFE071301000102000118
+:1005C00005010906A101050719E029E71500250124
+:1005D0009508750181020508190129059505750120
+:1005E00091029501750391010507190029771500FE
+:1005F0002501957875018102C00631FF0974A101BA
+:100600000975150025FF95207508810209761500EA
+:1006100025FF952075089102C005010980A101857B
+:100620000216010026B7001A01002AB700751095BE
+:10063000018100C0050C0901A101850316010026F6
+:100640009C021A01002A9C02751095018100C005C8
+:10065000010902A1010901A10005091901290515D6
+:10066000002501950575018102950175038101053C
+:1006700001093009311581257F9502750881060928
+:10068000381581257F950175088106050C0A380209
+:100690001581257F950175088106C0C005010906F1
+:1006A000A101050719E029E7150025019508750145
+:1006B0008102950175088101050819012905950533
+:1006C000750191029501750391010507190029FF34
+:1006D000150025FF950675088100C00A00253032F7
+:1006E0005820006B6579626F6172645F7265706F2C
+:1006F00072743A20000A0025303258006B65796226
+:100700006F6172645F7365745F6C65643A20006446
+:10071000656C5F6B65795F6269743A2063616E270F
+:10072000742064656C3A20253032580A0061646494
+:100730005F6B65795F6269743A2063616E2774202C
+:100740006164643A20253032580A00646F6E652E69
+:100750000A00626F6F676D61676963207363616E22
+:100760003A202E2E2E2000290A002575002F002564
+:1007700075005D2800256400200025640020002508
+:10078000640020002564007C0025303258006D6F25
+:100790007573656B6579205B62746E7C7820792057
+:1007A0007620685D287265702F61636C293A205B42
+:1007B000006D6B5F776865656C5F74696D655F740C
+:1007C0006F5F6D6178203D2025640A006D6B5F7757
+:1007D0006865656C5F6D61785F7370656564203D09
+:1007E0002025640A006D6B5F74696D655F746F5FCF
+:1007F0006D6178203D2025640A006D6B5F6D617826
+:100800005F7370656564203D2025640A006D6B5F31
+:10081000696E74657276616C203D2025640A006DF6
+:100820006B5F64656C6179203D2025640A006D6B07
+:100830005F776865656C5F74696D655F746F5F6D28
+:100840006178203D2025640A006D6B5F77686565DF
+:100850006C5F6D61785F7370656564203D20256411
+:100860000A006D6B5F74696D655F746F5F6D6178B1
+:10087000203D2025640A006D6B5F6D61785F7370A9
+:10088000656564203D2025640A006D6B5F696E74A8
+:10089000657276616C203D2025640A006D6B5F6493
+:1008A000656C6179203D2025640A000A00257500E9
+:1008B000363A20776865656C5F74696D655F746F43
+:1008C0005F6D61783A20000A00257500353A20777F
+:1008D0006865656C5F6D61785F73706565643A200B
+:1008E000000A00257500343A2074696D655F746FE5
+:1008F0005F6D61783A20000A00257500333A206D5B
+:1009000061785F73706565643A20000A00257500A0
+:10091000323A20696E74657276616C286D73293A7B
+:1009200020000A00257500313A2064656C61792841
+:100930002A31306D73293A20000A092D2056616C46
+:10094000756573202D0A004D3E004D25643E200044
+:100950003F007365742064656661756C740A0043BA
+:100960003E200077686572652064656C74613A208A
+:10097000637572736F723D25642C20776865656CB2
+:100980003D25640A53656520687474703A2F2F659D
+:100990006E2E77696B6970656469612E6F72672F5F
+:1009A00077696B692F4D6F7573655F6B6579730A36
+:1009B000000A092D204D6F7573656B6579202D0A2E
+:1009C0004553432F713A09717569740A313A0964C4
+:1009D000656C6179282A31306D73290A323A0969C8
+:1009E0006E74657276616C286D73290A333A096DED
+:1009F00061785F73706565640A343A0974696D657E
+:100A00005F746F5F6D61780A353A09776865656C68
+:100A10005F6D61785F73706565640A363A0977685F
+:100A200065656C5F74696D655F746F5F6D61780A91
+:100A30000A703A097072696E742076616C7565731C
+:100A40000A643A097365742064656661756C747331
+:100A50000A75703A092B310A646F776E3A092D31A5
+:100A60000A706775703A092B31300A7067646F77C6
+:100A70006E3A092D31300A0A7370656564203D2095
+:100A800064656C7461202A206D61785F73706565A0
+:100A900064202A2028726570656174202F20746993
+:100AA0006D655F746F5F6D6178290A003F004D3E90
+:100AB0002000433E20004C25640A000A092D2043F3
+:100AC0006F6E736F6C65202D0A4553432F713A0981
+:100AD000717569740A6D3A096D6F7573656B657927
+:100AE0000A000A092D204D61676963202D0A643AC6
+:100AF0000964656275670A783A09646562756720FA
+:100B00006D61747269780A6B3A0964656275672071
+:100B10006B6579626F6172640A6D3A09646562752A
+:100B200067206D6F7573650A763A09766572736929
+:100B30006F6E0A733A097374617475730A633A09C4
+:100B4000636F6E736F6C65206D6F64650A302D3452
+:100B50003A096C61796572302D34284631302D4662
+:100B600034290A506175733A09626F6F746C6F6152
+:100B70006465720A653A09656570726F6D0A6E3A4E
+:100B8000094E4B524F0A7A3A09736C656570204CD6
+:100B9000454420746573740A000A002575002E6EA2
+:100BA0006B726F3A20000A002575002E7377617012
+:100BB0005F6261636B736C6173685F6261636B73C7
+:100BC000706163653A20000A002575002E73776115
+:100BD000705F67726176655F6573633A20000A0033
+:100BE0002575002E6E6F5F6775693A20000A002533
+:100BF00075002E737761705F72616C745F726775D8
+:100C0000693A20000A002575002E737761705F6CC9
+:100C1000616C745F6C6775693A20000A0025750085
+:100C20002E636170736C6F636B5F746F5F636F6E65
+:100C300074726F6C3A20000A002575002E7377617C
+:100C4000705F636F6E74726F6C5F636170736C6FF3
+:100C5000636B3A20000A0025303258006B65796DCD
+:100C600061705F636F6E6669672E7261773A20000C
+:100C70000A002575002E6D6F7573653A20000A0015
+:100C80002575002E6B6579626F6172643A20000AE7
+:100C9000002575002E6D61747269783A20000A0093
+:100CA0002575002E656E61626C653A20000A00258C
+:100CB0003032580064656275675F636F6E6669679E
+:100CC0002E7261773A20000A00257500646566611E
+:100CD000756C745F6C617965723A20003F004E4B11
+:100CE000524F3A206F66660A004E4B524F3A206FC1
+:100CF0006E0A0074696D65725F636F756E743A2079
+:100D00002530346C580A006B6579626F6172645FDC
+:100D10006E6B726F3A2025580A006B6579626F61BD
+:100D200072645F69646C653A2025580A006B6579C6
+:100D3000626F6172645F70726F746F636F6C3A2080
+:100D400025580A00686F73745F6B6579626F617212
+:100D5000645F6C65647328293A2025580A000A09E3
+:100D60002D20537461747573202D0A004743433A54
+:100D700020352E332E30204156522D4C4942433AD5
+:100D800020312E382E3173766E204156525F4152FB
+:100D900043483A20617672350A004F5054494F4E0D
+:100DA000533A204C55464120424F4F544D414749FC
+:100DB00043204D4F5553454B4559204558545241BA
+:100DC0004B455920434F4E534F4C4520434F4D4DBB
+:100DD000414E44204E4B524F203531320A0042558D
+:100DE000494C443A20323030363038342D64697200
+:100DF0007479202831313A35303A3438204A616EDE
+:100E00002033302032303136290A005649443A2006
+:100E1000307846454544284572676F446F782045D1
+:100E20005A29205049443A20307831333037284508
+:100E300072676F446F7820455A29205645523A20F0
+:100E40003078303030310A00444553433A20742E14
+:100E50006D2E6B2E206B6579626F617264206669FE
+:100E6000726D7761726520666F72204572676F647C
+:100E70006F780A000A092D2056657273696F6E201B
+:100E80002D0A000A6D6F7573653A206F66660A0059
+:100E90000A6D6F7573653A206F6E0A000A6B65798B
+:100EA000626F6172643A206F66660A000A6B657948
+:100EB000626F6172643A206F6E0A000A6D6174722B
+:100EC00069783A206F66660A000A6D617472697803
+:100ED0003A206F6E0A000A64656275673A206F6E89
+:100EE0000A000A64656275673A206F66660A000A3E
+:100EF0000A626F6F746C6F616465722E2E2E200013
+:100F0000433E20006565636F6E6669673A0A005369
+:100F10006C656570204C454420746573740A00004C
+:100F200000000000000000000000010204060A0F9B
+:100F300017202C3A4A5D71879DB3C7DAE9F5FCFFAB
+:100F4000FCF5E9DAC7B39D87715D4A3A2C20170F8B
+:100F50000A0604020100000000000000000000007A
+:100F600011241FBECFEFDAE0DEBFCDBF04B603FE13
+:100F700027C08091F8019091F901A091FA01B091F8
+:100F8000FB018730904BA740B04BD1F41092F80191
+:100F90001092F9011092FA011092FB0114BE84B76D
+:100FA000877F84BF0FB6F894A89580916000886110
+:100FB00080936000109260000FBEE0E0FFE30995AF
+:100FC00011E0A0E0B1E0E2EEFDE502C005900D9277
+:100FD000AA33B107D9F721E0AAE3B1E001C01D921D
+:100FE000A83FB207E1F70E94B9100C94EF2E0C94C1
+:100FF0000000FF93EF93E0913A01F0913B013097AD
+:1010000009F00995EF91FF910895FC0185918030D9
+:1010100011F0EFDFFBCF0895FF27E0E230E247FF5A
+:101020000CC0419597FF09C0EDE2609570958095E1
+:101030009095611D711D811D911D27FF02C0219595
+:1010400030E350E2AA27660F771F881F991FAA1F57
+:10105000A41710F0A41B63955A95A9F7AA3008F0BD
+:10106000A95FA05DAF93F3956115710581059105A9
+:1010700041F7ED3211F4EF93F395F21718F43F9323
+:10108000F395FBCF8F91B5DFFA95E1F70895E991DC
+:10109000F9918591803021F0853219F0AADFF9CFDE
+:1010A000089520E0E89455915532C1F3503311F47E
+:1010B000689455915A3348F4505390F3220F022EFE
+:1010C000220F220F200D250FF4CF0EF421958991C8
+:1010D0009991533619F3533729F1533559F1BC011E
+:1010E00088279927E8945C3621F48991999168942E
+:1010F0005591543639F446EF7EF077FF0DC08FEFEF
+:101100009FEF0AC055374AE039F0583540E121F0E9
+:10111000523642E009F00895FF93EF937DDFEF919F
+:10112000FF91B7CFFF93EF93FC0181918030B9F32A
+:1011300060DFFBCFFF93EF9368DFF1CFDF93CF93B7
+:10114000CDB7DEB72596A3DFCF91DF91089561116A
+:101150000BC0FC018281882321F085EE0E94971745
+:1011600003C085EE0E945F1880E090E00895089526
+:101170006091BC017091BD018091BE019091BF0151
+:101180000E940E2256985E9825982D9826982E98A3
+:1011900027982F98823051F0833029F0813049F41C
+:1011A000269A2E9A0895259A2D9A0895279A2F9A6D
+:1011B000089556985E98089588EB98E0892B11F071
+:1011C0000E94B80880E090E0089556985E982598AF
+:1011D0002D9826982E9827982F988FEF90E090932F
+:1011E00089008093880090938B0080938A0090936D
+:1011F0008D0080938C00259A2D9A2FEF80E792E046
+:10120000215080409040E1F700C00000269A2E9ABD
+:101210002FEF80E792E0215080409040E1F700C03E
+:101220000000279A2F9A2FEF80E792E0215080400C
+:101230009040E1F700C0000025982D982FEF80E73F
+:1012400092E0215080409040E1F700C000002698D5
+:101250002E982FEF80E792E0215080409040E1F7F8
+:1012600000C0000027982F9856985E9825982D98D2
+:1012700026982E9827982F98089589EA80938000C1
+:1012800089E08093810024982C983F988AB18F74CC
+:101290008AB96E98479A8BB1806B8BB9769A0E9407
+:1012A000E50887EB98E0892B11F00E94B70880E0F1
+:1012B00090E0089580E28093000180913C018111CB
+:1012C0000EC00E94A90981E080933C012FEF83EDBD
+:1012D00090E3215080409040E1F700C0000080E49E
+:1012E0000E94AF098093000181112EC00E94D9098C
+:1012F00080930001811128C00E94D90980930001C8
+:10130000811122C08FE30E94D909809300018111CD
+:101310001BC00E94D10980E40E94AF0980930001A4
+:10132000811112C08CE00E94D909809300018111C3
+:101330000BC00E94D90980930001811105C08FE381
+:101340000E94D909809300010E94D1098091000177
+:1013500008951092B9008AE08093B800089594EA45
+:101360009093BC009091BC0097FFFCCF9091B90086
+:10137000987F983021F0903111F081E008958093AA
+:10138000BB0084E88093BC008091BC0087FFFCCF49
+:101390008091B900887F883111F0803471F780E046
+:1013A000089584E98093BC008091BC0084FDFCCF4B
+:1013B00008958093BB0084E88093BC008091BC00BA
+:1013C00087FFFCCF9091B900987F81E0983209F4B3
+:1013D00080E0089584E88093BC008091BC0087FF82
+:1013E000FCCF8091BB00089580910001811115C050
+:1013F00080E40E94AF098093000181110CC082E15A
+:101400000E94D90980930001811105C08FEF0E94CD
+:10141000D909809300010E94D10984B1807F84B9E9
+:1014200085B1807F85B98AB1837F8AB98BB1837F8B
+:101430008BB93E98469808950E945A0980930001FE
+:101440000E94F40980B38C7080BB81B3836F81BB31
+:10145000ECE4F1E0AEE3B1E011921D9281E0EA35F7
+:10146000F807D1F78DE399E0892B11F00C943D0931
+:1014700008957F928F929F92AF92BF92CF92DF9208
+:10148000EF92FF920F931F93CF93DF938091000110
+:101490008823E1F080913D018F5F80933D018111B0
+:1014A00015C088E994E00E9405080E945A098093BB
+:1014B0000001882329F08EE794E00E94050806C009
+:1014C0008AE694E00E9405080E94E5088EE3E82E73
+:1014D00081E0F82E8701C0E0D0E09924939492E057
+:1014E000892EAA24A394B12C3BE5C32E34E0D32E3D
+:1014F000C730D10500F580910001811164C080E4FE
+:101500000E94AF0980930001811112C082E10E9404
+:10151000D9098093000181110BC0C5010C2E01C0B7
+:10152000880F0A94EAF780950E94D90980930001F8
+:101530000E94D10948C0CA30A1F028F4C83059F03F
+:10154000C93061F005C0CC3089F070F0CD3089F041
+:10155000209A289810C0219A29980DC0229A2A987A
+:101560000AC0239A2B9807C0529A01C0539A5B98DD
+:1015700002C03E9A4698E0EAEA95F1F78FB1817091
+:101580008925799902C032E001C030E0832B7C9933
+:1015900002C034E001C030E0832B7D9902C028E016
+:1015A00001C020E0822B7E9902C090E101C090E052
+:1015B000892B9FB19095991F9927991F9295990F03
+:1015C000907E892B10C080910001811175C080E44C
+:1015D0000E94AF0980930001882309F45AC0712C3E
+:1015E0000E94D109872DD8019C91981739F18C93CD
+:1015F00080910101882301F18091D70180FF04C00F
+:1016000080E694E00E9405088091D70180FF0CC01D
+:10161000809101011F928F93DF92CF920E949E08CA
+:101620000F900F900F900F908091D70180FF04C012
+:1016300089E594E00E940508809201010E94F40966
+:1016400021960F5F1F4FCE30D10509F051CF809109
+:1016500001018823B9F0815080930101882339F07A
+:10166000EFE9FFE03197F1F700C000000BC0ECE4B8
+:10167000F1E0D7018D917D018193BCE4EB16B1E0DF
+:10168000FB06B9F78CED98E0892BC1F00E94DC08CD
+:1016900015C083E10E94D9098093000181119FCF79
+:1016A00081E40E94AF0980930001811198CF0E94CC
+:1016B000EA09782E709494CF80E095CF81E0DF9195
+:1016C000CF911F910F91FF90EF90DF90CF90BF903F
+:1016D000AF909F908F907F900895E82FF0E0E45BAB
+:1016E000FE4F80810895CF92DF92EF92FF920F9389
+:1016F0001F93CF93DF9382E494E00E9405088CE46B
+:10170000E82E81E0F82EC0E0D0E09DE3C92E94E001
+:10171000D92E04E314E0DF93CF93DF92CF920E949F
+:101720009E088AE394E00E940508F70181917F01F9
+:1017300090E00E9470229F938F931F930F930E94BB
+:101740009E0882E394E00E94050821968DB79EB71B
+:1017500008960FB6F8949EBF0FBE8DBFCE30D10550
+:10176000D1F6DF91CF911F910F91FF90EF90DF9015
+:10177000CF9008958B3B910580F4883A910548F508
+:10178000853A9105D8F48430910508F0B2C00197EC
+:1017900009F06EC081E090E00895803E910508F464
+:1017A00067C0883E910508F4A4C09C01205F310900
+:1017B0002031310508F05CC090650895853A9105A7
+:1017C00009F459C0863A910509F058C082E890E4BE
+:1017D0000895883A910509F454C0893A910509F4AD
+:1017E00053C08A3A910509F452C08B3A910509F425
+:1017F00051C08C3A910509F450C08D3A910509F415
+:101800004FC0803B910509F44EC08E3A910509F412
+:101810004DC08F3A910509F44CC0813B910509F404
+:101820004BC0823B910509F44AC0833B910509F402
+:1018300049C0843B910509F448C0853B910509F4F2
+:1018400047C0863B910509F446C0873B910509F4E2
+:1018500045C0883B910509F444C0893B910509F4D2
+:1018600043C08A3B910509F442C080E094E40895A6
+:1018700080E090E0089581E890E4089583E890E4A2
+:10188000089582EE94E4089589EE94E408958AEE32
+:1018900094E4089585EB94E4089586EB94E4089528
+:1018A00087EB94E408958CEC94E408958DEC94E433
+:1018B000089583E895E408958AE895E4089582E917
+:1018C00095E4089584E995E4089581E296E4089505
+:1018D00083E296E4089584E296E4089585E296E42E
+:1018E000089586E296E4089587E296E408958AE2F0
+:1018F00096E4089524E5829FC0011124FC0126E0AE
+:10190000729FE00DF11D1124E60FF11DEE0FFF1F78
+:10191000E651FF4F859194910895880F991FFC011E
+:10192000E05AF040859194910895880F991FFC0129
+:10193000E052FF4F85919491089524E5829FC00164
+:101940001124FC0146E0749FE00DF11D1124E60F07
+:10195000F11DEE0FFF1FE651FF4F859194919C0101
+:101960003A9521154FE1340708F429C13F5121155B
+:10197000304120F49F700E94950C08959C013053D3
+:101980002115304118F49927906C0895811520E5B0
+:10199000920769F40E94D81B4FEF84E39CE041500A
+:1019A00080409040E1F700C000000C943223813069
+:1019B00020E5920751F482EB94E00E9405088091A3
+:1019C000D70181608093D70108959C01305521157E
+:1019D000304108F05CC0292F33272F703327213086
+:1019E0003105E9F4AC0164E0440F551F6A95E1F755
+:1019F00044275370BC016370772702C0220F331F46
+:101A00006A95E2F73C68242B352B73E0880F991F09
+:101A10007A95E1F780769927822B932B08952230CF
+:101A2000310529F4982F8827816F906A0895233013
+:101A30003105A1F4AC0133E0440F551F3A95E1F7AD
+:101A4000407E57708370992721E030E002C0220F5A
+:101A5000331F8A95E2F7C9019C6816C0243031050E
+:101A600031F5AC0123E0440F551F2A95E1F7407E84
+:101A700057708370992721E030E002C0220F331F96
+:101A80008A95E2F7C9019A68842B952B08959C01E9
+:101A900030572115304118F49F70906208959C01D1
+:101AA00030582115304118F49F70906A0895803E97
+:101AB0009105E0F4803C910558F58133910509F4D6
+:101AC0006FC048F48932910509F463C08A329105E8
+:101AD00009F46DC072C089339105E9F0823891052F
+:101AE000D1F08533910509F44DC067C0833E91055F
+:101AF00081F138F4803E9105B9F0823E9105D9F02C
+:101B00005CC0863E910561F1873E9105A1F155C00B
+:101B10000E948D0C08952091E90120FD02C021FF53
+:101B20004CC080EE90E049C08091E90180FFF9CF80
+:101B300089E390E042C08091E90182FF0EC080916C
+:101B4000E90184FF03C080E090E037C083EE90E0BD
+:101B500034C08091E90182FFF2CF82EE90E02DC087
+:101B60008091E90183FF0BC08091E90184FDEBCFF7
+:101B700087EE90E022C08091E90183FFF5CF86EEE9
+:101B800090E01BC08091E90185FF07C089E290E0E9
+:101B900014C08091E90185FFF9CF85E390E00DC085
+:101BA0008091E90186FF07C08AE290E006C080913B
+:101BB000E90186FFF9CF81E390E00E94BA0B089516
+:101BC0000895009739F08A30910514F44D960895E0
+:101BD0000697089587E290E008951F93CF93DF93CF
+:101BE000FC018281882309F440C0C62FD0E0D42BA9
+:101BF00082EE0E9497178D2F82958F7090E00E9441
+:101C0000E10D182F0E949717812F0E945F18CE01B7
+:101C100088279F70892F90E00E94E10D182F0E9465
+:101C20009717812F0E945F18CE01807F992724E0AB
+:101C3000969587952A95E1F70E94E10D182F0E944D
+:101C40009717812F0E945F18CE018F7099270E94ED
+:101C5000E10DC82F0E9497178C2F0E945F1882EE0B
+:101C6000DF91CF911F910C945F18DF91CF911F915D
+:101C7000089580916D0108959FB7F89410925C01CA
+:101C80009FBF9091EF01943009F057C09091E90007
+:101C90009F703091EC00232F217030FD20E8922BB3
+:101CA00024E02093E9002091EB0020FF43C0209125
+:101CB000EE0027FF3FC020915A01222321F02091FE
+:101CC000E80025FF37C010925A0126E03091E80065
+:101CD00035FD15C03091EF01343061F53091EB00E6
+:101CE00035FD28C0215021F481E080935A0122C0A3
+:101CF000EFE9FFE03197F1F700C00000E7CF8093F4
+:101D0000F1008091E80085FD0AC08091E80080FF25
+:101D1000FCCF8091E8008E778093E80006C08FB7F3
+:101D2000F89421E020935C018FBF9F709093E900AD
+:101D300080E008959F709093E9008FEF0895CF930E
+:101D4000DF9300D01F92CDB7DEB79C018091EF01E9
+:101D5000843019F593E099833B832A839093E900BB
+:101D60008FEF9091E800815095FD06C095ED9A9512
+:101D7000F1F700008111F5CF8091E80085FF0DC0DB
+:101D800040E050E063E070E0CE0101960E947211E5
+:101D90008091E8008E778093E8000F900F900F906D
+:101DA000DF91CF910895CF93DF9300D01F92CDB7ED
+:101DB000DEB72091EF01243021F522E029839B83B7
+:101DC0008A8383E08093E9008FEF9091E80081504F
+:101DD00095FD06C095ED9A95F1F700008111F5CFBC
+:101DE0008091E80085FF0DC040E050E063E070E0C6
+:101DF000CE0101960E9472118091E8008E77809347
+:101E0000E8000F900F900F90DF91CF9108959C0103
+:101E10008091EF018430F9F482E08093E9009FEF34
+:101E20008091E800915085FD06C085ED8A95F1F717
+:101E300000009111F5CF8091E80085FF0CC040E0D3
+:101E400050E065E070E0C9010E9472118091E800E5
+:101E50008E778093E8000895CF93DF93EC01809113
+:101E6000EF01843009F047C080910C018823E1F034
+:101E700080910D018823C1F085E08093E9008FEF08
+:101E80009091E800815095FD06C095E19A95F1F793
+:101E900000008111F5CF8091E80085FF2CC040E063
+:101EA00050E060E170E017C081E08093E9008FEFBF
+:101EB0009091E800815095FD06C095ED9A95F1F757
+:101EC00000008111F5CF8091E80085FF14C040E04B
+:101ED00050E068E070E0CE010E9472118091E8004D
+:101EE0008E778093E80080E1FE01ADE5B1E00190DE
+:101EF0000D928A95E1F7DF91CF91089589EE94E0F4
+:101F00000E9405088091EE01811109C00E9403130F
+:101F10000E9460138091E20084608093E200089543
+:101F200085EE94E00E9405081092EE01089581EE7E
+:101F300094E00C9405088DED94E00E9405080C9443
+:101F4000012D89ED94E00E9405080E94C8220E949C
+:101F5000072D0E940A160C94E00D20915B012F5F63
+:101F6000822F62E30E94842E992319F020935B0153
+:101F7000089510925B0180915C01882371F180913A
+:101F8000EF01843041F58091E9008F702091EC00E1
+:101F9000922F917020FD90E8892B94E09093E900B6
+:101FA0009091EB0090FF14C09091EE0097FF10C04D
+:101FB0009091E80095FF03C01092F100F9CF909145
+:101FC000E80090FF05C09091E8009E779093E800AC
+:101FD0008F708093E90010925C01089542E061ECFB
+:101FE00081E00E947C1242E061EC82E00E947C125F
+:101FF00042E061EC83E00E947C1242E261EC84E00A
+:102000000E947C1242E161EC85E00C947C1280918C
+:10201000F101833009F455C030F4813071F0823021
+:1020200009F48EC008958A3009F47AC08B3009F41F
+:1020300060C0893009F09CC020C08091F001813AD5
+:1020400009F096C08091E800877F8093E800809136
+:10205000F4019091F501892B21F460E18DE591E087
+:1020600003C060E080E090E070E00E94BD118091CC
+:10207000E8008B778093E80008958091F001813229
+:1020800009F076C08091F4019091F501009719F064
+:10209000049709F06DC08091E800877F8093E80085
+:1020A0008091E80082FD05C08091EF018111F8CF99
+:1020B0005FC08091F10080936D018091E8008B7783
+:1020C00053C08091F001813A09F052C08091F4012F
+:1020D0009091F501892B09F04BC08091E800877F32
+:1020E0008093E8008091E80080FFFCCF80910C0194
+:1020F00036C08091F0018132D9F58091F401909140
+:10210000F501892BA9F58091E800877F8093E8008D
+:102110000E94B1128091F20180930C010C94D81BA3
+:102120008091F001813221F58091E800877F8093D2
+:10213000E8000E94B1128091F30180936E0108952E
+:102140008091F001813AA1F48091E800877F80932B
+:10215000E8008091E80080FFFCCF80916E018093C1
+:10216000F1008091E8008E778093E8000C94B11222
+:10217000089584B7877F84BF0FB6F894A89580919F
+:102180006000886180936000109260000FBE90E054
+:1021900080E80FB6F89480936100909361000FBEC1
+:1021A0000E9496160E9403130E9460138091E20021
+:1021B00084608093E2008CE39EE00E940922789480
+:1021C0000E94EA150E94981682E091E00E9405168E
+:1021D0000E94EF2C88EC94E00E9405088091EF01AA
+:1021E000853089F484EC94E00E9405080E948A22DC
+:1021F0008091ED01882391F30E94B422882371F32A
+:102200000E945C11EBCF0E94C616E8CF292F33271E
+:1022100023303105C9F060F42130310581F02230DE
+:10222000310509F041C08DE890E021E235E040C081
+:1022300021323105E1F02232310531F135C082E140
+:1022400090E02EEA35E034C099278130910549F0BD
+:1022500028F0029749F5EDEEF4E005C0EDE1F5E078
+:1022600002C0E5E0F5E0849190E09F0121C0653077
+:10227000D8F4E62FF0E0EE0FFF1FEB5DFE4F20815C
+:10228000318189E090E014C0653070F470E0FB01AA
+:10229000EE0FFF1FE55EFE4F20813181FB01EA5EFC
+:1022A000FE4F808190E004C080E090E020E030E0CC
+:1022B000FA0131832083089580E189BD82E189BDDF
+:1022C00009B400FEFDCF8091D8008F7D8093D800A7
+:1022D0008091E00082608093E0008091E00081FDC9
+:1022E000FCCF0895CF92DF92EF92FF920F931F934E
+:1022F000CF93DF93EC018B016A010E94D012811110
+:1023000033C0C114D10439F0F60180819181081BDA
+:10231000190BC80FD91FE12CF12C0115110519F16A
+:102320008091E80085FD16C08091E8008E7780934B
+:10233000E800C114D10449F0F60180819181E80ED2
+:10234000F91EF182E08285E00FC00E94D01288233E
+:1023500021F30AC089918093F10001501109FFEF28
+:10236000EF1AFF0ADACF80E0DF91CF911F910F9132
+:10237000FF90EF90DF90CF9008952091F60130917B
+:10238000F7012617370748F06115710539F42091D8
+:10239000E8002E772093E80001C0B901FC0120E09D
+:1023A0006115710579F18091EF018823F1F1853094
+:1023B000F1F18091E80083FD3CC08091E80082FD4E
+:1023C0002EC08091E80080FFEBCF2091F300809138
+:1023D000F20090E0922B6115710551F08830910563
+:1023E00038F421912093F100615071090196F3CFE7
+:1023F00021E0089709F020E08091E8008E77809333
+:10240000E800CECF2111CFCF0AC08091EF01882301
+:1024100061F0853061F08091E80083FD0AC0809111
+:10242000E80082FFF2CF80E0089582E0089583E023
+:10243000089581E008952091F6013091F701261763
+:10244000370748F06115710539F42091E8002E77BF
+:102450002093E80001C0B901FC0120E0611571057D
+:1024600091F18091EF01882309F440C0853009F48F
+:102470003FC08091E80083FD3DC08091E80082FD6F
+:102480002FC08091E80080FFE9CF2091F300809178
+:10249000F20090E0922B6115710559F0883091059A
+:1024A00040F424912093F100319661507109019616
+:1024B000F2CF21E0089709F020E08091E8008E77C4
+:1024C0008093E800CBCF2111CCCF0AC08091EF01DF
+:1024D000882361F0853061F08091E80083FD0AC0B7
+:1024E0008091E80082FFF2CF80E0089582E00895B5
+:1024F00083E0089581E00895982F973068F59093D0
+:10250000E900981739F07091EC002091ED0050919E
+:10251000F00003C0242F762F50E021FD02C09F5F02
+:10252000ECCF3091EB003E7F3093EB003091ED002B
+:102530003D7F3093ED003091EB0031603093EB0044
+:102540007093EC002093ED005093F0002091EE008A
+:1025500027FDE5CF80E008958F708093E90081E04A
+:1025600008958091F00187FF11C08091E80082FDFD
+:1025700005C08091EF018111F8CF11C08091E80072
+:102580008B770BC08091EF01882349F08091E800A0
+:1025900080FFF8CF8091E8008E778093E80008955F
+:1025A0002091E4003091E50095E64091EC00842F05
+:1025B000817040FF23C08091E80080FD1DC08091A4
+:1025C000EF01882399F0853099F08091EB0085FD2B
+:1025D00011C04091E4005091E5002417350729F31C
+:1025E000915011F09A01E1CF84E0089582E00895BE
+:1025F00083E0089581E0089580E008954091E80027
+:1026000042FFDDCF08950E9471130E947913E0EE1E
+:10261000F0E0808181608083E8EDF0E080818F7759
+:10262000808319BCA7EDB0E08C918E7F8C93808164
+:102630008F7E80831092EE0108950F931F93CF93A6
+:10264000DF930E9471130E947913C8EDD0E0888156
+:102650008F77888388818068888388818F7D88834D
+:1026600019BC1092EF011092EB011092ED01109243
+:10267000EC0100EE10E0F80180818B7F808388817F
+:102680008160888342E060E080E00E947C12E1EE9D
+:10269000F0E080818E7F8083E2EEF0E080818160D7
+:1026A0008083808188608083F80180818E7F808331
+:1026B000888180618883DF91CF911F910F91089568
+:1026C000E8EDF0E080818F7E8083E7EDF0E08081AF
+:1026D0008160808384E082BF81E08093EE010C946E
+:1026E0001D13E8EDF0E080818E7F80831092E20080
+:1026F00008951092DA001092E10008951F920F924F
+:102700000FB60F9211242F933F934F935F936F93C4
+:102710007F938F939F93AF93BF93EF93FF9380919A
+:10272000E10082FF0BC08091E20082FF07C0809130
+:10273000E1008B7F8093E1000E94AD0F8091DA0071
+:1027400080FF1FC08091D80080FF1BC08091DA00FD
+:102750008E7F8093DA008091D90080FF0DC080E1E8
+:1027600089BD82E189BD09B400FEFDCF81E080937F
+:10277000EF010E947E0F05C019BC1092EF010E946C
+:10278000900F8091E10080FF19C08091E20080FFEE
+:1027900015C08091E2008E7F8093E2008091E2007C
+:1027A00080618093E2008091D80080628093D8009D
+:1027B00019BC85E08093EF010E949B0F8091E1009E
+:1027C00084FF30C08091E20084FF2CC080E189BD8D
+:1027D00082E189BD09B400FEFDCF8091D8008F7DD4
+:1027E0008093D8008091E1008F7E8093E1008091FA
+:1027F000E2008F7E8093E2008091E200816080930E
+:10280000E2008091EB01882311F084E007C0809101
+:10281000E30087FD02C081E001C083E08093EF0107
+:102820000E94A10F8091E10083FF29C08091E20006
+:1028300083FF25C08091E100877F8093E10082E0E3
+:102840008093EF011092EB018091E1008E7F8093E5
+:10285000E1008091E2008E7F8093E2008091E200AF
+:1028600080618093E20042E060E080E00E947C12A0
+:102870008091F00088608093F0000E94970FFF9194
+:10288000EF91BF91AF919F918F917F916F915F91E8
+:102890004F913F912F910F900FBE0F901F90189561
+:1028A0001F920F920FB60F9211242F933F934F93C5
+:1028B0005F936F937F938F939F93AF93BF93CF93C8
+:1028C000DF93EF93FF93C091E900CF708091EC000C
+:1028D000D82FD17080FDD0E81092E9008091F000EF
+:1028E000877F8093F00078940E9494141092E900FE
+:1028F0008091F00088608093F000CD2BCF70C09362
+:10290000E900FF91EF91DF91CF91BF91AF919F913E
+:102910008F917F916F915F914F913F912F910F9088
+:102920000FBE0F901F9018951F93CF93DF93CDB7D5
+:10293000DEB7AA970FB6F894DEBF0FBECDBFE0EFAB
+:10294000F1E08091F100819321E0E83FF207C9F7BF
+:102950000E9407108091E80083FF24C18091F0015C
+:102960009091F101492F50E04A30510508F01AC109
+:10297000FA01EA5AFF4F0C94A42E803881F0823875
+:1029800009F010C18091F4018F708093E90080916B
+:10299000EB0085FB882780F91092E90006C0809142
+:1029A000EC019091ED01911182609091E800977F88
+:1029B0009093E8008093F1001092F100C8C0282F96
+:1029C0002D7F09F0EFC0882319F0823061F0EAC052
+:1029D0008091F201813009F0E5C0933009F080E088
+:1029E0008093ED012BC08091F201811127C080916D
+:1029F000F4018F7009F4D6C08093E9002091EB00B8
+:102A000020FF1CC0933021F48091EB00806214C041
+:102A10009091EB0090619093EB0021E030E0A901F0
+:102A200002C0440F551F8A95E2F74093EA001092C6
+:102A3000EA008091EB0088608093EB001092E9003F
+:102A40008091E800877F86C08111ACC01091F201AF
+:102A50001F778091E3008078812B8093E300809141
+:102A6000E800877F8093E8000E94B1128091E8001F
+:102A700080FFFCCF8091E30080688093E300111118
+:102A800002C082E001C083E08093EF018BC08058D8
+:102A9000823008F087C08091F2019091F3018C3D63
+:102AA00053E0950779F583E08A838AE289834FB7FB
+:102AB000F894DE01139620E03EE051E2E32FF0E0CF
+:102AC00050935700E49120FF03C0E295EF703F5F01
+:102AD000EF708E2F90E0EA3010F0C79601C0C096DC
+:102AE0008D939D932F5F243149F74FBF8091E8006C
+:102AF000877F8093E8006AE270E0CE0101960E9431
+:102B0000BD1114C0AE014F5F5F4F6091F4010E9490
+:102B10000611BC01892B09F445C09091E800977F0C
+:102B20009093E80089819A810E941B128091E800AD
+:102B30008B778093E80036C08038A1F58091E8005B
+:102B4000877F8093E8008091EB018093F100809172
+:102B5000E8008E778093E8000E94B11223C08111B3
+:102B600021C08091F2019091F30199270297D4F44A
+:102B70008091E800877F8093E8008091F201809344
+:102B8000EB010E94B1128091EB01811106C080918E
+:102B9000E30087FD02C081E001C084E08093EF0183
+:102BA0000E94EE0F8091E80083FF0AC08091E80048
+:102BB000877F8093E8008091EB0080628093EB0038
+:102BC000AA960FB6F894DEBF0FBECDBFDF91CF91AE
+:102BD0001F910895CF938091EF018823A1F0C091B8
+:102BE000E900CF709091EC00892F817090FD80E812
+:102BF000C82B1092E9008091E80083FD0E94941494
+:102C0000CF70C093E900CF910895909374018093A1
+:102C100073010895E0917301F0917401309721F0F0
+:102C20000190F081E02D099480E00895EF92FF92E9
+:102C30001F93CF93DF93F82E192FE0917301F0913A
+:102C400074013097A9F10280F381E02D09958091FC
+:102C5000D70182FF2DC080FF04C083EE96E00E9462
+:102C60000508CF2DD12F10E18DEDE82E86E0F82E4E
+:102C70008091D70180FF0BC088811F928F93FF92B4
+:102C8000EF920E949E080F900F900F900F9011509E
+:102C900021961111EDCF8091D70180FF09C08BEDF6
+:102CA00096E0DF91CF911F91FF90EF900C94050873
+:102CB000DF91CF911F91FF90EF900895E091730104
+:102CC000F0917401309721F00480F581E02D099492
+:102CD000089520917101309172012817390771F020
+:102CE0009093720180937101E0917301F0917401EE
+:102CF000309721F00680F781E02D09940895209106
+:102D00006F01309170012817390771F090937001AD
+:102D100080936F01E0917301F0917401309721F07D
+:102D20000084F185E02D0994089508950C9495167A
+:102D30000E94CE220E941C0A0C949423CF93C82F89
+:102D40008091D70182FF1EC080FF04C08CEF96E007
+:102D50000E9405088091D70180FF0CC01F92CF937D
+:102D600087EF96E09F938F930E949E080F900F909D
+:102D70000F900F908091D70180FF04C085EF96E0FF
+:102D80000E9405088C2FCF910C94E00DCF92DF921A
+:102D9000EF92FF920F931F93CF93DF93CDB7DEB7E0
+:102DA0002B970FB6F894DEBF0FBECDBF0E94390A35
+:102DB00086E7C82E81E0D82E00E010E0E02E802FBC
+:102DC0000E946D0BF60141916F01F82EF426B1F4CB
+:102DD0000F5F1F4F0E30110589F78FEF89838A83AC
+:102DE0001B820E94D7228160782F9D838C8349812A
+:102DF0005A816B818D810E94691740C09091D701E3
+:102E000091FF04C08B870E94730B8B8520E030E01C
+:102E10004F2D50E0922FBA01022E02C07595679592
+:102E20000A94E2F760FF24C02E83EF8221E030E0B5
+:102E3000690102C0CC0CDD1C9A95E2F790E08C2170
+:102E40009D21892B09F420E028870E94D7228160E8
+:102E5000782F9A8789874E815F8168858A850E944D
+:102E60006917F801EA58FE4F8081C826C08206C063
+:102E70002F5F3F4F2630310569F6AACF0E94052704
+:102E80000E940A16909175018917A1F00E940A16F6
+:102E9000809375012B960FB6F894DEBF0FBECDBFA1
+:102EA000DF91CF911F910F91FF90EF90DF90CF9026
+:102EB0000C949E162B960FB6F894DEBF0FBECDBFB6
+:102EC000DF91CF911F910F91FF90EF90DF90CF9006
+:102ED0000895CF93DF93CDB7DEB72B970FB6F89455
+:102EE000DEBF0FBECDBF4F83588769877A878B8738
+:102EF000DE01119686E0FD0111928A95E9F785E0E1
+:102F0000FE01379601900D928A95E1F749815A8129
+:102F10006B817C818D819E810E946C1E2B960FB6E9
+:102F2000F894DEBF0FBECDBFDF91CF910895CF9350
+:102F3000C82F882309F4C1C0823859F40E940A16A8
+:102F400081FDBBC089E30E9409210E94E32189E33E
+:102F50000CC0833879F40E940A1680FDAEC083E568
+:102F60000E9409210E94E32183E50E945921CF910B
+:102F70000C94E321843859F40E940A1682FD9DC006
+:102F800087E40E9409210E94E32187E4EECF8CEFC1
+:102F90008C0F813A48F48C2F0E94972B81118DC0A1
+:102FA0008C2F0E940921E3CF80E28C0F883048F4F7
+:102FB000C77081E001C0880FCA95EAF70E94AC2172
+:102FC000D6CF8BE58C0F833078F4C53A29F0C63A1A
+:102FD00031F083E890E005C081E890E002C082E82B
+:102FE00090E0CF910C94691688E58C0F833108F03E
+:102FF00064C0C83A39F1C93A41F1CA3A49F1CB3A09
+:1030000051F1CC3A59F1CD3A61F1C03B69F1CE3A78
+:1030100071F1CF3A79F1C13B81F1C23B89F1C33BF8
+:1030200091F1C43B99F1C53BA1F1C63BA9F1C73B66
+:10303000B1F1C83BB9F1C93BC1F1CA3BC9F180E06C
+:1030400090E038C082EE90E035C089EE90E032C06A
+:103050008AEE90E02FC085EB90E02CC086EB90E0EC
+:1030600029C087EB90E026C08CEC90E023C08DEC6B
+:1030700090E020C083E891E01DC08AE891E01AC08A
+:1030800082E991E017C084E991E014C081E292E006
+:1030900011C083E292E00EC084E292E00BC085E2B0
+:1030A00092E008C086E292E005C087E292E002C0AA
+:1030B0008AE292E0CF910C947F16CF9108958823F5
+:1030C00009F44BC0823859F40E940A1681FF45C0AA
+:1030D00089E30E9409210E94E32189E30CC083381F
+:1030E00071F40E940A1680FF38C083E50E9409210E
+:1030F0000E94E32183E50E9459210C94E321843846
+:1031000059F40E940A1682FF28C087E40E94092110
+:103110000E94E32187E4EFCF9CEF980F913A58F398
+:1031200090E2980F983050F4877091E001C0990FA9
+:103130008A95EAF7892F0E94B221DFCF9BE5980F8D
+:10314000933020F480E090E00C946916885A833123
+:1031500020F480E090E00C947F160895882321F0FD
+:103160000E94AC210C94E3210895882321F00E9451
+:10317000B2210C94E3210895BF92CF92DF92EF9297
+:10318000FF920F931F93CF93DF9300D000D000D016
+:10319000CDB7DEB77C0185E0F701DE011196019025
+:1031A0000D928A95E1F7F70183819481892B09F4C7
+:1031B000DDC2908181818F3F19F49F3F09F4D6C20F
+:1031C000F7010281258122952F7099838A83898155
+:1031D0009A812E830E94C820182FB92E0E94C720E2
+:1031E0000E948E1FEB2DE295EF704E2F50E0FA01FA
+:1031F000E05AFF4F2E810C94A42E8B2D807F9B2DA7
+:103200009F70F92E882319F0F29480EFF8220023A2
+:1032100049F0FF2009F457C28F2D0E94BC210E9463
+:10322000E32151C2812F0E945F18FF2009F49EC242
+:103230008F2D0E94C22126960FB6F894DEBF0FBED6
+:10324000CDBFDF91CF911F910F91FF90EF90DF9055
+:10325000CF90BF900C94E3213B2D307F8B2D8F704E
+:10326000303211F08295807F112319F0113021F155
+:103270002CC00023B9F0222309F490C1213009F0B9
+:103280008DC126960FB6F894DEBF0FBECDBFDF917D
+:10329000CF911F910F91FF90EF90DF90CF90BF9053
+:1032A0000C94CC21222319F0213009F45FC28E83C3
+:1032B0000E94CF218E8186C1002321F0223008F0A8
+:1032C00055C26CC1211152C27DC1002321F02223BD
+:1032D00009F464C1F8C1222309F474C109C28B2D19
+:1032E00086958695837019F08130D1F03FC2002316
+:1032F00021F0812F9B2D937002C080E090E02696F4
+:103300000FB6F894DEBF0FBECDBFDF91CF911F91F6
+:103310000F91FF90EF90DF90CF90BF900C946916C3
+:10332000002321F0812F9B2D937002C080E090E05C
+:1033300026960FB6F894DEBF0FBECDBFDF91CF91BA
+:103340001F910F91FF90EF90DF90CF90BF900C9462
+:103350007F16812F002319F00E948B2502C00E9446
+:10336000F32526960FB6F894DEBF0FBECDBFDF91D2
+:10337000CF911F910F91FF90EF90DF90CF90BF9072
+:103380000C9478268B2D837009F075C00111EEC165
+:10339000812F829586958770880F880F912F9F7057
+:1033A000C92ED12CE12CF12C082E04C0CC0CDD1C34
+:1033B000EE1CFF1C0A94D2F714FF12C00FE010E0BD
+:1033C00020E030E004C0000F111F221F331F8A9538
+:1033D000D2F7C901B801609570958095909503C0AA
+:1033E00060E070E0CB014B2D46954695437042302E
+:1033F000C1F060F56C297D298E299F29413051F15A
+:1034000026960FB6F894DEBF0FBECDBFDF91CF91E9
+:103410001F910F91FF90EF90DF90CF90BF900C9491
+:10342000B51F6C297D298E299F2926960FB6F89401
+:10343000DEBF0FBECDBFDF91CF911F910F91FF90E7
+:10344000EF90DF90CF90BF900C94D11F0E94B51FDA
+:10345000C701B60126960FB6F894DEBF0FBECDBFEA
+:10346000DF91CF911F910F91FF90EF90DF90CF9060
+:10347000BF900C94991F002319F08B2D817001C00F
+:103480008695882309F472C1812F8295869587706D
+:10349000880F880F912F9F70C92ED12CE12CF12C11
+:1034A000082E04C0CC0CDD1CEE1CFF1C0A94D2F7C5
+:1034B00014FF12C00FE010E020E030E004C0000F65
+:1034C000111F221F331F8A95D2F7C901B8016095D9
+:1034D00070958095909503C060E070E0CB014B2D16
+:1034E0004695469543704230C1F060F56C297D29C0
+:1034F0008E299F29413051F126960FB6F894DEBFF0
+:103500000FBECDBFDF91CF911F910F91FF90EF9034
+:10351000DF90CF90BF900C948F206C297D298E294D
+:103520009F2926960FB6F894DEBF0FBECDBFDF9160
+:10353000CF911F910F91FF90EF90DF90CF90BF90B0
+:103540000C94AB200E948F20C701B60126960FB6BF
+:10355000F894DEBF0FBECDBFDF91CF911F910F91C9
+:10356000FF90EF90DF90CF90BF900C947320103FAE
+:10357000D1F118F4103E50F4A1C0123F09F463C019
+:1035800008F44CC0133F09F473C098C01F708B2D12
+:103590008F710023A1F00E940C20812F26960FB678
+:1035A000F894DEBF0FBECDBFDF91CF911F910F9179
+:1035B000FF90EF90DF90CF90BF900C94AE180E94D8
+:1035C0002D20812F26960FB6F894DEBF0FBECDBFFB
+:1035D000DF91CF911F910F91FF90EF90DF90CF90EF
+:1035E000BF900C94B5180023A9F02111BFC08B2DFA
+:1035F0008F7126960FB6F894DEBF0FBECDBFDF9158
+:10360000CF911F910F91FF90EF90DF90CF90BF90DF
+:103610000C945220223008F0A9C0E9CF0023A9F071
+:103620008B2D8F7126960FB6F894DEBF0FBECDBFDF
+:10363000DF91CF911F910F91FF90EF90DF90CF908E
+:10364000BF900C940C20002359F38B2D8F7126967C
+:103650000FB6F894DEBF0FBECDBFDF91CF911F91A3
+:103660000F91FF90EF90DF90CF90BF900C942D20A2
+:10367000002399F08B2D8F7126960FB6F894DEBF3C
+:103680000FBECDBFDF91CF911F910F91FF90EF90B3
+:10369000DF90CF90BF900C94F71F26960FB6F8944A
+:1036A000DEBF0FBECDBFDF91CF911F910F91FF9075
+:1036B000EF90DF90CF90BF900C94ED1F0023A9F006
+:1036C000222309F4ADCF812F26960FB6F894DEBFE2
+:1036D0000FBECDBFDF91CF911F910F91FF90EF9063
+:1036E000DF90CF90BF900C949717222309F4ADCFB1
+:1036F000812F26960FB6F894DEBF0FBECDBFDF91A7
+:10370000CF911F910F91FF90EF90DF90CF90BF90DE
+:103710000C945F184B2D4F70612FC7010E94A708B2
+:1037200026960FB6F894DEBF0FBECDBFDF91CF91C6
+:103730001F910F91FF90EF90DF90CF90BF900C946E
+:10374000111F4B2D4F70612FC70126960FB6F894AD
+:10375000DEBF0FBECDBFDF91CF911F910F91FF90C4
+:10376000EF90DF90CF90BF900C94ED0D26960FB6A2
+:10377000F894DEBF0FBECDBFDF91CF911F910F91A7
+:10378000FF90EF90DF90CF90BF9008950E94C921E5
+:103790000E949E210E94E3210E94AA270E9478266F
+:1037A00080E090E00E94691680E090E00C947F1623
+:1037B0000E94B9210C94C61B0E94C820292F229573
+:1037C0002F702C3030F42A3048F42250223078F414
+:1037D00005C02C3041F02F3031F009C0803E48F058
+:1037E000803F29F406C093FB882780F9089580E084
+:1037F000089581E00895CF93DF9300D000D01F9209
+:10380000CDB7DEB70F900F900F900F900F90DF9114
+:10381000CF910895CF93DF9300D000D000D0CDB7E3
+:10382000DEB726960FB6F894DEBF0FBECDBFDF9190
+:10383000CF9108951F93CF93DF93C091840116E039
+:1038400080918501C81799F0D0E01C9FF0011D9F61
+:10385000F00D1124EA57FE4F40815181628173813E
+:10386000848195810E940A1C2196C770E9CFDF915F
+:10387000CF911F9108954091B6015091B701609189
+:10388000B8017091B9018091BA019091BB010C947B
+:103890000A1C8091BB0182958F7009F054C0809101
+:1038A000B801882309F44FC080918401A09185015B
+:1038B0004091B9015091BA016091B6017091B70180
+:1038C000B6E08A1709F43FC090E041155105C1F1F7
+:1038D0007F3F11F46F3FA1F1B89FF001B99FF00D48
+:1038E0001124EA57FE4F218127132AC02081261375
+:1038F00027C02281211124C0238134812417350758
+:1039000010F421503109241B350B283C3105C0F43B
+:103910002091BB012F7020612093BB0126E0289FDE
+:10392000F001299FF00D1124E557FE4F80818F7023
+:103930008061808386EB91E00E94BC180C941A1C75
+:1039400001968770BECF0895CF92DF92EF92FF92DB
+:103950000F931F93CF93DF93CDB7DEB762970FB668
+:10396000F894DEBF0FBECDBF8C0185E0F801DE010B
+:103970001D9601900D928A95E1F7D8014C91119610
+:103980005C91119712966C918091B9019091BA0156
+:10399000009709F475C13091B6017091B7017F3F6E
+:1039A00019F43F3F09F46CC1F801C380D480E09062
+:1039B000B801EE2009F4BEC02091BB01C816D9069B
+:1039C00028F0D601A81BB90BCD0104C080959095B5
+:1039D0008C0D9D1DFF24F394883C910578F0F12C0B
+:1039E000207F09F0C4C07C2DD98AC88A89890E94A9
+:1039F000FB1B86EB91E00E94BC18AFC0822F807F3A
+:103A000009F045C0571313C0431311C061110FC013
+:103A10002F7020612093BB010E943B1C86EB91E03C
+:103A20000E94BC188091BB01F80185832EC0CD286F
+:103A300019F15F3F11F44F3FF9F0F62E61111CC0F0
+:103A4000809184012091850136E0821709F45BC0E2
+:103A500090E0389FF001399FF00D1124EA57FE4F96
+:103A60007181571306C07081471303C072817111B1
+:103A700003C001968770E9CFF62E662309F41CC1B6
+:103A80008091BB0181608093BB01F12C15C157135C
+:103A900009C0431307C0611105C08091BB01F80143
+:103AA0008583C8C04D875E878D859E856A8B0E9401
+:103AB000DC1B6A898823D1F16623C1F12091BB0107
+:103AC000822F82958F7090E0029774F08091B601FA
+:103AD0009091B70198878F831986DB86CA862C87D9
+:103AE000CE0107960E94BC1886E0F801A6EBB1E073
+:103AF00001900D928A95E1F70E94491C0E943B1C9F
+:103B0000FF24F394D9C04D875E878D859E850E94E2
+:103B1000C820292F22952F70223008F0C1C09F7035
+:103B200009F0BBC0805E883008F4C6C0C8010E949E
+:103B3000BC18E6CFC816D90608F453C0F601E81B36
+:103B4000F90BCF01883C910508F450C0F12C7C2D75
+:103B5000D98AC88A89890E94FB1BE6EBF1E086E0DE
+:103B6000DF011D928A95E9F70E943B1CA5C05713FF
+:103B700014C0431312C0611110C08091BB01F80141
+:103B80008583C8010E94BC1886E0E6EBF1E0DF0106
+:103B90001D928A95E9F7FE2C8FC04D875E878D8533
+:103BA0009E856A8B0E94DC1B6A89882309F4BECF3C
+:103BB000662309F4BBCF2091BB01822F82958F70C1
+:103BC00090E002970CF490CF8091B6019091B701EC
+:103BD0009A8389831B82DD82CC822E83CE0101965B
+:103BE00081CF809590958C0D9D1DACCFF62E6623D0
+:103BF00009F49CCF571333C0431331C02091BB014C
+:103C000020FD24C0822F82958F70482F50E04115EF
+:103C10005105E1F0D80115962C9315974F305105B9
+:103C200049F08F5F982F9295907F822F8F70892B0C
+:103C300015968C93C8010E94BC1886E0F801A6EB8B
+:103C4000B1E001900D928A95E1F78ECF86E0F80100
+:103C5000A6EBB1E001900D928A95E1F72DC04D875A
+:103C60005E878D859E850E94DC1B81113DCF8091F2
+:103C7000BB0181608093BB01C8010E94BC181CC0BD
+:103C8000662309F453CF4D875E878D859E850E94FC
+:103C9000DC1B882309F44ACF27CF811143CF0CC006
+:103CA000243008F043CF9F7009F43CCFD80115961B
+:103CB0009C91907F09F036CF8F2D62960FB6F894C5
+:103CC000DEBF0FBECDBFDF91CF911F910F91FF904F
+:103CD000EF90DF90CF9008951F93CF93DF93CDB7F0
+:103CE000DEB72C970FB6F894DEBF0FBECDBF4F8363
+:103CF000588769877A878B879C87CE0107960E94B1
+:103D0000A41C882371F08A859B85892B09F441C006
+:103D100088858F3F09F065C08F818F3F09F061C0B2
+:103D200038C086E0FE013796DE01119601900D92B3
+:103D30008A95E1F76A857B856115710551F1FF81EF
+:103D4000E885EF3F11F4FF3F21F12091850130E03C
+:103D5000C9010196877099274091840150E084172A
+:103D6000950709F447C0F983EA837D836C8396E065
+:103D7000929FD001939FB00D1124AA57BE4FFE0110
+:103D8000319601900D929A95E1F7809385010E94FA
+:103D90001A1C16E080918401909185018917B9F170
+:103DA000189FC00111248A579E4F0E94A41C88238B
+:103DB00071F1E09184011E9FF0011124EA57FE4F3A
+:103DC0004081518162817381848195810E940A1CA6
+:103DD0008091840190E001968770992780938401F7
+:103DE000D9CF4F81588569857A858B859C850E94BE
+:103DF0000A1CCFCF0E94D81B10928501109284011B
+:103E0000E6EBF1E086E0DF011D928A95E9F72C965A
+:103E10000FB6F894DEBF0FBECDBFDF91CF911F91DB
+:103E20000895EF92FF920F931F93CF93DF938C012E
+:103E3000892B09F46CC0F12CEE24E394E80121965F
+:103E4000F8018491843740F4843008F051C0813007
+:103E500081F0823019F15BC0853709F444C0A8F1C4
+:103E60009CE7980F903708F052C08F770E945F1838
+:103E700041C00E5F1F4FFE01849190E2980F983071
+:103E800050F48770FE2D01C0FF0F8A95EAF78F2F3F
+:103E90000E94BC2114C00E9497172DC00E5F1F4FB7
+:103EA000FE01849190E2980F983060F48770FE2DA7
+:103EB00001C0FF0F8A95EAF78F2F0E94C2210E944E
+:103EC000E32119C00E945F1816C00E5F1F4FFE014C
+:103ED000C491CC2381F08FE99FE00197F1F700C0F6
+:103EE0000000C150F6CF0E5F1F4FFE01F49003C0DB
+:103EF0000E9497178E018F2D882309F49FCFEFE939
+:103F0000FFE03197F1F700C000008150F5CFDF915D
+:103F1000CF911F910F91FF90EF90089508956093B6
+:103F2000C0017093C1018093C2019093C3010C94AE
+:103F3000C61B0F931F930091C0011091C1012091E6
+:103F4000C2013091C301DC01CB01802B912BA22B4C
+:103F5000B32B8093C0019093C101A093C201B09391
+:103F6000C3011F910F910C94C61B0F931F930091D7
+:103F7000C0011091C1012091C2013091C301DC0147
+:103F8000CB0180239123A223B3238093C00190937C
+:103F9000C101A093C201B093C3011F910F910C9472
+:103FA000C61B0F931F930091C0011091C101209176
+:103FB000C2013091C301DC01CB0180279127A227E8
+:103FC000B3278093C0019093C101A093C201B09325
+:103FD000C3011F910F910C94C61B1092BC0110924B
+:103FE000BD011092BE011092BF010C94C61B41E0AE
+:103FF00050E060E070E004C0440F551F661F771F5B
+:104000008A95D2F74093BC015093BD016093BE01E5
+:104010007093BF010C94C61B41E050E060E070E07B
+:1040200004C0440F551F661F771F8A95D2F78091F1
+:10403000BC019091BD01A091BE01B091BF01482B80
+:10404000592B6A2B7B2B4093BC015093BD0160938D
+:10405000BE017093BF010C94C61B41E050E060E0CC
+:1040600070E004C0440F551F661F771F8A95D2F772
+:1040700040955095609570958091BC019091BD01DF
+:10408000A091BE01B091BF01482359236A237B232D
+:104090004093BC015093BD016093BE017093BF017A
+:1040A0000C94C61B41E050E060E070E004C0440F97
+:1040B000551F661F771F8A95D2F78091BC0190919A
+:1040C000BD01A091BE01B091BF01482759276A27C1
+:1040D0007B274093BC015093BD016093BE01709358
+:1040E000BF010C94C61B0F931F930091BC0110914C
+:1040F000BD012091BE013091BF01DC01CB01802BBD
+:10410000912BA22BB32B8093BC019093BD01A09364
+:10411000BE01B093BF011F910F910C94C61B0F936A
+:104120001F930091BC011091BD012091BE013091FF
+:10413000BF01DC01CB0180239123A223B323809311
+:10414000BC019093BD01A093BE01B093BF011F912C
+:104150000F910C94C61B0F931F930091BC011091FB
+:10416000BD012091BE013091BF01DC01CB01802750
+:104170009127A227B3278093BC019093BD01A09300
+:10418000BE01B093BF011F910F910C94C61B0895FF
+:10419000CF92DF92EF92FF920F931F93CF93DF9313
+:1041A0008C01C090BC01D090BD01E090BE01F090A8
+:1041B000BF018091C0019091C101A091C201B09155
+:1041C000C301C82AD92AEA2AFB2ACFE1D0E0D701C5
+:1041D000C6010C2E04C0B695A795979587950A94AD
+:1041E000D2F780FF07C0B8018C2F0E949D0C813050
+:1041F000910531F4219758F7B80180E00E949D0C99
+:10420000DF91CF911F910F91FF90EF90DF90CF90B2
+:10421000089590910C01992379F190910D019923C2
+:1042200059F1982F9695969596959F30A0F4E09128
+:104230000E01F0910F01E90FF11D877021E030E0D0
+:10424000A90102C0440F551F8A95E2F7CA01918166
+:10425000892B818308959091D70190FF29C01F92E7
+:104260008F938DE297E09F938F930E949E080F900B
+:104270000F900F900F90089520910E0130910F0133
+:10428000F90132969FEF40E05191851789F09F3FE9
+:1042900019F4511101C0942F4F5F4E30A9F79F3F81
+:1042A00039F0F901E90FF11D97FDFA958283089520
+:1042B000089590910C01992381F190910D0199231A
+:1042C00061F1982F9695969596959F30A8F4E09178
+:1042D0000E01F0910F01E90FF11D877021E030E030
+:1042E000A90102C0440F551F8A95E2F7CA018095C3
+:1042F00091818923818308959091D70190FF1DC0FA
+:104300001F928F938FE097E09F938F930E949E0858
+:104310000F900F900F900F90089520910E01309103
+:104320000F01F9013296205F3F4F9081891301C040
+:1043300010823196E217F307C1F7089581E090E00B
+:10434000E0910E01F0910F01E80FF91F1082019624
+:1043500080319105A9F708959091D601892B80931A
+:10436000D601089580959091D60189238093D60136
+:1043700008951092D60108959091D501892B8093CC
+:10438000D501089580959091D50189238093D50119
+:1043900008951092D50108958093C4010895109254
+:1043A000C401089580910E0190910F01FC01319696
+:1043B0009C01205F3F4F80E0919191118F5FE21748
+:1043C000F307D1F70895E0910E01F0910F0180916C
+:1043D000D6018083E0910E01F0910F0190818091D0
+:1043E000D501892B80838091C401882361F0E091FD
+:1043F0000E01F0910F019081892B80830E94D221C0
+:1044000081111092C40180910E0190910F010C94C2
+:10441000161690933B0180933A010895CF92DF9254
+:10442000EF92FF926C01EE24FF24C114D104E10449
+:10443000F10421F0C701B60120E101C020E0C72E40
+:10444000D82EE92EFF24C114D104E104F10419F09F
+:10445000285FC701B6016B017C0154E0F694E79434
+:10446000D794C7945A95D1F7C114D104E104F1044B
+:1044700019F02C5FC701B6016B017C0142E0F69494
+:10448000E794D794C7944A95D1F7C114D104E104B5
+:10449000F10419F02E5FC701B601DC01CB01B6951E
+:1044A000A79597958795892B8A2B8B2B09F02F5FE2
+:1044B000822FFF90EF90DF90CF9008958295982FF4
+:1044C000937344E0949F900111248C7C869586958B
+:1044D000282B822F8575880F2A7A2695822B08959E
+:1044E0001F93CF93DF931F92CDB7DEB799830E94BE
+:1044F0005E22182F9981892F0E945E22212F30E0A1
+:10450000322F2227A901482BCA010F90DF91CF91AA
+:104510001F9108958091EF01843011F120E488E12A
+:1045200090E00FB6F894A895809360000FBE20939A
+:10453000600083B7817F846083BF83B7816083BF5E
+:104540007894889583B78E7F83BF0FB6F894A8952B
+:1045500080916000886180936000109260000FBEBF
+:10456000089508950C94B122CF930E94B2220E9424
+:10457000390A0E94B122C0E08C2F0E946D0B81117C
+:1045800004C0CF5FCE30C1F701C081E0CF91089564
+:104590000E94D81B0E940A160C94E00D82E084BD94
+:1045A00093E095BD9AEF97BD80936E0008952FB765
+:1045B000F8948091D8019091D901A091DA01B0913D
+:1045C000DB012FBF0895CF92DF92EF92FF920F93FE
+:1045D0001F932FB7F8944091D8015091D901609161
+:1045E000DA017091DB012FBF6A017B01EE24FF2409
+:1045F0008C0120E030E0C016D106E206F30610F48C
+:10460000415051099A01281B390BC9011F910F9183
+:10461000FF90EF90DF90CF9008951F920F920FB60A
+:104620000F9211248F939F93AF93BF938091D801E2
+:104630009091D901A091DA01B091DB010196A11D01
+:10464000B11D8093D8019093D901A093DA01B09362
+:10465000DB01BF91AF919F918F910F900FBE0F9093
+:104660001F9018950E940313F8942FEF87EA91E6A4
+:10467000215080409040E1F700C0000087E090EBBF
+:10468000DC018093F8019093F901A093FA01B093B3
+:10469000FB019CE088E10FB6F894A8958093600038
+:1046A0000FBE90936000FFCFEF92FF920F931F9386
+:1046B000CF93DF93D82FC0E08C2F0E946D0B00E0CA
+:1046C00010E0E82EF12CC701002E02C095958795C9
+:1046D0000A94E2F780FD06C00F5F1F4F06301105F8
+:1046E00091F709C0602F7C2F80E00E947A0C8D1317
+:1046F000F3CF81E004C0CF5FCE30F1F680E0DF91F0
+:10470000CF911F910F91FF90EF900895CF93C82FF5
+:104710008CE20E945423882321F08C2FCF910C949B
+:10472000542380E0CF910895CF930E94E324811118
+:1047300002C00E94C92482E597E00E940508C5E6F0
+:10474000C15049F00E94390A8FE39CE90197F1F7C3
+:1047500000C00000F5CF8BE497E00E94050889E2D5
+:104760000E948623811113C18AE20E94862381114F
+:104770000E94C92485E00E94862381110E94322371
+:104780000E94EE248093D70187E00E94862388232D
+:10479000A9F18BE10E948623882351F08091D701F3
+:1047A00081FB222720F991E0922790FB81F90EC02E
+:1047B0008EE00E948623882361F08091D70182FBDE
+:1047C000222720F991E0922790FB82F98093D7016C
+:1047D00015C080E10E9486239091D701882341F083
+:1047E00093FB222720F981E0822780FB93F904C004
+:1047F000892F809580FB90F99093D7018091D70104
+:104800000E94F2240E9400258093E90180EE0E941C
+:104810008623882341F08091E901982F909590FBA1
+:1048200080F98093E90189E30E948623882359F067
+:104830008091E90181FB222720F991E0922790FBEA
+:1048400081F98093E90182EE0E948623882359F042
+:104850008091E90182FB222720F991E0922790FBC9
+:1048600082F98093E90186EE0E948623882359F01D
+:104870008091E90183FB222720F991E0922790FBA8
+:1048800083F98093E90183EE0E948623882359F0FF
+:104890008091E90184FB222720F991E0922790FB87
+:1048A00084F98093E90185E30E948623882359F0E7
+:1048B0008091E90185FB222720F991E0922790FB66
+:1048C00085F98093E90181E30E948623882359F0CA
+:1048D0008091E90186FB222720F991E0922790FB45
+:1048E00086F98093E90181E10E948623882359F0AB
+:1048F0008091E90187FB222720F991E0922790FB24
+:1049000087F98093E9018091E9010E940425809153
+:10491000E90187FB882780F980930D0187E20E94D7
+:104920008623C82F8EE10E9486238111C2608FE109
+:104930000E9486238111C46080E20E948623811137
+:10494000C86081E20E9486238111C06182E20E94D8
+:1049500086238111C06283E20E9486238111C06494
+:1049600084E20E948623882311F0C06802C0CC2311
+:1049700029F08C2F0E94FB246C2F03C00E94F72487
+:10498000682F70E080E090E0CF910C948F1FCF9162
+:1049900008956DEE7EEF80E090E00E94DA2E60E0F8
+:1049A00082E090E00E94CC2E60E083E090E00E94E4
+:1049B000CC2E60E084E090E00E94CC2E60E085E0A8
+:1049C00090E00C94CC2E80E090E00E94C62E21E076
+:1049D0008D3E9E4F09F020E0822F089582E090E006
+:1049E0000C94BE2E682F82E090E00C94CC2E83E0D5
+:1049F00090E00C94BE2E682F83E090E00C94CC2EB7
+:104A000084E090E00C94BE2E682F84E090E00C943B
+:104A1000CC2E8091DE0180FF0BC06091130185E0F8
+:104A2000689FB001112475956795759567952BC0A2
+:104A300081FF09C06091130185E0689FB0011124D6
+:104A40007595679520C082FF07C06091130185E0CE
+:104A5000689FB001112417C09091DF019923D1F014
+:104A600060911201961788F72091130185E0289F25
+:104A700090011124929FA001939F500D112470E08A
+:104A8000CA010E94902E6038710540F461157105CD
+:104A900019F406C065E070E0862F08958FE7089549
+:104AA00081E008958091DE0180FF08C060911101CE
+:104AB00070E0759567957595679521C081FF06C073
+:104AC0006091110170E07595679519C082FF04C06F
+:104AD0006091110170E010C09091DF01992399F06D
+:104AE000609110019617A0F780911101899FC00174
+:104AF000112470E00E94902E6038710540F4611519
+:104B0000710519F406C061E070E0862F08958FE703
+:104B1000089581E00895803F21F40E940925819540
+:104B200004C0813F29F40E9409258093E201089581
+:104B3000823F21F40E940925819504C0833F29F416
+:104B40000E9409258093E1010895893F19F40E948C
+:104B5000522505C08A3F31F40E94522581958093E9
+:104B6000E30108958B3F21F40E945225819504C0F2
+:104B70008C3F29F40E9452258093E4010895843FDC
+:104B800021F48091E001816017C0853F21F480917C
+:104B9000E001826011C0863F21F48091E0018460D1
+:104BA0000BC0873F21F48091E001886005C0883FF9
+:104BB00031F48091E00180618093E00108958D3FA0
+:104BC00021F48091DE0181600BC08E3F21F4809141
+:104BD000DE01826005C08F3F29F48091DE01846090
+:104BE0008093DE010895803F39F48091E20187FFD0
+:104BF0006CC01092E20169C0813F29F48091E2010A
+:104C00001816BCF362C09091E101823F29F497FF2E
+:104C10005CC01092E10159C0833F19F41916CCF31E
+:104C200054C0893F41F48091E30118160CF04DC047
+:104C30001092E3014AC08A3F29F48091E30187FF83
+:104C400044C0F6CF8B3F39F48091E40187FF3DC02B
+:104C50001092E4013AC08C3F29F48091E4011816C7
+:104C6000BCF333C0843F21F48091E0018E7F17C0F4
+:104C7000853F21F48091E0018D7F11C0863F21F4B2
+:104C80008091E0018B7F0BC0873F21F48091E00190
+:104C9000877F05C0883F31F48091E0018F7E80934B
+:104CA000E00113C08D3F21F48091DE018E7F0BC0A7
+:104CB0008E3F21F48091DE018D7F05C08F3F29F466
+:104CC0008091DE018B7F8093DE018091E101811173
+:104CD0000EC08091E20181110AC08091E30181112F
+:104CE00006C08091E401811102C01092DF01089595
+:104CF0008091D70183FF7EC08EE897E00E9405086F
+:104D00008091E0011F928F9389E897E09F938F93A2
+:104D10000E949E0887E897E00E9405088091E101C3
+:104D2000282F082E000C330B3F938F9384E897E0D5
+:104D30009F938F930E949E0882E897E00E94050847
+:104D40008091E201282F082E000C330B3F938F93A4
+:104D50008FE797E09F938F930E949E088DE797E0DF
+:104D60000E9405088091E301282F082E000C330BC8
+:104D70003F938F938AE797E09F938F930E949E08BB
+:104D800088E797E00E9405088091E401282F082E0B
+:104D9000000C330B3F938F9385E797E09F938F939E
+:104DA0000E949E0882E797E00E9405088091DF013B
+:104DB0001F928F938FE697E09F938F930E949E0898
+:104DC0008DE697E00E9405088091DE011F928F9387
+:104DD0008AE697E09F938F930E949E0887E697E06C
+:104DE0000E9405088DB79EB74C960FB6F8949EBFEB
+:104DF0000FBE8DBF80EE91E00E945E160E94D7220A
+:104E00009093DD018093DC0108951F93CF93DF938E
+:104E10008091DC019091DD010E94E322AC01909130
+:104E2000DF01992321F02091140130E006C0209188
+:104E300015018AE0289F900111244217530708F4B6
+:104E400085C08091E101C091E201D091E301109110
+:104E5000E401811107C0C11175C0D11173C01111D6
+:104E600071C074C09F3F19F09F5F9093DF011816C7
+:104E700024F40E9409258093E1018091E10187FFDC
+:104E800005C00E94092581958093E1011C1624F438
+:104E90000E9409258093E2018091E20187FF05C00D
+:104EA0000E94092581958093E2016091E1016623CA
+:104EB00031F1C091E201CC2311F1062E000C770BE9
+:104EC000880B990B0E948B2D23E333E343E35FE3CD
+:104ED0000E94EF2D0E94532D6093E1016C2FCC0FA7
+:104EE000770B880B990B0E948B2D23E333E343E36D
+:104EF0005FE30E94EF2D0E94532D6093E2011D1687
+:104F000024F40E9452258093E3018091E30187FFFE
+:104F100005C00E94522581958093E301111624F467
+:104F20000E9452258093E4018091E40187FF05C02F
+:104F30000E94522581958093E401DF91CF911F91CA
+:104F40000C9478269F3F09F08FCFA0CFDF91CF91AF
+:104F50001F910895E0EEF1E085E0DF011D928A9552
+:104F6000E9F71092DF011092DE01089581EB99E0DC
+:104F70000E9405081F9281E08F931F9285E08F9316
+:104F800083E699E09F938F930E949E080F900F9065
+:104F90000F900F900F900F9008958330E9F128F44F
+:104FA000813061F0823009F10895853009F462C0E2
+:104FB00008F449C0863009F474C008958091150141
+:104FC000262F30E0280F311D2F3F310524F4680FC4
+:104FD0006093150103C08FEF809315018091150137
+:104FE0001F928F938CE998E072C080911401262F54
+:104FF00030E0280F311D2F3F310524F4680F6093F6
+:10500000140103C08FEF80931401809114011F924B
+:105010008F938AE898E05BC080911301262F30E0DF
+:10502000280F311D2F3F310524F4680F60931301C1
+:1050300003C08FEF80931301809113011F928F9310
+:1050400087E798E044C080911201262F30E0280FB6
+:10505000311D2F3F310524F4680F6093120103C006
+:105060008FEF80931201809112011F928F9382E63D
+:1050700098E02DC080911101262F30E0280F311DBE
+:105080002F3F310524F4680F6093110103C08FEFA7
+:1050900080931101809111011F928F9389E498E010
+:1050A00016C080911001262F30E0280F311D2F3FB0
+:1050B000310524F4680F6093100103C08FEF8093D3
+:1050C0001001809110011F928F938EE298E09F93C0
+:1050D0008F930E949E080F900F900F900F9008954D
+:1050E000833081F128F4813059F08230D1F0089575
+:1050F000853009F449C0B8F1863009F456C00895E6
+:1051000080911501681720F4861B8093150102C059
+:1051100010921501809115011F928F938FE198E0F5
+:1051200054C080911401681720F4861B80931401E9
+:1051300002C010921401809114011F928F938DE090
+:1051400098E043C080911301681720F4861B809378
+:10515000130102C010921301809113011F928F93CB
+:105160008AEF97E032C080911201681720F4861B05
+:105170008093120102C010921201809112011F92BD
+:105180008F9385EE97E021C080911101681720F47C
+:10519000861B8093110102C01092110180911101B0
+:1051A0001F928F938CEC97E010C0809110016817CC
+:1051B00020F4861B8093100102C010921001809190
+:1051C00010011F928F9381EB97E09F938F930E9422
+:1051D0009E080F900F900F900F900895CF93C82FB7
+:1051E0001F928F9386EB9AE09F938F930E949E0865
+:1051F00081E090E0A0E0B0E0BC01CD0104C0660F0A
+:10520000771F881F991FCA95D2F70E948F1F0F9092
+:105210000F900F900F90CF910C94D81BCF938D319E
+:1052200009F465C0B0F58E3009F4CCC100F58730C3
+:1052300009F49BC1A8F4863009F06DC28091D701B2
+:10524000817F8E7F8093D7018BEB9AE00E940508C7
+:1052500080E09FE00E94050881E08093E60180C124
+:10526000883009F44FC08B3009F47CC154C28631B8
+:1052700009F4F0C138F4803109F4B8C1813109F47E
+:1052800030C249C2893109F4CEC18B3109F486C1DB
+:1052900042C2853309F437C248F4873209F433C275
+:1052A00008F433C2893209F42EC235C2833438F48B
+:1052B0008A3308F02CC2883309F454C12CC28334D9
+:1052C00009F421C2883409F026C20E94D81B8FEE4F
+:1052D0009EE00E9405089FEF23ED80E3915020405F
+:1052E0008040E1F700C000000E94322339C18FE006
+:1052F0009FE00E9405080E940D2D0E940A160E9440
+:10530000E00D2EC184E09FE00E9405088CEC9CE03B
+:105310000E9405080E94F7241F928F9389EC9CE05D
+:105320009F938F930E949E0887EC9CE00E94050843
+:105330000E94EE24C82F84EB9CE00E9405081F9277
+:10534000CF938FEA9CE09F938F930E949E088DEAF3
+:105350009CE00E94050883EA9CE00E9405088C2FCF
+:1053600081701F928F9380EA9CE09F938F930E949D
+:105370009E088EE99CE00E94050884E99CE00E945A
+:105380000508C1FB882780F91F928F9381E99CE073
+:105390009F938F930E949E088FE89CE00E940508CF
+:1053A00083E89CE00E940508C2FB882780F91F92D1
+:1053B0008F9380E89CE09F938F930E949E088EE7D6
+:1053C0009CE00E94050885E79CE00E940508C3FB5D
+:1053D000CC27C0F91F92CF9382E79CE09F938F93D5
+:1053E0000E949E0880E79CE00E9405080E9400251C
+:1053F000C82F8CE59CE00E9405081F92CF9387E59B
+:105400009CE09F938F930E949E0885E59CE00E94FC
+:1054100005088CE39CE00E9405088C2F81701F9288
+:105420008F9389E39CE09F938F930E949E088DB792
+:105430009EB780960FB6F8949EBF0FBE8DBF87E3D0
+:105440009CE00E94050880E29CE00E940508C1FBE8
+:10545000882780F91F928F938DE19CE09F938F9313
+:105460000E949E088BE19CE00E94050889E09CE078
+:105470000E940508C2FB882780F91F928F9386E05F
+:105480009CE09F938F930E949E0884E09CE00E9482
+:10549000050882EF9BE00E940508C3FB882780F97E
+:1054A0001F928F938FEE9BE09F938F930E949E0895
+:1054B0008DEE9BE00E94050883EE9BE00E940508AC
+:1054C000C4FB882780F91F928F9380EE9BE09F9307
+:1054D0008F930E949E088EED9BE00E9405088CEC45
+:1054E0009BE00E940508C5FB882780F91F928F93D7
+:1054F00089EC9BE09F938F930E949E0887EC9BE032
+:105500000E9405088BEA9BE00E940508C6FB8827DD
+:1055100080F91F928F9388EA9BE09F938F930E945C
+:105520009E0886EA9BE00E9405088EE99BE00E94A7
+:105530000508C7FBCC27C0F91F92CF938BE99BE0EE
+:105540009F938F930E949E0889E99BE00E94050823
+:105550008DB79EB74C960FB6F8949EBF0FBE8DBF09
+:10556000C1E0DEC082EE9AE05BC08091D701C82F17
+:10557000C17080FF09C082EE9EE00E940508809104
+:10558000D701817F8E7F47C086ED9EE00E9405088F
+:105590008091D70181608093D701E2CF9091D701AC
+:1055A00091FBCC27C0F981E0C827892FC0FB81F986
+:1055B0008093D701CC2319F089EC9EE027C08BEBB8
+:1055C0009EE02EC09091D70192FBCC27C0F981E0DC
+:1055D000C827892FC0FB82F98093D701CC2319F00B
+:1055E0008CEA9EE013C08CE99EE01AC09091D7012E
+:1055F00093FBCC27C0F981E0C827892FC0FB83F932
+:105600008093D701CC2351F080E99EE00E940508E9
+:105610008091D70181608093D70182C083E89EE0AA
+:105620000E9405089DCF84E79EE00E94050888E45B
+:105630009EE00E9405088BE09EE00E9405088EED2A
+:105640009DE00E9405088AE99DE00E9405088CE61D
+:105650009DE0E6CF8EE59DE00E9405080E940A16B7
+:105660001F928F9384E49DE09F938F930E949E08E6
+:1056700080910C011F928F938DE29DE09F938F93F9
+:105680000E949E0880916E011F928F938AE19DE097
+:105690009F938F930E949E0880910D011F928F937C
+:1056A00087E09DE09F938F930E949E088091D80190
+:1056B0009091D901A091DA01B091DB01BF93AF9332
+:1056C0009F938F9383EF9CE09F938F930E949E08FC
+:1056D0008DB79EB746960FB6F8949EBF0FBE8DBF8E
+:1056E0003FCF0E94D81BC0910D0181E0C827C09315
+:1056F0000D01CC2329F089EE9CE00E94050810C022
+:105700008EED9CE08DCF80E003C08D5101C08953A8
+:105710000E94EE2825CF8CED9CE00E940508C0E099
+:105720008C2FCF91089580E008950C94932BCF9304
+:10573000C82F8091E601813081F020F0823009F499
+:105740004FC045C1E0910E01F0910F018081813180
+:1057500069F0823209F03DC109C0E0910E01F0917B
+:105760000F018081813111F0823261F48C2F0E940F
+:10577000952B811104C08C2F0E940E292FC081E02F
+:1057800090E02CC08C2F0E94932B811126C0C43135
+:10579000E1F070F4CB3081F0C031D1F40E94B62733
+:1057A0008EEA9AE00E94050882E08093E60115C027
+:1057B000C93259F0C83361F48BEB9AE00E940508B6
+:1057C00082EB9AE00E94050808C01092E60103C12E
+:1057D0008CEA9AE00E940508FEC081E08170FDC05D
+:1057E000C43220F5CE3108F0C0C0CB3099F1C8F4F6
+:1057F000C73009F0D2C08AE08093150194E19093FC
+:10580000140193E0909313018093120188E0809338
+:10581000110188E28093100182E599E00E94050859
+:10582000BFC0C33149F1C431C1F0B7C0CB3409F4B2
+:10583000A9C028F4C93289F0C83361F0AEC0C135BF
+:1058400009F49EC0C23509F499C0CE3409F0A5C050
+:105850006AE09EC00E94B627A3C08091E50188231C
+:1058600019F01092E5019CC08FE599E00E940508AF
+:1058700081E08093E601B1C089E399E00E940508C8
+:1058800087E299E00E940508809115011F928F938D
+:1058900084E299E09F938F930E949E0882E299E0B0
+:1058A0000E94050880E199E00E940508809114019A
+:1058B0001F928F938DE099E09F938F930E949E0893
+:1058C0008BE099E00E9405088CEF98E00E940508A3
+:1058D000809113011F928F9389EF98E09F938F938C
+:1058E0000E949E0887EF98E00E94050886EE98E0E7
+:1058F0000E940508809112011F928F9383EE98E019
+:105900009F938F930E949E0881EE98E00E94050865
+:105910008CEC98E00E940508809111011F928F93F2
+:1059200089EC98E09F938F930E949E0887EC98E003
+:105930000E94050880EB98E00E9405088091100104
+:105940001F928F938DEA98E09F938F930E949E08F9
+:105950008BEA98E00E9405088DB79EB748960FB66F
+:10596000F8949EBF0FBE8DBF1BC0CE51EC2FF0E050
+:10597000E15DFE4F80818093E50112C061E003C0CC
+:1059800061E006C06AE08091E5010E94CD2708C071
+:105990008091E5010E94702803C080E599E013C062
+:1059A0008091E501882369F01F928F938AE499E042
+:1059B0009F938F930E949E080F900F900F900F90CF
+:1059C00004C087E499E00E94050881E006C01092B7
+:1059D000E60180E002C080E001CFCF910895E1E8C8
+:1059E000F0E08081886080838081816080838FB7D0
+:1059F000F89493E09093890090ED909388008FBF86
+:105A00000895EFE6F0E08081826080830895EFE6FC
+:105A1000F0E080818D7F80830895EFE6F0E0908153
+:105A200082E08927808308951F920F920FB60F920C
+:105A300011242F933F934F935F936F937F938F9393
+:105A40009F93AF93BF93EF93FF938091E701909162
+:105A5000E80101969093E8018093E701811103C06A
+:105A600082E00E94E00DE091E801E695E695F0E025
+:105A7000E15EF04FE4918091E7018E1303C080E076
+:105A80000E94E00DFF91EF91BF91AF919F918F9197
+:105A90007F916F915F914F913F912F910F900FBE2A
+:105AA0000F901F9018950E945A2D6894B1110C9474
+:105AB000E92D08950E94CE2D88F09F5798F0B92FB8
+:105AC0009927B751B0F0E1F0660F771F881F991F33
+:105AD0001AF0BA95C9F714C0B13091F00E94E82DC0
+:105AE000B1E008950C94E82D672F782F8827B85FD0
+:105AF00039F0B93FCCF3869577956795B395D9F78B
+:105B00003EF490958095709561957F4F8F4F9F4F94
+:105B10000895E89409C097FB3EF4909580957095A0
+:105B200061957F4F8F4F9F4F9923A9F0F92F96E9E9
+:105B3000BB279395F695879577956795B795F1115E
+:105B4000F8CFFAF4BB0F11F460FF1BC06F5F7F4FFB
+:105B50008F4F9F4F16C0882311F096E911C077230D
+:105B600021F09EE8872F762F05C0662371F096E816
+:105B7000862F70E060E02AF09A95660F771F881FE5
+:105B8000DAF7880F9695879597F9089557FD9058FD
+:105B9000440F551F59F05F3F71F04795880F97FBF1
+:105BA000991F61F09F3F79F08795089512161306AB
+:105BB0001406551FF2CF4695F1DF08C016161706DA
+:105BC0001806991FF1CF869571056105089408950F
+:105BD000E894BB2766277727CB0197F908950E94A1
+:105BE000022E0C94732E0E94652E38F00E946C2EAB
+:105BF00020F0952311F00C945C2E0C94622E11244D
+:105C00000C94E92D0E94C62D70F3959FC1F3950F5A
+:105C100050E0551F629FF001729FBB27F00DB11D30
+:105C2000639FAA27F00DB11DAA1F649F6627B00DC0
+:105C3000A11D661F829F2227B00DA11D621F739FA9
+:105C4000B00DA11D621F839FA00D611D221F749FB7
+:105C50003327A00D611D231F849F600D211D822FFE
+:105C6000762F6A2F11249F5750409AF0F1F0882325
+:105C70004AF0EE0FFF1FBB1F661F771F881F915052
+:105C80005040A9F79E3F510580F00C945C2E0C9477
+:105C9000E92D5F3FE4F3983ED4F3869577956795B9
+:105CA000B795F795E7959F5FC1F7FE2B880F911D7C
+:105CB0009695879597F9089597F99F6780E870E022
+:105CC00060E008959FEF80EC089500240A94161672
+:105CD000170618060906089500240A9412161306DA
+:105CE000140605060895092E0394000C11F4882368
+:105CF00052F0BB0F40F4BF2B11F460FF04C06F5F84
+:105D00007F4F8F4F9F4F0895991B79E004C0991FD3
+:105D1000961708F0961B881F7A95C9F78095089505
+:105D200097FB072E16F4009407D077FD09D00E9448
+:105D3000AA2E07FC05D03EF4909581959F4F0895BB
+:105D4000709561957F4F0895EE0FFF1F0590F491B8
+:105D5000E02D0994AA1BBB1B51E107C0AA1FBB1F62
+:105D6000A617B70710F0A61BB70B881F991F5A95E7
+:105D7000A9F780959095BC01CD010895F999FECFC2
+:105D800092BD81BDF89A992780B50895A8E1B0E049
+:105D900042E050E00C94E12E262FF999FECF1FBA75
+:105DA00092BD81BD20BD0FB6F894FA9AF99A0FBE44
+:105DB000019608950E94CC2E272F0C94CD2EDC0145
+:105DC000CB01FC01F999FECF06C0F2BDE1BDF89A06
+:105DD000319600B40D9241505040B8F70895F894B0
+:025DE000FFCFF3
+:105DE2002002390E2C0F070FD30E9F0E0101C501A1
+:105DF20028080A03140A3F4D3620399C064F06191B
+:105E020006F905C00533054C0565057E059E0501AD
+:0A5E1200020304050607080900005A
:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/coderkun_neo2/keymap.c b/keyboard/ergodox_ez/keymaps/coderkun_neo2/keymap.c index bec67e7d4c..be29a1bff1 100644 --- a/keyboard/ergodox_ez/keymaps/coderkun_neo2/keymap.c +++ b/keyboard/ergodox_ez/keymaps/coderkun_neo2/keymap.c @@ -5,11 +5,14 @@ // Layer names #define BASE 0 // default layer -#define FMU 1 // FMU layer +#define PMQ 1 // poor man’s QWERTZ +#define PMN 2 // poor man’s Neo +#define FMU 3 // FMU layer +#define NHL 4 // Neo’s software layer 4 rebuilt in Hardware const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Layer 0 (default) +/* Layer 0: default * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ * │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ @@ -33,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, NEO_Y, NEO_X, NEO_V, NEO_L, NEO_C, NEO_W, KC_HOME, NEO_L1_L, NEO_U, NEO_I, NEO_A, NEO_E, NEO_O, - KC_LSFT, NEO_UE, NEO_OE, NEO_AE, NEO_P, NEO_Z, KC_TRNS, + KC_LSFT, NEO_UE, NEO_OE, NEO_AE, NEO_P, NEO_Z, TG(PMQ), KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,NEO_L2_L, KC_LEFT, KC_UP, KC_MINS, @@ -42,13 +45,95 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { DE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_END, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_SS, NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R, - KC_TRNS, NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT, + TG(PMN), NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT, NEO_L2_R,KC_RGUI,MO(FMU),KC_RALT,KC_RCTL, KC_DOWN, KC_RGHT, KC_MINS, MEH_T(KC_NO),KC_ENT,KC_SPC ), -/* Layer 1 (F-keys, Mouse and Unicode) + +/* Layer 1: poor man’s QWERTZ + * based on kaimi’s layout + * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ + * │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │ + * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ + * │ C │ P │ T │ F │ K │ L │ HOM │ │ END │ B │ A │ S │ G │ V │ Y │ + * ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤ + * │ Mod3 │ D │ H │ Ö │ O │ I ├─────┤ ├─────┤ U │ - │ Z │ E │ X │ Mod3 │ + * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ + * │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │ + * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ + * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │ + * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ + * │ ← │ ↑ │ │ ↓ │ → │ + * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐ + * │ │ │ ─ │ │ ─ │ │ │ + * │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │ + * │ │ │ HYP │ │ MEH │ │ │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + */ +[PMQ] = KEYMAP( + // left hand + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, + DE_C, DE_P, DE_T, DE_F, DE_K, DE_L, KC_HOME, + NEO_L1_L, DE_D, DE_H, DE_OE, DE_O, DE_I, + KC_LSFT, DE_AE, DE_Q, DE_R, DE_W, DE_N, KC_TRNS, + KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,MO(NHL), + KC_LEFT, KC_UP, + KC_MINS, + KC_SPC, KC_ENT, ALL_T(KC_NO), + // right hand + DE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y, + DE_U, DE_MINS,DE_Z, DE_E, DE_X, NEO_L1_R, + KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT, + MO(NHL),KC_RGUI,MO(FMU),KC_RALT,KC_RCTL, + KC_DOWN, KC_RGHT, + KC_MINS, + MEH_T(KC_NO),KC_ENT,KC_SPC + ), + +/* Layer 2: poor man’s Neo + * based on kaimi’s layout + * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ + * │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │ + * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ + * │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │ + * ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤ + * │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │ + * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ + * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │ + * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ + * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │ + * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ + * │ ← │ ↑ │ │ ↓ │ → │ + * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐ + * │ │ │ ─ │ │ ─ │ │ │ + * │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │ + * │ │ │ HYP │ │ MEH │ │ │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + */ +[PMN] = KEYMAP( + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, + DE_Y, DE_X, DE_V, DE_L, DE_C, DE_W, KC_HOME, + KC_NO, DE_U, DE_I, DE_A, DE_E, DE_O, + KC_LSFT, DE_UE, DE_OE, DE_AE, DE_P, DE_Z, KC_TRNS, + KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,MO(NHL), + KC_LEFT, KC_UP, + KC_MINS, + KC_SPC, KC_ENT, ALL_T(KC_NO), + // right hand + DE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_END, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS, + DE_S, DE_N, DE_R, DE_T, DE_D, KC_NO, + KC_TRNS, DE_B, DE_M, KC_COMM,KC_DOT, DE_J, KC_RSFT, + MO(NHL),KC_RGUI,MO(FMU),KC_RALT,KC_RCTL, + KC_DOWN, KC_RGHT, + KC_MINS, + MEH_T(KC_NO),KC_ENT,KC_SPC + ), + +/* Layer 3: F-keys, Mouse and Unicode * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ @@ -87,10 +172,55 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BTN2, KC_TRNS, KC_TRNS,KC_TRNS ), + +/* Layer 4: Neo’s software layer 4 rebuilt in Hardware + * based on kaimi’s layout + * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ + * │ │ PgUp│ BSpc│ ↑ │ Del │ PgDn│ │ │ │ │ 7 │ 8 │ 9 │ + │ − │ + * ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤ + * │ │ Home│ ← │ ↓ │ → │ End ├─────┤ ├─────┤ │ 4 │ 5 │ 6 │ , │ . │ + * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ + * │ │ Esc │ Tab │ Ins │ Ret │ Undo│ │ │ │ │ 1 │ 2 │ 3 │ │ │ + * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ + * │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │ + * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ + * │ │ │ │ │ │ + * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐ + * │ │ │ │ │ │ │ │ + * │ │ ├─────┤ ├─────┤ │ │ + * │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + */ +[NHL] = KEYMAP( + // left hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_PGUP,KC_BSPC,KC_UP, KC_DELT,KC_PGDN,KC_NO, + KC_NO, KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_END, + KC_NO, KC_ESC, KC_TAB, KC_INS, KC_ENT, KC_UNDO,KC_TRNS, + KC_NO, KC_NO, KC_TRNS,KC_NO, KC_TRNS, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO, + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_7, KC_8, KC_9, DE_PLUS,DE_MINS, + KC_NO, KC_4, KC_5, KC_6, KC_COMM,KC_DOT, + KC_TRNS, KC_NO, KC_1, KC_2, KC_3, KC_NO, KC_NO, + KC_TRNS,KC_NO, KC_TRNS,KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO + ), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(FMU) + [BASE] = ACTION_FUNCTION(BASE), + [PMQ] = ACTION_FUNCTION(PMQ), + [PMN] = ACTION_FUNCTION(PMN), + [FMU] = ACTION_LAYER_TAP_TOGGLE(FMU), + [NHL] = ACTION_LAYER_TAP_TOGGLE(NHL) }; @@ -129,6 +259,13 @@ void * matrix_scan_user(void) switch (layer) { case FMU: ergodox_right_led_1_on(); + break; + case PMQ: + ergodox_right_led_2_on(); + break; + case PMN: + ergodox_right_led_3_on(); + break; default: ergodox_board_led_off(); break; diff --git a/keyboard/ergodox_ez/keymaps/coderkun_neo2/readme.md b/keyboard/ergodox_ez/keymaps/coderkun_neo2/readme.md new file mode 100644 index 0000000000..2a4d3a535b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/coderkun_neo2/readme.md @@ -0,0 +1,31 @@ +# coderkun’s Neo2 layout for the ErgoDox EZ + +The idea of this layout is to use it for [Neo2](http://www.neo-layout.org) but also provide layers to use QWERTZ with activated Neo driver and to use (basic) Neo when no driver is available (standard QWERTZ driver is active) (e. g. on other computers, in virtual machines) and to make heavily use of thumb keys. + +The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course). + +It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and (hopefully in the near future) some useful Unicode symbols. + + +## Layers + +0. Default layer for Neo2 +1. Poor man’s QWERTZ +2. Poor man’s Neo +3. F-keys, mouse keys und Unicode symbols +4. Neo’s software layers 4 rebuilt in hardware + + +## Build + +1. Enable Unicode in Makefile + + ``` + UNICODE_ENABLE = yes + ``` +2. Build as usual + + ``` + make clean + make KEYMAP=coderkun_neo2 + ``` diff --git a/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex new file mode 100644 index 0000000000..ecf97c9f1c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex @@ -0,0 +1,1142 @@ +:100000000C944C030C9490030C9490030C94900368
+:100010000C9490030C9490030C9490030C94900314
+:100020000C9490030C9490030C94BD0C0C948F0DC5
+:100030000C9490030C9490030C9490030C949003F4
+:100040000C9490030C94C4210C9490030C94900392
+:100050000C9490030C94551B0C9490030C949003F7
+:100060000C9490030C9490030C9490030C949003C4
+:100070000C9490030C9490030C9490030C949003B4
+:100080000C9490030C9490030C9490030C949003A4
+:100090000C9490030C9490030C9490030C94900394
+:1000A0000C9490030C9490030C9490039E03A30370
+:1000B000A803AD03B203B703BC03C103C603FC0D21
+:1000C0001E0E0C0F1E0E0C0F630E860E0C0FDB0E99
+:1000D000EE0ED011D011FF11FF11421280129914AF
+:1000E0009914991299149A139A136D1499149914D6
+:1000F0008414012E022E012C022C0001E101350294
+:100100003502E100013502350001E1012E022E0128
+:100110002C022C02E10001E6012E022E02E6012C47
+:10012000022C0001E10130023002E1012C022C001E
+:1001300001E10164026402E100016402640001E67D
+:100140000130023002E6012C022C000000002200E7
+:10015000C001C002C003C004C005C006C007C0087B
+:10016000C02E002D0237021E020452000025141476
+:100170000004001D00F400387426141A0015001B3A
+:1001800000F500377124140900160006002B00C189
+:1001900000271413001700190036782D0031020AC9
+:1001A00000070005000000230201541F0200003672
+:1001B0000200003500C5003200000027020000499F
+:1001C0000021140D000B000E000000240225020F78
+:1001D000001100100050004C002602180008004FCB
+:1001E0000029002C00C3001C000C005100C700288F
+:1001F00000C4002F001200520020022A001F1434F5
+:1002000000330038020252000024160100010001F0
+:1002100000010000000100010001000100010001D7
+:1002200000010001000100010001003778251601DE
+:10023000000100010001000100261601000100017B
+:100240000036710100010001000100010000000101
+:1002500000010001000000010000002414010064FE
+:100260000000000100000001002102010001000166
+:100270000000000100010001000100010001000177
+:1002800000010001000100010001000100C800019F
+:1002900000010001002E140100C90001000100014D
+:1002A00000010001003100010001000100035200C3
+:1002B0000001000100010001000100000001000137
+:1002C000002000010001000100010001001F0001E9
+:1002D0000001000100010001001E000100010001F9
+:1002E000000100220227002100010001000100019D
+:1002F00000010001000000010001000100000001F8
+:1003000000000001000100010000000100000001E8
+:10031000000100010001004A00000001000100C2CC
+:1003200000220026004A0001000100C60023004D03
+:1003300000010001000100010024004E0001000145
+:10034000000100010025004B000100010001000137
+:100350000001000100010000000100010001000196
+:100360000001000000010001002000010001000167
+:1003700000010001001F0001000100010001000157
+:10038000001E0001000100010001002202270021DF
+:100390000001000100010001000100010000000156
+:1003A0000001000100000001000000010001000147
+:1003B0000000000100000001000100010001004AEE
+:1003C00000000001000100C200220026004A0001D6
+:1003D000000100CA0023004D0001000100010001DE
+:1003E0000024004E00010001000100010025004B27
+:1003F00000010001000100010001000100010000F6
+:1004000000220001000100010001000000010001C4
+:10041000003C00010001000100010001003B00015F
+:100420000001000100010001003A0001000100018B
+:10043000000100010001003D000100010001000178
+:1004400000010001000000010001000100000001A6
+:100450000000000100010001000000010000000197
+:100460000001000100010030140000010001000142
+:10047000003E00420001000100010001003F004376
+:1004800000010001000100010040004400010001E2
+:1004900000010001004100450001000100010001D0
+:1004A0000001000100010000001603450072006712
+:1004B000006F0044006F007800200045005A0000E3
+:1004C0000016034500720067006F0044006F00785B
+:1004D00000200045005A0000000403090409026DD1
+:1004E00000040100A0FA0904000001030101000951
+:1004F0002111010001223F000705810308000A09BC
+:100500000401000103010200092111010001224D33
+:10051000000705820308000A090402000103000025
+:10052000000921110100012236000705830308009C
+:100530000A09040300010300000009211101000160
+:100540002239000705840310000112011001000088
+:100550000008EDFE07130100010200010501090674
+:10056000A101050719E029E7150025019508750186
+:10057000810205081901290595057501910295016A
+:100580007503910105071900297715002501957854
+:1005900075018102C005010980A1018502160100D3
+:1005A00026B7001A01002AB700751095018100C016
+:1005B000050C0901A1018503160100269C021A0100
+:1005C000002A9C02751095018100C005010902A155
+:1005D000010901A100050919012905150025019549
+:1005E0000575018102950175038101050109300935
+:1005F000311581257F9502750881060938158125F9
+:100600007F950175088106050C0A38021581257F42
+:10061000950175088106C0C005010906A1010507FD
+:1006200019E029E71500250195087501810295015A
+:1006300075088101050819012905950575019102C3
+:100640009501750391010507190029FF150025FF84
+:10065000950675088100C000000000000000000041
+:100660000000010204060A0F17202C3A4A5D718728
+:100670009DB3C7DAE9F5FCFFFCF5E9DAC7B39D875E
+:10068000715D4A3A2C20170F0A060402010000008F
+:10069000000000000000000011241FBECFEFDAE0D0
+:1006A000DEBFCDBF04B603FE24C08091EE01909161
+:1006B000EF01A091F001B091F1018730904BA7407C
+:1006C000B04BB9F41092EE011092EF011092F001CC
+:1006D0001092F10114BE84B7877F84BF88E10FB602
+:1006E000F89480936000109260000FBEE0E0FFE39A
+:1006F000099511E0A0E0B1E0ECE0F7E402C005905C
+:100700000D92A433B107D9F711E0A4E3B1E001C021
+:100710001D92AE3EB107E1F70E94010A0C948423BA
+:100720000C940000FC018281462F50E049305105B5
+:1007300090F5FA01EA5AFF4F0C943923882359F1B6
+:100740008EE391E00895882331F189E391E00895E3
+:10075000882309F180E391E008958823E1F083E2A2
+:1007600091E008958823B9F086E191E00895882307
+:1007700091F089E091E00895882369F084E091E0A8
+:100780000895882341F08BEF90E00895882319F0B5
+:1007900082EF90E0089580E090E0089580E090E09E
+:1007A000089580E090E0089581ED93E0892B11F0A9
+:1007B0000E94D10380E090E0089556985E982598B5
+:1007C0002D9826982E9827982F988FEF90E0909349
+:1007D00089008093880090938B0080938A00909387
+:1007E0008D0080938C00259A2D9A2FEF80E792E060
+:1007F000215080409040E1F700C00000269A2E9AD8
+:100800002FEF80E792E0215080409040E1F700C058
+:100810000000279A2F9A2FEF80E792E02150804026
+:100820009040E1F700C0000025982D982FEF80E759
+:1008300092E0215080409040E1F700C000002698EF
+:100840002E982FEF80E792E0215080409040E1F712
+:1008500000C0000027982F9856985E9825982D98EC
+:1008600026982E9827982F98089589EA80938000DB
+:1008700089E08093810024982C983F988AB18F74E6
+:100880008AB96E98479A8BB1806B8BB9769A0E9421
+:10089000DD038EEC93E0892B11F00E94CE0380E003
+:1008A00090E0089580E280930001809134018111ED
+:1008B0000EC00E94A10481E0809334012FEF83EDEC
+:1008C00090E3215080409040E1F700C0000080E4B8
+:1008D0000E94A7048093000181112EC00E94D104C0
+:1008E00080930001811128C00E94D10480930001EF
+:1008F000811122C08FE30E94D104809300018111F5
+:100900001BC00E94C90480E40E94A70480930001D8
+:10091000811112C08CE00E94D104809300018111EA
+:100920000BC00E94D10480930001811105C08FE3A8
+:100930000E94D104809300010E94C90480910001AB
+:1009400008951092B9008AE08093B800089594EA5F
+:100950009093BC009091BC0097FFFCCF9091B900A0
+:10096000987F983021F0903111F081E008958093C4
+:10097000BB0084E88093BC008091BC0087FFFCCF63
+:100980008091B900887F883111F0803471F780E060
+:10099000089584E98093BC008091BC0084FDFCCF65
+:1009A00008958093BB0084E88093BC008091BC00D4
+:1009B00087FFFCCF9091B900987F81E0983209F4CD
+:1009C00080E0089584E88093BC008091BC0087FF9C
+:1009D000FCCF8091BB00089580910001811115C06A
+:1009E00080E40E94A7048093000181110CC082E181
+:1009F0000E94D10480930001811105C08FEF0E94F5
+:100A0000D104809300010E94C90484B1807F84B91D
+:100A100085B1807F85B98AB1837F8AB98BB1837FA5
+:100A20008BB93E98469808950E9452048093000125
+:100A30000E94EC0480B38C7080BB81B3836F81BB58
+:100A4000A6E3B1E0E4E4F1E08EE08E0F11921D9296
+:100A50008E13FCCF85E394E0892B11F00C943504C0
+:100A60000895BF92CF92DF92EF92FF920F931F9360
+:100A7000CF93DF9380910001882379F08091350135
+:100A80008F5F80933501811108C00E9452048093CA
+:100A90000001811102C00E94DD0306E311E0C0E005
+:100AA000D0E0DD24D39482E0C82EEE24E394F12C30
+:100AB000C730D10500F580910001811164C080E448
+:100AC0000E94A70480930001811112C082E10E945C
+:100AD000D1048093000181110BC0C7010C2E01C00D
+:100AE000880F0A94EAF780950E94D1048093000150
+:100AF0000E94C90448C0CA30A1F028F4C83059F097
+:100B0000C93061F005C0CC3089F070F0CD3089F08B
+:100B1000209A289810C0219A29980DC0229A2A98C4
+:100B20000AC0239A2B9807C0529A01C0539A5B9827
+:100B300002C03E9A469890EA9A95F1F79FB179994A
+:100B400002C082E001C080E091709D25982B7C99C5
+:100B500002C084E001C080E0892B7D9902C038E0AA
+:100B600001C030E0832B7E9902C020E101C020E06B
+:100B7000822B9FB19095991F9927991F9295990F54
+:100B8000907E892B0FC08091000181114FC080E4BD
+:100B90000E94A704809300018823A9F1B12C0E9430
+:100BA000C9048B2DF8019081981719F08083C092A9
+:100BB00001010E94EC0421960F5F1F4FCE30D1053A
+:100BC00009F076CF809101018823B1F081508093A4
+:100BD0000101882339F08FE99FE00197F1F700C008
+:100BE00000000AC0A4E4B1E0E6E3F1E0CF01825FD7
+:100BF00091919D938E13FCCF84ED93E0892BC1F0EE
+:100C00000E94D40315C083E10E94D10480930001A7
+:100C10008111C4CF81E40E94A70480930001811157
+:100C2000BDCF0E94E204B82EB094B9CF80E0BACF15
+:100C300081E0DF91CF911F910F91FF90EF90DF90B6
+:100C4000CF90BF900895E82FF0E0EC5BFE4F8081DD
+:100C5000089508958B3B910578F4883A910540F505
+:100C6000853A9105D0F48430910508F0B1C0813007
+:100C7000910509F4ADC06BC0803E910508F467C0D2
+:100C8000883E910508F4A4C09C01205F3109203101
+:100C9000310508F05CC090650895853A910509F426
+:100CA00059C0863A910509F058C082E890E4089549
+:100CB000883A910509F454C0893A910509F453C062
+:100CC0008A3A910509F452C08B3A910509F451C052
+:100CD0008C3A910509F450C08D3A910509F44FC042
+:100CE000803B910509F44EC08E3A910509F44DC040
+:100CF0008F3A910509F44CC0813B910509F44BC032
+:100D0000823B910509F44AC0833B910509F449C02F
+:100D1000843B910509F448C0853B910509F447C01F
+:100D2000863B910509F446C0873B910509F445C00F
+:100D3000883B910509F444C0893B910509F443C0FF
+:100D40008A3B910509F442C080E094E4089580E074
+:100D500090E0089581E890E4089583E890E4089590
+:100D600082EE94E4089589EE94E408958AEE94E482
+:100D7000089585EB94E4089586EB94E4089587EB59
+:100D800094E408958CEC94E408958DEC94E4089533
+:100D900083E895E408958AE895E4089582E995E466
+:100DA000089584E995E4089581E296E4089583E244
+:100DB00096E4089584E296E4089585E296E4089521
+:100DC00086E296E4089587E296E408958AE296E43E
+:100DD0000895089596E0799FF001112494E5899F84
+:100DE000E00DF11D1124E60FF11DEE0FFF1FEF596D
+:100DF000FE4F859194910895880F991FFC01E5534A
+:100E0000F040859194910895880F991FFC01E55B4E
+:100E1000FE4F85919491089526E0729FF001112470
+:100E200044E5849FE00DF11D1124E60FF11DEE0F46
+:100E3000FF1FEF59FE4F859194919C013A95211522
+:100E40004FE1340708F41AC13F512115304120F415
+:100E50009F700E94040708959C0130532115304172
+:100E600018F49927906C0895811520E5920769F48C
+:100E70000E94BB144FEF84E39CE0415080409040BF
+:100E8000E1F700C000000C947A1B813020E5920746
+:100E900031F48091CC0181608093CC0108959C0154
+:100EA00030552115304108F051C0292F33272F70BC
+:100EB000332721303105D9F4AC014370552702C0E6
+:100EC000220F331F4A95E2F73C68AC0164E0440FFF
+:100ED000551F6A95E1F744275370242B352B73E097
+:100EE000880F991F7A95E1F7807699271DC02230E7
+:100EF000310529F4982F8827816F906A089523304F
+:100F00003105A9F4AC014370552721E030E002C05F
+:100F1000220F331F4A95E2F73C6843E0880F991F80
+:100F20004A95E1F7807E9770822B932B08952430A9
+:100F30003105E1F4AC014370552721E030E002C0F7
+:100F4000220F331F4A95E2F73A68E7CF9C013057EA
+:100F50002115304118F49F70906208959C0130581B
+:100F60002115304118F49F70906A0895803E9105D4
+:100F7000E0F4803C910558F58133910509F46FC088
+:100F800048F48932910509F463C08A32910509F465
+:100F90006DC072C089339105E9F082389105D1F0B6
+:100FA0008533910509F44DC067C0833E910581F1F9
+:100FB00038F4803E9105B9F0823E9105D9F05CC0CD
+:100FC000863E910561F1873E9105A1F155C00E94D1
+:100FD000FC0608952091DF0120FD02C021FF4CC0D6
+:100FE00080EE90E049C08091DF0180FFF9CF89E376
+:100FF00090E042C08091DF0182FF0EC08091DF014E
+:1010000084FF03C080E090E037C083EE90E034C0FE
+:101010008091DF0182FFF2CF82EE90E02DC08091BF
+:10102000DF0183FF0BC08091DF0184FDEBCF87EEF2
+:1010300090E022C08091DF0183FFF5CF86EE90E043
+:101040001BC08091DF0185FF07C089E290E014C0DA
+:101050008091DF0185FFF9CF85E390E00DC080919D
+:10106000DF0186FF07C08AE290E006C08091DF01C1
+:1010700086FFF9CF81E390E00E942A060895089543
+:10108000809162010895CF93DF9300D01F92CDB776
+:10109000DEB79C018091E501843019F593E09983D6
+:1010A0003B832A839093E9008FEF9091E800815071
+:1010B00095FD06C095ED9A95F1F700008111F5CFE9
+:1010C0008091E80085FF0DC040E050E063E070E0F3
+:1010D000CE0101960E94AD0A8091E8008E77809340
+:1010E000E8000F900F900F90DF91CF910895CF936C
+:1010F000DF9300D01F92CDB7DEB72091E5012430F9
+:1011000021F522E029839B838A8383E08093E90091
+:101110008FEF9091E800815095FD06C095ED9A956E
+:10112000F1F700008111F5CF8091E80085FF0DC037
+:1011300040E050E063E070E0CE0101960E94AD0A0D
+:101140008091E8008E778093E8000F900F900F90C9
+:10115000DF91CF9108952091E5012430F1F422E050
+:101160002093E9002FEF3091E800215035FD06C0B3
+:1011700035ED3A95F1F700002111F5CF2091E80007
+:1011800025FF0BC040E050E065E070E00E94AD0A32
+:101190008091E8008E778093E8000895CF93DF93E5
+:1011A000EC019091E501943009F046C080910C016A
+:1011B0008823D9F080910D018823B9F09093E9003C
+:1011C0008FEF9091E800815095FD06C095E19A95CA
+:1011D000F1F700008111F5CF8091E80085FF2CC068
+:1011E00040E050E060E170E017C081E08093E900EA
+:1011F0008FEF9091E800815095FD06C095ED9A958E
+:10120000F1F700008111F5CF8091E80085FF14C04F
+:1012100040E050E068E070E0CE010E94AD0A8091AD
+:10122000E8008E778093E80080E1FE01A2E5B1E05E
+:1012300001900D928A95E1F7DF91CF910895809109
+:10124000E401811109C00E94420C0E949F0C809110
+:10125000E20084608093E20008951092E401089512
+:1012600008950C94B1210E94101B0E94B7210E9486
+:10127000450F0C943F0842E061EC81E00E94BC0BFA
+:1012800042E061EC82E00E94BC0B42E061EC83E052
+:101290000E94BC0B42E161EC84E00C94BC0B809199
+:1012A000E701833009F455C030F4813071F08230A9
+:1012B00009F48EC008958A3009F47AC08B3009F49D
+:1012C00060C0893009F09CC020C08091E601813A5D
+:1012D00009F096C08091E800877F8093E8008091B4
+:1012E000EA019091EB01892B21F460E182E591E024
+:1012F00003C060E080E090E070E00E94F80A809116
+:10130000E8008B778093E80008958091E6018132B0
+:1013100009F076C08091EA019091EB01009719F0F5
+:10132000039709F06DC08091E800877F8093E80003
+:101330008091E80082FD05C08091E5018111F8CF20
+:101340005FC08091F100809362018091E8008B770B
+:1013500053C08091E601813A09F052C08091EA01C0
+:101360009091EB01892B09F04BC08091E800877FB9
+:101370008093E8008091E80080FFFCCF80910C0111
+:1013800036C08091E6018132D9F58091EA019091D1
+:10139000EB01892BA9F58091E800877F8093E80015
+:1013A0000E94F10B8091E80180930C010C94BB1416
+:1013B0008091E601813221F58091E800877F80935A
+:1013C000E8000E94F10B8091E90180936301089588
+:1013D0008091E601813AA1F48091E800877F8093B3
+:1013E000E8008091E80080FFFCCF8091630180934A
+:1013F000F1008091E8008E778093E8000C94F10B67
+:10140000089584B7877F84BF88E10FB6F8948093EE
+:101410006000109260000FBE90E080E80FB6F89474
+:1014200080936100909361000FBE0E94940F0E9410
+:10143000420C0E949F0C8091E20084608093E20045
+:1014400078940E94250F0E94960F82E091E00E94FE
+:10145000400F0E949F218091E501853069F40E9430
+:10146000D41A8091E3018823B1F30E94FC1A8823E7
+:1014700091F30E94970AEFCF0E949C0FECCF292F87
+:10148000332723303105C9F064F42130310581F070
+:101490002230310509F043C08DE690E02DED34E0B7
+:1014A00042C021323105F1F02232310541F137C01D
+:1014B00082E190E02AE435E036C099278130910539
+:1014C00041F08230910541F0892B49F5E9EDF4E0D6
+:1014D00005C0E1ECF4E002C0E9EAF4E0849190E0B8
+:1014E0009F0121C06430D8F4E62FF0E0EE0FFF1F1B
+:1014F000EE5DFE4F2081318189E090E014C06430C0
+:1015000070F470E0FB01EE0FFF1FE65EFE4F2081DE
+:101510003181FB01EA5EFE4F808190E004C080E0F3
+:1015200090E020E030E0FA0131832083089580E1EB
+:1015300089BD82E189BD09B400FEFDCF8091D8004C
+:101540008F7D8093D8008091E00082608093E000DE
+:101550008091E00081FDFCCF0895CF92DF92EF9261
+:10156000FF920F931F93CF93DF93EC018B016A01DE
+:101570000E94100C811133C0C114D10439F0F6015E
+:1015800080819181081B190BC80FD91FE12CF12C08
+:101590000115110519F18091E80085FD16C08091B3
+:1015A000E8008E778093E800C114D10449F0F60179
+:1015B00080819181E80EF91EF182E08285E00FC002
+:1015C0000E94100C882321F30AC089918093F100B6
+:1015D00001501109FFEFEF1AFF0ADACF80E0DF9127
+:1015E000CF911F910F91FF90EF90DF90CF900895D2
+:1015F0002091EC013091ED012617370748F0611575
+:10160000710539F42091E8002E772093E80001C09D
+:10161000B90140E061157105A9F12091E50122238E
+:1016200009F443C0253009F442C02091E80023FDAD
+:1016300040C02091E80022FD32C02091E80020FF48
+:10164000E9CF4091F3002091F20030E0342BFC010F
+:10165000CF016115710559F02830310540F48191B1
+:101660008093F100615071092F5F3F4FF1CF41E04E
+:101670002830310509F040E02091E8002E772093D2
+:10168000E800C8CF4111C9CF0AC08091E501882385
+:1016900061F0853061F08091E80083FD0AC080919F
+:1016A000E80082FFF2CF80E0089582E0089583E0B1
+:1016B000089581E008952091EC013091ED01261705
+:1016C000370748F06115710539F42091E8002E774D
+:1016D0002093E80001C0B901FC0120E0611571050B
+:1016E00091F18091E501882309F440C0853009F427
+:1016F0003FC08091E80083FD3DC08091E80082FDFD
+:101700002FC08091E80080FFE9CF2091F300809105
+:10171000F20090E0922B6115710559F08830910527
+:1017200040F424912093F1003196615071090196A3
+:10173000F2CF21E0089709F020E08091E8008E7751
+:101740008093E800CBCF2111CCCF0AC08091E50176
+:10175000882361F0853061F08091E80083FD0AC044
+:101760008091E80082FFF2CF80E0089582E0089542
+:1017700083E0089581E00895982F973058F590936D
+:10178000E900981739F07091EC002091ED0050912C
+:10179000F00003C0242F762F50E021FF19C03091B4
+:1017A000EB003E7F3093EB003091ED003D7F3093B6
+:1017B000ED003091EB0031603093EB007093EC0062
+:1017C0002093ED005093F0002091EE0027FF07C01A
+:1017D0009F5FD3CF8F708093E90081E0089580E010
+:1017E00008958091E60187FF11C08091E80082FD95
+:1017F00005C08091E5018111F8CF11C08091E8000A
+:101800008B770BC08091E501882349F08091E80037
+:1018100080FFF8CF8091E8008E778093E8000895EC
+:101820002091E4003091E50095E64091EC00842F92
+:10183000817040FF22C08091E80080FD1CC0809133
+:10184000E501882391F0853091F08091EB0085FDD2
+:1018500010C04091E4005091E5004217530729F36E
+:101860009A01915011F784E0089582E0089583E091
+:10187000089581E0089580E008954091E80042FFD6
+:10188000DECF08950E94B00C0E94B80CE0EEF0E0AC
+:10189000808181608083E8EDF0E080818F778083B4
+:1018A00019BCA7EDB0E08C918E7F8C9380818F7EE8
+:1018B00080831092E40108950F931F93CF93DF93D9
+:1018C0000E94B00C0E94B80CC8EDD0E088818F77E0
+:1018D000888388818068888388818F7D888319BC0C
+:1018E0001092E5011092E1011092E3011092E201E1
+:1018F00000EE10E0F80180818B7F80838881816019
+:10190000888342E060E080E00E94BC0BE1EEF0E002
+:1019100080818E7F8083E2EEF0E080818160808331
+:10192000808188608083F80180818E7F80838881B8
+:1019300080618883DF91CF911F910F910895E8ED29
+:10194000F0E080818F7E8083E7EDF0E08081816030
+:10195000808384E082BF81E08093E4010C945C0C7E
+:10196000E8EDF0E080818E7F80831092E2000895A0
+:101970001092DA001092E10008951F920F920FB6B4
+:101980000F9211242F933F934F935F936F937F9305
+:101990008F939F93AF93BF93EF93FF938091E10059
+:1019A00082FF0BC08091E20082FF07C08091E100BE
+:1019B0008B7F8093E1000E94240F8091DA0080FFEA
+:1019C0001FC08091D80080FF1BC08091DA008E7FFD
+:1019D0008093DA008091D90080FF0DC080E189BD3D
+:1019E00082E189BD09B400FEFDCF81E08093E5016D
+:1019F0000E941F0905C019BC1092E5010E942D0923
+:101A00008091E10080FF19C08091E20080FF15C045
+:101A10008091E2008E7F8093E2008091E2008061FD
+:101A20008093E2008091D80080628093D80019BC36
+:101A300085E08093E5010E9431098091E10084FFF7
+:101A400030C08091E20084FF2CC080E189BD82E13A
+:101A500089BD09B400FEFDCF8091D8008F7D8093B1
+:101A6000D8008091E1008F7E8093E1008091E200B8
+:101A70008F7E8093E2008091E20081608093E2009B
+:101A80008091E101882311F084E007C08091E30098
+:101A900087FD02C081E001C083E08093E5010E94E0
+:101AA00033098091E10083FF29C08091E20083FF28
+:101AB00025C08091E100877F8093E10082E08093E0
+:101AC000E5011092E1018091E1008E7F8093E100B9
+:101AD0008091E2008E7F8093E2008091E20080613D
+:101AE0008093E20042E060E080E00E94BC0B8091C5
+:101AF000F00088608093F0000E943009FF91EF9120
+:101B0000BF91AF919F918F917F916F915F914F9115
+:101B10003F912F910F900FBE0F901F9018951F921D
+:101B20000F920FB60F9211242F933F934F935F9311
+:101B30006F937F938F939F93AF93BF93CF93DF93D5
+:101B4000EF93FF93C091E900CF708091EC00D82F04
+:101B5000D17080FDD0E81092E9008091F000877F7D
+:101B60008093F00078940E94D30D1092E900809148
+:101B7000F00088608093F000CD2BCF70C093E90017
+:101B8000FF91EF91DF91CF91BF91AF919F918F9195
+:101B90007F916F915F914F913F912F910F900FBE69
+:101BA0000F901F9018951F93CF93DF93CDB7DEB79B
+:101BB000AA970FB6F894DEBF0FBECDBFE6EEF1E0F8
+:101BC00088E08E0F9091F10091938E13FBCF0E94CD
+:101BD0004F098091E80083FF1FC18091E601909139
+:101BE000E701492F50E04A30510508F015C1FA01CC
+:101BF000E15AFF4F0C943923803881F0823809F084
+:101C00000BC18091EA018F708093E9008091EB0015
+:101C100085FB882780F91092E90006C08091E201D7
+:101C20009091E301911182609091E800977F9093E9
+:101C3000E8008093F1001092F100C8C0282F2D7F9A
+:101C400009F0EAC0882319F0823061F0E5C0809184
+:101C5000E801813009F0E0C0933009F080E0809322
+:101C6000E3012BC08091E801811127C08091EA0136
+:101C70008F7009F4D1C08093E9002091EB0020FF20
+:101C80001CC0933021F48091EB00806214C09091CD
+:101C9000EB0090619093EB0021E030E0A90102C0DD
+:101CA000440F551F8A95E2F74093EA001092EA002C
+:101CB0008091EB0088608093EB001092E9008091A6
+:101CC000E800877F86C08111A7C01091E8011F77C7
+:101CD0008091E3008078812B8093E3008091E8007D
+:101CE000877F8093E8000E94F10B8091E80080FFDD
+:101CF000FCCF8091E30080688093E300111102C063
+:101D000082E001C083E08093E50186C08058823084
+:101D100008F082C08091E8019091E9018C3D53E088
+:101D2000950779F583E08A838AE289834FB7F8942F
+:101D3000DE01139620E03EE051E2E32FF0E0509305
+:101D40005700E49120FF03C0E295EF703F5FEF7012
+:101D50008E2F90E0EA3010F0C79601C0C0968D93A8
+:101D60009D932F5F243149F74FBF8091E800877F13
+:101D70008093E8006AE270E0CE0101960E94F80AC2
+:101D800014C0AE014F5F5F4F6091EA010E943F0AAD
+:101D9000BC01892B09F440C09091E800977F909393
+:101DA000E80089819A810E945B0B8091E8008B7723
+:101DB0008093E80031C0803879F58091E800877F12
+:101DC0008093E8008091E1018093F1008091E80028
+:101DD0008E778093E8000E94F10B1EC081111CC019
+:101DE0009091E8019230C0F48091E800877F809361
+:101DF000E8009093E1010E94F10B8091E1018111D3
+:101E000006C08091E30087FD02C081E001C084E04C
+:101E10008093E5010E943B098091E80083FF0AC09E
+:101E20008091E800877F8093E8008091EB008062DA
+:101E30008093EB00AA960FB6F894DEBF0FBECDBF1D
+:101E4000DF91CF911F9108950895CF938091E5017F
+:101E50008823A1F0C091E900CF709091EC00892F08
+:101E6000817090FD80E8C82B1092E9008091E80015
+:101E700083FD0E94D30DCF70C093E900CF910895E8
+:101E800090936901809368010895E0916801F09151
+:101E90006901309721F00190F081E02D099480E0F4
+:101EA0000895E0916801F0916901309721F0028076
+:101EB000F381E02D09940895E0916801F0916901A2
+:101EC000309721F00480F581E02D09940895209148
+:101ED0006601309167018217930771F09093670153
+:101EE00080936601E0916801F0916901309721F0DB
+:101EF0000680F781E02D09940895209164013091C6
+:101F000065018217930771F09093650180936401D6
+:101F1000E0916801F0916901309721F00084F1852A
+:101F2000E02D0994089508950C94930F0E94161BB8
+:101F30000E9414050C94DC1BCF92DF92EF92FF926B
+:101F40000F931F93CF93DF93CDB7DEB72B970FB6C9
+:101F5000F894DEBF0FBECDBF0E9431058BE6C82EC0
+:101F600081E0D82E00E010E0E02E802F0E942306B2
+:101F7000F60141916F01F42EF826B1F40F5F1F4F67
+:101F80000E30110589F78FEF89838A831B820E94A7
+:101F90001F1B8160782F9D838C8349815A816B81BF
+:101FA0008D810E943F1040C09091CC0191FF04C0F0
+:101FB0008B870E9429068B8520E030E04F2D50E072
+:101FC000922FBA01022E02C0759567950A94E2F726
+:101FD00060FF24C02E83EF8221E030E0690102C05F
+:101FE000CC0CDD1C9A95E2F790E08C219D21892B89
+:101FF00009F420E028870E941F1B8160782F9A87B0
+:1020000089874E815F8168858A850E943F10F8012B
+:10201000E559FE4F8081C826C08206C02F5F3F4F22
+:102020002630310569F6AACF0E94C31E10916A01BD
+:102030000E94450F1817A1F00E94450F80936A0176
+:102040002B960FB6F894DEBF0FBECDBFDF91CF91B8
+:102050001F910F91FF90EF90DF90CF900C943F086D
+:102060002B960FB6F894DEBF0FBECDBFDF91CF9198
+:102070001F910F91FF90EF90DF90CF900895CF9335
+:10208000DF93CDB7DEB72B970FB6F894DEBF0FBE48
+:10209000CDBF4F83588769877A878B87DE0111967A
+:1020A00086E0FD0111928A95E9F785E0FE013796F9
+:1020B00001900D928A95E1F749815A816B817C816B
+:1020C0008D819E810E9455172B960FB6F894DEBF26
+:1020D0000FBECDBFDF91CF910895CF93882309F430
+:1020E000C2C0C82F823859F40E94450F81FDBBC081
+:1020F00089E30E94F1190E94AE1A89E30CC083386B
+:1021000079F40E94450F80FDAEC083E50E94F1196D
+:102110000E94AE1A83E50E94331ACF910C94AE1A36
+:10212000843859F40E94450F82FD9DC087E40E94C7
+:10213000F1190E94AE1A87E4EECF8CEF8C0F813A32
+:1021400048F48C2F0E94042181118DC08C2F0E9495
+:10215000F119E3CF80E28C0F883048F4C77081E03A
+:1021600001C0880FCA95EAF70E94771AD6CF8BE58F
+:102170008C0F833078F4C53A29F0C63A31F083E801
+:1021800090E005C081E890E002C082E890E0CF9145
+:102190000C94670F88E58C0F833108F064C0C83A4F
+:1021A00039F1C93A41F1CA3A49F1CB3A51F1CC3A45
+:1021B00059F1CD3A61F1C03B69F1CE3A71F1CF3AB4
+:1021C00079F1C13B81F1C23B89F1C33B91F1C43B41
+:1021D00099F1C53BA1F1C63BA9F1C73BB1F1C83BA1
+:1021E000B9F1C93BC1F1CA3BC9F180E090E038C008
+:1021F00082EE90E035C089EE90E032C08AEE90E049
+:102200002FC085EB90E02CC086EB90E029C087EBD7
+:1022100090E026C08CEC90E023C08DEC90E020C0D4
+:1022200083E891E01DC08AE891E01AC082E991E05C
+:1022300017C084E991E014C081E292E011C083E20A
+:1022400092E00EC084E292E00BC085E292E008C00A
+:1022500086E292E005C087E292E002C08AE292E064
+:10226000CF910C947D0FCF910895882309F44BC032
+:10227000823859F40E94450F81FF45C089E30E94CE
+:10228000F1190E94AE1A89E30CC0833871F40E94E0
+:10229000450F80FF38C083E50E94F1190E94AE1AF5
+:1022A00083E50E94331A0C94AE1A843859F40E94C4
+:1022B000450F82FF28C087E40E94F1190E94AE1AE0
+:1022C00087E4EFCF9CEF980F913A58F390E2980F84
+:1022D000983050F4877091E001C0990F8A95EAF721
+:1022E000892F0E947D1ADFCF9BE5980F933020F451
+:1022F00080E090E00C94670F885A833120F480E0EE
+:1023000090E00C947D0F0895882321F00E94771AA5
+:102310000C94AE1A0895882321F00E947D1A0C9423
+:10232000AE1A0895BF92CF92DF92EF92FF920F9371
+:102330001F93CF93DF9300D000D000D0CDB7DEB78E
+:1023400025E0FC01DE01119601900D922A95E1F73E
+:10235000FC01408131810281258122952F706381AA
+:102360007481672B09F4E5C23F3F19F44F3F09F42C
+:10237000E0C27C0149833A8389819A812E830E943D
+:10238000B019182FB92E0E94AF190E947618EB2DA4
+:10239000E295EF70F0E0E759FF4F2E810C9439235E
+:1023A0008B2D807F9B2D9F70F92E882319F0F2943E
+:1023B00080EFF822002349F0FF2009F467C28F2D37
+:1023C0000E94871A0E94AE1A61C2812F0E943511A5
+:1023D000FF2009F4AEC28F2D0E948D1A26960FB6EB
+:1023E000F894DEBF0FBECDBFDF91CF911F910F914B
+:1023F000FF90EF90DF90CF90BF900C94AE1A3B2DE2
+:10240000307F8B2D8F70303211F08295807F1123B9
+:1024100019F0113021F12CC00023B9F0222309F466
+:10242000A0C1213009F09DC126960FB6F894DEBFF9
+:102430000FBECDBFDF91CF911F910F91FF90EF9015
+:10244000DF90CF90BF900C94971A222319F021307F
+:1024500009F46FC28E830E949A1A8E8196C100235E
+:1024600021F0223008F065C27CC1211162C28DC109
+:10247000002321F0222309F474C108C2222309F4A5
+:1024800084C119C22B2D26952695237030E0211585
+:10249000310521F021303105D1F04BC2002321F06C
+:1024A000812F9B2D937002C080E090E026960FB69E
+:1024B000F894DEBF0FBECDBFDF91CF911F910F917A
+:1024C000FF90EF90DF90CF90BF900C94670F0023A8
+:1024D00021F0812F9B2D937002C080E090E0269622
+:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125
+:1024F0000F91FF90EF90DF90CF90BF900C947D0FE5
+:10250000812F002319F00E94CB1D02C00E94331EB0
+:1025100026960FB6F894DEBF0FBECDBFDF91CF91E8
+:102520001F910F91FF90EF90DF90CF90BF900C9490
+:10253000B81E8B2D837009F07BC00111FAC1812F69
+:10254000829586958770880F880F912F9F70C92E6E
+:10255000D12CE12CF12C082E04C0CC0CDD1CEE1C7F
+:10256000FF1C0A94D2F714FF12C04FE050E060E065
+:1025700070E004C0440F551F661F771F8A95D2F77D
+:10258000CB01BA01609570958095909503C060E08D
+:1025900070E0CB012B2D269526952370422F50E01D
+:1025A00042305105D9F04330510569F16C297D293C
+:1025B0008E299F294130510551F126960FB6F89486
+:1025C000DEBF0FBECDBFDF91CF911F910F91FF9066
+:1025D000EF90DF90CF90BF900C949D186C297D29CF
+:1025E0008E299F2926960FB6F894DEBF0FBECDBF69
+:1025F000DF91CF911F910F91FF90EF90DF90CF90DF
+:10260000BF900C94B9180E949D18C701B601269678
+:102610000FB6F894DEBF0FBECDBFDF91CF911F91F3
+:102620000F91FF90EF90DF90CF90BF900C948118A6
+:10263000002319F08B2D817001C08695882309F441
+:1026400078C1812F829586958770880F880F912F8A
+:102650009F70C92ED12CE12CF12C082E04C0CC0C7B
+:10266000DD1CEE1CFF1C0A94D2F714FF12C04FE0D1
+:1026700050E060E070E004C0440F551F661F771FF4
+:102680008A95D2F7CB01BA016095709580959095A7
+:1026900003C060E070E0CB012B2D269526952370BA
+:1026A000422F50E042305105D9F04330510569F1D5
+:1026B0006C297D298E299F294130510551F126969B
+:1026C0000FB6F894DEBF0FBECDBFDF91CF911F9143
+:1026D0000F91FF90EF90DF90CF90BF900C947719FF
+:1026E0006C297D298E299F2926960FB6F894DEBF86
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053
+:10270000DF90CF90BF900C9493190E947719C70166
+:10271000B60126960FB6F894DEBF0FBECDBFDF918F
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE
+:102730000C945B19103FD1F118F4103E50F4A1C075
+:10274000123F09F463C008F44CC0133F09F473C08E
+:1027500098C01F708B2D8F710023A1F00E94F41878
+:10276000812F26960FB6F894DEBF0FBECDBFDF9146
+:10277000CF911F910F91FF90EF90DF90CF90BF907E
+:102780000C9484110E941519812F26960FB6F89487
+:10279000DEBF0FBECDBFDF91CF911F910F91FF9094
+:1027A000EF90DF90CF90BF900C948B110023A9F095
+:1027B0002111BFC08B2D8F7126960FB6F894DEBF06
+:1027C0000FBECDBFDF91CF911F910F91FF90EF9082
+:1027D000DF90CF90BF900C943A19223008F0A9C036
+:1027E000E9CF0023A9F08B2D8F7126960FB6F894B0
+:1027F000DEBF0FBECDBFDF91CF911F910F91FF9034
+:10280000EF90DF90CF90BF900C94F418002359F311
+:102810008B2D8F7126960FB6F894DEBF0FBECDBFFD
+:10282000DF91CF911F910F91FF90EF90DF90CF90AC
+:10283000BF900C941519002399F08B2D8F7126965B
+:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1
+:102850000F91FF90EF90DF90CF90BF900C94DF1816
+:1028600026960FB6F894DEBF0FBECDBFDF91CF9195
+:102870001F910F91FF90EF90DF90CF90BF900C943D
+:10288000D5180023A9F0222309F4ADCF812F269675
+:102890000FB6F894DEBF0FBECDBFDF91CF911F9171
+:1028A0000F91FF90EF90DF90CF90BF900C946D1040
+:1028B000222309F4ADCF812F26960FB6F894DEBF00
+:1028C0000FBECDBFDF91CF911F910F91FF90EF9081
+:1028D000DF90CF90BF900C9435114B2D4F70612F2E
+:1028E000C7010E94920326960FB6F894DEBF0FBE72
+:1028F000CDBFDF91CF911F910F91FF90EF90DF90AF
+:10290000CF90BF900C94F9174B2D4F70612FC701DA
+:1029100026960FB6F894DEBF0FBECDBFDF91CF91E4
+:102920001F910F91FF90EF90DF90CF90BF900C948C
+:10293000E90626960FB6F894DEBF0FBECDBFDF9135
+:10294000CF911F910F91FF90EF90DF90CF90BF90AC
+:1029500008950E94941A0E94691A0E94AE1A0E9459
+:10296000691F0E94B81E80E090E00E94670F80E01F
+:1029700090E00C947D0F0E94841A0C94A9140E947C
+:10298000B019292F22952F7030E02C3031054CF4EE
+:102990002A3031056CF4225031092230310588F497
+:1029A00007C02C30310549F02F30310531F009C016
+:1029B000803E48F0803F29F406C093FB882780F9C9
+:1029C000089580E0089581E00895CF93DF9300D0CB
+:1029D00000D01F92CDB7DEB70F900F900F900F90E1
+:1029E0000F90DF91CF910895CF93DF9300D000D067
+:1029F00000D0CDB7DEB726960FB6F894DEBF0FBE77
+:102A0000CDBFDF91CF9108951F93CF93DF93C091F6
+:102A1000790116E080917A01C81799F0D0E01C9FE7
+:102A2000F0011D9FF00D1124E558FE4F40815181AA
+:102A300062817381848195810E94F4142196C7700C
+:102A4000E9CFDF91CF911F9108954091AB01509153
+:102A5000AC016091AD017091AE018091AF01909198
+:102A6000B0010C94F4148091B00182958F7009F03C
+:102A700054C08091AD01882309F44FC08091790141
+:102A8000A0917A016091AB017091AC014091AE01CF
+:102A90005091AF01B6E08A1709F43FC090E04115AC
+:102AA0005105C1F17F3F11F46F3FA1F1B89FF001D3
+:102AB000B99FF00D1124E558FE4F218172132AC0F1
+:102AC0002081621327C02281211124C023813481F7
+:102AD0002417350710F421503109241B350B283CED
+:102AE0003105C0F42091B0012F7020612093B00116
+:102AF00026E0289FF001299FF00D1124E058FE4F99
+:102B000080818F70806180838BEA91E00E949211B6
+:102B10000C94041501968770BECF0895CF92DF9272
+:102B2000EF92FF920F931F93CF93DF93CDB7DEB752
+:102B300062970FB6F894DEBF0FBECDBF8C0185E063
+:102B4000F801DE011D9601900D928A95E1F7D801FA
+:102B50004C9111965C91119712966C911297139665
+:102B6000CD90DC9014973091AB017091AC018091C5
+:102B7000AE019091AF01009709F46BC17F3F19F44A
+:102B80003F3F09F466C1E090AD01EE2009F4C0C0FA
+:102B90002091B001C816D90628F0F601E81BF90B00
+:102BA000CF0104C0809590958C0D9D1DFF24F3945A
+:102BB000883C910578F0F12C207F09F0C6C07C2D6F
+:102BC000D98AC88A89890E94E5148BEA91E00E941B
+:102BD0009211B1C0822F807F09F046C0751314C0D6
+:102BE000341312C0611110C02F7020612093B00106
+:102BF0000E9425158BEA91E00E9492118091B0010C
+:102C0000D80115968C932EC0CD2819F15F3F11F491
+:102C10004F3FF9F0F62E61111CC08091790120918F
+:102C20007A0136E0821709F45AC090E0389FF0012B
+:102C3000399FF00D1124E558FE4F7181571306C0DE
+:102C40007081471303C07281711103C001968770B0
+:102C5000E9CFF62E662309F418C18091B001816096
+:102C60008093B001F12C11C1751308C0341306C054
+:102C7000611104C08091B001D801C3C04D875E8747
+:102C80008D859E856A8B0E94BF146A898823E1F135
+:102C90006623D1F12091B001822F82958F7090E050
+:102CA000029774F08091AB019091AC0198878F836B
+:102CB0001986DB86CA862C87CE0107960E94921160
+:102CC00086E0F801ABEAB1E001900D928A95E1F758
+:102CD0000E9433150E942515FF24F394D6C04D871A
+:102CE0005E878D859E850E94B019292F22952F70B1
+:102CF00030E0223031050CF0BCC09F7009F0B6C046
+:102D0000805E883008F4C1C0C8010E949211E4CFEF
+:102D1000C816D90608F453C0F601E81BF90BCF0119
+:102D2000883C910508F450C0F12C7C2DD98AC88AC2
+:102D300089890E94E514EBEAF1E086E0DF011D924B
+:102D40008A95E9F70E942515A0C0751314C03413A5
+:102D500012C0611110C08091B001F8018583C801D3
+:102D60000E94921186E0EBEAF1E0DF011D928A9564
+:102D7000E9F7FE2C8AC04D875E878D859E856A8B1C
+:102D80000E94BF146A89882309F4BECF662309F420
+:102D9000BBCF2091B001822F82958F7090E0029777
+:102DA0000CF48ECF8091AB019091AC019A83898312
+:102DB0001B82DD82CC822E83CE0101967FCF80954F
+:102DC00090958C0D9D1DACCFF62E662309F49CCFFB
+:102DD00075132EC034132CC02091B00120FD1FC0EC
+:102DE000822F82958F70D9F0D80115962C93159764
+:102DF0008F3049F08F5F982F9295907F822F8F7040
+:102E0000892B15968C93C8010E94921186E0F801D7
+:102E1000ABEAB1E001900D928A95E1F793CF86E09D
+:102E2000F801ABEAB1E001900D928A95E1F72DC06F
+:102E30004D875E878D859E850E94BF14811140CF8E
+:102E40008091B00181608093B001C8010E9492110D
+:102E50001CC0662309F458CF4D875E878D859E85FB
+:102E60000E94BF14882309F44FCF2ACF811148CF85
+:102E70000CC0243031050CF047CF9F7009F440CFCF
+:102E8000F8019581907F09F03BCF8F2D62960FB6A8
+:102E9000F894DEBF0FBECDBFDF91CF911F910F9190
+:102EA000FF90EF90DF90CF9008951F93CF93DF9323
+:102EB000CDB7DEB72C970FB6F894DEBF0FBECDBFEF
+:102EC0004F83588769877A878B879C87CE010796BF
+:102ED0000E948E15882369F08F8198852A853B850D
+:102EE000232BF1F19F3F09F063C08F3F09F060C0D1
+:102EF00037C086E0FE013796DE01119601900D92F3
+:102F00008A95E1F76F817885EA85FB85309741F1F5
+:102F10007F3F11F46F3F21F120917A0130E0C90128
+:102F20000196877099274091790150E084179507A1
+:102F300009F447C069837A83FD83EC8396E0929F0E
+:102F4000D001939FB00D1124A558BE4FFE013196BC
+:102F500001900D929A95E1F780937A010E940415F1
+:102F600016E08091790190917A018917C1F1189F3B
+:102F7000C001112485589E4F0E948E15882379F137
+:102F8000E09179011E9FF0011124E558FE4F408128
+:102F9000518162817381848195810E94F4148091B2
+:102FA000790190E001968770992780937901D9CFB4
+:102FB0004F81588569857A858B859C850E94F4149C
+:102FC000CFCF0E94BB1410927A0110927901EBEAE4
+:102FD000F1E086E0DF011D928A95E9F7C1CF2C96DA
+:102FE0000FB6F894DEBF0FBECDBFDF91CF911F911A
+:102FF0000895EF92FF920F931F93CF93DF938C016D
+:10300000892B09F46CC0F12CEE24E394E80121969D
+:10301000F8018491843740F4843008F051C0813045
+:1030200081F0823019F15BC0853709F444C0A8F102
+:103030009CE7980F903708F052C08F770E943511A7
+:1030400041C00E5F1F4FFE01C49180E28C0F88309B
+:1030500048F4C7708E2D01C0880FCA95EAF70E9408
+:10306000871A14C08C2F0E946D102DC00E5F1F4F49
+:10307000FE01C49180E28C0F883058F4C7708E2D09
+:1030800001C0880FCA95EAF70E948D1A0E94AE1AF5
+:103090001AC08C2F0E94351116C00E5F1F4FFE0103
+:1030A000C491CC2381F08FE99FE00197F1F700C034
+:1030B0000000C150F6CF0E5F1F4FFE01F49003C019
+:1030C0000E946D108E018F2D882309F49FCFEFE9A8
+:1030D000FFE03197F1F700C000008150F5CFDF919C
+:1030E000CF911F910F91FF90EF90089508956093F5
+:1030F000B5017093B6018093B7019093B8010C9419
+:10310000A9140F931F930091B5011091B60120915E
+:10311000B7013091B801DC01CB01802B912BA22BA0
+:10312000B32B8093B5019093B601A093B701B093F0
+:10313000B8011F910F910C94A9140F931F93009144
+:10314000B5011091B6012091B7013091B801DC01B1
+:10315000CB0180239123A223B3238093B5019093C5
+:10316000B601A093B701B093B8011F910F910C94D1
+:10317000A9140F931F930091B5011091B6012091EE
+:10318000B7013091B801DC01CB0180279127A2273C
+:10319000B3278093B5019093B601A093B701B09384
+:1031A000B8011F910F910C94A9141092B1011092C3
+:1031B000B2011092B3011092B4010C94A91441E031
+:1031C00050E060E070E004C0440F551F661F771F99
+:1031D0008A95D2F74093B1015093B2016093B30145
+:1031E0007093B4010C94A91441E050E060E070E0E9
+:1031F00004C0440F551F661F771F8A95D2F7809130
+:10320000B1019091B201A091B301B091B401482BEA
+:10321000592B6A2B7B2B4093B1015093B2016093E1
+:10322000B3017093B4010C94A91441E050E060E044
+:1032300070E004C0440F551F661F771F8A95D2F7B0
+:1032400040955095609570958091B1019091B20133
+:10325000A091B301B091B401482359236A237B2381
+:103260004093B1015093B2016093B3017093B401E4
+:103270000C94A91441E050E060E070E004C0440FF9
+:10328000551F661F771F8A95D2F78091B1019091E3
+:10329000B201A091B301B091B401482759276A2720
+:1032A0007B274093B1015093B2016093B3017093B7
+:1032B000B4010C94A9140F931F930091B1011091C4
+:1032C000B2012091B3013091B401DC01CB01802B1C
+:1032D000912BA22BB32B8093B1019093B201A093B9
+:1032E000B301B093B4011F910F910C94A9140F93E3
+:1032F0001F930091B1011091B2012091B30130915F
+:10330000B401DC01CB0180239123A223B32380935A
+:10331000B1019093B201A093B301B093B4011F9196
+:103320000F910C94A9140F931F930091B101109168
+:10333000B2012091B3013091B401DC01CB018027AF
+:103340009127A227B3278093B1019093B201A09354
+:10335000B301B093B4011F910F910C94A914089577
+:10336000CF92DF92EF92FF920F931F93CF93DF9351
+:103370008C01C090B501D090B601E090B701F090FB
+:10338000B8014091B1015091B2016091B3017091C7
+:10339000B401C42AD52AE62AF72ACFE1D0E0D70122
+:1033A000C6010C2E04C0B695A795979587950A94EB
+:1033B000D2F780FF07C0B8018C2F0E940C07813024
+:1033C000910531F4219758F7B80180E00E940C076D
+:1033D000DF91CF911F910F91FF90EF90DF90CF90F1
+:1033E000089590910C01992321F090910D01911174
+:1033F00009C020910E0130910F01F90132969FEF23
+:1034000040E01FC0982F9695969596959F3050F561
+:10341000E0910E01F0910F01E90FF11D877021E09D
+:1034200030E0A90102C0440F551F8A95E2F7CA0196
+:103430009181892B818308959F3F39F04F5F4E30F2
+:1034400041F051915813F8CF0DC05111F7CF942F7F
+:10345000F5CF9F3F39F0F901E90FF11D97FDFA957E
+:1034600082830895089590910C01992321F0909101
+:103470000D01911109C020910E0130910F01F90148
+:103480003296205F3F4F1FC0982F96959695969540
+:103490009F30F0F4E0910E01F0910F01E90FF11D62
+:1034A000877021E030E0A90102C0440F551F8A95C2
+:1034B000E2F7CA018095918189238183089531962D
+:1034C000E217F30729F090819813F9CF1082F7CF14
+:1034D000089581E090E0E0910E01F0910F01E80F76
+:1034E000F91F1082019680319105A9F708959091F6
+:1034F000CB01892B8093CB01089580959091CB01CE
+:1035000089238093CB0108951092CB010895909167
+:10351000CA01892B8093CA01089580959091CA01B0
+:1035200089238093CA0108951092CA010895809357
+:10353000B90108951092B901089580910E019091FA
+:103540000F01FC0131969C01205F3F4F80E091917B
+:1035500091118F5FE217F307D1F70895E0910E0103
+:10356000F0910F018091CB018083E0910E01F091E9
+:103570000F0190818091CA01892B80838091B901CC
+:10358000882361F0E0910E01F0910F019081892B69
+:1035900080830E949D1A81111092B90180910E01C1
+:1035A00090910F010C94510F8091E501843009F145
+:1035B0001092CD0120E488E190E00FB6F894A89530
+:1035C000809360000FBE2093600083B7817F84608A
+:1035D00083BF83B7816083BF7894889583B78E7FDC
+:1035E00083BF88E10FB6F89480936000109260006A
+:1035F0000FBE089508950895CF930E94FA1A0E946D
+:1036000031050E94FB1AC0E08C2F0E942306811115
+:1036100004C0CF5FCE30C1F701C081E0CF910895E3
+:103620000E94BB140E94450F0C943F0882E084BDA9
+:1036300093E095BD9AEF97BD80936E0008952FB7E4
+:10364000F8948091CE019091CF01A091D001B091DA
+:10365000D1012FBF0895CF92DF92EF92FF920F9387
+:103660001F932FB7F8944091CE015091CF016091F4
+:10367000D0017091D1012FBF6A017B01EE24FF249C
+:103680008C0120E030E0C016D106E206F30610F40B
+:10369000415051099A01281B390BC9011F910F9103
+:1036A000FF90EF90DF90CF9008951F920F920FB68A
+:1036B0000F9211248F939F93AF93BF938091CE016C
+:1036C0009091CF01A091D001B091D1010196A11D9F
+:1036D000B11D8093CE019093CF01A093D001B09300
+:1036E000D101BF91AF919F918F910F900FBE0F901D
+:1036F0001F9018950E94420CF8942FEF87EA91E6EC
+:10370000215080409040E1F700C0000087E090EB3E
+:10371000DC018093EE019093EF01A093F001B09350
+:10372000F1019CE088E10FB6F894A89580936000C1
+:103730000FBE90936000FFCFEF92FF920F931F9305
+:10374000CF93DF93D82FC0E08C2F0E94230600E098
+:1037500010E0E82EF12CC701002E02C09595879548
+:103760000A94E2F780FD06C00F5F1F4F0630110577
+:1037700091F709C0602F7C2F80E00E94EA06D813E1
+:10378000F3CF81E004C0CF5FCE30F1F680E0DF916F
+:10379000CF911F910F91FF90EF900895CF93C82F75
+:1037A0008CE20E949C1B882321F08C2FCF910C94DB
+:1037B0009C1B80E0CF910895CF930E94231D81111F
+:1037C00002C00E94091DC5E6C15049F00E943105A2
+:1037D0008FE39CE90197F1F700C00000F5CF89E283
+:1037E0000E94CE1B811113C18AE20E94CE1B81115F
+:1037F0000E94091D85E00E94CE1B81110E947A1B48
+:103800000E942E1D8093CC0187E00E94CE1B88234E
+:10381000A9F18BE10E94CE1B882351F08091CC014D
+:1038200081FB222720F991E0922790FB81F90EC0BD
+:103830008EE00E94CE1B882361F08091CC0182FB38
+:10384000222720F991E0922790FB82F98093CC0106
+:1038500015C080E10E94CE1B9091CC01882341F0DD
+:1038600093FB222720F981E0822780FB93F904C093
+:10387000892F809580FB90F99093CC018091CC01A9
+:103880000E94321D0E94401D8093DF0180EE0E9445
+:10389000CE1B882341F08091DF01982F909590FBFB
+:1038A00080F98093DF0189E30E94CE1B882359F0C1
+:1038B0008091DF0181FB222720F991E0922790FB84
+:1038C00081F98093DF0182EE0E94CE1B882359F09C
+:1038D0008091DF0182FB222720F991E0922790FB63
+:1038E00082F98093DF0186EE0E94CE1B882359F077
+:1038F0008091DF0183FB222720F991E0922790FB42
+:1039000083F98093DF0183EE0E94CE1B882359F058
+:103910008091DF0184FB222720F991E0922790FB20
+:1039200084F98093DF0185E30E94CE1B882359F040
+:103930008091DF0185FB222720F991E0922790FBFF
+:1039400085F98093DF0181E30E94CE1B882359F023
+:103950008091DF0186FB222720F991E0922790FBDE
+:1039600086F98093DF0181E10E94CE1B882359F004
+:103970008091DF0187FB222720F991E0922790FBBD
+:1039800087F98093DF018091DF010E94441D8091BF
+:10399000DF0187FB882780F980930D0187E20E9471
+:1039A000CE1BC82F8EE10E94CE1B8111C2608FE119
+:1039B0000E94CE1B8111C46080E20E94CE1B811147
+:1039C000C86081E20E94CE1B8111C06182E20E9428
+:1039D000CE1B8111C06283E20E94CE1B8111C064A4
+:1039E00084E20E94CE1B882311F0C06802C0CC2361
+:1039F00029F08C2F0E943B1D6C2F03C00E94371DA5
+:103A0000682F70E080E090E0CF910C947718CF9110
+:103A100008956DEE7EEF80E090E00E946F2360E0FD
+:103A200082E090E00E94612360E083E090E00E94E9
+:103A3000612360E084E090E00E94612360E085E023
+:103A400090E00C94612380E090E00E945B2321E0F1
+:103A50008D3E9E4F09F020E0822F089582E090E095
+:103A60000C945323682F82E090E00C94612383E050
+:103A700090E00C945323682F83E090E00C94612332
+:103A800084E090E00C945323682F84E090E00C9441
+:103A900061238091D40180FF0BC06091130185E008
+:103AA000689FB001112475956795759567952BC032
+:103AB00081FF09C06091130185E0689FB001112466
+:103AC0007595679520C082FF07C06091130185E05E
+:103AD000689FB001112417C09091D5019923D1F0AE
+:103AE00060911201961788F72091130185E0289FB5
+:103AF00090011124929FA001939F500D112470E01A
+:103B0000CA010E9425236038710540F461157105D2
+:103B100039F002C065E070E0862F08958FE70895C0
+:103B200081E008958091D40180FF08C06091110167
+:103B300070E0759567957595679521C081FF06C002
+:103B40006091110170E07595679519C082FF04C0FE
+:103B50006091110170E010C09091D5019923C1F0DE
+:103B6000609110019617A0F780911101899FC00103
+:103B7000112470E00E9425236038710528F4611536
+:103B8000710521F0862F08958FE7089581E008954B
+:103B900061E070E0F4CF803F21F40E94491D8195DF
+:103BA00004C0813F29F40E94491D8093D8010895E3
+:103BB000823F21F40E94491D819504C0833F29F46E
+:103BC0000E94491D8093D7010895893F19F40E94EE
+:103BD000921D05C08A3F31F40E94921D8195809309
+:103BE000D90108958B3F21F40E94921D819504C054
+:103BF0008C3F29F40E94921D8093DA010895843F3E
+:103C000021F48091D601816017C0853F21F4809115
+:103C1000D601826011C0863F21F48091D601846074
+:103C20000BC0873F21F48091D601886005C0883F92
+:103C300031F48091D60180618093D60108958D3F43
+:103C400021F48091D40181600BC08E3F21F48091DA
+:103C5000D401826005C08F3F29F48091D401846033
+:103C60008093D4010895803F39F48091D80187FF73
+:103C70006CC01092D80169C0813F29F48091D801AD
+:103C80001816BCF362C09091D701823F29F497FFC8
+:103C90005CC01092D70159C0833F19F41916CCF3B8
+:103CA00054C0893F41F48091D90118160CF04DC0E1
+:103CB0001092D9014AC08A3F29F48091D90187FF27
+:103CC00044C0F6CF8B3F39F48091DA0187FF3DC0C5
+:103CD0001092DA013AC08C3F29F48091DA0118166B
+:103CE000BCF333C0843F21F48091D6018E7F17C08E
+:103CF000853F21F48091D6018D7F11C0863F21F44C
+:103D00008091D6018B7F0BC0873F21F48091D60133
+:103D1000877F05C0883F31F48091D6018F7E8093E4
+:103D2000D60113C08D3F21F48091D4018E7F0BC04A
+:103D30008E3F21F48091D4018D7F05C08F3F29F4FF
+:103D40008091D4018B7F8093D4018091D701811120
+:103D50000EC08091D80181110AC08091D9018111D2
+:103D600006C08091DA01811102C01092D501089538
+:103D700086ED91E00E945C0F0E941F1B9093D3017F
+:103D80008093D20108951F93CF93DF938091D20146
+:103D90009091D3010E942B1BAC019091D5019923E6
+:103DA00021F02091140130E006C0209115018AE035
+:103DB000289F900111244217530708F486C0809170
+:103DC000D701C091D801D091D9011091DA018111A8
+:103DD00007C0C11176C0D11174C0111172C075C075
+:103DE0009F3F19F09F5F9093D501181624F40E940D
+:103DF000491D8093D7018091D70187FF05C00E949C
+:103E0000491D81958093D7011C1624F40E94491DF9
+:103E10008093D8018091D80187FF05C00E94491D79
+:103E200081958093D8016091D701662339F1C091C3
+:103E3000D801CC2319F1772767FD7095872F972F2D
+:103E40000E94362223E333E343E35FE30E949A2296
+:103E50000E9403226093D7016C2F772767FD70952E
+:103E6000872F972F0E94362223E333E343E35FE358
+:103E70000E949A220E9403226093D8011D1624F406
+:103E80000E94921D8093D9018091D90187FF05C0BE
+:103E90000E94921D81958093D901111624F40E94ED
+:103EA000921D8093DA018091DA0187FF05C00E949C
+:103EB000921D81958093DA01DF91CF911F910C942F
+:103EC000B81E9F3F09F08ECF96CFDF91CF911F9103
+:103ED0000895E6EDF1E085E0DF011D928A95E9F7AE
+:103EE0001092D5011092D4010895833081F128F405
+:103EF000813059F08230D1F00895853009F449C0FD
+:103F0000B8F1863009F456C0089580911501262F26
+:103F100030E0280F311D2F3F310524F4680F6093E6
+:103F2000150108958FEF8093150108958091140174
+:103F3000262F30E0280F311D2F3F310524F4680F64
+:103F40006093140108958FEF809314010895809178
+:103F50001301262F30E0280F311D2F3F310524F4A7
+:103F6000680F6093130108958FEF809313010895F4
+:103F700080911201262F30E0280F311D2F3F31058F
+:103F800024F4680F6093120108958FEF809312015B
+:103F9000089580911101262F30E0280F311D2F3F09
+:103FA000310524F4680F6093110108958FEF809319
+:103FB0001101089580911001262F30E0280F311D46
+:103FC0002F3F310524F4680F6093100108958FEF9F
+:103FD000809310010895833011F128F4813049F065
+:103FE000823091F00895853081F120F18630C1F161
+:103FF000089580911501681720F4861B80931501A0
+:10400000089510921501089580911401681720F405
+:10401000861B8093140108951092140108958091D5
+:104020001301681720F4861B8093130108951092E2
+:104030001301089580911201681720F4861B809364
+:1040400012010895109212010895809111016817CC
+:1040500020F4861B80931101089510921101089598
+:1040600080911001681720F4861B80931001089539
+:104070001092100108950F931F938D3109F46BC0B6
+:1040800008F03FC08E3009F47DC0C0F4873009F4D9
+:104090006EC068F4863009F0AFC08091CC01817F9A
+:1040A0008E7F8093CC0181E08093DC01A6C08830B4
+:1040B00009F458C08B3009F49BC09EC0863109F4C6
+:1040C00097C078F4803109F470C0813109F094C050
+:1040D0000E94BB1490910D0181E0892780930D010E
+:1040E00087C0893109F484C08B3109F085C0809183
+:1040F000CC0181FB222720F991E0922790FB81F9E6
+:104100004AC0853309F45BC048F4873209F457C0CC
+:1041100008F45AC0893209F452C06EC0833438F4AE
+:104120008A3308F067C0883309F462C065C08334FD
+:1041300009F445C0883409F05FC00E94BB140FEF3A
+:1041400013ED20E3015010402040E1F700C00000D3
+:104150000E947A1B4DC00E94BD210E94450F0E9403
+:104160003F0846C00E942E1D0E94401D41C09091F4
+:10417000CC01892F817090FF12C0917F9E7F909318
+:10418000CC013BC08091CC0182FB222720F991E039
+:10419000922790FB82F98093CC01992349F1809179
+:1041A000CC0181608093CC0123C08091CC0183FB42
+:1041B000222720F991E0922790FB83F9ECCF61E070
+:1041C00070E080E090E010C08D5141E050E060E090
+:1041D00070E08A019B0104C0000F111F221F331FD2
+:1041E0008A95D2F7C901B8010E9477180E94BB14C2
+:1041F00081E003C08953E9CF80E01F910F910895BA
+:1042000080E0089580E00895CF93C82F8091DC016D
+:10421000813079F018F08230E9F187C0E0910E0129
+:10422000F0910F018081813169F0823209F07FC005
+:1042300009C0E0910E01F0910F018081813111F0F0
+:10424000823261F48C2F0E940021811104C08C2FD6
+:104250000E943B201DC081E090E01AC08C2F0E947C
+:104260000221811114C0C43179F048F4CB3079F0C7
+:10427000C03109F060C082E08093DC0108C0C9321F
+:1042800019F0C83321F057C01092DC0154C081E00E
+:10429000817053C0C93289F118F5C43171F1A8F4A5
+:1042A000C73009F046C08AE08093150194E19093ED
+:1042B000140193E0909313018093120188E080939E
+:1042C000110188E28093100134C0CE51C63088F5C8
+:1042D000EC2FF0E0E65DFE4F80818093DB0129C08A
+:1042E000CE34E9F020F4CB3421F56AE013C0C135B7
+:1042F00079F0C235F1F461E00DC08091DB018823D3
+:1043000019F01092DB0115C081E08093DC0115C02B
+:1043100061E006C08091DB010E94751F0AC06AE05F
+:104320008091DB010E94EB1F04C01092DC0180E051
+:1043300004C081E002C080E0ABCFCF910895E1E8F6
+:10434000F0E08081886080838081816080838FB786
+:10435000F89493E09093890090ED909388008FBF3C
+:104360000895EFE6F0E08081826080830895EFE6B3
+:10437000F0E080818D7F80830895EFE6F0E090810A
+:1043800082E08927808308951F920F920FB60F92C3
+:1043900011242F933F934F935F936F937F938F934A
+:1043A0009F93AF93BF93EF93FF938091DD01909123
+:1043B000DE0101969093DE018093DD01811103C03F
+:1043C00082E00E943F08E091DE01E695E695F0E08C
+:1043D000E95AF94FE4918091DD018E1303C080E02A
+:1043E0000E943F08FF91EF91BF91AF919F918F91F4
+:1043F0007F916F915F914F913F912F910F900FBEE1
+:104400000F901F90189504D06894B1118DC0089535
+:1044100070D088F09F5790F0B92F9927B751A0F02E
+:10442000D1F0660F771F881F991F1AF0BA95C9F748
+:1044300012C0B13081F077D0B1E0089574C0672F19
+:10444000782F8827B85F39F0B93FCCF386957795F8
+:104450006795B395D9F73EF49095809570956195E1
+:104460007F4F8F4F9F4F0895E89409C097FB3EF40C
+:1044700090958095709561957F4F8F4F9F4F9923B1
+:10448000A9F0F92F96E9BB279395F695879577952F
+:104490006795B795F111F8CFFAF4BB0F11F460FFEF
+:1044A0001BC06F5F7F4F8F4F9F4F16C0882311F047
+:1044B00096E911C0772321F09EE8872F762F05C05B
+:1044C000662371F096E8862F70E060E02AF09A95F6
+:1044D000660F771F881FDAF7880F9695879597F9EB
+:1044E000089557FD9058440F551F59F05F3F71F0E4
+:1044F0004795880F97FB991F61F09F3F79F087954B
+:104500000895121613061406551FF2CF4695F1DFD3
+:1045100008C0161617061806991FF1CF8695710563
+:10452000610508940895E894BB2766277727CB0197
+:1045300097F908950BD078C069D028F06ED018F0A4
+:10454000952309F05AC05FC01124EECFCADFA0F353
+:10455000959FD1F3950F50E0551F629FF001729F18
+:10456000BB27F00DB11D639FAA27F00DB11DAA1F37
+:10457000649F6627B00DA11D661F829F2227B00D84
+:10458000A11D621F739FB00DA11D621F839FA00D0F
+:10459000611D221F749F3327A00D611D231F849F5F
+:1045A000600D211D822F762F6A2F11249F575040B6
+:1045B0008AF0E1F088234AF0EE0FFF1FBB1F661F51
+:1045C000771F881F91505040A9F79E3F510570F00A
+:1045D00014C0AACF5F3FECF3983EDCF38695779545
+:1045E0006795B795F795E7959F5FC1F7FE2B880F05
+:1045F000911D9695879597F9089597F99F6780E89B
+:1046000070E060E008959FEF80EC089500240A9424
+:104610001616170618060906089500240A9412169D
+:104620001306140605060895092E0394000C11F4D0
+:10463000882352F0BB0F40F4BF2B11F460FF04C07D
+:104640006F5F7F4F8F4F9F4F089597FB072E16F494
+:10465000009407D077FD09D00E943F2307FC05D0C6
+:104660003EF4909581959F4F0895709561957F4F89
+:104670000895EE0FFF1F0590F491E02D0994AA1BF9
+:10468000BB1B51E107C0AA1FBB1FA617B70710F03D
+:10469000A61BB70B881F991F5A95A9F7809590956F
+:1046A000BC01CD010895F999FECF92BD81BDF89A64
+:1046B000992780B50895A8E1B0E042E050E00C945D
+:1046C0007623262FF999FECF1FBA92BD81BD20BD5A
+:1046D0000FB6F894FA9AF99A0FBE019608950E94BF
+:1046E0006123272F0C946223DC01CB01FC01F99993
+:1046F000FECF06C0F2BDE1BDF89A319600B40D922E
+:0C47000041505040B8F70895F894FFCFE6
+:10470C0020024008CE08AB08770843080101BA0123
+:10471C0028080A03140A3F4D36391806CB059505AF
+:10472C005C05EF04080521053A05010203040506A2
+:04473C000708090061
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keyboard-layout.png b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keyboard-layout.png Binary files differnew file mode 100644 index 0000000000..57df5a1f99 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keyboard-layout.png diff --git a/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keymap.c b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keymap.c new file mode 100644 index 0000000000..da540c7a30 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keymap.c @@ -0,0 +1,264 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "../../../../quantum/keymap_extras/keymap_norwegian.c" + +#define BASE 0 // default layer +#define BASE_MAC 1 // default layer mac +#define NUMB_SYMB 2 // numbers and symbols +#define NUMB_SYMB_MAC 3 // numbers and symbols mac +#define FUNCTION 4 // function keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Keymap 0: Basic layer PC + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | [ | ] | { | } | * |Mac/PC| | ^ | $ | ( | ) | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ? | Q | W | F | P | G | " | | ' | J | L | U | Y | Å | Æ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | : | A | R | S | T | D |------| |------| H | N | E | I | O | Ø | + * |--------+------+------+------+------+------| ; | | = |------+------+------+------+------+--------| + * | ! | Z | X | C | V | B | | | | K | M | RIGHT| DOWN | UP | _ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | Func | Lclk | Rclk | TAB |,/CTRL| | LEFT | Esc | ` | # | Num | + * `----------------------------------' `----------------------------------' + * ,-------------. ,--------------. + * | & | | | |Insert| / | + * ,------|------|------| |------+-------+------. + * | | | + | | Del | | | + * | Shift| ./Spc|------| |------| Enter |Space| + * | | |-/Alt | | Bspc | | | + * `--------------------' `---------------------' + */ +[BASE] = KEYMAP( + // left hand + NO_BSLS, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, NO_ASTR, TG(1), + NO_QUES, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_QUO2, + NO_COLN, KC_A, KC_R, KC_S, KC_T, KC_D, + KC_EXLM, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, + MO(4), KC_BTN1, KC_BTN2, KC_TAB,GUI_T(KC_COMMA), + NO_AMP, NO_PIPE, + NO_PLUS, + KC_FN1,CTL_T(KC_DOT),ALT_T(NO_MINS), + // right hand + KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, + NO_APOS, KC_J, KC_L, KC_U, KC_Y, NO_AA, NO_AE , + KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSLH, + NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_UNDS, + KC_LEFT, KC_ESC, KC_FN7, KC_HASH, MO(2), + KC_INSERT, NO_SLSH, + KC_DELT, + KC_BSPC,KC_ENT,KC_SPC + ), +/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | | | { | } | | | | | $ | | | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | ' |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | Func | | | |,/Ctrl| | | | ` | | Num | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | |./Cmd |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[BASE_MAC] = KEYMAP( + NO_BSLS_MAC, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CTL_T(KC_COMMA), + KC_TRNS, NO_PIPE_MAC, + KC_TRNS, + KC_TRNS,GUI_T(KC_DOT) , KC_TRNS, + // right hand + KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, + NO_APOS_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, NO_GRV_MAC, KC_TRNS, MO(3), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Number ++ layer pc + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | % | | | | | | ~ | ´ | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 3 | 2 | 1 | 0 | |------| |------| | 5 | 6 | 7 | 8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | 4 | | | | | | 9 | END | PGDWN| PGUP | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | HOME | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMB_SYMB] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_PERC, KC_TRNS , KC_TRNS, + KC_TRNS, KC_3 , KC_2 , KC_1 , KC_0 , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_FN2, KC_FN6 , KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS, + KC_TRNS, KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 3: Number ++ layer mac. Some keys have to be repeated from the pc symbol layer, since transient keys inherit from the layer we jump from, not the layer above. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | % | | | | | | ~ | ´ | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 3 | 2 | 1 | 0 | |------| |------| | 5 | 6 | 7 | 8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | 4 | | | | | | 9 | END | PGDWN| PGUP | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | HOME | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMB_SYMB_MAC] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_PERC, KC_TRNS , KC_TRNS, + KC_TRNS, KC_3 , KC_2 , KC_1 , KC_0 , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_FN2, KC_FN10, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS, + KC_TRNS, KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 4: Function layer mac + pc + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | F3 | F2 | F1 | | |------| |------| | F5 | F6 | F7 | F8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | F4 | | | | | | F9 | F10 | F11 | F12 | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[FUNCTION] = KEYMAP( + KC_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, + KC_TRNS, KC_F3 , KC_F2 , KC_F1 , KC_TRNS , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F4, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, + KC_TRNS, NO_TILD, KC_F9, KC_F10, 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 +) +}; + +enum macro_id { + TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. + [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. + [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. + [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. + [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. + [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. + [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. + [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly + [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly + [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed +}; + + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + keyevent_t event = record->event; + + switch (id) { + case TILDE_NO: + return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + case LESS_NO: + return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + case GRTR_NO: + return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + case CIRC_NO: + return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + case ACUT_NO: + return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + case GRV_NO: + return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + case LESS_NO_MAC: + return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + case GRTR_NO_MAC: + return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + case ACUT_NO_MAC: + return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + } + return MACRO_NONE; +}; diff --git a/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/readme.md b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/readme.md new file mode 100644 index 0000000000..48f095cae9 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/readme.md @@ -0,0 +1,23 @@ +# Norwegian Colemak setup with osx/pc toggle + +## Motivation +I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I also wanted it to translate from a standard Norwegian keyboard OS setup. + +## Overview +The setup is created to be programmer friendly. +- Most of the symbols used in code can be activated without using layers or shift key. +- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb. +- Navigation is prioritized, arrows are right below the home row. + +## PC/Mac toggle +The default setup is for Norwegian keyboard setting(not colemak variants) on a PC(Windows or Linux). Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard. + +## Layers +Numbers and function buttons are on their own layers. The easiest way to switch layers(at least with my hands) in this setup, is to push your hand right below the little finger, on the layer switches. You will then have all your fingers free to type numbers or press function buttons. + +## Shift-key +Tap for the next character to be shifted, hold down for regular shift functionality + +## Layout + +![keyboard-layout](keyboard-layout.png) diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex new file mode 100644 index 0000000000..e29c17860a --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex @@ -0,0 +1,1161 @@ +:100000000C94E9020C942D030C942D030C942D03F5 +:100010000C942D030C942D030C942D030C942D03A0 +:100020000C942D030C942D030C94720D0C94360D2E +:100030000C94911B0C942D030C942D030C942D0304 +:100040000C942D030C942D030C942D030C942D0370 +:100050000C942D030C94171C0C942D030C942D035D +:100060000C942D030C942D030C942D030C942D0350 +:100070000C942D030C942D030C942D030C942D0340 +:100080000C942D030C942D030C942D030C942D0330 +:100090000C942D030C942D030C942D030C942D0320 +:1000A0000C942D030C942D030C942D03260227028F +:1000B0002F0230022B7100001E00140004001D747A +:1000C000360219011F001A0016001B0037022C7897 +:1000D00020000800070006003102287221001500E8 +:1000E0000900190024020601220017000A00050079 +:1000F0000000378134022A000000380000003682F8 +:1001000016014C000000330000004A8223001C004E +:100110000B00110000004D81240018000D0010009C +:100120002E00520025000C000E0034002E02287212 +:10013000260012000F001E022D002C78270013004D +:100140002D023802250251002F0030001C011D0134 +:100150000154000035002B002900E100E000000000 +:100160001E00140004001D00E30001001F001A001F +:1001700016001B00E2000100200008000700060036 +:10018000E600010021001500090019002900010006 +:10019000220017000A000500000001002D000100E8 +:1001A00000002B0000001B012E00010000002900B0 +:1001B0000000010023001C000B00110000000100E2 +:1001C000240018000D0010004B00010025000C0059 +:1001D0000E0001004E004F00260012000F003700F5 +:1001E000490050002700130033003800460001008A +:1001F0000100010034006400010000000100010062 +:1002000001000100010000003A000A300B3001003B +:10021000E20001003B000C300D3001000100010044 +:100220003C0010300F300E30010001003D00113055 +:1002300012301330010001003E001430153016302A +:1002400000000100010001000000010000000100A9 +:10025000B200010000000100000001003F00173063 +:1002600018301930000001004000010001000100B9 +:100270000100010041000100010001000100010036 +:1002800042000100010001000100010043000100E3 +:1002900001000100010001004400450001000100CF +:1002A000010000000000F0A201E101260226012762 +:1002B000022702E101330233000111021101080299 +:1002C00008011A021A012C022C00013802380138E8 +:1002D000023801E101170217011202120107020799 +:1002E0000112021202E1012C022C0001050205019B +:1002F0001502150108020801040204010E020E0194 +:10030000330233000111021101180218010F020F0C +:10031000010F020F00011502150108020801170262 +:100320001701180218011502150111021100010927 +:100330000209010F020F0112021201040204011747 +:100340000217012C022C00010C020C0111021101F8 +:10035000170217012C022C000105020501120212DE +:1003600001120212010F020F012C022C00011602D1 +:10037000160117021701150215010C020C011102DA +:1003800011010A020A012C022C00011902190104B0 +:10039000020401150215012C022C00011902190199 +:1003A000120212010C020C01070207012C022C00A0 +:1003B00001060206011202120111021101160216B3 +:1003C00001170217012C022C000116021601170258 +:1003D000170104020401170217010C020C010602A6 +:1003E00006012C022C000113021301150215010C49 +:1003F000020C011902190104020401170217010875 +:100400000208012C022C000113021301180218012A +:10041000050205010F020F010C020C010602060184 +:100420002C022C0005010906A101050719E029E7A6 +:100430001500250195087501810295017508810156 +:1004400005081901290595057501910295017503A6 +:1004500091010507190029FF150025FF950675086C +:100460008100C005010902A1010901A100050919C6 +:100470000129051500250195057501810295017574 +:100480000381010501093009311581257F95027528 +:1004900008810609381581257F95017508810605B3 +:1004A0000C0A38021581257F950175088106C0C0A8 +:1004B00005010980A101850216010026B7001A0175 +:1004C000002AB700751095018100C0050C0901A133 +:1004D000018503160100269C021A01002A9C027560 +:1004E0001095018100C005010906A101050719E069 +:1004F00029E71500250195087501810205081901F4 +:10050000290595057501910295017503910105076E +:100510001900297715002501957875018102C0120F +:1005200001100100000008EDFE07130100010200A8 +:100530000109026D00040100A0FA09040000010392 +:10054000010100092111010001223F00070581037B +:1005500008000A0904010001030102000921110138 +:100560000001224D000705820308000A0904020069 +:1005700001030000000921110100012236000705D6 +:10058000830308000A090403000103000000092195 +:100590001101000122390007058403100001040342 +:1005A000090416034500720067006F0044006F00E5 +:1005B0007800200045005A00000016034500720034 +:1005C00067006F0044006F007800200045005A006B +:1005D000000011241FBECFEFDAE0DEBFCDBF04B6AE +:1005E00003FE24C08091CE019091CF01A091D00153 +:1005F000B091D1018750904BA740B04BB9F4109205 +:10060000CE011092CF011092D0011092D10114BEF0 +:1006100084B7877F84BF88E10FB6F8948093600029 +:10062000109260000FBEE0E0FFE3099511E0A0E04A +:10063000B1E0E2E5F8E402C005900D92A631B10701 +:10064000D9F711E0A6E1B1E001C01D92AE3CB107BF +:10065000E1F70E945F090C9427240C940000FC0130 +:10066000613109F464C06231A8F46D3009F441C00D +:100670006E3040F46B3079F16C30A0F56A3009F0DF +:1006800084C022C06F3009F441C08281603108F01B +:1006900043C036C0653109F45AC0663140F4633155 +:1006A00009F43FC08281643108F04CC046C0673114 +:1006B00009F459C0673108F450C0683109F459C0D1 +:1006C000693109F062C05BC08281882309F45DC092 +:1006D00027E034E05CC08281882309F456C026EE0E +:1006E00033E055C08281882309F44FC029EC33E000 +:1006F0004EC08281882309F448C020EB33E047C014 +:10070000882309F442C02BE933E041C08281882369 +:10071000E1F12AE833E03BC08823B9F12DE633E06C +:1007200036C08281882389F128E533E030C0828198 +:10073000882359F127E433E02AC0882331F12EE2DF +:1007400033E025C0882309F125E133E020C0828110 +:10075000882319F024E033E01AC082818823A9F0AD +:100760002BEE32E014C08281882379F02AEC32E04B +:100770000EC08281882349F029EB32E008C08281D3 +:10078000882319F028EA32E002C020E030E0C901F5 +:100790000895089560919701709198018091990151 +:1007A00090919A010E94201B56985E9825982D984A +:1007B00026982E9827982F98813019F0823031F49E +:1007C00003C0259A2D9A0895269A2E9A08958AECA8 +:1007D00093E0009711F0FC01099580E090E0089506 +:1007E00056985E9825982D9826982E9827982F9899 +:1007F0008FEF90E0909389008093880090938B0016 +:1008000080938A0090938D0080938C00259A2D9A76 +:1008100084EF91E020E931E0F9013197F1F7019798 +:10082000D9F7269A2E9A84EF91E020E931E0F90178 +:100830003197F1F70197D9F7279A2F9A84EF91E032 +:1008400020E931E0F9013197F1F70197D9F72598BF +:100850002D9884EF91E020E931E0F9013197F1F72B +:100860000197D9F726982E9884EF91E020E931E09E +:10087000F9013197F1F70197D9F727982F985698F2 +:100880005E9825982D9826982E9827982F98089549 +:1008900089EA8093800089E08093810024982C98D5 +:1008A0003F988AB18F748AB96E98479A8BB1806BE2 +:1008B0008BB9769A0E94F00389EC93E0009711F0CF +:1008C000FC01099580E090E0089580E280930001AA +:1008D00080911601882371F40E94B40481E0809312 +:1008E000160180E197E220E931E0F9013197F1F753 +:1008F0000197D9F780E40E94BA048093000188230D +:1009000071F50E94E80480930001882341F50E945C +:10091000E80480930001882311F58FE30E94E80426 +:10092000809300018823D9F40E94E00480E40E94AF +:10093000BA0480930001882391F48CE00E94E804BB +:1009400080930001882359F40E94E80480930001F9 +:10095000882329F48FE30E94E804809300010E9419 +:10096000E0048091000108951092B9008AE080931C +:10097000B8000895982F84EA8093BC008091BC0051 +:1009800087FFFCCF8091B900887F883021F08031CB +:1009900011F081E008959093BB0084E88093BC003F +:1009A0008091BC0087FFFCCF9091B900987F98316F +:1009B00011F480E0089580E0903409F081E008951A +:1009C00084E98093BC008091BC0084FDFCCF089535 +:1009D0008093BB0084E88093BC008091BC0087FFBB +:1009E000FCCF8091B90090E0887F883209F091E0D7 +:1009F000892F089584E88093BC008091BC0087FF14 +:100A0000FCCF8091BB000895E7E1F1E0E80FF11D14 +:100A1000808108950895809100018823A9F480E4DD +:100A20000E94BA0480930001882361F482E10E944D +:100A3000E80480930001882329F48FEF0E94E804E2 +:100A4000809300010E94E00484B1807F84B985B165 +:100A5000807F85B98AB1837F8AB98BB1837F8BB957 +:100A60003E98469808950E946504809300010E9474 +:100A70000B0580B38C7080BB81B3836F81BB80E03A +:100A800090E0FC01E95EFE4F1082FC01EB5DFE4F41 +:100A9000108201968E309105A1F788E494E00097CA +:100AA00011F0FC0109950895BF92CF92DF92EF9269 +:100AB000FF920F931F93CF93DF93809100018823C0 +:100AC00079F0809133018F5F80933301882341F463 +:100AD0000E94650480930001882311F40E94F003B2 +:100AE00025E2E22E21E0F22EC0E0D0E090EAB92E1D +:100AF00081E0C82ED12C02E0C73010F580910001B2 +:100B0000882309F045C080E40E94BA048093000164 +:100B1000882399F482E10E94E804809300018823ED +:100B200061F4C6010C2E02C0880F991F0A94E2F7E7 +:100B300080950E94E804809300010E94E00428C090 +:100B4000CA30D9F0CB3040F4C83089F0C93090F4C5 +:100B5000C73009F0A0C008C0CC30A1F0CC3080F084 +:100B6000CD3009F098C011C0209A289894C0219ADD +:100B7000299891C0229A2A988EC0239A2B988BC0CC +:100B8000529A01C0539A5B9886C03E9A469883C099 +:100B900080910001882311F010E03EC080E40E94A3 +:100BA000BA0480930001882399F483E10E94E80449 +:100BB00080930001882361F481E40E94BA04809349 +:100BC0000001882329F40E94FA04182F109501C00F +:100BD00010E00E94E00420C042E07C9902C034E0B2 +:100BE00001C030E07D9902C028E001C020E07E997C +:100BF00002C090E101C090E08FB18095881F8827E6 +:100C0000881F8295880F807E152F1C251170142B4C +:100C1000132B122B192B182BF7018081811719F038 +:100C20001083009301010E940B0521960894E11C9A +:100C3000F11CCE30D10509F05FCF809101018823EE +:100C4000C9F0815080930101882329F080EA9FE058 +:100C50000197F1F70FC020E030E0F901E95EFE4FA7 +:100C6000D901AB5DBE4F8C9180832F5F3F4F2E30FB +:100C7000310599F787EE93E0009711F0FC01099593 +:100C800081E0DF91CF911F910F91FF90EF90DF9066 +:100C9000CF90BF9008958B2D8A95F1F75FB1799B26 +:100CA0009BCF40E09ACF08959C018B3B910578F44F +:100CB000883A910548F5853A9105B8F48430910554 +:100CC00008F09FC08130910509F099C095C0803E21 +:100CD000910508F494C0883E910508F492C0805FA5 +:100CE0009040409708F08BC085C0853A910519F473 +:100CF00081E890E47DC0863A910519F083E890E49C +:100D000077C082E890E474C0883A910519F482EEC5 +:100D100094E46EC0893A910519F489EE94E468C0B0 +:100D20008A3A910519F48AEE94E462C08B3A9105EF +:100D300019F485EB94E45CC08C3A910519F486EBC8 +:100D400094E456C08D3A910519F487EB94E450C0B1 +:100D5000803B910519F48CEC94E44AC08E3A9105DD +:100D600019F48DEC94E444C08F3A910519F483E8AA +:100D700095E43EC0813B910519F48AE895E438C0BA +:100D8000823B910519F482E995E432C0833B9105D9 +:100D900019F484E995E42CC0843B910519F481E2AF +:100DA00096E426C0853B910519F483E296E420C0C1 +:100DB000863B910519F484E296E41AC0873B9105BD +:100DC00019F485E296E414C0883B910519F486E293 +:100DD00096E40EC0893B910519F487E296E408C0B9 +:100DE0008A3B910519F080E094E402C08AE296E41F +:100DF0009C0107C0306505C021E030E002C020E062 +:100E000030E0C9010895E62FF0E0EE0FFF1F9CE0EF +:100E1000799F90011124E20FF31F98EA899FC00186 +:100E20001124E80FF91FE455FF4F25913491C901B2 +:100E30000895FC01EE0FFF1FEC5DFE4F25913491EC +:100E4000C9010895FC01EE0FFF1FEC55FD4F2591E0 +:100E50003491C90108950E940307AC01805091406C +:100E600080509F4118F4CA019F710895CA018050B3 +:100E700090428050904128F4CA019F700E9422073E +:100E80000895CA01805090438050904120F4CA01D7 +:100E90009070906C089580E54030580771F40E947E +:100EA000261184EC99E020E931E0F9013197F1F75E +:100EB0000197D9F70E943C1C0EC120E54130520732 +:100EC00031F48091AE0181608093AE0104C1CA010A +:100ED000805090458050904108F056C0652F77278C +:100EE0006F70707061307105F9F49A01A4E0220FFF +:100EF000331FAA95E1F720703370CA01F3E0880F21 +:100F0000991FFA95E1F780769070282B392B3C6871 +:100F10004370507002C0660F771F4A95E2F76F71F9 +:100F20007070262B372B2EC06230710529F4942F58 +:100F30008827816F906A08956330710551F49A0192 +:100F400073E0220F331F7A95E1F7207E37703C68FB +:100F50000CC06430710561F59A0163E0220F331F04 +:100F60006A95E1F7207E37703A684370507081E0EF +:100F700090E002C0880F991F4A95E2F78F71907038 +:100F8000282B392BC9010895CA0180509047805001 +:100F9000904120F4CA019F7090620895CA01805068 +:100FA00090488050904120F4CA019F70906A089543 +:100FB000403E5105F0F4403C510588F54133510560 +:100FC00009F476C04233510548F44932510509F419 +:100FD00065C04A32510509F07AC06FC049335105E6 +:100FE00011F142385105F9F04533510509F06FC050 +:100FF00050C0433E510569F1443E510540F4403E26 +:101000005105C1F0423E510509F061C01DC0463E88 +:10101000510559F1473E510509F059C02BC0CA018D +:101020000E94190708958091BF0180FD0AC081FDCB +:1010300008C04DC08091BF0180FF03C089E390E0EC +:1010400047C080EE90E044C08091BF0182FD08C09F +:1010500004C08091BF0182FF03C082EE90E038C0DF +:1010600084FD11C083EE90E033C08091BF0183FD09 +:1010700008C004C08091BF0183FF03C086EE90E0EA +:1010800027C084FF03C080E090E022C087EE90E09C +:101090001FC08091BF0185FF05C007C08091BF01BF +:1010A00085FF03C085E390E013C089E290E010C0A3 +:1010B0008091BF0186FF05C007C08091BF0186FFF8 +:1010C00003C081E390E004C08AE290E001C0CA015D +:1010D0000E9454060895089508951092C401089539 +:1010E00008950895809135010895DF93CF9300D03E +:1010F0000F92CDB7DEB7AC018091C501843029F5E0 +:1011000083E08093E9002FEF95ED05C0892F8A9544 +:10111000F1F7222329F08091E800215085FFF6CFD6 +:101120008091E80085FF11C05B834A8383E0898357 +:10113000CE01019663E070E040E050E00E94D80BE1 +:101140008091E8008E778093E8000F900F900F90C9 +:10115000CF91DF910895DF93CF9300D00F92CDB759 +:10116000DEB7AC018091C501843029F583E080931E +:10117000E9002FEF95ED05C0892F8A95F1F722231D +:1011800029F08091E800215085FFF6CF8091E8009A +:1011900085FF11C05B834A8382E08983CE0101967B +:1011A00063E070E040E050E00E94D80B8091E800DE +:1011B0008E778093E8000F900F900F90CF91DF9182 +:1011C0000895AC018091C501843001F582E08093DF +:1011D000E9002FEF95ED05C0892F8A95F1F72223BD +:1011E00029F08091E800215085FFF6CF8091E8003A +:1011F00085FF0CC0CA0165E070E040E050E00E944D +:10120000D80B8091E8008E778093E80008950F93C3 +:101210001F93182F092F9091C501943009F04CC0ED +:10122000809102018823E1F080910D018823C1F0B3 +:101230009093E9009FEF25E105C0822F8A95F1F791 +:10124000992329F08091E800915085FFF6CF809195 +:10125000E80085FF31C0812F902F60E170E018C059 +:1012600081E08093E9009FEF25ED05C0822F8A95EC +:10127000F1F7992329F08091E800915085FFF6CF8E +:101280008091E80085FF18C0812F902F68E070E002 +:1012900040E050E00E94D80B8091E8008E77809368 +:1012A000E800A6E3B1E0212F302FC901FC0180E165 +:1012B00001900D928150E1F71F910F91089584B72D +:1012C000877F84BF88E10FB6F89480936000109206 +:1012D00060000FBE80E090E020E80FB6F894209305 +:1012E0006100809361000FBE0E9424100E94B60C22 +:1012F0000E94170D8091E20084608093E200789450 +:101300000E94B50F0E94C01083E091E00E94CB0FB5 +:101310000CC00E94691B8091C301882331F00E9498 +:10132000C11B882311F00E94ED0A8091C501853010 +:1013300081F30E942A10F9CF8091C401882349F4D7 +:101340000E94B60C0E94170D8091E2008460809389 +:10135000E20008958091C701833009F457C08430BA +:1013600030F4813071F0823009F0B1C098C08A3019 +:1013700009F485C08B3009F46AC0893009F0A7C030 +:1013800020C08091C601813A09F0A1C08091E80097 +:10139000877F8093E8008091CA019091CB01892BCF +:1013A00021F486E391E060E103C080E090E060E03A +:1013B00070E00E94030B8091E8008B778093E80037 +:1013C00008958091C601813209F081C08091CA01DF +:1013D0009091CB01009719F0039709F078C08091A4 +:1013E000E800877F8093E80005C08091C5018823CD +:1013F00009F46DC08091E80082FFF7CF8091F10081 +:10140000809335018091E8008B771CC08091C601E4 +:10141000813A09F05CC08091CA019091CB01892B7F +:1014200009F055C08091E800877F8093E8008091A3 +:10143000E80080FFFCCF809102018093F100809151 +:10144000E8008E778093E8000E94630C08958091F5 +:10145000C6018132E1F58091CA019091CB01892BBF +:10146000B1F58091E800877F8093E8000E94630CCB +:101470008091C801809302010E94261108958091F5 +:10148000C601813221F58091E800877F8093E800D2 +:101490000E94630C8091C90180933401089580916A +:1014A000C601813AA1F48091E800877F8093E8002B +:1014B0008091E80080FFFCCF809134018093F1009F +:1014C0008091E8008E778093E8000E94630C089575 +:1014D00081E061EC42E00E942B0C82E061EC42E092 +:1014E0000E942B0C83E061EC42E00E942B0C84E014 +:1014F00061EC42E10E942B0C08950E94BA1B0895F2 +:10150000DA019330C1F0943030F4913051F09230E0 +:1015100009F05BC00BC0913221F1923209F055C045 +:1015200037C0EFE1F5E022E130E053C0E1E3F5E060 +:101530002DE630E04EC0813051F0813020F0823015 +:1015400009F043C008C0EEE9F5E0849107C0E2EA83 +:10155000F5E0849103C0EAEBF5E08491282F30E0B8 +:1015600038C0613051F0613028F0623059F063309A +:1015700061F50BC0E3E4F5E002C0ECE5F5E029E03D +:1015800030E027C0E5E7F5E0FACFEEE8F5E0F7CF89 +:10159000613061F0613028F0623069F06330A9F4A5 +:1015A0000FC0E4E2F4E02FE330E013C0E3E6F4E040 +:1015B0002DE430E00EC0E0EBF4E026E330E009C0BB +:1015C000E6EEF4E029E330E004C0E0E0F0E020E003 +:1015D00030E0ED93FC93C901089580E189BD82E17B +:1015E00089BD09B400FEFDCF8091D8008F7D809326 +:1015F000D8008091E00082608093E0008091E0005C +:1016000081FDFCCF08959C014091CC015091CD010A +:101610004617570718F4F90190E043C061157105AA +:1016200011F0AB01F8CF8091E8008E778093E8004D +:1016300040E050E0F0CF8091C501882309F447C015 +:10164000853009F446C08091E80083FD44C0809154 +:10165000E80082FD36C08091E80080FF22C08091C2 +:10166000F3009091F200782F60E0292F30E0262BD4 +:10167000372B07C081918093F100415050402F5F7C +:101680003F4F4115510519F02830310598F390E08E +:101690002830310509F491E08091E8008E7780933D +:1016A000E8004115510539F6992329F60AC08091C1 +:1016B000C501882361F0853061F08091E80083FDE9 +:1016C0000AC08091E80082FFF2CF80E0089582E0B6 +:1016D000089583E0089581E008959C014091CC0134 +:1016E0005091CD014617570718F4F90190E044C016 +:1016F0006115710511F0AB01F8CF8091E8008E778C +:101700008093E80040E050E0F0CF8091C50188234D +:1017100009F448C0853009F447C08091E80083FD92 +:1017200045C08091E80082FD37C08091E80080FFCD +:1017300023C08091F3009091F200782F60E0292F70 +:1017400030E0262B372B08C084918093F10031962E +:10175000415050402F5F3F4F4115510519F028303F +:10176000310590F390E02830310509F491E0809143 +:10177000E8008E778093E8004115510531F69923F2 +:1017800021F60AC08091C501882361F0853061F09F +:101790008091E80083FD0AC08091E80082FFF2CFCB +:1017A00080E0089582E0089583E0089581E008953F +:1017B000BF92CF92DF92EF92FF920F931F93CF933E +:1017C000DF93182F092F7B016A010E94840CB82E29 +:1017D0008823B1F5812F902F9C01E901C114D10418 +:1017E00039F0F60180819181E81AF90AC80FD91FF2 +:1017F00000E010E022C08091E80085FD16C08091D5 +:10180000E8008E778093E800C114D10449F0F60116 +:1018100080819181800F911F9183808385E011C029 +:101820000E94840C882349F00CC089918093F100B8 +:101830000894E108F1080F5F1F4FE114F104D9F695 +:101840008B2DDF91CF911F910F91FF90EF90DF9043 +:10185000CF90BF900895382F282F2EC0822F8F70E1 +:101860008093E900231721F4762F942F50E006C0CF +:101870007091EC009091ED005091F00091FF1BC031 +:101880008091EB008E7F8093EB008091ED008D7F47 +:101890008093ED008091EB0081608093EB0070936A +:1018A000EC009093ED005093F0008091EE0087FDE6 +:1018B00002C080E008952F5F273080F23F703093A0 +:1018C000E90081E008958091C60188239CF404C05A +:1018D0008091C5018823B9F08091E80082FFF8CF9C +:1018E0008091E8008B778093E80008958091C5018E +:1018F000882349F08091E80080FFF8CF8091E800CC +:101900008E778093E80008954091E4005091E500BF +:1019100024E68091EC0080FF24C08091E80080FDE7 +:101920001EC08091C501882311F482E0089585309E +:1019300011F483E008958091EB0085FF02C081E0FF +:1019400008958091E4009091E5008417950709F3CC +:10195000222311F484E008952150AC01DACF80E015 +:1019600008958091E80082FFDCCFF9CF0E94290D15 +:101970000E94310DE0EEF0E0808181608083A8ED6F +:10198000B0E08C918F778C9319BCE7EDF0E080810B +:101990008E7F80838C918F7E8C931092C4010895EA +:1019A000EF92FF920F931F930E94290D0E94310D19 +:1019B00008ED10E0F80180818F7780838081806856 +:1019C000808380818F7D808319BC1092C501109225 +:1019D000C1011092C3011092C20180EEE82EF12CD9 +:1019E000F70180818B7F8083F80180818160808313 +:1019F00080E060E042E00E942B0CE1EEF0E08081AC +:101A00008E7F8083E2EEF0E0808181608083808140 +:101A100088608083F70180818E7F8083F8018081D8 +:101A2000806180831F910F91FF90EF900895E8ED02 +:101A3000F0E080818F7E8083E7EDF0E0808181603F +:101A4000808384E082BF81E08093C4010E94D00C37 +:101A50000895E8EDF0E080818E7F80831092E200AF +:101A600008951092DA001092E10008951F920F92EB +:101A70000FB60F9211241F932F933F934F935F93B1 +:101A80006F937F938F939F93AF93BF93EF93FF9346 +:101A90001091E9008091EC001092E9008091F00033 +:101AA000877F8093F00078940E94440E1092E900A2 +:101AB0008091F00088608093F0001F701093E9001F +:101AC000FF91EF91BF91AF919F918F917F916F9116 +:101AD0005F914F913F912F911F910F900FBE0F90EB +:101AE0001F9018951F920F920FB60F9211242F93EB +:101AF0003F934F935F936F937F938F939F93AF9396 +:101B0000BF93EF93FF938091E10082FF0BC0809120 +:101B1000E20082FF07C08091E1008B7F8093E100AB +:101B20000E94B40F8091DA0080FF1FC08091D8001E +:101B300080FF1BC08091DA008E7F8093DA00809155 +:101B4000D90080FF0DC080E189BD82E189BD09B463 +:101B500000FEFDCF81E08093C5010E949C0905C075 +:101B600019BC1092C5010E946D088091E10080FFB0 +:101B700019C08091E20080FF15C08091E2008E7F45 +:101B80008093E2008091E20080618093E200809186 +:101B9000D80080628093D80019BC85E08093C5018D +:101BA0000E9471088091E10084FF30C08091E200C2 +:101BB00084FF2CC080E189BD82E189BD09B400FEAB +:101BC000FDCF8091D8008F7D8093D8008091E10077 +:101BD0008F7E8093E1008091E2008F7E8093E2000F +:101BE0008091E20081608093E2008091C1018823AE +:101BF00011F084E007C08091E30087FD02C081E01E +:101C000001C083E08093C5010E947D0A8091E100BC +:101C100083FF29C08091E20083FF25C08091E1000D +:101C2000877F8093E10082E08093C5011092C1011B +:101C30008091E1008E7F8093E1008091E2008E7FB1 +:101C40008093E2008091E20080618093E20080E076 +:101C500060E042E00E942B0C8091F000886080934D +:101C6000F0000E947008FF91EF91BF91AF919F919A +:101C70008F917F916F915F914F913F912F910F9035 +:101C80000FBE0F901F9018951F93DF93CF93CDB782 +:101C9000DEB7AC970FB6F894DEBF0FBECDBFE6EC53 +:101CA000F1E08091F100819321E0EE3CF207C9F769 +:101CB0000E94AA098091E80083FF3EC18091C6017D +:101CC0003091C701353009F487C0363040F43130E7 +:101CD000C9F1313070F0333009F02EC133C03830E3 +:101CE00009F4F9C0393009F409C1363009F024C1CA +:101CF00097C0803821F0823809F01EC108C0909149 +:101D0000C2018091C301882399F0926011C0809133 +:101D1000CA018F708093E9008091EB0090E025E08C +:101D2000969587952A95E1F7982F91701092E90082 +:101D30008091E800877F8093E8009093F1001092F3 +:101D4000F100D4C0882319F0823009F0F5C090E08A +:101D50008F719070009721F0029709F0EDC00CC0D0 +:101D60008091C801813009F0E7C01092C30133307F +:101D700069F58093C3012AC08091C801882331F599 +:101D80002091CA012F7009F4D7C02093E9008091F7 +:101D9000EB0080FF1BC0333021F48091EB008062A8 +:101DA00013C08091EB0080618093EB0081E090E0B4 +:101DB00002C0880F991F2A95E2F78093EA001092DB +:101DC000EA008091EB0088608093EB001092E900BC +:101DD0008091E800877F8DC0882309F0ADC0109105 +:101DE000C8011F778091E3008078812B8093E30006 +:101DF0008091E800877F8093E8000E94630C8091C7 +:101E0000E80080FFFCCF8091E30080688093E300CE +:101E1000112311F482E001C083E08093C5018CC0DE +:101E20008058823008F088C08091C8019091C90123 +:101E300023E08C3D920709F034C083E08C838AE272 +:101E40008B837FB7F894DE0115966EE040E050E09A +:101E500011E2E62FF0E010935700849140FF03C099 +:101E600082958F706F5F8F70282F30E08A3018F066 +:101E7000C901C79602C0C901C0968D939D934F5F5B +:101E80005F4F4431510529F77FBF8091E800877F7C +:101E90008093E800CE0103966AE270E00E94030B93 +:101EA00014C06091CA01AE014F5F5F4F0E94800A6B +:101EB000BC01009709F440C08091E800877F8093BF +:101EC000E80089819A810E946D0B8091E8008B77F0 +:101ED0008093E80031C0803879F58091E800877FF1 +:101EE0008093E8008091C1018093F1008091E80027 +:101EF0008E778093E8000E94630C1EC08823E1F473 +:101F00009091C8019230C0F48091E800877F80935F +:101F1000E8009093C1010E94630C8091C101882365 +:101F200031F48091E30087FD02C081E001C084E0CC +:101F30008093C5010E94680A8091E80083FF0AC06F +:101F40008091E800877F8093E8008091EB008062B9 +:101F50008093EB00AC960FB6F894DEBF0FBECDBFFA +:101F6000CF91DF911F91089508951F938091C5012E +:101F7000882379F01091E9008091EC001092E9003B +:101F80008091E80083FF02C00E94440E1F701093EE +:101F9000E9001F91089590934B0180934A010895A1 +:101FA000E0914A01F0914B01309711F480E00895DF +:101FB0000190F081E02D09950895E0914A01F0919A +:101FC0004B01309721F00280F381E02D09950895AF +:101FD000E0914A01F0914B01309721F00480F581A6 +:101FE000E02D099508959C01809148019091490147 +:101FF0002817390779F03093490120934801E0917F +:102000004A01F0914B01309729F00680F781E02DCD +:10201000C901099508959C0180914601909147015D +:102020002817390779F03093470120934601E09152 +:102030004A01F0914B01309729F00084F185E02DA1 +:10204000C9010995089508950E94231008950E94DA +:102050006C080895BF92CF92DF92EF92FF920F9398 +:102060001F93DF93CF93CDB7DEB72A970FB6F894BF +:10207000DEBF0FBECDBF0E945405EE24FF24BE2C50 +:102080008E2D0E940405C82EF701E35BFE4FD08021 +:10209000D82609F43FC08091AE0181FF02C00E94A2 +:1020A0000A0500E010E0ED2DF0E0CF01002E02C0A7 +:1020B000959587950A94E2F780FF27C00E94DF1B61 +:1020C0000983BA826C2D70E0002E02C07595679569 +:1020D0000A94E2F7617070706B8381609D838C83DA +:1020E000402F5B2D782F8D810E949514F701E35BC3 +:1020F000FE4F81E090E0002E02C0880F991F0A94E5 +:10210000E2F72081282720831DC00F5F1F4F063074 +:10211000110559F60894E11CF11C8EE0E816F10453 +:1021200009F0ADCF0E94DF1B2FEF2E832F8318867F +:102130008160782F9A8789874FEF5FEF60E08A850B +:102140000E9495140E94B41F10914C010E94D00F60 +:10215000181731F00E94D00F80934C010E94271075 +:102160002A960FB6F894DEBF0FBECDBFCF91DF9198 +:102170001F910F91FF90EF90DF90CF90BF90089547 +:102180000E94D61B0E9433050E949C1C0895DF9379 +:10219000CF9300D000D00F92CDB7DEB70F900F9045 +:1021A0000F900F900F90CF91DF910895DF93CF9311 +:1021B00000D000D000D0CDB7DEB726960FB6F89489 +:1021C000DEBF0FBECDBFCF91DF9108950E940C19E5 +:1021D000482F892F82958F70282F30E02C303105C1 +:1021E0004CF42A3031056CF4225030402230310555 +:1021F000C0F407C02C30310551F02F30310589F47F +:1022000006C0403E10F0403F61F481E008959F70A9 +:10221000892F90E023E0969587952A95E1F78170C4 +:10222000089580E008950E94E01A0E94B51A0E9465 +:10223000F81A0E949D1F0E94A91F80E090E00E9452 +:10224000F30F80E090E00E940B1008950E94D01AD6 +:102250000E9413110895882321F00E94C91A0E9438 +:10226000F81A0895882321F00E94C31A0E94F81AD0 +:102270000895282F882309F44EC0823859F40E940B +:10228000D00F81FF48C089E30E94431A0E94F81AC8 +:1022900089E30CC0833869F40E94D00F80FF3BC0F3 +:1022A00083E50E94431A0E94F81A83E50E94811A6E +:1022B0001FC0843859F40E94D00F82FF2CC087E4DD +:1022C0000E94431A0E94F81A87E4F0CF8450813AA2 +:1022D00010F4822FEBCF822F805E883060F427705D +:1022E00081E090E001C0880F2A95EAF70E94C91AA0 +:1022F0000E94F81A0895822F855A833028F480E0CE +:1023000090E00E94F30F0895285A233120F480E0D2 +:1023100090E00E940B1008951F93182F882309F452 +:10232000D0C0823859F40E94D00F81FDCAC089E321 +:102330000E94431A0E94F81A89E30CC0833879F48A +:102340000E94D00F80FDBDC083E50E94431A0E9409 +:10235000F81A83E50E94811A0E94F81AB2C08438E4 +:1023600059F40E94D00F82FDACC087E40E94431A4A +:102370000E94F81A87E4EECF8450813A50F4812FFE +:102380000E94DE21882309F09CC0812F0E94431AFD +:10239000E3CF812F805E883050F4177081E090E0A9 +:1023A00001C0880F1A95EAF70E94C31AD5CF812F72 +:1023B000855A8330A0F4153A19F481E890E00CC0F6 +:1023C000163A19F482E890E007C0173A19F080E055 +:1023D00090E002C083E890E00E94F30F72C0812F6A +:1023E000885A833108F06DC0183A19F482EE90E0F3 +:1023F00066C0193A19F489EE90E061C01A3A19F4EE +:102400008AEE90E05CC01B3A19F485EB90E057C06F +:102410001C3A19F486EB90E052C01B3B19F483EB95 +:1024200090E04DC01C3B19F484EB90E048C01D3A8D +:1024300019F487EB90E043C0103B19F48CEC90E06A +:102440003EC01E3A19F48DEC90E039C01F3A19F4E1 +:1024500083E891E034C0113B19F48AE891E02FC081 +:10246000123B19F482E991E02AC0133B19F484E984 +:1024700091E025C0143B19F481E292E020C0153BA5 +:1024800019F483E292E01BC0163B19F484E292E057 +:1024900016C0173B19F485E292E011C0183B19F4FD +:1024A00086E292E00CC0193B19F487E292E007C083 +:1024B0001A3B19F080E090E002C08AE292E00E94AC +:1024C0000B101F910895AF92BF92CF92DF92EF92BF +:1024D000FF920F931F93DF93CF93CDB7DEB72A9769 +:1024E0000FB6F894DEBF0FBECDBF5C01DE011196C2 +:1024F000FC0185E001900D928150E1F70B81F5011F +:10250000F580F2944FE0F422DE011696FE0131963A +:1025100085E001900D928150E1F73E812F81898500 +:102520009A85892B09F4F0C12F3F09F0C0C13F3FC4 +:1025300009F0BDC1E9C18D2D8F70222311F4182F30 +:1025400003C0182F1295107F002349F0112309F4BE +:1025500088C1812F0E94D31A0E94F81A82C18C2D43 +:102560000E943911112309F4CFC1812F0E94D91A79 +:102570000E94F81AC9C18D2D8F70203211F4182FC6 +:1025800003C0182F1295107FCC2021F0F1E0CF1658 +:1025900011F516C0002359F0FF2009F431C121E0E4 +:1025A000F21609F02DC1812F0E94E31AADC1FF2060 +:1025B00021F081E0F81609F4A7C10E94E61A26C1AD +:1025C000002329F0E1E0EF1508F49EC119C1FF20B6 +:1025D00009F09AC11BC1002321F0FF2009F410C1AA +:1025E00040C1FF2009F412C147C18D2D8695869503 +:1025F000837090E0009721F0019709F085C10AC02F +:10260000002319F0C601937002C080E090E00E94A0 +:10261000F30F7AC1002319F0C601937002C080E065 +:1026200090E00E940B1070C1002321F08C2D0E94BD +:10263000AB1E03C08C2D0E94151F0E94A91F64C1F0 +:102640008D2D837009F05EC0002309F05DC12C2D33 +:10265000229526952770220F220F8C2D8F70E82E41 +:10266000FF2400E010E0022E04C0EE0CFF1C001F4F +:10267000111F0A94D2F7C4FC05C060E070E080E04E +:1026800090E00FC06FE070E080E090E004C0660F63 +:10269000771F881F991F2A95D2F7609570958095AE +:1026A0009095D694D694F3E0DF224D2D50E0413042 +:1026B0005105A9F0423051051CF4452B49F024C1C5 +:1026C0004230510589F04330510509F01DC113C056 +:1026D0006E297F29802B912B0E941E1A15C16E290D +:1026E0007F29802B912B0BC06E297F29802B912B6A +:1026F0000E940D1A09C10E941E1AC801B7010E944A +:102700002F1A02C190E0002311F4969587958170ED +:1027100009F4FAC02C2D229526952770220F220F3E +:102720008C2D8F70E82EFF2400E010E0022E04C0F4 +:10273000EE0CFF1C001F111F0A94D2F7C4FC05C049 +:1027400060E070E080E090E00FC06FE070E080E05B +:1027500090E004C0660F771F881F991F2A95D2F753 +:102760006095709580959095D694D69423E0D2226A +:102770004D2D50E041305105A9F0423051051CF477 +:10278000452B49F0C1C04230510589F04330510515 +:1027900009F0BAC013C06E297F29802B912B0E94AB +:1027A0007119B2C06E297F29802B912B0BC06E2925 +:1027B0007F29802B912B0E946019A6C00E9471195D +:1027C000C801B7010E9482199FC080EFC81611F19D +:1027D0008C1528F0E0EECE1608F43FC009C0F2EFE9 +:1027E000CF1661F1CF1628F123EFC216B1F52BC039 +:1027F0001C2D1F708D2D8F71002331F00E94CF1979 +:10280000812F0E94321180C00E94AF19812F0E9437 +:102810002B117AC0002321F0FF2009F075C004C0FD +:1028200081E08F1508F470C08D2D8F710E9493196F +:102830006BC08D2D8F71002329F119C08D2D8F71E3 +:102840000023A9F01FC0002329F08D2D8F710E9455 +:10285000EB195AC00E94FB1957C0002359F0FF2002 +:1028600021F08C2D0E948C114FC08D2D8F710E94F4 +:10287000CF194AC0FF2021F08C2D0E94391144C08D +:102880008D2D8F710E94AF193FC0EFE0DE22C50190 +:102890006C2D4D2D0E942F030E94911835C0FFE032 +:1028A000DF22C5016C2D4D2D0E9453062DC089815C +:1028B0009A810E940C196C010E940B190E940A193E +:1028C0008D2D82958F7090E08530910509F4ACCE06 +:1028D0008630910554F4843091050CF086CE2D2D70 +:1028E000207F02970CF047CE26CE8C3091053CF429 +:1028F0008A3091050CF069CF089731F4A1CE8C3065 +:10290000910519F20F9759F22A960FB6F894DEBF87 +:102910000FBECDBFCF91DF911F910F91FF90EF9030 +:10292000DF90CF90BF90AF900895DF93CF93CDB756 +:10293000DEB72B970FB6F894DEBF0FBECDBF342F96 +:102940004F83252F588769877A878B87472F582F82 +:10295000FE01319686E0DF011D928A95E9F76B83CF +:1029600039832A834C835D83432F522F8D819E812F +:102970000E94D2172B960FB6F894DEBF0FBECDBFC4 +:10298000CF91DF9108950F931F930091620115C0BD +:1029900010E0F801EE0FFF1FE00FF11FEE0FFF1F19 +:1029A000ED59FE4F4081518162817381848195810F +:1029B0000E94D6100F5F1F4F0770809161010817AA +:1029C00039F71F910F91089540915B0150915C017F +:1029D00060915D0170915E0180915F019091600155 +:1029E0000E94D61008950F931F93CF93DF93809189 +:1029F000600182958F7009F06DC080915D01882320 +:102A000009F468C0609162010091610140915E012A +:102A100050915F0110915C0170915B01EA01C095DA +:102A2000D09555C04115510509F44FC01F3F49F4D9 +:102A300080E090E07F3F11F481E090E0882309F08E +:102A400044C0262F30E0F901EE0FFF1FE20FF31F05 +:102A5000DF01AA0FBB1FAD59BE4F11968C91119784 +:102A6000181799F58C91781781F5EE0FFF1FEB5928 +:102A7000FE4F8081882349F513968D919C91149780 +:102A80008417950718F0841B950B02C08C0F9D1FAF +:102A9000883C9105D0F4809160018F7080618093B3 +:102AA0006001F901EE0FFF1FE20FF31FEE0FFF1F92 +:102AB000E859FE4F80818F70806180838BE591E0C3 +:102AC0000E9463120E94C31405C06F5F6770601795 +:102AD00009F0A8CFDF91CF911F910F910895DF9258 +:102AE000EF92FF920F931F93DF93CF93CDB7DEB793 +:102AF0006B970FB6F894DEBF0FBECDBF8C01DC0123 +:102B00001296DC9012974C9111965C911197139646 +:102B1000ED90FC90149720915E0130915F016091DF +:102B20005C0170915B012115310509F4DBC16F3F38 +:102B300009F003C27F3F09F000C2D4C1E216F306D8 +:102B400040F0C701821B930B883C910508F0EEC052 +:102B500008C0209530952E0D3F1D283C310508F00A +:102B6000E5C080916001807F09F095C06F3F09F05A +:102B7000EAC17F3F09F0E7C115C0741799F4DD2061 +:102B800089F4809160018F708061809360010E9460 +:102B9000E4148BE591E00E94631280916001F801DA +:102BA0008583BCC1FD82EC825A834983DB82DE01CE +:102BB0001696FE01319685E001900D928150E1F765 +:102BC0006885DE011B96FE01369685E001900D9228 +:102BD0008150E1F72C853B858E859F85892B09F4F3 +:102BE00051C02F3F09F0B3C13F3F09F0B0C14AC007 +:102BF000FD82EC825A834983DB82DE011B96FE0153 +:102C0000319685E001900D928150E1F7FC847B853F +:102C10006D8580916201909161011FC0282F30E085 +:102C2000F901EE0FFF1FE20FF31FDF01AA0FBB1F19 +:102C3000AD59BE4F11968C911197F81651F48C91A5 +:102C4000781739F4EE0FFF1FEB59FE4F808168179C +:102C5000C9F42F5F3F4F822F87708917F9F68DC116 +:102C60009F7059F0442349F459C19F7031F0D80145 +:102C700015968C91807F09F451C1405E483008F46C +:102C80004DC148C1DD2009F449C1809160018160D6 +:102C90008093600143C16F3F09F05DC17F3F09F040 +:102CA0005AC114C0741791F4DD2081F48091600141 +:102CB000F8018583C8010E946312ABE5B1E0F80119 +:102CC00086E001900D928150E1F720C15A8349833B +:102CD00089819A810E94E610882309F41BC1DD20B6 +:102CE00009F418C130916001832F82958F7090E0B4 +:102CF00002979CF090915C0120915B01FE0170961F +:102D000086E0DF011D928A95E9F7998B288BFC8A72 +:102D1000EB8A3D8BCF010E946312ABE5B1E0F80175 +:102D200086E001900D928150E1F7EEC08091600144 +:102D3000807FA9F47E2DFD82EC825A834983DB8259 +:102D40006D2D8D810E94C7100BE511E0C8010E9416 +:102D5000631286E0F80111928A95E9F7C0C06F3FCF +:102D600009F0FDC07F3F09F0FAC014C0741791F458 +:102D7000DD2081F480916001D80115968C93C80103 +:102D80000E946312EBE5F1E086E0DF011D928A9577 +:102D9000E9F7BEC05A83498389819A810E94E6106F +:102DA000882309F4B7C0DD2009F4B4C03091600174 +:102DB000832F82958F7090E002979CF090915C0138 +:102DC00020915B01FE01769686E0DF011D928A95D7 +:102DD000E9F79F8B2E8BFA8EE98E3B8FCF010E94F5 +:102DE0006312ABE5B1E0F80186E001900D928150ED +:102DF000E1F78AC06F3F09F0B6C07F3F09F0B3C06A +:102E000071C0E216F30640F0C701821B930B883CA9 +:102E1000910508F053C008C0209530952E0D3F1D38 +:102E2000283C310508F04AC0DD2009F473C06F3F2B +:102E300009F09FC07F3F09F09CC029C0741739F585 +:102E40009091600190FD1AC0892F82958F70B1F02A +:102E5000F80195838F3031F08F5F8295807F9F706E +:102E6000982B9583C8010E946312ABE5B1E0F8018D +:102E700086E001900D928150E1F748C0ABE5B1E0EA +:102E8000F80186E001900D928150E1F741C05A832C +:102E9000498389819A810E94E610882349F0ABE535 +:102EA000B1E0F80186E001900D928150E1F72CC06D +:102EB000809160018160809360012CC07E2DFD8235 +:102EC000EC825A834983DB826D2D8D810E94C7106D +:102ED000EBE5F1E086E0DF011D928A95E9F70E94BB +:102EE000E4141CC0DD20B1F05A83498389819A81A2 +:102EF0000E94E610882371F0ABE5B1E0F80186E0AE +:102F000001900D928150E1F70E94F3140E94E414A5 +:102F100081E005C0C8010E946312FACF80E06B9681 +:102F20000FB6F894DEBF0FBECDBFCF91DF911F91DA +:102F30000F91FF90EF90DF90089580915D018823BD +:102F400009F458CFFBCD651709F02CCE16CE6130B1 +:102F500009F498CE4DCE651709F0B8CEA3CE65170B +:102F600009F018CF03CF80915D01882309F0BACF13 +:102F700048CF651709F08BCF61CF5A834983898188 +:102F80009A810E940C19482F892F82958F70282FC3 +:102F900030E0223031050CF463CE243031050CF0E2 +:102FA000B9CF63CE0F931F93DF93CF93CDB7DEB727 +:102FB0002C970FB6F894DEBF0FBECDBF4F83588756 +:102FC00069877A878B879C878E01095F1F4FC801AD +:102FD0000E946F158823D9F028853F818A859B85BB +:102FE000892B09F46BC02F3F49F480E090E03F3F0C +:102FF00011F481E090E0882309F060C04F8158858A +:1030000069857A858B859C850E94D61057C0DE0124 +:103010001196F80186E001900D928150E1F7F98157 +:10302000EA814C815D814115510509F447C0EF3FAC +:1030300009F04CC0FF3F09F049C040C0F983EA8362 +:103040005D834C83F901EE0FFF1FE20FF31FEE0FBC +:10305000FF1FED59FE4FDE01119686E00D900192A3 +:103060008150E1F7609361010E94C31427C0919FD2 +:10307000C00111248D599E4F0E946F15882309F4B9 +:1030800045C08091620190E0FC01EE0FFF1FE80F48 +:10309000F91FEE0FFF1FED59FE4F408151816281F4 +:1030A0007381848195810E94D6108091620190E0A5 +:1030B0000196877090708093620101C016E0909134 +:1030C000620180916101981791F620C080916101A1 +:1030D000282F30E02F5F3F4FB9016770707021508B +:1030E00030408091620190E06817790709F0A6CF1F +:1030F0000E9426111092610110926201EBE5F1E04D +:1031000086E0DF011D928A95E9F7D8CF2C960FB69D +:10311000F894DEBF0FBECDBFCF91DF911F910F910D +:103120000895CF92DF92EF92FF921F93CF93DF9398 +:10313000EC01009709F466C010E090EAC92E9FE008 +:10314000D92E81E0E82EF12CFE012196949194373E +:1031500048F4943008F044C0913079F0923009F08E +:1031600051C01BC0953709F437C0953750F1892FEE +:103170008458803708F046C037C0FE0121969491EC +:10318000892F805E883060F597708E2D01C0880F82 +:103190009A95EAF70E94D31A0FC0FE0121969491E6 +:1031A000892F805E883058F497708E2D01C0880F6B +:1031B0009A95EAF70E94D91A0E94F81A19C0892F25 +:1031C00015C0FE01249104C0C6010197F1F72150FA +:1031D0002223D1F721960CC0FE012196149108C03C +:1031E000892F0E948C1104C0892F8F770E9439117A +:1031F000212F04C0C6010197F1F72150222309F4C1 +:10320000A3CFF8CFDF91CF911F91FF90EF90DF9088 +:10321000CF90089508950895CF92DF92EF92FF9294 +:103220000F931F93CF93DF936C01E0909301F09085 +:1032300094010091950110919601809197019091D0 +:103240009801A0919901B0919A01E82AF92A0A2BD4 +:103250001B2BCFE1D0E0D801C7010C2E04C0B695DE +:10326000A795979587950A94D2F781709070892BCE +:1032700041F08C2FB6010E942B079C0181309105F3 +:1032800051F421978FEFCF3FD80729F780E0B6019F +:103290000E942B079C01822FDF91CF911F910F91EC +:1032A000FF90EF90DF90CF90089560939701709317 +:1032B00098018093990190939A010E9413110895A7 +:1032C0009B01AC01609197017091980180919901E7 +:1032D00090919A0162277327842795270E94551998 +:1032E00008959B01AC0160919701709198018091C4 +:1032F000990190919A0162237323842395230E945C +:10330000551908959B01AC01609197017091980146 +:103310008091990190919A01622B732B842B952BAC +:103320000E945519089521E030E040E050E004C0CB +:10333000220F331F441F551F8A95D2F780919701A2 +:1033400090919801A0919901B0919A01282739276D +:103350004A275B27CA01B9010E945519089521E047 +:1033600030E040E050E004C0220F331F441F551FDF +:103370008A95D2F720953095409550958091970188 +:1033800090919801A0919901B0919A012823392335 +:103390004A235B23CA01B9010E945519089521E00F +:1033A00030E040E050E004C0220F331F441F551F9F +:1033B0008A95D2F78091970190919801A0919901F7 +:1033C000B0919A01282B392B4A2B5B2BCA01B901EA +:1033D0000E945519089521E030E040E050E004C01B +:1033E000220F331F441F551F8A95D2F7CA01B90116 +:1033F0000E945519089560E070E080E090E00E941E +:1034000055190895609393017093940180939501E9 +:10341000909396010E94131108959B01AC01609155 +:10342000930170919401809195019091960162278A +:103430007327842795270E94021A08959B01AC01E7 +:103440006091930170919401809195019091960102 +:1034500062237323842395230E94021A08959B01FB +:10346000AC016091930170919401809195019091CC +:103470009601622B732B842B952B0E94021A0895C0 +:103480000E94021A0895382F809102018823E1F0EA +:1034900080910D018823C1F0832F869586958695AE +:1034A0008F3070F5E0910E01F0910F01E80FF11DE2 +:1034B000377081E090E002C0880F991F3A95E2F7DB +:1034C0002181282B21830895A0910E01B0910F0135 +:1034D000FD0120E08FEF9281931791F08F3F19F457 +:1034E000992309F4822F2F5F31962E30A1F78F3F59 +:1034F00039F0992787FD9095A80FB91F12963C9334 +:103500000895482F809102018823E9F080910D01F0 +:103510008823C9F0842F8695869586958F3020F56F +:10352000E0910E01F0910F01E80FF11D477081E06D +:1035300090E002C0880F991F4A95E2F7809521819B +:1035400082238183089520E030E0E0910E01F09124 +:103550000F01E20FF31F8281841709F412822F5F9B +:103560003F4F2E30310589F7089581E090E0E091DA +:103570000E01F0910F01E80FF91F108201968031C2 +:103580009105A9F708959091AB01982B9093AB0109 +:10359000089580959091AB0198239093AB01089585 +:1035A0001092AB0108959091AD01982B9093AD01CD +:1035B000089580959091AD0198239093AD01089561 +:1035C0001092AD0108958093AC0108951092AC0162 +:1035D0000895E0910E01F0910F0120E091E08181CA +:1035E00081112F5F9F5F31969031C9F7822F089527 +:1035F000E0910E01F0910F018091AB018083E09189 +:103600000E01F0910F0180819091AD01892B808393 +:103610009091AC01992369F0E0910E01F0910F01B6 +:103620008081892B80830E94E91A882311F00E94EF +:10363000E61A80910E0190910F010E94DD0F08950E +:103640009B01AC01AA27BB270097A105B10521F476 +:10365000DA01C90160E001C060E1292F3A2F4B2F48 +:103660005527211531054105510519F49C01AD017E +:1036700001C0685FDA01C90174E0B695A795979516 +:1036800087957A95D1F70097A105B10519F4DA016C +:10369000C90101C06C5F9C01AD01F2E056954795F0 +:1036A00037952795FA95D1F7211531054105510533 +:1036B00019F49C01AD0101C06E5F56954795379591 +:1036C0002795211531054105510509F06F5F862FBA +:1036D00008958091C501843009F11092AF0120E472 +:1036E00088E190E00FB6F894A895809360000FBE33 +:1036F0002093600083B7817F846083BF83B781603C +:1037000083BF7894889583B78E7F83BF88E10FB697 +:10371000F89480936000109260000FBE08950895A1 +:1037200008951F920F920FB60F9211248F939F93BB +:10373000AF93BF938091AF01882399F48091B0013A +:103740009091B101A091B201B091B3014196A11D38 +:10375000B11D8093B0019093B101A093B201B093D9 +:10376000B301BF91AF919F918F910F900FBE0F90BA +:103770001F9018950E9426110E94D00F0E946C087D +:1037800008951F930E948F1B0E9454050E94901B56 +:1037900010E0812F0E940405882311F081E004C00D +:1037A0001F5F1E30B1F780E01F91089582E084BD55 +:1037B00093E095BD9AEF97BD80936E0008958FB703 +:1037C000F8942091B0013091B1014091B201509133 +:1037D000B3018FBFC9010895EF92FF920F931F931A +:1037E000BC018FB7F894E090B001F090B101009166 +:1037F000B2011091B3018FBFA801970140705070C2 +:10380000CB01A0E0B0E0281739074A075B0720F09A +:103810009701261B370B05C09B01209530952E0D77 +:103820003F1DC9011F910F91FF90EF9008951F92C6 +:103830000F920FB60F9211248F939F93AF93BF9364 +:103840008091B0019091B101A091B201B091B3010A +:103850000196A11DB11D8093B0019093B101A09379 +:10386000B201B093B301BF91AF919F918F910F902F +:103870000FBE0F901F9018950E94B60CF89480E22E +:103880009EE420E931E0F9013197F1F70197D9F78A +:1038900087E090EBA7E0B0EB8093CE019093CF014F +:1038A000A093D001B093D1012CE088E190E00FB655 +:1038B000F894A895809360000FBE20936000FFCF1E +:1038C000EF92FF920F931F93CF93DF93082F10E097 +:1038D000812F0E940405C0E0D0E0E82EFF24C7013C +:1038E0000C2E02C0959587950A94E2F780FF09C0D7 +:1038F00080E06C2F712F0E940307081711F481E0FC +:1039000008C02196C630D10551F71F5F1E3001F760 +:1039100080E0DF91CF911F910F91FF90EF9008957C +:103920001F93182F8CE20E94601C882319F0812FAE +:103930000E94601C1F9108951F93CF93DF930E94F4 +:103940000A1E882311F40E94151E14E6C0E4DCE967 +:1039500005C00E945405CE010197F1F71150C8F738 +:1039600089E20E94901C882309F02FC18AE20E94FC +:10397000901C882311F00E94151E85E00E94901C67 +:10398000882311F00E943C1C0E94051E8093AE010A +:1039900087E00E94901C8823B9F18BE10E94901C63 +:1039A000882349F09091AE01892F8695809581708A +:1039B000880F9D7F26C08EE00E94901C882359F0BE +:1039C0009091AE01892F8695869580958170880F9C +:1039D000880F9B7F16C080E10E94901C9091AE01E1 +:1039E000882359F0892F86958695869580958170D4 +:1039F000880F880F880F977F04C0892F809581706A +:103A00009E7F982B9093AE018091AE010E94F51D90 +:103A10000E94FB1D8093BF0180EE0E94901C8823B2 +:103A200049F08091BF01982F909591708E7F892BDE +:103A30008093BF0189E30E94901C882359F09091E4 +:103A4000BF01892F869580958170880F9D7F982B67 +:103A50009093BF0182EE0E94901C882369F09091A0 +:103A6000BF01892F8695869580958170880F880F74 +:103A70009B7F982B9093BF0186EE0E94901C882319 +:103A800079F09091BF01892F8695869586958095CE +:103A90008170880F880F880F977F982B9093BF01B4 +:103AA00083EE0E94901C882369F09091BF01892FBA +:103AB00082958F70809581708295807F9F7E982BF4 +:103AC0009093BF0185E30E94901C882379F0909128 +:103AD000BF01892F82958695877080958170829528 +:103AE000880F807E9F7D982B9093BF0181E30E9479 +:103AF000901C882389F09091BF01892F829586952B +:103B000086958370809581708295880F880F807C60 +:103B10009F7B982B9093BF0181E10E94901C88238A +:103B200079F08091BF01982F991F9927991F21E063 +:103B300092279795992797958F77892B8093BF0127 +:103B40008091BF010E94E91D8091BF01881F8827D5 +:103B5000881F80930D0187E20E94901C182F8EE130 +:103B60000E94901C811112608FE10E94901C8111B3 +:103B7000146080E20E94901C8111186081E20E9412 +:103B8000901C8111106182E20E94901C81111062D0 +:103B900083E20E94901C8111106484E20E94901CB8 +:103BA00081111068112341F0812F0E94EF1D612FB8 +:103BB00070E080E090E007C00E94001E90E0A0E06E +:103BC000B0E0BC01CD010E94401ADF91CF911F915E +:103BD0000895682F84E090E00E9404240895682FDF +:103BE00083E090E00E9404240895682F82E090E032 +:103BF0000E940424089584E090E00E94F623089532 +:103C000083E090E00E94F623089582E090E00E9415 +:103C1000F623089580E090E00E94FE2320E08D5E70 +:103C20009E4F09F421E0822F089580E090E06DEE30 +:103C30007EEF0E94122482E090E060E00E94042463 +:103C400083E090E060E00E94042484E090E060E083 +:103C50000E94042485E090E060E00E94042408951E +:103C60008091BA0180FF0BC09091120185E0989F6E +:103C7000C0011124959587959595879530C081FF52 +:103C800009C09091120185E0989FC001112495957B +:103C9000879525C082FF03C0909112010DC08091CD +:103CA000B901882319F485E090E00895609113012B +:103CB00090911201861728F085E0989FC001112489 +:103CC0000EC0899F90011124C901880F991F880F88 +:103CD000991F820F931F70E00E94CF23CB01803881 +:103CE000910510F08FE70895009709F481E0089599 +:103CF0008091BA0180FF05C0809114018695869558 +:103D000018C081FF04C080911401869512C082FF03 +:103D100003C0809114010DC02091B901222319F430 +:103D200081E090E0089560911501809114012617BB +:103D300010F090E007C0289FC001112470E00E949D +:103D4000CF23CB018038910510F08FE708950097BD +:103D500009F481E00895803F21F40E94301E81958E +:103D600004C0813F29F40E94301E8093B60108955B +:103D7000823F21F40E94301E819504C0833F29F4C4 +:103D80000E94301E8093B5010895893F19F40E9466 +:103D9000781E05C08A3F31F40E94781E8195809379 +:103DA000B70108958B3F21F40E94781E819504C0CD +:103DB0008C3F29F40E94781E8093B8010895843FB7 +:103DC00021F48091B401816017C0853F21F4809176 +:103DD000B401826011C0863F21F48091B4018460F7 +:103DE0000BC0873F21F48091B401886005C0883FF3 +:103DF00031F48091B40180618093B40108958D3FC6 +:103E000021F48091BA01816005C08E3F31F4809128 +:103E1000BA0182608093BA0108958F3F29F480919E +:103E2000BA0184608093BA010895803F29F480919B +:103E3000B60187FF6FC007C0813F41F48091B60192 +:103E400018160CF067C01092B60164C0823F29F4C6 +:103E50008091B50187FF5EC007C0833F41F4809128 +:103E6000B50118160CF056C01092B50153C0893F29 +:103E700029F48091B70118163CF04CC08A3F39F400 +:103E80008091B70187FF46C01092B70143C08B3FB6 +:103E900029F48091B80187FF3DC006C08C3F39F4FA +:103EA0008091B8011816B4F51092B80133C0843F60 +:103EB00021F48091B4018E7F05C0853F31F480915B +:103EC000B4018D7F8093B40125C0863F21F4809199 +:103ED000B4018B7FF7CF873F21F48091B401877FB6 +:103EE000F1CF883F21F48091B4018F7EEBCF8D3FDD +:103EF00021F48091BA018E7F0BC08E3F21F4809116 +:103F0000BA018D7F05C08F3F29F48091BA018B7F64 +:103F10008093BA018091B501882371F48091B60134 +:103F2000882351F48091B701882331F48091B8013E +:103F3000882311F41092B9010895E4EBF1E085E0D3 +:103F4000DF011D928A95E9F71092B9011092BA012A +:103F5000089584EB91E00E94E80F0E94DF1B90938C +:103F6000BC018093BB0108951F938091BB01909188 +:103F7000BC010E94EC1BAC012091B901222321F06D +:103F80008091110190E006C0909110018AE0989F05 +:103F9000C00111244817590708F485C09091B50154 +:103FA000992369F48091B601882349F48091B7017F +:103FB000882329F48091B801882309F474C02F3F25 +:103FC00019F02F5F2093B901191624F40E94301EB6 +:103FD0008093B5018091B50187FF05C00E94301E16 +:103FE00081958093B5018091B601181624F40E9442 +:103FF000301E8093B6018091B60187FF05C00E94F4 +:10400000301E81958093B6016091B501662339F128 +:104010001091B601112319F1772767FD7095872F4D +:10402000972F0E94E02223E333E343E35FE30E9400 +:1040300044230E94AD226093B501612F772767FD6D +:104040007095872F972F0E94E02223E333E343E309 +:104050005FE30E9444230E94AD226093B6018091E9 +:10406000B701181624F40E94781E8093B70180913E +:10407000B70187FF05C00E94781E81958093B70124 +:104080008091B801181624F40E94781E8093B8011C +:104090008091B80187FF05C00E94781E81958093AA +:1040A000B8010E94A91F1F91089580E0089580E043 +:1040B0000895833099F1843030F4813069F0823092 +:1040C00009F06FC01AC0853009F44AC08530B8F1D4 +:1040D000863009F066C055C020911001822F90E013 +:1040E000860F911D8F3F910520F4260F209310011C +:1040F00008958FEF80931001089520911101822F70 +:1041000090E0860F911D8F3F910520F4260F20939C +:10411000110108958FEF80931101089520911201EC +:10412000822F90E0860F911D8F3F910520F4260F7E +:104130002093120108958FEF80931201089520912A +:104140001301822F90E0860F911D8F3F910520F47F +:10415000260F2093130108958FEF80931301089584 +:1041600020911401822F90E0860F911D8F3F9105C1 +:1041700020F4260F2093140108958FEF80931401EB +:10418000089520911501822F90E0860F911D8F3F99 +:10419000910520F4260F2093150108958FEF809349 +:1041A00015010895833031F1843030F4813061F0AD +:1041B000823009F04AC013C0853091F1853028F172 +:1041C000863009F042C037C080911001681720F492 +:1041D000861B80931001089510921001089580911C +:1041E0001101681720F4861B809311010895109225 +:1041F0001101089580911201681720F4861B8093A5 +:104200001201089510921201089580911301681708 +:1042100020F4861B809313010895109213010895D2 +:1042200080911401681720F4861B8093140108956F +:1042300010921401089580911501681720F4861BCF +:1042400080931501089510921501089521E030E042 +:1042500040E050E004C0220F331F441F551F8A95D1 +:10426000D2F7CA01B9010E94401A0E94261108958E +:104270008B3109F463C08C3100F58E3009F468C0CD +:104280008F3068F4873009F453C0883018F48630D2 +:1042900089F537C0883081F18B3061F58DC081316F +:1042A00009F478C0823118F4803121F55DC086317F +:1042B00009F482C08931F1F47FC0853309F473C0F9 +:1042C000863358F4873209F46EC0883218F48E3180 +:1042D00088F06BC0893271F466C0833430F48A335D +:1042E00008F065C0883331F467C0833409F45BC0DB +:1042F000883481F080E008950E94051E0E94FB1D15 +:1043000059C08091AE01807F8093AE0181E080939F +:10431000BD0108950E94261180E197E220E931E075 +:10432000F9013197F1F70197D9F70E943C1C42C07F +:104330008091AE0180FF2AC0807F29C08091AE01AC +:10434000982F969590959170292F220F8D7F19C0E7 +:104350008091AE01982F9695969590959170292F02 +:10436000220F220F8B7F0DC08091AE01982F969562 +:104370009695969590959170292F220F220F220FD6 +:10438000877F822B8093AE019923B1F08160809367 +:10439000AE0110C00E94261180910D0191E0892785 +:1043A00080930D0107C080E003C08D5101C0895387 +:1043B0000E94262181E0089581E008951F93182F1F +:1043C0008091BD01813089F0813020F0823009F088 +:1043D000BFC03BC0E0910E01F0910F01E081E131DF +:1043E00069F0E23209F0B6C009C0E0910E01F09127 +:1043F0000F01E081E13111F0E23249F4812F0E9496 +:1044000055208823F9F4812F0E943821A4C0812FE0 +:104410000E9457208823B1F4143161F0153128F43B +:104420001B3081F0103141F40AC0193219F01833F1 +:1044300019F408C01092BD0180E090E08CC082E0C9 +:104440008093BD0181E090E086C0193201F11A32FB +:1044500070F41431E1F0153120F4173009F064C024 +:1044600065C0812F8E51863008F05EC01BC01E349F +:1044700009F455C01F3420F41B3409F055C049C05D +:10448000113509F442C0123509F04EC03AC080918E +:10449000BE01882319F01092BE0146C081E08093CE +:1044A000BD0159C01232F9F0133260F41F3199F096 +:1044B000103218F41E3109F510C0103281F011329B +:1044C000E1F40FC0143299F0143278F0153289F00B +:1044D000163299F410C082E011C081E00FC083E071 +:1044E0000DC084E00BC085E009C086E007C087E00E +:1044F00005C088E003C089E001C080E08093BE0170 +:1045000013C08091BE0161E007C08091BE0161E0EF +:1045100009C08091BE016AE00E94592005C08091C7 +:10452000BE016AE00E94D22081E015C09AE090931B +:10453000100184E18093110183E080931201909334 +:10454000130188E08093140188E280931501ECCF79 +:104550001092BD0180E01F91089504D06894B111BC +:104560008DC0089570D088F09F5790F0B92F99278B +:10457000B751A0F0D1F0660F771F881F991F1AF06E +:10458000BA95C9F712C0B13081F077D0B1E0089583 +:1045900074C0672F782F8827B85F39F0B93FCCF304 +:1045A000869577956795B395D9F73EF49095809564 +:1045B000709561957F4F8F4F9F4F0895E89409C084 +:1045C00097FB3EF490958095709561957F4F8F4F46 +:1045D0009F4F9923A9F0F92F96E9BB279395F6955C +:1045E000879577956795B795F111F8CFFAF4BB0FDA +:1045F00011F460FF1BC06F5F7F4F8F4F9F4F16C03E +:10460000882311F096E911C0772321F09EE8872FC7 +:10461000762F05C0662371F096E8862F70E060E083 +:104620002AF09A95660F771F881FDAF7880F9695FC +:10463000879597F9089557FD9058440F551F59F0E5 +:104640005F3F71F04795880F97FB991F61F09F3F7F +:1046500079F087950895121613061406551FF2CFA8 +:104660004695F1DF08C0161617061806991FF1CFF8 +:1046700086957105610508940895E894BB2766271F +:104680007727CB0197F908950BD078C069D028F02F +:104690006ED018F0952309F05AC05FC01124EECFF8 +:1046A000CADFA0F3959FD1F3950F50E0551F629F8D +:1046B000F001729FBB27F00DB11D639FAA27F00D7B +:1046C000B11DAA1F649F6627B00DA11D661F829FA2 +:1046D0002227B00DA11D621F739FB00DA11D621F87 +:1046E000839FA00D611D221F749F3327A00D611DA4 +:1046F000231F849F600D211D822F762F6A2F112486 +:104700009F5750408AF0E1F088234AF0EE0FFF1FD8 +:10471000BB1F661F771F881F91505040A9F79E3F0F +:10472000510570F014C0AACF5F3FECF3983EDCF364 +:10473000869577956795B795F795E7959F5FC1F74C +:10474000FE2B880F911D9695879597F9089597F9F7 +:104750009F6780E870E060E008959FEF80EC089527 +:1047600000240A9416161706180609060895002450 +:104770000A9412161306140605060895092E0394CA +:10478000000C11F4882352F0BB0F40F4BF2B11F43E +:1047900060FF04C06F5F7F4F8F4F9F4F089597FB5F +:1047A000092E07260AD077FD04D00CD006D00020B1 +:1047B0001AF4709561957F4F0895F6F7909581955D +:1047C0009F4F0895AA1BBB1B51E107C0AA1FBB1F27 +:1047D000A617B70710F0A61BB70B881F991F5A958D +:1047E000A9F780959095BC01CD010895F999FECF68 +:1047F00092BD81BDF89A992780B50895A8E1B0E0EF +:1048000042E050E00C941924262FF999FECF1FBAEC +:1048100092BD81BD20BD0FB6F894FA9AF99A0FBEE9 +:10482000019608950E940424272F0C940524DC018E +:10483000CB01FC01F999FECF06C0F2BDE1BDF89AAB +:10484000319600B40D9241505040B8F70895F89455 +:02485000FFCF98 +:1048520020020172080709E108AB087508019B01F3 +:064862000A14030A0828F5 +:00000001FF diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png Binary files differnew file mode 100644 index 0000000000..5c4c7c7c1b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png Binary files differnew file mode 100644 index 0000000000..dbc51b79b3 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c b/keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c new file mode 100644 index 0000000000..537b15eeac --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c @@ -0,0 +1,282 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define QWERTY 1 // qwerty keys +#define FKEYS 2 // F keys + macros + +#define MACRO_PUBLIC 10 +#define MACRO_PRIVATE 11 + +#define MACRO_STATIC 12 +#define MACRO_CONST 13 + +#define MACRO_VOID 14 +#define MACRO_VAR 15 +#define MACRO_STRING 16 + +#define MACRO_INT 17 +#define MACRO_FLOAT 18 +#define MACRO_BOOL 19 + +#define MACRO_RETURN 20 +#define MACRO_NULL 21 +#define MACRO_BREAK 22 + +#define MACRO_TODO 23 +#define MACRO_NEW 24 +#define MACRO_PARENTHESE 25 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ( | 1 | 2 | 3 | 4 | 5 | " | | Save | 6 | 7 | 8 | 9 | 0 | [ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ) | Q | W | E | R | T |Bkspa | | Del | Y | U | I | O | P | ] | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | { | A | S | D | F | G |------| |------| H | J | K | L | _ | Redo | + * |--------+------+------+------+------+------| / | | ; |------+------+------+------+------+--------| + * | } |Z~Alt | X | C | V | B | | | | N | M | ' | ! | ? | Undo | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Tab~CL| < | > | | | & | | = | + | - | * | L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |. ~L1 | , ~L2| |Home~L1| End~L2| + * ,------|------|------| |------+--------+------. + * | | | Copy | | UP | | | + * | Enter| Space|------| |------| Space |Enter | + * | ~LSFT| ~WIN | Past | | DOWN | ~WIN | ~LSFT| + * `--------------------' `----------------------' + */ +// 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_LPRN, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_QUOTE), + KC_RPRN, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPACE, + KC_LCBR, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_RCBR, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_SLASH, + CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, + LT(1,KC_DOT), LT(2,KC_COMM), + LCTL(KC_C), + SFT_T(KC_ENTER),GUI_T(KC_SPACE),LCTL(KC_V), + // right hand + LCTL(KC_S) , KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRACKET, + KC_DELETE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRACKET, + KC_H, KC_J, KC_K, KC_L, KC_UNDS,LCTL(KC_Y), + KC_SCOLON,KC_N, KC_M, KC_QUOTE ,KC_EXLM , LSFT(KC_SLASH), LCTL(KC_Z), + KC_EQUAL,KC_PLUS , KC_MINUS,KC_ASTR , TG(1), + LT(2,KC_HOME), LT(1,KC_END), + KC_UP, + KC_DOWN,GUI_T(KC_SPACE), SFT_T(KC_ENTER) + ), +/* Keymap 1: QWERTY layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------| Tab | | Esc |------+------+------+------+------+--------| + * | LSHFT | Z | X | C | V | B | | | | N | M | , | . | / | \ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | CTRL | WIN | ALT |ALT GR| Esc | | PgUp | PgDw | Ins | PtSc | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | Cut | | | | + * ,------|------|------| |------+--------+------. + * | | | | | | | | + * | | |------| |------| Left | Right| + * | | | | | | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[QWERTY] = KEYMAP( // layer 2 : QWERTY + // left hand + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, + KC_ESCAPE, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TAB, + KC_LCTRL, KC_LGUI,KC_LALT, KC_RALT, KC_ESCAPE, + KC_TRNS, LCTL(KC_X), + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_EQUAL , KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS, + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, + KC_ESCAPE,KC_N, KC_M, KC_TRNS,KC_DOT , KC_SLASH, KC_NONUS_BSLASH, + KC_PGUP , KC_PGDOWN,KC_INSERT ,KC_PSCREEN, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS,KC_LEFT, KC_RIGHT + ), +/* Keymap 2: F keys + macros + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | Calc | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | |Public|Static|string|int |return| | | |//TODO| | | | | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |Privat|Const |var |float |null |------| |------|new | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | |void |bool |break;| | | |(); | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | Alt | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | Cut | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// FKEYS + MACROS +[FKEYS] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,M(MACRO_PUBLIC),M(MACRO_STATIC), M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS, + KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL), + KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_TRNS, + KC_TRNS,KC_LALT,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_CALCULATOR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, M(MACRO_TODO), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + M(MACRO_NEW), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(MACRO_PARENTHESE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(QWERTY) // FN1 - Momentary Layer 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 MACRO_PUBLIC: + if (record->event.pressed) { + return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END); + } + break; + case MACRO_PRIVATE: + if (record->event.pressed) { + return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END); + } + break; + case MACRO_STATIC: + if (record->event.pressed) { + return MACRO( T(S), T(T), T(A), T(T), T(I), T(C), T(SPACE), END); + } + break; + case MACRO_CONST: + if (record->event.pressed) { + return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END); + } + break; + case MACRO_VOID: + if (record->event.pressed) { + return MACRO( T(V), T(O), T(I), T(D), T(SPACE), END); + } + break; + case MACRO_VAR: + if (record->event.pressed) { + return MACRO( T(V), T(A), T(R), T(SPACE), END); + } + break; + case MACRO_STRING: + if (record->event.pressed) { + return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END); + } + break; + case MACRO_BOOL: + if (record->event.pressed) { + return MACRO( T(B), T(O), T(O), T(L), T(SPACE), END); + } + break; + case MACRO_INT: + if (record->event.pressed) { + return MACRO( T(I), T(N), T(T), T(SPACE), END); + } + break; + case MACRO_FLOAT: + if (record->event.pressed) { + return MACRO( T(F), T(L), T(O), T(A),T(T),T(SPACE), END); + } + break; + case MACRO_RETURN: + if (record->event.pressed) { + return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), END); + } + break; + case MACRO_NULL: + if (record->event.pressed) { + return MACRO( T(N), T(U), T(L), T(L), END); + } + case MACRO_BREAK: + if (record->event.pressed) { + return MACRO( T(B), T(R), T(E), T(A), T(K), T(SCOLON), END); + } + break; + case MACRO_TODO: + if (record->event.pressed) { + return MACRO( T(SLASH), T(SLASH), D(LSHIFT) ,T(T), T(O), T(D), T(O),U(LSHIFT), T(SPACE),END); + } + break; + case MACRO_NEW: + if (record->event.pressed) { + return MACRO( T(N), T(E), T(W), T(SPACE), END); + } + break; + case MACRO_PARENTHESE: + if (record->event.pressed) { + return MACRO( D(LSHIFT),T(LPRN), T(RPRN),U(LSHIFT), T(SCOLON), END); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/readme.md b/keyboard/ergodox_ez/keymaps/csharp_dev/readme.md new file mode 100644 index 0000000000..3ceb77ecaf --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/csharp_dev/readme.md @@ -0,0 +1,46 @@ +# ErgoDox EZ C# Developer configuration + +## Changelog + +* Feb 12, 2016 (V1): + * First version commit + +## About +This layout was conceived in an attempt to optimise keyboard layout for developers (C# more specifically, but it can work with most of other languages), and limit the keys required to perform the most frequent actions. + +I came to the realization that my main tool as a developer, the qwerty keyboard was something that did not evolved at its core in almost 150 years. +There are a lot of reasons to this, and it would be a massive entreprise to change a standard so strongly anchored, but I wanted to give it a try and see how would look an input device dedicated to developers, more specifically a C# developer in my case. +The biggest flaw in standard QWERTY keyboards was that I always needed to perform key combination to access commonly used characters or actions. Think about it a minute, how many times a day do you press a modifier key such as Ctrl or Shift, it's insane and could be so easily optimized to require only one key press. + +Then I came across the ErgoDox EZ project, that allowed a full customization of its firmware, and a unique 2 parts design. + +![CSharpDev](csharp_dev_legend.png) + +## Layout design principles +* No key combination required for the most common input characters ( (),[],{},<> ... ) +* No key combination required for the most common actions (copy/paste/undo/save) +* Regroup characters by usage ( + - * = ...) +* Easy access to the most commonly used characters: ; / " . , +* Preregistered macro for the most common C# langage instructions: public / private / string / int / float ... + +## Why is it specific to C Sharp +I defined the characters priority based on their usage in C# language, most of this characters are also used in other coding languages but it may require some tweaking. +For example there is no direct access to ~ or $ keys which can be very common in some languages. +Note it is also specific to Windows environement as the shortcut used in action keys would not work on Mac Os + +## In usage +It was relatively easy to get used to the layout, but it's hard for me to define how easy it was as I was getting used to a blank Ergodox keyboard at the same time. +Still it's extremely satisfying to Save your file with just one easily accessible key or to have one big key to end your code line ( ; ) + +## Improvements +This layout was shared after a bunch of iterations and only once I was happy with it. +Still there are many way to improve or iterate on this: +* Make it language agnostic +* Check and compile language's keyboard's heatmaps to statistically define keys priority (e.g. https://dzone.com/articles/most-pressed-keys-various ) +* QWERTY is still not the most efficient typing layout, I would like to create a Dvorak based similar layout in a near futur +* Layout 1 is mainly here for safety, most of its unique keys could be transfered to Layout 2 and it could then be removed + +## Issues +One of the issues encountered while creating this layout was that I did not find a way to have a key to send a modifier on hold, and a key combination while pressed (e.g. I can't set a Key to do Save (Ctrl + S) when pressed and Shift modifier when hold ) + + diff --git a/keyboard/ergodox_ez/keymaps/default/default.hex b/keyboard/ergodox_ez/keymaps/default/default.hex index eedabc2db5..14f5b7c798 100644 --- a/keyboard/ergodox_ez/keymaps/default/default.hex +++ b/keyboard/ergodox_ez/keymaps/default/default.hex @@ -1,17 +1,17 @@ -:100000000C9403070C9447070C9447070C9447077C
-:100010000C9447070C9447070C9447070C94470728
-:100020000C9447070C9447070C945E120C94301301
-:100030000C9447070C9447070C9447070C94470708
-:100040000C9447070C94082C0C9447070C94470712
-:100050000C9447070C940F220C9447070C94470705
-:100060000C9447070C9447070C9447070C944707D8
-:100070000C9447070C9447070C9447070C944707C8
-:100080000C9447070C9447070C9447070C944707B8
-:100090000C9447070C9447070C9447070C944707A8
-:1000A0000C9447070C9447070C9447079513B71314
-:1000B000A214B713A214F9131C14A21471148414FB
-:1000C000D217D2170018001843187F18801A801A08
-:1000D0009718801A8E198E195A1A801A801A6E1A59
+:100000000C9465020C94A9020C94A9020C94A90208
+:100010000C94A9020C94A9020C94A9020C94A902B4
+:100020000C94A9020C94A9020C94C50B0C94970C87
+:100030000C94A9020C94A9020C94A9020C94A90294
+:100040000C94A9020C9422210C94A9020C94A902EC
+:100050000C94A9020C94C41A0C94A9020C94A90241
+:100060000C94A9020C94A9020C94A9020C94A90264
+:100070000C94A9020C94A9020C94A9020C94A90254
+:100080000C94A9020C94A9020C94A9020C94A90244
+:100090000C94A9020C94A9020C94A9020C94A90234
+:1000A0000C94A9020C94A9020C94A902FC0C1E0D3C
+:1000B000090E1E0D090E600D830D090ED80DEB0DF6
+:1000C000D810D81006110611481184118413841316
+:1000D0009C118413931293125E138413841372136E
:1000E0000000F0A12E004C002A00E1003581000044
:1000F0001E00140004001D7134004D001F001A0082
:1001000016001B00E1042A0020000800070006007A
@@ -22,7 +22,7 @@ :10015000240018000D00100052004B0025000C0078
:100160000E00360051002800260012000F00370054
:100170002F002B00270013003382387130004E000F
-:100180002D0031003400E500C10000000100010035
+:100180002D0031003478E500C100000001000100BD
:1001900001000100010000003A001E0220022202BC
:1001A000010001003B001F022102230201000100A7
:1001B0003C002F0226022F00010001003D0030020A
@@ -43,1430 +43,1080 @@ :1002A0000100010001000100A9000100010001009E
:1002B0000100AC00AA00B600010001000100AB0083
:1002C000A80001000100010001000100010001007F
-:1002D00001000100AE000100010000000A0025300D
-:1002E000313662003A200025303258000A722F63FE
-:1002F0002030313233343536373839414243444582
-:10030000460A000A002530325800626F756E636538
-:10031000213A20006C6566742073696465206174FD
-:100320007461636865640A006C656674207369644F
-:1003300065206E6F7420726573706F6E64696E678E
-:100340000A00747279696E6720746F207265736534
-:1003500074206D637032333031380A000A444542EC
-:1003600055473A20656E61626C65642E0A005B73C6
-:100370005D004B6579626F617264207374617274A1
-:100380002E0A005B575D005B535D005B525D005BB6
-:10039000445D005B435D0016034500720067006F1B
-:1003A0000044006F007800200045005A000000164D
-:1003B000034500720067006F0044006F0078002062
-:1003C0000045005A0000000403090409028D0005DD
-:1003D0000100A0FA09040000010301010009211134
-:1003E000010001223F000705810308000A090401FA
-:1003F000000103010200092111010001224D000743
-:1004000005820308000A0904020001030000000934
-:1004100021110100012236000705830308000A09A3
-:100420000403000203000000092111010001222041
-:1004300000070584032000010705040320000109CB
-:100440000404000103000000092111010001223908
-:1004500000070585031000011201100100000008CB
-:10046000EDFE071301000102000105010906A101CB
-:10047000050719E029E71500250195087501810296
-:100480000508190129059505750191029501750366
-:100490009101050719002977150025019578750147
-:1004A0008102C00631FF0974A1010975150025FFFD
-:1004B0009520750881020976150025FF952075089D
-:1004C0009102C005010980A101850216010026B72D
-:1004D000001A01002AB700751095018100C0050CB3
-:1004E0000901A1018503160100269C021A01002AB8
-:1004F0009C02751095018100C005010902A1010946
-:1005000001A10005091901290515002501950575A9
-:100510000181029501750381010501093009311539
-:1005200081257F95027508810609381581257F95FB
-:100530000175088106050C0A38021581257F950191
-:1005400075088106C0C005010906A101050719E06B
-:1005500029E71500250195087501810295017508A7
-:10056000810105081901290595057501910295017B
-:10057000750391010507190029FF150025FF950650
-:1005800075088100C00A002530325820006B65795B
-:10059000626F6172645F7265706F72743A20000AF4
-:1005A0000025303258006B6579626F6172645F7349
-:1005B00065745F6C65643A200064656C5F6B657997
-:1005C0005F6269743A2063616E27742064656C3AD7
-:1005D00020253032580A006164645F6B65795F6280
-:1005E00069743A2063616E2774206164643A20253F
-:1005F0003032580A00646F6E652E0A00626F6F67B2
-:100600006D61676963207363616E3A202E2E2E2020
-:1006100000290A002575002F002575005D2800259A
-:10062000640020002564002000256400200025646B
-:10063000007C0025303258006D6F7573656B6579ED
-:10064000205B62746E7C782079207620685D287249
-:1006500065702F61636C293A205B006D6B5F776872
-:1006600065656C5F74696D655F746F5F6D6178203F
-:100670003D2025640A006D6B5F776865656C5F6D72
-:1006800061785F7370656564203D2025640A006DA4
-:100690006B5F74696D655F746F5F6D6178203D207D
-:1006A00025640A006D6B5F6D61785F7370656564CA
-:1006B000203D2025640A006D6B5F696E746572765B
-:1006C000616C203D2025640A006D6B5F64656C6180
-:1006D00079203D2025640A006D6B5F776865656C45
-:1006E0005F74696D655F746F5F6D6178203D202573
-:1006F000640A006D6B5F776865656C5F6D61785F3C
-:100700007370656564203D2025640A006D6B5F741D
-:10071000696D655F746F5F6D6178203D2025640AA7
-:10072000006D6B5F6D61785F7370656564203D205F
-:1007300025640A006D6B5F696E74657276616C206A
-:100740003D2025640A006D6B5F64656C6179203D16
-:100750002025640A000A00257500363A207768656E
-:10076000656C5F74696D655F746F5F6D61783A2069
-:10077000000A00257500353A20776865656C5F6D65
-:1007800061785F73706565643A20000A0025750022
-:10079000343A2074696D655F746F5F6D61783A20DB
-:1007A000000A00257500333A206D61785F7370652B
-:1007B00065643A20000A00257500323A20696E749B
-:1007C000657276616C286D73293A20000A002575E0
-:1007D00000313A2064656C6179282A31306D7329C3
-:1007E0003A20000A092D2056616C756573202D0A88
-:1007F000004D3E004D25643E20003F00736574208F
-:1008000064656661756C740A00433E200077686514
-:1008100072652064656C74613A20637572736F72DF
-:100820003D25642C20776865656C3D25640A536519
-:100830006520687474703A2F2F656E2E77696B6926
-:1008400070656469612E6F72672F77696B692F4DD0
-:100850006F7573655F6B6579730A000A092D204D0A
-:100860006F7573656B6579202D0A4553432F713A77
-:1008700009717569740A313A0964656C6179282ACD
-:1008800031306D73290A323A09696E746572766186
-:100890006C286D73290A333A096D61785F7370654E
-:1008A00065640A343A0974696D655F746F5F6D61E0
-:1008B000780A353A09776865656C5F6D61785F73B2
-:1008C000706565640A363A09776865656C5F7469B6
-:1008D0006D655F746F5F6D61780A0A703A097072B6
-:1008E000696E742076616C7565730A643A09736584
-:1008F000742064656661756C74730A75703A092BAF
-:10090000310A646F776E3A092D310A706775703A53
-:10091000092B31300A7067646F776E3A092D3130D8
-:100920000A0A7370656564203D2064656C746120FB
-:100930002A206D61785F7370656564202A202872B3
-:100940006570656174202F2074696D655F746F5FD9
-:100950006D6178290A003F004D3E2000433E200093
-:100960004C25640A000A092D20436F6E736F6C6575
-:10097000202D0A4553432F713A09717569740A6D28
-:100980003A096D6F7573656B65790A000A092D2048
-:100990004D61676963202D0A643A09646562756771
-:1009A0000A783A096465627567206D6174726978C6
-:1009B0000A6B3A096465627567206B6579626F61DD
-:1009C00072640A6D3A096465627567206D6F7573AC
-:1009D000650A763A0976657273696F6E0A733A0929
-:1009E0007374617475730A633A09636F6E736F6C25
-:1009F00065206D6F64650A302D343A096C61796544
-:100A000072302D34284631302D4634290A50617514
-:100A1000733A09626F6F746C6F616465720A653A4C
-:100A200009656570726F6D0A6E3A094E4B524F0A36
-:100A30007A3A09736C656570204C4544207465737F
-:100A4000740A000A002575002E6E6B726F3A200042
-:100A50000A002575002E737761705F6261636B73A6
-:100A60006C6173685F6261636B73706163653A2088
-:100A7000000A002575002E737761705F67726176DA
-:100A8000655F6573633A20000A002575002E6E6F5E
-:100A90005F6775693A20000A002575002E7377613B
-:100AA000705F72616C745F726775693A20000A004A
-:100AB0002575002E737761705F6C616C745F6C6775
-:100AC00075693A20000A002575002E636170736C09
-:100AD0006F636B5F746F5F636F6E74726F6C3A20DD
-:100AE000000A002575002E737761705F636F6E7466
-:100AF000726F6C5F636170736C6F636B3A20000A96
-:100B00000025303258006B65796D61705F636F6EE0
-:100B10006669672E7261773A20000A002575002EFB
-:100B20006D6F7573653A20000A002575002E6B65A0
-:100B300079626F6172643A20000A002575002E6D9B
-:100B400061747269783A20000A002575002E656E7E
-:100B500061626C653A20000A0025303258006465F5
-:100B60006275675F636F6E6669672E7261773A20A0
-:100B7000000A0025750064656661756C745F6C61C0
-:100B80007965723A20003F004E4B524F3A206F6613
-:100B9000660A004E4B524F3A206F6E0A0074696D20
-:100BA00065725F636F756E743A202530346C580A35
-:100BB000006B6579626F6172645F6E6B726F3A2071
-:100BC00025580A006B6579626F6172645F69646CB5
-:100BD000653A2025580A006B6579626F6172645F1F
-:100BE00070726F746F636F6C3A2025580A00686FDB
-:100BF00073745F6B6579626F6172645F6C65647357
-:100C000028293A2025580A000A092D2053746174B6
-:100C10007573202D0A004743433A20342E382E3274
-:100C2000204156522D4C4942433A20312E382E3025
-:100C3000204156525F415243483A20617672350A4C
-:100C4000004F5054494F4E533A204C554641204294
-:100C50004F4F544D41474943204D4F5553454B4508
-:100C6000592045585452414B455920434F4E534FFC
-:100C70004C4520434F4D4D414E44204E4B524F204A
-:100C80003531320A004255494C443A2035653337F4
-:100C90003663622D6469727479202832323A3239AF
-:100CA0003A3538204A616E203132203230313629CF
-:100CB0000A005649443A2030784645454428457252
-:100CC000676F446F7820455A29205049443A2030B4
-:100CD0007831333037284572676F446F7820455A32
-:100CE00029205645523A203078303030310A0044BD
-:100CF0004553433A20742E6D2E6B2E206B6579621E
-:100D00006F617264206669726D7761726520666FCB
-:100D100072204572676F646F780A000A092D2056A9
-:100D2000657273696F6E202D0A000A6D6F757365A9
-:100D30003A206F66660A000A6D6F7573653A206F18
-:100D40006E0A000A6B6579626F6172643A206F66A1
-:100D5000660A000A6B6579626F6172643A206F6E91
-:100D60000A000A6D61747269783A206F66660A003B
-:100D70000A6D61747269783A206F6E0A000A6465C0
-:100D80006275673A206F6E0A000A64656275673A99
-:100D9000206F66660A000A0A626F6F746C6F616486
-:100DA00065722E2E2E2000433E20006565636F6E17
-:100DB0006669673A0A00536C656570204C454420AB
-:100DC000746573740A000000000000000000000059
-:100DD00000010204060A0F17202C3A4A5D71879D14
-:100DE000B3C7DAE9F5FCFFFCF5E9DAC7B39D877113
-:100DF0005D4A3A2C20170F0A060402010000000089
-:100E000000000000000011241FBECFEFDAE0DEBFBB
-:100E1000CDBF04B603FE24C08091F9019091FA0180
-:100E2000A091FB01B091FC018730904BA740B04BE3
-:100E3000B9F41092F9011092FA011092FB0110928C
-:100E4000FC0114BE84B7877F84BF88E10FB6F89495
-:100E500080936000109260000FBEE0E0FFE3099510
-:100E600011E0A0E0B1E0ECEAFBE502C005900D92D4
-:100E7000AA33B107D9F711E0AAE3B1E001C01D928E
-:100E8000A93FB107E1F70E94980F0C94D42D0C9460
-:100E90000000FF93EF93E0913A01F0913B0130970E
-:100EA00009F00995EF91FF910895FC01859180303B
-:100EB00011F0EFDFFBCF0895FF27E0E230E247FFBC
-:100EC0000CC0419597FF09C0EDE260957095809543
-:100ED0009095611D711D811D911D27FF02C02195F7
-:100EE00030E350E2AA27660F771F881F991FAA1FB9
-:100EF000A41710F0A41B63955A95A9F7AA3008F01F
-:100F0000A95FA05DAF93F39561157105810591050A
-:100F100041F7ED3211F4EF93F395F21718F43F9384
-:100F2000F395FBCF8F91B5DFFA95E1F70895E9913D
-:100F3000F9918591803021F0853219F0AADFF9CF3F
-:100F4000089520E0E89455915532C1F3503311F4DF
-:100F5000689455915A3348F4505390F3220F022E5F
-:100F6000220F220F200D250FF4CF0EF42195899129
-:100F70009991533619F3533729F1533559F1BC017F
-:100F800088279927E8945C3621F48991999168948F
-:100F90005591543639F446EF7EF077FF0DC08FEF50
-:100FA0009FEF0AC055374AE039F0583540E121F04B
-:100FB000523642E009F00895FF93EF937DDFEF9101
-:100FC000FF91B7CFFF93EF93FC0181918030B9F38C
-:100FD00060DFFBCFFF93EF9368DFF1CFDF93CF9319
-:100FE000CDB7DEB72596A3DFCF91DF9108956111CC
-:100FF0000BC0FC018281882321F085EE0E946616D9
-:1010000003C085EE0E942E1780E090E008950895B9
-:101010006091BC017091BD018091BE019091BF01B2
-:101020000E94132156985E9825982D9826982E9800
-:1010300027982F98813019F0823021F00895259A51
-:101040002D9A0895269A2E9A089588E098E0892B83
-:1010500011F00E94080880E090E0089556985E988C
-:1010600025982D9826982E9827982F988FEF90E006
-:10107000909389008093880090938B0080938A00DE
-:1010800090938D0080938C00259A2D9A2FEF80E706
-:1010900092E0215080409040E1F700C00000269A85
-:1010A0002E9A2FEF80E792E0215080409040E1F7A8
-:1010B00000C00000279A2F9A2FEF80E792E021507E
-:1010C00080409040E1F700C0000025982D982FEF58
-:1010D00080E792E0215080409040E1F700C000009E
-:1010E00026982E982FEF80E792E021508040904084
-:1010F000E1F700C0000027982F9856985E98259831
-:101100002D9826982E9827982F98089589EA8093ED
-:10111000800089E08093810024982C983F988AB1C0
-:101120008F748AB96E98479A8BB1806B8BB9769A17
-:101130000E942E0887E098E0892B11F00E94070892
-:1011400080E090E0089580E28093000180913C016E
-:1011500081110EC00E94F20881E080933C012FEFC4
-:1011600083ED90E3215080409040E1F700C0000003
-:1011700080E40E94F8088093000181112EC00E9433
-:10118000220980930001811128C00E9422098093C6
-:101190000001811122C08FE30E9422098093000187
-:1011A00081111BC00E941A0980E40E94F8088093F4
-:1011B0000001811112C08CE00E942209809300017D
-:1011C00081110BC00E94220980930001811105C08A
-:1011D0008FE30E942209809300010E941A098091E6
-:1011E000000108951092B9008AE08093B800089534
-:1011F00094EA9093BC009091BC0097FFFCCF909133
-:10120000B900987F983021F0903111F081E0089575
-:101210008093BB0084E88093BC008091BC0087FF72
-:10122000FCCF8091B900887F883111F0803471F74C
-:1012300080E0089584E98093BC008091BC0084FD27
-:10124000FCCF08958093BB0084E88093BC0080911C
-:10125000BC0087FFFCCF9091B900987F81E0983265
-:1012600009F480E0089584E88093BC008091BC007C
-:1012700087FFFCCF8091BB00089580910001811110
-:1012800015C080E40E94F8088093000181110CC011
-:1012900082E10E94220980930001811105C08FEF35
-:1012A0000E942209809300010E941A0984B1807F64
-:1012B00084B985B1807F85B98AB1837F8AB98BB1C2
-:1012C000837F8BB93E98469808950E94A308809327
-:1012D00000010E943D0980B38C7080BB81B3836F95
-:1012E00081BBECE4F1E0AEE3B1E011921D9281E04C
-:1012F000EA35F807D1F786E898E0892B11F00C94CD
-:10130000860808959F92AF92BF92CF92DF92EF929C
-:10131000FF920F931F93CF93DF9380910001882357
-:10132000E1F080913D018F5F80933D01811115C0F7
-:1013300082E493E00E9455070E94A3088093000175
-:10134000882329F088E293E00E94550706C084E1D3
-:1013500093E00E9455070E942E080EE311E0C0E0C2
-:10136000D0E0BB24B39482E0A82ECC24C394D12C2B
-:1013700025E0E22E23E0F22EC73000F58091000137
-:10138000811162C080E40E94F808809300018111FD
-:1013900012C082E10E9422098093000181110BC0DA
-:1013A000C6010C2E01C0880F0A94EAF780950E94AE
-:1013B0002209809300010E941A0946C0CA30A1F098
-:1013C00028F4C83059F0C93061F005C0CC3089F03C
-:1013D00070F0CD3089F0209A289810C0219A299871
-:1013E0000DC0229A2A980AC0239A2B9807C0529AB5
-:1013F00001C0539A5B9802C03E9A4698E0EAEA958B
-:10140000F1F78FB1799985C092E081708B25892B96
-:101410007C9B02C090E001C094E0892B7D9B02C0C0
-:1014200090E001C098E0892B7E9B02C090E001C053
-:1014300090E1892B9FB19095991F9927991F9295BB
-:10144000990F907E892B10C080910001811176C088
-:1014500080E40E94F80880930001882309F45BC0AF
-:10146000912C0E941A09892DF8019081981739F161
-:10147000808380910101882301F18091D70180FF51
-:1014800004C08AE093E00E9455078091D70180FF55
-:101490000CC0809101011F928F93FF92EF920E94E6
-:1014A000EE070F900F900F900F908091D70180FF63
-:1014B00004C083E093E00E945507A09201010E94BE
-:1014C0003D0921960F5F1F4FCE30D10509F054CF53
-:1014D000809101018823B1F081508093010188231C
-:1014E00039F08FE99FE00197F1F700C000000AC0D2
-:1014F000ACE4B1E0EEE3F1E081918D9391E0EC3466
-:10150000F907D1F785E298E0892BD1F00E942508F0
-:1015100017C090E07ACF83E10E94220980930001F6
-:1015200081119ECF81E40E94F8088093000181110F
-:1015300097CF0E943309982E909493CF80E094CF58
-:1015400081E0DF91CF911F910F91FF90EF90DF909D
-:10155000CF90BF90AF909F900895E82FF0E0E45BAC
-:10156000FE4F80810895CF92DF92EF92FF920F930A
-:101570001F93CF93DF938CEE92E00E9455073CE4DB
-:10158000E32E31E0F32EC0E0D0E047EEC42E42E07F
-:10159000D42E0EED12E0DF93CF93DF92CF920E9414
-:1015A000EE0784EE92E00E945507F70181917F01DA
-:1015B00090E00E9478219F938F931F930F930E9436
-:1015C000EE078CED92E00E94550721968DB79EB7ED
-:1015D00008960FB6F8949EBF0FBE8DBFCE30D105D2
-:1015E000D1F6DF91CF911F910F91FF90EF90DF9097
-:1015F000CF9008958B3B910578F4883A910540F59A
-:10160000853A9105D0F48430910508F0B1C081305D
-:10161000910509F4ADC06BC0803E910508F467C028
-:10162000883E910508F4A4C09C01205F3109203157
-:10163000310508F05CC090650895853A910509F47C
-:1016400059C0863A910509F458C083E890E408959A
-:10165000883A910509F454C0893A910509F453C0B8
-:101660008A3A910509F452C08B3A910509F451C0A8
-:101670008C3A910509F450C08D3A910509F44FC098
-:10168000803B910509F44EC08E3A910509F44DC096
-:101690008F3A910509F44CC0813B910509F44BC088
-:1016A000823B910509F44AC0833B910509F449C086
-:1016B000843B910509F448C0853B910509F447C076
-:1016C000863B910509F446C0873B910509F445C066
-:1016D000883B910509F444C0893B910509F443C056
-:1016E0008A3B910509F042C08AE296E4089580E0C1
-:1016F00090E0089581E890E4089582E890E40895E8
-:1017000082EE94E4089589EE94E408958AEE94E4D8
-:10171000089585EB94E4089586EB94E4089587EBAF
-:1017200094E408958CEC94E408958DEC94E4089589
-:1017300083E895E408958AE895E4089582E995E4BC
-:10174000089584E995E4089581E296E4089583E29A
-:1017500096E4089584E296E4089585E296E4089577
-:1017600086E296E4089587E296E4089580E094E4A2
-:101770000895089596E0799FF001112494E5899FDA
-:10178000E00DF11D1124E60FF11DEE0FFF1FEC51CE
-:10179000FF4F859194910895880F991F805A90402A
-:1017A000FC01859194910895880F991F80529F4F55
-:1017B000FC0185919491089526E0729FF001112417
-:1017C00044E5849FE00DF11D1124E60FF11DEE0F9D
-:1017D000FF1FEC51FF4F25913491C9019A95811556
-:1017E0009F4110F4C9010895C9019052811590419B
-:1017F00028F4C9019F700E94D40B0895C901905329
-:101800008115904120F4C9019927906C0895211504
-:1018100080E5380769F40E94A11A9FEF24E34CE0A9
-:10182000915020404040E1F700C000000C94342269
-:10183000213080E5380751F48CE593E00E9455078C
-:101840008091D70181608093D7010895C901905597
-:101850008115904108F050C0832F99278F709927E8
-:1018600081309105D9F4A9014370552702C0880F32
-:10187000991F4A95E2F79C68A90164E0440F551F3F
-:101880006A95E1F744275370842B952B73E0220F60
-:10189000331F7A95E1F7207633271DC082309105FA
-:1018A00029F4922F8827816F906A089583309105DB
-:1018B000A9F4A9014370552781E090E002C0880F88
-:1018C000991F4A95E2F79C6843E0220F331F4A951F
-:1018D000E1F7207E3770822B932B08950497F1F463
-:1018E000A9014370552781E090E002C0880F991F3D
-:1018F0004A95E2F79A68E8CFC9019057811590415F
-:1019000020F4C9019F7090620895C9019058811513
-:10191000904120F4C9019F70906A0895203E3105DE
-:10192000E0F4203C310558F52133310509F470C04D
-:1019300048F42932310509F464C02A32310509F42A
-:101940006EC074C029333105F1F022383105D9F069
-:101950002533310509F44EC069C0233E310589F1B4
-:1019600038F4203E3105C1F0223E3105E1F05EC081
-:10197000263E310569F1273E3105A9F157C0C9015D
-:101980000E94CC0B08958091EA0180FD02C081FF86
-:101990004DC080EE90E04BC08091EA0180FFF9CF0E
-:1019A00089E390E044C08091EA0182FF0EC08091FB
-:1019B000EA0184FF03C080E090E039C083EE90E04C
-:1019C00036C08091EA0182FFF2CF82EE90E02FC014
-:1019D0008091EA0183FF0BC08091EA0184FDEBCF87
-:1019E00087EE90E024C08091EA0183FFF5CF86EE78
-:1019F00090E01DC08091EA0185FF07C089E290E078
-:101A000016C08091EA0185FFF9CF85E390E00FC011
-:101A10008091EA0186FF07C08AE290E008C08091C9
-:101A2000EA0186FFF9CF81E390E001C0C9010E947D
-:101A3000FA0A0895089580916D0108959FB7F8946A
-:101A400010925C019FBF9091F001943009F058C052
-:101A50009091E9009F702091EC0020FF02C020E8E7
-:101A600001C020E0292B94E09093E9009091EB00D5
-:101A700090FF43C09091EE0097FF3FC090915A01B4
-:101A8000992321F09091E80095FF37C010925A01F8
-:101A900096E03091E80035FD15C03091F00134300A
-:101AA00061F53091EB0035FD28C0915021F481E0C3
-:101AB00080935A0122C0EFE9FFE03197F1F700C0AF
-:101AC0000000E7CF8093F1008091E80085FD0AC017
-:101AD0008091E80080FFFCCF8091E8008E778093B2
-:101AE000E80006C08FB7F89491E090935C018FBF37
-:101AF0002F702093E90080E008952F702093E90073
-:101B00008FEF0895CF93DF9300D01F92CDB7DEB74C
-:101B10002091F001243019F523E029839B838A83E7
-:101B20002093E9008FEF9091E800815095FD06C069
-:101B300095ED9A95F1F700008111F5CF8091E800BD
-:101B400085FF0DC040E050E063E070E0CE010196FB
-:101B50000E9451108091E8008E778093E8000F90EA
-:101B60000F900F90DF91CF910895CF93DF9300D026
-:101B70001F92CDB7DEB72091F001243021F522E08D
-:101B800029839B838A8383E08093E9008FEF909180
-:101B9000E800815095FD06C095ED9A95F1F700009B
-:101BA0008111F5CF8091E80085FF0DC040E050E045
-:101BB00063E070E0CE0101960E9451108091E80030
-:101BC0008E778093E8000F900F900F90DF91CF9168
-:101BD00008952091F0012430F1F422E02093E900EF
-:101BE0002FEF3091E800215035FD06C035ED3A95D4
-:101BF000F1F700002111F5CF2091E80025FF0BC07F
-:101C000040E050E065E070E00E9451108091E800F3
-:101C10008E778093E8000895CF93DF93EC01809155
-:101C2000F001843009F047C080910C018823E1F075
-:101C300080910D018823C1F085E08093E9008FEF4A
-:101C40009091E800815095FD06C095E19A95F1F7D5
-:101C500000008111F5CF8091E80085FF2CC040E0A5
-:101C600050E060E170E017C081E08093E9008FEF01
-:101C70009091E800815095FD06C095ED9A95F1F799
-:101C800000008111F5CF8091E80085FF14C040E08D
-:101C900050E068E070E0CE010E9451108091E800B1
-:101CA0008E778093E80080E1FE01ADE5B1E0019020
-:101CB0000D928A95E1F7DF91CF91089583E993E042
-:101CC0000E9455078091EF01811109C00E94E31124
-:101CD0000E9440128091E20084608093E2000895A7
-:101CE0008FE893E00E9455071092EF0108958BE86A
-:101CF00093E00C94550787E893E00E9455070C94F5
-:101D0000F52B83E893E00E9455070E94CF210E94A3
-:101D1000FB2B0E94DC140C941A0D80915B018F5FE9
-:101D200080935B0162E30E94692D911135C010928E
-:101D30005B0180915C01882379F18091F00184300E
-:101D400049F58091E9008F709091EC0090FF02C0FE
-:101D500090E801C090E0982B84E08093E9008091A6
-:101D6000EB0080FF14C08091EE0087FF10C08091CF
-:101D7000E80085FF03C01092F100F9CF8091E800E0
-:101D800080FF05C08091E8008E778093E8009F7007
-:101D90009093E90010925C01089542E061EC81E0CB
-:101DA0000E945D1142E061EC82E00E945D1142E020
-:101DB00061EC83E00E945D1142E261EC84E00E94EC
-:101DC0005D1142E161EC85E00C945D118091F201BE
-:101DD000833009F455C030F4813071F0823009F459
-:101DE0008EC008958A3009F47AC08B3009F460C03F
-:101DF000893009F09CC020C08091F101813A09F03E
-:101E000096C08091E800877F8093E8008091F5017B
-:101E10009091F601892B21F060E080E090E003C012
-:101E200060E18DE591E070E00E949A108091E800F9
-:101E30008B778093E80008958091F101813209F059
-:101E400076C08091F5019091F601009719F0049702
-:101E500009F06DC08091E800877F8093E800809151
-:101E6000E80082FD05C08091F0018111F8CF5FC0CC
-:101E70008091F10080936D018091E8008B7753C0D1
-:101E80008091F101813A09F052C08091F501909161
-:101E9000F601892B09F04BC08091E800877F809381
-:101EA000E8008091E80080FFFCCF80910C0136C0F3
-:101EB0008091F1018132D9F58091F5019091F6017F
-:101EC000892BA9F58091E800877F8093E8000E9424
-:101ED00092118091F30180930C010C94A11A8091CE
-:101EE000F101813221F58091E800877F8093E8003D
-:101EF0000E9492118091F40180936E010895809167
-:101F0000F101813AA1F48091E800877F8093E80095
-:101F10008091E80080FFFCCF80916E018093F100FA
-:101F20008091E8008E778093E8000C9492110895D8
-:101F300084B7877F84BF88E10FB6F89480936000F0
-:101F4000109260000FBE90E080E80FB6F894809386
-:101F50006100909361000FBE0E9465150E94E3111D
-:101F60000E9440128091E20084608093E2008EE142
-:101F70009DE00E940E2178940E94BA140E94671579
-:101F800082E091E00E94D7140E94E32B82E793E065
-:101F90000E9455078091F001853089F48EE693E028
-:101FA0000E9455070E9492218091EE01882391F3AF
-:101FB0000E94BA21882371F30E943B10EBCF0E944C
-:101FC0009515E8CF292F332723303105A9F06CF47C
-:101FD0002130310509F442C02230310509F043C0F7
-:101FE0008DE890E02BEC33E042C021323105C9F09E
-:101FF0002232310519F137C099278130910541F01E
-:102000008230910541F0892B71F5E7ECF3E005C0D2
-:10201000EFEAF3E002C0E7E9F3E0849190E09F018A
-:1020200026C0653000F5E62FF0E0EE0FFF1FEB5DF8
-:10203000FE4F2081318189E090E019C0653098F42D
-:10204000E62FF0E0DF01AA0FBB1FA55EBE4F2D916A
-:102050003C91EA5EFE4F808190E009C082E190E011
-:1020600028E534E004C080E090E020E030E0FA01B0
-:1020700031832083089580E189BD82E189BD09B45F
-:1020800000FEFDCF8091D8008F7D8093D800809195
-:10209000E00082608093E0008091E00081FDFCCF51
-:1020A0000895CF92DF92EF92FF920F931F93CF93F9
-:1020B000DF937C018B01EA010E94B311811131C0D1
-:1020C000209731F088819981081B190BE80EF91EC1
-:1020D000C12CD12C0115110519F18091E80085FD65
-:1020E00014C08091E8008E778093E800209741F03B
-:1020F000888199818C0D9D1D9983888385E011C00D
-:102100000E94B311882331F30CC0F70181917F0144
-:102110008093F10001501109FFEFCF1ADF0ADACFE7
-:1021200080E0DF91CF911F910F91FF90EF90DF90B2
-:10213000CF9008952091F7013091F80126173707C5
-:1021400048F06115710539F42091E8002E7720934D
-:10215000E80001C0B901FC0120E061157105B9F189
-:102160008091F001882309F440C0853009F43FC014
-:102170008091E80083FD3DC08091E80082FF06C0A9
-:102180008091E80082FF26C080E008958091E800F9
-:1021900080FFE3CF2091F3008091F20090E0922B3A
-:1021A0006115710551F08830910538F42191209323
-:1021B000F100615071090196F3CF21E0089709F011
-:1021C00020E08091E8008E778093E800C6CF21114F
-:1021D000C7CFD6CF8091F001882339F0853039F010
-:1021E0008091E80083FFCCCF04C082E0089583E0B3
-:1021F000089581E008952091F7013091F8012617A4
-:10220000370748F06115710539F42091E8002E7701
-:102210002093E80001C0B901FC0120E061157105BF
-:10222000C1F18091F001882309F441C0853009F49F
-:1022300040C08091E80083FD3EC08091E80082FFAD
-:1022400006C08091E80082FF27C080E00895809159
-:10225000E80080FFE3CF2091F3008091F20090E04E
-:10226000922B6115710559F08830910540F4249145
-:102270002093F1003196615071090196F2CF21E06F
-:10228000089709F020E08091E8008E778093E800BD
-:10229000C5CF2111C6CFD5CF8091F001882339F069
-:1022A000853039F08091E80083FFCBCF04C082E015
-:1022B000089583E0089581E00895982F973058F5A8
-:1022C0009093E900981739F07091EC002091ED009F
-:1022D0005091F00003C0242F762F50E021FF19C049
-:1022E0003091EB003E7F3093EB003091ED003D7F6D
-:1022F0003093ED003091EB0031603093EB00709340
-:10230000EC002093ED005093F0002091EE0027FFA9
-:1023100007C09F5FD3CF8F708093E90081E008955D
-:1023200080E008958091F10187FD05C08091E8006B
-:1023300080FF0EC012C08091E80082FD05C0809130
-:10234000F0018111F8CF08958091E8008B7708C0E3
-:102350008091F0018111EACF08958091E8008E7795
-:102360008093E80008958091E4009091E50045E6AF
-:102370002091EC0020FF21C02091E80020FD21C029
-:102380002091F001222389F0253089F02091EB0083
-:1023900025FD0FC02091E4003091E5002817390792
-:1023A00039F3415041F0C901E3CF82E0089583E061
-:1023B000089581E0089584E008952091E80022FFC7
-:1023C000DFCF80E008950E9451120E945912E0EE82
-:1023D000F0E0808181608083E8EDF0E080818F779C
-:1023E000808319BCA7EDB0E08C918E7F8C938081A7
-:1023F0008F7E80831092EF0108950F931F93CF93E8
-:10240000DF930E9451120E945912C8EDD0E08881DA
-:102410008F77888388818068888388818F7D88838F
-:1024200019BC1092F0011092EC011092EE01109282
-:10243000ED0100EE10E0F80180818B7F80838881C0
-:102440008160888342E060E080E00E945D11E1EEFF
-:10245000F0E080818E7F8083E2EEF0E08081816019
-:102460008083808188608083F80180818E7F808373
-:10247000888180618883DF91CF911F910F910895AA
-:10248000E8EDF0E080818F7E8083E7EDF0E08081F1
-:102490008160808384E082BF81E08093EF010C94AF
-:1024A000FD11E8EDF0E080818E7F80831092E200E4
-:1024B00008951092DA001092E10008951F920F9291
-:1024C0000FB60F9211242F933F934F935F936F9307
-:1024D0007F938F939F93AF93BF93EF93FF938091DD
-:1024E000E10082FF0BC08091E20082FF07C0809173
-:1024F000E1008B7F8093E1000E948D0E8091DA00D5
-:1025000080FF1FC08091D80080FF1BC08091DA003F
-:102510008E7F8093DA008091D90080FF0DC080E12A
-:1025200089BD82E189BD09B400FEFDCF81E08093C1
-:10253000F0010E945E0E05C019BC1092F0010E94CD
-:10254000700E8091E10080FF19C08091E20080FF51
-:1025500015C08091E2008E7F8093E2008091E200BE
-:1025600080618093E2008091D80080628093D800DF
-:1025700019BC85E08093F0010E947B0E8091E10000
-:1025800084FF30C08091E20084FF2CC080E189BDCF
-:1025900082E189BD09B400FEFDCF8091D8008F7D16
-:1025A0008093D8008091E1008F7E8093E10080913C
-:1025B000E2008F7E8093E2008091E2008160809350
-:1025C000E2008091EC01882311F084E007C0809143
-:1025D000E30087FF02C083E001C081E08093F00147
-:1025E0000E94810E8091E10083FF29C08091E2006A
-:1025F00083FF25C08091E100877F8093E10082E026
-:102600008093F0011092EC018091E1008E7F809325
-:10261000E1008091E2008E7F8093E2008091E200F1
-:1026200080618093E20042E060E080E00E945D1102
-:102630008091F00088608093F0000E94770EFF91F7
-:10264000EF91BF91AF919F918F917F916F915F912A
-:102650004F913F912F910F900FBE0F901F901895A3
-:102660001F920F920FB60F9211242F933F934F9307
-:102670005F936F937F938F939F93AF93BF93CF930A
-:10268000EF93FF93C091E900CF708091EC0010921E
-:10269000E9008091F000877F8093F00078940E9499
-:1026A0006C131092E9008091F00088608093F00034
-:1026B000C093E900FF91EF91CF91BF91AF919F91AE
-:1026C0008F917F916F915F914F913F912F910F90DB
-:1026D0000FBE0F901F9018951F93CF93DF93CDB728
-:1026E000DEB7AA970FB6F894DEBF0FBECDBFE1EFFD
-:1026F000F1E08091F100819321E0E93FF207C9F711
-:102700000E94E60E8091E80083FF1CC12091F10138
-:102710003091F201832F90E08A30910508F012C1C8
-:10272000FC01EA5AFF4F0C94892D203881F02238A1
-:1027300009F008C18091F5018F708093E9008091C4
-:10274000EB0085FB882780F91092E90006C0809194
-:10275000ED019091EE01911182609091E800977FD8
-:102760009093E8008093F1001092F100C5C0822F91
-:102770008D7F09F0E7C0222319F0223061F0E2C01A
-:102780008091F301813009F0DDC0333009F080E041
-:102790008093EE0128C08091F301811124C0209123
-:1027A000F5012F7009F4CEC02093E9008091EB0071
-:1027B00080FF19C08091EB00333011F4806211C0AA
-:1027C00080618093EB0081E090E0022E01C0880FD1
-:1027D0000A94EAF78093EA001092EA008091EB00F5
-:1027E00088608093EB001092E9008091E800877F79
-:1027F00086C02111A7C01091F3011F778091E300DB
-:102800008078812B8093E3008091E800877F80931C
-:10281000E8000E9492118091E80080FFFCCF809137
-:10282000E30080688093E300112311F083E001C08E
-:1028300082E08093F00186C02058223008F082C0E8
-:102840008091F3019091F4018C3D23E0920779F59A
-:1028500083E08A838AE289834FB7F894DE01139676
-:1028600020E03EE051E2E32FF0E050935700E49186
-:1028700020FF03C0E295EF703F5FEF708E2F90E076
-:10288000EA3010F0C79601C0C0968D939D932F5FDC
-:10289000243149F74FBF8091E800877F8093E8009B
-:1028A0006AE270E0CE0101960E949A1014C0AE0157
-:1028B0004F5F5F4F6091F5010E94E20F009709F4AE
-:1028C00041C02091E800277F2093E800BC01898166
-:1028D0009A810E94FB108091E8008B778093E8003A
-:1028E00031C0203879F58091E800877F8093E80037
-:1028F0008091EC018093F1008091E8008E778093C5
-:10290000E8000E9492111EC021111CC09091F30199
-:102910009230C0F48091E800877F8093E800909324
-:10292000EC010E9492118091EC01811104C0809110
-:10293000E30087FF02C084E001C081E08093F001E2
-:102940000E94CD0E8091E80083FF0AC08091E800CC
-:10295000877F8093E8008091EB0080628093EB009A
-:10296000AA960FB6F894DEBF0FBECDBFDF91CF9110
-:102970001F910895CF938091F0018823B1F0809149
-:10298000E9008F709091EC0090FF02C090E801C0C8
-:1029900090E0C92FC82B1092E9008091E80083FDD8
-:1029A0000E946C13CF70C093E900CF91089590936B
-:1029B0007401809373010895E0917301F0917401A3
-:1029C000309721F00190F081E02D099480E0089586
-:1029D000FF920F931F93CF93DF938C01E0917301CC
-:1029E000F0917401309799F10280F381E02D0995FF
-:1029F0008091D70182FF2BC080FF04C08DE895E055
-:102A00000E945507E80180E1F82E07E815E0809163
-:102A1000D70180FF0BC088811F928F931F930F9364
-:102A20000E94EE070F900F900F900F90FA9421964E
-:102A3000F110EDCF8091D70180FF09C085E895E0C6
-:102A4000DF91CF911F910F91FF900C945507DF916B
-:102A5000CF911F910F91FF900895E0917301F09134
-:102A60007401309721F00480F581E02D09940895D8
-:102A700020917101309172018217930771F0909348
-:102A8000720180937101E0917301F09174013097AC
-:102A900021F00680F781E02D0994089520916F01BF
-:102AA000309170018217930771F0909370018093B9
-:102AB0006F01E0917301F0917401309721F000846F
-:102AC000F185E02D0994089508950C9464150E94F1
-:102AD000D1210E9465090C949722CF93C82F809131
-:102AE000D70182FF1EC080FF04C086EA95E00E94E5
-:102AF00055078091D70180FF0CC01F92CF9321EA28
-:102B000035E03F932F930E94EE070F900F900F90A8
-:102B10000F908091D70180FF04C08FE995E00E945B
-:102B200055078C2FCF910C941A0DCF92DF92EF9214
-:102B3000FF920F931F93CF93DF93CDB7DEB72B9701
-:102B40000FB6F894DEBF0FBECDBF0E94820936E7F4
-:102B5000E32E31E0F32E00E010E0C02E802F0E9423
-:102B6000AD0AF701D1907F01D826B1F40F5F1F4F56
-:102B70000E30110591F78FEF89838A831B820E94A3
-:102B8000DA218160782F9D838C8349815A816B8102
-:102B90008D810E94381641C09091D70191FF04C0E9
-:102BA0008B870E94B30A8B8520E030E04D2D50E0EA
-:102BB000922FBA01022E02C0759567950A94E2F72A
-:102BC00060FF25C02E83CF82EE24E394F12C02C057
-:102BD000EE0CFF1C9A95E2F790E08E219F2121E0F8
-:102BE000892B09F420E028870E94DA218160782F60
-:102BF0009A8789874E815F8168858A850E94381609
-:102C0000F801EA58FE4F80818E25808306C02F5F31
-:102C10003F4F2630310561F6A9CF0E94052610915D
-:102C200075010E94DC141817A1F00E94DC14809337
-:102C300075012B960FB6F894DEBF0FBECDBFDF91A6
-:102C4000CF911F910F91FF90EF90DF90CF900C9458
-:102C50006D152B960FB6F894DEBF0FBECDBFDF917A
-:102C6000CF911F910F91FF90EF90DF90CF9008953B
-:102C7000CF93DF93CDB7DEB72B970FB6F894DEBFB7
-:102C80000FBECDBF4F83588769877A878B87DE0158
-:102C9000119686E0FD0111928A95E9F785E0FE0123
-:102CA000379601900D928A95E1F749815A816B819F
-:102CB0007C818D819E810E946D1D2B960FB6F894AC
-:102CC000DEBF0FBECDBFDF91CF910895CF93C82F48
-:102CD000882309F4C1C0823859F40E94DC1481FDB4
-:102CE000BBC089E30E940C200E94E82089E30CC04D
-:102CF000833879F40E94DC1480FDAEC083E50E9425
-:102D00000C200E94E82083E50E945D20CF910C9466
-:102D1000E820843859F40E94DC1482FD9DC087E4C9
-:102D20000E940C200E94E82087E4EECF8CEF8C0FED
-:102D3000813A48F48C2F0E948E2A81118DC08C2FED
-:102D40000E940C20E3CF80E28C0F883048F4C770DB
-:102D500081E001C0880FCA95EAF70E94AF20D6CF64
-:102D60008BE58C0F833078F4C53A29F0C63A31F4FC
-:102D700082E890E005C081E890E002C083E890E03E
-:102D8000CF910C94381588E58C0F833108F064C01E
-:102D9000C83A39F1C93A41F1CA3A49F1CB3A51F14D
-:102DA000CC3A59F1CD3A61F1C03B69F1CE3A71F1BB
-:102DB000CF3A79F1C13B81F1C23B89F1C33B91F13B
-:102DC000C43B99F1C53BA1F1C63BA9F1C73BB1F1A9
-:102DD000C83BB9F1C93BC1F1CA3BC9F58AE292E0EF
-:102DE00038C082EE90E035C089EE90E032C08AEEC5
-:102DF00090E02FC085EB90E02CC086EB90E029C0DE
-:102E000087EB90E026C08CEC90E023C08DEC90E046
-:102E100020C083E891E01DC08AE891E01AC082E9F1
-:102E200091E017C084E991E014C081E292E011C002
-:102E300083E292E00EC084E292E00BC085E292E071
-:102E400008C086E292E005C087E292E002C080E01E
-:102E500090E0CF910C944E15CF910895882309F4FA
-:102E60004BC0823859F40E94DC1481FF45C089E3CD
-:102E70000E940C200E94E82089E30CC0833871F482
-:102E80000E94DC1480FF38C083E50E940C200E9461
-:102E9000E82083E50E945D200C94E820843859F4F2
-:102EA0000E94DC1482FF28C087E40E940C200E944C
-:102EB000E82087E4EFCF9CEF980F913A58F390E227
-:102EC000980F983050F4877091E001C0990F8A955F
-:102ED000EAF7892F0E94B520DFCF9BE5980F93304A
-:102EE00020F480E090E00C943815885A833120F467
-:102EF00080E090E00C944E150895882321F00E9404
-:102F0000AF200C94E8200895882321F00E94B5207A
-:102F10000C94E8200895CF92DF92EF92FF920F93E6
-:102F20001F93CF93DF93CDB7DEB728970FB6F894F2
-:102F3000DEBF0FBECDBF8C0185E0F801DE0111962A
-:102F400001900D928A95E1F7F80140813181F2807C
-:102F5000258122952F7083819481892B31F03F3F09
-:102F600031F481E04F3F19F403C081E001C080E0FB
-:102F700080FDC6C249833A8389819A812F830E944A
-:102F8000CA1F9E8388870E94C91F0E949C1E4E8173
-:102F9000E42FE295EF70F0E0E05AFF4F2F81688553
-:102FA0000C94892D842F807F142F1F70882311F09B
-:102FB0001295107FFF2059F0112309F456C2812F7A
-:102FC00068870E94BF200E94E82068854EC2862F35
-:102FD0000E942E17112309F493C2812F0E94C5204D
-:102FE00028960FB6F894DEBF0FBECDBFDF91CF910C
-:102FF0001F910F91FF90EF90DF90CF900C94E820FD
-:10300000342F307F842F8F70303211F08295807F83
-:10301000662319F0613019F12CC0FF20B1F0222392
-:1030200009F494C1213009F091C128960FB6F894A3
-:10303000DEBF0FBECDBFDF91CF911F910F91FF90EB
-:10304000EF90DF90CF900C94CF20222319F0213005
-:1030500009F456C28E830E94D2208E818AC1FF203D
-:1030600021F0263008F04CC271C1253008F048C26A
-:1030700080C1FF2021F0222309F468C1F6C1222378
-:1030800009F477C106C2242F26952695237030E0D7
-:103090002115310521F021303105C9F031C2FF2061
-:1030A00021F0862F942F937002C080E090E0289644
-:1030B0000FB6F894DEBF0FBECDBFDF91CF911F9149
-:1030C0000F91FF90EF90DF90CF900C943815FF2078
-:1030D00021F0862F942F937002C080E090E0289614
-:1030E0000FB6F894DEBF0FBECDBFDF91CF911F9119
-:1030F0000F91FF90EF90DF90CF900C944E15862F9C
-:10310000FF2019F00E948B2402C00E94F32428960D
-:103110000FB6F894DEBF0FBECDBFDF91CF911F91E8
-:103120000F91FF90EF90DF90CF900C947825842F33
-:10313000837009F076C0F110E3C1262F2295269501
-:103140002770220F220F862F8F70C82ED12CE12CD2
-:10315000F12C022E04C0CC0CDD1CEE1CFF1C0A94CA
-:10316000D2F764FF10C06FE070E080E090E004C030
-:10317000660F771F881F991F2A95D2F76095709563
-:103180008095909503C060E070E0CB01242F2695D8
-:1031900026952370422F50E042305105D1F0433044
-:1031A000510559F16C297D298E299F2941305105FE
-:1031B00041F128960FB6F894DEBF0FBECDBFDF9168
-:1031C000CF911F910F91FF90EF90DF90CF900C94D3
-:1031D000C11E6C297D298E299F2928960FB6F89447
-:1031E000DEBF0FBECDBFDF91CF911F910F91FF903A
-:1031F000EF90DF90CF900C94DB1E0E94C11EC701A0
-:10320000B60128960FB6F894DEBF0FBECDBFDF9192
-:10321000CF911F910F91FF90EF90DF90CF900C9482
-:10322000A71EFF2019F0842F817001C08695882386
-:1032300009F466C1262F229526952770220F220FAA
-:10324000862F8F70C82ED12CE12CF12C022E04C0B9
-:10325000CC0CDD1CEE1CFF1C0A94D2F764FF10C0DE
-:103260006FE070E080E090E004C0660F771F881F79
-:10327000991F2A95D2F7609570958095909503C017
-:1032800060E070E0CB01242F269526952370422F15
-:1032900050E042305105D1F04330510559F16C29CD
-:1032A0007D298E299F294130510541F128960FB67D
-:1032B000F894DEBF0FBECDBFDF91CF911F910F916C
-:1032C000FF90EF90DF90CF900C94951F6C297D2993
-:1032D0008E299F2928960FB6F894DEBF0FBECDBF6A
-:1032E000DF91CF911F910F91FF90EF90DF90CF90E2
-:1032F0000C94AF1F0E94951FC701B60128960FB608
-:10330000F894DEBF0FBECDBFDF91CF911F910F911B
-:10331000FF90EF90DF90CF900C947B1F603FC9F13E
-:1033200018F4603E50F49CC0623F09F461C008F498
-:103330004BC0633F09F470C093C0162F1F70842FD9
-:103340008F71FF2099F00E94141F812F28960FB6CD
-:10335000F894DEBF0FBECDBFDF91CF911F910F91CB
-:10336000FF90EF90DF90CF900C947D170E94351F57
-:10337000812F28960FB6F894DEBF0FBECDBFDF9128
-:10338000CF911F910F91FF90EF90DF90CF900C9411
-:103390008417FF20A9F0253008F0B2C0842F8F7168
-:1033A00028960FB6F894DEBF0FBECDBFDF91CF9148
-:1033B0001F910F91FF90EF90DF90CF900C945A1FC8
-:1033C000263008F09DC0EACFFF20A1F0842F8F7136
-:1033D00028960FB6F894DEBF0FBECDBFDF91CF9118
-:1033E0001F910F91FF90EF90DF90CF900C94141FDE
-:1033F000FF2061F3842F8F7128960FB6F894DEBFFB
-:103400000FBECDBFDF91CF911F910F91FF90EF9035
-:10341000DF90CF900C94351FFF2091F0842F8F7197
-:1034200028960FB6F894DEBF0FBECDBFDF91CF91C7
-:103430001F910F91FF90EF90DF90CF900C94FF1EA3
-:1034400028960FB6F894DEBF0FBECDBFDF91CF91A7
-:103450001F910F91FF90EF90DF90CF900C94F51E8D
-:10346000FF20A1F0222309F4B1CF862F28960FB6B2
-:10347000F894DEBF0FBECDBFDF91CF911F910F91AA
-:10348000FF90EF90DF90CF900C946616222309F402
-:10349000B1CF862F28960FB6F894DEBF0FBECDBFF2
-:1034A000DF91CF911F910F91FF90EF90DF90CF9020
-:1034B0000C942E174F70C8010E94F70728960FB67C
-:1034C000F894DEBF0FBECDBFDF91CF911F910F915A
-:1034D000FF90EF90DF90CF900C941A1E4F70C801B0
-:1034E00028960FB6F894DEBF0FBECDBFDF91CF9107
-:1034F0001F910F91FF90EF90DF90CF900C94B90B3C
-:1035000028960FB6F894DEBF0FBECDBFDF91CF91E6
-:103510001F910F91FF90EF90DF90CF9008950E9440
-:10352000CC200E94A1200E94E8200E94A6260E9492
-:10353000782580E090E00E94381580E090E00C94BF
-:103540004E150E94BC200C948F1A0E94CA1F292F6E
-:1035500022952F7030E02C3031054CF42A303105A3
-:103560006CF4225031092230310590F407C02C3020
-:10357000310551F02F30310539F00AC0803E10F08E
-:10358000803F31F481E0089593FB882780F9089506
-:1035900080E00895CF93DF9300D000D01F92CDB785
-:1035A000DEB70F900F900F900F900F90DF91CF919B
-:1035B0000895CF93DF9300D000D000D0CDB7DEB711
-:1035C00026960FB6F894DEBF0FBECDBFDF91CF9128
-:1035D00008951F93CF93DF93C091840116E08091EB
-:1035E0008501C81799F0D0E01C9FF0011D9FF00DD8
-:1035F0001124EA57FE4F4081518162817381848199
-:1036000095810E94D91A2196C770E9CFDF91CF9199
-:103610001F9108954091B6015091B7016091B80192
-:103620007091B9018091BA019091BB010C94D91AA3
-:10363000CF938091BB0182958F7009F05FC080911C
-:10364000B801882309F45AC020918401A091850112
-:103650006091B6017091B7018091B9019091BA0162
-:1036600031E06F3F09F030E0B32FC6E02A1709F4CC
-:1036700045C0009721F07F3F21F44B2F03C041E06C
-:1036800001C040E030E040FD35C0C29FF001C39F63
-:10369000F00D1124EA57FE4F418174132BC0408175
-:1036A000641328C04281411125C0438154814817C9
-:1036B000590710F441505109481B590B483C51051A
-:1036C000C8F48091BB018F7080618093BB0186E05C
-:1036D000829FF001839FF00D1124E557FE4F8081FA
-:1036E0008F708061808386EB91E00E948B17CF9171
-:1036F0000C94E91A2F5F3F4F2770B8CFCF910895F0
-:10370000CF92DF92EF92FF920F931F93CF93DF93AD
-:10371000CDB7DEB762970FB6F894DEBF0FBECDBF50
-:103720008C0185E0F801DE011D9601900D928A95CD
-:10373000E1F7D8014C9111965C91119712966C911A
-:1037400012971396ED90FC9014977091B601E0914A
-:10375000B7012091B9013091BA012115310531F03D
-:10376000EF3F31F481E07F3F19F403C081E001C0F5
-:1037700080E0B82FB170CB2E80FD6CC1D090B80125
-:10378000DD2009F4F5C0F091BB01E216F30638F034
-:10379000C701821B930B883C910548F09BC0209584
-:1037A00030952E0D3F1D283C310508F093C08F2F1A
-:1037B000807F09F052C0E51314C0741312C0D62ED6
-:1037C00061110FC0FF70F061F093BB010E940A1BF2
-:1037D00086EB91E00E948B178091BB01F8018583F5
-:1037E0006CC1EF2831F05F3F31F481E04F3F19F4B5
-:1037F00003C081E001C080E080FD03C081E0862736
-:1038000001C080E0F82FF170FF2E80FF1CC0809176
-:1038100084012091850136E0821709F428C190E0E7
-:10382000389FF001399FF00D1124EA57FE4F718146
-:10383000571306C07081471303C07281671303C01A
-:1038400001968770E9CFD62E662309F436C18091A0
-:10385000BB0181608093BB0153C0E51308C07413A2
-:1038600006C0611104C0D8011596FC93AEC04D8707
-:103870005E878D859E856A8B0E94A51A6A8988233A
-:1038800029F1D62E662311F12091BB01822F82955A
-:103890008F7090E002970CF460C08091B601909117
-:1038A000B70198878F831986FB86EA862C87CE011D
-:1038B000079651C0E51731F14D875E878D859E854E
-:1038C0006A8B0E94A51A6A8981112EC0C8010E94C4
-:1038D0008B17A4C08F2F807F69F77E2DF98AE88A25
-:1038E00089890E94CA1A86EB91E00E948B17E6EB49
-:1038F000F1E086E0DF011D928A95E9F70E940A1B3C
-:10390000D12CDBC07413D8CF6111D6CFD801159656
-:10391000FC93C8010E948B17E6EBF1E086E0DF0123
-:103920001D928A95E9F7C9C0D62E662379F22091B7
-:10393000BB01822F82958F7090E0029774F0809186
-:10394000B6019091B7019A8389831B82FD82EC8234
-:103950002E83CE0101960E948B1786E0F801A6EB1C
-:10396000B1E001900D928A95E1F70E94181B6FC09B
-:10397000E216F30628F0C701821B930B9C0104C0DA
-:10398000209530952E0D3F1D283C310508F052C082
-:10399000D62E662309F49ACFE5132CC074132AC0DF
-:1039A0008091BB0180FD1DC0982F92959F70C9F03A
-:1039B000D80115968C9315979F3039F09F5F92959B
-:1039C000907F8F70892B15968C93C8010E948B175E
-:1039D00086E0F801A6EBB1E001900D928A95E1F73F
-:1039E00036C086E0F801A6EBB1E001900D928A9511
-:1039F000E1F763C04D875E878D859E850E94A51A7D
-:103A0000882379F086E0F801A6EBB1E001900D92F1
-:103A10008A95E1F70E94181B0E940A1BDD24D394AB
-:103A20004CC08091BB0181608093BB01C8010E94A2
-:103A30008B1743C07E2DF98AE88A89890E94CA1AA9
-:103A4000E6EBF1E086E0DF011D928A95E9F70E943E
-:103A50000A1B33C0662309F439CF4D875E878D85F5
-:103A60009E850E94A51A882309F430CFCBCF4D87BD
-:103A70005E878D859E850E94CA1F292F22952F70F3
-:103A800030E0223031052CF49F7041F0811106C0E6
-:103A90000CC0243031052CF49F7049F4805E8830CE
-:103AA00020F0C8010E948B17CF2CDC2C06C0D80157
-:103AB00015969C91907F91F7F8CF8D2D62960FB659
-:103AC000F894DEBF0FBECDBFDF91CF911F910F9154
-:103AD000FF90EF90DF90CF9008951F93CF93DF93E7
-:103AE000CDB7DEB72C970FB6F894DEBF0FBECDBFB3
-:103AF0004F83588769877A878B879C87CE01079683
-:103B00000E94801B8823C1F02F8138858A859B8580
-:103B1000892B31F03F3F11F080E003C02F3FE1F7E8
-:103B200081E0811147C04F81588569857A858B85F1
-:103B30009C850E94D91A3EC086E0FE013796DE01C0
-:103B4000119601900D928A95E1F7FF81E8854A85EB
-:103B50005B854115510531F0EF3F31F481E0FF3FC6
-:103B600019F403C081E001C080E080FD23C02091F2
-:103B7000850130E0C9010196877099276091840121
-:103B800070E086179707F1F1F983EA835D834C8330
-:103B900096E0929FD001939FB00D1124AA57BE4F7B
-:103BA000FE01319601900D929A95E1F7809385017F
-:103BB0000E94E91A16E0809184019091850189178D
-:103BC00079F1189FC00111248A579E4F0E94801BD3
-:103BD000882331F1E09184011E9FF0011124EA57FE
-:103BE000FE4F4081518162817381848195810E9461
-:103BF000D91A8091840190E001968770992780936B
-:103C00008401D9CF0E94A11A1092850110928401DB
-:103C1000E6EBF1E086E0DF011D928A95E9F7CACF75
-:103C20002C960FB6F894DEBF0FBECDBFDF91CF91BB
-:103C30001F910895EF92FF920F931F93CF93DF93FD
-:103C40009C01009709F471C0F12CEE24E394E90182
-:103C50002196F9018491843740F4843008F056C0ED
-:103C6000813081F0823021F160C0853709F449C08C
-:103C7000C0F19CE7980F903708F057C08F770E94EB
-:103C80002E1746C089010E5F1F4FFE01849190E2FE
-:103C9000980F983050F48770FE2D01C0FF0F8A9561
-:103CA000EAF78F2F0E94BF2015C00E94661614C02D
-:103CB00089010E5F1F4FFE01849190E2980F9830AA
-:103CC00068F48770FE2D01C0FF0F8A95EAF78F2FE9
-:103CD0000E94C5200E94E820E8011AC00E942E1709
-:103CE000FBCF2E5F3F4FFE01C491CC2341F08FE903
-:103CF0009FE00197F1F700C00000C150F6CFE90145
-:103D000007C0FE01F490E901229602C00E946616E7
-:103D10008F2D882341F0EFE9FFE03197F1F700C0E4
-:103D200000008150F6CF9E0192CFDF91CF911F917D
-:103D30000F91FF90EF90089508956093C0017093E4
-:103D4000C1018093C2019093C3010C948F1A0F9309
-:103D50001F930091C0011091C1012091C2013091C7
-:103D6000C301062B172B282B392B0093C00110936E
-:103D7000C1012093C2013093C3011F910F910C9494
-:103D80008F1A0F931F930091C0011091C1012091D0
-:103D9000C2013091C301062317232823392300933E
-:103DA000C0011093C1012093C2013093C3011F9140
-:103DB0000F910C948F1A0F931F930091C0011091D3
-:103DC000C1012091C2013091C3010627172728277E
-:103DD00039270093C0011093C1012093C201309391
-:103DE000C3011F910F910C948F1A1092BC01109275
-:103DF000BD011092BE011092BF010C948F1A41E0D8
-:103E000050E060E070E004C0440F551F661F771F4C
-:103E10008A95D2F74093BC015093BD016093BE01D7
-:103E20007093BF010C948F1A41E050E060E070E0A5
-:103E300004C0440F551F661F771F8A95D2F78091E3
-:103E4000BC019091BD01A091BE01B091BF01842B36
-:103E5000952BA62BB72B8093BC019093BD01A0930B
-:103E6000BE01B093BF010C948F1A41E050E060E0B6
-:103E700070E004C0440F551F661F771F8A95D2F764
-:103E800040955095609570958091BC019091BD01D1
-:103E9000A091BE01B091BF0184239523A623B7232F
-:103EA0008093BC019093BD01A093BE01B093BF016C
-:103EB0000C948F1A41E050E060E070E004C0440FC1
-:103EC000551F661F771F8A95D2F78091BC0190918C
-:103ED000BD01A091BE01B091BF0184279527A627FF
-:103EE000B7278093BC019093BD01A093BE01B0930E
-:103EF000BF010C948F1A0F931F930091BC01109176
-:103F0000BD012091BE013091BF01062B172B282B3C
-:103F1000392B0093BC011093BD012093BE01309357
-:103F2000BF011F910F910C948F1A0F931F93009153
-:103F3000BC011091BD012091BE013091BF0106234B
-:103F40001723282339230093BC011093BD0120932C
-:103F5000BE013093BF011F910F910C948F1A0F93E4
-:103F60001F930091BC011091BD012091BE013091C1
-:103F7000BF0106271727282739270093BC01109374
-:103F8000BD012093BE013093BF011F910F910C948E
-:103F90008F1A0895CF92DF92EF92FF920F931F93A3
-:103FA000CF93DF93EC01C090C001D090C101E090AD
-:103FB000C201F090C3018091BC019091BD01A0911C
-:103FC000BE01B091BF01C82AD92AEA2AFB2A0FE113
-:103FD00010E0B701A601002E04C0769567955795AD
-:103FE00047950A94D2F740FF07C0BE01802F0E9478
-:103FF000DC0B8130910539F40150110950F7BE01F5
-:1040000080E00E94DC0BDF91CF911F910F91FF9018
-:10401000EF90DF90CF90089590910C01992361F17A
-:1040200090910D01992341F1982F9695969596952B
-:104030009F3088F4E0910E01F0910F01E90FF11D1E
-:10404000877021E030E001C0220F8A95EAF7818174
-:10405000822B818308959091D70190FF2DC01F92EC
-:104060008F9387ED95E09F938F930E94EE070F90BB
-:104070000F900F900F90089540910E0150910F01F5
-:1040800020E030E09FEFFA01E20FF31F6281681732
-:1040900099F09F3F19F4611101C0922F2F5F3F4F9C
-:1040A0002E30310581F79F3F39F0FA01E90FF11DFC
-:1040B00097FDFA9582830895089590910C019923B4
-:1040C00069F190910D01992349F1982F9695969554
-:1040D00096959F3090F4E0910E01F0910F01E90F59
-:1040E000F11D877021E030E001C0220F8A95EAF7C8
-:1040F000209581812823218308959091D70190FFF5
-:104100001FC01F928F9389EB95E09F938F930E941E
-:10411000EE070F900F900F900F90089540910E01B1
-:1041200050910F0120E030E0FA01E20FF31F92817D
-:10413000981301C012822F5F3F4F2E303105A1F737
-:10414000089581E090E0E0910E01F0910F01E80FF9
-:10415000F91F1082019680319105A9F70895909179
-:10416000D601982B9093D601089580959091D60111
-:1041700098239093D60108951092D60108959091B6
-:10418000D501982B9093D501089580959091D501F4
-:1041900098239093D50108951092D50108958093A6
-:1041A000C40108951092C401089540910E015091E8
-:1041B0000F0120E030E080E0FA01E20FF31F91816F
-:1041C00091118F5F2F5F3F4F2F303105A9F7089571
-:1041D000E0910E01F0910F018091D6018083E09172
-:1041E0000E01F0910F0180819091D501892B808380
-:1041F0009091C401992361F0E0910E01F0910F01BB
-:104200008081892B80830E94D52081111092C40166
-:1042100080910E0190910F010C94E81490933B0152
-:1042200080933A010895CF92DF92EF92FF920F931D
-:104230001F936C01EE24FF24C114D104E104F104A6
-:1042400021F46B017C0180E001C080E133272F2D38
-:104250001E2D0D2D011511052105310519F0885F61
-:104260006801790197018601A4E036952795179595
-:104270000795AA95D1F7011511052105310519F00A
-:104280008C5F6801790197018601F2E036952795E8
-:1042900017950795FA95D1F70115110521053105F7
-:1042A00019F08E5F68017901B701A60176956795CF
-:1042B00057954795452B462B472B09F08F5F1F914C
-:1042C0000F91FF90EF90DF90CF9008958295982FF7
-:1042D0009C7C96959695837344E0849F900111246D
-:1042E000922B892F8A7A86959575990F892B089537
-:1042F0001F93CF93DF931F92CDB7DEB799830E94B0
-:104300006621182F9981892F0E946621212F30E084
-:10431000322F2227A901482BCA010F90DF91CF919C
-:104320001F9108958091F001843009F11092D80115
-:1043300020E488E190E00FB6F894A895809360009F
-:104340000FBE2093600083B7817F846083BF83B7F3
-:10435000816083BF7894889583B78E7F83BF88E11F
-:104360000FB6F89480936000109260000FBE08951D
-:1043700008950895CF930E94B8210E9482090E9457
-:10438000B921C0E08C2F0E94AD0A811105C0CF5F1A
-:10439000CE30C1F780E001C081E0CF9108950C9448
-:1043A000A11A82E084BD93E095BD9AEF97BD8093FA
-:1043B0006E0008952FB7F8948091D9019091DA0199
-:1043C000A091DB01B091DC012FBF0895CF92DF9265
-:1043D000EF92FF920F931F932FB7F8944091D9015A
-:1043E0005091DA016091DB017091DC012FBF6A010D
-:1043F0007B01EE24FF248C0120E030E0C016D106C2
-:10440000E206F30610F441505109481B590BCA014A
-:104410001F910F91FF90EF90DF90CF9008951F9222
-:104420000F920FB60F9211248F939F93AF93BF9368
-:104430008091D9019091DA01A091DB01B091DC016A
-:104440000196A11DB11D8093D9019093DA01A0932B
-:10445000DB01B093DC01BF91AF919F918F910F90E1
-:104460000FBE0F901F9018950E94E311F8942FEF44
-:1044700087EA91E6215080409040E1F700C00000BB
-:1044800087E090EBDC018093F9019093FA01A0930F
-:10449000FB01B093FC012CE088E190E00FB6F894AA
-:1044A000A895809360000FBE20936000FFCFEF922D
-:1044B000FF920F931F93CF93DF93E82EF12C8F2D54
-:1044C0000E94AD0AC0E0D0E0082F10E098010C2E49
-:1044D00002C0359527950A94E2F720FD05C0219684
-:1044E000C630D10599F709C06C2F7F2D80E00E945E
-:1044F000BA0BE812F4CF81E005C0F3948EE0F81215
-:10450000DECF80E0DF91CF911F910F91FF90EF9070
-:104510000895CF93C82F8CE20E945722882321F060
-:104520008C2FCF910C94572280E0CF910895CF9398
-:104530000E94E423811102C00E94CA238CEF95E0FF
-:104540000E945507C5E6C15049F00E9482098FE3D9
-:104550009CE90197F1F700C00000F5CF85EF95E0E9
-:104560000E94550789E20E948922811111C18AE2C5
-:104570000E94892281110E94CA2385E00E9489221B
-:1045800081110E9434220E94EF238093D70187E09B
-:104590000E948922882399F18BE10E948922882335
-:1045A00051F09091D70191FB882780F921E0822773
-:1045B00080FB91F922C08EE00E948922882351F06D
-:1045C0009091D70192FB882780F921E0822780FB18
-:1045D00092F913C080E10E9489229091D70188232B
-:1045E00041F093FB882780F921E0822780FB93F933
-:1045F00004C0892F809580FB90F99093D70180911A
-:10460000D7010E94F3230E9401248093EA0180EEE7
-:104610000E948922882341F08091EA01982F909589
-:1046200090FB80F98093EA0189E30E948922882324
-:1046300059F09091EA0191FB882780F921E08227C7
-:1046400080FB91F99093EA0182EE0E9489228823EF
-:1046500059F09091EA0192FB882780F921E08227A6
-:1046600080FB92F99093EA0186EE0E9489228823CA
-:1046700059F09091EA0193FB882780F921E0822785
-:1046800080FB93F99093EA0183EE0E9489228823AC
-:1046900059F09091EA0194FB882780F921E0822764
-:1046A00080FB94F99093EA0185E30E948922882394
-:1046B00059F09091EA0195FB882780F921E0822743
-:1046C00080FB95F99093EA0181E30E948922882377
-:1046D00059F09091EA0196FB882780F921E0822722
-:1046E00080FB96F99093EA0181E10E948922882358
-:1046F00059F09091EA0197FB882780F921E0822701
-:1047000080FB97F99093EA018091EA010E940524C9
-:104710008091EA0187FB882780F980930D0187E269
-:104720000E948922C82F8EE10E9489228111C260D5
-:104730008FE10E9489228111C46080E20E94892257
-:104740008111C86081E20E9489228111C06182E2E8
-:104750000E9489228111C06283E20E948922811114
-:10476000C06484E20E948922882311F0C06802C0DC
-:10477000CC2329F08C2F0E94FC236C2F03C00E94B5
-:10478000F823682F70E080E090E0CF910C949D1E9C
-:10479000CF9108956DEE7EEF80E090E00E94BF2DF6
-:1047A00060E082E090E00E94B12D60E083E090E064
-:1047B0000E94B12D60E084E090E00E94B12D60E0A5
-:1047C00085E090E00C94B12D80E090E00E94AB2D4C
-:1047D00021E08D3E9E4F09F020E0822F089582E077
-:1047E00090E00C94A32D682F82E090E00C94B12D02
-:1047F00083E090E00C94A32D682F83E090E00C946C
-:10480000B12D84E090E00C94A32D682F84E090E01B
-:104810000C94B12D8091DF0180FF0BC060911301DA
-:1048200085E0689FB001112475956795759567952A
-:104830002AC081FF09C06091130185E0689FB00123
-:104840001124759567951FC082FF07C06091130101
-:1048500085E0689FB001112416C04091E001442317
-:10486000C9F060911201461788F72091130185E085
-:10487000289F90011124429FC001439F900D112455
-:1048800070E00E94752D6038710540F46115710566
-:1048900039F002C065E070E0862F08958FE7089533
-:1048A00081E008958091DF0180FF08C060911101CF
-:1048B00070E0759567957595679521C081FF06C075
-:1048C0006091110170E07595679519C082FF04C071
-:1048D0006091110170E010C08091E0018823C1F067
-:1048E000609110018617A0F790911101989FC00167
-:1048F000112470E00E94752D6038710528F461154F
-:10490000710521F0862F08958FE7089581E00895BD
-:1049100061E070E0F4CF803F21F40E940A24819589
-:1049200004C0813F29F40E940A248093E301089582
-:10493000823F21F40E940A24819504C0833F29F418
-:104940000E940A248093E2010895893F19F40E948D
-:10495000522405C08A3F31F40E94522481958093ED
-:10496000E40108958B3F21F40E945224819504C0F4
-:104970008C3F29F40E9452248093E5010895843FDE
-:1049800021F48091E101816017C0853F21F480917D
-:10499000E101826011C0863F21F48091E1018460D1
-:1049A0000BC0873F21F48091E101886005C0883FFA
-:1049B00031F48091E10180618093E10108958D3FA0
-:1049C00021F48091DF0181600BC08E3F21F4809142
-:1049D000DF01826005C08F3F29F48091DF01846090
-:1049E0008093DF010895803F39F48091E30187FFD0
-:1049F0006CC01092E30169C0813F29F48091E3010A
-:104A00001816BCF362C09091E201823F29F497FF2F
-:104A10005CC01092E20159C0833F19F41916CCF31F
-:104A200054C0893F41F48091E40118160CF04DC048
-:104A30001092E4014AC08A3F29F48091E40187FF83
-:104A400044C0F6CF8B3F39F48091E50187FF3DC02C
-:104A50001092E5013AC08C3F29F48091E5011816C7
-:104A6000BCF333C0843F21F48091E1018E7F17C0F5
-:104A7000853F21F48091E1018D7F11C0863F21F4B3
-:104A80008091E1018B7F0BC0873F21F48091E10190
-:104A9000877F05C0883F31F48091E1018F7E80934C
-:104AA000E10113C08D3F21F48091DF018E7F0BC0A7
-:104AB0008E3F21F48091DF018D7F05C08F3F29F467
-:104AC0008091DF018B7F8093DF018091E201811172
-:104AD0000EC08091E30181110AC08091E40181112F
-:104AE00006C08091E501811102C01092E001089595
-:104AF0008091D70183FF7EC088E396E00E9455072E
-:104B00008091E1011F928F9383E396E09F938F93AF
-:104B10000E94EE0781E396E00E9455072091E20192
-:104B2000822F992787FD90959F932F938EE296E091
-:104B30009F938F930E94EE078CE296E00E945507A8
-:104B40002091E301822F992787FD90959F932F93C2
-:104B500089E296E09F938F930E94EE0787E296E0AA
-:104B60000E9455072091E401822F992787FD909597
-:104B70009F932F9384E296E09F938F930E94EE077A
-:104B800082E296E00E9455072091E501822F992745
-:104B900087FD90959F932F938FE196E09F938F933E
-:104BA0000E94EE078CE196E00E9455078091E0019B
-:104BB0001F928F9389E196E09F938F930E94EE0757
-:104BC00087E196E00E9455078091DF011F928F9345
-:104BD00084E196E09F938F930E94EE0781E196E037
-:104BE0000E9455078DB79EB74C960FB6F8949EBF9E
-:104BF0000FBE8DBF81EE91E00E942D150E94DA213B
-:104C00009093DE018093DD0108951F93CF93DF938E
-:104C10008091DD019091DE010E94E6214091E0014A
-:104C2000442321F02091140130E006C020911501A9
-:104C30005AE0259F900111248217930708F482C03F
-:104C40008091E2011091E301D091E401C091E5016E
-:104C5000811107C0111105C0D11103C0CC2309F483
-:104C600071C04F3F19F04F5F4093E001181624F4D4
-:104C70000E940A248093E2018091E20187FF05C02F
-:104C80000E940A2481958093E201111624F40E9467
-:104C90000A248093E3018091E30187FF05C00E940D
-:104CA0000A2481958093E3016091E201662339F142
-:104CB0001091E301112319F1772767FD7095872F74
-:104CC000972F0E947A2C23E333E343E35FE30E94B0
-:104CD000DE2C0E94472C6093E201612F772767FD4D
-:104CE0007095872F972F0E947A2C23E333E343E3B9
-:104CF0005FE30E94DE2C0E94472C6093E3011D16A7
-:104D000024F40E9452248093E4018091E40187FFFF
-:104D100005C00E94522481958093E4011C1624F45E
-:104D20000E9452248093E5018091E50187FF05C030
-:104D30000E94522481958093E501DF91CF911F91CC
-:104D40000C947825DF91CF911F910895E1EEF1E069
-:104D500085E0DF011D928A95E9F71092E00110923B
-:104D6000DF0108958BE598E00E9455071F9281E0CE
-:104D70008F931F9285E08F938DE098E09F938F93A0
-:104D80000E94EE070F900F900F900F900F900F90D2
-:104D900008958330E9F128F4813061F0823009F11F
-:104DA0000895853009F462C008F449C0863009F4DA
-:104DB00074C0089520911501862F90E0820F911DF7
-:104DC0008F3F910520F4620F6093150103C08FEFB0
-:104DD00080931501809115011F928F9386E497E0CF
-:104DE00072C020911401862F90E0820F911D8F3F99
-:104DF000910520F4620F6093140103C08FEF80933C
-:104E00001401809114011F928F9384E397E05BC09B
-:104E100020911301862F90E0820F911D8F3F910505
-:104E200020F4620F6093130103C08FEF809313018E
-:104E3000809113011F928F9381E297E044C02091EB
-:104E40001201862F90E0820F911D8F3F910520F473
-:104E5000620F6093120103C08FEF80931201809163
-:104E600012011F928F938CE097E02DC020911101C9
-:104E7000862F90E0820F911D8F3F910520F4620FE5
-:104E80006093110103C08FEF809311018091110194
-:104E90001F928F9383EF96E016C020911001862F0A
-:104EA00090E0820F911D8F3F910520F4620F609377
-:104EB000100103C08FEF80931001809110011F92A9
-:104EC0008F9388ED96E09F938F930E94EE070F904B
-:104ED0000F900F900F900895833081F128F4813066
-:104EE00059F08230D1F00895853009F449C0B8F105
-:104EF000863009F456C0089580911501681720F492
-:104F0000861B8093150102C0109215018091150136
-:104F10001F928F9389EC96E054C08091140168171A
-:104F200020F4861B8093140102C01092140180911A
-:104F300014011F928F9387EB96E043C08091130179
-:104F4000681720F4861B8093130102C0109213018E
-:104F5000809113011F928F9384EA96E032C0809172
-:104F60001201681720F4861B8093120102C0109270
-:104F70001201809112011F928F938FE896E021C059
-:104F800080911101681720F4861B8093110102C0E3
-:104F900010921101809111011F928F9386E796E084
-:104FA00010C080911001681720F4861B80931001B7
-:104FB00002C010921001809110011F928F938BE517
-:104FC00096E09F938F930E94EE070F900F900F90A3
-:104FD0000F900895CF93C82F1F928F9320E639E04A
-:104FE0003F932F930E94EE0761E070E080E090E035
-:104FF00004C0660F771F881F991FCA95D2F70E94B9
-:105000009D1E0F900F900F900F90CF910C94A11AAE
-:10501000CF938D3109F465C0B0F58E3009F4CBC162
-:1050200000F5873009F49BC1A8F4863009F06AC204
-:105030008091D701817F8E7F8093D70185E699E0AB
-:105040000E94550787EA9DE00E94550781E0809302
-:10505000E70180C1883009F44FC08B3009F47CC16E
-:1050600051C2863109F4EDC138F4803109F4B6C17A
-:10507000813109F42DC246C2893109F4CBC18B318B
-:1050800009F486C13FC2853309F434C248F487323B
-:1050900009F430C208F430C2893209F42BC232C29A
-:1050A000833438F48A3308F029C2883309F454C1B0
-:1050B00029C2833409F41EC2883409F023C20E9435
-:1050C000A11A86E99DE00E9455079FEF23ED80E33A
-:1050D000915020408040E1F700C000000E9434223F
-:1050E00039C186EB9DE00E9455070E94012C0E9469
-:1050F000DC140E941A0D2EC18BEA9DE00E94550718
-:1051000086E79BE00E9455070E94F8231F928F9329
-:1051100083E79BE09F938F930E94EE0781E79BE0DC
-:105120000E9455070E94EF23C82F8EE59BE00E9446
-:1051300055071F92CF9329E53BE03F932F930E94A1
-:10514000EE0787E59BE00E9455078DE49BE00E94F7
-:1051500055078C2F81701F928F932AE43BE03F9379
-:105160002F930E94EE0788E49BE00E9455078EE390
-:105170009BE00E945507C1FB882780F91F928F93FF
-:105180002BE33BE03F932F930E94EE0789E39BE0E4
-:105190000E9455078DE29BE00E945507C2FB8827BD
-:1051A00080F91F928F932AE23BE03F932F930E9456
-:1051B000EE0788E29BE00E9455078FE19BE00E948A
-:1051C0005507C3FBCC27C0F91F92CF938CE19BE01E
-:1051D0009F938F930E94EE078AE19BE00E94550700
-:1051E0000E940124C82F86E09BE00E9455071F9271
-:1051F000CF9321E03BE03F932F930E94EE078FEF88
-:105200009AE00E94550786EE9AE00E9455078C2F7F
-:1052100081701F928F9323EE3AE03F932F930E9469
-:10522000EE078DB79EB780960FB6F8949EBF0FBE5F
-:105230008DBF81EE9AE00E9455078AEC9AE00E94A9
-:105240005507C1FB882780F91F928F9327EC3AE01E
-:105250003F932F930E94EE0785EC9AE00E9455073A
-:1052600083EB9AE00E945507C2FB882780F91F92C2
-:105270008F9320EB3AE03F932F930E94EE078EEA44
-:105280009AE00E9455078CE99AE00E945507C3FBFB
-:10529000882780F91F928F9329E93AE03F932F9353
-:1052A0000E94EE0787E99AE00E9455078DE89AE090
-:1052B0000E945507C4FB882780F91F928F932AE824
-:1052C0003AE03F932F930E94EE0788E89AE00E940D
-:1052D000550786E79AE00E945507C5FB882780F9A5
-:1052E0001F928F9323E73AE03F932F930E94EE079C
-:1052F00081E79AE00E94550785E59AE00E945507EC
-:10530000C6FB882780F91F928F9322E53AE03F93EE
-:105310002F930E94EE0780E59AE00E94550788E4EB
-:105320009AE00E945507C7FBCC27C0F91F92CF9384
-:1053300085E49AE09F938F930E94EE0783E49AE0BE
-:105340000E9455078DB79EB74C960FB6F8949EBF36
-:105350000FBE8DBFC1E0DBC08CE899E058C08091E2
-:10536000D701C82FC17080FF09C089E89DE00E9465
-:1053700055078091D701817F8E7F44C08DE79DE0E6
-:105380000E9455078091D70181608093D701E2CFB9
-:105390008091D70181FBCC27C0F991E0C927C0FBE0
-:1053A00081F98093D701CC2319F080E79DE025C0D7
-:1053B00082E69DE02CC08091D70182FBCC27C0F90A
-:1053C00091E0C927C0FB82F98093D701CC2319F063
-:1053D00083E59DE012C083E49DE019C08091D70170
-:1053E00083FBCC27C0F991E0C927C0FB83F98093E8
-:1053F000D701CC2351F087E39DE00E9455078091AF
-:10540000D70181608093D70182C08AE29DE00E942B
-:105410005507A0CF8BE19DE00E9455078FEE9CE0E1
-:105420000E94550782EB9CE00E94550785E89CE0AE
-:105430000E94550781E49CE00E94550786E19CE0AC
-:10544000E6CF88E09CE00E9455070E94DC141F9282
-:105450008F938EEE9BE09F938F930E94EE07809137
-:105460000C011F928F9387ED9BE09F938F930E9477
-:10547000EE0780916E011F928F9384EC9BE09F93C7
-:105480008F930E94EE0780910D011F928F9381EB05
-:105490009BE09F938F930E94EE078091D90190919A
-:1054A000DA01A091DB01B091DC01BF93AF939F9330
-:1054B0008F938DE99BE09F938F930E94EE078DB7AA
-:1054C0009EB746960FB6F8949EBF0FBE8DBF42CFD3
-:1054D0000E94A11AC0910D0181E0C827C0930D015F
-:1054E000CC2329F083E99BE00E94550710C088E88F
-:1054F0009BE08DCF80E003C08D5101C089530E9495
-:10550000EA2728CF86E89BE00E945507C0E08C2F51
-:10551000CF91089580E0089580E00895CF93C82F3B
-:105520008091E701813081F020F0823009F44CC095
-:1055300042C1A0910E01B0910F018C91813169F0AF
-:10554000823209F03AC109C0A0910E01B0910F0159
-:105550008C91813111F0823249F48C2F0E948A2A79
-:1055600081112FC08C2F0E9408282CC08C2F0E94E4
-:105570008C2A811126C0C431E1F070F4CB3081F067
-:10558000C031D1F40E94B22688E599E00E94550707
-:1055900082E08093E70115C0C93259F0C83361F445
-:1055A00085E699E00E9455078CE599E00E94550731
-:1055B00008C01092E70103C186E599E00E945507F3
-:1055C000FEC081E08170FDC0C43220F5CE3108F00C
-:1055D000C0C0CB3099F1C8F4C73009F0D2C08AE01E
-:1055E0008093150194E19093140193E0909313013B
-:1055F0008093120188E08093110188E2809310016A
-:105600008CEF97E00E945507BFC0C33149F1C43108
-:10561000C1F0B7C0CB3409F4A9C028F4C93289F06D
-:10562000C83361F0AEC0C13509F49EC0C23509F47B
-:1056300099C0CE3409F0A5C06AE09EC00E94B2268F
-:10564000A3C08091E601882319F01092E6019CC066
-:1056500089E098E00E94550781E08093E701B1C09E
-:1056600083EE97E00E94550781ED97E00E94550771
-:10567000809115011F928F938EEC97E09F938F93EB
-:105680000E94EE078CEC97E00E9455078AEB97E0AA
-:105690000E945507809114011F928F9387EB97E02A
-:1056A0009F938F930E94EE0785EB97E00E9455072A
-:1056B00086EA97E00E945507809113011F928F930D
-:1056C00083EA97E09F938F930E94EE0781EA97E029
-:1056D0000E94550780E997E00E94550780911201CA
-:1056E0001F928F938DE897E09F938F930E94EE0710
-:1056F0008BE897E00E94550786E797E00E945507E0
-:10570000809111011F928F9383E797E09F938F936E
-:105710000E94EE0781E797E00E9455078AE597E02F
-:105720000E945507809110011F928F9387E597E0A3
-:105730009F938F930E94EE0785E597E00E9455079F
-:105740008DB79EB748960FB6F8949EBF0FBE8DBF1B
-:105750001BC0CE51EC2FF0E0E15DFE4F80818093C5
-:10576000E60112C061E003C061E006C06AE080911A
-:10577000E6010E94C92608C08091E6010E946C27BC
-:1057800003C08AEF97E013C08091E601882369F097
-:105790001F928F9384EF97E09F938F930E94EE0761
-:1057A0000F900F900F900F9004C081EF97E00E9430
-:1057B000550781E006C01092E70180E002C080E05A
-:1057C00001CFCF910895E1E8F0E080818860808387
-:1057D0008081816080838FB7F89493E090938900F3
-:1057E00090ED909388008FBF0895EFE6F0E0808100
-:1057F000826080830895EFE6F0E080818D7F808372
-:105800000895EFE6F0E0808192E089278083089593
-:105810001F920F920FB60F9211242F933F934F9325
-:105820005F936F937F938F939F93AF93BF93EF9308
-:10583000FF938091E8019091E90101969093E9012D
-:105840008093E801811103C082E00E941A0DE0916B
-:10585000E901E695E695F0E0EA53F24FE491809194
-:10586000E8018E1303C080E00E941A0DFF91EF91B2
-:10587000BF91AF919F918F917F916F915F914F9168
-:105880003F912F910F900FBE0F901F90189504D04D
-:105890006894B1118DC0089570D088F09F5790F032
-:1058A000B92F9927B751A0F0D1F0660F771F881F45
-:1058B000991F1AF0BA95C9F712C0B13081F077D0AC
-:1058C000B1E0089574C0672F782F8827B85F39F04A
-:1058D000B93FCCF3869577956795B395D9F73EF4A4
-:1058E00090958095709561957F4F8F4F9F4F08954C
-:1058F000E89409C097FB3EF490958095709561956A
-:105900007F4F8F4F9F4F9923A9F0F92F96E9BB271F
-:105910009395F695879577956795B795F111F8CF9B
-:10592000FAF4BB0F11F460FF1BC06F5F7F4F8F4F06
-:105930009F4F16C0882311F096E911C0772321F0FC
-:105940009EE8872F762F05C0662371F096E8862F94
-:1059500070E060E02AF09A95660F771F881FDAF7EB
-:10596000880F9695879597F9089557FD9058440F9D
-:10597000551F59F05F3F71F04795880F97FB991FAE
-:1059800061F09F3F79F0879508951216130614066B
-:10599000551FF2CF4695F1DF08C0161617061806F8
-:1059A000991FF1CF86957105610508940895E894D3
-:1059B000BB2766277727CB0197F908950BD078C0CE
-:1059C00069D028F06ED018F0952309F05AC05FC056
-:1059D0001124EECFCADFA0F3959FD1F3950F50E0CD
-:1059E000551F629FF001729FBB27F00DB11D639F91
-:1059F000AA27F00DB11DAA1F649F6627B00DA11D37
-:105A0000661F829F2227B00DA11D621F739FB00DDC
-:105A1000A11D621F839FA00D611D221F749F33274C
-:105A2000A00D611D231F849F600D211D822F762FE5
-:105A30006A2F11249F5750408AF0E1F088234AF0E2
-:105A4000EE0FFF1FBB1F661F771F881F915050402E
-:105A5000A9F79E3F510570F014C0AACF5F3FECF349
-:105A6000983EDCF3869577956795B795F795E7951A
-:105A70009F5FC1F7FE2B880F911D9695879597F92B
-:105A8000089597F99F6780E870E060E008959FEFC0
-:105A900080EC089500240A941616170618060906C5
-:105AA000089500240A941216130614060506089594
-:105AB000092E0394000C11F4882352F0BB0F40F41C
-:105AC000BF2B11F460FF04C06F5F7F4F8F4F9F4F5C
-:105AD0000895991B79E004C0991F961708F0961B4A
-:105AE000881F7A95C9F78095089597FB072E16F4BD
-:105AF000009407D077FD09D00E948F2D07FC05D0B8
-:105B00003EF4909581959F4F0895709561957F4FD4
-:105B10000895EE0FFF1F0590F491E02D0994AA1B44
-:105B2000BB1B51E107C0AA1FBB1FA617B70710F088
-:105B3000A61BB70B881F991F5A95A9F780959095BA
-:105B4000BC01CD010895F999FECF92BD81BDF89AAF
-:105B5000992780B50895A8E1B0E042E050E00C94A8
-:105B6000C62D262FF999FECF1FBA92BD81BD20BD4B
-:105B70000FB6F894FA9AF99A0FBE019608950E940A
-:105B8000B12D272F0C94B22DDC01CB01FC01F9992A
-:105B9000FECF06C0F2BDE1BDF89A319600B40D9279
-:0C5BA00041505040B8F70895F894FFCF32
-:105BAC0020021B0D0C0EE90DB50D820D0101C50176
-:105BBC0028080A03140A3F4D3620394605F904C358
-:105BCC0004A3046A04DD03F6030F0428044804014B
-:0A5BDC000203040506070809000093
+:1002D00001000100AE00010001000000160345000E
+: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
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A
+:1004E0009091EF01A091F001B091F1018730904B14
+:1004F000A740B04BB9F41092EE011092EF011092A8
+:10050000F0011092F10114BE84B7877F84BF88E1A7
+:100510000FB6F89480936000109260000FBEE0E088
+:10052000FFE3099511E0A0E0B1E0E8ECF5E402C0DA
+:1005300005900D92A433B107D9F711E0A4E3B1E01F
+:1005400001C01D92AE3EB107E1F70E940B090C9469
+:10055000E2220C94000061110BC0FC01828188230F
+:1005600021F085EE0E946C0F03C085EE0E943410CE
+:1005700080E090E0089508956091B1017091B2011A
+:100580008091B3019091B4010E94F01956985E9841
+:1005900025982D9826982E9827982F98813019F015
+:1005A000823021F00895259A2D9A0895269A2E9A40
+:1005B00008958CEB92E0892B11F00E94BC0280E040
+:1005C00090E0089556985E9825982D9826982E9834
+:1005D00027982F988FEF90E0909389008093880060
+:1005E00090938B0080938A0090938D0080938C0071
+:1005F000259A2D9A2FEF80E792E02150804090407D
+:10060000E1F700C00000269A2E9A2FEF80E792E0D3
+:10061000215080409040E1F700C00000279A2F9AB7
+:100620002FEF80E792E0215080409040E1F700C03A
+:10063000000025982D982FEF80E792E02150804010
+:100640009040E1F700C0000026982E982FEF80E739
+:1006500092E0215080409040E1F700C000002798D0
+:100660002F9856985E9825982D9826982E9827981A
+:100670002F98089589EA8093800089E08093810013
+:1006800024982C983F988AB18F748AB96E98479AAB
+:100690008BB1806B8BB9769A0E94E2028BEB92E071
+:1006A000892B11F00E94BB0280E090E0089580E267
+:1006B000809300018091340181110EC00E94A60335
+:1006C00081E0809334012FEF83ED90E3215080404F
+:1006D0009040E1F700C0000080E40E94AC038093EA
+:1006E000000181112EC00E94D60380930001811168
+:1006F00028C00E94D60380930001811122C08FE39D
+:100700000E94D6038093000181111BC00E94CE037A
+:1007100080E40E94AC0380930001811112C08CE040
+:100720000E94D6038093000181110BC00E94D60362
+:1007300080930001811105C08FE30E94D60380934E
+:1007400000010E94CE038091000108951092B9002B
+:100750008AE08093B800089594EA9093BC00909149
+:10076000BC0097FFFCCF9091B900987F983021F0A2
+:10077000903111F081E008958093BB0084E880936C
+:10078000BC008091BC0087FFFCCF8091B900887FBE
+:10079000883111F0803471F780E0089584E9809306
+:1007A000BC008091BC0084FDFCCF08958093BB0009
+:1007B00084E88093BC008091BC0087FFFCCF9091BF
+:1007C000B900987F81E0983209F480E0089584E8C8
+:1007D0008093BC008091BC0087FFFCCF8091BB0060
+:1007E000089580910001811115C080E40E94AC033E
+:1007F0008093000181110CC082E10E94D603809396
+:100800000001811105C08FEF0E94D6038093000183
+:100810000E94CE0384B1807F84B985B1807F85B981
+:100820008AB1837F8AB98BB1837F8BB93E98469812
+:1008300008950E945703809300010E94F10380B342
+:100840008C7080BB81B3836F81BBE4E4F1E0A6E3ED
+:10085000B1E011921D9281E0E235F807D1F78AE309
+:1008600093E0892B11F00C943A030895BF92CF9234
+:10087000DF92EF92FF920F931F93CF93DF938091BC
+:100880000001882379F0809135018F5F80933501D5
+:10089000811108C00E94570380930001811102C09A
+:1008A0000E94E20206E311E0C0E0D0E0DD24D39430
+:1008B00082E0C82EEE24E394F12CC73000F580913D
+:1008C0000001811162C080E40E94AC0380930001AA
+:1008D000811112C082E10E94D60380930001811130
+:1008E0000BC0C7010C2E01C0880F0A94EAF780954F
+:1008F0000E94D603809300010E94CE0346C0CA30F6
+:10090000A1F028F4C83059F0C93061F005C0CC30EE
+:1009100089F070F0CD3089F0209A289810C0219A83
+:1009200029980DC0229A2A980AC0239A2B9807C0AA
+:10093000529A01C0539A5B9802C03E9A4698E0EAE8
+:10094000EA95F1F78FB1799960C092E081708D25B9
+:10095000892B7C9B02C090E001C094E0892B7D9B99
+:1009600002C090E001C098E0892B7E9B02C090E01D
+:1009700001C090E1892B9FB19095991F9927991FEC
+:100980009295990F907E892B0FC080910001811163
+:1009900051C080E40E94AC03809300018823B9F128
+:1009A000B12C0E94CE038B2DF8019081981719F07D
+:1009B0008083C09201010E94F10321960F5F1F4FB7
+:1009C000CE30D10509F079CF809101018823B1F0B3
+:1009D000815080930101882339F08FE99FE00197CE
+:1009E000F1F700C000000AC0A4E4B1E0E6E3F1E0E2
+:1009F00081918D9391E0E434F907D1F789ED92E08C
+:100A0000892BD1F00E94D90217C090E09FCF83E1DB
+:100A10000E94D603809300018111C2CF81E40E941D
+:100A2000AC03809300018111BBCF0E94E703B82E75
+:100A3000B094B7CF80E0B8CF81E0DF91CF911F9124
+:100A40000F91FF90EF90DF90CF90BF900895E82F27
+:100A5000F0E0EC5BFE4F8081089508958B3B91059B
+:100A600078F4883A910540F5853A9105D0F48430C0
+:100A7000910508F0B1C08130910509F4ADC06BC09B
+:100A8000803E910508F467C0883E910508F4A4C033
+:100A90009C01205F31092031310508F05CC0906570
+:100AA0000895853A910509F459C0863A910509F4EB
+:100AB00058C083E890E40895883A910509F454C039
+:100AC000893A910509F453C08A3A910509F452C054
+:100AD0008B3A910509F451C08C3A910509F450C044
+:100AE0008D3A910509F44FC0803B910509F44EC041
+:100AF0008E3A910509F44DC08F3A910509F44CC026
+:100B0000813B910509F44BC0823B910509F44AC031
+:100B1000833B910509F449C0843B910509F448C021
+:100B2000853B910509F447C0863B910509F446C011
+:100B3000873B910509F445C0883B910509F444C001
+:100B4000893B910509F443C08A3B910509F042C0F5
+:100B50008AE296E4089580E090E0089581E890E4C8
+:100B6000089582E890E4089582EE94E4089589EE71
+:100B700094E408958AEE94E4089585EB94E408954E
+:100B800086EB94E4089587EB94E408958CEC94E468
+:100B900008958DEC94E4089583E895E408958AE837
+:100BA00095E4089582E995E4089584E995E408952B
+:100BB00081E296E4089583E296E4089584E296E45F
+:100BC000089585E296E4089586E296E4089587E222
+:100BD00096E4089580E094E40895089596E0799F5E
+:100BE000F001112494E5899FE00DF11D1124E60F19
+:100BF000F11DEE0FFF1FEC51FF4F85919491089569
+:100C0000880F991F805A9040FC0185919491089516
+:100C1000880F991F80529F4FFC01859194910895F0
+:100C200026E0729FF001112444E5849FE00DF11D40
+:100C30001124E60FF11DEE0FFF1FEC51FF4F259120
+:100C40003491C9019A9581159F4110F4C901089505
+:100C5000C90190528115904128F4C9019F700E94EA
+:100C600008060895C90190538115904120F4C901E7
+:100C70009927906C0895211580E5380769F40E9442
+:100C8000A5139FEF24E34CE0915020404040E1F752
+:100C900000C000000C94E91A213080E5380731F4D7
+:100CA0008091CC0181608093CC010895C901905559
+:100CB0008115904108F050C0832F99278F70992794
+:100CC00081309105D9F4A9014370552702C0880FDE
+:100CD000991F4A95E2F79C68A90164E0440F551FEB
+:100CE0006A95E1F744275370842B952B73E0220F0C
+:100CF000331F7A95E1F7207633271DC082309105A6
+:100D000029F4922F8827816F906A08958330910586
+:100D1000A9F4A9014370552781E090E002C0880F33
+:100D2000991F4A95E2F79C6843E0220F331F4A95CA
+:100D3000E1F7207E3770822B932B08950497F1F40E
+:100D4000A9014370552781E090E002C0880F991FE8
+:100D50004A95E2F79A68E8CFC9019057811590410A
+:100D600020F4C9019F7090620895C90190588115BF
+:100D7000904120F4C9019F70906A0895203E31058A
+:100D8000E0F4203C310558F52133310509F470C0F9
+:100D900048F42932310509F464C02A32310509F4D6
+:100DA0006EC074C029333105F1F022383105D9F015
+:100DB0002533310509F44EC069C0233E310589F160
+:100DC00038F4203E3105C1F0223E3105E1F05EC02D
+:100DD000263E310569F1273E3105A9F157C0C90109
+:100DE0000E94000608958091DF0180FD02C081FF0E
+:100DF0004DC080EE90E04BC08091DF0180FFF9CFC5
+:100E000089E390E044C08091DF0182FF0EC08091B1
+:100E1000DF0184FF03C080E090E039C083EE90E002
+:100E200036C08091DF0182FFF2CF82EE90E02FC0CA
+:100E30008091DF0183FF0BC08091DF0184FDEBCF48
+:100E400087EE90E024C08091DF0183FFF5CF86EE2E
+:100E500090E01DC08091DF0185FF07C089E290E02E
+:100E600016C08091DF0185FFF9CF85E390E00FC0C8
+:100E70008091DF0186FF07C08AE290E008C0809180
+:100E8000DF0186FFF9CF81E390E001C0C9010E9434
+:100E90002E0508950895809162010895CF93DF9300
+:100EA00000D01F92CDB7DEB72091E501243019F5AF
+:100EB00023E029839B838A832093E9008FEF90911D
+:100EC000E800815095FD06C095ED9A95F1F7000078
+:100ED0008111F5CF8091E80085FF0DC040E050E022
+:100EE00063E070E0CE0101960E94B8098091E800AD
+:100EF0008E778093E8000F900F900F90DF91CF9145
+:100F00000895CF93DF9300D01F92CDB7DEB7209125
+:100F1000E501243021F522E029839B838A8383E045
+:100F20008093E9008FEF9091E800815095FD06C015
+:100F300095ED9A95F1F700008111F5CF8091E800C9
+:100F400085FF0DC040E050E063E070E0CE01019607
+:100F50000E94B8098091E8008E778093E8000F9096
+:100F60000F900F90DF91CF9108952091E5012430EB
+:100F7000F1F422E02093E9002FEF3091E8002150B6
+:100F800035FD06C035ED3A95F1F700002111F5CF9A
+:100F90002091E80025FF0BC040E050E065E070E0E4
+:100FA0000E94B8098091E8008E778093E800089548
+:100FB000CF93DF93EC018091E501843009F046C0C6
+:100FC00090910C019923D9F090910D019923B9F0DA
+:100FD0008093E9008FEF9091E800815095FD06C065
+:100FE00095E19A95F1F700008111F5CF8091E80025
+:100FF00085FF2CC040E050E060E170E017C081E068
+:101000008093E9008FEF9091E800815095FD06C034
+:1010100095ED9A95F1F700008111F5CF8091E800E8
+:1010200085FF14C040E050E068E070E0CE010E940F
+:10103000B8098091E8008E778093E80080E1FE0196
+:10104000A2E5B1E001900D928A95E1F7DF91CF9191
+:1010500008958091E401811109C00E944A0B0E9409
+:10106000A70B8091E20084608093E20008951092C3
+:10107000E401089508950C940F210E94801A0E94A3
+:1010800015210E94440E0C944A0742E061EC81E075
+:101090000E94C40A42E061EC82E00E94C40A42E07D
+:1010A00061EC83E00E94C40A42E161EC84E00C94AC
+:1010B000C40A8091E701833009F455C030F48130CF
+:1010C00071F0823009F48EC008958A3009F47AC034
+:1010D0008B3009F460C0893009F09CC020C0809139
+:1010E000E601813A09F096C08091E800877F8093FD
+:1010F000E8008091EA019091EB01892B21F060E0FA
+:1011000080E090E003C060E182E591E070E00E9441
+:10111000010A8091E8008B778093E8000895809120
+:10112000E601813209F076C08091EA019091EB01ED
+:10113000009719F0039709F06DC08091E800877F50
+:101140008093E8008091E80082FD05C08091E50170
+:101150008111F8CF5FC08091F1008093620180918E
+:10116000E8008B7753C08091E601813A09F052C0C4
+:101170008091EA019091EB01892B09F04BC080919D
+:10118000E800877F8093E8008091E80080FFFCCF33
+:1011900080910C0136C08091E6018132D9F58091B1
+:1011A000EA019091EB01892BA9F58091E800877FF6
+:1011B0008093E8000E94F90A8091E80180930C0175
+:1011C0000C94A5138091E601813221F58091E8000D
+:1011D000877F8093E8000E94F90A8091E90180935B
+:1011E000630108958091E601813AA1F48091E800BD
+:1011F000877F8093E8008091E80080FFFCCF80919A
+:1012000063018093F1008091E8008E778093E8007D
+:101210000C94F90A089584B7877F84BF88E10FB6DC
+:10122000F89480936000109260000FBE90E080E818
+:101230000FB6F89480936100909361000FBE0E94F6
+:10124000930E0E944A0B0E94A70B8091E2008460DB
+:101250008093E20078940E94220E0E94950E82E014
+:1012600091E00E943F0E0E94FD208091E5018530B3
+:1012700069F40E94431A8091E3018823B1F30E942C
+:101280006B1A882391F30E94A209EFCF0E949B0E54
+:10129000ECCF292F332723303105A9F06CF421300E
+:1012A000310509F442C02230310509F043C08DE612
+:1012B00090E020E133E042C021323105C9F0223212
+:1012C000310519F137C099278130910541F08230FD
+:1012D000910541F0892B71F5ECE0F3E005C0E4EFF6
+:1012E000F2E002C0ECEDF2E0849190E09F0126C0B4
+:1012F000643000F5E62FF0E0EE0FFF1FEE5DFE4FCD
+:101300002081318189E090E019C0643098F4E62FA3
+:10131000F0E0DF01AA0FBB1FA65EBE4F2D913C91EE
+:10132000EA5EFE4F808190E009C082E190E02DE707
+:1013300033E004C080E090E020E030E0FA01318347
+:101340002083089580E189BD82E189BD09B400FE52
+:10135000FDCF8091D8008F7D8093D8008091E000F0
+:1013600082608093E0008091E00081FDFCCF0895D1
+:10137000CF92DF92EF92FF920F931F93CF93DF9361
+:101380007C018B01EA010E941A0B811131C0209768
+:1013900031F088819981081B190BE80EF91EC12CC8
+:1013A000D12C0115110519F18091E80085FD14C0BB
+:1013B0008091E8008E778093E800209741F0888143
+:1013C00099818C0D9D1D9983888385E011C00E94B1
+:1013D0001A0B882331F30CC0F70181917F018093B0
+:1013E000F10001501109FFEFCF1ADF0ADACF80E0D8
+:1013F000DF91CF911F910F91FF90EF90DF90CF90F1
+:1014000008952091EC013091ED012617370748F03F
+:101410006115710539F42091E8002E772093E800DA
+:1014200001C0B901FC0120E061157105B9F180919D
+:10143000E501882309F440C0853009F43FC080915C
+:10144000E80083FD3DC08091E80082FF06C08091E6
+:10145000E80082FF26C080E008958091E80080FFC8
+:10146000E3CF2091F3008091F20090E0922B611580
+:10147000710551F08830910538F421912093F100E5
+:10148000615071090196F3CF21E0089709F020E03F
+:101490008091E8008E778093E800C6CF2111C7CFF6
+:1014A000D6CF8091E501882339F0853039F08091DD
+:1014B000E80083FFCCCF04C082E0089583E0089564
+:1014C00081E008952091EC013091ED012617370756
+:1014D00048F06115710539F42091E8002E772093CA
+:1014E000E80001C0B901FC0120E061157105C1F1FE
+:1014F0008091E501882309F441C0853009F440C09A
+:101500008091E80083FD3EC08091E80082FF06C024
+:101510008091E80082FF27C080E008958091E80074
+:1015200080FFE3CF2091F3008091F20090E0922BB6
+:101530006115710559F08830910540F4249120938C
+:10154000F1003196615071090196F2CF21E00897C0
+:1015500009F020E08091E8008E778093E800C5CF05
+:101560002111C6CFD5CF8091E501882339F0853090
+:1015700039F08091E80083FFCBCF04C082E008956A
+:1015800083E0089581E00895982F973058F590935F
+:10159000E900981739F07091EC002091ED0050911E
+:1015A000F00003C0242F762F50E021FF19C03091A6
+:1015B000EB003E7F3093EB003091ED003D7F3093A8
+:1015C000ED003091EB0031603093EB007093EC0054
+:1015D0002093ED005093F0002091EE0027FF07C00C
+:1015E0009F5FD3CF8F708093E90081E0089580E002
+:1015F00008958091E60187FD05C08091E80080FF95
+:101600000EC012C08091E80082FD05C08091E50106
+:101610008111F8CF08958091E8008B7708C0809100
+:10162000E5018111EACF08958091E8008E778093DB
+:10163000E80008958091E4009091E50045E620914E
+:10164000EC0020FF21C02091E80020FD21C0209166
+:10165000E501222389F0253089F02091EB0025FD5A
+:101660000FC02091E4003091E5002817390739F3C5
+:10167000415041F0C901E3CF82E0089583E008952D
+:1016800081E0089584E008952091E80022FFDFCFF3
+:1016900080E008950E94B80B0E94C00BE0EEF0E0DD
+:1016A000808181608083E8EDF0E080818F778083A6
+:1016B00019BCA7EDB0E08C918E7F8C9380818F7EDA
+:1016C00080831092E40108950F931F93CF93DF93CB
+:1016D0000E94B80B0E94C00BC8EDD0E088818F77C4
+:1016E000888388818068888388818F7D888319BCFE
+:1016F0001092E5011092E1011092E3011092E201D3
+:1017000000EE10E0F80180818B7F8083888181600A
+:10171000888342E060E080E00E94C40AE1EEF0E0ED
+:1017200080818E7F8083E2EEF0E080818160808323
+:10173000808188608083F80180818E7F80838881AA
+:1017400080618883DF91CF911F910F910895E8ED1B
+:10175000F0E080818F7E8083E7EDF0E08081816022
+:10176000808384E082BF81E08093E4010C94640B69
+:10177000E8EDF0E080818E7F80831092E200089592
+:101780001092DA001092E10008951F920F920FB6A6
+:101790000F9211242F933F934F935F936F937F93F7
+:1017A0008F939F93AF93BF93EF93FF938091E1004B
+:1017B00082FF0BC08091E20082FF07C08091E100B0
+:1017C0008B7F8093E1000E94210E8091DA0080FFE0
+:1017D0001FC08091D80080FF1BC08091DA008E7FEF
+:1017E0008093DA008091D90080FF0DC080E189BD2F
+:1017F00082E189BD09B400FEFDCF81E08093E5015F
+:101800000E94290805C019BC1092E5010E94370802
+:101810008091E10080FF19C08091E20080FF15C037
+:101820008091E2008E7F8093E2008091E2008061EF
+:101830008093E2008091D80080628093D80019BC28
+:1018400085E08093E5010E943B088091E10084FFE0
+:1018500030C08091E20084FF2CC080E189BD82E12C
+:1018600089BD09B400FEFDCF8091D8008F7D8093A3
+:10187000D8008091E1008F7E8093E1008091E200AA
+:101880008F7E8093E2008091E20081608093E2008D
+:101890008091E101882311F084E007C08091E3008A
+:1018A00087FF02C083E001C081E08093E5010E94D0
+:1018B0003D088091E10083FF29C08091E20083FF11
+:1018C00025C08091E100877F8093E10082E08093D2
+:1018D000E5011092E1018091E1008E7F8093E100AB
+:1018E0008091E2008E7F8093E2008091E20080612F
+:1018F0008093E20042E060E080E00E94C40A8091B0
+:10190000F00088608093F0000E943A08FF91EF9108
+:10191000BF91AF919F918F917F916F915F914F9107
+:101920003F912F910F900FBE0F901F9018951F920F
+:101930000F920FB60F9211242F933F934F935F9303
+:101940006F937F938F939F93AF93BF93CF93EF93B7
+:10195000FF93C091E900CF708091EC001092E900F4
+:101960008091F000877F8093F00078940E94D30CE0
+:101970001092E9008091F00088608093F000C0939D
+:10198000E900FF91EF91CF91BF91AF919F918F911E
+:101990007F916F915F914F913F912F910F900FBE6B
+:1019A0000F901F9018951F93CF93DF93CDB7DEB79D
+:1019B000AA970FB6F894DEBF0FBECDBFE6EEF1E0FA
+:1019C0008091F100819321E0EE3EF207C9F70E9479
+:1019D00059088091E80083FF1CC12091E6013091F5
+:1019E000E701832F90E08A30910508F012C1FC01D5
+:1019F000EA5AFF4F0C949722203881F0223809F0E0
+:101A000008C18091EA018F708093E9008091EB001A
+:101A100085FB882780F91092E90006C08091E201D9
+:101A20009091E301911182609091E800977F9093EB
+:101A3000E8008093F1001092F100C5C0822F8D7FE5
+:101A400009F0E7C0222319F0223061F0E2C0809152
+:101A5000E801813009F0DDC0333009F080E0809387
+:101A6000E30128C08091E801811124C02091EA019E
+:101A70002F7009F4CEC02093E9008091EB0080FF25
+:101A800019C08091EB00333011F4806211C0806185
+:101A90008093EB0081E090E0022E01C0880F0A9451
+:101AA000EAF78093EA001092EA008091EB008860E8
+:101AB0008093EB001092E9008091E800877F86C058
+:101AC0002111A7C01091E8011F778091E300807871
+:101AD000812B8093E3008091E800877F8093E8006A
+:101AE0000E94F90A8091E80080FFFCCF8091E3001A
+:101AF00080688093E300112311F083E001C082E04D
+:101B00008093E50186C02058223008F082C0809181
+:101B1000E8019091E9018C3D23E0920779F583E09B
+:101B20008A838AE289834FB7F894DE01139620E016
+:101B30003EE051E2E32FF0E050935700E49120FFA4
+:101B400003C0E295EF703F5FEF708E2F90E0EA30B8
+:101B500010F0C79601C0C0968D939D932F5F2431DE
+:101B600049F74FBF8091E800877F8093E8006AE2E1
+:101B700070E0CE0101960E94010A14C0AE014F5FD1
+:101B80005F4F6091EA010E944909009709F441C042
+:101B90002091E800277F2093E800BC0189819A8189
+:101BA0000E94620A8091E8008B778093E80031C040
+:101BB000203879F58091E800877F8093E800809154
+:101BC000E1018093F1008091E8008E778093E80036
+:101BD0000E94F90A1EC021111CC09091E8019230A8
+:101BE000C0F48091E800877F8093E8009093E10142
+:101BF0000E94F90A8091E101811104C08091E30003
+:101C000087FF02C084E001C081E08093E5010E946B
+:101C100045088091E80083FF0AC08091E800877F33
+:101C20008093E8008091EB0080628093EB00AA969D
+:101C30000FB6F894DEBF0FBECDBFDF91CF911F91DD
+:101C400008950895CF938091E5018823B1F08091A4
+:101C5000E9008F709091EC0090FF02C090E801C005
+:101C600090E0C92FC82B1092E9008091E80083FD15
+:101C70000E94D30CCF70C093E900CF910895909348
+:101C80006901809368010895E0916801F09169010C
+:101C9000309721F00190F081E02D099480E00895C3
+:101CA000E0916801F0916901309721F00280F381A1
+:101CB000E02D09940895E0916801F0916901309751
+:101CC00021F00480F581E02D0994089520916601AA
+:101CD000309167018217930771F0909367018093A9
+:101CE0006601E0916801F0916901309721F006806A
+:101CF000F781E02D099408952091640130916501E8
+:101D00008217930771F09093650180936401E091CD
+:101D10006801F0916901309721F00084F185E02D90
+:101D20000994089508950C94920E0E94861A0E94B8
+:101D300019040C944C1BCF92DF92EF92FF920F93F9
+:101D40001F93CF93DF93CDB7DEB72B970FB6F894E1
+:101D5000DEBF0FBECDBF0E9436043BE6E32E31E06E
+:101D6000F32E00E010E0C02E802F0E942705F7011F
+:101D7000D1907F01D826B1F40F5F1F4F0E301105AF
+:101D800091F78FEF89838A831B820E948F1A81606B
+:101D9000782F9D838C8349815A816B818D810E942C
+:101DA0003E0F41C09091CC0191FF04C08B870E94EF
+:101DB0002D058B8520E030E04D2D50E0922FBA01AB
+:101DC000022E02C0759567950A94E2F760FF25C060
+:101DD0002E83CF82EE24E394F12C02C0EE0CFF1C84
+:101DE0009A95E2F790E08E219F2121E0892B09F45A
+:101DF00020E028870E948F1A8160782F9A87898730
+:101E00004E815F8168858A850E943E0FF801E55901
+:101E1000FE4F80818E25808306C02F5F3F4F263086
+:101E2000310561F6A9CF0E94301E10916A010E940F
+:101E3000440E1817A1F00E94440E80936A012B965D
+:101E40000FB6F894DEBF0FBECDBFDF91CF911F91CB
+:101E50000F91FF90EF90DF90CF900C944A072B9654
+:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB
+:101E70000F91FF90EF90DF90CF900895CF93DF9375
+:101E8000CDB7DEB72B970FB6F894DEBF0FBECDBF30
+:101E90004F83588769877A878B87DE01119686E0A2
+:101EA000FD0111928A95E9F785E0FE0137960190D0
+:101EB0000D928A95E1F749815A816B817C818D81F0
+:101EC0009E810E9471162B960FB6F894DEBF0FBE4E
+:101ED000CDBFDF91CF910895CF93C82F882309F408
+:101EE000C1C0823859F40E94440E81FDBBC089E311
+:101EF0000E9410190E94CA1989E30CC0833879F432
+:101F00000E94440E80FDAEC083E50E9410190E941D
+:101F1000CA1983E50E945019CF910C94CA198438CC
+:101F200059F40E94440E82FD9DC087E40E9410195E
+:101F30000E94CA1987E4EECF8CEF8C0F813A48F4E7
+:101F40008C2F0E94652081118DC08C2F0E9410194A
+:101F5000E3CF80E28C0F883048F4C77081E001C085
+:101F6000880FCA95EAF70E949119D6CF8BE58C0F9E
+:101F7000833078F4C53A29F0C63A31F482E890E02B
+:101F800005C081E890E002C083E890E0CF910C9416
+:101F9000660E88E58C0F833108F064C0C83A39F1C9
+:101FA000C93A41F1CA3A49F1CB3A51F1CC3A59F127
+:101FB000CD3A61F1C03B69F1CE3A71F1CF3A79F196
+:101FC000C13B81F1C23B89F1C33B91F1C43B99F123
+:101FD000C53BA1F1C63BA9F1C73BB1F1C83BB9F183
+:101FE000C93BC1F1CA3BC9F58AE292E038C082EE32
+:101FF00090E035C089EE90E032C08AEE90E02FC0CC
+:1020000085EB90E02CC086EB90E029C087EB90E058
+:1020100026C08CEC90E023C08DEC90E020C083E8DB
+:1020200091E01DC08AE891E01AC082E991E017C0F2
+:1020300084E991E014C081E292E011C083E292E071
+:102040000EC084E292E00BC085E292E008C086E216
+:1020500092E005C087E292E002C080E090E0CF917C
+:102060000C947C0ECF910895882309F44BC08238DC
+:1020700059F40E94440E81FF45C089E30E94101963
+:102080000E94CA1989E30CC0833871F40E94440E7F
+:1020900080FF38C083E50E9410190E94CA1983E5A9
+:1020A0000E9450190C94CA19843859F40E94440EA5
+:1020B00082FF28C087E40E9410190E94CA1987E491
+:1020C000EFCF9CEF980F913A58F390E2980F983029
+:1020D00050F4877091E001C0990F8A95EAF7892F33
+:1020E0000E949719DFCF9BE5980F933020F480E092
+:1020F00090E00C94660E885A833120F480E090E0E2
+:102100000C947C0E0895882321F00E9491190C9460
+:10211000CA190895882321F00E9497190C94CA19AE
+:102120000895CF92DF92EF92FF920F931F93CF9378
+:10213000DF93CDB7DEB728970FB6F894DEBF0FBE9A
+:10214000CDBF8C0185E0F801DE01119601900D9262
+:102150008A95E1F7F80140813181F280258122954D
+:102160002F7083819481892B31F03F3F31F481E0DE
+:102170004F3F19F403C081E001C080E080FDC4C27C
+:1021800049833A8389819A812F830E94CE189E8346
+:1021900088870E94CD180E94A0174E81E42FE295F7
+:1021A000EF70F0E0E05AFF4F2F8168850C94972282
+:1021B000842F807F142F1F70882311F01295107FB9
+:1021C000FF2059F0112309F454C2812F68870E941F
+:1021D000A1190E94CA1968854CC2862F0E9434102A
+:1021E000112309F491C2812F0E94A71928960FB6D6
+:1021F000F894DEBF0FBECDBFDF91CF911F910F913D
+:10220000FF90EF90DF90CF900C94CA19342F307F5D
+:10221000842F8F70303211F08295807F662319F001
+:10222000613019F12BC0FF20B1F0222309F493C1D2
+:10223000213009F090C128960FB6F894DEBF0FBE8A
+:10224000CDBFDF91CF911F910F91FF90EF90DF9065
+:10225000CF900C94B119222319F0213009F454C203
+:102260008E830E94B4198E8189C1FF2021F0223013
+:1022700008F04AC270C1211147C280C1FF2021F07D
+:10228000222309F468C1F5C1222309F477C105C2EC
+:10229000242F26952695237030E02115310521F055
+:1022A00021303105C9F030C2FF2021F0862F942F54
+:1022B000937002C080E090E028960FB6F894DEBFDD
+:1022C0000FBECDBFDF91CF911F910F91FF90EF9087
+:1022D000DF90CF900C94660EFF2021F0862F942F74
+:1022E000937002C080E090E028960FB6F894DEBFAD
+:1022F0000FBECDBFDF91CF911F910F91FF90EF9057
+:10230000DF90CF900C947C0E862FFF2019F00E9456
+:10231000381D02C00E94A01D28960FB6F894DEBF9B
+:102320000FBECDBFDF91CF911F910F91FF90EF9026
+:10233000DF90CF900C94251E842F837009F076C017
+:10234000F110E2C1262F229526952770220F220F29
+:10235000862F8F70C82ED12CE12CF12C022E04C0B8
+:10236000CC0CDD1CEE1CFF1C0A94D2F764FF10C0DD
+:102370006FE070E080E090E004C0660F771F881F78
+:10238000991F2A95D2F7609570958095909503C016
+:1023900060E070E0CB01242F269526952370422F14
+:1023A00050E042305105D1F04330510559F16C29CC
+:1023B0007D298E299F294130510541F128960FB67C
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B
+:1023D000FF90EF90DF90CF900C94C5176C297D296A
+:1023E0008E299F2928960FB6F894DEBF0FBECDBF69
+:1023F000DF91CF911F910F91FF90EF90DF90CF90E1
+:102400000C94DF170E94C517C701B60128960FB6B6
+:10241000F894DEBF0FBECDBFDF91CF911F910F911A
+:10242000FF90EF90DF90CF900C94AB17FF2019F046
+:10243000842F817001C08695882309F465C1262FF9
+:10244000229526952770220F220F862F8F70C82E77
+:10245000D12CE12CF12C022E04C0CC0CDD1CEE1C86
+:10246000FF1C0A94D2F764FF10C06FE070E080E0B8
+:1024700090E004C0660F771F881F991F2A95D2F736
+:10248000609570958095909503C060E070E0CB01F9
+:10249000242F269526952370422F50E04230510577
+:1024A000D1F04330510559F16C297D298E299F299E
+:1024B0004130510541F128960FB6F894DEBF0FBEAA
+:1024C000CDBFDF91CF911F910F91FF90EF90DF90E3
+:1024D000CF900C9499186C297D298E299F292896D4
+:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125
+:1024F0000F91FF90EF90DF90CF900C94B3180E9453
+:102500009918C701B60128960FB6F894DEBF0FBE22
+:10251000CDBFDF91CF911F910F91FF90EF90DF9092
+:10252000CF900C947F18603FC9F118F4603E50F4CE
+:102530009BC0623F09F460C008F44AC0633F09F4DD
+:102540006FC092C0162F1F70842F8F71FF2099F0DB
+:102550000E941818812F28960FB6F894DEBF0FBE80
+:10256000CDBFDF91CF911F910F91FF90EF90DF9042
+:10257000CF900C9483100E943918812F28960FB6A3
+:10258000F894DEBF0FBECDBFDF91CF911F910F91A9
+:10259000FF90EF90DF90CF900C948A10FF20A1F075
+:1025A0002111B2C0842F8F7128960FB6F894DEBF28
+:1025B0000FBECDBFDF91CF911F910F91FF90EF9094
+:1025C000DF90CF900C945E18223008F09DC0EACFC7
+:1025D000FF20A1F0842F8F7128960FB6F894DEBFEC
+:1025E0000FBECDBFDF91CF911F910F91FF90EF9064
+:1025F000DF90CF900C941818FF2061F3842F8F7117
+:1026000028960FB6F894DEBF0FBECDBFDF91CF91F5
+:102610001F910F91FF90EF90DF90CF900C9439189D
+:10262000FF2091F0842F8F7128960FB6F894DEBFAB
+:102630000FBECDBFDF91CF911F910F91FF90EF9013
+:10264000DF90CF900C94031828960FB6F894DEBF55
+:102650000FBECDBFDF91CF911F910F91FF90EF90F3
+:10266000DF90CF900C94F917FF20A1F0222309F4FA
+:10267000B1CF862F28960FB6F894DEBF0FBECDBF20
+:10268000DF91CF911F910F91FF90EF90DF90CF904E
+:102690000C946C0F222309F4B1CF862F28960FB625
+:1026A000F894DEBF0FBECDBFDF91CF911F910F9188
+:1026B000FF90EF90DF90CF900C9434104F70C801D2
+:1026C0000E94AB0228960FB6F894DEBF0FBECDBFB6
+:1026D000DF91CF911F910F91FF90EF90DF90CF90FE
+:1026E0000C941E174F70C80128960FB6F894DEBFE1
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053
+:10270000DF90CF900C94ED0528960FB6F894DEBFBD
+:102710000FBECDBFDF91CF911F910F91FF90EF9032
+:10272000DF90CF9008950E94AE190E9483190E94F5
+:10273000CA190E94D11E0E94251E80E090E00E94CE
+:10274000660E80E090E00C947C0E0E949E190C9422
+:1027500093130E94CE18292F22952F7030E02C3031
+:1027600031054CF42A3031056CF422503109223005
+:10277000310590F407C02C30310551F02F30310570
+:1027800039F00AC0803E10F0803F31F481E00895B6
+:1027900093FB882780F9089580E00895CF93DF9315
+:1027A00000D000D01F92CDB7DEB70F900F900F90E2
+:1027B0000F900F90DF91CF910895CF93DF9300D0CA
+:1027C00000D000D0CDB7DEB726960FB6F894DEBFA6
+:1027D0000FBECDBFDF91CF9108951F93CF93DF93AD
+:1027E000C091790116E080917A01C81799F0D0E084
+:1027F0001C9FF0011D9FF00D1124E558FE4F4081F4
+:10280000518162817381848195810E94DD132196BB
+:10281000C770E9CFDF91CF911F9108954091AB012F
+:102820005091AC016091AD017091AE018091AF010A
+:102830009091B0010C94DD13CF938091B0018295FB
+:102840008F7009F05FC08091AD01882309F45AC0F0
+:1028500020917901A0917A016091AB017091AC0156
+:102860008091AE019091AF0131E06F3F09F030E00F
+:10287000B32FC6E02A1709F445C0009721F07F3F27
+:1028800021F44B2F03C041E001C040E030E040FDA7
+:1028900035C0C29FF001C39FF00D1124E558FE4FD3
+:1028A000418174132BC04081641328C042814111BF
+:1028B00025C0438154814817590710F441505109EC
+:1028C000481B590B483C5105C8F48091B0018F70EA
+:1028D00080618093B00186E0829FF001839FF00DBC
+:1028E0001124E058FE4F80818F70806180838BEAD5
+:1028F00091E00E949110CF910C94ED132F5F3F4F08
+:102900002770B8CFCF910895CF92DF92EF92FF92C8
+:102910000F931F93CF93DF93CDB7DEB762970FB6B8
+:10292000F894DEBF0FBECDBF8C0185E0F801DE015B
+:102930001D9601900D928A95E1F7D8014C91119660
+:102940005C91119712966C9112971396ED90FC90F2
+:1029500014977091AB01E091AC012091AE013091E0
+:10296000AF012115310531F0EF3F31F481E07F3FB8
+:1029700019F403C081E001C080E0B82FB170CB2E04
+:1029800080FD6CC1D090AD01DD2009F4F5C0F0915F
+:10299000B001E216F30638F0C701821B930B883CA6
+:1029A000910548F09BC0209530952E0D3F1D283C89
+:1029B000310508F093C08F2F807F09F052C0E513D6
+:1029C00014C0741312C0D62E61110FC0FF70F061D5
+:1029D000F093B0010E940E148BEA91E00E949110D6
+:1029E0008091B001F80185836CC1EF2831F05F3F21
+:1029F00031F481E04F3F19F403C081E001C080E071
+:102A000080FD03C081E0862701C080E0F82FF170CF
+:102A1000FF2E80FF1CC08091790120917A0136E061
+:102A2000821709F428C190E0389FF001399FF00D1A
+:102A30001124E558FE4F7181571306C0708147136A
+:102A400003C07281671303C001968770E9CFD62E49
+:102A5000662309F436C18091B00181608093B00192
+:102A600053C0E51308C0741306C0611104C0D80137
+:102A70001596FC93AEC04D875E878D859E856A8BCB
+:102A80000E94A9136A89882329F1D62E662311F1A1
+:102A90002091B001822F82958F7090E002970CF404
+:102AA00060C08091AB019091AC0198878F831986AB
+:102AB000FB86EA862C87CE01079651C0E51731F1D7
+:102AC0004D875E878D859E856A8B0E94A9136A89D2
+:102AD00081112EC0C8010E949110A4C08F2F807F49
+:102AE00069F77E2DF98AE88A89890E94CE138BEADC
+:102AF00091E00E949110EBEAF1E086E0DF011D9287
+:102B00008A95E9F70E940E14D12CDBC07413D8CF3C
+:102B10006111D6CFD8011596FC93C8010E9491107F
+:102B2000EBEAF1E086E0DF011D928A95E9F7C9C082
+:102B3000D62E662379F22091B001822F82958F7074
+:102B400090E0029774F08091AB019091AC019A8370
+:102B500089831B82FD82EC822E83CE0101960E9426
+:102B6000911086E0F801ABEAB1E001900D928A95F0
+:102B7000E1F70E941C146FC0E216F30628F0C701AB
+:102B8000821B930B9C0104C0209530952E0D3F1D98
+:102B9000283C310508F052C0D62E662309F49ACF9E
+:102BA000E5132CC074132AC08091B00180FD1DC0B4
+:102BB000982F92959F70C9F0D80115968C93159710
+:102BC0009F3039F09F5F9295907F8F70892B15967B
+:102BD0008C93C8010E94911086E0F801ABEAB1E045
+:102BE00001900D928A95E1F736C086E0F801ABEAD4
+:102BF000B1E001900D928A95E1F763C04D875E8741
+:102C00008D859E850E94A913882379F086E0F801BE
+:102C1000ABEAB1E001900D928A95E1F70E941C1495
+:102C20000E940E14DD24D3944CC08091B0018160C9
+:102C30008093B001C8010E94911043C07E2DF98A93
+:102C4000E88A89890E94CE13EBEAF1E086E0DF0191
+:102C50001D928A95E9F70E940E1433C0662309F489
+:102C600039CF4D875E878D859E850E94A913882365
+:102C700009F430CFCBCF4D875E878D859E850E942E
+:102C8000CE18292F22952F7030E0223031052CF4F8
+:102C90009F7041F0811106C00CC0243031052CF426
+:102CA0009F7049F4805E883020F0C8010E94911026
+:102CB000CF2CDC2C06C0D80115969C91907F91F703
+:102CC000F8CF8D2D62960FB6F894DEBF0FBECDBF44
+:102CD000DF91CF911F910F91FF90EF90DF90CF90F8
+:102CE00008951F93CF93DF93CDB7DEB72C970FB620
+:102CF000F894DEBF0FBECDBF4F83588769877A87B0
+:102D00008B879C87CE0107960E9484148823C1F08C
+:102D10002F8138858A859B85892B31F03F3F11F0C3
+:102D200080E003C02F3FE1F781E0811147C04F8170
+:102D3000588569857A858B859C850E94DD133EC008
+:102D400086E0FE013796DE01119601900D928A957C
+:102D5000E1F7FF81E8854A855B854115510531F032
+:102D6000EF3F31F481E0FF3F19F403C081E001C07F
+:102D700080E080FD23C020917A0130E0C9010196F6
+:102D8000877099276091790170E086179707F1F1B4
+:102D9000F983EA835D834C8396E0929FD001939FF1
+:102DA000B00D1124A558BE4FFE01319601900D9231
+:102DB0009A95E1F780937A010E94ED1316E08091D5
+:102DC000790190917A01891779F1189FC001112436
+:102DD00085589E4F0E948414882331F1E091790137
+:102DE0001E9FF0011124E558FE4F40815181628100
+:102DF0007381848195810E94DD138091790190E037
+:102E000001968770992780937901D9CF0E94A513E5
+:102E100010927A0110927901EBEAF1E086E0DF018D
+:102E20001D928A95E9F7CACF2C960FB6F894DEBFAB
+:102E30000FBECDBFDF91CF911F910895EF92FF920A
+:102E40000F931F93CF93DF939C01009709F471C0F8
+:102E5000F12CEE24E394E9012196F9018491843761
+:102E600040F4843008F056C0813081F0823021F186
+:102E700060C0853709F449C0C0F19CE7980F9037CE
+:102E800008F057C08F770E94341046C089010E5F4A
+:102E90001F4FFE01849190E2980F983050F4877094
+:102EA000FE2D01C0FF0F8A95EAF78F2F0E94A1190E
+:102EB00015C00E946C0F14C089010E5F1F4FFE01E8
+:102EC000849190E2980F983068F48770FE2D01C0CD
+:102ED000FF0F8A95EAF78F2F0E94A7190E94CA193F
+:102EE000E8011AC00E943410FBCF2E5F3F4FFE0155
+:102EF000C491CC2341F08FE99FE00197F1F700C026
+:102F00000000C150F6CFE90107C0FE01F490E901CD
+:102F1000229602C00E946C0F8F2D882341F0EFE9AA
+:102F2000FFE03197F1F700C000008150F6CF9E011D
+:102F300092CFDF91CF911F910F91FF90EF90089565
+:102F400008956093B5017093B6018093B701909393
+:102F5000B8010C9493130F931F930091B501109136
+:102F6000B6012091B7013091B801062B172B282B01
+:102F7000392B0093B5011093B6012093B70130931C
+:102F8000B8011F910F910C9493130F931F9300910D
+:102F9000B5011091B6012091B7013091B801062317
+:102FA0001723282339230093B5011093B6012093EA
+:102FB000B7013093B8011F910F910C9493130F93A5
+:102FC0001F930091B5011091B6012091B701309186
+:102FD000B80106271727282739270093B501109332
+:102FE000B6012093B7013093B8011F910F910C9453
+:102FF00093131092B1011092B2011092B30110928A
+:10300000B4010C94931341E050E060E070E004C020
+:10301000440F551F661F771F8A95D2F74093B10161
+:103020005093B2016093B3017093B4010C94931365
+:1030300041E050E060E070E004C0440F551F661F9F
+:10304000771F8A95D2F78091B1019091B201A0913A
+:10305000B301B091B401842B952BA62BB72B809391
+:10306000B1019093B201A093B301B093B4010C9459
+:10307000931341E050E060E070E004C0440F551F3E
+:10308000661F771F8A95D2F7409550956095709589
+:103090008091B1019091B201A091B301B091B401BE
+:1030A00084239523A623B7238093B1019093B20183
+:1030B000A093B301B093B4010C94931341E050E09A
+:1030C00060E070E004C0440F551F661F771F8A95AB
+:1030D000D2F78091B1019091B201A091B301B0916A
+:1030E000B40184279527A627B7278093B101909331
+:1030F000B201A093B301B093B4010C9493130F9356
+:103100001F930091B1011091B2012091B301309150
+:10311000B401062B172B282B392B0093B1011093E8
+:10312000B2012093B3013093B4011F910F910C941D
+:1031300093130F931F930091B1011091B20120914D
+:10314000B3013091B40106231723282339230093B8
+:10315000B1011093B2012093B3013093B4011F91D8
+:103160000F910C9493130F931F930091B101109141
+:10317000B2012091B3013091B40106271727282707
+:1031800039270093B1011093B2012093B30130931A
+:10319000B4011F910F910C9493130895CF92DF9275
+:1031A000EF92FF920F931F93CF93DF93EC01C090A8
+:1031B000B501D090B601E090B701F090B8018091D0
+:1031C000B1019091B201A091B301B091B401C82AAC
+:1031D000D92AEA2AFB2A0FE110E0B701A601002E46
+:1031E00004C076956795579547950A94D2F740FFA6
+:1031F00007C0BE01802F0E9410068130910539F46E
+:103200000150110950F7BE0180E00E941006DF91C5
+:10321000CF911F910F91FF90EF90DF90CF90089585
+:1032200090910C019923D9F090910D019923B9F057
+:10323000982F9695969596959F3088F5E0910E017A
+:10324000F0910F01E90FF11D877021E030E001C01E
+:10325000220F8A95EAF78181822B8183089540911C
+:103260000E0150910F0120E030E09FEFFA01E20FD4
+:10327000F31F6281681799F09F3F19F4611101C033
+:10328000922F2F5F3F4F2E30310581F79F3F39F04E
+:10329000FA01E90FF11D97FDFA95828308950895CB
+:1032A00090910C019923E1F090910D019923C1F0C7
+:1032B000982F9695969596959F3020F5E0910E0162
+:1032C000F0910F01E90FF11D877021E030E001C09E
+:1032D000220F8A95EAF7209581812823218308957A
+:1032E00040910E0150910F0120E030E0FA01E20F11
+:1032F000F31F9281981301C012822F5F3F4F2E302F
+:103300003105A1F7089581E090E0E0910E01F09180
+:103310000F01E80FF91F1082019680319105A9F77E
+:1033200008959091CB01982B9093CB0108958095AF
+:103330009091CB0198239093CB0108951092CB01EB
+:1033400008959091CA01982B9093CA010895809591
+:103350009091CA0198239093CA0108951092CA01CE
+:1033600008958093B90108951092B901089540918C
+:103370000E0150910F0120E030E080E0FA01E20FF1
+:10338000F31F918191118F5F2F5F3F4F2F303105D8
+:10339000A9F70895E0910E01F0910F018091CB0102
+:1033A0008083E0910E01F0910F0180819091CA011C
+:1033B000892B80839091B901992361F0E0910E01EE
+:1033C000F0910F018081892B80830E94B7198111B0
+:1033D0001092B90180910E0190910F010C94500E42
+:1033E000CF92DF92EF92FF920F931F936C01EE2426
+:1033F000FF24C114D104E104F10421F46B017C0128
+:1034000080E001C080E133272F2D1E2D0D2D0115E9
+:1034100011052105310519F0885F680179019701CF
+:103420008601A4E03695279517950795AA95D1F7BB
+:10343000011511052105310519F08C5F680179012D
+:1034400097018601F2E03695279517950795FA952D
+:10345000D1F7011511052105310519F08E5F6801BD
+:103460007901B701A6017695679557954795452B44
+:10347000462B472B09F08F5F1F910F91FF90EF9024
+:10348000DF90CF9008958091E501843009F110928A
+:10349000CD0120E488E190E00FB6F894A8958093E0
+:1034A00060000FBE2093600083B7817F846083BF7C
+:1034B00083B7816083BF7894889583B78E7F83BFFD
+:1034C00088E10FB6F89480936000109260000FBE00
+:1034D000089508950895CF930E94691A0E943604B2
+:1034E0000E946A1AC0E08C2F0E942705811105C036
+:1034F000CF5FCE30C1F780E001C081E0CF91089569
+:103500000E94A5130E94440E0C944A0782E084BDD9
+:1035100093E095BD9AEF97BD80936E0008952FB705
+:10352000F8948091CE019091CF01A091D001B091FB
+:10353000D1012FBF0895CF92DF92EF92FF920F93A8
+:103540001F932FB7F8944091CE015091CF01609115
+:10355000D0017091D1012FBF6A017B01EE24FF24BD
+:103560008C0120E030E0C016D106E206F30610F42C
+:1035700041505109481B590BCA011F910F91FF90EF
+:10358000EF90DF90CF9008951F920F920FB60F9299
+:1035900011248F939F93AF93BF938091CE0190910D
+:1035A000CF01A091D001B091D1010196A11DB11D13
+:1035B0008093CE019093CF01A093D001B093D1011D
+:1035C000BF91AF919F918F910F900FBE0F901F9061
+:1035D00018950E944A0BF8942FEF87EA91E6215044
+:1035E00080409040E1F700C0000087E090EBDC01F4
+:1035F0008093EE019093EF01A093F001B093F1015D
+:103600002CE088E190E00FB6F894A89580936000D4
+:103610000FBE20936000FFCFEF92FF920F931F9396
+:10362000CF93DF93E82EF12C8F2D0E942705C0E069
+:10363000D0E0082F10E098010C2E02C03595279598
+:103640000A94E2F720FD05C02196C630D10599F70E
+:1036500009C06C2F7F2D80E00E94EE05E812F4CFA8
+:1036600081E005C0F3948EE0F812DECF80E0DF91B8
+:10367000CF911F910F91FF90EF900895CF93C82F96
+:103680008CE20E940C1B882321F08C2FCF910C948C
+:103690000C1B80E0CF910895CF930E94911C811163
+:1036A00002C00E94771CC5E6C15049F00E94360452
+:1036B0008FE39CE90197F1F700C00000F5CF89E2A4
+:1036C0000E943E1B811111C18AE20E943E1B8111A2
+:1036D0000E94771C85E00E943E1B81110E94E91A1E
+:1036E0000E949C1C8093CC0187E00E943E1B882393
+:1036F00099F18BE10E943E1B882351F09091CC01FF
+:1037000091FB882780F921E0822780FB91F922C074
+:103710008EE00E943E1B882351F09091CC0192FBD9
+:10372000882780F921E0822780FB92F913C080E18D
+:103730000E943E1B9091CC01882341F093FB882787
+:1037400080F921E0822780FB93F904C0892F8095BE
+:1037500080FB90F99093CC018091CC010E94A01C39
+:103760000E94AE1C8093DF0180EE0E943E1B8823E6
+:1037700041F08091DF01982F909590FB80F9809324
+:10378000DF0189E30E943E1B882359F09091DF01FD
+:1037900091FB882780F921E0822780FB91F99093A3
+:1037A000DF0182EE0E943E1B882359F09091DF01D9
+:1037B00092FB882780F921E0822780FB92F9909381
+:1037C000DF0186EE0E943E1B882359F09091DF01B5
+:1037D00093FB882780F921E0822780FB93F990935F
+:1037E000DF0183EE0E943E1B882359F09091DF0198
+:1037F00094FB882780F921E0822780FB94F990933D
+:10380000DF0185E30E943E1B882359F09091DF0180
+:1038100095FB882780F921E0822780FB95F990931A
+:10382000DF0181E30E943E1B882359F09091DF0164
+:1038300096FB882780F921E0822780FB96F99093F8
+:10384000DF0181E10E943E1B882359F09091DF0146
+:1038500097FB882780F921E0822780FB97F99093D6
+:10386000DF018091DF010E94B21C8091DF0187FBA4
+:10387000882780F980930D0187E20E943E1BC82FA4
+:103880008EE10E943E1B8111C2608FE10E943E1BAF
+:103890008111C46080E20E943E1B8111C86081E2F8
+:1038A0000E943E1B8111C06182E20E943E1B811179
+:1038B000C06283E20E943E1B8111C06484E20E94C8
+:1038C0003E1B882311F0C06802C0CC2329F08C2F46
+:1038D0000E94A91C6C2F03C00E94A51C682F70E0D9
+:1038E00080E090E0CF910C94A117CF9108956DEEF8
+:1038F0007EEF80E090E00E94CD2260E082E090E0E8
+:103900000E94BF2260E083E090E00E94BF2260E05E
+:1039100084E090E00E94BF2260E085E090E00C949B
+:10392000BF2280E090E00E94B92221E08D3E9E4FB0
+:1039300009F020E0822F089582E090E00C94B122FB
+:10394000682F82E090E00C94BF2283E090E00C941A
+:10395000B122682F83E090E00C94BF2284E090E0D5
+:103960000C94B122682F84E090E00C94BF228091E7
+:10397000D40180FF0BC06091130185E0689FB00106
+:10398000112475956795759567952AC081FF09C0C3
+:103990006091130185E0689FB001112475956795CA
+:1039A0001FC082FF07C06091130185E0689FB001CE
+:1039B000112416C04091D5014423C9F06091120131
+:1039C000461788F72091130185E0289F9001112464
+:1039D000429FC001439F900D112470E00E948322FA
+:1039E0006038710540F46115710539F002C065E079
+:1039F00070E0862F08958FE7089581E00895809103
+:103A0000D40180FF08C06091110170E07595679541
+:103A10007595679521C081FF06C06091110170E026
+:103A20007595679519C082FF04C06091110170E01F
+:103A300010C08091D5018823C1F0609110018617D4
+:103A4000A0F790911101989FC001112470E00E948D
+:103A500083226038710528F46115710521F0862FE5
+:103A600008958FE7089581E0089561E070E0F4CF54
+:103A7000803F21F40E94B71C819504C0813F29F446
+:103A80000E94B71C8093D8010895823F21F40E94C0
+:103A9000B71C819504C0833F29F40E94B71C809312
+:103AA000D7010895893F19F40E94FF1C05C08A3F81
+:103AB00031F40E94FF1C81958093D90108958B3FBA
+:103AC00021F40E94FF1C819504C08C3F29F40E94C0
+:103AD000FF1C8093DA010895843F21F48091D60180
+:103AE000816017C0853F21F48091D601826011C0AA
+:103AF000863F21F48091D60184600BC0873F21F47A
+:103B00008091D601886005C0883F31F48091D6014C
+:103B100080618093D60108958D3F21F48091D40176
+:103B200081600BC08E3F21F48091D401826005C07A
+:103B30008F3F29F48091D40184608093D40108954B
+:103B4000803F39F48091D80187FF6CC01092D80172
+:103B500069C0813F29F48091D8011816BCF362C076
+:103B60009091D701823F29F497FF5CC01092D70152
+:103B700059C0833F19F41916CCF354C0893F41F45E
+:103B80008091D90118160CF04DC01092D9014AC08D
+:103B90008A3F29F48091D90187FF44C0F6CF8B3F3B
+:103BA00039F48091DA0187FF3DC01092DA013AC002
+:103BB0008C3F29F48091DA011816BCF333C0843F9E
+:103BC00021F48091D6018E7F17C0853F21F480912A
+:103BD000D6018D7F11C0863F21F48091D6018B7F65
+:103BE0000BC0873F21F48091D601877F05C0883FB5
+:103BF00031F48091D6018F7E8093D60113C08D3F22
+:103C000021F48091D4018E7F0BC08E3F21F48091EE
+:103C1000D4018D7F05C08F3F29F48091D4018B7F23
+:103C20008093D4018091D70181110EC08091D80179
+:103C300081110AC08091D901811106C08091DA01F9
+:103C4000811102C01092D501089586ED91E00E9485
+:103C50005B0E0E948F1A9093D3018093D201089536
+:103C60001F93CF93DF938091D2019091D3010E9453
+:103C70009B1A4091D501442321F02091140130E09A
+:103C800006C0209115015AE0259F9001112482174A
+:103C9000930708F482C08091D7011091D801D09188
+:103CA000D901C091DA01811107C0111105C0D111EC
+:103CB00003C0CC2309F471C04F3F19F04F5F40930C
+:103CC000D501181624F40E94B71C8093D701809167
+:103CD000D70187FF05C00E94B71C81958093D7014B
+:103CE000111624F40E94B71C8093D8018091D8014A
+:103CF00087FF05C00E94B71C81958093D801609111
+:103D0000D701662339F11091D801112319F17727D2
+:103D100067FD7095872F972F0E94942123E333E34B
+:103D200043E35FE30E94F8210E9461216093D70181
+:103D3000612F772767FD7095872F972F0E94942119
+:103D400023E333E343E35FE30E94F8210E94612110
+:103D50006093D8011D1624F40E94FF1C8093D901A2
+:103D60008091D90187FF05C00E94FF1C8195809337
+:103D7000D9011C1624F40E94FF1C8093DA01809163
+:103D8000DA0187FF05C00E94FF1C81958093DA014C
+:103D9000DF91CF911F910C94251EDF91CF911F9140
+:103DA0000895E6EDF1E085E0DF011D928A95E9F7DF
+:103DB0001092D5011092D4010895833081F128F436
+:103DC000813059F08230D1F00895853009F449C02E
+:103DD000B8F1863009F456C0089520911501862F58
+:103DE00090E0820F911D8F3F910520F4620F609348
+:103DF000150108958FEF8093150108952091140106
+:103E0000862F90E0820F911D8F3F910520F4620F65
+:103E10006093140108958FEF809314010895209109
+:103E20001301862F90E0820F911D8F3F910520F4A2
+:103E3000620F6093130108958FEF8093130108952B
+:103E400020911201862F90E0820F911D8F3F9105E6
+:103E500020F4620F6093120108958FEF8093120196
+:103E6000089520911101862F90E0820F911D8F3FC0
+:103E7000910520F4620F6093110108958FEF8093F4
+:103E80001101089520911001862F90E0820F911D5D
+:103E90008F3F910520F4620F6093100108958FEF1A
+:103EA000809310010895833011F128F4813049F096
+:103EB000823091F00895853081F120F18630C1F192
+:103EC000089580911501681720F4861B80931501D1
+:103ED000089510921501089580911401681720F437
+:103EE000861B809314010895109214010895809107
+:103EF0001301681720F4861B809313010895109214
+:103F00001301089580911201681720F4861B809395
+:103F100012010895109212010895809111016817FD
+:103F200020F4861B809311010895109211010895C9
+:103F300080911001681720F4861B8093100108956A
+:103F40001092100108958D3109F442C020F58E3091
+:103F500009F479C070F4873009F45EC020F486302B
+:103F600009F442C033C08830D1F18B3009F4A7C0C6
+:103F70002DC0863109F4A3C038F4803109F46DC036
+:103F8000813109F47BC022C0893109F498C08B319A
+:103F900009F44FC01BC0853309F479C048F4873257
+:103FA00009F475C008F478C0893209F470C00EC0F5
+:103FB000833438F48A3308F071C0883309F47FC041
+:103FC00005C0833409F463C08834C1F080E00895EB
+:103FD0000E941B210E94440E0E944A0770C00E944A
+:103FE0009C1C0E94AE1C6BC08091CC01817F8E7F97
+:103FF0008093CC0181E08093DC0108950E94A51399
+:104000002FEF83ED90E3215080409040E1F700C016
+:1040100000000E94E91A53C09091CC01892F817051
+:1040200090FF03C0917F9E7F26C091609093CC014A
+:1040300046C09091CC0191FB882780F921E082272E
+:1040400080FB91F913C09091CC0192FB882780F9F5
+:1040500021E0822780FB92F909C09091CC0193FB6B
+:10406000882780F921E0822780FB93F99093CC0187
+:10407000882329F191609093CC0108950E94A513A3
+:1040800080910D0191E0892780930D0118C061E0B6
+:1040900070E080E090E00FC023EE01C027EC280F15
+:1040A00061E070E080E090E004C0660F771F881F39
+:1040B000991F2A95D2F70E94A1170E94A51381E0AB
+:1040C000089580E0089580E00895CF93C82F8091EF
+:1040D000DC01813079F018F08230D1F184C0A091F8
+:1040E0000E01B0910F018C91813169F0823209F09B
+:1040F0007CC009C0A0910E01B0910F018C9181315B
+:1041000011F0823249F48C2F0E94612081111DC070
+:104110008C2F0E94A31F1AC08C2F0E946320811134
+:1041200014C0C43179F048F4CB3079F0C03109F0D3
+:1041300060C082E08093DC0108C0C93219F0C83346
+:1041400021F057C01092DC0154C081E0817053C04F
+:10415000C93289F118F5C43171F1A8F4C73009F0FA
+:1041600046C08AE08093150194E19093140193E096
+:10417000909313018093120188E08093110188E2EB
+:104180008093100134C0CE51C63088F5EC2FF0E09A
+:10419000E65DFE4F80818093DB0129C0CE34E9F0DB
+:1041A00020F4CB3421F56AE013C0C13579F0C23573
+:1041B000F1F461E00DC08091DB01882319F01092C9
+:1041C000DB0115C081E08093DC0115C061E006C011
+:1041D0008091DB010E94DD1E0AC06AE08091DB0154
+:1041E0000E94531F04C01092DC0180E004C081E0F3
+:1041F00002C080E0ABCFCF910895E1E8F0E080818C
+:10420000886080838081816080838FB7F89493E099
+:104210009093890090ED909388008FBF0895EFE60A
+:10422000F0E08081826080830895EFE6F0E0808195
+:104230008D7F80830895EFE6F0E0808192E089270A
+:10424000808308951F920F920FB60F9211242F931F
+:104250003F934F935F936F937F938F939F93AF930E
+:10426000BF93EF93FF938091DD019091DE01019662
+:104270009093DE018093DD01811103C082E00E94F2
+:104280004A07E091DE01E695E695F0E0E657FB4F40
+:10429000E4918091DD018E1303C080E00E944A0703
+:1042A000FF91EF91BF91AF919F918F917F916F910E
+:1042B0005F914F913F912F910F900FBE0F901F90E4
+:1042C000189504D06894B1118DC0089570D088F00D
+:1042D0009F5790F0B92F9927B751A0F0D1F0660FF2
+:1042E000771F881F991F1AF0BA95C9F712C0B1300D
+:1042F00081F077D0B1E0089574C0672F782F8827B8
+:10430000B85F39F0B93FCCF3869577956795B3954B
+:10431000D9F73EF490958095709561957F4F8F4FBA
+:104320009F4F0895E89409C097FB3EF490958095BF
+:10433000709561957F4F8F4F9F4F9923A9F0F92F6B
+:1043400096E9BB279395F695879577956795B795E9
+:10435000F111F8CFFAF4BB0F11F460FF1BC06F5FCF
+:104360007F4F8F4F9F4F16C0882311F096E911C0E1
+:10437000772321F09EE8872F762F05C0662371F002
+:1043800096E8862F70E060E02AF09A95660F771F16
+:10439000881FDAF7880F9695879597F9089557FD46
+:1043A0009058440F551F59F05F3F71F04795880FA3
+:1043B00097FB991F61F09F3F79F08795089512163A
+:1043C00013061406551FF2CF4695F1DF08C01616E6
+:1043D00017061806991FF1CF869571056105089497
+:1043E0000895E894BB2766277727CB0197F90895AE
+:1043F0000BD078C069D028F06ED018F0952309F062
+:104400005AC05FC01124EECFCADFA0F3959FD1F34D
+:10441000950F50E0551F629FF001729FBB27F00D72
+:10442000B11D639FAA27F00DB11DAA1F649F6627C7
+:10443000B00DA11D661F829F2227B00DA11D621F16
+:10444000739FB00DA11D621F839FA00D611D221FD0
+:10445000749F3327A00D611D231F849F600D211DB4
+:10446000822F762F6A2F11249F5750408AF0E1F057
+:1044700088234AF0EE0FFF1FBB1F661F771F881FA0
+:1044800091505040A9F79E3F510570F014C0AACF3B
+:104490005F3FECF3983EDCF3869577956795B7958B
+:1044A000F795E7959F5FC1F7FE2B880F911D9695B5
+:1044B000879597F9089597F99F6780E870E060E025
+:1044C00008959FEF80EC089500240A9416161706AD
+:1044D00018060906089500240A94121613061406F5
+:1044E00005060895092E0394000C11F4882352F058
+:1044F000BB0F40F4BF2B11F460FF04C06F5F7F4F10
+:104500008F4F9F4F089597FB072E16F4009407D006
+:1045100077FD09D00E949D2207FC05D03EF49095BE
+:1045200081959F4F0895709561957F4F0895EE0F87
+:10453000FF1F0590F491E02D0994AA1BBB1B51E1CC
+:1045400007C0AA1FBB1FA617B70710F0A61BB70B03
+:10455000881F991F5A95A9F780959095BC01CD01A8
+:104560000895F999FECF92BD81BDF89A992780B53B
+:104570000895A8E1B0E042E050E00C94D422262F48
+:10458000F999FECF1FBA92BD81BD20BD0FB6F89438
+:10459000FA9AF99A0FBE019608950E94BF22272F1A
+:1045A0000C94C022DC01CB01FC01F999FECF06C0BE
+:1045B000F2BDE1BDF89A319600B40D9241505040E1
+:0845C000B8F70895F894FFCF4D
+:1045C80020024B07D807B50781074E070101BA013A
+:1045D80028080A03140A3F4D36394B04FE03C80362
+:1045E8008F0322033B0354036D03010203040506F2
+:0445F80007080900A7
:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/default/default.png b/keyboard/ergodox_ez/keymaps/default/default.png Binary files differindex f0c5840153..6575f7b5e3 100644 --- a/keyboard/ergodox_ez/keymaps/default/default.png +++ b/keyboard/ergodox_ez/keymaps/default/default.png diff --git a/keyboard/ergodox_ez/keymaps/default/default_highres.png b/keyboard/ergodox_ez/keymaps/default/default_highres.png Binary files differindex 169d31367c..7d9f045f43 100644 --- a/keyboard/ergodox_ez/keymaps/default/default_highres.png +++ b/keyboard/ergodox_ez/keymaps/default/default_highres.png diff --git a/keyboard/ergodox_ez/keymaps/default/keymap.c b/keyboard/ergodox_ez/keymaps/default/keymap.c index b2f0a051d5..f252bf71d5 100644 --- a/keyboard/ergodox_ez/keymaps/default/keymap.c +++ b/keyboard/ergodox_ez/keymaps/default/keymap.c @@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' | + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_QUOT, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, KC_LALT, CTL_T(KC_ESC), diff --git a/keyboard/ergodox_ez/keymaps/default/readme.md b/keyboard/ergodox_ez/keymaps/default/readme.md index a1a8ad44f8..8f6dba45e9 100644 --- a/keyboard/ergodox_ez/keymaps/default/readme.md +++ b/keyboard/ergodox_ez/keymaps/default/readme.md @@ -1,5 +1,10 @@ # ErgoDox EZ Default Configuration +## Changelog + +* Feb 2, 2016 (V1.1): + * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). + This is what we ship with out of the factory. :) The image says it all: ![Default](default_highres.png) diff --git a/keyboard/ergodox_ez/keymaps/emacs_osx_dk/default_highres.png b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/default_highres.png Binary files differnew file mode 100644 index 0000000000..1d2583740c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/default_highres.png diff --git a/keyboard/ergodox_ez/keymaps/emacs_osx_dk/emacs_osx_dk.hex b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/emacs_osx_dk.hex new file mode 100644 index 0000000000..542a4662b6 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/emacs_osx_dk.hex @@ -0,0 +1,1472 @@ +:100000000C9403070C9447070C9447070C9447077C
+:100010000C9447070C9447070C9447070C94470728
+:100020000C9447070C9447070C945B120C942D1307
+:100030000C9447070C9447070C9447070C94470708
+:100040000C9447070C94072C0C9447070C94470713
+:100050000C9447070C94FF210C9447070C94470716
+:100060000C9447070C9447070C9447070C944707D8
+:100070000C9447070C9447070C9447070C944707C8
+:100080000C9447070C9447070C9447070C944707B8
+:100090000C9447070C9447070C9447070C944707A8
+:1000A0000C9447070C9447070C9447079A13BC130A
+:1000B000AA14BC13AA1401142414AA1479148C14BD
+:1000C000D317D31702180218451883189C1A9C1AC4
+:1000D0009C189C1A9D199D19701A9C1A9C1A871AB3
+:1000E0000000F0A135002B003171E1000152000049
+:1000F0001E00140004001D00E0004D001F001A0047
+:1001000016001B0050002A0020000800070006000F
+:100110004F002C002100150009001900E2004A00E0
+:10012000220017000A00050000004C0001542F00B7
+:100130000000E60000004900025430000000E60024
+:100140000000290023001C000B00110000006500C6
+:10015000240018000D001000E2004B0025000C00E8
+:100160000E00360052002800260012000F00370053
+:100170005100E3002700130033003800E4004E0074
+:100180002E002D003471E500025200000100010034
+:1001900001000100010000003A001E0220022202BC
+:1001A000010001003B001F022102230201000100A7
+:1001B0003C002F0226022F00010001003D0030020A
+:1001C00027023000010001003E00310235003502F7
+:1001D000000001000100010000000100000001001A
+:1001E0000100010000000100000001003F0052007A
+:1001F00051002402000001004000240021001E00E4
+:10020000270001004100250022001F0027000100F7
+:100210004200260023002000370001004300250291
+:100220002E0231002E0001004400450001000100B3
+:1002300001000000010001000100010001000000B8
+:1002400001000100010001000100010001000100A6
+:10025000F2000100010001000100F000F1000100C6
+:10026000F400010001000100F3000100F5000100AD
+:100270000100010001000100000001000100010077
+:100280000000010000000100010001000000010069
+:100290000000010001000100010001000000010058
+:1002A0000100010001000100A9000100010001009E
+:1002B0000100AC00AA00B600010001000100AB0083
+:1002C000A80001000100010001000100010001007F
+:1002D00001000100AE000100010000000A0025300D
+:1002E000313662003A200025303258000A722F63FE
+:1002F0002030313233343536373839414243444582
+:10030000460A000A002530325800626F756E636538
+:10031000213A20006C6566742073696465206174FD
+:100320007461636865640A006C656674207369644F
+:1003300065206E6F7420726573706F6E64696E678E
+:100340000A00747279696E6720746F207265736534
+:1003500074206D637032333031380A000A444542EC
+:1003600055473A20656E61626C65642E0A005B73C6
+:100370005D004B6579626F617264207374617274A1
+:100380002E0A005B575D005B535D005B525D005BB6
+:10039000445D005B435D0016034500720067006F1B
+:1003A0000044006F007800200045005A000000164D
+:1003B000034500720067006F0044006F0078002062
+:1003C0000045005A0000000403090409028D0005DD
+:1003D0000100A0FA09040000010301010009211134
+:1003E000010001223F000705810308000A090401FA
+:1003F000000103010200092111010001224D000743
+:1004000005820308000A0904020001030000000934
+:1004100021110100012236000705830308000A09A3
+:100420000403000203000000092111010001222041
+:1004300000070584032000010705040320000109CB
+:100440000404000103000000092111010001223908
+:1004500000070585031000011201100100000008CB
+:10046000EDFE071301000102000105010906A101CB
+:10047000050719E029E71500250195087501810296
+:100480000508190129059505750191029501750366
+:100490009101050719002977150025019578750147
+:1004A0008102C00631FF0974A1010975150025FFFD
+:1004B0009520750881020976150025FF952075089D
+:1004C0009102C005010980A101850216010026B72D
+:1004D000001A01002AB700751095018100C0050CB3
+:1004E0000901A1018503160100269C021A01002AB8
+:1004F0009C02751095018100C005010902A1010946
+:1005000001A10005091901290515002501950575A9
+:100510000181029501750381010501093009311539
+:1005200081257F95027508810609381581257F95FB
+:100530000175088106050C0A38021581257F950191
+:1005400075088106C0C005010906A101050719E06B
+:1005500029E71500250195087501810295017508A7
+:10056000810105081901290595057501910295017B
+:10057000750391010507190029FF150025FF950650
+:1005800075088100C00A002530325820006B65795B
+:10059000626F6172645F7265706F72743A20000AF4
+:1005A0000025303258006B6579626F6172645F7349
+:1005B00065745F6C65643A200064656C5F6B657997
+:1005C0005F6269743A2063616E27742064656C3AD7
+:1005D00020253032580A006164645F6B65795F6280
+:1005E00069743A2063616E2774206164643A20253F
+:1005F0003032580A00646F6E652E0A00626F6F67B2
+:100600006D61676963207363616E3A202E2E2E2020
+:1006100000290A002575002F002575005D2800259A
+:10062000640020002564002000256400200025646B
+:10063000007C0025303258006D6F7573656B6579ED
+:10064000205B62746E7C782079207620685D287249
+:1006500065702F61636C293A205B006D6B5F776872
+:1006600065656C5F74696D655F746F5F6D6178203F
+:100670003D2025640A006D6B5F776865656C5F6D72
+:1006800061785F7370656564203D2025640A006DA4
+:100690006B5F74696D655F746F5F6D6178203D207D
+:1006A00025640A006D6B5F6D61785F7370656564CA
+:1006B000203D2025640A006D6B5F696E746572765B
+:1006C000616C203D2025640A006D6B5F64656C6180
+:1006D00079203D2025640A006D6B5F776865656C45
+:1006E0005F74696D655F746F5F6D6178203D202573
+:1006F000640A006D6B5F776865656C5F6D61785F3C
+:100700007370656564203D2025640A006D6B5F741D
+:10071000696D655F746F5F6D6178203D2025640AA7
+:10072000006D6B5F6D61785F7370656564203D205F
+:1007300025640A006D6B5F696E74657276616C206A
+:100740003D2025640A006D6B5F64656C6179203D16
+:100750002025640A000A00257500363A207768656E
+:10076000656C5F74696D655F746F5F6D61783A2069
+:10077000000A00257500353A20776865656C5F6D65
+:1007800061785F73706565643A20000A0025750022
+:10079000343A2074696D655F746F5F6D61783A20DB
+:1007A000000A00257500333A206D61785F7370652B
+:1007B00065643A20000A00257500323A20696E749B
+:1007C000657276616C286D73293A20000A002575E0
+:1007D00000313A2064656C6179282A31306D7329C3
+:1007E0003A20000A092D2056616C756573202D0A88
+:1007F000004D3E004D25643E20003F00736574208F
+:1008000064656661756C740A00433E200077686514
+:1008100072652064656C74613A20637572736F72DF
+:100820003D25642C20776865656C3D25640A536519
+:100830006520687474703A2F2F656E2E77696B6926
+:1008400070656469612E6F72672F77696B692F4DD0
+:100850006F7573655F6B6579730A000A092D204D0A
+:100860006F7573656B6579202D0A4553432F713A77
+:1008700009717569740A313A0964656C6179282ACD
+:1008800031306D73290A323A09696E746572766186
+:100890006C286D73290A333A096D61785F7370654E
+:1008A00065640A343A0974696D655F746F5F6D61E0
+:1008B000780A353A09776865656C5F6D61785F73B2
+:1008C000706565640A363A09776865656C5F7469B6
+:1008D0006D655F746F5F6D61780A0A703A097072B6
+:1008E000696E742076616C7565730A643A09736584
+:1008F000742064656661756C74730A75703A092BAF
+:10090000310A646F776E3A092D310A706775703A53
+:10091000092B31300A7067646F776E3A092D3130D8
+:100920000A0A7370656564203D2064656C746120FB
+:100930002A206D61785F7370656564202A202872B3
+:100940006570656174202F2074696D655F746F5FD9
+:100950006D6178290A003F004D3E2000433E200093
+:100960004C25640A000A092D20436F6E736F6C6575
+:10097000202D0A4553432F713A09717569740A6D28
+:100980003A096D6F7573656B65790A000A092D2048
+:100990004D61676963202D0A643A09646562756771
+:1009A0000A783A096465627567206D6174726978C6
+:1009B0000A6B3A096465627567206B6579626F61DD
+:1009C00072640A6D3A096465627567206D6F7573AC
+:1009D000650A763A0976657273696F6E0A733A0929
+:1009E0007374617475730A633A09636F6E736F6C25
+:1009F00065206D6F64650A302D343A096C61796544
+:100A000072302D34284631302D4634290A50617514
+:100A1000733A09626F6F746C6F616465720A653A4C
+:100A200009656570726F6D0A6E3A094E4B524F0A36
+:100A30007A3A09736C656570204C4544207465737F
+:100A4000740A000A002575002E6E6B726F3A200042
+:100A50000A002575002E737761705F6261636B73A6
+:100A60006C6173685F6261636B73706163653A2088
+:100A7000000A002575002E737761705F67726176DA
+:100A8000655F6573633A20000A002575002E6E6F5E
+:100A90005F6775693A20000A002575002E7377613B
+:100AA000705F72616C745F726775693A20000A004A
+:100AB0002575002E737761705F6C616C745F6C6775
+:100AC00075693A20000A002575002E636170736C09
+:100AD0006F636B5F746F5F636F6E74726F6C3A20DD
+:100AE000000A002575002E737761705F636F6E7466
+:100AF000726F6C5F636170736C6F636B3A20000A96
+:100B00000025303258006B65796D61705F636F6EE0
+:100B10006669672E7261773A20000A002575002EFB
+:100B20006D6F7573653A20000A002575002E6B65A0
+:100B300079626F6172643A20000A002575002E6D9B
+:100B400061747269783A20000A002575002E656E7E
+:100B500061626C653A20000A0025303258006465F5
+:100B60006275675F636F6E6669672E7261773A20A0
+:100B7000000A0025750064656661756C745F6C61C0
+:100B80007965723A20003F004E4B524F3A206F6613
+:100B9000660A004E4B524F3A206F6E0A0074696D20
+:100BA00065725F636F756E743A202530346C580A35
+:100BB000006B6579626F6172645F6E6B726F3A2071
+:100BC00025580A006B6579626F6172645F69646CB5
+:100BD000653A2025580A006B6579626F6172645F1F
+:100BE00070726F746F636F6C3A2025580A00686FDB
+:100BF00073745F6B6579626F6172645F6C65647357
+:100C000028293A2025580A000A092D2053746174B6
+:100C10007573202D0A004743433A20342E392E3372
+:100C2000204156522D4C4942433A20312E382E3124
+:100C3000204156525F415243483A20617672350A4C
+:100C4000004F5054494F4E533A204C554641204294
+:100C50004F4F544D41474943204D4F5553454B4508
+:100C6000592045585452414B455920434F4E534FFC
+:100C70004C4520434F4D4D414E44204E4B524F204A
+:100C80003531320A004255494C443A203230303630
+:100C90003038342D6469727479202830313A313615
+:100CA0003A3235204A616E203331203230313629D4
+:100CB0000A005649443A2030784645454428457252
+:100CC000676F446F7820455A29205049443A2030B4
+:100CD0007831333037284572676F446F7820455A32
+:100CE00029205645523A203078303030310A0044BD
+:100CF0004553433A20742E6D2E6B2E206B6579621E
+:100D00006F617264206669726D7761726520666FCB
+:100D100072204572676F646F780A000A092D2056A9
+:100D2000657273696F6E202D0A000A6D6F757365A9
+:100D30003A206F66660A000A6D6F7573653A206F18
+:100D40006E0A000A6B6579626F6172643A206F66A1
+:100D5000660A000A6B6579626F6172643A206F6E91
+:100D60000A000A6D61747269783A206F66660A003B
+:100D70000A6D61747269783A206F6E0A000A6465C0
+:100D80006275673A206F6E0A000A64656275673A99
+:100D9000206F66660A000A0A626F6F746C6F616486
+:100DA00065722E2E2E2000433E20006565636F6E17
+:100DB0006669673A0A00536C656570204C454420AB
+:100DC000746573740A000000000000000000000059
+:100DD00000010204060A0F17202C3A4A5D71879D14
+:100DE000B3C7DAE9F5FCFFFCF5E9DAC7B39D877113
+:100DF0005D4A3A2C20170F0A060402010000000089
+:100E000000000000000011241FBECFEFDAE0DEBFBB
+:100E1000CDBF04B603FE24C08091F9019091FA0180
+:100E2000A091FB01B091FC018730904BA740B04BE3
+:100E3000B9F41092F9011092FA011092FB0110928C
+:100E4000FC0114BE84B7877F84BF88E10FB6F89495
+:100E500080936000109260000FBEE0E0FFE3099510
+:100E600011E0A0E0B1E0EAEAFBE502C005900D92D6
+:100E7000AA33B107D9F711E0AAE3B1E001C01D928E
+:100E8000A93FB107E1F70E94930F0C94D32D0C9466
+:100E90000000FF93EF93E0913A01F0913B0130970E
+:100EA00009F00995EF91FF910895FC01859180303B
+:100EB00011F0EFDFFBCF0895FF27E0E230E247FFBC
+:100EC0000CC0419597FF09C0EDE260957095809543
+:100ED0009095611D711D811D911D27FF02C02195F7
+:100EE00030E350E2AA27660F771F881F991FAA1FB9
+:100EF000A41710F0A41B63955A95A9F7AA3008F01F
+:100F0000A95FA05DAF93F39561157105810591050A
+:100F100041F7ED3211F4EF93F395F21718F43F9384
+:100F2000F395FBCF8F91B5DFFA95E1F70895E9913D
+:100F3000F9918591803021F0853219F0AADFF9CF3F
+:100F4000089520E0E89455915532C1F3503311F4DF
+:100F5000689455915A3348F4505390F3220F022E5F
+:100F6000220F220F200D250FF4CF0EF42195899129
+:100F70009991533619F3533729F1533559F1BC017F
+:100F800088279927E8945C3621F48991999168948F
+:100F90005591543639F446EF7EF077FF0DC08FEF50
+:100FA0009FEF0AC055374AE039F0583540E121F04B
+:100FB000523642E009F00895FF93EF937DDFEF9101
+:100FC000FF91B7CFFF93EF93FC0181918030B9F38C
+:100FD00060DFFBCFFF93EF9368DFF1CFDF93CF9319
+:100FE000CDB7DEB72596A3DFCF91DF9108956111CC
+:100FF0000BC0FC018281882321F085EE0E947016CF
+:1010000003C085EE0E94381780E090E008950895AF
+:101010006091BC017091BD018091BE019091BF01B2
+:101020000E94FE2056985E9825982D9826982E9816
+:1010300027982F98813019F0823021F00895259A51
+:101040002D9A0895269A2E9A089588E098E0892B83
+:1010500011F00E94080880E090E0089556985E988C
+:1010600025982D9826982E9827982F988FEF90E006
+:10107000909389008093880090938B0080938A00DE
+:1010800090938D0080938C00259A2D9A2FEF80E706
+:1010900092E0215080409040E1F700C00000269A85
+:1010A0002E9A2FEF80E792E0215080409040E1F7A8
+:1010B00000C00000279A2F9A2FEF80E792E021507E
+:1010C00080409040E1F700C0000025982D982FEF58
+:1010D00080E792E0215080409040E1F700C000009E
+:1010E00026982E982FEF80E792E021508040904084
+:1010F000E1F700C0000027982F9856985E98259831
+:101100002D9826982E9827982F98089589EA8093ED
+:10111000800089E08093810024982C983F988AB1C0
+:101120008F748AB96E98479A8BB1806B8BB9769A17
+:101130000E942E0887E098E0892B11F00E94070892
+:1011400080E090E0089580E28093000180913C016E
+:1011500081110EC00E94F20881E080933C012FEFC4
+:1011600083ED90E3215080409040E1F700C0000003
+:1011700080E40E94F8088093000181112EC00E9433
+:10118000220980930001811128C00E9422098093C6
+:101190000001811122C08FE30E9422098093000187
+:1011A00081111BC00E941A0980E40E94F8088093F4
+:1011B0000001811112C08CE00E942209809300017D
+:1011C00081110BC00E94220980930001811105C08A
+:1011D0008FE30E942209809300010E941A098091E6
+:1011E000000108951092B9008AE08093B800089534
+:1011F00094EA9093BC009091BC0097FFFCCF909133
+:10120000B900987F983021F0903111F081E0089575
+:101210008093BB0084E88093BC008091BC0087FF72
+:10122000FCCF8091B900887F883111F0803471F74C
+:1012300080E0089584E98093BC008091BC0084FD27
+:10124000FCCF08958093BB0084E88093BC0080911C
+:10125000BC0087FFFCCF9091B900987F81E0983265
+:1012600009F480E0089584E88093BC008091BC007C
+:1012700087FFFCCF8091BB00089580910001811110
+:1012800015C080E40E94F8088093000181110CC011
+:1012900082E10E94220980930001811105C08FEF35
+:1012A0000E942209809300010E941A0984B1807F64
+:1012B00084B985B1807F85B98AB1837F8AB98BB1C2
+:1012C000837F8BB93E98469808950E94A308809327
+:1012D00000010E943D0980B38C7080BB81B3836F95
+:1012E00081BBAEE3B1E0ECE4F1E08EE08E0F119251
+:1012F0001D928E13FCCF86E898E0892B11F00C9498
+:10130000860808959F92AF92BF92CF92DF92EF929C
+:10131000FF920F931F93CF93DF9380910001882357
+:10132000E1F080913D018F5F80933D01811115C0F7
+:1013300082E493E00E9455070E94A3088093000175
+:10134000882329F088E293E00E94550706C084E1D3
+:1013500093E00E9455070E942E080EE311E0C0E0C2
+:10136000D0E0BB24B39482E0A82ECC24C394D12C2B
+:1013700025E0E22E23E0F22EC730D10500F5809162
+:101380000001811164C080E40E94F808809300018C
+:10139000811112C082E10E94220980930001811113
+:1013A0000BC0C6010C2E01C0880F0A94EAF7809585
+:1013B0000E942209809300010E941A0948C0CA3085
+:1013C000A1F028F4C83059F0C93061F005C0CC3024
+:1013D00089F070F0CD3089F0209A289810C0219AB9
+:1013E00029980DC0229A2A980AC0239A2B9807C0E0
+:1013F000529A01C0539A5B9802C03E9A469890EA6E
+:101400009A95F1F79FB1799902C082E001C080E01E
+:1014100091709B25982B7C9902C084E001C080E0EC
+:10142000892B7D9902C038E001C030E0832B7E9982
+:1014300002C020E101C020E0822B9FB19095991F4E
+:101440009927991F9295990F907E892B10C08091B2
+:101450000001811174C080E40E94F80880930001AB
+:10146000882309F459C0912C0E941A09892DF8018A
+:101470009081981739F1808380910101882301F1CF
+:101480008091D70180FF04C08AE093E00E94550755
+:101490008091D70180FF0CC0809101011F928F9332
+:1014A000FF92EF920E94EE070F900F900F900F9017
+:1014B0008091D70180FF04C083E093E00E9455072C
+:1014C000A09201010E943D0921960F5F1F4FCE306F
+:1014D000D10509F051CF809101018823B1F08150ED
+:1014E00080930101882339F08FE99FE00197F1F79C
+:1014F00000C000000AC0ACE4B1E0EEE3F1E0CF01CF
+:10150000825F91919D938E13FCCF85E298E0892BA9
+:10151000C1F00E94250815C083E10E942209809332
+:1015200000018111A0CF81E40E94F808809300019E
+:10153000811199CF0E943309982E909495CF80E025
+:1015400096CF81E0DF91CF911F910F91FF90EF90A7
+:10155000DF90CF90BF90AF909F900895E82FF0E07C
+:10156000E45BFE4F80810895CF92DF92EF92FF926D
+:101570000F931F93CF93DF938CEE92E00E94550759
+:101580008CE4E82E81E0F82EC0E0D0E097EEC92E82
+:1015900092E0D92E0EED12E0DF93CF93DF92CF923F
+:1015A0000E94EE0784EE92E00E945507F7018191B8
+:1015B0007F0190E00E9464219F938F931F930F936C
+:1015C0000E94EE078CED92E00E94550721968DB7A0
+:1015D0009EB708960FB6F8949EBF0FBE8DBFCE3053
+:1015E000D105D1F6DF91CF911F910F91FF90EF9030
+:1015F000DF90CF9008958B3B910578F4883A910560
+:1016000040F5853A9105D0F48430910508F0B1C0D9
+:101610008130910509F4ADC06BC0803E910508F49E
+:1016200067C0883E910508F4A4C09C01205F310981
+:101630002031310508F05CC090650895853A910528
+:1016400009F459C0863A910509F058C082E890E43F
+:101650000895883A910509F454C0893A910509F42E
+:1016600053C08A3A910509F452C08B3A910509F4A6
+:1016700051C08C3A910509F450C08D3A910509F496
+:101680004FC0803B910509F44EC08E3A910509F494
+:101690004DC08F3A910509F44CC0813B910509F486
+:1016A0004BC0823B910509F44AC0833B910509F484
+:1016B00049C0843B910509F448C0853B910509F474
+:1016C00047C0863B910509F446C0873B910509F464
+:1016D00045C0883B910509F444C0893B910509F454
+:1016E00043C08A3B910509F442C080E094E4089528
+:1016F00080E090E0089581E890E4089583E890E424
+:10170000089582EE94E4089589EE94E408958AEEB3
+:1017100094E4089585EB94E4089586EB94E40895A9
+:1017200087EB94E408958CEC94E408958DEC94E4B4
+:10173000089583E895E408958AE895E4089582E998
+:1017400095E4089584E995E4089581E296E4089586
+:1017500083E296E4089584E296E4089585E296E4AF
+:10176000089586E296E4089587E296E408958AE271
+:1017700096E40895089596E0799FF001112494E588
+:10178000899FE00DF11D1124E60FF11DEE0FFF1FE3
+:10179000EC51FF4F859194910895880F991FFC019A
+:1017A000E05AF040859194910895880F991FFC01AB
+:1017B000E052FF4F85919491089526E0729FF001C9
+:1017C000112444E5849FE00DF11D1124E60FF11D65
+:1017D000EE0FFF1FEC51FF4F859194919C013A95BC
+:1017E00021154FE1340708F41EC13F512115304146
+:1017F00020F49F700E94D50B08959C013053211551
+:10180000304118F49927906C0895811520E59207CE
+:1018100069F40E94BE1A4FEF84E39CE0415080407F
+:101820009040E1F700C000000C942422813020E5B4
+:10183000920751F48CE593E00E9455078091D701FF
+:1018400081608093D70108959C0130552115304166
+:1018500008F051C0292F33272F703327213031054D
+:10186000D9F4AC014370552702C0220F331F4A95AB
+:10187000E2F73C68AC0164E0440F551F6A95E1F75C
+:1018800044275370242B352B73E0880F991F7A95CA
+:10189000E1F7807699271DC02230310529F4982F71
+:1018A0008827816F906A089523303105A9F4AC012F
+:1018B0004370552721E030E002C0220F331F4A95C4
+:1018C000E2F73C6843E0880F991F4A95E1F7807E74
+:1018D0009770822B932B089524303105E1F4AC01ED
+:1018E0004370552721E030E002C0220F331F4A9594
+:1018F000E2F73A68E7CF9C0130572115304118F4E0
+:101900009F70906208959C0130582115304118F461
+:101910009F70906A0895803E9105E0F4803C9105A7
+:1019200058F58133910509F46FC048F48932910567
+:1019300009F463C08A32910509F46DC072C089331D
+:101940009105E9F082389105D1F08533910509F4CC
+:101950004DC067C0833E910581F138F4803E91050A
+:10196000B9F0823E9105D9F05CC0863E910561F1E7
+:10197000873E9105A1F155C00E94CD0B089520919D
+:10198000EA0120FD02C021FF4CC080EE90E049C07A
+:101990008091EA0180FFF9CF89E390E042C0809115
+:1019A000EA0182FF0EC08091EA0184FF03C080E05B
+:1019B00090E037C083EE90E034C08091EA0182FF6E
+:1019C000F2CF82EE90E02DC08091EA0183FF0BC040
+:1019D0008091EA0184FDEBCF87EE90E022C08091F8
+:1019E000EA0183FFF5CF86EE90E01BC08091EA010B
+:1019F00085FF07C089E290E014C08091EA0185FF6D
+:101A0000F9CF85E390E00DC08091EA0186FF07C021
+:101A10008AE290E006C08091EA0186FFF9CF81E377
+:101A200090E00E94FB0A0895089580916D01089549
+:101A30009FB7F89410925C019FBF9091F001943091
+:101A400009F057C09091E9009F703091EC00232F6E
+:101A5000217030FD20E8922B24E02093E9002091B2
+:101A6000EB0020FF43C02091EE0027FF3FC02091F4
+:101A70005A01222321F02091E80025FF37C010925F
+:101A80005A0126E03091E80035FD15C03091F00193
+:101A9000343061F53091EB0035FD28C0215021F440
+:101AA00081E080935A0122C0EFE9FFE03197F1F71E
+:101AB00000C00000E7CF8093F1008091E80085FD31
+:101AC0000AC08091E80080FFFCCF8091E8008E770B
+:101AD0008093E80006C08FB7F89421E020935C0162
+:101AE0008FBF9F709093E90080E008959F7090935E
+:101AF000E9008FEF0895CF93DF9300D01F92CDB709
+:101B0000DEB79C018091F001843019F593E0998350
+:101B10003B832A839093E9008FEF9091E8008150F6
+:101B200095FD06C095ED9A95F1F700008111F5CF6E
+:101B30008091E80085FF0DC040E050E063E070E078
+:101B4000CE0101960E944B108091E8008E77809321
+:101B5000E8000F900F900F90DF91CF910895CF93F1
+:101B6000DF9300D01F92CDB7DEB72091F001243073
+:101B700021F522E029839B838A8383E08093E90017
+:101B80008FEF9091E800815095FD06C095ED9A95F4
+:101B9000F1F700008111F5CF8091E80085FF0DC0BD
+:101BA00040E050E063E070E0CE0101960E944B10EF
+:101BB0008091E8008E778093E8000F900F900F904F
+:101BC000DF91CF9108952091F0012430F1F422E0CB
+:101BD0002093E9002FEF3091E800215035FD06C039
+:101BE00035ED3A95F1F700002111F5CF2091E8008D
+:101BF00025FF0BC040E050E065E070E00E944B1014
+:101C00008091E8008E778093E8000895CF93DF936A
+:101C10002091F001243009F048C0EC0180910C01C2
+:101C20008823E1F080910D018823C1F085E0809345
+:101C3000E9008FEF9091E800815095FD06C095E195
+:101C40009A95F1F700008111F5CF8091E80085FFAA
+:101C50002CC040E050E060E170E017C081E080936C
+:101C6000E9008FEF9091E800815095FD06C095ED59
+:101C70009A95F1F700008111F5CF8091E80085FF7A
+:101C800014C040E050E068E070E0CE010E944B10CC
+:101C90008091E8008E778093E80080E1FE01ADE559
+:101CA000B1E001900D928A95E1F7DF91CF9108950F
+:101CB00083E993E00E9455078091EF01811109C0EB
+:101CC0000E94E0110E943D128091E20084608093A6
+:101CD000E20008958FE893E00E9455071092EF010B
+:101CE00008958BE893E00C94550787E893E00E94F1
+:101CF00055070C94F42B83E893E00E9455070E944B
+:101D0000BA210E94FA2B0E94E2140C94140D209127
+:101D10005B012F5F822F62E30E94682D992319F0E7
+:101D200020935B01089510925B0180915C018823F0
+:101D300071F18091F001843041F58091E9008F705C
+:101D40002091EC00922F917020FD90E8892B94E077
+:101D50009093E9009091EB0090FF14C09091EE00F9
+:101D600097FF10C09091E80095FF03C01092F1001A
+:101D7000F9CF9091E80090FF05C09091E8009E7720
+:101D80009093E8008F708093E90010925C010895B1
+:101D900042E061EC81E00E945A1142E061EC82E095
+:101DA0000E945A1142E061EC83E00E945A1142E223
+:101DB00061EC84E00E945A1142E161EC85E00C94F0
+:101DC0005A118091F201833009F455C030F481300A
+:101DD00071F0823009F48EC008958A3009F47AC017
+:101DE0008B3009F460C0893009F09CC020C080911C
+:101DF000F101813A09F096C08091E800877F8093D5
+:101E0000E8008091F5019091F601892B21F460E1C1
+:101E10008DE591E003C060E080E090E070E00E941A
+:101E200096108091E8008B778093E8000895809168
+:101E3000F101813209F076C08091F5019091F601AF
+:101E4000009719F0049709F06DC08091E800877F32
+:101E50008093E8008091E80082FD05C08091F00148
+:101E60008111F8CF5FC08091F10080936D01809166
+:101E7000E8008B7753C08091F101813A09F052C09C
+:101E80008091F5019091F601892B09F04BC080916A
+:101E9000E800877F8093E8008091E80080FFFCCF16
+:101EA00080910C0136C08091F1018132D9F5809189
+:101EB000F5019091F601892BA9F58091E800877FC3
+:101EC0008093E8000E948F118091F30180930C01B0
+:101ED0000C94BE1A8091F101813221F58091E800C5
+:101EE000877F8093E8000E948F118091F401809396
+:101EF0006E0108958091F101813AA1F48091E8008A
+:101F0000877F8093E8008091E80080FFFCCF80917C
+:101F10006E018093F1008091E8008E778093E80055
+:101F20000C948F11089584B7877F84BF88E10FB622
+:101F3000F89480936000109260000FBE90E080E8FB
+:101F40000FB6F89480936100909361000FBE0E94D9
+:101F50006F150E94E0110E943D128091E2008460A2
+:101F60008093E20088E19DE00E94F92078940E942D
+:101F7000C2140E94711582E091E00E94DD140E945B
+:101F8000E22B82E793E00E9455078091F0018530B3
+:101F900089F48EE693E00E9455070E947E2180918D
+:101FA000EE01882391F30E94A621882371F30E94F9
+:101FB0003510EBCF0E949F15E8CF292F3327233010
+:101FC0003105C9F064F42130310581F0223031054A
+:101FD00009F043C08DE890E02BEC33E042C02132A1
+:101FE0003105F1F02232310541F137C082E190E054
+:101FF00028E534E036C099278130910541F08230E0
+:10200000910541F0892B49F5E7ECF3E005C0EFEAD3
+:10201000F3E002C0E7E9F3E0849190E09F0121C082
+:102020006530D8F4E62FF0E0EE0FFF1FEB5DFE4FBA
+:102030002081318189E090E014C0653070F470E057
+:10204000FB01EE0FFF1FE55EFE4F20813181FB019A
+:10205000EA5EFE4F808190E004C080E090E020E0E6
+:1020600030E0FA0131832083089580E189BD82E167
+:1020700089BD09B400FEFDCF8091D8008F7D80938B
+:10208000D8008091E00082608093E0008091E000C1
+:1020900081FDFCCF0895CF92DF92EF92FF920F93D4
+:1020A0001F93CF93DF93EC018B016A010E94AE1165
+:1020B000811133C0C114D10439F0F60180819181BE
+:1020C000081B190BC80FD91FE12CF12C01151105A4
+:1020D00019F18091E80085FD16C08091E8008E77A7
+:1020E0008093E800C114D10449F0F6018081918108
+:1020F000E80EF91EF182E08285E00FC00E94AE1169
+:10210000882321F30AC089918093F10001501109BD
+:10211000FFEFEF1AFF0ADACF80E0DF91CF911F9136
+:102120000F91FF90EF90DF90CF9008952091F701ED
+:102130003091F8012617370748F06115710539F419
+:102140002091E8002E772093E80001C0B90140E01B
+:1021500061157105A9F12091F001222309F443C012
+:10216000253009F442C02091E80023FD40C02091B1
+:10217000E80022FD32C02091E80020FFE9CF409125
+:10218000F3002091F20030E0342BFC01CF01611507
+:10219000710559F02830310540F481918093F100A8
+:1021A000615071092F5F3F4FF1CF41E02830310579
+:1021B00009F040E02091E8002E772093E800C8CF96
+:1021C0004111C9CF0AC08091F001882361F08530A8
+:1021D00061F08091E80083FD0AC08091E80082FFF1
+:1021E000F2CF80E0089582E0089583E0089581E0D1
+:1021F00008952091F7013091F8012617370748F02C
+:102200006115710539F42091E8002E772093E800DC
+:1022100001C0B901FC0120E06115710591F18091C7
+:10222000F001882309F440C0853009F43FC0809153
+:10223000E80083FD3DC08091E80082FD2FC08091C1
+:10224000E80080FFE9CF2091F3008091F20090E058
+:10225000922B6115710559F08830910540F4249155
+:102260002093F1003196615071090196F2CF21E07F
+:10227000089709F020E08091E8008E778093E800CD
+:10228000CBCF2111CCCF0AC08091F001882361F01F
+:10229000853061F08091E80083FD0AC08091E800FC
+:1022A00082FFF2CF80E0089582E0089583E00895F0
+:1022B00081E00895982F973058F59093E90098178A
+:1022C00039F07091EC002091ED005091F00003C0C6
+:1022D000242F762F50E021FF19C03091EB003E7F74
+:1022E0003093EB003091ED003D7F3093ED00309165
+:1022F000EB0031603093EB007093EC002093ED0025
+:102300005093F0002091EE0027FF07C09F5FD3CFCE
+:102310008F708093E90081E0089580E008958091B6
+:10232000F10187FF11C08091E80082FD05C0809116
+:10233000F0018111F8CF11C08091E8008B770BC0BC
+:102340008091F001882349F08091E80080FFF8CF68
+:102350008091E8008E778093E80008952091E40052
+:102360003091E50095E64091EC00842F817040FFAC
+:1023700022C08091E80080FD1CC08091F00188237C
+:1023800091F0853091F08091EB0085FD10C0409177
+:10239000E4005091E5004217530729F39A01915048
+:1023A00011F784E0089582E0089583E0089581E0C4
+:1023B000089580E008954091E80042FFDECF08953F
+:1023C0000E944E120E945612E0EEF0E08081816081
+:1023D0008083E8EDF0E080818F77808319BCA7EDE2
+:1023E000B0E08C918E7F8C9380818F7E8083109261
+:1023F000EF0108950F931F93CF93DF930E944E1226
+:102400000E945612C8EDD0E088818F77888388813A
+:102410008068888388818F7D888319BC1092F00141
+:102420001092EC011092EE011092ED0100EE10E01E
+:10243000F80180818B7F808388818160888342E07E
+:1024400060E080E00E945A11E1EEF0E080818E7F32
+:102450008083E2EEF0E0808181608083808188600B
+:102460008083F80180818E7F80838881806188836A
+:10247000DF91CF911F910F910895E8EDF0E08081F9
+:102480008F7E8083E7EDF0E080818160808384E04F
+:1024900082BF81E08093EF010C94FA11E8EDF0E047
+:1024A00080818E7F80831092E20008951092DA007E
+:1024B0001092E10008951F920F920FB60F9211240F
+:1024C0002F933F934F935F936F937F938F939F933C
+:1024D000AF93BF93EF93FF938091E10082FF0BC016
+:1024E0008091E20082FF07C08091E1008B7F8093A2
+:1024F000E1000E94870E8091DA0080FF1FC080916A
+:10250000D80080FF1BC08091DA008E7F8093DA00B4
+:102510008091D90080FF0DC080E189BD82E189BD35
+:1025200009B400FEFDCF81E08093F0010E94580EB7
+:1025300005C019BC1092F0010E946A0E8091E10062
+:1025400080FF19C08091E20080FF15C08091E200F9
+:102550008E7F8093E2008091E20080618093E200B0
+:102560008091D80080628093D80019BC85E0809368
+:10257000F0010E94750E8091E10084FF30C08091CF
+:10258000E20084FF2CC080E189BD82E189BD09B4ED
+:1025900000FEFDCF8091D8008F7D8093D800809180
+:1025A000E1008F7E8093E1008091E2008F7E809336
+:1025B000E2008091E20081608093E2008091EC0172
+:1025C000882311F084E007C08091E30087FD02C0FA
+:1025D00081E001C083E08093F0010E947B0E809136
+:1025E000E10083FF29C08091E20083FF25C0809134
+:1025F000E100877F8093E10082E08093F0011092F8
+:10260000EC018091E1008E7F8093E1008091E200F7
+:102610008E7F8093E2008091E20080618093E200EF
+:1026200042E060E080E00E945A118091F0008860F2
+:102630008093F0000E94710EFF91EF91BF91AF91D6
+:102640009F918F917F916F915F914F913F912F91CA
+:102650000F900FBE0F901F9018951F920F920FB6FC
+:102660000F9211242F933F934F935F936F937F9318
+:102670008F939F93AF93BF93CF93DF93EF93FF938A
+:10268000C091E900CF708091EC00D82FD17080FD0F
+:10269000D0E81092E9008091F000877F8093F000ED
+:1026A00078940E9471131092E9008091F000886084
+:1026B0008093F000CD2BCF70C093E900FF91EF9194
+:1026C000DF91CF91BF91AF919F918F917F916F914A
+:1026D0005F914F913F912F910F900FBE0F901F90E0
+:1026E00018951F93CF93DF93CDB7DEB7AA970FB698
+:1026F000F894DEBF0FBECDBFE1EFF1E088E08E0FB2
+:102700009091F10091938E13FBCF0E94E10E809186
+:10271000E80083FF1FC18091F1019091F201492FE0
+:1027200050E04A30510508F015C1FA01EA5AFF4F4E
+:102730000C94882D803881F0823809F00BC180918B
+:10274000F5018F708093E9008091EB0085FB88276D
+:1027500080F91092E90006C08091ED019091EE01A0
+:10276000911182609091E800977F9093E8008093A8
+:10277000F1001092F100C8C0282F2D7F09F0EAC0A7
+:10278000882319F0823061F0E5C08091F301813037
+:1027900009F0E0C0933009F080E08093EE012BC097
+:1027A0008091F301811127C08091F5018F7009F4A8
+:1027B000D1C08093E9002091EB0020FF1CC0933032
+:1027C00021F48091EB00806214C09091EB00906145
+:1027D0009093EB0021E030E0A90102C0440F551FA7
+:1027E0008A95E2F74093EA001092EA008091EB00AC
+:1027F00088608093EB001092E9008091E800877F69
+:1028000086C08111A7C01091F3011F778091E3006A
+:102810008078812B8093E3008091E800877F80930C
+:10282000E8000E948F118091E80080FFFCCF80912A
+:10283000E30080688093E300111102C082E001C0D0
+:1028400083E08093F00186C08058823008F082C017
+:102850008091F3019091F4018C3D53E0950779F557
+:1028600083E08A838AE289834FB7F894DE01139666
+:1028700020E03EE051E2E32FF0E050935700E49176
+:1028800020FF03C0E295EF703F5FEF708E2F90E066
+:10289000EA3010F0C79601C0C0968D939D932F5FCC
+:1028A000243149F74FBF8091E800877F8093E8008B
+:1028B0006AE270E0CE0101960E94961014C0AE014B
+:1028C0004F5F5F4F6091F5010E94DD0FBC01892BC6
+:1028D00009F440C09091E800977F9093E8008981C7
+:1028E0009A810E94F9108091E8008B778093E8002C
+:1028F00031C0803879F58091E800877F8093E800C7
+:102900008091EC018093F1008091E8008E778093B4
+:10291000E8000E948F111EC081111CC09091F3012C
+:102920009230C0F48091E800877F8093E800909314
+:10293000EC010E948F118091EC01811106C0809101
+:10294000E30087FD02C081E001C084E08093F001D4
+:102950000E94C80E8091E80083FF0AC08091E800C1
+:10296000877F8093E8008091EB0080628093EB008A
+:10297000AA960FB6F894DEBF0FBECDBFDF91CF9100
+:102980001F910895CF938091F0018823A1F0C09109
+:10299000E900CF709091EC00892F817090FD80E864
+:1029A000C82B1092E9008091E80083FD0E9471130A
+:1029B000CF70C093E900CF910895909374018093F4
+:1029C00073010895E0917301F0917401309721F043
+:1029D0000190F081E02D099480E00895EF92FF923C
+:1029E0000F931F93CF93DF93E0917301F0917401E4
+:1029F0003097B1F18C010280F381E02D099580912F
+:102A0000D70182FF2DC080FF04C08DE895E00E94B1
+:102A10005507E80110E187E8E82E85E0F82E80915F
+:102A2000D70180FF0BC088811F928F93FF92EF9296
+:102A30000E94EE070F900F900F900F90115021966B
+:102A40001111EDCF8091D70180FF0AC085E895E094
+:102A5000DF91CF911F910F91FF90EF900C9455074C
+:102A6000DF91CF911F910F91FF90EF900895E0912A
+:102A70007301F0917401309721F00480F581E02D0D
+:102A80000994089520917101309172018217930782
+:102A900071F09093720180937101E0917301F09154
+:102AA0007401309721F00680F781E02D0994089594
+:102AB00020916F01309170018217930771F090930C
+:102AC000700180936F01E0917301F0917401309770
+:102AD00021F00084F185E02D0994089508950C9467
+:102AE0006E150E94C0210E9465090C948622CF9326
+:102AF000C82F8091D70182FF1EC080FF04C086EAE4
+:102B000095E00E9455078091D70180FF0CC01F926D
+:102B1000CF9381EA95E09F938F930E94EE070F90E9
+:102B20000F900F900F908091D70180FF04C08FE924
+:102B300095E00E9455078C2FCF910C94140DCF92E5
+:102B4000DF92EF92FF920F931F93CF93DF93CDB756
+:102B5000DEB72B970FB6F894DEBF0FBECDBF0E9435
+:102B6000820986E7C82E81E0D82E00E010E0E02E32
+:102B7000802F0E94AE0AF60141916F01F42EF826D3
+:102B8000B1F40F5F1F4F0E30110589F78FEF898366
+:102B90008A831B820E94C9218160782F9D838C8348
+:102BA00049815A816B818D810E94421640C090916B
+:102BB000D70191FF04C08B870E94B40A8B8520E067
+:102BC00030E04F2D50E0922FBA01022E02C07595D1
+:102BD00067950A94E2F760FF24C02E83EF8221E01C
+:102BE00030E0690102C0CC0CDD1C9A95E2F790E060
+:102BF0008C219D21892B09F420E028870E94C9217E
+:102C00008160782F9A8789874E815F8168858A8560
+:102C10000E944216F801EA58FE4F8081C826C08201
+:102C200006C02F5F3F4F2630310569F6AACF0E94BC
+:102C3000F725109175010E94E2141817A1F00E9467
+:102C4000E214809375012B960FB6F894DEBF0FBE89
+:102C5000CDBFDF91CF911F910F91FF90EF90DF904B
+:102C6000CF900C9477152B960FB6F894DEBF0FBE5D
+:102C7000CDBFDF91CF911F910F91FF90EF90DF902B
+:102C8000CF900895CF93DF93CDB7DEB72B970FB6D4
+:102C9000F894DEBF0FBECDBF4F83588769877A8710
+:102CA0008B87DE01119686E0FD0111928A95E9F786
+:102CB00085E0FE01379601900D928A95E1F74981F2
+:102CC0005A816B817C818D819E810E94581D2B963B
+:102CD0000FB6F894DEBF0FBECDBFDF91CF91089540
+:102CE000CF93882309F4C2C0C82F823859F40E94B8
+:102CF000E21481FDBBC089E30E94F41F0E94D3202F
+:102D000089E30CC0833879F40E94E21480FDAEC0E0
+:102D100083E50E94F41F0E94D32083E50E94472090
+:102D2000CF910C94D320843859F40E94E21482FD90
+:102D30009DC087E40E94F41F0E94D32087E4EECF59
+:102D40008CEF8C0F813A48F48C2F0E948A2A8111D3
+:102D50008DC08C2F0E94F41FE3CF80E28C0F88304F
+:102D600048F4C77081E001C0880FCA95EAF70E9455
+:102D70009C20D6CF8BE58C0F833078F4C53A29F0B0
+:102D8000C63A31F083E890E005C081E890E002C0E7
+:102D900082E890E0CF910C94421588E58C0F833146
+:102DA00008F064C0C83A39F1C93A41F1CA3A49F168
+:102DB000CB3A51F1CC3A59F1CD3A61F1C03B69F1CE
+:102DC000CE3A71F1CF3A79F1C13B81F1C23B89F141
+:102DD000C33B91F1C43B99F1C53BA1F1C63BA9F1BD
+:102DE000C73BB1F1C83BB9F1C93BC1F1CA3BC9F11D
+:102DF00080E090E038C082EE90E035C089EE90E04F
+:102E000032C08AEE90E02FC085EB90E02CC086EBBC
+:102E100090E029C087EB90E026C08CEC90E023C0C6
+:102E20008DEC90E020C083E891E01DC08AE891E03D
+:102E30001AC082E991E017C084E991E014C081E2F0
+:102E400092E011C083E292E00EC084E292E00BC0F7
+:102E500085E292E008C086E292E005C087E292E057
+:102E600002C08AE292E0CF910C945815CF91089558
+:102E7000882309F44BC0823859F40E94E21481FF80
+:102E800045C089E30E94F41F0E94D32089E30CC04F
+:102E9000833871F40E94E21480FF38C083E50E94F9
+:102EA000F41F0E94D32083E50E9447200C94D32076
+:102EB000843859F40E94E21482FF28C087E40E94FB
+:102EC000F41F0E94D32087E4EFCF9CEF980F913A34
+:102ED00058F390E2980F983050F4877091E001C059
+:102EE000990F8A95EAF7892F0E94A220DFCF9BE5F0
+:102EF000980F933020F480E090E00C944215885AAB
+:102F0000833120F480E090E00C94581508958823D4
+:102F100021F00E949C200C94D3200895882321F056
+:102F20000E94A2200C94D3200895BF92CF92DF92EA
+:102F3000EF92FF920F931F93CF93DF9300D000D0B7
+:102F400000D0CDB7DEB725E0FC01DE01119601907F
+:102F50000D922A95E1F7FC014081318102812581A2
+:102F600022952F7063817481672B09F4E5C23F3F7E
+:102F700019F44F3F09F4E0C27C0149833A83898107
+:102F80009A812E830E94B31F182FB92E0E94B21F60
+:102F90000E94791EEB2DE295EF70F0E0E05AFF4FB2
+:102FA0002E810C94882D8B2D807F9B2D9F70F92E68
+:102FB000882319F0F29480EFF822002349F0FF20D3
+:102FC00009F467C28F2D0E94AC200E94D32061C2F9
+:102FD000812F0E943817FF2009F4AEC28F2D0E9466
+:102FE000B22026960FB6F894DEBF0FBECDBFDF919C
+:102FF000CF911F910F91FF90EF90DF90CF90BF90F6
+:103000000C94D3203B2D307F8B2D8F70303211F0FC
+:103010008295807F112319F0113021F12CC00023FB
+:10302000B9F0222309F4A0C1213009F09DC12696F0
+:103030000FB6F894DEBF0FBECDBFDF91CF911F91C9
+:103040000F91FF90EF90DF90CF90BF900C94BC2039
+:10305000222319F0213009F46FC28E830E94BF2011
+:103060008E8196C1002321F0223008F065C27CC118
+:10307000211162C28DC1002321F0222309F474C101
+:1030800008C2222309F484C119C22B2D2695269546
+:10309000237030E02115310521F021303105D1F0C8
+:1030A0004BC2002321F0812F9B2D937002C080E042
+:1030B00090E026960FB6F894DEBF0FBECDBFDF912D
+:1030C000CF911F910F91FF90EF90DF90CF90BF9025
+:1030D0000C944215002321F0812F9B2D937002C088
+:1030E00080E090E026960FB6F894DEBF0FBECDBF0D
+:1030F000DF91CF911F910F91FF90EF90DF90CF90D4
+:10310000BF900C945815812F002319F00E947D2444
+:1031100002C00E94E52426960FB6F894DEBF0FBECB
+:10312000CDBFDF91CF911F910F91FF90EF90DF9076
+:10313000CF90BF900C946A258B2D837009F07BC0D3
+:103140000111FAC1812F829586958770880F880FAB
+:10315000912F9F70C92ED12CE12CF12C082E04C088
+:10316000CC0CDD1CEE1CFF1C0A94D2F714FF12C01D
+:103170004FE050E060E070E004C0440F551F661F50
+:10318000771F8A95D2F7CB01BA016095709580952B
+:10319000909503C060E070E0CB012B2D269526951D
+:1031A0002370422F50E042305105D9F04330510591
+:1031B00069F16C297D298E299F294130510551F1F2
+:1031C00026960FB6F894DEBF0FBECDBFDF91CF912C
+:1031D0001F910F91FF90EF90DF90CF90BF900C94D4
+:1031E000A01E6C297D298E299F2926960FB6F8945A
+:1031F000DEBF0FBECDBFDF91CF911F910F91FF902A
+:10320000EF90DF90CF90BF900C94BC1E0E94A01E48
+:10321000C701B60126960FB6F894DEBF0FBECDBF2C
+:10322000DF91CF911F910F91FF90EF90DF90CF90A2
+:10323000BF900C94841E002319F08B2D817001C067
+:103240008695882309F478C1812F829586958770A9
+:10325000880F880F912F9F70C92ED12CE12CF12C53
+:10326000082E04C0CC0CDD1CEE1CFF1C0A94D2F707
+:1032700014FF12C04FE050E060E070E004C0440F63
+:10328000551F661F771F8A95D2F7CB01BA0160954B
+:1032900070958095909503C060E070E0CB012B2D78
+:1032A000269526952370422F50E042305105D9F0E3
+:1032B0004330510569F16C297D298E299F294130C0
+:1032C000510551F126960FB6F894DEBF0FBECDBF63
+:1032D000DF91CF911F910F91FF90EF90DF90CF90F2
+:1032E000BF900C947A1F6C297D298E299F292696E0
+:1032F0000FB6F894DEBF0FBECDBFDF91CF911F9107
+:103300000F91FF90EF90DF90CF90BF900C94961F9D
+:103310000E947A1FC701B60126960FB6F894DEBF49
+:103320000FBECDBFDF91CF911F910F91FF90EF9016
+:10333000DF90CF90BF900C945E1F103FD1F118F436
+:10334000103E50F4A1C0123F09F463C008F44CC011
+:10335000133F09F473C098C01F708B2D8F71002329
+:10336000A1F00E94F71E812F26960FB6F894DEBFBB
+:103370000FBECDBFDF91CF911F910F91FF90EF90C6
+:10338000DF90CF90BF900C9487170E94181F812F59
+:1033900026960FB6F894DEBF0FBECDBFDF91CF915A
+:1033A0001F910F91FF90EF90DF90CF90BF900C9402
+:1033B0008E170023A9F02111BFC08B2D8F71269687
+:1033C0000FB6F894DEBF0FBECDBFDF91CF911F9136
+:1033D0000F91FF90EF90DF90CF90BF900C943D1F26
+:1033E000223008F0A9C0E9CF0023A9F08B2D8F71FE
+:1033F00026960FB6F894DEBF0FBECDBFDF91CF91FA
+:103400001F910F91FF90EF90DF90CF90BF900C94A1
+:10341000F71E002359F38B2D8F7126960FB6F89463
+:10342000DEBF0FBECDBFDF91CF911F910F91FF90F7
+:10343000EF90DF90CF90BF900C94181F002399F06D
+:103440008B2D8F7126960FB6F894DEBF0FBECDBFC1
+:10345000DF91CF911F910F91FF90EF90DF90CF9070
+:10346000BF900C94E21E26960FB6F894DEBF0FBEF6
+:10347000CDBFDF91CF911F910F91FF90EF90DF9023
+:10348000CF90BF900C94D81E0023A9F0222309F4FA
+:10349000ADCF812F26960FB6F894DEBF0FBECDBFFD
+:1034A000DF91CF911F910F91FF90EF90DF90CF9020
+:1034B000BF900C947016222309F4ADCF812F26966D
+:1034C0000FB6F894DEBF0FBECDBFDF91CF911F9135
+:1034D0000F91FF90EF90DF90CF90BF900C94381732
+:1034E0004B2D4F70612FC7010E94F70726960FB62C
+:1034F000F894DEBF0FBECDBFDF91CF911F910F912A
+:10350000FF90EF90DF90CF90BF900C94FC1D4B2D5F
+:103510004F70612FC70126960FB6F894DEBF0FBE1D
+:10352000CDBFDF91CF911F910F91FF90EF90DF9072
+:10353000CF90BF900C94BA0B26960FB6F894DEBFCE
+:103540000FBECDBFDF91CF911F910F91FF90EF90F4
+:10355000DF90CF90BF9008950E94B9200E948E20E6
+:103560000E94D3200E949D260E946A2580E090E060
+:103570000E94421580E090E00C9458150E94A9200A
+:103580000C94AC1A0E94B31F292F22952F7030E0A3
+:103590002C3031054CF42A3031056CF422503109BD
+:1035A0002230310588F407C02C30310549F02F3026
+:1035B000310531F009C0803E48F0803F29F406C053
+:1035C00093FB882780F9089580E0089581E00895AD
+:1035D000CF93DF9300D000D01F92CDB7DEB70F900E
+:1035E0000F900F900F900F90DF91CF910895CF9390
+:1035F000DF9300D000D000D0CDB7DEB726960FB64F
+:10360000F894DEBF0FBECDBFDF91CF9108951F9319
+:10361000CF93DF93C091840116E080918501C81794
+:1036200099F0D0E01C9FF0011D9FF00D1124EA5786
+:10363000FE4F4081518162817381848195810E9416
+:10364000F71A2196C770E9CFDF91CF911F910895A6
+:103650004091B6015091B7016091B8017091B901E4
+:103660008091BA019091BB010C94F71A8091BB0133
+:1036700082958F7009F054C08091B801882309F4B5
+:103680004FC080918401A09185016091B601709135
+:10369000B7014091B9015091BA01B6E08A1709F417
+:1036A0003FC090E041155105C1F17F3F11F46F3FDC
+:1036B000A1F1B89FF001B99FF00D1124EA57FE4F18
+:1036C000218172132AC02081621327C02281211117
+:1036D00024C0238134812417350710F42150310987
+:1036E000241B350B283C3105C0F42091BB012F7001
+:1036F00020612093BB0126E0289FF001299FF00D57
+:103700001124E557FE4F80818F708061808386EBA6
+:1037100091E00E9495170C94071B01968770BECF0D
+:103720000895CF92DF92EF92FF920F931F93CF9362
+:10373000DF93CDB7DEB762970FB6F894DEBF0FBE4A
+:10374000CDBF8C0185E0F801DE011D9601900D9240
+:103750008A95E1F7D8014C9111965C9111971296D8
+:103760006C9112971396CD90DC9014973091B6011E
+:103770007091B7018091B9019091BA01009709F455
+:103780006BC17F3F19F43F3F09F466C1E090B80177
+:10379000EE2009F4C0C02091BB01C816D90628F05C
+:1037A000F601E81BF90BCF0104C0809590958C0DB4
+:1037B0009D1DFF24F394883C910578F0F12C207F27
+:1037C00009F0C6C07C2DD98AC88A89890E94E81A66
+:1037D00086EB91E00E949517B1C0822F807F09F09F
+:1037E00046C0751314C0341312C0611110C02F707D
+:1037F00020612093BB010E94281B86EB91E00E9470
+:1038000095178091BB01D80115968C932EC0CD28B9
+:1038100019F15F3F11F44F3FF9F0F62E61111CC012
+:10382000809184012091850136E0821709F45AC005
+:1038300090E0389FF001399FF00D1124EA57FE4FB8
+:103840007181571306C07081471303C072817111D3
+:1038500003C001968770E9CFF62E662309F418C1DC
+:103860008091BB0181608093BB01F12C11C1751364
+:1038700008C0341306C0611104C08091BB01D80197
+:10388000C3C04D875E878D859E856A8B0E94C21A54
+:103890006A898823E1F16623D1F12091BB01822F4F
+:1038A00082958F7090E0029774F08091B6019091AC
+:1038B000B70198878F831986DB86CA862C87CE014D
+:1038C00007960E94951786E0F801A6EBB1E00190FB
+:1038D0000D928A95E1F70E94361B0E94281BFF2457
+:1038E000F394D6C04D875E878D859E850E94B31F59
+:1038F000292F22952F7030E0223031050CF0BCC00A
+:103900009F7009F0B6C0805E883008F4C1C0C8015D
+:103910000E949517E4CFC816D90608F453C0F601E3
+:10392000E81BF90BCF01883C910508F450C0F12C3D
+:103930007C2DD98AC88A89890E94E81AE6EBF1E0D1
+:1039400086E0DF011D928A95E9F70E94281BA0C03E
+:10395000751314C0341312C0611110C08091BB01E3
+:10396000F8018583C8010E94951786E0E6EBF1E037
+:10397000DF011D928A95E9F7FE2C8AC04D875E878C
+:103980008D859E856A8B0E94C21A6A89882309F4F4
+:10399000BECF662309F4BBCF2091BB01822F829555
+:1039A0008F7090E002970CF48ECF8091B6019091C9
+:1039B000B7019A8389831B82DD82CC822E83CE015C
+:1039C00001967FCF809590958C0D9D1DACCFF62EE6
+:1039D000662309F49CCF75132EC034132CC020919C
+:1039E000BB0120FD1FC0822F82958F70D9F0D801B6
+:1039F00015962C9315978F3049F08F5F982F9295DD
+:103A0000907F822F8F70892B15968C93C8010E940E
+:103A1000951786E0F801A6EBB1E001900D928A952A
+:103A2000E1F793CF86E0F801A6EBB1E001900D92AB
+:103A30008A95E1F72DC04D875E878D859E850E9412
+:103A4000C21A811140CF8091BB0181608093BB017C
+:103A5000C8010E9495171CC0662309F458CF4D87F2
+:103A60005E878D859E850E94C21A882309F44FCFF8
+:103A70002ACF811148CF0CC0243031050CF047CF3C
+:103A80009F7009F440CFF8019581907F09F03BCFFA
+:103A90008F2D62960FB6F894DEBF0FBECDBFDF91BB
+:103AA000CF911F910F91FF90EF90DF90CF900895ED
+:103AB0001F93CF93DF93CDB7DEB72C970FB6F89453
+:103AC000DEBF0FBECDBF4F83588769877A878B874C
+:103AD0009C87CE0107960E94911B882369F08F81F5
+:103AE00098852A853B85232BF1F19F3F09F063C020
+:103AF0008F3F09F060C037C086E0FE013796DE01D7
+:103B0000119601900D928A95E1F76F817885EA858B
+:103B1000FB85309741F17F3F11F46F3F21F12091F8
+:103B2000850130E0C9010196877099274091840191
+:103B300050E08417950709F447C069837A83FD83B1
+:103B4000EC8396E0929FD001939FB00D1124AA5769
+:103B5000BE4FFE01319601900D929A95E1F7809348
+:103B600085010E94071B16E08091840190918501D8
+:103B70008917C1F1189FC00111248A579E4F0E94D6
+:103B8000911B882379F1E09184011E9FF00111249B
+:103B9000EA57FE4F40815181628173818481958112
+:103BA0000E94F71A8091840190E00196877099270E
+:103BB00080938401D9CF4F81588569857A858B851B
+:103BC0009C850E94F71ACFCF0E94BE1A10928501E1
+:103BD00010928401E6EBF1E086E0DF011D928A9508
+:103BE000E9F7C1CF2C960FB6F894DEBF0FBECDBF5C
+:103BF000DF91CF911F910895EF92FF920F931F9342
+:103C0000CF93DF938C01892B09F46CC0F12CEE2447
+:103C1000E394E8012196F8018491843740F48430DC
+:103C200008F051C0813081F0823019F15BC08537D6
+:103C300009F444C0A8F19CE7980F903708F052C0EF
+:103C40008F770E94381741C00E5F1F4FFE01C4914D
+:103C500080E28C0F883048F4C7708E2D01C0880F29
+:103C6000CA95EAF70E94AC2014C08C2F0E947016EF
+:103C70002DC00E5F1F4FFE01C49180E28C0F883073
+:103C800058F4C7708E2D01C0880FCA95EAF70E94BC
+:103C9000B2200E94D3201AC08C2F0E94381716C061
+:103CA0000E5F1F4FFE01C491CC2381F08FE99FE08E
+:103CB0000197F1F700C00000C150F6CF0E5F1F4F13
+:103CC000FE01F49003C00E9470168E018F2D882390
+:103CD00009F49FCFEFE9FFE03197F1F700C0000052
+:103CE0008150F5CFDF91CF911F910F91FF90EF9011
+:103CF000089508956093C0017093C1018093C2013B
+:103D00009093C3010C94AC1A0F931F930091C001C0
+:103D10001091C1012091C2013091C301DC01CB019E
+:103D2000802B912BA22BB32B8093C0019093C101C8
+:103D3000A093C201B093C3011F910F910C94AC1AD0
+:103D40000F931F930091C0011091C1012091C201F6
+:103D50003091C301DC01CB0180239123A223B32343
+:103D60008093C0019093C101A093C201B093C3019D
+:103D70001F910F910C94AC1A0F931F930091C001E7
+:103D80001091C1012091C2013091C301DC01CB012E
+:103D900080279127A227B3278093C0019093C10168
+:103DA000A093C201B093C3011F910F910C94AC1A60
+:103DB0001092BC011092BD011092BE011092BF0181
+:103DC0000C94AC1A41E050E060E070E004C0440F95
+:103DD000551F661F771F8A95D2F74093BC015093F9
+:103DE000BD016093BE017093BF010C94AC1A41E019
+:103DF00050E060E070E004C0440F551F661F771F5D
+:103E00008A95D2F78091BC019091BD01A091BE012D
+:103E1000B091BF01482B592B6A2B7B2B4093BC01DF
+:103E20005093BD016093BE017093BF010C94AC1A16
+:103E300041E050E060E070E004C0440F551F661F91
+:103E4000771F8A95D2F7409550956095709580912F
+:103E5000BC019091BD01A091BE01B091BF0148236A
+:103E600059236A237B234093BC015093BD01609387
+:103E7000BE017093BF010C94AC1A41E050E060E0C9
+:103E800070E004C0440F551F661F771F8A95D2F754
+:103E90008091BC019091BD01A091BE01B091BF0184
+:103EA000482759276A277B274093BC015093BD01BF
+:103EB0006093BE017093BF010C94AC1A0F931F93D3
+:103EC0000091BC011091BD012091BE013091BF0154
+:103ED000DC01CB01802B912BA22BB32B8093BC0157
+:103EE0009093BD01A093BE01B093BF011F910F91AC
+:103EF0000C94AC1A0F931F930091BC011091BD015B
+:103F00002091BE013091BF01DC01CB0180239123C0
+:103F1000A223B3238093BC019093BD01A093BE0163
+:103F2000B093BF011F910F910C94AC1A0F931F9384
+:103F30000091BC011091BD012091BE013091BF01E3
+:103F4000DC01CB0180279127A227B3278093BC01F6
+:103F50009093BD01A093BE01B093BF011F910F913B
+:103F60000C94AC1A0895CF92DF92EF92FF920F93C8
+:103F70001F93CF93DF938C01C090C001D090C101FB
+:103F8000E090C201F090C3014091BC015091BD018D
+:103F90006091BE017091BF01C42AD52AE62AF72A92
+:103FA000CFE1D0E0D701C6010C2E04C0B695A7958D
+:103FB000979587950A94D2F780FF07C0B8018C2F98
+:103FC0000E94DD0B8130910531F4219758F7B8013B
+:103FD00080E00E94DD0BDF91CF911F910F91FF9048
+:103FE000EF90DF90CF90089590910C01992321F0EC
+:103FF00090910D01911109C020910E0130910F0196
+:10400000F90132969FEF40E030C0982F9695969533
+:1040100096959F30A0F4E0910E01F0910F01E90F09
+:10402000F11D877021E030E0A90102C0440F551F47
+:104030008A95E2F7CA019181892B81830895909135
+:10404000D70190FF23C01F928F9387ED95E09F9338
+:104050008F930E94EE070F900F900F900F9008958E
+:104060009F3F39F04F5F4E3041F051915813F8CFD8
+:104070000DC05111F7CF942FF5CF9F3F39F0F901C3
+:10408000E90FF11D97FDFA958283089508959091A7
+:104090000C01992321F090910D01911109C02091FB
+:1040A0000E0130910F01F9013296205F3F4F30C071
+:1040B000982F9695969596959F30A8F4E0910E01CD
+:1040C000F0910F01E90FF11D877021E030E0A901A7
+:1040D00002C0440F551F8A95E2F7CA01809591816D
+:1040E0008923818308959091D70190FF16C01F9274
+:1040F0008F9389EB95E09F938F930E94EE070F902B
+:104100000F900F900F9008953196E217F30729F062
+:1041100090819813F9CF1082F7CF089581E090E055
+:10412000E0910E01F0910F01E80FF91F1082019646
+:1041300080319105A9F708959091D601892B80933C
+:10414000D601089580959091D60189238093D60158
+:1041500008951092D60108959091D501892B8093EE
+:10416000D501089580959091D50189238093D5013B
+:1041700008951092D50108958093C4010895109276
+:10418000C401089580910E0190910F01FC013196B8
+:104190009C01205F3F4F80E0919191118F5FE2176A
+:1041A000F307D1F70895E0910E01F0910F0180918E
+:1041B000D6018083E0910E01F0910F0190818091F2
+:1041C000D501892B80838091C401882361F0E0911F
+:1041D0000E01F0910F019081892B80830E94C220F3
+:1041E00081111092C40180910E0190910F010C94E5
+:1041F000EE1490933B0180933A010895CF92DF92A1
+:10420000EF92FF926C01EE24FF24C114D104E1046B
+:10421000F10421F0C701B60120E101C020E0C72E62
+:10422000D82EE92EFF24C114D104E104F10419F0C1
+:10423000285FC701B6016B017C0154E0F694E79456
+:10424000D794C7945A95D1F7C114D104E104F1046D
+:1042500019F02C5FC701B6016B017C0142E0F694B6
+:10426000E794D794C7944A95D1F7C114D104E104D7
+:10427000F10419F02E5FC701B601DC01CB01B69540
+:10428000A79597958795892B8A2B8B2B09F02F5F04
+:10429000822FFF90EF90DF90CF9008958295982F16
+:1042A0009C7C392F36953695282F237344E0249F24
+:1042B000C0011124932F982B292F2A7A2695892F14
+:1042C0008575880F822B08951F93CF93DF931F92DC
+:1042D000CDB7DEB799830E944E21182F9981892F7F
+:1042E0000E944E21212F30E0322F2227A901482B96
+:1042F000CA010F90DF91CF911F9108958091F00135
+:10430000843009F11092D80120E488E190E00FB6E2
+:10431000F894A895809360000FBE2093600083B747
+:10432000817F846083BF83B7816083BF78948895E1
+:1043300083B78E7F83BF88E10FB6F89480936000C7
+:10434000109260000FBE089508950895CF930E94C3
+:10435000A4210E9482090E94A521C0E08C2F0E9406
+:10436000AE0A811104C0CF5FCE30C1F701C081E039
+:10437000CF9108950E94BE1A0E94E2140C94140D6D
+:1043800082E084BD93E095BD9AEF97BD80936E0067
+:1043900008952FB7F8948091D9019091DA01A091F6
+:1043A000DB01B091DC012FBF0895CF92DF92EF9235
+:1043B000FF920F931F932FB7F8944091D90150911A
+:1043C000DA016091DB017091DC012FBF6A017B0192
+:1043D000EE24FF248C0120E030E0C016D106E20676
+:1043E000F30610F4415051099A01281B390BC901F9
+:1043F0001F910F91FF90EF90DF90CF9008951F9243
+:104400000F920FB60F9211248F939F93AF93BF9388
+:104410008091D9019091DA01A091DB01B091DC018A
+:104420000196A11DB11D8093D9019093DA01A0934B
+:10443000DB01B093DC01BF91AF919F918F910F9001
+:104440000FBE0F901F9018950E94E011F8942FEF67
+:1044500087EA91E6215080409040E1F700C00000DB
+:1044600087E090EBDC018093F9019093FA01A0932F
+:10447000FB01B093FC019CE088E10FB6F894A8958D
+:10448000809360000FBE90936000FFCFEF92FF9289
+:104490000F931F93CF93DF93D82FC0E08C2F0E94F0
+:1044A000AE0A00E010E0E82EF12CC701002E02C099
+:1044B000959587950A94E2F780FD06C00F5F1F4F20
+:1044C0000630110591F709C0602F7C2F80E00E9413
+:1044D000BB0BD813F3CF81E004C0CF5FCE30F1F631
+:1044E00080E0DF91CF911F910F91FF90EF900895A1
+:1044F000CF93C82F8CE20E944622882321F08C2F74
+:10450000CF910C94462280E0CF910895CF930E94E2
+:10451000D523811102C00E94BB238CEF95E00E943D
+:104520005507C5E6C15049F00E9482098FE39CE916
+:104530000197F1F700C00000F5CF85EF95E00E94EC
+:10454000550789E20E947822811113C18AE20E94F4
+:10455000782281110E94BB2385E00E94782281117C
+:104560000E9424220E94E0238093D70187E00E94CA
+:1045700078228823A9F18BE10E947822882351F0C8
+:104580008091D70181FB222720F991E0922790FBAF
+:1045900081F90EC08EE00E947822882361F080911C
+:1045A000D70182FB222720F991E0922790FB82F924
+:1045B0008093D70115C080E10E9478229091D701A5
+:1045C000882341F093FB222720F981E0822780FB9A
+:1045D00093F904C0892F809580FB90F99093D701BF
+:1045E0008091D7010E94E4230E94F2238093EA0184
+:1045F00080EE0E947822882341F08091EA01982F72
+:10460000909590FB80F98093EA0189E30E947822DB
+:10461000882359F08091EA0181FB222720F991E05B
+:10462000922790FB81F98093EA0182EE0E94782222
+:10463000882359F08091EA0182FB222720F991E03A
+:10464000922790FB82F98093EA0186EE0E947822FD
+:10465000882359F08091EA0183FB222720F991E019
+:10466000922790FB83F98093EA0183EE0E947822DF
+:10467000882359F08091EA0184FB222720F991E0F8
+:10468000922790FB84F98093EA0185E30E947822C7
+:10469000882359F08091EA0185FB222720F991E0D7
+:1046A000922790FB85F98093EA0181E30E947822AA
+:1046B000882359F08091EA0186FB222720F991E0B6
+:1046C000922790FB86F98093EA0181E10E9478228B
+:1046D000882359F08091EA0187FB222720F991E095
+:1046E000922790FB87F98093EA018091EA010E946A
+:1046F000F6238091EA0187FB882780F980930D01DA
+:1047000087E20E947822C82F8EE10E9478228111D0
+:10471000C2608FE10E9478228111C46080E20E9411
+:1047200078228111C86081E20E9478228111C061E3
+:1047300082E20E9478228111C06283E20E94782284
+:104740008111C06484E20E947822882311F0C0683D
+:1047500002C0CC2329F08C2F0E94ED236C2F03C0C4
+:104760000E94E923682F70E080E090E0CF910C94E4
+:104770007A1ECF9108956DEE7EEF80E090E00E946A
+:10478000BE2D60E082E090E00E94B02D60E083E00A
+:1047900090E00E94B02D60E084E090E00E94B02D97
+:1047A00060E085E090E00C94B02D80E090E00E9405
+:1047B000AA2D21E08D3E9E4F09F020E0822F089522
+:1047C00082E090E00C94A22D682F82E090E00C949F
+:1047D000B02D83E090E00C94A22D682F83E090E050
+:1047E0000C94B02D84E090E00C94A22D682F84E00E
+:1047F00090E00C94B02D8091DF0180FF0BC06091A0
+:10480000130185E0689FB001112475956795759532
+:1048100067952BC081FF09C06091130185E0689FF7
+:10482000B00111247595679520C082FF07C0609183
+:10483000130185E0689FB001112417C09091E00139
+:104840009923D1F060911201961788F720911301F6
+:1048500085E0289F90011124929FA001939F500D05
+:10486000112470E0CA010E94742D6038710540F473
+:104870006115710539F002C065E070E0862F08957A
+:104880008FE7089581E008958091DF0180FF08C0DF
+:104890006091110170E0759567957595679521C0D8
+:1048A00081FF06C06091110170E07595679519C090
+:1048B00082FF04C06091110170E010C09091E0018E
+:1048C0009923C1F0609110019617A0F78091110112
+:1048D000899FC001112470E00E94742D6038710519
+:1048E00028F46115710521F0862F08958FE708954A
+:1048F00081E0089561E070E0F4CF803F21F40E94F0
+:10490000FB23819504C0813F29F40E94FB238093FF
+:10491000E3010895823F21F40E94FB23819504C0A6
+:10492000833F29F40E94FB238093E2010895893F8D
+:1049300019F40E94442405C08A3F31F40E944424A3
+:1049400081958093E40108958B3F21F40E944424D3
+:10495000819504C08C3F29F40E9444248093E50192
+:104960000895843F21F48091E101816017C0853F63
+:1049700021F48091E101826011C0863F21F4809191
+:10498000E10184600BC0873F21F48091E1018860E0
+:1049900005C0883F31F48091E10180618093E1019D
+:1049A00008958D3F21F48091DF0181600BC08E3F1F
+:1049B00021F48091DF01826005C08F3F29F480914E
+:1049C000DF0184608093DF010895803F39F4809196
+:1049D000E30187FF6CC01092E30169C0813F29F4B5
+:1049E0008091E3011816BCF362C09091E201823F0E
+:1049F00029F497FF5CC01092E20159C0833F19F47B
+:104A00001916CCF354C0893F41F48091E401181683
+:104A10000CF04DC01092E4014AC08A3F29F4809105
+:104A2000E40187FF44C0F6CF8B3F39F48091E50164
+:104A300087FF3DC01092E5013AC08C3F29F4809178
+:104A4000E5011816BCF333C0843F21F48091E101E5
+:104A50008E7F17C0853F21F48091E1018D7F11C0C9
+:104A6000863F21F48091E1018B7F0BC0873F21F4C9
+:104A70008091E101877F05C0883F31F48091E10199
+:104A80008F7E8093E10113C08D3F21F48091DF017F
+:104A90008E7F0BC08E3F21F48091DF018D7F05C09A
+:104AA0008F3F29F48091DF018B7F8093DF0180911C
+:104AB000E20181110EC08091E30181110AC0809151
+:104AC000E401811106C08091E501811102C01092BC
+:104AD000E00108958091D70183FF7EC088E396E0CE
+:104AE0000E9455078091E1011F928F9383E396E026
+:104AF0009F938F930E94EE0781E396E00E945507F3
+:104B00008091E201282F332727FD30953F938F9323
+:104B10008EE296E09F938F930E94EE078CE296E0E0
+:104B20000E9455078091E301282F332727FD3095F8
+:104B30003F938F9389E296E09F938F930E94EE07B5
+:104B400087E296E00E9455078091E401282F3327E1
+:104B500027FD30953F938F9384E296E09F938F9348
+:104B60000E94EE0782E296E00E9455078091E501DF
+:104B7000282F332727FD30953F938F938FE196E0C1
+:104B80009F938F930E94EE078CE196E00E94550759
+:104B90008091E0011F928F9389E196E09F938F931C
+:104BA0000E94EE0787E196E00E9455078091DF01A1
+:104BB0001F928F9384E196E09F938F930E94EE075C
+:104BC00081E196E00E9455078DB79EB74C960FB6CF
+:104BD000F8949EBF0FBE8DBF81EE91E00E94371505
+:104BE0000E94C9219093DE018093DD0108951F93F7
+:104BF000CF93DF938091DD019091DE010E94D5215A
+:104C0000AC019091E001992321F02091140130E052
+:104C100006C0209115018AE0289F900111244217B7
+:104C2000530708F486C08091E201C091E301D0915E
+:104C3000E4011091E501811107C0C11176C0D111C5
+:104C400074C0111172C075C09F3F19F09F5F90939F
+:104C5000E001181624F40E94FB238093E201809166
+:104C6000E20187FF05C00E94FB2381958093E2014A
+:104C70001C1624F40E94FB238093E3018091E3013E
+:104C800087FF05C00E94FB2381958093E30160911B
+:104C9000E201662339F1C091E301CC2319F17727B2
+:104CA00067FD7095872F972F0E94792C23E333E3BC
+:104CB00043E35FE30E94DD2C0E94462C6093E201F7
+:104CC0006C2F772767FD7095872F972F0E94792C7F
+:104CD00023E333E343E35FE30E94DD2C0E94462C91
+:104CE0006093E3011D1624F40E9444248093E401A0
+:104CF0008091E40187FF05C00E9444248195809340
+:104D0000E401111624F40E9444248093E50180916B
+:104D1000E50187FF05C00E94442481958093E50149
+:104D2000DF91CF911F910C946A259F3F09F08ECFA0
+:104D300096CFDF91CF911F910895E1EEF1E085E0EC
+:104D4000DF011D928A95E9F71092E0011092DF01D0
+:104D500008958BE598E00E9455071F9281E08F939C
+:104D60001F9285E08F938DE098E09F938F930E9430
+:104D7000EE070F900F900F900F900F900F900895E7
+:104D80008330E9F128F4813061F0823009F108952F
+:104D9000853009F462C008F449C0863009F474C053
+:104DA000089580911501262F30E0280F311D2F3FE7
+:104DB000310524F4680F6093150103C08FEF8093D1
+:104DC0001501809115011F928F9386E497E072C0C0
+:104DD00080911401262F30E0280F311D2F3F31051F
+:104DE00024F4680F6093140103C08FEF80931401C3
+:104DF000809114011F928F9384E397E05BC08091B0
+:104E00001301262F30E0280F311D2F3F310524F4E8
+:104E1000680F6093130103C08FEF8093130180919B
+:104E200013011F928F9381E297E044C08091120199
+:104E3000262F30E0280F311D2F3F310524F4680F55
+:104E40006093120103C08FEF8093120180911201D1
+:104E50001F928F938CE097E02DC080911101262F37
+:104E600030E0280F311D2F3F310524F4680F609387
+:104E7000110103C08FEF80931101809111011F92E6
+:104E80008F9383EF96E016C080911001262F30E0BB
+:104E9000280F311D2F3F310524F4680F6093100156
+:104EA00003C08FEF80931001809110011F928F93A8
+:104EB00088ED96E09F938F930E94EE070F900F90DE
+:104EC0000F900F900895833081F128F4813059F0CC
+:104ED0008230D1F00895853009F449C0B8F18630A8
+:104EE00009F456C0089580911501681720F4861BB7
+:104EF0008093150102C010921501809115011F9237
+:104F00008F9389EC96E054C080911401681720F4C7
+:104F1000861B8093140102C0109214018091140129
+:104F20001F928F9387EB96E043C08091130168171F
+:104F300020F4861B8093130102C01092130180910C
+:104F400013011F928F9384EA96E032C08091120180
+:104F5000681720F4861B8093120102C01092120180
+:104F6000809112011F928F938FE896E021C080916B
+:104F70001101681720F4861B8093110102C0109262
+:104F80001101809111011F928F9386E796E010C066
+:104F900080911001681720F4861B8093100102C0D5
+:104FA00010921001809110011F928F938BE596E073
+:104FB0009F938F930E94EE070F900F900F900F908A
+:104FC0000895CF93C82F1F928F9380E699E09F9307
+:104FD0008F930E94EE0781E090E0A0E0B0E0BC017A
+:104FE000CD0104C0660F771F881F991FCA95D2F79D
+:104FF0000E947A1E0F900F900F900F90CF910C94FB
+:10500000BE1ACF938D3109F465C0B0F58E3009F426
+:10501000CCC100F5873009F49BC1A8F4863009F0B3
+:105020006DC28091D701817F8E7F8093D70185E605
+:1050300099E00E94550787EA9DE00E94550781E0AC
+:105040008093E70180C1883009F44FC08B3009F4A8
+:105050007CC154C2863109F4F0C138F4803109F4BE
+:10506000B8C1813109F430C249C2893109F4CEC1D5
+:105070008B3109F486C142C2853309F437C248F442
+:10508000873209F433C208F433C2893209F42EC2DC
+:1050900035C2833438F48A3308F02CC2883309F4DB
+:1050A00054C12CC2833409F421C2883409F026C2C9
+:1050B0000E94BE1A86E99DE00E9455079FEF23EDEE
+:1050C00080E3915020408040E1F700C000000E9442
+:1050D000242239C186EB9DE00E9455070E94002CD6
+:1050E0000E94E2140E94140D2EC18BEA9DE00E94E2
+:1050F000550786E79BE00E9455070E94E9231F920F
+:105100008F9383E79BE09F938F930E94EE0781E745
+:105110009BE00E9455070E94E023C82F8EE59BE08C
+:105120000E9455071F92CF9389E59BE09F938F9331
+:105130000E94EE0787E59BE00E9455078DE49BE007
+:105140000E9455078C2F81701F928F938AE49BE0F9
+:105150009F938F930E94EE0788E49BE00E9455077F
+:105160008EE39BE00E945507C1FB882780F91F92C0
+:105170008F938BE39BE09F938F930E94EE0789E3CD
+:105180009BE00E9455078DE29BE00E945507C2FB01
+:10519000882780F91F928F938AE29BE09F938F93D9
+:1051A0000E94EE0788E29BE00E9455078FE19BE09A
+:1051B0000E945507C3FBCC27C0F91F92CF938CE107
+:1051C0009BE09F938F930E94EE078AE19BE00E94F1
+:1051D00055070E94F223C82F86E09BE00E945507E6
+:1051E0001F92CF9381E09BE09F938F930E94EE07E5
+:1051F0008FEF9AE00E94550786EE9AE00E945507CD
+:105200008C2F81701F928F9383EE9AE09F938F93E0
+:105210000E94EE078DB79EB780960FB6F8949EBF9A
+:105220000FBE8DBF81EE9AE00E9455078AEC9AE08E
+:105230000E945507C1FB882780F91F928F9387EC46
+:105240009AE09F938F930E94EE0785EC9AE00E946C
+:10525000550783EB9AE00E945507C2FB882780F927
+:105260001F928F9380EB9AE09F938F930E94EE079B
+:105270008EEA9AE00E9455078CE99AE00E94550751
+:10528000C3FB882780F91F928F9389E99AE09F9347
+:105290008F930E94EE0787E99AE00E9455078DE8F8
+:1052A0009AE00E945507C4FB882780F91F928F93CC
+:1052B0008AE89AE09F938F930E94EE0788E89AE02D
+:1052C0000E94550786E79AE00E945507C5FB88278C
+:1052D00080F91F928F9383E79AE09F938F930E94A8
+:1052E000EE0781E79AE00E94550785E59AE00E9463
+:1052F0005507C6FB882780F91F928F9382E59AE0B5
+:105300009F938F930E94EE0780E59AE00E945507D5
+:1053100088E49AE00E945507C7FBCC27C0F91F928A
+:10532000CF9385E49AE09F938F930E94EE0783E4E6
+:105330009AE00E9455078DB79EB74C960FB6F89429
+:105340009EBF0FBE8DBFC1E0DEC08CE899E05BC0A0
+:105350008091D701C82FC17080FF09C089E89DE006
+:105360000E9455078091D701817F8E7F47C08DE7CE
+:105370009DE00E9455078091D70181608093D701FD
+:10538000E2CF9091D70191FBCC27C0F981E0C827EB
+:10539000892FC0FB81F98093D701CC2319F080E7D6
+:1053A0009DE027C082E69DE02EC09091D70192FB40
+:1053B000CC27C0F981E0C827892FC0FB82F98093F0
+:1053C000D701CC2319F083E59DE013C083E49DE071
+:1053D0001AC09091D70193FBCC27C0F981E0C82770
+:1053E000892FC0FB83F98093D701CC2351F087E349
+:1053F0009DE00E9455078091D70181608093D7017D
+:1054000082C08AE29DE00E9455079DCF8BE19DE01E
+:105410000E9455078FEE9CE00E94550782EB9CE0AE
+:105420000E94550785E89CE00E94550781E49CE0B6
+:105430000E94550786E19CE0E6CF88E09CE00E9450
+:1054400055070E94E2141F928F938EEE9BE09F936C
+:105450008F930E94EE0780910C011F928F9387ED2E
+:105460009BE09F938F930E94EE0780916E011F92A5
+:105470008F9384EC9BE09F938F930E94EE07809123
+:105480000D011F928F9381EB9BE09F938F930E945E
+:10549000EE078091D9019091DA01A091DB01B091E2
+:1054A000DC01BF93AF939F938F938DE99BE09F9314
+:1054B0008F930E94EE078DB79EB746960FB6F8946D
+:1054C0009EBF0FBE8DBF3FCF0E94BE1AC0910D017F
+:1054D00081E0C827C0930D01CC2329F083E99BE02C
+:1054E0000E94550710C088E89BE08DCF80E003C084
+:1054F0008D5101C089530E94E12725CF86E89BE0AA
+:105500000E945507C0E08C2FCF91089580E0089548
+:1055100080E00895CF93C82F8091E701813081F01A
+:1055200020F0823009F44FC045C1E0910E01F091A6
+:105530000F018081813169F0823209F03DC109C0DB
+:10554000E0910E01F0910F018081813111F08232E2
+:1055500061F48C2F0E94862A811104C08C2F0E9436
+:1055600001282FC081E090E02CC08C2F0E94882A57
+:10557000811126C0C431E1F070F4CB3081F0C0312C
+:10558000D1F40E94A92688E599E00E94550782E09F
+:105590008093E70115C0C93259F0C83361F485E63C
+:1055A00099E00E9455078CE599E00E94550708C0D4
+:1055B0001092E70103C186E599E00E945507FEC0FD
+:1055C00081E08170FDC0C43220F5CE3108F0C0C04A
+:1055D000CB3099F1C8F4C73009F0D2C08AE080938B
+:1055E000150194E19093140193E09093130180933B
+:1055F000120188E08093110188E2809310018CEF02
+:1056000097E00E945507BFC0C33149F1C431C1F0D2
+:10561000B7C0CB3409F4A9C028F4C93289F0C83323
+:1056200061F0AEC0C13509F49EC0C23509F499C01D
+:10563000CE3409F0A5C06AE09EC00E94A926A3C08E
+:105640008091E601882319F01092E6019CC089E060
+:1056500098E00E94550781E08093E701B1C083EE96
+:1056600097E00E94550781ED97E00E9455078091D1
+:1056700015011F928F938EEC97E09F938F930E945A
+:10568000EE078CEC97E00E9455078AEB97E00E94AA
+:105690005507809114011F928F9387EB97E09F939A
+:1056A0008F930E94EE0785EB97E00E94550786EAEC
+:1056B00097E00E945507809113011F928F9383EA10
+:1056C00097E09F938F930E94EE0781EA97E00E94F4
+:1056D000550780E997E00E945507809112011F92BB
+:1056E0008F938DE897E09F938F930E94EE078BE84E
+:1056F00097E00E94550786E797E00E945507809142
+:1057000011011F928F9383E797E09F938F930E94DD
+:10571000EE0781E797E00E9455078AE597E00E942F
+:105720005507809110011F928F9387E597E09F9313
+:105730008F930E94EE0785E597E00E9455078DB78D
+:105740009EB748960FB6F8949EBF0FBE8DBF1BC084
+:10575000CE51EC2FF0E0E15DFE4F80818093E601B9
+:1057600012C061E003C061E006C06AE08091E6011A
+:105770000E94C02608C08091E6010E94632703C0F2
+:105780008AEF97E013C08091E601882369F01F92A9
+:105790008F9384EF97E09F938F930E94EE070F9073
+:1057A0000F900F900F9004C081EF97E00E94550773
+:1057B00081E006C01092E70180E002C080E001CFE6
+:1057C000CF910895E1E8F0E0808188608083808156
+:1057D000816080838FB7F89493E09093890090ED77
+:1057E000909388008FBF0895EFE6F0E0808182609B
+:1057F00080830895EFE6F0E080818D7F80830895B7
+:10580000EFE6F0E0908182E08927808308951F927F
+:105810000F920FB60F9211242F933F934F935F93E4
+:105820006F937F938F939F93AF93BF93EF93FF9368
+:105830008091E8019091E90101969093E9018093AC
+:10584000E801811103C082E00E94140DE091E9019A
+:10585000E695E695F0E0EA53F24FE4918091E80195
+:105860008E1303C080E00E94140DFF91EF91BF9151
+:10587000AF919F918F917F916F915F914F913F91E8
+:105880002F910F900FBE0F901F90189504D0689421
+:10589000B1118DC0089570D088F09F5790F0B92F46
+:1058A0009927B751A0F0D1F0660F771F881F991F75
+:1058B0001AF0BA95C9F712C0B13081F077D0B1E0D3
+:1058C000089574C0672F782F8827B85F39F0B93FE3
+:1058D000CCF3869577956795B395D9F73EF4909577
+:1058E0008095709561957F4F8F4F9F4F0895E894F5
+:1058F00009C097FB3EF490958095709561957F4F18
+:105900008F4F9F4F9923A9F0F92F96E9BB279395C5
+:10591000F695879577956795B795F111F8CFFAF4D5
+:10592000BB0F11F460FF1BC06F5F7F4F8F4F9F4F06
+:1059300016C0882311F096E911C0772321F09EE864
+:10594000872F762F05C0662371F096E8862F70E0CA
+:1059500060E02AF09A95660F771F881FDAF7880FA4
+:105960009695879597F9089557FD9058440F551FC0
+:1059700059F05F3F71F04795880F97FB991F61F0D1
+:105980009F3F79F087950895121613061406551F48
+:10599000F2CF4695F1DF08C0161617061806991FB4
+:1059A000F1CF86957105610508940895E894BB27A9
+:1059B00066277727CB0197F908950BD078C069D077
+:1059C00028F06ED018F0952309F05AC05FC011245A
+:1059D000EECFCADFA0F3959FD1F3950F50E0551F8E
+:1059E000629FF001729FBB27F00DB11D639FAA2734
+:1059F000F00DB11DAA1F649F6627B00DA11D661F83
+:105A0000829F2227B00DA11D621F739FB00DA11DA3
+:105A1000621F839FA00D611D221F749F3327A00D5D
+:105A2000611D231F849F600D211D822F762F6A2FF9
+:105A300011249F5750408AF0E1F088234AF0EE0F7E
+:105A4000FF1FBB1F661F771F881F91505040A9F78B
+:105A50009E3F510570F014C0AACF5F3FECF3983E13
+:105A6000DCF3869577956795B795F795E7959F5FF2
+:105A7000C1F7FE2B880F911D9695879597F908958C
+:105A800097F99F6780E870E060E008959FEF80ECF1
+:105A9000089500240A941616170618060906089594
+:105AA00000240A9412161306140605060895092EFA
+:105AB0000394000C11F4882352F0BB0F40F4BF2B69
+:105AC00011F460FF04C06F5F7F4F8F4F9F4F0895A9
+:105AD000991B79E004C0991F961708F0961B881F40
+:105AE0007A95C9F78095089597FB072E16F40094D0
+:105AF00007D077FD09D00E948E2D07FC05D03EF41B
+:105B0000909581959F4F0895709561957F4F089569
+:105B1000EE0FFF1F0590F491E02D0994AA1BBB1B0B
+:105B200051E107C0AA1FBB1FA617B70710F0A61B9D
+:105B3000B70B881F991F5A95A9F780959095BC01BE
+:105B4000CD010895F999FECF92BD81BDF89A9927AC
+:105B500080B50895A8E1B0E042E050E00C94C52D76
+:105B6000262FF999FECF1FBA92BD81BD20BD0FB679
+:105B7000F894FA9AF99A0FBE019608950E94B02DF2
+:105B8000272F0C94B12DDC01CB01FC01F999FECF3C
+:105B900006C0F2BDE1BDF89A319600B40D924150B5
+:0A5BA0005040B8F70895F894FFCFC5
+:105BAA002002150D060EE30DAF0D7B0D0101C50197
+:105BBA0028080A03140A3F4D3620394605F904C35A
+:105BCA0004A3046A04DD03F6030F0428044804014D
+:0A5BDA000203040506070809000095
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/emacs_osx_dk/keymap.c b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/keymap.c new file mode 100644 index 0000000000..bdac229e5c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/keymap.c @@ -0,0 +1,184 @@ +#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 + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Grv | 1 | 2 | 3 | 4 | 5 | L1 | | L2 | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | - | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | \/LCtrl| A | S | D | F | G |------| |------| H | J | K | L | ; |'/RCtrl | + * |--------+------+------+------+------+------| RAlt | | RAlt |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | ~L1 | LCtrl| Left| Right| LAlt | | LAlt | Up | Down | RCtrl| ~L2 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Del | Ins | | Esc | App | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| LGui |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, TG(SYMB), + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, + CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_RALT, + MO(SYMB), KC_LCTRL, KC_LEFT,KC_RGHT,KC_LALT, + KC_DELT,KC_INS, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + TG(MDIA), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_T(KC_QUOT), + KC_RALT, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_LALT,KC_UP, KC_DOWN,KC_RCTRL, MO(MDIA), + KC_ESC, KC_APP, + KC_PGUP, + KC_PGDN, KC_LGUI, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | 0 | . | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_0, KC_0, KC_DOT, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(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; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/emacs_osx_dk/readme.md b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/readme.md new file mode 100644 index 0000000000..4839988d9b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/emacs_osx_dk/readme.md @@ -0,0 +1,10 @@ +# ErgoDox EZ Emacs-OSX-DeadKeys Configuration + +Since I'm an Emacs user, ctrl keys are very important and gets a placement where the usual caps_lock is. There +are an extra pair of ctrls, just in case there where problems with the holding one's, but not as comfortable. + +Gui button takes a predominant place on the thumb cluster, as I'm using a mac os x and it relies heavily on it. + +Finally there is also two Right Alts to easily access to accented letters of the spanish alphabet. + +![Default](default_highres.png) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index d18d061b96..928c0ecc3f 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -1,38 +1,38 @@ -:100000000C9400070C9444070C9444070C94440788
-:100010000C9444070C9444070C9444070C94440734
-:100020000C9444070C9444070C945B120C942D130D
-:100030000C9444070C9444070C9444070C94440714
-:100040000C9444070C94052C0C9444070C9444071E
-:100050000C9444070C940C220C9444070C94440711
-:100060000C9444070C9444070C9444070C944407E4
-:100070000C9444070C9444070C9444070C944407D4
-:100080000C9444070C9444070C9444070C944407C4
-:100090000C9444070C9444070C9444070C944407B4
-:1000A0000C9444070C9444070C9444079213B41323
-:1000B0009F14B4139F14F61319149F146E14811413
-:1000C000CF17CF17FD17FD1740187C187D1A7D1A22
-:1000D00094187D1A8B198B19571A7D1A7D1A6B1A71
+:100000000C9465020C94A9020C94A9020C94A90208
+:100010000C94A9020C94A9020C94A9020C94A902B4
+:100020000C94A9020C94A9020C94C50B0C94970C87
+:100030000C94A9020C94A9020C94A9020C94A90294
+:100040000C94A9020C9422210C94A9020C94A902EC
+:100050000C94A9020C94C41A0C94A9020C94A90241
+:100060000C94A9020C94A9020C94A9020C94A90264
+:100070000C94A9020C94A9020C94A9020C94A90254
+:100080000C94A9020C94A9020C94A9020C94A90244
+:100090000C94A9020C94A9020C94A9020C94A90234
+:1000A0000C94A9020C94A9020C94A902FC0C1E0D3C
+:1000B000090E1E0D090E600D830D090ED80DEB0DF6
+:1000C000D810D81006110611481184118413841316
+:1000D0009C118413931293125E138413841372136E
:1000E0000000F0A12E004C002A00E1003581000044
:1000F0001E00140004001D7134004D001F001A0082
-:1001000016001B00E1042A0020000800070006007A
+:1001000016001B00E104C1002000080007000600E3
:1001100050002C0021001500090019004F004A0072
:10012000220017000A000500000065745000015409
:100130000000007F0000E3004F0001540000007742
:100140000000E20023001C000B00110000002971D8
:10015000240018000D74100052004B0025000C0004
:100160000E00360051002800260012000F00370054
-:100170002F002B00270013003382387130004E000F
+:100170002F002B81270013003382387130004E008E
:100180002D0031003478E500C100000001000100BD
-:1001900001000100010000003A001E0220022202BC
-:1001A000010001003B001F022102230201000100A7
-:1001B0003C002F0226022F00010001003D0030020A
-:1001C00027023000010001003E00310235003502F7
+:1001900001000100010000003A001E0022002602BA
+:1001A000010001003B001F002300270201000100A5
+:1001B0003C00200024002F004B0101003D002100E5
+:1001C000250030004E0101003E00010026002700FE
:1001D000000001000100010000000100000001001A
-:1001E0000100010000000100000001003F0052007A
-:1001F00051002402000001004000240021001E00E4
-:10020000010001004100250022001F00370001000D
-:1002100042002600230020002700010043002502A1
-:100220002E0231002E0001004400450001000100B3
+:1001E0000100010000000100000001003F000100CB
+:1001F0002402310200000100400022022D022602EA
+:100200000100010041002E002D0027020100010025
+:1002100042001F0213002000010001004300010002
+:100220002E02010001000100440045000100010010
:1002300001000000010001000100010001000000B8
:1002400001000100010001000100010001000100A6
:10025000F2000100010001000100F000F1000100C6
@@ -43,1430 +43,1080 @@ :1002A0000100010001000100A9000100010001009E
:1002B0000100AC00AA00B600010001000100AB0083
:1002C000A80001000100010001000100010001007F
-:1002D00001000100AE000100010000000A0025300D
-:1002E000313662003A200025303258000A722F63FE
-:1002F0002030313233343536373839414243444582
-:10030000460A000A002530325800626F756E636538
-:10031000213A20006C6566742073696465206174FD
-:100320007461636865640A006C656674207369644F
-:1003300065206E6F7420726573706F6E64696E678E
-:100340000A00747279696E6720746F207265736534
-:1003500074206D637032333031380A000A444542EC
-:1003600055473A20656E61626C65642E0A005B73C6
-:100370005D004B6579626F617264207374617274A1
-:100380002E0A005B575D005B535D005B525D005BB6
-:10039000445D005B435D0016034500720067006F1B
-:1003A0000044006F007800200045005A000000164D
-:1003B000034500720067006F0044006F0078002062
-:1003C0000045005A0000000403090409028D0005DD
-:1003D0000100A0FA09040000010301010009211134
-:1003E000010001223F000705810308000A090401FA
-:1003F000000103010200092111010001224D000743
-:1004000005820308000A0904020001030000000934
-:1004100021110100012236000705830308000A09A3
-:100420000403000203000000092111010001222041
-:1004300000070584032000010705040320000109CB
-:100440000404000103000000092111010001223908
-:1004500000070585031000011201100100000008CB
-:10046000EDFE071301000102000105010906A101CB
-:10047000050719E029E71500250195087501810296
-:100480000508190129059505750191029501750366
-:100490009101050719002977150025019578750147
-:1004A0008102C00631FF0974A1010975150025FFFD
-:1004B0009520750881020976150025FF952075089D
-:1004C0009102C005010980A101850216010026B72D
-:1004D000001A01002AB700751095018100C0050CB3
-:1004E0000901A1018503160100269C021A01002AB8
-:1004F0009C02751095018100C005010902A1010946
-:1005000001A10005091901290515002501950575A9
-:100510000181029501750381010501093009311539
-:1005200081257F95027508810609381581257F95FB
-:100530000175088106050C0A38021581257F950191
-:1005400075088106C0C005010906A101050719E06B
-:1005500029E71500250195087501810295017508A7
-:10056000810105081901290595057501910295017B
-:10057000750391010507190029FF150025FF950650
-:1005800075088100C00A002530325820006B65795B
-:10059000626F6172645F7265706F72743A20000AF4
-:1005A0000025303258006B6579626F6172645F7349
-:1005B00065745F6C65643A200064656C5F6B657997
-:1005C0005F6269743A2063616E27742064656C3AD7
-:1005D00020253032580A006164645F6B65795F6280
-:1005E00069743A2063616E2774206164643A20253F
-:1005F0003032580A00646F6E652E0A00626F6F67B2
-:100600006D61676963207363616E3A202E2E2E2020
-:1006100000290A002575002F002575005D2800259A
-:10062000640020002564002000256400200025646B
-:10063000007C0025303258006D6F7573656B6579ED
-:10064000205B62746E7C782079207620685D287249
-:1006500065702F61636C293A205B006D6B5F776872
-:1006600065656C5F74696D655F746F5F6D6178203F
-:100670003D2025640A006D6B5F776865656C5F6D72
-:1006800061785F7370656564203D2025640A006DA4
-:100690006B5F74696D655F746F5F6D6178203D207D
-:1006A00025640A006D6B5F6D61785F7370656564CA
-:1006B000203D2025640A006D6B5F696E746572765B
-:1006C000616C203D2025640A006D6B5F64656C6180
-:1006D00079203D2025640A006D6B5F776865656C45
-:1006E0005F74696D655F746F5F6D6178203D202573
-:1006F000640A006D6B5F776865656C5F6D61785F3C
-:100700007370656564203D2025640A006D6B5F741D
-:10071000696D655F746F5F6D6178203D2025640AA7
-:10072000006D6B5F6D61785F7370656564203D205F
-:1007300025640A006D6B5F696E74657276616C206A
-:100740003D2025640A006D6B5F64656C6179203D16
-:100750002025640A000A00257500363A207768656E
-:10076000656C5F74696D655F746F5F6D61783A2069
-:10077000000A00257500353A20776865656C5F6D65
-:1007800061785F73706565643A20000A0025750022
-:10079000343A2074696D655F746F5F6D61783A20DB
-:1007A000000A00257500333A206D61785F7370652B
-:1007B00065643A20000A00257500323A20696E749B
-:1007C000657276616C286D73293A20000A002575E0
-:1007D00000313A2064656C6179282A31306D7329C3
-:1007E0003A20000A092D2056616C756573202D0A88
-:1007F000004D3E004D25643E20003F00736574208F
-:1008000064656661756C740A00433E200077686514
-:1008100072652064656C74613A20637572736F72DF
-:100820003D25642C20776865656C3D25640A536519
-:100830006520687474703A2F2F656E2E77696B6926
-:1008400070656469612E6F72672F77696B692F4DD0
-:100850006F7573655F6B6579730A000A092D204D0A
-:100860006F7573656B6579202D0A4553432F713A77
-:1008700009717569740A313A0964656C6179282ACD
-:1008800031306D73290A323A09696E746572766186
-:100890006C286D73290A333A096D61785F7370654E
-:1008A00065640A343A0974696D655F746F5F6D61E0
-:1008B000780A353A09776865656C5F6D61785F73B2
-:1008C000706565640A363A09776865656C5F7469B6
-:1008D0006D655F746F5F6D61780A0A703A097072B6
-:1008E000696E742076616C7565730A643A09736584
-:1008F000742064656661756C74730A75703A092BAF
-:10090000310A646F776E3A092D310A706775703A53
-:10091000092B31300A7067646F776E3A092D3130D8
-:100920000A0A7370656564203D2064656C746120FB
-:100930002A206D61785F7370656564202A202872B3
-:100940006570656174202F2074696D655F746F5FD9
-:100950006D6178290A003F004D3E2000433E200093
-:100960004C25640A000A092D20436F6E736F6C6575
-:10097000202D0A4553432F713A09717569740A6D28
-:100980003A096D6F7573656B65790A000A092D2048
-:100990004D61676963202D0A643A09646562756771
-:1009A0000A783A096465627567206D6174726978C6
-:1009B0000A6B3A096465627567206B6579626F61DD
-:1009C00072640A6D3A096465627567206D6F7573AC
-:1009D000650A763A0976657273696F6E0A733A0929
-:1009E0007374617475730A633A09636F6E736F6C25
-:1009F00065206D6F64650A302D343A096C61796544
-:100A000072302D34284631302D4634290A50617514
-:100A1000733A09626F6F746C6F616465720A653A4C
-:100A200009656570726F6D0A6E3A094E4B524F0A36
-:100A30007A3A09736C656570204C4544207465737F
-:100A4000740A000A002575002E6E6B726F3A200042
-:100A50000A002575002E737761705F6261636B73A6
-:100A60006C6173685F6261636B73706163653A2088
-:100A7000000A002575002E737761705F67726176DA
-:100A8000655F6573633A20000A002575002E6E6F5E
-:100A90005F6775693A20000A002575002E7377613B
-:100AA000705F72616C745F726775693A20000A004A
-:100AB0002575002E737761705F6C616C745F6C6775
-:100AC00075693A20000A002575002E636170736C09
-:100AD0006F636B5F746F5F636F6E74726F6C3A20DD
-:100AE000000A002575002E737761705F636F6E7466
-:100AF000726F6C5F636170736C6F636B3A20000A96
-:100B00000025303258006B65796D61705F636F6EE0
-:100B10006669672E7261773A20000A002575002EFB
-:100B20006D6F7573653A20000A002575002E6B65A0
-:100B300079626F6172643A20000A002575002E6D9B
-:100B400061747269783A20000A002575002E656E7E
-:100B500061626C653A20000A0025303258006465F5
-:100B60006275675F636F6E6669672E7261773A20A0
-:100B7000000A0025750064656661756C745F6C61C0
-:100B80007965723A20003F004E4B524F3A206F6613
-:100B9000660A004E4B524F3A206F6E0A0074696D20
-:100BA00065725F636F756E743A202530346C580A35
-:100BB000006B6579626F6172645F6E6B726F3A2071
-:100BC00025580A006B6579626F6172645F69646CB5
-:100BD000653A2025580A006B6579626F6172645F1F
-:100BE00070726F746F636F6C3A2025580A00686FDB
-:100BF00073745F6B6579626F6172645F6C65647357
-:100C000028293A2025580A000A092D2053746174B6
-:100C10007573202D0A004743433A20342E382E3274
-:100C2000204156522D4C4942433A20312E382E3025
-:100C3000204156525F415243483A20617672350A4C
-:100C4000004F5054494F4E533A204C554641204294
-:100C50004F4F544D41474943204D4F5553454B4508
-:100C6000592045585452414B455920434F4E534FFC
-:100C70004C4520434F4D4D414E44204E4B524F204A
-:100C80003531320A004255494C443A2038366235F3
-:100C9000363839202830353A32353A3435204A61F1
-:100CA0006E2032302032303136290A005649443A1B
-:100CB00020307846454544284572676F446F782058
-:100CC000455A29205049443A20307831333037286A
-:100CD0004572676F446F7820455A29205645523A2D
-:100CE000203078303030310A00444553433A207484
-:100CF0002E6D2E6B2E206B6579626F61726420669B
-:100D000069726D7761726520666F72204572676FD8
-:100D1000646F780A000A092D2056657273696F6E38
-:100D2000202D0A000A6D6F7573653A206F66660A9A
-:100D3000000A6D6F7573653A206F6E0A000A6B6565
-:100D400079626F6172643A206F66660A000A6B65A9
-:100D500079626F6172643A206F6E0A000A6D617485
-:100D60007269783A206F66660A000A6D617472696A
-:100D7000783A206F6E0A000A64656275673A206FE0
-:100D80006E0A000A64656275673A206F66660A003B
-:100D90000A0A626F6F746C6F616465722E2E2E206A
-:100DA00000433E20006565636F6E6669673A0A001E
-:100DB000536C656570204C454420746573740A005B
-:100DC0000000000000000000000000010204060A0C
-:100DD0000F17202C3A4A5D71879DB3C7DAE9F5FCFD
-:100DE000FFFCF5E9DAC7B39D87715D4A3A2C2017FD
-:100DF0000F0A0604020100000000000000000000CD
-:100E000011241FBECFEFDAE0DEBFCDBF04B603FE74
-:100E100024C08091F9019091FA01A091FB01B09159
-:100E2000FC018730904BA740B04BB9F41092F90108
-:100E30001092FA011092FB011092FC0114BE84B7CB
-:100E4000877F84BF88E10FB6F8948093600010928A
-:100E500060000FBEE0E0FFE3099511E0A0E0B1E023
-:100E6000E6EAFBE502C005900D92AA33B107D9F777
-:100E700011E0AAE3B1E001C01D92A93FB107E1F77B
-:100E80000E94950F0C94D12D0C940000FF93EF93CA
-:100E9000E0913A01F0913B01309709F00995EF910B
-:100EA000FF910895FC018591803011F0EFDFFBCFB9
-:100EB0000895FF27E0E230E247FF0CC0419597FF1D
-:100EC00009C0EDE26095709580959095611D711D4A
-:100ED000811D911D27FF02C0219530E350E2AA2712
-:100EE000660F771F881F991FAA1FA41710F0A41B55
-:100EF00063955A95A9F7AA3008F0A95FA05DAF9352
-:100F0000F395611571058105910541F7ED3211F4F5
-:100F1000EF93F395F21718F43F93F395FBCF8F916E
-:100F2000B5DFFA95E1F70895E991F991859180305F
-:100F300021F0853219F0AADFF9CF089520E0E89476
-:100F400055915532C1F3503311F4689455915A3389
-:100F500048F4505390F3220F022E220F220F200D3F
-:100F6000250FF4CF0EF4219589919991533619F3F9
-:100F7000533729F1533559F1BC0188279927E89453
-:100F80005C3621F48991999168945591543639F4DD
-:100F900046EF7EF077FF0DC08FEF9FEF0AC0553709
-:100FA0004AE039F0583540E121F0523642E009F08C
-:100FB0000895FF93EF937DDFEF91FF91B7CFFF93FC
-:100FC000EF93FC0181918030B9F360DFFBCFFF9399
-:100FD000EF9368DFF1CFDF93CF93CDB7DEB72596E0
-:100FE000A3DFCF91DF91089561110BC0FC018281D5
-:100FF000882321F085EE0E94631603C085EE0E94CF
-:101000002B1780E090E0089508956091BC017091E5
-:10101000BD018091BE019091BF010E9410215698A0
-:101020005E9825982D9826982E9827982F9881308D
-:1010300019F0823021F00895259A2D9A0895269A64
-:101040002E9A089585E098E0892B11F00E940508FA
-:1010500080E090E0089556985E9825982D982698FF
-:101060002E9827982F988FEF90E090938900809387
-:10107000880090938B0080938A0090938D008093DA
-:101080008C00259A2D9A2FEF80E792E02150804026
-:101090009040E1F700C00000269A2E9A2FEF80E7DB
-:1010A00092E0215080409040E1F700C00000279A74
-:1010B0002F9A2FEF80E792E0215080409040E1F797
-:1010C00000C0000025982D982FEF80E792E0215076
-:1010D00080409040E1F700C0000026982E982FEF46
-:1010E00080E792E0215080409040E1F700C000008E
-:1010F00027982F9856985E9825982D9826982E9880
-:1011000027982F98089589EA8093800089E080933A
-:10111000810024982C983F988AB18F748AB96E9870
-:10112000479A8BB1806B8BB9769A0E942B0884E02A
-:1011300098E0892B11F00E94040880E090E0089567
-:1011400080E28093000180913C0181110EC00E94D9
-:10115000EF0881E080933C012FEF83ED90E3215075
-:1011600080409040E1F700C0000080E40E94F50854
-:101170008093000181112EC00E941F0980930001FD
-:10118000811128C00E941F0980930001811122C093
-:101190008FE30E941F098093000181111BC00E94F0
-:1011A000170980E40E94F50880930001811112C0A4
-:1011B0008CE00E941F098093000181110BC00E94E6
-:1011C0001F0980930001811105C08FE30E941F0950
-:1011D000809300010E9417098091000108951092E8
-:1011E000B9008AE08093B800089594EA9093BC0017
-:1011F0009091BC0097FFFCCF9091B900987F9830F8
-:1012000021F0903111F081E008958093BB0084E8D3
-:101210008093BC008091BC0087FFFCCF8091B90017
-:10122000887F883111F0803471F780E0089584E977
-:101230008093BC008091BC0084FDFCCF0895809316
-:10124000BB0084E88093BC008091BC0087FFFCCF8A
-:101250009091B900987F81E0983209F480E0089578
-:1012600084E88093BC008091BC0087FFFCCF809114
-:10127000BB00089580910001811115C080E40E9497
-:10128000F5088093000181110CC082E10E941F09C2
-:1012900080930001811105C08FEF0E941F09809388
-:1012A00000010E94170984B1807F84B985B1807FD5
-:1012B00085B98AB1837F8AB98BB1837F8BB93E9818
-:1012C000469808950E94A008809300010E943A0960
-:1012D00080B38C7080BB81B3836F81BBECE4F1E0A1
-:1012E000AEE3B1E011921D9281E0EA35F807D1F743
-:1012F00083E898E0892B11F00C94830808959F925D
-:10130000AF92BF92CF92DF92EF92FF920F931F9313
-:10131000CF93DF93809100018823E1F080913D011C
-:101320008F5F80933D01811115C082E493E00E949C
-:1013300052070E94A00880930001882329F088E2C8
-:1013400093E00E94520706C084E193E00E94520796
-:101350000E942B080EE311E0C0E0D0E0BB24B39460
-:1013600082E0A82ECC24C394D12C25E0E22E23E0E9
-:10137000F22EC73000F580910001811162C080E437
-:101380000E94F50880930001811112C082E10E9441
-:101390001F098093000181110BC0C6010C2E01C0F2
-:1013A000880F0A94EAF780950E941F098093000134
-:1013B0000E94170946C0CA30A1F028F4C83059F07D
-:1013C000C93061F005C0CC3089F070F0CD3089F0C3
-:1013D000209A289810C0219A29980DC0229A2A98FC
-:1013E0000AC0239A2B9807C0529A01C0539A5B985F
-:1013F00002C03E9A4698E0EAEA95F1F78FB17999F2
-:1014000085C092E081708B25892B7C9B02C090E087
-:1014100001C094E0892B7D9B02C090E001C098E060
-:10142000892B7E9B02C090E001C090E1892B9FB187
-:101430009095991F9927991F9295990F907E892BC6
-:1014400010C080910001811176C080E40E94F508EF
-:1014500080930001882309F45BC0912C0E94170936
-:10146000892DF8019081981739F1808380910101CD
-:10147000882301F18091D70180FF04C08AE093E0C6
-:101480000E9452078091D70180FF0CC0809101011A
-:101490001F928F93FF92EF920E94EB070F900F9095
-:1014A0000F900F908091D70180FF04C083E093E0FC
-:1014B0000E945207A09201010E943A0921960F5FF3
-:1014C0001F4FCE30D10509F054CF80910101882300
-:1014D000B1F0815080930101882339F08FE99FE0BA
-:1014E0000197F1F700C000000AC0ACE4B1E0EEE300
-:1014F000F1E081918D9391E0EC34F907D1F782E22C
-:1015000098E0892BD1F00E94220817C090E07ACF92
-:1015100083E10E941F098093000181119ECF81E425
-:101520000E94F50880930001811197CF0E94300935
-:10153000982E909493CF80E094CF81E0DF91CF916B
-:101540001F910F91FF90EF90DF90CF90BF90AF90E1
-:101550009F900895E82FF0E0E45BFE4F80810895AE
-:10156000CF92DF92EF92FF920F931F93CF93DF936F
-:101570008CEE92E00E9452073CE4E32E31E0F32E21
-:10158000C0E0D0E047EEC42E42E0D42E0EED12E0D3
-:10159000DF93CF93DF92CF920E94EB0784EE92E02D
-:1015A0000E945207F70181917F0190E00E9475210E
-:1015B0009F938F931F930F930E94EB078CED92E004
-:1015C0000E94520721968DB79EB708960FB6F894E1
-:1015D0009EBF0FBE8DBFCE30D105D1F6DF91CF912A
-:1015E0001F910F91FF90EF90DF90CF9008958B3B6C
-:1015F000910578F4883A910540F5853A9105D0F443
-:101600008430910508F0B1C08130910509F4ADC076
-:101610006BC0803E910508F467C0883E910508F4D0
-:10162000A4C09C01205F31092031310508F05CC065
-:1016300090650895853A910509F459C0863A910557
-:1016400009F458C083E890E40895883A910509F4B4
-:1016500054C0893A910509F453C08A3A910509F4B6
-:1016600052C08B3A910509F451C08C3A910509F4A6
-:1016700050C08D3A910509F44FC0803B910509F4A3
-:101680004EC08E3A910509F44DC08F3A910509F488
-:101690004CC0813B910509F44BC0823B910509F494
-:1016A0004AC0833B910509F449C0843B910509F484
-:1016B00048C0853B910509F447C0863B910509F474
-:1016C00046C0873B910509F445C0883B910509F464
-:1016D00044C0893B910509F443C08A3B910509F058
-:1016E00042C08AE296E4089580E090E0089581E89F
-:1016F00090E4089582E890E4089582EE94E40895D9
-:1017000089EE94E408958AEE94E4089585EB94E4D8
-:10171000089586EB94E4089587EB94E408958CECA7
-:1017200094E408958DEC94E4089583E895E4089595
-:101730008AE895E4089582E995E4089584E995E4BA
-:10174000089581E296E4089583E296E4089584E2A0
-:1017500096E4089585E296E4089586E296E4089575
-:1017600087E296E4089580E094E40895089596E071
-:10177000799FF001112494E5899FE00DF11D11245A
-:10178000E60FF11DEE0FFF1FEC51FF4F8591949175
-:101790000895880F991F805A9040FC01859194917B
-:1017A0000895880F991F80529F4FFC018591949155
-:1017B000089526E0729FF001112444E5849FE00D16
-:1017C000F11D1124E60FF11DEE0FFF1FEC51FF4F2D
-:1017D00025913491C9019A9581159F4110F4C90151
-:1017E0000895C90190528115904128F4C9019F7054
-:1017F0000E94D10B0895C90190538115904120F4A6
-:10180000C9019927906C0895211580E5380769F47E
-:101810000E949E1A9FEF24E34CE0915020404040EC
-:10182000E1F700C000000C943122213080E5380738
-:1018300051F48CE593E00E9452078091D7018160BA
-:101840008093D7010895C90190558115904108F002
-:1018500050C0832F99278F70992781309105D9F433
-:10186000A9014370552702C0880F991F4A95E2F7D6
-:101870009C68A90164E0440F551F6A95E1F744276D
-:101880005370842B952B73E0220F331F7A95E1F769
-:10189000207633271DC08230910529F4922F8827A6
-:1018A000816F906A089583309105A9F4A90143706E
-:1018B000552781E090E002C0880F991F4A95E2F712
-:1018C0009C6843E0220F331F4A95E1F7207E377072
-:1018D000822B932B08950497F1F4A90143705527A7
-:1018E00081E090E002C0880F991F4A95E2F79A685C
-:1018F000E8CFC90190578115904120F4C9019F702C
-:1019000090620895C90190588115904120F4C90151
-:101910009F70906A0895203E3105E0F4203C310527
-:1019200058F52133310509F470C048F429323105E6
-:1019300009F464C02A32310509F46EC074C0293339
-:101940003105F1F022383105D9F02533310509F49C
-:101950004EC069C0233E310589F138F4203E31057F
-:10196000C1F0223E3105E1F05EC0263E310569F14D
-:10197000273E3105A9F157C0C9010E94C90B08953E
-:101980008091EA0180FD02C081FF4DC080EE90E0B1
-:101990004BC08091EA0180FFF9CF89E390E044C019
-:1019A0008091EA0182FF0EC08091EA0184FF03C0AA
-:1019B00080E090E039C083EE90E036C08091EA018B
-:1019C00082FFF2CF82EE90E02FC08091EA0183FF88
-:1019D0000BC08091EA0184FDEBCF87EE90E024C03C
-:1019E0008091EA0183FFF5CF86EE90E01DC08091E3
-:1019F000EA0185FF07C089E290E016C08091EA0104
-:101A000085FFF9CF85E390E00FC08091EA0186FF62
-:101A100007C08AE290E008C08091EA0186FFF9CF12
-:101A200081E390E001C0C9010E94F70A089508957A
-:101A300080916D0108959FB7F89410925C019FBF4B
-:101A40009091F001943009F058C09091E9009F7096
-:101A50002091EC0020FF02C020E801C020E0292BEB
-:101A600094E09093E9009091EB0090FF43C0909137
-:101A7000EE0097FF3FC090915A01992321F0909179
-:101A8000E80095FF37C010925A0196E03091E800C7
-:101A900035FD15C03091F001343061F53091EB0027
-:101AA00035FD28C0915021F481E080935A0122C075
-:101AB000EFE9FFE03197F1F700C00000E7CF809336
-:101AC000F1008091E80085FD0AC08091E80080FF68
-:101AD000FCCF8091E8008E778093E80006C08FB736
-:101AE000F89491E090935C018FBF2F702093E900F0
-:101AF00080E008952F702093E9008FEF0895CF9331
-:101B0000DF9300D01F92CDB7DEB72091F0012430D3
-:101B100019F523E029839B838A832093E9008FEFC3
-:101B20009091E800815095FD06C095ED9A95F1F7EA
-:101B300000008111F5CF8091E80085FF0DC040E0E5
-:101B400050E063E070E0CE0101960E944E1080915B
-:101B5000E8008E778093E8000F900F900F90DF9150
-:101B6000CF910895CF93DF9300D01F92CDB7DEB70A
-:101B70002091F001243021F522E029839B838A8380
-:101B800083E08093E9008FEF9091E800815095FD0C
-:101B900006C095ED9A95F1F700008111F5CF80917F
-:101BA000E80085FF0DC040E050E063E070E0CE014A
-:101BB00001960E944E108091E8008E778093E80095
-:101BC0000F900F900F90DF91CF9108952091F00129
-:101BD0002430F1F422E02093E9002FEF3091E80067
-:101BE000215035FD06C035ED3A95F1F70000211181
-:101BF000F5CF2091E80025FF0BC040E050E065E004
-:101C000070E00E944E108091E8008E778093E8008B
-:101C10000895CF93DF93EC018091F001843009F0B7
-:101C200047C080910C018823E1F080910D01882349
-:101C3000C1F085E08093E9008FEF9091E80081503A
-:101C400095FD06C095E19A95F1F700008111F5CF59
-:101C50008091E80085FF2CC040E050E060E170E03A
-:101C600017C081E08093E9008FEF9091E8008150E8
-:101C700095FD06C095ED9A95F1F700008111F5CF1D
-:101C80008091E80085FF14C040E050E068E070E01B
-:101C9000CE010E944E108091E8008E778093E8007C
-:101CA00080E1FE01ADE5B1E001900D928A95E1F78A
-:101CB000DF91CF91089583E993E00E9452078091CC
-:101CC000EF01811109C00E94E0110E943D12809134
-:101CD000E20084608093E20008958FE893E00E9420
-:101CE00052071092EF0108958BE893E00C9452078D
-:101CF00087E893E00E9452070C94F22B83E893E06C
-:101D00000E9452070E94CC210E94F82B0E94D914F5
-:101D10000C94170D80915B018F5F80935B0162E3F0
-:101D20000E94662D911135C010925B0180915C017B
-:101D3000882379F18091F001843049F58091E900A0
-:101D40008F709091EC0090FF02C090E801C090E08D
-:101D5000982B84E08093E9008091EB0080FF14C011
-:101D60008091EE0087FF10C08091E80085FF03C0DE
-:101D70001092F100F9CF8091E80080FF05C08091BA
-:101D8000E8008E778093E8009F709093E9001092AE
-:101D90005C01089542E061EC81E00E945A1142E04A
-:101DA00061EC82E00E945A1142E061EC83E00E9403
-:101DB0005A1142E261EC84E00E945A1142E161EC66
-:101DC00085E00C945A118091F201833009F455C0DA
-:101DD00030F4813071F0823009F48EC008958A3079
-:101DE00009F47AC08B3009F460C0893009F09CC0D6
-:101DF00020C08091F101813A09F096C08091E800FD
-:101E0000877F8093E8008091F5019091F601892BFE
-:101E100021F060E080E090E003C060E18DE591E0BA
-:101E200070E00E9497108091E8008B778093E80023
-:101E300008958091F101813209F076C08091F50119
-:101E40009091F601009719F0049709F06DC0809108
-:101E5000E800877F8093E8008091E80082FD05C05C
-:101E60008091F0018111F8CF5FC08091F1008093E3
-:101E70006D018091E8008B7753C08091F101813A28
-:101E800009F052C08091F5019091F601892B09F07B
-:101E90004BC08091E800877F8093E8008091E80044
-:101EA00080FFFCCF80910C0136C08091F10181321E
-:101EB000D9F58091F5019091F601892BA9F58091D2
-:101EC000E800877F8093E8000E948F118091F301E2
-:101ED00080930C010C949E1A8091F101813221F5BE
-:101EE0008091E800877F8093E8000E948F118091A5
-:101EF000F40180936E0108958091F101813AA1F47B
-:101F00008091E800877F8093E8008091E80080FF5F
-:101F1000FCCF80916E018093F1008091E8008E7774
-:101F20008093E8000C948F11089584B7877F84BF55
-:101F300088E10FB6F89480936000109260000FBEA5
-:101F400090E080E80FB6F894809361009093610070
-:101F50000FBE0E9462150E94E0110E943D12809106
-:101F6000E20084608093E2008BE19DE00E940B21FF
-:101F700078940E94B7140E94641582E091E00E9458
-:101F8000D4140E94E02B82E793E00E9452078091D4
-:101F9000F001853089F48EE693E00E9452070E949A
-:101FA0008F218091EE01882391F30E94B72188232D
-:101FB00071F30E943810EBCF0E949215E8CF292FC1
-:101FC000332723303105A9F06CF42130310509F4B1
-:101FD00042C02230310509F043C08DE890E02BEC7F
-:101FE00033E042C021323105C9F02232310519F106
-:101FF00037C099278130910541F08230910541F039
-:10200000892B71F5E7ECF3E005C0EFEAF3E002C0DD
-:10201000E7E9F3E0849190E09F0126C0653000F588
-:10202000E62FF0E0EE0FFF1FEB5DFE4F20813181C8
-:1020300089E090E019C0653098F4E62FF0E0DF0108
-:10204000AA0FBB1FA55EBE4F2D913C91EA5EFE4FCD
-:10205000808190E009C082E190E028E534E004C08E
-:1020600080E090E020E030E0FA01318320830895A1
-:1020700080E189BD82E189BD09B400FEFDCF809178
-:10208000D8008F7D8093D8008091E000826080939B
-:10209000E0008091E00081FDFCCF0895CF92DF92B7
-:1020A000EF92FF920F931F93CF93DF937C018B01ED
-:1020B000EA010E94B011811131C0209731F088816E
-:1020C0009981081B190BE80EF91EC12CD12C0115A2
-:1020D000110519F18091E80085FD14C08091E80098
-:1020E0008E778093E800209741F0888199818C0D4C
-:1020F0009D1D9983888385E011C00E94B0118823BB
-:1021000031F30CC0F70181917F018093F100015000
-:102110001109FFEFCF1ADF0ADACF80E0DF91CF910C
-:102120001F910F91FF90EF90DF90CF900895209135
-:10213000F7013091F8012617370748F0611571054E
-:1021400039F42091E8002E772093E80001C0B9010E
-:10215000FC0120E061157105B9F18091F00188233F
-:1021600009F440C0853009F43FC08091E80083FD48
-:102170003DC08091E80082FF06C08091E80082FFA8
-:1021800026C080E008958091E80080FFE3CF209191
-:10219000F3008091F20090E0922B6115710551F0EF
-:1021A0008830910538F421912093F1006150710934
-:1021B0000196F3CF21E0089709F020E08091E80034
-:1021C0008E778093E800C6CF2111C7CFD6CF8091FC
-:1021D000F001882339F0853039F08091E80083FFE1
-:1021E000CCCF04C082E0089583E0089581E0089593
-:1021F0002091F7013091F8012617370748F0611553
-:10220000710539F42091E8002E772093E80001C091
-:10221000B901FC0120E061157105C1F18091F00167
-:10222000882309F441C0853009F440C08091E8005A
-:1022300083FD3EC08091E80082FF06C08091E800E7
-:1022400082FF27C080E008958091E80080FFE3CFFF
-:102250002091F3008091F20090E0922B61157105BE
-:1022600059F08830910540F424912093F100319683
-:10227000615071090196F2CF21E0089709F020E042
-:102280008091E8008E778093E800C5CF2111C6CFFA
-:10229000D5CF8091F001882339F0853039F08091D5
-:1022A000E80083FFCBCF04C082E0089583E0089567
-:1022B00081E00895982F973058F59093E90098178A
-:1022C00039F07091EC002091ED005091F00003C0C6
-:1022D000242F762F50E021FF19C03091EB003E7F74
-:1022E0003093EB003091ED003D7F3093ED00309165
-:1022F000EB0031603093EB007093EC002093ED0025
-:102300005093F0002091EE0027FF07C09F5FD3CFCE
-:102310008F708093E90081E0089580E008958091B6
-:10232000F10187FD05C08091E80080FF0EC012C05A
-:102330008091E80082FD05C08091F0018111F8CF05
-:1023400008958091E8008B7708C08091F001811199
-:10235000EACF08958091E8008E778093E800089591
-:102360008091E4009091E50045E62091EC0020FF8B
-:1023700021C02091E80020FD21C02091F0012223FE
-:1023800089F0253089F02091EB0025FD0FC02091C8
-:10239000E4003091E5002817390739F3415041F046
-:1023A000C901E3CF82E0089583E0089581E00895B4
-:1023B00084E008952091E80022FFDFCF80E00895B7
-:1023C0000E944E120E945612E0EEF0E08081816081
-:1023D0008083E8EDF0E080818F77808319BCA7EDE2
-:1023E000B0E08C918E7F8C9380818F7E8083109261
-:1023F000EF0108950F931F93CF93DF930E944E1226
-:102400000E945612C8EDD0E088818F77888388813A
-:102410008068888388818F7D888319BC1092F00141
-:102420001092EC011092EE011092ED0100EE10E01E
-:10243000F80180818B7F808388818160888342E07E
-:1024400060E080E00E945A11E1EEF0E080818E7F32
-:102450008083E2EEF0E0808181608083808188600B
-:102460008083F80180818E7F80838881806188836A
-:10247000DF91CF911F910F910895E8EDF0E08081F9
-:102480008F7E8083E7EDF0E080818160808384E04F
-:1024900082BF81E08093EF010C94FA11E8EDF0E047
-:1024A00080818E7F80831092E20008951092DA007E
-:1024B0001092E10008951F920F920FB60F9211240F
-:1024C0002F933F934F935F936F937F938F939F933C
-:1024D000AF93BF93EF93FF938091E10082FF0BC016
-:1024E0008091E20082FF07C08091E1008B7F8093A2
-:1024F000E1000E948A0E8091DA0080FF1FC0809167
-:10250000D80080FF1BC08091DA008E7F8093DA00B4
-:102510008091D90080FF0DC080E189BD82E189BD35
-:1025200009B400FEFDCF81E08093F0010E945B0EB4
-:1025300005C019BC1092F0010E946D0E8091E1005F
-:1025400080FF19C08091E20080FF15C08091E200F9
-:102550008E7F8093E2008091E20080618093E200B0
-:102560008091D80080628093D80019BC85E0809368
-:10257000F0010E94780E8091E10084FF30C08091CC
-:10258000E20084FF2CC080E189BD82E189BD09B4ED
-:1025900000FEFDCF8091D8008F7D8093D800809180
-:1025A000E1008F7E8093E1008091E2008F7E809336
-:1025B000E2008091E20081608093E2008091EC0172
-:1025C000882311F084E007C08091E30087FF02C0F8
-:1025D00083E001C081E08093F0010E947E0E809133
-:1025E000E10083FF29C08091E20083FF25C0809134
-:1025F000E100877F8093E10082E08093F0011092F8
-:10260000EC018091E1008E7F8093E1008091E200F7
-:102610008E7F8093E2008091E20080618093E200EF
-:1026200042E060E080E00E945A118091F0008860F2
-:102630008093F0000E94740EFF91EF91BF91AF91D3
-:102640009F918F917F916F915F914F913F912F91CA
-:102650000F900FBE0F901F9018951F920F920FB6FC
-:102660000F9211242F933F934F935F936F937F9318
-:102670008F939F93AF93BF93CF93EF93FF93C091AB
-:10268000E900CF708091EC001092E9008091F00099
-:10269000877F8093F00078940E9469131092E9007C
-:1026A0008091F00088608093F000C093E900FF9172
-:1026B000EF91CF91BF91AF919F918F917F916F914A
-:1026C0005F914F913F912F910F900FBE0F901F90F0
-:1026D00018951F93CF93DF93CDB7DEB7AA970FB6A8
-:1026E000F894DEBF0FBECDBFE1EFF1E08091F100C5
-:1026F000819321E0E93FF207C9F70E94E30E809140
-:10270000E80083FF1CC12091F1013091F201832F79
-:1027100090E08A30910508F012C1FC01EA5AFF4F9F
-:102720000C94862D203881F0223809F008C1809160
-:10273000F5018F708093E9008091EB0085FB88277D
-:1027400080F91092E90006C08091ED019091EE01B0
-:10275000911182609091E800977F9093E8008093B8
-:10276000F1001092F100C5C0822F8D7F09F0E7C003
-:10277000222319F0223061F0E2C08091F301813010
-:1027800009F0DDC0333009F080E08093EE0128C00D
-:102790008091F301811124C02091F5012F7009F47B
-:1027A000CEC02093E9008091EB0080FF19C080919A
-:1027B000EB00333011F4806211C080618093EB0034
-:1027C00081E090E0022E01C0880F0A94EAF780931E
-:1027D000EA001092EA008091EB0088608093EB00A1
-:1027E0001092E9008091E800877F86C02111A7C080
-:1027F0001091F3011F778091E3008078812B809303
-:10280000E3008091E800877F8093E8000E948F11A9
-:102810008091E80080FFFCCF8091E3008068809386
-:10282000E300112311F083E001C082E08093F00106
-:1028300086C02058223008F082C08091F301909128
-:10284000F4018C3D23E0920779F583E08A838AE2E4
-:1028500089834FB7F894DE01139620E03EE051E201
-:10286000E32FF0E050935700E49120FF03C0E2957E
-:10287000EF703F5FEF708E2F90E0EA3010F0C79658
-:1028800001C0C0968D939D932F5F243149F74FBFB0
-:102890008091E800877F8093E8006AE270E0CE01D3
-:1028A00001960E94971014C0AE014F5F5F4F609178
-:1028B000F5010E94DF0F009709F441C02091E80064
-:1028C000277F2093E800BC0189819A810E94F8103B
-:1028D0008091E8008B778093E80031C0203879F54B
-:1028E0008091E800877F8093E8008091EC018093DD
-:1028F000F1008091E8008E778093E8000E948F11AC
-:102900001EC021111CC09091F3019230C0F480913F
-:10291000E800877F8093E8009093EC010E948F117C
-:102920008091EC01811104C08091E30087FF02C017
-:1029300084E001C081E08093F0010E94CA0E809182
-:10294000E80083FF0AC08091E800877F8093E80059
-:102950008091EB0080628093EB00AA960FB6F8940A
-:10296000DEBF0FBECDBFDF91CF911F910895CF93F2
-:102970008091F0018823B1F08091E9008F709091EF
-:10298000EC0090FF02C090E801C090E0C92FC82B76
-:102990001092E9008091E80083FD0E946913CF70D6
-:1029A000C093E900CF9108959093740180937301CF
-:1029B0000895E0917301F0917401309721F0019036
-:1029C000F081E02D099480E00895FF920F931F930A
-:1029D000CF93DF938C01E0917301F09174013097F4
-:1029E00099F10280F381E02D09958091D70182FF52
-:1029F0002BC080FF04C08DE895E00E945207E801DB
-:102A000080E1F82E07E815E08091D70180FF0BC028
-:102A100088811F928F931F930F930E94EB070F9053
-:102A20000F900F900F90FA942196F110EDCF8091B6
-:102A3000D70180FF09C085E895E0DF91CF911F9114
-:102A40000F91FF900C945207DF91CF911F910F913E
-:102A5000FF900895E0917301F0917401309721F097
-:102A60000480F581E02D0994089520917101309141
-:102A700072018217930771F0909372018093710134
-:102A8000E0917301F0917401309721F00680F78195
-:102A9000E02D0994089520916F0130917001821703
-:102AA000930771F09093700180936F01E09173012F
-:102AB000F0917401309721F00084F185E02D0994A4
-:102AC000089508950C9461150E94CE210E94620918
-:102AD0000C949422CF93C82F8091D70182FF1EC0FF
-:102AE00080FF04C086EA95E00E9452078091D701DA
-:102AF00080FF0CC01F92CF9321EA35E03F932F93C4
-:102B00000E94EB070F900F900F900F908091D701CC
-:102B100080FF04C08FE995E00E9452078C2FCF916F
-:102B20000C94170DCF92DF92EF92FF920F931F93A9
-:102B3000CF93DF93CDB7DEB72B970FB6F894DEBFF8
-:102B40000FBECDBF0E947F0936E7E32E31E0F32EA2
-:102B500000E010E0C02E802F0E94AA0AF701D19059
-:102B60007F01D826B1F40F5F1F4F0E30110591F78A
-:102B70008FEF89838A831B820E94D7218160782FFF
-:102B80009D838C8349815A816B818D810E9435168A
-:102B900041C09091D70191FF04C08B870E94B00A79
-:102BA0008B8520E030E04D2D50E0922FBA01022EAF
-:102BB00002C0759567950A94E2F760FF25C02E83E1
-:102BC000CF82EE24E394F12C02C0EE0CFF1C9A9508
-:102BD000E2F790E08E219F2121E0892B09F420E08B
-:102BE00028870E94D7218160782F9A8789874E8114
-:102BF0005F8168858A850E943516F801EA58FE4F84
-:102C000080818E25808306C02F5F3F4F263031059F
-:102C100061F6A9CF0E940226109175010E94D91475
-:102C20001817A1F00E94D914809375012B960FB646
-:102C3000F894DEBF0FBECDBFDF91CF911F910F91F2
-:102C4000FF90EF90DF90CF900C946A152B960FB603
-:102C5000F894DEBF0FBECDBFDF91CF911F910F91D2
-:102C6000FF90EF90DF90CF900895CF93DF93CDB793
-:102C7000DEB72B970FB6F894DEBF0FBECDBF4F83E4
-:102C8000588769877A878B87DE01119686E0FD0178
-:102C900011928A95E9F785E0FE01379601900D9231
-:102CA0008A95E1F749815A816B817C818D819E8172
-:102CB0000E946A1D2B960FB6F894DEBF0FBECDBFE3
-:102CC000DF91CF910895CF93C82F882309F4C1C015
-:102CD000823859F40E94D91481FDBBC089E30E9457
-:102CE00009200E94E52089E30CC0833879F40E9412
-:102CF000D91480FDAEC083E50E9409200E94E52022
-:102D000083E50E945A20CF910C94E520843859F431
-:102D10000E94D91482FD9DC087E40E9409200E9470
-:102D2000E52087E4EECF8CEF8C0F813A48F48C2FAE
-:102D30000E948B2A81118DC08C2F0E940920E3CF25
-:102D400080E28C0F883048F4C77081E001C0880FA2
-:102D5000CA95EAF70E94AC20D6CF8BE58C0F833062
-:102D600078F4C53A29F0C63A31F482E890E005C01B
-:102D700081E890E002C083E890E0CF910C94351593
-:102D800088E58C0F833108F064C0C83A39F1C93A3C
-:102D900041F1CA3A49F1CB3A51F1CC3A59F1CD3A25
-:102DA00061F1C03B69F1CE3A71F1CF3A79F1C13BA3
-:102DB00081F1C23B89F1C33B91F1C43B99F1C53B21
-:102DC000A1F1C63BA9F1C73BB1F1C83BB9F1C93B81
-:102DD000C1F1CA3BC9F58AE292E038C082EE90E0C8
-:102DE00035C089EE90E032C08AEE90E02FC085EBCE
-:102DF00090E02CC086EB90E029C087EB90E026C0E5
-:102E00008CEC90E023C08DEC90E020C083E891E052
-:102E10001DC08AE891E01AC082E991E017C084E9F8
-:102E200091E014C081E292E011C083E292E00EC012
-:102E300084E292E00BC085E292E008C086E292E074
-:102E400005C087E292E002C080E090E0CF910C9450
-:102E50004B15CF910895882309F44BC0823859F45B
-:102E60000E94D91481FF45C089E30E9409200E9475
-:102E7000E52089E30CC0833871F40E94D91480FFE7
-:102E800038C083E50E9409200E94E52083E50E9466
-:102E90005A200C94E520843859F40E94D91482FFFA
-:102EA00028C087E40E9409200E94E52087E4EFCF34
-:102EB0009CEF980F913A58F390E2980F983050F4A5
-:102EC000877091E001C0990F8A95EAF7892F0E94D7
-:102ED000B220DFCF9BE5980F933020F480E090E0A4
-:102EE0000C943515885A833120F480E090E00C94DE
-:102EF0004B150895882321F00E94AC200C94E52006
-:102F00000895882321F00E94B2200C94E5200895B2
-:102F1000CF92DF92EF92FF920F931F93CF93DF93A5
-:102F2000CDB7DEB728970FB6F894DEBF0FBECDBF82
-:102F30008C0185E0F801DE01119601900D928A95D1
-:102F4000E1F7F80140813181F280258122952F70CF
-:102F500083819481892B31F03F3F31F481E04F3FF1
-:102F600019F403C081E001C080E080FDC6C249833E
-:102F70003A8389819A812F830E94C71F9E83888705
-:102F80000E94C61F0E94991E4E81E42FE295EF70A9
-:102F9000F0E0E05AFF4F2F8168850C94862D842F36
-:102FA000807F142F1F70882311F01295107FFF204F
-:102FB00059F0112309F456C2812F68870E94BC2062
-:102FC0000E94E52068854EC2862F0E942B17112390
-:102FD00009F493C2812F0E94C22028960FB6F8945C
-:102FE000DEBF0FBECDBFDF91CF911F910F91FF903C
-:102FF000EF90DF90CF900C94E520342F307F842F1A
-:103000008F70303211F08295807F662319F0613025
-:1030100019F12CC0FF20B1F0222309F494C1213012
-:1030200009F091C128960FB6F894DEBF0FBECDBF50
-:10303000DF91CF911F910F91FF90EF90DF90CF9094
-:103040000C94CC20222319F0213009F456C28E832F
-:103050000E94CF208E818AC1FF2021F0263008F007
-:103060004CC271C1253008F048C280C1FF2021F058
-:10307000222309F468C1F6C1222309F477C106C2EC
-:10308000242F26952695237030E02115310521F057
-:1030900021303105C9F031C2FF2021F0862F942F55
-:1030A000937002C080E090E028960FB6F894DEBFDF
-:1030B0000FBECDBFDF91CF911F910F91FF90EF9089
-:1030C000DF90CF900C943515FF2021F0862F942FA0
-:1030D000937002C080E090E028960FB6F894DEBFAF
-:1030E0000FBECDBFDF91CF911F910F91FF90EF9059
-:1030F000DF90CF900C944B15862FFF2019F00E9483
-:10310000882402C00E94F02428960FB6F894DEBFEF
-:103110000FBECDBFDF91CF911F910F91FF90EF9028
-:10312000DF90CF900C947525842F837009F076C0C2
-:10313000F110E3C1262F229526952770220F220F2A
-:10314000862F8F70C82ED12CE12CF12C022E04C0BA
-:10315000CC0CDD1CEE1CFF1C0A94D2F764FF10C0DF
-:103160006FE070E080E090E004C0660F771F881F7A
-:10317000991F2A95D2F7609570958095909503C018
-:1031800060E070E0CB01242F269526952370422F16
-:1031900050E042305105D1F04330510559F16C29CE
-:1031A0007D298E299F294130510541F128960FB67E
-:1031B000F894DEBF0FBECDBFDF91CF911F910F916D
-:1031C000FF90EF90DF90CF900C94BE1E6C297D296C
-:1031D0008E299F2928960FB6F894DEBF0FBECDBF6B
-:1031E000DF91CF911F910F91FF90EF90DF90CF90E3
-:1031F0000C94D81E0E94BE1EC701B60128960FB6B9
-:10320000F894DEBF0FBECDBFDF91CF911F910F911C
-:10321000FF90EF90DF90CF900C94A41EFF2019F048
-:10322000842F817001C08695882309F466C1262FFA
-:10323000229526952770220F220F862F8F70C82E79
-:10324000D12CE12CF12C022E04C0CC0CDD1CEE1C88
-:10325000FF1C0A94D2F764FF10C06FE070E080E0BA
-:1032600090E004C0660F771F881F991F2A95D2F738
-:10327000609570958095909503C060E070E0CB01FB
-:10328000242F269526952370422F50E04230510579
-:10329000D1F04330510559F16C297D298E299F29A0
-:1032A0004130510541F128960FB6F894DEBF0FBEAC
-:1032B000CDBFDF91CF911F910F91FF90EF90DF90E5
-:1032C000CF900C94921F6C297D298E299F292896D6
-:1032D0000FB6F894DEBF0FBECDBFDF91CF911F9127
-:1032E0000F91FF90EF90DF90CF900C94AC1F0E9455
-:1032F000921FC701B60128960FB6F894DEBF0FBE25
-:10330000CDBFDF91CF911F910F91FF90EF90DF9094
-:10331000CF900C94781F603FC9F118F4603E50F4D0
-:103320009CC0623F09F461C008F44BC0633F09F4DC
-:1033300070C093C0162F1F70842F8F71FF2099F0DB
-:103340000E94111F812F28960FB6F894DEBF0FBE82
-:10335000CDBFDF91CF911F910F91FF90EF90DF9044
-:10336000CF900C947A170E94321F812F28960FB6A7
-:10337000F894DEBF0FBECDBFDF91CF911F910F91AB
-:10338000FF90EF90DF90CF900C948117FF20A9F071
-:10339000253008F0B2C0842F8F7128960FB6F894AC
-:1033A000DEBF0FBECDBFDF91CF911F910F91FF9078
-:1033B000EF90DF90CF900C94571F263008F09DC0FF
-:1033C000EACFFF20A1F0842F8F7128960FB6F894D2
-:1033D000DEBF0FBECDBFDF91CF911F910F91FF9048
-:1033E000EF90DF90CF900C94111FFF2061F3842F9A
-:1033F0008F7128960FB6F894DEBF0FBECDBFDF9158
-:10340000CF911F910F91FF90EF90DF90CF900C9490
-:10341000321FFF2091F0842F8F7128960FB6F894F9
-:10342000DEBF0FBECDBFDF91CF911F910F91FF90F7
-:10343000EF90DF90CF900C94FC1E28960FB6F89476
-:10344000DEBF0FBECDBFDF91CF911F910F91FF90D7
-:10345000EF90DF90CF900C94F21EFF20A1F022237A
-:1034600009F4B1CF862F28960FB6F894DEBF0FBEB1
-:10347000CDBFDF91CF911F910F91FF90EF90DF9023
-:10348000CF900C946316222309F4B1CF862F28968F
-:103490000FB6F894DEBF0FBECDBFDF91CF911F9165
-:1034A0000F91FF90EF90DF90CF900C942B174F70FF
-:1034B000C8010E94F40728960FB6F894DEBF0FBE2D
-:1034C000CDBFDF91CF911F910F91FF90EF90DF90D3
-:1034D000CF900C94171E4F70C80128960FB6F89421
-:1034E000DEBF0FBECDBFDF91CF911F910F91FF9037
-:1034F000EF90DF90CF900C94B60B28960FB6F8940F
-:10350000DEBF0FBECDBFDF91CF911F910F91FF9016
-:10351000EF90DF90CF9008950E94C9200E949E20D6
-:103520000E94E5200E94A3260E94752580E090E07D
-:103530000E94351580E090E00C944B150E94B92054
-:103540000C948C1A0E94C71F292F22952F7030E0EF
-:103550002C3031054CF42A3031056CF422503109FD
-:103560002230310590F407C02C30310551F02F3056
-:10357000310539F00AC0803E10F0803F31F481E01F
-:10358000089593FB882780F9089580E00895CF93EC
-:10359000DF9300D000D01F92CDB7DEB70F900F9011
-:1035A0000F900F900F90DF91CF910895CF93DF93FD
-:1035B00000D000D000D0CDB7DEB726960FB6F89475
-:1035C000DEBF0FBECDBFDF91CF9108951F93CF9384
-:1035D000DF93C091840116E080918501C81799F0AE
-:1035E000D0E01C9FF0011D9FF00D1124EA57FE4F03
-:1035F0004081518162817381848195810E94D61AB4
-:103600002196C770E9CFDF91CF911F910895409126
-:10361000B6015091B7016091B8017091B9018091E4
-:10362000BA019091BB010C94D61ACF938091BB0143
-:1036300082958F7009F05FC08091B801882309F4EA
-:103640005AC020918401A09185016091B6017091CA
-:10365000B7018091B9019091BA0131E06F3F09F053
-:1036600030E0B32FC6E02A1709F445C0009721F0D7
-:103670007F3F21F44B2F03C041E001C040E030E028
-:1036800040FD35C0C29FF001C39FF00D1124EA57E1
-:10369000FE4F418174132BC04081641328C04281C6
-:1036A000411125C0438154814817590710F44150F6
-:1036B0005109481B590B483C5105C8F48091BB0186
-:1036C0008F7080618093BB0186E0829FF001839FB1
-:1036D000F00D1124E557FE4F80818F70806180834B
-:1036E00086EB91E00E948817CF910C94E61A2F5F29
-:1036F0003F4F2770B8CFCF910895CF92DF92EF92CE
-:10370000FF920F931F93CF93DF93CDB7DEB76297EE
-:103710000FB6F894DEBF0FBECDBF8C0185E0F80177
-:10372000DE011D9601900D928A95E1F7D8014C912A
-:1037300011965C91119712966C9112971396ED90D9
-:10374000FC9014977091B601E091B7012091B901F6
-:103750003091BA012115310531F0EF3F31F481E0AC
-:103760007F3F19F403C081E001C080E0B82FB17041
-:10377000CB2E80FD6CC1D090B801DD2009F4F5C0DE
-:10378000F091BB01E216F30638F0C701821B930BE0
-:10379000883C910548F09BC0209530952E0D3F1D2B
-:1037A000283C310508F093C08F2F807F09F052C06C
-:1037B000E51314C0741312C0D62E61110FC0FF7030
-:1037C000F061F093BB010E94071B86EB91E00E9421
-:1037D00088178091BB01F80185836CC1EF2831F017
-:1037E0005F3F31F481E04F3F19F403C081E001C035
-:1037F00080E080FD03C081E0862701C080E0F82FD3
-:10380000F170FF2E80FF1CC0809184012091850102
-:1038100036E0821709F428C190E0389FF001399F03
-:10382000F00D1124EA57FE4F7181571306C07081C5
-:10383000471303C07281671303C001968770E9CFF5
-:10384000D62E662309F436C18091BB018160809336
-:10385000BB0153C0E51308C0741306C0611104C056
-:10386000D8011596FC93AEC04D875E878D859E85E9
-:103870006A8B0E94A21A6A89882329F1D62E6623B0
-:1038800011F12091BB01822F82958F7090E00297F9
-:103890000CF460C08091B6019091B70198878F8336
-:1038A0001986FB86EA862C87CE01079651C0E5175C
-:1038B00031F14D875E878D859E856A8B0E94A21AA5
-:1038C0006A8981112EC0C8010E948817A4C08F2F59
-:1038D000807F69F77E2DF98AE88A89890E94C71A54
-:1038E00086EB91E00E948817E6EBF1E086E0DF01CD
-:1038F0001D928A95E9F70E94071BD12CDBC0741337
-:10390000D8CF6111D6CFD8011596FC93C8010E947B
-:103910008817E6EBF1E086E0DF011D928A95E9F772
-:10392000C9C0D62E662379F22091BB01822F8295E1
-:103930008F7090E0029774F08091B6019091B7017A
-:103940009A8389831B82FD82EC822E83CE010196AD
-:103950000E94881786E0F801A6EBB1E001900D9275
-:103960008A95E1F70E94151B6FC0E216F30628F056
-:10397000C701821B930B9C0104C0209530952E0D2E
-:103980003F1D283C310508F052C0D62E662309F4AD
-:103990009ACFE5132CC074132AC08091BB0180FD1F
-:1039A0001DC0982F92959F70C9F0D80115968C93E1
-:1039B00015979F3039F09F5F9295907F8F70892B7C
-:1039C00015968C93C8010E94881786E0F801A6EB33
-:1039D000B1E001900D928A95E1F736C086E0F801DA
-:1039E000A6EBB1E001900D928A95E1F763C04D8797
-:1039F0005E878D859E850E94A21A882379F086E0D5
-:103A0000F801A6EBB1E001900D928A95E1F70E94D2
-:103A1000151B0E94071BDD24D3944CC08091BB0171
-:103A200081608093BB01C8010E94881743C07E2D2E
-:103A3000F98AE88A89890E94C71AE6EBF1E086E0F4
-:103A4000DF011D928A95E9F70E94071B33C06623A8
-:103A500009F439CF4D875E878D859E850E94A21A15
-:103A6000882309F430CFCBCF4D875E878D859E8527
-:103A70000E94C71F292F22952F7030E02230310578
-:103A80002CF49F7041F0811106C00CC02430310528
-:103A90002CF49F7049F4805E883020F0C8010E94A9
-:103AA0008817CF2CDC2C06C0D80115969C91907FEE
-:103AB00091F7F8CF8D2D62960FB6F894DEBF0FBE4A
-:103AC000CDBFDF91CF911F910F91FF90EF90DF90CD
-:103AD000CF9008951F93CF93DF93CDB7DEB72C9788
-:103AE0000FB6F894DEBF0FBECDBF4F8358876987EE
-:103AF0007A878B879C87CE0107960E947D1B88233F
-:103B0000C1F02F8138858A859B85892B31F03F3F15
-:103B100011F080E003C02F3FE1F781E0811147C041
-:103B20004F81588569857A858B859C850E94D61A38
-:103B30003EC086E0FE013796DE01119601900D929F
-:103B40008A95E1F7FF81E8854A855B854115510536
-:103B500031F0EF3F31F481E0FF3F19F403C081E021
-:103B600001C080E080FD23C02091850130E0C901C3
-:103B70000196877099276091840170E086179707F6
-:103B8000F1F1F983EA835D834C8396E0929FD00143
-:103B9000939FB00D1124AA57BE4FFE01319601909C
-:103BA0000D929A95E1F7809385010E94E61A16E03E
-:103BB0008091840190918501891779F1189FC00146
-:103BC00011248A579E4F0E947D1B882331F1E0917A
-:103BD00084011E9FF0011124EA57FE4F408151815C
-:103BE00062817381848195810E94D61A80918401BB
-:103BF00090E001968770992780938401D9CF0E9425
-:103C00009E1A1092850110928401E6EBF1E086E0A5
-:103C1000DF011D928A95E9F7CACF2C960FB6F8946A
-:103C2000DEBF0FBECDBFDF91CF911F910895EF9200
-:103C3000FF920F931F93CF93DF939C01009709F49A
-:103C400071C0F12CEE24E394E9012196F9018491ED
-:103C5000843740F4843008F056C0813081F08230DF
-:103C600021F160C0853709F449C0C0F19CE7980F85
-:103C7000903708F057C08F770E942B1746C08901F4
-:103C80000E5F1F4FFE01849190E2980F983050F420
-:103C90008770FE2D01C0FF0F8A95EAF78F2F0E94D3
-:103CA000BC2015C00E94631614C089010E5F1F4F0F
-:103CB000FE01849190E2980F983068F48770FE2D91
-:103CC00001C0FF0F8A95EAF78F2F0E94C2200E9441
-:103CD000E520E8011AC00E942B17FBCF2E5F3F4F53
-:103CE000FE01C491CC2341F08FE99FE00197F1F7E9
-:103CF00000C00000C150F6CFE90107C0FE01F490FA
-:103D0000E901229602C00E9463168F2D882341F09C
-:103D1000EFE9FFE03197F1F700C000008150F6CFE6
-:103D20009E0192CFDF91CF911F910F91FF90EF9065
-:103D3000089508956093C0017093C1018093C201FA
-:103D40009093C3010C948C1A0F931F930091C001A0
-:103D50001091C1012091C2013091C301062B172B94
-:103D6000282B392B0093C0011093C1012093C2016D
-:103D70003093C3011F910F910C948C1A0F931F93D2
-:103D80000091C0011091C1012091C2013091C30185
-:103D900006231723282339230093C0011093C10160
-:103DA0002093C2013093C3011F910F910C948C1A80
-:103DB0000F931F930091C0011091C1012091C20186
-:103DC0003091C30106271727282739270093C00100
-:103DD0001093C1012093C2013093C3011F910F9131
-:103DE0000C948C1A1092BC011092BD011092BE016D
-:103DF0001092BF010C948C1A41E050E060E070E03A
-:103E000004C0440F551F661F771F8A95D2F7409351
-:103E1000BC015093BD016093BE017093BF010C942F
-:103E20008C1A41E050E060E070E004C0440F551F80
-:103E3000661F771F8A95D2F78091BC019091BD01D2
-:103E4000A091BE01B091BF01842B952BA62BB72B5F
-:103E50008093BC019093BD01A093BE01B093BF01BC
-:103E60000C948C1A41E050E060E070E004C0440F14
-:103E7000551F661F771F8A95D2F74095509560951C
-:103E800070958091BC019091BD01A091BE01B0914F
-:103E9000BF0184239523A623B7238093BC0190936D
-:103EA000BD01A093BE01B093BF010C948C1A41E0F8
-:103EB00050E060E070E004C0440F551F661F771F9C
-:103EC0008A95D2F78091BC019091BD01A091BE016D
-:103ED000B091BF0184279527A627B7278093BC01FF
-:103EE0009093BD01A093BE01B093BF010C948C1AB6
-:103EF0000F931F930091BC011091BD012091BE0151
-:103F00003091BF01062B172B282B392B0093BC01B6
-:103F10001093BD012093BE013093BF011F910F91FB
-:103F20000C948C1A0F931F930091BC011091BD014A
-:103F30002091BE013091BF01062317232823392386
-:103F40000093BC011093BD012093BE013093BF01CB
-:103F50001F910F910C948C1A0F931F930091BC0129
-:103F60001091BD012091BE013091BF010627172796
-:103F7000282739270093BC011093BD012093BE016F
-:103F80003093BF011F910F910C948C1A0895CF921A
-:103F9000DF92EF92FF920F931F93CF93DF93EC0189
-:103FA000C090C001D090C101E090C201F090C30167
-:103FB0008091BC019091BD01A091BE01B091BF0163
-:103FC000C82AD92AEA2AFB2A0FE110E0B701A60184
-:103FD000002E04C076956795579547950A94D2F7B9
-:103FE00040FF07C0BE01802F0E94D90B8130910590
-:103FF00039F40150110950F7BE0180E00E94D90B3D
-:10400000DF91CF911F910F91FF90EF90DF90CF90B4
-:10401000089590910C01992361F190910D019923DC
-:1040200041F1982F9695969596959F3088F4E0915A
-:104030000E01F0910F01E90FF11D877021E030E0D2
-:1040400001C0220F8A95EAF78181822B818308952E
-:104050009091D70190FF2DC01F928F9387ED95E02F
-:104060009F938F930E94EB070F900F900F900F90EC
-:10407000089540910E0150910F0120E030E09FEF34
-:10408000FA01E20FF31F6281681799F09F3F19F45C
-:10409000611101C0922F2F5F3F4F2E30310581F704
-:1040A0009F3F39F0FA01E90FF11D97FDFA958283E0
-:1040B0000895089590910C01992369F190910D0153
-:1040C000992349F1982F9695969596959F3090F45F
-:1040D000E0910E01F0910F01E90FF11D877021E0D1
-:1040E00030E001C0220F8A95EAF7209581812823CC
-:1040F000218308959091D70190FF1FC01F928F9345
-:1041000089EB95E09F938F930E94EB070F900F90A0
-:104110000F900F90089540910E0150910F0120E0F3
-:1041200030E0FA01E20FF31F9281981301C012826E
-:104130002F5F3F4F2E303105A1F7089581E090E0C9
-:10414000E0910E01F0910F01E80FF91F1082019626
-:1041500080319105A9F708959091D601982B9093FD
-:10416000D601089580959091D60198239093D60119
-:1041700008951092D60108959091D501982B9093AF
-:10418000D501089580959091D50198239093D501FC
-:1041900008951092D50108958093C4010895109256
-:1041A000C401089540910E0150910F0120E030E0CC
-:1041B00080E0FA01E20FF31F918191118F5F2F5F71
-:1041C0003F4F2F303105A9F70895E0910E01F0918E
-:1041D0000F018091D6018083E0910E01F0910F01D3
-:1041E00080819091D501892B80839091C40199237E
-:1041F00061F0E0910E01F0910F018081892B8083A5
-:104200000E94D22081111092C40180910E019091E0
-:104210000F010C94E51490933B0180933A010895AB
-:10422000CF92DF92EF92FF920F931F936C01EE24D7
-:10423000FF24C114D104E104F10421F46B017C01D9
-:1042400080E001C080E133272F2D1E2D0D2D01159B
-:1042500011052105310519F0885F68017901970181
-:104260008601A4E03695279517950795AA95D1F76D
-:10427000011511052105310519F08C5F68017901DF
-:1042800097018601F2E03695279517950795FA95DF
-:10429000D1F7011511052105310519F08E5F68016F
-:1042A0007901B701A6017695679557954795452BF6
-:1042B000462B472B09F08F5F1F910F91FF90EF90D6
-:1042C000DF90CF9008958295982F9C7C9695969537
-:1042D000837344E0849F90011124922B892F8A7A62
-:1042E00086959575990F892B08951F93CF93DF932A
-:1042F0001F92CDB7DEB799830E946321182F998151
-:10430000892F0E946321212F30E0322F2227A9011B
-:10431000482BCA010F90DF91CF911F910895809192
-:10432000F001843009F11092D80120E488E190E096
-:104330000FB6F894A895809360000FBE209360009C
-:1043400083B7817F846083BF83B7816083BF7894A4
-:10435000889583B78E7F83BF88E10FB6F8948093EA
-:104360006000109260000FBE089508950895CF93E5
-:104370000E94B5210E947F090E94B621C0E08C2FC7
-:104380000E94AA0A811105C0CF5FCE30C1F780E03C
-:1043900001C081E0CF9108950C949E1A82E084BD03
-:1043A00093E095BD9AEF97BD80936E0008952FB767
-:1043B000F8948091D9019091DA01A091DB01B0913C
-:1043C000DC012FBF0895CF92DF92EF92FF920F93FF
-:1043D0001F932FB7F8944091D9015091DA01609161
-:1043E000DB017091DC012FBF6A017B01EE24FF2409
-:1043F0008C0120E030E0C016D106E206F30610F48E
-:1044000041505109481B590BCA011F910F91FF9050
-:10441000EF90DF90CF9008951F920F920FB60F92FA
-:1044200011248F939F93AF93BF938091D901909163
-:10443000DA01A091DB01B091DC010196A11DB11D53
-:104440008093D9019093DA01A093DB01B093DC0152
-:10445000BF91AF919F918F910F900FBE0F901F90C2
-:1044600018950E94E011F8942FEF87EA91E6215009
-:1044700080409040E1F700C0000087E090EBDC0155
-:104480008093F9019093FA01A093FB01B093FC0192
-:104490002CE088E190E00FB6F894A8958093600036
-:1044A0000FBE20936000FFCFEF92FF920F931F93F8
-:1044B000CF93DF93E82EF12C8F2D0E94AA0AC0E043
-:1044C000D0E0082F10E098010C2E02C035952795FA
-:1044D0000A94E2F720FD05C02196C630D10599F770
-:1044E00009C06C2F7F2D80E00E94B70BE812F4CF3B
-:1044F00081E005C0F3948EE0F812DECF80E0DF911A
-:10450000CF911F910F91FF90EF900895CF93C82FF7
-:104510008CE20E945422882321F08C2FCF910C949E
-:10452000542280E0CF910895CF930E94E12381111E
-:1045300002C00E94C7238CEF95E00E945207C5E697
-:10454000C15049F00E947F098FE39CE90197F1F780
-:1045500000C00000F5CF85EF95E00E94520789E288
-:104560000E948622811111C18AE20E948622811155
-:104570000E94C72385E00E94862281110E94312279
-:104580000E94EC238093D70187E00E948622882333
-:1045900099F18BE10E948622882351F09091D701F6
-:1045A00091FB882780F921E0822780FB91F922C0C6
-:1045B0008EE00E948622882351F09091D70192FBD1
-:1045C000882780F921E0822780FB92F913C080E1DF
-:1045D0000E9486229091D701882341F093FB88277F
-:1045E00080F921E0822780FB93F904C0892F809510
-:1045F00080FB90F99093D7018091D7010E94F0231E
-:104600000E94FE238093EA0180EE0E948622882386
-:1046100041F08091EA01982F909590FB80F980936A
-:10462000EA0189E30E948622882359F09091EA01E9
-:1046300091FB882780F921E0822780FB91F99093F4
-:10464000EA0182EE0E948622882359F09091EA01C5
-:1046500092FB882780F921E0822780FB92F99093D2
-:10466000EA0186EE0E948622882359F09091EA01A1
-:1046700093FB882780F921E0822780FB93F99093B0
-:10468000EA0183EE0E948622882359F09091EA0184
-:1046900094FB882780F921E0822780FB94F990938E
-:1046A000EA0185E30E948622882359F09091EA016D
-:1046B00095FB882780F921E0822780FB95F990936C
-:1046C000EA0181E30E948622882359F09091EA0151
-:1046D00096FB882780F921E0822780FB96F990934A
-:1046E000EA0181E10E948622882359F09091EA0133
-:1046F00097FB882780F921E0822780FB97F9909328
-:10470000EA018091EA010E9402248091EA0187FB7C
-:10471000882780F980930D0187E20E948622C82FA6
-:104720008EE10E9486228111C2608FE10E94862262
-:104730008111C46080E20E9486228111C86081E2FA
-:104740000E9486228111C06182E20E94862281112C
-:10475000C06283E20E9486228111C06484E20E94CA
-:104760008622882311F0C06802C0CC2329F08C2F48
-:104770000E94F9236C2F03C00E94F523682F70E07C
-:1047800080E090E0CF910C949A1ECF9108956DEE49
-:104790007EEF80E090E00E94BC2D60E082E090E03F
-:1047A0000E94AE2D60E083E090E00E94AE2D60E0BC
-:1047B00084E090E00E94AE2D60E085E090E00C94F3
-:1047C000AE2D80E090E00E94A82D21E08D3E9E4F0E
-:1047D00009F020E0822F089582E090E00C94A02D53
-:1047E000682F82E090E00C94AE2D83E090E00C9472
-:1047F000A02D682F83E090E00C94AE2D84E090E033
-:104800000C94A02D682F84E090E00C94AE2D809144
-:10481000DF0180FF0BC06091130185E0689FB0014C
-:10482000112475956795759567952AC081FF09C014
-:104830006091130185E0689FB0011124759567951B
-:104840001FC082FF07C06091130185E0689FB0011F
-:10485000112416C04091E0014423C9F06091120177
-:10486000461788F72091130185E0289F90011124B5
-:10487000429FC001439F900D112470E00E94722D51
-:104880006038710540F46115710539F002C065E0CA
-:1048900070E0862F08958FE7089581E00895809154
-:1048A000DF0180FF08C06091110170E07595679588
-:1048B0007595679521C081FF06C06091110170E078
-:1048C0007595679519C082FF04C06091110170E071
-:1048D00010C08091E0018823C1F06091100186171B
-:1048E000A0F790911101989FC001112470E00E94DF
-:1048F000722D6038710528F46115710521F0862F3D
-:1049000008958FE7089581E0089561E070E0F4CFA5
-:10491000803F21F40E940724819504C0813F29F43F
-:104920000E9407248093E3010895823F21F40E94AE
-:104930000724819504C0833F29F40E9407248093B3
-:10494000E2010895893F19F40E944F2405C08A3F6F
-:1049500031F40E944F2481958093E40108958B3FA8
-:1049600021F40E944F24819504C08C3F29F40E94B9
-:104970004F248093E5010895843F21F48091E10163
-:10498000816017C0853F21F48091E101826011C0F0
-:10499000863F21F48091E10184600BC0873F21F4C0
-:1049A0008091E101886005C0883F31F48091E10188
-:1049B00080618093E10108958D3F21F48091DF01B2
-:1049C00081600BC08E3F21F48091DF01826005C0C1
-:1049D0008F3F29F48091DF0184608093DF01089587
-:1049E000803F39F48091E30187FF6CC01092E301AE
-:1049F00069C0813F29F48091E3011816BCF362C0BD
-:104A00009091E201823F29F497FF5CC01092E2018D
-:104A100059C0833F19F41916CCF354C0893F41F4AF
-:104A20008091E40118160CF04DC01092E4014AC0C8
-:104A30008A3F29F48091E40187FF44C0F6CF8B3F81
-:104A400039F48091E50187FF3DC01092E5013AC03D
-:104A50008C3F29F48091E5011816BCF333C0843FE4
-:104A600021F48091E1018E7F17C0853F21F4809170
-:104A7000E1018D7F11C0863F21F48091E1018B7FA0
-:104A80000BC0873F21F48091E101877F05C0883FFB
-:104A900031F48091E1018F7E8093E10113C08D3F5D
-:104AA00021F48091DF018E7F0BC08E3F21F4809135
-:104AB000DF018D7F05C08F3F29F48091DF018B7F5F
-:104AC0008093DF018091E20181110EC08091E301AA
-:104AD00081110AC08091E401811106C08091E50135
-:104AE000811102C01092E00108958091D70183FFE7
-:104AF0007EC088E396E00E9452078091E1011F92F8
-:104B00008F9383E396E09F938F930E94EB0781E35B
-:104B100096E00E9452072091E201822F992787FD9B
-:104B200090959F932F938EE296E09F938F930E9490
-:104B3000EB078CE296E00E9452072091E301822F5E
-:104B4000992787FD90959F932F9389E296E09F93F5
-:104B50008F930E94EB0787E296E00E945207209114
-:104B6000E401822F992787FD90959F932F9384E2EC
-:104B700096E09F938F930E94EB0782E296E00E945B
-:104B800052072091E501822F992787FD90959F93E9
-:104B90002F938FE196E09F938F930E94EB078CE118
-:104BA00096E00E9452078091E0011F928F9389E165
-:104BB00096E09F938F930E94EB0787E196E00E9417
-:104BC00052078091DF011F928F9384E196E09F93BB
-:104BD0008F930E94EB0781E196E00E9452078DB708
-:104BE0009EB74C960FB6F8949EBF0FBE8DBF81EE58
-:104BF00091E00E942A150E94D7219093DE018093B4
-:104C0000DD0108951F93CF93DF938091DD01909193
-:104C1000DE010E94E3214091E001442321F0209134
-:104C2000140130E006C0209115015AE0259F900143
-:104C300011248217930708F482C08091E201109139
-:104C4000E301D091E401C091E501811107C0111188
-:104C500005C0D11103C0CC2309F471C04F3F19F036
-:104C60004F5F4093E001181624F40E9407248093BC
-:104C7000E2018091E20187FF05C00E94072481952F
-:104C80008093E201111624F40E9407248093E3012B
-:104C90008091E30187FF05C00E94072481958093DE
-:104CA000E3016091E201662339F11091E3011123E0
-:104CB00019F1772767FD7095872F972F0E94772C22
-:104CC00023E333E343E35FE30E94DB2C0E94442CA5
-:104CD0006093E201612F772767FD7095872F972FEB
-:104CE0000E94772C23E333E343E35FE30E94DB2C52
-:104CF0000E94442C6093E3011D1624F40E944F246B
-:104D00008093E4018091E40187FF05C00E944F2455
-:104D100081958093E4011C1624F40E944F24809313
-:104D2000E5018091E50187FF05C00E944F24819530
-:104D30008093E501DF91CF911F910C947525DF9150
-:104D4000CF911F910895E1EEF1E085E0DF011D9222
-:104D50008A95E9F71092E0011092DF0108958BE542
-:104D600098E00E9452071F9281E08F931F9285E086
-:104D70008F938DE098E09F938F930E94EB070F90A5
-:104D80000F900F900F900F900F9008958330E9F1DE
-:104D900028F4813061F0823009F10895853009F4FA
-:104DA00062C008F449C0863009F474C008952091A7
-:104DB0001501862F90E0820F911D8F3F910520F401
-:104DC000620F6093150103C08FEF809315018091EE
-:104DD00015011F928F9386E497E072C02091140111
-:104DE000862F90E0820F911D8F3F910520F4620F76
-:104DF0006093140103C08FEF80931401809114011C
-:104E00001F928F9384E397E05BC020911301862F5C
-:104E100090E0820F911D8F3F910520F4620F609307
-:104E2000130103C08FEF80931301809113011F9230
-:104E30008F9381E297E044C020911201862F90E089
-:104E4000820F911D8F3F910520F4620F6093120134
-:104E500003C08FEF80931201809112011F928F93F4
-:104E60008CE097E02DC020911101862F90E0820FF9
-:104E7000911D8F3F910520F4620F6093110103C0D3
-:104E80008FEF80931101809111011F928F9383EF17
-:104E900096E016C020911001862F90E0820F911DA0
-:104EA0008F3F910520F4620F6093100103C08FEFD4
-:104EB00080931001809110011F928F9388ED96E0EE
-:104EC0009F938F930E94EB070F900F900F900F907E
-:104ED0000895833081F128F4813059F08230D1F087
-:104EE0000895853009F449C0B8F1863009F456C0F8
-:104EF000089580911501681720F4861B8093150191
-:104F000002C010921501809115011F928F9389ECB8
-:104F100096E054C080911401681720F4861B80939A
-:104F2000140102C010921401809114011F928F93FA
-:104F300087EB96E043C080911301681720F4861B2D
-:104F40008093130102C010921301809113011F92EC
-:104F50008F9384EA96E032C080911201681720F4A2
-:104F6000861B8093120102C01092120180911201DF
-:104F70001F928F938FE896E021C0809111016817EE
-:104F800020F4861B8093110102C0109211018091C0
-:104F900011011F928F9386E796E010C08091100157
-:104FA000681720F4861B8093100102C01092100134
-:104FB000809110011F928F938BE596E09F938F93C2
-:104FC0000E94EB070F900F900F900F900895CF93D2
-:104FD000C82F1F928F9320E639E03F932F930E94B2
-:104FE000EB0761E070E080E090E004C0660F771F9F
-:104FF000881F991FCA95D2F70E949A1E0F900F9092
-:105000000F900F90CF910C949E1ACF938D3109F48D
-:1050100065C0B0F58E3009F4CBC100F5873009F4D6
-:105020009BC1A8F4863009F06AC28091D701817FC4
-:105030008E7F8093D70185E699E00E94520781EA2E
-:105040009DE00E94520781E08093E70180C1883093
-:1050500009F44FC08B3009F47CC151C2863109F488
-:10506000EDC138F4803109F4B6C1813109F42DC2A3
-:1050700046C2893109F4CBC18B3109F486C13FC2E4
-:10508000853309F434C248F4873209F430C208F495
-:1050900030C2893209F42BC232C2833438F48A33E5
-:1050A00008F029C2883309F454C129C2833409F4B1
-:1050B0001EC2883409F023C20E949E1A80E99DE036
-:1050C0000E9452079FEF23ED80E3915020408040E3
-:1050D000E1F700C000000E94312239C180EB9DE061
-:1050E0000E9452070E94FE2B0E94D9140E94170DA5
-:1050F0002EC185EA9DE00E94520786E79BE00E9450
-:1051000052070E94F5231F928F9383E79BE09F93A2
-:105110008F930E94EB0781E79BE00E9452070E9459
-:10512000EC23C82F8EE59BE00E9452071F92CF937D
-:1051300029E53BE03F932F930E94EB0787E59BE037
-:105140000E9452078DE49BE00E9452078C2F8170D1
-:105150001F928F932AE43BE03F932F930E94EB072B
-:1051600088E49BE00E9452078EE39BE00E94520776
-:10517000C1FB882780F91F928F932BE33BE03F937D
-:105180002F930E94EB0789E39BE00E9452078DE278
-:105190009BE00E945207C2FB882780F91F928F93E1
-:1051A0002AE23BE03F932F930E94EB0788E29BE0CB
-:1051B0000E9452078FE19BE00E945207C3FBCC275D
-:1051C000C0F91F92CF938CE19BE09F938F930E9435
-:1051D000EB078AE19BE00E9452070E94FE23C82F42
-:1051E00086E09BE00E9452071F92CF9321E03BE0B4
-:1051F0003F932F930E94EB078FEF9AE00E94520794
-:1052000086EE9AE00E9452078C2F81701F928F9336
-:1052100023EE3AE03F932F930E94EB078DB79EB7A2
-:1052200080960FB6F8949EBF0FBE8DBF81EE9AE0B8
-:105230000E9452078AEC9AE00E945207C1FB88271D
-:1052400080F91F928F9327EC3AE03F932F930E94AF
-:10525000EB0785EC9AE00E94520783EB9AE00E94EC
-:105260005207C2FB882780F91F928F9320EB3AE008
-:105270003F932F930E94EB078EEA9AE00E94520719
-:105280008CE99AE00E945207C3FB882780F91F929D
-:105290008F9329E93AE03F932F930E94EB0787E928
-:1052A0009AE00E9452078DE89AE00E945207C4FBE0
-:1052B000882780F91F928F932AE83AE03F932F9333
-:1052C0000E94EB0788E89AE00E94520786E79AE07E
-:1052D0000E945207C5FB882780F91F928F9323E70E
-:1052E0003AE03F932F930E94EB0781E79AE00E94F8
-:1052F000520785E59AE00E945207C6FB882780F98D
-:105300001F928F9322E53AE03F932F930E94EB0781
-:1053100080E59AE00E94520788E49AE00E945207D2
-:10532000C7FBCC27C0F91F92CF9385E49AE09F93E7
-:105330008F930E94EB0783E49AE00E9452078DB797
-:105340009EB74C960FB6F8949EBF0FBE8DBFC1E0BE
-:10535000DBC08CE899E058C08091D701C82FC1709C
-:1053600080FF09C083E89DE00E9452078091D70129
-:10537000817F8E7F44C087E79DE00E945207809125
-:10538000D70181608093D701E2CF8091D70181FB63
-:10539000CC27C0F991E0C927C0FB81F98093D701E0
-:1053A000CC2319F08AE69DE025C08CE59DE02CC059
-:1053B0008091D70182FBCC27C0F991E0C927C0FBBF
-:1053C00082F98093D701CC2319F08DE49DE012C0BF
-:1053D0008DE39DE019C08091D70183FBCC27C0F9F4
-:1053E00091E0C927C0FB83F98093D701CC2351F00A
-:1053F00081E39DE00E9452078091D70181608093F4
-:10540000D70182C084E29DE00E945207A0CF85E1CF
-:105410009DE00E94520789EE9CE00E9452078CEAB0
-:105420009CE00E94520785E89CE00E94520781E4BC
-:105430009CE00E94520786E19CE0E6CF88E09CE079
-:105440000E9452070E94D9141F928F938EEE9BE008
-:105450009F938F930E94EB0780910C011F928F9373
-:1054600087ED9BE09F938F930E94EB0780916E01E5
-:105470001F928F9384EC9BE09F938F930E94EB0786
-:1054800080910D011F928F9381EB9BE09F938F93EF
-:105490000E94EB078091D9019091DA01A091DB0184
-:1054A000B091DC01BF93AF939F938F938DE99BE005
-:1054B0009F938F930E94EB078DB79EB746960FB6CA
-:1054C000F8949EBF0FBE8DBF42CF0E949E1AC0911E
-:1054D0000D0181E0C827C0930D01CC2329F083E999
-:1054E0009BE00E94520710C088E89BE08DCF80E0CF
-:1054F00003C08D5101C089530E94E72728CF86E859
-:105500009BE00E945207C0E08C2FCF91089580E06D
-:10551000089580E00895CF93C82F8091E7018130EE
-:1055200081F020F0823009F44CC042C1A0910E01FC
-:10553000B0910F018C91813169F0823209F03AC14A
-:1055400009C0A0910E01B0910F018C91813111F031
-:10555000823249F48C2F0E94872A81112FC08C2F10
-:105560000E9405282CC08C2F0E94892A811126C0F8
-:10557000C431E1F070F4CB3081F0C031D1F40E943D
-:10558000AF2688E599E00E94520782E08093E70108
-:1055900015C0C93259F0C83361F485E699E00E941C
-:1055A00052078CE599E00E94520708C01092E7016B
-:1055B00003C186E599E00E945207FEC081E0817038
-:1055C000FDC0C43220F5CE3108F0C0C0CB3099F117
-:1055D000C8F4C73009F0D2C08AE08093150194E185
-:1055E0009093140193E0909313018093120188E04B
-:1055F0008093110188E2809310018CEF97E00E9464
-:105600005207BFC0C33149F1C431C1F0B7C0CB3478
-:1056100009F4A9C028F4C93289F0C83361F0AEC0DA
-:10562000C13509F49EC0C23509F499C0CE3409F0E1
-:10563000A5C06AE09EC00E94AF26A3C08091E6018B
-:10564000882319F01092E6019CC089E098E00E943E
-:10565000520781E08093E701B1C083EE97E00E949A
-:10566000520781ED97E00E945207809115011F9229
-:105670008F938EEC97E09F938F930E94EB078CECB7
-:1056800097E00E9452078AEB97E00E9452078091B0
-:1056900014011F928F9387EB97E09F938F930E9443
-:1056A000EB0785EB97E00E94520786EA97E00E949D
-:1056B0005207809113011F928F9383EA97E09F9383
-:1056C0008F930E94EB0781EA97E00E94520780E9DE
-:1056D00097E00E945207809112011F928F938DE8EC
-:1056E00097E09F938F930E94EB078BE897E00E94CF
-:1056F000520786E797E00E945207809111011F929E
-:105700008F9383E797E09F938F930E94EB0781E746
-:1057100097E00E9452078AE597E00E945207809125
-:1057200010011F928F9387E597E09F938F930E94BC
-:10573000EB0785E597E00E9452078DB79EB7489624
-:105740000FB6F8949EBF0FBE8DBF1BC0CE51EC2F7D
-:10575000F0E0E15DFE4F80818093E60112C061E0E0
-:1057600003C061E006C06AE08091E6010E94C6269F
-:1057700008C08091E6010E94692703C08AEF97E084
-:1057800013C08091E601882369F01F928F9384EF04
-:1057900097E09F938F930E94EB070F900F900F90CD
-:1057A0000F9004C081EF97E00E94520781E006C08D
-:1057B0001092E70180E002C080E001CFCF91089510
-:1057C000E1E8F0E08081886080838081816080836F
-:1057D0008FB7F89493E09093890090ED90938800B0
-:1057E0008FBF0895EFE6F0E08081826080830895A6
-:1057F000EFE6F0E080818D7F80830895EFE6F0E0B2
-:10580000808192E08927808308951F920F920FB6BE
-:105810000F9211242F933F934F935F936F937F9336
-:105820008F939F93AF93BF93EF93FF938091E80182
-:105830009091E90101969093E9018093E80181112B
-:1058400003C082E00E94170DE091E901E695E6951C
-:10585000F0E0E054F24FE4918091E8018E1303C030
-:1058600080E00E94170DFF91EF91BF91AF919F9142
-:105870008F917F916F915F914F913F912F910F90F9
-:105880000FBE0F901F90189504D06894B1118DC071
-:10589000089570D088F09F5790F0B92F9927B7518D
-:1058A000A0F0D1F0660F771F881F991F1AF0BA95E4
-:1058B000C9F712C0B13081F077D0B1E0089574C05B
-:1058C000672F782F8827B85F39F0B93FCCF38695DA
-:1058D00077956795B395D9F73EF490958095709537
-:1058E00061957F4F8F4F9F4F0895E89409C097FBB4
-:1058F0003EF490958095709561957F4F8F4F9F4FA7
-:105900009923A9F0F92F96E9BB279395F6958795EA
-:1059100077956795B795F111F8CFFAF4BB0F11F4AD
-:1059200060FF1BC06F5F7F4F8F4F9F4F16C0882354
-:1059300011F096E911C0772321F09EE8872F762F8A
-:1059400005C0662371F096E8862F70E060E02AF0CB
-:105950009A95660F771F881FDAF7880F96958795B7
-:1059600097F9089557FD9058440F551F59F05F3F20
-:1059700071F04795880F97FB991F61F09F3F79F071
-:1059800087950895121613061406551FF2CF4695F3
-:10599000F1DF08C0161617061806991FF1CF869575
-:1059A0007105610508940895E894BB276627772759
-:1059B000CB0197F908950BD078C069D028F06ED04C
-:1059C00018F0952309F05AC05FC01124EECFCADF4A
-:1059D000A0F3959FD1F3950F50E0551F629FF00102
-:1059E000729FBB27F00DB11D639FAA27F00DB11D5B
-:1059F000AA1F649F6627B00DA11D661F829F2227E4
-:105A0000B00DA11D621F739FB00DA11D621F839F6A
-:105A1000A00D611D221F749F3327A00D611D231F40
-:105A2000849F600D211D822F762F6A2F11249F578E
-:105A300050408AF0E1F088234AF0EE0FFF1FBB1FB1
-:105A4000661F771F881F91505040A9F79E3F510550
-:105A500070F014C0AACF5F3FECF3983EDCF386955C
-:105A600077956795B795F795E7959F5FC1F7FE2BFB
-:105A7000880F911D9695879597F9089597F99F67D7
-:105A800080E870E060E008959FEF80EC08950024C6
-:105A90000A941616170618060906089500240A9493
-:105AA00012161306140605060895092E0394000C19
-:105AB00011F4882352F0BB0F40F4BF2B11F460FFA8
-:105AC00004C06F5F7F4F8F4F9F4F0895991B79E000
-:105AD00004C0991F961708F0961B881F7A95C9F77E
-:105AE0008095089597FB072E16F4009407D077FD54
-:105AF00009D00E948C2D07FC05D03EF4909581952D
-:105B00009F4F0895709561957F4F0895EE0FFF1F89
-:105B10000590F491E02D0994AA1BBB1B51E107C02D
-:105B2000AA1FBB1FA617B70710F0A61BB70B881F2D
-:105B3000991F5A95A9F780959095BC01CD010895BC
-:105B4000F999FECF92BD81BDF89A992780B5089545
-:105B5000A8E1B0E042E050E00C94C32D262FF99963
-:105B6000FECF1FBA92BD81BD20BD0FB6F894FA9A40
-:105B7000F99A0FBE019608950E94AE2D272F0C941E
-:105B8000AF2DDC01CB01FC01F999FECF06C0F2BDBF
-:105B9000E1BDF89A319600B40D9241505040B8F7EB
-:065BA0000895F894FFCF08
-:105BA6002002180D090EE60DB20D7F0D0101C5018B
-:105BB60028080A03140A3F4D3620394605F904C35E
-:105BC60004A3046A04DD03F6030F04280448040151
-:0A5BD6000203040506070809000099
+:1002D00001000100AE00010001000000160345000E
+: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
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A
+:1004E0009091EF01A091F001B091F1018730904B14
+:1004F000A740B04BB9F41092EE011092EF011092A8
+:10050000F0011092F10114BE84B7877F84BF88E1A7
+:100510000FB6F89480936000109260000FBEE0E088
+:10052000FFE3099511E0A0E0B1E0E8ECF5E402C0DA
+:1005300005900D92A433B107D9F711E0A4E3B1E01F
+:1005400001C01D92AE3EB107E1F70E940B090C9469
+:10055000E2220C94000061110BC0FC01828188230F
+:1005600021F085EE0E946C0F03C085EE0E943410CE
+:1005700080E090E0089508956091B1017091B2011A
+:100580008091B3019091B4010E94F01956985E9841
+:1005900025982D9826982E9827982F98813019F015
+:1005A000823021F00895259A2D9A0895269A2E9A40
+:1005B00008958CEB92E0892B11F00E94BC0280E040
+:1005C00090E0089556985E9825982D9826982E9834
+:1005D00027982F988FEF90E0909389008093880060
+:1005E00090938B0080938A0090938D0080938C0071
+:1005F000259A2D9A2FEF80E792E02150804090407D
+:10060000E1F700C00000269A2E9A2FEF80E792E0D3
+:10061000215080409040E1F700C00000279A2F9AB7
+:100620002FEF80E792E0215080409040E1F700C03A
+:10063000000025982D982FEF80E792E02150804010
+:100640009040E1F700C0000026982E982FEF80E739
+:1006500092E0215080409040E1F700C000002798D0
+:100660002F9856985E9825982D9826982E9827981A
+:100670002F98089589EA8093800089E08093810013
+:1006800024982C983F988AB18F748AB96E98479AAB
+:100690008BB1806B8BB9769A0E94E2028BEB92E071
+:1006A000892B11F00E94BB0280E090E0089580E267
+:1006B000809300018091340181110EC00E94A60335
+:1006C00081E0809334012FEF83ED90E3215080404F
+:1006D0009040E1F700C0000080E40E94AC038093EA
+:1006E000000181112EC00E94D60380930001811168
+:1006F00028C00E94D60380930001811122C08FE39D
+:100700000E94D6038093000181111BC00E94CE037A
+:1007100080E40E94AC0380930001811112C08CE040
+:100720000E94D6038093000181110BC00E94D60362
+:1007300080930001811105C08FE30E94D60380934E
+:1007400000010E94CE038091000108951092B9002B
+:100750008AE08093B800089594EA9093BC00909149
+:10076000BC0097FFFCCF9091B900987F983021F0A2
+:10077000903111F081E008958093BB0084E880936C
+:10078000BC008091BC0087FFFCCF8091B900887FBE
+:10079000883111F0803471F780E0089584E9809306
+:1007A000BC008091BC0084FDFCCF08958093BB0009
+:1007B00084E88093BC008091BC0087FFFCCF9091BF
+:1007C000B900987F81E0983209F480E0089584E8C8
+:1007D0008093BC008091BC0087FFFCCF8091BB0060
+:1007E000089580910001811115C080E40E94AC033E
+:1007F0008093000181110CC082E10E94D603809396
+:100800000001811105C08FEF0E94D6038093000183
+:100810000E94CE0384B1807F84B985B1807F85B981
+:100820008AB1837F8AB98BB1837F8BB93E98469812
+:1008300008950E945703809300010E94F10380B342
+:100840008C7080BB81B3836F81BBE4E4F1E0A6E3ED
+:10085000B1E011921D9281E0E235F807D1F78AE309
+:1008600093E0892B11F00C943A030895BF92CF9234
+:10087000DF92EF92FF920F931F93CF93DF938091BC
+:100880000001882379F0809135018F5F80933501D5
+:10089000811108C00E94570380930001811102C09A
+:1008A0000E94E20206E311E0C0E0D0E0DD24D39430
+:1008B00082E0C82EEE24E394F12CC73000F580913D
+:1008C0000001811162C080E40E94AC0380930001AA
+:1008D000811112C082E10E94D60380930001811130
+:1008E0000BC0C7010C2E01C0880F0A94EAF780954F
+:1008F0000E94D603809300010E94CE0346C0CA30F6
+:10090000A1F028F4C83059F0C93061F005C0CC30EE
+:1009100089F070F0CD3089F0209A289810C0219A83
+:1009200029980DC0229A2A980AC0239A2B9807C0AA
+:10093000529A01C0539A5B9802C03E9A4698E0EAE8
+:10094000EA95F1F78FB1799960C092E081708D25B9
+:10095000892B7C9B02C090E001C094E0892B7D9B99
+:1009600002C090E001C098E0892B7E9B02C090E01D
+:1009700001C090E1892B9FB19095991F9927991FEC
+:100980009295990F907E892B0FC080910001811163
+:1009900051C080E40E94AC03809300018823B9F128
+:1009A000B12C0E94CE038B2DF8019081981719F07D
+:1009B0008083C09201010E94F10321960F5F1F4FB7
+:1009C000CE30D10509F079CF809101018823B1F0B3
+:1009D000815080930101882339F08FE99FE00197CE
+:1009E000F1F700C000000AC0A4E4B1E0E6E3F1E0E2
+:1009F00081918D9391E0E434F907D1F789ED92E08C
+:100A0000892BD1F00E94D90217C090E09FCF83E1DB
+:100A10000E94D603809300018111C2CF81E40E941D
+:100A2000AC03809300018111BBCF0E94E703B82E75
+:100A3000B094B7CF80E0B8CF81E0DF91CF911F9124
+:100A40000F91FF90EF90DF90CF90BF900895E82F27
+:100A5000F0E0EC5BFE4F8081089508958B3B91059B
+:100A600078F4883A910540F5853A9105D0F48430C0
+:100A7000910508F0B1C08130910509F4ADC06BC09B
+:100A8000803E910508F467C0883E910508F4A4C033
+:100A90009C01205F31092031310508F05CC0906570
+:100AA0000895853A910509F459C0863A910509F4EB
+:100AB00058C083E890E40895883A910509F454C039
+:100AC000893A910509F453C08A3A910509F452C054
+:100AD0008B3A910509F451C08C3A910509F450C044
+:100AE0008D3A910509F44FC0803B910509F44EC041
+:100AF0008E3A910509F44DC08F3A910509F44CC026
+:100B0000813B910509F44BC0823B910509F44AC031
+:100B1000833B910509F449C0843B910509F448C021
+:100B2000853B910509F447C0863B910509F446C011
+:100B3000873B910509F445C0883B910509F444C001
+:100B4000893B910509F443C08A3B910509F042C0F5
+:100B50008AE296E4089580E090E0089581E890E4C8
+:100B6000089582E890E4089582EE94E4089589EE71
+:100B700094E408958AEE94E4089585EB94E408954E
+:100B800086EB94E4089587EB94E408958CEC94E468
+:100B900008958DEC94E4089583E895E408958AE837
+:100BA00095E4089582E995E4089584E995E408952B
+:100BB00081E296E4089583E296E4089584E296E45F
+:100BC000089585E296E4089586E296E4089587E222
+:100BD00096E4089580E094E40895089596E0799F5E
+:100BE000F001112494E5899FE00DF11D1124E60F19
+:100BF000F11DEE0FFF1FEC51FF4F85919491089569
+:100C0000880F991F805A9040FC0185919491089516
+:100C1000880F991F80529F4FFC01859194910895F0
+:100C200026E0729FF001112444E5849FE00DF11D40
+:100C30001124E60FF11DEE0FFF1FEC51FF4F259120
+:100C40003491C9019A9581159F4110F4C901089505
+:100C5000C90190528115904128F4C9019F700E94EA
+:100C600008060895C90190538115904120F4C901E7
+:100C70009927906C0895211580E5380769F40E9442
+:100C8000A5139FEF24E34CE0915020404040E1F752
+:100C900000C000000C94E91A213080E5380731F4D7
+:100CA0008091CC0181608093CC010895C901905559
+:100CB0008115904108F050C0832F99278F70992794
+:100CC00081309105D9F4A9014370552702C0880FDE
+:100CD000991F4A95E2F79C68A90164E0440F551FEB
+:100CE0006A95E1F744275370842B952B73E0220F0C
+:100CF000331F7A95E1F7207633271DC082309105A6
+:100D000029F4922F8827816F906A08958330910586
+:100D1000A9F4A9014370552781E090E002C0880F33
+:100D2000991F4A95E2F79C6843E0220F331F4A95CA
+:100D3000E1F7207E3770822B932B08950497F1F40E
+:100D4000A9014370552781E090E002C0880F991FE8
+:100D50004A95E2F79A68E8CFC9019057811590410A
+:100D600020F4C9019F7090620895C90190588115BF
+:100D7000904120F4C9019F70906A0895203E31058A
+:100D8000E0F4203C310558F52133310509F470C0F9
+:100D900048F42932310509F464C02A32310509F4D6
+:100DA0006EC074C029333105F1F022383105D9F015
+:100DB0002533310509F44EC069C0233E310589F160
+:100DC00038F4203E3105C1F0223E3105E1F05EC02D
+:100DD000263E310569F1273E3105A9F157C0C90109
+:100DE0000E94000608958091DF0180FD02C081FF0E
+:100DF0004DC080EE90E04BC08091DF0180FFF9CFC5
+:100E000089E390E044C08091DF0182FF0EC08091B1
+:100E1000DF0184FF03C080E090E039C083EE90E002
+:100E200036C08091DF0182FFF2CF82EE90E02FC0CA
+:100E30008091DF0183FF0BC08091DF0184FDEBCF48
+:100E400087EE90E024C08091DF0183FFF5CF86EE2E
+:100E500090E01DC08091DF0185FF07C089E290E02E
+:100E600016C08091DF0185FFF9CF85E390E00FC0C8
+:100E70008091DF0186FF07C08AE290E008C0809180
+:100E8000DF0186FFF9CF81E390E001C0C9010E9434
+:100E90002E0508950895809162010895CF93DF9300
+:100EA00000D01F92CDB7DEB72091E501243019F5AF
+:100EB00023E029839B838A832093E9008FEF90911D
+:100EC000E800815095FD06C095ED9A95F1F7000078
+:100ED0008111F5CF8091E80085FF0DC040E050E022
+:100EE00063E070E0CE0101960E94B8098091E800AD
+:100EF0008E778093E8000F900F900F90DF91CF9145
+:100F00000895CF93DF9300D01F92CDB7DEB7209125
+:100F1000E501243021F522E029839B838A8383E045
+:100F20008093E9008FEF9091E800815095FD06C015
+:100F300095ED9A95F1F700008111F5CF8091E800C9
+:100F400085FF0DC040E050E063E070E0CE01019607
+:100F50000E94B8098091E8008E778093E8000F9096
+:100F60000F900F90DF91CF9108952091E5012430EB
+:100F7000F1F422E02093E9002FEF3091E8002150B6
+:100F800035FD06C035ED3A95F1F700002111F5CF9A
+:100F90002091E80025FF0BC040E050E065E070E0E4
+:100FA0000E94B8098091E8008E778093E800089548
+:100FB000CF93DF93EC018091E501843009F046C0C6
+:100FC00090910C019923D9F090910D019923B9F0DA
+:100FD0008093E9008FEF9091E800815095FD06C065
+:100FE00095E19A95F1F700008111F5CF8091E80025
+:100FF00085FF2CC040E050E060E170E017C081E068
+:101000008093E9008FEF9091E800815095FD06C034
+:1010100095ED9A95F1F700008111F5CF8091E800E8
+:1010200085FF14C040E050E068E070E0CE010E940F
+:10103000B8098091E8008E778093E80080E1FE0196
+:10104000A2E5B1E001900D928A95E1F7DF91CF9191
+:1010500008958091E401811109C00E944A0B0E9409
+:10106000A70B8091E20084608093E20008951092C3
+:10107000E401089508950C940F210E94801A0E94A3
+:1010800015210E94440E0C944A0742E061EC81E075
+:101090000E94C40A42E061EC82E00E94C40A42E07D
+:1010A00061EC83E00E94C40A42E161EC84E00C94AC
+:1010B000C40A8091E701833009F455C030F48130CF
+:1010C00071F0823009F48EC008958A3009F47AC034
+:1010D0008B3009F460C0893009F09CC020C0809139
+:1010E000E601813A09F096C08091E800877F8093FD
+:1010F000E8008091EA019091EB01892B21F060E0FA
+:1011000080E090E003C060E182E591E070E00E9441
+:10111000010A8091E8008B778093E8000895809120
+:10112000E601813209F076C08091EA019091EB01ED
+:10113000009719F0039709F06DC08091E800877F50
+:101140008093E8008091E80082FD05C08091E50170
+:101150008111F8CF5FC08091F1008093620180918E
+:10116000E8008B7753C08091E601813A09F052C0C4
+:101170008091EA019091EB01892B09F04BC080919D
+:10118000E800877F8093E8008091E80080FFFCCF33
+:1011900080910C0136C08091E6018132D9F58091B1
+:1011A000EA019091EB01892BA9F58091E800877FF6
+:1011B0008093E8000E94F90A8091E80180930C0175
+:1011C0000C94A5138091E601813221F58091E8000D
+:1011D000877F8093E8000E94F90A8091E90180935B
+:1011E000630108958091E601813AA1F48091E800BD
+:1011F000877F8093E8008091E80080FFFCCF80919A
+:1012000063018093F1008091E8008E778093E8007D
+:101210000C94F90A089584B7877F84BF88E10FB6DC
+:10122000F89480936000109260000FBE90E080E818
+:101230000FB6F89480936100909361000FBE0E94F6
+:10124000930E0E944A0B0E94A70B8091E2008460DB
+:101250008093E20078940E94220E0E94950E82E014
+:1012600091E00E943F0E0E94FD208091E5018530B3
+:1012700069F40E94431A8091E3018823B1F30E942C
+:101280006B1A882391F30E94A209EFCF0E949B0E54
+:10129000ECCF292F332723303105A9F06CF421300E
+:1012A000310509F442C02230310509F043C08DE612
+:1012B00090E020E133E042C021323105C9F0223212
+:1012C000310519F137C099278130910541F08230FD
+:1012D000910541F0892B71F5ECE0F3E005C0E4EFF6
+:1012E000F2E002C0ECEDF2E0849190E09F0126C0B4
+:1012F000643000F5E62FF0E0EE0FFF1FEE5DFE4FCD
+:101300002081318189E090E019C0643098F4E62FA3
+:10131000F0E0DF01AA0FBB1FA65EBE4F2D913C91EE
+:10132000EA5EFE4F808190E009C082E190E02DE707
+:1013300033E004C080E090E020E030E0FA01318347
+:101340002083089580E189BD82E189BD09B400FE52
+:10135000FDCF8091D8008F7D8093D8008091E000F0
+:1013600082608093E0008091E00081FDFCCF0895D1
+:10137000CF92DF92EF92FF920F931F93CF93DF9361
+:101380007C018B01EA010E941A0B811131C0209768
+:1013900031F088819981081B190BE80EF91EC12CC8
+:1013A000D12C0115110519F18091E80085FD14C0BB
+:1013B0008091E8008E778093E800209741F0888143
+:1013C00099818C0D9D1D9983888385E011C00E94B1
+:1013D0001A0B882331F30CC0F70181917F018093B0
+:1013E000F10001501109FFEFCF1ADF0ADACF80E0D8
+:1013F000DF91CF911F910F91FF90EF90DF90CF90F1
+:1014000008952091EC013091ED012617370748F03F
+:101410006115710539F42091E8002E772093E800DA
+:1014200001C0B901FC0120E061157105B9F180919D
+:10143000E501882309F440C0853009F43FC080915C
+:10144000E80083FD3DC08091E80082FF06C08091E6
+:10145000E80082FF26C080E008958091E80080FFC8
+:10146000E3CF2091F3008091F20090E0922B611580
+:10147000710551F08830910538F421912093F100E5
+:10148000615071090196F3CF21E0089709F020E03F
+:101490008091E8008E778093E800C6CF2111C7CFF6
+:1014A000D6CF8091E501882339F0853039F08091DD
+:1014B000E80083FFCCCF04C082E0089583E0089564
+:1014C00081E008952091EC013091ED012617370756
+:1014D00048F06115710539F42091E8002E772093CA
+:1014E000E80001C0B901FC0120E061157105C1F1FE
+:1014F0008091E501882309F441C0853009F440C09A
+:101500008091E80083FD3EC08091E80082FF06C024
+:101510008091E80082FF27C080E008958091E80074
+:1015200080FFE3CF2091F3008091F20090E0922BB6
+:101530006115710559F08830910540F4249120938C
+:10154000F1003196615071090196F2CF21E00897C0
+:1015500009F020E08091E8008E778093E800C5CF05
+:101560002111C6CFD5CF8091E501882339F0853090
+:1015700039F08091E80083FFCBCF04C082E008956A
+:1015800083E0089581E00895982F973058F590935F
+:10159000E900981739F07091EC002091ED0050911E
+:1015A000F00003C0242F762F50E021FF19C03091A6
+:1015B000EB003E7F3093EB003091ED003D7F3093A8
+:1015C000ED003091EB0031603093EB007093EC0054
+:1015D0002093ED005093F0002091EE0027FF07C00C
+:1015E0009F5FD3CF8F708093E90081E0089580E002
+:1015F00008958091E60187FD05C08091E80080FF95
+:101600000EC012C08091E80082FD05C08091E50106
+:101610008111F8CF08958091E8008B7708C0809100
+:10162000E5018111EACF08958091E8008E778093DB
+:10163000E80008958091E4009091E50045E620914E
+:10164000EC0020FF21C02091E80020FD21C0209166
+:10165000E501222389F0253089F02091EB0025FD5A
+:101660000FC02091E4003091E5002817390739F3C5
+:10167000415041F0C901E3CF82E0089583E008952D
+:1016800081E0089584E008952091E80022FFDFCFF3
+:1016900080E008950E94B80B0E94C00BE0EEF0E0DD
+:1016A000808181608083E8EDF0E080818F778083A6
+:1016B00019BCA7EDB0E08C918E7F8C9380818F7EDA
+:1016C00080831092E40108950F931F93CF93DF93CB
+:1016D0000E94B80B0E94C00BC8EDD0E088818F77C4
+:1016E000888388818068888388818F7D888319BCFE
+:1016F0001092E5011092E1011092E3011092E201D3
+:1017000000EE10E0F80180818B7F8083888181600A
+:10171000888342E060E080E00E94C40AE1EEF0E0ED
+:1017200080818E7F8083E2EEF0E080818160808323
+:10173000808188608083F80180818E7F80838881AA
+:1017400080618883DF91CF911F910F910895E8ED1B
+:10175000F0E080818F7E8083E7EDF0E08081816022
+:10176000808384E082BF81E08093E4010C94640B69
+:10177000E8EDF0E080818E7F80831092E200089592
+:101780001092DA001092E10008951F920F920FB6A6
+:101790000F9211242F933F934F935F936F937F93F7
+:1017A0008F939F93AF93BF93EF93FF938091E1004B
+:1017B00082FF0BC08091E20082FF07C08091E100B0
+:1017C0008B7F8093E1000E94210E8091DA0080FFE0
+:1017D0001FC08091D80080FF1BC08091DA008E7FEF
+:1017E0008093DA008091D90080FF0DC080E189BD2F
+:1017F00082E189BD09B400FEFDCF81E08093E5015F
+:101800000E94290805C019BC1092E5010E94370802
+:101810008091E10080FF19C08091E20080FF15C037
+:101820008091E2008E7F8093E2008091E2008061EF
+:101830008093E2008091D80080628093D80019BC28
+:1018400085E08093E5010E943B088091E10084FFE0
+:1018500030C08091E20084FF2CC080E189BD82E12C
+:1018600089BD09B400FEFDCF8091D8008F7D8093A3
+:10187000D8008091E1008F7E8093E1008091E200AA
+:101880008F7E8093E2008091E20081608093E2008D
+:101890008091E101882311F084E007C08091E3008A
+:1018A00087FF02C083E001C081E08093E5010E94D0
+:1018B0003D088091E10083FF29C08091E20083FF11
+:1018C00025C08091E100877F8093E10082E08093D2
+:1018D000E5011092E1018091E1008E7F8093E100AB
+:1018E0008091E2008E7F8093E2008091E20080612F
+:1018F0008093E20042E060E080E00E94C40A8091B0
+:10190000F00088608093F0000E943A08FF91EF9108
+:10191000BF91AF919F918F917F916F915F914F9107
+:101920003F912F910F900FBE0F901F9018951F920F
+:101930000F920FB60F9211242F933F934F935F9303
+:101940006F937F938F939F93AF93BF93CF93EF93B7
+:10195000FF93C091E900CF708091EC001092E900F4
+:101960008091F000877F8093F00078940E94D30CE0
+:101970001092E9008091F00088608093F000C0939D
+:10198000E900FF91EF91CF91BF91AF919F918F911E
+:101990007F916F915F914F913F912F910F900FBE6B
+:1019A0000F901F9018951F93CF93DF93CDB7DEB79D
+:1019B000AA970FB6F894DEBF0FBECDBFE6EEF1E0FA
+:1019C0008091F100819321E0EE3EF207C9F70E9479
+:1019D00059088091E80083FF1CC12091E6013091F5
+:1019E000E701832F90E08A30910508F012C1FC01D5
+:1019F000EA5AFF4F0C949722203881F0223809F0E0
+:101A000008C18091EA018F708093E9008091EB001A
+:101A100085FB882780F91092E90006C08091E201D9
+:101A20009091E301911182609091E800977F9093EB
+:101A3000E8008093F1001092F100C5C0822F8D7FE5
+:101A400009F0E7C0222319F0223061F0E2C0809152
+:101A5000E801813009F0DDC0333009F080E0809387
+:101A6000E30128C08091E801811124C02091EA019E
+:101A70002F7009F4CEC02093E9008091EB0080FF25
+:101A800019C08091EB00333011F4806211C0806185
+:101A90008093EB0081E090E0022E01C0880F0A9451
+:101AA000EAF78093EA001092EA008091EB008860E8
+:101AB0008093EB001092E9008091E800877F86C058
+:101AC0002111A7C01091E8011F778091E300807871
+:101AD000812B8093E3008091E800877F8093E8006A
+:101AE0000E94F90A8091E80080FFFCCF8091E3001A
+:101AF00080688093E300112311F083E001C082E04D
+:101B00008093E50186C02058223008F082C0809181
+:101B1000E8019091E9018C3D23E0920779F583E09B
+:101B20008A838AE289834FB7F894DE01139620E016
+:101B30003EE051E2E32FF0E050935700E49120FFA4
+:101B400003C0E295EF703F5FEF708E2F90E0EA30B8
+:101B500010F0C79601C0C0968D939D932F5F2431DE
+:101B600049F74FBF8091E800877F8093E8006AE2E1
+:101B700070E0CE0101960E94010A14C0AE014F5FD1
+:101B80005F4F6091EA010E944909009709F441C042
+:101B90002091E800277F2093E800BC0189819A8189
+:101BA0000E94620A8091E8008B778093E80031C040
+:101BB000203879F58091E800877F8093E800809154
+:101BC000E1018093F1008091E8008E778093E80036
+:101BD0000E94F90A1EC021111CC09091E8019230A8
+:101BE000C0F48091E800877F8093E8009093E10142
+:101BF0000E94F90A8091E101811104C08091E30003
+:101C000087FF02C084E001C081E08093E5010E946B
+:101C100045088091E80083FF0AC08091E800877F33
+:101C20008093E8008091EB0080628093EB00AA969D
+:101C30000FB6F894DEBF0FBECDBFDF91CF911F91DD
+:101C400008950895CF938091E5018823B1F08091A4
+:101C5000E9008F709091EC0090FF02C090E801C005
+:101C600090E0C92FC82B1092E9008091E80083FD15
+:101C70000E94D30CCF70C093E900CF910895909348
+:101C80006901809368010895E0916801F09169010C
+:101C9000309721F00190F081E02D099480E00895C3
+:101CA000E0916801F0916901309721F00280F381A1
+:101CB000E02D09940895E0916801F0916901309751
+:101CC00021F00480F581E02D0994089520916601AA
+:101CD000309167018217930771F0909367018093A9
+:101CE0006601E0916801F0916901309721F006806A
+:101CF000F781E02D099408952091640130916501E8
+:101D00008217930771F09093650180936401E091CD
+:101D10006801F0916901309721F00084F185E02D90
+:101D20000994089508950C94920E0E94861A0E94B8
+:101D300019040C944C1BCF92DF92EF92FF920F93F9
+:101D40001F93CF93DF93CDB7DEB72B970FB6F894E1
+:101D5000DEBF0FBECDBF0E9436043BE6E32E31E06E
+:101D6000F32E00E010E0C02E802F0E942705F7011F
+:101D7000D1907F01D826B1F40F5F1F4F0E301105AF
+:101D800091F78FEF89838A831B820E948F1A81606B
+:101D9000782F9D838C8349815A816B818D810E942C
+:101DA0003E0F41C09091CC0191FF04C08B870E94EF
+:101DB0002D058B8520E030E04D2D50E0922FBA01AB
+:101DC000022E02C0759567950A94E2F760FF25C060
+:101DD0002E83CF82EE24E394F12C02C0EE0CFF1C84
+:101DE0009A95E2F790E08E219F2121E0892B09F45A
+:101DF00020E028870E948F1A8160782F9A87898730
+:101E00004E815F8168858A850E943E0FF801E55901
+:101E1000FE4F80818E25808306C02F5F3F4F263086
+:101E2000310561F6A9CF0E94301E10916A010E940F
+:101E3000440E1817A1F00E94440E80936A012B965D
+:101E40000FB6F894DEBF0FBECDBFDF91CF911F91CB
+:101E50000F91FF90EF90DF90CF900C944A072B9654
+:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB
+:101E70000F91FF90EF90DF90CF900895CF93DF9375
+:101E8000CDB7DEB72B970FB6F894DEBF0FBECDBF30
+:101E90004F83588769877A878B87DE01119686E0A2
+:101EA000FD0111928A95E9F785E0FE0137960190D0
+:101EB0000D928A95E1F749815A816B817C818D81F0
+:101EC0009E810E9471162B960FB6F894DEBF0FBE4E
+:101ED000CDBFDF91CF910895CF93C82F882309F408
+:101EE000C1C0823859F40E94440E81FDBBC089E311
+:101EF0000E9410190E94CA1989E30CC0833879F432
+:101F00000E94440E80FDAEC083E50E9410190E941D
+:101F1000CA1983E50E945019CF910C94CA198438CC
+:101F200059F40E94440E82FD9DC087E40E9410195E
+:101F30000E94CA1987E4EECF8CEF8C0F813A48F4E7
+:101F40008C2F0E94652081118DC08C2F0E9410194A
+:101F5000E3CF80E28C0F883048F4C77081E001C085
+:101F6000880FCA95EAF70E949119D6CF8BE58C0F9E
+:101F7000833078F4C53A29F0C63A31F482E890E02B
+:101F800005C081E890E002C083E890E0CF910C9416
+:101F9000660E88E58C0F833108F064C0C83A39F1C9
+:101FA000C93A41F1CA3A49F1CB3A51F1CC3A59F127
+:101FB000CD3A61F1C03B69F1CE3A71F1CF3A79F196
+:101FC000C13B81F1C23B89F1C33B91F1C43B99F123
+:101FD000C53BA1F1C63BA9F1C73BB1F1C83BB9F183
+:101FE000C93BC1F1CA3BC9F58AE292E038C082EE32
+:101FF00090E035C089EE90E032C08AEE90E02FC0CC
+:1020000085EB90E02CC086EB90E029C087EB90E058
+:1020100026C08CEC90E023C08DEC90E020C083E8DB
+:1020200091E01DC08AE891E01AC082E991E017C0F2
+:1020300084E991E014C081E292E011C083E292E071
+:102040000EC084E292E00BC085E292E008C086E216
+:1020500092E005C087E292E002C080E090E0CF917C
+:102060000C947C0ECF910895882309F44BC08238DC
+:1020700059F40E94440E81FF45C089E30E94101963
+:102080000E94CA1989E30CC0833871F40E94440E7F
+:1020900080FF38C083E50E9410190E94CA1983E5A9
+:1020A0000E9450190C94CA19843859F40E94440EA5
+:1020B00082FF28C087E40E9410190E94CA1987E491
+:1020C000EFCF9CEF980F913A58F390E2980F983029
+:1020D00050F4877091E001C0990F8A95EAF7892F33
+:1020E0000E949719DFCF9BE5980F933020F480E092
+:1020F00090E00C94660E885A833120F480E090E0E2
+:102100000C947C0E0895882321F00E9491190C9460
+:10211000CA190895882321F00E9497190C94CA19AE
+:102120000895CF92DF92EF92FF920F931F93CF9378
+:10213000DF93CDB7DEB728970FB6F894DEBF0FBE9A
+:10214000CDBF8C0185E0F801DE01119601900D9262
+:102150008A95E1F7F80140813181F280258122954D
+:102160002F7083819481892B31F03F3F31F481E0DE
+:102170004F3F19F403C081E001C080E080FDC4C27C
+:1021800049833A8389819A812F830E94CE189E8346
+:1021900088870E94CD180E94A0174E81E42FE295F7
+:1021A000EF70F0E0E05AFF4F2F8168850C94972282
+:1021B000842F807F142F1F70882311F01295107FB9
+:1021C000FF2059F0112309F454C2812F68870E941F
+:1021D000A1190E94CA1968854CC2862F0E9434102A
+:1021E000112309F491C2812F0E94A71928960FB6D6
+:1021F000F894DEBF0FBECDBFDF91CF911F910F913D
+:10220000FF90EF90DF90CF900C94CA19342F307F5D
+:10221000842F8F70303211F08295807F662319F001
+:10222000613019F12BC0FF20B1F0222309F493C1D2
+:10223000213009F090C128960FB6F894DEBF0FBE8A
+:10224000CDBFDF91CF911F910F91FF90EF90DF9065
+:10225000CF900C94B119222319F0213009F454C203
+:102260008E830E94B4198E8189C1FF2021F0223013
+:1022700008F04AC270C1211147C280C1FF2021F07D
+:10228000222309F468C1F5C1222309F477C105C2EC
+:10229000242F26952695237030E02115310521F055
+:1022A00021303105C9F030C2FF2021F0862F942F54
+:1022B000937002C080E090E028960FB6F894DEBFDD
+:1022C0000FBECDBFDF91CF911F910F91FF90EF9087
+:1022D000DF90CF900C94660EFF2021F0862F942F74
+:1022E000937002C080E090E028960FB6F894DEBFAD
+:1022F0000FBECDBFDF91CF911F910F91FF90EF9057
+:10230000DF90CF900C947C0E862FFF2019F00E9456
+:10231000381D02C00E94A01D28960FB6F894DEBF9B
+:102320000FBECDBFDF91CF911F910F91FF90EF9026
+:10233000DF90CF900C94251E842F837009F076C017
+:10234000F110E2C1262F229526952770220F220F29
+:10235000862F8F70C82ED12CE12CF12C022E04C0B8
+:10236000CC0CDD1CEE1CFF1C0A94D2F764FF10C0DD
+:102370006FE070E080E090E004C0660F771F881F78
+:10238000991F2A95D2F7609570958095909503C016
+:1023900060E070E0CB01242F269526952370422F14
+:1023A00050E042305105D1F04330510559F16C29CC
+:1023B0007D298E299F294130510541F128960FB67C
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B
+:1023D000FF90EF90DF90CF900C94C5176C297D296A
+:1023E0008E299F2928960FB6F894DEBF0FBECDBF69
+:1023F000DF91CF911F910F91FF90EF90DF90CF90E1
+:102400000C94DF170E94C517C701B60128960FB6B6
+:10241000F894DEBF0FBECDBFDF91CF911F910F911A
+:10242000FF90EF90DF90CF900C94AB17FF2019F046
+:10243000842F817001C08695882309F465C1262FF9
+:10244000229526952770220F220F862F8F70C82E77
+:10245000D12CE12CF12C022E04C0CC0CDD1CEE1C86
+:10246000FF1C0A94D2F764FF10C06FE070E080E0B8
+:1024700090E004C0660F771F881F991F2A95D2F736
+:10248000609570958095909503C060E070E0CB01F9
+:10249000242F269526952370422F50E04230510577
+:1024A000D1F04330510559F16C297D298E299F299E
+:1024B0004130510541F128960FB6F894DEBF0FBEAA
+:1024C000CDBFDF91CF911F910F91FF90EF90DF90E3
+:1024D000CF900C9499186C297D298E299F292896D4
+:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125
+:1024F0000F91FF90EF90DF90CF900C94B3180E9453
+:102500009918C701B60128960FB6F894DEBF0FBE22
+:10251000CDBFDF91CF911F910F91FF90EF90DF9092
+:10252000CF900C947F18603FC9F118F4603E50F4CE
+:102530009BC0623F09F460C008F44AC0633F09F4DD
+:102540006FC092C0162F1F70842F8F71FF2099F0DB
+:102550000E941818812F28960FB6F894DEBF0FBE80
+:10256000CDBFDF91CF911F910F91FF90EF90DF9042
+:10257000CF900C9483100E943918812F28960FB6A3
+:10258000F894DEBF0FBECDBFDF91CF911F910F91A9
+:10259000FF90EF90DF90CF900C948A10FF20A1F075
+:1025A0002111B2C0842F8F7128960FB6F894DEBF28
+:1025B0000FBECDBFDF91CF911F910F91FF90EF9094
+:1025C000DF90CF900C945E18223008F09DC0EACFC7
+:1025D000FF20A1F0842F8F7128960FB6F894DEBFEC
+:1025E0000FBECDBFDF91CF911F910F91FF90EF9064
+:1025F000DF90CF900C941818FF2061F3842F8F7117
+:1026000028960FB6F894DEBF0FBECDBFDF91CF91F5
+:102610001F910F91FF90EF90DF90CF900C9439189D
+:10262000FF2091F0842F8F7128960FB6F894DEBFAB
+:102630000FBECDBFDF91CF911F910F91FF90EF9013
+:10264000DF90CF900C94031828960FB6F894DEBF55
+:102650000FBECDBFDF91CF911F910F91FF90EF90F3
+:10266000DF90CF900C94F917FF20A1F0222309F4FA
+:10267000B1CF862F28960FB6F894DEBF0FBECDBF20
+:10268000DF91CF911F910F91FF90EF90DF90CF904E
+:102690000C946C0F222309F4B1CF862F28960FB625
+:1026A000F894DEBF0FBECDBFDF91CF911F910F9188
+:1026B000FF90EF90DF90CF900C9434104F70C801D2
+:1026C0000E94AB0228960FB6F894DEBF0FBECDBFB6
+:1026D000DF91CF911F910F91FF90EF90DF90CF90FE
+:1026E0000C941E174F70C80128960FB6F894DEBFE1
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053
+:10270000DF90CF900C94ED0528960FB6F894DEBFBD
+:102710000FBECDBFDF91CF911F910F91FF90EF9032
+:10272000DF90CF9008950E94AE190E9483190E94F5
+:10273000CA190E94D11E0E94251E80E090E00E94CE
+:10274000660E80E090E00C947C0E0E949E190C9422
+:1027500093130E94CE18292F22952F7030E02C3031
+:1027600031054CF42A3031056CF422503109223005
+:10277000310590F407C02C30310551F02F30310570
+:1027800039F00AC0803E10F0803F31F481E00895B6
+:1027900093FB882780F9089580E00895CF93DF9315
+:1027A00000D000D01F92CDB7DEB70F900F900F90E2
+:1027B0000F900F90DF91CF910895CF93DF9300D0CA
+:1027C00000D000D0CDB7DEB726960FB6F894DEBFA6
+:1027D0000FBECDBFDF91CF9108951F93CF93DF93AD
+:1027E000C091790116E080917A01C81799F0D0E084
+:1027F0001C9FF0011D9FF00D1124E558FE4F4081F4
+:10280000518162817381848195810E94DD132196BB
+:10281000C770E9CFDF91CF911F9108954091AB012F
+:102820005091AC016091AD017091AE018091AF010A
+:102830009091B0010C94DD13CF938091B0018295FB
+:102840008F7009F05FC08091AD01882309F45AC0F0
+:1028500020917901A0917A016091AB017091AC0156
+:102860008091AE019091AF0131E06F3F09F030E00F
+:10287000B32FC6E02A1709F445C0009721F07F3F27
+:1028800021F44B2F03C041E001C040E030E040FDA7
+:1028900035C0C29FF001C39FF00D1124E558FE4FD3
+:1028A000418174132BC04081641328C042814111BF
+:1028B00025C0438154814817590710F441505109EC
+:1028C000481B590B483C5105C8F48091B0018F70EA
+:1028D00080618093B00186E0829FF001839FF00DBC
+:1028E0001124E058FE4F80818F70806180838BEAD5
+:1028F00091E00E949110CF910C94ED132F5F3F4F08
+:102900002770B8CFCF910895CF92DF92EF92FF92C8
+:102910000F931F93CF93DF93CDB7DEB762970FB6B8
+:10292000F894DEBF0FBECDBF8C0185E0F801DE015B
+:102930001D9601900D928A95E1F7D8014C91119660
+:102940005C91119712966C9112971396ED90FC90F2
+:1029500014977091AB01E091AC012091AE013091E0
+:10296000AF012115310531F0EF3F31F481E07F3FB8
+:1029700019F403C081E001C080E0B82FB170CB2E04
+:1029800080FD6CC1D090AD01DD2009F4F5C0F0915F
+:10299000B001E216F30638F0C701821B930B883CA6
+:1029A000910548F09BC0209530952E0D3F1D283C89
+:1029B000310508F093C08F2F807F09F052C0E513D6
+:1029C00014C0741312C0D62E61110FC0FF70F061D5
+:1029D000F093B0010E940E148BEA91E00E949110D6
+:1029E0008091B001F80185836CC1EF2831F05F3F21
+:1029F00031F481E04F3F19F403C081E001C080E071
+:102A000080FD03C081E0862701C080E0F82FF170CF
+:102A1000FF2E80FF1CC08091790120917A0136E061
+:102A2000821709F428C190E0389FF001399FF00D1A
+:102A30001124E558FE4F7181571306C0708147136A
+:102A400003C07281671303C001968770E9CFD62E49
+:102A5000662309F436C18091B00181608093B00192
+:102A600053C0E51308C0741306C0611104C0D80137
+:102A70001596FC93AEC04D875E878D859E856A8BCB
+:102A80000E94A9136A89882329F1D62E662311F1A1
+:102A90002091B001822F82958F7090E002970CF404
+:102AA00060C08091AB019091AC0198878F831986AB
+:102AB000FB86EA862C87CE01079651C0E51731F1D7
+:102AC0004D875E878D859E856A8B0E94A9136A89D2
+:102AD00081112EC0C8010E949110A4C08F2F807F49
+:102AE00069F77E2DF98AE88A89890E94CE138BEADC
+:102AF00091E00E949110EBEAF1E086E0DF011D9287
+:102B00008A95E9F70E940E14D12CDBC07413D8CF3C
+:102B10006111D6CFD8011596FC93C8010E9491107F
+:102B2000EBEAF1E086E0DF011D928A95E9F7C9C082
+:102B3000D62E662379F22091B001822F82958F7074
+:102B400090E0029774F08091AB019091AC019A8370
+:102B500089831B82FD82EC822E83CE0101960E9426
+:102B6000911086E0F801ABEAB1E001900D928A95F0
+:102B7000E1F70E941C146FC0E216F30628F0C701AB
+:102B8000821B930B9C0104C0209530952E0D3F1D98
+:102B9000283C310508F052C0D62E662309F49ACF9E
+:102BA000E5132CC074132AC08091B00180FD1DC0B4
+:102BB000982F92959F70C9F0D80115968C93159710
+:102BC0009F3039F09F5F9295907F8F70892B15967B
+:102BD0008C93C8010E94911086E0F801ABEAB1E045
+:102BE00001900D928A95E1F736C086E0F801ABEAD4
+:102BF000B1E001900D928A95E1F763C04D875E8741
+:102C00008D859E850E94A913882379F086E0F801BE
+:102C1000ABEAB1E001900D928A95E1F70E941C1495
+:102C20000E940E14DD24D3944CC08091B0018160C9
+:102C30008093B001C8010E94911043C07E2DF98A93
+:102C4000E88A89890E94CE13EBEAF1E086E0DF0191
+:102C50001D928A95E9F70E940E1433C0662309F489
+:102C600039CF4D875E878D859E850E94A913882365
+:102C700009F430CFCBCF4D875E878D859E850E942E
+:102C8000CE18292F22952F7030E0223031052CF4F8
+:102C90009F7041F0811106C00CC0243031052CF426
+:102CA0009F7049F4805E883020F0C8010E94911026
+:102CB000CF2CDC2C06C0D80115969C91907F91F703
+:102CC000F8CF8D2D62960FB6F894DEBF0FBECDBF44
+:102CD000DF91CF911F910F91FF90EF90DF90CF90F8
+:102CE00008951F93CF93DF93CDB7DEB72C970FB620
+:102CF000F894DEBF0FBECDBF4F83588769877A87B0
+:102D00008B879C87CE0107960E9484148823C1F08C
+:102D10002F8138858A859B85892B31F03F3F11F0C3
+:102D200080E003C02F3FE1F781E0811147C04F8170
+:102D3000588569857A858B859C850E94DD133EC008
+:102D400086E0FE013796DE01119601900D928A957C
+:102D5000E1F7FF81E8854A855B854115510531F032
+:102D6000EF3F31F481E0FF3F19F403C081E001C07F
+:102D700080E080FD23C020917A0130E0C9010196F6
+:102D8000877099276091790170E086179707F1F1B4
+:102D9000F983EA835D834C8396E0929FD001939FF1
+:102DA000B00D1124A558BE4FFE01319601900D9231
+:102DB0009A95E1F780937A010E94ED1316E08091D5
+:102DC000790190917A01891779F1189FC001112436
+:102DD00085589E4F0E948414882331F1E091790137
+:102DE0001E9FF0011124E558FE4F40815181628100
+:102DF0007381848195810E94DD138091790190E037
+:102E000001968770992780937901D9CF0E94A513E5
+:102E100010927A0110927901EBEAF1E086E0DF018D
+:102E20001D928A95E9F7CACF2C960FB6F894DEBFAB
+:102E30000FBECDBFDF91CF911F910895EF92FF920A
+:102E40000F931F93CF93DF939C01009709F471C0F8
+:102E5000F12CEE24E394E9012196F9018491843761
+:102E600040F4843008F056C0813081F0823021F186
+:102E700060C0853709F449C0C0F19CE7980F9037CE
+:102E800008F057C08F770E94341046C089010E5F4A
+:102E90001F4FFE01849190E2980F983050F4877094
+:102EA000FE2D01C0FF0F8A95EAF78F2F0E94A1190E
+:102EB00015C00E946C0F14C089010E5F1F4FFE01E8
+:102EC000849190E2980F983068F48770FE2D01C0CD
+:102ED000FF0F8A95EAF78F2F0E94A7190E94CA193F
+:102EE000E8011AC00E943410FBCF2E5F3F4FFE0155
+:102EF000C491CC2341F08FE99FE00197F1F700C026
+:102F00000000C150F6CFE90107C0FE01F490E901CD
+:102F1000229602C00E946C0F8F2D882341F0EFE9AA
+:102F2000FFE03197F1F700C000008150F6CF9E011D
+:102F300092CFDF91CF911F910F91FF90EF90089565
+:102F400008956093B5017093B6018093B701909393
+:102F5000B8010C9493130F931F930091B501109136
+:102F6000B6012091B7013091B801062B172B282B01
+:102F7000392B0093B5011093B6012093B70130931C
+:102F8000B8011F910F910C9493130F931F9300910D
+:102F9000B5011091B6012091B7013091B801062317
+:102FA0001723282339230093B5011093B6012093EA
+:102FB000B7013093B8011F910F910C9493130F93A5
+:102FC0001F930091B5011091B6012091B701309186
+:102FD000B80106271727282739270093B501109332
+:102FE000B6012093B7013093B8011F910F910C9453
+:102FF00093131092B1011092B2011092B30110928A
+:10300000B4010C94931341E050E060E070E004C020
+:10301000440F551F661F771F8A95D2F74093B10161
+:103020005093B2016093B3017093B4010C94931365
+:1030300041E050E060E070E004C0440F551F661F9F
+:10304000771F8A95D2F78091B1019091B201A0913A
+:10305000B301B091B401842B952BA62BB72B809391
+:10306000B1019093B201A093B301B093B4010C9459
+:10307000931341E050E060E070E004C0440F551F3E
+:10308000661F771F8A95D2F7409550956095709589
+:103090008091B1019091B201A091B301B091B401BE
+:1030A00084239523A623B7238093B1019093B20183
+:1030B000A093B301B093B4010C94931341E050E09A
+:1030C00060E070E004C0440F551F661F771F8A95AB
+:1030D000D2F78091B1019091B201A091B301B0916A
+:1030E000B40184279527A627B7278093B101909331
+:1030F000B201A093B301B093B4010C9493130F9356
+:103100001F930091B1011091B2012091B301309150
+:10311000B401062B172B282B392B0093B1011093E8
+:10312000B2012093B3013093B4011F910F910C941D
+:1031300093130F931F930091B1011091B20120914D
+:10314000B3013091B40106231723282339230093B8
+:10315000B1011093B2012093B3013093B4011F91D8
+:103160000F910C9493130F931F930091B101109141
+:10317000B2012091B3013091B40106271727282707
+:1031800039270093B1011093B2012093B30130931A
+:10319000B4011F910F910C9493130895CF92DF9275
+:1031A000EF92FF920F931F93CF93DF93EC01C090A8
+:1031B000B501D090B601E090B701F090B8018091D0
+:1031C000B1019091B201A091B301B091B401C82AAC
+:1031D000D92AEA2AFB2A0FE110E0B701A601002E46
+:1031E00004C076956795579547950A94D2F740FFA6
+:1031F00007C0BE01802F0E9410068130910539F46E
+:103200000150110950F7BE0180E00E941006DF91C5
+:10321000CF911F910F91FF90EF90DF90CF90089585
+:1032200090910C019923D9F090910D019923B9F057
+:10323000982F9695969596959F3088F5E0910E017A
+:10324000F0910F01E90FF11D877021E030E001C01E
+:10325000220F8A95EAF78181822B8183089540911C
+:103260000E0150910F0120E030E09FEFFA01E20FD4
+:10327000F31F6281681799F09F3F19F4611101C033
+:10328000922F2F5F3F4F2E30310581F79F3F39F04E
+:10329000FA01E90FF11D97FDFA95828308950895CB
+:1032A00090910C019923E1F090910D019923C1F0C7
+:1032B000982F9695969596959F3020F5E0910E0162
+:1032C000F0910F01E90FF11D877021E030E001C09E
+:1032D000220F8A95EAF7209581812823218308957A
+:1032E00040910E0150910F0120E030E0FA01E20F11
+:1032F000F31F9281981301C012822F5F3F4F2E302F
+:103300003105A1F7089581E090E0E0910E01F09180
+:103310000F01E80FF91F1082019680319105A9F77E
+:1033200008959091CB01982B9093CB0108958095AF
+:103330009091CB0198239093CB0108951092CB01EB
+:1033400008959091CA01982B9093CA010895809591
+:103350009091CA0198239093CA0108951092CA01CE
+:1033600008958093B90108951092B901089540918C
+:103370000E0150910F0120E030E080E0FA01E20FF1
+:10338000F31F918191118F5F2F5F3F4F2F303105D8
+:10339000A9F70895E0910E01F0910F018091CB0102
+:1033A0008083E0910E01F0910F0180819091CA011C
+:1033B000892B80839091B901992361F0E0910E01EE
+:1033C000F0910F018081892B80830E94B7198111B0
+:1033D0001092B90180910E0190910F010C94500E42
+:1033E000CF92DF92EF92FF920F931F936C01EE2426
+:1033F000FF24C114D104E104F10421F46B017C0128
+:1034000080E001C080E133272F2D1E2D0D2D0115E9
+:1034100011052105310519F0885F680179019701CF
+:103420008601A4E03695279517950795AA95D1F7BB
+:10343000011511052105310519F08C5F680179012D
+:1034400097018601F2E03695279517950795FA952D
+:10345000D1F7011511052105310519F08E5F6801BD
+:103460007901B701A6017695679557954795452B44
+:10347000462B472B09F08F5F1F910F91FF90EF9024
+:10348000DF90CF9008958091E501843009F110928A
+:10349000CD0120E488E190E00FB6F894A8958093E0
+:1034A00060000FBE2093600083B7817F846083BF7C
+:1034B00083B7816083BF7894889583B78E7F83BFFD
+:1034C00088E10FB6F89480936000109260000FBE00
+:1034D000089508950895CF930E94691A0E943604B2
+:1034E0000E946A1AC0E08C2F0E942705811105C036
+:1034F000CF5FCE30C1F780E001C081E0CF91089569
+:103500000E94A5130E94440E0C944A0782E084BDD9
+:1035100093E095BD9AEF97BD80936E0008952FB705
+:10352000F8948091CE019091CF01A091D001B091FB
+:10353000D1012FBF0895CF92DF92EF92FF920F93A8
+:103540001F932FB7F8944091CE015091CF01609115
+:10355000D0017091D1012FBF6A017B01EE24FF24BD
+:103560008C0120E030E0C016D106E206F30610F42C
+:1035700041505109481B590BCA011F910F91FF90EF
+:10358000EF90DF90CF9008951F920F920FB60F9299
+:1035900011248F939F93AF93BF938091CE0190910D
+:1035A000CF01A091D001B091D1010196A11DB11D13
+:1035B0008093CE019093CF01A093D001B093D1011D
+:1035C000BF91AF919F918F910F900FBE0F901F9061
+:1035D00018950E944A0BF8942FEF87EA91E6215044
+:1035E00080409040E1F700C0000087E090EBDC01F4
+:1035F0008093EE019093EF01A093F001B093F1015D
+:103600002CE088E190E00FB6F894A89580936000D4
+:103610000FBE20936000FFCFEF92FF920F931F9396
+:10362000CF93DF93E82EF12C8F2D0E942705C0E069
+:10363000D0E0082F10E098010C2E02C03595279598
+:103640000A94E2F720FD05C02196C630D10599F70E
+:1036500009C06C2F7F2D80E00E94EE05E812F4CFA8
+:1036600081E005C0F3948EE0F812DECF80E0DF91B8
+:10367000CF911F910F91FF90EF900895CF93C82F96
+:103680008CE20E940C1B882321F08C2FCF910C948C
+:103690000C1B80E0CF910895CF930E94911C811163
+:1036A00002C00E94771CC5E6C15049F00E94360452
+:1036B0008FE39CE90197F1F700C00000F5CF89E2A4
+:1036C0000E943E1B811111C18AE20E943E1B8111A2
+:1036D0000E94771C85E00E943E1B81110E94E91A1E
+:1036E0000E949C1C8093CC0187E00E943E1B882393
+:1036F00099F18BE10E943E1B882351F09091CC01FF
+:1037000091FB882780F921E0822780FB91F922C074
+:103710008EE00E943E1B882351F09091CC0192FBD9
+:10372000882780F921E0822780FB92F913C080E18D
+:103730000E943E1B9091CC01882341F093FB882787
+:1037400080F921E0822780FB93F904C0892F8095BE
+:1037500080FB90F99093CC018091CC010E94A01C39
+:103760000E94AE1C8093DF0180EE0E943E1B8823E6
+:1037700041F08091DF01982F909590FB80F9809324
+:10378000DF0189E30E943E1B882359F09091DF01FD
+:1037900091FB882780F921E0822780FB91F99093A3
+:1037A000DF0182EE0E943E1B882359F09091DF01D9
+:1037B00092FB882780F921E0822780FB92F9909381
+:1037C000DF0186EE0E943E1B882359F09091DF01B5
+:1037D00093FB882780F921E0822780FB93F990935F
+:1037E000DF0183EE0E943E1B882359F09091DF0198
+:1037F00094FB882780F921E0822780FB94F990933D
+:10380000DF0185E30E943E1B882359F09091DF0180
+:1038100095FB882780F921E0822780FB95F990931A
+:10382000DF0181E30E943E1B882359F09091DF0164
+:1038300096FB882780F921E0822780FB96F99093F8
+:10384000DF0181E10E943E1B882359F09091DF0146
+:1038500097FB882780F921E0822780FB97F99093D6
+:10386000DF018091DF010E94B21C8091DF0187FBA4
+:10387000882780F980930D0187E20E943E1BC82FA4
+:103880008EE10E943E1B8111C2608FE10E943E1BAF
+:103890008111C46080E20E943E1B8111C86081E2F8
+:1038A0000E943E1B8111C06182E20E943E1B811179
+:1038B000C06283E20E943E1B8111C06484E20E94C8
+:1038C0003E1B882311F0C06802C0CC2329F08C2F46
+:1038D0000E94A91C6C2F03C00E94A51C682F70E0D9
+:1038E00080E090E0CF910C94A117CF9108956DEEF8
+:1038F0007EEF80E090E00E94CD2260E082E090E0E8
+:103900000E94BF2260E083E090E00E94BF2260E05E
+:1039100084E090E00E94BF2260E085E090E00C949B
+:10392000BF2280E090E00E94B92221E08D3E9E4FB0
+:1039300009F020E0822F089582E090E00C94B122FB
+:10394000682F82E090E00C94BF2283E090E00C941A
+:10395000B122682F83E090E00C94BF2284E090E0D5
+:103960000C94B122682F84E090E00C94BF228091E7
+:10397000D40180FF0BC06091130185E0689FB00106
+:10398000112475956795759567952AC081FF09C0C3
+:103990006091130185E0689FB001112475956795CA
+:1039A0001FC082FF07C06091130185E0689FB001CE
+:1039B000112416C04091D5014423C9F06091120131
+:1039C000461788F72091130185E0289F9001112464
+:1039D000429FC001439F900D112470E00E948322FA
+:1039E0006038710540F46115710539F002C065E079
+:1039F00070E0862F08958FE7089581E00895809103
+:103A0000D40180FF08C06091110170E07595679541
+:103A10007595679521C081FF06C06091110170E026
+:103A20007595679519C082FF04C06091110170E01F
+:103A300010C08091D5018823C1F0609110018617D4
+:103A4000A0F790911101989FC001112470E00E948D
+:103A500083226038710528F46115710521F0862FE5
+:103A600008958FE7089581E0089561E070E0F4CF54
+:103A7000803F21F40E94B71C819504C0813F29F446
+:103A80000E94B71C8093D8010895823F21F40E94C0
+:103A9000B71C819504C0833F29F40E94B71C809312
+:103AA000D7010895893F19F40E94FF1C05C08A3F81
+:103AB00031F40E94FF1C81958093D90108958B3FBA
+:103AC00021F40E94FF1C819504C08C3F29F40E94C0
+:103AD000FF1C8093DA010895843F21F48091D60180
+:103AE000816017C0853F21F48091D601826011C0AA
+:103AF000863F21F48091D60184600BC0873F21F47A
+:103B00008091D601886005C0883F31F48091D6014C
+:103B100080618093D60108958D3F21F48091D40176
+:103B200081600BC08E3F21F48091D401826005C07A
+:103B30008F3F29F48091D40184608093D40108954B
+:103B4000803F39F48091D80187FF6CC01092D80172
+:103B500069C0813F29F48091D8011816BCF362C076
+:103B60009091D701823F29F497FF5CC01092D70152
+:103B700059C0833F19F41916CCF354C0893F41F45E
+:103B80008091D90118160CF04DC01092D9014AC08D
+:103B90008A3F29F48091D90187FF44C0F6CF8B3F3B
+:103BA00039F48091DA0187FF3DC01092DA013AC002
+:103BB0008C3F29F48091DA011816BCF333C0843F9E
+:103BC00021F48091D6018E7F17C0853F21F480912A
+:103BD000D6018D7F11C0863F21F48091D6018B7F65
+:103BE0000BC0873F21F48091D601877F05C0883FB5
+:103BF00031F48091D6018F7E8093D60113C08D3F22
+:103C000021F48091D4018E7F0BC08E3F21F48091EE
+:103C1000D4018D7F05C08F3F29F48091D4018B7F23
+:103C20008093D4018091D70181110EC08091D80179
+:103C300081110AC08091D901811106C08091DA01F9
+:103C4000811102C01092D501089586ED91E00E9485
+:103C50005B0E0E948F1A9093D3018093D201089536
+:103C60001F93CF93DF938091D2019091D3010E9453
+:103C70009B1A4091D501442321F02091140130E09A
+:103C800006C0209115015AE0259F9001112482174A
+:103C9000930708F482C08091D7011091D801D09188
+:103CA000D901C091DA01811107C0111105C0D111EC
+:103CB00003C0CC2309F471C04F3F19F04F5F40930C
+:103CC000D501181624F40E94B71C8093D701809167
+:103CD000D70187FF05C00E94B71C81958093D7014B
+:103CE000111624F40E94B71C8093D8018091D8014A
+:103CF00087FF05C00E94B71C81958093D801609111
+:103D0000D701662339F11091D801112319F17727D2
+:103D100067FD7095872F972F0E94942123E333E34B
+:103D200043E35FE30E94F8210E9461216093D70181
+:103D3000612F772767FD7095872F972F0E94942119
+:103D400023E333E343E35FE30E94F8210E94612110
+:103D50006093D8011D1624F40E94FF1C8093D901A2
+:103D60008091D90187FF05C00E94FF1C8195809337
+:103D7000D9011C1624F40E94FF1C8093DA01809163
+:103D8000DA0187FF05C00E94FF1C81958093DA014C
+:103D9000DF91CF911F910C94251EDF91CF911F9140
+:103DA0000895E6EDF1E085E0DF011D928A95E9F7DF
+:103DB0001092D5011092D4010895833081F128F436
+:103DC000813059F08230D1F00895853009F449C02E
+:103DD000B8F1863009F456C0089520911501862F58
+:103DE00090E0820F911D8F3F910520F4620F609348
+:103DF000150108958FEF8093150108952091140106
+:103E0000862F90E0820F911D8F3F910520F4620F65
+:103E10006093140108958FEF809314010895209109
+:103E20001301862F90E0820F911D8F3F910520F4A2
+:103E3000620F6093130108958FEF8093130108952B
+:103E400020911201862F90E0820F911D8F3F9105E6
+:103E500020F4620F6093120108958FEF8093120196
+:103E6000089520911101862F90E0820F911D8F3FC0
+:103E7000910520F4620F6093110108958FEF8093F4
+:103E80001101089520911001862F90E0820F911D5D
+:103E90008F3F910520F4620F6093100108958FEF1A
+:103EA000809310010895833011F128F4813049F096
+:103EB000823091F00895853081F120F18630C1F192
+:103EC000089580911501681720F4861B80931501D1
+:103ED000089510921501089580911401681720F437
+:103EE000861B809314010895109214010895809107
+:103EF0001301681720F4861B809313010895109214
+:103F00001301089580911201681720F4861B809395
+:103F100012010895109212010895809111016817FD
+:103F200020F4861B809311010895109211010895C9
+:103F300080911001681720F4861B8093100108956A
+:103F40001092100108958D3109F442C020F58E3091
+:103F500009F479C070F4873009F45EC020F486302B
+:103F600009F442C033C08830D1F18B3009F4A7C0C6
+:103F70002DC0863109F4A3C038F4803109F46DC036
+:103F8000813109F47BC022C0893109F498C08B319A
+:103F900009F44FC01BC0853309F479C048F4873257
+:103FA00009F475C008F478C0893209F470C00EC0F5
+:103FB000833438F48A3308F071C0883309F47FC041
+:103FC00005C0833409F463C08834C1F080E00895EB
+:103FD0000E941B210E94440E0E944A0770C00E944A
+:103FE0009C1C0E94AE1C6BC08091CC01817F8E7F97
+:103FF0008093CC0181E08093DC0108950E94A51399
+:104000002FEF83ED90E3215080409040E1F700C016
+:1040100000000E94E91A53C09091CC01892F817051
+:1040200090FF03C0917F9E7F26C091609093CC014A
+:1040300046C09091CC0191FB882780F921E082272E
+:1040400080FB91F913C09091CC0192FB882780F9F5
+:1040500021E0822780FB92F909C09091CC0193FB6B
+:10406000882780F921E0822780FB93F99093CC0187
+:10407000882329F191609093CC0108950E94A513A3
+:1040800080910D0191E0892780930D0118C061E0B6
+:1040900070E080E090E00FC023EE01C027EC280F15
+:1040A00061E070E080E090E004C0660F771F881F39
+:1040B000991F2A95D2F70E94A1170E94A51381E0AB
+:1040C000089580E0089580E00895CF93C82F8091EF
+:1040D000DC01813079F018F08230D1F184C0A091F8
+:1040E0000E01B0910F018C91813169F0823209F09B
+:1040F0007CC009C0A0910E01B0910F018C9181315B
+:1041000011F0823249F48C2F0E94612081111DC070
+:104110008C2F0E94A31F1AC08C2F0E946320811134
+:1041200014C0C43179F048F4CB3079F0C03109F0D3
+:1041300060C082E08093DC0108C0C93219F0C83346
+:1041400021F057C01092DC0154C081E0817053C04F
+:10415000C93289F118F5C43171F1A8F4C73009F0FA
+:1041600046C08AE08093150194E19093140193E096
+:10417000909313018093120188E08093110188E2EB
+:104180008093100134C0CE51C63088F5EC2FF0E09A
+:10419000E65DFE4F80818093DB0129C0CE34E9F0DB
+:1041A00020F4CB3421F56AE013C0C13579F0C23573
+:1041B000F1F461E00DC08091DB01882319F01092C9
+:1041C000DB0115C081E08093DC0115C061E006C011
+:1041D0008091DB010E94DD1E0AC06AE08091DB0154
+:1041E0000E94531F04C01092DC0180E004C081E0F3
+:1041F00002C080E0ABCFCF910895E1E8F0E080818C
+:10420000886080838081816080838FB7F89493E099
+:104210009093890090ED909388008FBF0895EFE60A
+:10422000F0E08081826080830895EFE6F0E0808195
+:104230008D7F80830895EFE6F0E0808192E089270A
+:10424000808308951F920F920FB60F9211242F931F
+:104250003F934F935F936F937F938F939F93AF930E
+:10426000BF93EF93FF938091DD019091DE01019662
+:104270009093DE018093DD01811103C082E00E94F2
+:104280004A07E091DE01E695E695F0E0E657FB4F40
+:10429000E4918091DD018E1303C080E00E944A0703
+:1042A000FF91EF91BF91AF919F918F917F916F910E
+:1042B0005F914F913F912F910F900FBE0F901F90E4
+:1042C000189504D06894B1118DC0089570D088F00D
+:1042D0009F5790F0B92F9927B751A0F0D1F0660FF2
+:1042E000771F881F991F1AF0BA95C9F712C0B1300D
+:1042F00081F077D0B1E0089574C0672F782F8827B8
+:10430000B85F39F0B93FCCF3869577956795B3954B
+:10431000D9F73EF490958095709561957F4F8F4FBA
+:104320009F4F0895E89409C097FB3EF490958095BF
+:10433000709561957F4F8F4F9F4F9923A9F0F92F6B
+:1043400096E9BB279395F695879577956795B795E9
+:10435000F111F8CFFAF4BB0F11F460FF1BC06F5FCF
+:104360007F4F8F4F9F4F16C0882311F096E911C0E1
+:10437000772321F09EE8872F762F05C0662371F002
+:1043800096E8862F70E060E02AF09A95660F771F16
+:10439000881FDAF7880F9695879597F9089557FD46
+:1043A0009058440F551F59F05F3F71F04795880FA3
+:1043B00097FB991F61F09F3F79F08795089512163A
+:1043C00013061406551FF2CF4695F1DF08C01616E6
+:1043D00017061806991FF1CF869571056105089497
+:1043E0000895E894BB2766277727CB0197F90895AE
+:1043F0000BD078C069D028F06ED018F0952309F062
+:104400005AC05FC01124EECFCADFA0F3959FD1F34D
+:10441000950F50E0551F629FF001729FBB27F00D72
+:10442000B11D639FAA27F00DB11DAA1F649F6627C7
+:10443000B00DA11D661F829F2227B00DA11D621F16
+:10444000739FB00DA11D621F839FA00D611D221FD0
+:10445000749F3327A00D611D231F849F600D211DB4
+:10446000822F762F6A2F11249F5750408AF0E1F057
+:1044700088234AF0EE0FFF1FBB1F661F771F881FA0
+:1044800091505040A9F79E3F510570F014C0AACF3B
+:104490005F3FECF3983EDCF3869577956795B7958B
+:1044A000F795E7959F5FC1F7FE2B880F911D9695B5
+:1044B000879597F9089597F99F6780E870E060E025
+:1044C00008959FEF80EC089500240A9416161706AD
+:1044D00018060906089500240A94121613061406F5
+:1044E00005060895092E0394000C11F4882352F058
+:1044F000BB0F40F4BF2B11F460FF04C06F5F7F4F10
+:104500008F4F9F4F089597FB072E16F4009407D006
+:1045100077FD09D00E949D2207FC05D03EF49095BE
+:1045200081959F4F0895709561957F4F0895EE0F87
+:10453000FF1F0590F491E02D0994AA1BBB1B51E1CC
+:1045400007C0AA1FBB1FA617B70710F0A61BB70B03
+:10455000881F991F5A95A9F780959095BC01CD01A8
+:104560000895F999FECF92BD81BDF89A992780B53B
+:104570000895A8E1B0E042E050E00C94D422262F48
+:10458000F999FECF1FBA92BD81BD20BD0FB6F89438
+:10459000FA9AF99A0FBE019608950E94BF22272F1A
+:1045A0000C94C022DC01CB01FC01F999FECF06C0BE
+:1045B000F2BDE1BDF89A319600B40D9241505040E1
+:0845C000B8F70895F894FFCF4D
+:1045C80020024B07D807B50781074E070101BA013A
+:1045D80028080A03140A3F4D36394B04FE03C80362
+:1045E8008F0322033B0354036D03010203040506F2
+:0445F80007080900A7
:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index 667078517c..20c95f1ee0 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -1,3 +1,4 @@ +#include <keymap_extras/keymap_colemak.h> #include "ergodox_ez.h" #include "debug.h" #include "action_layer.h" @@ -6,12 +7,6 @@ #define SYMB 1 // symbols #define MDIA 2 // media keys -/* About this file: This is just an experimental keymap for my own use, with some ideas I'm testing out. -* Changlog: -* Jan 19: * Made J into dual-action key (Alt when held down), to make Alt-tab more ergonomic. -* * Made ' into dual-action key (Win/Cmd when held down). -*/ - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * @@ -29,23 +24,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-------------. ,-------------. * | App | LGui | | Alt |Ctrl/Esc| * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | + * | | L1 | Home | | PgUp | | | + * | Space| Tap/ |------| |------| Tab/L1 |Enter | + * | |Toggle| End | | PgDn | | | * `--------------------' `----------------------' */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - ALT_T(KC_APP), KC_LGUI, - KC_HOME, - KC_SPC,KC_BSPC,KC_END, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_FN1,KC_END, // right hand KC_RGHT, KC_6,KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS, @@ -54,20 +49,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, KC_LALT, CTL_T(KC_ESC), KC_PGUP, - KC_PGDN,KC_TAB, KC_ENT + KC_PGDN,LT(SYMB, KC_TAB), KC_ENT ), /* Keymap 1: Symbol Layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * | | 1 | 2 | 3 | 4 | | | | | | % | = | @ | | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * | | 5 | 6 | 7 | 8 | 9 |------| |------| & | _ | - | ; | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * | | ( | ) | [ | ] | 0 | | | | | | ( | ) | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | + * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -80,20 +75,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // SYMBOLS [SYMB] = KEYMAP( // left hand - KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_TRNS, KC_TRNS, + KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_TRNS, KC_LPRN,KC_RPRN,KC_LBRC, KC_RBRC, KC_0, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), + 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_PERC,KC_EQL, KC_AT, KC_TRNS, KC_F12, + KC_AMPR, KC_UNDS,KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, + KC_TRNS, KC_PIPE, KC_LPRN,KC_RPRN, KC_3, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md index 1ec3400696..82e1c5e4a0 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md @@ -4,6 +4,23 @@ This is my personal layout which I use to test out ideas which may or may not ma Changelog: +## Feb 11, 2016: + +* Updated ASCII legend for thumb clusters +* Made it so outer left-hand thumb key is L1 momentary toggle +* Added % and @ to L1 +* Swapped positions for _ and - on L1 + +## Feb 5, 2016: + +* A whole new design for the symbol layer. Specifically: + * Put the minus, underscore, and semicolon right in the homerow for the right hand + * Parens are in better places for me + * The arrow keys now send Ctrl-PgUp and Ctrl-PgDn, for switching browser tabs with the arrows when in symbol layer + * Tab (right-hand outer thumb key) now does double duty to toggle symbol layer when held down + * Backspace (left-hand outer thumb key) now just toggles symbol layer (I wasn't using it as a backspace) + + ## Jan 19, 2016: * Made J into dual-action key (Alt when held down), to make Alt-tab more ergonomic. diff --git a/keyboard/ergodox_ez/keymaps/german-kinergo/german-kinergo.hex b/keyboard/ergodox_ez/keymaps/german-kinergo/german-kinergo.hex new file mode 100644 index 0000000000..574e810666 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-kinergo/german-kinergo.hex @@ -0,0 +1,1473 @@ +:100000000C9403070C9447070C9447070C9447077C
+:100010000C9447070C9447070C9447070C94470728
+:100020000C9447070C9447070C9460120C943213FD
+:100030000C9447070C9447070C9447070C94470708
+:100040000C9447070C940C2C0C9447070C9447070E
+:100050000C9447070C9413220C9447070C94470701
+:100060000C9447070C9447070C9447070C944707D8
+:100070000C9447070C9447070C9447070C944707C8
+:100080000C9447070C9447070C9447070C944707B8
+:100090000C9447070C9447070C9447070C944707A8
+:1000A0000C9447070C9447070C9447079713B91310
+:1000B000A414B913A414FB131E14A41473148614EB
+:1000C000D417D4170218021844188018801A801AFE
+:1000D0009818801A8F198F195A1A801A801A6E1A56
+:1000E0000000F0A129002B003900E100E30000002E
+:1000F0001E00140004001D0035004D001F001A00F2
+:1001000016001B0064004C002000080007000600D9
+:1001100050002A0021001500090019004F004A0074
+:10012000220017000A0005000000E0002E00015226
+:10013000000002520000E200AB0001520000025237
+:100140000000E60023001C000B0011000000E4008A
+:10015000240018000D00100051004B0025000C0079
+:100160000E00360052002C00260012000F0037004F
+:1001700031002800270013003300380030004E0003
+:100180002D002F003482E500E7000000010001008F
+:1001900001000100010000003A001E0231002202AD
+:1001A000010001003B001414210235000100010090
+:1001B0003C00241425022514010001003D002714F1
+:1001C00026022614010001003E0064142E023014A1
+:1001D000000001000100010000000100000001001A
+:1001E0000100010000000100000001003F0052007A
+:1001F00051002302000001004000240021001E00E5
+:10020000010001004100250022001F00370001000D
+:100210004200260023002000270001004300300296
+:1002200030002D14270201004400450001000100A8
+:1002300001000000010001000100010001000000B8
+:100240003A000100F700FB00010001003B00F40050
+:10025000F200FA00FD00F5003C00F000F100F900AA
+:10026000FE00F4003D00F500F300FC00FF0001007B
+:100270003E000100F800F60000000100010001004E
+:100280000000010000000100010001000000010069
+:10029000000001003F0001000100B4000000010067
+:1002A0004000AA00AC00B600010001004100A80017
+:1002B000AD00B5000100B7004200A900AE00B900D2
+:1002C0000100B60043000100AB00B70001000100CF
+:1002D0004400450001000100010000000A00253033
+:1002E000313662003A200025303258000A722F63FE
+:1002F0002030313233343536373839414243444582
+:10030000460A000A002530325800626F756E636538
+:10031000213A20006C6566742073696465206174FD
+:100320007461636865640A006C656674207369644F
+:1003300065206E6F7420726573706F6E64696E678E
+:100340000A00747279696E6720746F207265736534
+:1003500074206D637032333031380A000A444542EC
+:1003600055473A20656E61626C65642E0A005B73C6
+:100370005D004B6579626F617264207374617274A1
+:100380002E0A005B575D005B535D005B525D005BB6
+:10039000445D005B435D0016034500720067006F1B
+:1003A0000044006F007800200045005A000000164D
+:1003B000034500720067006F0044006F0078002062
+:1003C0000045005A0000000403090409028D0005DD
+:1003D0000100A0FA09040000010301010009211134
+:1003E000010001223F000705810308000A090401FA
+:1003F000000103010200092111010001224D000743
+:1004000005820308000A0904020001030000000934
+:1004100021110100012236000705830308000A09A3
+:100420000403000203000000092111010001222041
+:1004300000070584032000010705040320000109CB
+:100440000404000103000000092111010001223908
+:1004500000070585031000011201100100000008CB
+:10046000EDFE071301000102000105010906A101CB
+:10047000050719E029E71500250195087501810296
+:100480000508190129059505750191029501750366
+:100490009101050719002977150025019578750147
+:1004A0008102C00631FF0974A1010975150025FFFD
+:1004B0009520750881020976150025FF952075089D
+:1004C0009102C005010980A101850216010026B72D
+:1004D000001A01002AB700751095018100C0050CB3
+:1004E0000901A1018503160100269C021A01002AB8
+:1004F0009C02751095018100C005010902A1010946
+:1005000001A10005091901290515002501950575A9
+:100510000181029501750381010501093009311539
+:1005200081257F95027508810609381581257F95FB
+:100530000175088106050C0A38021581257F950191
+:1005400075088106C0C005010906A101050719E06B
+:1005500029E71500250195087501810295017508A7
+:10056000810105081901290595057501910295017B
+:10057000750391010507190029FF150025FF950650
+:1005800075088100C00A002530325820006B65795B
+:10059000626F6172645F7265706F72743A20000AF4
+:1005A0000025303258006B6579626F6172645F7349
+:1005B00065745F6C65643A200064656C5F6B657997
+:1005C0005F6269743A2063616E27742064656C3AD7
+:1005D00020253032580A006164645F6B65795F6280
+:1005E00069743A2063616E2774206164643A20253F
+:1005F0003032580A00646F6E652E0A00626F6F67B2
+:100600006D61676963207363616E3A202E2E2E2020
+:1006100000290A002575002F002575005D2800259A
+:10062000640020002564002000256400200025646B
+:10063000007C0025303258006D6F7573656B6579ED
+:10064000205B62746E7C782079207620685D287249
+:1006500065702F61636C293A205B006D6B5F776872
+:1006600065656C5F74696D655F746F5F6D6178203F
+:100670003D2025640A006D6B5F776865656C5F6D72
+:1006800061785F7370656564203D2025640A006DA4
+:100690006B5F74696D655F746F5F6D6178203D207D
+:1006A00025640A006D6B5F6D61785F7370656564CA
+:1006B000203D2025640A006D6B5F696E746572765B
+:1006C000616C203D2025640A006D6B5F64656C6180
+:1006D00079203D2025640A006D6B5F776865656C45
+:1006E0005F74696D655F746F5F6D6178203D202573
+:1006F000640A006D6B5F776865656C5F6D61785F3C
+:100700007370656564203D2025640A006D6B5F741D
+:10071000696D655F746F5F6D6178203D2025640AA7
+:10072000006D6B5F6D61785F7370656564203D205F
+:1007300025640A006D6B5F696E74657276616C206A
+:100740003D2025640A006D6B5F64656C6179203D16
+:100750002025640A000A00257500363A207768656E
+:10076000656C5F74696D655F746F5F6D61783A2069
+:10077000000A00257500353A20776865656C5F6D65
+:1007800061785F73706565643A20000A0025750022
+:10079000343A2074696D655F746F5F6D61783A20DB
+:1007A000000A00257500333A206D61785F7370652B
+:1007B00065643A20000A00257500323A20696E749B
+:1007C000657276616C286D73293A20000A002575E0
+:1007D00000313A2064656C6179282A31306D7329C3
+:1007E0003A20000A092D2056616C756573202D0A88
+:1007F000004D3E004D25643E20003F00736574208F
+:1008000064656661756C740A00433E200077686514
+:1008100072652064656C74613A20637572736F72DF
+:100820003D25642C20776865656C3D25640A536519
+:100830006520687474703A2F2F656E2E77696B6926
+:1008400070656469612E6F72672F77696B692F4DD0
+:100850006F7573655F6B6579730A000A092D204D0A
+:100860006F7573656B6579202D0A4553432F713A77
+:1008700009717569740A313A0964656C6179282ACD
+:1008800031306D73290A323A09696E746572766186
+:100890006C286D73290A333A096D61785F7370654E
+:1008A00065640A343A0974696D655F746F5F6D61E0
+:1008B000780A353A09776865656C5F6D61785F73B2
+:1008C000706565640A363A09776865656C5F7469B6
+:1008D0006D655F746F5F6D61780A0A703A097072B6
+:1008E000696E742076616C7565730A643A09736584
+:1008F000742064656661756C74730A75703A092BAF
+:10090000310A646F776E3A092D310A706775703A53
+:10091000092B31300A7067646F776E3A092D3130D8
+:100920000A0A7370656564203D2064656C746120FB
+:100930002A206D61785F7370656564202A202872B3
+:100940006570656174202F2074696D655F746F5FD9
+:100950006D6178290A003F004D3E2000433E200093
+:100960004C25640A000A092D20436F6E736F6C6575
+:10097000202D0A4553432F713A09717569740A6D28
+:100980003A096D6F7573656B65790A000A092D2048
+:100990004D61676963202D0A643A09646562756771
+:1009A0000A783A096465627567206D6174726978C6
+:1009B0000A6B3A096465627567206B6579626F61DD
+:1009C00072640A6D3A096465627567206D6F7573AC
+:1009D000650A763A0976657273696F6E0A733A0929
+:1009E0007374617475730A633A09636F6E736F6C25
+:1009F00065206D6F64650A302D343A096C61796544
+:100A000072302D34284631302D4634290A50617514
+:100A1000733A09626F6F746C6F616465720A653A4C
+:100A200009656570726F6D0A6E3A094E4B524F0A36
+:100A30007A3A09736C656570204C4544207465737F
+:100A4000740A000A002575002E6E6B726F3A200042
+:100A50000A002575002E737761705F6261636B73A6
+:100A60006C6173685F6261636B73706163653A2088
+:100A7000000A002575002E737761705F67726176DA
+:100A8000655F6573633A20000A002575002E6E6F5E
+:100A90005F6775693A20000A002575002E7377613B
+:100AA000705F72616C745F726775693A20000A004A
+:100AB0002575002E737761705F6C616C745F6C6775
+:100AC00075693A20000A002575002E636170736C09
+:100AD0006F636B5F746F5F636F6E74726F6C3A20DD
+:100AE000000A002575002E737761705F636F6E7466
+:100AF000726F6C5F636170736C6F636B3A20000A96
+:100B00000025303258006B65796D61705F636F6EE0
+:100B10006669672E7261773A20000A002575002EFB
+:100B20006D6F7573653A20000A002575002E6B65A0
+:100B300079626F6172643A20000A002575002E6D9B
+:100B400061747269783A20000A002575002E656E7E
+:100B500061626C653A20000A0025303258006465F5
+:100B60006275675F636F6E6669672E7261773A20A0
+:100B7000000A0025750064656661756C745F6C61C0
+:100B80007965723A20003F004E4B524F3A206F6613
+:100B9000660A004E4B524F3A206F6E0A0074696D20
+:100BA00065725F636F756E743A202530346C580A35
+:100BB000006B6579626F6172645F6E6B726F3A2071
+:100BC00025580A006B6579626F6172645F69646CB5
+:100BD000653A2025580A006B6579626F6172645F1F
+:100BE00070726F746F636F6C3A2025580A00686FDB
+:100BF00073745F6B6579626F6172645F6C65647357
+:100C000028293A2025580A000A092D2053746174B6
+:100C10007573202D0A004743433A20342E382E3274
+:100C2000204156522D4C4942433A20312E382E3025
+:100C3000204156525F415243483A20617672350A4C
+:100C4000004F5054494F4E533A204C554641204294
+:100C50004F4F544D41474943204D4F5553454B4508
+:100C6000592045585452414B455920434F4E534FFC
+:100C70004C4520434F4D4D414E44204E4B524F204A
+:100C80003531320A004255494C443A206664616469
+:100C90003765632D6469727479202831393A3332AB
+:100CA0003A3137204A616E203238203230313629CD
+:100CB0000A005649443A2030784645454428457252
+:100CC000676F446F7820455A29205049443A2030B4
+:100CD0007831333037284572676F446F7820455A32
+:100CE00029205645523A203078303030310A0044BD
+:100CF0004553433A20742E6D2E6B2E206B6579621E
+:100D00006F617264206669726D7761726520666FCB
+:100D100072204572676F646F780A000A092D2056A9
+:100D2000657273696F6E202D0A000A6D6F757365A9
+:100D30003A206F66660A000A6D6F7573653A206F18
+:100D40006E0A000A6B6579626F6172643A206F66A1
+:100D5000660A000A6B6579626F6172643A206F6E91
+:100D60000A000A6D61747269783A206F66660A003B
+:100D70000A6D61747269783A206F6E0A000A6465C0
+:100D80006275673A206F6E0A000A64656275673A99
+:100D9000206F66660A000A0A626F6F746C6F616486
+:100DA00065722E2E2E2000433E20006565636F6E17
+:100DB0006669673A0A00536C656570204C454420AB
+:100DC000746573740A000000000000000000000059
+:100DD00000010204060A0F17202C3A4A5D71879D14
+:100DE000B3C7DAE9F5FCFFFCF5E9DAC7B39D877113
+:100DF0005D4A3A2C20170F0A060402010000000089
+:100E000000000000000011241FBECFEFDAE0DEBFBB
+:100E1000CDBF04B603FE24C08091F9019091FA0180
+:100E2000A091FB01B091FC018730904BA740B04BE3
+:100E3000B9F41092F9011092FA011092FB0110928C
+:100E4000FC0114BE84B7877F84BF88E10FB6F89495
+:100E500080936000109260000FBEE0E0FFE3099510
+:100E600011E0A0E0B1E0E4EBFBE502C005900D92DB
+:100E7000AA33B107D9F711E0AAE3B1E001C01D928E
+:100E8000A93FB107E1F70E949A0F0C94D82D0C945A
+:100E90000000FF93EF93E0913A01F0913B0130970E
+:100EA00009F00995EF91FF910895FC01859180303B
+:100EB00011F0EFDFFBCF0895FF27E0E230E247FFBC
+:100EC0000CC0419597FF09C0EDE260957095809543
+:100ED0009095611D711D811D911D27FF02C02195F7
+:100EE00030E350E2AA27660F771F881F991FAA1FB9
+:100EF000A41710F0A41B63955A95A9F7AA3008F01F
+:100F0000A95FA05DAF93F39561157105810591050A
+:100F100041F7ED3211F4EF93F395F21718F43F9384
+:100F2000F395FBCF8F91B5DFFA95E1F70895E9913D
+:100F3000F9918591803021F0853219F0AADFF9CF3F
+:100F4000089520E0E89455915532C1F3503311F4DF
+:100F5000689455915A3348F4505390F3220F022E5F
+:100F6000220F220F200D250FF4CF0EF42195899129
+:100F70009991533619F3533729F1533559F1BC017F
+:100F800088279927E8945C3621F48991999168948F
+:100F90005591543639F446EF7EF077FF0DC08FEF50
+:100FA0009FEF0AC055374AE039F0583540E121F04B
+:100FB000523642E009F00895FF93EF937DDFEF9101
+:100FC000FF91B7CFFF93EF93FC0181918030B9F38C
+:100FD00060DFFBCFFF93EF9368DFF1CFDF93CF9319
+:100FE000CDB7DEB72596A3DFCF91DF9108956111CC
+:100FF0000BC0FC018281882321F085EE0E946816D7
+:1010000003C085EE0E94301780E090E008950895B7
+:101010006091BC017091BD018091BE019091BF01B2
+:101020000E94132156985E9825982D9826982E9800
+:1010300027982F98813029F0823031F4269A2E9A01
+:101040000895259A2D9A089556985E98089588E0F7
+:1010500098E0892B11F00E94080880E090E0089544
+:1010600056985E9825982D9826982E9827982F9810
+:101070008FEF90E0909389008093880090938B008D
+:1010800080938A0090938D0080938C00259A2D9AEE
+:101090002FEF80E792E0215080409040E1F700C0C0
+:1010A0000000269A2E9A2FEF80E792E02150804090
+:1010B0009040E1F700C00000279A2F9A2FEF80E7B9
+:1010C00092E0215080409040E1F700C00000259858
+:1010D0002D982FEF80E792E0215080409040E1F77B
+:1010E00000C0000026982E982FEF80E792E0215054
+:1010F00080409040E1F700C0000027982F98569854
+:101100005E9825982D9826982E9827982F980895C0
+:1011100089EA8093800089E08093810024982C984C
+:101120003F988AB18F748AB96E98479A8BB1806B59
+:101130008BB9769A0E94300887E098E0892B11F0ED
+:101140000E94070880E090E0089580E2809300010B
+:1011500080913C0181110EC00E94F40881E08093CF
+:101160003C012FEF83ED90E3215080409040E1F768
+:1011700000C0000080E40E94FA0880930001811101
+:101180002EC00E94240980930001811128C00E9472
+:10119000240980930001811122C08FE30E94240959
+:1011A0008093000181111BC00E941C0980E40E94F1
+:1011B000FA0880930001811112C08CE00E9424097A
+:1011C0008093000181110BC00E94240980930001CB
+:1011D000811105C08FE30E942409809300010E94C1
+:1011E0001C098091000108951092B9008AE0809353
+:1011F000B800089594EA9093BC009091BC0097FFCA
+:10120000FCCF9091B900987F983021F0903111F087
+:1012100081E008958093BB0084E88093BC008091B6
+:10122000BC0087FFFCCF8091B900887F883111F026
+:10123000803471F780E0089584E98093BC00809148
+:10124000BC0084FDFCCF08958093BB0084E88093AC
+:10125000BC008091BC0087FFFCCF9091B900987FC3
+:1012600081E0983209F480E0089584E88093BC001E
+:101270008091BC0087FFFCCF8091BB0008958091D6
+:101280000001811115C080E40E94FA0880930001DA
+:1012900081110CC082E10E94240980930001811118
+:1012A00005C08FEF0E942409809300010E941C0951
+:1012B00084B1807F84B985B1807F85B98AB1837F0D
+:1012C0008AB98BB1837F8BB93E98469808950E9466
+:1012D000A508809300010E943F0980B38C7080BBF9
+:1012E00081B3836F81BBECE4F1E0AEE3B1E0119236
+:1012F0001D9281E0EA35F807D1F788E898E0892B5C
+:1013000011F00C94880808959F92AF92BF92CF92EB
+:10131000DF92EF92FF920F931F93CF93DF93809111
+:1013200000018823E1F080913D018F5F80933D01B2
+:10133000811115C082E493E00E9455070E94A50820
+:1013400080930001882329F088E293E00E945507EA
+:1013500006C084E193E00E9455070E9430080EE326
+:1013600011E0C0E0D0E0BB24B39482E0A82ECC24EE
+:10137000C394D12C25E0E22E23E0F22EC73000F5F5
+:1013800080910001811162C080E40E94FA0880937C
+:101390000001811112C082E10E94240980930001A2
+:1013A00081110BC0C6010C2E01C0880F0A94EAF708
+:1013B00080950E942409809300010E941C0946C068
+:1013C000CA30A1F028F4C83059F0C93061F005C026
+:1013D000CC3089F070F0CD3089F0209A289810C078
+:1013E000219A29980DC0229A2A980AC0239A2B98EC
+:1013F00007C0529A01C0539A5B9802C03E9A469821
+:10140000E0EAEA95F1F78FB1799985C092E08170B1
+:101410008B25892B7C9B02C090E001C094E0892B36
+:101420007D9B02C090E001C098E0892B7E9B02C0AA
+:1014300090E001C090E1892B9FB19095991F992769
+:10144000991F9295990F907E892B10C08091000171
+:10145000811176C080E40E94FA08809300018823FD
+:1014600009F45BC0912C0E941C09892DF801908120
+:10147000981739F1808380910101882301F18091CF
+:10148000D70180FF04C08AE093E00E945507809155
+:10149000D70180FF0CC0809101011F928F93FF92B2
+:1014A000EF920E94EE070F900F900F900F90809197
+:1014B000D70180FF04C083E093E00E945507A0920B
+:1014C00001010E943F0921960F5F1F4FCE30D105C9
+:1014D00009F054CF809101018823B1F081508093AD
+:1014E0000101882339F08FE99FE00197F1F700C0EF
+:1014F00000000AC0ACE4B1E0EEE3F1E081918D932D
+:1015000091E0EC34F907D1F787E298E0892BD1F02C
+:101510000E94270817C090E07ACF83E10E94240937
+:101520008093000181119ECF81E40E94FA0880938C
+:101530000001811197CF0E943509982E909493CF86
+:1015400080E094CF81E0DF91CF911F910F91FF90C8
+:10155000EF90DF90CF90BF90AF909F900895E82FCD
+:10156000F0E0E45BFE4F80810895CF92DF92EF922E
+:10157000FF920F931F93CF93DF938CEE92E00E9424
+:1015800055073CE4E32E31E0F32EC0E0D0E047EE17
+:10159000C42E42E0D42E0EED12E0DF93CF93DF9203
+:1015A000CF920E94EE0784EE92E00E945507F70169
+:1015B00081917F0190E00E9478219F938F931F93E8
+:1015C0000F930E94EE078CED92E00E945507219642
+:1015D0008DB79EB708960FB6F8949EBF0FBE8DBF0D
+:1015E000CE30D105D1F6DF91CF911F910F91FF90B1
+:1015F000EF90DF90CF9008958B3B910578F4883A77
+:10160000910540F5853A9105D0F48430910508F0B4
+:10161000B1C08130910509F4ADC06BC0803E910529
+:1016200008F467C0883E910508F4A4C09C01205FBF
+:1016300031092031310508F05CC090650895853A84
+:10164000910509F459C0863A910509F458C083E818
+:1016500090E40895883A910509F454C0893A9105B7
+:1016600009F453C08A3A910509F452C08B3A9105A6
+:1016700009F451C08C3A910509F450C08D3A910596
+:1016800009F44FC0803B910509F44EC08E3A910594
+:1016900009F44DC08F3A910509F44CC0813B910586
+:1016A00009F44BC0823B910509F44AC0833B910584
+:1016B00009F449C0843B910509F448C0853B910574
+:1016C00009F447C0863B910509F446C0873B910564
+:1016D00009F445C0883B910509F444C0893B910554
+:1016E00009F443C08A3B910509F042C08AE296E4BE
+:1016F000089580E090E0089581E890E4089582E8FC
+:1017000090E4089582EE94E4089589EE94E40895B7
+:101710008AEE94E4089585EB94E4089586EB94E4CE
+:10172000089587EB94E408958CEC94E408958DEC8F
+:1017300094E4089583E895E408958AE895E408958B
+:1017400082E995E4089584E995E4089581E296E4B8
+:10175000089583E296E4089584E296E4089585E28C
+:1017600096E4089586E296E4089587E296E4089563
+:1017700080E094E40895089596E0799FF0011124A3
+:1017800094E5899FE00DF11D1124E60FF11DEE0F88
+:10179000FF1FEC51FF4F859194910895880F991F79
+:1017A000805A9040FC01859194910895880F991F6B
+:1017B00080529F4FFC0185919491089526E0729F7D
+:1017C000F001112444E5849FE00DF11D1124E60F82
+:1017D000F11DEE0FFF1FEC51FF4F25913491C90110
+:1017E0009A9581159F4110F4C9010895C90190523D
+:1017F0008115904128F4C9019F700E94D60B08956D
+:10180000C90190538115904120F4C9019927906C2A
+:101810000895211580E5380769F40E94A11A9FEF09
+:1018200024E34CE0915020404040E1F700C000002C
+:101830000C943822213080E5380751F48CE593E090
+:101840000E9455078091D70181608093D701089548
+:10185000C90190558115904108F050C0832F9927F8
+:101860008F70992781309105D9F4A90143705527CC
+:1018700002C0880F991F4A95E2F79C68A90164E0AD
+:10188000440F551F6A95E1F744275370842B952B1D
+:1018900073E0220F331F7A95E1F7207633271DC0BE
+:1018A0008230910529F4922F8827816F906A0895DC
+:1018B00083309105A9F4A9014370552781E090E098
+:1018C00002C0880F991F4A95E2F79C6843E0220FF7
+:1018D000331F4A95E1F7207E3770822B932B0895B2
+:1018E0000497F1F4A9014370552781E090E002C00C
+:1018F000880F991F4A95E2F79A68E8CFC901905777
+:101900008115904120F4C9019F7090620895C9012A
+:1019100090588115904120F4C9019F70906A0895F4
+:10192000203E3105E0F4203C310558F521333105E6
+:1019300009F470C048F42932310509F464C02A3230
+:10194000310509F46EC074C029333105F1F0223835
+:101950003105D9F02533310509F44EC069C0233E65
+:10196000310589F138F4203E3105C1F0223E3105C0
+:10197000E1F05EC0263E310569F1273E3105A9F14F
+:1019800057C0C9010E94CE0B08958091EA0180FDE5
+:1019900002C081FF4DC080EE90E04BC08091EA0113
+:1019A00080FFF9CF89E390E044C08091EA0182FF93
+:1019B0000EC08091EA0184FF03C080E090E039C04E
+:1019C00083EE90E036C08091EA0182FFF2CF82EE92
+:1019D00090E02FC08091EA0183FF0BC08091EA0163
+:1019E00084FDEBCF87EE90E024C08091EA0183FF75
+:1019F000F5CF86EE90E01DC08091EA0185FF07C01B
+:101A000089E290E016C08091EA0185FFF9CF85E375
+:101A100090E00FC08091EA0186FF07C08AE290E063
+:101A200008C08091EA0186FFF9CF81E390E001C010
+:101A3000C9010E94FC0A0895089580916D010895DE
+:101A40009FB7F89410925C019FBF9091F001943081
+:101A500009F058C09091E9009F702091EC0020FFA0
+:101A600002C020E801C020E0292B94E09093E90017
+:101A70009091EB0090FF43C09091EE0097FF3FC024
+:101A800090915A01992321F09091E80095FF37C079
+:101A900010925A0196E03091E80035FD15C0309162
+:101AA000F001343061F53091EB0035FD28C09150E4
+:101AB00021F481E080935A0122C0EFE9FFE03197E1
+:101AC000F1F700C00000E7CF8093F1008091E800BB
+:101AD00085FD0AC08091E80080FFFCCF8091E8007E
+:101AE0008E778093E80006C08FB7F89491E09093CA
+:101AF0005C018FBF2F702093E90080E008952F7064
+:101B00002093E9008FEF0895CF93DF9300D01F92C9
+:101B1000CDB7DEB72091F001243019F523E02983F9
+:101B20009B838A832093E9008FEF9091E800815096
+:101B300095FD06C095ED9A95F1F700008111F5CF5E
+:101B40008091E80085FF0DC040E050E063E070E068
+:101B5000CE0101960E9453108091E8008E77809309
+:101B6000E8000F900F900F90DF91CF910895CF93E1
+:101B7000DF9300D01F92CDB7DEB72091F001243063
+:101B800021F522E029839B838A8383E08093E90007
+:101B90008FEF9091E800815095FD06C095ED9A95E4
+:101BA000F1F700008111F5CF8091E80085FF0DC0AD
+:101BB00040E050E063E070E0CE0101960E945310D7
+:101BC0008091E8008E778093E8000F900F900F903F
+:101BD000DF91CF9108952091F0012430F1F422E0BB
+:101BE0002093E9002FEF3091E800215035FD06C029
+:101BF00035ED3A95F1F700002111F5CF2091E8007D
+:101C000025FF0BC040E050E065E070E00E945310FB
+:101C10008091E8008E778093E8000895CF93DF935A
+:101C2000EC018091F001843009F047C080910C01F3
+:101C30008823E1F080910D018823C1F085E0809335
+:101C4000E9008FEF9091E800815095FD06C095E185
+:101C50009A95F1F700008111F5CF8091E80085FF9A
+:101C60002CC040E050E060E170E017C081E080935C
+:101C7000E9008FEF9091E800815095FD06C095ED49
+:101C80009A95F1F700008111F5CF8091E80085FF6A
+:101C900014C040E050E068E070E0CE010E945310B4
+:101CA0008091E8008E778093E80080E1FE01ADE549
+:101CB000B1E001900D928A95E1F7DF91CF910895FF
+:101CC00083E993E00E9455078091EF01811109C0DB
+:101CD0000E94E5110E9442128091E200846080938C
+:101CE000E20008958FE893E00E9455071092EF01FB
+:101CF00008958BE893E00C94550787E893E00E94E1
+:101D000055070C94F92B83E893E00E9455070E9435
+:101D1000CF210E94FF2B0E94DE140C941C0D809199
+:101D20005B018F5F80935B0162E30E946D2D9111D7
+:101D300035C010925B0180915C01882379F180911C
+:101D4000F001843049F58091E9008F709091EC00AA
+:101D500090FF02C090E801C090E0982B84E080934F
+:101D6000E9008091EB0080FF14C08091EE0087FFB6
+:101D700010C08091E80085FF03C01092F100F9CFF8
+:101D80008091E80080FF05C08091E8008E77809305
+:101D9000E8009F709093E90010925C01089542E082
+:101DA00061EC81E00E945F1142E061EC82E00E9400
+:101DB0005F1142E061EC83E00E945F1142E261EC5E
+:101DC00084E00E945F1142E161EC85E00C945F11B8
+:101DD0008091F201833009F455C030F4813071F004
+:101DE000823009F48EC008958A3009F47AC08B30AD
+:101DF00009F460C0893009F09CC020C08091F101D5
+:101E0000813A09F096C08091E800877F8093E800CE
+:101E10008091F5019091F601892B21F060E080E03E
+:101E200090E003C060E18DE591E070E00E949C10BD
+:101E30008091E8008B778093E80008958091F1010C
+:101E4000813209F076C08091F5019091F6010097FA
+:101E500019F0049709F06DC08091E800877F8093A6
+:101E6000E8008091E80082FD05C08091F0018111B9
+:101E7000F8CF5FC08091F10080936D018091E80000
+:101E80008B7753C08091F101813A09F052C0809163
+:101E9000F5019091F601892B09F04BC08091E80083
+:101EA000877F8093E8008091E80080FFFCCF8091DD
+:101EB0000C0136C08091F1018132D9F58091F50194
+:101EC0009091F601892BA9F58091E800877F809396
+:101ED000E8000E9494118091F30180930C010C940E
+:101EE000A11A8091F101813221F58091E800877F6C
+:101EF0008093E8000E9494118091F40180936E0118
+:101F000008958091F101813AA1F48091E800877FE2
+:101F10008093E8008091E80080FFFCCF80916E0103
+:101F20008093F1008091E8008E778093E8000C9414
+:101F30009411089584B7877F84BF88E10FB6F89421
+:101F400080936000109260000FBE90E080E80FB6B2
+:101F5000F89480936100909361000FBE0E94671512
+:101F60000E94E5110E9442128091E20084608093F9
+:101F7000E20080E29DE00E940E2178940E94BC1451
+:101F80000E94691582E091E00E94D9140E94E72B1B
+:101F900082E793E00E9455078091F001853089F433
+:101FA0008EE693E00E9455070E9492218091EE01F7
+:101FB000882391F30E94BA21882371F30E943D1077
+:101FC000EBCF0E949715E8CF292F33272330310517
+:101FD000A9F06CF42130310509F442C022303105FA
+:101FE00009F043C08DE890E02BEC33E042C0213291
+:101FF0003105C9F02232310519F137C099278130F6
+:10200000910541F08230910541F0892B71F5E7ECA3
+:10201000F3E005C0EFEAF3E002C0E7E9F3E0849102
+:1020200090E09F0126C0653000F5E62FF0E0EE0F4E
+:10203000FF1FEB5DFE4F2081318189E090E019C0E8
+:10204000653098F4E62FF0E0DF01AA0FBB1FA55E14
+:10205000BE4F2D913C91EA5EFE4F808190E009C019
+:1020600082E190E028E534E004C080E090E020E0E8
+:1020700030E0FA0131832083089580E189BD82E157
+:1020800089BD09B400FEFDCF8091D8008F7D80937B
+:10209000D8008091E00082608093E0008091E000B1
+:1020A00081FDFCCF0895CF92DF92EF92FF920F93C4
+:1020B0001F93CF93DF937C018B01EA010E94B5113E
+:1020C000811131C0209731F088819981081B190B4B
+:1020D000E80EF91EC12CD12C0115110519F18091C2
+:1020E000E80085FD14C08091E8008E778093E800B9
+:1020F000209741F0888199818C0D9D1D998388835B
+:1021000085E011C00E94B511882331F30CC0F7019E
+:1021100081917F018093F10001501109FFEFCF1AE7
+:10212000DF0ADACF80E0DF91CF911F910F91FF900E
+:10213000EF90DF90CF9008952091F7013091F80152
+:102140002617370748F06115710539F42091E8002A
+:102150002E772093E80001C0B901FC0120E0611551
+:102160007105B9F18091F001882309F440C08530F0
+:1021700009F43FC08091E80083FD3DC08091E800F4
+:1021800082FF06C08091E80082FF26C080E00895AB
+:102190008091E80080FFE3CF2091F3008091F2006E
+:1021A00090E0922B6115710551F08830910538F45B
+:1021B00021912093F100615071090196F3CF21E044
+:1021C000089709F020E08091E8008E778093E8007E
+:1021D000C6CF2111C7CFD6CF8091F001882339F027
+:1021E000853039F08091E80083FFCCCF04C082E0D5
+:1021F000089583E0089581E008952091F7013091DA
+:10220000F8012617370748F06115710539F4209158
+:10221000E8002E772093E80001C0B901FC0120E01E
+:1022200061157105C1F18091F001882309F441C065
+:10223000853009F440C08091E80083FD3EC0809164
+:10224000E80082FF06C08091E80082FF27C080E09E
+:1022500008958091E80080FFE3CF2091F300809102
+:10226000F20090E0922B6115710559F088309105CC
+:1022700040F424912093F100319661507109019648
+:10228000F2CF21E0089709F020E08091E8008E77F6
+:102290008093E800C5CF2111C6CFD5CF8091F00142
+:1022A000882339F0853039F08091E80083FFCBCF67
+:1022B00004C082E0089583E0089581E00895982F96
+:1022C000973058F59093E900981739F07091EC0029
+:1022D0002091ED005091F00003C0242F762F50E0A4
+:1022E00021FF19C03091EB003E7F3093EB0030911D
+:1022F000ED003D7F3093ED003091EB003160309385
+:10230000EB007093EC002093ED005093F0002091CF
+:10231000EE0027FF07C09F5FD3CF8F708093E90047
+:1023200081E0089580E008958091F10187FD05C066
+:102330008091E80080FF0EC012C08091E80082FD0D
+:1023400005C08091F0018111F8CF08958091E800D7
+:102350008B7708C08091F0018111EACF08958091B8
+:10236000E8008E778093E80008958091E4009091D2
+:10237000E50045E62091EC0020FF21C02091E80017
+:1023800020FD21C02091F001222389F0253089F021
+:102390002091EB0025FD0FC02091E4003091E50075
+:1023A0002817390739F3415041F0C901E3CF82E0E2
+:1023B000089583E0089581E0089584E008952091D0
+:1023C000E80022FFDFCF80E008950E9453120E94B0
+:1023D0005B12E0EEF0E0808181608083E8EDF0E068
+:1023E00080818F77808319BCA7EDB0E08C918E7FC0
+:1023F0008C9380818F7E80831092EF0108950F93DC
+:102400001F93CF93DF930E9453120E945B12C8ED7B
+:10241000D0E088818F7788838881806888838881ED
+:102420008F7D888319BC1092F0011092EC011092FC
+:10243000EE011092ED0100EE10E0F80180818B7F3B
+:10244000808388818160888342E060E080E00E9430
+:102450005F11E1EEF0E080818E7F8083E2EEF0E0BC
+:10246000808181608083808188608083F8018081A1
+:102470008E7F8083888180618883DF91CF911F91D7
+:102480000F910895E8EDF0E080818F7E8083E7ED85
+:10249000F0E080818160808384E082BF81E080936E
+:1024A000EF010C94FF11E8EDF0E080818E7F8083D6
+:1024B0001092E20008951092DA001092E10008955F
+:1024C0001F920F920FB60F9211242F933F934F93A9
+:1024D0005F936F937F938F939F93AF93BF93EF938C
+:1024E000FF938091E10082FF0BC08091E20082FFA8
+:1024F00007C08091E1008B7F8093E1000E948F0EE6
+:102500008091DA0080FF1FC08091D80080FF1BC03F
+:102510008091DA008E7F8093DA008091D90080FF6D
+:102520000DC080E189BD82E189BD09B400FEFDCF07
+:1025300081E08093F0010E94600E05C019BC1092EA
+:10254000F0010E94720E8091E10080FF19C080911D
+:10255000E20080FF15C08091E2008E7F8093E20050
+:102560008091E20080618093E2008091D8008062D7
+:102570008093D80019BC85E08093F0010E947D0E05
+:102580008091E10084FF30C08091E20084FF2CC084
+:1025900080E189BD82E189BD09B400FEFDCF809153
+:1025A000D8008F7D8093D8008091E1008F7E80934A
+:1025B000E1008091E2008F7E8093E2008091E20052
+:1025C00081608093E2008091EC01882311F084E027
+:1025D00007C08091E30087FF02C083E001C081E073
+:1025E0008093F0010E94830E8091E10083FF29C057
+:1025F0008091E20083FF25C08091E100877F809376
+:10260000E10082E08093F0011092EC018091E10002
+:102610008E7F8093E1008091E2008E7F8093E200C4
+:102620008091E20080618093E20042E060E080E01F
+:102630000E945F118091F00088608093F0000E94FA
+:10264000790EFF91EF91BF91AF919F918F917F9103
+:102650006F915F914F913F912F910F900FBE0F900F
+:102660001F9018951F920F920FB60F9211242F935F
+:102670003F934F935F936F937F938F939F93AF930A
+:10268000BF93CF93EF93FF93C091E900CF708091F8
+:10269000EC001092E9008091F000877F8093F000B9
+:1026A00078940E946E131092E9008091F000886087
+:1026B0008093F000C093E900FF91EF91CF91BF911B
+:1026C000AF919F918F917F916F915F914F913F91CA
+:1026D0002F910F900FBE0F901F9018951F93CF93BF
+:1026E000DF93CDB7DEB7AA970FB6F894DEBF0FBE63
+:1026F000CDBFE1EFF1E08091F100819321E0E93F6E
+:10270000F207C9F70E94E80E8091E80083FF1CC120
+:102710002091F1013091F201832F90E08A309105F0
+:1027200008F012C1FC01EA5AFF4F0C948D2D20389D
+:1027300081F0223809F008C18091F5018F708093F3
+:10274000E9008091EB0085FB882780F91092E90071
+:1027500006C08091ED019091EE01911182609091FF
+:10276000E800977F9093E8008093F1001092F100C9
+:10277000C5C0822F8D7F09F0E7C0222319F02230D7
+:1027800061F0E2C08091F301813009F0DDC03330A7
+:1027900009F080E08093EE0128C08091F30181115F
+:1027A00024C02091F5012F7009F4CEC02093E900D8
+:1027B0008091EB0080FF19C08091EB00333011F461
+:1027C000806211C080618093EB0081E090E0022E76
+:1027D00001C0880F0A94EAF78093EA001092EA0099
+:1027E0008091EB0088608093EB001092E90080916B
+:1027F000E800877F86C02111A7C01091F3011F77E1
+:102800008091E3008078812B8093E3008091E80041
+:10281000877F8093E8000E9494118091E80080FFF8
+:10282000FCCF8091E30080688093E300112311F0D6
+:1028300083E001C082E08093F00186C020582230FE
+:1028400008F082C08091F3019091F4018C3D23E067
+:10285000920779F583E08A838AE289834FB7F894F7
+:10286000DE01139620E03EE051E2E32FF0E05093CA
+:102870005700E49120FF03C0E295EF703F5FEF70D7
+:102880008E2F90E0EA3010F0C79601C0C0968D936D
+:102890009D932F5F243149F74FBF8091E800877FD8
+:1028A0008093E8006AE270E0CE0101960E949C10DD
+:1028B00014C0AE014F5F5F4F6091F5010E94E40FBD
+:1028C000009709F441C02091E800277F2093E80099
+:1028D000BC0189819A810E94FD108091E8008B776C
+:1028E0008093E80031C0203879F58091E800877F37
+:1028F0008093E8008091EC018093F1008091E800E2
+:102900008E778093E8000E9494111EC021111CC094
+:102910009091F3019230C0F48091E800877F80931A
+:10292000E8009093EC010E9494118091EC018111D8
+:1029300004C08091E30087FF02C084E001C081E011
+:102940008093F0010E94CF0E8091E80083FF0AC0BF
+:102950008091E800877F8093E8008091EB0080629F
+:102960008093EB00AA960FB6F894DEBF0FBECDBFE2
+:10297000DF91CF911F910895CF938091F00188232B
+:10298000B1F08091E9008F709091EC0090FF02C04F
+:1029900090E801C090E0C92FC82B1092E900809107
+:1029A000E80083FD0E946E13CF70C093E900CF91C1
+:1029B000089590937401809373010895E0917301D9
+:1029C000F0917401309721F00190F081E02D09948D
+:1029D00080E00895FF920F931F93CF93DF938C01B4
+:1029E000E0917301F0917401309799F10280F381C5
+:1029F000E02D09958091D70182FF2BC080FF04C094
+:102A00008DE895E00E945507E80180E1F82E07E87F
+:102A100015E08091D70180FF0BC088811F928F93B2
+:102A20001F930F930E94EE070F900F900F900F903F
+:102A3000FA942196F110EDCF8091D70180FF09C063
+:102A400085E895E0DF91CF911F910F91FF900C9455
+:102A50005507DF91CF911F910F91FF900895E0915D
+:102A60007301F0917401309721F00480F581E02D1D
+:102A70000994089520917101309172018217930792
+:102A800071F09093720180937101E0917301F09164
+:102A90007401309721F00680F781E02D09940895A4
+:102AA00020916F01309170018217930771F090931C
+:102AB000700180936F01E0917301F0917401309780
+:102AC00021F00084F185E02D0994089508950C9477
+:102AD00066150E94D5210E9467090C949B22CF9312
+:102AE000C82F8091D70182FF1EC080FF04C086EAF4
+:102AF00095E00E9455078091D70180FF0CC01F927E
+:102B0000CF9321EA35E03F932F930E94EE070F9079
+:102B10000F900F900F908091D70180FF04C08FE934
+:102B200095E00E9455078C2FCF910C941C0DCF92ED
+:102B3000DF92EF92FF920F931F93CF93DF93CDB766
+:102B4000DEB72B970FB6F894DEBF0FBECDBF0E9445
+:102B5000840936E7E32E31E0F32E00E010E0C02ECA
+:102B6000802F0E94AF0AF701D1907F01D826B1F4DF
+:102B70000F5F1F4F0E30110591F78FEF89838A8306
+:102B80001B820E94DE218160782F9D838C83498186
+:102B90005A816B818D810E943A1641C09091D70174
+:102BA00091FF04C08B870E94B50A8B8520E030E03E
+:102BB0004D2D50E0922FBA01022E02C075956795F7
+:102BC0000A94E2F760FF25C02E83CF82EE24E394BF
+:102BD000F12C02C0EE0CFF1C9A95E2F790E08E21DA
+:102BE0009F2121E0892B09F420E028870E94DE2123
+:102BF0008160782F9A8789874E815F8168858A8571
+:102C00000E943A16F801EA58FE4F80818E25808393
+:102C100006C02F5F3F4F2630310561F6A9CF0E94D5
+:102C20000926109175010E94DE141817A1F00E9468
+:102C3000DE14809375012B960FB6F894DEBF0FBE9D
+:102C4000CDBFDF91CF911F910F91FF90EF90DF905B
+:102C5000CF900C946F152B960FB6F894DEBF0FBE75
+:102C6000CDBFDF91CF911F910F91FF90EF90DF903B
+:102C7000CF900895CF93DF93CDB7DEB72B970FB6E4
+:102C8000F894DEBF0FBECDBF4F83588769877A8720
+:102C90008B87DE01119686E0FD0111928A95E9F796
+:102CA00085E0FE01379601900D928A95E1F7498102
+:102CB0005A816B817C818D819E810E946D1D2B9636
+:102CC0000FB6F894DEBF0FBECDBFDF91CF91089550
+:102CD000CF93C82F882309F4C1C0823859F40E94C9
+:102CE000DE1481FDBBC089E30E940C200E94E82015
+:102CF00089E30CC0833879F40E94DE1480FDAEC0F5
+:102D000083E50E940C200E94E82083E50E945D205C
+:102D1000CF910C94E820843859F40E94DE1482FD8F
+:102D20009DC087E40E940C200E94E82087E4EECF3B
+:102D30008CEF8C0F813A48F48C2F0E94922A8111DB
+:102D40008DC08C2F0E940C20E3CF80E28C0F883046
+:102D500048F4C77081E001C0880FCA95EAF70E9465
+:102D6000AF20D6CF8BE58C0F833078F4C53A29F0AD
+:102D7000C63A31F482E890E005C081E890E002C0F4
+:102D800083E890E0CF910C943A1588E58C0F83315D
+:102D900008F064C0C83A39F1C93A41F1CA3A49F178
+:102DA000CB3A51F1CC3A59F1CD3A61F1C03B69F1DE
+:102DB000CE3A71F1CF3A79F1C13B81F1C23B89F151
+:102DC000C33B91F1C43B99F1C53BA1F1C63BA9F1CD
+:102DD000C73BB1F1C83BB9F1C93BC1F1CA3BC9F529
+:102DE0008AE292E038C082EE90E035C089EE90E051
+:102DF00032C08AEE90E02FC085EB90E02CC086EBCD
+:102E000090E029C087EB90E026C08CEC90E023C0D6
+:102E10008DEC90E020C083E891E01DC08AE891E04D
+:102E20001AC082E991E017C084E991E014C081E200
+:102E300092E011C083E292E00EC084E292E00BC007
+:102E400085E292E008C086E292E005C087E292E067
+:102E500002C080E090E0CF910C945015CF9108957E
+:102E6000882309F44BC0823859F40E94DE1481FF94
+:102E700045C089E30E940C200E94E82089E30CC031
+:102E8000833871F40E94DE1480FF38C083E50E940D
+:102E90000C200E94E82083E50E945D200C94E8202D
+:102EA000843859F40E94DE1482FF28C087E40E940F
+:102EB0000C200E94E82087E4EFCF9CEF980F913A16
+:102EC00058F390E2980F983050F4877091E001C069
+:102ED000990F8A95EAF7892F0E94B520DFCF9BE5ED
+:102EE000980F933020F480E090E00C943A15885AC3
+:102EF000833120F480E090E00C94501508958823ED
+:102F000021F00E94AF200C94E8200895882321F03E
+:102F10000E94B5200C94E8200895CF92DF92EF92A2
+:102F2000FF920F931F93CF93DF93CDB7DEB7289710
+:102F30000FB6F894DEBF0FBECDBF8C0185E0F8015F
+:102F4000DE01119601900D928A95E1F7F80140811A
+:102F50003181F280258122952F7083819481892B84
+:102F600031F03F3F31F481E04F3F19F403C081E07D
+:102F700001C080E080FDC4C249833A8389819A817F
+:102F80002F830E94CA1F9E8388870E94C91F0E94A8
+:102F90009C1E4E81E42FE295EF70F0E0E05AFF4F67
+:102FA0002F8168850C948D2D842F807F142F1F70A6
+:102FB000882311F01295107FFF2059F0112309F496
+:102FC00054C2812F68870E94BF200E94E820688534
+:102FD0004CC2862F0E943017112309F491C2812F11
+:102FE0000E94C52028960FB6F894DEBF0FBECDBF55
+:102FF000DF91CF911F910F91FF90EF90DF90CF90D5
+:103000000C94E820342F307F842F8F70303211F0F1
+:103010008295807F662319F0613019F12BC0FF2063
+:10302000B1F0222309F493C1213009F090C1289610
+:103030000FB6F894DEBF0FBECDBFDF91CF911F91C9
+:103040000F91FF90EF90DF90CF900C94CF20222330
+:1030500019F0213009F454C28E830E94D2208E814F
+:1030600089C1FF2021F0223008F04AC270C121112D
+:1030700047C280C1FF2021F0222309F468C1F5C1B5
+:10308000222309F477C105C2242F269526952370A3
+:1030900030E02115310521F021303105C9F030C271
+:1030A000FF2021F0862F942F937002C080E090E0E3
+:1030B00028960FB6F894DEBF0FBECDBFDF91CF913B
+:1030C0001F910F91FF90EF90DF90CF900C943A15E5
+:1030D000FF2021F0862F942F937002C080E090E0B3
+:1030E00028960FB6F894DEBF0FBECDBFDF91CF910B
+:1030F0001F910F91FF90EF90DF90CF900C9450159F
+:10310000862FFF2019F00E948F2402C00E94F7240E
+:1031100028960FB6F894DEBF0FBECDBFDF91CF91DA
+:103120001F910F91FF90EF90DF90CF900C947C2532
+:10313000842F837009F076C0F110E2C1262F22950A
+:1031400026952770220F220F862F8F70C82ED12C24
+:10315000E12CF12C022E04C0CC0CDD1CEE1CFF1C5B
+:103160000A94D2F764FF10C06FE070E080E090E056
+:1031700004C0660F771F881F991F2A95D2F76095A4
+:1031800070958095909503C060E070E0CB01242F8E
+:10319000269526952370422F50E042305105D1F0FC
+:1031A0004330510559F16C297D298E299F294130E1
+:1031B000510541F128960FB6F894DEBF0FBECDBF82
+:1031C000DF91CF911F910F91FF90EF90DF90CF9003
+:1031D0000C94C11E6C297D298E299F2928960FB633
+:1031E000F894DEBF0FBECDBFDF91CF911F910F913D
+:1031F000FF90EF90DF90CF900C94DB1E0E94C11ED9
+:10320000C701B60128960FB6F894DEBF0FBECDBF3A
+:10321000DF91CF911F910F91FF90EF90DF90CF90B2
+:103220000C94A71EFF2019F0842F817001C0869591
+:10323000882309F465C1262F229526952770220F31
+:10324000220F862F8F70C82ED12CE12CF12C022E4C
+:1032500004C0CC0CDD1CEE1CFF1C0A94D2F764FFEA
+:1032600010C06FE070E080E090E004C0660F771F50
+:10327000881F991F2A95D2F7609570958095909533
+:1032800003C060E070E0CB01242F269526952370C3
+:10329000422F50E042305105D1F04330510559F1F1
+:1032A0006C297D298E299F294130510541F12896AD
+:1032B0000FB6F894DEBF0FBECDBFDF91CF911F9147
+:1032C0000F91FF90EF90DF90CF900C94951F6C2999
+:1032D0007D298E299F2928960FB6F894DEBF0FBE50
+:1032E000CDBFDF91CF911F910F91FF90EF90DF90B5
+:1032F000CF900C94AF1F0E94951FC701B60128966E
+:103300000FB6F894DEBF0FBECDBFDF91CF911F91F6
+:103310000F91FF90EF90DF90CF900C947B1F603F58
+:10332000C9F118F4603E50F49BC0623F09F460C0DC
+:1033300008F44AC0633F09F46FC092C0162F1F7093
+:10334000842F8F71FF2099F00E94141F812F2896DF
+:103350000FB6F894DEBF0FBECDBFDF91CF911F91A6
+:103360000F91FF90EF90DF90CF900C947F170E9409
+:10337000351F812F28960FB6F894DEBF0FBECDBF44
+:10338000DF91CF911F910F91FF90EF90DF90CF9041
+:103390000C948617FF20A1F02111B2C0842F8F71E9
+:1033A00028960FB6F894DEBF0FBECDBFDF91CF9148
+:1033B0001F910F91FF90EF90DF90CF900C945A1FC8
+:1033C000223008F09DC0EACFFF20A1F0842F8F713A
+:1033D00028960FB6F894DEBF0FBECDBFDF91CF9118
+:1033E0001F910F91FF90EF90DF90CF900C94141FDE
+:1033F000FF2061F3842F8F7128960FB6F894DEBFFB
+:103400000FBECDBFDF91CF911F910F91FF90EF9035
+:10341000DF90CF900C94351FFF2091F0842F8F7197
+:1034200028960FB6F894DEBF0FBECDBFDF91CF91C7
+:103430001F910F91FF90EF90DF90CF900C94FF1EA3
+:1034400028960FB6F894DEBF0FBECDBFDF91CF91A7
+:103450001F910F91FF90EF90DF90CF900C94F51E8D
+:10346000FF20A1F0222309F4B1CF862F28960FB6B2
+:10347000F894DEBF0FBECDBFDF91CF911F910F91AA
+:10348000FF90EF90DF90CF900C946816222309F400
+:10349000B1CF862F28960FB6F894DEBF0FBECDBFF2
+:1034A000DF91CF911F910F91FF90EF90DF90CF9020
+:1034B0000C9430174F70C8010E94F70728960FB67A
+:1034C000F894DEBF0FBECDBFDF91CF911F910F915A
+:1034D000FF90EF90DF90CF900C941A1E4F70C801B0
+:1034E00028960FB6F894DEBF0FBECDBFDF91CF9107
+:1034F0001F910F91FF90EF90DF90CF900C94BB0B3A
+:1035000028960FB6F894DEBF0FBECDBFDF91CF91E6
+:103510001F910F91FF90EF90DF90CF9008950E9440
+:10352000CC200E94A1200E94E8200E94AA260E948E
+:103530007C2580E090E00E943A1580E090E00C94B9
+:1035400050150E94BC200C948F1A0E94CA1F292F6C
+:1035500022952F7030E02C3031054CF42A303105A3
+:103560006CF4225031092230310590F407C02C3020
+:10357000310551F02F30310539F00AC0803E10F08E
+:10358000803F31F481E0089593FB882780F9089506
+:1035900080E00895CF93DF9300D000D01F92CDB785
+:1035A000DEB70F900F900F900F900F90DF91CF919B
+:1035B0000895CF93DF9300D000D000D0CDB7DEB711
+:1035C00026960FB6F894DEBF0FBECDBFDF91CF9128
+:1035D00008951F93CF93DF93C091840116E08091EB
+:1035E0008501C81799F0D0E01C9FF0011D9FF00DD8
+:1035F0001124EA57FE4F4081518162817381848199
+:1036000095810E94D91A2196C770E9CFDF91CF9199
+:103610001F9108954091B6015091B7016091B80192
+:103620007091B9018091BA019091BB010C94D91AA3
+:10363000CF938091BB0182958F7009F05FC080911C
+:10364000B801882309F45AC020918401A091850112
+:103650006091B6017091B7018091B9019091BA0162
+:1036600031E06F3F09F030E0B32FC6E02A1709F4CC
+:1036700045C0009721F07F3F21F44B2F03C041E06C
+:1036800001C040E030E040FD35C0C29FF001C39F63
+:10369000F00D1124EA57FE4F418174132BC0408175
+:1036A000641328C04281411125C0438154814817C9
+:1036B000590710F441505109481B590B483C51051A
+:1036C000C8F48091BB018F7080618093BB0186E05C
+:1036D000829FF001839FF00D1124E557FE4F8081FA
+:1036E0008F708061808386EB91E00E948D17CF916F
+:1036F0000C94E91A2F5F3F4F2770B8CFCF910895F0
+:10370000CF92DF92EF92FF920F931F93CF93DF93AD
+:10371000CDB7DEB762970FB6F894DEBF0FBECDBF50
+:103720008C0185E0F801DE011D9601900D928A95CD
+:10373000E1F7D8014C9111965C91119712966C911A
+:1037400012971396ED90FC9014977091B601E0914A
+:10375000B7012091B9013091BA012115310531F03D
+:10376000EF3F31F481E07F3F19F403C081E001C0F5
+:1037700080E0B82FB170CB2E80FD6CC1D090B80125
+:10378000DD2009F4F5C0F091BB01E216F30638F034
+:10379000C701821B930B883C910548F09BC0209584
+:1037A00030952E0D3F1D283C310508F093C08F2F1A
+:1037B000807F09F052C0E51314C0741312C0D62ED6
+:1037C00061110FC0FF70F061F093BB010E940A1BF2
+:1037D00086EB91E00E948D178091BB01F8018583F3
+:1037E0006CC1EF2831F05F3F31F481E04F3F19F4B5
+:1037F00003C081E001C080E080FD03C081E0862736
+:1038000001C080E0F82FF170FF2E80FF1CC0809176
+:1038100084012091850136E0821709F428C190E0E7
+:10382000389FF001399FF00D1124EA57FE4F718146
+:10383000571306C07081471303C07281671303C01A
+:1038400001968770E9CFD62E662309F436C18091A0
+:10385000BB0181608093BB0153C0E51308C07413A2
+:1038600006C0611104C0D8011596FC93AEC04D8707
+:103870005E878D859E856A8B0E94A51A6A8988233A
+:1038800029F1D62E662311F12091BB01822F82955A
+:103890008F7090E002970CF460C08091B601909117
+:1038A000B70198878F831986FB86EA862C87CE011D
+:1038B000079651C0E51731F14D875E878D859E854E
+:1038C0006A8B0E94A51A6A8981112EC0C8010E94C4
+:1038D0008D17A4C08F2F807F69F77E2DF98AE88A23
+:1038E00089890E94CA1A86EB91E00E948D17E6EB47
+:1038F000F1E086E0DF011D928A95E9F70E940A1B3C
+:10390000D12CDBC07413D8CF6111D6CFD801159656
+:10391000FC93C8010E948D17E6EBF1E086E0DF0121
+:103920001D928A95E9F7C9C0D62E662379F22091B7
+:10393000BB01822F82958F7090E0029774F0809186
+:10394000B6019091B7019A8389831B82FD82EC8234
+:103950002E83CE0101960E948D1786E0F801A6EB1A
+:10396000B1E001900D928A95E1F70E94181B6FC09B
+:10397000E216F30628F0C701821B930B9C0104C0DA
+:10398000209530952E0D3F1D283C310508F052C082
+:10399000D62E662309F49ACFE5132CC074132AC0DF
+:1039A0008091BB0180FD1DC0982F92959F70C9F03A
+:1039B000D80115968C9315979F3039F09F5F92959B
+:1039C000907F8F70892B15968C93C8010E948D175C
+:1039D00086E0F801A6EBB1E001900D928A95E1F73F
+:1039E00036C086E0F801A6EBB1E001900D928A9511
+:1039F000E1F763C04D875E878D859E850E94A51A7D
+:103A0000882379F086E0F801A6EBB1E001900D92F1
+:103A10008A95E1F70E94181B0E940A1BDD24D394AB
+:103A20004CC08091BB0181608093BB01C8010E94A2
+:103A30008D1743C07E2DF98AE88A89890E94CA1AA7
+:103A4000E6EBF1E086E0DF011D928A95E9F70E943E
+:103A50000A1B33C0662309F439CF4D875E878D85F5
+:103A60009E850E94A51A882309F430CFCBCF4D87BD
+:103A70005E878D859E850E94CA1F292F22952F70F3
+:103A800030E0223031052CF49F7041F0811106C0E6
+:103A90000CC0243031052CF49F7049F4805E8830CE
+:103AA00020F0C8010E948D17CF2CDC2C06C0D80155
+:103AB00015969C91907F91F7F8CF8D2D62960FB659
+:103AC000F894DEBF0FBECDBFDF91CF911F910F9154
+:103AD000FF90EF90DF90CF9008951F93CF93DF93E7
+:103AE000CDB7DEB72C970FB6F894DEBF0FBECDBFB3
+:103AF0004F83588769877A878B879C87CE01079683
+:103B00000E94801B8823C1F02F8138858A859B8580
+:103B1000892B31F03F3F11F080E003C02F3FE1F7E8
+:103B200081E0811147C04F81588569857A858B85F1
+:103B30009C850E94D91A3EC086E0FE013796DE01C0
+:103B4000119601900D928A95E1F7FF81E8854A85EB
+:103B50005B854115510531F0EF3F31F481E0FF3FC6
+:103B600019F403C081E001C080E080FD23C02091F2
+:103B7000850130E0C9010196877099276091840121
+:103B800070E086179707F1F1F983EA835D834C8330
+:103B900096E0929FD001939FB00D1124AA57BE4F7B
+:103BA000FE01319601900D929A95E1F7809385017F
+:103BB0000E94E91A16E0809184019091850189178D
+:103BC00079F1189FC00111248A579E4F0E94801BD3
+:103BD000882331F1E09184011E9FF0011124EA57FE
+:103BE000FE4F4081518162817381848195810E9461
+:103BF000D91A8091840190E001968770992780936B
+:103C00008401D9CF0E94A11A1092850110928401DB
+:103C1000E6EBF1E086E0DF011D928A95E9F7CACF75
+:103C20002C960FB6F894DEBF0FBECDBFDF91CF91BB
+:103C30001F910895EF92FF920F931F93CF93DF93FD
+:103C40009C01009709F471C0F12CEE24E394E90182
+:103C50002196F9018491843740F4843008F056C0ED
+:103C6000813081F0823021F160C0853709F449C08C
+:103C7000C0F19CE7980F903708F057C08F770E94EB
+:103C8000301746C089010E5F1F4FFE01849190E2FC
+:103C9000980F983050F48770FE2D01C0FF0F8A9561
+:103CA000EAF78F2F0E94BF2015C00E94681614C02B
+:103CB00089010E5F1F4FFE01849190E2980F9830AA
+:103CC00068F48770FE2D01C0FF0F8A95EAF78F2FE9
+:103CD0000E94C5200E94E820E8011AC00E94301707
+:103CE000FBCF2E5F3F4FFE01C491CC2341F08FE903
+:103CF0009FE00197F1F700C00000C150F6CFE90145
+:103D000007C0FE01F490E901229602C00E946816E5
+:103D10008F2D882341F0EFE9FFE03197F1F700C0E4
+:103D200000008150F6CF9E0192CFDF91CF911F917D
+:103D30000F91FF90EF90089508956093C0017093E4
+:103D4000C1018093C2019093C3010C948F1A0F9309
+:103D50001F930091C0011091C1012091C2013091C7
+:103D6000C301062B172B282B392B0093C00110936E
+:103D7000C1012093C2013093C3011F910F910C9494
+:103D80008F1A0F931F930091C0011091C1012091D0
+:103D9000C2013091C301062317232823392300933E
+:103DA000C0011093C1012093C2013093C3011F9140
+:103DB0000F910C948F1A0F931F930091C0011091D3
+:103DC000C1012091C2013091C3010627172728277E
+:103DD00039270093C0011093C1012093C201309391
+:103DE000C3011F910F910C948F1A1092BC01109275
+:103DF000BD011092BE011092BF010C948F1A41E0D8
+:103E000050E060E070E004C0440F551F661F771F4C
+:103E10008A95D2F74093BC015093BD016093BE01D7
+:103E20007093BF010C948F1A41E050E060E070E0A5
+:103E300004C0440F551F661F771F8A95D2F78091E3
+:103E4000BC019091BD01A091BE01B091BF01842B36
+:103E5000952BA62BB72B8093BC019093BD01A0930B
+:103E6000BE01B093BF010C948F1A41E050E060E0B6
+:103E700070E004C0440F551F661F771F8A95D2F764
+:103E800040955095609570958091BC019091BD01D1
+:103E9000A091BE01B091BF0184239523A623B7232F
+:103EA0008093BC019093BD01A093BE01B093BF016C
+:103EB0000C948F1A41E050E060E070E004C0440FC1
+:103EC000551F661F771F8A95D2F78091BC0190918C
+:103ED000BD01A091BE01B091BF0184279527A627FF
+:103EE000B7278093BC019093BD01A093BE01B0930E
+:103EF000BF010C948F1A0F931F930091BC01109176
+:103F0000BD012091BE013091BF01062B172B282B3C
+:103F1000392B0093BC011093BD012093BE01309357
+:103F2000BF011F910F910C948F1A0F931F93009153
+:103F3000BC011091BD012091BE013091BF0106234B
+:103F40001723282339230093BC011093BD0120932C
+:103F5000BE013093BF011F910F910C948F1A0F93E4
+:103F60001F930091BC011091BD012091BE013091C1
+:103F7000BF0106271727282739270093BC01109374
+:103F8000BD012093BE013093BF011F910F910C948E
+:103F90008F1A0895CF92DF92EF92FF920F931F93A3
+:103FA000CF93DF93EC01C090C001D090C101E090AD
+:103FB000C201F090C3018091BC019091BD01A0911C
+:103FC000BE01B091BF01C82AD92AEA2AFB2A0FE113
+:103FD00010E0B701A601002E04C0769567955795AD
+:103FE00047950A94D2F740FF07C0BE01802F0E9478
+:103FF000DE0B8130910539F40150110950F7BE01F3
+:1040000080E00E94DE0BDF91CF911F910F91FF9016
+:10401000EF90DF90CF90089590910C01992361F17A
+:1040200090910D01992341F1982F9695969596952B
+:104030009F3088F4E0910E01F0910F01E90FF11D1E
+:10404000877021E030E001C0220F8A95EAF7818174
+:10405000822B818308959091D70190FF2DC01F92EC
+:104060008F9387ED95E09F938F930E94EE070F90BB
+:104070000F900F900F90089540910E0150910F01F5
+:1040800020E030E09FEFFA01E20FF31F6281681732
+:1040900099F09F3F19F4611101C0922F2F5F3F4F9C
+:1040A0002E30310581F79F3F39F0FA01E90FF11DFC
+:1040B00097FDFA9582830895089590910C019923B4
+:1040C00069F190910D01992349F1982F9695969554
+:1040D00096959F3090F4E0910E01F0910F01E90F59
+:1040E000F11D877021E030E001C0220F8A95EAF7C8
+:1040F000209581812823218308959091D70190FFF5
+:104100001FC01F928F9389EB95E09F938F930E941E
+:10411000EE070F900F900F900F90089540910E01B1
+:1041200050910F0120E030E0FA01E20FF31F92817D
+:10413000981301C012822F5F3F4F2E303105A1F737
+:10414000089581E090E0E0910E01F0910F01E80FF9
+:10415000F91F1082019680319105A9F70895909179
+:10416000D601982B9093D601089580959091D60111
+:1041700098239093D60108951092D60108959091B6
+:10418000D501982B9093D501089580959091D501F4
+:1041900098239093D50108951092D50108958093A6
+:1041A000C40108951092C401089540910E015091E8
+:1041B0000F0120E030E080E0FA01E20FF31F91816F
+:1041C00091118F5F2F5F3F4F2F303105A9F7089571
+:1041D000E0910E01F0910F018091D6018083E09172
+:1041E0000E01F0910F0180819091D501892B808380
+:1041F0009091C401992361F0E0910E01F0910F01BB
+:104200008081892B80830E94D52081111092C40166
+:1042100080910E0190910F010C94EA1490933B0150
+:1042200080933A010895CF92DF92EF92FF920F931D
+:104230001F936C01EE24FF24C114D104E104F104A6
+:1042400021F46B017C0180E001C080E133272F2D38
+:104250001E2D0D2D011511052105310519F0885F61
+:104260006801790197018601A4E036952795179595
+:104270000795AA95D1F7011511052105310519F00A
+:104280008C5F6801790197018601F2E036952795E8
+:1042900017950795FA95D1F70115110521053105F7
+:1042A00019F08E5F68017901B701A60176956795CF
+:1042B00057954795452B462B472B09F08F5F1F914C
+:1042C0000F91FF90EF90DF90CF9008958295982FF7
+:1042D0009C7C96959695837344E0849F900111246D
+:1042E000922B892F8A7A86959575990F892B089537
+:1042F0001F93CF93DF931F92CDB7DEB799830E94B0
+:104300006621182F9981892F0E946621212F30E084
+:10431000322F2227A901482BCA010F90DF91CF919C
+:104320001F9108958091F001843009F11092D80115
+:1043300020E488E190E00FB6F894A895809360009F
+:104340000FBE2093600083B7817F846083BF83B7F3
+:10435000816083BF7894889583B78E7F83BF88E11F
+:104360000FB6F89480936000109260000FBE08951D
+:1043700008950895CF930E94B8210E9484090E9455
+:10438000B921C0E08C2F0E94AF0A811105C0CF5F18
+:10439000CE30C1F780E001C081E0CF9108950E9446
+:1043A000A11A0E94DE140C941C0D82E084BD93E0DF
+:1043B00095BD9AEF97BD80936E0008952FB7F8943E
+:1043C0008091D9019091DA01A091DB01B091DC01DB
+:1043D0002FBF0895CF92DF92EF92FF920F931F931A
+:1043E0002FB7F8944091D9015091DA016091DB0127
+:1043F0007091DC012FBF6A017B01EE24FF248C0148
+:1044000020E030E0C016D106E206F30610F4415079
+:104410005109481B590BCA011F910F91FF90EF9052
+:10442000DF90CF9008951F920F920FB60F92112434
+:104430008F939F93AF93BF938091D9019091DA01AD
+:10444000A091DB01B091DC010196A11DB11D80930B
+:10445000D9019093DA01A093DB01B093DC01BF9105
+:10446000AF919F918F910F900FBE0F901F90189555
+:104470000E94E511F8942FEF87EA91E621508040E1
+:104480009040E1F700C0000087E090EBDC018093F2
+:10449000F9019093FA01A093FB01B093FC012CE089
+:1044A00088E190E00FB6F894A895809360000FBE65
+:1044B00020936000FFCFEF92FF920F931F93CF9353
+:1044C000DF93E82EF12C8F2D0E94AF0AC0E0D0E0E0
+:1044D000082F10E098010C2E02C0359527950A94FC
+:1044E000E2F720FD05C02196C630D10599F709C035
+:1044F0006C2F7F2D80E00E94BC0BE812F4CF81E08E
+:1045000005C0F3948EE0F812DECF80E0DF91CF910A
+:104510001F910F91FF90EF900895CF93C82F8CE2D9
+:104520000E945B22882321F08C2FCF910C945B2278
+:1045300080E0CF910895CF930E94E823811102C0BB
+:104540000E94CE238CEF95E00E945507C5E6C1502E
+:1045500049F00E9484098FE39CE90197F1F700C0BC
+:104560000000F5CF85EF95E00E94550789E20E9493
+:104570008D22811111C18AE20E948D2281110E9437
+:10458000CE2385E00E948D2281110E9438220E9454
+:10459000F3238093D70187E00E948D22882399F12D
+:1045A0008BE10E948D22882351F09091D70191FBDD
+:1045B000882780F921E0822780FB91F922C08EE0D4
+:1045C0000E948D22882351F09091D70192FB882779
+:1045D00080F921E0822780FB92F913C080E10E94DC
+:1045E0008D229091D701882341F093FB882780F991
+:1045F00021E0822780FB93F904C0892F809580FBFE
+:1046000090F99093D7018091D7010E94F7230E94DF
+:1046100005248093EA0180EE0E948D22882341F0D8
+:104620008091EA01982F909590FB80F98093EA01A0
+:1046300089E30E948D22882359F09091EA0191FB31
+:10464000882780F921E0822780FB91F99093EA0185
+:1046500082EE0E948D22882359F09091EA0192FB0C
+:10466000882780F921E0822780FB92F99093EA0164
+:1046700086EE0E948D22882359F09091EA0193FBE7
+:10468000882780F921E0822780FB93F99093EA0143
+:1046900083EE0E948D22882359F09091EA0194FBC9
+:1046A000882780F921E0822780FB94F99093EA0122
+:1046B00085E30E948D22882359F09091EA0195FBB1
+:1046C000882780F921E0822780FB95F99093EA0101
+:1046D00081E30E948D22882359F09091EA0196FB94
+:1046E000882780F921E0822780FB96F99093EA01E0
+:1046F00081E10E948D22882359F09091EA0197FB75
+:10470000882780F921E0822780FB97F99093EA01BE
+:104710008091EA010E9409248091EA0187FB8827A1
+:1047200080F980930D0187E20E948D22C82F8EE1CF
+:104730000E948D228111C2608FE10E948D22811121
+:10474000C46080E20E948D228111C86081E20E94D3
+:104750008D228111C06182E20E948D228111C0628E
+:1047600083E20E948D228111C06484E20E948D2226
+:10477000882311F0C06802C0CC2329F08C2F0E943E
+:1047800000246C2F03C00E94FC23682F70E080E09F
+:1047900090E0CF910C949D1ECF9108956DEE7EEF29
+:1047A00080E090E00E94C32D60E082E090E00E94F3
+:1047B000B52D60E083E090E00E94B52D60E084E0DC
+:1047C00090E00E94B52D60E085E090E00C94B52D5E
+:1047D00080E090E00E94AF2D21E08D3E9E4F09F0D9
+:1047E00020E0822F089582E090E00C94A72D682F9E
+:1047F00082E090E00C94B52D83E090E00C94A72D1E
+:10480000682F83E090E00C94B52D84E090E00C9448
+:10481000A72D682F84E090E00C94B52D8091DF01E6
+:1048200080FF0BC06091130185E0689FB0011124E7
+:1048300075956795759567952AC081FF09C0609148
+:10484000130185E0689FB0011124759567951FC01D
+:1048500082FF07C06091130185E0689FB0011124B9
+:1048600016C04091E0014423C9F06091120146173F
+:1048700088F72091130185E0289F90011124429F21
+:10488000C001439F900D112470E00E94792D603883
+:10489000710540F46115710539F002C065E070E002
+:1048A000862F08958FE7089581E008958091DF01B4
+:1048B00080FF08C06091110170E07595679575954E
+:1048C000679521C081FF06C06091110170E0759568
+:1048D000679519C082FF04C06091110170E010C09B
+:1048E0008091E0018823C1F0609110018617A0F744
+:1048F00090911101989FC001112470E00E94792DC0
+:104900006038710528F46115710521F0862F08952E
+:104910008FE7089581E0089561E070E0F4CF803F73
+:1049200021F40E940E24819504C0813F29F40E9445
+:104930000E248093E3010895823F21F40E940E2407
+:10494000819504C0833F29F40E940E248093E201E4
+:104950000895893F19F40E94562405C08A3F31F416
+:104960000E94562481958093E40108958B3F21F4A1
+:104970000E945624819504C08C3F29F40E9456243D
+:104980008093E5010895843F21F48091E1018160E5
+:1049900017C0853F21F48091E101826011C0863FFC
+:1049A00021F48091E10184600BC0873F21F4809164
+:1049B000E101886005C0883F31F48091E1018061A8
+:1049C0008093E10108958D3F21F48091DF018160A2
+:1049D0000BC08E3F21F48091DF01826005C08F3FC4
+:1049E00029F48091DF0184608093DF010895803F86
+:1049F00039F48091E30187FF6CC01092E30169C034
+:104A0000813F29F48091E3011816BCF362C09091B4
+:104A1000E201823F29F497FF5CC01092E20159C085
+:104A2000833F19F41916CCF354C0893F41F48091A7
+:104A3000E40118160CF04DC01092E4014AC08A3F00
+:104A400029F48091E40187FF44C0F6CF8B3F39F40D
+:104A50008091E50187FF3DC01092E5013AC08C3F8F
+:104A600029F48091E5011816BCF333C0843F21F48A
+:104A70008091E1018E7F17C0853F21F48091E10193
+:104A80008D7F11C0863F21F48091E1018B7F0BC0A7
+:104A9000873F21F48091E101877F05C0883F31F491
+:104AA0008091E1018F7E8093E10113C08D3F21F45D
+:104AB0008091DF018E7F0BC08E3F21F48091DF015A
+:104AC0008D7F05C08F3F29F48091DF018B7F80931C
+:104AD000DF018091E20181110EC08091E30181111B
+:104AE0000AC08091E401811106C08091E501811125
+:104AF00002C01092E00108958091D70183FF7EC02B
+:104B000088E396E00E9455078091E1011F928F9300
+:104B100083E396E09F938F930E94EE0781E396E0F4
+:104B20000E9455072091E201822F992787FD9095D9
+:104B30009F932F938EE296E09F938F930E94EE07B0
+:104B40008CE296E00E9455072091E301822F99277D
+:104B500087FD90959F932F9389E296E09F938F9383
+:104B60000E94EE0787E296E00E9455072091E4013B
+:104B7000822F992787FD90959F932F9384E296E04B
+:104B80009F938F930E94EE0782E296E00E94550762
+:104B90002091E501822F992787FD90959F932F9370
+:104BA0008FE196E09F938F930E94EE078CE196E051
+:104BB0000E9455078091E0011F928F9389E196E052
+:104BC0009F938F930E94EE0787E196E00E9455071E
+:104BD0008091DF011F928F9384E196E09F938F93E2
+:104BE0000E94EE0781E196E00E9455078DB79EB7BF
+:104BF0004C960FB6F8949EBF0FBE8DBF81EE91E02C
+:104C00000E942F150E94DE219093DE018093DD012A
+:104C100008951F93CF93DF938091DD019091DE0182
+:104C20000E94EA214091E001442321F020911401E7
+:104C300030E006C0209115015AE0259F9001112413
+:104C40008217930708F482C08091E2011091E3017A
+:104C5000D091E401C091E501811107C0111105C097
+:104C6000D11103C0CC2309F471C04F3F19F04F5F3D
+:104C70004093E001181624F40E940E248093E20170
+:104C80008091E20187FF05C00E940E2481958093E8
+:104C9000E201111624F40E940E248093E301809116
+:104CA000E30187FF05C00E940E2481958093E301F4
+:104CB0006091E201662339F11091E301112319F1AA
+:104CC000772767FD7095872F972F0E947E2C23E30F
+:104CD00033E343E35FE30E94E22C0E944B2C60939A
+:104CE000E201612F772767FD7095872F972F0E942C
+:104CF0007E2C23E333E343E35FE30E94E22C0E9434
+:104D00004B2C6093E3011D1624F40E9456248093DB
+:104D1000E4018091E40187FF05C00E94562481953B
+:104D20008093E4011C1624F40E9456248093E5012C
+:104D30008091E50187FF05C00E94562481958093EC
+:104D4000E501DF91CF911F910C947C25DF91CF91EC
+:104D50001F910895E1EEF1E085E0DF011D928A9553
+:104D6000E9F71092E0011092DF0108958BE598E0D9
+:104D70000E9455071F9281E08F931F9285E08F93C9
+:104D80008DE098E09F938F930E94EE070F900F9015
+:104D90000F900F900F900F9008958330E9F128F451
+:104DA000813061F0823009F10895853009F462C0E4
+:104DB00008F449C0863009F474C0089520911501A3
+:104DC000862F90E0820F911D8F3F910520F4620F96
+:104DD0006093150103C08FEF809315018091150139
+:104DE0001F928F9386E497E072C020911401862F62
+:104DF00090E0820F911D8F3F910520F4620F609328
+:104E0000140103C08FEF80931401809114011F924D
+:104E10008F9384E397E05BC020911301862F90E08D
+:104E2000820F911D8F3F910520F4620F6093130153
+:104E300003C08FEF80931301809113011F928F9312
+:104E400081E297E044C020911201862F90E0820F0A
+:104E5000911D8F3F910520F4620F6093120103C0F2
+:104E60008FEF80931201809112011F928F938CE03B
+:104E700097E02DC020911101862F90E0820F911DA7
+:104E80008F3F910520F4620F6093110103C08FEFF3
+:104E900080931101809111011F928F9383EF96E00F
+:104EA00016C020911001862F90E0820F911D8F3F38
+:104EB000910520F4620F6093100103C08FEF80937F
+:104EC0001001809110011F928F9388ED96E09F93BF
+:104ED0008F930E94EE070F900F900F900F90089500
+:104EE000833081F128F4813059F08230D1F0089577
+:104EF000853009F449C0B8F1863009F456C00895E8
+:104F000080911501681720F4861B8093150102C05B
+:104F100010921501809115011F928F9389EC96E0F4
+:104F200054C080911401681720F4861B80931401EB
+:104F300002C010921401809114011F928F9387EB8D
+:104F400096E043C080911301681720F4861B80937C
+:104F5000130102C010921301809113011F928F93CD
+:104F600084EA96E032C080911201681720F4861B13
+:104F70008093120102C010921201809112011F92BF
+:104F80008F938FE896E021C080911101681720F47B
+:104F9000861B8093110102C01092110180911101B2
+:104FA0001F928F9386E796E010C0809110016817DA
+:104FB00020F4861B8093100102C010921001809192
+:104FC00010011F928F938BE596E09F938F930E9421
+:104FD000EE070F900F900F900F900895CF93C82F6A
+:104FE0001F928F9320E639E03F932F930E94EE07A4
+:104FF00061E070E080E090E004C0660F771F881FDA
+:10500000991FCA95D2F70E949D1E0F900F900F9086
+:105010000F90CF910C94A11ACF938D3109F465C0F4
+:10502000B0F58E3009F4CBC100F5873009F49BC18F
+:10503000A8F4863009F06AC28091D701817F8E7F03
+:105040008093D70185E699E00E94550787EA9DE0A5
+:105050000E94550781E08093E70180C1883009F400
+:105060004FC08B3009F47CC151C2863109F4EDC1C7
+:1050700038F4803109F4B6C1813109F42DC246C239
+:10508000893109F4CBC18B3109F486C13FC2853324
+:1050900009F434C248F4873209F430C208F430C24B
+:1050A000893209F42BC232C2833438F48A3308F0CF
+:1050B00029C2883309F454C129C2833409F41EC2B9
+:1050C000883409F023C20E94A11A86E99DE00E945B
+:1050D00055079FEF23ED80E3915020408040E1F79A
+:1050E00000C000000E94382239C186EB9DE00E947A
+:1050F00055070E94052C0E94DE140E941C0D2EC133
+:105100008BEA9DE00E94550786E79BE00E945507C9
+:105110000E94FC231F928F9383E79BE09F938F93C2
+:105120000E94EE0781E79BE00E9455070E94F3234F
+:10513000C82F8EE59BE00E9455071F92CF9329E56B
+:105140003BE03F932F930E94EE0787E59BE00E9490
+:1051500055078DE49BE00E9455078C2F81701F92AC
+:105160008F932AE43BE03F932F930E94EE0788E45D
+:105170009BE00E9455078EE39BE00E945507C1FB10
+:10518000882780F91F928F932BE33BE03F932F9367
+:105190000E94EE0789E39BE00E9455078DE29BE0A9
+:1051A0000E945507C2FB882780F91F928F932AE23D
+:1051B0003BE03F932F930E94EE0788E29BE00E9422
+:1051C00055078FE19BE00E945507C3FBCC27C0F930
+:1051D0001F92CF938CE19BE09F938F930E94EE07E9
+:1051E0008AE19BE00E9455070E940524C82F86E0B3
+:1051F0009BE00E9455071F92CF9321E03BE03F9335
+:105200002F930E94EE078FEF9AE00E94550786EEDB
+:105210009AE00E9455078C2F81701F928F9323EE86
+:105220003AE03F932F930E94EE078DB79EB780968A
+:105230000FB6F8949EBF0FBE8DBF81EE9AE00E941C
+:1052400055078AEC9AE00E945507C1FB882780F930
+:105250001F928F9327EC3AE03F932F930E94EE0723
+:1052600085EC9AE00E94550783EB9AE00E9455076F
+:10527000C2FB882780F91F928F9320EB3AE03F937F
+:105280002F930E94EE078EEA9AE00E9455078CE960
+:105290009AE00E945507C3FB882780F91F928F93DD
+:1052A00029E93AE03F932F930E94EE0787E99AE0BD
+:1052B0000E9455078DE89AE00E945507C4FB882795
+:1052C00080F91F928F932AE83AE03F932F930E9430
+:1052D000EE0788E89AE00E94550786E79AE00E9468
+:1052E0005507C5FB882780F91F928F9323E73AE083
+:1052F0003F932F930E94EE0781E79AE00E945507A3
+:1053000085E59AE00E945507C6FB882780F91F9221
+:105310008F9322E53AE03F932F930E94EE0780E5BA
+:105320009AE00E94550788E49AE00E945507C7FB5F
+:10533000CC27C0F91F92CF9385E49AE09F938F9377
+:105340000E94EE0783E49AE00E9455078DB79EB74E
+:105350004C960FB6F8949EBF0FBE8DBFC1E0DBC068
+:105360008CE899E058C08091D701C82FC17080FFA8
+:1053700009C089E89DE00E9455078091D701817F8F
+:105380008E7F44C08DE79DE00E9455078091D70134
+:1053900081608093D701E2CF8091D70181FBCC2738
+:1053A000C0F991E0C927C0FB81F98093D701CC23D4
+:1053B00019F080E79DE025C082E69DE02CC0809139
+:1053C000D70182FBCC27C0F991E0C927C0FB82F945
+:1053D0008093D701CC2319F083E59DE012C083E4CC
+:1053E0009DE019C08091D70183FBCC27C0F991E0E3
+:1053F000C927C0FB83F98093D701CC2351F087E301
+:105400009DE00E9455078091D70181608093D7016C
+:1054100082C08AE29DE00E945507A0CF8BE19DE00B
+:105420000E9455078FEE9CE00E94550782EB9CE09E
+:105430000E94550785E89CE00E94550781E49CE0A6
+:105440000E94550786E19CE0E6CF88E09CE00E9440
+:1054500055070E94DE141F928F938EEE9BE09F9360
+:105460008F930E94EE0780910C011F928F9387ED1E
+:105470009BE09F938F930E94EE0780916E011F9295
+:105480008F9384EC9BE09F938F930E94EE07809113
+:105490000D011F928F9381EB9BE09F938F930E944E
+:1054A000EE078091D9019091DA01A091DB01B091D2
+:1054B000DC01BF93AF939F938F938DE99BE09F9304
+:1054C0008F930E94EE078DB79EB746960FB6F8945D
+:1054D0009EBF0FBE8DBF42CF0E94A11AC0910D0189
+:1054E00081E0C827C0930D01CC2329F083E99BE01C
+:1054F0000E94550710C088E89BE08DCF80E003C074
+:105500008D5101C089530E94EE2728CF86E89BE089
+:105510000E945507C0E08C2FCF91089580E0089538
+:1055200080E00895CF93C82F8091E701813081F00A
+:1055300020F0823009F44CC042C1A0910E01B0911C
+:105540000F018C91813169F0823209F03AC109C0B2
+:10555000A0910E01B0910F018C91813111F0823236
+:1055600049F48C2F0E948E2A81112FC08C2F0E940B
+:105570000C282CC08C2F0E94902A811126C0C43187
+:10558000E1F070F4CB3081F0C031D1F40E94B62646
+:1055900088E599E00E94550782E08093E70115C0F5
+:1055A000C93259F0C83361F485E699E00E94550785
+:1055B0008CE599E00E94550708C01092E70103C1ED
+:1055C00086E599E00E945507FEC081E08170FDC02C
+:1055D000C43220F5CE3108F0C0C0CB3099F1C8F408
+:1055E000C73009F0D2C08AE08093150194E190930E
+:1055F000140193E0909313018093120188E080934B
+:10560000110188E2809310018CEF97E00E9455070A
+:10561000BFC0C33149F1C431C1F0B7C0CB3409F4C4
+:10562000A9C028F4C93289F0C83361F0AEC0C135D1
+:1056300009F49EC0C23509F499C0CE3409F0A5C062
+:105640006AE09EC00E94B626A3C08091E60188232E
+:1056500019F01092E6019CC089E098E00E9455077D
+:1056600081E08093E701B1C083EE97E00E94550787
+:1056700081ED97E00E945507809115011F928F934D
+:105680008EEC97E09F938F930E94EE078CEC97E04F
+:105690000E9455078AEB97E00E94550780911401FC
+:1056A0001F928F9387EB97E09F938F930E94EE0753
+:1056B00085EB97E00E94550786EA97E00E94550720
+:1056C000809113011F928F9383EA97E09F938F93AA
+:1056D0000E94EE0781EA97E00E94550780E997E073
+:1056E0000E945507809112011F928F938DE897E0D9
+:1056F0009F938F930E94EE078BE897E00E945507D7
+:1057000086E797E00E945507809111011F928F93C1
+:1057100083E797E09F938F930E94EE0781E797E0DE
+:105720000E9455078AE597E00E9455078091100175
+:105730001F928F9387E597E09F938F930E94EE07C8
+:1057400085E597E00E9455078DB79EB748960FB63E
+:10575000F8949EBF0FBE8DBF1BC0CE51EC2FF0E062
+:10576000E15DFE4F80818093E60112C061E003C0DD
+:1057700061E006C06AE08091E6010E94CD2608C083
+:105780008091E6010E94702703C08AEF97E013C062
+:105790008091E601882369F01F928F9384EF97E050
+:1057A0009F938F930E94EE070F900F900F900F9092
+:1057B00004C081EF97E00E94550781E006C0109277
+:1057C000E70180E002C080E001CFCF910895E1E8D9
+:1057D000F0E08081886080838081816080838FB7E2
+:1057E000F89493E09093890090ED909388008FBF98
+:1057F0000895EFE6F0E08081826080830895EFE60F
+:10580000F0E080818D7F80830895EFE6F0E0808175
+:1058100092E08927808308951F920F920FB60F920E
+:1058200011242F933F934F935F936F937F938F93A5
+:105830009F93AF93BF93EF93FF938091E801909173
+:10584000E90101969093E9018093E801811103C079
+:1058500082E00E941C0DE091E901E695E695F0E0FA
+:10586000EA53F24FE4918091E8018E1303C080E087
+:105870000E941C0DFF91EF91BF91AF919F918F916D
+:105880007F916F915F914F913F912F910F900FBE3C
+:105890000F901F90189504D06894B1118DC0089591
+:1058A00070D088F09F5790F0B92F9927B751A0F08A
+:1058B000D1F0660F771F881F991F1AF0BA95C9F7A4
+:1058C00012C0B13081F077D0B1E0089574C0672F75
+:1058D000782F8827B85F39F0B93FCCF38695779554
+:1058E0006795B395D9F73EF490958095709561953D
+:1058F0007F4F8F4F9F4F0895E89409C097FB3EF468
+:1059000090958095709561957F4F8F4F9F4F99230C
+:10591000A9F0F92F96E9BB279395F695879577958A
+:105920006795B795F111F8CFFAF4BB0F11F460FF4A
+:105930001BC06F5F7F4F8F4F9F4F16C0882311F0A2
+:1059400096E911C0772321F09EE8872F762F05C0B6
+:10595000662371F096E8862F70E060E02AF09A9551
+:10596000660F771F881FDAF7880F9695879597F946
+:10597000089557FD9058440F551F59F05F3F71F03F
+:105980004795880F97FB991F61F09F3F79F08795A6
+:105990000895121613061406551FF2CF4695F1DF2F
+:1059A00008C0161617061806991FF1CF86957105BF
+:1059B000610508940895E894BB2766277727CB01F3
+:1059C00097F908950BD078C069D028F06ED018F000
+:1059D000952309F05AC05FC01124EECFCADFA0F3AF
+:1059E000959FD1F3950F50E0551F629FF001729F74
+:1059F000BB27F00DB11D639FAA27F00DB11DAA1F93
+:105A0000649F6627B00DA11D661F829F2227B00DDF
+:105A1000A11D621F739FB00DA11D621F839FA00D6A
+:105A2000611D221F749F3327A00D611D231F849FBA
+:105A3000600D211D822F762F6A2F11249F57504011
+:105A40008AF0E1F088234AF0EE0FFF1FBB1F661FAC
+:105A5000771F881F91505040A9F79E3F510570F065
+:105A600014C0AACF5F3FECF3983EDCF386957795A0
+:105A70006795B795F795E7959F5FC1F7FE2B880F60
+:105A8000911D9695879597F9089597F99F6780E8F6
+:105A900070E060E008959FEF80EC089500240A9480
+:105AA0001616170618060906089500240A941216F9
+:105AB0001306140605060895092E0394000C11F42C
+:105AC000882352F0BB0F40F4BF2B11F460FF04C0D9
+:105AD0006F5F7F4F8F4F9F4F0895991B79E004C0F0
+:105AE000991F961708F0961B881F7A95C9F780951D
+:105AF000089597FB072E16F4009407D077FD09D080
+:105B00000E94932D07FC05D03EF4909581959F4F00
+:105B10000895709561957F4F0895EE0FFF1F0590D2
+:105B2000F491E02D0994AA1BBB1B51E107C0AA1FE9
+:105B3000BB1FA617B70710F0A61BB70B881F991F2E
+:105B40005A95A9F780959095BC01CD010895F999D2
+:105B5000FECF92BD81BDF89A992780B50895A8E13E
+:105B6000B0E042E050E00C94CA2D262FF999FECF08
+:105B70001FBA92BD81BD20BD0FB6F894FA9AF99A6A
+:105B80000FBE019608950E94B52D272F0C94B62DB7
+:105B9000DC01CB01FC01F999FECF06C0F2BDE1BDED
+:105BA000F89A319600B40D9241505040B8F70895DC
+:045BB000F894FFCF97
+:105BB40020021D0D0E0EEB0DB70D840D0101C50164
+:105BC40028080A03140A3F4D3620394605F904C350
+:105BD40004A3046A04DD03F6030F04280448040143
+:0A5BE400020304050607080900008B
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/german-kinergo/keymap.c b/keyboard/ergodox_ez/keymaps/german-kinergo/keymap.c new file mode 100644 index 0000000000..751049ac5e --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-kinergo/keymap.c @@ -0,0 +1,210 @@ +// German keymap derived from "german", but more closely resembling the German layout of the Kinesis Ergo Elan. +// +// chschmitz, 2016-01-27 +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_extras/keymap_german.h" + +// Layer names +#define BASE 0 // default layer +#define SYMB 1 // symbol layer +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * X'es mark the spots where this is different from the "german" layout which it is based on. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |X Esc X| 1 | 2 | 3 | 4 | 5 |X ` X| |XPRSCX| 6 | 7 | 8 | 9 | 0 | ß | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * |X Tab X| Q | W | E | R | T |X L1 X| |X L1 X| Z | U | I | O | P | Ü | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Caps | A | S | D | F | G |------| |------| H | J | K | L | Ö | Ä/L2 | + * |--------+------+------+------+------+------|X L2 X| |X L2 X|------+------+------+------+------+--------| + * | LShift | Y | X | C | V | B | | | | N | M | , | . |X - X| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |XLGuiX|X ^ X|X < X|XLEFTX|XRIGHT| |XDownX|X Up X|X # X|X + X|XRGuiX| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |XCTRLX|XALTX | | Alt |Ctrl/Esc| + * ,------+------+------| |------+--------+------. + * |XXX |XXX | Home | | PgUp |XXX |XXX | + * | Bkspc|Del |------| |------| Enter | Space| + * | | | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, DE_ACUT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(1), + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, MO(2), + KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT, + KC_LCTRL, KC_LALT, + KC_HOME, + KC_BSPC,KC_DELT,KC_END, + // right hand + KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + MO(1), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, + KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), + MO(2), KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, + KC_DOWN, KC_UP, DE_HASH, DE_PLUS, KC_RGUI, + KC_RALT, KC_RCTRL, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC + ), +// [BASE] = KEYMAP( // layer 0 : default +// // left hand +// KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MPLY, +// KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), +// KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, +// KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), +// LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, +// ALT_T(KC_APP), KC_LGUI, +// KC_HOME, +// KC_SPC,KC_BSPC,KC_END, +// // right hand +// KC_MNXT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, +// TG(2), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, +// KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), +// MEH_T(KC_NO),KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(DE_MINS), KC_RSFT, +// KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_FN1, +// KC_LALT,CTL_T(KC_ESC), +// KC_PGUP, +// KC_PGDN,KC_TAB, KC_ENT +// ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,DE_EXLM,DE_AT, DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS, + KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV, + KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, DE_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, DE_PLUS, KC_TRNS, + KC_TRNS, DE_AMPR, KC_1, KC_2, KC_3, DE_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, DE_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | Lclk | MsUp | Rclk | | | | | |VolDwn| Mute |VolUp | | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------| |------| | Prev | Stop | Play | Next | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |WhRght|WhDown| WhUp |WhLeft|WhClk | | | |BwSrch|BwBack|BwHome|BwRefr|BwFwd | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | |MsAcl0|MsAcl1|MsAcl2| | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | |Brwser|Brwser| + * | Lclk | Rclk |------| |------|Back |Forwd | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS, + KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5, + KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS, + KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_BTN1, KC_BTN2, KC_TRNS, + // right hand + KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11, + KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12, + KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS, + KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_WBAK, KC_WFWD +), +}; + +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) { + case SYMB: + ergodox_right_led_1_on(); + break; + case MDIA: + ergodox_right_led_2_on(); + break; + default: + ergodox_board_led_off(); + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/german-kinergo/layout-code.png b/keyboard/ergodox_ez/keymaps/german-kinergo/layout-code.png Binary files differnew file mode 100644 index 0000000000..a0ef551e12 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-kinergo/layout-code.png diff --git a/keyboard/ergodox_ez/keymaps/german-kinergo/layout-media.png b/keyboard/ergodox_ez/keymaps/german-kinergo/layout-media.png Binary files differnew file mode 100644 index 0000000000..56aea1dca4 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-kinergo/layout-media.png diff --git a/keyboard/ergodox_ez/keymaps/german-kinergo/layout.png b/keyboard/ergodox_ez/keymaps/german-kinergo/layout.png Binary files differnew file mode 100644 index 0000000000..76a1aa5d7a --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-kinergo/layout.png diff --git a/keyboard/ergodox_ez/keymaps/german-kinergo/readme.md b/keyboard/ergodox_ez/keymaps/german-kinergo/readme.md new file mode 100644 index 0000000000..557d85a8a4 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-kinergo/readme.md @@ -0,0 +1,35 @@ +# German Layout for the ErgoDox + +This layout is inspired by the "kinesis-qwerty-mod" from benblazak's +[ergodox-firmware](https://github.com/benblazak/ergodox-firmware), as well as by the "german" layout from the +[qmk_firmware](https://github.com/jackhumbert/qmk_firmware). +The goal was to have a layout that is pretty close to an ordinary German +keyboard, so I don't have to make adjustments on the operating system level +and I keep some of the muscle memory to use a regular keyboard. + +Modifications I made with regard to the aforementioned layouts: + +* The key layout is pretty close to the layout of a German Kinesis Ergo Elan. + The only exception I made is that I reversed the "up" and "down" cursor keys, + since that feels more natural to me. + +* All layer changes are "momentary", i.e. they only last as long as the respective key is pressed. + +* I sacrificed the Hyper and Meh keys, which I don't use, and put layer change keys in their place. + +* I added a PrintScreen key which I use quite regularly for screenshots. + +## Default Layer + +![Layout of the default layer](layout.png "Layout of the default layer") + +## Code Layer + +![Layout of the code layer](layout-code.png "Layout of the code layer") + +## Media Layer + +![Layout of the media layer](layout-media.png "Layout of the media layer") + +Christoph Schmitz <schm4704 at web dot de> +2016-01-28 diff --git a/keyboard/ergodox_ez/keymaps/jack/keymap.c b/keyboard/ergodox_ez/keymaps/jack/keymap.c index 2677a3d8fa..f8f73a1afd 100644 --- a/keyboard/ergodox_ez/keymaps/jack/keymap.c +++ b/keyboard/ergodox_ez/keymaps/jack/keymap.c @@ -8,29 +8,6 @@ #define MDIA 2 // media keys const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' | - * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, @@ -51,28 +28,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PGUP, KC_PGDN, KC_SPC,KC_SPC ), -/* Keymap 1: Symbol Layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS [SYMB] = KEYMAP( // left hand KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, @@ -93,29 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), -/* Keymap 2: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | |Brwser| - * | | |------| |------| |Back | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// MEDIA AND MOUSE -KEYMAP( +[MDIA] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, diff --git a/keyboard/ergodox_ez/keymaps/jacobono/README.md b/keyboard/ergodox_ez/keymaps/jacobono/README.md new file mode 100644 index 0000000000..48de0509fc --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/jacobono/README.md @@ -0,0 +1,34 @@ +# Default Layer # + +I'm using the colemak layer -- customized a bit to work a bit better when using spacemacs as my editor. + +![default-layer](img/colemak-default-layer.png) + +## Special Keys ## + +`SC1` => `LGUI + TAB` + +`SC2` => `LGUI + SPACE + TAB` + +`L1` => Switch to QWERTY Layout + +`T(L2)` => Toggle Symbol Layer + +`T(L3)` => Toggle Number and D-Pad Layer + +# QWERTY # + +Nothing special here -- just need this layer tucked away for the `WASD`. Which is literally the only reason I use it. +Just have the same button to toggle back to colemak. + +# Symbol Layer # + +![symbol-layer](img/symbol-layer.png) + +This is just putting matching closing symbols next to each other -- useful when editing lisp. + +# Number and D-Pad Layer # + +Just a basic number layer with a D-PAD on the other side. + +![number-dpad-layer](img/number-dpad-layer.png) diff --git a/keyboard/ergodox_ez/keymaps/jacobono/img/colemak-default-layer.png b/keyboard/ergodox_ez/keymaps/jacobono/img/colemak-default-layer.png Binary files differnew file mode 100644 index 0000000000..06f63c4968 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/jacobono/img/colemak-default-layer.png diff --git a/keyboard/ergodox_ez/keymaps/jacobono/img/number-dpad-layer.png b/keyboard/ergodox_ez/keymaps/jacobono/img/number-dpad-layer.png Binary files differnew file mode 100644 index 0000000000..4dd7182785 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/jacobono/img/number-dpad-layer.png diff --git a/keyboard/ergodox_ez/keymaps/jacobono/img/symbol-layer.png b/keyboard/ergodox_ez/keymaps/jacobono/img/symbol-layer.png Binary files differnew file mode 100644 index 0000000000..ee224cf0c1 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/jacobono/img/symbol-layer.png diff --git a/keyboard/ergodox_ez/keymaps/jacobono/jacobono.hex b/keyboard/ergodox_ez/keymaps/jacobono/jacobono.hex new file mode 100644 index 0000000000..cf68f854fd --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/jacobono/jacobono.hex @@ -0,0 +1,1142 @@ +:100000000C940D030C9451030C9451030C94510364
+:100010000C9451030C9451030C9451030C94510310
+:100020000C9451030C9451030C946A0C0C943C0DE9
+:100030000C9451030C9451030C9451030C945103F0
+:100040000C9451030C94C1210C9451030C94510352
+:100050000C9451030C94521B0C9451030C945103B7
+:100060000C9451030C9451030C9451030C945103C0
+:100070000C9451030C9451030C9451030C945103B0
+:100080000C9451030C9451030C9451030C945103A0
+:100090000C9451030C9451030C9451030C94510390
+:1000A0000C9451030C9451030C945103A90DCB0DE6
+:1000B000B90ECB0DB90E100E330EB90E880E9B0E75
+:1000C0007D117D11AC11AC11EF112D1246144614A7
+:1000D00046124614471347131A1446144614311493
+:1000E0000000F0A201002B002A00E10001540000F2
+:1000F0001E00140004001D71010003521F001A00AD
+:1001000015001B0001002800200009001600060051
+:1001100052002C00210013001700190002522C0A73
+:1001200022000A00070005000000E3005000010063
+:1001300000000100000065004F00010000002B08D6
+:100140000000297123000D000B000E000000E200EA
+:1001500024000F001100100002522C0A2500180084
+:100160000800360051002C0026001C000C0037004F
+:10017000010028002700330012003871E600035206
+:100180004C002B004C00E500E70000002A002B008B
+:10019000E000E100010000001E00140004001D71D9
+:1001A00034004D001F001A0016001B00E104E3009C
+:1001B000200008000700060050002C002100150058
+:1001C0000900190002524A00220017000A00050027
+:1001D00000002B00500001000000E20000004C0075
+:1001E0004F0001000000E6000000E20023001C00B8
+:1001F0000B00110000002971240018000D001000F0
+:1002000002524B0025000C000E0036005100280061
+:10021000260012000F0037002F00E7002700130010
+:100220003384387130004E004C003100E400E500AA
+:10023000C1000000010001000100010001000000F8
+:100240003A00010031020100010001003B001F02E1
+:100250001E022202010001003C0025022E022302A0
+:10026000010001003D002E002D00210201000100CF
+:100270003E002D02340224020000010001000100B2
+:100280000000010000000100010001000000010069
+:10029000000001003F00350234023300000001007D
+:1002A00040002F0226022F00010001004100300211
+:1002B000270230000100010042002002340031001A
+:1002C0000100010043003302350038000100010045
+:1002D0004400450001000100010000000100010090
+:1002E0000100010001000000010001000100010007
+:1002F00001000100010001005000010001000100A7
+:100300000100520051000100010001000100010044
+:100310004F00010001000100010001000100010087
+:1003200000000100010001000000010000000100C8
+:100330000100010000000100000001000100210295
+:100340002E002402000001000100240021001E00F4
+:10035000360001000100250022001F0027000100D7
+:1003600001002600230020003700010001002E02BA
+:100370002D002502380001000100010001000100EC
+:100380000100000001000100010001000100000067
+:100390000100010001000100010001000100010055
+:1003A000F2000100010001000100F000F100010075
+:1003B000F400010001000100F3000100F50001005C
+:1003C0000100010001000100000001000100010026
+:1003D0000000010000000100010001000000010018
+:1003E0000000010001000100010001000000010007
+:1003F0000100010001000100A9000100010001004D
+:100400000100AC00AA00B600010001000100AB0031
+:10041000A80001000100010001000100010001002D
+:1004200001000100AE0001000100000016034500BC
+:10043000720067006F0044006F00780020004500E4
+:100440005A00000016034500720067006F00440068
+:100450006F007800200045005A00000004030904E2
+:1004600009026D00040100A0FA0904000001030163
+:100470000100092111010001223F00070581030845
+:10048000000A090401000103010200092111010011
+:1004900001224D000705820308000A090402000139
+:1004A0000300000009211101000122360007058325
+:1004B0000308000A090403000103000000092111D8
+:1004C0000100012239000705840310000112011008
+:1004D0000100000008EDFE07130100010200010504
+:1004E000010906A101050719E029E7150025019575
+:1004F0000875018102050819012905950575019105
+:10050000029501750391010507190029771500254A
+:1005100001957875018102C005010980A10185025C
+:1005200016010026B7001A01002AB70075109501C0
+:100530008100C0050C0901A1018503160100269C5C
+:10054000021A01002A9C02751095018100C0050164
+:100550000902A1010901A1000509190129051500D8
+:10056000250195057501810295017503810105013C
+:10057000093009311581257F9502750881060938F2
+:100580001581257F950175088106050C0A3802152D
+:1005900081257F950175088106C0C005010906A166
+:1005A00001050719E029E715002501950875018166
+:1005B0000295017508810105081901290595057540
+:1005C0000191029501750391010507190029FF1595
+:1005D0000025FF950675088100C00000000000009E
+:1005E0000000000000010204060A0F17202C3A4AFE
+:1005F0005D71879DB3C7DAE9F5FCFFFCF5E9DAC761
+:10060000B39D87715D4A3A2C20170F0A0604020138
+:100610000000000000000000000011241FBECFEF0A
+:10062000DAE0DEBFCDBF04B603FE24C08091EE0148
+:100630009091EF01A091F001B091F1018730904BC2
+:10064000A740B04BB9F41092EE011092EF01109256
+:10065000F0011092F10114BE84B7877F84BF88E156
+:100660000FB6F89480936000109260000FBEE0E037
+:10067000FFE3099511E0A0E0B1E0E6E0F7E402C095
+:1006800005900D92A433B107D9F711E0A4E3B1E0CE
+:1006900001C01D92AE3EB107E1F70E94AE090C9475
+:1006A00081230C94000061110BC0FC01828188231E
+:1006B00021F085EE0E941A1003C085EE0E94E21020
+:1006C00080E090E0089508956091B1017091B201C9
+:1006D0008091B3019091B4010E94811A56985E985E
+:1006E00025982D9826982E9827982F98813019F0C4
+:1006F000823021F00895259A2D9A0895269A2E9AEF
+:10070000089584E693E0892B11F00E94640380E051
+:1007100090E0089556985E9825982D9826982E98E2
+:1007200027982F988FEF90E090938900809388000E
+:1007300090938B0080938A0090938D0080938C001F
+:10074000259A2D9A2FEF80E792E02150804090402B
+:10075000E1F700C00000269A2E9A2FEF80E792E082
+:10076000215080409040E1F700C00000279A2F9A66
+:100770002FEF80E792E0215080409040E1F700C0E9
+:10078000000025982D982FEF80E792E021508040BF
+:100790009040E1F700C0000026982E982FEF80E7E8
+:1007A00092E0215080409040E1F700C0000027987F
+:1007B0002F9856985E9825982D9826982E982798C9
+:1007C0002F98089589EA8093800089E080938100C2
+:1007D00024982C983F988AB18F748AB96E98479A5A
+:1007E0008BB1806B8BB9769A0E948A0383E693E083
+:1007F000892B11F00E94630380E090E0089580E26D
+:10080000809300018091340181110EC00E944E043A
+:1008100081E0809334012FEF83ED90E321508040FD
+:100820009040E1F700C0000080E40E9454048093EF
+:10083000000181112EC00E947E048093000181116D
+:1008400028C00E947E0480930001811122C08FE3A2
+:100850000E947E048093000181111BC00E947604D7
+:1008600080E40E94540480930001811112C08CE046
+:100870000E947E048093000181110BC00E947E04BF
+:1008800080930001811105C08FE30E947E04809354
+:1008900000010E9476048091000108951092B90031
+:1008A0008AE08093B800089594EA9093BC009091F8
+:1008B000BC0097FFFCCF9091B900987F983021F051
+:1008C000903111F081E008958093BB0084E880931B
+:1008D000BC008091BC0087FFFCCF8091B900887F6D
+:1008E000883111F0803471F780E0089584E98093B5
+:1008F000BC008091BC0084FDFCCF08958093BB00B8
+:1009000084E88093BC008091BC0087FFFCCF90916D
+:10091000B900987F81E0983209F480E0089584E876
+:100920008093BC008091BC0087FFFCCF8091BB000E
+:10093000089580910001811115C080E40E94540443
+:100940008093000181110CC082E10E947E0480939B
+:100950000001811105C08FEF0E947E048093000189
+:100960000E94760484B1807F84B985B1807F85B987
+:100970008AB1837F8AB98BB1837F8BB93E984698C1
+:1009800008950E94FF03809300010E94990480B3A0
+:100990008C7080BB81B3836F81BBA6E3B1E0E4E4DC
+:1009A000F1E08EE08E0F11921D928E13FCCF82EE3D
+:1009B00093E0892B11F00C94E2030895BF92CF923B
+:1009C000DF92EF92FF920F931F93CF93DF9380916B
+:1009D0000001882379F0809135018F5F8093350184
+:1009E000811108C00E94FF0380930001811102C0A1
+:1009F0000E948A0306E311E0C0E0D0E0DD24D39436
+:100A000082E0C82EEE24E394F12CC730D10500F526
+:100A100080910001811164C080E40E94540480939D
+:100A20000001811112C082E10E947E0480930001C6
+:100A300081110BC0C7010C2E01C0880F0A94EAF780
+:100A400080950E947E04809300010E94760448C035
+:100A5000CA30A1F028F4C83059F0C93061F005C09F
+:100A6000CC3089F070F0CD3089F0209A289810C0F1
+:100A7000219A29980DC0229A2A980AC0239A2B9865
+:100A800007C0529A01C0539A5B9802C03E9A46989A
+:100A900090EA9A95F1F79FB1799902C082E001C07E
+:100AA00080E091709D25982B7C9902C084E001C064
+:100AB00080E0892B7D9902C038E001C030E0832BB3
+:100AC0007E9902C020E101C020E0822B9FB1909569
+:100AD000991F9927991F9295990F907E892B0FC086
+:100AE0008091000181114FC080E40E9454048093E2
+:100AF00000018823A9F1B12C0E9476048B2DF80106
+:100B00009081981719F08083C09201010E94990486
+:100B100021960F5F1F4FCE30D10509F076CF80911F
+:100B200001018823B1F0815080930101882339F0BD
+:100B30008FE99FE00197F1F700C000000AC0A4E42C
+:100B4000B1E0E6E3F1E0CF01825F91919D938E13D6
+:100B5000FCCF81E893E0892BC1F00E94810315C08E
+:100B600083E10E947E04809300018111C4CF81E45F
+:100B70000E945404809300018111BDCF0E948F0414
+:100B8000B82EB094B9CF80E0BACF81E0DF91CF9199
+:100B90001F910F91FF90EF90DF90CF90BF9008953D
+:100BA000E82FF0E0EC5BFE4F8081089508958B3BC9
+:100BB000910578F4883A910540F5853A9105D0F48D
+:100BC0008430910508F0B1C08130910509F4ADC0C1
+:100BD0006BC0803E910508F467C0883E910508F41B
+:100BE000A4C09C01205F31092031310508F05CC0B0
+:100BF00090650895853A910509F459C0863A9105A2
+:100C000009F058C082E890E40895883A910509F403
+:100C100054C0893A910509F453C08A3A910509F400
+:100C200052C08B3A910509F451C08C3A910509F4F0
+:100C300050C08D3A910509F44FC0803B910509F4ED
+:100C40004EC08E3A910509F44DC08F3A910509F4D2
+:100C50004CC0813B910509F44BC0823B910509F4DE
+:100C60004AC0833B910509F449C0843B910509F4CE
+:100C700048C0853B910509F447C0863B910509F4BE
+:100C800046C0873B910509F445C0883B910509F4AE
+:100C900044C0893B910509F443C08A3B910509F49E
+:100CA00042C080E094E4089580E090E0089581E8F7
+:100CB00090E4089583E890E4089582EE94E4089522
+:100CC00089EE94E408958AEE94E4089585EB94E423
+:100CD000089586EB94E4089587EB94E408958CECF2
+:100CE00094E408958DEC94E4089583E895E40895E0
+:100CF0008AE895E4089582E995E4089584E995E405
+:100D0000089581E296E4089583E296E4089584E2EA
+:100D100096E4089585E296E4089586E296E40895BF
+:100D200087E296E408958AE296E40895089596E0AD
+:100D3000799FF001112494E5899FE00DF11D1124A4
+:100D4000E60FF11DEE0FFF1FEC51FF4F85919491BF
+:100D50000895880F991FFC01E05AF0408591949105
+:100D60000895880F991FFC01E052FF4F85919491DF
+:100D7000089526E0729FF001112444E5849FE00D60
+:100D8000F11D1124E60FF11DEE0FFF1FEC51FF4F77
+:100D9000859194919C013A9521154FE1340708F40F
+:100DA0001AC13F512115304120F49F700E94B106B5
+:100DB00008959C0130532115304118F49927906C07
+:100DC0000895811520E5920769F40E9468144FEF99
+:100DD00084E39CE0415080409040E1F700C0000077
+:100DE0000C94771B813020E5920731F48091CC017F
+:100DF00081608093CC0108959C01305521153041CC
+:100E000008F051C0292F33272F70332721303105A7
+:100E1000D9F4AC014370552702C0220F331F4A9505
+:100E2000E2F73C68AC0164E0440F551F6A95E1F7B6
+:100E300044275370242B352B73E0880F991F7A9524
+:100E4000E1F7807699271DC02230310529F4982FCB
+:100E50008827816F906A089523303105A9F4AC0189
+:100E60004370552721E030E002C0220F331F4A951E
+:100E7000E2F73C6843E0880F991F4A95E1F7807ECE
+:100E80009770822B932B089524303105E1F4AC0147
+:100E90004370552721E030E002C0220F331F4A95EE
+:100EA000E2F73A68E7CF9C0130572115304118F43A
+:100EB0009F70906208959C0130582115304118F4BC
+:100EC0009F70906A0895803E9105E0F4803C910502
+:100ED00058F58133910509F46FC048F489329105C2
+:100EE00009F463C08A32910509F46DC072C0893378
+:100EF0009105E9F082389105D1F08533910509F427
+:100F00004DC067C0833E910581F138F4803E910564
+:100F1000B9F0823E9105D9F05CC0863E910561F141
+:100F2000873E9105A1F155C00E94A9060895209120
+:100F3000DF0120FD02C021FF4CC080EE90E049C0DF
+:100F40008091DF0180FFF9CF89E390E042C080917A
+:100F5000DF0182FF0EC08091DF0184FF03C080E0CB
+:100F600090E037C083EE90E034C08091DF0182FFD3
+:100F7000F2CF82EE90E02DC08091DF0183FF0BC0A5
+:100F80008091DF0184FDEBCF87EE90E022C080915D
+:100F9000DF0183FFF5CF86EE90E01BC08091DF017B
+:100FA00085FF07C089E290E014C08091DF0185FFD2
+:100FB000F9CF85E390E00DC08091DF0186FF07C087
+:100FC0008AE290E006C08091DF0186FFF9CF81E3DD
+:100FD00090E00E94D70508950895809162010895D8
+:100FE000CF93DF9300D01F92CDB7DEB79C018091E5
+:100FF000E501843019F593E099833B832A8390932C
+:10100000E9008FEF9091E800815095FD06C095EDC5
+:101010009A95F1F700008111F5CF8091E80085FFE6
+:101020000DC040E050E063E070E0CE0101960E9408
+:101030005A0A8091E8008E778093E8000F900F9015
+:101040000F90DF91CF910895CF93DF9300D01F923F
+:10105000CDB7DEB72091E501243021F522E02983C8
+:101060009B838A8383E08093E9008FEF9091E8006F
+:10107000815095FD06C095ED9A95F1F7000081111C
+:10108000F5CF8091E80085FF0DC040E050E063E0BF
+:1010900070E0CE0101960E945A0A8091E8008E7796
+:1010A0008093E8000F900F900F90DF91CF910895FB
+:1010B0002091E5012430F1F422E02093E9002FEFA4
+:1010C0003091E800215035FD06C035ED3A95F1F735
+:1010D00000002111F5CF2091E80025FF0BC040E072
+:1010E00050E065E070E00E945A0A8091E8008E7737
+:1010F0008093E8000895CF93DF93EC019091E50190
+:10110000943009F046C080910C018823D9F0809179
+:101110000D018823B9F09093E9008FEF9091E800DA
+:10112000815095FD06C095E19A95F1F70000811177
+:10113000F5CF8091E80085FF2CC040E050E060E1F1
+:1011400070E017C081E08093E9008FEF9091E80094
+:10115000815095FD06C095ED9A95F1F7000081113B
+:10116000F5CF8091E80085FF14C040E050E068E0D2
+:1011700070E0CE010E945A0A8091E8008E77809339
+:10118000E80080E1FE01A2E5B1E001900D928A95B0
+:10119000E1F7DF91CF9108958091E401811109C0B9
+:1011A0000E94EF0B0E944C0C8091E20084608093BF
+:1011B000E20008951092E401089508950C94AE2180
+:1011C0000E940D1B0E94B4210E94F20E0C94EC07A9
+:1011D00042E061EC81E00E94690B42E061EC82E058
+:1011E0000E94690B42E061EC83E00E94690B42E1DE
+:1011F00061EC84E00C94690B8091E701833009F481
+:1012000055C030F4813071F0823009F48EC00895F9
+:101210008A3009F47AC08B3009F460C0893009F053
+:101220009CC020C08091E601813A09F096C080916F
+:10123000E800877F8093E8008091EA019091EB01BC
+:10124000892B21F460E182E591E003C060E080E059
+:1012500090E070E00E94A50A8091E8008B7780936F
+:10126000E80008958091E601813209F076C080910E
+:10127000EA019091EB01009719F0039709F06DC016
+:101280008091E800877F8093E8008091E80082FDEC
+:1012900005C08091E5018111F8CF5FC08091F10018
+:1012A000809362018091E8008B7753C08091E601C2
+:1012B000813A09F052C08091EA019091EB01892BAB
+:1012C00009F04BC08091E800877F8093E80080910F
+:1012D000E80080FFFCCF80910C0136C08091E601D0
+:1012E0008132D9F58091EA019091EB01892BA9F522
+:1012F0008091E800877F8093E8000E949E0B809198
+:10130000E80180930C010C9468148091E60181320D
+:1013100021F58091E800877F8093E8000E949E0B72
+:101320008091E9018093630108958091E601813AFB
+:10133000A1F48091E800877F8093E8008091E80025
+:1013400080FFFCCF809163018093F1008091E800E1
+:101350008E778093E8000C949E0B089584B7877F66
+:1013600084BF88E10FB6F89480936000109260000B
+:101370000FBE90E080E80FB6F894809361009093E0
+:1013800061000FBE0E94410F0E94EF0B0E944C0CA7
+:101390008091E20084608093E20078940E94D20EF3
+:1013A0000E94430F82E091E00E94ED0E0E949C217A
+:1013B0008091E501853069F40E94D11A8091E301A2
+:1013C0008823B1F30E94F91A882391F30E94440AFA
+:1013D000EFCF0E94490FECCF292F3327233031055F
+:1013E000C9F064F42130310581F02230310509F073
+:1013F00043C08DE690E020E634E042C02132310562
+:10140000F1F02232310541F137C082E190E02DEC5C
+:1014100034E036C099278130910541F08230910542
+:1014200041F0892B49F5ECE5F4E005C0E4E4F4E093
+:1014300002C0ECE2F4E0849190E09F0121C06430AE
+:10144000D8F4E62FF0E0EE0FFF1FEE5DFE4F208197
+:10145000318189E090E014C0643070F470E0FB01E9
+:10146000EE0FFF1FE65EFE4F20813181FB01EA5E39
+:10147000FE4F808190E004C080E090E020E030E00A
+:10148000FA0131832083089580E189BD82E189BD1D
+:1014900009B400FEFDCF8091D8008F7D8093D800E5
+:1014A0008091E00082608093E0008091E00081FD07
+:1014B000FCCF0895CF92DF92EF92FF920F931F938C
+:1014C000CF93DF93EC018B016A010E94BD0B811168
+:1014D00033C0C114D10439F0F60180819181081B19
+:1014E000190BC80FD91FE12CF12C0115110519F1A9
+:1014F0008091E80085FD16C08091E8008E7780938A
+:10150000E800C114D10449F0F60180819181E80E10
+:10151000F91EF182E08285E00FC00E94BD0B882396
+:1015200021F30AC089918093F10001501109FFEF66
+:10153000EF1AFF0ADACF80E0DF91CF911F910F9170
+:10154000FF90EF90DF90CF9008952091EC013091C3
+:10155000ED012617370748F06115710539F4209120
+:10156000E8002E772093E80001C0B90140E0611542
+:101570007105A9F12091E501222309F443C025302A
+:1015800009F442C02091E80023FD40C02091E8000A
+:1015900022FD32C02091E80020FFE9CF4091F30006
+:1015A0002091F20030E0342BFC01CF016115710570
+:1015B00059F02830310540F481918093F100615059
+:1015C00071092F5F3F4FF1CF41E02830310509F01D
+:1015D00040E02091E8002E772093E800C8CF411129
+:1015E000C9CF0AC08091E501882361F0853061F0A0
+:1015F0008091E80083FD0AC08091E80082FFF2CF6D
+:1016000080E0089582E0089583E0089581E00895E0
+:101610002091EC013091ED012617370748F0611554
+:10162000710539F42091E8002E772093E80001C07D
+:10163000B901FC0120E06115710591F18091E5018E
+:10164000882309F440C0853009F43FC08091E80048
+:1016500083FD3DC08091E80082FD2FC08091E800AD
+:1016600080FFE9CF2091F3008091F20090E0922B6F
+:101670006115710559F08830910540F4249120934B
+:10168000F1003196615071090196F2CF21E008977F
+:1016900009F020E08091E8008E778093E800CBCFBE
+:1016A0002111CCCF0AC08091E501882361F08530FB
+:1016B00061F08091E80083FD0AC08091E80082FF1C
+:1016C000F2CF80E0089582E0089583E0089581E0FC
+:1016D0000895982F973058F59093E900981739F0AE
+:1016E0007091EC002091ED005091F00003C0242F88
+:1016F000762F50E021FF19C03091EB003E7F3093F0
+:10170000EB003091ED003D7F3093ED003091EB0028
+:1017100031603093EB007093EC002093ED00509318
+:10172000F0002091EE0027FF07C09F5FD3CF8F709E
+:101730008093E90081E0089580E008958091E601BA
+:1017400087FF11C08091E80082FD05C08091E5010E
+:101750008111F8CF11C08091E8008B770BC0809188
+:10176000E501882349F08091E80080FFF8CF80915F
+:10177000E8008E778093E80008952091E40030918E
+:10178000E50095E64091EC00842F817040FF22C077
+:101790008091E80080FD1CC08091E501882391F0D4
+:1017A000853091F08091EB0085FD10C04091E40000
+:1017B0005091E5004217530729F39A01915011F710
+:1017C00084E0089582E0089583E0089581E008951B
+:1017D00080E008954091E80042FFDECF08950E9426
+:1017E0005D0C0E94650CE0EEF0E0808181608083FA
+:1017F000E8EDF0E080818F77808319BCA7EDB0E041
+:101800008C918E7F8C9380818F7E80831092E401F7
+:1018100008950F931F93CF93DF930E945D0C0E9456
+:10182000650CC8EDD0E088818F77888388818068D7
+:10183000888388818F7D888319BC1092E50110927E
+:10184000E1011092E3011092E20100EE10E0F801D4
+:1018500080818B7F808388818160888342E060E023
+:1018600080E00E94690BE1EEF0E080818E7F808352
+:10187000E2EEF0E0808181608083808188608083F7
+:10188000F80180818E7F8083888180618883DF91E9
+:10189000CF911F910F910895E8EDF0E080818F7E48
+:1018A0008083E7EDF0E080818160808384E082BF07
+:1018B00081E08093E4010C94090CE8EDF0E0808174
+:1018C0008E7F80831092E20008951092DA001092C9
+:1018D000E10008951F920F920FB60F9211242F93DB
+:1018E0003F934F935F936F937F938F939F93AF93A8
+:1018F000BF93EF93FF938091E10082FF0BC0809133
+:10190000E20082FF07C08091E1008B7F8093E100BD
+:101910000E94D10E8091DA0080FF1FC08091D80014
+:1019200080FF1BC08091DA008E7F8093DA00809167
+:10193000D90080FF0DC080E189BD82E189BD09B475
+:1019400000FEFDCF81E08093E5010E94CC0805C038
+:1019500019BC1092E5010E94DA088091E10080FF35
+:1019600019C08091E20080FF15C08091E2008E7F57
+:101970008093E2008091E20080618093E200809198
+:10198000D80080628093D80019BC85E08093E5017F
+:101990000E94DE088091E10084FF30C08091E20067
+:1019A00084FF2CC080E189BD82E189BD09B400FEBD
+:1019B000FDCF8091D8008F7D8093D8008091E10089
+:1019C0008F7E8093E1008091E2008F7E8093E20021
+:1019D0008091E20081608093E2008091E1018823A0
+:1019E00011F084E007C08091E30087FD02C081E030
+:1019F00001C083E08093E5010E94E0088091E1004E
+:101A000083FF29C08091E20083FF25C08091E1001F
+:101A1000877F8093E10082E08093E5011092E101ED
+:101A20008091E1008E7F8093E1008091E2008E7FC3
+:101A30008093E2008091E20080618093E20042E0C6
+:101A400060E080E00E94690B8091F00088608093E4
+:101A5000F0000E94DD08FF91EF91BF91AF919F913F
+:101A60008F917F916F915F914F913F912F910F9047
+:101A70000FBE0F901F9018951F920F920FB60F92E6
+:101A800011242F933F934F935F936F937F938F9383
+:101A90009F93AF93BF93CF93DF93EF93FF93C09147
+:101AA000E900CF708091EC00D82FD17080FDD0E894
+:101AB0001092E9008091F000877F8093F000789485
+:101AC0000E94800D1092E9008091F0008860809360
+:101AD000F000CD2BCF70C093E900FF91EF91DF9123
+:101AE000CF91BF91AF919F918F917F916F915F91B6
+:101AF0004F913F912F910F900FBE0F901F9018950F
+:101B00001F93CF93DF93CDB7DEB7AA970FB6F894A4
+:101B1000DEBF0FBECDBFE6EEF1E088E08E0F909104
+:101B2000F10091938E13FBCF0E94FC088091E80096
+:101B300083FF1FC18091E6019091E701492F50E09A
+:101B40004A30510508F015C1FA01EA5AFF4F0C94CA
+:101B50003623803881F0823809F00BC18091EA0188
+:101B60008F708093E9008091EB0085FB882780F9D6
+:101B70001092E90006C08091E2019091E301911179
+:101B800082609091E800977F9093E8008093F10045
+:101B90001092F100C8C0282F2D7F09F0EAC08823D9
+:101BA00019F0823061F0E5C08091E801813009F0E0
+:101BB000E0C0933009F080E08093E3012BC0809176
+:101BC000E801811127C08091EA018F7009F4D1C02A
+:101BD0008093E9002091EB0020FF1CC0933021F49A
+:101BE0008091EB00806214C09091EB009061909323
+:101BF000EB0021E030E0A90102C0440F551F8A9597
+:101C0000E2F74093EA001092EA008091EB008860CE
+:101C10008093EB001092E9008091E800877F86C0F6
+:101C20008111A7C01091E8011F778091E3008078AF
+:101C3000812B8093E3008091E800877F8093E80008
+:101C40000E949E0B8091E80080FFFCCF8091E30012
+:101C500080688093E300111102C082E001C083E03C
+:101C60008093E50186C08058823008F082C0809160
+:101C7000E8019091E9018C3D53E0950779F583E007
+:101C80008A838AE289834FB7F894DE01139620E0B5
+:101C90003EE051E2E32FF0E050935700E49120FF43
+:101CA00003C0E295EF703F5FEF708E2F90E0EA3057
+:101CB00010F0C79601C0C0968D939D932F5F24317D
+:101CC00049F74FBF8091E800877F8093E8006AE280
+:101CD00070E0CE0101960E94A50A14C0AE014F5FCC
+:101CE0005F4F6091EA010E94EC09BC01892B09F465
+:101CF00040C09091E800977F9093E80089819A8195
+:101D00000E94080B8091E8008B778093E80031C037
+:101D1000803879F58091E800877F8093E800809192
+:101D2000E1018093F1008091E8008E778093E800D4
+:101D30000E949E0B1EC081111CC09091E801923040
+:101D4000C0F48091E800877F8093E8009093E101E0
+:101D50000E949E0B8091E101811106C08091E300F9
+:101D600087FD02C081E001C084E08093E5010E940C
+:101D7000E8088091E80083FF0AC08091E800877F2F
+:101D80008093E8008091EB0080628093EB00AA963C
+:101D90000FB6F894DEBF0FBECDBFDF91CF911F917C
+:101DA00008950895CF938091E5018823A1F0C09113
+:101DB000E900CF709091EC00892F817090FD80E850
+:101DC000C82B1092E9008091E80083FD0E94800DED
+:101DD000CF70C093E900CF910895909369018093EB
+:101DE00068010895E0916801F0916901309721F050
+:101DF0000190F081E02D099480E00895E091680160
+:101E0000F0916901309721F00280F381E02D09946F
+:101E10000895E0916801F0916901309721F0048004
+:101E2000F581E02D099408952091660130916701B4
+:101E30008217930771F09093670180936601E09198
+:101E40006801F0916901309721F00680F781E02D5B
+:101E500009940895209164013091650182179307D8
+:101E600071F09093650180936401E0916801F091B5
+:101E70006901309721F00084F185E02D09940895DF
+:101E800008950C94400F0E94131B0E94C1040C94EF
+:101E9000D91BCF92DF92EF92FF920F931F93CF93B4
+:101EA000DF93CDB7DEB72B970FB6F894DEBF0FBE2A
+:101EB000CDBF0E94DE048BE6C82E81E0D82E00E064
+:101EC00010E0E02E802F0E94D005F60141916F01B5
+:101ED000F42EF826B1F40F5F1F4F0E30110589F76D
+:101EE0008FEF89838A831B820E941C1B8160782F5D
+:101EF0009D838C8349815A816B818D810E94EC0F77
+:101F000040C09091CC0191FF04C08B870E94D60500
+:101F10008B8520E030E04F2D50E0922FBA01022E49
+:101F200002C0759567950A94E2F760FF24C02E837E
+:101F3000EF8221E030E0690102C0CC0CDD1C9A95F3
+:101F4000E2F790E08C219D21892B09F420E028877D
+:101F50000E941C1B8160782F9A8789874E815F8140
+:101F600068858A850E94EC0FF801E559FE4F808153
+:101F7000C826C08206C02F5F3F4F2630310569F664
+:101F8000AACF0E94C01E10916A010E94F20E18177B
+:101F9000A1F00E94F20E80936A012B960FB6F8947E
+:101FA000DEBF0FBECDBFDF91CF911F910F91FF908C
+:101FB000EF90DF90CF900C94EC072B960FB6F8942F
+:101FC000DEBF0FBECDBFDF91CF911F910F91FF906C
+:101FD000EF90DF90CF900895CF93DF93CDB7DEB72A
+:101FE0002B970FB6F894DEBF0FBECDBF4F83588737
+:101FF00069877A878B87DE01119686E0FD01119251
+:102000008A95E9F785E0FE01379601900D928A9551
+:10201000E1F749815A816B817C818D819E810E948B
+:1020200002172B960FB6F894DEBF0FBECDBFDF911F
+:10203000CF910895CF93882309F4C2C0C82F823866
+:1020400059F40E94F20E81FDBBC089E30E949E19E3
+:102050000E945B1A89E30CC0833879F40E94F20E67
+:1020600080FDAEC083E50E949E190E945B1A83E545
+:102070000E94E019CF910C945B1A843859F40E94A5
+:10208000F20E82FD9DC087E40E949E190E945B1A99
+:1020900087E4EECF8CEF8C0F813A48F48C2F0E94AE
+:1020A000012181118DC08C2F0E949E19E3CF80E207
+:1020B0008C0F883048F4C77081E001C0880FCA9542
+:1020C000EAF70E94241AD6CF8BE58C0F833078F480
+:1020D000C53A29F0C63A31F083E890E005C081E8BE
+:1020E00090E002C082E890E0CF910C94140F88E554
+:1020F0008C0F833108F064C0C83A39F1C93A41F114
+:10210000CA3A49F1CB3A51F1CC3A59F1CD3A61F1A1
+:10211000C03B69F1CE3A71F1CF3A79F1C13B81F11F
+:10212000C23B89F1C33B91F1C43B99F1C53BA1F19D
+:10213000C63BA9F1C73BB1F1C83BB9F1C93BC1F1FD
+:10214000CA3BC9F180E090E038C082EE90E035C033
+:1021500089EE90E032C08AEE90E02FC085EB90E0EF
+:102160002CC086EB90E029C087EB90E026C08CEC79
+:1021700090E023C08DEC90E020C083E891E01DC08A
+:102180008AE891E01AC082E991E017C084E991E001
+:1021900014C081E292E011C083E292E00EC084E2BA
+:1021A00092E00BC085E292E008C086E292E005C0B2
+:1021B00087E292E002C08AE292E0CF910C942A0F6B
+:1021C000CF910895882309F44BC0823859F40E94B6
+:1021D000F20E81FF45C089E30E949E190E945B1A9E
+:1021E00089E30CC0833871F40E94F20E80FF38C07E
+:1021F00083E50E949E190E945B1A83E50E94E01904
+:102200000C945B1A843859F40E94F20E82FF28C0A5
+:1022100087E40E949E190E945B1A87E4EFCF9CEF2F
+:10222000980F913A58F390E2980F983050F48770D5
+:1022300091E001C0990F8A95EAF7892F0E942A1A26
+:10224000DFCF9BE5980F933020F480E090E00C9472
+:10225000140F885A833120F480E090E00C942A0F08
+:102260000895882321F00E94241A0C945B1A089583
+:10227000882321F00E942A1A0C945B1A0895BF92B9
+:10228000CF92DF92EF92FF920F931F93CF93DF9342
+:1022900000D000D000D0CDB7DEB725E0FC01DE01D4
+:1022A000119601900D922A95E1F7FC014081318150
+:1022B0000281258122952F7063817481672B09F437
+:1022C000E5C23F3F19F44F3F09F4E0C27C01498366
+:1022D0003A8389819A812E830E945D19182FB92E25
+:1022E0000E945C190E942318EB2DE295EF70F0E03C
+:1022F000E05AFF4F2E810C9436238B2D807F9B2D2F
+:102300009F70F92E882319F0F29480EFF8220023B1
+:1023100049F0FF2009F467C28F2D0E94341A0E94F1
+:102320005B1A61C2812F0E94E210FF2009F4AEC245
+:102330008F2D0E943A1A26960FB6F894DEBF0FBE74
+:10234000CDBFDF91CF911F910F91FF90EF90DF9064
+:10235000CF90BF900C945B1A3B2D307F8B2D8F70EC
+:10236000303211F08295807F112319F0113021F164
+:102370002CC00023B9F0222309F4A0C1213009F0B8
+:102380009DC126960FB6F894DEBF0FBECDBFDF917C
+:10239000CF911F910F91FF90EF90DF90CF90BF9062
+:1023A0000C94441A222319F0213009F46FC28E8351
+:1023B0000E94471A8E8196C1002321F0223008F036
+:1023C00065C27CC1211162C28DC1002321F022238C
+:1023D00009F474C108C2222309F484C119C22B2D47
+:1023E00026952695237030E02115310521F0213006
+:1023F0003105D1F04BC2002321F0812F9B2D93702A
+:1024000002C080E090E026960FB6F894DEBF0FBEC3
+:10241000CDBFDF91CF911F910F91FF90EF90DF9093
+:10242000CF90BF900C94140F002321F0812F9B2D8F
+:10243000937002C080E090E026960FB6F894DEBF5D
+:102440000FBECDBFDF91CF911F910F91FF90EF9005
+:10245000DF90CF90BF900C942A0F812F002319F0AA
+:102460000E94C81D02C00E94301E26960FB6F89426
+:10247000DEBF0FBECDBFDF91CF911F910F91FF90B7
+:10248000EF90DF90CF90BF900C94B51E8B2D837092
+:1024900009F07BC00111FAC1812F82958695877062
+:1024A000880F880F912F9F70C92ED12CE12CF12C11
+:1024B000082E04C0CC0CDD1CEE1CFF1C0A94D2F7C5
+:1024C00014FF12C04FE050E060E070E004C0440F21
+:1024D000551F661F771F8A95D2F7CB01BA01609509
+:1024E00070958095909503C060E070E0CB012B2D36
+:1024F000269526952370422F50E042305105D9F0A1
+:102500004330510569F16C297D298E299F2941307D
+:10251000510551F126960FB6F894DEBF0FBECDBF20
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF
+:10253000BF900C944A186C297D298E299F292696D4
+:102540000FB6F894DEBF0FBECDBFDF91CF911F91C4
+:102550000F91FF90EF90DF90CF90BF900C94661892
+:102560000E944A18C701B60126960FB6F894DEBF3E
+:102570000FBECDBFDF91CF911F910F91FF90EF90D4
+:10258000DF90CF90BF900C942E18002319F08B2D64
+:10259000817001C08695882309F478C1812F8295C6
+:1025A00086958770880F880F912F9F70C92ED12C28
+:1025B000E12CF12C082E04C0CC0CDD1CEE1CFF1C01
+:1025C0000A94D2F714FF12C04FE050E060E070E0D0
+:1025D00004C0440F551F661F771F8A95D2F7CB01A1
+:1025E000BA01609570958095909503C060E070E0A9
+:1025F000CB012B2D269526952370422F50E042309B
+:102600005105D9F04330510569F16C297D298E2996
+:102610009F294130510551F126960FB6F894DEBF3F
+:102620000FBECDBFDF91CF911F910F91FF90EF9023
+:10263000DF90CF90BF900C9424196C297D298E29AE
+:102640009F2926960FB6F894DEBF0FBECDBFDF914F
+:10265000CF911F910F91FF90EF90DF90CF90BF909F
+:102660000C9440190E942419C701B60126960FB692
+:10267000F894DEBF0FBECDBFDF91CF911F910F91B8
+:10268000FF90EF90DF90CF90BF900C940819103F0F
+:10269000D1F118F4103E50F4A1C0123F09F463C008
+:1026A00008F44CC0133F09F473C098C01F708B2D01
+:1026B0008F710023A1F00E94A118812F26960FB6DA
+:1026C000F894DEBF0FBECDBFDF91CF911F910F9168
+:1026D000FF90EF90DF90CF90BF900C9431110E944B
+:1026E000C218812F26960FB6F894DEBF0FBECDBF5D
+:1026F000DF91CF911F910F91FF90EF90DF90CF90DE
+:10270000BF900C9438110023A9F02111BFC08B2D6C
+:102710008F7126960FB6F894DEBF0FBECDBFDF9146
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE
+:102730000C94E718223008F0A9C0E9CF0023A9F0D3
+:102740008B2D8F7126960FB6F894DEBF0FBECDBFCE
+:10275000DF91CF911F910F91FF90EF90DF90CF907D
+:10276000BF900C94A118002359F38B2D8F712696DE
+:102770000FB6F894DEBF0FBECDBFDF91CF911F9192
+:102780000F91FF90EF90DF90CF90BF900C94C21804
+:10279000002399F08B2D8F7126960FB6F894DEBF2B
+:1027A0000FBECDBFDF91CF911F910F91FF90EF90A2
+:1027B000DF90CF90BF900C948C1826960FB6F894AB
+:1027C000DEBF0FBECDBFDF91CF911F910F91FF9064
+:1027D000EF90DF90CF90BF900C9482180023A9F067
+:1027E000222309F4ADCF812F26960FB6F894DEBFD1
+:1027F0000FBECDBFDF91CF911F910F91FF90EF9052
+:10280000DF90CF90BF900C941A10222309F4ADCF23
+:10281000812F26960FB6F894DEBF0FBECDBFDF9195
+:10282000CF911F910F91FF90EF90DF90CF90BF90CD
+:102830000C94E2104B2D4F70612FC7010E9453037F
+:1028400026960FB6F894DEBF0FBECDBFDF91CF91B5
+:102850001F910F91FF90EF90DF90CF90BF900C945D
+:10286000A6174B2D4F70612FC70126960FB6F8940F
+:10287000DEBF0FBECDBFDF91CF911F910F91FF90B3
+:10288000EF90DF90CF90BF900C94960626960FB6EF
+:10289000F894DEBF0FBECDBFDF91CF911F910F9196
+:1028A000FF90EF90DF90CF90BF9008950E94411A63
+:1028B0000E94161A0E945B1A0E94661F0E94B51E93
+:1028C00080E090E00E94140F80E090E00C942A0FCA
+:1028D0000E94311A0C9456140E945D19292F2295DA
+:1028E0002F7030E02C3031054CF42A3031056CF477
+:1028F000225031092230310588F407C02C303105CF
+:1029000049F02F30310531F009C0803E48F0803F5A
+:1029100029F406C093FB882780F9089580E0089584
+:1029200081E00895CF93DF9300D000D01F92CDB700
+:10293000DEB70F900F900F900F900F90DF91CF9117
+:102940000895CF93DF9300D000D000D0CDB7DEB78D
+:1029500026960FB6F894DEBF0FBECDBFDF91CF91A4
+:1029600008951F93CF93DF93C091790116E0809172
+:102970007A01C81799F0D0E01C9FF0011D9FF00D5F
+:102980001124E558FE4F4081518162817381848119
+:1029900095810E94A1142196C770E9CFDF91CF9154
+:1029A0001F9108954091AB015091AC016091AD0130
+:1029B0007091AE018091AF019091B0010C94A1147F
+:1029C0008091B00182958F7009F054C08091AD0163
+:1029D000882309F44FC080917901A0917A01609118
+:1029E000AB017091AC014091AE015091AF01B6E0E6
+:1029F0008A1709F43FC090E041155105C1F17F3FAE
+:102A000011F46F3FA1F1B89FF001B99FF00D1124AF
+:102A1000E558FE4F218172132AC02081621327C01E
+:102A20002281211124C0238134812417350710F419
+:102A300021503109241B350B283C3105C0F420916D
+:102A4000B0012F7020612093B00126E0289FF00193
+:102A5000299FF00D1124E058FE4F80818F70806116
+:102A600080838BEA91E00E943F110C94B11401968F
+:102A70008770BECF0895CF92DF92EF92FF920F93AF
+:102A80001F93CF93DF93CDB7DEB762970FB6F8945D
+:102A9000DEBF0FBECDBF8C0185E0F801DE011D96C3
+:102AA00001900D928A95E1F7D8014C9111965C91B5
+:102AB000119712966C9112971396CD90DC90149703
+:102AC0003091AB017091AC018091AE019091AF015A
+:102AD000009709F46BC17F3F19F43F3F09F466C1C9
+:102AE000E090AD01EE2009F4C0C02091B001C816FD
+:102AF000D90628F0F601E81BF90BCF0104C0809538
+:102B000090958C0D9D1DFF24F394883C910578F0E1
+:102B1000F12C207F09F0C6C07C2DD98AC88A89890A
+:102B20000E9492148BEA91E00E943F11B1C0822F63
+:102B3000807F09F046C0751314C0341312C06111B0
+:102B400010C02F7020612093B0010E94D2148BEA34
+:102B500091E00E943F118091B001D80115968C93AD
+:102B60002EC0CD2819F15F3F11F44F3FF9F0F62E3A
+:102B700061111CC08091790120917A0136E08217A1
+:102B800009F45AC090E0389FF001399FF00D1124EC
+:102B9000E558FE4F7181571306C07081471303C07B
+:102BA0007281711103C001968770E9CFF62E6623FA
+:102BB00009F418C18091B00181608093B001F12CBB
+:102BC00011C1751308C0341306C0611104C080918F
+:102BD000B001D801C3C04D875E878D859E856A8B05
+:102BE0000E946C146A898823E1F16623D1F1209157
+:102BF000B001822F82958F7090E0029774F08091DF
+:102C0000AB019091AC0198878F831986DB86CA86C9
+:102C10002C87CE0107960E943F1186E0F801ABEAAF
+:102C2000B1E001900D928A95E1F70E94E0140E94B4
+:102C3000D214FF24F394D6C04D875E878D859E8580
+:102C40000E945D19292F22952F7030E02230310526
+:102C50000CF0BCC09F7009F0B6C0805E883008F4EC
+:102C6000C1C0C8010E943F11E4CFC816D90608F4BC
+:102C700053C0F601E81BF90BCF01883C910508F41D
+:102C800050C0F12C7C2DD98AC88A89890E9492145F
+:102C9000EBEAF1E086E0DF011D928A95E9F70E94F8
+:102CA000D214A0C0751314C0341312C0611110C027
+:102CB0008091B001F8018583C8010E943F1186E030
+:102CC000EBEAF1E0DF011D928A95E9F7FE2C8AC05C
+:102CD0004D875E878D859E856A8B0E946C146A89FC
+:102CE000882309F4BECF662309F4BBCF2091B0013D
+:102CF000822F82958F7090E002970CF48ECF809196
+:102D0000AB019091AC019A8389831B82DD82CC82D6
+:102D10002E83CE0101967FCF809590958C0D9D1DC1
+:102D2000ACCFF62E662309F49CCF75132EC0341356
+:102D30002CC02091B00120FD1FC0822F82958F7082
+:102D4000D9F0D80115962C9315978F3049F08F5FE5
+:102D5000982F9295907F822F8F70892B15968C9348
+:102D6000C8010E943F1186E0F801ABEAB1E0019092
+:102D70000D928A95E1F793CF86E0F801ABEAB1E0D6
+:102D800001900D928A95E1F72DC04D875E878D8564
+:102D90009E850E946C14811140CF8091B0018160AA
+:102DA0008093B001C8010E943F111CC0662309F442
+:102DB00058CF4D875E878D859E850E946C14882331
+:102DC00009F44FCF2ACF811148CF0CC024303105F0
+:102DD0000CF047CF9F7009F440CFF8019581907FA8
+:102DE00009F03BCF8F2D62960FB6F894DEBF0FBE71
+:102DF000CDBFDF91CF911F910F91FF90EF90DF90AA
+:102E0000CF9008951F93CF93DF93CDB7DEB72C9764
+:102E10000FB6F894DEBF0FBECDBF4F8358876987CA
+:102E20007A878B879C87CE0107960E943B15882363
+:102E300069F08F8198852A853B85232BF1F19F3F8F
+:102E400009F063C08F3F09F060C037C086E0FE0123
+:102E50003796DE01119601900D928A95E1F76F8108
+:102E60007885EA85FB85309741F17F3F11F46F3F0C
+:102E700021F120917A0130E0C901019687709927EC
+:102E80004091790150E08417950709F447C06983A0
+:102E90007A83FD83EC8396E0929FD001939FB00DDF
+:102EA0001124A558BE4FFE01319601900D929A95BE
+:102EB000E1F780937A010E94B11416E080917901C4
+:102EC00090917A018917C1F1189FC001112485588A
+:102ED0009E4F0E943B15882379F1E09179011E9F56
+:102EE000F0011124E558FE4F4081518162817381C8
+:102EF000848195810E94A1148091790190E00196CE
+:102F00008770992780937901D9CF4F81588569853A
+:102F10007A858B859C850E94A114CFCF0E9468146E
+:102F200010927A0110927901EBEAF1E086E0DF017C
+:102F30001D928A95E9F7C1CF2C960FB6F894DEBFA3
+:102F40000FBECDBFDF91CF911F910895EF92FF92F9
+:102F50000F931F93CF93DF938C01892B09F46CC0DF
+:102F6000F12CEE24E394E8012196F8018491843752
+:102F700040F4843008F051C0813081F0823019F182
+:102F80005BC0853709F444C0A8F19CE7980F9037DF
+:102F900008F052C08F770E94E21041C00E5F1F4FB1
+:102FA000FE01C49180E28C0F883048F4C7708E2DEA
+:102FB00001C0880FCA95EAF70E94341A14C08C2FFA
+:102FC0000E941A102DC00E5F1F4FFE01C49180E2B7
+:102FD0008C0F883058F4C7708E2D01C0880FCA95A9
+:102FE000EAF70E943A1A0E945B1A1AC08C2F0E94BC
+:102FF000E21016C00E5F1F4FFE01C491CC2381F07A
+:103000008FE99FE00197F1F700C00000C150F6CFB3
+:103010000E5F1F4FFE01F49003C00E941A108E0134
+:103020008F2D882309F49FCFEFE9FFE03197F1F767
+:1030300000C000008150F5CFDF91CF911F910F911B
+:10304000FF90EF90089508956093B5017093B601D5
+:103050008093B7019093B8010C9456140F931F936B
+:103060000091B5011091B6012091B7013091B801DE
+:10307000DC01CB01802B912BA22BB32B8093B501CC
+:103080009093B601A093B701B093B8011F910F912F
+:103090000C9456140F931F930091B5011091B60133
+:1030A0002091B7013091B801DC01CB01802391233D
+:1030B000A223B3238093B5019093B601A093B701E7
+:1030C000B093B8011F910F910C9456140F931F9356
+:1030D0000091B5011091B6012091B7013091B8016E
+:1030E000DC01CB0180279127A227B3278093B5016C
+:1030F0009093B601A093B701B093B8011F910F91BF
+:103100000C9456141092B1011092B2011092B301B6
+:103110001092B4010C94561441E050E060E070E06D
+:1031200004C0440F551F661F771F8A95D2F740933E
+:10313000B1015093B2016093B3017093B4010C9448
+:10314000561441E050E060E070E004C0440F551FA9
+:10315000661F771F8A95D2F78091B1019091B201D5
+:10316000A091B301B091B401482B592B6A2B7B2B52
+:103170004093B1015093B2016093B3017093B401D5
+:103180000C94561441E050E060E070E004C0440F3D
+:10319000551F661F771F8A95D2F740955095609509
+:1031A00070958091B1019091B201A091B301B0915D
+:1031B000B401482359236A237B234093B1015093E0
+:1031C000B2016093B3017093B4010C94561441E0C2
+:1031D00050E060E070E004C0440F551F661F771F89
+:1031E0008A95D2F78091B1019091B201A091B3017B
+:1031F000B091B401482759276A277B274093B10132
+:103200005093B2016093B3017093B4010C945614BF
+:103210000F931F930091B1011091B2012091B3015E
+:103220003091B401DC01CB01802B912BA22BB32B6D
+:103230008093B1019093B201A093B301B093B40114
+:103240001F910F910C9456140F931F930091B1018D
+:103250001091B2012091B3013091B401DC01CB0196
+:1032600080239123A223B3238093B1019093B201D1
+:10327000A093B301B093B4011F910F910C94561415
+:103280000F931F930091B1011091B2012091B301EE
+:103290003091B401DC01CB0180279127A227B3270D
+:1032A0008093B1019093B201A093B301B093B401A4
+:1032B0001F910F910C9456140895CF92DF92EF92C4
+:1032C000FF920F931F93CF93DF938C01C090B501B2
+:1032D000D090B601E090B701F090B8014091B101F3
+:1032E0005091B2016091B3017091B401C42AD52A02
+:1032F000E62AF72ACFE1D0E0D701C6010C2E04C0A0
+:10330000B695A795979587950A94D2F780FF07C041
+:10331000B8018C2F0E94B9068130910531F42197B4
+:1033200058F7B80180E00E94B906DF91CF911F9154
+:103330000F91FF90EF90DF90CF90089590910C0146
+:10334000992321F090910D01911109C020910E0156
+:1033500030910F01F90132969FEF40E01FC0982F86
+:103360009695969596959F3050F5E0910E01F091C7
+:103370000F01E90FF11D877021E030E0A90102C0C3
+:10338000440F551F8A95E2F7CA019181892B8183E9
+:1033900008959F3F39F04F5F4E3041F051915813DF
+:1033A000F8CF0DC05111F7CF942FF5CF9F3F39F0D3
+:1033B000F901E90FF11D97FDFA95828308950895AB
+:1033C00090910C01992321F090910D01911109C068
+:1033D00020910E0130910F01F9013296205F3F4F8D
+:1033E0001FC0982F9695969596959F30F0F4E09192
+:1033F0000E01F0910F01E90FF11D877021E030E01F
+:10340000A90102C0440F551F8A95E2F7CA018095B1
+:1034100091818923818308953196E217F30729F07A
+:1034200090819813F9CF1082F7CF089581E090E052
+:10343000E0910E01F0910F01E80FF91F1082019643
+:1034400080319105A9F708959091CB01892B809344
+:10345000CB01089580959091CB0189238093CB0176
+:1034600008951092CB0108959091CA01892B809301
+:10347000CA01089580959091CA0189238093CA0159
+:1034800008951092CA0108958093B9010895109289
+:10349000B901089580910E0190910F01FC013196C0
+:1034A0009C01205F3F4F80E0919191118F5FE21767
+:1034B000F307D1F70895E0910E01F0910F0180918B
+:1034C000CB018083E0910E01F0910F0190818091FA
+:1034D000CA01892B80838091B901882361F0E09132
+:1034E0000E01F0910F019081892B80830E944A1A6E
+:1034F00081111092B90180910E0190910F010C94ED
+:10350000FE0ECF92DF92EF92FF926C01EE24FF2429
+:10351000C114D104E104F10421F0C701B60120E196
+:1035200001C020E0C72ED82EE92EFF24C114D104FB
+:10353000E104F10419F0285FC701B6016B017C01B9
+:1035400054E0F694E794D794C7945A95D1F7C114F0
+:10355000D104E104F10419F02C5FC701B6016B013D
+:103560007C0142E0F694E794D794C7944A95D1F74A
+:10357000C114D104E104F10419F02E5FC701B601B2
+:10358000DC01CB01B695A79597958795892B8A2B5A
+:103590008B2B09F02F5F822FFF90EF90DF90CF9061
+:1035A00008958091E501843009F11092CD0120E465
+:1035B00088E190E00FB6F894A895809360000FBE64
+:1035C0002093600083B7817F846083BF83B781606D
+:1035D00083BF7894889583B78E7F83BF88E10FB6C9
+:1035E000F89480936000109260000FBE08950895D3
+:1035F0000895CF930E94F71A0E94DE040E94F81AE1
+:10360000C0E08C2F0E94D005811104C0CF5FCE3066
+:10361000C1F701C081E0CF9108950E9468140E9413
+:10362000F20E0C94EC0782E084BD93E095BD9AEF16
+:1036300097BD80936E0008952FB7F8948091CE01C6
+:103640009091CF01A091D001B091D1012FBF0895E9
+:10365000CF92DF92EF92FF920F931F932FB7F894C0
+:103660004091CE015091CF016091D0017091D10174
+:103670002FBF6A017B01EE24FF248C0120E030E0A3
+:10368000C016D106E206F30610F4415051099A0122
+:10369000281B390BC9011F910F91FF90EF90DF900C
+:1036A000CF9008951F920F920FB60F9211248F930F
+:1036B0009F93AF93BF938091CE019091CF01A09142
+:1036C000D001B091D1010196A11DB11D8093CE0111
+:1036D0009093CF01A093D001B093D101BF91AF914E
+:1036E0009F918F910F900FBE0F901F9018950E9481
+:1036F000EF0BF8942FEF87EA91E62150804090403D
+:10370000E1F700C0000087E090EBDC018093EE0160
+:103710009093EF01A093F001B093F1019CE088E158
+:103720000FB6F894A895809360000FBE9093600048
+:10373000FFCFEF92FF920F931F93CF93DF93D82F7A
+:10374000C0E08C2F0E94D00500E010E0E82EF12CA4
+:10375000C701002E02C0959587950A94E2F780FD77
+:1037600006C00F5F1F4F0630110591F709C0602F8B
+:103770007C2F80E00E949706D813F3CF81E004C02D
+:10378000CF5FCE30F1F680E0DF91CF911F910F91A6
+:10379000FF90EF900895CF93C82F8CE20E94991B61
+:1037A000882321F08C2FCF910C94991B80E0CF912E
+:1037B0000895CF930E94201D811102C00E94061D12
+:1037C000C5E6C15049F00E94DE048FE39CE90197F1
+:1037D000F1F700C00000F5CF89E20E94CB1B8111F8
+:1037E00013C18AE20E94CB1B81110E94061D85E055
+:1037F0000E94CB1B81110E94771B0E942B1D80937E
+:10380000CC0187E00E94CB1B8823A9F18BE10E94A9
+:10381000CB1B882351F08091CC0181FB222720F91A
+:1038200091E0922790FB81F90EC08EE00E94CB1BA5
+:10383000882361F08091CC0182FB222720F991E05E
+:10384000922790FB82F98093CC0115C080E10E9401
+:10385000CB1B9091CC01882341F093FB222720F9C8
+:1038600081E0822780FB93F904C0892F809580FB3B
+:1038700090F99093CC018091CC010E942F1D0E9461
+:103880003D1D8093DF0180EE0E94CB1B882341F019
+:103890008091DF01982F909590FB80F98093DF0154
+:1038A00089E30E94CB1B882359F08091DF0181FBC3
+:1038B000222720F991E0922790FB81F98093DF0184
+:1038C00082EE0E94CB1B882359F08091DF0182FB9E
+:1038D000222720F991E0922790FB82F98093DF0163
+:1038E00086EE0E94CB1B882359F08091DF0183FB79
+:1038F000222720F991E0922790FB83F98093DF0142
+:1039000083EE0E94CB1B882359F08091DF0184FB5A
+:10391000222720F991E0922790FB84F98093DF0120
+:1039200085E30E94CB1B882359F08091DF0185FB42
+:10393000222720F991E0922790FB85F98093DF01FF
+:1039400081E30E94CB1B882359F08091DF0186FB25
+:10395000222720F991E0922790FB86F98093DF01DE
+:1039600081E10E94CB1B882359F08091DF0187FB06
+:10397000222720F991E0922790FB87F98093DF01BD
+:103980008091DF010E94411D8091DF0187FB882724
+:1039900080F980930D0187E20E94CB1BC82F8EE136
+:1039A0000E94CB1B8111C2608FE10E94CB1B811151
+:1039B000C46080E20E94CB1B8111C86081E20E943A
+:1039C000CB1B8111C06182E20E94CB1B8111C062BE
+:1039D00083E20E94CB1B8111C06484E20E94CB1B56
+:1039E000882311F0C06802C0CC2329F08C2F0E94DC
+:1039F000381D6C2F03C00E94341D682F70E080E0DA
+:103A000090E0CF910C942418CF9108956DEE7EEF45
+:103A100080E090E00E946C2360E082E090E00E94F1
+:103A20005E2360E083E090E00E945E2360E084E03B
+:103A300090E00E945E2360E085E090E00C945E23BD
+:103A400080E090E00E94582321E08D3E9E4F09F0D7
+:103A500020E0822F089582E090E00C945023682F9C
+:103A600082E090E00C945E2383E090E00C9450237D
+:103A7000682F83E090E00C945E2384E090E00C9447
+:103A80005023682F84E090E00C945E238091D40151
+:103A900080FF0BC06091130185E0689FB001112485
+:103AA00075956795759567952BC081FF09C06091E5
+:103AB000130185E0689FB00111247595679520C0BA
+:103AC00082FF07C06091130185E0689FB001112457
+:103AD00017C09091D5019923D1F0609112019617EA
+:103AE00088F72091130185E0289F90011124929F6F
+:103AF000A001939F500D112470E0CA010E9422235F
+:103B00006038710540F46115710539F002C065E057
+:103B100070E0862F08958FE7089581E008958091E1
+:103B2000D40180FF08C06091110170E07595679520
+:103B30007595679521C081FF06C06091110170E005
+:103B40007595679519C082FF04C06091110170E0FE
+:103B500010C09091D5019923C1F060911001961782
+:103B6000A0F780911101899FC001112470E00E948B
+:103B700022236038710528F46115710521F0862F24
+:103B800008958FE7089581E0089561E070E0F4CF33
+:103B9000803F21F40E94461D819504C0813F29F495
+:103BA0000E94461D8093D8010895823F21F40E940F
+:103BB000461D819504C0833F29F40E94461D8093D1
+:103BC000D7010895893F19F40E948F1D05C08A3FCF
+:103BD00031F40E948F1D81958093D90108958B3F08
+:103BE00021F40E948F1D819504C08C3F29F40E940E
+:103BF0008F1D8093DA010895843F21F48091D601CE
+:103C0000816017C0853F21F48091D601826011C088
+:103C1000863F21F48091D60184600BC0873F21F458
+:103C20008091D601886005C0883F31F48091D6012B
+:103C300080618093D60108958D3F21F48091D40155
+:103C400081600BC08E3F21F48091D401826005C059
+:103C50008F3F29F48091D40184608093D40108952A
+:103C6000803F39F48091D80187FF6CC01092D80151
+:103C700069C0813F29F48091D8011816BCF362C055
+:103C80009091D701823F29F497FF5CC01092D70131
+:103C900059C0833F19F41916CCF354C0893F41F43D
+:103CA0008091D90118160CF04DC01092D9014AC06C
+:103CB0008A3F29F48091D90187FF44C0F6CF8B3F1A
+:103CC00039F48091DA0187FF3DC01092DA013AC0E1
+:103CD0008C3F29F48091DA011816BCF333C0843F7D
+:103CE00021F48091D6018E7F17C0853F21F4809109
+:103CF000D6018D7F11C0863F21F48091D6018B7F44
+:103D00000BC0873F21F48091D601877F05C0883F93
+:103D100031F48091D6018F7E8093D60113C08D3F00
+:103D200021F48091D4018E7F0BC08E3F21F48091CD
+:103D3000D4018D7F05C08F3F29F48091D4018B7F02
+:103D40008093D4018091D70181110EC08091D80158
+:103D500081110AC08091D901811106C08091DA01D8
+:103D6000811102C01092D501089586ED91E00E9464
+:103D7000090F0E941C1B9093D3018093D2010895D8
+:103D80001F93CF93DF938091D2019091D3010E9432
+:103D9000281BAC019091D501992321F020911401A9
+:103DA00030E006C0209115018AE0289F900111247F
+:103DB0004217530708F486C08091D701C091D801FB
+:103DC000D091D9011091DA01811107C0C11176C0DB
+:103DD000D11174C0111172C075C09F3F19F09F5F5F
+:103DE0009093D501181624F40E94461D8093D701A4
+:103DF0008091D70187FF05C00E94461D8195809361
+:103E0000D7011C1624F40E94461D8093D80180918E
+:103E1000D80187FF05C00E94461D81958093D80177
+:103E20006091D701662339F1C091D801CC2319F1F3
+:103E3000772767FD7095872F972F0E94332223E302
+:103E400033E343E35FE30E9497220E9400226093E2
+:103E5000D7016C2F772767FD7095872F972F0E94CA
+:103E6000332223E333E343E35FE30E9497220E947C
+:103E700000226093D8011D1624F40E948F1D8093A8
+:103E8000D9018091D90187FF05C00E948F1D8195BE
+:103E90008093D901111624F40E948F1D8093DA01BA
+:103EA0008091DA0187FF05C00E948F1D8195809364
+:103EB000DA01DF91CF911F910C94B51E9F3F09F05D
+:103EC0008ECF96CFDF91CF911F910895E6EDF1E06F
+:103ED00085E0DF011D928A95E9F71092D5011092D5
+:103EE000D4010895833081F128F4813059F0823073
+:103EF000D1F00895853009F449C0B8F1863009F44D
+:103F000056C0089580911501262F30E0280F311DED
+:103F10002F3F310524F4680F6093150108958FEF4A
+:103F200080931501089580911401262F30E0280F09
+:103F3000311D2F3F310524F4680F6093140108955B
+:103F40008FEF80931401089580911301262F30E0A4
+:103F5000280F311D2F3F310524F4680F60931301A2
+:103F600008958FEF80931301089580911201262FF9
+:103F700030E0280F311D2F3F310524F4680F609386
+:103F8000120108958FEF809312010895809111011D
+:103F9000262F30E0280F311D2F3F310524F4680F04
+:103FA0006093110108958FEF80931101089580911E
+:103FB0001001262F30E0280F311D2F3F310524F44A
+:103FC000680F6093100108958FEF8093100108959A
+:103FD000833011F128F4813049F0823091F0089556
+:103FE000853081F120F18630C1F10895809115016D
+:103FF000681720F4861B809315010895109215010F
+:10400000089580911401681720F4861B8093140191
+:10401000089510921401089580911301681720F4F7
+:10402000861B8093130108951092130108958091C7
+:104030001201681720F4861B8093120108951092D4
+:104040001201089580911101681720F4861B809356
+:1040500011010895109211010895809110016817BF
+:1040600020F4861B8093100108951092100108958A
+:104070000F931F938D3109F46BC008F03FC08E3051
+:1040800009F47DC0C0F4873009F46EC068F486304E
+:1040900009F0AFC08091CC01817F8E7F8093CC01ED
+:1040A00081E08093DC01A6C0883009F458C08B30D1
+:1040B00009F49BC09EC0863109F497C078F4803122
+:1040C00009F470C0813109F094C00E946814909185
+:1040D0000D0181E0892780930D0187C0893109F4A2
+:1040E00084C08B3109F085C08091CC0181FB2227EF
+:1040F00020F991E0922790FB81F94AC0853309F4B9
+:104100005BC048F4873209F457C008F45AC08932BA
+:1041100009F452C06EC0833438F48A3308F067C0A3
+:10412000883309F462C065C0833409F445C088341B
+:1041300009F05FC00E9468140FEF13ED20E30150F7
+:1041400010402040E1F700C000000E94771B4DC0E6
+:104150000E94BA210E94F20E0E94EC0746C00E9403
+:104160002B1D0E943D1D41C09091CC01892F817073
+:1041700090FF12C0917F9E7F9093CC013BC08091B5
+:10418000CC0182FB222720F991E0922790FB82F953
+:104190008093CC01992349F18091CC018160809377
+:1041A000CC0123C08091CC0183FB222720F991E030
+:1041B000922790FB83F9ECCF61E070E080E090E023
+:1041C00010C08D5141E050E060E070E08A019B0139
+:1041D00004C0000F111F221F331F8A95D2F7C90197
+:1041E000B8010E9424180E94681481E003C089531A
+:1041F000E9CF80E01F910F91089580E0089580E05D
+:104200000895CF93C82F8091DC01813079F018F0A8
+:104210008230E9F187C0E0910E01F0910F018081B9
+:10422000813169F0823209F07FC009C0E0910E014E
+:10423000F0910F018081813111F0823261F48C2F75
+:104240000E94FD20811104C08C2F0E9438201DC0C7
+:1042500081E090E01AC08C2F0E94FF20811114C0D1
+:10426000C43179F048F4CB3079F0C03109F060C046
+:1042700082E08093DC0108C0C93219F0C83321F014
+:1042800057C01092DC0154C081E0817053C0C93224
+:1042900089F118F5C43171F1A8F4C73009F046C0AE
+:1042A0008AE08093150194E19093140193E0909338
+:1042B00013018093120188E08093110188E28093BA
+:1042C000100134C0CE51C63088F5EC2FF0E0E65D29
+:1042D000FE4F80818093DB0129C0CE34E9F020F4C9
+:1042E000CB3421F56AE013C0C13579F0C235F1F461
+:1042F00061E00DC08091DB01882319F01092DB0191
+:1043000015C081E08093DC0115C061E006C080919A
+:10431000DB010E94721F0AC06AE08091DB010E94EB
+:10432000E81F04C01092DC0180E004C081E002C0FC
+:1043300080E0ABCFCF910895E1E8F0E08081886024
+:1043400080838081816080838FB7F89493E090931D
+:10435000890090ED909388008FBF0895EFE6F0E01C
+:104360008081826080830895EFE6F0E080818D7F18
+:1043700080830895EFE6F0E0908182E089278083D2
+:1043800008951F920F920FB60F9211242F933F930F
+:104390004F935F936F937F938F939F93AF93BF934D
+:1043A000EF93FF938091DD019091DE010196909350
+:1043B000DE018093DD01811103C082E00E94EC07E1
+:1043C000E091DE01E695E695F0E0E652FA4FE491E1
+:1043D0008091DD018E1303C080E00E94EC07FF9105
+:1043E000EF91BF91AF919F918F917F916F915F916D
+:1043F0004F913F912F910F900FBE0F901F901895E6
+:1044000004D06894B1118DC0089570D088F09F5782
+:1044100090F0B92F9927B751A0F0D1F0660F771F10
+:10442000881F991F1AF0BA95C9F712C0B13081F0F0
+:1044300077D0B1E0089574C0672F782F8827B85FD0
+:1044400039F0B93FCCF3869577956795B395D9F751
+:104450003EF490958095709561957F4F8F4F9F4F5B
+:104460000895E89409C097FB3EF490958095709567
+:1044700061957F4F8F4F9F4F9923A9F0F92F96E9B0
+:10448000BB279395F695879577956795B795F11125
+:10449000F8CFFAF4BB0F11F460FF1BC06F5F7F4FC2
+:1044A0008F4F9F4F16C0882311F096E911C07723D4
+:1044B00021F09EE8872F762F05C0662371F096E8DD
+:1044C000862F70E060E02AF09A95660F771F881FAC
+:1044D000DAF7880F9695879597F9089557FD9058C4
+:1044E000440F551F59F05F3F71F04795880F97FBB8
+:1044F000991F61F09F3F79F0879508951216130672
+:104500001406551FF2CF4695F1DF08C016161706A0
+:104510001806991FF1CF86957105610508940895D5
+:10452000E894BB2766277727CB0197F908950BD02E
+:1045300078C069D028F06ED018F0952309F05AC0E1
+:104540005FC01124EECFCADFA0F3959FD1F3950F82
+:1045500050E0551F629FF001729FBB27F00DB11D07
+:10456000639FAA27F00DB11DAA1F649F6627B00D97
+:10457000A11D661F829F2227B00DA11D621F739F80
+:10458000B00DA11D621F839FA00D611D221F749F8E
+:104590003327A00D611D231F849F600D211D822FD5
+:1045A000762F6A2F11249F5750408AF0E1F088231C
+:1045B0004AF0EE0FFF1FBB1F661F771F881F915029
+:1045C0005040A9F79E3F510570F014C0AACF5F3F3D
+:1045D000ECF3983EDCF3869577956795B795F7955C
+:1045E000E7959F5FC1F7FE2B880F911D96958795E4
+:1045F00097F9089597F99F6780E870E060E0089563
+:104600009FEF80EC089500240A94161617061806EA
+:104610000906089500240A941216130614060506C6
+:104620000895092E0394000C11F4882352F0BB0F57
+:1046300040F4BF2B11F460FF04C06F5F7F4F8F4FBA
+:104640009F4F089597FB072E16F4009407D077FD2F
+:1046500009D00E943C2307FC05D03EF4909581953B
+:104660009F4F0895709561957F4F0895EE0FFF1F3E
+:104670000590F491E02D0994AA1BBB1B51E107C0E2
+:10468000AA1FBB1FA617B70710F0A61BB70B881FE2
+:10469000991F5A95A9F780959095BC01CD01089571
+:1046A000F999FECF92BD81BDF89A992780B50895FA
+:1046B000A8E1B0E042E050E00C947323262FF99972
+:1046C000FECF1FBA92BD81BD20BD0FB6F894FA9AF5
+:1046D000F99A0FBE019608950E945E23272F0C942D
+:1046E0005F23DC01CB01FC01F999FECF06C0F2BDCE
+:1046F000E1BDF89A319600B40D9241505040B8F7A0
+:064700000895F894FFCFBC
+:104706002002ED077B0858082408F0070101BA01CA
+:1047160028080A03140A3F4D36399B054E0518052D
+:10472600DF0472048B04A404BD040102030405061D
+:044736000708090067
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/jacobono/keymap.c b/keyboard/ergodox_ez/keymaps/jacobono/keymap.c new file mode 100644 index 0000000000..ed8dfc731b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/jacobono/keymap.c @@ -0,0 +1,273 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define COLEMAK 0 // new colemak layout +#define QWERTY 1 // default layer +#define SYMB 2 // symbols +#define NUMPAD 3 // number pad +#define MDIA 4 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Basic COLEMAK layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | TAB | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | R | S | T | D |------| |------| H | N | E | I | O | DEL | + * |--------+------+------+------+------+------| | LGUI(TAB)------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | K | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | L1 | | | UP |MO(L2)| |MO(L2)| Down | | ALT | RGUI | + * `----------------------------------' `------------------------------------' + * ,-------------. ,---------------. + * | LGUI | App | |Ctrl/Esc| Alt | + * ,------|------|------| |--------+--------+------. + * | | |QUKSL | | QUKSL | | | + * |Space |ENTER |------| |--------| ENTER |Space | + * | | |MO(L3)| | MO(L3) | | | + * `--------------------' `------------------------' + */ + + // If it accepts an argument (i.e, is a function), it doesn't need KC_. + // Otherwise, it needs KC_* + [COLEMAK] = KEYMAP( // layer 0 : Colemak layout default layer + // left hand + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_TRNS, + KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TRNS, + TG(QWERTY), KC_TRNS, KC_TRNS,KC_UP, MO(SYMB), + KC_LGUI, KC_APP, + LGUI(S(KC_SPC)), + KC_SPC,KC_ENT,MO(NUMPAD), + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT, + KC_TRNS, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, + KC_H, KC_N, KC_E, KC_I, KC_O, KC_DEL, + LGUI(KC_TAB), KC_K, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + MO(SYMB), KC_DOWN, KC_TRNS, KC_RALT, KC_RGUI, + CTL_T(KC_ESC), KC_LALT, + LGUI(S(KC_SPC)), + MO(NUMPAD), KC_ENT, KC_SPC), + + /* Keymap 1: Basic QWERTY layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | BkSp | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | DEL | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L0 | | L0 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Ctrl | A | S | D | F | G |------| |------| H | J | K | L |; / L4| CTRL | + * |--------+------+------+------+------+------| Alt | | Alt |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L3| '" |AltShf| Left |MO(L2)| |MO(L2)| Down | [ | ] | ~L3 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | Tab | BkSp | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space| LGUI |------| |------| RGUI |Enter | + * | | | End | | PgDn | | | + * `--------------------' `----------------------' + */ + // If it accepts an argument (i.e, is a function), it doesn't need KC_. + // Otherwise, it needs KC_* + [QWERTY] = KEYMAP( // layer 1 + // left hand + KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, + KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, + KC_TRNS, KC_QUOT, LALT(KC_LSFT), KC_LEFT, MO(SYMB), + KC_TAB, KC_DELT, + KC_HOME, + KC_SPC, KC_LGUI, KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT, + KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), KC_RCTRL, + KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + MO(SYMB), KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN, KC_RGUI, KC_ENT), + + + /* Keymap 2: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | @ | * | = | _ | | | | ~ | { | } | # | : | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | ! | + | - | " |------| |------| " | ( | ) | ' | ` | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | % | ^ | $ | & | | | | ; | [ | ] | \ | / | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ + // SYMBOL + [SYMB] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_TRNS, KC_AT, KC_ASTR, KC_EQL, KC_UNDS, KC_TRNS, + KC_TRNS, KC_PIPE, KC_EXLM, KC_PLUS, KC_MINS, S(KC_QUOTE), + KC_TRNS, KC_TRNS, KC_PERC, KC_CIRC, KC_DLR, KC_AMPR, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_TILD, KC_LCBR, KC_RCBR, KC_HASH, S(KC_SCLN), KC_F12, + S(KC_QUOTE),KC_LPRN, KC_RPRN, KC_QUOTE, KC_GRV, KC_TRNS, + KC_TRNS, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, 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), + + /* Keymap 3: Numpad Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | UP | | | | | | $ | 7 | 8 | 9 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | LEFT | DOWN | RIGHT| |------| |------| = | 4 | 5 | 6 | - | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | 1 | 2 | 3 | * | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | , | 0 | . | / | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ + // Numpad + [NUMPAD] = KEYMAP( + // left hand + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RIGHT,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_DLR, KC_7, KC_8, KC_9, KC_PLUS, KC_TRNS, + KC_EQL, KC_4, KC_5, KC_6, KC_MINS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_ASTR, KC_TRNS, + KC_COMMA,KC_0, KC_DOT, KC_SLSH, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + + /* Keymap 4: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ + // MEDIA AND MOUSE + KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/mpiechotka/keymap.c b/keyboard/ergodox_ez/keymaps/mpiechotka/keymap.c new file mode 100644 index 0000000000..178c290660 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/mpiechotka/keymap.c @@ -0,0 +1,271 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_extras/keymap_colemak.h" + +enum { + BASE = 0, + BASE_CM, + SYMB, + MACR +}; + +enum { + LWIN = 1, + PC1, + PC2, + PC3, + PC4, + DL_BASE, + DL_BASE_CM, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0a: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | F | P | G | L1 | | L1 | J | L | U | Y | ; | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Esc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | K | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LAlt | LGui | | LAlt | RAlt | + * ,------|------|------| |------+--------+------. + * | |Backsp| Home | | PgUp | | | + * | Space|ace/ |------| |------| Tab/ |Enter/| + * | /Shft|Ctrl | 1) | | 2) | Ctrl |Shift | + * `--------------------' `----------------------' + * + * 1) End/L1 + * 2) PgDown/L2 + */ +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(SYMB), + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + KC_LALT, F(LWIN), + KC_HOME, + SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + MEH_T(KC_NO),KC_K, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, LT(SYMB,KC_NO), + KC_LALT, KC_RALT, + KC_PGUP, + LT(MACR,KC_PGDN),CTL_T(KC_TAB), SFT_T(KC_ENT) + ), +/* Keymap 0b: Basic layer (Colemak keycodes or QWERTY) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | F | P | G | L1 | | L1 | J | L | U | Y | ; | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Esc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | K | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LAlt | LGui | | LAlt | RAlt | + * ,------|------|------| |------+--------+------. + * | |Backsp| Home | | PgUp | | | + * | Space|ace/ |------| |------| Tab/ |Enter/| + * | /Shft|Ctrl | 1) | | 2) | Ctrl |Shift | + * `--------------------' `----------------------' + * + * 1) End/L1 + * 2) PgDown/L2 + */ +[BASE_CM] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, CM_Q, CM_W, CM_F, CM_P, CM_G, TG(SYMB), + KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, + KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + KC_LALT, F(LWIN), + KC_HOME, + SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), CM_J, CM_L, CM_U, CM_Y, KC_P, /*CM_SCLN*/ KC_BSLS, + CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, + MEH_T(KC_NO),CM_K, CM_M, CM_COMM,CM_DOT, CTL_T(CM_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, LT(SYMB,KC_NO), + KC_LALT, KC_RALT, + KC_PGUP, + LT(MACR,KC_PGDN),CTL_T(KC_TAB), SFT_T(KC_ENT) + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Macros + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | DLa | DLb | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | PC1 | PC2 | PC3 | PC4 | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MACROS +[MACR] = KEYMAP( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, F(DL_BASE),F(DL_BASE_CM),KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, F(PC1), F(PC2), F(PC3), F(PC4), KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [LWIN] = ACTION_MACRO(LWIN), + [PC1] = ACTION_MACRO(PC1), + [PC2] = ACTION_MACRO(PC2), + [PC3] = ACTION_MACRO(PC3), + [PC4] = ACTION_MACRO(PC4), + [DL_BASE] = ACTION_DEFAULT_LAYER_SET(BASE), + [DL_BASE_CM] = ACTION_DEFAULT_LAYER_SET(BASE_CM) +}; + +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); + } else { + unregister_code(KC_RSFT); + } + break; + case LWIN: + if (record->event.pressed) { + register_code(KC_RSFT); + unregister_code(KC_RSFT); + register_code(KC_LGUI); + } else { + unregister_code(KC_LGUI); + } + case PC1: + if (!record->event.pressed) { + return MACRO(T(SLCK), T(SLCK), T(1), T(ENT), END); + } + case PC2: + if (!record->event.pressed) { + return MACRO(T(SLCK), T(SLCK), T(2), T(ENT), END); + } + case PC3: + if (!record->event.pressed) { + return MACRO(T(SLCK), T(SLCK), T(3), T(ENT), END); + } + case PC4: + if (!record->event.pressed) { + return MACRO(T(SLCK), T(SLCK), T(4), T(ENT), END); + } + } + return MACRO_NONE; +} + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + return NULL; +}; + +// 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 SYMB: + ergodox_right_led_1_on(); + break; + case MACR: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } +}; diff --git a/keyboard/ergodox_ez/keymaps/mpiechotka/mpiechotka.hex b/keyboard/ergodox_ez/keymaps/mpiechotka/mpiechotka.hex new file mode 100644 index 0000000000..4bb17147f0 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/mpiechotka/mpiechotka.hex @@ -0,0 +1,1493 @@ +:100000000C9476070C94BA070C94BA070C94BA07B0
+:100010000C94BA070C94BA070C94BA070C94BA075C
+:100020000C94BA070C94BA070C9405130C94D713CC
+:100030000C94BA070C94BA070C94BA070C94BA073C
+:100040000C94BA070C94B12C0C94BA070C94BA0710
+:100050000C94BA070C94A9220C94BA070C94BA0712
+:100060000C94BA070C94BA070C94BA070C94BA070C
+:100070000C94BA070C94BA070C94BA070C94BA07FC
+:100080000C94BA070C94BA070C94BA070C94BA07EC
+:100090000C94BA070C94BA070C94BA070C94BA07DC
+:1000A0000C94BA070C94BA070C94BA07441466145B
+:1000B000541566145415AB14CE1454152315361567
+:1000C0007D187D18AC18AC18EF182D19461B461B6F
+:1000D0004619461B471A471A1A1B461B461B311B5B
+:1000E0000147024701470247012102210128022856
+:1000F0000001470247014702470120022001280270
+:1001000028000147024701470247011F021F01283B
+:100110000228000147024701470247011E021E0153
+:1001200028022800000001C002C003C004C005C0AE
+:10013000018C028C2E004C002900E1003582000069
+:100140001E00140004001D0034004D821F001A0020
+:1001500015001B00E1042A712000090016000600AA
+:1001600050002C7221001300170019004F004A00A4
+:1001700022000A00070005000000E20050000254BF
+:100180000000007F000001204F00025400000077B3
+:100190000000E20023000D000B000E000000E6004E
+:1001A00024000F001100100052004B002500180021
+:1001B000080036005100287226001C000C00370091
+:1001C0002F002B71270033001200387130004E834E
+:1001D0002D0031003400E500008200002E004C00AC
+:1001E0002900E100358200001E00140004001D00FB
+:1001F00034004D821F001A0016001B00E1042A7112
+:10020000200008000700060050002C722100150095
+:10021000090019004F004A00220017000A000500DB
+:100220000000E200500002540000007F00000120A6
+:100230004F000254000000770000E20023001C0081
+:100240000B0011000000E600240018000D00100053
+:1002500052004B0025000C000E00360051002872A1
+:10026000260012000F0037002F002B71270013000B
+:100270003300387130004E832D0031003400E5002A
+:1002800000820000010001000100010001000000E7
+:100290003A001E0220022202010001003B001F0260
+:1002A00021022302010001003C002F0226022F0040
+:1002B000010001003D003002270230000100010072
+:1002C0003E0031023500350200000100010001004E
+:1002D0000000010000000100010001000000010019
+:1002E000000001003F005200510024020000010004
+:1002F0004000240021001E000100010041002500F3
+:1003000022001F00370001004200260023002000C9
+:1003100027000100430025022E0231002E000100BB
+:100320004400450001000100010000000000000041
+:100330000000000000000000000006200220000075
+:100340000000010000000720032000000000010061
+:100350000000000004200000000001000000000078
+:100360000520000000000100000000000000000067
+:10037000000001000000000000000000000001007B
+:10038000000000000000000000000100000000006C
+:10039000000000000000010000000000000000005C
+:1003A000000001000000000000000000000001004B
+:1003B000000000000000000000000100000000003C
+:1003C000000000000000010000000000000000002C
+:1003D000000000000A002530313662003A20002576
+:1003E000303258000A722F632030313233343536C0
+:1003F0003738394142434445460A000A0025303225
+:100400005800626F756E6365213A20006C656674F2
+:1004100020736964652061747461636865640A00AF
+:100420006C6566742073696465206E6F74207265F4
+:1004300073706F6E64696E670A00747279696E67B3
+:1004400020746F207265736574206D637032333071
+:1004500031380A005B735D004B6579626F617264CD
+:100460002073746172742E0A005B575D005B535DEC
+:10047000005B525D005B445D005B435D001603451D
+:1004800000720067006F0044006F00780020004594
+:10049000005A00000016034500720067006F004418
+:1004A000006F007800200045005A00000004030996
+:1004B0000409028D00050100A0FA090400000103EF
+:1004C000010100092111010001223F0007058103FC
+:1004D00008000A09040100010301020009211101B9
+:1004E0000001224D000705820308000A09040200EA
+:1004F0000103000000092111010001223600070557
+:10050000830308000A090403000203000000092114
+:1005100011010001222000070584032000010705C6
+:100520000403200001090404000103000000092164
+:100530001101000122390007058503100001120195
+:10054000100100000008EDFE071301000102000188
+:1005500005010906A101050719E029E71500250194
+:100560009508750181020508190129059505750190
+:10057000910295017503910105071900297715006E
+:100580002501957875018102C00631FF0974A1012A
+:100590000975150025FF952075088102097615005B
+:1005A00025FF952075089102C005010980A10185EC
+:1005B0000216010026B7001A01002AB7007510952F
+:1005C000018100C0050C0901A10185031601002667
+:1005D0009C021A01002A9C02751095018100C00539
+:1005E000010902A1010901A1000509190129051547
+:1005F00000250195057501810295017503810105AD
+:1006000001093009311581257F9502750881060998
+:10061000381581257F950175088106050C0A380279
+:100620001581257F950175088106C0C00501090661
+:10063000A101050719E029E71500250195087501B5
+:1006400081029501750881010508190129059505A3
+:10065000750191029501750391010507190029FFA4
+:10066000150025FF950675088100C00A0025303267
+:100670005820006B6579626F6172645F7265706F9C
+:1006800072743A20000A0025303258006B65796296
+:100690006F6172645F7365745F6C65643A200064B7
+:1006A000656C5F6B65795F6269743A2063616E2780
+:1006B000742064656C3A20253032580A0061646405
+:1006C0005F6B65795F6269743A2063616E2774209D
+:1006D0006164643A20253032580A00646F6E652EDA
+:1006E0000A00626F6F676D61676963207363616E93
+:1006F0003A202E2E2E2000290A002575002F0025D5
+:1007000075005D2800256400200025640020002578
+:10071000640020002564007C0025303258006D6F95
+:100720007573656B6579205B62746E7C78207920C7
+:100730007620685D287265702F61636C293A205BB2
+:10074000006D6B5F776865656C5F74696D655F747C
+:100750006F5F6D6178203D2025640A006D6B5F77C7
+:100760006865656C5F6D61785F7370656564203D79
+:100770002025640A006D6B5F74696D655F746F5F3F
+:100780006D6178203D2025640A006D6B5F6D617896
+:100790005F7370656564203D2025640A006D6B5FA2
+:1007A000696E74657276616C203D2025640A006D67
+:1007B0006B5F64656C6179203D2025640A006D6B78
+:1007C0005F776865656C5F74696D655F746F5F6D99
+:1007D0006178203D2025640A006D6B5F7768656550
+:1007E0006C5F6D61785F7370656564203D20256482
+:1007F0000A006D6B5F74696D655F746F5F6D617822
+:10080000203D2025640A006D6B5F6D61785F737019
+:10081000656564203D2025640A006D6B5F696E7418
+:10082000657276616C203D2025640A006D6B5F6403
+:10083000656C6179203D2025640A000A0025750059
+:10084000363A20776865656C5F74696D655F746FB3
+:100850005F6D61783A20000A00257500353A2077EF
+:100860006865656C5F6D61785F73706565643A207B
+:10087000000A00257500343A2074696D655F746F55
+:100880005F6D61783A20000A00257500333A206DCB
+:1008900061785F73706565643A20000A0025750011
+:1008A000323A20696E74657276616C286D73293AEC
+:1008B00020000A00257500313A2064656C617928B2
+:1008C0002A31306D73293A20000A092D2056616CB7
+:1008D000756573202D0A004D3E004D25643E2000B5
+:1008E0003F007365742064656661756C740A00432B
+:1008F0003E200077686572652064656C74613A20FB
+:10090000637572736F723D25642C20776865656C22
+:100910003D25640A53656520687474703A2F2F650D
+:100920006E2E77696B6970656469612E6F72672FCF
+:1009300077696B692F4D6F7573655F6B6579730AA6
+:10094000000A092D204D6F7573656B6579202D0A9E
+:100950004553432F713A09717569740A313A096434
+:10096000656C6179282A31306D73290A323A096938
+:100970006E74657276616C286D73290A333A096D5D
+:1009800061785F73706565640A343A0974696D65EE
+:100990005F746F5F6D61780A353A09776865656CD9
+:1009A0005F6D61785F73706565640A363A097768D0
+:1009B00065656C5F74696D655F746F5F6D61780A02
+:1009C0000A703A097072696E742076616C7565738D
+:1009D0000A643A097365742064656661756C7473A2
+:1009E0000A75703A092B310A646F776E3A092D3116
+:1009F0000A706775703A092B31300A7067646F7737
+:100A00006E3A092D31300A0A7370656564203D2005
+:100A100064656C7461202A206D61785F7370656510
+:100A200064202A2028726570656174202F20746903
+:100A30006D655F746F5F6D6178290A003F004D3E00
+:100A40002000433E20004C25640A000A092D204363
+:100A50006F6E736F6C65202D0A4553432F713A09F1
+:100A6000717569740A6D3A096D6F7573656B657997
+:100A70000A000A092D204D61676963202D0A643A36
+:100A80000964656275670A783A096465627567206A
+:100A90006D61747269780A6B3A09646562756720E2
+:100AA0006B6579626F6172640A6D3A09646562759B
+:100AB00067206D6F7573650A763A0976657273699A
+:100AC0006F6E0A733A097374617475730A633A0935
+:100AD000636F6E736F6C65206D6F64650A302D34C3
+:100AE0003A096C61796572302D34284631302D46D3
+:100AF00034290A506175733A09626F6F746C6F61C3
+:100B00006465720A653A09656570726F6D0A6E3ABE
+:100B1000094E4B524F0A7A3A09736C656570204C46
+:100B2000454420746573740A000A002575002E6E12
+:100B30006B726F3A20000A002575002E7377617082
+:100B40005F6261636B736C6173685F6261636B7337
+:100B5000706163653A20000A002575002E73776185
+:100B6000705F67726176655F6573633A20000A00A3
+:100B70002575002E6E6F5F6775693A20000A0025A3
+:100B800075002E737761705F72616C745F72677548
+:100B9000693A20000A002575002E737761705F6C3A
+:100BA000616C745F6C6775693A20000A00257500F6
+:100BB0002E636170736C6F636B5F746F5F636F6ED6
+:100BC00074726F6C3A20000A002575002E737761ED
+:100BD000705F636F6E74726F6C5F636170736C6F64
+:100BE000636B3A20000A0025303258006B65796D3E
+:100BF00061705F636F6E6669672E7261773A20007D
+:100C00000A002575002E6D6F7573653A20000A0085
+:100C10002575002E6B6579626F6172643A20000A57
+:100C2000002575002E6D61747269783A20000A0003
+:100C30002575002E656E61626C653A20000A0025FC
+:100C40003032580064656275675F636F6E6669670E
+:100C50002E7261773A20000A00257500646566618E
+:100C6000756C745F6C617965723A20003F004E4B81
+:100C7000524F3A206F66660A004E4B524F3A206F31
+:100C80006E0A0074696D65725F636F756E743A20E9
+:100C90002530346C580A006B6579626F6172645F4D
+:100CA0006E6B726F3A2025580A006B6579626F612E
+:100CB00072645F69646C653A2025580A006B657937
+:100CC000626F6172645F70726F746F636F6C3A20F1
+:100CD00025580A00686F73745F6B6579626F617283
+:100CE000645F6C65647328293A2025580A000A0954
+:100CF0002D20537461747573202D0A004743433AC5
+:100D000020342E392E33204156522D4C4942433A3D
+:100D100020312E382E31204156525F415243483AFD
+:100D200020617672350A004F5054494F4E533A2095
+:100D30004C55464120424F4F544D41474943204D69
+:100D40004F5553454B45592045585452414B4559F1
+:100D500020434F4E534F4C4520434F4D4D414E4441
+:100D6000204E4B524F203531320A004255494C44F7
+:100D70003A20333064623330302D646972747920E4
+:100D80002830373A35373A3335204A616E203237CA
+:100D90002032303136290A005649443A203078460C
+:100DA000454544284572676F446F7820455A29208D
+:100DB0005049443A20307831333037284572676FD4
+:100DC000446F7820455A29205645523A20307830D1
+:100DD0003030310A00444553433A20742E6D2E6B57
+:100DE0002E206B6579626F617264206669726D771F
+:100DF00061726520666F72204572676F646F780A52
+:100E0000000A092D2056657273696F6E202D0A0045
+:100E10000A6D6F7573653A206F66660A000A6D6F1A
+:100E20007573653A206F6E0A000A6B6579626F61AF
+:100E300072643A206F66660A000A6B6579626F61B8
+:100E400072643A206F6E0A000A6D61747269783AB2
+:100E5000206F66660A000A6D61747269783A206FC5
+:100E60006E0A000A64656275673A206F6E0A000AAE
+:100E700064656275673A206F66660A000A0A626FE7
+:100E80006F746C6F616465722E2E2E2000433E20BD
+:100E9000006565636F6E6669673A0A00536C656545
+:100EA00070204C454420746573740A0000000000F3
+:100EB00000000000000000010204060A0F17202CA9
+:100EC0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9A5
+:100ED000DAC7B39D87715D4A3A2C20170F0A0604C2
+:100EE00002010000000000000000000011241FBEED
+:100EF000CFEFDAE0DEBFCDBF04B603FE24C08091A1
+:100F0000F9019091FA01A091FB01B091FC018730A9
+:100F1000904BA740B04BB9F41092F9011092FA012E
+:100F20001092FB011092FC0114BE84B7877F84BF2E
+:100F300088E10FB6F89480936000109260000FBEB5
+:100F4000E0E0FFE3099511E0A0E0B1E0EEEFFCE5A1
+:100F500002C005900D92AA33B107D9F711E0AAE3B8
+:100F6000B1E001C01D92A93FB107E1F70E943D1019
+:100F70000C947D2E0C940000FF93EF93E0913A01C6
+:100F8000F0913B01309709F00995EF91FF91089599
+:100F9000FC018591803011F0EFDFFBCF0895FF2732
+:100FA000E0E230E247FF0CC0419597FF09C0EDE257
+:100FB0006095709580959095611D711D811D911DA5
+:100FC00027FF02C0219530E350E2AA27660F771F62
+:100FD000881F991FAA1FA41710F0A41B63955A9588
+:100FE000A9F7AA3008F0A95FA05DAF93F39561154A
+:100FF00071058105910541F7ED3211F4EF93F395F9
+:10100000F21718F43F93F395FBCF8F91B5DFFA9564
+:10101000E1F70895E991F9918591803021F08532C9
+:1010200019F0AADFF9CF089520E0E89455915532E0
+:10103000C1F3503311F4689455915A3348F4505326
+:1010400090F3220F022E220F220F200D250FF4CF36
+:101050000EF4219589919991533619F3533729F15B
+:10106000533559F1BC0188279927E8945C3621F45F
+:101070008991999168945591543639F446EF7EF0F0
+:1010800077FF0DC08FEF9FEF0AC055374AE039F068
+:10109000583540E121F0523642E009F00895FF93BF
+:1010A000EF937DDFEF91FF91B7CFFF93EF93FC01BB
+:1010B00081918030B9F360DFFBCFFF93EF9368DF5E
+:1010C000F1CFDF93CF93CDB7DEB72596A3DFCF91D6
+:1010D000DF910895CF93DF93EC01623039F128F46A
+:1010E000662349F0613091F02DC0643029F108F198
+:1010F000653029F127C08A81882321F085EE0E947E
+:101100001A1720C085EE0E94E2171CC08A8188232E
+:1011100051F085EE0E941A1785EE0E94E21783EEC9
+:101120000E941A1703C083EE0E94E2178A81882367
+:1011300061F08A81882361F08A81882361F08A8145
+:10114000882361F080E090E00BC083E191E008C06B
+:1011500082E091E005C081EF90E002C080EE90E077
+:10116000DF91CF91089580E090E008956091BC01F7
+:101170007091BD018091BE019091BF010E94A82194
+:1011800056985E9825982D9826982E9827982F98EF
+:10119000823019F0833021F00895259A2D9A089510
+:1011A000269A2E9A089586EB98E0892B11F00E94DA
+:1011B000B60880E090E0089556985E9825982D989E
+:1011C00026982E9827982F988FEF90E0909389007B
+:1011D0008093880090938B0080938A0090938D0079
+:1011E00080938C00259A2D9A2FEF80E792E0215072
+:1011F00080409040E1F700C00000269A2E9A2FEF21
+:1012000080E792E0215080409040E1F700C000006C
+:10121000279A2F9A2FEF80E792E02150804090404C
+:10122000E1F700C0000025982D982FEF80E792E0AD
+:10123000215080409040E1F700C0000026982E9891
+:101240002FEF80E792E0215080409040E1F700C00E
+:10125000000027982F9856985E9825982D982698E4
+:101260002E9827982F98089589EA8093800089E026
+:101270008093810024982C983F988AB18F748AB902
+:101280006E98479A8BB1806B8BB9769A0E94DC0876
+:1012900083EB98E0892B11F00E94B30880E090E086
+:1012A000089580E28093000180913C0181110EC07D
+:1012B0000E94A00981E080933C012FEF83ED90E331
+:1012C000215080409040E1F700C0000080E40E947F
+:1012D000A6098093000181112EC00E94D00980933D
+:1012E0000001811128C00E94D00980930001811162
+:1012F00022C08FE30E94D0098093000181111BC09E
+:101300000E94C80980E40E94A6098093000181110F
+:1013100012C08CE00E94D0098093000181110BC0A3
+:101320000E94D00980930001811105C08FE30E94C3
+:10133000D009809300010E94C8098091000108959E
+:101340001092B9008AE08093B800089594EA9093CF
+:10135000BC009091BC0097FFFCCF9091B900987FA2
+:10136000983021F0903111F081E008958093BB0016
+:1013700084E88093BC008091BC0087FFFCCF809103
+:10138000B900887F883111F0803471F780E00895CA
+:1013900084E98093BC008091BC0084FDFCCF08955B
+:1013A0008093BB0084E88093BC008091BC0087FFE1
+:1013B000FCCF9091B900987F81E0983209F480E0E9
+:1013C000089584E88093BC008091BC0087FFFCCF27
+:1013D0008091BB00089580910001811115C080E4C7
+:1013E0000E94A6098093000181110CC082E10E9435
+:1013F000D00980930001811105C08FEF0E94D009B0
+:10140000809300010E94C80984B1807F84B985B1AE
+:10141000807F85B98AB1837F8AB98BB1837F8BB98D
+:101420003E98469808950E945109809300010E94B9
+:10143000EB0980B38C7080BB81B3836F81BBAEE35B
+:10144000B1E0ECE4F1E08EE08E0F11921D928E136C
+:10145000FCCF84E399E0892B11F00C9434090895B2
+:101460009F92AF92BF92CF92DF92EF92FF920F9333
+:101470001F93CF93DF93809100018823E1F0809147
+:101480003D018F5F80933D01811115C08AE394E097
+:101490000E94C8070E94510980930001882329F007
+:1014A00080E294E00E94C80706C08CE094E00E94AD
+:1014B000C8070E94DC080EE311E0C0E0D0E0BB24C6
+:1014C000B39482E0A82ECC24C394D12C2DEFE22E2D
+:1014D00023E0F22EC730D10500F580910001811183
+:1014E00064C080E40E94A60980930001811112C0AB
+:1014F00082E10E94D0098093000181110BC0C601D6
+:101500000C2E01C0880F0A94EAF780950E94D0093A
+:10151000809300010E94C80948C0CA30A1F028F495
+:10152000C83059F0C93061F005C0CC3089F070F096
+:10153000CD3089F0209A289810C0219A29980DC0A2
+:10154000229A2A980AC0239A2B9807C0529A01C05F
+:10155000539A5B9802C03E9A469890EA9A95F1F7A2
+:101560009FB1799902C082E001C080E091709B2513
+:10157000982B7C9902C084E001C080E0892B7D9982
+:1015800002C038E001C030E0832B7E9902C020E128
+:1015900001C020E0822B9FB19095991F9927991F38
+:1015A0009295990F907E892B10C080910001811136
+:1015B00074C080E40E94A60980930001882309F486
+:1015C00059C0912C0E94C809892DF8019081981763
+:1015D00039F1808380910101882301F18091D70145
+:1015E00080FF04C082E094E00E94C8078091D70188
+:1015F00080FF0CC0809101011F928F93FF92EF92A8
+:101600000E9461080F900F900F900F908091D7016A
+:1016100080FF04C08BEF93E00E94C807A0920101F5
+:101620000E94EB0921960F5F1F4FCE30D10509F0C4
+:1016300051CF809101018823B1F081508093010145
+:10164000882339F08FE99FE00197F1F700C000008F
+:101650000AC0ACE4B1E0EEE3F1E0CF01825F91912A
+:101660009D938E13FCCF83ED98E0892BC1F00E94EF
+:10167000D30815C083E10E94D00980930001811135
+:10168000A0CF81E40E94A60980930001811199CF27
+:101690000E94E109982E909495CF80E096CF81E04A
+:1016A000DF91CF911F910F91FF90EF90DF90CF903E
+:1016B000BF90AF909F900895E82FF0E0E45BFE4F5D
+:1016C00080810895CF92DF92EF92FF920F931F9344
+:1016D000CF93DF9384EE93E00E94C8078CE4E82E5A
+:1016E00081E0F82EC0E0D0E09FEDC92E93E0D92E26
+:1016F00006ED13E0DF93CF93DF92CF920E94610853
+:101700008CED93E00E94C807F70181917F0190E082
+:101710000E940E229F938F931F930F930E94610844
+:1017200084ED93E00E94C80721968DB79EB7089676
+:101730000FB6F8949EBF0FBE8DBFCE30D105D1F647
+:10174000DF91CF911F910F91FF90EF90DF90CF909D
+:1017500008958B3B910578F4883A910540F5853AD8
+:101760009105D0F48430910508F0B1C08130910525
+:1017700009F4ADC06BC0803E910508F467C0883E97
+:10178000910508F4A4C09C01205F31092031310586
+:1017900008F05CC090650895853A910509F459C038
+:1017A000863A910509F058C082E890E40895883A95
+:1017B000910509F454C0893A910509F453C08A3A55
+:1017C000910509F452C08B3A910509F451C08C3A45
+:1017D000910509F450C08D3A910509F44FC0803B42
+:1017E000910509F44EC08E3A910509F44DC08F3A27
+:1017F000910509F44CC0813B910509F44BC0823B33
+:10180000910509F44AC0833B910509F449C0843B22
+:10181000910509F448C0853B910509F447C0863B12
+:10182000910509F446C0873B910509F445C0883B02
+:10183000910509F444C0893B910509F443C08A3BF2
+:10184000910509F442C080E094E4089580E090E0BE
+:10185000089581E890E4089583E890E4089582EE85
+:1018600094E4089589EE94E408958AEE94E408954A
+:1018700085EB94E4089586EB94E4089587EB94E473
+:1018800008958CEC94E408958DEC94E4089583E835
+:1018900095E408958AE895E4089582E995E4089529
+:1018A00084E995E4089581E296E4089583E296E45C
+:1018B000089584E296E4089585E296E4089586E228
+:1018C00096E4089587E296E408958AE296E40895FE
+:1018D000089596E0799FF001112494E5899FE00D29
+:1018E000F11D1124E60FF11DEE0FFF1FEC5CFE4F02
+:1018F000859194910895880F991FFC01EC55F04053
+:10190000859194910895880F991FFC01EC5DFE4F1D
+:1019100085919491089526E0729FF001112444E589
+:10192000849FE00DF11D1124E60FF11DEE0FFF1F46
+:10193000EC5CFE4F859194919C013A9521154FE105
+:10194000340708F41AC13F512115304120F49F702B
+:101950000E94830C08959C0130532115304118F4E6
+:101960009927906C0895811520E5920769F40E94EB
+:10197000681B4FEF84E39CE0415080409040E1F7CA
+:1019800000C000000C94CE22813020E5920731F493
+:101990008091D70181608093D70108959C013055D3
+:1019A0002115304108F051C0292F33272F703327DC
+:1019B00021303105D9F4AC014370552702C0220F04
+:1019C000331F4A95E2F73C68AC0164E0440F551FB1
+:1019D0006A95E1F744275370242B352B73E0880F69
+:1019E000991F7A95E1F7807699271DC0223031053D
+:1019F00029F4982F8827816F906A08952330310544
+:101A0000A9F4AC014370552721E030E002C0220F59
+:101A1000331F4A95E2F73C6843E0880F991F4A95C7
+:101A2000E1F7807E9770822B932B08952430310547
+:101A3000E1F4AC014370552721E030E002C0220FF1
+:101A4000331F4A95E2F73A68E7CF9C0130572115DA
+:101A5000304118F49F70906208959C013058211510
+:101A6000304118F49F70906A0895803E9105E0F42B
+:101A7000803C910558F58133910509F46FC048F415
+:101A80008932910509F463C08A32910509F46DC069
+:101A900072C089339105E9F082389105D1F0853320
+:101AA000910509F44DC067C0833E910581F138F47A
+:101AB000803E9105B9F0823E9105D9F05CC0863E2A
+:101AC000910561F1873E9105A1F155C00E947B0C03
+:101AD00008952091EA0120FD02C021FF4CC080EE54
+:101AE00090E049C08091EA0180FFF9CF89E390E05E
+:101AF00042C08091EA0182FF0EC08091EA0184FF1A
+:101B000003C080E090E037C083EE90E034C0809165
+:101B1000EA0182FFF2CF82EE90E02DC08091EA01CF
+:101B200083FF0BC08091EA0184FDEBCF87EE90E04C
+:101B300022C08091EA0183FFF5CF86EE90E01BC0C2
+:101B40008091EA0185FF07C089E290E014C080918E
+:101B5000EA0185FFF9CF85E390E00DC08091EA01AD
+:101B600086FF07C08AE290E006C08091EA0186FF06
+:101B7000F9CF81E390E00E94A90B08950895809128
+:101B80006D0108959FB7F89410925C019FBF9091EA
+:101B9000F001943009F057C09091E9009F703091A6
+:101BA000EC00232F217030FD20E8922B24E02093BD
+:101BB000E9002091EB0020FF43C02091EE0027FFB9
+:101BC0003FC020915A01222321F02091E80025FFF7
+:101BD00037C010925A0126E03091E80035FD15C05B
+:101BE0003091F001343061F53091EB0035FD28C0C3
+:101BF000215021F481E080935A0122C0EFE9FFE0F7
+:101C00003197F1F700C00000E7CF8093F100809199
+:101C1000E80085FD0AC08091E80080FFFCCF80913C
+:101C2000E8008E778093E80006C08FB7F89421E033
+:101C300020935C018FBF9F709093E90080E008952E
+:101C40009F709093E9008FEF0895CF93DF9300D0BA
+:101C50001F92CDB7DEB79C018091F001843019F559
+:101C600093E099833B832A839093E9008FEF9091CF
+:101C7000E800815095FD06C095ED9A95F1F70000BA
+:101C80008111F5CF8091E80085FF0DC040E050E064
+:101C900063E070E0CE0101960E94F5108091E800AB
+:101CA0008E778093E8000F900F900F90DF91CF9187
+:101CB0000895CF93DF9300D01F92CDB7DEB7209168
+:101CC000F001243021F522E029839B838A8383E07D
+:101CD0008093E9008FEF9091E800815095FD06C058
+:101CE00095ED9A95F1F700008111F5CF8091E8000C
+:101CF00085FF0DC040E050E063E070E0CE0101964A
+:101D00000E94F5108091E8008E778093E8000F9094
+:101D10000F900F90DF91CF9108952091F001243022
+:101D2000F1F422E02093E9002FEF3091E8002150F8
+:101D300035FD06C035ED3A95F1F700002111F5CFDC
+:101D40002091E80025FF0BC040E050E065E070E026
+:101D50000E94F5108091E8008E778093E800089546
+:101D6000CF93DF932091F001243009F048C0EC01BB
+:101D700080910C018823E1F080910D018823C1F04E
+:101D800085E08093E9008FEF9091E800815095FD08
+:101D900006C095E19A95F1F700008111F5CF809189
+:101DA000E80085FF2CC040E050E060E170E017C023
+:101DB00081E08093E9008FEF9091E800815095FDDC
+:101DC00006C095ED9A95F1F700008111F5CF80914D
+:101DD000E80085FF14C040E050E068E070E0CE010C
+:101DE0000E94F5108091E8008E778093E80080E1F2
+:101DF000FE01ADE5B1E001900D928A95E1F7DF912A
+:101E0000CF91089589E794E00E94C8078091EF017F
+:101E1000811109C00E948A120E94E7128091E2009B
+:101E200084608093E200089585E794E00E94C807EB
+:101E30001092EF01089581E794E00C94C8078DE6B5
+:101E400094E00E94C8070C949E2C89E694E00E94BE
+:101E5000C8070E9464220E94A42C0E948C150C9436
+:101E6000BE0D20915B012F5F822F62E30E94122E34
+:101E7000992319F020935B01089510925B018091E2
+:101E80005C01882371F18091F001843041F58091EB
+:101E9000E9008F702091EC00922F917020FD90E866
+:101EA000892B94E09093E9009091EB0090FF14C08F
+:101EB0009091EE0097FF10C09091E80095FF03C04D
+:101EC0001092F100F9CF9091E80090FF05C0909139
+:101ED000E8009E779093E8008F708093E90010925D
+:101EE0005C01089542E061EC81E00E94041242E04E
+:101EF00061EC82E00E94041242E061EC83E00E9407
+:101F0000041242E261EC84E00E94041242E161ECBE
+:101F100085E00C9404128091F201833009F455C0DD
+:101F200030F4813071F0823009F48EC008958A3027
+:101F300009F47AC08B3009F460C0893009F09CC084
+:101F400020C08091F101813A09F096C08091E800AB
+:101F5000877F8093E8008091F5019091F601892BAD
+:101F600021F460E18DE591E003C060E080E090E065
+:101F700070E00E9440118091E8008B778093E80028
+:101F800008958091F101813209F076C08091F501C8
+:101F90009091F601009719F0049709F06DC08091B7
+:101FA000E800877F8093E8008091E80082FD05C00B
+:101FB0008091F0018111F8CF5FC08091F100809392
+:101FC0006D018091E8008B7753C08091F101813AD7
+:101FD00009F052C08091F5019091F601892B09F02A
+:101FE0004BC08091E800877F8093E8008091E800F3
+:101FF00080FFFCCF80910C0136C08091F1018132CD
+:10200000D9F58091F5019091F601892BA9F5809180
+:10201000E800877F8093E8000E9439128091F301E5
+:1020200080930C010C94681B8091F101813221F5A1
+:102030008091E800877F8093E8000E9439128091A8
+:10204000F40180936E0108958091F101813AA1F429
+:102050008091E800877F8093E8008091E80080FF0E
+:10206000FCCF80916E018093F1008091E8008E7723
+:102070008093E8000C943912089584B7877F84BF59
+:1020800088E10FB6F89480936000109260000FBE54
+:1020900090E080E80FB6F89480936100909361001F
+:1020A0000FBE0E9419160E948A120E94E7128091A8
+:1020B000E20084608093E20082EC9DE00E94A32114
+:1020C00078940E946C150E941B1682E091E00E9499
+:1020D00087150E948C2C88E594E00E94C8078091A7
+:1020E000F001853089F484E594E00E94C8070E94DD
+:1020F00028228091EE01882391F30E9450228823A8
+:1021000071F30E94DF10EBCF0E944916E8CF292F10
+:10211000332723303105C9F064F42130310581F0D3
+:102120002230310509F043C08DE890E021EB34E026
+:1021300042C021323105F1F02232310541F137C080
+:1021400082E190E02EE335E036C099278130910599
+:1021500041F08230910541F0892B49F5EDEAF4E038
+:1021600005C0E5E9F4E002C0EDE7F4E0849190E019
+:102170009F0121C06530D8F4E62FF0E0EE0FFF1F7D
+:10218000EB5DFE4F2081318189E090E014C0653025
+:1021900070F470E0FB01EE0FFF1FE55EFE4F208143
+:1021A0003181FB01EA5EFE4F808190E004C080E057
+:1021B00090E020E030E0FA0131832083089580E14F
+:1021C00089BD82E189BD09B400FEFDCF8091D800B0
+:1021D0008F7D8093D8008091E00082608093E00042
+:1021E0008091E00081FDFCCF0895CF92DF92EF92C5
+:1021F000FF920F931F93CF93DF93EC018B016A0142
+:102200000E945812811133C0C114D10439F0F60173
+:1022100080819181081B190BC80FD91FE12CF12C6B
+:102220000115110519F18091E80085FD16C0809116
+:10223000E8008E778093E800C114D10449F0F601DC
+:1022400080819181E80EF91EF182E08285E00FC065
+:102250000E945812882321F30AC089918093F100CB
+:1022600001501109FFEFEF1AFF0ADACF80E0DF918A
+:10227000CF911F910F91FF90EF90DF90CF90089535
+:102280002091F7013091F8012617370748F06115C2
+:10229000710539F42091E8002E772093E80001C001
+:1022A000B90140E061157105A9F12091F0012223E7
+:1022B00009F443C0253009F442C02091E80023FD11
+:1022C00040C02091E80022FD32C02091E80020FFAC
+:1022D000E9CF4091F3002091F20030E0342BFC0173
+:1022E000CF016115710559F02830310540F4819115
+:1022F0008093F100615071092F5F3F4FF1CF41E0B2
+:102300002830310509F040E02091E8002E77209335
+:10231000E800C8CF4111C9CF0AC08091F0018823DD
+:1023200061F0853061F08091E80083FD0AC0809102
+:10233000E80082FFF2CF80E0089582E0089583E014
+:10234000089581E008952091F7013091F801261752
+:10235000370748F06115710539F42091E8002E77B0
+:102360002093E80001C0B901FC0120E0611571056E
+:1023700091F18091F001882309F440C0853009F47F
+:102380003FC08091E80083FD3DC08091E80082FD60
+:102390002FC08091E80080FFE9CF2091F300809169
+:1023A000F20090E0922B6115710559F0883091058B
+:1023B00040F424912093F100319661507109019607
+:1023C000F2CF21E0089709F020E08091E8008E77B5
+:1023D0008093E800CBCF2111CCCF0AC08091F001CF
+:1023E000882361F0853061F08091E80083FD0AC0A8
+:1023F0008091E80082FFF2CF80E0089582E00895A6
+:1024000083E0089581E00895982F973058F59093D0
+:10241000E900981739F07091EC002091ED0050918F
+:10242000F00003C0242F762F50E021FF19C0309117
+:10243000EB003E7F3093EB003091ED003D7F309319
+:10244000ED003091EB0031603093EB007093EC00C5
+:102450002093ED005093F0002091EE0027FF07C07D
+:102460009F5FD3CF8F708093E90081E0089580E073
+:1024700008958091F10187FF11C08091E80082FDED
+:1024800005C08091F0018111F8CF11C08091E80062
+:102490008B770BC08091F001882349F08091E80090
+:1024A00080FFF8CF8091E8008E778093E800089550
+:1024B0002091E4003091E50095E64091EC00842FF6
+:1024C000817040FF22C08091E80080FD1CC0809197
+:1024D000F001882391F0853091F08091EB0085FD2B
+:1024E00010C04091E4005091E5004217530729F3D2
+:1024F0009A01915011F784E0089582E0089583E0F5
+:10250000089581E0089580E008954091E80042FF39
+:10251000DECF08950E94F8120E940013E0EEF0E072
+:10252000808181608083E8EDF0E080818F77808317
+:1025300019BCA7EDB0E08C918E7F8C9380818F7E4B
+:1025400080831092EF0108950F931F93CF93DF9331
+:102550000E94F8120E940013C8EDD0E088818F77A6
+:10256000888388818068888388818F7D888319BC6F
+:102570001092F0011092EC011092EE011092ED0118
+:1025800000EE10E0F80180818B7F8083888181607C
+:10259000888342E060E080E00E940412E1EEF0E017
+:1025A00080818E7F8083E2EEF0E080818160808395
+:1025B000808188608083F80180818E7F808388811C
+:1025C00080618883DF91CF911F910F910895E8ED8D
+:1025D000F0E080818F7E8083E7EDF0E08081816094
+:1025E000808384E082BF81E08093EF010C94A41289
+:1025F000E8EDF0E080818E7F80831092E200089504
+:102600001092DA001092E10008951F920F920FB617
+:102610000F9211242F933F934F935F936F937F9368
+:102620008F939F93AF93BF93EF93FF938091E100BC
+:1026300082FF0BC08091E20082FF07C08091E10021
+:102640008B7F8093E1000E94310F8091DA0080FF40
+:102650001FC08091D80080FF1BC08091DA008E7F60
+:102660008093DA008091D90080FF0DC080E189BDA0
+:1026700082E189BD09B400FEFDCF81E08093F001C5
+:102680000E94020F05C019BC1092F0010E94140FA5
+:102690008091E10080FF19C08091E20080FF15C0A9
+:1026A0008091E2008E7F8093E2008091E200806161
+:1026B0008093E2008091D80080628093D80019BC9A
+:1026C00085E08093F0010E941F0F8091E10084FF5C
+:1026D00030C08091E20084FF2CC080E189BD82E19E
+:1026E00089BD09B400FEFDCF8091D8008F7D809315
+:1026F000D8008091E1008F7E8093E1008091E2001C
+:102700008F7E8093E2008091E20081608093E200FE
+:102710008091EC01882311F084E007C08091E300F0
+:1027200087FD02C081E001C083E08093F0010E9438
+:10273000250F8091E10083FF29C08091E20083FF93
+:1027400025C08091E100877F8093E10082E0809343
+:10275000F0011092EC018091E1008E7F8093E10006
+:102760008091E2008E7F8093E2008091E2008061A0
+:102770008093E20042E060E080E00E9404128091D9
+:10278000F00088608093F0000E941B0FFF91EF9192
+:10279000BF91AF919F918F917F916F915F914F9179
+:1027A0003F912F910F900FBE0F901F9018951F9281
+:1027B0000F920FB60F9211242F933F934F935F9375
+:1027C0006F937F938F939F93AF93BF93CF93DF9339
+:1027D000EF93FF93C091E900CF708091EC00D82F68
+:1027E000D17080FDD0E81092E9008091F000877FE1
+:1027F0008093F00078940E941B141092E90080915D
+:10280000F00088608093F000CD2BCF70C093E9007A
+:10281000FF91EF91DF91CF91BF91AF919F918F91F8
+:102820007F916F915F914F913F912F910F900FBECC
+:102830000F901F9018951F93CF93DF93CDB7DEB7FE
+:10284000AA970FB6F894DEBF0FBECDBFE1EFF1E05F
+:1028500088E08E0F9091F10091938E13FBCF0E9430
+:102860008B0F8091E80083FF1FC18091F10190914F
+:10287000F201492F50E04A30510508F015C1FA0124
+:10288000EA5AFF4F0C94322E803881F0823809F0DA
+:102890000BC18091F5018F708093E9008091EB006E
+:1028A00085FB882780F91092E90006C08091ED0130
+:1028B0009091EE01911182609091E800977F909342
+:1028C000E8008093F1001092F100C8C0282F2D7FFE
+:1028D00009F0EAC0882319F0823061F0E5C08091E8
+:1028E000F301813009F0E0C0933009F080E080937B
+:1028F000EE012BC08091F301811127C08091F50179
+:102900008F7009F4D1C08093E9002091EB0020FF83
+:102910001CC0933021F48091EB00806214C0909130
+:10292000EB0090619093EB0021E030E0A90102C040
+:10293000440F551F8A95E2F74093EA001092EA008F
+:102940008091EB0088608093EB001092E900809109
+:10295000E800877F86C08111A7C01091F3011F771F
+:102960008091E3008078812B8093E3008091E800E0
+:10297000877F8093E8000E9439128091E80080FFF1
+:10298000FCCF8091E30080688093E300111102C0C6
+:1029900082E001C083E08093F00186C080588230DD
+:1029A00008F082C08091F3019091F4018C3D53E0D6
+:1029B000950779F583E08A838AE289834FB7F89493
+:1029C000DE01139620E03EE051E2E32FF0E0509369
+:1029D0005700E49120FF03C0E295EF703F5FEF7076
+:1029E0008E2F90E0EA3010F0C79601C0C0968D930C
+:1029F0009D932F5F243149F74FBF8091E800877F77
+:102A00008093E8006AE270E0CE0101960E944011D6
+:102A100014C0AE014F5F5F4F6091F5010E948710B7
+:102A2000BC01892B09F440C09091E800977F9093F6
+:102A3000E80089819A810E94A3118091E8008B7738
+:102A40008093E80031C0803879F58091E800877F75
+:102A50008093E8008091EC018093F1008091E80080
+:102A60008E778093E8000E9439121EC081111CC02D
+:102A70009091F3019230C0F48091E800877F8093B9
+:102A8000E8009093EC010E9439128091EC018111D1
+:102A900006C08091E30087FD02C081E001C084E0B0
+:102AA0008093F0010E94720F8091E80083FF0AC0BA
+:102AB0008091E800877F8093E8008091EB0080623E
+:102AC0008093EB00AA960FB6F894DEBF0FBECDBF81
+:102AD000DF91CF911F910895CF938091F0018823CA
+:102AE000A1F0C091E900CF709091EC00892F817026
+:102AF00090FD80E8C82B1092E9008091E80083FDEA
+:102B00000E941B14CF70C093E900CF910895909359
+:102B10007401809373010895E0917301F091740141
+:102B2000309721F00190F081E02D099480E0089524
+:102B3000EF92FF920F931F93CF93DF93E091730176
+:102B4000F09174013097B1F18C010280F381E02D96
+:102B500009958091D70182FF2DC080FF04C083E7D3
+:102B600096E00E94C807E80110E18DE6E82E86E0B5
+:102B7000F82E8091D70180FF0BC088811F928F9320
+:102B8000FF92EF920E9461080F900F900F900F90AC
+:102B9000115021961111EDCF8091D70180FF0AC00D
+:102BA0008BE696E0DF91CF911F910F91FF90EF9010
+:102BB0000C94C807DF91CF911F910F91FF90EF9078
+:102BC0000895E0917301F0917401309721F0048031
+:102BD000F581E02D099408952091710130917201E1
+:102BE0008217930771F09093720180937101E091C5
+:102BF0007301F0917401309721F00680F781E02D88
+:102C00000994089520916F01309170018217930704
+:102C100071F09093700180936F01E0917301F091D6
+:102C20007401309721F00084F185E02D0994089516
+:102C300008950C9418160E946A220E94130A0C949C
+:102C40003023CF93C82F8091D70182FF1EC080FF11
+:102C500004C08CE896E00E94C8078091D70180FFED
+:102C60000CC01F92CF9387E896E09F938F930E94AA
+:102C700061080F900F900F900F908091D70180FF07
+:102C800004C085E896E00E94C8078C2FCF910C9471
+:102C9000BE0DCF92DF92EF92FF920F931F93CF93CF
+:102CA000DF93CDB7DEB72B970FB6F894DEBF0FBE1C
+:102CB000CDBF0E94300A86E7C82E81E0D82E00E002
+:102CC00010E0E02E802F0E945C0BF60141916F0115
+:102CD000F42EF826B1F40F5F1F4F0E30110589F75F
+:102CE0008FEF89838A831B820E9473228160782FF1
+:102CF0009D838C8349815A816B818D810E94EC1662
+:102D000040C09091D70191FF04C08B870E94620B55
+:102D10008B8520E030E04F2D50E0922FBA01022E3B
+:102D200002C0759567950A94E2F760FF24C02E8370
+:102D3000EF8221E030E0690102C0CC0CDD1C9A95E5
+:102D4000E2F790E08C219D21892B09F420E028876F
+:102D50000E9473228160782F9A8789874E815F81D4
+:102D600068858A850E94EC16F801EA58FE4F80813A
+:102D7000C826C08206C02F5F3F4F2630310569F656
+:102D8000AACF0E94A126109175010E948C151817D8
+:102D9000A1F00E948C15809375012B960FB6F894C4
+:102DA000DEBF0FBECDBFDF91CF911F910F91FF907E
+:102DB000EF90DF90CF900C9421162B960FB6F894DD
+:102DC000DEBF0FBECDBFDF91CF911F910F91FF905E
+:102DD000EF90DF90CF900895CF93DF93CDB7DEB71C
+:102DE0002B970FB6F894DEBF0FBECDBF4F83588729
+:102DF00069877A878B87DE01119686E0FD01119243
+:102E00008A95E9F785E0FE01379601900D928A9543
+:102E1000E1F749815A816B817C818D819E810E947D
+:102E2000021E2B960FB6F894DEBF0FBECDBFDF910A
+:102E3000CF910895CF93882309F4C2C0C82F823858
+:102E400059F40E948C1581FDBBC089E30E949E202D
+:102E50000E947D2189E30CC0833879F40E948C158F
+:102E600080FDAEC083E50E949E200E947D2183E507
+:102E70000E94F120CF910C947D21843859F40E9456
+:102E80008C1582FD9DC087E40E949E200E947D21BA
+:102E900087E4EECF8CEF8C0F813A48F48C2F0E94A0
+:102EA000342B81118DC08C2F0E949E20E3CF80E2B5
+:102EB0008C0F883048F4C77081E001C0880FCA9534
+:102EC000EAF70E944621D6CF8BE58C0F833078F449
+:102ED000C53A29F0C63A31F083E890E005C081E8B0
+:102EE00090E002C082E890E0CF910C94EC1588E568
+:102EF0008C0F833108F064C0C83A39F1C93A41F106
+:102F0000CA3A49F1CB3A51F1CC3A59F1CD3A61F193
+:102F1000C03B69F1CE3A71F1CF3A79F1C13B81F111
+:102F2000C23B89F1C33B91F1C43B99F1C53BA1F18F
+:102F3000C63BA9F1C73BB1F1C83BB9F1C93BC1F1EF
+:102F4000CA3BC9F180E090E038C082EE90E035C025
+:102F500089EE90E032C08AEE90E02FC085EB90E0E1
+:102F60002CC086EB90E029C087EB90E026C08CEC6B
+:102F700090E023C08DEC90E020C083E891E01DC07C
+:102F80008AE891E01AC082E991E017C084E991E0F3
+:102F900014C081E292E011C083E292E00EC084E2AC
+:102FA00092E00BC085E292E008C086E292E005C0A4
+:102FB00087E292E002C08AE292E0CF910C9402167E
+:102FC000CF910895882309F44BC0823859F40E94A8
+:102FD0008C1581FF45C089E30E949E200E947D21BF
+:102FE00089E30CC0833871F40E948C1580FF38C0CF
+:102FF00083E50E949E200E947D2183E50E94F120AE
+:103000000C947D21843859F40E948C1582FF28C0CD
+:1030100087E40E949E200E947D2187E4EFCF9CEFF1
+:10302000980F913A58F390E2980F983050F48770C7
+:1030300091E001C0990F8A95EAF7892F0E944C21EF
+:10304000DFCF9BE5980F933020F480E090E00C9464
+:10305000EC15885A833120F480E090E00C9402163D
+:103060000895882321F00E9446210C947D21089523
+:10307000882321F00E944C210C947D210895BF9259
+:10308000CF92DF92EF92FF920F931F93CF93DF9334
+:1030900000D000D000D0CDB7DEB725E0FC01DE01C6
+:1030A000119601900D922A95E1F7FC014081318142
+:1030B0000281258122952F7063817481672B09F429
+:1030C000E5C23F3F19F44F3F09F4E0C27C01498358
+:1030D0003A8389819A812E830E945D20182FB92E10
+:1030E0000E945C200E94231FEB2DE295EF70F0E020
+:1030F000E05AFF4F2E810C94322E8B2D807F9B2D1A
+:103100009F70F92E882319F0F29480EFF8220023A3
+:1031100049F0FF2009F467C28F2D0E9456210E94BA
+:103120007D2161C2812F0E94E217FF2009F4AEC207
+:103130008F2D0E945C2126960FB6F894DEBF0FBE3D
+:10314000CDBFDF91CF911F910F91FF90EF90DF9056
+:10315000CF90BF900C947D213B2D307F8B2D8F70B5
+:10316000303211F08295807F112319F0113021F156
+:103170002CC00023B9F0222309F4A0C1213009F0AA
+:103180009DC126960FB6F894DEBF0FBECDBFDF916E
+:10319000CF911F910F91FF90EF90DF90CF90BF9054
+:1031A0000C946621222319F0213009F46FC28E831A
+:1031B0000E9469218E8196C1002321F0223008F0FF
+:1031C00065C27CC1211162C28DC1002321F022237E
+:1031D00009F474C108C2222309F484C119C22B2D39
+:1031E00026952695237030E02115310521F02130F8
+:1031F0003105D1F04BC2002321F0812F9B2D93701C
+:1032000002C080E090E026960FB6F894DEBF0FBEB5
+:10321000CDBFDF91CF911F910F91FF90EF90DF9085
+:10322000CF90BF900C94EC15002321F0812F9B2DA3
+:10323000937002C080E090E026960FB6F894DEBF4F
+:103240000FBECDBFDF91CF911F910F91FF90EF90F7
+:10325000DF90CF90BF900C940216812F002319F0BD
+:103260000E94272502C00E948F2526960FB6F8944B
+:10327000DEBF0FBECDBFDF91CF911F910F91FF90A9
+:10328000EF90DF90CF90BF900C9414268B2D83701D
+:1032900009F07BC00111FAC1812F82958695877054
+:1032A000880F880F912F9F70C92ED12CE12CF12C03
+:1032B000082E04C0CC0CDD1CEE1CFF1C0A94D2F7B7
+:1032C00014FF12C04FE050E060E070E004C0440F13
+:1032D000551F661F771F8A95D2F7CB01BA016095FB
+:1032E00070958095909503C060E070E0CB012B2D28
+:1032F000269526952370422F50E042305105D9F093
+:103300004330510569F16C297D298E299F2941306F
+:10331000510551F126960FB6F894DEBF0FBECDBF12
+:10332000DF91CF911F910F91FF90EF90DF90CF90A1
+:10333000BF900C944A1F6C297D298E299F292696BF
+:103340000FB6F894DEBF0FBECDBFDF91CF911F91B6
+:103350000F91FF90EF90DF90CF90BF900C94661F7D
+:103360000E944A1FC701B60126960FB6F894DEBF29
+:103370000FBECDBFDF91CF911F910F91FF90EF90C6
+:10338000DF90CF90BF900C942E1F002319F08B2D4F
+:10339000817001C08695882309F478C1812F8295B8
+:1033A00086958770880F880F912F9F70C92ED12C1A
+:1033B000E12CF12C082E04C0CC0CDD1CEE1CFF1CF3
+:1033C0000A94D2F714FF12C04FE050E060E070E0C2
+:1033D00004C0440F551F661F771F8A95D2F7CB0193
+:1033E000BA01609570958095909503C060E070E09B
+:1033F000CB012B2D269526952370422F50E042308D
+:103400005105D9F04330510569F16C297D298E2988
+:103410009F294130510551F126960FB6F894DEBF31
+:103420000FBECDBFDF91CF911F910F91FF90EF9015
+:10343000DF90CF90BF900C9424206C297D298E2999
+:103440009F2926960FB6F894DEBF0FBECDBFDF9141
+:10345000CF911F910F91FF90EF90DF90CF90BF9091
+:103460000C9440200E942420C701B60126960FB676
+:10347000F894DEBF0FBECDBFDF91CF911F910F91AA
+:10348000FF90EF90DF90CF90BF900C940820103FFA
+:10349000D1F118F4103E50F4A1C0123F09F463C0FA
+:1034A00008F44CC0133F09F473C098C01F708B2DF3
+:1034B0008F710023A1F00E94A11F812F26960FB6C5
+:1034C000F894DEBF0FBECDBFDF91CF911F910F915A
+:1034D000FF90EF90DF90CF90BF900C9431180E9436
+:1034E000C21F812F26960FB6F894DEBF0FBECDBF48
+:1034F000DF91CF911F910F91FF90EF90DF90CF90D0
+:10350000BF900C9438180023A9F02111BFC08B2D57
+:103510008F7126960FB6F894DEBF0FBECDBFDF9138
+:10352000CF911F910F91FF90EF90DF90CF90BF90C0
+:103530000C94E71F223008F0A9C0E9CF0023A9F0BE
+:103540008B2D8F7126960FB6F894DEBF0FBECDBFC0
+:10355000DF91CF911F910F91FF90EF90DF90CF906F
+:10356000BF900C94A11F002359F38B2D8F712696C9
+:103570000FB6F894DEBF0FBECDBFDF91CF911F9184
+:103580000F91FF90EF90DF90CF90BF900C94C21FEF
+:10359000002399F08B2D8F7126960FB6F894DEBF1D
+:1035A0000FBECDBFDF91CF911F910F91FF90EF9094
+:1035B000DF90CF90BF900C948C1F26960FB6F89496
+:1035C000DEBF0FBECDBFDF91CF911F910F91FF9056
+:1035D000EF90DF90CF90BF900C94821F0023A9F052
+:1035E000222309F4ADCF812F26960FB6F894DEBFC3
+:1035F0000FBECDBFDF91CF911F910F91FF90EF9044
+:10360000DF90CF90BF900C941A17222309F4ADCF0E
+:10361000812F26960FB6F894DEBF0FBECDBFDF9187
+:10362000CF911F910F91FF90EF90DF90CF90BF90BF
+:103630000C94E2174B2D4F70612FC7010E946A084E
+:1036400026960FB6F894DEBF0FBECDBFDF91CF91A7
+:103650001F910F91FF90EF90DF90CF90BF900C944F
+:10366000A61E4B2D4F70612FC70126960FB6F894FA
+:10367000DEBF0FBECDBFDF91CF911F910F91FF90A5
+:10368000EF90DF90CF90BF900C94680C26960FB609
+:10369000F894DEBF0FBECDBFDF91CF911F910F9188
+:1036A000FF90EF90DF90CF90BF9008950E9463212C
+:1036B0000E9438210E947D210E9447270E941426E3
+:1036C00080E090E00E94EC1580E090E00C940216FF
+:1036D0000E9453210C94561B0E945D20292F229595
+:1036E0002F7030E02C3031054CF42A3031056CF469
+:1036F000225031092230310588F407C02C303105C1
+:1037000049F02F30310531F009C0803E48F0803F4C
+:1037100029F406C093FB882780F9089580E0089576
+:1037200081E00895CF93DF9300D000D01F92CDB7F2
+:10373000DEB70F900F900F900F900F90DF91CF9109
+:103740000895CF93DF9300D000D000D0CDB7DEB77F
+:1037500026960FB6F894DEBF0FBECDBFDF91CF9196
+:1037600008951F93CF93DF93C091840116E0809159
+:103770008501C81799F0D0E01C9FF0011D9FF00D46
+:103780001124EA57FE4F4081518162817381848107
+:1037900095810E94A11B2196C770E9CFDF91CF913F
+:1037A0001F9108954091B6015091B7016091B80101
+:1037B0007091B9018091BA019091BB010C94A11B49
+:1037C0008091BB0182958F7009F054C08091B8013F
+:1037D000882309F44FC080918401A09185016091F4
+:1037E000B6017091B7014091B9015091BA01B6E0AC
+:1037F0008A1709F43FC090E041155105C1F17F3FA0
+:1038000011F46F3FA1F1B89FF001B99FF00D1124A1
+:10381000EA57FE4F218172132AC02081621327C00C
+:103820002281211124C0238134812417350710F40B
+:1038300021503109241B350B283C3105C0F420915F
+:10384000BB012F7020612093BB0126E0289FF0016F
+:10385000299FF00D1124E557FE4F80818F70806104
+:10386000808386EB91E00E943F180C94B11B019677
+:103870008770BECF0895CF92DF92EF92FF920F93A1
+:103880001F93CF93DF93CDB7DEB762970FB6F8944F
+:10389000DEBF0FBECDBF8C0185E0F801DE011D96B5
+:1038A00001900D928A95E1F7D8014C9111965C91A7
+:1038B000119712966C9112971396CD90DC901497F5
+:1038C0003091B6017091B7018091B9019091BA0120
+:1038D000009709F46BC17F3F19F43F3F09F466C1BB
+:1038E000E090B801EE2009F4C0C02091BB01C816D9
+:1038F000D90628F0F601E81BF90BCF0104C080952A
+:1039000090958C0D9D1DFF24F394883C910578F0D3
+:10391000F12C207F09F0C6C07C2DD98AC88A8989FC
+:103920000E94921B86EB91E00E943F18B1C0822F4B
+:10393000807F09F046C0751314C0341312C06111A2
+:1039400010C02F7020612093BB010E94D21B86EB18
+:1039500091E00E943F188091BB01D80115968C938D
+:103960002EC0CD2819F15F3F11F44F3FF9F0F62E2C
+:1039700061111CC0809184012091850136E082177D
+:1039800009F45AC090E0389FF001399FF00D1124DE
+:10399000EA57FE4F7181571306C07081471303C069
+:1039A0007281711103C001968770E9CFF62E6623EC
+:1039B00009F418C18091BB0181608093BB01F12C97
+:1039C00011C1751308C0341306C0611104C0809181
+:1039D000BB01D801C3C04D875E878D859E856A8BEC
+:1039E0000E946C1B6A898823E1F16623D1F1209142
+:1039F000BB01822F82958F7090E0029774F08091C6
+:103A0000B6019091B70198878F831986DB86CA86A5
+:103A10002C87CE0107960E943F1886E0F801A6EB9E
+:103A2000B1E001900D928A95E1F70E94E01B0E949F
+:103A3000D21BFF24F394D6C04D875E878D859E856B
+:103A40000E945D20292F22952F7030E02230310511
+:103A50000CF0BCC09F7009F0B6C0805E883008F4DE
+:103A6000C1C0C8010E943F18E4CFC816D90608F4A7
+:103A700053C0F601E81BF90BCF01883C910508F40F
+:103A800050C0F12C7C2DD98AC88A89890E94921B4A
+:103A9000E6EBF1E086E0DF011D928A95E9F70E94EE
+:103AA000D21BA0C0751314C0341312C0611110C012
+:103AB0008091BB01F8018583C8010E943F1886E010
+:103AC000E6EBF1E0DF011D928A95E9F7FE2C8AC052
+:103AD0004D875E878D859E856A8B0E946C1B6A89E7
+:103AE000882309F4BECF662309F4BBCF2091BB0124
+:103AF000822F82958F7090E002970CF48ECF809188
+:103B0000B6019091B7019A8389831B82DD82CC82B2
+:103B10002E83CE0101967FCF809590958C0D9D1DB3
+:103B2000ACCFF62E662309F49CCF75132EC0341348
+:103B30002CC02091BB0120FD1FC0822F82958F7069
+:103B4000D9F0D80115962C9315978F3049F08F5FD7
+:103B5000982F9295907F822F8F70892B15968C933A
+:103B6000C8010E943F1886E0F801A6EBB1E0019081
+:103B70000D928A95E1F793CF86E0F801A6EBB1E0CC
+:103B800001900D928A95E1F72DC04D875E878D8556
+:103B90009E850E946C1B811140CF8091BB0181608A
+:103BA0008093BB01C8010E943F181CC0662309F422
+:103BB00058CF4D875E878D859E850E946C1B88231C
+:103BC00009F44FCF2ACF811148CF0CC024303105E2
+:103BD0000CF047CF9F7009F440CFF8019581907F9A
+:103BE00009F03BCF8F2D62960FB6F894DEBF0FBE63
+:103BF000CDBFDF91CF911F910F91FF90EF90DF909C
+:103C0000CF9008951F93CF93DF93CDB7DEB72C9756
+:103C10000FB6F894DEBF0FBECDBF4F8358876987BC
+:103C20007A878B879C87CE0107960E943B1C88234E
+:103C300069F08F8198852A853B85232BF1F19F3F81
+:103C400009F063C08F3F09F060C037C086E0FE0115
+:103C50003796DE01119601900D928A95E1F76F81FA
+:103C60007885EA85FB85309741F17F3F11F46F3FFE
+:103C700021F12091850130E0C901019687709927D3
+:103C80004091840150E08417950709F447C0698387
+:103C90007A83FD83EC8396E0929FD001939FB00DD1
+:103CA0001124AA57BE4FFE01319601900D929A95AC
+:103CB000E1F7809385010E94B11B16E08091840199
+:103CC000909185018917C1F1189FC00111248A576D
+:103CD0009E4F0E943B1C882379F1E09184011E9F36
+:103CE000F0011124EA57FE4F4081518162817381B6
+:103CF000848195810E94A11B8091840190E00196AE
+:103D00008770992780938401D9CF4F815885698521
+:103D10007A858B859C850E94A11BCFCF0E94681B52
+:103D20001092850110928401E6EBF1E086E0DF015C
+:103D30001D928A95E9F7C1CF2C960FB6F894DEBF95
+:103D40000FBECDBFDF91CF911F910895EF92FF92EB
+:103D50000F931F93CF93DF938C01892B09F46CC0D1
+:103D6000F12CEE24E394E8012196F8018491843744
+:103D700040F4843008F051C0813081F0823019F174
+:103D80005BC0853709F444C0A8F19CE7980F9037D1
+:103D900008F052C08F770E94E21741C00E5F1F4F9C
+:103DA000FE01C49180E28C0F883048F4C7708E2DDC
+:103DB00001C0880FCA95EAF70E94562114C08C2FC3
+:103DC0000E941A172DC00E5F1F4FFE01C49180E2A2
+:103DD0008C0F883058F4C7708E2D01C0880FCA959B
+:103DE000EAF70E945C210E947D211AC08C2F0E945C
+:103DF000E21716C00E5F1F4FFE01C491CC2381F065
+:103E00008FE99FE00197F1F700C00000C150F6CFA5
+:103E10000E5F1F4FFE01F49003C00E941A178E011F
+:103E20008F2D882309F49FCFEFE9FFE03197F1F759
+:103E300000C000008150F5CFDF91CF911F910F910D
+:103E4000FF90EF90089508956093C0017093C101B1
+:103E50008093C2019093C3010C94561B0F931F9340
+:103E60000091C0011091C1012091C2013091C301A4
+:103E7000DC01CB01802B912BA22BB32B8093C001B3
+:103E80009093C101A093C201B093C3011F910F9100
+:103E90000C94561B0F931F930091C0011091C10108
+:103EA0002091C2013091C301DC01CB018023912319
+:103EB000A223B3238093C0019093C101A093C201B8
+:103EC000B093C3011F910F910C94561B0F931F9336
+:103ED0000091C0011091C1012091C2013091C30134
+:103EE000DC01CB0180279127A227B3278093C00153
+:103EF0009093C101A093C201B093C3011F910F9190
+:103F00000C94561B1092BC011092BD011092BE0180
+:103F10001092BF010C94561B41E050E060E070E04D
+:103F200004C0440F551F661F771F8A95D2F7409330
+:103F3000BC015093BD016093BE017093BF010C940E
+:103F4000561B41E050E060E070E004C0440F551F94
+:103F5000661F771F8A95D2F78091BC019091BD01B1
+:103F6000A091BE01B091BF01482B592B6A2B7B2B2E
+:103F70004093BC015093BD016093BE017093BF019B
+:103F80000C94561B41E050E060E070E004C0440F28
+:103F9000551F661F771F8A95D2F7409550956095FB
+:103FA00070958091BC019091BD01A091BE01B0912E
+:103FB000BF01482359236A237B234093BC015093BC
+:103FC000BD016093BE017093BF010C94561B41E08C
+:103FD00050E060E070E004C0440F551F661F771F7B
+:103FE0008A95D2F78091BC019091BD01A091BE014C
+:103FF000B091BF01482759276A277B274093BC010E
+:104000005093BD016093BE017093BF010C94561B89
+:104010000F931F930091BC011091BD012091BE012F
+:104020003091BF01DC01CB01802B912BA22BB32B54
+:104030008093BC019093BD01A093BE01B093BF01DA
+:104040001F910F910C94561B0F931F930091BC016D
+:104050001091BD012091BE013091BF01DC01CB0167
+:1040600080239123A223B3238093BC019093BD01AD
+:10407000A093BE01B093BF011F910F910C94561BEA
+:104080000F931F930091BC011091BD012091BE01BF
+:104090003091BF01DC01CB0180279127A227B327F4
+:1040A0008093BC019093BD01A093BE01B093BF016A
+:1040B0001F910F910C94561B0895CF92DF92EF92AF
+:1040C000FF920F931F93CF93DF938C01C090C00199
+:1040D000D090C101E090C201F090C3014091BC01B9
+:1040E0005091BD016091BE017091BF01C42AD52AD3
+:1040F000E62AF72ACFE1D0E0D701C6010C2E04C092
+:10410000B695A795979587950A94D2F780FF07C033
+:10411000B8018C2F0E948B0C8130910531F42197CE
+:1041200058F7B80180E00E948B0CDF91CF911F916E
+:104130000F91FF90EF90DF90CF90089590910C0138
+:10414000992321F090910D01911109C020910E0148
+:1041500030910F01F90132969FEF40E030C0982F67
+:104160009695969596959F30A0F4E0910E01F0916A
+:104170000F01E90FF11D877021E030E0A90102C0B5
+:10418000440F551F8A95E2F7CA019181892B8183DB
+:1041900008959091D70190FF23C01F928F938DEBCC
+:1041A00096E09F938F930E9461080F900F900F905D
+:1041B0000F9008959F3F39F04F5F4E3041F051917D
+:1041C0005813F8CF0DC05111F7CF942FF5CF9F3F63
+:1041D00039F0F901E90FF11D97FDFA9582830895F1
+:1041E000089590910C01992321F090910D01911166
+:1041F00009C020910E0130910F01F9013296205F24
+:104200003F4F30C0982F9695969596959F30A8F47D
+:10421000E0910E01F0910F01E90FF11D877021E08F
+:1042200030E0A90102C0440F551F8A95E2F7CA0188
+:10423000809591818923818308959091D70190FF82
+:1042400016C01F928F938FE996E09F938F930E94E1
+:1042500061080F900F900F900F9008953196E2171C
+:10426000F30729F090819813F9CF1082F7CF0895C2
+:1042700081E090E0E0910E01F0910F01E80FF91F4D
+:104280001082019680319105A9F708959091D60189
+:10429000892B8093D601089580959091D60189232A
+:1042A0008093D60108951092D60108959091D5017A
+:1042B000892B8093D501089580959091D50189230C
+:1042C0008093D50108951092D50108958093C4017B
+:1042D00008951092C401089580910E0190910F01EC
+:1042E000FC0131969C01205F3F4F80E0919191113C
+:1042F0008F5FE217F307D1F70895E0910E01F09177
+:104300000F018091D6018083E0910E01F0910F01A1
+:1043100090818091D501892B80838091C40188236D
+:1043200061F0E0910E01F0910F019081892B808363
+:104330000E946C2181111092C40180910E01909114
+:104340000F010C94981590933B0180933A010895C6
+:10435000CF92DF92EF92FF926C01EE24FF24C11402
+:10436000D104E104F10421F0C701B60120E101C04C
+:1043700020E0C72ED82EE92EFF24C114D104E10479
+:10438000F10419F0285FC701B6016B017C0154E00C
+:10439000F694E794D794C7945A95D1F7C114D104F1
+:1043A000E104F10419F02C5FC701B6016B017C0137
+:1043B00042E0F694E794D794C7944A95D1F7C11494
+:1043C000D104E104F10419F02E5FC701B601DC014C
+:1043D000CB01B695A79597958795892B8A2B8B2B23
+:1043E00009F02F5F822FFF90EF90DF90CF9008951C
+:1043F0008295982F9C7C392F36953695282F2373DC
+:1044000044E0249FC0011124932F982B292F2A7A4E
+:104410002695892F8575880F822B08951F93CF933A
+:10442000DF931F92CDB7DEB799830E94F821182F32
+:104430009981892F0E94F821212F30E0322F2227E5
+:10444000A901482BCA010F90DF91CF911F910895C8
+:104450008091F001843009F11092D80120E488E1C4
+:1044600090E00FB6F894A895809360000FBE20935B
+:10447000600083B7817F846083BF83B7816083BF1F
+:104480007894889583B78E7F83BF88E10FB6F894C0
+:1044900080936000109260000FBE08950895089503
+:1044A000CF930E944E220E94300A0E944F22C0E009
+:1044B0008C2F0E945C0B811104C0CF5FCE30C1F7FE
+:1044C00001C081E0CF9108950E94681B0E948C1565
+:1044D0000C94BE0D82E084BD93E095BD9AEF97BD2C
+:1044E00080936E0008952FB7F8948091D901909130
+:1044F000DA01A091DB01B091DC012FBF0895CF92CA
+:10450000DF92EF92FF920F931F932FB7F894409191
+:10451000D9015091DA016091DB017091DC012FBF6C
+:104520006A017B01EE24FF248C0120E030E0C016FC
+:10453000D106E206F30610F4415051099A01281BF6
+:10454000390BC9011F910F91FF90EF90DF90CF9031
+:1045500008951F920F920FB60F9211248F939F937D
+:10456000AF93BF938091D9019091DA01A091DB01C3
+:10457000B091DC010196A11DB11D8093D9019093EA
+:10458000DA01A093DB01B093DC01BF91AF919F9161
+:104590008F910F900FBE0F901F9018950E948A1256
+:1045A000F8942FEF87EA91E6215080409040E1F7A0
+:1045B00000C0000087E090EBDC018093F90190934C
+:1045C000FA01A093FB01B093FC019CE088E10FB6D7
+:1045D000F894A895809360000FBE90936000FFCF81
+:1045E000EF92FF920F931F93CF93DF93D82FC0E0EA
+:1045F0008C2F0E945C0B00E010E0E82EF12CC7012C
+:10460000002E02C0959587950A94E2F780FD06C0BA
+:104610000F5F1F4F0630110591F709C0602F7C2FE7
+:1046200080E00E94690CD813F3CF81E004C0CF5F13
+:10463000CE30F1F680E0DF91CF911F910F91FF9086
+:10464000EF900895CF93C82F8CE20E94F022882328
+:1046500021F08C2FCF910C94F02280E0CF9108951F
+:10466000CF930E947F24811102C00E94652482EEB4
+:1046700096E00E94C807C5E6C15049F00E94300A82
+:104680008FE39CE90197F1F700C00000F5CF8BEDB7
+:1046900096E00E94C80789E20E942223811113C17B
+:1046A0008AE20E94222381110E94652485E00E94F3
+:1046B000222381110E94CE220E948A248093D70156
+:1046C00087E00E9422238823A9F18BE10E94222304
+:1046D000882351F08091D70181FB222720F991E0B6
+:1046E000922790FB81F90EC08EE00E94222388233E
+:1046F00061F08091D70182FB222720F991E0922777
+:1047000090FB82F98093D70115C080E10E9422239B
+:104710009091D701882341F093FB222720F981E073
+:10472000822780FB93F904C0892F809580FB90F944
+:104730009093D7018091D7010E948E240E949C24DF
+:104740008093EA0180EE0E942223882341F0809129
+:10475000EA01982F909590FB80F98093EA0189E314
+:104760000E942223882359F08091EA0181FB2227AD
+:1047700020F991E0922790FB81F98093EA0182EE83
+:104780000E942223882359F08091EA0182FB22278C
+:1047900020F991E0922790FB82F98093EA0186EE5E
+:1047A0000E942223882359F08091EA0183FB22276B
+:1047B00020F991E0922790FB83F98093EA0183EE40
+:1047C0000E942223882359F08091EA0184FB22274A
+:1047D00020F991E0922790FB84F98093EA0185E328
+:1047E0000E942223882359F08091EA0185FB222729
+:1047F00020F991E0922790FB85F98093EA0181E30B
+:104800000E942223882359F08091EA0186FB222707
+:1048100020F991E0922790FB86F98093EA0181E1EB
+:104820000E942223882359F08091EA0187FB2227E6
+:1048300020F991E0922790FB87F98093EA0180911B
+:10484000EA010E94A0248091EA0187FB882780F971
+:1048500080930D0187E20E942223C82F8EE10E94DF
+:1048600022238111C2608FE10E9422238111C46042
+:1048700080E20E9422238111C86081E20E942223EB
+:104880008111C06182E20E9422238111C06283E211
+:104890000E9422238111C06484E20E942223882383
+:1048A00011F0C06802C0CC2329F08C2F0E949724FD
+:1048B0006C2F03C00E949324682F70E080E090E08A
+:1048C000CF910C94241FCF9108956DEE7EEF80E080
+:1048D00090E00E94682E60E082E090E00E945A2EF4
+:1048E00060E083E090E00E945A2E60E084E090E077
+:1048F0000E945A2E60E085E090E00C945A2E80E0F1
+:1049000090E00E94542E21E08D3E9E4F09F020E061
+:10491000822F089582E090E00C944C2E682F82E064
+:1049200090E00C945A2E83E090E00C944C2E682F6B
+:1049300083E090E00C945A2E84E090E00C944C2E8E
+:10494000682F84E090E00C945A2E8091DF0180FF64
+:104950000BC06091130185E0689FB001112475952B
+:104960006795759567952BC081FF09C0609113010C
+:1049700085E0689FB00111247595679520C082FF7E
+:1049800007C06091130185E0689FB001112417C032
+:104990009091E0019923D1F060911201961788F768
+:1049A0002091130185E0289F90011124929FA0017E
+:1049B000939F500D112470E0CA010E941E2E603892
+:1049C000710540F46115710539F002C065E070E0D1
+:1049D000862F08958FE7089581E008958091DF0183
+:1049E00080FF08C06091110170E07595679575951D
+:1049F000679521C081FF06C06091110170E0759537
+:104A0000679519C082FF04C06091110170E010C069
+:104A10009091E0019923C1F0609110019617A0F7E1
+:104A200080911101899FC001112470E00E941E2E07
+:104A30006038710528F46115710521F0862F0895FD
+:104A40008FE7089581E0089561E070E0F4CF803F42
+:104A500021F40E94A524819504C0813F29F40E947D
+:104A6000A5248093E3010895823F21F40E94A524A8
+:104A7000819504C0833F29F40E94A5248093E2011C
+:104A80000895893F19F40E94EE2405C08A3F31F44D
+:104A90000E94EE2481958093E40108958B3F21F4D8
+:104AA0000E94EE24819504C08C3F29F40E94EE24DC
+:104AB0008093E5010895843F21F48091E1018160B4
+:104AC00017C0853F21F48091E101826011C0863FCB
+:104AD00021F48091E10184600BC0873F21F4809133
+:104AE000E101886005C0883F31F48091E101806177
+:104AF0008093E10108958D3F21F48091DF01816071
+:104B00000BC08E3F21F48091DF01826005C08F3F92
+:104B100029F48091DF0184608093DF010895803F54
+:104B200039F48091E30187FF6CC01092E30169C002
+:104B3000813F29F48091E3011816BCF362C0909183
+:104B4000E201823F29F497FF5CC01092E20159C054
+:104B5000833F19F41916CCF354C0893F41F4809176
+:104B6000E40118160CF04DC01092E4014AC08A3FCF
+:104B700029F48091E40187FF44C0F6CF8B3F39F4DC
+:104B80008091E50187FF3DC01092E5013AC08C3F5E
+:104B900029F48091E5011816BCF333C0843F21F459
+:104BA0008091E1018E7F17C0853F21F48091E10162
+:104BB0008D7F11C0863F21F48091E1018B7F0BC076
+:104BC000873F21F48091E101877F05C0883F31F460
+:104BD0008091E1018F7E8093E10113C08D3F21F42C
+:104BE0008091DF018E7F0BC08E3F21F48091DF0129
+:104BF0008D7F05C08F3F29F48091DF018B7F8093EB
+:104C0000DF018091E20181110EC08091E3018111E9
+:104C10000AC08091E401811106C08091E5018111F3
+:104C200002C01092E00108958091D70183FF7EC0F9
+:104C30008EE197E00E94C8078091E1011F928F9357
+:104C400089E197E09F938F930E94610887E197E045
+:104C50000E94C8078091E201282F332727FD309555
+:104C60003F938F9384E197E09F938F930E94610815
+:104C700082E197E00E94C8078091E301282F332743
+:104C800027FD30953F938F938FE097E09F938F930D
+:104C90000E9461088DE097E00E94C8078091E401BE
+:104CA000282F332727FD30953F938F938AE097E095
+:104CB0009F938F930E94610888E097E00E94C80745
+:104CC0008091E501282F332727FD30953F938F935F
+:104CD00085E097E09F938F930E94610882E097E0C0
+:104CE0000E94C8078091E0011F928F938FEF96E09A
+:104CF0009F938F930E9461088DEF96E00E94C807F2
+:104D00008091DF011F928F938AEF96E09F938F939C
+:104D10000E94610887EF96E00E94C8078DB79EB792
+:104D20004C960FB6F8949EBF0FBE8DBF81EE91E0FA
+:104D30000E94E1150E9473229093DE018093DD01B1
+:104D400008951F93CF93DF938091DD019091DE0151
+:104D50000E947F22AC019091E001992321F02091E3
+:104D6000140130E006C0209115018AE0289F9001CF
+:104D700011244217530708F486C08091E201C091C4
+:104D8000E301D091E4011091E501811107C0C11147
+:104D900076C0D11174C0111172C075C09F3F19F057
+:104DA0009F5F9093E001181624F40E94A52480933D
+:104DB000E2018091E20187FF05C00E94A524819550
+:104DC0008093E2011C1624F40E94A5248093E30141
+:104DD0008091E30187FF05C00E94A52481958093FF
+:104DE000E3016091E201662339F1C091E301CC2334
+:104DF00019F1772767FD7095872F972F0E94232D34
+:104E000023E333E343E35FE30E94872D0E94F02C0A
+:104E10006093E2016C2F772767FD7095872F972F9E
+:104E20000E94232D23E333E343E35FE30E94872DB6
+:104E30000E94F02C6093E3011D1624F40E94EE24DE
+:104E40008093E4018091E40187FF05C00E94EE2475
+:104E500081958093E401111624F40E94EE2480933E
+:104E6000E5018091E50187FF05C00E94EE24819550
+:104E70008093E501DF91CF911F910C9414269F3F01
+:104E800009F08ECF96CFDF91CF911F910895E1EE7B
+:104E9000F1E085E0DF011D928A95E9F71092E001CB
+:104EA0001092DF01089581E499E00E94C8071F92E3
+:104EB00081E08F931F9285E08F9383EF98E09F931B
+:104EC0008F930E9461080F900F900F900F900F909A
+:104ED0000F9008958330E9F128F4813061F0823039
+:104EE00009F10895853009F462C008F449C086309C
+:104EF00009F474C0089580911501262F30E0280F21
+:104F0000311D2F3F310524F4680F6093150103C054
+:104F10008FEF80931501809115011F928F938CE282
+:104F200098E072C080911401262F30E0280F311DC7
+:104F30002F3F310524F4680F6093140103C08FEFF5
+:104F400080931401809114011F928F938AE198E05D
+:104F50005BC080911301262F30E0280F311D2F3FB9
+:104F6000310524F4680F6093130103C08FEF809321
+:104F70001301809113011F928F9387E098E044C042
+:104F800080911201262F30E0280F311D2F3F31056F
+:104F900024F4680F6093120103C08FEF8093120115
+:104FA000809112011F928F9382EF97E02DC0809124
+:104FB0001101262F30E0280F311D2F3F310524F439
+:104FC000680F6093110103C08FEF809311018091EE
+:104FD00011011F928F9389ED97E016C08091100107
+:104FE000262F30E0280F311D2F3F310524F4680FA4
+:104FF0006093100103C08FEF809310018091100126
+:105000001F928F938EEB97E09F938F930E9461087E
+:105010000F900F900F900F900895833081F128F436
+:10502000813059F08230D1F00895853009F449C0BB
+:10503000B8F1863009F456C00895809115016817BB
+:1050400020F4861B8093150102C0109215018091F7
+:1050500015011F928F938FEA97E054C0809114013D
+:10506000681720F4861B8093140102C0109214016B
+:10507000809114011F928F938DE997E043C0809136
+:105080001301681720F4861B8093130102C010924D
+:105090001301809113011F928F938AE897E032C029
+:1050A00080911201681720F4861B8093120102C0C0
+:1050B00010921201809112011F928F9385E797E061
+:1050C00021C080911101681720F4861B8093110183
+:1050D00002C010921101809111011F928F938CE5F3
+:1050E00097E010C080911001681720F4861B809310
+:1050F000100102C010921001809110011F928F9335
+:1051000081E497E09F938F930E9461080F900F9026
+:105110000F900F900895CF93C82F1F928F9386E41E
+:105120009AE09F938F930E94610881E090E0A0E055
+:10513000B0E0BC01CD0104C0660F771F881F991F26
+:10514000CA95D2F70E94241F0F900F900F900F90D6
+:10515000CF910C94681BCF938D3109F465C0B0F5E5
+:105160008E3009F4CCC100F5873009F49BC1A8F456
+:10517000863009F06DC28091D701817F8E7F809348
+:10518000D7018BE49AE00E94C8078DE89EE00E9458
+:10519000C80781E08093E70180C1883009F44FC0DF
+:1051A0008B3009F47CC154C2863109F4F0C138F463
+:1051B000803109F4B8C1813109F430C249C2893162
+:1051C00009F4CEC18B3109F486C142C2853309F49A
+:1051D00037C248F4873209F433C208F433C2893243
+:1051E00009F42EC235C2833438F48A3308F02CC255
+:1051F000883309F454C12CC2833409F421C28834A1
+:1052000009F026C20E94681B8CE79EE00E94C80736
+:105210009FEF23ED80E3915020408040E1F700C0F4
+:1052200000000E94CE2239C18CE99EE00E94C8078E
+:105230000E94AA2C0E948C150E94BE0D2EC181E9ED
+:105240009EE00E94C8078CE59CE00E94C8070E946F
+:1052500093241F928F9389E59CE09F938F930E94E4
+:10526000610887E59CE00E94C8070E948A24C82F35
+:1052700084E49CE00E94C8071F92CF938FE39CE0D8
+:105280009F938F930E9461088DE39CE00E94C80762
+:1052900083E39CE00E94C8078C2F81701F928F933C
+:1052A00080E39CE09F938F930E9461088EE29CE0D4
+:1052B0000E94C80784E29CE00E94C807C1FB8827BF
+:1052C00080F91F928F9381E29CE09F938F930E94BD
+:1052D00061088FE19CE00E94C80783E19CE00E9486
+:1052E000C807C2FB882780F91F928F9380E19CE05A
+:1052F0009F938F930E9461088EE09CE00E94C807F4
+:1053000085E09CE00E94C807C3FBCC27C0F91F9230
+:10531000CF9382E09CE09F938F930E94610880E08E
+:105320009CE00E94C8070E949C24C82F8CEE9BE042
+:105330000E94C8071F92CF9387EE9BE09F938F93A5
+:105340000E94610885EE9BE00E94C8078CEC9BE000
+:105350000E94C8078C2F81701F928F9389EC9BE06D
+:105360009F938F930E9461088DB79EB780960FB66A
+:10537000F8949EBF0FBE8DBF87EC9BE00E94C807CC
+:1053800080EB9BE00E94C807C1FB882780F91F9231
+:105390008F938DEA9BE09F938F930E9461088BEA25
+:1053A0009BE00E94C80789E99BE00E94C807C2FBF6
+:1053B000882780F91F928F9386E99BE09F938F93B4
+:1053C0000E94610884E99BE00E94C80782E89BE094
+:1053D0000E94C807C3FB882780F91F928F938FE72D
+:1053E0009BE09F938F930E9461088DE79BE00E9452
+:1053F000C80783E79BE00E94C807C4FB882780F9A1
+:105400001F928F9380E79BE09F938F930E94610888
+:105410008EE69BE00E94C8078CE59BE00E94C807CF
+:10542000C5FB882780F91F928F9389E59BE09F93A6
+:105430008F930E94610887E59BE00E94C8078BE379
+:105440009BE00E94C807C6FB882780F91F928F93B4
+:1054500088E39BE09F938F930E94610886E39BE023
+:105460000E94C8078EE29BE00E94C807C7FBCC27BA
+:10547000C0F91F92CF938BE29BE09F938F930E9482
+:10548000610889E29BE00E94C8078DB79EB74C96E1
+:105490000FB6F8949EBF0FBE8DBFC1E0DEC082E79D
+:1054A0009AE05BC08091D701C82FC17080FF09C00E
+:1054B0008FE69EE00E94C8078091D701817F8E7F92
+:1054C00047C083E69EE00E94C8078091D7018160B3
+:1054D0008093D701E2CF9091D70191FBCC27C0F9FF
+:1054E00081E0C827892FC0FB81F98093D701CC23A5
+:1054F00019F086E59EE027C088E49EE02EC09091DA
+:10550000D70192FBCC27C0F981E0C827892FC0FBC7
+:1055100082F98093D701CC2319F089E39EE013C070
+:1055200089E29EE01AC09091D70193FBCC27C0F985
+:1055300081E0C827892FC0FB83F98093D701CC2352
+:1055400051F08DE19EE00E94C8078091D7018160F3
+:105550008093D70182C080E19EE00E94C8079DCF62
+:1055600081E09EE00E94C80785ED9DE00E94C8078B
+:1055700088E99DE00E94C8078BE69DE00E94C8076D
+:1055800087E29DE00E94C8078CEF9CE0E6CF8EEE9C
+:105590009CE00E94C8070E948C151F928F9384ED97
+:1055A0009CE09F938F930E94610880910C011F9251
+:1055B0008F938DEB9CE09F938F930E946108809165
+:1055C0006E011F928F938AEA9CE09F938F930E94B3
+:1055D000610880910D011F928F9387E99CE09F9352
+:1055E0008F930E9461088091D9019091DA01A09176
+:1055F000DB01B091DC01BF93AF939F938F9383E85E
+:105600009CE09F938F930E9461088DB79EB746964A
+:105610000FB6F8949EBF0FBE8DBF3FCF0E94681B90
+:10562000C0910D0181E0C827C0930D01CC2329F062
+:1056300089E79CE00E94C80710C08EE69CE08DCFF1
+:1056400080E003C08D5101C089530E948B2825CF73
+:105650008CE69CE00E94C807C0E08C2FCF91089593
+:1056600080E0089580E00895CF93C82F8091E701EE
+:10567000813081F020F0823009F44FC045C1E091C3
+:105680000E01F0910F018081813169F0823209F0C1
+:105690003DC109C0E0910E01F0910F01808181317F
+:1056A00011F0823261F48C2F0E94302B811104C0E2
+:1056B0008C2F0E94AB282FC081E090E02CC08C2F53
+:1056C0000E94322B811126C0C431E1F070F4CB303E
+:1056D00081F0C031D1F40E9453278EE39AE00E94FA
+:1056E000C80782E08093E70115C0C93259F0C8337A
+:1056F00061F48BE49AE00E94C80782E49AE00E9479
+:10570000C80708C01092E70103C18CE39AE00E9429
+:10571000C807FEC081E08170FDC0C43220F5CE31E3
+:1057200008F0C0C0CB3099F1C8F4C73009F0D2C03E
+:105730008AE08093150194E19093140193E0909393
+:1057400013018093120188E08093110188E2809315
+:10575000100182EE98E00E94C807BFC0C33149F132
+:10576000C431C1F0B7C0CB3409F4A9C028F4C932A0
+:1057700089F0C83361F0AEC0C13509F49EC0C235AE
+:1057800009F499C0CE3409F0A5C06AE09EC00E9419
+:105790005327A3C08091E601882319F01092E601F7
+:1057A0009CC08FEE98E00E94C80781E08093E701DB
+:1057B000B1C089EC98E00E94C80787EB98E00E948E
+:1057C000C807809115011F928F9384EB98E09F93F7
+:1057D0008F930E94610882EB98E00E94C80780EADC
+:1057E00098E00E94C807809114011F928F938DE961
+:1057F00098E09F938F930E9461088BE998E00E9444
+:10580000C8078CE898E00E94C807809113011F9296
+:105810008F9389E898E09F938F930E94610887E8AF
+:1058200098E00E94C80786E798E00E94C807809128
+:1058300012011F928F9383E798E09F938F930E94AA
+:10584000610881E798E00E94C8078CE598E00E9413
+:10585000C807809111011F928F9389E598E09F936B
+:105860008F930E94610887E598E00E94C80780E452
+:1058700098E00E94C807809110011F928F938DE3DA
+:1058800098E09F938F930E9461088BE398E00E94B9
+:10589000C8078DB79EB748960FB6F8949EBF0FBE47
+:1058A0008DBF1BC0CE51EC2FF0E0E15DFE4F80813B
+:1058B0008093E60112C061E003C061E006C06AE0C7
+:1058C0008091E6010E946A2708C08091E6010E944B
+:1058D0000D2803C080EE98E013C08091E601882374
+:1058E00069F01F928F938AED98E09F938F930E94A7
+:1058F00061080F900F900F900F9004C087ED98E013
+:105900000E94C80781E006C01092E70180E002C053
+:1059100080E001CFCF910895E1E8F0E080818860D8
+:1059200080838081816080838FB7F89493E0909327
+:10593000890090ED909388008FBF0895EFE6F0E026
+:105940008081826080830895EFE6F0E080818D7F22
+:1059500080830895EFE6F0E0908182E089278083DC
+:1059600008951F920F920FB60F9211242F933F9319
+:105970004F935F936F937F938F939F93AF93BF9357
+:10598000EF93FF938091E8019091E9010196909344
+:10599000E9018093E801811103C082E00E94BE0DFD
+:1059A000E091E901E695E695F0E0E455F14FE491E8
+:1059B0008091E8018E1303C080E00E94BE0DFF912C
+:1059C000EF91BF91AF919F918F917F916F915F9177
+:1059D0004F913F912F910F900FBE0F901F901895F0
+:1059E00004D06894B1118DC0089570D088F09F578D
+:1059F00090F0B92F9927B751A0F0D1F0660F771F1B
+:105A0000881F991F1AF0BA95C9F712C0B13081F0FA
+:105A100077D0B1E0089574C0672F782F8827B85FDA
+:105A200039F0B93FCCF3869577956795B395D9F75B
+:105A30003EF490958095709561957F4F8F4F9F4F65
+:105A40000895E89409C097FB3EF490958095709571
+:105A500061957F4F8F4F9F4F9923A9F0F92F96E9BA
+:105A6000BB279395F695879577956795B795F1112F
+:105A7000F8CFFAF4BB0F11F460FF1BC06F5F7F4FCC
+:105A80008F4F9F4F16C0882311F096E911C07723DE
+:105A900021F09EE8872F762F05C0662371F096E8E7
+:105AA000862F70E060E02AF09A95660F771F881FB6
+:105AB000DAF7880F9695879597F9089557FD9058CE
+:105AC000440F551F59F05F3F71F04795880F97FBC2
+:105AD000991F61F09F3F79F087950895121613067C
+:105AE0001406551FF2CF4695F1DF08C016161706AB
+:105AF0001806991FF1CF86957105610508940895E0
+:105B0000E894BB2766277727CB0197F908950BD038
+:105B100078C069D028F06ED018F0952309F05AC0EB
+:105B20005FC01124EECFCADFA0F3959FD1F3950F8C
+:105B300050E0551F629FF001729FBB27F00DB11D11
+:105B4000639FAA27F00DB11DAA1F649F6627B00DA1
+:105B5000A11D661F829F2227B00DA11D621F739F8A
+:105B6000B00DA11D621F839FA00D611D221F749F98
+:105B70003327A00D611D231F849F600D211D822FDF
+:105B8000762F6A2F11249F5750408AF0E1F0882326
+:105B90004AF0EE0FFF1FBB1F661F771F881F915033
+:105BA0005040A9F79E3F510570F014C0AACF5F3F47
+:105BB000ECF3983EDCF3869577956795B795F79566
+:105BC000E7959F5FC1F7FE2B880F911D96958795EE
+:105BD00097F9089597F99F6780E870E060E008956D
+:105BE0009FEF80EC089500240A94161617061806F5
+:105BF0000906089500240A941216130614060506D1
+:105C00000895092E0394000C11F4882352F0BB0F61
+:105C100040F4BF2B11F460FF04C06F5F7F4F8F4FC4
+:105C20009F4F0895991B79E004C0991F961708F0BB
+:105C3000961B881F7A95C9F78095089597FB072EC4
+:105C400016F4009407D077FD09D00E94382E07FC87
+:105C500005D03EF4909581959F4F0895709561957C
+:105C60007F4F0895EE0FFF1F0590F491E02D0994EA
+:105C7000AA1BBB1B51E107C0AA1FBB1FA617B70772
+:105C800010F0A61BB70B881F991F5A95A9F780958E
+:105C90009095BC01CD010895F999FECF92BD81BDCB
+:105CA000F89A992780B50895A8E1B0E042E050E065
+:105CB0000C946F2E262FF999FECF1FBA92BD81BD8D
+:105CC00020BD0FB6F894FA9AF99A0FBE019608957E
+:105CD0000E945A2E272F0C945B2EDC01CB01FC0175
+:105CE000F999FECF06C0F2BDE1BDF89A319600B435
+:0E5CF0000D9241505040B8F70895F894FFCF40
+:105CFE002002BF0DB00E8D0E590E250E0101C501ED
+:105D0E0028080A03140A3F4D3620392C06DF05A950
+:105D1E000589055005C304DC04F5040E052E0501A6
+:0A5D2E00020304050607080900003F
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/mpiechotka/readme.md b/keyboard/ergodox_ez/keymaps/mpiechotka/readme.md new file mode 100644 index 0000000000..785400d1d2 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/mpiechotka/readme.md @@ -0,0 +1,6 @@ +# ErgoDox EZ mpiechotka Configuration + +Modification of ErgoDox EZ Colemak layout with additional QWERTY/software Colemak layer and change of the special keys. + + + diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c new file mode 100644 index 0000000000..0298cb7028 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -0,0 +1,432 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_extras/keymap_german_osx.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys +#define SMLY 3 // media keys +#define NUMB 4 // number keys +#define EGOS 5 // Egoshooter layer + +#define M_CTRL_CMDV 1 +#define M_CTRL_CMDC 2 +#define M_MEH_SH_ACUT 3 +#define M_DE_PLUS_CTRLALT 12 +#define M_DE_CIRC_CTRLCMD 13 +#define M_TOGGLE_5 14 + +#define SM_SMILE 4 +#define SM_SMIRK 5 +#define SM_FROWN 6 +#define SM_CRY 7 +#define SM_KISS 8 +#define SM_HEART 9 +#define SM_LAUGH 10 +#define SM_SAD 11 + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LALT | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/RALT| + * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| + * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |</L1| ^° |AltShf| Left | Right| | Up | Down | CMD-SHIFT | + | #/L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | MDIA | Meh | | Hyper| NUM | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Back-| Del |------| |------| Enter | Space| + * | Space| | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(M_CTRL_CMDV), + KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI, + KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G, + KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT, + LT(SYMB,DE_LESS), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), LALT(KC_LSFT), LGUI(KC_LSFT), + M(M_MEH_SH_ACUT), TG(2), + KC_HOME, + KC_BSPC,KC_DEL, LT(SMLY,KC_END), + // right hand + M(M_CTRL_CMDC), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS, + KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UE, + DE_H, DE_J, DE_K, DE_L, DE_OE, ALT_T(DE_AE), + KC_RALT, DE_N, DE_M, DE_COMM,DE_DOT, CTL_T(DE_MINS), KC_RSFT, + KC_LEFT, KC_UP,KC_DOWN,KC_RIGHT, LT(SYMB,DE_HASH), + TG(4), ALL_T(DE_ACUT), + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | L5 | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | < | > | ! | ? | | | | | \ | [ | ] | | | # | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | . | ! | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS, + KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT, + KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_DEL,KC_TRNS, + // right hand + M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12, + DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS, + KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, + KC_TRNS,KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | Mute | | | | | | EGOS | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | Lclk | MsUp | Rclk | WlUp | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| WlDw |------| |------|VolUp | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | MClk | | | |VolDn | | Prev | Next | Up | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | Left | Down | Right | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, + KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +/* Keymap 3: Smiley layer + * making it easier to type smileys... tipp: on osx you can easily replace those smileys with the UTF-8 character using + * keyboard short commands... + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | :-) | ;-) | :-D | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | :-{ | :-( | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| <3 | :-* | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | r| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+--------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `----------------------' + */ +KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS, + M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +//number pad +KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS, + KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, + KC_0,KC_DOT, KC_0, DE_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 3: Egoshooter layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | L5 | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | SHIFT | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | CTRL | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | F1 | F2 | | | | + * ,------|------|------| |------+--------+------. + * | | | F3 | | | | | + * | SPACE| CTRL|------| |------| | | + * | | | F4 | | | | | + * `--------------------' `----------------------' + */ +KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_F1, KC_F2, + KC_F3, + KC_SPC, KC_LCTL, KC_F4, + // right hand + M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols) + [2] = ACTION_LAYER_TAP_TOGGLE(SMLY) // FN2 - Momentary Layer 2 (Smiley) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + static uint16_t start; + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + case 1: + if (record->event.pressed) { + start = timer_read(); + return MACRO(D(LCTRL), END); + } else { + if (timer_elapsed(start) > 150) { + return MACRO(U(LCTRL), END); + } else { + return MACRO(U(LCTRL), D(LGUI), T(V), U(LGUI), END); + } + } + break; + case 2: + if (record->event.pressed) { + start = timer_read(); + return MACRO(D(LCTRL),END); + } else { + if (timer_elapsed(start) > 150){ + return MACRO(U(LCTRL),END); + } else { + return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END); + } + } + break; + case 3: + if (record->event.pressed) { + start = timer_read(); + return MACRO(D(LCTRL),D(LSFT),D(LALT),END); + } else { + if (timer_elapsed(start) > 150){ + return MACRO(U(LCTRL),U(LSFT),U(LALT),END); + } else { + return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix + } + } + break; + case M_DE_CIRC_CTRLCMD: + if (record->event.pressed) { + start = timer_read(); + return MACRO(D(LCTRL),D(LGUI),END); + } else { + if (timer_elapsed(start) > 150){ + return MACRO(U(LCTRL),U(LGUI),END); + } else { + return MACRO(U(LCTRL),U(LGUI),T(NUBS),END); + } + } + break; + case M_DE_PLUS_CTRLALT: + if (record->event.pressed) { + start = timer_read(); + return MACRO(D(LCTRL),D(LALT),END); + } else { + if (timer_elapsed(start) > 150){ + return MACRO(U(LCTRL),U(LALT),END); + } else { + return MACRO(U(LCTRL),U(LALT),T(RBRC),END); + } + } + break; + case SM_SMILE: + if (record->event.pressed) { + return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END); + } + break; + + case SM_SMIRK: + if (record->event.pressed) { + return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(9),U(LSFT),END); + } + break; + case SM_CRY: + if (record->event.pressed) { + return MACRO(D(LSFT),T(COMM),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END); + } + break; + + case SM_SAD: + if (record->event.pressed) { + return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(8),U(LSFT),END); + } + break; + + case SM_HEART: + if (record->event.pressed) { + return MACRO(T(GRV),T(3),END); + } + break; + case SM_LAUGH: + if (record->event.pressed) { + return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(D),U(LSFT),END); + } + break; + case SM_KISS: + if (record->event.pressed) { + return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LSFT),T(RBRC),U(LSFT),END); + } + break; + case SM_FROWN: + if (record->event.pressed) { + return MACRO(D(LSFT),T(DOT),U(LSFT),T(SLSH),D(LALT),T(8),U(LALT),END); + } + break; + case M_TOGGLE_5: + if (record->event.pressed){ + layer_state ^= (1<<5); + layer_state &= (1<<5); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + //ergodox_board_led_on(); + break; + case 5: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex index eb82384d54..2c83055b0d 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex +++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex @@ -16,17 +16,17 @@ :1000F000E20001E001E101E20002E001E3010602A9 :100100000602E30002E00001E00002E001E3011961 :10011000021902E30002E00001E0000000F0A1F09B -:10012000A329002B000354E100358100001E0014B8 +:10012000A329002B00E200E100358100001E00142D :100130000004001D7135004D001F001A0016001B41 :1001400000E1044C00200008000700060050002ACF :100150000021001500090019004F004A0022001775 -:10016000000A000500000002540130E3000000E234 -:1001700000000003300230E7000000E60000002E1F -:100180007F23001C000B0011000000045424001801 +:10016000000A000500000003300130E3000000E257 +:1001700000000002540230E7000000E60000000426 +:100180005423001C000B00110000002E7F240018D7 :10019000000D00100052004B0025000C000E003630 :1001A0000051002C00260012000F003700E1082843 :1001B00000270013003300387130004E002D002F4F -:1001C000003482E5003181000001000100010001DE +:1001C000003474E5003181000001000100010001EC :1001D00000010000003A003500310001000100017B :1001E000003B0035022102350001004C003C001E9E :1001F0000224062202010001003D002D02240224F7 @@ -38,26 +38,26 @@ :100250000425041F021E0201004300310026043160 :1002600002010001004400450001002D02010000D0 :100270000001000100010001000100000001000177 -:10028000000100FB000100010001000100F200F983 -:1002900000010001000100F000F100FA00F400018B -:1002A0000001000100F300FC00F500010001000165 -:1002B000000100F600000001000100010000000143 -:1002C0000000000100010001000000010000000129 -:1002D0000001000100010001000000010001000117 -:1002E000000100A800A9000100010001000100AC0C -:1002F00000AA00B600010001000100AB005000019F +:100280000001000100010001000100F400F200FB88 +:1002900000010001000100F000F100FA000100017E +:1002A000000100F500F300FC00010001000100F96D +:1002B00000FA00F60000000100010001000000014A +:1002C0000000000100A80001000000010000000182 +:1002D0000001000100A900AA0000000100010001C6 +:1002E000000100010001000100010001000100AC5B +:1002F000000100B600010001000100AB0050000148 :1003000000010001000100520051000100AE000197 :1003100000010001004F0000000100010001000188 -:1003200000010000000100010001000100010001C6 -:1003300000010001000100010001000100010001B5 -:1003400000010001000100010001000100010001A5 -:100350000001000100010001000100010000000196 +:10032000000100000001000E000B001B7101000124 +:100330000001003700040014000100010001001258 +:10034000000800340001000100010036000C002FFD +:10035000000100010001001D001800330000000131 :100360000001000100000001000000010001000187 -:100370000000000100000001000100010001000177 -:100380000000000100010001000100010001000166 -:100390000001000100010001000100010001000155 -:1003A00000010001005000010001000100010052A5 -:1003B000005100010001000100010001004F000098 +:100370000000000100000001000100190007000555 +:10038000000000010001000A001700130001000135 +:10039000000100060015001A000100010001000F15 +:1003A00000110010000100010001002D0016000DD9 +:1003B000710100010038001C0009820100010000E9 :1003C0000001000100010001000100000001000126 :1003D00000010001000100010001000100500001C6 :1003E0000001000100010052005100010001000164 diff --git a/keyboard/ergodox_ez/keymaps/osx_de/readme.md b/keyboard/ergodox_ez/keymaps/osx_de/readme.md index 6b17d75d54..44d7a334e9 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/readme.md +++ b/keyboard/ergodox_ez/keymaps/osx_de/readme.md @@ -4,13 +4,14 @@ Dies ist nur ein kleiner Tweak der bestehenden firmware für das ErgoDox-EZ-Keyb - Die Umlaute sollten an einigermassen sinnvollen Plätzen liegen - der Umstieg sollte dadurch erleichtert werden, dass einige Tasten an ihren "normalen" Platz zurückgewandert sind. Z.B. ESC, Tab,... -- die Leertaste lässt sich jetzt mit beiden Daumen bedienen +- die Leertaste ist jetzt auf der rechten seite, neben Enter. Dafür hat der linke Daumen nun Backspace und Delete. - die CMD- und Alt-Tasten sind in der Mitte einfach erreichbar. -- es gibt eine neue Layer für die Nutzung der Cursortasten, dort sind sie etwas einfacher angeordnet und sind z.B. auch für Spiele nutzbar +- es gibt eine neue Layer die für Spiele genutzt werden kann (egosooter wie Counter Strike). Dort liegen die wichtigsten Tasten auf der linken Seite, im Daumenblock z.B. space und ctrl sowie die F-Tasten 1-4. Diese Layer ist über die Symbollayer erreichbar. - Die Symbollayer wurde dahingehend angepasst, dass die klammern, etc nun auf beiden hälften der Tastatur zu finden sind - der Zehnerblock wurde in eine eigene Layer umgezogen - die Meh und Hyper-Tasten wurden in die Daumenblöcke umgezogen + ------------------------------ # ErgoDox EZ for OSX diff --git a/keyboard/ergodox_ez/keymaps/osx_de_adnw_koy/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de_adnw_koy/keymap.c index 7e9defafa7..fb8635118b 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de_adnw_koy/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de_adnw_koy/keymap.c @@ -15,49 +15,50 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* + +/* Keymap 0: ADNW-Koy layer + * ADNW-Koy is a special layout designed to be ergonomic. Was created using software to determine the most ergonomic way to type German and English texts. * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß | + * | ESC | 1 | 2 | 3 | 4 | 5 |Lctrl | |Rctrl | 6 | 7 | 8 | 9 | 0 | - | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | + * | TAB | K | . | O | , | Y | CMD | | CMD | V | G | C | L | ß | Z | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ADNW | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/L2 | + * | ADNW | H | A | E | I | U |------| |------| D | T | R | N | S | F/L2 | * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| - * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | + * | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M |J/Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |</L1| ^° |AltShf| Left | Right| | Up | Down | CMD-SHIFT | + | #/L1 | + * |</L1| ^ |AltShf| Left | Right| | Up | Down | CMD-SHIFT | ´ | //L1 | * `----------------------------------' `----------------------------------' - * ,-------------. ,---------------. - * | MDIA | Meh | | Hyper| NUM | + * ,-------------. ,-------------. + * | L1 | LGui | | Alt |Ctrl/Esc| * ,------|------|------| |------+--------+------. * | | | Home | | PgUp | | | - * | Back-| Del |------| |------| Enter | Space| - * | Space| | End | | PgDn | | | + * | Space|Backsp|------| |------| Enter | Space| + * | |ace | End | | PgDn | | | * `--------------------' `----------------------' */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = KEYMAP( // layer 0 : default - // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V), - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI, - TG(3), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, - LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - TG(2), MEH_T(LSFT(DE_ACUT)), - KC_HOME, - KC_BSPC,KC_DEL,KC_END, - // right hand - LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE, - KC_H, KC_J, KC_K, KC_L, KC_SCLN,LT(MDIA,DE_AE), - KC_RALT,KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,LGUI(KC_LSFT),KC_RBRC, LT(SYMB,KC_BSLS), - ALL_T(DE_ACUT), TG(4), - KC_PGUP, - KC_PGDN,KC_ENT, KC_SPC - ), +KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_TRNS, + KC_TRNS, KC_H, KC_A, KC_E, KC_I, KC_U, + KC_TRNS, CTL_T(KC_X),KC_Q, DE_AE, DE_UE, DE_OE, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, + KC_TRNS, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y, + KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F), + KC_TRNS, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* Keymap 1: Symbol Layer * * ,--------------------------------------------------. ,--------------------------------------------------. @@ -141,48 +142,49 @@ KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK ), -/* Keymap 3: ADNW-Koy layer - * ADNW-Koy is a special layout designed to be ergonomic. Was created using software to determine the most ergonomic way to type German and English texts. +/* Keymap 3: qwertz layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 |Lctrl | |Rctrl | 6 | 7 | 8 | 9 | 0 | - | + * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | TAB | K | . | O | , | Y | CMD | | CMD | V | G | C | L | ß | Z | + * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ADNW | H | A | E | I | U |------| |------| D | T | R | N | S | F/L2 | + * | ADNW | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/L2 | * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| - * | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M |J/Ctrl| RShift | + * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |</L1| ^ |AltShf| Left | Right| | Up | Down | CMD-SHIFT | ´ | //L1 | + * |</L1| ^° |AltShf| Left | Right| | Up | Down | CMD-SHIFT | + | #/L1 | * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | L1 | LGui | | Alt |Ctrl/Esc| + * ,-------------. ,---------------. + * | MDIA | Meh | | Hyper| NUM | * ,------|------|------| |------+--------+------. * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Enter | Space| - * | |ace | End | | PgDn | | | + * | Back-| Del |------| |------| Enter | Space| + * | Space| | End | | PgDn | | | * `--------------------' `----------------------' */ -KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_TRNS, - KC_TRNS, KC_H, KC_A, KC_E, KC_I, KC_U, - KC_TRNS, CTL_T(KC_X),KC_Q, DE_AE, DE_UE, DE_OE, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, - KC_TRNS, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y, - KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F), - KC_TRNS, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), +[BASE] = KEYMAP( // layer 3 : default qwertz layout + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V), + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI, + TG(3), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, + LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + TG(2), MEH_T(LSFT(DE_ACUT)), + KC_HOME, + KC_BSPC,KC_DEL,KC_END, + // right hand + LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,LT(MDIA,DE_AE), + KC_RALT,KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,LGUI(KC_LSFT),KC_RBRC, LT(SYMB,KC_BSLS), + ALL_T(DE_ACUT), TG(4), + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +//numblock KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c b/keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c new file mode 100644 index 0000000000..fb7c00983e --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/tonyabra_osx/keymap.c @@ -0,0 +1,184 @@ +#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 + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | = | | - | 6 | 7 | 8 | 9 | 0 | Enter | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L | ; | '" | + * |--------+------+------+------+------+------| LGui | | LGui |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | L1 | ` | { | } | '" | | Left | Up | Down | Right| L2 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Del | Alt | | Alt | Ctrl | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, + TG(SYMB), KC_GRV, KC_LBRC, KC_RBRC,KC_QUOT, + KC_DELT,KC_LALT, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LGUI, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_LEFT,KC_UP, KC_DOWN,KC_RIGHT, TG(MDIA), + KC_RALT, KC_RCTL, + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(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; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md b/keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md new file mode 100644 index 0000000000..f9d76efc23 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/tonyabra_osx/readme.md @@ -0,0 +1,5 @@ +# ErgoDox EZ OS X Simplified Configuration + +This keyboard configuration replaces the hyper and meh keys with the command key. It also removes all of the meta keys that require a "hold" because I found that I hesitate when I type, which can accidentally fire those combinations. On the upper left of the left hand, I mimicked the Mac placement of tab and escape, and on the upper right of the right hand, I placed an additional enter key for convenience when breezing through prompts. + +This is my standard working configuration for now, but I can see myself tweaking it as I use it more. I highly recommend you do the same.
\ No newline at end of file diff --git a/keyboard/ergodox_ez/keymaps/tonyabra_osx/tonyabra_osx.hex b/keyboard/ergodox_ez/keymaps/tonyabra_osx/tonyabra_osx.hex new file mode 100644 index 0000000000..c3481dccbe --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/tonyabra_osx/tonyabra_osx.hex @@ -0,0 +1,1471 @@ +:100000000C9400070C9444070C9444070C94440788
+:100010000C9444070C9444070C9444070C94440734
+:100020000C9444070C9444070C9458120C942A1313
+:100030000C9444070C9444070C9444070C94440714
+:100040000C9444070C94002C0C9444070C94440723
+:100050000C9444070C94F8210C9444070C94440726
+:100060000C9444070C9444070C9444070C944407E4
+:100070000C9444070C9444070C9444070C944407D4
+:100080000C9444070C9444070C9444070C944407C4
+:100090000C9444070C9444070C9444070C944407B4
+:1000A0000C9444070C9444070C9444079713B91319
+:1000B000A714B913A714FE132114A71476148914D6
+:1000C000D017D017FF17FF1742188018991A991ADE
+:1000D0009918991A9A199A196D1A991A991A841ACB
+:1000E0000000F0A129002B002A00E10001540000CB
+:1000F0001E00140004001D0035004D001F001A00F2
+:1001000016001B002F002A00200008000700060030
+:1001100030002C00210015000900190034004A00AD
+:10012000220017000A00050000004C002E000154B8
+:100130000000E3000000E2002D0001540000E30095
+:100140000000E60023001C000B0011000000E4008A
+:10015000240018000D00100050004B0025000C007A
+:100160000E00360052002800260012000F00370053
+:1001700051002B0027001300330038004F004E00C1
+:10018000280031003400E5000254000001000100A5
+:1001900001000100010000003A001E0220022202BC
+:1001A000010001003B001F022102230201000100A7
+:1001B0003C002F0226022F00010001003D0030020A
+:1001C00027023000010001003E00310235003502F7
+:1001D000000001000100010000000100000001001A
+:1001E0000100010000000100000001003F0052007A
+:1001F00051002402000001004000240021001E00E4
+:10020000010001004100250022001F00370001000D
+:1002100042002600230020002700010043002502A1
+:100220002E0231002E0001004400450001000100B3
+:1002300001000000010001000100010001000000B8
+:1002400001000100010001000100010001000100A6
+:10025000F2000100010001000100F000F1000100C6
+:10026000F400010001000100F3000100F5000100AD
+:100270000100010001000100000001000100010077
+:100280000000010000000100010001000000010069
+:100290000000010001000100010001000000010058
+:1002A0000100010001000100A9000100010001009E
+:1002B0000100AC00AA00B600010001000100AB0083
+:1002C000A80001000100010001000100010001007F
+:1002D00001000100AE000100010000000A0025300D
+:1002E000313662003A200025303258000A722F63FE
+:1002F0002030313233343536373839414243444582
+:10030000460A000A002530325800626F756E636538
+:10031000213A20006C6566742073696465206174FD
+:100320007461636865640A006C656674207369644F
+:1003300065206E6F7420726573706F6E64696E678E
+:100340000A00747279696E6720746F207265736534
+:1003500074206D637032333031380A000A444542EC
+:1003600055473A20656E61626C65642E0A005B73C6
+:100370005D004B6579626F617264207374617274A1
+:100380002E0A005B575D005B535D005B525D005BB6
+:10039000445D005B435D0016034500720067006F1B
+:1003A0000044006F007800200045005A000000164D
+:1003B000034500720067006F0044006F0078002062
+:1003C0000045005A0000000403090409028D0005DD
+:1003D0000100A0FA09040000010301010009211134
+:1003E000010001223F000705810308000A090401FA
+:1003F000000103010200092111010001224D000743
+:1004000005820308000A0904020001030000000934
+:1004100021110100012236000705830308000A09A3
+:100420000403000203000000092111010001222041
+:1004300000070584032000010705040320000109CB
+:100440000404000103000000092111010001223908
+:1004500000070585031000011201100100000008CB
+:10046000EDFE071301000102000105010906A101CB
+:10047000050719E029E71500250195087501810296
+:100480000508190129059505750191029501750366
+:100490009101050719002977150025019578750147
+:1004A0008102C00631FF0974A1010975150025FFFD
+:1004B0009520750881020976150025FF952075089D
+:1004C0009102C005010980A101850216010026B72D
+:1004D000001A01002AB700751095018100C0050CB3
+:1004E0000901A1018503160100269C021A01002AB8
+:1004F0009C02751095018100C005010902A1010946
+:1005000001A10005091901290515002501950575A9
+:100510000181029501750381010501093009311539
+:1005200081257F95027508810609381581257F95FB
+:100530000175088106050C0A38021581257F950191
+:1005400075088106C0C005010906A101050719E06B
+:1005500029E71500250195087501810295017508A7
+:10056000810105081901290595057501910295017B
+:10057000750391010507190029FF150025FF950650
+:1005800075088100C00A002530325820006B65795B
+:10059000626F6172645F7265706F72743A20000AF4
+:1005A0000025303258006B6579626F6172645F7349
+:1005B00065745F6C65643A200064656C5F6B657997
+:1005C0005F6269743A2063616E27742064656C3AD7
+:1005D00020253032580A006164645F6B65795F6280
+:1005E00069743A2063616E2774206164643A20253F
+:1005F0003032580A00646F6E652E0A00626F6F67B2
+:100600006D61676963207363616E3A202E2E2E2020
+:1006100000290A002575002F002575005D2800259A
+:10062000640020002564002000256400200025646B
+:10063000007C0025303258006D6F7573656B6579ED
+:10064000205B62746E7C782079207620685D287249
+:1006500065702F61636C293A205B006D6B5F776872
+:1006600065656C5F74696D655F746F5F6D6178203F
+:100670003D2025640A006D6B5F776865656C5F6D72
+:1006800061785F7370656564203D2025640A006DA4
+:100690006B5F74696D655F746F5F6D6178203D207D
+:1006A00025640A006D6B5F6D61785F7370656564CA
+:1006B000203D2025640A006D6B5F696E746572765B
+:1006C000616C203D2025640A006D6B5F64656C6180
+:1006D00079203D2025640A006D6B5F776865656C45
+:1006E0005F74696D655F746F5F6D6178203D202573
+:1006F000640A006D6B5F776865656C5F6D61785F3C
+:100700007370656564203D2025640A006D6B5F741D
+:10071000696D655F746F5F6D6178203D2025640AA7
+:10072000006D6B5F6D61785F7370656564203D205F
+:1007300025640A006D6B5F696E74657276616C206A
+:100740003D2025640A006D6B5F64656C6179203D16
+:100750002025640A000A00257500363A207768656E
+:10076000656C5F74696D655F746F5F6D61783A2069
+:10077000000A00257500353A20776865656C5F6D65
+:1007800061785F73706565643A20000A0025750022
+:10079000343A2074696D655F746F5F6D61783A20DB
+:1007A000000A00257500333A206D61785F7370652B
+:1007B00065643A20000A00257500323A20696E749B
+:1007C000657276616C286D73293A20000A002575E0
+:1007D00000313A2064656C6179282A31306D7329C3
+:1007E0003A20000A092D2056616C756573202D0A88
+:1007F000004D3E004D25643E20003F00736574208F
+:1008000064656661756C740A00433E200077686514
+:1008100072652064656C74613A20637572736F72DF
+:100820003D25642C20776865656C3D25640A536519
+:100830006520687474703A2F2F656E2E77696B6926
+:1008400070656469612E6F72672F77696B692F4DD0
+:100850006F7573655F6B6579730A000A092D204D0A
+:100860006F7573656B6579202D0A4553432F713A77
+:1008700009717569740A313A0964656C6179282ACD
+:1008800031306D73290A323A09696E746572766186
+:100890006C286D73290A333A096D61785F7370654E
+:1008A00065640A343A0974696D655F746F5F6D61E0
+:1008B000780A353A09776865656C5F6D61785F73B2
+:1008C000706565640A363A09776865656C5F7469B6
+:1008D0006D655F746F5F6D61780A0A703A097072B6
+:1008E000696E742076616C7565730A643A09736584
+:1008F000742064656661756C74730A75703A092BAF
+:10090000310A646F776E3A092D310A706775703A53
+:10091000092B31300A7067646F776E3A092D3130D8
+:100920000A0A7370656564203D2064656C746120FB
+:100930002A206D61785F7370656564202A202872B3
+:100940006570656174202F2074696D655F746F5FD9
+:100950006D6178290A003F004D3E2000433E200093
+:100960004C25640A000A092D20436F6E736F6C6575
+:10097000202D0A4553432F713A09717569740A6D28
+:100980003A096D6F7573656B65790A000A092D2048
+:100990004D61676963202D0A643A09646562756771
+:1009A0000A783A096465627567206D6174726978C6
+:1009B0000A6B3A096465627567206B6579626F61DD
+:1009C00072640A6D3A096465627567206D6F7573AC
+:1009D000650A763A0976657273696F6E0A733A0929
+:1009E0007374617475730A633A09636F6E736F6C25
+:1009F00065206D6F64650A302D343A096C61796544
+:100A000072302D34284631302D4634290A50617514
+:100A1000733A09626F6F746C6F616465720A653A4C
+:100A200009656570726F6D0A6E3A094E4B524F0A36
+:100A30007A3A09736C656570204C4544207465737F
+:100A4000740A000A002575002E6E6B726F3A200042
+:100A50000A002575002E737761705F6261636B73A6
+:100A60006C6173685F6261636B73706163653A2088
+:100A7000000A002575002E737761705F67726176DA
+:100A8000655F6573633A20000A002575002E6E6F5E
+:100A90005F6775693A20000A002575002E7377613B
+:100AA000705F72616C745F726775693A20000A004A
+:100AB0002575002E737761705F6C616C745F6C6775
+:100AC00075693A20000A002575002E636170736C09
+:100AD0006F636B5F746F5F636F6E74726F6C3A20DD
+:100AE000000A002575002E737761705F636F6E7466
+:100AF000726F6C5F636170736C6F636B3A20000A96
+:100B00000025303258006B65796D61705F636F6EE0
+:100B10006669672E7261773A20000A002575002EFB
+:100B20006D6F7573653A20000A002575002E6B65A0
+:100B300079626F6172643A20000A002575002E6D9B
+:100B400061747269783A20000A002575002E656E7E
+:100B500061626C653A20000A0025303258006465F5
+:100B60006275675F636F6E6669672E7261773A20A0
+:100B7000000A0025750064656661756C745F6C61C0
+:100B80007965723A20003F004E4B524F3A206F6613
+:100B9000660A004E4B524F3A206F6E0A0074696D20
+:100BA00065725F636F756E743A202530346C580A35
+:100BB000006B6579626F6172645F6E6B726F3A2071
+:100BC00025580A006B6579626F6172645F69646CB5
+:100BD000653A2025580A006B6579626F6172645F1F
+:100BE00070726F746F636F6C3A2025580A00686FDB
+:100BF00073745F6B6579626F6172645F6C65647357
+:100C000028293A2025580A000A092D2053746174B6
+:100C10007573202D0A004743433A20342E392E3372
+:100C2000204156522D4C4942433A20312E382E3124
+:100C3000204156525F415243483A20617672350A4C
+:100C4000004F5054494F4E533A204C554641204294
+:100C50004F4F544D41474943204D4F5553454B4508
+:100C6000592045585452414B455920434F4E534FFC
+:100C70004C4520434F4D4D414E44204E4B524F204A
+:100C80003531320A004255494C443A2066643732C5
+:100C9000613436202832323A35363A3234204A61CD
+:100CA0006E2032342032303136290A005649443A17
+:100CB00020307846454544284572676F446F782058
+:100CC000455A29205049443A20307831333037286A
+:100CD0004572676F446F7820455A29205645523A2D
+:100CE000203078303030310A00444553433A207484
+:100CF0002E6D2E6B2E206B6579626F61726420669B
+:100D000069726D7761726520666F72204572676FD8
+:100D1000646F780A000A092D2056657273696F6E38
+:100D2000202D0A000A6D6F7573653A206F66660A9A
+:100D3000000A6D6F7573653A206F6E0A000A6B6565
+:100D400079626F6172643A206F66660A000A6B65A9
+:100D500079626F6172643A206F6E0A000A6D617485
+:100D60007269783A206F66660A000A6D617472696A
+:100D7000783A206F6E0A000A64656275673A206FE0
+:100D80006E0A000A64656275673A206F66660A003B
+:100D90000A0A626F6F746C6F616465722E2E2E206A
+:100DA00000433E20006565636F6E6669673A0A001E
+:100DB000536C656570204C454420746573740A005B
+:100DC0000000000000000000000000010204060A0C
+:100DD0000F17202C3A4A5D71879DB3C7DAE9F5FCFD
+:100DE000FFFCF5E9DAC7B39D87715D4A3A2C2017FD
+:100DF0000F0A0604020100000000000000000000CD
+:100E000011241FBECFEFDAE0DEBFCDBF04B603FE74
+:100E100024C08091F9019091FA01A091FB01B09159
+:100E2000FC018730904BA740B04BB9F41092F90108
+:100E30001092FA011092FB011092FC0114BE84B7CB
+:100E4000877F84BF88E10FB6F8948093600010928A
+:100E500060000FBEE0E0FFE3099511E0A0E0B1E023
+:100E6000ECE9FBE502C005900D92AA33B107D9F772
+:100E700011E0AAE3B1E001C01D92A93FB107E1F77B
+:100E80000E94900F0C94CC2D0C940000FF93EF93D4
+:100E9000E0913A01F0913B01309709F00995EF910B
+:100EA000FF910895FC018591803011F0EFDFFBCFB9
+:100EB0000895FF27E0E230E247FF0CC0419597FF1D
+:100EC00009C0EDE26095709580959095611D711D4A
+:100ED000811D911D27FF02C0219530E350E2AA2712
+:100EE000660F771F881F991FAA1FA41710F0A41B55
+:100EF00063955A95A9F7AA3008F0A95FA05DAF9352
+:100F0000F395611571058105910541F7ED3211F4F5
+:100F1000EF93F395F21718F43F93F395FBCF8F916E
+:100F2000B5DFFA95E1F70895E991F991859180305F
+:100F300021F0853219F0AADFF9CF089520E0E89476
+:100F400055915532C1F3503311F4689455915A3389
+:100F500048F4505390F3220F022E220F220F200D3F
+:100F6000250FF4CF0EF4219589919991533619F3F9
+:100F7000533729F1533559F1BC0188279927E89453
+:100F80005C3621F48991999168945591543639F4DD
+:100F900046EF7EF077FF0DC08FEF9FEF0AC0553709
+:100FA0004AE039F0583540E121F0523642E009F08C
+:100FB0000895FF93EF937DDFEF91FF91B7CFFF93FC
+:100FC000EF93FC0181918030B9F360DFFBCFFF9399
+:100FD000EF9368DFF1CFDF93CF93CDB7DEB72596E0
+:100FE000A3DFCF91DF91089561110BC0FC018281D5
+:100FF000882321F085EE0E946D1603C085EE0E94C5
+:10100000351780E090E0089508956091BC017091DB
+:10101000BD018091BE019091BF010E94FB205698B6
+:101020005E9825982D9826982E9827982F9881308D
+:1010300019F0823021F00895259A2D9A0895269A64
+:101040002E9A089585E098E0892B11F00E940508FA
+:1010500080E090E0089556985E9825982D982698FF
+:101060002E9827982F988FEF90E090938900809387
+:10107000880090938B0080938A0090938D008093DA
+:101080008C00259A2D9A2FEF80E792E02150804026
+:101090009040E1F700C00000269A2E9A2FEF80E7DB
+:1010A00092E0215080409040E1F700C00000279A74
+:1010B0002F9A2FEF80E792E0215080409040E1F797
+:1010C00000C0000025982D982FEF80E792E0215076
+:1010D00080409040E1F700C0000026982E982FEF46
+:1010E00080E792E0215080409040E1F700C000008E
+:1010F00027982F9856985E9825982D9826982E9880
+:1011000027982F98089589EA8093800089E080933A
+:10111000810024982C983F988AB18F748AB96E9870
+:10112000479A8BB1806B8BB9769A0E942B0884E02A
+:1011300098E0892B11F00E94040880E090E0089567
+:1011400080E28093000180913C0181110EC00E94D9
+:10115000EF0881E080933C012FEF83ED90E3215075
+:1011600080409040E1F700C0000080E40E94F50854
+:101170008093000181112EC00E941F0980930001FD
+:10118000811128C00E941F0980930001811122C093
+:101190008FE30E941F098093000181111BC00E94F0
+:1011A000170980E40E94F50880930001811112C0A4
+:1011B0008CE00E941F098093000181110BC00E94E6
+:1011C0001F0980930001811105C08FE30E941F0950
+:1011D000809300010E9417098091000108951092E8
+:1011E000B9008AE08093B800089594EA9093BC0017
+:1011F0009091BC0097FFFCCF9091B900987F9830F8
+:1012000021F0903111F081E008958093BB0084E8D3
+:101210008093BC008091BC0087FFFCCF8091B90017
+:10122000887F883111F0803471F780E0089584E977
+:101230008093BC008091BC0084FDFCCF0895809316
+:10124000BB0084E88093BC008091BC0087FFFCCF8A
+:101250009091B900987F81E0983209F480E0089578
+:1012600084E88093BC008091BC0087FFFCCF809114
+:10127000BB00089580910001811115C080E40E9497
+:10128000F5088093000181110CC082E10E941F09C2
+:1012900080930001811105C08FEF0E941F09809388
+:1012A00000010E94170984B1807F84B985B1807FD5
+:1012B00085B98AB1837F8AB98BB1837F8BB93E9818
+:1012C000469808950E94A008809300010E943A0960
+:1012D00080B38C7080BB81B3836F81BBAEE3B1E020
+:1012E000ECE4F1E08EE08E0F11921D928E13FCCF94
+:1012F00083E898E0892B11F00C94830808959F925D
+:10130000AF92BF92CF92DF92EF92FF920F931F9313
+:10131000CF93DF93809100018823E1F080913D011C
+:101320008F5F80933D01811115C082E493E00E949C
+:1013300052070E94A00880930001882329F088E2C8
+:1013400093E00E94520706C084E193E00E94520796
+:101350000E942B080EE311E0C0E0D0E0BB24B39460
+:1013600082E0A82ECC24C394D12C25E0E22E23E0E9
+:10137000F22EC730D10500F580910001811164C0C3
+:1013800080E40E94F50880930001811112C082E17F
+:101390000E941F098093000181110BC0C6010C2E11
+:1013A00001C0880F0A94EAF780950E941F09809374
+:1013B00000010E94170948C0CA30A1F028F4C830C3
+:1013C00059F0C93061F005C0CC3089F070F0CD30F3
+:1013D00089F0209A289810C0219A29980DC0229A45
+:1013E0002A980AC0239A2B9807C0529A01C0539A90
+:1013F0005B9802C03E9A469890EA9A95F1F79FB1A1
+:10140000799902C082E001C080E091709B25982B01
+:101410007C9902C084E001C080E0892B7D9902C0E4
+:1014200038E001C030E0832B7E9902C020E101C08A
+:1014300020E0822B9FB19095991F9927991F929533
+:10144000990F907E892B10C080910001811174C08A
+:1014500080E40E94F50880930001882309F459C0B4
+:10146000912C0E941709892DF8019081981739F164
+:10147000808380910101882301F18091D70180FF51
+:1014800004C08AE093E00E9452078091D70180FF58
+:101490000CC0809101011F928F93FF92EF920E94E6
+:1014A000EB070F900F900F900F908091D70180FF66
+:1014B00004C083E093E00E945207A09201010E94C1
+:1014C0003A0921960F5F1F4FCE30D10509F051CF59
+:1014D000809101018823B1F081508093010188231C
+:1014E00039F08FE99FE00197F1F700C000000AC0D2
+:1014F000ACE4B1E0EEE3F1E0CF01825F91919D9326
+:101500008E13FCCF82E298E0892BC1F00E94220862
+:1015100015C083E10E941F09809300018111A0CFB3
+:1015200081E40E94F50880930001811199CF0E9407
+:101530003009982E909495CF80E096CF81E0DF918E
+:10154000CF911F910F91FF90EF90DF90CF90BF90C0
+:10155000AF909F900895E82FF0E0E45BFE4F80810C
+:101560000895CF92DF92EF92FF920F931F93CF9344
+:10157000DF938CEE92E00E9452078CE4E82E81E02B
+:10158000F82EC0E0D0E097EEC92E92E0D92E0EEDF5
+:1015900012E0DF93CF93DF92CF920E94EB0784EEAD
+:1015A00092E00E945207F70181917F0190E00E9432
+:1015B00061219F938F931F930F930E94EB078CEDF4
+:1015C00092E00E94520721968DB79EB708960FB6FB
+:1015D000F8949EBF0FBE8DBFCE30D105D1F6DF91FE
+:1015E000CF911F910F91FF90EF90DF90CF900895D2
+:1015F0008B3B910578F4883A910540F5853A910541
+:10160000D0F48430910508F0B1C08130910509F41F
+:10161000ADC06BC0803E910508F467C0883E91055F
+:1016200008F4A4C09C01205F31092031310508F085
+:101630005CC090650895853A910509F459C0863AD1
+:10164000910509F058C082E890E40895883A910520
+:1016500009F454C0893A910509F453C08A3A9105B6
+:1016600009F452C08B3A910509F451C08C3A9105A6
+:1016700009F450C08D3A910509F44FC0803B9105A3
+:1016800009F44EC08E3A910509F44DC08F3A910588
+:1016900009F44CC0813B910509F44BC0823B910594
+:1016A00009F44AC0833B910509F449C0843B910584
+:1016B00009F448C0853B910509F447C0863B910574
+:1016C00009F446C0873B910509F445C0883B910564
+:1016D00009F444C0893B910509F443C08A3B910554
+:1016E00009F442C080E094E4089580E090E0089519
+:1016F00081E890E4089583E890E4089582EE94E40C
+:10170000089589EE94E408958AEE94E4089585EBB3
+:1017100094E4089586EB94E4089587EB94E40895A7
+:101720008CEC94E408958DEC94E4089583E895E4BA
+:1017300008958AE895E4089582E995E4089584E996
+:1017400095E4089581E296E4089583E296E408958D
+:1017500084E296E4089585E296E4089586E296E4AC
+:10176000089587E296E408958AE296E4089508953C
+:1017700096E0799FF001112494E5899FE00DF11D19
+:101780001124E60FF11DEE0FFF1FEC51FF4F859165
+:1017900094910895880F991FFC01E05AF0408591BB
+:1017A00094910895880F991FFC01E052FF4F859195
+:1017B0009491089526E0729FF001112444E5849FDE
+:1017C000E00DF11D1124E60FF11DEE0FFF1FEC518E
+:1017D000FF4F859194919C013A9521154FE1340773
+:1017E00008F41EC13F512115304120F49F700E9422
+:1017F000D20B08959C0130532115304118F49927DC
+:10180000906C0895811520E5920769F40E94BB1A37
+:101810004FEF84E39CE0415080409040E1F700C0EE
+:1018200000000C941D22813020E5920751F48CE5D4
+:1018300093E00E9452078091D70181608093D70185
+:1018400008959C0130552115304108F051C0292FD1
+:1018500033272F70332721303105D9F4AC01437081
+:10186000552702C0220F331F4A95E2F73C68AC01AE
+:1018700064E0440F551F6A95E1F744275370242B09
+:10188000352B73E0880F991F7A95E1F780769927B9
+:101890001DC02230310529F4982F8827816F906A66
+:1018A000089523303105A9F4AC014370552721E098
+:1018B00030E002C0220F331F4A95E2F73C6843E054
+:1018C000880F991F4A95E1F7807E9770822B932BA2
+:1018D000089524303105E1F4AC014370552721E02F
+:1018E00030E002C0220F331F4A95E2F73A68E7CF93
+:1018F0009C0130572115304118F49F709062089573
+:101900009C0130582115304118F49F70906A089559
+:10191000803E9105E0F4803C910558F581339105B6
+:1019200009F46FC048F48932910509F463C08A3222
+:10193000910509F46DC072C089339105E9F08238D0
+:101940009105D1F08533910509F44DC067C0833E00
+:10195000910581F138F4803E9105B9F0823E910500
+:10196000D9F05CC0863E910561F1873E9105A1F1F9
+:1019700055C00E94CA0B08952091EA0120FD02C0C3
+:1019800021FF4CC080EE90E049C08091EA0180FFC9
+:10199000F9CF89E390E042C08091EA0182FF0EC056
+:1019A0008091EA0184FF03C080E090E037C083EEBD
+:1019B00090E034C08091EA0182FFF2CF82EE90E0A5
+:1019C0002DC08091EA0183FF0BC08091EA0184FD64
+:1019D000EBCF87EE90E022C08091EA0183FFF5CF44
+:1019E00086EE90E01BC08091EA0185FF07C089E286
+:1019F00090E014C08091EA0185FFF9CF85E390E083
+:101A00000DC08091EA0186FF07C08AE290E006C01F
+:101A10008091EA0186FFF9CF81E390E00E94F80A05
+:101A20000895089580916D0108959FB7F8941092DC
+:101A30005C019FBF9091F001943009F057C09091E4
+:101A4000E9009F703091EC00232F217030FD20E8D9
+:101A5000922B24E02093E9002091EB0020FF43C06B
+:101A60002091EE0027FF3FC020915A01222321F050
+:101A70002091E80025FF37C010925A0126E03091EE
+:101A8000E80035FD15C03091F001343061F530913A
+:101A9000EB0035FD28C0215021F481E080935A01EC
+:101AA00022C0EFE9FFE03197F1F700C00000E7CF77
+:101AB0008093F1008091E80085FD0AC08091E800E4
+:101AC00080FFFCCF8091E8008E778093E80006C00D
+:101AD0008FB7F89421E020935C018FBF9F709093A3
+:101AE000E90080E008959F709093E9008FEF0895DA
+:101AF000CF93DF9300D01F92CDB7DEB79C018091CA
+:101B0000F001843019F593E099833B832A83909305
+:101B1000E9008FEF9091E800815095FD06C095EDAA
+:101B20009A95F1F700008111F5CF8091E80085FFCB
+:101B30000DC040E050E063E070E0CE0101960E94ED
+:101B400048108091E8008E778093E8000F900F9006
+:101B50000F90DF91CF910895CF93DF9300D01F9224
+:101B6000CDB7DEB72091F001243021F522E02983A2
+:101B70009B838A8383E08093E9008FEF9091E80054
+:101B8000815095FD06C095ED9A95F1F70000811101
+:101B9000F5CF8091E80085FF0DC040E050E063E0A4
+:101BA00070E0CE0101960E9448108091E8008E7787
+:101BB0008093E8000F900F900F90DF91CF910895E0
+:101BC0002091F0012430F1F422E02093E9002FEF7E
+:101BD0003091E800215035FD06C035ED3A95F1F71A
+:101BE00000002111F5CF2091E80025FF0BC040E057
+:101BF00050E065E070E00E9448108091E8008E7728
+:101C00008093E8000895CF93DF932091F001243072
+:101C100009F048C0EC0180910C018823E1F080912B
+:101C20000D018823C1F085E08093E9008FEF90914A
+:101C3000E800815095FD06C095E19A95F1F7000006
+:101C40008111F5CF8091E80085FF2CC040E050E085
+:101C500060E170E017C081E08093E9008FEF909120
+:101C6000E800815095FD06C095ED9A95F1F70000CA
+:101C70008111F5CF8091E80085FF14C040E050E06D
+:101C800068E070E0CE010E9448108091E8008E77F5
+:101C90008093E80080E1FE01ADE5B1E001900D9296
+:101CA0008A95E1F7DF91CF91089583E993E00E944F
+:101CB00052078091EF01811109C00E94DD110E943D
+:101CC0003A128091E20084608093E20008958FE8E8
+:101CD00093E00E9452071092EF0108958BE893E081
+:101CE0000C94520787E893E00E9452070C94ED2B66
+:101CF00083E893E00E9452070E94B7210E94F32BD1
+:101D00000E94DF140C94110D20915B012F5F822F34
+:101D100062E30E94612D992319F020935B010895DD
+:101D200010925B0180915C01882371F18091F00138
+:101D3000843041F58091E9008F702091EC00922F62
+:101D4000917020FD90E8892B94E09093E9009091A8
+:101D5000EB0090FF14C09091EE0097FF10C090919F
+:101D6000E80095FF03C01092F100F9CF9091E800D0
+:101D700090FF05C09091E8009E779093E8008F70E7
+:101D80008093E90010925C01089542E061EC81E0EB
+:101D90000E94571142E061EC82E00E94571142E03C
+:101DA00061EC83E00E94571142E261EC84E00E9402
+:101DB000571142E161EC85E00C9457118091F201DA
+:101DC000833009F455C030F4813071F0823009F469
+:101DD0008EC008958A3009F47AC08B3009F460C04F
+:101DE000893009F09CC020C08091F101813A09F04E
+:101DF00096C08091E800877F8093E8008091F5018C
+:101E00009091F601892B21F460E18DE591E003C00A
+:101E100060E080E090E070E00E9493108091E80024
+:101E20008B778093E80008958091F101813209F069
+:101E300076C08091F5019091F601009719F0049712
+:101E400009F06DC08091E800877F8093E800809161
+:101E5000E80082FD05C08091F0018111F8CF5FC0DC
+:101E60008091F10080936D018091E8008B7753C0E1
+:101E70008091F101813A09F052C08091F501909171
+:101E8000F601892B09F04BC08091E800877F809391
+:101E9000E8008091E80080FFFCCF80910C0136C003
+:101EA0008091F1018132D9F58091F5019091F6018F
+:101EB000892BA9F58091E800877F8093E8000E9434
+:101EC0008C118091F30180930C010C94BB1A8091CA
+:101ED000F101813221F58091E800877F8093E8004D
+:101EE0000E948C118091F40180936E01089580917D
+:101EF000F101813AA1F48091E800877F8093E800A6
+:101F00008091E80080FFFCCF80916E018093F1000A
+:101F10008091E8008E778093E8000C948C110895EE
+:101F200084B7877F84BF88E10FB6F8948093600000
+:101F3000109260000FBE90E080E80FB6F894809396
+:101F40006100909361000FBE0E946C150E94DD112C
+:101F50000E943A128091E20084608093E20085E161
+:101F60009DE00E94F62078940E94BF140E946E1596
+:101F700082E091E00E94DA140E94DB2B82E793E07A
+:101F80000E9452078091F001853089F48EE693E03B
+:101F90000E9452070E947B218091EE01882391F3D9
+:101FA0000E94A321882371F30E943210EBCF0E947C
+:101FB0009C15E8CF292F332723303105C9F064F46D
+:101FC0002130310581F02230310509F043C08DE820
+:101FD00090E02BEC33E042C021323105F1F02232A7
+:101FE000310541F137C082E190E028E534E036C0A8
+:101FF00099278130910541F08230910541F0892B7C
+:1020000049F5E7ECF3E005C0EFEAF3E002C0E7E9E9
+:10201000F3E0849190E09F0121C06530D8F4E62F71
+:10202000F0E0EE0FFF1FEB5DFE4F2081318189E074
+:1020300090E014C0653070F470E0FB01EE0FFF1FFC
+:10204000E55EFE4F20813181FB01EA5EFE4F80811B
+:1020500090E004C080E090E020E030E0FA013183BD
+:102060002083089580E189BD82E189BD09B400FE25
+:10207000FDCF8091D8008F7D8093D8008091E000C3
+:1020800082608093E0008091E00081FDFCCF0895A4
+:10209000CF92DF92EF92FF920F931F93CF93DF9334
+:1020A000EC018B016A010E94AB11811133C0C11494
+:1020B000D10439F0F60180819181081B190BC80FFA
+:1020C000D91FE12CF12C0115110519F18091E800BF
+:1020D00085FD16C08091E8008E778093E800C114DA
+:1020E000D10449F0F60180819181E80EF91EF18258
+:1020F000E08285E00FC00E94AB11882321F30AC063
+:1021000089918093F10001501109FFEFEF1AFF0A46
+:10211000DACF80E0DF91CF911F910F91FF90EF9088
+:10212000DF90CF9008952091F7013091F8012617A4
+:10213000370748F06115710539F42091E8002E77D2
+:102140002093E80001C0B90140E061157105A9F1D3
+:102150002091F001222309F443C0253009F442C044
+:102160002091E80023FD40C02091E80022FD32C00C
+:102170002091E80020FFE9CF4091F3002091F20088
+:1021800030E0342BFC01CF016115710559F0283086
+:10219000310540F481918093F100615071092F5F06
+:1021A0003F4FF1CF41E02830310509F040E0209168
+:1021B000E8002E772093E800C8CF4111C9CF0AC0AC
+:1021C0008091F001882361F0853061F08091E80012
+:1021D00083FD0AC08091E80082FFF2CF80E008957D
+:1021E00082E0089583E0089581E008952091F70149
+:1021F0003091F8012617370748F06115710539F459
+:102200002091E8002E772093E80001C0B901FC017D
+:1022100020E06115710591F18091F001882309F4A6
+:1022200040C0853009F43FC08091E80083FD3DC087
+:102230008091E80082FD2FC08091E80080FFE9CF07
+:102240002091F3008091F20090E0922B61157105CE
+:1022500059F08830910540F424912093F100319693
+:10226000615071090196F2CF21E0089709F020E052
+:102270008091E8008E778093E800CBCF2111CCCFFE
+:102280000AC08091F001882361F0853061F080916F
+:10229000E80083FD0AC08091E80082FFF2CF80E071
+:1022A000089582E0089583E0089581E00895982FCD
+:1022B000973058F59093E900981739F07091EC0039
+:1022C0002091ED005091F00003C0242F762F50E0B4
+:1022D00021FF19C03091EB003E7F3093EB0030912D
+:1022E000ED003D7F3093ED003091EB003160309395
+:1022F000EB007093EC002093ED005093F0002091E0
+:10230000EE0027FF07C09F5FD3CF8F708093E90057
+:1023100081E0089580E008958091F10187FF11C068
+:102320008091E80082FD05C08091F0018111F8CF15
+:1023300011C08091E8008B770BC08091F001882359
+:1023400049F08091E80080FFF8CF8091E8008E7717
+:102350008093E80008952091E4003091E50095E62F
+:102360004091EC00842F817040FF22C08091E800F2
+:1023700080FD1CC08091F001882391F0853091F0A0
+:102380008091EB0085FD10C04091E4005091E50084
+:102390004217530729F39A01915011F784E00895E9
+:1023A00082E0089583E0089581E0089580E0089533
+:1023B0004091E80042FFDECF08950E944B120E9438
+:1023C0005312E0EEF0E0808181608083E8EDF0E080
+:1023D00080818F77808319BCA7EDB0E08C918E7FD0
+:1023E0008C9380818F7E80831092EF0108950F93EC
+:1023F0001F93CF93DF930E944B120E945312C8ED9C
+:10240000D0E088818F7788838881806888838881FD
+:102410008F7D888319BC1092F0011092EC0110920C
+:10242000EE011092ED0100EE10E0F80180818B7F4B
+:10243000808388818160888342E060E080E00E9440
+:102440005711E1EEF0E080818E7F8083E2EEF0E0D4
+:10245000808181608083808188608083F8018081B1
+:102460008E7F8083888180618883DF91CF911F91E7
+:102470000F910895E8EDF0E080818F7E8083E7ED95
+:10248000F0E080818160808384E082BF81E080937E
+:10249000EF010C94F711E8EDF0E080818E7F8083EE
+:1024A0001092E20008951092DA001092E10008956F
+:1024B0001F920F920FB60F9211242F933F934F93B9
+:1024C0005F936F937F938F939F93AF93BF93EF939C
+:1024D000FF938091E10082FF0BC08091E20082FFB8
+:1024E00007C08091E1008B7F8093E1000E94840E01
+:1024F0008091DA0080FF1FC08091D80080FF1BC050
+:102500008091DA008E7F8093DA008091D90080FF7D
+:102510000DC080E189BD82E189BD09B400FEFDCF17
+:1025200081E08093F0010E94550E05C019BC109205
+:10253000F0010E94670E8091E10080FF19C0809138
+:10254000E20080FF15C08091E2008E7F8093E20060
+:102550008091E20080618093E2008091D8008062E7
+:102560008093D80019BC85E08093F0010E94720E20
+:102570008091E10084FF30C08091E20084FF2CC094
+:1025800080E189BD82E189BD09B400FEFDCF809163
+:10259000D8008F7D8093D8008091E1008F7E80935A
+:1025A000E1008091E2008F7E8093E2008091E20062
+:1025B00081608093E2008091EC01882311F084E037
+:1025C00007C08091E30087FD02C081E001C083E085
+:1025D0008093F0010E94780E8091E10083FF29C072
+:1025E0008091E20083FF25C08091E100877F809386
+:1025F000E10082E08093F0011092EC018091E10013
+:102600008E7F8093E1008091E2008E7F8093E200D4
+:102610008091E20080618093E20042E060E080E02F
+:102620000E9457118091F00088608093F0000E9412
+:102630006E0EFF91EF91BF91AF919F918F917F911E
+:102640006F915F914F913F912F910F900FBE0F901F
+:102650001F9018951F920F920FB60F9211242F936F
+:102660003F934F935F936F937F938F939F93AF931A
+:10267000BF93CF93DF93EF93FF93C091E900CF70A7
+:102680008091EC00D82FD17080FDD0E81092E90045
+:102690008091F000877F8093F00078940E946E1301
+:1026A0001092E9008091F00088608093F000CD2BBB
+:1026B000CF70C093E900FF91EF91DF91CF91BF916F
+:1026C000AF919F918F917F916F915F914F913F91CA
+:1026D0002F910F900FBE0F901F9018951F93CF93BF
+:1026E000DF93CDB7DEB7AA970FB6F894DEBF0FBE63
+:1026F000CDBFE1EFF1E088E08E0F9091F100919372
+:102700008E13FBCF0E94DE0E8091E80083FF1FC175
+:102710008091F1019091F201492F50E04A3051052A
+:1027200008F015C1FA01EA5AFF4F0C94812D803848
+:1027300081F0823809F00BC18091F5018F70809390
+:10274000E9008091EB0085FB882780F91092E90071
+:1027500006C08091ED019091EE01911182609091FF
+:10276000E800977F9093E8008093F1001092F100C9
+:10277000C8C0282F2D7F09F0EAC0882319F08230C5
+:1027800061F0E5C08091F301813009F0E0C0933041
+:1027900009F080E08093EE012BC08091F30181115C
+:1027A00027C08091F5018F7009F4D1C08093E900B2
+:1027B0002091EB0020FF1CC0933021F48091EB00AE
+:1027C000806214C09091EB0090619093EB0021E047
+:1027D00030E0A90102C0440F551F8A95E2F74093EB
+:1027E000EA001092EA008091EB0088608093EB0091
+:1027F0001092E9008091E800877F86C08111A7C010
+:102800001091F3011F778091E3008078812B8093F2
+:10281000E3008091E800877F8093E8000E948C119C
+:102820008091E80080FFFCCF8091E3008068809376
+:10283000E300111102C082E001C083E08093F00147
+:1028400086C08058823008F082C08091F301909158
+:10285000F4018C3D53E0950779F583E08A838AE2A1
+:1028600089834FB7F894DE01139620E03EE051E2F1
+:10287000E32FF0E050935700E49120FF03C0E2956E
+:10288000EF703F5FEF708E2F90E0EA3010F0C79648
+:1028900001C0C0968D939D932F5F243149F74FBFA0
+:1028A0008091E800877F8093E8006AE270E0CE01C3
+:1028B00001960E94931014C0AE014F5F5F4F60916C
+:1028C000F5010E94DA0FBC01892B09F440C09091F8
+:1028D000E800977F9093E80089819A810E94F61022
+:1028E0008091E8008B778093E80031C0803879F5DB
+:1028F0008091E800877F8093E8008091EC018093CD
+:10290000F1008091E8008E778093E8000E948C119E
+:102910001EC081111CC09091F3019230C0F48091CF
+:10292000E800877F8093E8009093EC010E948C116F
+:102930008091EC01811106C08091E30087FD02C007
+:1029400081E001C084E08093F0010E94C50E809177
+:10295000E80083FF0AC08091E800877F8093E80049
+:102960008091EB0080628093EB00AA960FB6F894FA
+:10297000DEBF0FBECDBFDF91CF911F910895CF93E2
+:102980008091F0018823A1F0C091E900CF7090916F
+:10299000EC00892F817090FD80E8C82B1092E9002F
+:1029A0008091E80083FD0E946E13CF70C093E90010
+:1029B000CF91089590937401809373010895E091ED
+:1029C0007301F0917401309721F00190F081E02DB6
+:1029D000099480E00895EF92FF920F931F93CF9395
+:1029E000DF93E0917301F09174013097B1F18C01A4
+:1029F0000280F381E02D09958091D70182FF2DC0DF
+:102A000080FF04C08DE895E00E945207E80110E1C4
+:102A100087E8E82E85E0F82E8091D70180FF0BC073
+:102A200088811F928F93FF92EF920E94EB070F9085
+:102A30000F900F900F90115021961111EDCF8091B2
+:102A4000D70180FF0AC085E895E0DF91CF911F9103
+:102A50000F91FF90EF900C945207DF91CF911F914F
+:102A60000F91FF90EF900895E0917301F091740140
+:102A7000309721F00480F581E02D0994089520918C
+:102A80007101309172018217930771F09093720176
+:102A900080937101E0917301F0917401309721F0FE
+:102AA0000680F781E02D0994089520916F013091FF
+:102AB00070018217930771F09093700180936F01FA
+:102AC000E0917301F0917401309721F00084F18559
+:102AD000E02D0994089508950C946B150E94B92176
+:102AE0000E9462090C947F22CF93C82F8091D70156
+:102AF00082FF1EC080FF04C086EA95E00E94520754
+:102B00008091D70180FF0CC01F92CF9381EA95E09E
+:102B10009F938F930E94EB070F900F900F900F9051
+:102B20008091D70180FF04C08FE995E00E94520791
+:102B30008C2FCF910C94110DCF92DF92EF92FF92D8
+:102B40000F931F93CF93DF93CDB7DEB72B970FB6BD
+:102B5000F894DEBF0FBECDBF0E947F0986E7C82E66
+:102B600081E0D82E00E010E0E02E802F0E94AB0A1A
+:102B7000F60141916F01F42EF826B1F40F5F1F4F5B
+:102B80000E30110589F78FEF89838A831B820E949B
+:102B9000C2218160782F9D838C8349815A816B810A
+:102BA0008D810E943F1640C09091D70191FF04C0D3
+:102BB0008B870E94B10A8B8520E030E04F2D50E0DA
+:102BC000922FBA01022E02C0759567950A94E2F71A
+:102BD00060FF24C02E83EF8221E030E0690102C053
+:102BE000CC0CDD1C9A95E2F790E08C219D21892B7D
+:102BF00009F420E028870E94C2218160782F9A87FB
+:102C000089874E815F8168858A850E943F16F80119
+:102C1000EA58FE4F8081C826C08206C02F5F3F4F12
+:102C20002630310569F6AACF0E94F0251091750172
+:102C30000E94DF141817A1F00E94DF148093750121
+:102C40002B960FB6F894DEBF0FBECDBFDF91CF91AC
+:102C50001F910F91FF90EF90DF90CF900C9474151F
+:102C60002B960FB6F894DEBF0FBECDBFDF91CF918C
+:102C70001F910F91FF90EF90DF90CF900895CF9329
+:102C8000DF93CDB7DEB72B970FB6F894DEBF0FBE3C
+:102C9000CDBF4F83588769877A878B87DE0111966E
+:102CA00086E0FD0111928A95E9F785E0FE013796ED
+:102CB00001900D928A95E1F749815A816B817C815F
+:102CC0008D819E810E94551D2B960FB6F894DEBF14
+:102CD0000FBECDBFDF91CF910895CF93882309F424
+:102CE000C2C0C82F823859F40E94DF1481FDBBC0D6
+:102CF00089E30E94F11F0E94D02089E30CC0833831
+:102D000079F40E94DF1480FDAEC083E50E94F11FBC
+:102D10000E94D02083E50E944420CF910C94D020C3
+:102D2000843859F40E94DF1482FD9DC087E40E941C
+:102D3000F11F0E94D02087E4EECF8CEF8C0F813AF8
+:102D400048F48C2F0E94832A81118DC08C2F0E9401
+:102D5000F11FE3CF80E28C0F883048F4C77081E028
+:102D600001C0880FCA95EAF70E949920D6CF8BE55B
+:102D70008C0F833078F4C53A29F0C63A31F083E8F5
+:102D800090E005C081E890E002C082E890E0CF9139
+:102D90000C943F1588E58C0F833108F064C0C83A65
+:102DA00039F1C93A41F1CA3A49F1CB3A51F1CC3A39
+:102DB00059F1CD3A61F1C03B69F1CE3A71F1CF3AA8
+:102DC00079F1C13B81F1C23B89F1C33B91F1C43B35
+:102DD00099F1C53BA1F1C63BA9F1C73BB1F1C83B95
+:102DE000B9F1C93BC1F1CA3BC9F180E090E038C0FC
+:102DF00082EE90E035C089EE90E032C08AEE90E03D
+:102E00002FC085EB90E02CC086EB90E029C087EBCB
+:102E100090E026C08CEC90E023C08DEC90E020C0C8
+:102E200083E891E01DC08AE891E01AC082E991E050
+:102E300017C084E991E014C081E292E011C083E2FE
+:102E400092E00EC084E292E00BC085E292E008C0FE
+:102E500086E292E005C087E292E002C08AE292E058
+:102E6000CF910C945515CF910895882309F44BC048
+:102E7000823859F40E94DF1481FF45C089E30E9423
+:102E8000F11F0E94D02089E30CC0833871F40E94A6
+:102E9000DF1480FF38C083E50E94F11F0E94D0201C
+:102EA00083E50E9444200C94D020843859F40E9479
+:102EB000DF1482FF28C087E40E94F11F0E94D02007
+:102EC00087E4EFCF9CEF980F913A58F390E2980F78
+:102ED000983050F4877091E001C0990F8A95EAF715
+:102EE000892F0E949F20DFCF9BE5980F933020F41D
+:102EF00080E090E00C943F15885A833120F480E004
+:102F000090E00C9455150895882321F00E94992093
+:102F10000C94D0200895882321F00E949F200C94C7
+:102F2000D0200895BF92CF92DF92EF92FF920F933D
+:102F30001F93CF93DF9300D000D000D0CDB7DEB782
+:102F400025E0FC01DE01119601900D922A95E1F732
+:102F5000FC01408131810281258122952F7063819E
+:102F60007481672B09F4E5C23F3F19F44F3F09F420
+:102F7000E0C27C0149833A8389819A812E830E9431
+:102F8000B01F182FB92E0E94AF1F0E94761EEB2D86
+:102F9000E295EF70F0E0E05AFF4F2E810C94812D06
+:102FA0008B2D807F9B2D9F70F92E882319F0F29432
+:102FB00080EFF822002349F0FF2009F467C28F2D2B
+:102FC0000E94A9200E94D02061C2812F0E94351743
+:102FD000FF2009F4AEC28F2D0E94AF2026960FB6B7
+:102FE000F894DEBF0FBECDBFDF91CF911F910F913F
+:102FF000FF90EF90DF90CF90BF900C94D0203B2DAE
+:10300000307F8B2D8F70303211F08295807F1123AD
+:1030100019F0113021F12CC00023B9F0222309F45A
+:10302000A0C1213009F09DC126960FB6F894DEBFED
+:103030000FBECDBFDF91CF911F910F91FF90EF9009
+:10304000DF90CF90BF900C94B920222319F021304B
+:1030500009F46FC28E830E94BC208E8196C100232A
+:1030600021F0223008F065C27CC1211162C28DC1FD
+:10307000002321F0222309F474C108C2222309F499
+:1030800084C119C22B2D26952695237030E0211579
+:10309000310521F021303105D1F04BC2002321F060
+:1030A000812F9B2D937002C080E090E026960FB692
+:1030B000F894DEBF0FBECDBFDF91CF911F910F916E
+:1030C000FF90EF90DF90CF90BF900C943F150023BE
+:1030D00021F0812F9B2D937002C080E090E0269616
+:1030E0000FB6F894DEBF0FBECDBFDF91CF911F9119
+:1030F0000F91FF90EF90DF90CF90BF900C945515FB
+:10310000812F002319F00E94762402C00E94DE2441
+:1031100026960FB6F894DEBF0FBECDBFDF91CF91DC
+:103120001F910F91FF90EF90DF90CF90BF900C9484
+:1031300063258B2D837009F07BC00111FAC1812FAB
+:10314000829586958770880F880F912F9F70C92E62
+:10315000D12CE12CF12C082E04C0CC0CDD1CEE1C73
+:10316000FF1C0A94D2F714FF12C04FE050E060E059
+:1031700070E004C0440F551F661F771F8A95D2F771
+:10318000CB01BA01609570958095909503C060E081
+:1031900070E0CB012B2D269526952370422F50E011
+:1031A00042305105D9F04330510569F16C297D2930
+:1031B0008E299F294130510551F126960FB6F8947A
+:1031C000DEBF0FBECDBFDF91CF911F910F91FF905A
+:1031D000EF90DF90CF90BF900C949D1E6C297D29BD
+:1031E0008E299F2926960FB6F894DEBF0FBECDBF5D
+:1031F000DF91CF911F910F91FF90EF90DF90CF90D3
+:10320000BF900C94B91E0E949D1EC701B601269660
+:103210000FB6F894DEBF0FBECDBFDF91CF911F91E7
+:103220000F91FF90EF90DF90CF90BF900C94811E94
+:10323000002319F08B2D817001C08695882309F435
+:1032400078C1812F829586958770880F880F912F7E
+:103250009F70C92ED12CE12CF12C082E04C0CC0C6F
+:10326000DD1CEE1CFF1C0A94D2F714FF12C04FE0C5
+:1032700050E060E070E004C0440F551F661F771FE8
+:103280008A95D2F7CB01BA0160957095809590959B
+:1032900003C060E070E0CB012B2D269526952370AE
+:1032A000422F50E042305105D9F04330510569F1C9
+:1032B0006C297D298E299F294130510551F126968F
+:1032C0000FB6F894DEBF0FBECDBFDF91CF911F9137
+:1032D0000F91FF90EF90DF90CF90BF900C94771FED
+:1032E0006C297D298E299F2926960FB6F894DEBF7A
+:1032F0000FBECDBFDF91CF911F910F91FF90EF9047
+:10330000DF90CF90BF900C94931F0E94771FC7014E
+:10331000B60126960FB6F894DEBF0FBECDBFDF9183
+:10332000CF911F910F91FF90EF90DF90CF90BF90C2
+:103330000C945B1F103FD1F118F4103E50F4A1C063
+:10334000123F09F463C008F44CC0133F09F473C082
+:1033500098C01F708B2D8F710023A1F00E94F41E66
+:10336000812F26960FB6F894DEBF0FBECDBFDF913A
+:10337000CF911F910F91FF90EF90DF90CF90BF9072
+:103380000C9484170E94151F812F26960FB6F8946F
+:10339000DEBF0FBECDBFDF91CF911F910F91FF9088
+:1033A000EF90DF90CF90BF900C948B170023A9F083
+:1033B0002111BFC08B2D8F7126960FB6F894DEBFFA
+:1033C0000FBECDBFDF91CF911F910F91FF90EF9076
+:1033D000DF90CF90BF900C943A1F223008F0A9C024
+:1033E000E9CF0023A9F08B2D8F7126960FB6F894A4
+:1033F000DEBF0FBECDBFDF91CF911F910F91FF9028
+:10340000EF90DF90CF90BF900C94F41E002359F3FF
+:103410008B2D8F7126960FB6F894DEBF0FBECDBFF1
+:10342000DF91CF911F910F91FF90EF90DF90CF90A0
+:10343000BF900C94151F002399F08B2D8F71269649
+:103440000FB6F894DEBF0FBECDBFDF91CF911F91B5
+:103450000F91FF90EF90DF90CF90BF900C94DF1E04
+:1034600026960FB6F894DEBF0FBECDBFDF91CF9189
+:103470001F910F91FF90EF90DF90CF90BF900C9431
+:10348000D51E0023A9F0222309F4ADCF812F269663
+:103490000FB6F894DEBF0FBECDBFDF91CF911F9165
+:1034A0000F91FF90EF90DF90CF90BF900C946D162E
+:1034B000222309F4ADCF812F26960FB6F894DEBFF4
+:1034C0000FBECDBFDF91CF911F910F91FF90EF9075
+:1034D000DF90CF90BF900C9435174B2D4F70612F1C
+:1034E000C7010E94F40726960FB6F894DEBF0FBE00
+:1034F000CDBFDF91CF911F910F91FF90EF90DF90A3
+:10350000CF90BF900C94F91D4B2D4F70612FC701C8
+:1035100026960FB6F894DEBF0FBECDBFDF91CF91D8
+:103520001F910F91FF90EF90DF90CF90BF900C9480
+:10353000B70B26960FB6F894DEBF0FBECDBFDF9156
+:10354000CF911F910F91FF90EF90DF90CF90BF90A0
+:1035500008950E94B6200E948B200E94D0200E94D5
+:1035600096260E94632580E090E00E943F1580E04F
+:1035700090E00C9455150E94A6200C94A91A0E9464
+:10358000B01F292F22952F7030E02C3031054CF4DC
+:103590002A3031056CF4225031092230310588F48B
+:1035A00007C02C30310549F02F30310531F009C00A
+:1035B000803E48F0803F29F406C093FB882780F9BD
+:1035C000089580E0089581E00895CF93DF9300D0BF
+:1035D00000D01F92CDB7DEB70F900F900F900F90D5
+:1035E0000F90DF91CF910895CF93DF9300D000D05B
+:1035F00000D0CDB7DEB726960FB6F894DEBF0FBE6B
+:10360000CDBFDF91CF9108951F93CF93DF93C091EA
+:10361000840116E080918501C81799F0D0E01C9FC5
+:10362000F0011D9FF00D1124EA57FE4F408151819A
+:1036300062817381848195810E94F41A2196C770FA
+:10364000E9CFDF91CF911F9108954091B60150913C
+:10365000B7016091B8017091B9018091BA01909160
+:10366000BB010C94F41A8091BB0182958F7009F014
+:1036700054C08091B801882309F44FC0809184011F
+:10368000A09185016091B6017091B7014091B90197
+:103690005091BA01B6E08A1709F43FC090E0411595
+:1036A0005105C1F17F3F11F46F3FA1F1B89FF001C7
+:1036B000B99FF00D1124EA57FE4F218172132AC0E1
+:1036C0002081621327C02281211124C023813481EB
+:1036D0002417350710F421503109241B350B283CE1
+:1036E0003105C0F42091BB012F7020612093BB01F4
+:1036F00026E0289FF001299FF00D1124E557FE4F89
+:1037000080818F708061808386EB91E00E949217A8
+:103710000C94041B01968770BECF0895CF92DF9260
+:10372000EF92FF920F931F93CF93DF93CDB7DEB746
+:1037300062970FB6F894DEBF0FBECDBF8C0185E057
+:10374000F801DE011D9601900D928A95E1F7D801EE
+:103750004C9111965C91119712966C911297139659
+:10376000CD90DC9014973091B6017091B7018091A3
+:10377000B9019091BA01009709F46BC17F3F19F428
+:103780003F3F09F466C1E090B801EE2009F4C0C0E3
+:103790002091BB01C816D90628F0F601E81BF90BE9
+:1037A000CF0104C0809590958C0D9D1DFF24F3944E
+:1037B000883C910578F0F12C207F09F0C6C07C2D63
+:1037C000D98AC88A89890E94E51A86EB91E00E940D
+:1037D0009217B1C0822F807F09F046C0751314C0C4
+:1037E000341312C0611110C02F7020612093BB01EF
+:1037F0000E94251B86EB91E00E9492178091BB01ED
+:10380000D80115968C932EC0CD2819F15F3F11F485
+:103810004F3FF9F0F62E61111CC080918401209178
+:10382000850136E0821709F45AC090E0389FF00114
+:10383000399FF00D1124EA57FE4F7181571306C0CE
+:103840007081471303C07281711103C001968770A4
+:10385000E9CFF62E662309F418C18091BB0181607F
+:103860008093BB01F12C11C1751308C0341306C03D
+:10387000611104C08091BB01D801C3C04D875E8730
+:103880008D859E856A8B0E94BF1A6A898823E1F123
+:103890006623D1F12091BB01822F82958F7090E039
+:1038A000029774F08091B6019091B70198878F8349
+:1038B0001986DB86CA862C87CE0107960E9492174E
+:1038C00086E0F801A6EBB1E001900D928A95E1F750
+:1038D0000E94331B0E94251BFF24F394D6C04D8702
+:1038E0005E878D859E850E94B01F292F22952F709F
+:1038F00030E0223031050CF0BCC09F7009F0B6C03A
+:10390000805E883008F4C1C0C8010E949217E4CFDD
+:10391000C816D90608F453C0F601E81BF90BCF010D
+:10392000883C910508F450C0F12C7C2DD98AC88AB6
+:1039300089890E94E51AE6EBF1E086E0DF011D923D
+:103940008A95E9F70E94251BA0C0751314C0341393
+:1039500012C0611110C08091BB01F8018583C801BC
+:103960000E94921786E0E6EBF1E0DF011D928A9556
+:10397000E9F7FE2C8AC04D875E878D859E856A8B10
+:103980000E94BF1A6A89882309F4BECF662309F40E
+:10399000BBCF2091BB01822F82958F7090E0029760
+:1039A0000CF48ECF8091B6019091B7019A838983F0
+:1039B0001B82DD82CC822E83CE0101967FCF809543
+:1039C00090958C0D9D1DACCFF62E662309F49CCFEF
+:1039D00075132EC034132CC02091BB0120FD1FC0D5
+:1039E000822F82958F70D9F0D80115962C93159758
+:1039F0008F3049F08F5F982F9295907F822F8F7034
+:103A0000892B15968C93C8010E94921786E0F801C5
+:103A1000A6EBB1E001900D928A95E1F793CF86E095
+:103A2000F801A6EBB1E001900D928A95E1F72DC067
+:103A30004D875E878D859E850E94BF1A811140CF7C
+:103A40008091BB0181608093BB01C8010E949217E5
+:103A50001CC0662309F458CF4D875E878D859E85EF
+:103A60000E94BF1A882309F44FCF2ACF811148CF73
+:103A70000CC0243031050CF047CF9F7009F440CFC3
+:103A8000F8019581907F09F03BCF8F2D62960FB69C
+:103A9000F894DEBF0FBECDBFDF91CF911F910F9184
+:103AA000FF90EF90DF90CF9008951F93CF93DF9317
+:103AB000CDB7DEB72C970FB6F894DEBF0FBECDBFE3
+:103AC0004F83588769877A878B879C87CE010796B3
+:103AD0000E948E1B882369F08F8198852A853B85FB
+:103AE000232BF1F19F3F09F063C08F3F09F060C0C5
+:103AF00037C086E0FE013796DE01119601900D92E7
+:103B00008A95E1F76F817885EA85FB85309741F1E9
+:103B10007F3F11F46F3F21F12091850130E0C90111
+:103B20000196877099274091840150E0841795078A
+:103B300009F447C069837A83FD83EC8396E0929F02
+:103B4000D001939FB00D1124AA57BE4FFE013196AC
+:103B500001900D929A95E1F7809385010E94041BD4
+:103B600016E080918401909185018917C1F1189F19
+:103B7000C00111248A579E4F0E948E1B882379F121
+:103B8000E09184011E9FF0011124EA57FE4F40810D
+:103B9000518162817381848195810E94F41A8091A0
+:103BA000840190E001968770992780938401D9CF92
+:103BB0004F81588569857A858B859C850E94F41A8A
+:103BC000CFCF0E94BB1A1092850110928401E6EBC0
+:103BD000F1E086E0DF011D928A95E9F7C1CF2C96CE
+:103BE0000FB6F894DEBF0FBECDBFDF91CF911F910E
+:103BF0000895EF92FF920F931F93CF93DF938C0161
+:103C0000892B09F46CC0F12CEE24E394E801219691
+:103C1000F8018491843740F4843008F051C0813039
+:103C200081F0823019F15BC0853709F444C0A8F1F6
+:103C30009CE7980F903708F052C08F770E94351795
+:103C400041C00E5F1F4FFE01C49180E28C0F88308F
+:103C500048F4C7708E2D01C0880FCA95EAF70E94FC
+:103C6000A92014C08C2F0E946D162DC00E5F1F4F0F
+:103C7000FE01C49180E28C0F883058F4C7708E2DFD
+:103C800001C0880FCA95EAF70E94AF200E94D02099
+:103C90001AC08C2F0E94351716C00E5F1F4FFE01F1
+:103CA000C491CC2381F08FE99FE00197F1F700C028
+:103CB0000000C150F6CF0E5F1F4FFE01F49003C00D
+:103CC0000E946D168E018F2D882309F49FCFEFE996
+:103CD000FFE03197F1F700C000008150F5CFDF9190
+:103CE000CF911F910F91FF90EF90089508956093E9
+:103CF000C0017093C1018093C2019093C3010C94E1
+:103D0000A91A0F931F930091C0011091C101209136
+:103D1000C2013091C301DC01CB01802B912BA22B7E
+:103D2000B32B8093C0019093C101A093C201B093C3
+:103D3000C3011F910F910C94A91A0F931F93009127
+:103D4000C0011091C1012091C2013091C301DC0179
+:103D5000CB0180239123A223B3238093C0019093AE
+:103D6000C101A093C201B093C3011F910F910C94A4
+:103D7000A91A0F931F930091C0011091C1012091C6
+:103D8000C2013091C301DC01CB0180279127A2271A
+:103D9000B3278093C0019093C101A093C201B09357
+:103DA000C3011F910F910C94A91A1092BC0110929B
+:103DB000BD011092BE011092BF010C94A91A41E0FE
+:103DC00050E060E070E004C0440F551F661F771F8D
+:103DD0008A95D2F74093BC015093BD016093BE0118
+:103DE0007093BF010C94A91A41E050E060E070E0CC
+:103DF00004C0440F551F661F771F8A95D2F7809124
+:103E0000BC019091BD01A091BE01B091BF01482BB2
+:103E1000592B6A2B7B2B4093BC015093BD016093BF
+:103E2000BE017093BF010C94A91A41E050E060E01C
+:103E300070E004C0440F551F661F771F8A95D2F7A4
+:103E400040955095609570958091BC019091BD0111
+:103E5000A091BE01B091BF01482359236A237B235F
+:103E60004093BC015093BD016093BE017093BF01AC
+:103E70000C94A91A41E050E060E070E004C0440FE7
+:103E8000551F661F771F8A95D2F78091BC019091CC
+:103E9000BD01A091BE01B091BF01482759276A27F3
+:103EA0007B274093BC015093BD016093BE0170938A
+:103EB000BF010C94A91A0F931F930091BC0110919C
+:103EC000BD012091BE013091BF01DC01CB01802BEF
+:103ED000912BA22BB32B8093BC019093BD01A09397
+:103EE000BE01B093BF011F910F910C94A91A0F93BB
+:103EF0001F930091BC011091BD012091BE01309132
+:103F0000BF01DC01CB0180239123A223B323809343
+:103F1000BC019093BD01A093BE01B093BF011F915E
+:103F20000F910C94A91A0F931F930091BC0110914B
+:103F3000BD012091BE013091BF01DC01CB01802782
+:103F40009127A227B3278093BC019093BD01A09332
+:103F5000BE01B093BF011F910F910C94A91A08954F
+:103F6000CF92DF92EF92FF920F931F93CF93DF9345
+:103F70008C01C090C001D090C101E090C201F090CE
+:103F8000C3014091BC015091BD016091BE0170918F
+:103F9000BF01C42AD52AE62AF72ACFE1D0E0D7010B
+:103FA000C6010C2E04C0B695A795979587950A94DF
+:103FB000D2F780FF07C0B8018C2F0E94DA0B813046
+:103FC000910531F4219758F7B80180E00E94DA0B8F
+:103FD000DF91CF911F910F91FF90EF90DF90CF90E5
+:103FE000089590910C01992321F090910D01911168
+:103FF00009C020910E0130910F01F90132969FEF17
+:1040000040E030C0982F9695969596959F30A0F4F5
+:10401000E0910E01F0910F01E90FF11D877021E091
+:1040200030E0A90102C0440F551F8A95E2F7CA018A
+:104030009181892B818308959091D70190FF23C0AE
+:104040001F928F9387ED95E09F938F930E94EB07CC
+:104050000F900F900F900F9008959F3F39F04F5F92
+:104060004E3041F051915813F8CF0DC05111F7CF98
+:10407000942FF5CF9F3F39F0F901E90FF11D97FD1E
+:10408000FA9582830895089590910C01992321F067
+:1040900090910D01911109C020910E0130910F01F5
+:1040A000F9013296205F3F4F30C0982F9695969534
+:1040B00096959F30A8F4E0910E01F0910F01E90F61
+:1040C000F11D877021E030E0A90102C0440F551FA7
+:1040D0008A95E2F7CA0180959181892381830895A9
+:1040E0009091D70190FF16C01F928F9389EB95E0B6
+:1040F0009F938F930E94EB070F900F900F900F905C
+:1041000008953196E217F30729F090819813F9CFBB
+:104110001082F7CF089581E090E0E0910E01F091D8
+:104120000F01E80FF91F1082019680319105A9F760
+:1041300008959091D601892B8093D601089580959A
+:104140009091D60189238093D60108951092D601CB
+:1041500008959091D501892B8093D501089580957C
+:104160009091D50189238093D50108951092D501AE
+:1041700008958093C40108951092C4010895809118
+:104180000E0190910F01FC0131969C01205F3F4F81
+:1041900080E0919191118F5FE217F307D1F70895B5
+:1041A000E0910E01F0910F018091D6018083E091A2
+:1041B0000E01F0910F0190818091D501892B8083B0
+:1041C0008091C401882361F0E0910E01F0910F010C
+:1041D0009081892B80830E94BF2081111092C4019D
+:1041E00080910E0190910F010C94EB1490933B0180
+:1041F00080933A010895CF92DF92EF92FF926C0183
+:10420000EE24FF24C114D104E104F10421F0C7011C
+:10421000B60120E101C020E0C72ED82EE92EFF24F0
+:10422000C114D104E104F10419F0285FC701B601FB
+:104230006B017C0154E0F694E794D794C7945A95A7
+:10424000D1F7C114D104E104F10419F02C5FC701C6
+:10425000B6016B017C0142E0F694E794D794C794D1
+:104260004A95D1F7C114D104E104F10419F02E5F8D
+:10427000C701B601DC01CB01B695A7959795879547
+:10428000892B8A2B8B2B09F02F5F822FFF90EF90C9
+:10429000DF90CF9008958295982F9C7C392F36958A
+:1042A0003695282F237344E0249FC0011124932FB7
+:1042B000982B292F2A7A2695892F8575880F822B8E
+:1042C00008951F93CF93DF931F92CDB7DEB79983E5
+:1042D0000E944B21182F9981892F0E944B21212F59
+:1042E00030E0322F2227A901482BCA010F90DF911D
+:1042F000CF911F9108958091F001843009F11092BF
+:10430000D80120E488E190E00FB6F894A895809356
+:1043100060000FBE2093600083B7817F846083BFFD
+:1043200083B7816083BF7894889583B78E7F83BF7E
+:1043300088E10FB6F89480936000109260000FBE81
+:10434000089508950895CF930E94A1210E947F09A6
+:104350000E94A221C0E08C2F0E94AB0A811104C0F0
+:10436000CF5FCE30C1F701C081E0CF9108950C94AA
+:10437000BB1A82E084BD93E095BD9AEF97BD809310
+:104380006E0008952FB7F8948091D9019091DA01C9
+:10439000A091DB01B091DC012FBF0895CF92DF9295
+:1043A000EF92FF920F931F932FB7F8944091D9018A
+:1043B0005091DA016091DB017091DC012FBF6A013D
+:1043C0007B01EE24FF248C0120E030E0C016D106F2
+:1043D000E206F30610F4415051099A01281B390BEB
+:1043E000C9011F910F91FF90EF90DF90CF9008953A
+:1043F0001F920F920FB60F9211248F939F93AF933A
+:10440000BF938091D9019091DA01A091DB01B09125
+:10441000DC010196A11DB11D8093D9019093DA01B1
+:10442000A093DB01B093DC01BF91AF919F918F917D
+:104430000F900FBE0F901F9018950E94DD11F894F9
+:104440002FEF87EA91E6215080409040E1F700C0CD
+:10445000000087E090EBDC018093F9019093FA0172
+:10446000A093FB01B093FC019CE088E10FB6F894A7
+:10447000A895809360000FBE90936000FFCFEF92ED
+:10448000FF920F931F93CF93DF93D82FC0E08C2F11
+:104490000E94AB0A00E010E0E82EF12CC701002ECC
+:1044A00002C0959587950A94E2F780FD06C00F5FDC
+:1044B0001F4F0630110591F709C0602F7C2F80E057
+:1044C0000E94B80BD813F3CF81E004C0CF5FCE3089
+:1044D000F1F680E0DF91CF911F910F91FF90EF9067
+:1044E0000895CF93C82F8CE20E943F22882321F0A9
+:1044F0008C2FCF910C943F2280E0CF910895CF93E1
+:104500000E94CE23811102C00E94B4238CEF95E05B
+:104510000E945207C5E6C15049F00E947F098FE30F
+:104520009CE90197F1F700C00000F5CF85EF95E019
+:104530000E94520789E20E947122811113C18AE20E
+:104540000E94712281110E94B42385E00E94712291
+:1045500081110E941D220E94D9238093D70187E0F8
+:104560000E9471228823A9F18BE10E947122882385
+:1045700051F08091D70181FB222720F991E0922709
+:1045800090FB81F90EC08EE00E947122882361F0B9
+:104590008091D70182FB222720F991E0922790FB9E
+:1045A00082F98093D70115C080E10E947122909119
+:1045B000D701882341F093FB222720F981E082274D
+:1045C00080FB93F904C0892F809580FB90F990932C
+:1045D000D7018091D7010E94DD230E94EB238093B5
+:1045E000EA0180EE0E947122882341F08091EA0165
+:1045F000982F909590FB80F98093EA0189E30E94BF
+:104600007122882359F08091EA0181FB222720F949
+:1046100091E0922790FB81F98093EA0182EE0E945B
+:104620007122882359F08091EA0182FB222720F928
+:1046300091E0922790FB82F98093EA0186EE0E9436
+:104640007122882359F08091EA0183FB222720F907
+:1046500091E0922790FB83F98093EA0183EE0E9418
+:104660007122882359F08091EA0184FB222720F9E6
+:1046700091E0922790FB84F98093EA0185E30E9400
+:104680007122882359F08091EA0185FB222720F9C5
+:1046900091E0922790FB85F98093EA0181E30E94E3
+:1046A0007122882359F08091EA0186FB222720F9A4
+:1046B00091E0922790FB86F98093EA0181E10E94C4
+:1046C0007122882359F08091EA0187FB222720F983
+:1046D00091E0922790FB87F98093EA018091EA01AB
+:1046E0000E94EF238091EA0187FB882780F980935D
+:1046F0000D0187E20E947122C82F8EE10E94712273
+:104700008111C2608FE10E9471228111C46080E238
+:104710000E9471228111C86081E20E947122811180
+:10472000C06182E20E9471228111C06283E20E9414
+:1047300071228111C06484E20E947122882311F0E9
+:10474000C06802C0CC2329F08C2F0E94E6236C2F76
+:1047500003C00E94E223682F70E080E090E0CF91D8
+:104760000C94771ECF9108956DEE7EEF80E090E07F
+:104770000E94B72D60E082E090E00E94A92D60E0E9
+:1047800083E090E00E94A92D60E084E090E00E9428
+:10479000A92D60E085E090E00C94A92D80E090E0E8
+:1047A0000E94A32D21E08D3E9E4F09F020E0822F34
+:1047B000089582E090E00C949B2D682F82E090E0B9
+:1047C0000C94A92D83E090E00C949B2D682F83E03E
+:1047D00090E00C94A92D84E090E00C949B2D682F20
+:1047E00084E090E00C94A92D8091DF0180FF0BC044
+:1047F0006091130185E0689FB0011124759567955C
+:10480000759567952BC081FF09C06091130185E004
+:10481000689FB00111247595679520C082FF07C07D
+:104820006091130185E0689FB001112417C0909139
+:10483000E0019923D1F060911201961788F7209139
+:10484000130185E0289F90011124929FA001939F5E
+:10485000500D112470E0CA010E946D2D6038710561
+:1048600040F46115710539F002C065E070E0862FF3
+:1048700008958FE7089581E008958091DF0180FF1A
+:1048800008C06091110170E0759567957595679501
+:1048900021C081FF06C06091110170E07595679598
+:1048A00019C082FF04C06091110170E010C09091A6
+:1048B000E0019923C1F0609110019617A0F7809153
+:1048C0001101899FC001112470E00E946D2D603894
+:1048D000710528F46115710521F0862F08958FE781
+:1048E000089581E0089561E070E0F4CF803F21F405
+:1048F0000E94F423819504C0813F29F40E94F4238F
+:104900008093E3010895823F21F40E94F42381956E
+:1049100004C0833F29F40E94F4238093E2010895A8
+:10492000893F19F40E943D2405C08A3F31F40E945A
+:104930003D2481958093E40108958B3F21F40E94EA
+:104940003D24819504C08C3F29F40E943D2480932E
+:10495000E5010895843F21F48091E101816017C051
+:10496000853F21F48091E101826011C0863F21F4EE
+:104970008091E10184600BC0873F21F48091E101C7
+:10498000886005C0883F31F48091E10180618093A7
+:10499000E10108958D3F21F48091DF0181600BC01A
+:1049A0008E3F21F48091DF01826005C08F3F29F4A2
+:1049B0008091DF0184608093DF010895803F39F4A6
+:1049C0008091E30187FF6CC01092E30169C0813FD1
+:1049D00029F48091E3011816BCF362C09091E201C2
+:1049E000823F29F497FF5CC01092E20159C0833FD7
+:1049F00019F41916CCF354C0893F41F48091E401B5
+:104A000018160CF04DC01092E4014AC08A3F29F4F8
+:104A10008091E40187FF44C0F6CF8B3F39F4809149
+:104A2000E50187FF3DC01092E5013AC08C3F29F4B3
+:104A30008091E5011816BCF333C0843F21F48091C6
+:104A4000E1018E7F17C0853F21F48091E1018D7FC8
+:104A500011C0863F21F48091E1018B7F0BC0873F1D
+:104A600021F48091E101877F05C0883F31F4809176
+:104A7000E1018F7E8093E10113C08D3F21F480918D
+:104A8000DF018E7F0BC08E3F21F48091DF018D7F8F
+:104A900005C08F3F29F48091DF018B7F8093DF0178
+:104AA0008091E20181110EC08091E30181110AC061
+:104AB0008091E401811106C08091E501811102C05D
+:104AC0001092E00108958091D70183FF7EC088E3B2
+:104AD00096E00E9452078091E1011F928F9383E339
+:104AE00096E09F938F930E94EB0781E396E00E94EC
+:104AF00052078091E201282F332727FD30953F93FD
+:104B00008F938EE296E09F938F930E94EB078CE247
+:104B100096E00E9452078091E301282F332727FD5A
+:104B200030953F938F9389E296E09F938F930E94F5
+:104B3000EB0787E296E00E9452078091E401282F5C
+:104B4000332727FD30953F938F9384E296E09F9320
+:104B50008F930E94EB0782E296E00E9452078091B9
+:104B6000E501282F332727FD30953F938F938FE161
+:104B700096E09F938F930E94EB078CE196E00E9452
+:104B800052078091E0011F928F9389E196E09F93F5
+:104B90008F930E94EB0787E196E00E945207809175
+:104BA000DF011F928F9384E196E09F938F930E9481
+:104BB000EB0781E196E00E9452078DB79EB74C96B5
+:104BC0000FB6F8949EBF0FBE8DBF81EE91E00E949C
+:104BD00034150E94C2219093DE018093DD01089577
+:104BE0001F93CF93DF938091DD019091DE010E94AE
+:104BF000CE21AC019091E001992321F02091140184
+:104C000030E006C0209115018AE0289F9001112410
+:104C10004217530708F486C08091E201C091E30176
+:104C2000D091E4011091E501811107C0C11176C056
+:104C3000D11174C0111172C075C09F3F19F09F5FF0
+:104C40009093E001181624F40E94F4238093E2016B
+:104C50008091E20187FF05C00E94F4238195809333
+:104C6000E2011C1624F40E94F4238093E301809156
+:104C7000E30187FF05C00E94F42381958093E3013F
+:104C80006091E201662339F1C091E301CC2319F16F
+:104C9000772767FD7095872F972F0E94722C23E34B
+:104CA00033E343E35FE30E94D62C0E943F2C6093E2
+:104CB000E2016C2F772767FD7095872F972F0E9451
+:104CC000722C23E333E343E35FE30E94D62C0E947C
+:104CD0003F2C6093E3011D1624F40E943D24809331
+:104CE000E4018091E40187FF05C00E943D24819585
+:104CF0008093E401111624F40E943D248093E50181
+:104D00008091E50187FF05C00E943D248195809335
+:104D1000E501DF91CF911F910C9463259F3F09F02E
+:104D20008ECF96CFDF91CF911F910895E1EEF1E004
+:104D300085E0DF011D928A95E9F71092E00110925B
+:104D4000DF0108958BE598E00E9452071F9281E0F1
+:104D50008F931F9285E08F938DE098E09F938F93C0
+:104D60000E94EB070F900F900F900F900F900F90F5
+:104D700008958330E9F128F4813061F0823009F13F
+:104D80000895853009F462C008F449C0863009F4FA
+:104D900074C0089580911501262F30E0280F311D31
+:104DA0002F3F310524F4680F6093150103C08FEF86
+:104DB00080931501809115011F928F9386E497E0EF
+:104DC00072C080911401262F30E0280F311D2F3F33
+:104DD000310524F4680F6093140103C08FEF8093B2
+:104DE0001401809114011F928F9384E397E05BC0BC
+:104DF00080911301262F30E0280F311D2F3F310500
+:104E000024F4680F6093130103C08FEF80931301A4
+:104E1000809113011F928F9381E297E044C08091AB
+:104E20001201262F30E0280F311D2F3F310524F4C9
+:104E3000680F6093120103C08FEF8093120180917D
+:104E400012011F928F938CE097E02DC08091110189
+:104E5000262F30E0280F311D2F3F310524F4680F35
+:104E60006093110103C08FEF8093110180911101B4
+:104E70001F928F9383EF96E016C080911001262F2A
+:104E800030E0280F311D2F3F310524F4680F609367
+:104E9000100103C08FEF80931001809110011F92C9
+:104EA0008F9388ED96E09F938F930E94EB070F906E
+:104EB0000F900F900F900895833081F128F4813086
+:104EC00059F08230D1F00895853009F449C0B8F125
+:104ED000863009F456C0089580911501681720F4B2
+:104EE000861B8093150102C0109215018091150157
+:104EF0001F928F9389EC96E054C08091140168173B
+:104F000020F4861B8093140102C01092140180913A
+:104F100014011F928F9387EB96E043C08091130199
+:104F2000681720F4861B8093130102C010921301AE
+:104F3000809113011F928F9384EA96E032C0809192
+:104F40001201681720F4861B8093120102C0109290
+:104F50001201809112011F928F938FE896E021C079
+:104F600080911101681720F4861B8093110102C003
+:104F700010921101809111011F928F9386E796E0A4
+:104F800010C080911001681720F4861B80931001D7
+:104F900002C010921001809110011F928F938BE537
+:104FA00096E09F938F930E94EB070F900F900F90C6
+:104FB0000F900895CF93C82F1F928F9380E699E0AA
+:104FC0009F938F930E94EB0781E090E0A0E0B0E018
+:104FD000BC01CD0104C0660F771F881F991FCA95B9
+:104FE000D2F70E94771E0F900F900F900F90CF91E5
+:104FF0000C94BB1ACF938D3109F465C0B0F58E3097
+:1050000009F4CCC100F5873009F49BC1A8F48630BF
+:1050100009F06DC28091D701817F8E7F8093D70187
+:1050200085E699E00E94520781EA9DE00E945207BE
+:1050300081E08093E70180C1883009F44FC08B3054
+:1050400009F47CC154C2863109F4F0C138F48031CE
+:1050500009F4B8C1813109F430C249C2893109F477
+:10506000CEC18B3109F486C142C2853309F437C2FF
+:1050700048F4873209F433C208F433C2893209F4A0
+:105080002EC235C2833438F48A3308F02CC28833F8
+:1050900009F454C12CC2833409F421C2883409F0C4
+:1050A00026C20E94BB1A80E99DE00E9452079FEF32
+:1050B00023ED80E3915020408040E1F700C00000E4
+:1050C0000E941D2239C180EB9DE00E9452070E9480
+:1050D000F92B0E94DF140E94110D2EC185EA9DE07C
+:1050E0000E94520786E79BE00E9452070E94E2233B
+:1050F0001F928F9383E79BE09F938F930E94EB0710
+:1051000081E79BE00E9452070E94D923C82F8EE5B9
+:105110009BE00E9452071F92CF9389E59BE09F93EB
+:105120008F930E94EB0787E59BE00E9452078DE476
+:105130009BE00E9452078C2F81701F928F938AE40C
+:105140009BE09F938F930E94EB0788E49BE00E9473
+:1051500052078EE39BE00E945207C1FB882780F92B
+:105160001F928F938BE39BE09F938F930E94EB079B
+:1051700089E39BE00E9452078DE29BE00E94520768
+:10518000C2FB882780F91F928F938AE29BE09F934E
+:105190008F930E94EB0788E29BE00E9452078FE109
+:1051A0009BE00E945207C3FBCC27C0F91F92CF930C
+:1051B0008CE19BE09F938F930E94EB078AE19BE039
+:1051C0000E9452070E94EB23C82F86E09BE00E94BA
+:1051D00052071F92CF9381E09BE09F938F930E9491
+:1051E000EB078FEF9AE00E94520786EE9AE00E944A
+:1051F00052078C2F81701F928F9383EE9AE09F93BA
+:105200008F930E94EB078DB79EB780960FB6F894E8
+:105210009EBF0FBE8DBF81EE9AE00E9452078AECBE
+:105220009AE00E945207C1FB882780F91F928F9352
+:1052300087EC9AE09F938F930E94EB0785EC9AE0AE
+:105240000E94520783EB9AE00E945207C2FB882714
+:1052500080F91F928F9380EB9AE09F938F930E9427
+:10526000EB078EEA9AE00E9452078CE99AE00E94CE
+:105270005207C3FB882780F91F928F9389E99AE030
+:105280009F938F930E94EB0787E99AE00E94520751
+:105290008DE89AE00E945207C4FB882780F91F928C
+:1052A0008F938AE89AE09F938F930E94EB0788E898
+:1052B0009AE00E94520786E79AE00E945207C5FBD7
+:1052C000882780F91F928F9383E79AE09F938F93AB
+:1052D0000E94EB0781E79AE00E94520785E59AE079
+:1052E0000E945207C6FB882780F91F928F9382E5A0
+:1052F0009AE09F938F930E94EB0780E59AE00E94CB
+:10530000520788E49AE00E945207C7FBCC27C0F9F5
+:105310001F92CF9385E49AE09F938F930E94EB07AF
+:1053200083E49AE00E9452078DB79EB74C960FB661
+:10533000F8949EBF0FBE8DBFC1E0DEC08CE899E03F
+:105340005BC08091D701C82FC17080FF09C083E87E
+:105350009DE00E9452078091D701817F8E7F47C0D8
+:1053600087E79DE00E9452078091D701816080937A
+:10537000D701E2CF9091D70191FBCC27C0F981E012
+:10538000C827892FC0FB81F98093D701CC2319F05E
+:105390008AE69DE027C08CE59DE02EC09091D70164
+:1053A00092FBCC27C0F981E0C827892FC0FB82F986
+:1053B0008093D701CC2319F08DE49DE013C08DE3D9
+:1053C0009DE01AC09091D70193FBCC27C0F981E0F2
+:1053D000C827892FC0FB83F98093D701CC2351F0D4
+:1053E00081E39DE00E9452078091D7018160809304
+:1053F000D70182C084E29DE00E9452079DCF85E1E3
+:105400009DE00E94520789EE9CE00E9452078CEAC0
+:105410009CE00E94520785E89CE00E94520781E4CC
+:105420009CE00E94520786E19CE0E6CF88E09CE089
+:105430000E9452070E94DF141F928F938EEE9BE012
+:105440009F938F930E94EB0780910C011F928F9383
+:1054500087ED9BE09F938F930E94EB0780916E01F5
+:105460001F928F9384EC9BE09F938F930E94EB0796
+:1054700080910D011F928F9381EB9BE09F938F93FF
+:105480000E94EB078091D9019091DA01A091DB0194
+:10549000B091DC01BF93AF939F938F938DE99BE015
+:1054A0009F938F930E94EB078DB79EB746960FB6DA
+:1054B000F8949EBF0FBE8DBF3FCF0E94BB1AC09114
+:1054C0000D0181E0C827C0930D01CC2329F083E9A9
+:1054D0009BE00E94520710C088E89BE08DCF80E0DF
+:1054E00003C08D5101C089530E94DA2725CF86E879
+:1054F0009BE00E945207C0E08C2FCF91089580E07E
+:10550000089580E00895CF93C82F8091E7018130FE
+:1055100081F020F0823009F44FC045C1E0910E01C6
+:10552000F0910F018081813169F0823209F03DC133
+:1055300009C0E0910E01F0910F018081813111F0DD
+:10554000823261F48C2F0E947F2A811104C08C2F3B
+:105550000E94FA272FC081E090E02CC08C2F0E947F
+:10556000812A811126C0C431E1F070F4CB3081F082
+:10557000C031D1F40E94A22688E599E00E9452072A
+:1055800082E08093E70115C0C93259F0C83361F455
+:1055900085E699E00E9452078CE599E00E94520747
+:1055A00008C01092E70103C186E599E00E94520706
+:1055B000FEC081E08170FDC0C43220F5CE3108F01C
+:1055C000C0C0CB3099F1C8F4C73009F0D2C08AE02E
+:1055D0008093150194E19093140193E0909313014B
+:1055E0008093120188E08093110188E2809310017A
+:1055F0008CEF97E00E945207BFC0C33149F1C4311C
+:10560000C1F0B7C0CB3409F4A9C028F4C93289F07D
+:10561000C83361F0AEC0C13509F49EC0C23509F48B
+:1056200099C0CE3409F0A5C06AE09EC00E94A226AF
+:10563000A3C08091E601882319F01092E6019CC076
+:1056400089E098E00E94520781E08093E701B1C0B1
+:1056500083EE97E00E94520781ED97E00E94520787
+:10566000809115011F928F938EEC97E09F938F93FB
+:105670000E94EB078CEC97E00E9452078AEB97E0C0
+:105680000E945207809114011F928F9387EB97E03D
+:105690009F938F930E94EB0785EB97E00E94520740
+:1056A00086EA97E00E945207809113011F928F9320
+:1056B00083EA97E09F938F930E94EB0781EA97E03C
+:1056C0000E94520780E997E00E94520780911201E0
+:1056D0001F928F938DE897E09F938F930E94EB0723
+:1056E0008BE897E00E94520786E797E00E945207F6
+:1056F000809111011F928F9383E797E09F938F937F
+:105700000E94EB0781E797E00E9452078AE597E045
+:105710000E945207809110011F928F9387E597E0B6
+:105720009F938F930E94EB0785E597E00E945207B5
+:105730008DB79EB748960FB6F8949EBF0FBE8DBF2B
+:105740001BC0CE51EC2FF0E0E15DFE4F80818093D5
+:10575000E60112C061E003C061E006C06AE080912A
+:10576000E6010E94B92608C08091E6010E945C27EC
+:1057700003C08AEF97E013C08091E601882369F0A7
+:105780001F928F9384EF97E09F938F930E94EB0774
+:105790000F900F900F900F9004C081EF97E00E9440
+:1057A000520781E006C01092E70180E002C080E06D
+:1057B00001CFCF910895E1E8F0E080818860808397
+:1057C0008081816080838FB7F89493E09093890003
+:1057D00090ED909388008FBF0895EFE6F0E0808110
+:1057E000826080830895EFE6F0E080818D7F808382
+:1057F0000895EFE6F0E0908182E0892780830895A4
+:105800001F920F920FB60F9211242F933F934F9335
+:105810005F936F937F938F939F93AF93BF93EF9318
+:10582000FF938091E8019091E90101969093E9013D
+:105830008093E801811103C082E00E94110DE09184
+:10584000E901E695E695F0E0E054F24FE4918091AD
+:10585000E8018E1303C080E00E94110DFF91EF91CB
+:10586000BF91AF919F918F917F916F915F914F9178
+:105870003F912F910F900FBE0F901F90189504D05D
+:105880006894B1118DC0089570D088F09F5790F042
+:10589000B92F9927B751A0F0D1F0660F771F881F55
+:1058A000991F1AF0BA95C9F712C0B13081F077D0BC
+:1058B000B1E0089574C0672F782F8827B85F39F05A
+:1058C000B93FCCF3869577956795B395D9F73EF4B4
+:1058D00090958095709561957F4F8F4F9F4F08955C
+:1058E000E89409C097FB3EF490958095709561957A
+:1058F0007F4F8F4F9F4F9923A9F0F92F96E9BB2730
+:105900009395F695879577956795B795F111F8CFAB
+:10591000FAF4BB0F11F460FF1BC06F5F7F4F8F4F16
+:105920009F4F16C0882311F096E911C0772321F00C
+:105930009EE8872F762F05C0662371F096E8862FA4
+:1059400070E060E02AF09A95660F771F881FDAF7FB
+:10595000880F9695879597F9089557FD9058440FAD
+:10596000551F59F05F3F71F04795880F97FB991FBE
+:1059700061F09F3F79F0879508951216130614067B
+:10598000551FF2CF4695F1DF08C016161706180608
+:10599000991FF1CF86957105610508940895E894E3
+:1059A000BB2766277727CB0197F908950BD078C0DE
+:1059B00069D028F06ED018F0952309F05AC05FC066
+:1059C0001124EECFCADFA0F3959FD1F3950F50E0DD
+:1059D000551F629FF001729FBB27F00DB11D639FA1
+:1059E000AA27F00DB11DAA1F649F6627B00DA11D47
+:1059F000661F829F2227B00DA11D621F739FB00DED
+:105A0000A11D621F839FA00D611D221F749F33275C
+:105A1000A00D611D231F849F600D211D822F762FF5
+:105A20006A2F11249F5750408AF0E1F088234AF0F2
+:105A3000EE0FFF1FBB1F661F771F881F915050403E
+:105A4000A9F79E3F510570F014C0AACF5F3FECF359
+:105A5000983EDCF3869577956795B795F795E7952A
+:105A60009F5FC1F7FE2B880F911D9695879597F93B
+:105A7000089597F99F6780E870E060E008959FEFD0
+:105A800080EC089500240A941616170618060906D5
+:105A9000089500240A9412161306140605060895A4
+:105AA000092E0394000C11F4882352F0BB0F40F42C
+:105AB000BF2B11F460FF04C06F5F7F4F8F4F9F4F6C
+:105AC0000895991B79E004C0991F961708F0961B5A
+:105AD000881F7A95C9F78095089597FB072E16F4CD
+:105AE000009407D077FD09D00E94872D07FC05D0D0
+:105AF0003EF4909581959F4F0895709561957F4FE5
+:105B00000895EE0FFF1F0590F491E02D0994AA1B54
+:105B1000BB1B51E107C0AA1FBB1FA617B70710F098
+:105B2000A61BB70B881F991F5A95A9F780959095CA
+:105B3000BC01CD010895F999FECF92BD81BDF89ABF
+:105B4000992780B50895A8E1B0E042E050E00C94B8
+:105B5000BE2D262FF999FECF1FBA92BD81BD20BD63
+:105B60000FB6F894FA9AF99A0FBE019608950E941A
+:105B7000A92D272F0C94AA2DDC01CB01FC01F9994A
+:105B8000FECF06C0F2BDE1BDF89A319600B40D9289
+:0C5B900041505040B8F70895F894FFCF42
+:105B9C002002120D030EE00DAC0D780D0101C501B4
+:105BAC0028080A03140A3F4D3620394605F904C368
+:105BBC0004A3046A04DD03F6030F0428044804015B
+:0A5BCC0002030405060708090000A3
+:00000001FF
diff --git a/keyboard/ergodox_ez/readme.md b/keyboard/ergodox_ez/readme.md index a41a29e1ad..c1d0bd5dcf 100644 --- a/keyboard/ergodox_ez/readme.md +++ b/keyboard/ergodox_ez/readme.md @@ -40,6 +40,6 @@ The ErgoDox EZ firmware is open-source, so it would be wonderful to have your co Let's say you want a certain key in your layout to send a colon; to figure out what keycode to use to make it do that, you're going to need `quantum/keymap_common.h`. -That file contains a big list of all of the special, fancy keys (like, being able to shend % on its own and whatnot). +That file contains a big list of all of the special, fancy keys (like, being able to send % on its own and whatnot). If you want to send a plain vanilla key, you can look up its code under `doc/keycode.txt`. That's where all the boring keys hang out. diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 485c5f77f6..307b0c7f4f 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/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. @@ -50,14 +50,30 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # # project specific files -SRC = planck.c \ - backlight.c +SRC = planck.c + +ifdef keymap + KEYMAP = $(keymap) +endif ifdef KEYMAP - SRC := keymaps/keymap_$(KEYMAP).c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") + KEYMAP_FILE = keymaps/$(KEYMAP).c +else +ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") + KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c else - SRC := keymaps/keymap_default.c $(SRC) +$(error Keymap file does not exist) endif +endif +else +ifneq ("$(wildcard keymaps/default.c)","") + KEYMAP_FILE = keymaps/default.c +else + KEYMAP_FILE = keymaps/default/keymap.c +endif +endif +SRC := $(KEYMAP_FILE) $(SRC) CONFIG_H = config.h @@ -124,8 +140,14 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # MIDI_ENABLE = YES # MIDI controls +# AUDIO_ENABLE = YES # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. + +ifdef BACKLIGHT_ENABLE + SRC += backlight.c +endif # Optimize size but this may cause error "relocation truncated to fit" @@ -137,4 +159,3 @@ VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) include $(TOP_DIR)/quantum/quantum.mk - diff --git a/keyboard/planck/PCB_GUIDE.md b/keyboard/planck/PCB_GUIDE.md index 9ff12d4852..3daf0e0092 100644 --- a/keyboard/planck/PCB_GUIDE.md +++ b/keyboard/planck/PCB_GUIDE.md @@ -3,6 +3,7 @@ ## 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. @@ -13,6 +14,7 @@ If you're using homebrew, you can use the following commands: brew tap osx-cross/avr brew install avr-libc + brew install dfu-programmer Otherwise, these instructions will work: @@ -24,6 +26,9 @@ Otherwise, these instructions will work: 1. Install AVR GCC with your favorite package manager. 2. Install [DFU-Programmer][dfu-prog]. +Note that, since it will be directly accessing USB hardware, the +`dfu-programmer` program needs to be run as root. + ## Verify Your Installation 1. Clone the following repository: https://github.com/jackhumbert/qmk_firmware 2. Open a Terminal and `cd` into `qmk_firmware/keyboard/planck` @@ -51,7 +56,7 @@ Generally, the instructions to flash the PCB are as follows: ### Keymap -Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/qmk_firmware/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/qmk_firmware/blob/master/quantum/keymap_common.h). +Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/qmk_firmware/blob/master/quantum/keymap_common.h). You can use modifiers with keycodes like this: diff --git a/keyboard/planck/README.md b/keyboard/planck/README.md index 0003e765d4..3ba0cc1527 100644 --- a/keyboard/planck/README.md +++ b/keyboard/planck/README.md @@ -3,116 +3,8 @@ Planck keyboard firmware DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). ## Quantum MK Firmware -You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. - BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - -### Mod shortcuts - -* `LSFT(kc)` - applies left shift to *kc* - `S(kc)` is an alias -* `RSFT(kc)` - applies right shift to *kc* -* `LCTL(kc)` - applies left control to *kc* -* `RCTL(kc)` - applies right control to *kc* -* `LALT(kc)` - applies left alt to *kc* -* `RALT(kc)` - applies right alt to *kc* -* `LGUI(kc)` - applies left gui (command/win) to *kc* -* `RGUI(kc)` - applies right gui (command/win) to *kc* - -You can also use more than one, like this: - - LALT(LGUI(KC_ESC)) - -The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names (see `quantum/keymap_common.h`) are also availble. - - KC_TILD ~ - KC_EXLM ! - KC_AT @ - KC_HASH # - KC_DLR $ - KC_PERC % - KC_CIRC ^ - KC_AMPR & - KC_ASTR * - KC_LPRN ( - KC_RPRN ) - KC_UNDS _ - KC_PLUS + - KC_LCBR { - KC_RCBR } - KC_PIPE | - KC_COLN : - -### Function shortcuts - -Instead of using `FNx`, you can use `F(x)` - the benefit here is being able to use more than 32 function layers (up to 4096), if you happen to need them. - -There are also keycode shortcuts for common actions: - -* `MO(layer)` - momentary switch to *layer* -* `DF(layer)` - sets default layer to *layer* -* `TG(layer)` - toggle between the current layer and *layer* -* `MT(mod, kc)` - is *mod* when held, and *kc* when tapped - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped - * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped -* `LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped - -These functions work the same way that their `ACTION_*` functions do, and will require KC_TRNS on the layer being switched to - check out the default keymap for an example. - -### Additional keycodes for software-implemented layouts (Colemak, Dvorak, etc) - -Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - - #include "keymap_<layout>.h" - -Where <layout> is "colemak" or "dvorak". After including this line, you will get access to: - - * `CM_*` for all of the Colemak-equivalent characters - * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. - -To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. - -### Additional language support - -In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbrivation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). - -### Unicode support - -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. - -### Macro shortcuts - -Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to filter them. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). - -### Other keyboard shortcut keycodes - -* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) -* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things -* `BL_ON` - turns the backlight on -* `BL_OFF` - turns the backlight off -* `BL_<n>` - sets the backlight to level *n* -* `BL_INC` - increments the backlight level by one -* `BL_DEC` - decrements the backlight level by one -* `BL_TOGG` - toggles the backlight -* `BL_STEP` - steps through the backlight levels - -Enable the backlight from the Makefile. - - -### MIDI functionalty - -This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. - -### Bluetooth functionality - -This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. +For the full Quantum feature list, see [the parent README.md](/README.md). ## Building @@ -124,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 `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: ``` $ make KEYMAP=[default|jack|<name>] ``` -Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__<name\>.c__** and are stored in the `keymaps` folder. ### 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/config.h b/keyboard/planck/config.h index a4c711db82..d3719e0cb1 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -58,6 +58,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. 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/planck/keymaps/keymap_alexey.c b/keyboard/planck/keymaps/alexey.c index 89af4112c6..89af4112c6 100644 --- a/keyboard/planck/keymaps/keymap_alexey.c +++ b/keyboard/planck/keymaps/alexey.c diff --git a/keyboard/planck/keymaps/keymap_angerthosenear.c b/keyboard/planck/keymaps/angerthosenear.c index cdf60632e4..cdf60632e4 100644 --- a/keyboard/planck/keymaps/keymap_angerthosenear.c +++ b/keyboard/planck/keymaps/angerthosenear.c diff --git a/keyboard/planck/keymaps/keymap_austin.c b/keyboard/planck/keymaps/austin.c index 49fc98a587..49fc98a587 100644 --- a/keyboard/planck/keymaps/keymap_austin.c +++ b/keyboard/planck/keymaps/austin.c diff --git a/keyboard/planck/keymaps/brandon.c b/keyboard/planck/keymaps/brandon.c new file mode 100644 index 0000000000..2b89f86db2 --- /dev/null +++ b/keyboard/planck/keymaps/brandon.c @@ -0,0 +1,134 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#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] = { +[_QW] = { /* Qwerty */ +/* MIT Layout (QWERTY layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | e | r | t | y | u | i | o | p | bspc| + * |-----------------------------------------------------------------------| + * | tab | a | s | d | f | g | h | j | k | l | ; | ' | + * |-----------------------------------------------------------------------| + * |shift| z | x | c | v | b | n | m | , | . | / |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, 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, MT(MOD_LSFT, KC_ENT) }, + {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_CM] = { /* Colemak */ +/* MIT Layout (Colemak layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | f | p | g | j | l | u | y | ; | bspc| + * |-----------------------------------------------------------------------| + * | tab | a | r | s | t | d | h | n | e | i | o | ' | + * |-----------------------------------------------------------------------| + * |shift| z | x | c | v | b | k | m | , | . | / |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ + {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_TAB, 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, MT(MOD_LSFT, KC_ENT)}, + {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_RS] = { /* RAISE */ +/* MIT Layout (RAISE layer) + * + * ,-----------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | bspc| + * |-----------------------------------------------------------------------| + * | tab | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |-----------------------------------------------------------------------| + * |shift| F7 | F8 | F9 | F10 | F11 | F12 | QW | CM | BL | RST |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | del |lower| spc |raise|next |vold |volu |PLAY | + * `-----------------------------------------------------------------------' + */ + + {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} +}, +[_LW] = { /* LOWER */ +/* MIT Layout (Colemak layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | f | p | g | j | l | u | y | ; | bspc| + * |-----------------------------------------------------------------------| + * | tab | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |-----------------------------------------------------------------------| + * |shift| F7 | F8 | F9 | F10 | F11 | F12 | QW | CM | BL | RST |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|next |vold |volu |PLAY | + * `-----------------------------------------------------------------------' + */ + {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} +}, +[_TK] = { /* Ten Key*/ +/* MIT Layout (Ten Key layer) + * + * ,-----------------------------------------------------------------------. + * | esc | F9 | F10 | F11 | F12 | PGUP| % | / | 7 | 8 | 9 | bspc| + * |-----------------------------------------------------------------------| + * | tab | F5 | F6 | F7 | F8 | PGDN| HOME| * | 4 | 5 | 6 | \ | + * |-----------------------------------------------------------------------| + * |shift| F1 | F2 | F3 | F4 | DEL | END | 0 | 1 | 2 | 3 |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ + {KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_PERC, KC_SLSH, KC_7, KC_8, KC_9, KC_BSPC}, + {KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_HOME, KC_ASTR, KC_4, KC_5, KC_6, KC_PIPE}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_END, KC_0, KC_1, KC_2, KC_3, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +} + +}; + +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; +}; diff --git a/keyboard/planck/keymaps/cbbrowne/README.md b/keyboard/planck/keymaps/cbbrowne/README.md new file mode 100644 index 0000000000..323e9a8596 --- /dev/null +++ b/keyboard/planck/keymaps/cbbrowne/README.md @@ -0,0 +1,16 @@ +cbbrowne custom keyboard +============================== + +Due to cbbrowne@acm.org +Christopher Browne + +This was originally based on the default keyboard map, but I have been +doing sundry experimentation: + + * To figure things out about the toolset + * I'm an Emacs guy, so will be needing a fair bit of tuning + * It made sense to mess around some with keyboard maps. + - I added Workman alongside Dvorak and Colemak + - Boy, oh boy, these don't help + - I have done 30 years of learning of Emacs key mappings, and these alternative keyboards massively mess me up + - I added a keypad, originally based on keymaps/numpad.c, but mighty substantially revised, as that one seems to be rotated 90 degrees from usual conventions for number pads
\ No newline at end of file diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c new file mode 100644 index 0000000000..250d412ced --- /dev/null +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -0,0 +1,172 @@ +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +/* Each layer is given a name to aid in readability, which is then + used in the keymap matrix below. The underscores do not denote + 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 could also skip them entirely and just use numbers, though that + means needing to manage the numbers. + + It is preferable to keep the symbols short so that a line worth of + key mappings fits compactly onto a line of code. */ + +/* This was originally based on planck/keymaps/default/default.c, and + then cbbrowne has revised things */ + +/* Things I did not like about the default mapping + + - I find control too hard to get to. I think I'll want it on a + left finger. Gonna need to lose something to do that... + - Almost certainly, KC_LCTL should be on [2][1] + - having dash on [lower-j] is a bit nonintuitive, but may be OK + - I'll bet I should switch ESC/TAB + - I'm suspicious that I want to shift M(0) from [4][1] to [4][2], + and shift ESC off the first column so KC_LCTL and KC_LALT can + be on the first column. + - I think I wanna swap ' and ENTER + + - All of the above are done :-) + + - I'm keeping Colemak and Dvorak around for reference, and added + Workman just for fun. They're useless to me, though. +*/ + + +/* Some interesting things implemented + + - There is a macro that writes out "cbbrowne" just because I could + - There is a (somewhat cruddy) linear congruential random number + generator. + - I would like to be seeding it with clock info to make it look + more random + - There are two macros that use the random number generators + - one, M_RANDDIGIT, generates a random digit based on state + of the random number generator + - the other, M_RANDLETTER, generates a random letter based on state + of the random number generator + - in both, note the use of register_code()/unregister_code() + to indicate the desired key +*/ + +/* Other things to do... + + - Need to think about what zsh and readline actions I use lots + - Wanna figure out macros, so I can put in a "cbbrowne" macro + - Ought to ensure that Control-Alt-Delete is convenient enough + - How about Alt-F1 thru Alt-F8? + - What's the keystroke to get from X to console these days? + - I do indeed want a sweet number pad! + - A layer for doing console switching would not be a bad idea +*/ + +enum layers { + _QW = 0, /* Qwerty mapping */ + _LW, /* Lower layer, where top line has symbols !@#$%^&*() */ + _RS, /* Raised layer, where top line has digits 1234567890 */ + _KP, /* Key pad */ +}; + +enum macro_id { + M_LED = 0, + M_USERNAME, + M_RANDDIGIT, + M_RANDLETTER +}; + +/* Note that Planck has dimensions 4 rows x 12 columns */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, + {KC_TAB, M(M_LED), 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(_KP), DF(_KP), 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(_KP), DF(_KP), RESET, KC_TRNS}, + {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_KP] = { /* Key Pad */ + {KC_ESC, M(M_USERNAME), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_ENTER, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_BSPC}, + {KC_LCTL, M(M_RANDDIGIT), KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_MINUS, KC_7, KC_8, KC_9, KC_ENT}, + {KC_LSFT, M(M_RANDLETTER), KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_PLUS, KC_4, KC_5, KC_6, KC_DOT}, + {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_1, KC_2, KC_3, KC_0} +} +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +/* This bit of logic seeds a wee linear congruential random number generator */ + +static uint16_t random_value = 157; +#define randadd 53 +#define randmul 181 +#define randmod 167 + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + uint8_t clockbyte=0; + clockbyte = TCNT1 % 256; + uint8_t rval; + // MACRODOWN only works in this function + switch(id) { + case M_LED: + if (record->event.pressed) { + register_code(KC_RSFT); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif + } else { + unregister_code(KC_RSFT); + } + break; + case M_USERNAME: + if (record->event.pressed) { + return MACRO( I(1), T(C), T(B), T(B), T(R), T(O), T(W), T(N), T(E)); + } else { + return MACRO_NONE ; + } + break; + case M_RANDDIGIT: + /* Generate, based on random number generator, a keystroke for + a numeric digit chosen at random */ + random_value = ((random_value + randadd) * randmul) % randmod; + if (record->event.pressed) { + /* Here, we mix the LCRNG with low bits from one of the system + clocks via XOR in the theory that this may be more random + than either separately */ + rval = (random_value ^ clockbyte) % 10; + /* Note that KC_1 thru KC_0 are a contiguous range */ + register_code (KC_1 + rval); + unregister_code (KC_1 + rval); + } + break; + case M_RANDLETTER: + /* Generate, based on random number generator, a keystroke for + a letter chosen at random */ + /* Here, we mix the LCRNG with low bits from one of the system + clocks via XOR in the theory that this may be more random + than either separately */ + random_value = ((random_value + randadd) * randmul) % randmod; + if (record->event.pressed) { + rval = (random_value ^ clockbyte) % 26; + register_code (KC_A + rval); + unregister_code (KC_A + rval); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/keymap_charlie.c b/keyboard/planck/keymaps/charlie.c index 88f454d789..88f454d789 100644 --- a/keyboard/planck/keymaps/keymap_charlie.c +++ b/keyboard/planck/keymaps/charlie.c diff --git a/keyboard/planck/keymaps/keymap_daniel.c b/keyboard/planck/keymaps/daniel.c index 234e48ff4a..234e48ff4a 100644 --- a/keyboard/planck/keymaps/keymap_daniel.c +++ b/keyboard/planck/keymaps/daniel.c diff --git a/keyboard/planck/keymaps/keymap_david.c b/keyboard/planck/keymaps/david.c index f483084801..f483084801 100644 --- a/keyboard/planck/keymaps/keymap_david.c +++ b/keyboard/planck/keymaps/david.c diff --git a/keyboard/planck/keymaps/default/README.md b/keyboard/planck/keymaps/default/README.md new file mode 100644 index 0000000000..d2f43bbdb8 --- /dev/null +++ b/keyboard/planck/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/planck/keymaps/keymap_default.c b/keyboard/planck/keymaps/default/keymap.c index 49670dafd3..a9c2a06813 100644 --- a/keyboard/planck/keymaps/keymap_default.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -2,7 +2,9 @@ // this is the style you want to emulate. #include "planck.h" -#include "backlight.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. @@ -58,7 +60,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 0: if (record->event.pressed) { register_code(KC_RSFT); - backlight_step(); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif } else { unregister_code(KC_RSFT); } diff --git a/keyboard/planck/keymaps/keymap_dzobert.c b/keyboard/planck/keymaps/dzobert.c index 665e9c20b6..665e9c20b6 100644 --- a/keyboard/planck/keymaps/keymap_dzobert.c +++ b/keyboard/planck/keymaps/dzobert.c diff --git a/keyboard/planck/keymaps/keymap_gabriel.c b/keyboard/planck/keymaps/gabriel.c index 805484488b..805484488b 100644 --- a/keyboard/planck/keymaps/keymap_gabriel.c +++ b/keyboard/planck/keymaps/gabriel.c diff --git a/keyboard/planck/keymaps/keymap_joe.c b/keyboard/planck/keymaps/joe.c index 5b7bbe2bbb..5b7bbe2bbb 100644 --- a/keyboard/planck/keymaps/keymap_joe.c +++ b/keyboard/planck/keymaps/joe.c diff --git a/keyboard/planck/keymaps/keymap_jack.c b/keyboard/planck/keymaps/keymap_jack.c deleted file mode 100644 index 0b93bba33f..0000000000 --- a/keyboard/planck/keymaps/keymap_jack.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Jack soft-coded colemak */ - {KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_BSPC}, - {KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT}, - {KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_ENT}, - {BL_STEP, 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] = { /* Jack hard-coded 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}, - {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] = { /* Jack 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, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, 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] = { /* Jack LOWER */ - {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), LSFT(RSFT(KC_PAUSE)), 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} -} -}; - - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/keymap_kyle.c b/keyboard/planck/keymaps/kyle.c index da32b74f96..da32b74f96 100644 --- a/keyboard/planck/keymaps/keymap_kyle.c +++ b/keyboard/planck/keymaps/kyle.c diff --git a/keyboard/planck/keymaps/keymap_leo.c b/keyboard/planck/keymaps/leo.c index 6d66441822..6d66441822 100644 --- a/keyboard/planck/keymaps/keymap_leo.c +++ b/keyboard/planck/keymaps/leo.c diff --git a/keyboard/planck/keymaps/lock/README.md b/keyboard/planck/keymaps/lock/README.md new file mode 100644 index 0000000000..d21cb990b0 --- /dev/null +++ b/keyboard/planck/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/planck/keymaps/keymap_lock.c b/keyboard/planck/keymaps/lock/keymap.c index cc9be55f64..9585764629 100644 --- a/keyboard/planck/keymaps/keymap_lock.c +++ b/keyboard/planck/keymaps/lock/keymap.c @@ -1,7 +1,12 @@ +// USING_MIDI +// USING_BACKLIGHT #include "keymap_common.h" -#include "backlight.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif #include "action_layer.h" #include "keymap_midi.h" +#include "audio.h" #include <avr/boot.h> const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -63,15 +68,31 @@ uint16_t hextokeycode(int hex) { } } +float walk_up[][2] = { + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(67)/12.0), 600}, +}; + +float walk_dn[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(60)/12.0), 600}, +}; + 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) { + + play_notes(&walk_up, 3, false); // play_note(440, 20); // register_code(KC_RSFT); - backlight_set(BACKLIGHT_LEVELS); + #ifdef BACKLIGHT_ENABLE + backlight_set(BACKLIGHT_LEVELS); + #endif default_layer_and(0); default_layer_or((1<<5)); @@ -103,19 +124,33 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // register_code(hextokeycode((lock & 0x0F))); // unregister_code(hextokeycode((lock & 0x0F))); - // note(0+12, 20); - // note(0+24, 20); } else { - // unregister_code(KC_RSFT); - // stop_note(); - backlight_set(0); + unregister_code(KC_RSFT); + play_notes(&walk_dn, 3, false); + #ifdef BACKLIGHT_ENABLE + backlight_set(0); + #endif default_layer_and(0); default_layer_or(0); - // note(0+24, 20); - // note(0, 20); - // play_note(4, 20); } break; } return MACRO_NONE; }; + +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}, +}; + +void * matrix_init_user(void) { + init_notes(); + play_notes(&start_up, 9, false); +}
\ No newline at end of file diff --git a/keyboard/planck/keymaps/lukas.c b/keyboard/planck/keymaps/lukas.c new file mode 100644 index 0000000000..6fd95378b1 --- /dev/null +++ b/keyboard/planck/keymaps/lukas.c @@ -0,0 +1,64 @@ +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// This simple keymap is optimized for xmonad users using super as their modifier key. +// M(1) makes it possible to change virtual screens and swap windows between them. + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +#define _QW 0 +#define _LW 1 +#define _RS 2 + +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 }, + {KC_LCTL, KC_LALT, KC_LGUI, M(1), 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_DEL }, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + }, + [_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + case 1: + if (record->event.pressed) { + register_code(KC_LGUI); + layer_on(_RS); + } else { + unregister_code(KC_LGUI); + layer_off(_RS); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/keymap_max.c b/keyboard/planck/keymaps/max.c index 7fb29bc7a4..7fb29bc7a4 100644 --- a/keyboard/planck/keymaps/keymap_max.c +++ b/keyboard/planck/keymaps/max.c diff --git a/keyboard/planck/keymaps/mollat.c b/keyboard/planck/keymaps/mollat.c new file mode 100644 index 0000000000..e7c71efd47 --- /dev/null +++ b/keyboard/planck/keymaps/mollat.c @@ -0,0 +1,149 @@ +// +// This layout is based on the following needs: +// +// should be as close as possible to querty/us-international layout (using international/AltGr as o/s driver) +// added german umlauts at known places from de-layout +// all movement keys should be at known places from vi/bash (eg HJKL for cursor keys) +// Fn layer (at CapsLock place like the Pok3r does) for missing keys +// additional layer for tmux window switching +// +// This is work in Progress! If you have suggestions write me at github.com/mollat/qmk_firmware/ and check +// this fork for updates as I probably won't bother jack with my pull requests frequently. +// + +#include "planck.h" + +#define _QWERTY 0 +#define _HIGH 1 +#define _LOW 2 +#define _FN 3 +#define _TMUX 4 +#define _LCTL 5 +#define _MOUSE 6 +#define __________ KC_NO // just for easy reading + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = { /* Qwerty */ + { LT(_MOUSE, KC_ESC),KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + { LT(_FN, KC_TAB),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, SFT_T(KC_ENT)}, + { __________, __________, KC_LGUI, KC_LALT, KC_LCTL,LT(_TMUX, KC_SPC),LT(_HIGH, KC_SPC),MO(_LOW),KC_RALT,KC_RGUI, __________, __________ } +}, + +// missing keys regarding to the form factor +// keeping the dot and comma for typing faster IP addresses and (german) float values +// putting the backslash on the slash's place +[_HIGH] = { + { KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS }, + { __________, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL }, + { __________, __________, __________, __________, __________, __________, __________, __________, KC_COMM, KC_DOT, KC_BSLS, LSFT(KC_BSLS)}, + { __________, __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________, __________ } +}, + +// classic Fn-Layer triggered with 'CapsLock-key' like on Pok3r +// SPC and ENT are doubled for using repeat (which I switched off, see https://github.com/tmk/tmk_keyboard/issues/287) +// '€' sign is on the '5' position as this is the usual AltGr place on the US Internation layout +// home/end at the 'a' and 'e' position like in bash +// ins at 'i' +// del besides backspace (had no better place for it because of the umlauts) +// pg-down at 'f' (forward in vi), pg-up at 'b' (back in 'vi') +// +[_FN] = { + { __________, __________, __________, KC_END, __________, __________, __________, __________, KC_INS, __________, KC_DEL, RALT(KC_Y) }, + { KC_TRNS, __________, RALT(KC_S), __________, KC_PGDN, RALT(KC_5), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, RALT(KC_P), RALT(KC_Q) }, + { __________, KC_HOME, __________, __________, __________, KC_PGUP, __________, __________, __________, __________, __________, KC_ENT }, + { RESET, __________, __________, __________, __________, KC_SPC, KC_SPC, __________, __________, __________, __________, __________ } +}, + +// function key layer and some shift + (missing key at the small form factor) +[_LOW] = { + { KC_TILD, __________, __________, __________, __________, __________, __________, __________, __________, KC_LCBR, KC_RCBR, KC_UNDS }, + { __________, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_PLUS }, + { __________, __________, __________, __________, __________, KC_F9, KC_F10, KC_F11, KC_F12, __________, __________, __________ }, + { __________, __________, __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________ } +}, + +// most macros will switch tmux screens +// two macros are for vi's save/quit at 'w' and 'q' +[_TMUX] = { + { __________, M(14), M(13), __________, __________, __________, __________, __________, __________, __________, M(11), __________ }, + { M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), __________, __________ }, + { __________, __________, __________, M(12), __________, __________, M(10), __________, __________, __________, __________, __________ }, + { __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________, __________, __________ } +}, + +// mouse movement can be improved (e.g. can't press hj at once), but I will use this seldom, so I stick with hjkl keys. +[_MOUSE] = { + { KC_TRNS, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________ }, + { __________, __________, __________, __________, KC_WH_D, __________, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, __________, __________ }, + { __________, __________, __________, __________, __________, KC_WH_U, __________, __________, __________, __________, __________, __________ }, + { __________, __________, __________, KC_ACL2, KC_ACL1, KC_ACL0, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, __________, __________, __________ } +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [_LCTL] = ACTION_MODS_TAP_KEY(KC_LCTL, M(12)), // does not work +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_0), END ); + break; + case 1: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_1), END ); + break; + case 2: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_2), END ); + break; + case 3: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_3), END ); + break; + case 4: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_4), END ); + break; + case 5: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_5), END ); + break; + case 6: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_6), END ); + break; + case 7: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_7), END ); + break; + case 8: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_8), END ); + break; + case 9: + // tmux last window + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_L), END ); + break; + // tmux next window + case 10: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_N), END ); + break; + // tmux previous window + case 11: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_P), END ); + break; + // tmux new window + case 12: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_C), END ); + break; + case 13: + // vi save document + return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_W), TYPE(KC_ENT), END ); + break; + case 14: + // vi quit + return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_Q), TYPE(KC_ENT), END ); + break; + // tmux press ctrl-b + case 15: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), END ); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/keymap_monkey.c b/keyboard/planck/keymaps/monkey.c index 21a2c146ab..21a2c146ab 100644 --- a/keyboard/planck/keymaps/keymap_monkey.c +++ b/keyboard/planck/keymaps/monkey.c diff --git a/keyboard/planck/keymaps/keymap_numpad.c b/keyboard/planck/keymaps/numpad.c index 7de4372ab0..7de4372ab0 100644 --- a/keyboard/planck/keymaps/keymap_numpad.c +++ b/keyboard/planck/keymaps/numpad.c diff --git a/keyboard/planck/keymaps/yang/WS2812-wiring.jpg b/keyboard/planck/keymaps/yang/WS2812-wiring.jpg Binary files differnew file mode 100644 index 0000000000..2c65cd283a --- /dev/null +++ b/keyboard/planck/keymaps/yang/WS2812-wiring.jpg diff --git a/quantum/template/keymaps/keymap_default.c b/keyboard/planck/keymaps/yang/keymap.c index 1e6684da7b..541b1a57e4 100644 --- a/quantum/template/keymaps/keymap_default.c +++ b/keyboard/planck/keymaps/yang/keymap.c @@ -1,7 +1,10 @@ // 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 "%KEYBOARD%.h" +#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. @@ -12,25 +15,26 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _RGB 5 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} + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), F(0), F(0), 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} + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), F(0), F(0), 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} + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), F(0), F(0), 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}, @@ -43,11 +47,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {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} +}, +[_RGB] = { /* RGBLIGHT */ + {KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL}, + {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_TRNS}, + {KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS}, + {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[] = { +enum function_id { + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL, +}; +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(_RGB, KC_SPC), + [1] = ACTION_FUNCTION(RGBLED_TOGGLE), + [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -57,6 +87,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 0: if (record->event.pressed) { register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif } else { unregister_code(KC_RSFT); } @@ -64,3 +97,50 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO_NONE; }; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + switch (id) { + case RGBLED_TOGGLE: + //led operations + if (record->event.pressed) { + rgblight_toggle(); + } + + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + break; + } +} diff --git a/keyboard/planck/keymaps/yang/planck-with-rgb-underglow.jpg b/keyboard/planck/keymaps/yang/planck-with-rgb-underglow.jpg Binary files differnew file mode 100644 index 0000000000..c636b9a83d --- /dev/null +++ b/keyboard/planck/keymaps/yang/planck-with-rgb-underglow.jpg diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index b62862af04..63ca54761c 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c @@ -15,6 +15,11 @@ void * matrix_init_kb(void) { backlight_init_ports(); #endif + #ifdef RGBLIGHT_ENABLE + rgblight_init(); + #endif + + // Turn status LED on DDRE |= (1<<6); PORTE |= (1<<6); @@ -28,4 +33,4 @@ void * matrix_scan_kb(void) { if (matrix_scan_user) { (*matrix_scan_user)(); } -};
\ No newline at end of file +}; diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index 4e59aef566..00b01b54df 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h @@ -3,8 +3,16 @@ #include "matrix.h" #include "keymap_common.h" -#include "backlight.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#ifdef RGBLIGHT_ENABLE + #include "rgblight.h" +#endif #include <stddef.h> +#ifdef MIDI_ENABLE + #include <keymap_midi.h> +#endif #define PLANCK_MIT( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ @@ -17,7 +25,7 @@ { 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 } \ -} +} #define PLANCK_GRID( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ @@ -30,9 +38,9 @@ { 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 } \ -} +} void * matrix_init_user(void); void * matrix_scan_user(void); -#endif
\ No newline at end of file +#endif diff --git a/new_project.sh b/new_project.sh index 86ecf692f4..199ced4113 100755 --- a/new_project.sh +++ b/new_project.sh @@ -12,7 +12,7 @@ sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/template.c > keyboard/$KEYBOA sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/config.h > keyboard/$KEYBOARD/config.h sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/README.md > keyboard/$KEYBOARD/README.md sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/Makefile > keyboard/$KEYBOARD/Makefile -sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/keymaps/keymap_default.c > keyboard/$KEYBOARD/keymaps/keymap_default.c +sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/keymaps/default.c > keyboard/$KEYBOARD/keymaps/default.c cp quantum/template/bootloader.hex keyboard/$KEYBOARD/bootloader.hex echo "######################################################" diff --git a/quantum/audio.c b/quantum/audio.c new file mode 100644 index 0000000000..3a3a1a4910 --- /dev/null +++ b/quantum/audio.c @@ -0,0 +1,362 @@ +#include <stdio.h> +#include <string.h> +#include <math.h> +#include <avr/pgmspace.h> +#include <avr/interrupt.h> +#include <avr/io.h> + +#include "audio.h" +#include "keymap_common.h" + +#define PI 3.14159265 + +// #define PWM_AUDIO + +#ifdef PWM_AUDIO + #include "wave.h" + #define SAMPLE_DIVIDER 39 + #define SAMPLE_RATE (2000000.0/SAMPLE_DIVIDER/2048) + // Resistor value of 1/ (2 * PI * 10nF * (2000000 hertz / SAMPLE_DIVIDER / 10)) for 10nF cap +#endif + +void delay_us(int count) { + while(count--) { + _delay_us(1); + } +} + +int voices = 0; +int voice_place = 0; +double frequency = 0; +int volume = 0; +long position = 0; + +double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; +int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; +bool sliding = false; + +int max = 0xFF; +float sum = 0; +int value = 128; +float place = 0; +float places[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + +uint16_t place_int = 0; +bool repeat = true; +uint8_t * sample; +uint16_t sample_length = 0; + + +bool notes = false; +bool note = false; +float note_frequency = 0; +float note_length = 0; +uint16_t note_position = 0; +float (* notes_pointer)[][2]; +uint8_t notes_length; +bool notes_repeat; +uint8_t current_note = 0; + +void stop_all_notes() { + voices = 0; + #ifdef PWM_AUDIO + TIMSK3 &= ~_BV(OCIE3A); + #else + TIMSK3 &= ~_BV(OCIE3A); + TCCR3A &= ~_BV(COM3A1); + #endif + notes = false; + note = false; + frequency = 0; + volume = 0; + + for (int i = 0; i < 8; i++) { + frequencies[i] = 0; + volumes[i] = 0; + } +} + +void stop_note(double freq) { + #ifdef PWM_AUDIO + freq = freq / SAMPLE_RATE; + #endif + for (int i = 7; i >= 0; i--) { + if (frequencies[i] == freq) { + frequencies[i] = 0; + volumes[i] = 0; + for (int j = i; (j < 7); j++) { + frequencies[j] = frequencies[j+1]; + frequencies[j+1] = 0; + volumes[j] = volumes[j+1]; + volumes[j+1] = 0; + } + } + } + voices--; + if (voices < 0) + voices = 0; + if (voices == 0) { + #ifdef PWM_AUDIO + TIMSK3 &= ~_BV(OCIE3A); + #else + TIMSK3 &= ~_BV(OCIE3A); + TCCR3A &= ~_BV(COM3A1); + #endif + frequency = 0; + volume = 0; + note = false; + } else { + double freq = frequencies[voices - 1]; + int vol = volumes[voices - 1]; + double starting_f = frequency; + if (frequency < freq) { + sliding = true; + for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { + frequency = f; + } + sliding = false; + } else if (frequency > freq) { + sliding = true; + for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) { + frequency = f; + } + sliding = false; + } + frequency = freq; + volume = vol; + } +} + +void init_notes() { + + #ifdef PWM_AUDIO + PLLFRQ = _BV(PDIV2); + PLLCSR = _BV(PLLE); + while(!(PLLCSR & _BV(PLOCK))); + PLLFRQ |= _BV(PLLTM0); /* PCK 48MHz */ + + /* Init a fast PWM on Timer4 */ + TCCR4A = _BV(COM4A0) | _BV(PWM4A); /* Clear OC4A on Compare Match */ + TCCR4B = _BV(CS40); /* No prescaling => f = PCK/256 = 187500Hz */ + OCR4A = 0; + + /* Enable the OC4A output */ + DDRC |= _BV(PORTC6); + + TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs + + TCCR3A = 0x0; // Options not needed + TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC + OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback + #else + DDRC |= _BV(PORTC6); + + TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs + + TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); + TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); + #endif +} + + +ISR(TIMER3_COMPA_vect) { + + if (note) { + #ifdef PWM_AUDIO + if (voices == 1) { + // SINE + OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2; + + // SQUARE + // if (((int)place) >= 1024){ + // OCR4A = 0xFF >> 2; + // } else { + // OCR4A = 0x00; + // } + + // SAWTOOTH + // OCR4A = (int)place / 4; + + // TRIANGLE + // if (((int)place) >= 1024) { + // OCR4A = (int)place / 2; + // } else { + // OCR4A = 2048 - (int)place / 2; + // } + + place += frequency; + + if (place >= SINE_LENGTH) + place -= SINE_LENGTH; + + } else { + int sum = 0; + for (int i = 0; i < voices; i++) { + // SINE + sum += pgm_read_byte(&sinewave[(uint16_t)places[i]]) >> 2; + + // SQUARE + // if (((int)places[i]) >= 1024){ + // sum += 0xFF >> 2; + // } else { + // sum += 0x00; + // } + + places[i] += frequencies[i]; + + if (places[i] >= SINE_LENGTH) + places[i] -= SINE_LENGTH; + } + OCR4A = sum; + } + #else + if (frequency > 0) { + // ICR3 = (int)(((double)F_CPU) / frequency); // Set max to the period + // OCR3A = (int)(((double)F_CPU) / frequency) >> 1; // Set compare to half the period + if (place > 10) { + voice_place = (voice_place + 1) % voices; + place = 0.0; + } + ICR3 = (int)(((double)F_CPU) / frequencies[voice_place]); // Set max to the period + OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1; // Set compare to half the period + place++; + } + #endif + } + + // SAMPLE + // OCR4A = pgm_read_byte(&sample[(uint16_t)place_int]); + + // place_int++; + + // if (place_int >= sample_length) + // if (repeat) + // place_int -= sample_length; + // else + // TIMSK3 &= ~_BV(OCIE3A); + + + if (notes) { + #ifdef PWM_AUDIO + OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 0; + + place += note_frequency; + if (place >= SINE_LENGTH) + place -= SINE_LENGTH; + #else + if (note_frequency > 0) { + ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period + OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period + } + #endif + + + note_position++; + if (note_position >= note_length) { + current_note++; + if (current_note >= notes_length) { + if (notes_repeat) { + current_note = 0; + } else { + #ifdef PWM_AUDIO + TIMSK3 &= ~_BV(OCIE3A); + #else + TIMSK3 &= ~_BV(OCIE3A); + TCCR3A &= ~_BV(COM3A1); + #endif + notes = false; + return; + } + } + #ifdef PWM_AUDIO + note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; + note_length = (*notes_pointer)[current_note][1]; + #else + note_frequency = (*notes_pointer)[current_note][0]; + note_length = (*notes_pointer)[current_note][1] / 4; + #endif + note_position = 0; + } + + } + +} + +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { + if (note) + stop_all_notes(); + notes = true; + + notes_pointer = np; + notes_length = n_length; + notes_repeat = n_repeat; + + place = 0; + current_note = 0; + #ifdef PWM_AUDIO + note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; + note_length = (*notes_pointer)[current_note][1]; + #else + note_frequency = (*notes_pointer)[current_note][0]; + note_length = (*notes_pointer)[current_note][1] / 4; + #endif + note_position = 0; + + + #ifdef PWM_AUDIO + TIMSK3 |= _BV(OCIE3A); + #else + TIMSK3 |= _BV(OCIE3A); + TCCR3A |= _BV(COM3A1); + #endif +} + +void play_sample(uint8_t * s, uint16_t l, bool r) { + stop_all_notes(); + place_int = 0; + sample = s; + sample_length = l; + repeat = r; + + #ifdef PWM_AUDIO + TIMSK3 |= _BV(OCIE3A); + #else + #endif +} + +void play_note(double freq, int vol) { + if (notes) + stop_all_notes(); + note = true; + #ifdef PWM_AUDIO + freq = freq / SAMPLE_RATE; + #endif + if (freq > 0) { + if (frequency != 0) { + double starting_f = frequency; + if (frequency < freq) { + for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { + frequency = f; + } + } else if (frequency > freq) { + for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) { + frequency = f; + } + } + } + frequency = freq; + volume = vol; + + frequencies[voices] = frequency; + volumes[voices] = volume; + voices++; + } + + #ifdef PWM_AUDIO + TIMSK3 |= _BV(OCIE3A); + #else + TIMSK3 |= _BV(OCIE3A); + TCCR3A |= _BV(COM3A1); + #endif + +}
\ No newline at end of file diff --git a/quantum/beeps.h b/quantum/audio.h index 378983c605..99203cea7a 100644 --- a/quantum/beeps.h +++ b/quantum/audio.h @@ -3,10 +3,9 @@ #include <avr/io.h> #include <util/delay.h> -void note(int x, float length); -void beeps(); -void true_note(float x, float y, float length); +void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); void stop_all_notes(); -void init_notes();
\ No newline at end of file +void init_notes(); +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat);
\ No newline at end of file diff --git a/quantum/beeps.c b/quantum/beeps.c deleted file mode 100644 index 8d1f81f210..0000000000 --- a/quantum/beeps.c +++ /dev/null @@ -1,246 +0,0 @@ -#include "beeps.h" -#include <math.h> -#include <avr/pgmspace.h> -#include <avr/interrupt.h> -#include <avr/io.h> - -#define PI 3.14159265 - -void delay_us(int count) { - while(count--) { - _delay_us(1); - } -} - -int voices = 0; -double frequency = 0; -int volume = 0; -int position = 0; - -double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -bool sliding = false; -#define RANGE 1000 -volatile int i=0; //elements of the wave - - -void beeps() { - play_notes(); -} - -void send_freq(double freq, int vol) { - int duty = (((double)F_CPU) / freq); - ICR3 = duty; // Set max to the period - OCR3A = duty >> (0x10 - vol); // Set compare to half the period -} - -void stop_all_notes() { - voices = 0; - TCCR3A = 0; - TCCR3B = 0; - frequency = 0; - volume = 0; - - for (int i = 0; i < 8; i++) { - frequencies[i] = 0; - volumes[i] = 0; - } -} - -void stop_note(double freq) { - for (int i = 7; i >= 0; i--) { - if (frequencies[i] == freq) { - frequencies[i] = 0; - volumes[i] = 0; - for (int j = i; (j < 7); j++) { - frequencies[j] = frequencies[j+1]; - frequencies[j+1] = 0; - volumes[j] = volumes[j+1]; - volumes[j+1] = 0; - } - } - } - voices--; - if (voices < 0) - voices = 0; - if (voices == 0) { - TCCR3A = 0; - TCCR3B = 0; - frequency = 0; - volume = 0; - } else { - double freq = frequencies[voices - 1]; - int vol = volumes[voices - 1]; - if (frequency < freq) { - sliding = true; - for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) { - send_freq(f, vol); - } - sliding = false; - } else if (frequency > freq) { - sliding = true; - for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) { - send_freq(f, vol); - } - sliding = false; - } - send_freq(freq, vol); - frequency = freq; - volume = vol; - } -} - -void init_notes() { - // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (1 << WGM10); - // TCCR1B = (1 << COM1B1) | (0 << COM1A0) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10); - - // DDRC |= (1<<6); - - // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - // TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30); - - // ICR3 = 0xFFFF; - // OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element - - - // cli(); - - // /* Enable interrupt on timer2 == 127, with clk/8 prescaler. At 16MHz, - // this gives a timer interrupt at 15625Hz. */ - // TIMSK3 = (1 << OCIE3A); - - // /* clear/reset timer on match */ - // // TCCR3A = 1<<WGM31 | 0<<WGM30; CTC mode, reset on match - // // TCCR3B = 0<<CS32 | 1<<CS31 | 0<<CS30; /* clk, /8 prescaler */ - - // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - // TCCR3B = (0 << WGM33) | (0 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30); - - - // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10); - // TCCR1B = (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10); - // // SPCR = 0x50; - // // SPSR = 0x01; - // DDRC |= (1<<6); - // // ICR3 = 0xFFFF; - // // OCR3A=80; - // PORTC |= (1<<6); - - // sei(); -} - -// #define highByte(c) ((c >> 8) & 0x00FF) -// #define lowByte(c) (c & 0x00FF) - -ISR(TIMER3_COMPA_vect) { - - if (ICR3 > 0 && !sliding) { - switch (position) { - case 0: { - int duty = (((double)F_CPU) / (frequency)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - case 1: { - int duty = (((double)F_CPU) / (frequency*2)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - case 2: { - int duty = (((double)F_CPU) / (frequency*3)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - } - position = (position + 1) % 3; - } -// /* OCR2A has been cleared, per TCCR2A above */ -// // OCR3A = 127; - -// // pos1 += incr1; -// // pos2 += incr2; -// // pos3 += incr3; - -// // sample = sinewave[highByte(pos1)] + sinewave[highByte(pos2)] + sinewave[highByte(pos3)]; - -// // OCR3A = sample; - - -// OCR3A=pgm_read_byte(&sinewave[pos1]); -// pos1++; -// // PORTC &= ~(1<<6); - -// /* buffered, 1x gain, active mode */ -// // SPDR = highByte(sample) | 0x70; -// // while (!(SPSR & (1<<SPIF))); - -// // SPDR = lowByte(sample); -// // while (!(SPSR & (1<<SPIF))); - -// // PORTC |= (1<<6); -} - -void play_note(double freq, int vol) { - - if (freq > 0) { - DDRC |= (1<<6); - - TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); - - if (frequency != 0) { - if (frequency < freq) { - for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) { - send_freq(f, vol); - } - } else if (frequency > freq) { - for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) { - send_freq(f, vol); - } - } - } - send_freq(freq, vol); - frequency = freq; - volume = vol; - - frequencies[voices] = frequency; - volumes[voices] = volume; - voices++; - } - // ICR3 = 0xFFFF; - // for (int i = 0; i < 10000; i++) { - // OCR3A = round((sin(i*freq)*.5)+.5)*0xFFFF; - // // _delay_us(50); - // } - - // TCCR3A = 0; - // TCCR3B = 0; -} - -// void note(int x, float length) { -// DDRC |= (1<<6); -// int t = (int)(440*pow(2,-x/12.0)); // starting note -// for (int y = 0; y < length*1000/t; y++) { // note length -// PORTC |= (1<<6); -// delay_us(t); -// PORTC &= ~(1<<6); -// delay_us(t); -// } -// PORTC &= ~(1<<6); -// } - -// void true_note(float x, float y, float length) { -// for (uint32_t i = 0; i < length * 50; i++) { -// uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); -// for (int u = 0; u < 8; u++) { -// if (v & (1 << u) && !(PORTC&(1<<6))) -// PORTC |= (1<<6); -// else if (PORTC&(1<<6)) -// PORTC &= ~(1<<6); -// } -// } -// PORTC &= ~(1<<6); -// }
\ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 6cc7adf51f..7068ca4f31 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -26,6 +26,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "backlight.h" #include "keymap_midi.h" +#include <stdio.h> +#include <inttypes.h> +#ifdef AUDIO_ENABLE + #include "audio.h" + + float goodbye[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(55)/12.0), 600}, + }; +#endif + static action_t keycode_to_action(uint16_t keycode); /* converts key to action */ @@ -50,7 +64,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) action.code = ACTION_MACRO(keycode & 0xFF); return action; #ifdef BACKLIGHT_ENABLE - } else if (keycode >= BL_0 & keycode <= BL_15) { + } else if (keycode >= BL_0 && keycode <= BL_15) { action_t action; action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); return action; @@ -73,7 +87,13 @@ action_t action_for_key(uint8_t layer, keypos_t key) #endif } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here clear_keyboard(); + #ifdef AUDIO_ENABLE + play_notes(&goodbye, 5, false); + #endif _delay_ms(250); + #ifdef ATREUS_ASTAR + *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific + #endif bootloader_jump(); return; } else if (keycode == DEBUG) { // DEBUG is 0x5001 diff --git a/quantum/keymap_extras/keymap_colemak.h b/quantum/keymap_extras/keymap_colemak.h index 87df01ab58..8a418c6159 100644 --- a/quantum/keymap_extras/keymap_colemak.h +++ b/quantum/keymap_extras/keymap_colemak.h @@ -24,7 +24,7 @@ #define CM_E KC_K #define CM_I KC_L #define CM_O KC_SCLN -#define CM_SCLN LSFT(CM_SCLN) +#define CM_COLN LSFT(CM_SCLN) #define CM_Z KC_Z #define CM_X KC_X @@ -39,37 +39,37 @@ // Make it easy to support these in macros // TODO: change macro implementation so these aren't needed -#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_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_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 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 #endif diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h new file mode 100644 index 0000000000..d3884c19a1 --- /dev/null +++ b/quantum/keymap_extras/keymap_fr_ch.h @@ -0,0 +1,98 @@ +#ifndef KEYMAP_FR_CH +#define KEYMAP_FR_CH + +#include "keymap_common.h" + +// Alt gr +#define ALGR(kc) kc | 0x1400 +#define FR_CH_ALGR KC_RALT + +// normal characters +#define FR_CH_Z KC_Y +#define FR_CH_Y KC_Z + +#define FR_CH_A KC_A +#define FR_CH_B KC_B +#define FR_CH_C KC_C +#define FR_CH_D KC_D +#define FR_CH_E KC_E +#define FR_CH_F KC_F +#define FR_CH_G KC_G +#define FR_CH_H KC_H +#define FR_CH_I KC_I +#define FR_CH_J KC_J +#define FR_CH_K KC_K +#define FR_CH_L KC_L +#define FR_CH_M KC_M +#define FR_CH_N KC_N +#define FR_CH_O KC_O +#define FR_CH_P KC_P +#define FR_CH_Q KC_Q +#define FR_CH_R KC_R +#define FR_CH_S KC_S +#define FR_CH_T KC_T +#define FR_CH_U KC_U +#define FR_CH_V KC_V +#define FR_CH_W KC_W +#define FR_CH_X KC_X + +#define FR_CH_0 KC_0 +#define FR_CH_1 KC_1 +#define FR_CH_2 KC_2 +#define FR_CH_3 KC_3 +#define FR_CH_4 KC_4 +#define FR_CH_5 KC_5 +#define FR_CH_6 KC_6 +#define FR_CH_7 KC_7 +#define FR_CH_8 KC_8 +#define FR_CH_9 KC_9 + +#define FR_CH_DOT KC_DOT +#define FR_CH_COMM KC_COMM + +#define FR_CH_QUOT KC_MINS +#define FR_CH_AE KC_QUOT +#define FR_CH_UE KC_LBRC +#define FR_CH_OE KC_SCLN + +#define FR_CH_CIRC KC_EQL // accent circumflex ^ and grave ` and ~ +#define FR_CH_LESS KC_NUBS // < and > and backslash +#define FR_CH_MINS KC_SLSH // - and _ +#define FR_CH_DLR KC_BSLS // $, £ and } +#define FR_CH_PARA KC_GRV // § and ring ° +#define FR_CH_DIAE KC_RBRC // accent ¨ + +// shifted characters +#define FR_CH_RING LSFT(KC_GRV) // ° +#define FR_CH_EXLM LSFT(KC_RBRC) // ! +#define FR_CH_PLUS LSFT(KC_1) // + +#define FR_CH_DQOT LSFT(KC_2) // " +#define FR_CH_ASTR LSFT(KC_3) // * +#define FR_CH_PERC LSFT(KC_5) // % +#define FR_CH_AMPR LSFT(KC_6) // & +#define FR_CH_SLSH LSFT(KC_7) // / +#define FR_CH_LPRN LSFT(KC_8) // ( +#define FR_CH_RPRN LSFT(KC_9) // ) +#define FR_CH_EQL LSFT(KC_0) // = +#define FR_CH_QST LSFT(FR_CH_QUOT) // ? +#define FR_CH_MORE LSFT(FR_CH_LESS) // > +#define FR_CH_COLN LSFT(KC_DOT) // : +#define FR_CH_SCLN LSFT(KC_COMM) // ; +#define FR_CH_UNDS LSFT(FR_CH_MINS) // _ +#define FR_CH_CCED LSFT(KC_4) // ç +#define FR_CH_GRV LSFT(FR_CH_CIRC) // accent grave ` + +// Alt Gr-ed characters +#define FR_CH_LCBR ALGR(KC_QUOT) // { +#define FR_CH_LBRC ALGR(KC_LBRC) // [ +#define FR_CH_RBRC ALGR(KC_9) // ] +#define FR_CH_RCBR ALGR(KC_0) // } +#define FR_CH_BSLS ALGR(FR_CH_LESS) // backslash +#define FR_CH_AT ALGR(KC_2) // @ +#define FR_CH_EURO ALGR(KC_E) // € +#define FR_CH_TILD ALGR(FR_CH_CIRC) // ~ +#define FR_CH_PIPE ALGR(KC_1) // | +#define FR_CH_HASH ALGR(KC_3) // # +#define FR_CH_ACUT ALGR(FR_CH_QUOT) // accent acute ´ + +#endif diff --git a/quantum/keymap_extras/keymap_nordic.h b/quantum/keymap_extras/keymap_nordic.h index 02a704216a..7ef41fb791 100644 --- a/quantum/keymap_extras/keymap_nordic.h +++ b/quantum/keymap_extras/keymap_nordic.h @@ -48,12 +48,12 @@ #define NO_LBRC ALGR(KC_8) #define NO_RBRC ALGR(KC_9) #define NO_RCBR ALGR(KC_0) -#define NO_PIPE ALGR(NO_ACUT) +#define NO_PIPE ALGR(KC_NUBS) #define NO_EURO ALGR(KC_E) #define NO_TILD ALGR(NO_QUOT) -#define NO_BSLS ALGR(NO_LESS) +#define NO_BSLS ALGR(KC_MINS) #define NO_MU ALGR(KC_M) -#endif
\ No newline at end of file +#endif diff --git a/quantum/keymap_extras/keymap_norwegian.c b/quantum/keymap_extras/keymap_norwegian.c new file mode 100644 index 0000000000..018bfeae59 --- /dev/null +++ b/quantum/keymap_extras/keymap_norwegian.c @@ -0,0 +1,41 @@ +#ifndef KEYMAP_NORWEGIAN_H +#define KEYMAP_NORWEGIAN_H + +#include "keymap_nordic.h" + +// There are slight differrences in the keyboards in the nordic contries + +// Norwegian redifinitions from the nordic keyset +#undef NO_ACUT +#define NO_ACUT ALGR(NO_BSLS) // ´ +#undef NO_AE +#define NO_AE KC_QUOT // æ +#undef NO_BSLS +#define NO_BSLS KC_EQL // '\' +#undef NO_CIRC +#define NO_CIRC LSFT(C_RBRC) // ^ +#undef NO_GRV +#define NO_GRV LSFT(NO_BSLS) // +#undef NO_OSLH +#define NO_OSLH KC_SCLN // ø +#undef NO_PIPE +#define NO_PIPE KC_GRV // | + +// Additional norwegian keys not defined in the nordic keyset +#define NO_AA KC_LBRC // å +#define NO_ASTR LSFT(KC_BSLS) // * + +// Norwegian unique MAC characters +#define NO_ACUT_MAC KC_EQL // = +#define NO_APOS_MAC KC_NUBS // ' +#define NO_AT_MAC KC_BSLS // @ +#define NO_BSLS_MAC ALGR(LSFT(KC_7)) // '\' +#define NO_DLR_MAC LSFT(KC_4) // $ +#define NO_GRV_MAC ALGR(NO_BSLS) // ` +#define NO_GRTR_MAC LSFT(KC_GRV) // > +#define NO_LCBR_MAC ALGR(LSFT(KC_8)) // } +#define NO_LESS_MAC KC_GRV // > +#define NO_PIPE_MAC ALGR(KC_7) // | +#define NO_RCBR_MAC ALGR(LSFT(KC_9)) // } + +#endif diff --git a/quantum/keymap_midi.c b/quantum/keymap_midi.c index b7eba3ab76..e37ea31039 100644 --- a/quantum/keymap_midi.c +++ b/quantum/keymap_midi.c @@ -17,7 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "keymap_common.h" #include "keymap_midi.h" -#include <lufa.h> uint8_t starting_note = 0x0C; int offset = 7; @@ -35,7 +34,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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); + play_note(((double)261.626)*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); @@ -43,7 +42,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1))); stop_all_notes(); return; } @@ -51,7 +50,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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); + play_note(((double)261.626)*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); @@ -59,7 +58,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1))); stop_all_notes(); return; } @@ -74,9 +73,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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); + play_note(((double)261.626)*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))); + stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1))); _delay_us(8000); } return; @@ -90,9 +89,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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); + play_note(((double)261.626)*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))); + stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1))); _delay_us(8000); } return; @@ -101,10 +100,10 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) 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); + 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); - 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))); + 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 diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index c5917f884e..a89420ce2a 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef KEYMAP_MIDI_H #define KEYMAP_MIDI_H +#include <lufa.h> + #define MIDI 0x6000 #define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 diff --git a/quantum/keymap_unicode.c b/quantum/keymap_unicode.c index a9357edec7..a44965e611 100644 --- a/quantum/keymap_unicode.c +++ b/quantum/keymap_unicode.c @@ -30,6 +30,8 @@ uint16_t hextokeycode(int hex) { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input + if (record->event.pressed) { uint16_t unicode = (opt << 8) | id; register_code(KC_LALT); diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c new file mode 100755 index 0000000000..f20043067e --- /dev/null +++ b/quantum/light_ws2812.c @@ -0,0 +1,181 @@ +/* +* light weight WS2812 lib V2.0b +* +* Controls WS2811/WS2812/WS2812B RGB-LEDs +* Author: Tim (cpldcpu@gmail.com) +* +* Jan 18th, 2014 v2.0b Initial Version +* Nov 29th, 2015 v2.3 Added SK6812RGBW support +* +* License: GNU GPL v2 (see License.txt) +*/ + +#include "light_ws2812.h" +#include <avr/interrupt.h> +#include <avr/io.h> +#include <util/delay.h> +#include "debug.h" + +// Setleds for standard RGB +void inline ws2812_setleds(struct cRGB *ledarray, uint16_t leds) +{ + ws2812_setleds_pin(ledarray,leds, _BV(ws2812_pin)); +} + +void inline ws2812_setleds_pin(struct cRGB *ledarray, uint16_t leds, uint8_t pinmask) +{ + ws2812_DDRREG |= pinmask; // Enable DDR + ws2812_sendarray_mask((uint8_t*)ledarray,leds+leds+leds,pinmask); + _delay_us(50); +} + +// Setleds for SK6812RGBW +void inline ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t leds) +{ + ws2812_DDRREG |= _BV(ws2812_pin); // Enable DDR + ws2812_sendarray_mask((uint8_t*)ledarray,leds<<2,_BV(ws2812_pin)); + _delay_us(80); +} + +void ws2812_sendarray(uint8_t *data,uint16_t datlen) +{ + ws2812_sendarray_mask(data,datlen,_BV(ws2812_pin)); +} + +/* + This routine writes an array of bytes with RGB values to the Dataout pin + using the fast 800kHz clockless WS2811/2812 protocol. +*/ + +// Timing in ns +#define w_zeropulse 350 +#define w_onepulse 900 +#define w_totalperiod 1250 + +// Fixed cycles used by the inner loop +#define w_fixedlow 2 +#define w_fixedhigh 4 +#define w_fixedtotal 8 + +// Insert NOPs to match the timing, if possible +#define w_zerocycles (((F_CPU/1000)*w_zeropulse )/1000000) +#define w_onecycles (((F_CPU/1000)*w_onepulse +500000)/1000000) +#define w_totalcycles (((F_CPU/1000)*w_totalperiod +500000)/1000000) + +// w1 - nops between rising edge and falling edge - low +#define w1 (w_zerocycles-w_fixedlow) +// w2 nops between fe low and fe high +#define w2 (w_onecycles-w_fixedhigh-w1) +// w3 nops to complete loop +#define w3 (w_totalcycles-w_fixedtotal-w1-w2) + +#if w1>0 + #define w1_nops w1 +#else + #define w1_nops 0 +#endif + +// The only critical timing parameter is the minimum pulse length of the "0" +// Warn or throw error if this timing can not be met with current F_CPU settings. +#define w_lowtime ((w1_nops+w_fixedlow)*1000000)/(F_CPU/1000) +#if w_lowtime>550 + #error "Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?" +#elif w_lowtime>450 + #warning "Light_ws2812: The timing is critical and may only work on WS2812B, not on WS2812(S)." + #warning "Please consider a higher clockspeed, if possible" +#endif + +#if w2>0 +#define w2_nops w2 +#else +#define w2_nops 0 +#endif + +#if w3>0 +#define w3_nops w3 +#else +#define w3_nops 0 +#endif + +#define w_nop1 "nop \n\t" +#define w_nop2 "rjmp .+0 \n\t" +#define w_nop4 w_nop2 w_nop2 +#define w_nop8 w_nop4 w_nop4 +#define w_nop16 w_nop8 w_nop8 + +void inline ws2812_sendarray_mask(uint8_t *data,uint16_t datlen,uint8_t maskhi) +{ + uint8_t curbyte,ctr,masklo; + uint8_t sreg_prev; + + masklo =~maskhi&ws2812_PORTREG; + maskhi |= ws2812_PORTREG; + sreg_prev=SREG; + cli(); + + while (datlen--) { + curbyte=*data++; + + asm volatile( + " ldi %0,8 \n\t" + "loop%=: \n\t" + " out %2,%3 \n\t" // '1' [01] '0' [01] - re +#if (w1_nops&1) +w_nop1 +#endif +#if (w1_nops&2) +w_nop2 +#endif +#if (w1_nops&4) +w_nop4 +#endif +#if (w1_nops&8) +w_nop8 +#endif +#if (w1_nops&16) +w_nop16 +#endif + " sbrs %1,7 \n\t" // '1' [03] '0' [02] + " out %2,%4 \n\t" // '1' [--] '0' [03] - fe-low + " lsl %1 \n\t" // '1' [04] '0' [04] +#if (w2_nops&1) + w_nop1 +#endif +#if (w2_nops&2) + w_nop2 +#endif +#if (w2_nops&4) + w_nop4 +#endif +#if (w2_nops&8) + w_nop8 +#endif +#if (w2_nops&16) + w_nop16 +#endif + " out %2,%4 \n\t" // '1' [+1] '0' [+1] - fe-high +#if (w3_nops&1) +w_nop1 +#endif +#if (w3_nops&2) +w_nop2 +#endif +#if (w3_nops&4) +w_nop4 +#endif +#if (w3_nops&8) +w_nop8 +#endif +#if (w3_nops&16) +w_nop16 +#endif + + " dec %0 \n\t" // '1' [+2] '0' [+2] + " brne loop%=\n\t" // '1' [+3] '0' [+4] + : "=&d" (ctr) + : "r" (curbyte), "I" (_SFR_IO_ADDR(ws2812_PORTREG)), "r" (maskhi), "r" (masklo) + ); + } + + SREG=sreg_prev; +} diff --git a/quantum/light_ws2812.h b/quantum/light_ws2812.h new file mode 100755 index 0000000000..54eef22d9e --- /dev/null +++ b/quantum/light_ws2812.h @@ -0,0 +1,73 @@ +/* + * light weight WS2812 lib include + * + * Version 2.3 - Nev 29th 2015 + * Author: Tim (cpldcpu@gmail.com) + * + * Please do not change this file! All configuration is handled in "ws2812_config.h" + * + * License: GNU GPL v2 (see License.txt) + + + */ + +#ifndef LIGHT_WS2812_H_ +#define LIGHT_WS2812_H_ + +#include <avr/io.h> +#include <avr/interrupt.h> +//#include "ws2812_config.h" + +/* + * Structure of the LED array + * + * cRGB: RGB for WS2812S/B/C/D, SK6812, SK6812Mini, SK6812WWA, APA104, APA106 + * cRGBW: RGBW for SK6812RGBW + */ + +struct cRGB { uint8_t g; uint8_t r; uint8_t b; }; +struct cRGBW { uint8_t g; uint8_t r; uint8_t b; uint8_t w;}; + + + +/* User Interface + * + * Input: + * ledarray: An array of GRB data describing the LED colors + * number_of_leds: The number of LEDs to write + * pinmask (optional): Bitmask describing the output bin. e.g. _BV(PB0) + * + * The functions will perform the following actions: + * - Set the data-out pin as output + * - Send out the LED data + * - Wait 50�s to reset the LEDs + */ + +void ws2812_setleds (struct cRGB *ledarray, uint16_t number_of_leds); +void ws2812_setleds_pin (struct cRGB *ledarray, uint16_t number_of_leds,uint8_t pinmask); +void ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t number_of_leds); + +/* + * Old interface / Internal functions + * + * The functions take a byte-array and send to the data output as WS2812 bitstream. + * The length is the number of bytes to send - three per LED. + */ + +void ws2812_sendarray (uint8_t *array,uint16_t length); +void ws2812_sendarray_mask(uint8_t *array,uint16_t length, uint8_t pinmask); + + +/* + * Internal defines + */ +#ifndef CONCAT +#define CONCAT(a, b) a ## b +#endif +#ifndef CONCAT_EXP +#define CONCAT_EXP(a, b) CONCAT(a, b) +#endif + +// #define ws2812_PORTREG CONCAT_EXP(PORT,ws2812_port) +// #define ws2812_DDRREG CONCAT_EXP(DDR,ws2812_port) + +#endif /* LIGHT_WS2812_H_ */ diff --git a/quantum/quantum.mk b/quantum/quantum.mk index c82e478725..de93af7e8c 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -2,21 +2,45 @@ QUANTUM_DIR = quantum # # project specific files SRC += $(QUANTUM_DIR)/keymap_common.c \ - $(QUANTUM_DIR)/led.c + $(QUANTUM_DIR)/led.c + +# ifdef KEYMAP_FILE +# ifneq (,$(shell grep USING_MIDI '$(KEYMAP_FILE)')) +# MIDI_ENABLE=yes +# $(info * Overriding MIDI_ENABLE setting - $(KEYMAP_FILE) requires it) +# endif +# ifneq (,$(shell grep USING_UNICODE '$(KEYMAP_FILE)')) +# UNICODE_ENABLE=yes +# $(info * Overriding UNICODE_ENABLE setting - $(KEYMAP_FILE) requires it) +# endif +# ifneq (,$(shell grep USING_BACKLIGHT '$(KEYMAP_FILE)')) +# BACKLIGHT_ENABLE=yes +# $(info * Overriding BACKLIGHT_ENABLE setting - $(KEYMAP_FILE) requires it) +# endif +# endif ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif ifdef MIDI_ENABLE - SRC += $(QUANTUM_DIR)/keymap_midi.c \ - $(QUANTUM_DIR)/beeps.c + SRC += $(QUANTUM_DIR)/keymap_midi.c +endif + +ifdef AUDIO_ENABLE + SRC += $(QUANTUM_DIR)/audio.c endif ifdef UNICODE_ENABLE SRC += $(QUANTUM_DIR)/keymap_unicode.c endif +ifdef RGBLIGHT_ENABLE + SRC += $(QUANTUM_DIR)/light_ws2812.c + SRC += $(QUANTUM_DIR)/rgblight.c + OPT_DEFS += -DRGBLIGHT_ENABLE +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax @@ -27,4 +51,3 @@ include $(TMK_DIR)/protocol/lufa.mk include $(TMK_DIR)/common.mk include $(TMK_DIR)/rules.mk - diff --git a/quantum/rgblight.c b/quantum/rgblight.c new file mode 100644 index 0000000000..2215cf5cdf --- /dev/null +++ b/quantum/rgblight.c @@ -0,0 +1,505 @@ +#include <avr/eeprom.h> +#include <avr/interrupt.h> +#include <util/delay.h> +#include "progmem.h" +#include "timer.h" +#include "rgblight.h" +#include "debug.h" + +const uint8_t DIM_CURVE[] PROGMEM = { + 0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, + 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, + 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, + 15, 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, + 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26, 26, + 27, 27, 28, 28, 29, 29, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, + 36, 36, 37, 38, 38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 47, + 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 81, 82, + 83, 85, 86, 88, 90, 91, 93, 94, 96, 98, 99, 101, 103, 105, 107, 109, + 110, 112, 114, 116, 118, 121, 123, 125, 127, 129, 132, 134, 136, 139, 141, 144, + 146, 149, 151, 154, 157, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 190, + 193, 196, 200, 203, 207, 211, 214, 218, 222, 226, 230, 234, 238, 242, 248, 255, +}; +const uint8_t RGBLED_BREATHING_TABLE[] PROGMEM = {0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,17,18,20,21,23,25,27,29,31,33,35,37,40,42,44,47,49,52,54,57,59,62,65,67,70,73,76,79,82,85,88,90,93,97,100,103,106,109,112,115,118,121,124,127,131,134,137,140,143,146,149,152,155,158,162,165,167,170,173,176,179,182,185,188,190,193,196,198,201,203,206,208,211,213,215,218,220,222,224,226,228,230,232,234,235,237,238,240,241,243,244,245,246,248,249,250,250,251,252,253,253,254,254,254,255,255,255,255,255,255,255,254,254,254,253,253,252,251,250,250,249,248,246,245,244,243,241,240,238,237,235,234,232,230,228,226,224,222,220,218,215,213,211,208,206,203,201,198,196,193,190,188,185,182,179,176,173,170,167,165,162,158,155,152,149,146,143,140,137,134,131,128,124,121,118,115,112,109,106,103,100,97,93,90,88,85,82,79,76,73,70,67,65,62,59,57,54,52,49,47,44,42,40,37,35,33,31,29,27,25,23,21,20,18,17,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0}; +const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5}; +const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {120, 60, 30}; +const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {100, 50, 20}; +const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20}; +const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {100, 50, 20}; + +rgblight_config_t rgblight_config; +rgblight_config_t inmem_config; +struct cRGB led[RGBLED_NUM]; +uint8_t rgblight_inited = 0; + + +void sethsv(uint16_t hue, uint8_t sat, uint8_t val, struct cRGB *led1) { + /* convert hue, saturation and brightness ( HSB/HSV ) to RGB + The DIM_CURVE is used only on brightness/value and on saturation (inverted). + This looks the most natural. + */ + uint8_t r, g, b; + + val = pgm_read_byte(&DIM_CURVE[val]); + sat = 255 - pgm_read_byte(&DIM_CURVE[255 - sat]); + + uint8_t base; + + if (sat == 0) { // Acromatic color (gray). Hue doesn't mind. + r = val; + g = val; + b = val; + } else { + base = ((255 - sat) * val) >> 8; + + switch (hue / 60) { + case 0: + r = val; + g = (((val - base)*hue) / 60) + base; + b = base; + break; + + case 1: + r = (((val - base)*(60 - (hue % 60))) / 60) + base; + g = val; + b = base; + break; + + case 2: + r = base; + g = val; + b = (((val - base)*(hue % 60)) / 60) + base; + break; + + case 3: + r = base; + g = (((val - base)*(60 - (hue % 60))) / 60) + base; + b = val; + break; + + case 4: + r = (((val - base)*(hue % 60)) / 60) + base; + g = base; + b = val; + break; + + case 5: + r = val; + g = base; + b = (((val - base)*(60 - (hue % 60))) / 60) + base; + break; + } + } + setrgb(r,g,b, led1); +} + +void setrgb(uint8_t r, uint8_t g, uint8_t b, struct cRGB *led1) { + (*led1).r = r; + (*led1).g = g; + (*led1).b = b; +} + + +uint32_t eeconfig_read_rgblight(void) { + return eeprom_read_dword(EECONFIG_RGBLIGHT); +} +void eeconfig_write_rgblight(uint32_t val) { + eeprom_write_dword(EECONFIG_RGBLIGHT, val); +} +void eeconfig_write_rgblight_default(void) { + dprintf("eeconfig_write_rgblight_default\n"); + rgblight_config.enable = 1; + rgblight_config.mode = 1; + rgblight_config.hue = 200; + rgblight_config.sat = 204; + rgblight_config.val = 204; + eeconfig_write_rgblight(rgblight_config.raw); +} +void eeconfig_debug_rgblight(void) { + dprintf("rgblight_config eprom\n"); + dprintf("rgblight_config.enable = %d\n", rgblight_config.enable); + dprintf("rghlight_config.mode = %d\n", rgblight_config.mode); + dprintf("rgblight_config.hue = %d\n", rgblight_config.hue); + dprintf("rgblight_config.sat = %d\n", rgblight_config.sat); + dprintf("rgblight_config.val = %d\n", rgblight_config.val); +} + +void rgblight_init(void) { + debug_enable = 1; // Debug ON! + dprintf("rgblight_init called.\n"); + rgblight_inited = 1; + dprintf("rgblight_init start!\n"); + if (!eeconfig_is_enabled()) { + dprintf("rgblight_init eeconfig is not enabled.\n"); + eeconfig_init(); + eeconfig_write_rgblight_default(); + } + rgblight_config.raw = eeconfig_read_rgblight(); + if (!rgblight_config.mode) { + dprintf("rgblight_init rgblight_config.mode = 0. Write default values to EEPROM.\n"); + eeconfig_write_rgblight_default(); + rgblight_config.raw = eeconfig_read_rgblight(); + } + eeconfig_debug_rgblight(); // display current eeprom values + + rgblight_timer_init(); // setup the timer + + if (rgblight_config.enable) { + rgblight_mode(rgblight_config.mode); + } +} + +void rgblight_increase(void) { + uint8_t mode; + if (rgblight_config.mode < RGBLIGHT_MODES) { + mode = rgblight_config.mode + 1; + } + rgblight_mode(mode); +} + +void rgblight_decrease(void) { + uint8_t mode; + if (rgblight_config.mode > 1) { //mode will never < 1, if mode is less than 1, eeprom need to be initialized. + mode = rgblight_config.mode-1; + } + rgblight_mode(mode); +} + +void rgblight_step(void) { + uint8_t mode; + mode = rgblight_config.mode + 1; + if (mode > RGBLIGHT_MODES) { + mode = 1; + } + rgblight_mode(mode); +} + +void rgblight_mode(uint8_t mode) { + if (!rgblight_config.enable) { + return; + } + if (mode<1) { + rgblight_config.mode = 1; + } else if (mode > RGBLIGHT_MODES) { + rgblight_config.mode = RGBLIGHT_MODES; + } else { + rgblight_config.mode = mode; + } + eeconfig_write_rgblight(rgblight_config.raw); + dprintf("rgblight mode: %u\n", rgblight_config.mode); + if (rgblight_config.mode == 1) { + rgblight_timer_disable(); + } else if (rgblight_config.mode >=2 && rgblight_config.mode <=23) { + // MODE 2-5, breathing + // MODE 6-8, rainbow mood + // MODE 9-14, rainbow swirl + // MODE 15-20, snake + // MODE 21-23, knight + rgblight_timer_enable(); + } + rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val); +} + +void rgblight_toggle(void) { + rgblight_config.enable ^= 1; + eeconfig_write_rgblight(rgblight_config.raw); + dprintf("rgblight toggle: rgblight_config.enable = %u\n", rgblight_config.enable); + if (rgblight_config.enable) { + rgblight_mode(rgblight_config.mode); + } else { + rgblight_timer_disable(); + _delay_ms(50); + rgblight_set(); + } +} + + +void rgblight_increase_hue(void){ + uint16_t hue; + hue = (rgblight_config.hue+RGBLIGHT_HUE_STEP) % 360; + rgblight_sethsv(hue, rgblight_config.sat, rgblight_config.val); +} +void rgblight_decrease_hue(void){ + uint16_t hue; + if (rgblight_config.hue-RGBLIGHT_HUE_STEP <0 ) { + hue = (rgblight_config.hue+360-RGBLIGHT_HUE_STEP) % 360; + } else { + hue = (rgblight_config.hue-RGBLIGHT_HUE_STEP) % 360; + } + rgblight_sethsv(hue, rgblight_config.sat, rgblight_config.val); +} +void rgblight_increase_sat(void) { + uint8_t sat; + if (rgblight_config.sat + RGBLIGHT_SAT_STEP > 255) { + sat = 255; + } else { + sat = rgblight_config.sat+RGBLIGHT_SAT_STEP; + } + rgblight_sethsv(rgblight_config.hue, sat, rgblight_config.val); +} +void rgblight_decrease_sat(void){ + uint8_t sat; + if (rgblight_config.sat - RGBLIGHT_SAT_STEP < 0) { + sat = 0; + } else { + sat = rgblight_config.sat-RGBLIGHT_SAT_STEP; + } + rgblight_sethsv(rgblight_config.hue, sat, rgblight_config.val); +} +void rgblight_increase_val(void){ + uint8_t val; + if (rgblight_config.val + RGBLIGHT_VAL_STEP > 255) { + val = 255; + } else { + val = rgblight_config.val+RGBLIGHT_VAL_STEP; + } + rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val); +} +void rgblight_decrease_val(void) { + uint8_t val; + if (rgblight_config.val - RGBLIGHT_VAL_STEP < 0) { + val = 0; + } else { + val = rgblight_config.val-RGBLIGHT_VAL_STEP; + } + rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val); +} + +void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val){ + inmem_config.raw = rgblight_config.raw; + if (rgblight_config.enable) { + struct cRGB tmp_led; + sethsv(hue, sat, val, &tmp_led); + inmem_config.hue = hue; + inmem_config.sat = sat; + inmem_config.val = val; + // dprintf("rgblight set hue [MEMORY]: %u,%u,%u\n", inmem_config.hue, inmem_config.sat, inmem_config.val); + rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b); + } +} +void rgblight_sethsv(uint16_t hue, uint8_t sat, uint8_t val){ + if (rgblight_config.enable) { + if (rgblight_config.mode == 1) { + // same static color + rgblight_sethsv_noeeprom(hue, sat, val); + } else { + // all LEDs in same color + if (rgblight_config.mode >= 2 && rgblight_config.mode <= 5) { + // breathing mode, ignore the change of val, use in memory value instead + val = rgblight_config.val; + } else if (rgblight_config.mode >= 6 && rgblight_config.mode <= 14) { + // rainbow mood and rainbow swirl, ignore the change of hue + hue = rgblight_config.hue; + } + } + rgblight_config.hue = hue; + rgblight_config.sat = sat; + rgblight_config.val = val; + eeconfig_write_rgblight(rgblight_config.raw); + dprintf("rgblight set hsv [EEPROM]: %u,%u,%u\n", rgblight_config.hue, rgblight_config.sat, rgblight_config.val); + } +} + +void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b){ + // dprintf("rgblight set rgb: %u,%u,%u\n", r,g,b); + for (uint8_t i=0;i<RGBLED_NUM;i++) { + led[i].r = r; + led[i].g = g; + led[i].b = b; + } + rgblight_set(); + +} + +void rgblight_set(void) { + if (rgblight_config.enable) { + ws2812_setleds(led, RGBLED_NUM); + } else { + for (uint8_t i=0;i<RGBLED_NUM;i++) { + led[i].r = 0; + led[i].g = 0; + led[i].b = 0; + } + ws2812_setleds(led, RGBLED_NUM); + } +} + +// Animation timer -- AVR Timer3 +void rgblight_timer_init(void) { + static uint8_t rgblight_timer_is_init = 0; + if (rgblight_timer_is_init) { + return; + } + rgblight_timer_is_init = 1; + /* Timer 3 setup */ + TCCR3B = _BV(WGM32) //CTC mode OCR3A as TOP + | _BV(CS30); //Clock selelct: clk/1 + /* Set TOP value */ + uint8_t sreg = SREG; + cli(); + OCR3AH = (RGBLED_TIMER_TOP>>8)&0xff; + OCR3AL = RGBLED_TIMER_TOP&0xff; + SREG = sreg; +} +void rgblight_timer_enable(void) { + TIMSK3 |= _BV(OCIE3A); + dprintf("TIMER3 enabled.\n"); +} +void rgblight_timer_disable(void) { + TIMSK3 &= ~_BV(OCIE3A); + dprintf("TIMER3 disabled.\n"); +} +void rgblight_timer_toggle(void) { + TIMSK3 ^= _BV(OCIE3A); + dprintf("TIMER3 toggled.\n"); +} + +ISR(TIMER3_COMPA_vect) { + // Mode = 1, static light, do nothing here + if (rgblight_config.mode>=2 && rgblight_config.mode<=5) { + // mode = 2 to 5, breathing mode + rgblight_effect_breathing(rgblight_config.mode-2); + + } else if (rgblight_config.mode>=6 && rgblight_config.mode<=8) { + rgblight_effect_rainbow_mood(rgblight_config.mode-6); + } else if (rgblight_config.mode>=9 && rgblight_config.mode<=14) { + rgblight_effect_rainbow_swirl(rgblight_config.mode-9); + } else if (rgblight_config.mode>=15 && rgblight_config.mode<=20) { + rgblight_effect_snake(rgblight_config.mode-15); + } else if (rgblight_config.mode>=21 && rgblight_config.mode<=23) { + rgblight_effect_knight(rgblight_config.mode-21); + } +} + +// effects +void rgblight_effect_breathing(uint8_t interval) { + static uint8_t pos = 0; + static uint16_t last_timer = 0; + + if (timer_elapsed(last_timer)<pgm_read_byte(&RGBLED_BREATHING_INTERVALS[interval])) return; + last_timer = timer_read(); + + rgblight_sethsv_noeeprom(rgblight_config.hue, rgblight_config.sat, pgm_read_byte(&RGBLED_BREATHING_TABLE[pos])); + pos = (pos+1) % 256; +} + +void rgblight_effect_rainbow_mood(uint8_t interval) { + static uint16_t current_hue=0; + static uint16_t last_timer = 0; + + if (timer_elapsed(last_timer)<pgm_read_byte(&RGBLED_RAINBOW_MOOD_INTERVALS[interval])) return; + last_timer = timer_read(); + rgblight_sethsv_noeeprom(current_hue, rgblight_config.sat, rgblight_config.val); + current_hue = (current_hue+1) % 360; +} + +void rgblight_effect_rainbow_swirl(uint8_t interval) { + static uint16_t current_hue=0; + static uint16_t last_timer = 0; + uint16_t hue; + uint8_t i; + if (timer_elapsed(last_timer)<pgm_read_byte(&RGBLED_RAINBOW_MOOD_INTERVALS[interval/2])) return; + last_timer = timer_read(); + for (i=0; i<RGBLED_NUM; i++) { + hue = (360/RGBLED_NUM*i+current_hue)%360; + sethsv(hue, rgblight_config.sat, rgblight_config.val, &led[i]); + } + rgblight_set(); + + if (interval % 2) { + current_hue = (current_hue+1) % 360; + } else { + if (current_hue -1 < 0) { + current_hue = 359; + } else { + current_hue = current_hue - 1; + } + + } +} +void rgblight_effect_snake(uint8_t interval) { + static uint8_t pos=0; + static uint16_t last_timer = 0; + uint8_t i,j; + int8_t k; + int8_t increament = 1; + if (interval%2) increament = -1; + if (timer_elapsed(last_timer)<pgm_read_byte(&RGBLED_SNAKE_INTERVALS[interval/2])) return; + last_timer = timer_read(); + for (i=0;i<RGBLED_NUM;i++) { + led[i].r=0; + led[i].g=0; + led[i].b=0; + for (j=0;j<RGBLIGHT_EFFECT_SNAKE_LENGTH;j++) { + k = pos+j*increament; + if (k<0) k = k+RGBLED_NUM; + if (i==k) { + sethsv(rgblight_config.hue, rgblight_config.sat, (uint8_t)(rgblight_config.val*(RGBLIGHT_EFFECT_SNAKE_LENGTH-j)/RGBLIGHT_EFFECT_SNAKE_LENGTH), &led[i]); + } + } + } + rgblight_set(); + if (increament == 1) { + if (pos - 1 < 0) { + pos = RGBLED_NUM-1; + } else { + pos -= 1; + } + } else { + pos = (pos+1)%RGBLED_NUM; + } + +} + +void rgblight_effect_knight(uint8_t interval) { + static int8_t pos=0; + static uint16_t last_timer = 0; + uint8_t i,j,cur; + int8_t k; + struct cRGB preled[RGBLED_NUM]; + static int8_t increament = -1; + if (timer_elapsed(last_timer)<pgm_read_byte(&RGBLED_KNIGHT_INTERVALS[interval])) return; + last_timer = timer_read(); + for (i=0;i<RGBLED_NUM;i++) { + preled[i].r=0; + preled[i].g=0; + preled[i].b=0; + for (j=0;j<RGBLIGHT_EFFECT_KNIGHT_LENGTH;j++) { + k = pos+j*increament; + if (k<0) k = 0; + if (k>=RGBLED_NUM) k=RGBLED_NUM-1; + if (i==k) { + sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, &preled[i]); + } + } + } + if (RGBLIGHT_EFFECT_KNIGHT_OFFSET) { + for (i=0;i<RGBLED_NUM;i++) { + cur = (i+RGBLIGHT_EFFECT_KNIGHT_OFFSET) % RGBLED_NUM; + led[i].r = preled[cur].r; + led[i].g = preled[cur].g; + led[i].b = preled[cur].b; + } + } + rgblight_set(); + if (increament == 1) { + if (pos - 1 < 0 - RGBLIGHT_EFFECT_KNIGHT_LENGTH) { + pos = 0- RGBLIGHT_EFFECT_KNIGHT_LENGTH; + increament = -1; + } else { + pos -= 1; + } + } else { + if (pos+1>RGBLED_NUM+RGBLIGHT_EFFECT_KNIGHT_LENGTH) { + pos = RGBLED_NUM+RGBLIGHT_EFFECT_KNIGHT_LENGTH-1; + increament = 1; + } else { + pos += 1; + } + } + +} diff --git a/quantum/rgblight.h b/quantum/rgblight.h new file mode 100644 index 0000000000..9e1562328f --- /dev/null +++ b/quantum/rgblight.h @@ -0,0 +1,87 @@ +#ifndef RGBLIGHT_H +#define RGBLIGHT_H + +#ifndef RGBLIGHT_MODES +#define RGBLIGHT_MODES 23 +#endif + +#ifndef RGBLIGHT_EFFECT_SNAKE_LENGTH +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 7 +#endif + +#ifndef RGBLIGHT_EFFECT_KNIGHT_LENGTH +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 7 +#endif +#ifndef RGBLIGHT_EFFECT_KNIGHT_OFFSET +#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 9 +#endif + +#ifndef RGBLIGHT_EFFECT_DUALKNIGHT_LENGTH +#define RGBLIGHT_EFFECT_DUALKNIGHT_LENGTH 4 +#endif + +#ifndef RGBLIGHT_HUE_STEP +#define RGBLIGHT_HUE_STEP 10 +#endif +#ifndef RGBLIGHT_SAT_STEP +#define RGBLIGHT_SAT_STEP 17 +#endif +#ifndef RGBLIGHT_VAL_STEP +#define RGBLIGHT_VAL_STEP 17 +#endif + +#define RGBLED_TIMER_TOP F_CPU/(256*64) + +#include <stdint.h> +#include <stdbool.h> +#include "eeconfig.h" +#include "light_ws2812.h" + +typedef union { + uint32_t raw; + struct { + bool enable :1; + uint8_t mode :6; + uint16_t hue :9; + uint8_t sat :8; + uint8_t val :8; + }; +} rgblight_config_t; + +void rgblight_init(void); +void rgblight_increase(void); +void rgblight_decrease(void); +void rgblight_toggle(void); +void rgblight_step(void); +void rgblight_mode(uint8_t mode); +void rgblight_set(void); +void rgblight_increase_hue(void); +void rgblight_decrease_hue(void); +void rgblight_increase_sat(void); +void rgblight_decrease_sat(void); +void rgblight_increase_val(void); +void rgblight_decrease_val(void); +void rgblight_sethsv(uint16_t hue, uint8_t sat, uint8_t val); +void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b); + +#define EECONFIG_RGBLIGHT (uint8_t *)7 +uint32_t eeconfig_read_rgblight(void); +void eeconfig_write_rgblight(uint32_t val); +void eeconfig_write_rgblight_default(void); +void eeconfig_debug_rgblight(void); + +void sethsv(uint16_t hue, uint8_t sat, uint8_t val, struct cRGB *led1); +void setrgb(uint8_t r, uint8_t g, uint8_t b, struct cRGB *led1); +void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val); + +void rgblight_timer_init(void); +void rgblight_timer_enable(void); +void rgblight_timer_disable(void); +void rgblight_timer_toggle(void); +void rgblight_effect_breathing(uint8_t interval); +void rgblight_effect_rainbow_mood(uint8_t interval); +void rgblight_effect_rainbow_swirl(uint8_t interval); +void rgblight_effect_snake(uint8_t interval); +void rgblight_effect_knight(uint8_t interval); + +#endif diff --git a/quantum/template/Makefile b/quantum/template/Makefile index 99c97a62cf..2efa691380 100644 --- a/quantum/template/Makefile +++ b/quantum/template/Makefile @@ -53,9 +53,9 @@ TARGET_DIR = . SRC = %KEYBOARD%.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 @@ -107,7 +107,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Atmel DFU loader 4096 # LUFA bootloader 4096 # USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +OPT_DEFS += -DBOOTLOADER_SIZE=512 # Build Options diff --git a/quantum/template/README.md b/quantum/template/README.md index ecea7dd698..dc163a2f4b 100644 --- a/quantum/template/README.md +++ b/quantum/template/README.md @@ -3,167 +3,11 @@ ## Quantum MK Firmware -You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. - - BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // - BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - -## Quick aliases to common actions - -Your keymap can include shortcuts to common operations (called "function actions" in tmk). - -### Switching and toggling layers - -`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. - -`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). - -`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. - -### Fun with modifier keys - -* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias -* `RSFT(kc)` - applies right Shift to *kc* -* `LCTL(kc)` - applies left Control to *kc* -* `RCTL(kc)` - applies right Control to *kc* -* `LALT(kc)` - applies left Alt to *kc* -* `RALT(kc)` - applies right Alt to *kc* -* `LGUI(kc)` - applies left GUI (command/win) to *kc* -* `RGUI(kc)` - applies right GUI (command/win) to *kc* - -You can also chain these, like this: - - LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. - -The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. - - KC_TILD ~ - KC_EXLM ! - KC_AT @ - KC_HASH # - KC_DLR $ - KC_PERC % - KC_CIRC ^ - KC_AMPR & - KC_ASTR * - KC_LPRN ( - KC_RPRN ) - KC_UNDS _ - KC_PLUS + - KC_LCBR { - KC_RCBR } - KC_PIPE | - KC_COLN : - -`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. - -These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): - - * MOD_LCTL - * MOD_LSFT - * MOD_LALT - * MOD_LGUI - -These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. - -We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: - - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped - * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) - -### Temporarily setting the default layer - -`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. - -### Remember: These are just aliases - -These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action). - -Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. - -## Macro shortcuts: Send a whole string when pressing just one key - -Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. -{ - switch(id) { - case 0: // this would trigger when you hit a key mapped as M(0) - if (record->event.pressed) { - return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes - } - break; - } - return MACRO_NONE; -}; -``` -A macro can include the following commands: - -* I() change interval of stroke in milliseconds. -* D() press key. -* U() release key. -* T() type key(press and release). -* W() wait (milliseconds). -* END end mark. - -So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. - -Note: Using macros to have your keyboard send passwords for you is a bad idea. - -### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) - -Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - - #include "keymap_<layout>.h" - -Where <layout> is "colemak" or "dvorak". After including this line, you will get access to: - - * `CM_*` for all of the Colemak-equivalent characters - * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. - -To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. - -## Additional language support - -In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). - -## Unicode support - -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. - -## Other firmware shortcut keycodes - -* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) -* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things -* `BL_ON` - turns the backlight on -* `BL_OFF` - turns the backlight off -* `BL_<n>` - sets the backlight to level *n* -* `BL_INC` - increments the backlight level by one -* `BL_DEC` - decrements the backlight level by one -* `BL_TOGG` - toggles the backlight -* `BL_STEP` - steps through the backlight levels - -Enable the backlight from the Makefile. - -## MIDI functionalty - -This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. - -## Bluetooth functionality - -This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. +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/%KEYBOARD% folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. Depending on which keymap you would like to use, you will have to compile slightly differently. @@ -171,10 +15,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_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: ``` $ make KEYMAP=[default|jack|<name>] ``` -Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
\ No newline at end of file +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
\ No newline at end of file diff --git a/quantum/template/config.h b/quantum/template/config.h index 9afedbcc07..7d6149f436 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -29,14 +29,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define DESCRIPTION A custom keyboard /* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 // Planck PCB default pin-out // Change this to how you wired your keyboard // COLS: Left to right, ROWS: Top to bottom -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D0, D5, B5, B6 } +#define COLS (int []){ F1, F0, B0 } +#define ROWS (int []){ D0, D5 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/quantum/template/keymaps/default.c b/quantum/template/keymaps/default.c new file mode 100644 index 0000000000..4121fd860c --- /dev/null +++ b/quantum/template/keymaps/default.c @@ -0,0 +1,30 @@ +// 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 "%KEYBOARD%.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Base */ + KC_A, KC_1, KC_H, \ + KC_TAB, KC_SPC \ +), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/quantum/template/template.h b/quantum/template/template.h index de3edf3242..d4d78e4c91 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -11,16 +11,12 @@ // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array #define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - 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, k37, k38, k39, k3a, k3b \ + k00, k01, k02, \ + k10, k11, \ ) \ { \ - { 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 } \ + { k00, k01, k02 }, \ + { k10, KC_NO, k11 }, \ } void * matrix_init_user(void); diff --git a/quantum/wave.h b/quantum/wave.h new file mode 100644 index 0000000000..6ebc348519 --- /dev/null +++ b/quantum/wave.h @@ -0,0 +1,265 @@ +#include <avr/io.h> +#include <avr/interrupt.h> +#include <avr/pgmspace.h> + +#define SINE_LENGTH 2048 + +const uint8_t sinewave[] PROGMEM= //2048 values +{ +0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82, +0x83,0x83,0x83,0x84,0x84,0x85,0x85,0x85, +0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x88, +0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c, +0x8c,0x8c,0x8d,0x8d,0x8e,0x8e,0x8e,0x8f, +0x8f,0x8f,0x90,0x90,0x91,0x91,0x91,0x92, +0x92,0x93,0x93,0x93,0x94,0x94,0x95,0x95, +0x95,0x96,0x96,0x96,0x97,0x97,0x98,0x98, +0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9b, +0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e, +0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1, +0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4, +0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7, +0xa7,0xa8,0xa8,0xa9,0xa9,0xa9,0xaa,0xaa, +0xaa,0xab,0xab,0xac,0xac,0xac,0xad,0xad, +0xad,0xae,0xae,0xae,0xaf,0xaf,0xb0,0xb0, +0xb0,0xb1,0xb1,0xb1,0xb2,0xb2,0xb2,0xb3, +0xb3,0xb4,0xb4,0xb4,0xb5,0xb5,0xb5,0xb6, +0xb6,0xb6,0xb7,0xb7,0xb7,0xb8,0xb8,0xb8, +0xb9,0xb9,0xba,0xba,0xba,0xbb,0xbb,0xbb, +0xbc,0xbc,0xbc,0xbd,0xbd,0xbd,0xbe,0xbe, +0xbe,0xbf,0xbf,0xbf,0xc0,0xc0,0xc0,0xc1, +0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc3, +0xc4,0xc4,0xc4,0xc5,0xc5,0xc5,0xc6,0xc6, +0xc6,0xc7,0xc7,0xc7,0xc8,0xc8,0xc8,0xc9, +0xc9,0xc9,0xca,0xca,0xca,0xcb,0xcb,0xcb, +0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce, +0xce,0xce,0xcf,0xcf,0xcf,0xcf,0xd0,0xd0, +0xd0,0xd1,0xd1,0xd1,0xd2,0xd2,0xd2,0xd2, +0xd3,0xd3,0xd3,0xd4,0xd4,0xd4,0xd5,0xd5, +0xd5,0xd5,0xd6,0xd6,0xd6,0xd7,0xd7,0xd7, +0xd7,0xd8,0xd8,0xd8,0xd9,0xd9,0xd9,0xd9, +0xda,0xda,0xda,0xda,0xdb,0xdb,0xdb,0xdc, +0xdc,0xdc,0xdc,0xdd,0xdd,0xdd,0xdd,0xde, +0xde,0xde,0xde,0xdf,0xdf,0xdf,0xe0,0xe0, +0xe0,0xe0,0xe1,0xe1,0xe1,0xe1,0xe2,0xe2, +0xe2,0xe2,0xe3,0xe3,0xe3,0xe3,0xe4,0xe4, +0xe4,0xe4,0xe4,0xe5,0xe5,0xe5,0xe5,0xe6, +0xe6,0xe6,0xe6,0xe7,0xe7,0xe7,0xe7,0xe8, +0xe8,0xe8,0xe8,0xe8,0xe9,0xe9,0xe9,0xe9, +0xea,0xea,0xea,0xea,0xea,0xeb,0xeb,0xeb, +0xeb,0xeb,0xec,0xec,0xec,0xec,0xec,0xed, +0xed,0xed,0xed,0xed,0xee,0xee,0xee,0xee, +0xee,0xef,0xef,0xef,0xef,0xef,0xf0,0xf0, +0xf0,0xf0,0xf0,0xf0,0xf1,0xf1,0xf1,0xf1, +0xf1,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf3, +0xf3,0xf3,0xf3,0xf3,0xf3,0xf4,0xf4,0xf4, +0xf4,0xf4,0xf4,0xf5,0xf5,0xf5,0xf5,0xf5, +0xf5,0xf5,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, +0xf6,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7, +0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8, +0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9, +0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa, +0xfa,0xfa,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb, +0xfb,0xfb,0xfb,0xfb,0xfc,0xfc,0xfc,0xfc, +0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, +0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd, +0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe, +0xfe,0xfe,0xfe,0xfd,0xfd,0xfd,0xfd,0xfd, +0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd, +0xfd,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, +0xfc,0xfc,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb, +0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfa, +0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa, +0xfa,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9, +0xf9,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8, +0xf8,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7, +0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf5, +0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf4,0xf4, +0xf4,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf3, +0xf3,0xf3,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2, +0xf1,0xf1,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0, +0xf0,0xf0,0xf0,0xef,0xef,0xef,0xef,0xef, +0xee,0xee,0xee,0xee,0xee,0xed,0xed,0xed, +0xed,0xed,0xec,0xec,0xec,0xec,0xec,0xeb, +0xeb,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xea, +0xea,0xe9,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8, +0xe8,0xe8,0xe7,0xe7,0xe7,0xe7,0xe6,0xe6, +0xe6,0xe6,0xe5,0xe5,0xe5,0xe5,0xe4,0xe4, +0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe3,0xe2, +0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe1,0xe0, +0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde, +0xde,0xde,0xdd,0xdd,0xdd,0xdd,0xdc,0xdc, +0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda, +0xda,0xd9,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8, +0xd7,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5, +0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3, +0xd3,0xd2,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1, +0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xcf,0xce, +0xce,0xce,0xcd,0xcd,0xcd,0xcc,0xcc,0xcc, +0xcb,0xcb,0xcb,0xcb,0xca,0xca,0xca,0xc9, +0xc9,0xc9,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7, +0xc6,0xc6,0xc6,0xc5,0xc5,0xc5,0xc4,0xc4, +0xc4,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc1, +0xc1,0xc1,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf, +0xbe,0xbe,0xbe,0xbd,0xbd,0xbd,0xbc,0xbc, +0xbc,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xb9, +0xb9,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb6, +0xb6,0xb6,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4, +0xb3,0xb3,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1, +0xb0,0xb0,0xb0,0xaf,0xaf,0xae,0xae,0xae, +0xad,0xad,0xad,0xac,0xac,0xac,0xab,0xab, +0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa8, +0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa5,0xa5, +0xa5,0xa4,0xa4,0xa3,0xa3,0xa3,0xa2,0xa2, +0xa2,0xa1,0xa1,0xa0,0xa0,0xa0,0x9f,0x9f, +0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9c,0x9c, +0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x99,0x99, +0x98,0x98,0x98,0x97,0x97,0x96,0x96,0x96, +0x95,0x95,0x95,0x94,0x94,0x93,0x93,0x93, +0x92,0x92,0x91,0x91,0x91,0x90,0x90,0x8f, +0x8f,0x8f,0x8e,0x8e,0x8e,0x8d,0x8d,0x8c, +0x8c,0x8c,0x8b,0x8b,0x8a,0x8a,0x8a,0x89, +0x89,0x88,0x88,0x88,0x87,0x87,0x87,0x86, +0x86,0x85,0x85,0x85,0x84,0x84,0x83,0x83, +0x83,0x82,0x82,0x81,0x81,0x81,0x80,0x80, +0x80,0x7f,0x7f,0x7e,0x7e,0x7e,0x7d,0x7d, +0x7c,0x7c,0x7c,0x7b,0x7b,0x7a,0x7a,0x7a, +0x79,0x79,0x78,0x78,0x78,0x77,0x77,0x77, +0x76,0x76,0x75,0x75,0x75,0x74,0x74,0x73, +0x73,0x73,0x72,0x72,0x71,0x71,0x71,0x70, +0x70,0x70,0x6f,0x6f,0x6e,0x6e,0x6e,0x6d, +0x6d,0x6c,0x6c,0x6c,0x6b,0x6b,0x6a,0x6a, +0x6a,0x69,0x69,0x69,0x68,0x68,0x67,0x67, +0x67,0x66,0x66,0x65,0x65,0x65,0x64,0x64, +0x64,0x63,0x63,0x62,0x62,0x62,0x61,0x61, +0x61,0x60,0x60,0x5f,0x5f,0x5f,0x5e,0x5e, +0x5d,0x5d,0x5d,0x5c,0x5c,0x5c,0x5b,0x5b, +0x5a,0x5a,0x5a,0x59,0x59,0x59,0x58,0x58, +0x58,0x57,0x57,0x56,0x56,0x56,0x55,0x55, +0x55,0x54,0x54,0x53,0x53,0x53,0x52,0x52, +0x52,0x51,0x51,0x51,0x50,0x50,0x4f,0x4f, +0x4f,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4c, +0x4c,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x49, +0x49,0x49,0x48,0x48,0x48,0x47,0x47,0x47, +0x46,0x46,0x45,0x45,0x45,0x44,0x44,0x44, +0x43,0x43,0x43,0x42,0x42,0x42,0x41,0x41, +0x41,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3e, +0x3e,0x3e,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c, +0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x39,0x39, +0x39,0x38,0x38,0x38,0x37,0x37,0x37,0x36, +0x36,0x36,0x35,0x35,0x35,0x34,0x34,0x34, +0x34,0x33,0x33,0x33,0x32,0x32,0x32,0x31, +0x31,0x31,0x30,0x30,0x30,0x30,0x2f,0x2f, +0x2f,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d, +0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2a,0x2a, +0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,0x28, +0x28,0x27,0x27,0x27,0x26,0x26,0x26,0x26, +0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x23, +0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x21, +0x21,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f, +0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d, +0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19, +0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x17, +0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16, +0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14, +0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x12, +0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11, +0x11,0x10,0x10,0x10,0x10,0x10,0xf,0xf, +0xf,0xf,0xf,0xf,0xe,0xe,0xe,0xe, +0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xc, +0xc,0xc,0xc,0xc,0xc,0xb,0xb,0xb, +0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0x9,0x9,0x9,0x9,0x9,0x9, +0x9,0x8,0x8,0x8,0x8,0x8,0x8,0x8, +0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7, +0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6, +0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5, +0x5,0x5,0x4,0x4,0x4,0x4,0x4,0x4, +0x4,0x4,0x4,0x4,0x3,0x3,0x3,0x3, +0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3, +0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2, +0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x1, +0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1, +0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1, +0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1, +0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1, +0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1, +0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2, +0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2, +0x2,0x3,0x3,0x3,0x3,0x3,0x3,0x3, +0x3,0x3,0x3,0x3,0x3,0x4,0x4,0x4, +0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x5, +0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5, +0x5,0x6,0x6,0x6,0x6,0x6,0x6,0x6, +0x6,0x7,0x7,0x7,0x7,0x7,0x7,0x7, +0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x8, +0x9,0x9,0x9,0x9,0x9,0x9,0x9,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xb,0xb, +0xb,0xb,0xb,0xb,0xc,0xc,0xc,0xc, +0xc,0xc,0xd,0xd,0xd,0xd,0xd,0xd, +0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf, +0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10, +0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12, +0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x14, +0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15, +0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17, +0x17,0x17,0x18,0x18,0x18,0x18,0x19,0x19, +0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d, +0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f, +0x1f,0x1f,0x1f,0x20,0x20,0x20,0x21,0x21, +0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23, +0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x25, +0x25,0x26,0x26,0x26,0x26,0x27,0x27,0x27, +0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a, +0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2c,0x2c, +0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e, +0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x31, +0x31,0x31,0x32,0x32,0x32,0x33,0x33,0x33, +0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36, +0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38, +0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3b,0x3b, +0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3e, +0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40, +0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43, +0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x46, +0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x49, +0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b, +0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e, +0x4f,0x4f,0x4f,0x50,0x50,0x51,0x51,0x51, +0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x54, +0x55,0x55,0x55,0x56,0x56,0x56,0x57,0x57, +0x58,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a, +0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d, +0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x60, +0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x63, +0x64,0x64,0x64,0x65,0x65,0x65,0x66,0x66, +0x67,0x67,0x67,0x68,0x68,0x69,0x69,0x69, +0x6a,0x6a,0x6a,0x6b,0x6b,0x6c,0x6c,0x6c, +0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x70, +0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x73, +0x73,0x73,0x74,0x74,0x75,0x75,0x75,0x76, +0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x79, +0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c, +0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f +};
\ No newline at end of file diff --git a/tmk_core/common.mk b/tmk_core/common.mk index edbcc282a5..89c366f554 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -53,6 +53,9 @@ ifdef MIDI_ENABLE OPT_DEFS += -DMIDI_ENABLE endif +ifdef AUDIO_ENABLE + OPT_DEFS += -DAUDIO_ENABLE +endif ifdef USB_6KRO_ENABLE OPT_DEFS += -DUSB_6KRO_ENABLE diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index af99f52b5e..caf0b06254 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -8,6 +8,7 @@ #include "suspend_avr.h" #include "suspend.h" #include "timer.h" +#include "led.h" #ifdef PROTOCOL_LUFA #include "lufa.h" #endif @@ -64,6 +65,10 @@ static void power_down(uint8_t wdto) // Watchdog Interrupt Mode wdt_intr_enable(wdto); +#ifdef BACKLIGHT_ENABLE +backlight_set(0); +#endif + // TODO: more power saving // See PicoPower application note // - I/O port input with pullup @@ -89,6 +94,9 @@ __attribute__ ((weak)) void matrix_power_up(void) {} __attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { +#ifdef BACKLIGHT_ENABLE + backlight_set(0); +#endif matrix_power_up(); matrix_scan(); matrix_power_down(); @@ -104,8 +112,10 @@ void suspend_wakeup_init(void) // clear keyboard state clear_keyboard(); #ifdef BACKLIGHT_ENABLE + backlight_set(0); backlight_init(); #endif +led_set(host_keyboard_leds()); } #ifndef NO_SUSPEND_POWER_DOWN @@ -122,3 +132,4 @@ ISR(WDT_vect) } } #endif + diff --git a/tmk_core/doc/build.md b/tmk_core/doc/build.md index dffc699a3a..2846f1d0fb 100644 --- a/tmk_core/doc/build.md +++ b/tmk_core/doc/build.md @@ -6,7 +6,7 @@ Download and Install -------------------- ### 1. Install Tools -1. **Toolchain** On Windows install [MHV AVR Tools][mhv] for AVR GCC compiler and [Cygwin][cygwin](or [MinGW][mingw]) for shell terminal. On Mac you can use [CrossPack][crosspack]. On Linux you can install AVR GCC (and avr-libc) with your favorite package manager. +1. **Toolchain** On Windows install [MHV AVR Tools][mhv] for AVR GCC compiler and [Cygwin][cygwin](or [MinGW][mingw]) for shell terminal. On Mac you can use [CrossPack][crosspack]. On Linux you can install AVR GCC (and avr-libc) with your favorite package manager or run the avr_setup.sh script in the root of this repository. 2. **Programmer** On Windows install [Atmel FLIP][flip]. On Mac and Linux install [dfu-programmer][dfu-prog]. diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index f04790f4e8..5d40dcf7b2 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -52,8 +52,8 @@ #include "descriptor.h" #include "lufa.h" -#ifdef MIDI_ENABLE - #include <beeps.h> +#ifdef AUDIO_ENABLE + #include <audio.h> #endif #ifdef BLUETOOTH_ENABLE @@ -946,6 +946,8 @@ int main(void) #ifdef MIDI_ENABLE void fallthrough_callback(MidiDevice * device, uint16_t cnt, uint8_t byte0, uint8_t byte1, uint8_t byte2){ + +#ifdef AUDIO_ENABLE if (cnt == 3) { switch (byte0 & 0xF0) { case MIDI_NOTEON: @@ -959,6 +961,7 @@ void fallthrough_callback(MidiDevice * device, if (byte0 == MIDI_STOP) { stop_all_notes(); } +#endif } void cc_callback(MidiDevice * device, |