summaryrefslogtreecommitdiffstats
path: root/keyboard/atomic
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/atomic')
-rw-r--r--keyboard/atomic/Makefile73
-rw-r--r--keyboard/atomic/README.md25
-rw-r--r--keyboard/atomic/atomic.c325
-rw-r--r--keyboard/atomic/atomic.h49
-rw-r--r--keyboard/atomic/atomic_pcb.hex1566
-rw-r--r--keyboard/atomic/config.h158
-rw-r--r--keyboard/atomic/keymaps/abienz.c36
-rw-r--r--keyboard/atomic/keymaps/default/compiled.hex1118
-rw-r--r--keyboard/atomic/keymaps/default/keymap.c234
-rw-r--r--keyboard/atomic/keymaps/michelle.c183
-rw-r--r--keyboard/atomic/keymaps/pvc/Makefile15
-rw-r--r--keyboard/atomic/keymaps/pvc/compiled.hex1700
-rw-r--r--keyboard/atomic/keymaps/pvc/config.h166
-rw-r--r--keyboard/atomic/keymaps/pvc/keymap.c578
14 files changed, 0 insertions, 6226 deletions
diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile
deleted file mode 100644
index 08e9205cbf..0000000000
--- a/keyboard/atomic/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-# 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
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
-COMMAND_ENABLE ?= yes # Commands for debug and configuration
-NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
-MIDI_ENABLE ?= no # MIDI controls
-AUDIO_ENABLE ?= no # Audio output on port C6
-UNICODE_ENABLE ?= no # Unicode
-BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../Makefile
-endif \ No newline at end of file
diff --git a/keyboard/atomic/README.md b/keyboard/atomic/README.md
deleted file mode 100644
index 0e42370ba6..0000000000
--- a/keyboard/atomic/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-Atomic keyboard firmware
-======================
-DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
-
-## Quantum MK Firmware
-
-For the full Quantum feature list, see [the parent README.md](/README.md).
-
-## Building
-
-Download or clone the whole firmware and navigate to the keyboard/atomic 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 a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
-
-To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
-```
-$ make KEYMAP=[default|jack|<name>]
-```
-Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c
deleted file mode 100644
index fa218a48f3..0000000000
--- a/keyboard/atomic/atomic.c
+++ /dev/null
@@ -1,325 +0,0 @@
-#include "atomic.h"
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
- // leave this function blank - it can be defined in a keymap file
-};
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
- // leave this function blank - it can be defined in a keymap file
-}
-
-__attribute__ ((weak))
-bool process_action_user(keyrecord_t *record) {
- // leave this function blank - it can be defined in a keymap file
- return true;
-}
-
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
- // leave this function blank - it can be defined in a keymap file
-}
-
-void matrix_init_kb(void) {
- // put your keyboard start-up code here
- // runs once when the firmware starts up
-
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
-#ifdef BACKLIGHT_ENABLE
- backlight_init_ports();
-#endif
-
- // Turn status LED on
- DDRE |= (1<<6);
- PORTE |= (1<<6);
-
- matrix_init_user();
-}
-
-void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
-
- matrix_scan_user();
-}
-
-bool process_action_kb(keyrecord_t *record) {
- // put your per-action keyboard code here
- // runs for every action, just before processing by the firmware
-
- return process_action_user(record);
-}
-
-void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
-
- led_set_user(usb_led);
-}
-
-#ifdef BACKLIGHT_ENABLE
-#define CHANNEL OCR1C
-#define BREATHING_NO_HALT 0
-#define BREATHING_HALT_OFF 1
-#define BREATHING_HALT_ON 2
-
-static uint8_t breath_intensity;
-static uint8_t breath_speed;
-static uint16_t breathing_index;
-static uint8_t breathing_halt;
-
-void backlight_init_ports()
-{
-
- // Setup PB7 as output and output low.
- DDRB |= (1<<7);
- PORTB &= ~(1<<7);
-
- // Use full 16-bit resolution.
- ICR1 = 0xFFFF;
-
- // I could write a wall of text here to explain... but TL;DW
- // Go read the ATmega32u4 datasheet.
- // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
-
- // Pin PB7 = OCR1C (Timer 1, Channel C)
- // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
- // (i.e. start high, go low when counter matches.)
- // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
- // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
-
- TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010;
- TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
-
- backlight_init();
- breathing_defaults();
-}
-
-void backlight_set(uint8_t level)
-{
- // Prevent backlight blink on lowest level
- PORTB &= ~(_BV(PORTB7));
-
- if ( level == 0 )
- {
- // Turn off PWM control on PB7, revert to output low.
- TCCR1A &= ~(_BV(COM1C1));
-
- // Set the brightness to 0
- CHANNEL = 0x0;
- }
- else if ( level >= BACKLIGHT_LEVELS )
- {
- // Turn on PWM control of PB7
- TCCR1A |= _BV(COM1C1);
-
- // Set the brightness to max
- CHANNEL = 0xFFFF;
- }
- else
- {
- // Turn on PWM control of PB7
- TCCR1A |= _BV(COM1C1);
-
- // Set the brightness
- CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2));
- }
- breathing_intensity_default();
-}
-
-
-void breathing_enable(void)
-{
- if (get_backlight_level() == 0)
- {
- breathing_index = 0;
- }
- else
- {
- // Set breathing_index to be at the midpoint (brightest point)
- breathing_index = 0x20 << breath_speed;
- }
-
- breathing_halt = BREATHING_NO_HALT;
-
- // Enable breathing interrupt
- TIMSK1 |= _BV(OCIE1A);
-}
-
-void breathing_pulse(void)
-{
- if (get_backlight_level() == 0)
- {
- breathing_index = 0;
- }
- else
- {
- // Set breathing_index to be at the midpoint + 1 (brightest point)
- breathing_index = 0x21 << breath_speed;
- }
-
- breathing_halt = BREATHING_HALT_ON;
-
- // Enable breathing interrupt
- TIMSK1 |= _BV(OCIE1A);
-}
-
-void breathing_disable(void)
-{
- // Disable breathing interrupt
- TIMSK1 &= ~_BV(OCIE1A);
- backlight_set(get_backlight_level());
-}
-
-void breathing_self_disable(void)
-{
- if (get_backlight_level() == 0)
- {
- breathing_halt = BREATHING_HALT_OFF;
- }
- else
- {
- breathing_halt = BREATHING_HALT_ON;
- }
-
- //backlight_set(get_backlight_level());
-}
-
-void breathing_toggle(void)
-{
- if (!is_breathing())
- {
- if (get_backlight_level() == 0)
- {
- breathing_index = 0;
- }
- else
- {
- // Set breathing_index to be at the midpoint + 1 (brightest point)
- breathing_index = 0x21 << breath_speed;
- }
-
- breathing_halt = BREATHING_NO_HALT;
- }
-
- // Toggle breathing interrupt
- TIMSK1 ^= _BV(OCIE1A);
-
- // Restore backlight level
- if (!is_breathing())
- {
- backlight_set(get_backlight_level());
- }
-}
-
-bool is_breathing(void)
-{
- return (TIMSK1 && _BV(OCIE1A));
-}
-
-void breathing_intensity_default(void)
-{
- //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS);
- breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2));
-}
-
-void breathing_intensity_set(uint8_t value)
-{
- breath_intensity = value;
-}
-
-void breathing_speed_default(void)
-{
- breath_speed = 4;
-}
-
-void breathing_speed_set(uint8_t value)
-{
- bool is_breathing_now = is_breathing();
- uint8_t old_breath_speed = breath_speed;
-
- if (is_breathing_now)
- {
- // Disable breathing interrupt
- TIMSK1 &= ~_BV(OCIE1A);
- }
-
- breath_speed = value;
-
- if (is_breathing_now)
- {
- // Adjust index to account for new speed
- breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed;
-
- // Enable breathing interrupt
- TIMSK1 |= _BV(OCIE1A);
- }
-
-}
-
-void breathing_speed_inc(uint8_t value)
-{
- if ((uint16_t)(breath_speed - value) > 10 )
- {
- breathing_speed_set(0);
- }
- else
- {
- breathing_speed_set(breath_speed - value);
- }
-}
-
-void breathing_speed_dec(uint8_t value)
-{
- if ((uint16_t)(breath_speed + value) > 10 )
- {
- breathing_speed_set(10);
- }
- else
- {
- breathing_speed_set(breath_speed + value);
- }
-}
-
-void breathing_defaults(void)
-{
- breathing_intensity_default();
- breathing_speed_default();
- breathing_halt = BREATHING_NO_HALT;
-}
-
-/* Breathing Sleep LED brighness(PWM On period) table
- * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle
- *
- * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63
- * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i }
- */
-static const uint8_t breathing_table[64] PROGMEM = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10,
- 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252,
-255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23,
- 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-ISR(TIMER1_COMPA_vect)
-{
- // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity;
-
-
- uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F;
-
- if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F)))
- {
- // Disable breathing interrupt
- TIMSK1 &= ~_BV(OCIE1A);
- }
-
- CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity;
-
-}
-
-
-
-#endif \ No newline at end of file
diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h
deleted file mode 100644
index 901761f514..0000000000
--- a/keyboard/atomic/atomic.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef ATOMIC_H
-#define ATOMIC_H
-
-#include "quantum.h"
-#include <stddef.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-
-// This a shortcut to help you visually see your layout.
-// The following is an example using the Planck MIT layout
-// The first section contains all of the arguements
-// The second converts the arguments into a two-dimensional array
-#define KEYMAP_SEMI_STANDARD( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
- K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \
-}
-
-void matrix_init_user(void);
-void matrix_scan_user(void);
-bool process_action_user(keyrecord_t *record);
-void led_set_user(uint8_t usb_led);
-void backlight_init_ports(void);
-
-void breathing_enable(void);
-void breathing_pulse(void);
-void breathing_disable(void);
-void breathing_self_disable(void);
-void breathing_toggle(void);
-bool is_breathing(void);
-
-
-void breathing_defaults(void);
-void breathing_intensity_default(void);
-void breathing_speed_default(void);
-void breathing_speed_set(uint8_t value);
-void breathing_speed_inc(uint8_t value);
-void breathing_speed_dec(uint8_t value);
-
-
-#endif \ No newline at end of file
diff --git a/keyboard/atomic/atomic_pcb.hex b/keyboard/atomic/atomic_pcb.hex
deleted file mode 100644
index a40409e090..0000000000
--- a/keyboard/atomic/atomic_pcb.hex
+++ /dev/null
@@ -1,1566 +0,0 @@
-:100000000C9431080C9475080C9475080C947508C0
-:100010000C9475080C9475080C9475080C9475086C
-:100020000C9475080C9475080C944C120C941E13C7
-:100030000C945B220C9475080C9475080C9475084C
-:100040000C9475080C9475080C9475080C9475083C
-:100050000C9475080C94C8220C9475080C947508BF
-:100060000C9475080C9475080C9475080C9475081C
-:100070000C9475080C9475080C9475080C9475080C
-:100080000C9475080C9475080C9475080C947508FC
-:100090000C9475080C9475080C9475080C947508EC
-:1000A0000C9475080C9475080C947508DB2B032CC4
-:1000B000042AE12CE12C902BE12CE12C2D2CE12CBD
-:1000C000402CAE2CE12CE12CE12CE12C832C6A2C71
-:1000D000E12C532CE12C132CE12CE12CDB2CDB2C20
-:1000E000DB2CDB2CDB2CDB2CDB2CDB2CDB2CD92CDA
-:1000F000E12CD92CE12CE12CE12CE12CE12CE12CA0
-:10010000E12CE12CE12CE12CE12CD92CE12CE12C8F
-:10011000902B712BDD2CDD2CDD2CDD2CDD2CDD2C52
-:10012000DD2CDD2CDD2CDD2CDD2CDD2CBE2CE12CA2
-:10013000EF2B626F756E6365213A200025303258CF
-:10014000000A000A722F63203031323334353637DB
-:1001500038394142434445460A0025303258003A76
-:1001600020002530313662000A000000F1A2F1A320
-:10017000018C028C35001E001F002000210022008F
-:10018000230024002500260027002D002E002A0031
-:100190004C002B0014001A000800150017001C006A
-:1001A00018000C00120013002F00300031004C002A
-:1001B000290004001600070009000A000B000D00CA
-:1001C0000E000F0033003400280028004B00E1002F
-:1001D0001D001B000600190005001100100036006C
-:1001E00037003800E500E50052004E001340E00003
-:1001F000E200E300E3002C002C00E700E700E6004B
-:10020000E4001340500051004F0001090209005B57
-:10021000435D005B445D005B525D005B535D005BD2
-:10022000575D0055534220636F6E6669677572654E
-:10023000642E0A004B6579626F6172642073746189
-:1002400072742E0A005B735D000E03410074006F30
-:10025000006D006900630000002C034F0072007401
-:100260000068006F006C0069006E0065006100723C
-:100270000020004B006500790062006F0061007291
-:10028000006400730000000403090409028D0005E6
-:100290000100A0FA09040000010301010009211175
-:1002A000010001223F000705810308000A0904013B
-:1002B000000103010200092111010001224D000784
-:1002C00005820308000A0904020001030000000976
-:1002D00021110100012236000705830308000A09E5
-:1002E0000403000203000000092111010001222083
-:1002F000000705840320000107050403200001090D
-:100300000404000103000000092111010001223949
-:10031000000705850310000112011001000000080C
-:10032000EDFE606001000102000105010906A10166
-:10033000050719E029E715002501950875018102D7
-:1003400005081901290595057501910295017503A7
-:100350009101050719002977150025019578750188
-:100360008102C00631FF0974A1010975150025FF3E
-:100370009520750881020976150025FF95207508DE
-:100380009102C005010980A101850216010026B76E
-:10039000001A01002AB700751095018100C0050CF4
-:1003A0000901A1018503160100269C021A01002AF9
-:1003B0009C02751095018100C005010902A1010987
-:1003C00001A10005091901290515002501950575EB
-:1003D000018102950175038101050109300931157B
-:1003E00081257F95027508810609381581257F953D
-:1003F0000175088106050C0A38021581257F9501D3
-:1004000075088106C0C005010906A101050719E0AC
-:1004100029E71500250195087501810295017508E8
-:1004200081010508190129059505750191029501BC
-:10043000750391010507190029FF150025FF950691
-:1004400075088100C06B6579626F6172645F726567
-:10045000706F72743A20002530325820000A006B09
-:100460006579626F6172645F7365745F6C65643A2D
-:10047000200025303258000A006164645F6B6579A2
-:100480005F6269743A2063616E2774206164643A24
-:1004900020253032580A0064656C5F6B65795F62B5
-:1004A00069743A2063616E27742064656C3A202574
-:1004B0003032580A00626F6F676D6167696320733D
-:1004C00063616E3A202E2E2E2000646F6E652E0A18
-:1004D000006D6F7573656B6579205B62746E7C78F7
-:1004E0002079207620685D287265702F61636C2901
-:1004F0003A205B0025303258007C00256400200043
-:10050000256400200025640020002564005D28008B
-:100510002575002F00257500290A006565636F6E3B
-:100520006669673A0A004C6F636B65642E0A005572
-:100530006E6C6F636B65642E0A000A456E7465729B
-:1005400020436F6E736F6C65204D6F64650A0043C6
-:100550003E20000A0A4A756D7020746F20626F6F2A
-:10056000746C6F616465722E2E2E20006E6F742085
-:10057000737570706F727465642E0A000A44454288
-:1005800055473A2064697361626C65642E0A000AFB
-:1005900044454255473A20656E61626C65642E0A97
-:1005A000000A44454255473A206D617472697820CB
-:1005B000656E61626C65642E0A000A4445425547C7
-:1005C0003A206D61747269782064697361626C6548
-:1005D000642E0A000A44454255473A206B65796209
-:1005E0006F61726420656E61626C65642E0A000A38
-:1005F00044454255473A206B6579626F61726420C9
-:1006000064697361626C65642E0A000A4445425550
-:10061000473A206D6F75736520656E61626C656425
-:100620002E0A000A44454255473A206D6F7573659E
-:100630002064697361626C65642E0A000A0A2D2DBC
-:100640002D2D2D2056657273696F6E202D2D2D2D49
-:100650002D0A00444553433A204120636F6D706179
-:100660006374206F7274686F6C696E656172206B61
-:100670006579626F6172640A005649443A203078A5
-:1006800046454544284F7274686F6C696E656172A7
-:10069000204B6579626F6172647329205049443A36
-:1006A000203078363036302841746F6D69632920E8
-:1006B0005645523A203078303030310A00425549A0
-:1006C0004C443A2062383961396364202830313A29
-:1006D00035343A333620536570202037203230319C
-:1006E00035290A004F5054494F4E533A204C554635
-:1006F0004120424F4F544D41474943204D4F5553A0
-:10070000454B45592045585452414B455920434F7C
-:100710004E534F4C4520434F4D4D414E44204E4B80
-:10072000524F20343039360A004743433A20342EA2
-:10073000372E32204156522D4C4942433A20312E19
-:10074000382E30204156525F415243483A2061765C
-:1007500072350A0074696D65725F636F756E743A05
-:10076000202530346C580A000A0A2D2D2D2D2D20FD
-:10077000537461747573202D2D2D2D2D0A00686F13
-:1007800073745F6B6579626F6172645F6C656473CB
-:1007900028293A2025580A006B6579626F617264D6
-:1007A0005F70726F746F636F6C3A2025580A006B2C
-:1007B0006579626F6172645F69646C653A2025587F
-:1007C0000A004E4B524F3A20656E61626C65640AB6
-:1007D000004E4B524F3A2064697361626C65640A43
-:1007E000003F0064656661756C745F6C6179657269
-:1007F0003A20002575000A0064656275675F636FC3
-:100800006E6669672E7261773A2000253032580093
-:100810000A002E656E61626C653A20002575000A3B
-:10082000002E6D61747269783A20002575000A0007
-:100830002E6B6579626F6172643A20002575000A3B
-:10084000002E6D6F7573653A20002575000A006BE8
-:1008500065796D61705F636F6E6669672E7261772F
-:100860003A200025303258000A002E737761705FFD
-:10087000636F6E74726F6C5F636170736C6F636BC8
-:100880003A20002575000A002E636170736C6F6357
-:100890006B5F746F5F636F6E74726F6C3A200025CC
-:1008A00075000A002E737761705F6C616C745F6C09
-:1008B0006775693A20002575000A002E737761700C
-:1008C0005F72616C745F726775693A20002575000C
-:1008D0000A002E6E6F5F6775693A20002575000A61
-:1008E000002E737761705F67726176655F65736311
-:1008F0003A20002575000A002E737761705F6261EF
-:10090000636B736C6173685F6261636B7370616367
-:10091000653A20002575000A002E6E6B726F3A2032
-:10092000002575000A006261636B6C696768745F1B
-:10093000636F6E6669672E7261773A2000253032E8
-:1009400058000A002E656E61626C653A20002575BC
-:10095000000A002E6C6576656C3A20002575000A49
-:10096000000A0A2D2D2D2D2D20436F6D6D616E64B3
-:100970002048656C70202D2D2D2D2D0A00633A091D
-:10098000656E74657220636F6E736F6C65206D6F3A
-:1009900064650A00643A09746F67676C6520646572
-:1009A00062756720656E61626C650A00783A097449
-:1009B0006F67676C65206D61747269782064656229
-:1009C00075670A006B3A09746F67676C65206B6521
-:1009D00079626F6172642064656275670A006D3ABE
-:1009E00009746F67676C65206D6F7573652064654A
-:1009F0006275670A00763A097072696E74206465E0
-:100A0000766963652076657273696F6E202620694A
-:100A10006E666F0A00743A097072696E74207469A8
-:100A20006D657220636F756E740A00733A09707297
-:100A3000696E74207374617475730A00653A097085
-:100A400072696E7420656570726F6D20636F6E667B
-:100A500069670A006E3A09746F67676C65204E4BD0
-:100A6000524F0A00302F4631303A09737769746368
-:100A70006820746F204C6179657230200A00312F34
-:100A800046313A0973776974636820746F204C614A
-:100A900079657231200A00322F46323A097377693C
-:100AA00074636820746F204C6179657232200A008B
-:100AB000332F46333A0973776974636820746F2063
-:100AC0004C6179657233200A00342F46343A097339
-:100AD000776974636820746F204C61796572342083
-:100AE0000A00505363723A09706F77657220646F21
-:100AF000776E2F72656D6F74652077616B652D75EC
-:100B0000700A00436170733A094C6F636B204B6548
-:100B100079626F617264284368696C642050726FF7
-:100B20006F66290A00506175733A096A756D702005
-:100B3000746F20626F6F746C6F616465720A000A73
-:100B40000A2D2D2D2D2D20436F6E736F6C6520485F
-:100B5000656C70202D2D2D2D2D0A004553432F71CE
-:100B60003A09717569740A006D3A096D6F7573659C
-:100B70006B65790A007377697463685F64656661A1
-:100B8000756C745F6C617965723A20002575002080
-:100B9000746F20002575000A00433E20000A51753D
-:100BA000697420436F6E736F6C65204D6F64650AC6
-:100BB000000A456E746572204D6F7573656B6579BB
-:100BC00020436F6E736F6C650A004D303E003F002E
-:100BD0000A0A2D2D2D2D2D204D6F7573656B6579AE
-:100BE00020506172616D65746572732048656C7028
-:100BF000202D2D2D2D2D0A004553432F713A0971BB
-:100C00007569740A00313A0973656C656374206D07
-:100C10006B5F64656C6179282A31306D73290A0035
-:100C2000323A0973656C656374206D6B5F696E742D
-:100C3000657276616C286D73290A00333A09736511
-:100C40006C656374206D6B5F6D61785F7370656553
-:100C5000640A00343A0973656C656374206D6B5FD8
-:100C600074696D655F746F5F6D61780A00353A096C
-:100C700073656C656374206D6B5F776865656C5F29
-:100C80006D61785F73706565640A00363A09736553
-:100C90006C656374206D6B5F776865656C5F746904
-:100CA0006D655F746F5F6D61780A00703A097072EC
-:100CB000696E7420706172616D65746572730A008B
-:100CC000643A097365742064656661756C74207696
-:100CD000616C7565730A0075703A09696E637265B7
-:100CE00061736520706172616D6574657273282B24
-:100CF00031290A00646F776E3A0964656372656131
-:100D0000736520706172616D6574657273282D3131
-:100D1000290A00706775703A09696E6372656173BC
-:100D20006520706172616D6574657273282B313056
-:100D3000290A007067646F776E3A096465637265AB
-:100D400061736520706172616D6574657273282DC1
-:100D50003130290A000A7370656564203D2064659E
-:100D60006C7461202A206D61785F73706565642002
-:100D70002A2028726570656174202F2074696D6562
-:100D80005F746F5F6D6178290A007768657265200E
-:100D900064656C74613A20637572736F723D0025EF
-:100DA00075002C20776865656C3D002575000A008C
-:100DB00053656520687474703A2F2F656E2E7769BD
-:100DC0006B6970656469612E6F72672F77696B69F3
-:100DD0002F4D6F7573655F6B6579730A000A5175E6
-:100DE0006974204D6F7573656B657920436F6E7301
-:100DF0006F6C650A00433E200073656C6563746523
-:100E00006420706172616D657465723A20002575A9
-:100E1000000A007365742064656661756C742076E1
-:100E2000616C7565732E0A003F004D002575003E0C
-:100E300020000A0A2D2D2D2D2D204D6F7573656B09
-:100E4000657920506172616D6574657273202D2D16
-:100E50002D2D2D0A00313A206D6B5F64656C617930
-:100E6000282A31306D73293A20002575000A003296
-:100E70003A206D6B5F696E74657276616C286D7374
-:100E8000293A20002575000A00333A206D6B5F6D0A
-:100E900061785F73706565643A20002575000A000B
-:100EA000343A206D6B5F74696D655F746F5F6D615F
-:100EB000783A20002575000A00353A206D6B5F777F
-:100EC0006865656C5F6D61785F73706565643A2015
-:100ED000002575000A00363A206D6B5F77686565FE
-:100EE0006C5F74696D655F746F5F6D61783A200047
-:100EF0002575000A006D6B5F64656C6179203D208B
-:100F0000002575000A006D6B5F696E74657276610D
-:100F10006C203D20002575000A006D6B5F6D6178C7
-:100F20005F7370656564203D20002575000A006DC3
-:100F30006B5F74696D655F746F5F6D6178203D20D4
-:100F4000002575000A006D6B5F776865656C5F6DE5
-:100F500061785F7370656564203D20002575000A27
-:100F6000006D6B5F776865656C5F74696D655F7454
-:100F70006F5F6D6178203D20002575000A006D6B64
-:100F80005F64656C6179203D20002575000A006D65
-:100F90006B5F696E74657276616C203D200025750B
-:100FA000000A006D6B5F6D61785F7370656564202A
-:100FB0003D20002575000A006D6B5F74696D655FEB
-:100FC000746F5F6D6178203D20002575000A006D0B
-:100FD0006B5F776865656C5F6D61785F7370656581
-:100FE00064203D20002575000A006D6B5F77686501
-:100FF000656C5F74696D655F746F5F6D6178203DCE
-:1010000020002575000A006261636B6C6967687473
-:1010100020696E6372656173653A2025750A006206
-:1010200061636B6C69676874206465637265617382
-:10103000653A2025750A006261636B6C69676874A4
-:1010400020746F67676C653A2025750A00626163DA
-:101050006B6C6967687420737465703A2025750A33
-:10106000000011241FBECFEFDAE0DEBFCDBF04B613
-:1010700003FE24C08091EA019091EB01A091EC0164
-:10108000B091ED018730904BA740B04BB9F410926E
-:10109000EA011092EB011092EC011092ED0114BEE6
-:1010A00084B7877F84BF88E10FB6F894809360008F
-:1010B000109260000FBEE0E0F8E3099511E0A0E0B7
-:1010C000B1E0E0E9F1E602C005900D92AA33B10764
-:1010D000D9F711E0AAE3B1E001C01D92AA3EB10721
-:1010E000E1F70E948F0F0C94C6300C940000FF9320
-:1010F000EF93E091C701F091C801309709F009958D
-:10110000EF91FF910895FC018591803011F0EFDFA0
-:10111000FBCF0895FF27E0E230E247FF0CC0419586
-:1011200097FF09C0EDE26095709580959095611DDF
-:10113000711D811D911D27FF02C0219530E350E2F2
-:10114000AA27660F771F881F991FAA1FA41710F0E0
-:10115000A41B63955A95A9F7AA3008F0A95FA05D72
-:10116000AF93F395611571058105910541F7ED3256
-:1011700011F4EF93F395F21718F43F93F395FBCF27
-:101180008F91B5DFFA95E1F70895E991F99185918D
-:10119000803021F0853219F0AADFF9CF089520E0E0
-:1011A000E89455915532C1F3503311F46894559138
-:1011B0005A3348F4505390F3220F022E220F220F7D
-:1011C000200D250FF4CF0EF4219589919991533676
-:1011D00019F3533729F1533559F1BC018827992761
-:1011E000E8945C3621F4899199916894559154362C
-:1011F00039F446EF7EF077FF0DC08FEF9FEF0AC006
-:1012000055374AE039F0583540E121F0523642E096
-:1012100009F00895FF93EF937DDFEF91FF91B7CF32
-:10122000FF93EF93FC0181918030B9F360DFFBCF36
-:10123000FF93EF9368DFF1CFDF93CF93CDB7DEB7A6
-:101240002596A3DFCF91DF91089584B18F7984B97A
-:1012500085B1806685B98AB18E7D8AB98BB181628C
-:101260008BB93E98469A089585B7806885BF85B743
-:10127000806885BF0E94E10C6E9A769A0E942509CB
-:1012800084B18E7E84B985B1816185B93F98479AD2
-:101290008AB181728AB98BB18E6D8BB980B38C7033
-:1012A00080BB81B3836F81BB10923B0110923A01E6
-:1012B000109245011092440110923D0110923C01A0
-:1012C000109247011092460110923F0110923E0188
-:1012D0001092490110924801109241011092400170
-:1012E00010924B0110924A01109243011092420158
-:1012F00010924D0110924C010895AF92BF92CF927F
-:10130000EF92FF920F931F93CF93DF93C4E4D1E04A
-:1013100010E001E0A5E0CA2EBCE3EB2EB1E0FB2E0D
-:10132000123071F018F4113029F407C0133059F05D
-:10133000143061F0509A58980BC0559A5D9808C0C7
-:10134000259A2D9805C0269A2E9802C03E9A469856
-:1013500080EA8A95F1F78FB18695802780FBAA24D1
-:10136000A0F8B12C789B03C020E030E002C022E05E
-:1013700030E02A293B29189B03C080E090E002C09E
-:1013800084E090E0282B392B86B1992787FD909532
-:10139000809590958827990F881F9927F3E0880FEB
-:1013A000991FFA95E1F7282B392B7C9B03C080E02D
-:1013B00090E002C080E190E0282B392B7D9B03C098
-:1013C00080E090E002C080E290E0282B392B7E9BE9
-:1013D00003C080E090E002C080E490E0282B392B2D
-:1013E0008FB1992787FD9095809590958827990FC3
-:1013F000881F99279695982F882797958795282B4A
-:10140000392B4C9B03C080E090E002C080E091E06B
-:10141000282B392B4E9B03C080E090E002C080E077
-:1014200092E0282B392B1C9B03C080E090E002C087
-:1014300080E094E0282B392B89B1992787FD90957E
-:10144000809590958827990F881F9927982F88272E
-:10145000990F990F990F282B392B4B9B03C080E0D4
-:1014600090E002C080E090E1282B392B4A9B03C01A
-:1014700080E090E002C080E090E2282B392B499B6D
-:1014800003C080E090E002C080E090E4282B392B7C
-:10149000888199818217930741F13983288380914C
-:1014A0000001882301F18091C50180FF04C082E31F
-:1014B00091E00E9483088091C50180FF0CC080915B
-:1014C00000011F928F93FF92EF920E941C090F90D0
-:1014D0000F900F900F908091C50180FF04C081E4B0
-:1014E00091E00E948308C09200010E9425091F5FBD
-:1014F0002296153009F014CF809100018823A1F1C4
-:10150000815080930001882339F08FE99FE0019793
-:10151000F1F700C0000028C080914401909145017E
-:1015200090933B0180933A0180914601909147014D
-:1015300090933D0180933C01809148019091490135
-:1015400090933F0180933E0180914A0190914B011D
-:10155000909341018093400180914C0190914D0105
-:10156000909343018093420181E0DF91CF911F91DD
-:101570000F91FF90EF90CF90BF90AF900895E82F1C
-:10158000F0E0EE0FFF1FE65CFE4F80819181089531
-:10159000CF92DF92EF92FF920F931F93CF93DF933F
-:1015A00083E491E00E9483082AE3E22E21E0F22EF8
-:1015B000C0E0D0E03AE5C32E31E0D32E02E611E0E0
-:1015C000DF93CF93DF92CF920E941C098FE591E0C9
-:1015D0000E948308F701819191917F010E94052269
-:1015E0009F938F931F930F930E941C0988E691E0AD
-:1015F0000E94830821968DB79EB708960FB6F8947F
-:101600009EBF0FBE8DBFC530D105D1F6DF91CF9102
-:101610001F910F91FF90EF90DF90CF900895089564
-:101620000895611107C0FC018281882319F02AE026
-:1016300032E002C020E030E0C90108958B3B910503
-:1016400068F4883A910530F5853A9105C0F4843004
-:10165000910598F4019709F06FC071C0803E910523
-:1016600008F46AC0883E910540F09C01205F310972
-:101670002031310508F060C05CC09C01A1C0853AF2
-:10168000910509F45FC0863A910509F45EC023E82C
-:1016900030E496C0883A910509F45AC0893A910518
-:1016A00009F459C08A3A910509F458C08B3A91055A
-:1016B00009F457C08C3A910509F456C08D3A91054A
-:1016C00009F455C0803B910509F454C08E3A910548
-:1016D00009F453C08F3A910509F452C0813B91053A
-:1016E00009F451C0823B910509F450C0833B910538
-:1016F00009F44FC0843B910509F44EC0853B910528
-:1017000009F44DC0863B910509F44CC0873B910517
-:1017100009F44BC0883B910509F44AC0893B910507
-:1017200009F449C08A3B910509F048C02AE236E431
-:1017300047C09C01306544C020E030E041C021E05A
-:1017400030E03EC021E830E43BC022E830E438C05D
-:1017500022EE34E435C029EE34E432C02AEE34E41B
-:101760002FC025EB34E42CC026EB34E429C027EB52
-:1017700034E426C02CEC34E423C02DEC34E420C047
-:1017800023E835E41DC02AE835E41AC022E935E42F
-:1017900017C024E935E414C021E236E411C023E285
-:1017A00036E40EC024E236E40BC025E236E408C07D
-:1017B00026E236E405C027E236E402C020E034E445
-:1017C000C901089508959FE0799FF00111249BE4D9
-:1017D000899FE00DF11D1124E60FF11DEE0FFF1F93
-:1017E000EC58FE4F25913491C9010895880F991F37
-:1017F00086519040FC0125913491C9010895880FCC
-:10180000991F86599E4FFC0125913491C901089575
-:101810000E94E30B9C013A9521153F4108F4CDC08D
-:101820009C0130522115304120F49F700E94FF0B23
-:10183000C4C09C0130532115304120F49C01332752
-:10184000306CBCC09C0130542031310528F49C011F
-:101850002F703327346DB2C0803120E4920719F421
-:1018600020E031EDABC0813140E4940719F420E071
-:1018700030EDA4C0823120E4920719F420E032ED6B
-:101880009DC0833140E4940719F420E033ED96C005
-:10189000811520E5920711F40C94ED22803E91050C
-:1018A000E0F4803C910568F58133910509F474C03A
-:1018B00048F48932910509F46AC08A32910509F029
-:1018C0007AC074C089339105F9F082389105E1F04E
-:1018D0008533910509F06FC050C0833E9105A9F191
-:1018E00040F4803E9105C9F0823E910509F063C045