doc & scan matrix

This commit is contained in:
2019-02-16 16:24:35 +01:00
parent 9a6646b9f6
commit a43332e8b5
11 changed files with 661 additions and 454 deletions
+7 -31
View File
@@ -1,48 +1,24 @@
-I/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino
-I/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro
-I/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092
-I/home/nathan/.platformio/lib/ArduinoJson_ID64/src
-I/home/nathan/.platformio/lib/Encoder
-I/home/nathan/.platformio/lib/Encoder/utility
-I/home/nathan/.platformio/lib/Keypad_ID165/src
-I/home/nathan/.platformio/lib/MIDI controller/src
-I/home/nathan/.platformio/lib/MIDIUSB_ID1104/src
-I/home/nathan/.platformio/lib/Multiplexer_ID320
-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/Keypad_ID165/src
-I/home/nathan/.platformio/lib/PubSubClient_ID89/src
-I/home/nathan/.platformio/lib/Tone_ID1420
-I/home/nathan/.platformio/lib/WifiManager_ID567
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/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/SoftwareSerial/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_Circuit_Playground/utility
-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/Ethernet/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src
-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src
-I/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include
-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/tool-unity
-I/home/nathan/Documents/PlatformIO/Projects/Midi/include
-I/home/nathan/Documents/PlatformIO/Projects/Midi/src
-DPLATFORMIO=30604
-I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include
-I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src
-DPLATFORMIO=40000
-DARDUINO_AVR_MICRO
-DF_CPU=16000000L
-DARDUINO_ARCH_AVR
+3 -3
View File
@@ -1,8 +1,8 @@
{
"execPath": "/home/nathan/.platformio/packages/toolchain-atmelavr/bin/avr-g++",
"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__",
"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__",
"gccErrorLimit": 15,
"gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Encoder,/home/nathan/.platformio/lib/Encoder/utility,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/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/SoftwareSerial/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",
"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/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",
"gccSuppressWarnings": false
}
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
[InternetShortcut]
URL=https://docs.platformio.org/page/projectconf/section_platformio.html#build-dir
Binary file not shown.
+442 -313
View File
@@ -1,314 +1,443 @@
:100000000C94E3000C940B010C940B010C940B0169
:100010000C940B010C940B010C940B010C940B0130
:100020000C940B010C940B010C9426050C94980570
:100030000C940B010C940B010C940B010C940B0110
:100040000C940B010C940B010C940B010C940B0100
:100050000C940B010C940B010C940B010C94DC041C
:100060000C940B010C940B010C940B010C940B01E0
:100070000C940B010C940B010C940B010C940B01D0
:100080000C940B010C940B010C940B010C940B01C0
:100090000C940B010C940B010C940B010C940B01B0
:1000A0000C940B010C940B010C940B0178017B0157
:1000B0006A016E0174019C019C019C017F01830116
:1000C00087018D0191019C019701080B000202023A
:1000D00001000904000001020200000524001001D3
:1000E0000524010101042402060524060001070578
:1000F000810310004009040100020A000000070506
:1001000002024000000705830240000004030904C6
:1001100012010002EF0201404123370000010102F9
:10012000030141726475696E6F204C4C430041724B
:100130006475696E6F204D6963726F000000000086
:100140002300260029002C002F00000000002400BE
:1001500027002A002D0030000000000025002800A4
:100160002B002E00310004040404040304050202E1
:100170000202040302020202060606060606040440
:1001800002020204040408020110408040102040D2
:10019000804080080204018040201002011080107D
:1001A000204040200000000200090F00000304016D
:1001B000000C000000000000000000000000000033
:1001C000000000004B0911241FBECFEFDAE0DEBFB4
:1001D000CDBF11E0A0E0B1E0EEE1F3E102C0059097
:1001E0000D92AC36B107D9F721E0ACE6B1E001C021
:1001F0001D92AB3EB207E1F710E0C3EED0E004C0C1
:100200002197FE010E948209C23ED107C9F70E94D0
:10021000D6070C948D090C94000020919A012111AD
:1002200003C08FEF9FEF08955FB7F89422E020930B
:10023000E9002091F20030E01216130614F421E0D8
:1002400030E0422FFC0184E6415038F0289A809338
:1002500099019091F1009193F7CF2115310521F08B
:100260008091F200882319F05FBFC90108958BE6E1
:100270008093E800F9CF2FB7F89483E08093E900EA
:100280009091E800892F807295FF04C09091F20050
:1002900080E4891B2FBF08958091910181110DC0C9
:1002A00082E080938D0184E080938E011092900112
:1002B00010928F0181E0809391018DE891E0089583
:1002C00090E0FC013197EF30F105B0F5EA5AFF4FAD
:1002D0000C948209809180008F7703C08091800008
:1002E0008F7D80938000089580918000877FF9CF73
:1002F00084B58F7702C084B58F7D84BD08958091C9
:1003000090008F7707C0809190008F7D03C080910F
:100310009000877F8093900008958091C0008F7730
:1003200003C08091C0008F7D8093C00008958091AC
:10033000C200877F8093C20008951F93CF93DF93FD
:10034000282F30E0F901EC55FE4F8491F901EB576D
:10035000FE4FD491F901EA59FE4FC491CC23C1F06C
:10036000162F81110E946001EC2FF0E0EE0FFF1FAD
:10037000E85AFE4FA591B4919FB7F894111104C0AB
:100380008C91D095D82302C0EC91DE2BDC939FBFDB
:10039000DF91CF911F910895CF93DF9390E0FC01FF
:1003A000EB57FE4F2491FC01EA59FE4F84918823BC
:1003B00061F190E0880F991FFC01E65BFE4FC5914B
:1003C000D491FC01E85AFE4FA591B491611109C086
:1003D0009FB7F8948881209582238883EC912E23FF
:1003E0000BC0623061F49FB7F8948881322F30954A
:1003F00083238883EC912E2B2C939FBF06C08FB74D
:10040000F894E8812E2B28838FBFDF91CF91089538
:100410003FB7F8948091890190918A01A0918B0156
:10042000B0918C0126B5A89B05C02F3F19F001960D
:10043000A11DB11D3FBFBA2FA92F982F8827820F6A
:10044000911DA11DB11DBC01CD0142E0660F771FBA
:10045000881F991F4A95D1F708958F929F92AF9266
:10046000BF92CF92DF92EF92FF926B017C010E94CC
:1004700008024B015C01C114D104E104F104F1F064
:100480000E940802DC01CB0188199909AA09BB095D
:10049000883E9340A105B10570F321E0C21AD1084E
:1004A000E108F10888EE880E83E0981EA11CB11CBB
:1004B000C114D104E104F10419F7DDCFFF90EF90EE
:1004C000DF90CF90BF90AF909F908F900895409114
:1004D0006E0150916F0120916C0130916D014217B6
:1004E0005307B4F49091E8009570E1F39091E8001F
:1004F00092FD19C08093F10080916E0190916F017F
:1005000001968F739927892B19F48EEF8093E80059
:1005100080916E0190916F01019690936F0180938D
:100520006E0181E0089580E00895DF92EF92FF92DE
:100530000F931F93CF93DF93D82EF92EE42E062F1F
:1005400010E0C8010196880F0E94670283E00E94B4
:100550006702CD2DDF2D0C0F1D1FC017D10789F0AD
:10056000E7FE03C0FE01849101C088810E946702FA
:10057000F82E80E00E9467028F2121968111EDCF35
:1005800001C081E0DF91CF911F910F91FF90EF901B
:10059000DF900895DF92EF92FF920F931F93CF9316
:1005A000DF93D82E8A017B01E40EF51EEB01CE15F8
:1005B000DF0571F0D7FE03C0FE01849101C0888180
:1005C0000E94670221968111F2CF8FEF9FEF01C049
:1005D000C801DF91CF911F910F91FF90EF90DF90B5
:1005E00008950F931F93CF93DF931F92CDB7DEB77C
:1005F00082E0898342E450E06AEC70E080E80E9487
:10060000CA020E944C01DC0112960D911C911397B5
:100610000115110589F0D801ED91FC910280F3815B
:10062000E02DBE016F5F7F4FC801099597FD04C0A3
:10063000F80100851185ECCF89810F90DF91CF9172
:100640001F910F910895615030F02091F100FC014D
:1006500020830196F8CF289A84E680939901089523
:10066000CF92DF92EF92FF920F931F93CF93DF937E
:100670006C017A018B01C0E0D0E0CE15DF0581F07E
:10068000D8016D918D01D601ED91FC910190F08121
:10069000E02DC6010995892B11F02196EECF7E0140
:1006A000C701DF91CF911F910F91FF90EF90DF90E5
:1006B000CF9008958F929F92AF92BF92CF92DF9288
:1006C000EF92FF920F931F93CF93DF936C017B0107
:1006D0008A0180910B01882309F45CC080919A0102
:1006E000882309F457C08091720180FF05C0809172
:1006F000E00082608093E000E801B12C8AEFA82E30
:1007000093E0892E2AE3922E209711F4BB20D9F191
:100710000E943B0181110AC0AA94AA20D9F161E08C
:1007200070E080E090E00E942D02EECF282F30E0B4
:10073000C217D3070CF48C2F9FB7F8948092E9006E
:100740002091E80025FF1DC0282F30E0C21BD30BED
:10075000F701815020F041914093F100FACFE20E71
:10076000F31EBB2019F09092E8000AC08091E800C7
:1007700085FD07C09092E800BB24B394209709F050
:10078000B12C9FBFC1CF5D9A84E680937101101692
:10079000110644F081E090E0F6019383828380E0CB
:1007A00090E001C0C801DF91CF911F910F91FF90A0
:1007B000EF90DF90CF90BF90AF909F908F90089573
:1007C000CF93DF931F92CDB7DEB76983DC01ED9144
:1007D000FC910280F381E02D41E050E0BE016F5FAB
:1007E0007F4F09950F90DF91CF91089583E080931B
:1007F000E9008091F200882319F08AE38093E800F1
:1008000008950E943B0190E00895CF93DF931F92DB
:10081000CDB7DEB7FC018485958597FD05C02FEF28
:100820003FEF358724870BC0CE0101960E940D0152
:10083000019719F4898190E002C08FEF9FEF0F902C
:10084000DF91CF9108950F931F93CF93DF931F9262
:10085000CDB7DEB78C01FC018485958597FF0EC06E
:10086000CE0101960E940D01019719F4898190E053
:1008700002C08FEF9FEFF80195878487F801848588
:1008800095850F90DF91CF911F910F910895FC01F5
:100890008485958597FD0BC09FB7F89482E080937F
:1008A000E9008091F2009FBF90E0019608959FB704
:1008B000F89482E08093E9008091F2009FBF90E07D
:1008C0000895089580E090E008950F931F93CF93CB
:1008D000DF93C7E0D0E0082F10E0B8010C2E02C073
:1008E000759567950A94E2F761708EE00E949D010C
:1008F00061E081E00E949D0160E081E00E949D0135
:10090000219758F7DF91CF911F910F91089500978C
:1009100069F0FC0101900020E9F73197AF01481B15
:10092000590BBC018BE991E00C945A0380E090E0F4
:1009300008958F929F92AF92BF920F931F93CF9380
:10094000DF93CDB7DEB7A1970FB6F894DEBF0FBE29
:10095000CDBF19A2423008F44AE08E010F5D1F4F4F
:10096000842E912CA12CB12CA50194010E94600928
:10097000E62FB901CA0101501109EA3014F4E05D13
:1009800001C0E95CD801EC93232B242B252B61F7C4
:10099000C8010E948704A1960FB6F894DEBF0FBE6F
:1009A000CDBFDF91CF911F910F91BF90AF909F90DE
:1009B0008F9008950E9488091F920F920FB60F9290
:1009C00011242F933F938F939F93AF93BF93809165
:1009D000850190918601A0918701B09188013091A5
:1009E000840123E0230F2D3720F40196A11DB11DB2
:1009F00005C026E8230F0296A11DB11D2093840196
:100A00008093850190938601A0938701B09388011C
:100A10008091890190918A01A0918B01B0918C0104
:100A20000196A11DB11D8093890190938A01A09325
:100A30008B01B0938C01BF91AF919F918F913F91AA
:100A40002F910F900FBE0F901F9018951F920F922D
:100A50000FB60F9211248F939F938091E100909194
:100A6000E100937F9093E10083FF0FC01092E900B3
:100A700091E09093EB001092EC0092E39093ED00E4
:100A800010929A0198E09093F00082FF20C093E0CA
:100A90009093E9009091F200992319F09AE39093D2
:100AA000E80090917101992339F090917101915072
:100AB00090937101992389F190919901992339F0CB
:100AC00090919901915090939901992341F184FF5C
:100AD00010C08091E2008E7E81608093E200809160
:100AE000E1008F7E8093E100809172018E7E8061B3
:100AF00011C080FF16C08091E2008E7E80618093DD
:100B0000E2008091E1008E7E8093E100809172018D
:100B10008E7E81608093720104C05D98CDCF28984D
:100B2000D6CF9F918F910F900FBE0F901F90189569
:100B30001F920F920FB60F921124CF92DF92EF9275
:100B4000FF920F931F932F933F934F935F936F9356
:100B50007F938F939F93AF93BF93EF93FF93CF9325
:100B6000DF93CDB7DEB76C97DEBFCDBF1092E90043
:100B70008091E80083FFFBC168E0CE0145960E94AA
:100B8000230382EF8093E8008D8987FF05C0909151
:100B9000E80090FFFCCF03C09EEF9093E800982FF1
:100BA000907609F0C6C09E894F89588D2F89F88CA0
:100BB00091110CC0803829F4809173018093F10069
:100BC00002C01092F1001092F10045C1913051F431
:100BD000811141C14130510509F03DC1809173013E
:100BE0008D7F0BC0933061F4811135C141305105C7
:100BF00009F031C1809173018260809373012BC130
:100C0000953049F48091E80080FFFCCF822F806806
:100C10008093E30020C1963009F05EC00B8D1C8DDF
:100C200022E01092E90010926F0110926E01F21210
:100C300032C010926D0110926C010E94F10299E095
:100C4000BE016F5F7F4FDB01E92F1D92EA95E9F747
:100C50009983FA8291E09E8390EA98879AEF998728
:100C600020916E0130916F01275F3F4F3C832B83B2
:100C70008D831092E90010926F0110926E01109313
:100C80006D0100936C0149E050E080E00E94CA02CF
:100C90000E94F102E0C010936D0100936C010E946C
:100CA0004C01DC0112960D911C9113970115110551
:100CB00009F4BBC0D801ED91FC910480F581E02DD1
:100CC000BE016B5E7F4FC8010995009709F0C7C050
:100CD000F80100851185EACF973009F445C19830B5
:100CE00021F481E08093F100B6C0993009F0B3C0DF
:100CF000837009F039C1EFE1F1E081E031E096E382
:100D00002081211109C08EE78093EA001092EA0049
:100D10008F8980939A019FC08093E9003093EB0004
:100D200021912093EC009093ED008F5F873041F785
:100D3000EACF8B8D9C8D1092E90010926F0110927A
:100D40006E0190936D0180936C01898D811153C068
:100D50008E899D89913A49F4813209F005C147E0B5
:100D600050E064E071E080E0BBC0913209F0FCC06B
:100D7000833269F48F89988DA0E0B0E08093000100
:100D800090930101A0930201B093030164C08032EB
:100D900069F48091E80082FFFCCF67E084E091E095
:100DA0000E9423038BEF8093E80055C0823209F044
:100DB00052C08F8980930B01EEEFFFE785919491EC
:100DC0008B3F9C4D19F0E0E0F8E002C0EEEFFAE056
:100DD0008091040190910501A0910601B091070155
:100DE000803B9440A105B10509F09EC080910B01A4
:100DF00080FF79C099C00E944C01FC0102811381DF
:100E00000115110509F4B0C0D801ED91FC910190D4
:100E1000F081E02DBE016B5E7F4FC8010995811105
:100E20001AC0F80100851185EBCFF1E0FF1609F437
:100E30004EC0F3E0FF1298C08F89882309F44AC09E
:100E4000823089F440E86DE08EE291E00E949502E4
:100E5000882309F489C08EEF8093E80088C01816B3
:100E60001906CCF381C0813029F440E86BE082E2BE
:100E700091E0ECCF833009F077C00E944C01DC0197
:100E80001296ED90FC9013978E010F5F1F4F680133
:100E9000E114F10479F0D701ED91FC910680F7811E
:100EA000E02DB801C7010995080F111DF701E08475
:100EB000F184EECFD8011C92F60101900020E9F7F1
:100EC0003197BF016C197D0940E0C601BFCF60E1D9
:100ED00071E002C06CE071E0FB01449150E080E8F9
:100EE0000E94CA02B8CFEE3F2AE0F20751F080819B
:100EF00091818737A7E79A0721F09093FF0A8093A3
:100F0000FE0A87E797E79183808380916000809352
:100F100070019BE088E10FB6F894A895809360007B
:100F20000FBE9093600097CF80819181873797475C
:100F300009F091CFA895809160008861809360004E
:100F40008091700180936000EE3FBAE0FB0739F0BA
:100F50008091FE0A9091FF0A918380837CCF10924A
:100F6000FF0A1092FE0A77CF81E28093EB006C9625
:100F70000FB6F894DEBF0FBECDBFDF91CF91FF91CA
:100F8000EF91BF91AF919F918F917F916F915F9101
:100F90004F913F912F911F910F91FF90EF90DF9014
:100FA000CF900F900FBE0F901F901895789484B536
:100FB000826084BD84B5816084BD85B5826085BD55
:100FC00085B5816085BD80916E00816080936E00E3
:100FD00010928100809181008260809381008091D5
:100FE0008100816080938100809180008160809386
:100FF00080008091910082608093910080919100A7
:101000008160809391008091900081608093900036
:101010008091C10084608093C1008091C100826092
:101020008093C1008091C10081608093C100809154
:10103000C30081608093C3008091C0008260809370
:10104000C0008091C20081608093C20080917A00CC
:10105000846080937A0080917A00826080937A0025
:1010600080917A00816080937A0080917A00806814
:1010700080937A0010929A0110927301109272017B
:101080008091D70081608093D70080EA8093D80058
:1010900089B5806189BD89B5826089BD09B400FECA
:1010A000FDCF61E070E080E090E00E942D02809131
:1010B000D8008F7C80618093D8008091E000807F91
:1010C0008093E0008091E1008E7E8093E1008DE0CE
:1010D0008093E200559A209A5D9828988FEF9FEFB1
:1010E0009093A8018093A7018BE991E00E944704A7
:1010F000892B39F464EF71E080E090E00E942D02CA
:10110000F3CF61E081E00E94CC0161E08EE00E94BB
:10111000CC0161E080E10E94CC0161E082E00E94AC
:10112000CC01CDE2D1E060E089910E94CC0181E068
:10113000C333D807C1F784E891E0E4E7F1E0119206
:101140008E179F07E1F725E2822E21E0922E34E7E9
:10115000E32E31E0F32E412C512C320160E080E18E
:101160000E949D0180E00E946504F40181914F017D
:101170000E94650461E080E10E949D019FE2C92E0A
:1011800091E0D92EE701312CF60121906F01222D3B
:1011900030E0F901EC55FE4F8491F901EB57FE4F19
:1011A0000491F901EA59FE4F14911123A1F0811124
:1011B0000E946001E12FF0E0EE0FFF1FE45CFE4FA4
:1011C000A591B491EC910E2391E009F490E0092FE0
:1011D0009130A1F503C000E010E030C0CE0184578B
:1011E00091405C01888181112AC083E391E00E94D3
:1011F0008704B50180E090E04AE00E94990488E30A
:1012000091E00E948704622D70E080E090E04AE067
:101210000E94990483E591E00E9487044AE0C3019B
:10122000B2010E94990486E691E00E94870488E654
:1012300091E00E94870491E0988301C01882E1E068
:10124000E8830329F02FF1703F2E249683E3C8161C
:1012500081E0D80609F098CFFF2311F061E001C0CA
:1012600060E082E00E949D019FEF491A590A690AD5
:10127000790AEFEFEE1AFE0AF4E04F16510461040A
:10128000710409F06BCF80E090E0892B09F45BCF0B
:101290000E94000058CFEBE9F1E01382128288EE41
:1012A00093E0A0E0B0E084839583A683B78380E1D8
:1012B00091E0918380838FEF9FEF958784870895D6
:1012C000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F4A
:1012D000EE1FFF1FA217B307E407F50720F0A21BBC
:1012E000B30BE40BF50B661F771F881F991F1A9429
:1012F00069F760957095809590959B01AC01BD0153
:10130000CF010895EE0FFF1F0590F491E02D099491
:0E13100081E090E0F8940C948D09F894FFCFE2
:10131E00FFFFFFFF00E100000000000000000000E2
:10132E00E0035A030104F60347040504230400C135
:10133E008081000000010204081020408004050690
:10134E000708096B657920002070726573736564F8
:10135E0020287265636569766564206F6E207069FA
:10136E006E2000202620656D6D69746564206F6E99
:0C137E002070696E200029000D0A00009C
:100000000C94EA000C9412010C9412010C9412014D
:100010000C9412010C9412010C9412010C94120114
:100020000C9412010C9412010C94B6040C94280543
:100030000C9412010C9412010C9412010C941201F4
:100040000C9412010C9412010C9412010C941201E4
:100050000C9412010C9412010C9412010C94E109FD
:100060000C9412010C9412010C9412010C941201C4
:100070000C9412010C9412010C9412010C941201B4
:100080000C9412010C9412010C9412010C941201A4
:100090000C9412010C9412010C9412010C94120194
:1000A0000C9412010C9412010C9412012E093109C6
:1000B000200924092A095209520952093509390926
:1000C0003D094309470952094D0900000000240079
:1000D00027002A002D003000000000002500280025
:1000E0002B002E003100080B00020202010009045F
:1000F0000000010202000005240010010524010196
:1001000001042402060524060001070581031000EE
:100110004009040100020A00000007050202400035
:1001200000070583024000000403090412010002D5
:10013000EF02014041233700000101020301417237
:100140006475696E6F204C4C430041726475696E32
:100150006F204D6963726F00070605040100080AED
:100160000B0C0D09000000002300260029002C00C4
:100170002F00040404040403040502020202040321
:100180000202020206060606060604040202020431
:100190000404080201104080401020408040800884
:1001A00002040180402010020110801020404020F5
:1001B0000000000200090F0000030401000C000011
:1001C000000000000000000000000000000000002F
:1001D000B00B940B11241FBECFEFDAE0DEBFCDBF12
:1001E00011E0A0E0B1E0E6EDFAE102C005900D9269
:1001F000A23BB107D9F722E0A2EBB1E001C01D920A
:10020000AF3AB207E1F710E0C9EED0E004C02197A1
:10021000FE010E942B0CC83ED107C9F70E942B0A91
:100220000C945E0D0C9400004091B8015091B901FE
:100230002091B6013091B70142175307B4F4909161
:10024000E8009570E1F39091E80092FD19C0809369
:10025000F1008091B8019091B90101968F739927AF
:10026000892B19F48EEF8093E8008091B80190916A
:10027000B90101969093B9018093B80181E0089586
:1002800080E00895DF92EF92FF920F931F93CF9338
:10029000DF93D82EF92EE42E062F10E0C801019628
:1002A000880F0E94140183E00E941401CD2DDF2DE0
:1002B0000C0F1D1FC017D10789F0E7FE03C0FE0118
:1002C000849101C088810E941401F82E80E00E9470
:1002D00014018F2121968111EDCF01C081E0DF91C2
:1002E000CF911F910F91FF90EF90DF900895DF92D3
:1002F000EF92FF920F931F93CF93DF93D82E8A0133
:100300007B01E40EF51EEB01CE15DF0571F0D7FE83
:1003100003C0FE01849101C088810E9414012196CE
:100320008111F2CF8FEF9FEF01C0C801DF91CF9114
:100330001F910F91FF90EF90DF900895615030F082
:100340002091F100FC0120830196F8CF289A84E6E1
:1003500080931E020895CF92DF92EF92FF920F9347
:100360001F93CF93DF936C017A018B01C0E0D0E043
:10037000CE15DF0581F0D8016D918D01D601ED918B
:10038000FC910190F081E02DC6010995892B11F0B7
:100390002196EECF7E01C701DF91CF911F910F9182
:1003A000FF90EF90DF90CF900895CF93DF931F924F
:1003B000CDB7DEB76983DC01ED91FC910280F3815A
:1003C000E02D41E050E0BE016F5F7F4F09950F9037
:1003D000DF91CF91089583E08093E9008091F2004E
:1003E000882319F08AE38093E8000895FC0184854E
:1003F000958597FD0BC09FB7F89482E08093E90044
:100400008091F2009FBF90E0019608959FB7F89405
:1004100082E08093E9008091F2009FBF90E0089510
:10042000089580E090E00895FC0192818389691726
:1004300010F0982F04C0962F96959695969589174B
:10044000A9F00188F289E02DE90FF11D97FDFA95D9
:10045000677081E090E001C0880F6A95EAF720811B
:10046000282381E090E021F480E0089580E090E08E
:100470000895DC0112963C91129753962C916317C4
:1004800010F0E22F04C0E62FE695E695E6952E17CC
:1004900019F10E2E000CFF0BDC0151962D913C91B1
:1004A00052976770E20FF31F21E030E002C0220F85
:1004B000331F6A95E2F7442319F03081232B04C0DF
:1004C00020953095308123232083DC01ED91FC9130
:1004D0000484F585E02D09940895E091B401F0912C
:1004E000B501309741F09381891740F094818917C5
:1004F00028F4CF01089580E090E008950580F6810A
:10050000E02DEFCFCF93C82F0E946D02009769F0C6
:10051000DC0113962C9113976C2F621BED91FC91CB
:100520000680F781E02DCF91099480E090E0CF9193
:100530000895CF93C82F0E946D02009769F0DC01E7
:1005400013962C9113976C2F621BED91FC910480F4
:10055000F581E02DCF91099480E090E0CF9108954E
:10056000CF93DF938B3208F039C090E0FC01EF5657
:10057000FE4F2491FC01EE58FE4F8491882309F42C
:1005800042C090E0880F991FFC01E653FF4FC591D0
:10059000D491FC01E852FF4FA591B491611109C0BB
:1005A0009FB7F8948881209582238883EC912E232D
:1005B0000BC0623061F49FB7F8948881322F309578
:1005C00083238883EC912E2B2C939FBF1CC08FB765
:1005D000F894E8812E2B28838FBF15C0D62FC82F03
:1005E0000E946D02009779F0DC0113962C9113970D
:1005F0006C2F621BED91FC910190F081E02D4D2F4D
:10060000DF91CF910994DF91CF910895CF93DF933C
:10061000EC0161E08C850E94B00261E08D850E9452
:10062000B00261E08E850E94B002E881F981068403
:10063000F785E02DCE01DF91CF910994642FFC0165
:1006400081850C94B0020F931F93CF938C01C0E06F
:100650008C2F90E0F801268537858217930758F490
:1006600022853385F901E80FF91F61E080810E943E
:10067000B002CF5FEDCFCF911F910F9108950895F4
:1006800008950895CF93DF93FC0187E191E0918372
:100690008083A781B085109731F085819681169669
:1006A0009C938E9315978091B2019091B301E817B6
:1006B000F90721F4B093B301A093B201C581D681AB
:1006C000209711F0B887AF838091B4019091B50164
:1006D000E817F90721F4D093B501C093B401DF9175
:1006E000CF9108950E94520D0F931F93CF93DF93E4
:1006F0001F92CDB7DEB782E0898342E450E066EE18
:1007000070E080E80E9477010E940209DC011296E5
:100710000D911C9113970115110589F0D801ED91E8
:10072000FC910280F381E02DBE016F5F7F4FC80115
:10073000099597FD04C0F80100851185ECCF8981EA
:100740000F90DF91CF911F910F9108958F929F92FB
:10075000AF92BF92CF92DF92EF92FF920F931F93CF
:10076000CF93DF936C017B018A0180910C01882378
:1007700009F45CC080911F02882309F457C080915E
:10078000BC0180FF05C08091E00082608093E000A2
:10079000E801B12C8AEFA82E93E0892E2AE3922E4D
:1007A000209711F4BB20D9F10E94F10881110AC0F1
:1007B000AA94AA20D9F161E070E080E090E00E9464
:1007C000A709EECF282F30E0C217D3070CF48C2FE7
:1007D0009FB7F8948092E9002091E80025FF1DC0A2
:1007E000282F30E0C21BD30BF701815020F041913C
:1007F0004093F100FACFE20EF31EBB2019F0909265
:10080000E8000AC08091E80085FD07C09092E800EA
:10081000BB24B394209709F0B12C9FBFC1CF5D9A40
:1008200084E68093BB011016110644F081E090E04D
:10083000F6019383828380E090E001C0C801DF91DC
:10084000CF911F910F91FF90EF90DF90CF90BF90CD
:10085000AF909F908F9008950E94F10890E00895C6
:100860000F931F93CF93DF931F92CDB7DEB78C0109
:10087000FC018485958597FF0EC0CE0101960E94EC
:10088000C308019719F4898190E002C08FEF9FEFB0
:10089000F80195878487F801848595850F90DF910D
:1008A000CF911F910F910895CF93DF931F92CDB7F2
:1008B000DEB7FC018485958597FD05C02FEF3FEFDE
:1008C000358724870BC0CE0101960E94C30801978B
:1008D00019F4898190E002C08FEF9FEF0F90DF91B4
:1008E000CF910895CF93DF93EC01488950E060E009
:1008F00070E089899A890E94570DE881F981048402
:10090000F585E02DCE01DF91CF910994CF93DF9350
:10091000EC01888981506823CE010E94970889855F
:100920008B3220F4DF91CF910C945309DF91CF915A
:100930000C949902CF93DF93EC018889815068234E
:10094000CE010E94970889858B3218F40E947C0999
:1009500002C00E94820289858B3220F4DF91CF9100
:100960000C947C09DF91CF910C9482021F920F921C
:100970000FB60F9211248F939F938091E100909175
:10098000E100937F9093E10083FF0FC01092E90094
:1009900091E09093EB001092EC0092E39093ED00C5
:1009A00010921F0298E09093F00082FF20C093E025
:1009B0009093E9009091F200992319F09AE39093B3
:1009C000E8009091BB01992339F09091BB019150BF
:1009D0009093BB01992389F190911E02992339F0DC
:1009E00090911E02915090931E02992341F184FF31
:1009F00010C08091E2008E7E81608093E200809141
:100A0000E1008F7E8093E1008091BC018E7E806149
:100A100011C080FF16C08091E2008E7E80618093BD
:100A2000E2008091E1008E7E8093E1008091BC0124
:100A30008E7E81608093BC0104C05D98CDCF2898E4
:100A4000D6CF9F918F910F900FBE0F901F9018954A
:100A50001F920F920FB60F921124CF92DF92EF9256
:100A6000FF920F931F932F933F934F935F936F9337
:100A70007F938F939F93AF93BF93EF93FF93CF9306
:100A8000DF93CDB7DEB76C97DEBFCDBF1092E90024
:100A90008091E80083FFFBC168E0CE0145960E948B
:100AA0009E0182EF8093E8008D8987FF05C09091B9
:100AB000E80090FFFCCF03C09EEF9093E800982FD2
:100AC000907609F0C6C09E894F89588D2F89F88C81
:100AD00091110CC0803829F48091BD018093F10000
:100AE00002C01092F1001092F10045C1913051F412
:100AF000811141C14130510509F03DC18091BD01D5
:100B00008D7F0BC0933061F4811135C141305105A7
:100B100009F031C18091BD0182608093BD012BC17C
:100B2000953049F48091E80080FFFCCF822F8068E7
:100B30008093E30020C1963009F05EC00B8D1C8DC0
:100B400022E01092E9001092B9011092B801F2125D
:100B500032C01092B7011092B6010E94740399E05E
:100B6000BE016F5F7F4FDB01E92F1D92EA95E9F728
:100B70009983FA8291E09E8390EA98879AEF998709
:100B80002091B8013091B901275F3F4F3C832B83FF
:100B90008D831092E9001092B9011092B801109360
:100BA000B7010093B60149E050E080E00E94770170
:100BB0000E947403E0C01093B7010093B6010E9435
:100BC0000209DC0112960D911C9113970115110574
:100BD00009F4BBC0D801ED91FC910480F581E02DB2
:100BE000BE016B5E7F4FC8010995009709F0C7C031
:100BF000F80100851185EACF973009F445C1983096
:100C000021F481E08093F100B6C0993009F0B3C0BF
:100C1000837009F039C1EAE2F1E081E031E096E366
:100C20002081211109C08EE78093EA001092EA002A
:100C30008F8980931F029FC08093E9003093EB005F
:100C400021912093EC009093ED008F5F873041F766
:100C5000EACF8B8D9C8D1092E9001092B901109211
:100C6000B8019093B7018093B601898D811153C06B
:100C70008E899D89913A49F4813209F005C147E096
:100C800050E065E071E080E0BBC0913209F0FCC04B
:100C9000833269F48F89988DA0E0B0E080930101E0
:100CA00090930201A0930301B093040164C08032C9
:100CB00069F48091E80082FFFCCF67E085E091E075
:100CC0000E949E018BEF8093E80055C0823209F0AC
:100CD00052C08F8980930C01EEEFFFE785919491CC
:100CE0008B3F9C4D19F0E0E0F8E002C0EEEFFAE037
:100CF0008091050190910601A0910701B091080132
:100D0000803B9440A105B10509F09EC080910C0183
:100D100080FF79C099C00E940209FC010281138101
:100D20000115110509F4B0C0D801ED91FC910190B5
:100D3000F081E02DBE016B5E7F4FC80109958111E6
:100D40001AC0F80100851185EBCFF1E0FF1609F418
:100D50004EC0F3E0FF1298C08F89882309F44AC07F
:100D6000823089F440E86DE08AE491E00E9442011B
:100D7000882309F489C08EEF8093E80088C0181694
:100D80001906CCF381C0813029F440E86BE08EE392
:100D900091E0ECCF833009F077C00E940209DC01BA
:100DA0001296ED90FC9013978E010F5F1F4F680114
:100DB000E114F10479F0D701ED91FC910680F781FF
:100DC000E02DB801C7010995080F111DF701E08456
:100DD000F184EECFD8011C92F60101900020E9F7D2
:100DE0003197BF016C197D0940E0C601BFCF6CE2AD
:100DF00071E002C068E271E0FB01449150E080E8DC
:100E00000E947701B8CFEE3F2AE0F20751F08081CF
:100E100091818737A7E79A0721F09093FF0A809383
:100E2000FE0A87E797E79183808380916000809333
:100E3000BA019BE088E10FB6F894A8958093600012
:100E40000FBE9093600097CF80819181873797473D
:100E500009F091CFA895809160008861809360002F
:100E60008091BA0180936000EE3FBAE0FB0739F051
:100E70008091FE0A9091FF0A918380837CCF10922B
:100E8000FF0A1092FE0A77CF81E28093EB006C9606
:100E90000FB6F894DEBF0FBECDBFDF91CF91FF91AB
:100EA000EF91BF91AF919F918F917F916F915F91E2
:100EB0004F913F912F911F910F91FF90EF90DF90F5
:100EC000CF900F900FBE0F901F9018951F93CF9348
:100ED000DF93C82F162F8B3240F5682F70E0FB018F
:100EE000E055FE4F8491FB01EF56FE4FD491FB017C
:100EF000EE58FE4FC491CC2361F181110E94160976
:100F0000EC2FF0E0EE0FFF1FE852FF4FA591B491D8
:100F10009FB7F894111104C08C91D095D82302C0CA
:100F2000EC91DE2BDC939FBF14C00E946D020097F2
:100F300081F0DC0113962C9113976C2F621BED91BD
:100F4000FC910280F381E02D412FDF91CF911F9121
:100F50000994DF91CF911F910895BF92CF92DF92B4
:100F6000EF92FF920F931F93CF93DF93EC0160E01A
:100F70008E850E9466078F8581112BC010E08889BD
:100F8000181708F04FC0E989FA89E10FF11DC080F8
:100F90000D85BC84E12CF12CD12CB6010E2C02C0A5
:100FA000759567950A94E2F761708B2D0E9466072C
:100FB00061E0802F0E94660760E0802F0E94660734
:100FC0008FEFE81AF80A88E0E816F10431F71F5F9E
:100FD000D6CF1889115017FD25C0E989FA89E10F8C
:100FE000F11D17FDFA95C0800D85BC8487E0E82EC1
:100FF000F12CD12CB6010E2C02C0759567950A9480
:10100000E2F761708B2D0E94660761E0802F0E94DD
:10101000660760E0802F0E94660781E0E81AF10809
:1010200048F7D8CF61E08E85DF91CF911F910F9166
:10103000FF90EF90DF90CF90BF900C9466073FB782
:10104000F89480919B0290919C02A0919D02B09196
:101050009E0226B5A89B05C02F3F19F00196A11D41
:10106000B11D3FBFBA2FA92F982F8827820F911D3E
:10107000A11DB11DBC01CD0142E0660F771F881F85
:10108000991F4A95D1F70895009769F0FC010190E6
:101090000020E9F73197AF01481B590BBC0180E2F2
:1010A00092E00C94A60380E090E008958F929F92C6
:1010B000AF92BF920F931F93CF93DF93CDB7DEB75D
:1010C000A1970FB6F894DEBF0FBECDBF19A2423074
:1010D00008F44AE08E010F5D1F4F842E912CA12C45
:1010E000B12CA50194010E94090CE62FB901CA0197
:1010F00001501109EA3014F4E05D01C0E95CD80147
:10110000EC93232B242B252B61F7C8010E94440864
:10111000A1960FB6F894DEBF0FBECDBFDF91CF9181
:101120001F910F91BF90AF909F908F900895EF9275
:10113000FF920F931F93CF93DF938C01D62FC0E0C4
:10114000EE24E394F12C8C2F90E0F801268537856E
:101150008217930788F4B7010C2E01C0660F0A941A
:10116000EAF76D2322853385F901E80FF91F8081A5
:101170000E946607CF5FE7CFDF91CF911F910F915C
:10118000FF90EF90089520911F02211103C08FEF6F
:101190009FEF08955FB7F89422E02093E900209133
:1011A000F20030E01216130614F421E030E0422F72
:1011B000FC0184E6415038F0289A80931E029091F9
:1011C000F1009193F7CF2115310521F08091F200C4
:1011D000882319F05FBFC90108958BE68093E8006A
:1011E000F9CF2FB7F89483E08093E9009091E8005D
:1011F000892F807295FF04C09091F20080E4891BD2
:101200002FBF08958091A30281110DC082E08093C9
:101210009F0284E08093A0021092A2021092A10289
:1012200081E08093A3028FE992E0089590E0FC01B1
:101230003197EF30F105B0F5EA5AFF4F0C942B0CC3
:10124000809180008F7703C0809180008F7D809394
:101250008000089580918000877FF9CF84B58F77D3
:1012600002C084B58F7D84BD0895809190008F77F2
:1012700007C0809190008F7D03C080919000877F90
:101280008093900008958091C0008F7703C0809173
:10129000C0008F7D8093C00008958091C200877F39
:1012A0008093C2000895CF93DF93282F30E0F90197
:1012B000E055FE4F8491F901EF56FE4FD491F901AC
:1012C000EE58FE4FC491CC2391F081110E94160973
:1012D000EC2FF0E0EE0FFF1FEC59FE4FA591B491FB
:1012E000EC91ED2381E090E021F480E002C080E009
:1012F00090E0DF91CF910895823108F08251E82F7C
:10130000F0E0E85AFE4FE49180917B00E3FB222756
:1013100020F930E095E0220F331F9A95E1F78F7D99
:10132000282B20937B00E770E064E0937C008091A1
:101330007A00806480937A0080917A0086FDFCCFE9
:10134000809178002091790090E0922B08958F92FF
:101350009F92AF92BF92CF92DF92EF92FF926B017A
:101360007C010E941F084B015C01C114D104E104FF
:10137000F104F1F00E941F08DC01CB0188199909E2
:10138000AA09BB09883E9340A105B10570F321E08D
:10139000C21AD108E108F10888EE880E83E0981E91
:1013A000A11CB11CC114D104E104F10419F7DDCF73
:1013B000FF90EF90DF90CF90BF90AF909F908F9075
:1013C00008951F920F920FB60F9211242F933F93FF
:1013D0008F939F93AF93BF938091970290919802C0
:1013E000A0919902B0919A023091960223E0230FC6
:1013F0002D3720F40196A11DB11D05C026E8230F4D
:101400000296A11DB11D209396028093970290939E
:101410009802A0939902B0939A0280919B029091B6
:101420009C02A0919D02B0919E020196A11DB11D4A
:1014300080939B0290939C02A0939D02B0939E0286
:10144000BF91AF919F918F913F912F910F900FBEC0
:101450000F901F901895789484B5826084BD84B5F0
:10146000816084BD85B5826085BD85B5816085BD9F
:1014700080916E00816080936E0010928100809157
:1014800081008260809381008091810081608093DF
:101490008100809180008160809380008091910024
:1014A000826080939100809191008160809391008F
:1014B000809190008160809390008091C100846051
:1014C0008093C1008091C10082608093C1008091AF
:1014D000C10081608093C1008091C30081608093CE
:1014E000C3008091C00082608093C0008091C200E0
:1014F00081608093C20080917A00846080937A003A
:1015000080917A00826080937A0080917A00816075
:1015100080937A0080917A00806880937A0010929C
:101520001F021092BD011092BC018091D700816012
:101530008093D70080EA8093D80089B5806189BD07
:1015400089B5826089BD09B400FEFDCF61E070E01D
:1015500080E090E00E94A7098091D8008F7C806194
:101560008093D8008091E000807F8093E00080919C
:10157000E1008E7E8093E1008DE08093E200559A39
:10158000209A5D9828988FEF9FEF90932D0280937B
:101590002C0280E292E00E94F601892B39F464EF7C
:1015A00071E080E090E00E94A709F3CF06E311E02C
:1015B000C0E3D1E060E089910E94B0020C171D07E2
:1015C000C9F78EEE91E0EEEBF1E011928E179F07D6
:1015D000E1F73324339490E0A92E90E0B92E0EEB7E
:1015E00011E0412C512C3201E80180E3E82E81E02A
:1015F000F82E912CF70121907F01FAE2822DF2154D
:1016000018F00E94530902C00E949902882E21E01E
:1016100082132FC0CE018E5B91406C0188818111B5
:1016200029C089E791E00E944408B60180E090E07B
:101630004AE00E9456088EE791E00E944408622D1D
:1016400070E080E090E04AE00E94560889E991E06D
:101650000E9444084AE0C301B2010E9456088CEA85
:1016600091E00E9444088EEA91E00E94440838828A
:1016700001C01882892D90E08829992493940097BD
:1016800009F4912C6096E6E3EE16E1E0FE0609F01F
:10169000B1CF892B11F061E001C060E082E00E94CF
:1016A0006607FFEF4F1A5F0A6F0A7F0A0F5F1F4F2F
:1016B00020E1421651046104710409F095CFA11490
:1016C000B10409F48CCF0E94000089CFFC0187E1AE
:1016D00091E091838083628316821582108617823F
:1016E0008091B4019091B501892B21F4F093B5015B
:1016F000E093B401A091B201B091B301B087A78388
:10170000109721F01696FC93EE931597F093B30182
:10171000E093B20116821582809100018383680FE5
:101720006483609300010895E0E7F2E08CE491E0C7
:1017300091838083818992890E94C90C80E792E01D
:101740000E944203E4E8F2E082E691E09183808324
:10175000848595850E94C90C84E892E00C9442032C
:10176000CF93DF93E0E2F2E01382128288EE93E0FF
:10177000A0E0B0E084839583A683B7838AE391E0F9
:10178000918380838FEF9FEF9587848760E284E861
:1017900092E00E94660BE4E8F2E082E691E0918339
:1017A00080838CE1818784E791E093878287158627
:1017B000148685E090E09787868780E290E0918BA1
:1017C000808BCF010E94230360E180E792E00E94BA
:1017D000660BC0E7D2E08CE491E099838883198698
:1017E00081E08A8792E09B872EE02C878D8720E11D
:1017F0002E878F878FEF8B8B2A83988B82E090E0E8
:101800000E94310C9A8B898BCE01DF91CF910C9481
:101810000603A1E21A2EAA1BBB1BFD010DC0AA1FC5
:10182000BB1FEE1FFF1FA217B307E407F50720F049
:10183000A21BB30BE40BF50B661F771F881F991FC4
:101840001A9469F760957095809590959B01AC010D
:10185000BD01CF010895EE0FFF1F0590F491E02D1B
:1018600009940F931F93CF93DF938230910510F467
:1018700082E090E0E091AD02F091AE0220E030E035
:10188000A0E0B0E0309719F14081518102811381CD
:1018900048175907C8F08417950769F4109731F075
:1018A00012960C93129713961C9327C00093AD02C7
:1018B0001093AE0222C02115310519F042175307CB
:1018C00018F49A01BD01EF01DF01F801DBCF21150A
:1018D0003105F9F0281B390B2430310580F48A8159
:1018E0009B816115710521F0FB019383828304C004
:1018F0009093AE028093AD02FE01329644C0FE0189
:10190000E20FF31F81939193225031093983288389
:101910003AC02091AB023091AC02232B41F42091CC
:101920000F01309110013093AC022093AB02209153
:101930000D0130910E012115310541F42DB73EB74F
:101940004091110150911201241B350BE091AB0223
:10195000F091AC02E217F307A0F42E1B3F0B2817FF
:10196000390778F0AC014E5F5F4F2417350748F018
:101970004E0F5F1F5093AC024093AB028193919343
:1019800002C0E0E0F0E0CF01DF91CF911F910F9115
:101990000895CF93DF93009709F481C0FC0132973B
:1019A00013821282A091AD02B091AE02109781F421
:1019B00020813181820F931F2091AB023091AC02C4
:1019C0002817390751F5F093AC02E093AB0267C0DA
:1019D000ED0120E030E0CE17DF0740F44A815B8163
:1019E0009E0141155105F1F0EA01F5CFD383C28381
:1019F00040815181840F951FC817D90759F48881F8
:101A00009981840F951F0296918380838A819B819F
:101A1000938382832115310529F4F093AE02E0937C
:101A2000AD023DC0E901FB83EA8349915991C40F9E
:101A3000D51FEC17FD0761F480819181840F951FFC
:101A40000296E90199838883828193819B838A83AB
:101A5000E0E0F0E012968D919C911397009719F0B9
:101A6000FD01DC01F7CF8D919C9111979D012E5FB7
:101A70003F4F820F931F2091AB023091AC02281789
:101A8000390769F4309729F41092AE021092AD0232
:101A900002C013821282B093AC02A093AB02DF911A
:101AA000CF91089581E090E0F8940C945E0DDC01F4
:101AB00001C06D9341505040E0F7089510E0C9EE29
:101AC000D0E004C0FE010E942B0C2196CA3ED10733
:061AD000C9F7F894FFCFF6
:101AD6002BFFFFFFFF00E10000000000000000AF49
:101AE6000280000000000041034103400340033F21
:101AF60003100210021002100200C18081000000D3
:101B060004050607080900000000D501A6032C04F9
:101B1600EB01F601540430040000000041033902D1
:101B2600140240033F030603AD07720410020000CF
:101B360000001E03410386049A043F032303100298
:101B4600100210020F151413126B65792000207015
:101B5600726573736564202872656365697665646A
:101B6600206F6E2070696E2000202620656D6D69DD
:101B7600746564206F6E2070696E200029000D0A5E
:021B860000005D
:00000001FF
+1 -5
View File
@@ -1,5 +1 @@
<<<<<<< HEAD
00095dc6158c120f08d4fcd514993d9fcecb9e31
=======
d53bd8f470f949b5d5179e009803692baf79d4ac
>>>>>>> 3a7a887ef1037a6fa80f7dbd7add48420e8449a5
ff40efac42d76dcfb6ef5cb24bb1f872944d1abf
BIN
View File
Binary file not shown.
+9 -10
View File
@@ -1,19 +1,18 @@
Processing micro (platform: atmelavr; board: micro; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/micro.html
PLATFORM: Atmel AVR > Arduino Micro
HARDWARE: ATMEGA32U4 16MHz 2.50KB RAM (28KB Flash)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 33 compatible libraries
Collected 12 compatible libraries
Scanning dependencies...
No dependencies
Dependency Graph
|-- <MIDI controller> 3.1.0 #e895a51
| |-- <MIDIUSB> 1.0.3
| |-- <SoftwareSerial> 1.0
Compiling .pioenvs/micro/src/main.cpp.o
Linking .pioenvs/micro/firmware.elf
Building .pioenvs/micro/firmware.hex
Checking size .pioenvs/micro/firmware.elf
Memory Usage -> http://bit.ly/pio-memory-usage
DATA: [= ] 8.6% (used 219 bytes from 2560 bytes)
PROGRAM: [== ] 17.3% (used 4962 bytes from 28672 bytes)
==================================================================================== [SUCCESS] Took 1.62 seconds ====================================================================================
Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/Digital.cpp.o
Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/DigitalCC.cpp.o
Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/DigitalLatch.cpp.o
+18 -89
View File
@@ -1,5 +1,5 @@
#include <Arduino.h>
// #include <MIDI_Controller.h>
#include <MIDI_Controller.h>
#define s * 1000
@@ -13,7 +13,7 @@ const uint8_t scl{3};
const uint8_t mux_sig{A10};
const uint8_t mux_addr[MUX_ADDRSIZE]{15, 21, 20, 19, 18};
/* ShiftRegister (OUT) */
#define SHIFT_OUTPUTSIZE 4
#define SHIFT_OUTPUTSIZE 16
const uint8_t shift_data{14};
const uint8_t shift_latch{16};
const uint8_t shift_clock{1};
@@ -24,9 +24,9 @@ const uint8_t keyboard_in[KEYBOARD_INSIZE]{4, 5, 6, 7, 8, 9};
/* Components */
/* GPIO (I2C) */
/* Multiplexer */
// AnalogMultiplex multiplexer(mux_sig, mux_addr);
AnalogMultiplex multiplexer(mux_sig, mux_addr);
/* ShiftRegister (OUT) */
// ShiftRegisterOut shiftRegister(shift_data, shift_clock, shift_latch, MSBFIRST, SHIFT_OUTPUTSIZE);
ShiftRegisterOut shiftRegister(shift_data, shift_clock, shift_latch, MSBFIRST, SHIFT_OUTPUTSIZE);
/* keyboard (IN) */
/* Midi links */
@@ -39,7 +39,7 @@ const uint8_t keyboard_in[KEYBOARD_INSIZE]{4, 5, 6, 7, 8, 9};
// {multiplexer.pin(7), MIDI_CC::Channel_Volume, 8}
// };
bool ref[4*4];
bool ref[6*16];
void setup() {
Serial.begin(115200);
@@ -47,87 +47,40 @@ void setup() {
delay(.5 s);
}
pinMode(shift_clock, OUTPUT);
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);
for (size_t i = 0; i < KEYBOARD_INSIZE; ++i) {
ExtIO::pinMode(keyboard_in[i], INPUT);
}
for (size_t i = 0; i < 4*4; i++) {
for (size_t i = 0; i < 6*8; ++i) {
ref[i] = false;
}
}
void scanLineOut(int colNum);
void loop() {
// long start = millis();
// for (size_t i = 0; i < 4; i++) {
// val[i] = multiplexer.analogRead(i);
// if (val[i] != ref[i]) {
// Serial.print("p[");
// Serial.print(i, DEC);
// Serial.print("] = ");
// Serial.println(val[i], DEC);
// ref[i] = val[i];
//
// }
// }
// val[8] = readCapacitivePin(2);
// if (abs(val[8] - ref[8]) >= 2) {
// if (val[8] > ref[8]) {
// // Serial.print("loop() time : ");
// // Serial.println(lastLoop, DEC);
// // Serial.print("average : ");
// // Serial.println(loopAverage, DEC);
// Serial.println(val[8], DEC);
// }
// ref[8] = val[8];
// }
// if (val[0] >= 500) {
// digitalWrite(0, HIGH);
// } else {
// digitalWrite(0, LOW);
// }
for (size_t i = 0; i < 4; i++) {
scanLineOut(i);
for (size_t i = 0; i < 16; ++i) {
shiftRegister.pin(i);
uint8_t rowValue[KEYBOARD_INSIZE];
bool pressed = false;
for (size_t j = 0; j < 4; j++) {
if ((rowValue[i] = digitalRead(keyboard_in[j + 2])) == HIGH) {
if (!ref[j * 4 + i]) {
for (size_t j = 0; j < 6; ++j) {
if ((rowValue[i] = ExtIO::digitalRead(keyboard_in[j])) == HIGH) {
if (!ref[j * 16 + i]) {
Serial.print("key ");
Serial.print(j * 4 + i);
Serial.print(j * 16 + i);
Serial.print(" pressed (received on pin ");
Serial.print(keyboard_in[j + 2]);
Serial.print(keyboard_in[j], DEC);
Serial.print(" & emmited on pin ");
Serial.print(i);
Serial.println(")");
ref[j * 4 + i] = true;
ref[j * 16 + i] = true;
}
} else {
ref[j * 4 + i] = false;
ref[j * 16 + i] = false;
}
ref[j * 4 + i] = true;
pressed |= rowValue[i];
}
if (pressed) {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
}
}
// for (uint8_t i = 0; i < 8; i++) {
// for (uint8_t i = 0; i < 8; ++i) {
// byte bitsToSend = 0b00000001 << i;
// digitalWrite(shift_latch, LOW);
// shiftOut(shift_data, shift_clock, MSBFIRST, bitsToSend);
@@ -154,27 +107,3 @@ void loop() {
// loopAverage = (loopAverage + lastLoop) / 2;
//delay(.5 s);
}
byte bits[] = {
0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000
};
void scanLineOut(int colNum) {
digitalWrite(shift_latch, LOW);
if(0 <= colNum && colNum <= 7) {
shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); //right sr
shiftOut(shift_data, shift_clock, MSBFIRST, bits[colNum]); //left sr
} else {
shiftOut(shift_data, shift_clock, MSBFIRST, bits[colNum-8]); //right sr
shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); //left sr
}
digitalWrite(shift_latch, HIGH);
}
+181
View File
@@ -0,0 +1,181 @@
#include <Arduino.h>
#include <MIDI_Controller.h>
#define s * 1000
/* Pins */
/* GPIO (I2C) */
const uint8_t gpio_int{0};
const uint8_t sda{2};
const uint8_t scl{3};
/* Multiplexer */
#define MUX_ADDRSIZE 5
const uint8_t mux_sig{A10};
const uint8_t mux_addr[MUX_ADDRSIZE]{15, 21, 20, 19, 18};
/* ShiftRegister (OUT) */
#define SHIFT_OUTPUTSIZE 4
const uint8_t shift_data{14};
const uint8_t shift_latch{16};
const uint8_t shift_clock{1};
/* keyboard (IN) */
#define KEYBOARD_INSIZE 6
const uint8_t keyboard_in[KEYBOARD_INSIZE]{4, 5, 6, 7, 8, 9};
/* Components */
/* GPIO (I2C) */
/* Multiplexer */
// AnalogMultiplex multiplexer(mux_sig, mux_addr);
/* ShiftRegister (OUT) */
// ShiftRegisterOut shiftRegister(shift_data, shift_clock, shift_latch, MSBFIRST, SHIFT_OUTPUTSIZE);
/* keyboard (IN) */
/* Midi links */
//USBDebugMIDI_Interface midiInterface(115200);
// Analog potentiometers[] = {
// {multiplexer.pin(4), MIDI_CC::Channel_Volume, 5},
// {multiplexer.pin(5), MIDI_CC::Channel_Volume, 6},
// {multiplexer.pin(6), MIDI_CC::Channel_Volume, 7},
// {multiplexer.pin(7), MIDI_CC::Channel_Volume, 8}
// };
bool ref[6*16];
//
// using namespace ExtIO;
void setup() {
Serial.begin(115200);
while (Serial.available() == 0){
delay(.5 s);
}
ExtIO::pinMode(shift_clock, OUTPUT);
ExtIO::pinMode(shift_data, OUTPUT);
ExtIO::pinMode(shift_latch, OUTPUT);
ExtIO::pinMode(2, OUTPUT);
for (size_t i = 0; i < KEYBOARD_INSIZE; ++i) {
ExtIO::pinMode(keyboard_in[i], INPUT);
}
for (size_t i = 0; i < 6*8; ++i) {
ref[i] = false;
}
}
void scanLineOut(int colNum);
void loop() {
// long start = millis();
// for (size_t i = 0; i < 4; ++i) {
// val[i] = multiplexer.analogRead(i);
// if (val[i] != ref[i]) {
// Serial.print("p[");
// Serial.print(i, DEC);
// Serial.print("] = ");
// Serial.println(val[i], DEC);
// ref[i] = val[i];
//
// }
// }
// val[8] = readCapacitivePin(2);
// if (abs(val[8] - ref[8]) >= 2) {
// if (val[8] > ref[8]) {
// // Serial.print("loop() time : ");
// // Serial.println(lastLoop, DEC);
// // Serial.print("average : ");
// // Serial.println(loopAverage, DEC);
// Serial.println(val[8], DEC);
// }
// ref[8] = val[8];
// }
// if (val[0] >= 500) {
// digitalWrite(0, HIGH);
// } else {
// digitalWrite(0, LOW);
// }
for (size_t i = 0; i < 16; ++i) {
scanLineOut(i);
uint8_t rowValue[KEYBOARD_INSIZE];
bool pressed = false;
for (size_t j = 0; j < 6; ++j) {
if ((rowValue[i] = ExtIO::digitalRead(keyboard_in[j])) == HIGH) {
if (!ref[j * 16 + i]) {
Serial.print("key ");
Serial.print(j * 16 + i);
Serial.print(" pressed (received on pin ");
Serial.print(keyboard_in[j], DEC);
Serial.print(" & emmited on pin ");
Serial.print(i);
Serial.println(")");
ref[j * 16 + i] = true;
}
} else {
ref[j * 16 + i] = false;
}
pressed |= rowValue[i];
}
if (pressed) {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
}
}
// for (uint8_t i = 0; i < 8; ++i) {
// byte bitsToSend = 0b00000001 << i;
// digitalWrite(shift_latch, LOW);
// shiftOut(shift_data, shift_clock, MSBFIRST, bitsToSend);
// digitalWrite(shift_latch, HIGH);
// Serial.print(" ");
// Serial.print(bitsToSend, BIN);
// Serial.println(" HIGH");
// delay(1 s);
// //bitWrite(bitsToSend, i, LOW);
// digitalWrite(shift_latch, LOW);
// shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000);
// digitalWrite(shift_latch, HIGH);
// Serial.print(i);
// Serial.println(" LOW");
// delay(1 s);
// }
// analogWrite(9, val[0] * 256 / 1024);
// MIDI_Controller.refresh();
// lastLoop = millis() - start;
// loopAverage = (loopAverage + lastLoop) / 2;
//delay(.5 s);
}
byte bits[] = {
0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000
};
void scanLineOut(int colNum) {
ExtIO::digitalWrite(shift_latch, LOW);
if(0 <= colNum && colNum <= 7) {
ExtIO::shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); //right sr
ExtIO::shiftOut(shift_data, shift_clock, MSBFIRST, bits[colNum]); //left sr
} else {
ExtIO::shiftOut(shift_data, shift_clock, MSBFIRST, bits[colNum - 8]); //right sr
ExtIO::shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); //left sr
}
ExtIO::digitalWrite(shift_latch, HIGH);
}