This commit is contained in:
2019-02-06 20:29:33 +01:00
parent 57b25ff7b1
commit 00f4b4b16f
9 changed files with 317 additions and 1468 deletions
+2 -12
View File
@@ -5,10 +5,6 @@
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src
-I/home/nathan/.platformio/lib/ArduinoJson_ID64/src -I/home/nathan/.platformio/lib/ArduinoJson_ID64/src
-I/home/nathan/.platformio/lib/Keypad_ID165/src -I/home/nathan/.platformio/lib/Keypad_ID165/src
<<<<<<< HEAD
=======
-I/home/nathan/.platformio/lib/Multiplexer_ID320
>>>>>>> a60abe1c71fdccfddb532c4d4cf5d21b381f314a
-I/home/nathan/.platformio/lib/PubSubClient_ID89/src -I/home/nathan/.platformio/lib/PubSubClient_ID89/src
-I/home/nathan/.platformio/lib/Tone_ID1420 -I/home/nathan/.platformio/lib/Tone_ID1420
-I/home/nathan/.platformio/lib/WifiManager_ID567 -I/home/nathan/.platformio/lib/WifiManager_ID567
@@ -16,8 +12,8 @@
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground/utility -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src
@@ -41,15 +37,9 @@
-I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed -I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed
-I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include -I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include
-I/home/nathan/.platformio/packages/tool-unity -I/home/nathan/.platformio/packages/tool-unity
<<<<<<< HEAD
-I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include -I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include
-I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src -I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src
-DPLATFORMIO=40000 -DPLATFORMIO=40000
=======
-I/home/nathan/Documents/PlatformIO/Projects/Midi/include
-I/home/nathan/Documents/PlatformIO/Projects/Midi/src
-DPLATFORMIO=30604
>>>>>>> a60abe1c71fdccfddb532c4d4cf5d21b381f314a
-DARDUINO_AVR_MICRO -DARDUINO_AVR_MICRO
-DF_CPU=16000000L -DF_CPU=16000000L
-DARDUINO_ARCH_AVR -DARDUINO_ARCH_AVR
-7
View File
@@ -1,15 +1,8 @@
{ {
"execPath": "/home/nathan/.platformio/packages/toolchain-atmelavr/bin/avr-g++", "execPath": "/home/nathan/.platformio/packages/toolchain-atmelavr/bin/avr-g++",
<<<<<<< HEAD
"gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", "gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__",
"gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", "gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__",
"gccErrorLimit": 15, "gccErrorLimit": 15,
"gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/Tone_ID1420,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src", "gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/Tone_ID1420,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src",
=======
"gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=30604 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__",
"gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=30604 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__",
"gccErrorLimit": 15,
"gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/Encoder,/home/nathan/.platformio/lib/Encoder/utility,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/Multiplexer_ID320,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/home/nathan/Documents/PlatformIO/Projects/Midi/include,/home/nathan/Documents/PlatformIO/Projects/Midi/src",
>>>>>>> a60abe1c71fdccfddb532c4d4cf5d21b381f314a
"gccSuppressWarnings": false "gccSuppressWarnings": false
} }
Binary file not shown.
Binary file not shown.
-584
View File
@@ -1,584 +0,0 @@
:100000000C94F9000C9421010C9421010C94210111
:100010000C9421010C9421010C9421010C942101D8
:100020000C9421010C9421010C94C8060C944907EE
:100030000C9421010C9421010C9421010C942101B8
:100040000C9421010C9421010C9421010C942101A8
:100050000C9421010C9421010C9421010C94740640
:100060000C9421010C9421010C9421010C94210188
:100070000C9421010C9421010C9421010C94210178
:100080000C9421010C9421010C9421010C94210168
:100090000C9421010C9421010C9421010C94210158
:1000A0000C9421010C9421010C942101660E6B0E1D
:1000B000700E7A0E840ECE0ECE0ECE0E8E0E980ED2
:1000C000A20EAC0EB90ECE0EC10E200B230B120BDE
:1000D000160B1C0B440B440B440B270B2B0B2F0B49
:1000E000350B390B440B3F0B070605040100080ACA
:1000F0000B0C0D09080B00020202010009040000AC
:100100000102020000052400100105240101010480
:10011000240206052406000107058103100040099A
:10012000040100020A000000070502024000000767
:100130000583024000000403090412010002EF02DB
:10014000014041233700000101020301417264753F
:10015000696E6F204C4C430041726475696E6F206C
:100160004D6963726F000000000200090F00000378
:100170000401000C0000000000000000000000006E
:100180000000000000000000002300260029002CD1
:10019000002F0004080201104080401020408040E1
:1001A00080080204018040201002011080102040CD
:1001B000402000000000240027002A002D0030000D
:1001C00000000000250028002B002E003100040450
:1001D00004040403040502020202040302020202F0
:1001E0000606060606060404020202040400590F6D
:1001F000CF0C11241FBECFEFDAE0DEBFCDBF11E080
:10020000A0E0B1E0E8ECF3E202C005900D92AE3957
:10021000B107D9F724E0AEE9B1E001C01D92AF32D9
:10022000B207E1F710E0C8EFD0E004C02197FE016B
:100230000E94AB10C73FD107C9F70E943D0D0C9437
:10024000D7110C9400004091A8025091A90220916E
:10025000A6023091A70242175307B4F49091E80028
:100260009570E1F39091E80092FD19C08093F10040
:100270008091A8029091A90201968F739927892BEA
:1002800019F48EEF8093E8008091A8029091A90262
:1002900001969093A9028093A80281E0089580E0DE
:1002A00008952FB7F89487708093E9009091E80043
:1002B000892F807295FF04C09091F20080E4891B21
:1002C0002FBF08959091AD02992311F057FF03C0FD
:1002D0008FEF9FEF08959FB7F89487708093E900A0
:1002E0002091F20030E0421753070CF49A01822F5C
:1002F000FB0144E6815038F0289A4093AA025091BD
:10030000F1005193F7CF2115310521F08091F200D2
:10031000882319F09FBFC90108958BE68093E800F8
:10032000F9CF9FB7F89487708093E9008091F2002D
:100330009FBF0895CF92DF92EF92FF920F931F938A
:10034000CF93DF936C017A018B01C0E0D0E0CE1532
:10035000DF0581F0D8016D918D01D601ED91FC9101
:100360000190F081E02DC6010995892B11F02196AD
:10037000EECF7E01C701DF91CF911F910F91FF90CA
:10038000EF90DF90CF900895CF93DF931F92CDB77A
:10039000DEB76983DC01ED91FC910280F381E02DF1
:1003A00041E050E0BE016F5F7F4F09950F90DF91F4
:1003B000CF91089583E00E94510190E00895CF937A
:1003C000DF931F92CDB7DEB7FC018485958597FD3D
:1003D00005C02FEF3FEF358724870FC041E050E085
:1003E000BE016F5F7F4F82E00E946201019719F4A6
:1003F000898190E002C08FEF9FEF0F90DF91CF9146
:1004000008950F931F93CF93DF931F92CDB7DEB75D
:100410008C01FC018485958597FF12C041E050E076
:10042000BE016F5F7F4F82E00E946201019719F465
:10043000898190E002C08FEF9FEFF8019587848754
:10044000F801848595850F90DF91CF911F910F91D1
:100450000895FC018485958597FD06C082E00E9481
:10046000910190E00196089582E00E94910190E050
:100470000895089580E090E008950F931F93CF931F
:10048000DF93EC012B8988E0289F9001112421152E
:10049000310529F0C90107976817790728F0295F06
:1004A0003F4F2617370730F483E0769567958A9596
:1004B000E1F76B8B1B8988898117F9F03C81E0910A
:1004C0005F03F0916003828193814A8941502A81C0
:1004D000329F400D1124012F0F775B812989359FB1
:1004E000200D11242F774F70DC01ED91FC910480D9
:1004F000F581E02D60EB0995188BDF91CF911F916D
:100500000F910895FC0175876487089580E0089530
:10051000089508950F93DC01ED91FC910480F5811D
:10052000E02D00E009950F910895CF92DF92EF92B0
:10053000FF92CF93DF9300D000D0CDB7DEB780918C
:100540009E0290919F02A091A002B091A1024091C1
:10055000A2025091A3026091A4027091A502841B93
:10056000950BA60BB70B8F739927AA27BB27892B4F
:100570008A2B8B2B09F055C0809102030E949101B8
:10058000882309F45FC0C0909E02D0909F02E09043
:10059000A002F090A1028FEFC81AD80AE80AF80A60
:1005A0008FE3C822DD24EE24FF248091A2029091E3
:1005B000A302A091A402B091A5028C159D05AE05E1
:1005C000BF0579F1809102030E94910144E050E05F
:1005D000BE016F5F7F4F809102030E94620104970A
:1005E00004F180919E0290919F02A091A002B0918F
:1005F000A102880F991F880F991FFC01E256FE4F38
:1006000049815A816B817C814083518362837383EA
:10061000C0929E02D0929F02E092A002F092A102AC
:10062000BACF8091A2029091A302A091A402B091AE
:10063000A502880F991F880F991FFC01E256FE4FF3
:10064000208101C020E040919E0250919F02609164
:10065000A0027091A1028091A2029091A302A091A8
:10066000A402B091A502481759076A077B07B9F0A1
:100670008091A2029091A302A091A402B091A50240
:100680000196A11DB11D8F739927AA27BB278093BF
:10069000A2029093A302A093A402B093A50281E0CA
:1006A000211101C080E00F900F900F900F90DF910B
:1006B000CF91FF90EF90DF90CF900895E09163038A
:1006C000F0916403309741F09381891740F0948151
:1006D000891728F4CF01089580E090E008950580FF
:1006E000F681E02DEFCFCF93C82F8B3258F58231B2
:1006F00008F0C251EC2FF0E0E851FF4FE4918091F7
:100700007B00E3FB222720F930E095E0220F331F26
:100710009A95E1F78F7D282B20937B00E770E064AA
:10072000E0937C0080917A00806480937A008091CD
:100730007A0086FDFCCF809178002091790090E0CE
:10074000922B13C00E945E03009769F0DC011396A0
:100750002C9113976C2F621BED91FC910680F78111
:10076000E02DCF91099480E090E0CF910895CF9350
:10077000DF93EC0189850E9473032E853F8544E059
:10078000880F991F4A95E1F7821B930B95958795E2
:1007900095958795280F391F3F872E87285F3F4FF4
:1007A000C90164E0959587956A95E1F7EC85FD852B
:1007B000309709F00995E881F9810680F781E02DED
:1007C000BC01CE01DF91CF91099408950895089559
:1007D00008957F928F929F92AF92BF92CF92DF92B5
:1007E000EF92FF920F931F93CF93DF93C82E8B014D
:1007F0007A018091AD02811103C08FEF9FEF74C029
:100800008091AC0280FF05C08091E00082608093FF
:10081000E000CE2DDF2DD12C8AEFB82E8C2D8770E5
:10082000982E8C2D8072882E8C2D8074782E9AE3D1
:10083000A92E209719F4DD2009F451C08C2D0E94B7
:10084000510181110AC0BA94BB20B9F261E070E095
:1008500080E090E00E94B00BECCF282F30E0C21770
:10086000D3070CF48C2F9FB7F8949092E900209155
:10087000E80025FF32C0282F30E0C21BD30B8820B0
:1008800029F08150A0F01092F100FBCFF801C7FED3
:100890000AC0815050F044914093F1003196F9CF55
:1008A00041914093F1008150D8F7020F131FDD20D2
:1008B00019F0A092E8000AC08091E80085FD08C008
:1008C000A092E800DD24D394209739F0D12C05C004
:1008D000209719F47110A092E8009FBFAACF5D9AEB
:1008E00084E68093AB02C701DF91CF911F910F91F6
:1008F000FF90EF90DF90CF90BF90AF909F908F9040
:100900007F900895CF93DF93EC0180910B018823B2
:1009100031F083E00E94E9031816190634F081E0F3
:1009200090E09B838A8380E090E0DF91CF910895EF
:1009300083E00C94BE060F931F93CF93DF9300D0F8
:1009400000D0CDB7DEB7862F90E034E0959587953F
:100950003A95E1F78983462B4A832B830C830FEF6B
:1009600012E0F801838144E050E0BE016F5F7F4FE9
:100970008F5F0E94E903F80183818F5F0E94BE06AA
:100980000F900F900F900F90DF91CF911F910F91CB
:10099000089580915B0390915C030C944911CF936F
:1009A000DF93EC01888981506823CE010E94C80A38
:1009B00089850E9473038985DF91CF910C9473031D
:1009C000DF92EF92FF920F931F93CF93DF93D82E76
:1009D0008A017B01E40EF51EEB01CE15DF0571F0F7
:1009E000D7FE03C0FE01849101C088810E942301CB
:1009F00021968111F2CF8FEF9FEF01C0C801DF91E7
:100A0000CF911F910F91FF90EF90DF9008950F937A
:100A10001F93CF93DF931F92CDB7DEB782E0898318
:100A200042E450E064EF70E080E80E94E0040E943D
:100A3000F40ADC0112960D911C9113970115110512
:100A400089F0D801ED91FC910280F381E02DBE0187
:100A50006F5F7F4FC801099597FD04C0F8010085BD
:100A60001185ECCF89810F90DF91CF911F910F916C
:100A70000895615030F02091F100FC01208301962F
:100A8000F8CF289A84E68093AA020895CF93DF9343
:100A9000C82F8B3210F5682F70E0FB01EA59FE4F2A
:100AA0008491FB01ED56FE4FD491FB01E253FE4FC2
:100AB000C491CC2321F181110E94080BEC2FF0E0AE
:100AC000EE0FFF1FEB57FE4FA591B491EC91ED2374
:100AD00081E090E0B1F480E014C00E945E030097D2
:100AE00071F0DC0113962C9113976C2F621BED9122
:100AF000FC910480F581E02DDF91CF91099480E095
:100B000090E0DF91CF9108950F931F93CF93DF93E0
:100B1000EC018B01FB0180810E94460521E0892BBD
:100B200009F420E0F8018181F22FF81BFF3F69F5FD
:100B30003FB7F8948091AE029091AF02A091B002BD
:100B4000B091B1023FBF4E855F8568897989841B6A
:100B5000950BA60BB70B4E895F89688D798D481769
:100B600059076A077B0710F53FB7F8948091AE02EA
:100B70009091AF02A091B002B091B1023FBF8E87B9
:100B80009F87A88BB98B81E012C0F13079F43FB711
:100B9000F8948091AE029091AF02A091B002B09112
:100BA000B1023FBF8E879F87A88BB98B80E0F80189
:100BB0002183DF91CF911F910F910895CF93DF9300
:100BC000EC01888981506823CE010E94C80A89857A
:100BD000DF91CF910C944605CF93DF938B3220F4B5
:100BE000DF91CF910C94450BD62FC82F0E945E0346
:100BF000009779F0DC0113962C9113976C2F621BF0
:100C0000ED91FC910280F381E02D4D2FDF91CF918A
:100C10000994DF91CF910895CF93DF938B3220F425
:100C2000DF91CF910C94740BD62FC82F0E945E03D6
:100C3000009779F0DC0113962C9113976C2F621BAF
:100C4000ED91FC910190F081E02D4D2FDF91CF913E
:100C50000994DF91CF910895642FFC0181850C9454
:100C60000C060F931F93CF938C01C0E08C2F90E064
:100C7000F801268537858217930758F42285338536
:100C8000F901E80FF91F61E080810E940C06CF5F37
:100C9000EDCFCF911F910F9108950E94D2113FB7D0
:100CA000F8948091F7029091F802A091F902B09126
:100CB000FA0226B5A89B05C02F3F19F00196A11D89
:100CC000B11D3FBFBA2FA92F982F8827820F911DE2
:100CD000A11DB11DBC01CD0142E0660F771F881F29
:100CE000991F4A95D1F708951F920F920FB60F9250
:100CF00011242F933F938F939F93AF93BF93809132
:100D0000AE029091AF02A091B002B091B1023091C9
:100D1000F60223E0230F2D3720F40196A11DB11D0B
:100D200005C026E8230F0296A11DB11D2093F602EF
:100D30008093AE029093AF02A093B002B093B10241
:100D40008091F7029091F802A091F902B091FA0215
:100D50000196A11DB11D8093F7029093F802A09314
:100D6000F902B093FA02BF91AF919F918F913F9199
:100D70002F910F900FBE0F901F9018958093E90050
:100D80008091F200882319F08AE38093E8000895A7
:100D90001F920F920FB60F9211242F933F934F93F0
:100DA0005F936F937F938F939F93AF93BF93CF93F3
:100DB000EF93FF93C091E1008091E100837F8093E6
:100DC000E100C3FF0FC01092E90081E08093EB00C7
:100DD0001092EC0082E38093ED001092AD0288E067
:100DE0008093F000C2FF19C083E00E94BE0680918C
:100DF000AB02882339F08091AB0281508093AB0223
:100E0000882389F18091AA02882339F08091AA026F
:100E100081508093AA02882341F1C4FF10C08091C1
:100E2000E2008E7E81608093E2008091E1008F7EFF
:100E30008093E1008091AC028E7E806111C0C0FF82
:100E400016C08091E2008E7E80618093E2008091E6
:100E5000E1008E7E8093E1008091AC028E7E816005
:100E60008093AC0204C05D98CDCF2898D6CFFF9177
:100E7000EF91CF91BF91AF919F918F917F916F91A2
:100E80005F914F913F912F910F900FBE0F901F9048
:100E900018951F920F920FB60F921124CF92DF92E6
:100EA000EF92FF920F931F932F933F934F935F9374
:100EB0006F937F938F939F93AF93BF93EF93FF9322
:100EC000CF93DF93CDB7DEB76C97DEBFCDBF109267
:100ED000E9008091E80083FFFBC168E0CE01459600
:100EE0000E94390582EF8093E8008D8987FF05C055
:100EF0009091E80090FFFCCF03C09EEF9093E80034
:100F0000982F907609F0C6C09E894F89588D2F89F9
:100F1000F88C91110CC0803829F48091B302809331
:100F2000F10002C01092F1001092F10045C1913021
:100F300051F4811141C14130510509F03DC1809109
:100F4000B3028D7F0BC0933061F4811135C1413004
:100F5000510509F031C18091B30282608093B302E0
:100F60002BC1953049F48091E80080FFFCCF822F9F
:100F700080688093E30020C1963009F05EC00B8D3D
:100F80001C8D22E01092E9001092A9021092A80292
:100F9000F21232C01092A7021092A6020E94070518
:100FA00099E0BE016F5F7F4FDB01E92F1D92EA954B
:100FB000E9F79983FA8291E09E8390EA98879AEF05
:100FC00099872091A8023091A902275F3F4F3C8367
:100FD0002B838D831092E9001092A9021092A8022F
:100FE0001093A7020093A60249E050E080E00E941F
:100FF000E0040E940705E0C01093A7020093A60238
:101000000E94F40ADC0112960D911C9113970115B0
:10101000110509F4BBC0D801ED91FC910480F58164
:10102000E02DBE016B5E7F4FC8010995009709F066
:10103000C7C0F80100851185EACF973009F445C192
:10104000983021F481E08093F100B6C0993009F026
:10105000B3C0837009F039C1EDE0F1E081E031E027
:1010600096E32081211109C08EE78093EA00109257
:10107000EA008F898093AD029FC08093E90030938E
:10108000EB0021912093EC009093ED008F5F87306F
:1010900041F7EACF8B8D9C8D1092E9001092A90246
:1010A0001092A8029093A7028093A602898D8111C5
:1010B00053C08E899D89913A49F4813209F005C166
:1010C00047E050E064E071E080E0BBC0913209F09D
:1010D000FCC0833269F48F89988DA0E0B0E08093E2
:1010E000000190930101A0930201B093030164C039
:1010F000803269F48091E80082FFFCCF67E084E0F1
:1011000091E00E9439058BEF8093E80055C0823250
:1011100009F052C08F8980930B01EEEFFFE78591B4
:1011200094918B3F9C4D19F0E0E0F8E002C0EEEFA7
:10113000FAE08091040190910501A0910601B0911F
:101140000701803B9440A105B10509F09EC0809144
:101150000B0180FF79C099C00E94F40AFC01028152
:1011600013810115110509F4B0C0D801ED91FC916E
:101170000190F081E02DBE016B5E7F4FC8010995A3
:1011800081111AC0F80100851185EBCFF1E0FF163F
:1011900009F44EC0F3E0FF1298C08F89882309F448
:1011A0004AC0823089F440E86DE088E591E00E9411
:1011B0009A0C882309F489C08EEF8093E80088C0D8
:1011C00018161906CCF381C0813029F440E86BE091
:1011D0008CE491E0ECCF833009F077C00E94F40AF0
:1011E000DC011296ED90FC9013978E010F5F1F4F5C
:1011F0006801E114F10479F0D701ED91FC910680CA
:10120000F781E02DB801C7010995080F111DF701FD
:10121000E084F184EECFD8011C92F6010190002009
:10122000E9F73197BF016C197D0940E0C601BFCFD6
:101230006AE371E002C066E371E0FB01449150E0B3
:1012400080E80E94E004B8CFEE3F2AE0F20751F0B8
:10125000808191818737A7E79A0721F09093FF0A51
:101260008093FE0A87E797E79183808380916000EF
:101270008093B2029BE088E10FB6F894A895809322
:1012800060000FBE9093600097CF80819181873777
:10129000974709F091CFA89580916000886180936D
:1012A00060008091B20280936000EE3FBAE0FB07DD
:1012B00039F08091FE0A9091FF0A918380837CCF60
:1012C0001092FF0A1092FE0A77CF81E28093EB0022
:1012D0006C960FB6F894DEBF0FBECDBFDF91CF91F5
:1012E000FF91EF91BF91AF919F918F917F916F91FE
:1012F0005F914F913F912F911F910F91FF90EF9030
:10130000DF90CF900F900FBE0F901F90189580E048
:1013100090E0089580E00895FC0182818F5BFB01DD
:10132000808381E0089584E0E9E9F1E0DB01019048
:101330000D928A95E1F784E00895CF92DF92EF92C3
:10134000FF920F931F93CF93DF93CDB7DEB7C456B1
:10135000D1090FB6F894DEBF0FBECDBF6C01DB0123
:101360009C919E5F9C93FE01319684E6DF011D9265
:101370008A95E9F788E089838BE08A8322E02C83D1
:1013800091E09D839E8339E0398774E07A879E8758
:101390009F873A8B44E24B8B9C8B00E011E01E8BC5
:1013A0000D8B89E0E82EF12CF88EEF8A998F3B8F18
:1013B0007C8F2F8F98A353E059A387E08CA34DA374
:1013C0009EA318A70FA301E410E01AA709A786E0BF
:1013D0008BA74CA72DA79EA79FA789AB4AAB2BAB8A
:1013E0002CAB2DAB3FAB48AF59AF9AAF5BAF9CAFC7
:1013F0002DAF9EAF21963FAF219722964FAF2297F8
:1014000023965FAF239724962FAF249725967FAF1F
:10141000259726969FAF269727969FAF27972896C2
:101420009FAF28972A963FAF2A9745E02B964FAF5C
:101430002B972D962FAF2D9760E470E02F967FAFFE
:101440006EAF2F9763964FAF639785E264968FAF29
:10145000649765969FAF659766969FAF6697679608
:101460009FAF679768963FAF689769964FAF699748
:101470006B962FAF6B976D967FAF6EAF6D97A19602
:101480004FAFA197A2968FAFA297A3969FAFA397B6
:10149000A4969FAFA497A5965FAFA597D601129685
:1014A0009C9112979B839B879F5F9A8F9D8F13962A
:1014B0008C912C968FAF2C978F5F80686A968FAF38
:1014C0006A9744E650E0BF0180E00E94E004CC59F6
:1014D000DF4F0FB6F894DEBF0FBECDBFDF91CF91C7
:1014E0001F910F91FF90EF90DF90CF9008958F9212
:1014F0009F92AF92BF920F931F93CF93DF93CDB77D
:10150000DEB7A1970FB6F894DEBF0FBECDBF19A20C
:10151000423008F44AE08E010F5D1F4F842E912C5B
:10152000A12CB12CA50194010E948910E62FB901CC
:10153000CA0101501109EA3014F4E05D01C0E95C10
:10154000D801EC93232B242B252B61F701151105D2
:1015500071F0F80101900020E9F73197AF01401BCD
:10156000510BB8018BE093E00E94820402C080E03E
:1015700090E0A1960FB6F894DEBF0FBECDBFDF910D
:10158000CF911F910F91BF90AF909F908F90089532
:10159000EF92FF920F931F93CF93DF938C01D62F7F
:1015A000C0E0EE24E394F12C8C2F90E0F801268526
:1015B00037858217930788F4B7010C2E01C0660F98
:1015C0000A94EAF76D2322853385F901E80FF91FA4
:1015D00080810E94EC05CF5FE7CFDF91CF911F9113
:1015E0000F91FF90EF90089580911B0481110DC021
:1015F00082E08093170484E08093180410921A0408
:101600001092190481E080931B0487E194E008950F
:1016100090E0FC013197EF30F105B0F5EB59FF4F49
:101620000C94AB10809180008F7703C08091800074
:101630008F7D80938000089580918000877FF9CF0F
:1016400084B58F7702C084B58F7D84BD0895809165
:1016500090008F7707C0809190008F7D03C08091AC
:101660009000877F8093900008958091C0008F77CD
:1016700003C08091C0008F7D8093C0000895809149
:10168000C200877F8093C20008951F93CF93DF939A
:10169000282F30E0F901EA59FE4F8491F901ED5607
:1016A000FE4FD491F901E253FE4FC491CC23C1F017
:1016B000162F81110E94080BEC2FF0E0EE0FFF1F98
:1016C000E054FE4FA591B4919FB7F894111104C056
:1016D0008C91D095D82302C0EC91DE2BDC939FBF78
:1016E000DF91CF911F910895CF93DF9390E0FC019C
:1016F000ED56FE4F2491FC01E253FE4F8491882366
:1017000061F190E0880F991FFC01EE54FE4FC591E6
:10171000D491FC01E054FE4FA591B491611109C030
:101720009FB7F8948881209582238883EC912E239B
:101730000BC0623061F49FB7F8948881322F3095E6
:1017400083238883EC912E2B2C939FBF06C08FB7E9
:10175000F894E8812E2B28838FBFDF91CF910895D5
:101760008F929F92AF92BF92CF92DF92EF92FF92B1
:101770006B017C010E944F064B015C01C114D10436
:10178000E104F104F1F00E944F06DC01CB0188195D
:101790009909AA09BB09883E9340A105B10570F3D8
:1017A00021E0C21AD108E108F10888EE880E83E032
:1017B000981EA11CB11CC114D104E104F10419F755
:1017C000DDCFFF90EF90DF90CF90BF90AF909F90D4
:1017D0008F900895CF92DF92EF92FF920F931F9315
:1017E000CF93DF9380ED91E0FC012491E22FF0E0B4
:1017F000EE0FFF1FE054FE4FC590D490FC012491E2
:10180000E22FF0E0EE0FFF1FEE54FE4FE590F49054
:10181000E5E9F1E0C491FC018491E82FF0E0EE0FDE
:10182000FF1FEB57FE4F05911491D6018C91DC2FD1
:10183000D0958D238C93F70180818C2B808361E080
:1018400070E080E090E00E94B00B9FB7F894D70161
:101850008C918D238C93F60180818C2B8083D80111
:101860008C918C2309F033C08C918C2309F031C00A
:101870008C918C2381F58C918C2379F58C918C2320
:1018800071F58C918C2369F58C918C2361F58C9189
:101890008C2359F58C918C2351F58C918C2349F52F
:1018A0008C918C2341F58C918C2339F58C918C2370
:1018B00031F58C918C2329F58C918C2321F58C9119
:1018C0008C2319F58C918C2311F581E121C080E0E6
:1018D0001FC081E01DC082E01BC083E019C084E00E
:1018E00017C085E015C086E013C087E011C088E00E
:1018F0000FC089E00DC08AE00BC08BE009C08CE00E
:1019000007C08DE005C08EE003C08FE001C080E11C
:101910009FBFF6019081D923D083D701EC91CE2BC4
:10192000CC93DF91CF911F910F91FF90EF90DF90BB
:10193000CF900895DF92EF92FF920F931F93CF9372
:10194000DF93D82EF92EE42E062F10E0C801019661
:10195000880F0E94230183E00E942301CD2DDF2DFB
:101960000C0F1D1FC017D10789F0E7FE03C0FE0151
:10197000849101C088810E942301F82E80E00E949A
:1019800023018F2121968111EDCF01C081E0DF91EC
:10199000CF911F910F91FF90EF90DF900895CF931B
:1019A000DF93E5E0F4E08EE291E074979183808329
:1019B000A781B085109731F02581368116963C932A
:1019C0002E9315972091FB023091FC02E217F3074A
:1019D00021F4B093FC02A093FB02C581D68120972D
:1019E00011F0B887AF832091FD023091FE02E2171B
:1019F000F30721F4D093FE02C093FD0223E0E53605
:101A0000F20799F680911104909112040E944911F5
:101A10008EE691E09093060480930504E0910C0417
:101A2000F0910D04309731F080910A0490910B04ED
:101A300096838583809161039091620385509440E1
:101A400021F4F0936203E0936103A0910A04B09142
:101A50000B04109721F01896FC93EE931797809142
:101A60006303909164038550944021F4B093640320
:101A7000A0936303DF91CF910895789484B5826039
:101A800084BD84B5816084BD85B5826085BD85B522
:101A9000816085BD80916E00816080936E001092A0
:101AA000810080918100826080938100809181001B
:101AB00081608093810080918000816080938000AC
:101AC000809191008260809391008091910081606B
:101AD000809391008091900081608093900080912C
:101AE000C10084608093C1008091C10082608093B6
:101AF000C1008091C10081608093C1008091C300CA
:101B000081608093C3008091C00082608093C00098
:101B10008091C20081608093C20080917A008460CD
:101B200080937A0080917A00826080937A0080911D
:101B30007A00816080937A0080917A008068809337
:101B40007A001092AD021092B3021092AC02809112
:101B5000D70081608093D70080EA8093D80089B550
:101B6000806189BD89B5826089BD09B400FEFDCF61
:101B700061E070E080E090E00E94B00B8091D800BE
:101B80008F7C80618093D8008091E000807F80937B
:101B9000E0008091E1008E7E8093E1008DE08093F3
:101BA000E200559A209A5D9828988FEF9FEF9093C6
:101BB0001803809317038BE093E00E942902892B7E
:101BC00039F464EF71E080E090E00E94B00BF3CF55
:101BD0000E94EA0B90E09093C7028093C60261E0F6
:101BE00080E00E940C0661E081E00E940C0661E04A
:101BF00089E00E940C060FE611E09EE1E92E91E0DB
:101C0000F92E20E0C22E20E0D22E0E94EA0BC82F2F
:101C1000D0E0D093E702C093E6024091C602509113
:101C2000C7029E01241B350B37FF03C03195219558
:101C3000310922303105B4F04C175D077CF4682F70
:101C400070E080E090E04AE00E94770A42E050E0D5
:101C500066E971E08BE093E00E948204D093C702B2
:101C6000C093C6028091DA029091DB02843F9140DA
:101C700014F061E001C060E081E00E94EC05C091D9
:101C8000D602D091D702D7FD2396D595C795D59585
:101C9000C79561E089E00E94740B209711F460E021
:101CA00004C0CF3FD10529F461E089E00E94450BD3
:101CB0007AC0F801849190E0FC013197EF30F10592
:101CC00008F06CC0EA5AFF4F0C94AB1084B58068E2
:101CD00084BDC7BD68C084B5806284BDC8BD63C013
:101CE00080918000806880938000D0938900C093A9
:101CF000880059C080918000806280938000D093DA
:101D00008B00C0938A004FC08091800088608093D0
:101D10008000D0938D00C0938C0045C080919000CE
:101D2000806880939000D0939900C09398003BC046
:101D300080919000806280939000D0939B00C0932C
:101D40009A0031C080919000886080939000D09379
:101D50009D00C0939C0027C08091C0008068809344
:101D6000C0008091C0008F7B8093C000C093CF00E3
:101D70001AC08091C00080628093C000C093D000E0
:101D800012C08091C20088608093C2008091C2001E
:101D90008B7F8093C200C093D20005C0C038D105AC
:101DA0000CF082CF7CCFC0915F03D09160038A8119
:101DB0009B81892B01F58091B4029091B5029B83A0
:101DC0008A83892B79F482E090E00E94B11090938D
:101DD000B5028093B402FC01F182E082998388838A
:101DE0009B838A838A819B81DC01ED91FC91019028
:101DF000F081E02D0995A090FD02B090FE02A114A3
:101E0000B10461F0D501ED91FC910480F581E02DE4
:101E1000C5010995F501A580B680F1CF8A819B8126
:101E2000DC01ED91FC910280F381E02D0995811197
:101E3000F5CFC114D10409F4E8CE0E940000E5CE2C
:101E4000FC018EE291E0918380831282138281E013
:101E5000848316821582108617828091FD029091EC
:101E6000FE02892B21F4F093FE02E093FD02A09183
:101E7000FB02B091FC02B087A783109721F0169661
:101E8000FC93EE931597F093FC02E093FB0216820D
:101E900015826187158614861786168682E691E07C
:101EA000918380838FEF808B87E0818B428B138AB5
:101EB000089582E0809303038093040389E093E014
:101EC0009093060380930503109208031092070372
:101ED00088E391E0909300038093FF0280E8809371
:101EE000090381E880930A030E94F40AFC0121811E
:101EF0008091030390E0820F911D0897C4F5A281A1
:101F0000B381109729F48FEF92E0938382830EC000
:101F100018968D919C911997009711F0DC01F8CFDC
:101F20008FEF92E019969C938E93189780818093FF
:101F30000103818180930203908180910403890FC2
:101F4000808380E090910303891788F4A0910503B2
:101F5000B0910603A80FB11D9C91A181B0E0A45FD0
:101F6000BE4F9C9391819F5F91838F5FEBCF1092C7
:101F70000E0310920D0388EE93E0A0E0B0E0809392
:101F80000F0390931003A0931103B093120384E402
:101F900091E090930C0380930B038FEF9FEF90934E
:101FA0001803809317038091230481110BC01092B2
:101FB0005C0310925B0310925E0310925D0381E05C
:101FC000809323048BE593E09093600380935F03F9
:101FD00080E1809307048091630390916403892BCF
:101FE00031F485E094E09093640380936303E0917F
:101FF0006103F0916203F0930D04E0930C043097B9
:1020000021F085E094E09683858385E094E09093C9
:1020100062038093610310920B0410920A04809172
:10202000130180930804805F809309048093130157
:1020300084E891E0909306048093050483E1809303
:102040000E0484E090E0909314048093130480E1E4
:1020500090E0909316048093150484E090E00E9431
:10206000B110909312048093110440912601509175
:1020700027016091280170912901FC01408351835F
:10208000628373839093100480930F0485E094E03F
:102090000E94310641E06091080485E693E00E94C9
:1020A000200F609108046F5F42E089E793E00E948F
:1020B000200F609108046E5F43E08DE893E00E947A
:1020C000200F609108046D5F44E081EA93E00E9474
:1020D000200F609108046C5F45E085EB93E00E945F
:1020E000200F609108046B5F46E089EC93E00E944A
:1020F000200F609108046A5F47E08DED93E00E9435
:10210000200F60910804695F48E081EF93E00C9430
:10211000200FA1E21A2EAA1BBB1BFD010DC0AA1F96
:10212000BB1FEE1FFF1FA217B307E407F50720F040
:10213000A21BB30BE40BF50B661F771F881F991FBB
:102140001A9469F760957095809590959B01AC0104
:10215000BD01CF010895EE0FFF1F0590F491E02D12
:1021600009940F931F93CF93DF938230910510F45E
:1021700082E090E0E0912D04F0912E0420E030E028
:10218000A0E0B0E0309719F14081518102811381C4
:1021900048175907C8F08417950769F4109731F06C
:1021A00012960C93129713961C9327C000932D043C
:1021B00010932E0422C02115310519F04217530740
:1021C00018F49A01BD01EF01DF01F801DBCF211501
:1021D0003105F9F0281B390B2430310580F48A8150
:1021E0009B816115710521F0FB019383828304C0FB
:1021F00090932E0480932D04FE01329644C0FE017C
:10220000E20FF31F81939193225031093983288380
:102210003AC020912B0430912C04232B41F42091BF
:1022200016013091170130932C0420932B04209138
:102230001401309115012115310541F42DB73EB738
:102240004091180150911901241B350BE0912B048A
:10225000F0912C04E217F307A0F42E1B3F0B281774
:10226000390778F0AC014E5F5F4F2417350748F00F
:102270004E0F5F1F50932C0440932B048193919336
:1022800002C0E0E0F0E0CF01DF91CF911F910F910C
:102290000895CF93DF93009709F481C0FC01329732
:1022A00013821282A0912D04B0912E04109781F414
:1022B00020813181820F931F20912B0430912C04B7
:1022C0002817390751F5F0932C04E0932B0467C0CD
:1022D000ED0120E030E0CE17DF0740F44A815B815A
:1022E0009E0141155105F1F0EA01F5CFD383C28378
:1022F00040815181840F951FC817D90759F48881EF
:102300009981840F951F0296918380838A819B8196
:10231000938382832115310529F4F0932E04E093F1
:102320002D043DC0E901FB83EA8349915991C40F13
:10233000D51FEC17FD0761F480819181840F951FF3
:102340000296E90199838883828193819B838A83A2
:10235000E0E0F0E012968D919C911397009719F0B0
:10236000FD01DC01F7CF8D919C9111979D012E5FAE
:102370003F4F820F931F20912B0430912C0428177C
:10238000390769F4309729F410922E0410922D0425
:1023900002C013821282B0932C04A0932B04DF910D
:1023A000CF91089581E090E0F8940C94D71110E05B
:1023B000C8EFD0E004C0FE010E94AB102196C93FD7
:0823C000D107C9F7F894FFCF23
:1023C800FFFFFFFF00E100000000000000C1808166
:1023D8000000002B00002F048000000000003902DC
:1023E80095029B048A02120E0F1000000000E803F9
:1023F80039023902000000008A099D0987099309FA
:1024080000000000C4018204DA0198042902DF01F7
:1024180001020000000082023902B7034D060000E5
:10242800000082023902B7033D0200000000E70302
:10243800E703E603E603E503390239023902390204
:10244800000000002C06E703DE05CF04E503310693
:0E2458003902390239020D0A004D494449008B
:00000001FF
+1 -1
View File
@@ -1 +1 @@
5b5b88025335f306e0a3618fe34989e446b2df4b 74fc8fc0b6bb79a819cd20e5d1f07670288903ad
+259 -746
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -10,6 +10,6 @@ public:
private: private:
} };
#endif #endif
+54 -117
View File
@@ -5,21 +5,21 @@
/* Pins */ /* Pins */
/* GPIO (I2C) */ /* GPIO (I2C) */
const unsigned char gpio_int{0}; const uint8_t gpio_int{0};
const unsigned char sda{2}; const uint8_t sda{2};
const unsigned char scl{3}; const uint8_t scl{3};
/* Multiplexer */ /* Multiplexer */
#define MUX_ADDRSIZE 5 #define MUX_ADDRSIZE 5
const unsigned char mux_sig{A10}; const uint8_t mux_sig{A10};
const unsigned char mux_addr[MUX_ADDRSIZE]{15, 21, 20, 19, 18}; const uint8_t mux_addr[MUX_ADDRSIZE]{15, 21, 20, 19, 18};
/* ShiftRegister (OUT) */ /* ShiftRegister (OUT) */
#define SHIFT_OUTPUTSIZE 4 #define SHIFT_OUTPUTSIZE 4
const unsigned char shift_data{14}; const uint8_t shift_data{14};
const unsigned char shift_latch{16}; const uint8_t shift_latch{16};
const unsigned char shift_clock{1}; const uint8_t shift_clock{1};
/* keyboard (IN) */ /* keyboard (IN) */
#define KEYBOARD_SIZE 6 #define KEYBOARD_INSIZE 6
const unsigned char keyboard[KEYBOARD_SIZE]{4, 5, 6, 7, 8, 9}; const uint8_t keyboard_in[KEYBOARD_INSIZE]{4, 5, 6, 7, 8, 9};
/* Components */ /* Components */
/* GPIO (I2C) */ /* GPIO (I2C) */
@@ -39,29 +39,23 @@ Analog potentiometers[] = {
{multiplexer.pin(7), MIDI_CC::Channel_Volume, 8} {multiplexer.pin(7), MIDI_CC::Channel_Volume, 8}
}; };
/* Values */
int val[16];
int ref[16];
uint8_t readCapacitivePin(int pinToMeasure);
void setup() { void setup() {
Serial.begin(115200); Serial.begin(115200);
while (Serial.available() == 0){ while (Serial.available() == 0){
delay(.5 s); delay(.5 s);
} }
// for (size_t i = 0; i < 4; i++) {
// ref[i] = multiplexer.analogRead(i);
// }
ref[8] = readCapacitivePin(2);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(9, OUTPUT);
}
long loopAverage = 0;
long lastLoop = 0; pinMode(static_cast<uint8_t>(shift_clock), OUTPUT);
bool on = false; pinMode(shift_data, OUTPUT);
pinMode(shift_latch, OUTPUT);
pinMode(2, OUTPUT);
for (size_t i = 0; i < KEYBOARD_INSIZE; i++) {
pinMode(keyboard_in[i], INPUT);
}
}
void loop() { void loop() {
// long start = millis(); // long start = millis();
@@ -76,17 +70,17 @@ void loop() {
// //
// } // }
// } // }
val[8] = readCapacitivePin(2); // val[8] = readCapacitivePin(2);
if (abs(val[8] - ref[8]) >= 2) { // if (abs(val[8] - ref[8]) >= 2) {
if (val[8] > ref[8]) { // if (val[8] > ref[8]) {
// Serial.print("loop() time : "); // // Serial.print("loop() time : ");
// Serial.println(lastLoop, DEC); // // Serial.println(lastLoop, DEC);
// Serial.print("average : "); // // Serial.print("average : ");
// Serial.println(loopAverage, DEC); // // Serial.println(loopAverage, DEC);
Serial.println(val[8], DEC); // Serial.println(val[8], DEC);
} // }
ref[8] = val[8]; // ref[8] = val[8];
} // }
// if (val[0] >= 500) { // if (val[0] >= 500) {
@@ -100,93 +94,36 @@ void loop() {
digitalWrite(1, LOW); digitalWrite(1, LOW);
} }
analogWrite(9, val[0] * 256 / 1024); // analogWrite(9, val[0] * 256 / 1024);
MIDI_Controller.refresh();
// MIDI_Controller.refresh();
// lastLoop = millis() - start; // lastLoop = millis() - start;
// loopAverage = (loopAverage + lastLoop) / 2; // loopAverage = (loopAverage + lastLoop) / 2;
//delay(.5 s); //delay(.5 s);
} }
byte bits[] = {
0b00000001,
B00000010,
B00000100,
B00001000,
B00010000,
B00100000,
B01000000,
B10000000
};
uint8_t readCapacitivePin(int pinToMeasure) { void scanLineOut(int colNum) {
// Variables used to translate from Arduino to AVR pin naming digitalWrite(latchPin, LOW);
volatile uint8_t* port;
volatile uint8_t* ddr;
volatile uint8_t* pin;
// Here we translate the input pin number from if(0 <= colNum && colNum <= 7) {
// Arduino pin number to the AVR PORT, PIN, DDR, shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000); //right sr
// and which bit of those registers we care about. shiftOut(dataPin, clockPin, MSBFIRST, bits[colNum]); //left sr
} else {
byte bitmask; shiftOut(dataPin, clockPin, MSBFIRST, bits[colNum-8]); //right sr
port = portOutputRegister(digitalPinToPort(pinToMeasure)); shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000); //left sr
ddr = portModeRegister(digitalPinToPort(pinToMeasure));
bitmask = digitalPinToBitMask(pinToMeasure);
pin = portInputRegister(digitalPinToPort(pinToMeasure));
// Discharge the pin first by setting it low and output
*port &= ~(bitmask);
*ddr |= bitmask;
delay(1);
uint8_t SREG_old = SREG; //back up the AVR Status Register
// Prevent the timer IRQ from disturbing our measurement
noInterrupts();
// Make the pin an input with the internal pull-up on
*ddr &= ~(bitmask);
*port |= bitmask;
// Now see how long the pin to get pulled up. This manual unrolling of the loop
// decreases the number of hardware cycles between each read of the pin,
// thus increasing sensitivity.
uint8_t cycles = 17;
if (*pin & bitmask) {
cycles = 0;
} else if (*pin & bitmask) {
cycles = 1;
} else if (*pin & bitmask) {
cycles = 2;
} else if (*pin & bitmask) {
cycles = 3;
} else if (*pin & bitmask) {
cycles = 4;
} else if (*pin & bitmask) {
cycles = 5;
} else if (*pin & bitmask) {
cycles = 6;
} else if (*pin & bitmask) {
cycles = 7;
} else if (*pin & bitmask) {
cycles = 8;
} else if (*pin & bitmask) {
cycles = 9;
} else if (*pin & bitmask) {
cycles = 10;
} else if (*pin & bitmask) {
cycles = 11;
} else if (*pin & bitmask) {
cycles = 12;
} else if (*pin & bitmask) {
cycles = 13;
} else if (*pin & bitmask) {
cycles = 14;
} else if (*pin & bitmask) {
cycles = 15;
} else if (*pin & bitmask) {
cycles = 16;
} }
// End of timing-critical section; turn interrupts back on if they were on before, or leave them off if they were off before digitalWrite(latchPin, HIGH);
SREG = SREG_old;
// Discharge the pin again by setting it low and output
// It's important to leave the pins low if you want to
// be able to touch more than 1 sensor at a time - if
// the sensor is left pulled high, when you touch
// two sensors, your body will transfer the charge between
// sensors.
*port &= ~(bitmask);
*ddr |= bitmask;
return cycles;
} }