From 936a7dd66cceeaa2dd60c31935c107bc92bf96d5 Mon Sep 17 00:00:00 2001 From: Charles Mangin Date: Mon, 10 Apr 2017 10:09:20 -0400 Subject: [PATCH] USB Mouse Interface files, Bring IIc shield up to date with IIe --- .DS_Store | Bin 22532 -> 28676 bytes IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino | 473 +++++----- Joystick Interface/PCB/USB_Joystick-rev6.fzz | Bin 0 -> 22904 bytes .../Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino | 843 ++++++++--------- .../M0100-USB-v2/M0100-USB-v2.ino | 4 +- .../USBHIDBootMouse/USBHIDBootMouse.ino | 227 +++++ .../USBHIDBootMouse.ino.standard.hex | 853 +++++++++++++++++ ...BootMouse.ino.with_bootloader.standard.hex | 887 ++++++++++++++++++ .../arduino/USBMouseInterface.zip | Bin 0 -> 33463 bytes .../USBMouseInterface/USBMouseInterface.ino | 231 +++++ .../USBMouseInterface.ino.standard.hex | 849 +++++++++++++++++ ...Interface.ino.with_bootloader.standard.hex | 883 +++++++++++++++++ USB Mouse Interface/mousepaint.dsk | Bin 0 -> 143360 bytes 13 files changed, 4605 insertions(+), 645 deletions(-) create mode 100644 Joystick Interface/PCB/USB_Joystick-rev6.fzz create mode 100644 USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino create mode 100644 USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex create mode 100644 USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex create mode 100644 USB Mouse Interface/arduino/USBMouseInterface.zip create mode 100644 USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino create mode 100644 USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex create mode 100644 USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex create mode 100644 USB Mouse Interface/mousepaint.dsk diff --git a/.DS_Store b/.DS_Store index 76437d0801267919bb1460116c0527d5761c519b..b81937c216dbd70271cdebd92045e46478228071 100644 GIT binary patch delta 1619 zcmd5-Z){Ul6u;-RUEh0c-`+OppYiNo8H07J&~|@|z{WQApD|_`V`FUXTDFC59kheM z93z1kAYjC+(LwYJ_(5d^eIn6-iiu(%hM-N*5DiGs=_es35I-32>m1>mU%kn_=ic-8 zzTY|byhG>V&>fHoAy6|O@ewk_wj7%pmCS_nn@-3jh7dbtoCvC_gpUkt;XyTWdJeK_ zo7JkGx6Xq7T6ioroJe}Tw*Yl|Lxz##I1^_v(f0#6^moNfOMMl+JCE;61RAS5-qvhbmGCMxDY=2q1_R8qo-8MWWSAsJ;&t=phi7ZkF`tq>am{3Oo3aRhX{QfdW$Jk) zoP{|v^hDW0)$R8g;br>3m!pmb-pl}znyc&Sal7gN0Nr&cRkG4+3I!cH}%pTwSEiS;`x+lvpaGZ z$udb6WV#yQ8}j!|~Bn+lF>g?ht}n7;6@I_^yHY$VhZFnMieR?h@s0c`FmiG+Hci z+xq&oD-CG6^wrV@TyQir66GaAea=Nwr^#7zkz6KM$qkYsx5)S82l6wSB@fA8paTPB zfDt6HgA)qD4aMMr0MtM;v_m)az*ZQ7ov;_C;0PRrV{jZ^fm3iA-T@Upgpc4NT!Js* z8~6@>grDFJ+=XA^4|oiJBZoYi(AmkKQ-`zmS#F7^Qdb}XLwtm(8)4qb`7BmZ5=q&*wsiM+G_Sez zT%*~LP6_oo{ZmG;fDQ7%1xug+mcj}sgDPl%CTM|HSPz{H^X)JSW3USnkc3G%$WVU` zUWaKo$*?~I?=s{s!Kd&!T!Am(I^2ZYa1ZV?@1?TU2Y<50>&E}|*8&D)@%7XUdsrMr z?Wo_R10yrG(_>aqJ)3o3SI88!j?c!Bi7o5q8$Tfm`vG{_tY)*_tODNC(ad0gR+;S* VE2p#-qhp#a9Sa^&U(7b?{sHz|h&liO delta 458 zcmYjO%PT}-6hGg6%-p({dE77_H8U(2qI-#&ln`o)x*m(!&@fY|VaEGWY8LV+rE%64 z{sFJA?3F)Yyt1&dBUu=0;ankKoqmt+^!-lfTYq5d$E*SXSm#2*1h9xIR5rRbvXyK_ zlRQjH&JJ-jk`fb9i!I@`RgbBGLLvBq{gEc@jp!$f%)yvB8 zlfB`2G=vw?qQXR1VqrcGa8r8v1VDB%uXH~#RQo^h##fD>-U3lxRq@hS%fq@~mbNzA z=pA1j#i)P6m7XvMQo|amfiloH&`Bl-?bW2(D^+jSSn%n?`{DCv}1#+T|1e16w#Fo h*Vv5=K=?t)MiTa~L~U*#x{qNxxy?8FS{TLMvM+y!der~` diff --git a/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino b/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino index 3c33927..5ec411a 100644 --- a/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino +++ b/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino @@ -1,8 +1,8 @@ /* requires keypad library by Mark Stanley, Alexander Brevig from: -http://www.arduino.cc/playground/Code/Keypad + http://www.arduino.cc/playground/Code/Keypad -Uses the PJRC Teensy++ 2.0 and Teensyduino libraries, specifically USB HID and Keyboard(): -http://www.pjrc.com/teensy/teensyduino.html + Uses the PJRC Teensy++ 2.0 and Teensyduino libraries, specifically USB HID and Keyboard(): + http://www.pjrc.com/teensy/teensyduino.html */ #include @@ -15,31 +15,34 @@ int ColumnsPin = 10; -/* -Declares the matrix rows/cols of the Apple IIc keyboard. +/* + Declares the matrix rows/cols of the Apple IIc keyboard. */ +// Prevent compiler warning about casts from unsigned ints to chars +#define C(x) ((char) (x)) + const byte ROWS = 8; // rows const byte COLS = 10; // columns char keys[ROWS][COLS] = { -{ KEY_ESC, KEY_1, KEY_2, KEY_3, KEY_4, KEY_6, KEY_5, KEY_7, KEY_8, KEY_9 }, + { C(KEY_ESC), C(KEY_1), C(KEY_2), C(KEY_3), C(KEY_4), C(KEY_6), C(KEY_5), C(KEY_7), C(KEY_8), C(KEY_9) }, -{ KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_Y, KEY_T, KEY_U, KEY_I, KEY_O}, + { C(KEY_TAB), C(KEY_Q), C(KEY_W), C(KEY_E), C(KEY_R), C(KEY_Y), C(KEY_T), C(KEY_U), C(KEY_I), C(KEY_O)}, -{ KEY_A, KEY_D, KEY_S, KEY_H, KEY_F, KEY_G, KEY_J, KEY_K, KEY_SEMICOLON, KEY_L}, + { C(KEY_A), C(KEY_D), C(KEY_S), C(KEY_H), C(KEY_F), C(KEY_G), C(KEY_J), C(KEY_K), C(KEY_SEMICOLON), C(KEY_L)}, -{ KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_PERIOD, KEY_SLASH}, + { C(KEY_Z), C(KEY_X), C(KEY_C), C(KEY_V), C(KEY_B), C(KEY_N), C(KEY_M), C(KEY_COMMA), C(KEY_PERIOD), C(KEY_SLASH)}, -{ 0, 0, 0, 0, 0, 0, KEY_BACKSLASH, KEY_EQUAL, KEY_0, KEY_MINUS}, + { 0, 0, 0, 0, 0, 0, C(KEY_BACKSLASH), C(KEY_EQUAL), C(KEY_0), C(KEY_MINUS)}, -{ 0, 0, 0, 0, 0, 0, KEY_TILDE, KEY_P, KEY_LEFT_BRACE, KEY_RIGHT_BRACE}, + { 0, 0, 0, 0, 0, 0, C(KEY_TILDE), C(KEY_P), C(KEY_LEFT_BRACE), C(KEY_RIGHT_BRACE)}, -{ 0, 0, 0 , 0, 0, 0, KEY_ENTER, KEY_UP, KEY_SPACE, KEY_QUOTE}, + { 0, 0, 0 , 0, 0, 0, C(KEY_ENTER), C(KEY_UP), C(KEY_SPACE), C(KEY_QUOTE)}, -{ 0, 0, 0, 0, 0, 0, KEY_BACKSPACE, KEY_DOWN, KEY_LEFT, KEY_RIGHT}, + { 0, 0, 0, 0, 0, 0, C(KEY_BACKSPACE), C(KEY_DOWN), C(KEY_LEFT), C(KEY_RIGHT)}, @@ -47,109 +50,116 @@ char keys[ROWS][COLS] = { +char Fkeys[2][10] = { + {C(KEY_1), C(KEY_2), C(KEY_3), C(KEY_4), C(KEY_5), C(KEY_6), C(KEY_7), C(KEY_8), C(KEY_9), C(KEY_0)}, + {C(KEY_F1), C(KEY_F2), C(KEY_F3), C(KEY_F4), C(KEY_F5), C(KEY_F6), C(KEY_F7), C(KEY_F8), C(KEY_F9), C(KEY_F10)} +}; + /* -Keyboard matrix + Keyboard matrix X0 1 2 3 4 5 6 7 8 9 -Y0 ESC 1 2 3 4 6 5 7 8 9 + Y0 ESC 1 2 3 4 6 5 7 8 9 -1 TAB Q W E R Y T U I O + 1 TAB Q W E R Y T U I O -2 A D S H F G J K ; L + 2 A D S H F G J K ; L -3 Z X C V B N M < > ? + 3 Z X C V B N M < > ? -4 \ + 0 - + 4 \ + 0 - -5 ~ P [ ] + 5 ~ P [ ] -6 RET UP SPC " + 6 RET UP SPC " -7 DEL DN LT RT + 7 DEL DN LT RT -Matrix + Matrix J9 Teensy -X0 31 26 -1 24 4 -2 22 5 -3 8 14 -4 14 17 -5 6 13 -6 10 15 -7 1 3 -8 4 12 -9 2 11 + X0 31 26 + 1 24 4 + 2 22 5 + 3 8 14 + 4 14 17 + 5 6 13 + 6 10 15 + 7 1 3 + 8 4 12 + 9 2 11 -Y0 12 16 -1 33 25 -2 18 7 -3 20 38 -4 3 2 -5 5 1 -6 7 0 -7 9 27 + Y0 12 16 + 1 33 25 + 2 18 7 + 3 20 38 + 4 3 2 + 5 5 1 + 6 7 0 + 7 9 27 -NC 13 + NC 13 17 30 -GND 21 + GND 21 -SFT 34 24 -CTL 32 23 -CMD 16 8 -CMD 26 20 -CAPS 28 21 + SFT 34 24 + CTL 32 23 + CMD 16 8 + CMD 26 20 + CAPS 28 21 -J9 pinout -1 X7 -2 X9 -3 Y4 -4 X8 -5 Y5 -6 X5 -7 Y6 -8 X3 -9 Y7 -10 X6 -11 DISK LED (5v) -12 Y0 -13 NC -14 X4 -15 KEYBOARD SW -16 CLOSED APPLE -17 NC -18 Y2 -19 40/80 COL SWITCH -20 Y3 -21 GROUND ??? -22 X2 -23 GROUND ??? -24 X1 -25 POWER LED (5v) -26 OPEN APPLE -27 LED GROUND ??? -28 CAPS LOCK -29 RESET -30 NC -31 X0 -32 CONTROL -33 Y1 -34 SHIFT + J9 pinout + 1 X7 + 2 X9 + 3 Y4 + 4 X8 + 5 Y5 + 6 X5 + 7 Y6 + 8 X3 + 9 Y7 + 10 X6 + 11 DISK LED (5v) + 12 Y0 + 13 NC + 14 X4 + 15 KEYBOARD SW + 16 CLOSED APPLE + 17 NC + 18 Y2 + 19 40/80 COL SWITCH + 20 Y3 + 21 GROUND ??? + 22 X2 + 23 GROUND ??? + 24 X1 + 25 POWER LED (5v) + 26 OPEN APPLE + 27 LED GROUND ??? + 28 CAPS LOCK + 29 RESET + 30 NC + 31 X0 + 32 CONTROL + 33 Y1 + 34 SHIFT */ byte rowPins[ROWS] = { // Y0 - Y9 - 16,25,7,38,2,1,0,27}; //connect to the row pinouts of the keypad + 16, 25, 7, 38, 2, 1, 0, 27 +}; //connect to the row pinouts of the keypad byte colPins[COLS] = { // X0 - X7 - 26,4,5,14,17,13,15,3,12,11 }; //connect to the column pinouts of the keypad + 26, 4, 5, 14, 17, 13, 15, 3, 12, 11 +}; //connect to the column pinouts of the keypad Keypad KPD = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); @@ -163,11 +173,11 @@ const int CAPSPin = 21; // these pins are special in that they are dis/connected to ground, instead of to a row/col -/*** +/*** -open/closed apple are grounded through resistors on the //c. need to detect voltage drop as analogread, not digital. + open/closed apple are grounded through resistors on the //c. need to detect voltage drop as analogread, not digital. -must be on analog pin. + must be on analog pin. ***/ @@ -180,16 +190,16 @@ char modifierKeys[4]; - #define KEY_CAPS_UNLOCK 0 +#define KEY_CAPS_UNLOCK 0 - boolean resetCapsLock = false; // Allows one caps unlock signal. - unsigned long dTime = 0; - char CAPSState; // Initialize this to a reasonable value. +boolean resetCapsLock = false; // Allows one caps unlock signal. +unsigned long dTime = 0; +boolean CAPSLock = false; // Initialize this to a reasonable value. - boolean FKEYS = false; // used to set numbers to F-Key equivalent. currently tied to caps lock +boolean FKEYS = false; // used to set numbers to F-Key equivalent. currently tied to caps lock -void setup(){ +void setup() { pinMode(SHIFTPin, INPUT); pinMode(CTRLPin, INPUT); @@ -198,164 +208,179 @@ void setup(){ digitalWrite(APPLEPin1, HIGH); digitalWrite(APPLEPin2, HIGH); - + digitalWrite(SHIFTPin, HIGH); digitalWrite(CTRLPin, HIGH); - + pinMode(CAPSPin, INPUT); digitalWrite(CAPSPin, HIGH); - + // Turn on the DISK READ LED (rev4 board) - // digitalWrite(LEDPin, HIGH); + // digitalWrite(LEDPin, HIGH); + // This gives time for the keyboard to hook up to the PC. + // Otherwise the caps lock state may be incorrect. + delay(1000); } void loop() { -//probably should be on an interrupt, to catch high->low transition + //probably should be on an interrupt, to catch high->low transition - // Only do something if the pin is different from previous state. - if ( (CAPSState!=digitalRead(CAPSPin)) && !resetCapsLock) { - CAPSState = digitalRead(CAPSPin); // Remember new CAPSState. - Keyboard.set_key6(KEY_CAPS_LOCK); // Send KEY_CAPS_LOCK. - dTime = millis(); // Reset delay timer. - resetCapsLock = true; - } - if ( resetCapsLock && (millis()-dTime) > 10) { - Keyboard.set_key6(KEY_CAPS_UNLOCK); - resetCapsLock = false; - } + // Only do something if the pin is different from previous state. + boolean newCaps = digitalRead(CAPSPin) ? false : true; -FKEYS = !CAPSState; + if ( (CAPSLock != newCaps) && !resetCapsLock) + { + CAPSLock = newCaps; // Remember new CAPSLock. + Keyboard.set_key6((uint8_t) KEY_CAPS_LOCK); // Send KEY_CAPS_LOCK. + dTime = millis(); // Reset delay timer. + resetCapsLock = true; + // Serial.print("Caps = "); + // Serial.println(CAPSLock); -/*char CAPSState = digitalRead(CAPSPin); - if (CAPSState == LOW) { - Keyboard.set_key6(KEY_CAPS_LOCK); - } else { - Keyboard.set_key6(0); - } + // Turn on the LED for caps lock. +// digitalWrite(LED, CAPSLock ? HIGH : LOW); + + } + + if ( resetCapsLock && (millis() - dTime) > 10) + { + Keyboard.set_key6(KEY_CAPS_UNLOCK); + resetCapsLock = false; + } + + // If caps lock is set, then turn number keys into function keys. + FKEYS = CAPSLock; + + /*char CAPSState = digitalRead(CAPSPin); + if (CAPSState == LOW) { + Keyboard.set_key6(KEY_CAPS_LOCK); + } else { + Keyboard.set_key6(0); + } */ - - char SHIFTState = digitalRead(SHIFTPin); - if (SHIFTState == LOW) { - modifierKeys[0] = MODIFIERKEY_SHIFT; - digitalWrite(SHIFTPin, HIGH); - } else { - digitalWrite(SHIFTPin, HIGH); - modifierKeys[0] = 0; + char SHIFTState = digitalRead(SHIFTPin); + + if (SHIFTState == LOW) { + modifierKeys[0] = MODIFIERKEY_SHIFT; + digitalWrite(SHIFTPin, HIGH); + } else { + digitalWrite(SHIFTPin, HIGH); + modifierKeys[0] = 0; + } + + char CTRLState = digitalRead(CTRLPin); + + if (CTRLState == LOW) { + modifierKeys[1] = MODIFIERKEY_CTRL; + digitalWrite(CTRLPin, HIGH); + } else { + modifierKeys[1] = 0; + digitalWrite(CTRLPin, HIGH); + } + + + + char OAPPLEState = analogRead(APPLEPin2); + char CAPPLEState = analogRead(APPLEPin1); + + + // *** NOW USING CLOSED APPLE AS ALT/OPTION + if (OAPPLEState < 20) { + modifierKeys[2] = MODIFIERKEY_GUI; + digitalWrite(APPLEPin1, HIGH); + } else { + modifierKeys[2] = 0; + digitalWrite(APPLEPin1, HIGH); + } + + + + if (CAPPLEState < 20) { + modifierKeys[3] = MODIFIERKEY_ALT; + digitalWrite(APPLEPin2, HIGH); + } else { + modifierKeys[3] = 0; + digitalWrite(APPLEPin2, HIGH); + } + + + + + + // to use the TILDE key as ALT/OPTION + /* modifierKeys[3] = 0; + if( KPD.isPressed(KEY_TILDE) ) { + modifierKeys[3] = MODIFIERKEY_ALT; + } + */ + + // *** NOW USING CLOSED APPLE AS ALT/OPTION + + Keyboard.set_modifier( modifierKeys[0] | modifierKeys[1] | modifierKeys[2] | modifierKeys[3] ); + + KPD.getKeys(); // Scan for all pressed keys. 6 Max, + 4 modifiers. Should be plenty, but can be extended to 10+ + + // Set keyboard keys to default values. + Keyboard.set_key1(0); + Keyboard.set_key2(0); + Keyboard.set_key3(0); + Keyboard.set_key4(0); + Keyboard.set_key5(0); + //Keyboard.set_key6(0); + + /* based on suggestion from Craig Brooks + uses CAPS LOCK to turn number keys into F-Key equivalent. + */ + + // Update keyboard keys to active values. + if ( KPD.key[0].kchar && ( KPD.key[0].kstate == PRESSED || KPD.key[0].kstate == HOLD )) { + + //Serial.println(FKEYS); + + + if (FKEYS) { + // number keys 1 through 0 for f1 - f10 + if ((KPD.key[0].kchar >= 0x1E) && (KPD.key[0].kchar <= 0x27)) { + KPD.key[0].kchar += 0x1C; + + // Serial.println( KPD.key[0].kchar, HEX ); + + // - and = for f11 and f12 + } else if ( KPD.key[0].kchar == 0x2D || KPD.key[0].kchar == 0x2E ) { + KPD.key[0].kchar += 0x17; + } + + } - char CTRLState = digitalRead(CTRLPin); - - if (CTRLState == LOW) { - modifierKeys[1] = MODIFIERKEY_CTRL; - digitalWrite(CTRLPin, HIGH); - } else { - modifierKeys[1] = 0; - digitalWrite(CTRLPin, HIGH); - } + Keyboard.set_key1( KPD.key[0].kchar ); + } - char OAPPLEState = analogRead(APPLEPin2); - char CAPPLEState = analogRead(APPLEPin1); + if ( KPD.key[1].kchar && ( KPD.key[1].kstate == PRESSED || KPD.key[1].kstate == HOLD )) + Keyboard.set_key2( KPD.key[1].kchar ); + if ( KPD.key[2].kchar && ( KPD.key[2].kstate == PRESSED || KPD.key[2].kstate == HOLD )) + Keyboard.set_key3( KPD.key[2].kchar ); -// *** NOW USING CLOSED APPLE AS ALT/OPTION - if (OAPPLEState < 20) { - modifierKeys[2] = MODIFIERKEY_GUI; - digitalWrite(APPLEPin1, HIGH); - } else { - modifierKeys[2] = 0; - digitalWrite(APPLEPin1, HIGH); - } + if ( KPD.key[3].kchar && ( KPD.key[3].kstate == PRESSED || KPD.key[3].kstate == HOLD )) + Keyboard.set_key4( KPD.key[3].kchar ); + if ( KPD.key[4].kchar && ( KPD.key[4].kstate == PRESSED || KPD.key[4].kstate == HOLD )) + Keyboard.set_key5( KPD.key[4].kchar ); + //if( KPD.key[5].kchar && ( KPD.key[5].kstate==PRESSED || KPD.key[5].kstate==HOLD )) + //Keyboard.set_key6( KPD.key[5].kchar ); - if (CAPPLEState < 20) { - modifierKeys[3] = MODIFIERKEY_ALT; - digitalWrite(APPLEPin2, HIGH); - } else { - modifierKeys[3] = 0; - digitalWrite(APPLEPin2, HIGH); - } - - - - - -// to use the TILDE key as ALT/OPTION -/* modifierKeys[3] = 0; - if( KPD.isPressed(KEY_TILDE) ) { - modifierKeys[3] = MODIFIERKEY_ALT; - } -*/ - -// *** NOW USING CLOSED APPLE AS ALT/OPTION - -   Keyboard.set_modifier( modifierKeys[0] | modifierKeys[1] | modifierKeys[2] | modifierKeys[3] ); - - KPD.getKeys(); // Scan for all pressed keys. 6 Max, + 4 modifiers. Should be plenty, but can be extended to 10+ - - // Set keyboard keys to default values. - Keyboard.set_key1(0); - Keyboard.set_key2(0); - Keyboard.set_key3(0); - Keyboard.set_key4(0); - Keyboard.set_key5(0); - //Keyboard.set_key6(0); - - /* based on suggestion from Craig Brooks - uses CAPS LOCK to turn number keys into F-Key equivalent. - */ - - // Update keyboard keys to active values. - if( KPD.key[0].kchar && ( KPD.key[0].kstate==PRESSED || KPD.key[0].kstate==HOLD )) { - - //Serial.println(FKEYS); - - - if (FKEYS) { - // number keys 1 through 0 for f1 - f10 - if((KPD.key[0].kchar >= 0x1E) && (KPD.key[0].kchar <= 0x27)){ - KPD.key[0].kchar += 0x1C; - - // Serial.println( KPD.key[0].kchar, HEX ); - - // - and = for f11 and f12 - } else if( KPD.key[0].kchar == 0x2D || KPD.key[0].kchar == 0x2E ) { - KPD.key[0].kchar += 0x17; - } - - - } - - Keyboard.set_key1( KPD.key[0].kchar ); - - - } - - if( KPD.key[1].kchar && ( KPD.key[1].kstate==PRESSED || KPD.key[1].kstate==HOLD )) - Keyboard.set_key2( KPD.key[1].kchar ); - - if( KPD.key[2].kchar && ( KPD.key[2].kstate==PRESSED || KPD.key[2].kstate==HOLD )) - Keyboard.set_key3( KPD.key[2].kchar ); - - if( KPD.key[3].kchar && ( KPD.key[3].kstate==PRESSED || KPD.key[3].kstate==HOLD )) - Keyboard.set_key4( KPD.key[3].kchar ); - - if( KPD.key[4].kchar && ( KPD.key[4].kstate==PRESSED || KPD.key[4].kstate==HOLD )) - Keyboard.set_key5( KPD.key[4].kchar ); - - //if( KPD.key[5].kchar && ( KPD.key[5].kstate==PRESSED || KPD.key[5].kstate==HOLD )) - //Keyboard.set_key6( KPD.key[5].kchar ); - - Keyboard.send_now(); - Keyboard.set_modifier(0); + Keyboard.send_now(); + Keyboard.set_modifier(0); } diff --git a/Joystick Interface/PCB/USB_Joystick-rev6.fzz b/Joystick Interface/PCB/USB_Joystick-rev6.fzz new file mode 100644 index 0000000000000000000000000000000000000000..ddae1f372a225ef26377a3610ea77f585f36dc4f GIT binary patch literal 22904 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 literal 0 HcmV?d00001 diff --git a/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino b/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino index 974b666..9d53663 100644 --- a/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino +++ b/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino @@ -1,4 +1,35 @@ -#include +#include +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include <../../../../hardware/pic32/libraries/SPI/SPI.h> // Hack to use the SPI library +#include // Hack to use the SPI library +#endif + + + +USB Usb; +//USBHub Hub(&Usb); +//HIDBoot Keyboard(&Usb); +HIDBoot HidKeyboard(&Usb); + +uint32_t next_time; + +class KbdRptParser : public KeyboardReportParser +{ + void PrintKey(uint8_t mod, uint8_t key); + + void PrintLine(int macro); + + protected: + virtual void OnKeyDown (uint8_t mod, uint8_t key); + virtual void OnKeyUp (uint8_t mod, uint8_t key); + virtual void OnKeyPressed(uint8_t key); +}; + +KbdRptParser Prs; /* @@ -42,32 +73,32 @@ Y9 9( O L /? -_ ]} '" RIGHT -IIe Col/Row -1 Y0 -2 Y1 -3 +5V -4 Y2 -5 SW1/SAPL* -6 Y3 -7 SW0/OAPL* -8 Y4 -9 CAPLOCK* -10 Y5 -11 CNTL* -12 Y8 -13 GND -14 X0 -15 RESET* -16 X2 -17 X7 -18 X1 -19 X5 -20 X3 -21 X4 -22 Y9 -23 Y6 -24 SHFT* -25 Y7 +IIe Col/Row +1 Y0 +2 Y1 +3 +5V +4 Y2 +5 SW1/SAPL* +6 Y3 +7 SW0/OAPL* +8 Y4 +9 CAPLOCK* +10 Y5 +11 CNTL* +12 Y8 +13 GND +14 X0 +15 RESET* +16 X2 +17 X7 +18 X1 +19 X5 +20 X3 +21 X4 +22 Y9 +23 Y6 +24 SHFT* +25 Y7 26 X6 * RESET is a switch between CTL (11) and pin 15 @@ -75,7 +106,7 @@ IIe Col/Row CONTROL switched to ground CAPLOCK switched to ground pins 5 and 7 are grounded via 470Ω resistors - Apple keys connect pin 3 (5v) to pins 5 & 7 + Apple keys connect pin 3 (5v) to pins 5 & 7 @@ -124,65 +155,65 @@ CTL = AVR A1 / 15 */ - - int ENABLE_PIN = 0; - int S0_PIN = 3; - int S1_PIN = 4; - int S2_PIN = 2; - int S3_PIN = 1; + +int ENABLE_PIN = 0; +int S0_PIN = 3; +int S1_PIN = 4; +int S2_PIN = 2; +int S3_PIN = 1; // 4051 pins - int S0_4051 = 5; - int S1_4051 = 6; - int S2_4051 = 7; +int S0_4051 = 5; +int S1_4051 = 6; +int S2_4051 = 7; - int SHIFT_PIN = 14; - int CONTROL_PIN = 15; - int OPEN_APPLE_PIN = 8; - int CLOSED_APPLE_PIN = 16; - int CAPS_LOCK_PIN = 17; - int RESET_PIN = 19; +int SHIFT_PIN = 14; +int CONTROL_PIN = 15; +int OPEN_APPLE_PIN = 8; +int CLOSED_APPLE_PIN = 16; +int CAPS_LOCK_PIN = 17; +int RESET_PIN = 19; - int r0; - int r1; - int r2; +int r0; +int r1; +int r2; - int c0; - int c1; - int c2; - int c3; - - int count= 0; - - int CAPS_LOCK_ACTIVE = 0; +int c0; +int c1; +int c2; +int c3; + +int count = 0; + +int CAPS_LOCK_ACTIVE = 0; const int COLUMNS = 8; const int ROWS = 10; -// QWERTY +// QWERTY int KEYS_ARRAY[ROWS][COLUMNS] = { -{ 0x29, 0x2B, 0x04, 0x1D, 0x54, 0x27, 0x55, 0x29 }, - -{ 0x1E, 0x14, 0x07, 0x1B, 0x51, 0x52, 0x50, 0x4F }, - -{ 0x1F, 0x1a, 0x16, 0x06, 0x62, 0x5C, 0x60, 0x26 }, - -{ 0x20, 0x08, 0x0B, 0x19, 0x59, 0x5D, 0x61, 0x56 }, - -{ 0x21, 0x15, 0x09, 0x05, 0x5A, 0x5E, 0x63, 0x58 }, - -{ 0x23, 0x1C, 0x0A, 0x11, 0x5B, 0x5F, 0x57, 0x85 }, + { 0x29, 0x2B, 0x04, 0x1D, 0x54, 0x27, 0x55, 0x29 }, -{ 0x22, 0x17, 0x0D, 0x10, 0x31, 0x35, 0x28, 0x2A }, - -{ 0x24, 0x18, 0x0E, 0x36, 0x2E, 0x13, 0x52, 0x51 }, + { 0x1E, 0x14, 0x07, 0x1B, 0x51, 0x52, 0x50, 0x4F }, -{ 0x25, 0x0C, 0x33, 0x37, 0x27, 0x2F, 0x2C, 0x50 }, + { 0x1F, 0x1a, 0x16, 0x06, 0x62, 0x5C, 0x60, 0x26 }, -{ 0x26, 0x12, 0x0F, 0x38, 0x2D, 0x30, 0x34, 0x4F } + { 0x20, 0x08, 0x0B, 0x19, 0x59, 0x5D, 0x61, 0x56 }, + + { 0x21, 0x15, 0x09, 0x05, 0x5A, 0x5E, 0x63, 0x58 }, + + { 0x23, 0x1C, 0x0A, 0x11, 0x5B, 0x5F, 0x57, 0x85 }, + + { 0x22, 0x17, 0x0D, 0x10, 0x31, 0x35, 0x28, 0x2A }, + + { 0x24, 0x18, 0x0E, 0x36, 0x2E, 0x13, 0x52, 0x51 }, + + { 0x25, 0x0C, 0x33, 0x37, 0x27, 0x2F, 0x2C, 0x50 }, + + { 0x26, 0x12, 0x0F, 0x38, 0x2D, 0x30, 0x34, 0x4F } }; @@ -190,19 +221,19 @@ int KEYS_ARRAY[ROWS][COLUMNS] = { /*int KEYS_ARRAY[ROWS][COLUMNS] = { { 0x29, 0x2B, 0x04, 0x1D, 0x54, 0x27, 0x55, 0x29 }, - + { 0x1E, 0x14, 0x07, 0x1B, 0x51, 0x52, 0x50, 0x4F }, - + { 0x1F, 0x1a, 0x16, 0x06, 0x62, 0x5C, 0x60, 0x26 }, - + { 0x20, 0x08, 0x0B, 0x19, 0x59, 0x5D, 0x61, 0x56 }, - + { 0x21, 0x15, 0x09, 0x05, 0x5A, 0x5E, 0x63, 0x58 }, - + { 0x23, 0x1C, 0x0A, 0x11, 0x5B, 0x5F, 0x57, 0x85 }, { 0x22, 0x17, 0x0D, 0x10, 0x31, 0x35, 0x28, 0x2A }, - + { 0x24, 0x18, 0x0E, 0x36, 0x2E, 0x13, 0x52, 0x51 }, { 0x25, 0x0C, 0x33, 0x37, 0x27, 0x2F, 0x2C, 0x50 }, @@ -396,168 +427,143 @@ int KEYS_ARRAY[ROWS][COLUMNS] = { //USB byte, shift key status const int KEYMAP_SIZE (128); int KEYMAP[KEYMAP_SIZE][2] = { -{0, 0}, /* NUL */ -{0, 0}, /* SOH */ -{0, 0}, /* STX */ -{0, 0}, /* ETX */ -{0, 0}, /* EOT */ -{0, 0}, /* ENQ */ -{0, 0}, /* ACK */ -{0, 0}, /* BEL */ -{0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ -{0x2b, 0}, /* TAB */ /* Keyboard Tab */ -{0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ -{0, 0}, /* VT */ -{0, 0}, /* FF */ -{0, 0}, /* CR */ -{0, 0}, /* SO */ -{0, 0}, /* SI */ -{0, 0}, /* DEL */ -{0, 0}, /* DC1 */ -{0, 0}, /* DC2 */ -{0, 0}, /* DC3 */ -{0, 0}, /* DC4 */ -{0, 0}, /* NAK */ -{0, 0}, /* SYN */ -{0, 0}, /* ETB */ -{0, 0}, /* CAN */ -{0, 0}, /* EM */ -{0, 0}, /* SUB */ -{0, 0}, /* ESC */ -{0, 0}, /* FS */ -{0, 0}, /* GS */ -{0, 0}, /* RS */ -{0, 0}, /* US */ -{0x2c, 0}, /* */ -{0x1e, 1}, /* ! */ -{0x34, 1}, /* " */ -{0x20, 1}, /* # */ -{0x21, 1}, /* $ */ -{0x22, 1}, /* % */ -{0x24, 1}, /* & */ -{0x34, 0}, /* ' */ -{0x26, 1}, /* ( */ -{0x27, 1}, /* ) */ -{0x25, 1}, /* * */ -{0x2e, 1}, /* + */ -{0x36, 0}, /* , */ -{0x2d, 0}, /* - */ -{0x37, 0}, /* . */ -{0x38, 0}, /* / */ -{0x27, 0}, /* 0 */ -{0x1e, 0}, /* 1 */ -{0x1f, 0}, /* 2 */ -{0x20, 0}, /* 3 */ -{0x21, 0}, /* 4 */ -{0x22, 0}, /* 5 */ -{0x23, 0}, /* 6 */ -{0x24, 0}, /* 7 */ -{0x25, 0}, /* 8 */ -{0x26, 0}, /* 9 */ -{0x33, 1}, /* : */ -{0x33, 0}, /* ; */ -{0x36, 1}, /* < */ -{0x2e, 0}, /* = */ -{0x37, 1}, /* > */ -{0x38, 1}, /* ? */ -{0x1f, 1}, /* @ */ -{0x04, 1}, /* A */ -{0x05, 1}, /* B */ -{0x06, 1}, /* C */ -{0x07, 1}, /* D */ -{0x08, 1}, /* E */ -{0x09, 1}, /* F */ -{0x0a, 1}, /* G */ -{0x0b, 1}, /* H */ -{0x0c, 1}, /* I */ -{0x0d, 1}, /* J */ -{0x0e, 1}, /* K */ -{0x0f, 1}, /* L */ -{0x10, 1}, /* M */ -{0x11, 1}, /* N */ -{0x12, 1}, /* O */ -{0x13, 1}, /* P */ -{0x14, 1}, /* Q */ -{0x15, 1}, /* R */ -{0x16, 1}, /* S */ -{0x17, 1}, /* T */ -{0x18, 1}, /* U */ -{0x19, 1}, /* V */ -{0x1a, 1}, /* W */ -{0x1b, 1}, /* X */ -{0x1c, 1}, /* Y */ -{0x1d, 1}, /* Z */ -{0x2f, 0}, /* [ */ -{0x31, 0}, /* \ */ -{0x30, 0}, /* ] */ -{0x23, 1}, /* ^ */ -{0x2d, 1}, /* _ */ -{0x35, 0}, /* ` */ -{0x04, 0}, /* a */ -{0x05, 0}, /* b */ -{0x06, 0}, /* c */ -{0x07, 0}, /* d */ -{0x08, 0}, /* e */ -{0x09, 0}, /* f */ -{0x0a, 0}, /* g */ -{0x0b, 0}, /* h */ -{0x0c, 0}, /* i */ -{0x0d, 0}, /* j */ -{0x0e, 0}, /* k */ -{0x0f, 0}, /* l */ -{0x10, 0}, /* m */ -{0x11, 0}, /* n */ -{0x12, 0}, /* o */ -{0x13, 0}, /* p */ -{0x14, 0}, /* q */ -{0x15, 0}, /* r */ -{0x16, 0}, /* s */ -{0x17, 0}, /* t */ -{0x18, 0}, /* u */ -{0x19, 0}, /* v */ -{0x1a, 0}, /* w */ -{0x1b, 0}, /* x */ -{0x1c, 0}, /* y */ -{0x1d, 0}, /* z */ -{0x2f, 1}, /* { */ -{0x31, 1}, /* | */ -{0x30, 1}, /* } */ -{0x35, 1}, /* ~ */ -{0,0} /* DEL */ + {0, 0}, /* NUL */ + {0, 0}, /* SOH */ + {0, 0}, /* STX */ + {0, 0}, /* ETX */ + {0, 0}, /* EOT */ + {0, 0}, /* ENQ */ + {0, 0}, /* ACK */ + {0, 0}, /* BEL */ + {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ + {0x2b, 0}, /* TAB */ /* Keyboard Tab */ + {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ + {0, 0}, /* VT */ + {0, 0}, /* FF */ + {0, 0}, /* CR */ + {0, 0}, /* SO */ + {0, 0}, /* SI */ + {0, 0}, /* DEL */ + {0, 0}, /* DC1 */ + {0, 0}, /* DC2 */ + {0, 0}, /* DC3 */ + {0, 0}, /* DC4 */ + {0, 0}, /* NAK */ + {0, 0}, /* SYN */ + {0, 0}, /* ETB */ + {0, 0}, /* CAN */ + {0, 0}, /* EM */ + {0, 0}, /* SUB */ + {0, 0}, /* ESC */ + {0, 0}, /* FS */ + {0, 0}, /* GS */ + {0, 0}, /* RS */ + {0, 0}, /* US */ + {0x2c, 0}, /* */ + {0x1e, 1}, /* ! */ + {0x34, 1}, /* " */ + {0x20, 1}, /* # */ + {0x21, 1}, /* $ */ + {0x22, 1}, /* % */ + {0x24, 1}, /* & */ + {0x34, 0}, /* ' */ + {0x26, 1}, /* ( */ + {0x27, 1}, /* ) */ + {0x25, 1}, /* * */ + {0x2e, 1}, /* + */ + {0x36, 0}, /* , */ + {0x2d, 0}, /* - */ + {0x37, 0}, /* . */ + {0x38, 0}, /* / */ + {0x27, 0}, /* 0 */ + {0x1e, 0}, /* 1 */ + {0x1f, 0}, /* 2 */ + {0x20, 0}, /* 3 */ + {0x21, 0}, /* 4 */ + {0x22, 0}, /* 5 */ + {0x23, 0}, /* 6 */ + {0x24, 0}, /* 7 */ + {0x25, 0}, /* 8 */ + {0x26, 0}, /* 9 */ + {0x33, 1}, /* : */ + {0x33, 0}, /* ; */ + {0x36, 1}, /* < */ + {0x2e, 0}, /* = */ + {0x37, 1}, /* > */ + {0x38, 1}, /* ? */ + {0x1f, 1}, /* @ */ + {0x04, 1}, /* A */ + {0x05, 1}, /* B */ + {0x06, 1}, /* C */ + {0x07, 1}, /* D */ + {0x08, 1}, /* E */ + {0x09, 1}, /* F */ + {0x0a, 1}, /* G */ + {0x0b, 1}, /* H */ + {0x0c, 1}, /* I */ + {0x0d, 1}, /* J */ + {0x0e, 1}, /* K */ + {0x0f, 1}, /* L */ + {0x10, 1}, /* M */ + {0x11, 1}, /* N */ + {0x12, 1}, /* O */ + {0x13, 1}, /* P */ + {0x14, 1}, /* Q */ + {0x15, 1}, /* R */ + {0x16, 1}, /* S */ + {0x17, 1}, /* T */ + {0x18, 1}, /* U */ + {0x19, 1}, /* V */ + {0x1a, 1}, /* W */ + {0x1b, 1}, /* X */ + {0x1c, 1}, /* Y */ + {0x1d, 1}, /* Z */ + {0x2f, 0}, /* [ */ + {0x31, 0}, /* \ */ + {0x30, 0}, /* ] */ + {0x23, 1}, /* ^ */ + {0x2d, 1}, /* _ */ + {0x35, 0}, /* ` */ + {0x04, 0}, /* a */ + {0x05, 0}, /* b */ + {0x06, 0}, /* c */ + {0x07, 0}, /* d */ + {0x08, 0}, /* e */ + {0x09, 0}, /* f */ + {0x0a, 0}, /* g */ + {0x0b, 0}, /* h */ + {0x0c, 0}, /* i */ + {0x0d, 0}, /* j */ + {0x0e, 0}, /* k */ + {0x0f, 0}, /* l */ + {0x10, 0}, /* m */ + {0x11, 0}, /* n */ + {0x12, 0}, /* o */ + {0x13, 0}, /* p */ + {0x14, 0}, /* q */ + {0x15, 0}, /* r */ + {0x16, 0}, /* s */ + {0x17, 0}, /* t */ + {0x18, 0}, /* u */ + {0x19, 0}, /* v */ + {0x1a, 0}, /* w */ + {0x1b, 0}, /* x */ + {0x1c, 0}, /* y */ + {0x1d, 0}, /* z */ + {0x2f, 1}, /* { */ + {0x31, 1}, /* | */ + {0x30, 1}, /* } */ + {0x35, 1}, /* ~ */ + {0, 0} /* DEL */ }; -//#include -//#include -//#include -//#include -#include -#include -#include -//#include -#include - -//#include -//#include -//#include -//#include - -class KbdRptParser : public KeyboardReportParser -{ - void PrintKey(uint8_t mod, uint8_t key); - - void PrintLine(int macro); - -protected: - virtual void OnKeyDown (uint8_t mod, uint8_t key); - virtual void OnKeyUp (uint8_t mod, uint8_t key); - virtual void OnKeyPressed(uint8_t key); -}; -char* macrostrings[5]= { - "CALL -151\n", + +char* macrostrings[5] = { + "CALL -151\n", "8:20 35 FD 20 ED FD 4C 8 0 8G WeaknessPoint Minus by Martin Haye\n", "2000:20 35 FD C9 95 D0 2 B1\n :28 C9 94 D0 9 98 69 3\n :29 FC 85 24 D0 EA C9 8E\n :D0 8 A5 32 49 C0 85 32\n :D0 DE 20 ED FD 18 90 D8 \n", "5 rem Joystick Calibration \n10 print pdl(0) \" \" pdl(1) \" \" peek(-16287) \" \" peek(-16286) : goto 10\n run\n", @@ -566,39 +572,39 @@ char* macrostrings[5]= { // graphics test by Dagen Brock -void KbdRptParser::PrintLine(int macro) +void KbdRptParser::PrintLine(int macro) { - + int CharDelay = 30; - + //10 print pdl(0) " " pdl(1) " " peek(-16287) " " peek(-16286) : goto 10 - + String MacroString = macrostrings[macro]; char SHIFTDOWN = 0; - -// break up word into array of characters -// for each character in array + // break up word into array of characters -// translate character into USB byte + // for each character in array -// send keydown, wait X miliseconds, send keyup + // translate character into USB byte - for(int letters=0; letters < MacroString.length(); letters++ ) { -// Serial.print(KEYMAP[MacroString[letters]][0]); // look up the USB byte from the KEYMAP array. - - if(KEYMAP[MacroString[letters]][1] == 1) { -// Serial.print("!"); // hold shift - SHIFTDOWN = 2; + // send keydown, wait X miliseconds, send keyup + + for (int letters = 0; letters < MacroString.length(); letters++ ) { + // Serial.print(KEYMAP[MacroString[letters]][0]); // look up the USB byte from the KEYMAP array. + + if (KEYMAP[MacroString[letters]][1] == 1) { + // Serial.print("!"); // hold shift + SHIFTDOWN = 2; } else { - SHIFTDOWN = 0; + SHIFTDOWN = 0; } delay(CharDelay); - - OnKeyDown(SHIFTDOWN,KEYMAP[MacroString[letters]][0]); - + + OnKeyDown(SHIFTDOWN, KEYMAP[MacroString[letters]][0]); + delay(CharDelay); - OnKeyUp(SHIFTDOWN,KEYMAP[MacroString[letters]][0]); + OnKeyUp(SHIFTDOWN, KEYMAP[MacroString[letters]][0]); } @@ -607,204 +613,197 @@ void KbdRptParser::PrintLine(int macro) -void KbdRptParser::PrintKey(uint8_t m, uint8_t key) +void KbdRptParser::PrintKey(uint8_t m, uint8_t key) { - MODIFIERKEYS mod; - *((uint8_t*)&mod) = m; -/* - Serial.print((mod.bmLeftCtrl == 1) ? "C" : " "); - Serial.print((mod.bmLeftShift == 1) ? "S" : " "); - Serial.print((mod.bmLeftAlt == 1) ? "A" : " "); - Serial.print((mod.bmLeftGUI == 1) ? "G" : " "); - - Serial.print(" >"); - PrintHex(key); - Serial.print("< "); + MODIFIERKEYS mod; + *((uint8_t*)&mod) = m; + /* + Serial.print((mod.bmLeftCtrl == 1) ? "C" : " "); + Serial.print((mod.bmLeftShift == 1) ? "S" : " "); + Serial.print((mod.bmLeftAlt == 1) ? "A" : " "); + Serial.print((mod.bmLeftGUI == 1) ? "G" : " "); - Serial.print((mod.bmRightCtrl == 1) ? "C" : " "); - Serial.print((mod.bmRightShift == 1) ? "S" : " "); - Serial.print((mod.bmRightAlt == 1) ? "A" : " "); - Serial.println((mod.bmRightGUI == 1) ? "G" : " "); - - - */ + Serial.print(" >"); + PrintHex(key); + Serial.print("< "); -// needs to send APPLE keys as key presses, not just as modifiers. + Serial.print((mod.bmRightCtrl == 1) ? "C" : " "); + Serial.print((mod.bmRightShift == 1) ? "S" : " "); + Serial.print((mod.bmRightAlt == 1) ? "A" : " "); + Serial.println((mod.bmRightGUI == 1) ? "G" : " "); - if(mod.bmLeftAlt == 1) { - digitalWrite(OPEN_APPLE_PIN, HIGH); + + */ + + // needs to send APPLE keys as key presses, not just as modifiers. + + if (mod.bmLeftAlt == 1) { + digitalWrite(OPEN_APPLE_PIN, HIGH); } else { - digitalWrite(OPEN_APPLE_PIN, LOW); + digitalWrite(OPEN_APPLE_PIN, LOW); } - if(mod.bmRightAlt == 1) { - digitalWrite(CLOSED_APPLE_PIN, HIGH); + if (mod.bmRightAlt == 1) { + digitalWrite(CLOSED_APPLE_PIN, HIGH); } else { - digitalWrite(CLOSED_APPLE_PIN, LOW); + digitalWrite(CLOSED_APPLE_PIN, LOW); } - if((mod.bmLeftShift == 1) || (mod.bmRightShift == 1) ) { - digitalWrite(SHIFT_PIN, LOW); + if ((mod.bmLeftShift == 1) || (mod.bmRightShift == 1) ) { + digitalWrite(SHIFT_PIN, LOW); } else { - digitalWrite(SHIFT_PIN, HIGH); + digitalWrite(SHIFT_PIN, HIGH); } - if((mod.bmRightCtrl == 1) || (mod.bmLeftCtrl == 1) ) { - digitalWrite(CONTROL_PIN, LOW); + if ((mod.bmRightCtrl == 1) || (mod.bmLeftCtrl == 1) ) { + digitalWrite(CONTROL_PIN, LOW); } else { - digitalWrite(CONTROL_PIN, HIGH); + digitalWrite(CONTROL_PIN, HIGH); } }; -void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key) +void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key) { Serial.println("DN "); - digitalWrite(S0_4051, LOW); - digitalWrite(S1_4051, LOW); - digitalWrite(S2_4051, LOW); + digitalWrite(S0_4051, LOW); + digitalWrite(S1_4051, LOW); + digitalWrite(S2_4051, LOW); Serial.println(mod); Serial.println(key); - PrintKey(mod, key); - uint8_t c = OemToAscii(mod, key); - - if (c) - OnKeyPressed(c); - - - -int SEARCH_COLUMN = -1; -int SEARCH_ROW = -1; + PrintKey(mod, key); + uint8_t c = OemToAscii(mod, key); -for (int row=0; row Keyboard(&Usb); - -uint32_t next_time; - -KbdRptParser Prs; void setup() { @@ -822,8 +821,8 @@ void setup() pinMode(S0_4051, OUTPUT); pinMode(S1_4051, OUTPUT); pinMode(S2_4051, OUTPUT); - - + + digitalWrite(ENABLE_PIN, HIGH); // write low to enable, high to disable digitalWrite(S0_PIN, LOW); digitalWrite(S1_PIN, LOW); @@ -832,39 +831,45 @@ void setup() digitalWrite(CAPS_LOCK_PIN, HIGH); digitalWrite(RESET_PIN, HIGH); - + digitalWrite(OPEN_APPLE_PIN, LOW); digitalWrite(CLOSED_APPLE_PIN, LOW); -// modifier keys - HIGH == not pressed. LOW == pressed. -digitalWrite(SHIFT_PIN, HIGH); -digitalWrite(CONTROL_PIN, HIGH); + // modifier keys - HIGH == not pressed. LOW == pressed. + digitalWrite(SHIFT_PIN, HIGH); + digitalWrite(CONTROL_PIN, HIGH); - digitalWrite(S0_4051, LOW); - digitalWrite(S1_4051, LOW); - digitalWrite(S2_4051, LOW); + digitalWrite(S0_4051, LOW); + digitalWrite(S1_4051, LOW); + digitalWrite(S2_4051, LOW); - // *** DEBUG -// Serial.begin( 115200 ); -// Serial.println("Start"); + // *** DEBUG + // Serial.begin( 115200 ); + // Serial.println("Start"); - if (Usb.Init() == -1) - Serial.println("OSC did not start."); - - delay( 200 ); - - next_time = millis() + 5000; - - Keyboard.SetReportParser(0, (HIDReportParser*)&Prs); + if (Usb.Init() == -1) { + Serial.println("OSC did not start."); + delay(5000); + digitalWrite(OPEN_APPLE_PIN, HIGH); + digitalWrite(CLOSED_APPLE_PIN, HIGH); + digitalWrite(RESET_PIN, LOW); + digitalWrite(CONTROL_PIN, LOW); + + } + + delay( 200 ); + + next_time = millis() + 5000; + + HidKeyboard.SetReportParser(0, (HIDReportParser*)&Prs); } void loop() { - Usb.Task(); - - + + Usb.Task(); } diff --git a/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino b/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino index dcf7f23..8beefa8 100644 --- a/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino +++ b/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino @@ -1,4 +1,4 @@ -/* + /* * Converts Apple M0100 mouse to USB, using Adafruit Trinket Pro 5v. * * Accelerated mouse tracking, based on speed. Faster movement @@ -8,7 +8,7 @@ * */ - + #include #include diff --git a/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino new file mode 100644 index 0000000..6290b72 --- /dev/null +++ b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino @@ -0,0 +1,227 @@ +#include +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include +#endif + + + +// pin assignments + +int XMOVE = 3; +int XDIR = 1; +int YMOVE = 2; +int YDIR = 0; +int CLICKPIN = 4; +long XDELAY; +long YDELAY; +long MOVEMENTBASE = 50; +int MOVEMENTFACTORX = 0; +int MOVEMENTFACTORY = 0; +int MOVEMENTTHRESHOLD = 1; +int MOVEMENTDENOM = 12; + +class MouseRptParser : public MouseReportParser +{ + protected: + void OnMouseMove (MOUSEINFO *mi); + void OnLeftButtonUp (MOUSEINFO *mi); + void OnLeftButtonDown (MOUSEINFO *mi); + void OnRightButtonUp (MOUSEINFO *mi); + void OnRightButtonDown (MOUSEINFO *mi); + void OnMiddleButtonUp (MOUSEINFO *mi); + void OnMiddleButtonDown (MOUSEINFO *mi); +}; +void MouseRptParser::OnMouseMove(MOUSEINFO *mi) +{ + + // XDELAY = MOVEMENTBASE + (1 - (abs(mi->dX) / 255.000)) * MOVEMENTFACTOR; + // YDELAY = MOVEMENTBASE + (1 - (abs(mi->dY) / 127.000)) * MOVEMENTFACTOR; + // Serial.print("dx="); + // Serial.println(XDELAY); + // Serial.print(" dy="); + // Serial.println(YDELAY); + // delayMicroseconds(XDELAY); + + + MOVEMENTFACTORX = 1 + (abs(mi->dX)) / MOVEMENTDENOM; + //Serial.println(MOVEMENTFACTOR); + for (int i = 0; i < MOVEMENTFACTORX; i++) { + + if (mi->dX > MOVEMENTTHRESHOLD) { + + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + + } + if (mi->dX < -1 * MOVEMENTTHRESHOLD) { + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + + } + } + MOVEMENTFACTORY = 1 + (abs(mi->dY)) / MOVEMENTDENOM; + for (int i = 0; i < MOVEMENTFACTORY; i++) { + if (mi->dY > MOVEMENTTHRESHOLD) { + + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + + } + + if (mi->dY < -1 * MOVEMENTTHRESHOLD) { + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + + } + + } + /* + XDIR = XMOVE = LOW + + if X > 0 + XMOVE HIGH + delay + XDIR HIGH + delay + XMOVE LOW + delay + XDIR LOW + + else if X < 0 + XDIR HIGH + delay + XMOVE HIGH + delay + XDIR LOW + delay + XMOVE LOW + + + + + + */ + + + +}; +void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi) +{ + // Serial.println("L Butt Up"); + digitalWrite(CLICKPIN, HIGH); +}; +void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi) +{ + // Serial.println("L Butt Dn"); + digitalWrite(CLICKPIN, LOW); +}; +void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi) +{ + // Serial.println("R Butt Up"); +}; +void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi) +{ + if (MOVEMENTTHRESHOLD == 1) { + MOVEMENTTHRESHOLD = 0; + } else { + MOVEMENTTHRESHOLD = 1; + } + + if (MOVEMENTDENOM == 12) { + MOVEMENTDENOM = 8; + } else { + MOVEMENTDENOM = 12; + } + + if (MOVEMENTBASE == 50) { + MOVEMENTBASE = 100; + } else { + MOVEMENTBASE = 50; + } + + // Serial.println("R Butt Dn"); +}; +void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi) +{ + // Serial.println("M Butt Up"); +}; +void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi) +{ + // Serial.println("M Butt Dn"); +}; + +USB Usb; +USBHub Hub(&Usb); +HIDBoot HidMouse(&Usb); + +uint32_t next_time; + +MouseRptParser Prs; + +void setup() +{ + + pinMode(XMOVE, OUTPUT); + pinMode(XDIR, OUTPUT); + pinMode(YMOVE, OUTPUT); + pinMode(YDIR, OUTPUT); + pinMode(CLICKPIN, OUTPUT); + + + + /* Serial.begin( 115200 ); + #if !defined(__MIPSEL__) + while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection + #endif + Serial.println("Start"); + */ + if (Usb.Init() == -1) + Serial.println("OSC did not start."); + + delay( 200 ); + + next_time = millis() + 5000; + + HidMouse.SetReportParser(0, (HIDReportParser*)&Prs); + + + + digitalWrite(XMOVE, LOW); + digitalWrite(XDIR, LOW); + digitalWrite(YMOVE, LOW); + digitalWrite(YDIR, LOW); + digitalWrite(CLICKPIN, HIGH); + + + +} + +void loop() +{ + Usb.Task(); +} + diff --git a/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex new file mode 100644 index 0000000..9a333fa --- /dev/null +++ b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex @@ -0,0 +1,853 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C948D160C9486000C941E180C94501869 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00D906801811241FBE42 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E4E8C3 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94351AC83B29 +:10010000D107C9F70E9418190C94401A0C940000EA +:1001100080E00895089580E0089581E008950895AD +:100120008091080190910901019729F41092090129 +:100130001092080106C081E090E09093090180933D +:10014000080180910601909107010C9719F488E04D +:1001500090E002C08CE090E090930701809306014C +:1001600080910A0190910B01A0910C01B0910D01B9 +:10017000C297A105B10529F484E690E0A0E0B0E0C3 +:1001800004C082E390E0A0E0B0E080930A01909385 +:100190000B01A0930C01B0930D01089508950895EB +:1001A000860F911D860F911DFC015687458781E0C2 +:1001B0000895CF93DF93EC018C819D81DC01ED915B +:1001C000FC910480F581E02D6E8109951F86188AC7 +:1001D00081E08A8B1E821B8A1C8A1D8A1E8A1F8AC6 +:1001E00080E0DF91CF910895FC018681089581E040 +:1001F000633009F080E0089581E0623009F080E02A +:100200000895860F911D860F911DFC0185859685A9 +:100210000895FC0187890895EF92FF92CF93DF93B1 +:10022000FC01E7012289223029F16787408B8B810D +:1002300083708330F9F48A8187FF1CC08E81908D92 +:10024000981708F4808F822F90E0DC01AA0FBB1F63 +:10025000A80FB91FAE0FBF1F8A818F7017968C939E +:1002600017978C8118968C93189784E019968C9325 +:100270002F5F228BDF91CF91FF90EF900895EF9247 +:10028000FF920F9302970E940C010F91FF90EF9045 +:100290000895089561E080910E010C94E81760E0E4 +:1002A00080910E010C94E8170F931F93CF93DF9367 +:1002B000EB018981992787FD909597FF03C0919560 +:1002C0008195910960910601709107010E941F1AA2 +:1002D0006F5F7F4F70935A026093590200E010E005 +:1002E0008091590290915A02081719070CF068C0C2 +:1002F0002981332727FD30958091080190910901CC +:100300008217930734F561E0809114010E94E81789 +:1003100080910A0190910B010E94401761E0809149 +:1003200012010E94E81780910A0190910B010E942E +:10033000401760E0809114010E94E81780910A0143 +:1003400090910B010E94401760E0809112010E9481 +:10035000E8172981332727FD309580910801909176 +:1003600009019195819591092817390734F561E0C4 +:10037000809112010E94E81780910A0190910B016F +:100380000E94401761E0809114010E94E81780915B +:100390000A0190910B010E94401760E080911201C8 +:1003A0000E94E81780910A0190910B010E9440176A +:1003B00060E0809114010E94E8170F5F1F4F90CFFB +:1003C0008A81992787FD909597FF03C09195819524 +:1003D000910960910601709107010E941F1A6F5FD9 +:1003E0007F4F709358026093570200E010E08091B5 +:1003F000570290915802081719070CF068C02A811B +:10040000332727FD309580910801909109018217CB +:10041000930734F561E0809110010E94E817809104 +:100420000A0190910B010E94401761E080915B02EC +:100430000E94E81780910A0190910B010E944017D9 +:1004400060E0809110010E94E81780910A0190916C +:100450000B010E94401760E080915B020E94E81748 +:100460002A81332727FD3095809108019091090159 +:100470009195819591092817390734F561E08091AC +:100480005B020E94E81780910A0190910B010E9483 +:10049000401761E0809110010E94E81780910A01E5 +:1004A00090910B010E94401760E080915B020E94D6 +:1004B000E81780910A0190910B010E94401760E0BB +:1004C000809110010E94E8170F5F1F4F90CFDF91BE +:1004D000CF911F910F9108952F923F924F925F926B +:1004E0006F927F928F929F92AF92BF92CF92DF9244 +:1004F000EF92FF920F931F93CF93DF9300D000D022 +:10050000CDB7DEB76C017C836B835A8349834C0182 +:1005100080E1880E911C5601A7E0AA0EB11C11E0E3 +:1005200044E0442E57E0352E3601B2E16B0E711CCB +:1005300063E0262E72E0572E8B819C81892B09F473 +:1005400012C1F60180A1823061F128F4882349F0BC +:10055000813079F0F1CF833041F1843009F44BC020 +:10056000EBCF54828581968190878783528651860E +:1005700010A3AE014D5F5F4FBE016F5F7F4FC5019E +:100580000E944C12882309F4EEC0D6011596ED9115 +:10059000FC911697808191968C9391978181929688 +:1005A0008C93F6017682658220A2D60192968C9178 +:1005B000843081F018F4823079F014C0853081F0F5 +:1005C000813281F4D60191968C9191978250149644 +:1005D0008C9308C0F60113A2D60114963C9202C077 +:1005E000F6018483F60185819681908787838481D3 +:1005F0008287818740A2D60192968C918430B1F097 +:10060000853009F442C0823009F06EC0AE014D5F02 +:100610005F4FBE016F5F7F4FC5010E944C12882360 +:1006200009F4A1C0F601858984A38EC0AE014D5F97 +:100630005F4FBE016F5F7F4FC5010E944C12882340 +:1006400009F491C0D60155968C915597833009F0E5 +:100650007BC056968C915697813009F075C098965C +:100660009C91989757968C91992321F0882309F4AF +:100670006BC003C0823009F067C0F60113A39289F2 +:1006800096A3938997A385A35FC0AE014D5F5F4F8B +:10069000BE016F5F7F4FC5010E944C12882309F491 +:1006A00062C0D60193968C919397882309F44CC02D +:1006B00012968D919C911397009709F445C0DC0127 +:1006C000ED91FC910190F081E02D7401D601959699 +:1006D0000C91959797962C91979796964C91969703 +:1006E00094966C91099530C0F60181A19585992366 +:1006F00019F0913031F023C090E0029797878687F8 +:1007000015872B813C8189819A81782F692FD601A9 +:100710001E964D915C911F9741155105E9F0019688 +:100720002115310541F041505109F601578746879F +:1007300021503109EACF79836A831C821B82F6013A +:1007400086859785892B79F4D60116969C928E9290 +:10075000159790961C92F0CE9A8389833C832B83C5 +:10076000F6011586ECCF0F900F900F900F90DF9150 +:10077000CF911F910F91FF90EF90DF90CF90BF909E +:10078000AF909F908F907F906F905F904F903F9031 +:100790002F9008959FB7F89420916602809164028B +:1007A000213019F48DBB9FBF08958FBF0895CF925C +:1007B000DF92EF92FF920F931F93CF93DF93CDB70A +:1007C000DEB762970FB6F894DEBF0FBECDBF6C01E7 +:1007D000DC0157968C91882369F00E94D716F601A8 +:1007E0000389148925893689601B710B820B930B51 +:1007F00097FF02C0F12C39C0F601838590E09A8BF7 +:10080000898BE12C8E010F5F1F4F9E012F5E3F4FA2 +:1008100042856681848195810E945F0EF82E811148 +:1008200018C029893A892330310598F0D6011D96E0 +:100830008D919C911E97009761F0DC01ED91FC91E8 +:100840000190F081E02D8E010F5F1F4F40E0B60157 +:1008500009950E94D716F601208D620F711D811D2A +:10086000911D638B748B858B968B8F2D62960FB643 +:10087000F894DEBF0FBECDBFDF91CF911F910F91D6 +:10088000FF90EF90DF90CF9008953F924F925F924C +:100890006F927F928F929F92AF92BF92CF92DF9290 +:1008A000EF92FF920F931F93CF93DF93CDB7DEB7F5 +:1008B000EB970FB6F894DEBF0FBECDBF7C01462E7E +:1008C000342E522EDC011496AD90BC9015971696DE +:1008D0008C911697811111C158961C92D501ED91FA +:1008E000FC910190F081E02D60E0C50109956C015B +:1008F000009711F486ED0BC1FC018080918081147A +:10090000910409F4FCC03701F7E06F0E711CDC01A3 +:1009100011967C926E9214965C928E01065D1F4F2A +:1009200028E030E040E060E0F701848195810E949A +:100930005E0D182F8111E7C01AA5D6018D929C92E9 +:10094000D501ED91FC910280F381E02D232D40E053 +:10095000642DC5010995F7018683882309F4D1C068 +:1009600099A99087282F40E060E0848195810E94BA +:100970000B0E982ED501ED91FC91D60114961C9288 +:10098000882361F00480F581E02DD70116966C91E3 +:10099000C5010995F7011682892DB9C00190F08132 +:1009A000E02DD70116966C91C5010995009709F4C1 +:1009B000A1CF133108F012E1FC01548211110FC0D4 +:1009C0004BAC512CEDE2AE2EE1E0BE2E4701F2E041 +:1009D0008F0E911C6E0181E1C80ED11C39C0212FF0 +:1009E00030E08E01065D1F4F40E0D70116966C91F6 +:1009F000169714968D919C9115970E945E0D182F55 +:100A0000811171C0DDCFBA82A9829C828B821E8641 +:100A1000188A1F8619A21AA21BA219A6DF82CE82EB +:100A2000D986C8868D818B878A87DD86CC868E01A4 +:100A30000F5F1F4F252D40E0F7016681848195816E +:100A40000E94AC0DD70152968C91823019F05394CC +:100A50005410D9CFF7018289823009F043C0930145 +:100A600042E06681848195810E94AC0868EE73E063 +:100A700080E090E00E940617D7011F962C911F97E7 +:100A800040E016966C91169714968D919C9115974F +:100A90000E943A0E182F811126C068EE73E080E0A4 +:100AA00090E00E94061740E060E0C7010E94BF117D +:100AB000182F811118C020E040E060E0C7010E94BB +:100AC000951183E391E09A838983AE014F5F5F4F75 +:100AD00060E070E0C7010E94521181E0F701878B4E +:100AE00080E015C011EDD701ED91FC910480F581F6 +:100AF000E02DC7010995812F0AC089ED08C087ED57 +:100B000006C084ED04C0F60191828082ECCFEB96A2 +:100B10000FB6F894DEBF0FBECDBFDF91CF911F910E +:100B20000F91FF90EF90DF90CF90BF90AF909F908C +:100B30008F907F906F905F904F903F90089520919D +:100B40006602222399F03FB7F89420916602213083 +:100B500059F42DB3209364024DB320916502209582 +:100B600024232DBB3FBF02C0309364028CBD9DBDCA +:100B7000089580EE91E00C9459102A9A0895CF932D +:100B8000C82F80E591E00E949F052A98CEBD000005 +:100B90000DB407FEFDCF8EB51EBC00000DB407FEE0 +:100BA000FDCFCEB50E94BD058091660281110E94E5 +:100BB000CA038C2FCF9108951F93CF93DF931F9279 +:100BC000CDB7DEB7182F80E591E069830E949F05BD +:100BD0002A98812F82608EBD69810DB407FEFDCFFA +:100BE0008EB56EBD0DB407FEFDCF8EB50E94BD055E +:100BF00080916602882331F00F90DF91CF911F9191 +:100C00000C94CA030F90DF91CF911F91089588EF44 +:100C10000E94BF05807C8034A1F018F4882301F184 +:100C20000895803819F0803CB9F0089588ED0E944D +:100C3000BF0581FD0BC069EC88ED0E94DC0582E0F8 +:100C40000CC088ED0E94BF0581FDF5CF6BEC88EDEF +:100C50000E94DC0583E001C081E08093AC0108952F +:100C600061ED88ED0E94DC051092AC0108950F93B0 +:100C70001F93CF93DF938C01229A0E94BD050E949F +:100C80005716229A0E94BD05219868E188E80E94C3 +:100C9000DC0560E288E70E94DC0560E088E70E94EE +:100CA000DC05C0E0D0E088E60E94BF05219680FD0B +:100CB00006C0CF3F8FEFD807B1F78FEF1DC061ECB3 +:100CC00088ED0E94DC0560E680ED0E94DC0564E0B2 +:100CD00088EE0E94DC0588EE0E94BF0582FFFBCFF4 +:100CE000C8010E94070660E288EC0E94DC0561E012 +:100CF00080E80E94DC0580E0DF91CF911F910F9189 +:100D0000089561E0809114010E94AF1761E0809125 +:100D100012010E94AF1761E0809110010E94AF178D +:100D200061E080915B020E94AF1761E080910E014B +:100D30000E94AF1780EE91E00E9437068F3F31F49A +:100D400066E171E081E792E00E94051968EC70E0CD +:100D500080E090E00E9406170E94D71668577C4EEC +:100D60008F4F9F4F6093B2017093B3018093B40192 +:100D70009093B5018DEA91E09093C4018093C301F3 +:100D800060E0809114010E94E81760E080911201F8 +:100D90000E94E81760E0809110010E94E81760E06F +:100DA00080915B020E94E81761E080910E010C9433 +:100DB000E81780EE91E00E946A0760EE71E08FEC28 +:100DC00091E00E94E31480EE91E09093BB01809348 +:100DD000BA018DE491E09093B7018093B6018BE660 +:100DE00091E09093B9018093B8011092C9011092DB +:100DF000CA011092CB011092CC011092CD01109239 +:100E0000BD0188E08093BE018CE38093BF01109206 +:100E1000C0011092C10184E08093C20181E08093FF +:100E2000C8011092C7011092C5011092C40110921E +:100E3000C301E6E3F2E080E090E021913191232BC1 +:100E400051F4FC01EE0FFF1FEA5CFD4F86EB91E0D1 +:100E50009183808304C001968031910571F789E305 +:100E600091E09093AE018093AD010895FC01208143 +:100E70002EBDDC019B012150310951F011965C918E +:100E800011970DB407FEFDCF4EB55EBD4D93F3CF68 +:100E9000FB013197E80FF91F0DB407FEFDCF8EB5AA +:100EA000808308958EBD00000DB407FEFDCF8EB582 +:100EB000089580916602882361F09FB7F89420918D +:100EC000660280916402213019F48DBB9FBF0895A2 +:100ED0008FBF0895FC0181E791E0918380831582A3 +:100EE000108681E0818712869F012E5F3F4F3783F6 +:100EF0002683128288E083838CE3848380E090E001 +:100F000041E0DF01A80FB91F1D961C921D971E9688 +:100F10004C931E971F961C921F971C963C932E93E2 +:100F20001B9705968B34910561F7EA58FF4F1082A5 +:100F300081E1809361020895CF92DF92EF92FF9258 +:100F40000F931F93CF93DF931F92CDB7DEB77C0132 +:100F50006623B1F18C01C12CD12CF801EA5AFF4F64 +:100F600080819181009719F1DC01ED91FC91008461 +:100F7000F185E02D698309956981861318C0F60112 +:100F8000BB96EE0FFF1FEE0DFF1D80819181DC01EE +:100F9000ED91FC910480F581E02D0F90DF91CF91D0 +:100FA0001F910F91FF90EF90DF90CF900994BFEFCA +:100FB000CB1ADB0A0E5F1F4FE0E1CE16D10469F6B3 +:100FC00080E00F90DF91CF911F910F91FF90EF90F4 +:100FD000DF90CF90089520E030E041E0FC01E20F87 +:100FE000F31F5585561739F04F5F2B5F3F4F403148 +:100FF000A9F780E00895842F0895EF92FF921F9340 +:10100000CF93DF9300D0CDB7DEB77C01162F67FDFD +:101010005FC0283008F05CC0442331F0DC01159635 +:101020008C91873009F454C060E0C7012A8349835A +:101030000E94EB072A814981882309F449C0E82FDF +:10104000F0E0111123C085E08E9FD0018F9FB00D7D +:101050001124AE0DBF1D442359F081E418968C93E2 +:10106000D70115968C9115978F5F15968C9303C0B9 +:1010700081E018968C9385E08E9FD0018F9FB00DF4 +:101080001124AE0DBF1D18968C9123C0612F67707F +:10109000660F660F660F442361F06064D7011596F2 +:1010A0008C9115978F5F15968C938770687F682B4E +:1010B00003C02770687B622B85E08E9FD0018F9FD5 +:1010C000B00D1124AE0DBF1D18966C93862F01C074 +:1010D00080E00F900F90DF91CF911F91FF90EF90E4 +:1010E0000895CF93DF93EC01662359F00E94EB073C +:1010F000882349F09E0145E0849F200D311D112475 +:10110000C901069602C080E090E0DF91CF9108957A +:10111000CF93DF931F92CDB7DEB749830E9471084A +:101120004981009789F0DC01ED91FC91119730978E +:1011300059F013969C9180E0891731F02081241793 +:1011400031F033968F5FF8CF80E090E001C0CF019F +:101150000F90DF91CF910895EF92FF921F93CF935D +:10116000DF931F92CDB7DEB7162F79012115310518 +:1011700069F049830E947108FC014981009741F0A0 +:101180001283F182E082438380E003C088ED01C0D6 +:1011900086ED0F90DF91CF911F91FF90EF90089512 +:1011A0002A9808951F93CF93DF931F92CDB7DEB790 +:1011B000182F80E591E00E949F050E94D008812FA2 +:1011C0000E94520780E00E94520789830E94BD0559 +:1011D0000E94590789810F90DF91CF911F91089547 +:1011E0001F93CF93DF9300D01F92CDB7DEB7182F98 +:1011F00080E591E06B830E949F050E94D0081260F9 +:1012000019836B816A8362E070E0CE0101960E94CF +:1012100036070E94BD050E9459070F900F900F904E +:10122000DF91CF911F9108958F929F92BF92CF929D +:10123000DF92EF92FF920F931F93CF93DF931F9252 +:10124000CDB7DEB74C01B62E690149830E94710803 +:101250007C014981009709F443C0FC0180819181A0 +:10126000892B09F43FC06B2DC4010E948808F60148 +:10127000918380830097C1F1FC01228126952695F8 +:10128000822F90E0409764F441E050E060E070E02D +:1012900004C0440F551F661F771F2A95D2F702C05E +:1012A00040E050E841505109F801518340836B2DD3 +:1012B00080EE0E94F00888ED0E94D208F701948128 +:1012C000992339F0F401EA58FF4F60816260682B7E +:1012D00002C0682F697F88ED0E94F00880E005C099 +:1012E00086ED03C087ED01C08BED0F90DF91CF91AC +:1012F0001F910F91FF90EF90DF90CF90BF909F9044 +:101300008F9008958F929F92AF92BF92CF92DF926B +:10131000EF92FF920F931F93CF93DF931F92CDB75E +:10132000DEB7A62E890149830E94D7166B017C0186 +:1013300088E8C80E83E1D81EE11CF11C812C912C99 +:10134000B12C20E04981A42A29830E94D7166C1968 +:101350007D098E099F09298197FF2DC06A2D80EF95 +:101360000E94F0080E94D7166C197D098E099F090A +:1013700097FF09C088EC0E94D20887FFF3CF60E88E +:1013800088EC0E94F00888EF0E94D208282F2F7066 +:10139000243019F02E3059F00EC0EFEF8E1A9E0A4D +:1013A0000115110589F28016910671F604C0B394F7 +:1013B000F3E0BF12C9CF822F0F90DF91CF911F9121 +:1013C0000F91FF90EF90DF90CF90BF90AF909F90E4 +:1013D0008F9008959F92AF92BF92CF92DF92EF923B +:1013E000FF920F931F93CF93DF937C01B42E122FA4 +:1013F000AA24A394DC01A60FB11DA60FB11D6D0197 +:1014000086E5C80ED11CC42FD0E0AB96CC0FDD1FF3 +:10141000CE0DDF1DD6018D919C91DC01ED91FC91EB +:101420000280F381E02D202F412F6B2D0995803E06 +:10143000C1F4B1100BC061E088EE0E94F00866E6CE +:1014400070E080E090E00E94061715C088819981C5 +:10145000DC01ED91FC910284F385E02D612F09956B +:101460000AC08D3031F48FEF8A0D833008F042C00E +:1014700017C0811142C0F60180819181DC01ED919C +:10148000FC910190F081E02D202F412F6B2D0995CB +:10149000982EBDE08B130CC08FEF8A0D833050F473 +:1014A00064E670E080E090E00E940617A394B2CF5B +:1014B000882311F1B1100BC061E088EE0E94F008A2 +:1014C00066E670E080E090E00E94061711C0EB2D08 +:1014D000F0E0BB96EE0FFF1FEE0DFF1D80819181A6 +:1014E000DC01ED91FC910284F385E02D612F0995DB +:1014F000892D03C08DE001C080E0DF91CF911F9165 +:101500000F91FF90EF90DF90CF90BF90AF909F90A2 +:1015100008950F931F93CF93DF93D82FC62F8A017F +:1015200080E591E00E949F050E94D0088D2F826087 +:101530000E945207D0E0209721F0BE01C8010E940E +:101540003607C00FD11F0E94BD050E945907CE016A +:10155000DF91CF911F910F9108952F923F924F925B +:101560005F926F927F928F929F92AF92BF92CF9233 +:10157000DF92EF92FF920F931F93CF93DF9300D0F0 +:1015800000D01F92CDB7DEB77D836C835A0169010D +:10159000FB0121808FEF820D803408F06FC00E9424 +:1015A000D7162B013C01F8E84F0EF3E15F1E611CDA +:1015B000711CEC81FD81828180FF02C060E801C066 +:1015C00060E488EE0E94F00820E0312CC114D104C0 +:1015D00009F444C076012C143D0408F47101EA8238 +:1015E000A8016E2D80E10E94890A6E2D88E30E9479 +:1015F000F008EC81FD816081606280EF0E94F0085C +:1016000088EC0E94D20887FFFBCF60E888EC0E943C +:10161000F00888EF0E94D208282F2F70812C912C7F +:101620001982222309F46BC02B830E94D7166419F8 +:101630007509860997092B8197FF61C0263001F152 +:101640002E3009F456C0243049F4FFEF8F1A9F0A58 +:10165000A114B10459F18A149B0441F588EF2B833E +:101660000E94D20885FB882780F9EC81FD81928158 +:1016700080FB90F992832B81822F46C08AED44C073 +:1016800088EF0E94D20885FB882780F991E089279E +:10169000EC81FD81928180FB90F9928390FF02C0E2 +:1016A00060E801C060E488EE0E94F00860E088E332 +:1016B0000E94F008F801608180E10E94F0086A81D0 +:1016C00088E30E94F008EC81FD816081606280EF18 +:1016D0000E94F00888EC0E94D20887FFFBCF60E8E8 +:1016E00088EC0E94F00888EF0E94D208282F2F7003 +:1016F00098CF89818F5F89838330C1F6AFCFCE18B1 +:10170000DF080E0D1F1D62CF0F900F900F900F90EE +:101710000F90DF91CF911F910F91FF90EF90DF908D +:10172000CF90BF90AF909F908F907F906F905F9081 +:101730004F903F902F9008952F923F924F925F923B +:101740006F927F928F929F92AF92BF92CF92DF92D1 +:10175000EF92FF920F931F93CF93DF93CDB7DEB736 +:1017600029970FB6F894DEBF0FBECDBF1C01798755 +:1017700068875B834A836901D9018D909C9011979A +:10178000FB01F181F9831D921C92DB0112968C9171 +:1017900081FF02C060E201C060E188EE0E94F008B3 +:1017A0008E2D90E0A0E0B0E08C839D83AE83BF835C +:1017B000482C2A813B81A885B9854C9160E0C10104 +:1017C0000E948209F82EB6E08B1316C088EF0E94A3 +:1017D000D2088295817091E08927E885F985928108 +:1017E00080FB91F9928391FF02C060E201C060E149 +:1017F00088EE0E94F008DDCF811166C088EC0E945F +:10180000D20882FF5FC080E30E94D208582E90E089 +:101810008816990608F4542CD6018D919C91652C5C +:10182000712CF401E81BF90BCF01F7FF02C080E037 +:1018300090E05301861597050CF45C0180E591E07A +:101840000E949F050E94D00888E00E945207A501CF +:1018500060E070E0C8010E94391AA114B10421F0BF +:10186000B501C8010E9436070A0D1B1D0E94BD0567 +:101870000E94590764E088EC0E94F008D6018D911F +:101880009C911197860D971D8D939C93B9815B1642 +:1018900018F08815990560F088EF0E94D2088295AB +:1018A0008170E885F985928180FB91F992830CC063 +:1018B000EE2009F47ECF6C817D818E819F810E9414 +:1018C000061777CF30EFF32E8F2D29960FB6F894A9 +:1018D000DEBF0FBECDBFDF91CF911F910F91FF9063 +:1018E000EF90DF90CF90BF90AF909F908F907F90C0 +:1018F0006F905F904F903F902F9008952F923F925E +:101900004F925F926F927F928F929F92AF92BF920F +:10191000CF92DF92EF92FF920F931F93CF93DF93BB +:10192000CDB7DEB762970FB6F894DEBF0FBECDBF5E +:101930003C01F42E322E202E5C2D4FA058A4C9A4B9 +:10194000DAA4188A1F861E861D868E01035F1F4F2C +:101950009E01215F3F4F598B0E94140959898111C3 +:1019600094C039822A82EB825C83BE82AD829886E3 +:101970008F82AE014F5F5F4F68E080E20E94890A6C +:101980002D853E854F2D60E1C3010E948209182FED +:1019900081117AC0232C221C2224221CC114D104C0 +:1019A00009F466C0EF85F8898281222009F453C0CA +:1019B00082608283540133243394A114B10409F466 +:1019C00055C05C864B864D855E856F857889E12C98 +:1019D00086019E01255F3F4FC3010E949C0B182F7B +:1019E0008630B1F42F85388988EF298B3A8B0E9495 +:1019F000D20885FB882780F9832529893A89D9016E +:101A000012969C91129780FB91F912969C93D5CFD8 +:101A100081113AC0EBA5FCA53097A1F00190F081AF +:101A2000E02D0190F081E02DC4018A199B099A876D +:101A300089876B857C859E01275F3F4FA6018BA51B +:101A40009CA509958B859C85A81AB90A84159505CE +:101A500008F0B3CF0DC0816082834D855E8586011D +:101A60009201BF01C3010E94AD0A182F11110CC0D1 +:101A70002D853E85222011F060EA01C060E84F2DDF +:101A8000C3010E94820901C0812F62960FB6F894AB +:101A9000DEBF0FBECDBFDF91CF911F910F91FF90A1 +:101AA000EF90DF90CF90BF90AF909F908F907F90FE +:101AB0006F905F904F903F902F9008958F929F92DC +:101AC000AF92BF92CF92EF920F931F931F921F92EC +:101AD0001F930F933F932F934901A12CB12CCC243A +:101AE000C394E12C06E020E80E947E0C0F900F903A +:101AF0000F900F900F900F901F910F91EF90CF903C +:101B0000BF90AF909F908F9008958F929F92AF92C9 +:101B1000BF92CF92EF92FF920F931F921F92FF926C +:101B2000EF923F932F934901A12CB12C52E0C52E87 +:101B3000E02E06E020E80E947E0C0F900F900F90A0 +:101B40000F900F900F900F91FF90EF90CF90BF905C +:101B5000AF909F908F9008953F924F925F926F92B7 +:101B60007F928F929F92AF92BF92CF92DF92EF922D +:101B7000FF920F931F93CF93DF93CDB7DEB7C0547F +:101B8000D1090FB6F894DEBF0FBECDBF3C01562E73 +:101B9000442E322EB02ECE0101966C017C01022F14 +:101BA00029E030E0C3010E94850D81111BC08B80AC +:101BB0009C801F93BF92DF92CF921F9280E48F93FD +:101BC000A12CB12C62E0C62EE32C06E020E8442DC7 +:101BD000652DC3010E947E0C0F900F900F900F9007 +:101BE0000F900F90C05CDF4F0FB6F894DEBF0FBEB2 +:101BF000CDBFDF91CF911F910F91FF90EF90DF90BC +:101C0000CF90BF90AF909F908F907F906F905F909C +:101C10004F903F9008958F929F92AF92BF92CF9234 +:101C2000EF920F93CF931F921F921F921F921F92BA +:101C30001F92812C912CA12CB12CC12CE22E05E0FD +:101C400020E00E947E0CC82F6CE271E080E090E002 +:101C50000E9406170F900F900F900F900F900F900B +:101C60008C2FCF910F91EF90CF90BF90AF909F901E +:101C70008F9008958F929F92AF92BF92CF92EF92E2 +:101C80000F931F921F921F921F921F921F92812CDF +:101C9000912CA12CB12CC12CE22E09E020E00E9455 +:101CA0007E0C0F900F900F900F900F900F900F9150 +:101CB000EF90CF90BF90AF909F908F9008958F92AC +:101CC0009F92AF92BF92CF92DF92EF920F931F93AA +:101CD000CF93DF9300D000D0CDB7DEB76C015901B0 +:101CE00048011C821B821A8219828E010F5F1F4FCE +:101CF0009E012D5F3F4F0E941409811109C0498147 +:101D00005A816B817C8184019501C6010E949C0BE4 +:101D10000F900F900F900F90DF91CF911F910F9127 +:101D2000EF90DF90CF90BF90AF909F908F900895ED +:101D3000CF92DF92FF920F931F93CF93DF9300D048 +:101D4000CDB7DEB76C01662309F442C0062F10E060 +:101D500085E0689FB0011124F601E60FF71F80852A +:101D6000282F277086FF19C031E0E5E0FE2EF6012E +:101D7000F39EE00DF11D112480858695869586954C +:101D800087708217E1F03F5F303188F3F60185817B +:101D9000821303C02150F601258385E0809FF00166 +:101DA000819FF00D1124EC0DFD1D108681E08187CF +:101DB000128682E0C80ED11CD782C68209C0632F6A +:101DC000C6012A8339830E94980E2A813981CFCF98 +:101DD0000F900F90DF91CF911F910F91FF90DF90A7 +:101DE000CF900895CF93DF93EC016134A1F4FC010F +:101DF000855B9F4F41E09E012E5F3F4F15864687D2 +:101E00001786348723873596E817F907B9F71D82B7 +:101E1000DF91CF9108950E94EB07682FCE01DF91EB +:101E2000CF910C94980E0F931F93CF93DF93EC01F7 +:101E3000022FCA3F8FEFD80711F486ED29C08E819B +:101E40009F81892B01F12A87242F40E0CE010E9437 +:101E5000FD07182F8823C9F0682FCE010E94710852 +:101E6000009759F3FC010483212F40E060E0CE018C +:101E70000E940B0E082F882351F0612FCE010E9483 +:101E8000F20E802F05C087ED03C084ED01C080E015 +:101E9000DF91CF911F910F9108952F923F924F9212 +:101EA0005F926F927F928F929F92AF92BF92CF92EA +:101EB000DF92EF92FF920F931F93CF93DF93CDB7F3 +:101EC000DEB766970FB6F894DEBF0FBECDBF7C01BC +:101ED000862E742E922E1B8A88E08C8B8CE38D8B41 +:101EE000D701ED91FC910190F081E02D60E0C701F8 +:101EF00009956C01009709F4ABC0FC01A080B1808A +:101F0000CE0143969183808394828E010F5F1F4F91 +:101F100022E130E040E060E0C7010E945E0DD601A2 +:101F2000AD92BC928111ACC029843A844B845C840C +:101F3000BD81BE8B1E815701612C6501E6E5CE0E89 +:101F4000D11CD6018D919C91009789F1DC01ED9116 +:101F5000FC910084F185E02D0995811128C0F601DE +:101F600080819181DC01ED91FC910088F189E02D67 +:101F7000612F09958823D9F0F60180819181DC01D8 +:101F8000ED91FC910484F585E02DA201B101099544 +:101F9000811160C0F60180819181DC01ED91FC919D +:101FA0000684F785E02D6E890995811153C06394ED +:101FB000B2E0AB0EB11CE0E16E12BFCF5701612C55 +:101FC0006501F6E5CF0ED11CD6018D919C9100974D +:101FD00089F1DC01ED91FC910084F185E02D0995FA +:101FE000811128C0F60180819181DC01ED91FC9185 +:101FF0000088F189E02D612F09958823B1F1F60160 +:1020000080819181DC01ED91FC910484F585E02DC6 +:10201000A201B101099581110DC0F6018081918164 +:10202000DC01ED91FC910684F785E02D6E89099520 +:102030008823D9F06394B2E0AB0EB11CE0E16E12DC +:10204000BFCF292D472D682DC7010E94130F18C03F +:1020500086ED16C0092D272D482D662DC7010E943B +:10206000EA09813D09F4A3CF0BC0092D272D482D86 +:10207000662DC7010E94EA09982F977F913DD1F202 +:1020800066960FB6F894DEBF0FBECDBFDF91CF913D +:102090001F910F91FF90EF90DF90CF90BF90AF9086 +:1020A0009F908F907F906F905F904F903F902F9078 +:1020B0000895FF920F931F93CF93DF93EC0119992B +:1020C0000EC088EC0E94D20885FF05C0CE010E9498 +:1020D000070660E201C060E088EC0E94F008809191 +:1020E000AC01813051F058F0823029F0833039F55D +:1020F000FF24F3940DC0F12C0BC083E106C0809146 +:102100006102807F8031D9F081E18093610217C044 +:1021100080916102807F803199F40E94D7166853C4 +:102120007F4F8F4F9F4F60935D0270935E0280934D +:102130005F029093600280E28093610201C0F12C03 +:1021400000E010E0FE01E00FF11FEA5AFF4F80812E +:102150009181009739F0DC01ED91FC910680F781C7 +:10216000E02D09950E5F1F4F0032110559F7809140 +:102170006102803409F446C070F4803269F1803322 +:10218000D9F1813109F088C0FE01EA58FF4F108271 +:1021900000E010E00AC0813509F45AC0803809F423 +:1021A0006AC0803509F078C03CC0FE01E00FF11F25 +:1021B000EA5AFF4F80819181009739F0DC01ED915F +:1021C000FC910480F581E02D09950E5F1F4F0032D0 +:1021D000110559F782E15EC00E94D71600915D0299 +:1021E00010915E0220915F0230916002601B710BC2 +:1021F000820B930B97FD50C061E088EE0E94F008BF +:1022000080E448C088EE0E94D20880FD45C088ED79 +:102210000E94D208682F686088ED0E94F00880E56F +:1022200039C088EC0E94D20886FF36C081E58093D1 +:1022300061020E94D7166C5E7F4F8F4F9F4F609355 +:102240005D0270935E0280935F029093600224C0EF +:102250000E94D71600915D0210915E0220915F02EC +:1022600030916002601B710B820B930B97FD14C0C1 +:1022700080E8809361022F2D40E060E0CE010E9453 +:102280004D0F882331F0823D39F08093620280EA5D +:1022900001C080E980936102DF91CF911F910F917E +:1022A000FF9008958F929F92AF92BF92CF92EF923C +:1022B0000F93CF93DF93CDB7DEB7C054D1090FB6DC +:1022C000F894DEBF0FBECDBF5F934F939E012F5F8B +:1022D0003F4F3F932F931F9220E42F9320E8822EAD +:1022E000912C5B0132E2C32EE12C06E021E840E0B4 +:1022F000FC016681848195810E947E0C0F900F9075 +:102300000F900F900F900F90C05CDF4F0FB6F894B6 +:10231000DEBF0FBECDBFDF91CF910F91EF90CF9079 +:10232000BF90AF909F908F9008958F929F92AF92A1 +:10233000BF92CF92EF920F93A62EB12C1F921F92B5 +:102340001F921F921F921F92812C912CC22EE42E5D +:102350000AE021E240E0FC016681848195810E94CF +:102360007E0C0F900F900F900F900F900F900F9189 +:10237000EF90CF90BF90AF909F908F9008958F92E5 +:102380009F92AF92BF92CF92EF920F93A62EB12C55 +:102390001F921F921F921F921F921F92812C912CAD +:1023A000C12CE42E0BE021E240E0FC016681848137 +:1023B00095810E947E0C0F900F900F900F900F90C0 +:1023C0000F900F91EF90CF90BF90AF909F908F9014 +:1023D00008950F931F93CF93DF93EC012A8121700F +:1023E000F8018081982F9170291771F0E881F981A7 +:1023F00080FF04C00680F781E02D03C00480F581D2 +:10240000E02DB801CE0109952A8126952170F801A9 +:10241000808181FB992790F9291771F0E881F98172 +:1024200081FF04C00284F385E02D03C00084F185A0 +:10243000E02DB801CE0109952A8122FB222720F93F +:10244000F801808182FB992790F9291771F0E881C2 +:10245000F98182FF04C00684F785E02D03C004845F +:10246000F585E02DB801CE010995F8018181811132 +:1024700003C08281882341F0E881F9810280F381E1 +:10248000E02DB801CE010995F80180818A83DF91A2 +:10249000CF911F910F910895CF93DF93FC01EA0133 +:1024A00080819181892B21F580E028C088819981E4 +:1024B000892BD1F3DB018D919C91DC015C9123810F +:1024C00030E0241B310980819181820F931FDC0150 +:1024D0005C9382818150828388819981019799835D +:1024E0008883DB018D919C91119701968D939C932C +:1024F00042814111DBCF8381828381E0DF91CF91E3 +:102500000895FC018285089581E0693009F080E03A +:102510000895CF93DF93EC018A819B81DC01ED91DB +:10252000FC910480F581E02D6A8509958A858134C6 +:1025300039F4EA81FB81EA58FF4F8081846080830F +:102540001A861B861C861D861E861F86188A80E0BA +:10255000DF91CF9108958F929F92AF92BF92CF92C9 +:10256000EF920F93A42EB12CB22A1F921F921F92AA +:102570001F921F921F92812C912CC12CE62E01E0FC +:1025800023E240E0FC016285828193810E947E0CFF +:102590000F900F900F900F900F900F900F91EF9062 +:1025A000CF90BF90AF909F908F9008958F929F9201 +:1025B000AF92BF92CF92EF920F93A62EB12C1F92A3 +:1025C0001F923F932F935F934F934A01C12CE12CAD +:1025D00000E023EA40E0FC016285828193810E9451 +:1025E0007E0C0F900F900F900F900F900F900F9107 +:1025F000EF90CF90BF90AF909F908F9008958F9263 +:102600009F92AF92BF92CF92EF920F93A42EB12CD4 +:10261000B22A1F921F921F921F921F921F92812C0B +:10262000912CC12CE62E03E023E240E0FC01628500 +:10263000828193810E947E0C0F900F900F900F90DB +:102640000F900F900F91EF90CF90BF90AF909F9011 +:102650008F9008952F923F924F925F926F927F9248 +:102660008F929F92AF92BF92CF92DF92EF92FF92A2 +:102670000F931F93CF93DF93CDB7DEB7E9970FB6D4 +:10268000F894DEBF0FBECDBF3C01362E242EDC01F8 +:102690001296ED90FC9013971A968C91811103C1BC +:1026A000D701ED91FC910190F081E02D60E0C70130 +:1026B00029AF09956C0129AD009709F4F6C0FC011A +:1026C000A080B180A114B10409F4F1C04301F4E089 +:1026D0008F0E911CDC0111969C928E9214962C9375 +:1026E000FE0131962F018F0128E030E040E060E0EC +:1026F000D30112968D919C9113970E945E0DF60165 +:1027000014828111DAC019818D81893009F0D1C01C +:10271000D701ED91FC910280F381E02D222D41E063 +:10272000632DC7010995F3018287882309F4C3C08B +:1027300098859583282F40E060E0828193810E94F4 +:102740000B0E082F882391F0D601AD92BC92D701D1 +:10275000ED91FC910480F581E02DD3011A966C91E6 +:10276000C7010995F3011286102FABC0113208F092 +:1027700010E2D601AD92BC9211110BC0940142E05F +:10278000F3016285828193810E94AC08811198C017 +:1027900011C0212F30E0820140E0D3011A966C91E4 +:1027A0001A9712968D919C9113970E945E0D81113C +:1027B00087C0E4CF1F921F925F924F921F9288E0D2 +:1027C0008F9388E0882E912CA12CB12C99E2C92EF0 +:1027D000E12C06E020EA40E0F301628582819381EA +:1027E0000E947E0C182F0F900F900F900F900F905B +:1027F0000F90811166C08B81D3011B968C931B9720 +:10280000720100E028E030E040E01A966C911A97DF +:1028100012968D919C9113970E94850D811150C045 +:102820002B813C8140E0F3016285828193810E948B +:10283000850D811145C0298130E0CE0181967C0152 +:1028400040E0D3011A966C911A9712968D919C9143 +:1028500013970E94850D811133C02E8140E0F30152 +:102860006285828193810E943A0E811129C001E024 +:10287000D3011B968C911B97801740F020E0402FCE +:1028800068E0C3010E94FF120F5FF2CF1296ED9134 +:10289000FC911397EA58FF4F80818460808381E028 +:1028A00050968C930EC019ED0CC016ED0AC017EDB2 +:1028B00008C011ED06C014ED04C0F601B182A0827B +:1028C000182F812FE9960FB6F894DEBF0FBECDBF4B +:1028D000DF91CF911F910F91FF90EF90DF90CF90FC +:1028E000BF90AF909F908F907F906F905F904F9030 +:1028F0003F902F900895BF92CF92DF92EF92FF9278 +:102900000F931F93CF93DF9300D000D0CDB7DEB7E6 +:102910007C01B62E19821A821B821C8220E0462F6F +:1029200061E10E94AB1220E04B2D60E1C7010E94E3 +:10293000AB1220E04B2D64E0C7010E94FF1223E0A0 +:10294000C22ED12C9E012F5F3F4F44E050E06B2DF3 +:10295000C7010E94D612882301F120E04B2D64E1CB +:10296000C7010E94AB1220E04B2D60E1C7010E941D +:10297000AB1264E170E080E090E00E9406170F90D7 +:102980000F900F900F90DF91CF911F910F91FF90BB +:10299000EF90DF90CF90BF90089509811A812B812D +:1029A0003C811D7F0330114020413105B1F264E6C6 +:1029B00070E080E090E00E94061781E0C81AD1081C +:1029C00009F0C0CFCACFCF93DF93FC018BE791E032 +:1029D000918380837383628312861386148615869F +:1029E00016861786108A148288E085839CE3968376 +:1029F00091E09783808784E0818761157105B9F044 +:102A0000CB01A0E0B0E0EC01CA5ADF4F2881398148 +:102A1000232B41F49B96AA0FBB1FA60FB71FED9364 +:102A2000FC9305C011960296A031B10561F7DF91C4 +:102A3000CF910895DF92EF92FF920F931F93CF9360 +:102A4000DF93EC01D62E7A01FA01008111812281F7 +:102A500033810130F3E01F07F1E02F073105D1F09A +:102A600060F40115E1E01E072E07310571F1013018 +:102A700011402140310571F062C0033081E0180738 +:102A800080E128073105E1F1033013402041310591 +:102A9000B9F155C080916302811151C020E04D2DE4 +:102AA00061E1CE010E94AB1220E04D2D60E1CE012C +:102AB0000E94AB1220E04D2D64E0CE010E94FF1277 +:102AC00081E08093630281EB3BC020E0462F61E10F +:102AD000CE010E94AB1220E04D2D60E1CE010E949C +:102AE000AB12109263026A8567708D2D8770660F36 +:102AF000660F660F682B8A819B810E949C071FC00E +:102B000020E04D2D64E1CE010E94AB1220E04D2D5E +:102B100060E1CE010E94AB1264E170E080E090E0E1 +:102B20000E9406176A85F70121812695217067703A +:102B30004D2D8A819B810E944D0F1092630280E08F +:102B4000DF91CF911F910F91FF90EF90DF9008954B +:102B5000CF92DF92EF920F931F93CF93DF93CDB776 +:102B6000DEB72E970FB6F894DEBF0FBECDBF6C0157 +:102B700081E090E09E878D87E12C8E010F5F1F4FD3 +:102B80009E01235F3F4F41E0F60162858281938180 +:102B90000E945F0E811151C002E011E08981802303 +:102BA000D1F019861A861B861C869E01275F3F4F2F +:102BB00044E050E0612FC6010E94D61281110BC083 +:102BC000AE01475F5F4F612FC6010E941A15813B1E +:102BD00099F1811132C0000F1F5F1830F9F611E032 +:102BE000F6018385811740F119861A861B861C869B +:102BF0009E01275F3F4F44E050E0612FC6010E94D5 +:102C0000D612811117C089859A858770917081309D +:102C1000914081F48B859C8581609C878B87AE0178 +:102C2000475F5F4F612FC6010E941A15813B21F05B +:102C3000811103C01F5FD4CF80E02E960FB6F894A9 +:102C4000DEBF0FBECDBFDF91CF911F910F91EF90EF +:102C5000DF90CF9008950F931F93CF93DF93EC01F4 +:102C600088898823F1F00E94D7160C851D852E8552 +:102C70003F85601B710B820B930B97FD0FC0CE013C +:102C80000E94A815182F0E94D7166C597F4F8F4F9E +:102C90009F4F6C877D878E879F8701C010E0812FB3 +:102CA00001C080E0DF91CF911F910F910895CF93E4 +:102CB000CFB7F89480916702811127C0EAE9F0E06C +:102CC0008491E6E8F0E09491E82FF0E0EE0FFF1F2A +:102CD000E255FF4FA591B4918C91892321F461E0D5 +:102CE0008AE00E94E81761E08AE00E94AF178CB585 +:102CF00080618CBD8CB580648CBD61E08DE00E94EC +:102D0000AF1761E08BE00E94AF17809167028F5F81 +:102D100080936702CFBFCF9108951F920F920FB695 +:102D20000F9211242F933F938F939F93AF93BF9351 +:102D30008091690290916A02A0916B02B0916C023D +:102D40003091680223E0230F2D3720F40196A11D56 +:102D5000B11D05C026E8230F0296A11DB11D2093C9 +:102D600068028093690290936A02A0936B02B09309 +:102D70006C0280916D0290916E02A0916F02B091F1 +:102D800070020196A11DB11D80936D0290936E0299 +:102D9000A0936F02B0937002BF91AF919F918F91FA +:102DA0003F912F910F900FBE0F901F9018952FB746 +:102DB000F8946091690270916A0280916B0290911F +:102DC0006C022FBF08953FB7F89480916D029091E7 +:102DD0006E02A0916F02B091700226B5A89B05C04B +:102DE0002F3F19F00196A11DB11D3FBF6627782F17 +:102DF000892F9A2F620F711D811D911D42E0660F70 +:102E0000771F881F991F4A95D1F708958F929F9237 +:102E1000AF92BF92CF92DF92EF92FF926B017C0153 +:102E20000E94E3164B015C01C114D104E104F104DA +:102E3000F1F00E9427190E94E316681979098A099E +:102E40009B09683E73408105910570F321E0C21A29 +:102E5000D108E108F10888EE880E83E0981EA11CD5 +:102E6000B11CC114D104E104F10429F7DDCFFF90B6 +:102E7000EF90DF90CF90BF90AF909F908F9008958C +:102E80008230910538F0880F991F880F991F059798 +:102E90000197F1F70895789484B5826084BD84B574 +:102EA000816084BD85B5826085BD85B5816085BD45 +:102EB000EEE6F0E0808181608083E1E8F0E010825E +:102EC000808182608083808181608083E0E8F0E09F +:102ED000808181608083E1EBF0E080818460808389 +:102EE000E0EBF0E0808181608083EAE7F0E08081C0 +:102EF0008460808380818260808380818160808320 +:102F00008081806880831092C1000895833081F0B1 +:102F100028F4813099F08230A1F008958730A9F02B +:102F20008830B9F08430D1F4809180008F7D03C067 +:102F3000809180008F7780938000089584B58F778B +:102F400002C084B58F7D84BD08958091B0008F77D5 +:102F500003C08091B0008F7D8093B0000895CF931F +:102F6000DF9390E0FC01E458FF4F2491FC01E0570F +:102F7000FF4F8491882349F190E0880F991FFC014D +:102F8000E255FF4FA591B4918C559F4FFC01C5911F +:102F9000D4919FB7611108C0F8948C912095822339 +:102FA0008C93888182230AC0623051F4F8948C910A +:102FB000322F309583238C938881822B888304C0A1 +:102FC000F8948C91822B8C939FBFDF91CF910895C1 +:102FD0000F931F93CF93DF931F92CDB7DEB7282FA8 +:102FE00030E0F901E859FF4F8491F901E458FF4FAF +:102FF0001491F901E057FF4F04910023C9F0882391 +:1030000021F069830E9486176981E02FF0E0EE0FBE +:10301000FF1FEC55FF4FA591B4919FB7F8948C9189 +:10302000611103C01095812301C0812B8C939FBF38 +:103030000F90DF91CF911F910F9108951F920F92E2 +:103040000FB60F9211242F938F939F93EF93FF93BB +:10305000E0918102F09182028081E0918702F091FB +:10306000880282FD12C0908180918A028F5F8F73E7 +:1030700020918B02821751F0E0918A02F0E0EF5824 +:10308000FD4F958F80938A0201C08081FF91EF915F +:103090009F918F912F910F900FBE0F901F901895B9 +:1030A0001F920F920FB60F9211242F933F934F93BD +:1030B0005F936F937F938F939F93AF93BF93EF93A0 +:1030C000FF9381E792E00E946319FF91EF91BF9116 +:1030D000AF919F918F917F916F915F914F913F91B0 +:1030E0002F910F900FBE0F901F90189581E792E0DF +:1030F0000E94281921E0892B09F420E0822F0895ED +:10310000109274021092730288EE93E0A0E0B0E097 +:103110008093750290937602A0937702B093780221 +:1031200080EA91E0909372028093710285EC90E0C6 +:1031300090937E0280937D0284EC90E090938002D5 +:1031400080937F0280EC90E09093820280938102D2 +:1031500081EC90E0909384028093830282EC90E073 +:10316000909386028093850286EC90E0909388028B +:103170008093870210928A0210928B0210928C0226 +:1031800010928D020895CF92DF92EF92FF920F93EB +:103190001F93CF93DF937C016A01EB0100E010E005 +:1031A0000C151D0571F06991D701ED91FC9101900D +:1031B000F081E02DC7010995892B19F00F5F1F4F92 +:1031C000EFCFC801DF91CF911F910F91FF90EF904A +:1031D000DF90CF9008956115710581F0DB010D90AE +:1031E0000020E9F7AD0141505109461B570BDC01A6 +:1031F000ED91FC910280F381E02D099480E090E054 +:1032000008956DE871E00C94EB180F931F93CF9322 +:10321000DF93EC010E94EB188C01CE010E94011992 +:10322000800F911FDF91CF911F910F910895089505 +:103230000E944B170E9417190E948106C5E5D9E12B +:103240000E94B9052097E1F30E945519F9CF08951E +:10325000FC01818D228D90E0805C9F4F821B910943 +:103260008F7399270895FC01918D828D981731F005 +:10327000828DE80FF11D858D90E008958FEF9FEF0F +:103280000895FC01918D828D981761F0828DDF0188 +:10329000A80FB11D5D968C91928D9F5F9F73928F49 +:1032A00090E008958FEF9FEF089586E798E1892BCE +:1032B00049F080E090E0892B29F00E947618811176 +:1032C0000C9400000895FC01848DDF01A80FB11D4E +:1032D000A35ABF4F2C91848D90E001968F7399274C +:1032E000848FA689B7892C93A089B1898C91806439 +:1032F0008C93938D848D981306C00288F389E02DFA +:1033000080818F7D80830895CF93DF93EC01888D3A +:103310008823C9F0EA89FB89808185FD05C0A889D9 +:10332000B9898C9186FD0FC00FB607FCF5CF80815F +:1033300085FFF2CFA889B9898C9185FFEDCFCE01A9 +:103340000E946319E7CFDF91CF910895CF92DF926A +:10335000FF920F931F93CF93DF931F92CDB7DEB7EA +:103360006C0181E0D60158968C9358975B969C919E +:103370005B975C968C915C97981307C05096ED9183 +:10338000FC915197808185FD2EC0F601038D10E0E0 +:103390000F5F1F4F0F731127F02EF601848DF81267 +:1033A00011C00FB607FCF9CFD6015096ED91FC91F4 +:1033B0005197808185FFF1CFC60169830E9463190F +:1033C0006981EBCF838DE80FF11DE35AFF4F6083D6 +:1033D000D6015B960C935B975296ED91FC915397B7 +:1033E000808180620CC0D6015696ED91FC91579772 +:1033F00060835096ED91FC91519780818064808329 +:1034000081E090E00F90DF91CF911F910F91FF909D +:10341000DF90CF900895AA1BBB1B51E107C0AA1FE4 +:10342000BB1FA617B70710F0A61BB70B881F991F65 +:103430005A95A9F780959095BC01CD01089597FB09 +:10344000072E16F4009407D077FD09D00E940B1ABE +:1034500007FC05D03EF4909581959F4F0895709597 +:1034600061957F4F0895EE0FFF1F0590F491E02DB9 +:103470000994DC0101C06D9341505040E0F708957C +:04348000F894FFCFEE +:1034840000000E0380000C00010032000000040064 +:103494000200010003004F534320646964206E6FEF +:1034A400742073746172742E00000000006C0200BA +:1034B400000000490100000000E91154014A014FD5 +:1034C400018F009000CE00CF00000000004504886A +:1034D40000D900D703F4008A008B00F700FC000138 +:1034E40001D00009010C01FEFF00003F01000000B3 +:1034F400007108FD07F20E000000002A13880089FD +:10350400122B1681127B148B0084128D000D0A007D +:103514006E616E00696E66006F76660000000000E2 +:0C352400A619C31828194119331984197D +:00000001FF diff --git a/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..49b6f45 --- /dev/null +++ b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex @@ -0,0 +1,887 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C948D160C9486000C941E180C94501869 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00D906801811241FBE42 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E4E8C3 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94351AC83B29 +:10010000D107C9F70E9418190C94401A0C940000EA +:1001100080E00895089580E0089581E008950895AD +:100120008091080190910901019729F41092090129 +:100130001092080106C081E090E09093090180933D +:10014000080180910601909107010C9719F488E04D +:1001500090E002C08CE090E090930701809306014C +:1001600080910A0190910B01A0910C01B0910D01B9 +:10017000C297A105B10529F484E690E0A0E0B0E0C3 +:1001800004C082E390E0A0E0B0E080930A01909385 +:100190000B01A0930C01B0930D01089508950895EB +:1001A000860F911D860F911DFC015687458781E0C2 +:1001B0000895CF93DF93EC018C819D81DC01ED915B +:1001C000FC910480F581E02D6E8109951F86188AC7 +:1001D00081E08A8B1E821B8A1C8A1D8A1E8A1F8AC6 +:1001E00080E0DF91CF910895FC018681089581E040 +:1001F000633009F080E0089581E0623009F080E02A +:100200000895860F911D860F911DFC0185859685A9 +:100210000895FC0187890895EF92FF92CF93DF93B1 +:10022000FC01E7012289223029F16787408B8B810D +:1002300083708330F9F48A8187FF1CC08E81908D92 +:10024000981708F4808F822F90E0DC01AA0FBB1F63 +:10025000A80FB91FAE0FBF1F8A818F7017968C939E +:1002600017978C8118968C93189784E019968C9325 +:100270002F5F228BDF91CF91FF90EF900895EF9247 +:10028000FF920F9302970E940C010F91FF90EF9045 +:100290000895089561E080910E010C94E81760E0E4 +:1002A00080910E010C94E8170F931F93CF93DF9367 +:1002B000EB018981992787FD909597FF03C0919560 +:1002C0008195910960910601709107010E941F1AA2 +:1002D0006F5F7F4F70935A026093590200E010E005 +:1002E0008091590290915A02081719070CF068C0C2 +:1002F0002981332727FD30958091080190910901CC +:100300008217930734F561E0809114010E94E81789 +:1003100080910A0190910B010E94401761E0809149 +:1003200012010E94E81780910A0190910B010E942E +:10033000401760E0809114010E94E81780910A0143 +:1003400090910B010E94401760E0809112010E9481 +:10035000E8172981332727FD309580910801909176 +:1003600009019195819591092817390734F561E0C4 +:10037000809112010E94E81780910A0190910B016F +:100380000E94401761E0809114010E94E81780915B +:100390000A0190910B010E94401760E080911201C8 +:1003A0000E94E81780910A0190910B010E9440176A +:1003B00060E0809114010E94E8170F5F1F4F90CFFB +:1003C0008A81992787FD909597FF03C09195819524 +:1003D000910960910601709107010E941F1A6F5FD9 +:1003E0007F4F709358026093570200E010E08091B5 +:1003F000570290915802081719070CF068C02A811B +:10040000332727FD309580910801909109018217CB +:10041000930734F561E0809110010E94E817809104 +:100420000A0190910B010E94401761E080915B02EC +:100430000E94E81780910A0190910B010E944017D9 +:1004400060E0809110010E94E81780910A0190916C +:100450000B010E94401760E080915B020E94E81748 +:100460002A81332727FD3095809108019091090159 +:100470009195819591092817390734F561E08091AC +:100480005B020E94E81780910A0190910B010E9483 +:10049000401761E0809110010E94E81780910A01E5 +:1004A00090910B010E94401760E080915B020E94D6 +:1004B000E81780910A0190910B010E94401760E0BB +:1004C000809110010E94E8170F5F1F4F90CFDF91BE +:1004D000CF911F910F9108952F923F924F925F926B +:1004E0006F927F928F929F92AF92BF92CF92DF9244 +:1004F000EF92FF920F931F93CF93DF9300D000D022 +:10050000CDB7DEB76C017C836B835A8349834C0182 +:1005100080E1880E911C5601A7E0AA0EB11C11E0E3 +:1005200044E0442E57E0352E3601B2E16B0E711CCB +:1005300063E0262E72E0572E8B819C81892B09F473 +:1005400012C1F60180A1823061F128F4882349F0BC +:10055000813079F0F1CF833041F1843009F44BC020 +:10056000EBCF54828581968190878783528651860E +:1005700010A3AE014D5F5F4FBE016F5F7F4FC5019E +:100580000E944C12882309F4EEC0D6011596ED9115 +:10059000FC911697808191968C9391978181929688 +:1005A0008C93F6017682658220A2D60192968C9178 +:1005B000843081F018F4823079F014C0853081F0F5 +:1005C000813281F4D60191968C9191978250149644 +:1005D0008C9308C0F60113A2D60114963C9202C077 +:1005E000F6018483F60185819681908787838481D3 +:1005F0008287818740A2D60192968C918430B1F097 +:10060000853009F442C0823009F06EC0AE014D5F02 +:100610005F4FBE016F5F7F4FC5010E944C12882360 +:1006200009F4A1C0F601858984A38EC0AE014D5F97 +:100630005F4FBE016F5F7F4FC5010E944C12882340 +:1006400009F491C0D60155968C915597833009F0E5 +:100650007BC056968C915697813009F075C098965C +:100660009C91989757968C91992321F0882309F4AF +:100670006BC003C0823009F067C0F60113A39289F2 +:1006800096A3938997A385A35FC0AE014D5F5F4F8B +:10069000BE016F5F7F4FC5010E944C12882309F491 +:1006A00062C0D60193968C919397882309F44CC02D +:1006B00012968D919C911397009709F445C0DC0127 +:1006C000ED91FC910190F081E02D7401D601959699 +:1006D0000C91959797962C91979796964C91969703 +:1006E00094966C91099530C0F60181A19585992366 +:1006F00019F0913031F023C090E0029797878687F8 +:1007000015872B813C8189819A81782F692FD601A9 +:100710001E964D915C911F9741155105E9F0019688 +:100720002115310541F041505109F601578746879F +:1007300021503109EACF79836A831C821B82F6013A +:1007400086859785892B79F4D60116969C928E9290 +:10075000159790961C92F0CE9A8389833C832B83C5 +:10076000F6011586ECCF0F900F900F900F90DF9150 +:10077000CF911F910F91FF90EF90DF90CF90BF909E +:10078000AF909F908F907F906F905F904F903F9031 +:100790002F9008959FB7F89420916602809164028B +:1007A000213019F48DBB9FBF08958FBF0895CF925C +:1007B000DF92EF92FF920F931F93CF93DF93CDB70A +:1007C000DEB762970FB6F894DEBF0FBECDBF6C01E7 +:1007D000DC0157968C91882369F00E94D716F601A8 +:1007E0000389148925893689601B710B820B930B51 +:1007F00097FF02C0F12C39C0F601838590E09A8BF7 +:10080000898BE12C8E010F5F1F4F9E012F5E3F4FA2 +:1008100042856681848195810E945F0EF82E811148 +:1008200018C029893A892330310598F0D6011D96E0 +:100830008D919C911E97009761F0DC01ED91FC91E8 +:100840000190F081E02D8E010F5F1F4F40E0B60157 +:1008500009950E94D716F601208D620F711D811D2A +:10086000911D638B748B858B968B8F2D62960FB643 +:10087000F894DEBF0FBECDBFDF91CF911F910F91D6 +:10088000FF90EF90DF90CF9008953F924F925F924C +:100890006F927F928F929F92AF92BF92CF92DF9290 +:1008A000EF92FF920F931F93CF93DF93CDB7DEB7F5 +:1008B000EB970FB6F894DEBF0FBECDBF7C01462E7E +:1008C000342E522EDC011496AD90BC9015971696DE +:1008D0008C911697811111C158961C92D501ED91FA +:1008E000FC910190F081E02D60E0C50109956C015B +:1008F000009711F486ED0BC1FC018080918081147A +:10090000910409F4FCC03701F7E06F0E711CDC01A3 +:1009100011967C926E9214965C928E01065D1F4F2A +:1009200028E030E040E060E0F701848195810E949A +:100930005E0D182F8111E7C01AA5D6018D929C92E9 +:10094000D501ED91FC910280F381E02D232D40E053 +:10095000642DC5010995F7018683882309F4D1C068 +:1009600099A99087282F40E060E0848195810E94BA +:100970000B0E982ED501ED91FC91D60114961C9288 +:10098000882361F00480F581E02DD70116966C91E3 +:10099000C5010995F7011682892DB9C00190F08132 +:1009A000E02DD70116966C91C5010995009709F4C1 +:1009B000A1CF133108F012E1FC01548211110FC0D4 +:1009C0004BAC512CEDE2AE2EE1E0BE2E4701F2E041 +:1009D0008F0E911C6E0181E1C80ED11C39C0212FF0 +:1009E00030E08E01065D1F4F40E0D70116966C91F6 +:1009F000169714968D919C9115970E945E0D182F55 +:100A0000811171C0DDCFBA82A9829C828B821E8641 +:100A1000188A1F8619A21AA21BA219A6DF82CE82EB +:100A2000D986C8868D818B878A87DD86CC868E01A4 +:100A30000F5F1F4F252D40E0F7016681848195816E +:100A40000E94AC0DD70152968C91823019F05394CC +:100A50005410D9CFF7018289823009F043C0930145 +:100A600042E06681848195810E94AC0868EE73E063 +:100A700080E090E00E940617D7011F962C911F97E7 +:100A800040E016966C91169714968D919C9115974F +:100A90000E943A0E182F811126C068EE73E080E0A4 +:100AA00090E00E94061740E060E0C7010E94BF117D +:100AB000182F811118C020E040E060E0C7010E94BB +:100AC000951183E391E09A838983AE014F5F5F4F75 +:100AD00060E070E0C7010E94521181E0F701878B4E +:100AE00080E015C011EDD701ED91FC910480F581F6 +:100AF000E02DC7010995812F0AC089ED08C087ED57 +:100B000006C084ED04C0F60191828082ECCFEB96A2 +:100B10000FB6F894DEBF0FBECDBFDF91CF911F910E +:100B20000F91FF90EF90DF90CF90BF90AF909F908C +:100B30008F907F906F905F904F903F90089520919D +:100B40006602222399F03FB7F89420916602213083 +:100B500059F42DB3209364024DB320916502209582 +:100B600024232DBB3FBF02C0309364028CBD9DBDCA +:100B7000089580EE91E00C9459102A9A0895CF932D +:100B8000C82F80E591E00E949F052A98CEBD000005 +:100B90000DB407FEFDCF8EB51EBC00000DB407FEE0 +:100BA000FDCFCEB50E94BD058091660281110E94E5 +:100BB000CA038C2FCF9108951F93CF93DF931F9279 +:100BC000CDB7DEB7182F80E591E069830E949F05BD +:100BD0002A98812F82608EBD69810DB407FEFDCFFA +:100BE0008EB56EBD0DB407FEFDCF8EB50E94BD055E +:100BF00080916602882331F00F90DF91CF911F9191 +:100C00000C94CA030F90DF91CF911F91089588EF44 +:100C10000E94BF05807C8034A1F018F4882301F184 +:100C20000895803819F0803CB9F0089588ED0E944D +:100C3000BF0581FD0BC069EC88ED0E94DC0582E0F8 +:100C40000CC088ED0E94BF0581FDF5CF6BEC88EDEF +:100C50000E94DC0583E001C081E08093AC0108952F +:100C600061ED88ED0E94DC051092AC0108950F93B0 +:100C70001F93CF93DF938C01229A0E94BD050E949F +:100C80005716229A0E94BD05219868E188E80E94C3 +:100C9000DC0560E288E70E94DC0560E088E70E94EE +:100CA000DC05C0E0D0E088E60E94BF05219680FD0B +:100CB00006C0CF3F8FEFD807B1F78FEF1DC061ECB3 +:100CC00088ED0E94DC0560E680ED0E94DC0564E0B2 +:100CD00088EE0E94DC0588EE0E94BF0582FFFBCFF4 +:100CE000C8010E94070660E288EC0E94DC0561E012 +:100CF00080E80E94DC0580E0DF91CF911F910F9189 +:100D0000089561E0809114010E94AF1761E0809125 +:100D100012010E94AF1761E0809110010E94AF178D +:100D200061E080915B020E94AF1761E080910E014B +:100D30000E94AF1780EE91E00E9437068F3F31F49A +:100D400066E171E081E792E00E94051968EC70E0CD +:100D500080E090E00E9406170E94D71668577C4EEC +:100D60008F4F9F4F6093B2017093B3018093B40192 +:100D70009093B5018DEA91E09093C4018093C301F3 +:100D800060E0809114010E94E81760E080911201F8 +:100D90000E94E81760E0809110010E94E81760E06F +:100DA00080915B020E94E81761E080910E010C9433 +:100DB000E81780EE91E00E946A0760EE71E08FEC28 +:100DC00091E00E94E31480EE91E09093BB01809348 +:100DD000BA018DE491E09093B7018093B6018BE660 +:100DE00091E09093B9018093B8011092C9011092DB +:100DF000CA011092CB011092CC011092CD01109239 +:100E0000BD0188E08093BE018CE38093BF01109206 +:100E1000C0011092C10184E08093C20181E08093FF +:100E2000C8011092C7011092C5011092C40110921E +:100E3000C301E6E3F2E080E090E021913191232BC1 +:100E400051F4FC01EE0FFF1FEA5CFD4F86EB91E0D1 +:100E50009183808304C001968031910571F789E305 +:100E600091E09093AE018093AD010895FC01208143 +:100E70002EBDDC019B012150310951F011965C918E +:100E800011970DB407FEFDCF4EB55EBD4D93F3CF68 +:100E9000FB013197E80FF91F0DB407FEFDCF8EB5AA +:100EA000808308958EBD00000DB407FEFDCF8EB582 +:100EB000089580916602882361F09FB7F89420918D +:100EC000660280916402213019F48DBB9FBF0895A2 +:100ED0008FBF0895FC0181E791E0918380831582A3 +:100EE000108681E0818712869F012E5F3F4F3783F6 +:100EF0002683128288E083838CE3848380E090E001 +:100F000041E0DF01A80FB91F1D961C921D971E9688 +:100F10004C931E971F961C921F971C963C932E93E2 +:100F20001B9705968B34910561F7EA58FF4F1082A5 +:100F300081E1809361020895CF92DF92EF92FF9258 +:100F40000F931F93CF93DF931F92CDB7DEB77C0132 +:100F50006623B1F18C01C12CD12CF801EA5AFF4F64 +:100F600080819181009719F1DC01ED91FC91008461 +:100F7000F185E02D698309956981861318C0F60112 +:100F8000BB96EE0FFF1FEE0DFF1D80819181DC01EE +:100F9000ED91FC910480F581E02D0F90DF91CF91D0 +:100FA0001F910F91FF90EF90DF90CF900994BFEFCA +:100FB000CB1ADB0A0E5F1F4FE0E1CE16D10469F6B3 +:100FC00080E00F90DF91CF911F910F91FF90EF90F4 +:100FD000DF90CF90089520E030E041E0FC01E20F87 +:100FE000F31F5585561739F04F5F2B5F3F4F403148 +:100FF000A9F780E00895842F0895EF92FF921F9340 +:10100000CF93DF9300D0CDB7DEB77C01162F67FDFD +:101010005FC0283008F05CC0442331F0DC01159635 +:101020008C91873009F454C060E0C7012A8349835A +:101030000E94EB072A814981882309F449C0E82FDF +:10104000F0E0111123C085E08E9FD0018F9FB00D7D +:101050001124AE0DBF1D442359F081E418968C93E2 +:10106000D70115968C9115978F5F15968C9303C0B9 +:1010700081E018968C9385E08E9FD0018F9FB00DF4 +:101080001124AE0DBF1D18968C9123C0612F67707F +:10109000660F660F660F442361F06064D7011596F2 +:1010A0008C9115978F5F15968C938770687F682B4E +:1010B00003C02770687B622B85E08E9FD0018F9FD5 +:1010C000B00D1124AE0DBF1D18966C93862F01C074 +:1010D00080E00F900F90DF91CF911F91FF90EF90E4 +:1010E0000895CF93DF93EC01662359F00E94EB073C +:1010F000882349F09E0145E0849F200D311D112475 +:10110000C901069602C080E090E0DF91CF9108957A +:10111000CF93DF931F92CDB7DEB749830E9471084A +:101120004981009789F0DC01ED91FC91119730978E +:1011300059F013969C9180E0891731F02081241793 +:1011400031F033968F5FF8CF80E090E001C0CF019F +:101150000F90DF91CF910895EF92FF921F93CF935D +:10116000DF931F92CDB7DEB7162F79012115310518 +:1011700069F049830E947108FC014981009741F0A0 +:101180001283F182E082438380E003C088ED01C0D6 +:1011900086ED0F90DF91CF911F91FF90EF90089512 +:1011A0002A9808951F93CF93DF931F92CDB7DEB790 +:1011B000182F80E591E00E949F050E94D008812FA2 +:1011C0000E94520780E00E94520789830E94BD0559 +:1011D0000E94590789810F90DF91CF911F91089547 +:1011E0001F93CF93DF9300D01F92CDB7DEB7182F98 +:1011F00080E591E06B830E949F050E94D0081260F9 +:1012000019836B816A8362E070E0CE0101960E94CF +:1012100036070E94BD050E9459070F900F900F904E +:10122000DF91CF911F9108958F929F92BF92CF929D +:10123000DF92EF92FF920F931F93CF93DF931F9252 +:10124000CDB7DEB74C01B62E690149830E94710803 +:101250007C014981009709F443C0FC0180819181A0 +:10126000892B09F43FC06B2DC4010E948808F60148 +:10127000918380830097C1F1FC01228126952695F8 +:10128000822F90E0409764F441E050E060E070E02D +:1012900004C0440F551F661F771F2A95D2F702C05E +:1012A00040E050E841505109F801518340836B2DD3 +:1012B00080EE0E94F00888ED0E94D208F701948128 +:1012C000992339F0F401EA58FF4F60816260682B7E +:1012D00002C0682F697F88ED0E94F00880E005C099 +:1012E00086ED03C087ED01C08BED0F90DF91CF91AC +:1012F0001F910F91FF90EF90DF90CF90BF909F9044 +:101300008F9008958F929F92AF92BF92CF92DF926B +:10131000EF92FF920F931F93CF93DF931F92CDB75E +:10132000DEB7A62E890149830E94D7166B017C0186 +:1013300088E8C80E83E1D81EE11CF11C812C912C99 +:10134000B12C20E04981A42A29830E94D7166C1968 +:101350007D098E099F09298197FF2DC06A2D80EF95 +:101360000E94F0080E94D7166C197D098E099F090A +:1013700097FF09C088EC0E94D20887FFF3CF60E88E +:1013800088EC0E94F00888EF0E94D208282F2F7066 +:10139000243019F02E3059F00EC0EFEF8E1A9E0A4D +:1013A0000115110589F28016910671F604C0B394F7 +:1013B000F3E0BF12C9CF822F0F90DF91CF911F9121 +:1013C0000F91FF90EF90DF90CF90BF90AF909F90E4 +:1013D0008F9008959F92AF92BF92CF92DF92EF923B +:1013E000FF920F931F93CF93DF937C01B42E122FA4 +:1013F000AA24A394DC01A60FB11DA60FB11D6D0197 +:1014000086E5C80ED11CC42FD0E0AB96CC0FDD1FF3 +:10141000CE0DDF1DD6018D919C91DC01ED91FC91EB +:101420000280F381E02D202F412F6B2D0995803E06 +:10143000C1F4B1100BC061E088EE0E94F00866E6CE +:1014400070E080E090E00E94061715C088819981C5 +:10145000DC01ED91FC910284F385E02D612F09956B +:101460000AC08D3031F48FEF8A0D833008F042C00E +:1014700017C0811142C0F60180819181DC01ED919C +:10148000FC910190F081E02D202F412F6B2D0995CB +:10149000982EBDE08B130CC08FEF8A0D833050F473 +:1014A00064E670E080E090E00E940617A394B2CF5B +:1014B000882311F1B1100BC061E088EE0E94F008A2 +:1014C00066E670E080E090E00E94061711C0EB2D08 +:1014D000F0E0BB96EE0FFF1FEE0DFF1D80819181A6 +:1014E000DC01ED91FC910284F385E02D612F0995DB +:1014F000892D03C08DE001C080E0DF91CF911F9165 +:101500000F91FF90EF90DF90CF90BF90AF909F90A2 +:1015100008950F931F93CF93DF93D82FC62F8A017F +:1015200080E591E00E949F050E94D0088D2F826087 +:101530000E945207D0E0209721F0BE01C8010E940E +:101540003607C00FD11F0E94BD050E945907CE016A +:10155000DF91CF911F910F9108952F923F924F925B +:101560005F926F927F928F929F92AF92BF92CF9233 +:10157000DF92EF92FF920F931F93CF93DF9300D0F0 +:1015800000D01F92CDB7DEB77D836C835A0169010D +:10159000FB0121808FEF820D803408F06FC00E9424 +:1015A000D7162B013C01F8E84F0EF3E15F1E611CDA +:1015B000711CEC81FD81828180FF02C060E801C066 +:1015C00060E488EE0E94F00820E0312CC114D104C0 +:1015D00009F444C076012C143D0408F47101EA8238 +:1015E000A8016E2D80E10E94890A6E2D88E30E9479 +:1015F000F008EC81FD816081606280EF0E94F0085C +:1016000088EC0E94D20887FFFBCF60E888EC0E943C +:10161000F00888EF0E94D208282F2F70812C912C7F +:101620001982222309F46BC02B830E94D7166419F8 +:101630007509860997092B8197FF61C0263001F152 +:101640002E3009F456C0243049F4FFEF8F1A9F0A58 +:10165000A114B10459F18A149B0441F588EF2B833E +:101660000E94D20885FB882780F9EC81FD81928158 +:1016700080FB90F992832B81822F46C08AED44C073 +:1016800088EF0E94D20885FB882780F991E089279E +:10169000EC81FD81928180FB90F9928390FF02C0E2 +:1016A00060E801C060E488EE0E94F00860E088E332 +:1016B0000E94F008F801608180E10E94F0086A81D0 +:1016C00088E30E94F008EC81FD816081606280EF18 +:1016D0000E94F00888EC0E94D20887FFFBCF60E8E8 +:1016E00088EC0E94F00888EF0E94D208282F2F7003 +:1016F00098CF89818F5F89838330C1F6AFCFCE18B1 +:10170000DF080E0D1F1D62CF0F900F900F900F90EE +:101710000F90DF91CF911F910F91FF90EF90DF908D +:10172000CF90BF90AF909F908F907F906F905F9081 +:101730004F903F902F9008952F923F924F925F923B +:101740006F927F928F929F92AF92BF92CF92DF92D1 +:10175000EF92FF920F931F93CF93DF93CDB7DEB736 +:1017600029970FB6F894DEBF0FBECDBF1C01798755 +:1017700068875B834A836901D9018D909C9011979A +:10178000FB01F181F9831D921C92DB0112968C9171 +:1017900081FF02C060E201C060E188EE0E94F008B3 +:1017A0008E2D90E0A0E0B0E08C839D83AE83BF835C +:1017B000482C2A813B81A885B9854C9160E0C10104 +:1017C0000E948209F82EB6E08B1316C088EF0E94A3 +:1017D000D2088295817091E08927E885F985928108 +:1017E00080FB91F9928391FF02C060E201C060E149 +:1017F00088EE0E94F008DDCF811166C088EC0E945F +:10180000D20882FF5FC080E30E94D208582E90E089 +:101810008816990608F4542CD6018D919C91652C5C +:10182000712CF401E81BF90BCF01F7FF02C080E037 +:1018300090E05301861597050CF45C0180E591E07A +:101840000E949F050E94D00888E00E945207A501CF +:1018500060E070E0C8010E94391AA114B10421F0BF +:10186000B501C8010E9436070A0D1B1D0E94BD0567 +:101870000E94590764E088EC0E94F008D6018D911F +:101880009C911197860D971D8D939C93B9815B1642 +:1018900018F08815990560F088EF0E94D2088295AB +:1018A0008170E885F985928180FB91F992830CC063 +:1018B000EE2009F47ECF6C817D818E819F810E9414 +:1018C000061777CF30EFF32E8F2D29960FB6F894A9 +:1018D000DEBF0FBECDBFDF91CF911F910F91FF9063 +:1018E000EF90DF90CF90BF90AF909F908F907F90C0 +:1018F0006F905F904F903F902F9008952F923F925E +:101900004F925F926F927F928F929F92AF92BF920F +:10191000CF92DF92EF92FF920F931F93CF93DF93BB +:10192000CDB7DEB762970FB6F894DEBF0FBECDBF5E +:101930003C01F42E322E202E5C2D4FA058A4C9A4B9 +:10194000DAA4188A1F861E861D868E01035F1F4F2C +:101950009E01215F3F4F598B0E94140959898111C3 +:1019600094C039822A82EB825C83BE82AD829886E3 +:101970008F82AE014F5F5F4F68E080E20E94890A6C +:101980002D853E854F2D60E1C3010E948209182FED +:1019900081117AC0232C221C2224221CC114D104C0 +:1019A00009F466C0EF85F8898281222009F453C0CA +:1019B00082608283540133243394A114B10409F466 +:1019C00055C05C864B864D855E856F857889E12C98 +:1019D00086019E01255F3F4FC3010E949C0B182F7B +:1019E0008630B1F42F85388988EF298B3A8B0E9495 +:1019F000D20885FB882780F9832529893A89D9016E +:101A000012969C91129780FB91F912969C93D5CFD8 +:101A100081113AC0EBA5FCA53097A1F00190F081AF +:101A2000E02D0190F081E02DC4018A199B099A876D +:101A300089876B857C859E01275F3F4FA6018BA51B +:101A40009CA509958B859C85A81AB90A84159505CE +:101A500008F0B3CF0DC0816082834D855E8586011D +:101A60009201BF01C3010E94AD0A182F11110CC0D1 +:101A70002D853E85222011F060EA01C060E84F2DDF +:101A8000C3010E94820901C0812F62960FB6F894AB +:101A9000DEBF0FBECDBFDF91CF911F910F91FF90A1 +:101AA000EF90DF90CF90BF90AF909F908F907F90FE +:101AB0006F905F904F903F902F9008958F929F92DC +:101AC000AF92BF92CF92EF920F931F931F921F92EC +:101AD0001F930F933F932F934901A12CB12CCC243A +:101AE000C394E12C06E020E80E947E0C0F900F903A +:101AF0000F900F900F900F901F910F91EF90CF903C +:101B0000BF90AF909F908F9008958F929F92AF92C9 +:101B1000BF92CF92EF92FF920F931F921F92FF926C +:101B2000EF923F932F934901A12CB12C52E0C52E87 +:101B3000E02E06E020E80E947E0C0F900F900F90A0 +:101B40000F900F900F900F91FF90EF90CF90BF905C +:101B5000AF909F908F9008953F924F925F926F92B7 +:101B60007F928F929F92AF92BF92CF92DF92EF922D +:101B7000FF920F931F93CF93DF93CDB7DEB7C0547F +:101B8000D1090FB6F894DEBF0FBECDBF3C01562E73 +:101B9000442E322EB02ECE0101966C017C01022F14 +:101BA00029E030E0C3010E94850D81111BC08B80AC +:101BB0009C801F93BF92DF92CF921F9280E48F93FD +:101BC000A12CB12C62E0C62EE32C06E020E8442DC7 +:101BD000652DC3010E947E0C0F900F900F900F9007 +:101BE0000F900F90C05CDF4F0FB6F894DEBF0FBEB2 +:101BF000CDBFDF91CF911F910F91FF90EF90DF90BC +:101C0000CF90BF90AF909F908F907F906F905F909C +:101C10004F903F9008958F929F92AF92BF92CF9234 +:101C2000EF920F93CF931F921F921F921F921F92BA +:101C30001F92812C912CA12CB12CC12CE22E05E0FD +:101C400020E00E947E0CC82F6CE271E080E090E002 +:101C50000E9406170F900F900F900F900F900F900B +:101C60008C2FCF910F91EF90CF90BF90AF909F901E +:101C70008F9008958F929F92AF92BF92CF92EF92E2 +:101C80000F931F921F921F921F921F921F92812CDF +:101C9000912CA12CB12CC12CE22E09E020E00E9455 +:101CA0007E0C0F900F900F900F900F900F900F9150 +:101CB000EF90CF90BF90AF909F908F9008958F92AC +:101CC0009F92AF92BF92CF92DF92EF920F931F93AA +:101CD000CF93DF9300D000D0CDB7DEB76C015901B0 +:101CE00048011C821B821A8219828E010F5F1F4FCE +:101CF0009E012D5F3F4F0E941409811109C0498147 +:101D00005A816B817C8184019501C6010E949C0BE4 +:101D10000F900F900F900F90DF91CF911F910F9127 +:101D2000EF90DF90CF90BF90AF909F908F900895ED +:101D3000CF92DF92FF920F931F93CF93DF9300D048 +:101D4000CDB7DEB76C01662309F442C0062F10E060 +:101D500085E0689FB0011124F601E60FF71F80852A +:101D6000282F277086FF19C031E0E5E0FE2EF6012E +:101D7000F39EE00DF11D112480858695869586954C +:101D800087708217E1F03F5F303188F3F60185817B +:101D9000821303C02150F601258385E0809FF00166 +:101DA000819FF00D1124EC0DFD1D108681E08187CF +:101DB000128682E0C80ED11CD782C68209C0632F6A +:101DC000C6012A8339830E94980E2A813981CFCF98 +:101DD0000F900F90DF91CF911F910F91FF90DF90A7 +:101DE000CF900895CF93DF93EC016134A1F4FC010F +:101DF000855B9F4F41E09E012E5F3F4F15864687D2 +:101E00001786348723873596E817F907B9F71D82B7 +:101E1000DF91CF9108950E94EB07682FCE01DF91EB +:101E2000CF910C94980E0F931F93CF93DF93EC01F7 +:101E3000022FCA3F8FEFD80711F486ED29C08E819B +:101E40009F81892B01F12A87242F40E0CE010E9437 +:101E5000FD07182F8823C9F0682FCE010E94710852 +:101E6000009759F3FC010483212F40E060E0CE018C +:101E70000E940B0E082F882351F0612FCE010E9483 +:101E8000F20E802F05C087ED03C084ED01C080E015 +:101E9000DF91CF911F910F9108952F923F924F9212 +:101EA0005F926F927F928F929F92AF92BF92CF92EA +:101EB000DF92EF92FF920F931F93CF93DF93CDB7F3 +:101EC000DEB766970FB6F894DEBF0FBECDBF7C01BC +:101ED000862E742E922E1B8A88E08C8B8CE38D8B41 +:101EE000D701ED91FC910190F081E02D60E0C701F8 +:101EF00009956C01009709F4ABC0FC01A080B1808A +:101F0000CE0143969183808394828E010F5F1F4F91 +:101F100022E130E040E060E0C7010E945E0DD601A2 +:101F2000AD92BC928111ACC029843A844B845C840C +:101F3000BD81BE8B1E815701612C6501E6E5CE0E89 +:101F4000D11CD6018D919C91009789F1DC01ED9116 +:101F5000FC910084F185E02D0995811128C0F601DE +:101F600080819181DC01ED91FC910088F189E02D67 +:101F7000612F09958823D9F0F60180819181DC01D8 +:101F8000ED91FC910484F585E02DA201B101099544 +:101F9000811160C0F60180819181DC01ED91FC919D +:101FA0000684F785E02D6E890995811153C06394ED +:101FB000B2E0AB0EB11CE0E16E12BFCF5701612C55 +:101FC0006501F6E5CF0ED11CD6018D919C9100974D +:101FD00089F1DC01ED91FC910084F185E02D0995FA +:101FE000811128C0F60180819181DC01ED91FC9185 +:101FF0000088F189E02D612F09958823B1F1F60160 +:1020000080819181DC01ED91FC910484F585E02DC6 +:10201000A201B101099581110DC0F6018081918164 +:10202000DC01ED91FC910684F785E02D6E89099520 +:102030008823D9F06394B2E0AB0EB11CE0E16E12DC +:10204000BFCF292D472D682DC7010E94130F18C03F +:1020500086ED16C0092D272D482D662DC7010E943B +:10206000EA09813D09F4A3CF0BC0092D272D482D86 +:10207000662DC7010E94EA09982F977F913DD1F202 +:1020800066960FB6F894DEBF0FBECDBFDF91CF913D +:102090001F910F91FF90EF90DF90CF90BF90AF9086 +:1020A0009F908F907F906F905F904F903F902F9078 +:1020B0000895FF920F931F93CF93DF93EC0119992B +:1020C0000EC088EC0E94D20885FF05C0CE010E9498 +:1020D000070660E201C060E088EC0E94F008809191 +:1020E000AC01813051F058F0823029F0833039F55D +:1020F000FF24F3940DC0F12C0BC083E106C0809146 +:102100006102807F8031D9F081E18093610217C044 +:1021100080916102807F803199F40E94D7166853C4 +:102120007F4F8F4F9F4F60935D0270935E0280934D +:102130005F029093600280E28093610201C0F12C03 +:1021400000E010E0FE01E00FF11FEA5AFF4F80812E +:102150009181009739F0DC01ED91FC910680F781C7 +:10216000E02D09950E5F1F4F0032110559F7809140 +:102170006102803409F446C070F4803269F1803322 +:10218000D9F1813109F088C0FE01EA58FF4F108271 +:1021900000E010E00AC0813509F45AC0803809F423 +:1021A0006AC0803509F078C03CC0FE01E00FF11F25 +:1021B000EA5AFF4F80819181009739F0DC01ED915F +:1021C000FC910480F581E02D09950E5F1F4F0032D0 +:1021D000110559F782E15EC00E94D71600915D0299 +:1021E00010915E0220915F0230916002601B710BC2 +:1021F000820B930B97FD50C061E088EE0E94F008BF +:1022000080E448C088EE0E94D20880FD45C088ED79 +:102210000E94D208682F686088ED0E94F00880E56F +:1022200039C088EC0E94D20886FF36C081E58093D1 +:1022300061020E94D7166C5E7F4F8F4F9F4F609355 +:102240005D0270935E0280935F029093600224C0EF +:102250000E94D71600915D0210915E0220915F02EC +:1022600030916002601B710B820B930B97FD14C0C1 +:1022700080E8809361022F2D40E060E0CE010E9453 +:102280004D0F882331F0823D39F08093620280EA5D +:1022900001C080E980936102DF91CF911F910F917E +:1022A000FF9008958F929F92AF92BF92CF92EF923C +:1022B0000F93CF93DF93CDB7DEB7C054D1090FB6DC +:1022C000F894DEBF0FBECDBF5F934F939E012F5F8B +:1022D0003F4F3F932F931F9220E42F9320E8822EAD +:1022E000912C5B0132E2C32EE12C06E021E840E0B4 +:1022F000FC016681848195810E947E0C0F900F9075 +:102300000F900F900F900F90C05CDF4F0FB6F894B6 +:10231000DEBF0FBECDBFDF91CF910F91EF90CF9079 +:10232000BF90AF909F908F9008958F929F92AF92A1 +:10233000BF92CF92EF920F93A62EB12C1F921F92B5 +:102340001F921F921F921F92812C912CC22EE42E5D +:102350000AE021E240E0FC016681848195810E94CF +:102360007E0C0F900F900F900F900F900F900F9189 +:10237000EF90CF90BF90AF909F908F9008958F92E5 +:102380009F92AF92BF92CF92EF920F93A62EB12C55 +:102390001F921F921F921F921F921F92812C912CAD +:1023A000C12CE42E0BE021E240E0FC016681848137 +:1023B00095810E947E0C0F900F900F900F900F90C0 +:1023C0000F900F91EF90CF90BF90AF909F908F9014 +:1023D00008950F931F93CF93DF93EC012A8121700F +:1023E000F8018081982F9170291771F0E881F981A7 +:1023F00080FF04C00680F781E02D03C00480F581D2 +:10240000E02DB801CE0109952A8126952170F801A9 +:10241000808181FB992790F9291771F0E881F98172 +:1024200081FF04C00284F385E02D03C00084F185A0 +:10243000E02DB801CE0109952A8122FB222720F93F +:10244000F801808182FB992790F9291771F0E881C2 +:10245000F98182FF04C00684F785E02D03C004845F +:10246000F585E02DB801CE010995F8018181811132 +:1024700003C08281882341F0E881F9810280F381E1 +:10248000E02DB801CE010995F80180818A83DF91A2 +:10249000CF911F910F910895CF93DF93FC01EA0133 +:1024A00080819181892B21F580E028C088819981E4 +:1024B000892BD1F3DB018D919C91DC015C9123810F +:1024C00030E0241B310980819181820F931FDC0150 +:1024D0005C9382818150828388819981019799835D +:1024E0008883DB018D919C91119701968D939C932C +:1024F00042814111DBCF8381828381E0DF91CF91E3 +:102500000895FC018285089581E0693009F080E03A +:102510000895CF93DF93EC018A819B81DC01ED91DB +:10252000FC910480F581E02D6A8509958A858134C6 +:1025300039F4EA81FB81EA58FF4F8081846080830F +:102540001A861B861C861D861E861F86188A80E0BA +:10255000DF91CF9108958F929F92AF92BF92CF92C9 +:10256000EF920F93A42EB12CB22A1F921F921F92AA +:102570001F921F921F92812C912CC12CE62E01E0FC +:1025800023E240E0FC016285828193810E947E0CFF +:102590000F900F900F900F900F900F900F91EF9062 +:1025A000CF90BF90AF909F908F9008958F929F9201 +:1025B000AF92BF92CF92EF920F93A62EB12C1F92A3 +:1025C0001F923F932F935F934F934A01C12CE12CAD +:1025D00000E023EA40E0FC016285828193810E9451 +:1025E0007E0C0F900F900F900F900F900F900F9107 +:1025F000EF90CF90BF90AF909F908F9008958F9263 +:102600009F92AF92BF92CF92EF920F93A42EB12CD4 +:10261000B22A1F921F921F921F921F921F92812C0B +:10262000912CC12CE62E03E023E240E0FC01628500 +:10263000828193810E947E0C0F900F900F900F90DB +:102640000F900F900F91EF90CF90BF90AF909F9011 +:102650008F9008952F923F924F925F926F927F9248 +:102660008F929F92AF92BF92CF92DF92EF92FF92A2 +:102670000F931F93CF93DF93CDB7DEB7E9970FB6D4 +:10268000F894DEBF0FBECDBF3C01362E242EDC01F8 +:102690001296ED90FC9013971A968C91811103C1BC +:1026A000D701ED91FC910190F081E02D60E0C70130 +:1026B00029AF09956C0129AD009709F4F6C0FC011A +:1026C000A080B180A114B10409F4F1C04301F4E089 +:1026D0008F0E911CDC0111969C928E9214962C9375 +:1026E000FE0131962F018F0128E030E040E060E0EC +:1026F000D30112968D919C9113970E945E0DF60165 +:1027000014828111DAC019818D81893009F0D1C01C +:10271000D701ED91FC910280F381E02D222D41E063 +:10272000632DC7010995F3018287882309F4C3C08B +:1027300098859583282F40E060E0828193810E94F4 +:102740000B0E082F882391F0D601AD92BC92D701D1 +:10275000ED91FC910480F581E02DD3011A966C91E6 +:10276000C7010995F3011286102FABC0113208F092 +:1027700010E2D601AD92BC9211110BC0940142E05F +:10278000F3016285828193810E94AC08811198C017 +:1027900011C0212F30E0820140E0D3011A966C91E4 +:1027A0001A9712968D919C9113970E945E0D81113C +:1027B00087C0E4CF1F921F925F924F921F9288E0D2 +:1027C0008F9388E0882E912CA12CB12C99E2C92EF0 +:1027D000E12C06E020EA40E0F301628582819381EA +:1027E0000E947E0C182F0F900F900F900F900F905B +:1027F0000F90811166C08B81D3011B968C931B9720 +:10280000720100E028E030E040E01A966C911A97DF +:1028100012968D919C9113970E94850D811150C045 +:102820002B813C8140E0F3016285828193810E948B +:10283000850D811145C0298130E0CE0181967C0152 +:1028400040E0D3011A966C911A9712968D919C9143 +:1028500013970E94850D811133C02E8140E0F30152 +:102860006285828193810E943A0E811129C001E024 +:10287000D3011B968C911B97801740F020E0402FCE +:1028800068E0C3010E94FF120F5FF2CF1296ED9134 +:10289000FC911397EA58FF4F80818460808381E028 +:1028A00050968C930EC019ED0CC016ED0AC017EDB2 +:1028B00008C011ED06C014ED04C0F601B182A0827B +:1028C000182F812FE9960FB6F894DEBF0FBECDBF4B +:1028D000DF91CF911F910F91FF90EF90DF90CF90FC +:1028E000BF90AF909F908F907F906F905F904F9030 +:1028F0003F902F900895BF92CF92DF92EF92FF9278 +:102900000F931F93CF93DF9300D000D0CDB7DEB7E6 +:102910007C01B62E19821A821B821C8220E0462F6F +:1029200061E10E94AB1220E04B2D60E1C7010E94E3 +:10293000AB1220E04B2D64E0C7010E94FF1223E0A0 +:10294000C22ED12C9E012F5F3F4F44E050E06B2DF3 +:10295000C7010E94D612882301F120E04B2D64E1CB +:10296000C7010E94AB1220E04B2D60E1C7010E941D +:10297000AB1264E170E080E090E00E9406170F90D7 +:102980000F900F900F90DF91CF911F910F91FF90BB +:10299000EF90DF90CF90BF90089509811A812B812D +:1029A0003C811D7F0330114020413105B1F264E6C6 +:1029B00070E080E090E00E94061781E0C81AD1081C +:1029C00009F0C0CFCACFCF93DF93FC018BE791E032 +:1029D000918380837383628312861386148615869F +:1029E00016861786108A148288E085839CE3968376 +:1029F00091E09783808784E0818761157105B9F044 +:102A0000CB01A0E0B0E0EC01CA5ADF4F2881398148 +:102A1000232B41F49B96AA0FBB1FA60FB71FED9364 +:102A2000FC9305C011960296A031B10561F7DF91C4 +:102A3000CF910895DF92EF92FF920F931F93CF9360 +:102A4000DF93EC01D62E7A01FA01008111812281F7 +:102A500033810130F3E01F07F1E02F073105D1F09A +:102A600060F40115E1E01E072E07310571F1013018 +:102A700011402140310571F062C0033081E0180738 +:102A800080E128073105E1F1033013402041310591 +:102A9000B9F155C080916302811151C020E04D2DE4 +:102AA00061E1CE010E94AB1220E04D2D60E1CE012C +:102AB0000E94AB1220E04D2D64E0CE010E94FF1277 +:102AC00081E08093630281EB3BC020E0462F61E10F +:102AD000CE010E94AB1220E04D2D60E1CE010E949C +:102AE000AB12109263026A8567708D2D8770660F36 +:102AF000660F660F682B8A819B810E949C071FC00E +:102B000020E04D2D64E1CE010E94AB1220E04D2D5E +:102B100060E1CE010E94AB1264E170E080E090E0E1 +:102B20000E9406176A85F70121812695217067703A +:102B30004D2D8A819B810E944D0F1092630280E08F +:102B4000DF91CF911F910F91FF90EF90DF9008954B +:102B5000CF92DF92EF920F931F93CF93DF93CDB776 +:102B6000DEB72E970FB6F894DEBF0FBECDBF6C0157 +:102B700081E090E09E878D87E12C8E010F5F1F4FD3 +:102B80009E01235F3F4F41E0F60162858281938180 +:102B90000E945F0E811151C002E011E08981802303 +:102BA000D1F019861A861B861C869E01275F3F4F2F +:102BB00044E050E0612FC6010E94D61281110BC083 +:102BC000AE01475F5F4F612FC6010E941A15813B1E +:102BD00099F1811132C0000F1F5F1830F9F611E032 +:102BE000F6018385811740F119861A861B861C869B +:102BF0009E01275F3F4F44E050E0612FC6010E94D5 +:102C0000D612811117C089859A858770917081309D +:102C1000914081F48B859C8581609C878B87AE0178 +:102C2000475F5F4F612FC6010E941A15813B21F05B +:102C3000811103C01F5FD4CF80E02E960FB6F894A9 +:102C4000DEBF0FBECDBFDF91CF911F910F91EF90EF +:102C5000DF90CF9008950F931F93CF93DF93EC01F4 +:102C600088898823F1F00E94D7160C851D852E8552 +:102C70003F85601B710B820B930B97FD0FC0CE013C +:102C80000E94A815182F0E94D7166C597F4F8F4F9E +:102C90009F4F6C877D878E879F8701C010E0812FB3 +:102CA00001C080E0DF91CF911F910F910895CF93E4 +:102CB000CFB7F89480916702811127C0EAE9F0E06C +:102CC0008491E6E8F0E09491E82FF0E0EE0FFF1F2A +:102CD000E255FF4FA591B4918C91892321F461E0D5 +:102CE0008AE00E94E81761E08AE00E94AF178CB585 +:102CF00080618CBD8CB580648CBD61E08DE00E94EC +:102D0000AF1761E08BE00E94AF17809167028F5F81 +:102D100080936702CFBFCF9108951F920F920FB695 +:102D20000F9211242F933F938F939F93AF93BF9351 +:102D30008091690290916A02A0916B02B0916C023D +:102D40003091680223E0230F2D3720F40196A11D56 +:102D5000B11D05C026E8230F0296A11DB11D2093C9 +:102D600068028093690290936A02A0936B02B09309 +:102D70006C0280916D0290916E02A0916F02B091F1 +:102D800070020196A11DB11D80936D0290936E0299 +:102D9000A0936F02B0937002BF91AF919F918F91FA +:102DA0003F912F910F900FBE0F901F9018952FB746 +:102DB000F8946091690270916A0280916B0290911F +:102DC0006C022FBF08953FB7F89480916D029091E7 +:102DD0006E02A0916F02B091700226B5A89B05C04B +:102DE0002F3F19F00196A11DB11D3FBF6627782F17 +:102DF000892F9A2F620F711D811D911D42E0660F70 +:102E0000771F881F991F4A95D1F708958F929F9237 +:102E1000AF92BF92CF92DF92EF92FF926B017C0153 +:102E20000E94E3164B015C01C114D104E104F104DA +:102E3000F1F00E9427190E94E316681979098A099E +:102E40009B09683E73408105910570F321E0C21A29 +:102E5000D108E108F10888EE880E83E0981EA11CD5 +:102E6000B11CC114D104E104F10429F7DDCFFF90B6 +:102E7000EF90DF90CF90BF90AF909F908F9008958C +:102E80008230910538F0880F991F880F991F059798 +:102E90000197F1F70895789484B5826084BD84B574 +:102EA000816084BD85B5826085BD85B5816085BD45 +:102EB000EEE6F0E0808181608083E1E8F0E010825E +:102EC000808182608083808181608083E0E8F0E09F +:102ED000808181608083E1EBF0E080818460808389 +:102EE000E0EBF0E0808181608083EAE7F0E08081C0 +:102EF0008460808380818260808380818160808320 +:102F00008081806880831092C1000895833081F0B1 +:102F100028F4813099F08230A1F008958730A9F02B +:102F20008830B9F08430D1F4809180008F7D03C067 +:102F3000809180008F7780938000089584B58F778B +:102F400002C084B58F7D84BD08958091B0008F77D5 +:102F500003C08091B0008F7D8093B0000895CF931F +:102F6000DF9390E0FC01E458FF4F2491FC01E0570F +:102F7000FF4F8491882349F190E0880F991FFC014D +:102F8000E255FF4FA591B4918C559F4FFC01C5911F +:102F9000D4919FB7611108C0F8948C912095822339 +:102FA0008C93888182230AC0623051F4F8948C910A +:102FB000322F309583238C938881822B888304C0A1 +:102FC000F8948C91822B8C939FBFDF91CF910895C1 +:102FD0000F931F93CF93DF931F92CDB7DEB7282FA8 +:102FE00030E0F901E859FF4F8491F901E458FF4FAF +:102FF0001491F901E057FF4F04910023C9F0882391 +:1030000021F069830E9486176981E02FF0E0EE0FBE +:10301000FF1FEC55FF4FA591B4919FB7F8948C9189 +:10302000611103C01095812301C0812B8C939FBF38 +:103030000F90DF91CF911F910F9108951F920F92E2 +:103040000FB60F9211242F938F939F93EF93FF93BB +:10305000E0918102F09182028081E0918702F091FB +:10306000880282FD12C0908180918A028F5F8F73E7 +:1030700020918B02821751F0E0918A02F0E0EF5824 +:10308000FD4F958F80938A0201C08081FF91EF915F +:103090009F918F912F910F900FBE0F901F901895B9 +:1030A0001F920F920FB60F9211242F933F934F93BD +:1030B0005F936F937F938F939F93AF93BF93EF93A0 +:1030C000FF9381E792E00E946319FF91EF91BF9116 +:1030D000AF919F918F917F916F915F914F913F91B0 +:1030E0002F910F900FBE0F901F90189581E792E0DF +:1030F0000E94281921E0892B09F420E0822F0895ED +:10310000109274021092730288EE93E0A0E0B0E097 +:103110008093750290937602A0937702B093780221 +:1031200080EA91E0909372028093710285EC90E0C6 +:1031300090937E0280937D0284EC90E090938002D5 +:1031400080937F0280EC90E09093820280938102D2 +:1031500081EC90E0909384028093830282EC90E073 +:10316000909386028093850286EC90E0909388028B +:103170008093870210928A0210928B0210928C0226 +:1031800010928D020895CF92DF92EF92FF920F93EB +:103190001F93CF93DF937C016A01EB0100E010E005 +:1031A0000C151D0571F06991D701ED91FC9101900D +:1031B000F081E02DC7010995892B19F00F5F1F4F92 +:1031C000EFCFC801DF91CF911F910F91FF90EF904A +:1031D000DF90CF9008956115710581F0DB010D90AE +:1031E0000020E9F7AD0141505109461B570BDC01A6 +:1031F000ED91FC910280F381E02D099480E090E054 +:1032000008956DE871E00C94EB180F931F93CF9322 +:10321000DF93EC010E94EB188C01CE010E94011992 +:10322000800F911FDF91CF911F910F910895089505 +:103230000E944B170E9417190E948106C5E5D9E12B +:103240000E94B9052097E1F30E945519F9CF08951E +:10325000FC01818D228D90E0805C9F4F821B910943 +:103260008F7399270895FC01918D828D981731F005 +:10327000828DE80FF11D858D90E008958FEF9FEF0F +:103280000895FC01918D828D981761F0828DDF0188 +:10329000A80FB11D5D968C91928D9F5F9F73928F49 +:1032A00090E008958FEF9FEF089586E798E1892BCE +:1032B00049F080E090E0892B29F00E947618811176 +:1032C0000C9400000895FC01848DDF01A80FB11D4E +:1032D000A35ABF4F2C91848D90E001968F7399274C +:1032E000848FA689B7892C93A089B1898C91806439 +:1032F0008C93938D848D981306C00288F389E02DFA +:1033000080818F7D80830895CF93DF93EC01888D3A +:103310008823C9F0EA89FB89808185FD05C0A889D9 +:10332000B9898C9186FD0FC00FB607FCF5CF80815F +:1033300085FFF2CFA889B9898C9185FFEDCFCE01A9 +:103340000E946319E7CFDF91CF910895CF92DF926A +:10335000FF920F931F93CF93DF931F92CDB7DEB7EA +:103360006C0181E0D60158968C9358975B969C919E +:103370005B975C968C915C97981307C05096ED9183 +:10338000FC915197808185FD2EC0F601038D10E0E0 +:103390000F5F1F4F0F731127F02EF601848DF81267 +:1033A00011C00FB607FCF9CFD6015096ED91FC91F4 +:1033B0005197808185FFF1CFC60169830E9463190F +:1033C0006981EBCF838DE80FF11DE35AFF4F6083D6 +:1033D000D6015B960C935B975296ED91FC915397B7 +:1033E000808180620CC0D6015696ED91FC91579772 +:1033F00060835096ED91FC91519780818064808329 +:1034000081E090E00F90DF91CF911F910F91FF909D +:10341000DF90CF900895AA1BBB1B51E107C0AA1FE4 +:10342000BB1FA617B70710F0A61BB70B881F991F65 +:103430005A95A9F780959095BC01CD01089597FB09 +:10344000072E16F4009407D077FD09D00E940B1ABE +:1034500007FC05D03EF4909581959F4F0895709597 +:1034600061957F4F0895EE0FFF1F0590F491E02DB9 +:103470000994DC0101C06D9341505040E0F708957C +:04348000F894FFCFEE +:1034840000000E0380000C00010032000000040064 +:103494000200010003004F534320646964206E6FEF +:1034A400742073746172742E00000000006C0200BA +:1034B400000000490100000000E91154014A014FD5 +:1034C400018F009000CE00CF00000000004504886A +:1034D40000D900D703F4008A008B00F700FC000138 +:1034E40001D00009010C01FEFF00003F01000000B3 +:1034F400007108FD07F20E000000002A13880089FD +:10350400122B1681127B148B0084128D000D0A007D +:103514006E616E00696E66006F76660000000000E2 +:0C352400A619C31828194119331984197D +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:0400000300007E007B +:00000001FF diff --git a/USB Mouse Interface/arduino/USBMouseInterface.zip b/USB Mouse Interface/arduino/USBMouseInterface.zip new file mode 100644 index 0000000000000000000000000000000000000000..d9cdd92226cae693b2f68cf728c1d8d3c931ed11 GIT binary patch literal 33463 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 +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include +#endif + + + +// pin assignments + +int XMOVE = 3; +int XDIR = 1; +int YMOVE = 2; +int YDIR = 0; +int CLICKPIN = 4; +long XDELAY; +long YDELAY; +long MOVEMENTBASE = 20; +int MOVEMENTFACTORX = 0; +int MOVEMENTFACTORY = 0; +int MOVEMENTTHRESHOLD = 0; +int MOVEMENTDENOM = 8; + +class MouseRptParser : public MouseReportParser +{ + protected: + void OnMouseMove (MOUSEINFO *mi); + void OnLeftButtonUp (MOUSEINFO *mi); + void OnLeftButtonDown (MOUSEINFO *mi); + void OnRightButtonUp (MOUSEINFO *mi); + void OnRightButtonDown (MOUSEINFO *mi); + void OnMiddleButtonUp (MOUSEINFO *mi); + void OnMiddleButtonDown (MOUSEINFO *mi); +}; +void MouseRptParser::OnMouseMove(MOUSEINFO *mi) +{ + + // XDELAY = MOVEMENTBASE + (1 - (abs(mi->dX) / 255.000)) * MOVEMENTFACTOR; + // YDELAY = MOVEMENTBASE + (1 - (abs(mi->dY) / 127.000)) * MOVEMENTFACTOR; + // Serial.print("dx="); + // Serial.println(XDELAY); + // Serial.print(" dy="); + // Serial.println(YDELAY); + // delayMicroseconds(XDELAY); + + + MOVEMENTFACTORX = 1 + (abs(mi->dX)) / MOVEMENTDENOM; + //Serial.println(MOVEMENTFACTOR); + for (int i = 0; i < MOVEMENTFACTORX; i++) { + + if (mi->dX > MOVEMENTTHRESHOLD) { + + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + + } + if (mi->dX < -1 * MOVEMENTTHRESHOLD) { + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + + } + } + MOVEMENTFACTORY = 1 + (abs(mi->dY)) / MOVEMENTDENOM; + for (int i = 0; i < MOVEMENTFACTORY; i++) { + if (mi->dY > MOVEMENTTHRESHOLD) { + + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + + } + + if (mi->dY < -1 * MOVEMENTTHRESHOLD) { + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + + } + + } + /* + XDIR = XMOVE = LOW + + if X > 0 + XMOVE HIGH + delay + XDIR HIGH + delay + XMOVE LOW + delay + XDIR LOW + + else if X < 0 + XDIR HIGH + delay + XMOVE HIGH + delay + XDIR LOW + delay + XMOVE LOW + + + + + + */ + + + +}; +void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi) +{ + // Serial.println("L Butt Up"); + digitalWrite(CLICKPIN, HIGH); +}; +void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi) +{ + // Serial.println("L Butt Dn"); + digitalWrite(CLICKPIN, LOW); +}; +void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi) +{ + // Serial.println("R Butt Up"); +}; +void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi) +{ + + if (MOVEMENTBASE < 200) { + MOVEMENTBASE += 20; + } else { + MOVEMENTBASE = 0; + } + + // Serial.println("R Butt Dn"); +}; +void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi) +{ + // Serial.println("M Butt Up"); +}; +void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi) +{ + // Serial.println("M Butt Dn"); +}; + +USB Usb; +USBHub Hub(&Usb); +HIDBoot HidMouse(&Usb); + +uint32_t next_time; + +MouseRptParser Prs; + +void setup() +{ + + pinMode(XMOVE, OUTPUT); + pinMode(XDIR, OUTPUT); + pinMode(YMOVE, OUTPUT); + pinMode(YDIR, OUTPUT); + pinMode(CLICKPIN, OUTPUT); + + + + /* Serial.begin( 115200 ); + #if !defined(__MIPSEL__) + while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection + #endif + Serial.println("Start"); + */ + if (Usb.Init() == -1) + Serial.println("OSC did not start."); + + delay( 200 ); + + next_time = millis() + 5000; + + HidMouse.SetReportParser(0, (HIDReportParser*)&Prs); + + + + digitalWrite(XMOVE, LOW); + digitalWrite(XDIR, LOW); + digitalWrite(YMOVE, LOW); + digitalWrite(YDIR, LOW); + digitalWrite(CLICKPIN, HIGH); + + + +} + +void loop() +{ + Usb.Task(); +} + diff --git a/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex new file mode 100644 index 0000000..ec8a2a3 --- /dev/null +++ b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex @@ -0,0 +1,849 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C946E160C9486000C94FF170C943118C7 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00BA06611811241FBE80 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E6E4C5 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94161AC83B48 +:10010000D107C9F70E94F9180C94211A0C94000029 +:1001100080E00895089580E0089581E008950895AD +:1001200080910A0190910B01A0910C01B0910D01F9 +:10013000843F21E09207A105B10524F4C296A11DD8 +:10014000B11D04C082E390E0A0E0B0E080930A011A +:1001500090930B01A0930C01B0930D0108950895A5 +:100160000895860F911D860F911DFC0156874587C6 +:1001700081E00895CF93DF93EC018C819D81DC01B8 +:10018000ED91FC910480F581E02D6E8109951F862B +:10019000188A81E08A8B1E821B8A1C8A1D8A1E8A0D +:1001A0001F8A80E0DF91CF910895FC018681089538 +:1001B00081E0633009F080E0089581E0623009F069 +:1001C00080E00895860F911D860F911DFC018585A5 +:1001D00096850895FC0187890895EF92FF92CF9349 +:1001E000DF93FC01E7012289223029F16787408BE8 +:1001F0008B8183708330F9F48A8187FF1CC08E81E4 +:10020000908D981708F4808F822F90E0DC01AA0F60 +:10021000BB1FA80FB91FAE0FBF1F8A818F70179623 +:100220008C9317978C8118968C93189784E0199665 +:100230008C932F5F228BDF91CF91FF90EF900895E9 +:10024000EF92FF920F9302970E94ED000F91FF90A3 +:10025000EF900895089561E080910E010C94C91704 +:1002600060E080910E010C94C9170F931F93CF93F8 +:10027000DF93EB018981992787FD909597FF03C054 +:1002800091958195910960910601709107010E94F5 +:10029000001A6F5F7F4F70935A026093590200E01B +:1002A00010E08091590290915A02081719070CF03A +:1002B00068C02981332727FD3095809108019091EE +:1002C00009018217930734F561E0809114010E94BF +:1002D000C91780910A0190910B010E94211761E0DA +:1002E000809112010E94C91780910A0190910B011F +:1002F0000E94211760E0809114010E94C91780912B +:100300000A0190910B010E94211760E08091120177 +:100310000E94C9172981332727FD30958091080154 +:10032000909109019195819591092817390734F524 +:1003300061E0809112010E94C91780910A01909199 +:100340000B010E94211761E0809114010E94C917DE +:1003500080910A0190910B010E94211760E0809129 +:1003600012010E94C91780910A0190910B010E940D +:10037000211760E0809114010E94C9170F5F1F4F81 +:1003800090CF8A81992787FD909597FF03C091951B +:100390008195910960910601709107010E94001AF0 +:1003A0006F5F7F4F709358026093570200E010E038 +:1003B0008091570290915802081719070CF068C0F5 +:1003C0002A81332727FD30958091080190910901FA +:1003D0008217930734F561E0809110010E94C917DC +:1003E00080910A0190910B010E94211761E0809198 +:1003F0005B020E94C91780910A0190910B010E9433 +:10040000211760E0809110010E94C91780910A01B4 +:1004100090910B010E94211760E080915B020E9485 +:10042000C9172A81332727FD3095809108019091C3 +:1004300009019195819591092817390734F561E0F3 +:1004400080915B020E94C91780910A0190910B0173 +:100450000E94211761E0809110010E94C9178091CC +:100460000A0190910B010E94211760E080915B02CC +:100470000E94C91780910A0190910B010E942117D7 +:1004800060E0809110010E94C9170F5F1F4F90CF4D +:10049000DF91CF911F910F9108952F923F924F922C +:1004A0005F926F927F928F929F92AF92BF92CF9204 +:1004B000DF92EF92FF920F931F93CF93DF9300D0C1 +:1004C00000D0CDB7DEB76C017C836B835A83498340 +:1004D0004C0180E1880E911C5601A7E0AA0EB11CC8 +:1004E00011E044E0442E57E0352E3601B2E16B0EA8 +:1004F000711C63E0262E72E0572E8B819C81892B24 +:1005000009F412C1F60180A1823061F128F4882338 +:1005100049F0813079F0F1CF833041F1843009F432 +:100520004BC0EBCF5482858196819087878352861A +:10053000518610A3AE014D5F5F4FBE016F5F7F4FCD +:10054000C5010E942D12882309F4EEC0D60115962C +:10055000ED91FC911697808191968C939197818172 +:1005600092968C93F6017682658220A2D6019296AD +:100570008C91843081F018F4823079F014C0853089 +:1005800081F0813281F4D60191968C9191978250BD +:1005900014968C9308C0F60113A2D60114963C92CF +:1005A00002C0F6018483F601858196819087878356 +:1005B00084818287818740A2D60192968C91843073 +:1005C000B1F0853009F442C0823009F06EC0AE014E +:1005D0004D5F5F4FBE016F5F7F4FC5010E942D12BF +:1005E000882309F4A1C0F601858984A38EC0AE01D9 +:1005F0004D5F5F4FBE016F5F7F4FC5010E942D129F +:10060000882309F491C0D60155968C915597833073 +:1006100009F07BC056968C915697813009F075C0D1 +:1006200098969C91989757968C91992321F08823BE +:1006300009F46BC003C0823009F067C0F60113A350 +:10064000928996A3938997A385A35FC0AE014D5F5E +:100650005F4FBE016F5F7F4FC5010E942D1288233F +:1006600009F462C0D60193968C919397882309F47C +:100670004CC012968D919C911397009709F445C038 +:10068000DC01ED91FC910190F081E02D7401D60127 +:1006900095960C91959797962C91979796964C9145 +:1006A000969794966C91099530C0F60181A1958535 +:1006B000992319F0913031F023C090E00297978789 +:1006C000868715872B813C8189819A81782F692FB4 +:1006D000D6011E964D915C911F9741155105E9F089 +:1006E00001962115310541F041505109F601578716 +:1006F000468721503109EACF79836A831C821B82A5 +:10070000F60186859785892B79F4D60116969C92F9 +:100710008E92159790961C92F0CE9A8389833C8393 +:100720002B83F6011586ECCF0F900F900F900F9052 +:10073000DF91CF911F910F91FF90EF90DF90CF90BD +:10074000BF90AF909F908F907F906F905F904F90F1 +:100750003F902F9008959FB7F89420916602809162 +:100760006402213019F48DBB9FBF08958FBF089597 +:10077000CF92DF92EF92FF920F931F93CF93DF936D +:10078000CDB7DEB762970FB6F894DEBF0FBECDBF10 +:100790006C01DC0157968C91882369F00E94B81691 +:1007A000F6010389148925893689601B710B820B38 +:1007B000930B97FF02C0F12C39C0F601838590E0BE +:1007C0009A8B898BE12C8E010F5F1F4F9E012F5E4C +:1007D0003F4F42856681848195810E94400EF82EAC +:1007E000811118C029893A892330310598F0D60142 +:1007F0001D968D919C911E97009761F0DC01ED9103 +:10080000FC910190F081E02D8E010F5F1F4F40E0C1 +:10081000B60109950E94B816F601208D620F711D70 +:10082000811D911D638B748B858B968B8F2D6296AA +:100830000FB6F894DEBF0FBECDBFDF91CF911F91F1 +:100840000F91FF90EF90DF90CF9008953F924F92DD +:100850005F926F927F928F929F92AF92BF92CF9250 +:10086000DF92EF92FF920F931F93CF93DF93CDB759 +:10087000DEB7EB970FB6F894DEBF0FBECDBF7C019D +:10088000462E342E522EDC011496AD90BC90159756 +:1008900016968C911697811111C158961C92D5010C +:1008A000ED91FC910190F081E02D60E0C50109958A +:1008B0006C01009711F486ED0BC1FC0180809180E2 +:1008C0008114910409F4FCC03701F7E06F0E711C2C +:1008D000DC0111967C926E9214965C928E01065DFC +:1008E0001F4F28E030E040E060E0F701848195810F +:1008F0000E943F0D182F8111E7C01AA5D6018D92D5 +:100900009C92D501ED91FC910280F381E02D232D85 +:1009100040E0642DC5010995F7018683882309F419 +:10092000D1C099A99087282F40E060E0848195810B +:100930000E94EC0D982ED501ED91FC91D6011496F4 +:100940001C92882361F00480F581E02DD701169672 +:100950006C91C5010995F7011682892DB9C00190E6 +:10096000F081E02DD70116966C91C501099500978D +:1009700009F4A1CF133108F012E1FC0154821111E6 +:100980000FC04BAC512CEDE2AE2EE1E0BE2E470184 +:10099000F2E08F0E911C6E0181E1C80ED11C39C0AE +:1009A000212F30E08E01065D1F4F40E0D7011696E3 +:1009B0006C91169714968D919C9115970E943F0DFE +:1009C000182F811171C0DDCFBA82A9829C828B82DF +:1009D0001E86188A1F8619A21AA21BA219A6DF82D8 +:1009E000CE82D986C8868D818B878A87DD86CC8624 +:1009F0008E010F5F1F4F252D40E0F7016681848136 +:100A000095810E948D0DD70152968C91823019F0FC +:100A100053945410D9CFF7018289823009F043C032 +:100A2000930142E06681848195810E948D0868EE81 +:100A300073E080E090E00E94E716D7011F962C91AA +:100A40001F9740E016966C91169714968D919C9185 +:100A500015970E941B0E182F811126C068EE73E0B7 +:100A600080E090E00E94E71640E060E0C7010E944D +:100A7000A011182F811118C020E040E060E0C701EC +:100A80000E94761183E391E09A838983AE014F5FE0 +:100A90005F4F60E070E0C7010E94331181E0F70111 +:100AA000878B80E015C011EDD701ED91FC9104809A +:100AB000F581E02DC7010995812F0AC089ED08C095 +:100AC00087ED06C084ED04C0F60191828082ECCFF0 +:100AD000EB960FB6F894DEBF0FBECDBFDF91CF917E +:100AE0001F910F91FF90EF90DF90CF90BF90AF904C +:100AF0009F908F907F906F905F904F903F90089560 +:100B000020916602222399F03FB7F8942091660263 +:100B1000213059F42DB3209364024DB32091650226 +:100B2000209524232DBB3FBF02C0309364028CBDAF +:100B30009DBD089580EE91E00C943A102A9A089594 +:100B4000CF93C82F80E591E00E9480052A98CEBD02 +:100B500000000DB407FEFDCF8EB51EBC00000DB425 +:100B600007FEFDCFCEB50E949E05809166028111E1 +:100B70000E94AB038C2FCF9108951F93CF93DF93E7 +:100B80001F92CDB7DEB7182F80E591E069830E94F0 +:100B900080052A98812F82608EBD69810DB407FE81 +:100BA000FDCF8EB56EBD0DB407FEFDCF8EB50E9494 +:100BB0009E0580916602882331F00F90DF91CF91DE +:100BC0001F910C94AB030F90DF91CF911F9108956B +:100BD00088EF0E94A005807C8034A1F018F488235F +:100BE00001F10895803819F0803CB9F0089588ED3E +:100BF0000E94A00581FD0BC069EC88ED0E94BD0537 +:100C000082E00CC088ED0E94A00581FDF5CF6BEC61 +:100C100088ED0E94BD0583E001C081E08093AC01B6 +:100C2000089561ED88ED0E94BD051092AC01089514 +:100C30000F931F93CF93DF938C01229A0E949E05FE +:100C40000E943816229A0E949E05219868E188E841 +:100C50000E94BD0560E288E70E94BD0560E088E76C +:100C60000E94BD05C0E0D0E088E60E94A005219664 +:100C700080FD06C0CF3F8FEFD807B1F78FEF1DC0C3 +:100C800061EC88ED0E94BD0560E680ED0E94BD0527 +:100C900064E088EE0E94BD0588EE0E94A00582FFF8 +:100CA000FBCFC8010E94E80560E288EC0E94BD0508 +:100CB00061E080E80E94BD0580E0DF91CF911F9147 +:100CC0000F91089561E0809114010E94901761E0F6 +:100CD000809112010E94901761E0809110010E94A2 +:100CE000901761E080915B020E94901761E0809113 +:100CF0000E010E94901780EE91E00E9418068F3F2F +:100D000031F466E171E081E792E00E94E61868EC58 +:100D100070E080E090E00E94E7160E94B8166857E5 +:100D20007C4E8F4F9F4F6093B2017093B3018093BD +:100D3000B4019093B5018DEA91E09093C401809342 +:100D4000C30160E0809114010E94C91760E08091A6 +:100D500012010E94C91760E0809110010E94C9171A +:100D600060E080915B020E94C91761E080910E01F2 +:100D70000C94C91780EE91E00E944B0760EE71E081 +:100D80008FEC91E00E94C41480EE91E09093BB013F +:100D90008093BA018DE491E09093B7018093B601FE +:100DA0008BE691E09093B9018093B8011092C9014C +:100DB0001092CA011092CB011092CC011092CD0179 +:100DC0001092BD0188E08093BE018CE38093BF0147 +:100DD0001092C0011092C10184E08093C20181E0B1 +:100DE0008093C8011092C7011092C5011092C401EE +:100DF0001092C301E6E3F2E080E090E021913191AE +:100E0000232B51F4FC01EE0FFF1FEA5CFD4F86EB34 +:100E100091E09183808304C001968031910571F740 +:100E200089E391E09093AE018093AD010895FC01B8 +:100E300020812EBDDC019B012150310951F011961A +:100E40005C9111970DB407FEFDCF4EB55EBD4D937D +:100E5000F3CFFB013197E80FF91F0DB407FEFDCF6B +:100E60008EB5808308958EBD00000DB407FEFDCFC2 +:100E70008EB5089580916602882361F09FB7F8943B +:100E80002091660280916402213019F48DBB9FBFCE +:100E900008958FBF0895FC0181E791E091838083DD +:100EA0001582108681E0818712869F012E5F3F4F59 +:100EB00037832683128288E083838CE3848380E0F7 +:100EC00090E041E0DF01A80FB91F1D961C921D970D +:100ED0001E964C931E971F961C921F971C963C9330 +:100EE0002E931B9705968B34910561F7EA58FF4FB7 +:100EF000108281E1809361020895CF92DF92EF9298 +:100F0000FF920F931F93CF93DF931F92CDB7DEB75E +:100F10007C016623B1F18C01C12CD12CF801EA5A75 +:100F2000FF4F80819181009719F1DC01ED91FC91D7 +:100F30000084F185E02D698309956981861318C0C5 +:100F4000F601BB96EE0FFF1FEE0DFF1D8081918114 +:100F5000DC01ED91FC910480F581E02D0F90DF9193 +:100F6000CF911F910F91FF90EF90DF90CF90099458 +:100F7000BFEFCB1ADB0A0E5F1F4FE0E1CE16D104A4 +:100F800069F680E00F90DF91CF911F910F91FF9054 +:100F9000EF90DF90CF90089520E030E041E0FC0139 +:100FA000E20FF31F5585561739F04F5F2B5F3F4F08 +:100FB0004031A9F780E00895842F0895EF92FF92C1 +:100FC0001F93CF93DF9300D0CDB7DEB77C01162FF0 +:100FD00067FD5FC0283008F05CC0442331F0DC01BD +:100FE00015968C91873009F454C060E0C7012A83BC +:100FF00049830E94CC072A814981882309F449C08A +:10100000E82FF0E0111123C085E08E9FD0018F9F63 +:10101000B00D1124AE0DBF1D442359F081E4189684 +:101020008C93D70115968C9115978F5F15968C939D +:1010300003C081E018968C9385E08E9FD0018F9F2E +:10104000B00D1124AE0DBF1D18968C9123C0612FD9 +:101050006770660F660F660F442361F06064D70106 +:1010600015968C9115978F5F15968C938770687F76 +:10107000682B03C02770687B622B85E08E9FD001B0 +:101080008F9FB00D1124AE0DBF1D18966C93862F47 +:1010900001C080E00F900F90DF91CF911F91FF90E2 +:1010A000EF900895CF93DF93EC01662359F00E94EF +:1010B000CC07882349F09E0145E0849F200D311D17 +:1010C0001124C901069602C080E090E0DF91CF9123 +:1010D0000895CF93DF931F92CDB7DEB749830E9467 +:1010E00052084981009789F0DC01ED91FC9111973C +:1010F000309759F013969C9180E0891731F0208148 +:10110000241731F033968F5FF8CF80E090E001C074 +:10111000CF010F90DF91CF910895EF92FF921F932F +:10112000CF93DF931F92CDB7DEB7162F790121152C +:10113000310569F049830E945208FC0149810097FA +:1011400041F01283F182E082438380E003C088EDA6 +:1011500001C086ED0F90DF91CF911F91FF90EF902E +:1011600008952A9808951F93CF93DF931F92CDB7C8 +:10117000DEB7182F80E591E00E9480050E94B1083B +:10118000812F0E94330780E00E94330789830E94E9 +:101190009E050E943A0789810F90DF91CF911F91A0 +:1011A00008951F93CF93DF9300D01F92CDB7DEB782 +:1011B000182F80E591E06B830E9480050E94B108A2 +:1011C000126019836B816A8362E070E0CE01019640 +:1011D0000E9417070E949E050E943A070F900F90E9 +:1011E0000F90DF91CF911F9108958F929F92BF92A0 +:1011F000CF92DF92EF92FF920F931F93CF93DF93E3 +:101200001F92CDB7DEB74C01B62E690149830E940B +:1012100052087C014981009709F443C0FC01808198 +:101220009181892B09F43FC06B2DC4010E9469088C +:10123000F601918380830097C1F1FC0122812695FC +:101240002695822F90E0409764F441E050E060E002 +:1012500070E004C0440F551F661F771F2A95D2F710 +:1012600002C040E050E841505109F80151834083E9 +:101270006B2D80EE0E94D10888ED0E94B308F70123 +:101280009481992339F0F401EA58FF4F608162603C +:10129000682B02C0682F697F88ED0E94D10880E02A +:1012A00005C086ED03C087ED01C08BED0F90DF9187 +:1012B000CF911F910F91FF90EF90DF90CF90BF9053 +:1012C0009F908F9008958F929F92AF92BF92CF92EE +:1012D000DF92EF92FF920F931F93CF93DF931F92B2 +:1012E000CDB7DEB7A62E890149830E94B8166B01DF +:1012F0007C0188E8C80E83E1D81EE11CF11C812C1A +:10130000912CB12C20E04981A42A29830E94B8168F +:101310006C197D098E099F09298197FF2DC06A2DBF +:1013200080EF0E94D1080E94B8166C197D098E09C1 +:101330009F0997FF09C088EC0E94B30887FFF3CF8D +:1013400060E888EC0E94D10888EF0E94B308282F3B +:101350002F70243019F02E3059F00EC0EFEF8E1A96 +:101360009E0A0115110589F28016910671F604C0D6 +:10137000B394F3E0BF12C9CF822F0F90DF91CF91CA +:101380001F910F91FF90EF90DF90CF90BF90AF90A3 +:101390009F908F9008959F92AF92BF92CF92DF92CD +:1013A000EF92FF920F931F93CF93DF937C01B42EA4 +:1013B000122FAA24A394DC01A60FB11DA60FB11D04 +:1013C0006D0186E5C80ED11CC42FD0E0AB96CC0FC2 +:1013D000DD1FCE0DDF1DD6018D919C91DC01ED91BD +:1013E000FC910280F381E02D202F412F6B2D099578 +:1013F000803EC1F4B1100BC061E088EE0E94D108BC +:1014000066E670E080E090E00E94E71615C08881F3 +:101410009981DC01ED91FC910284F385E02D612F2F +:1014200009950AC08D3031F48FEF8A0D833008F0B2 +:1014300042C017C0811142C0F60180819181DC0158 +:10144000ED91FC910190F081E02D202F412F6B2D2B +:101450000995982EBDE08B130CC08FEF8A0D833059 +:1014600050F464E670E080E090E00E94E716A394F8 +:10147000B2CF882311F1B1100BC061E088EE0E9459 +:10148000D10866E670E080E090E00E94E71611C0A7 +:10149000EB2DF0E0BB96EE0FFF1FEE0DFF1D8081E0 +:1014A0009181DC01ED91FC910284F385E02D612FA7 +:1014B0000995892D03C08DE001C080E0DF91CF91B7 +:1014C0001F910F91FF90EF90DF90CF90BF90AF9062 +:1014D0009F9008950F931F93CF93DF93D82FC62F1C +:1014E0008A0180E591E00E9480050E94B1088D2F5D +:1014F00082600E943307D0E0209721F0BE01C8012E +:101500000E941707C00FD11F0E949E050E943A0734 +:10151000CE01DF91CF911F910F9108952F923F92AD +:101520004F925F926F927F928F929F92AF92BF92F3 +:10153000CF92DF92EF92FF920F931F93CF93DF939F +:1015400000D000D01F92CDB7DEB77D836C835A01E7 +:101550006901FB0121808FEF820D803408F06FC09C +:101560000E94B8162B013C01F8E84F0EF3E15F1E14 +:10157000611C711CEC81FD81828180FF02C060E8EA +:1015800001C060E488EE0E94D10820E0312CC11433 +:10159000D10409F444C076012C143D0408F471010F +:1015A000EA82A8016E2D80E10E946A0A6E2D88E30E +:1015B0000E94D108EC81FD816081606280EF0E9411 +:1015C000D10888EC0E94B30887FFFBCF60E888EC65 +:1015D0000E94D10888EF0E94B308282F2F70812C19 +:1015E000912C1982222309F46BC02B830E94B81618 +:1015F00064197509860997092B8197FF61C0263008 +:1016000001F12E3009F456C0243049F4FFEF8F1A4F +:101610009F0AA114B10459F18A149B0441F588EF83 +:101620002B830E94B30885FB882780F9EC81FD811C +:10163000928180FB90F992832B81822F46C08AEDA4 +:1016400044C088EF0E94B30885FB882780F991E0A9 +:101650008927EC81FD81928180FB90F9928390FF34 +:1016600002C060E801C060E488EE0E94D10860E03A +:1016700088E30E94D108F801608180E10E94D108CE +:101680006A8188E30E94D108EC81FD8160816062FB +:1016900080EF0E94D10888EC0E94B30887FFFBCF3F +:1016A00060E888EC0E94D10888EF0E94B308282FD8 +:1016B0002F7098CF89818F5F89838330C1F6AFCF38 +:1016C000CE18DF080E0D1F1D62CF0F900F900F90E8 +:1016D0000F900F90DF91CF911F910F91FF90EF909E +:1016E000DF90CF90BF90AF909F908F907F906F9042 +:1016F0005F904F903F902F9008952F923F924F927E +:101700005F926F927F928F929F92AF92BF92CF9291 +:10171000DF92EF92FF920F931F93CF93DF93CDB79A +:10172000DEB729970FB6F894DEBF0FBECDBF1C0100 +:10173000798768875B834A836901D9018D909C9082 +:101740001197FB01F181F9831D921C92DB01129626 +:101750008C9181FF02C060E201C060E188EE0E94CE +:10176000D1088E2D90E0A0E0B0E08C839D83AE8305 +:10177000BF83482C2A813B81A885B9854C9160E0C4 +:10178000C1010E946309F82EB6E08B1316C088EFE2 +:101790000E94B3088295817091E08927E885F985D8 +:1017A000928180FB91F9928391FF02C060E201C0B7 +:1017B00060E188EE0E94D108DDCF811166C088EC1F +:1017C0000E94B30882FF5FC080E30E94B308582ED6 +:1017D00090E08816990608F4542CD6018D919C91BE +:1017E000652C712CF401E81BF90BCF01F7FF02C047 +:1017F00080E090E05301861597050CF45C0180E5CC +:1018000091E00E9480050E94B10888E00E943307A1 +:10181000A50160E070E0C8010E941A1AA114B10489 +:1018200021F0B501C8010E9417070A0D1B1D0E9477 +:101830009E050E943A0764E088EC0E94D108D60118 +:101840008D919C911197860D971D8D939C93B981D5 +:101850005B1618F08815990560F088EF0E94B308B0 +:1018600082958170E885F985928180FB91F9928358 +:101870000CC0EE2009F47ECF6C817D818E819F812A +:101880000E94E71677CF30EFF32E8F2D29960FB6F3 +:10189000F894DEBF0FBECDBFDF91CF911F910F91A6 +:1018A000FF90EF90DF90CF90BF90AF909F908F9080 +:1018B0007F906F905F904F903F902F9008952F9260 +:1018C0003F924F925F926F927F928F929F92AF92D0 +:1018D000BF92CF92DF92EF92FF920F931F93CF931D +:1018E000DF93CDB7DEB762970FB6F894DEBF0FBEB9 +:1018F000CDBF3C01F42E322E202E5C2D4FA058A4DB +:10190000C9A4DAA4188A1F861E861D868E01035F6D +:101910001F4F9E01215F3F4F598B0E94F508598947 +:10192000811194C039822A82EB825C83BE82AD82AF +:1019300098868F82AE014F5F5F4F68E080E20E9421 +:101940006A0A2D853E854F2D60E1C3010E9463091F +:10195000182F81117AC0232C221C2224221CC1148E +:10196000D10409F466C0EF85F8898281222009F448 +:1019700053C082608283540133243394A114B10490 +:1019800009F455C05C864B864D855E856F857889E8 +:10199000E12C86019E01255F3F4FC3010E947D0B14 +:1019A000182F8630B1F42F85388988EF298B3A8B30 +:1019B0000E94B30885FB882780F9832529893A8905 +:1019C000D90112969C91129780FB91F912969C93E3 +:1019D000D5CF81113AC0EBA5FCA53097A1F00190BD +:1019E000F081E02D0190F081E02DC4018A199B095E +:1019F0009A8789876B857C859E01275F3F4FA6016B +:101A00008BA59CA509958B859C85A81AB90A841578 +:101A1000950508F0B3CF0DC0816082834D855E854A +:101A200086019201BF01C3010E948E0A182F111175 +:101A30000CC02D853E85222011F060EA01C060E8CF +:101A40004F2DC3010E94630901C0812F62960FB61A +:101A5000F894DEBF0FBECDBFDF91CF911F910F91E4 +:101A6000FF90EF90DF90CF90BF90AF909F908F90BE +:101A70007F906F905F904F903F902F9008958F923E +:101A80009F92AF92BF92CF92EF920F931F931F92AC +:101A90001F921F930F933F932F934901A12CB12CB9 +:101AA000CC24C394E12C06E020E80E945F0C0F9048 +:101AB0000F900F900F900F900F901F910F91EF903C +:101AC000CF90BF90AF909F908F9008958F929F92EC +:101AD000AF92BF92CF92EF92FF920F931F921F92FD +:101AE000FF92EF923F932F934901A12CB12C52E02A +:101AF000C52EE02E06E020E80E945F0C0F900F90AC +:101B00000F900F900F900F900F91FF90EF90CF904C +:101B1000BF90AF909F908F9008953F924F925F92A9 +:101B20006F927F928F929F92AF92BF92CF92DF92ED +:101B3000EF92FF920F931F93CF93DF93CDB7DEB752 +:101B4000C054D1090FB6F894DEBF0FBECDBF3C0123 +:101B5000562E442E322EB02ECE0101966C017C0101 +:101B6000022F29E030E0C3010E94660D81111BC0E5 +:101B70008B809C801F93BF92DF92CF921F9280E454 +:101B80008F93A12CB12C62E0C62EE32C06E020E856 +:101B9000442D652DC3010E945F0C0F900F900F9094 +:101BA0000F900F900F90C05CDF4F0FB6F894DEBF20 +:101BB0000FBECDBFDF91CF911F910F91FF90EF909E +:101BC000DF90CF90BF90AF909F908F907F906F905D +:101BD0005F904F903F9008958F929F92AF92BF92E7 +:101BE000CF92EF920F93CF931F921F921F921F924B +:101BF0001F921F92812C912CA12CB12CC12CE22E72 +:101C000005E020E00E945F0CC82F6CE271E080E0EC +:101C100090E00E94E7160F900F900F900F900F909A +:101C20000F908C2FCF910F91EF90CF90BF90AF90EE +:101C30009F908F9008958F929F92AF92BF92CF9274 +:101C4000EF920F931F921F921F921F921F921F924B +:101C5000812C912CA12CB12CC12CE22E09E020E08A +:101C60000E945F0C0F900F900F900F900F900F90AD +:101C70000F91EF90CF90BF90AF909F908F9008956D +:101C80008F929F92AF92BF92CF92DF92EF920F937B +:101C90001F93CF93DF9300D000D0CDB7DEB76C0198 +:101CA000590148011C821B821A8219828E010F5F22 +:101CB0001F4F9E012D5F3F4F0E94F508811109C003 +:101CC00049815A816B817C8184019501C6010E9402 +:101CD0007D0B0F900F900F900F90DF91CF911F9180 +:101CE0000F91EF90DF90CF90BF90AF909F908F902B +:101CF0000895CF92DF92FF920F931F93CF93DF93BC +:101D000000D0CDB7DEB76C01662309F442C0062FC0 +:101D100010E085E0689FB0011124F601E60FF71F7F +:101D20008085282F277086FF19C031E0E5E0FE2E60 +:101D3000F601F39EE00DF11D1124808586958695B0 +:101D4000869587708217E1F03F5F303188F3F601A6 +:101D50008581821303C02150F601258385E0809F91 +:101D6000F001819FF00D1124EC0DFD1D108681E026 +:101D70008187128682E0C80ED11CD782C68209C034 +:101D8000632FC6012A8339830E94790E2A81398103 +:101D9000CFCF0F900F90DF91CF911F910F91FF90B8 +:101DA000DF90CF900895CF93DF93EC016134A1F4DD +:101DB000FC01855B9F4F41E09E012E5F3F4F1586E2 +:101DC00046871786348723873596E817F907B9F7CA +:101DD0001D82DF91CF9108950E94CC07682FCE011C +:101DE000DF91CF910C94790E0F931F93CF93DF93D4 +:101DF000EC01022FCA3F8FEFD80711F486ED29C0FE +:101E00008E819F81892B01F12A87242F40E0CE010A +:101E10000E94DE07182F8823C9F0682FCE010E9488 +:101E20005208009759F3FC010483212F40E060E041 +:101E3000CE010E94EC0D082F882351F0612FCE01B6 +:101E40000E94D30E802F05C087ED03C084ED01C032 +:101E500080E0DF91CF911F910F9108952F923F92D3 +:101E60004F925F926F927F928F929F92AF92BF92AA +:101E7000CF92DF92EF92FF920F931F93CF93DF9356 +:101E8000CDB7DEB766970FB6F894DEBF0FBECDBFF5 +:101E90007C01862E742E922E1B8A88E08C8B8CE31C +:101EA0008D8BD701ED91FC910190F081E02D60E0E8 +:101EB000C70109956C01009709F4ABC0FC01A08033 +:101EC000B180CE0143969183808394828E010F5F0F +:101ED0001F4F22E130E040E060E0C7010E943F0D6B +:101EE000D601AD92BC928111ACC029843A844B8456 +:101EF0005C84BD81BE8B1E815701612C6501E6E5C6 +:101F0000CE0ED11CD6018D919C91009789F1DC01F8 +:101F1000ED91FC910084F185E02D0995811128C097 +:101F2000F60180819181DC01ED91FC910088F189BD +:101F3000E02D612F09958823D9F0F60180819181E8 +:101F4000DC01ED91FC910484F585E02DA201B10145 +:101F50000995811160C0F60180819181DC01ED91CC +:101F6000FC910684F785E02D6E890995811153C097 +:101F70006394B2E0AB0EB11CE0E16E12BFCF57012B +:101F8000612C6501F6E5CF0ED11CD6018D919C9197 +:101F9000009789F1DC01ED91FC910084F185E02D41 +:101FA0000995811128C0F60180819181DC01ED91B4 +:101FB000FC910088F189E02D612F09958823B1F10A +:101FC000F60180819181DC01ED91FC910484F5851D +:101FD000E02DA201B101099581110DC0F6018081AA +:101FE0009181DC01ED91FC910684F785E02D6E89ED +:101FF00009958823D9F06394B2E0AB0EB11CE0E1FF +:102000006E12BFCF292D472D682DC7010E94F40EF7 +:1020100018C086ED16C0092D272D482D662DC70145 +:102020000E94CB09813D09F4A3CF0BC0092D272DB8 +:10203000482D662DC7010E94CB09982F977F913DAF +:10204000D1F266960FB6F894DEBF0FBECDBFDF911A +:10205000CF911F910F91FF90EF90DF90CF90BF90A5 +:10206000AF909F908F907F906F905F904F903F9038 +:102070002F900895FF920F931F93CF93DF93EC015E +:1020800019990EC088EC0E94B30885FF05C0CE01E7 +:102090000E94E80560E201C060E088EC0E94D1087F +:1020A0008091AC01813051F058F0823029F08330BA +:1020B00039F5FF24F3940DC0F12C0BC083E106C069 +:1020C00080916102807F8031D9F081E1809361024B +:1020D00017C080916102807F803199F40E94B81608 +:1020E00068537F4F8F4F9F4F60935D0270935E02E6 +:1020F00080935F029093600280E28093610201C04E +:10210000F12C00E010E0FE01E00FF11FEA5AFF4F52 +:1021100080819181009739F0DC01ED91FC9106807E +:10212000F781E02D09950E5F1F4F0032110559F719 +:1021300080916102803409F446C070F4803269F104 +:102140008033D9F1813109F088C0FE01EA58FF4F90 +:10215000108200E010E00AC0813509F45AC08038CE +:1021600009F46AC0803509F078C03CC0FE01E00F78 +:10217000F11FEA5AFF4F80819181009739F0DC010D +:10218000ED91FC910480F581E02D09950E5F1F4FC4 +:102190000032110559F782E15EC00E94B816009125 +:1021A0005D0210915E0220915F0230916002601B1F +:1021B000710B820B930B97FD50C061E088EE0E947B +:1021C000D10880E448C088EE0E94B30880FD45C075 +:1021D00088ED0E94B308682F686088ED0E94D108DE +:1021E00080E539C088EC0E94B30886FF36C081E5DF +:1021F000809361020E94B8166C5E7F4F8F4F9F4F95 +:1022000060935D0270935E0280935F029093600220 +:1022100024C00E94B81600915D0210915E022091C8 +:102220005F0230916002601B710B820B930B97FD74 +:1022300014C080E8809361022F2D40E060E0CE0161 +:102240000E942E0F882331F0823D39F08093620284 +:1022500080EA01C080E980936102DF91CF911F91F4 +:102260000F91FF9008958F929F92AF92BF92CF925D +:10227000EF920F93CF93DF93CDB7DEB7C054D10960 +:102280000FB6F894DEBF0FBECDBF5F934F939E0194 +:102290002F5F3F4F3F932F931F9220E42F9320E80F +:1022A000822E912C5B0132E2C32EE12C06E021E864 +:1022B00040E0FC016681848195810E945F0C0F9053 +:1022C0000F900F900F900F900F90C05CDF4F0FB6E4 +:1022D000F894DEBF0FBECDBFDF91CF910F91EF908D +:1022E000CF90BF90AF909F908F9008958F929F92C4 +:1022F000AF92BF92CF92EF920F93A62EB12C1F9266 +:102300001F921F921F921F921F92812C912CC22EFE +:10231000E42E0AE021E240E0FC016681848195819F +:102320000E945F0C0F900F900F900F900F900F90E6 +:102330000F91EF90CF90BF90AF909F908F900895A6 +:102340008F929F92AF92BF92CF92EF920F93A62E51 +:10235000B12C1F921F921F921F921F921F92812CCD +:10236000912CC12CE42E0BE021E240E0FC016681BF +:10237000848195810E945F0C0F900F900F900F90B9 +:102380000F900F900F91EF90CF90BF90AF909F90D4 +:102390008F9008950F931F93CF93DF93EC012A81C1 +:1023A0002170F8018081982F9170291771F0E881D0 +:1023B000F98180FF04C00680F781E02D03C004800E +:1023C000F581E02DB801CE0109952A81269521706D +:1023D000F801808181FB992790F9291771F0E88134 +:1023E000F98181FF04C00284F385E02D03C00084DD +:1023F000F185E02DB801CE0109952A8122FB222723 +:1024000020F9F801808182FB992790F9291771F052 +:10241000E881F98182FF04C00684F785E02D03C0BE +:102420000484F585E02DB801CE010995F80181817C +:10243000811103C08281882341F0E881F981028003 +:10244000F381E02DB801CE010995F80180818A83DE +:10245000DF91CF911F910F910895CF93DF93FC01EE +:10246000EA0180819181892B21F580E028C0888153 +:102470009981892BD1F3DB018D919C91DC015C91D9 +:10248000238130E0241B310980819181820F931FC9 +:10249000DC015C93828181508283888199810197DC +:1024A00099838883DB018D919C91119701968D937F +:1024B0009C9342814111DBCF8381828381E0DF9154 +:1024C000CF910895FC018285089581E0693009F07B +:1024D00080E00895CF93DF93EC018A819B81DC013A +:1024E000ED91FC910480F581E02D6A8509958A853E +:1024F000813439F4EA81FB81EA58FF4F808184609E +:1025000080831A861B861C861D861E861F86188A57 +:1025100080E0DF91CF9108958F929F92AF92BF920A +:10252000CF92EF920F93A42EB12CB22A1F921F923A +:102530001F921F921F921F92812C912CC12CE62E6C +:1025400001E023E240E0FC016285828193810E94E8 +:102550005F0C0F900F900F900F900F900F900F91B6 +:10256000EF90CF90BF90AF909F908F9008958F92F3 +:102570009F92AF92BF92CF92EF920F93A62EB12C63 +:102580001F921F923F932F935F934F934A01C12C49 +:10259000E12C00E023EA40E0FC0162858281938126 +:1025A0000E945F0C0F900F900F900F900F900F9064 +:1025B0000F91EF90CF90BF90AF909F908F90089524 +:1025C0008F929F92AF92BF92CF92EF920F93A42ED1 +:1025D000B12CB22A1F921F921F921F921F921F921C +:1025E000812C912CC12CE62E03E023E240E0FC017B +:1025F0006285828193810E945F0C0F900F900F90F3 +:102600000F900F900F900F91EF90CF90BF90AF90E1 +:102610009F908F9008952F923F924F925F926F926A +:102620007F928F929F92AF92BF92CF92DF92EF9262 +:10263000FF920F931F93CF93DF93CDB7DEB7E99748 +:102640000FB6F894DEBF0FBECDBF3C01362E242E50 +:10265000DC011296ED90FC9013971A968C918111E3 +:1026600003C1D701ED91FC910190F081E02D60E074 +:10267000C70129AF09956C0129AD009709F4F6C08F +:10268000FC01A080B180A114B10409F4F1C04301A0 +:10269000F4E08F0E911CDC0111969C928E921496A0 +:1026A0002C93FE0131962F018F0128E030E040E0AD +:1026B00060E0D30112968D919C9113970E943F0D7B +:1026C000F60114828111DAC019818D81893009F0F7 +:1026D000D1C0D701ED91FC910280F381E02D222D34 +:1026E00041E0632DC7010995F3018287882309F42E +:1026F000C3C098859583282F40E060E08281938154 +:102700000E94EC0D082F882391F0D601AD92BC9267 +:10271000D701ED91FC910480F581E02DD3011A964B +:102720006C91C7010995F3011286102FABC01132CD +:1027300008F010E2D601AD92BC9211110BC09401C9 +:1027400042E0F3016285828193810E948D088111AC +:1027500098C011C0212F30E0820140E0D3011A96C9 +:102760006C911A9712968D919C9113970E943F0D30 +:10277000811187C0E4CF1F921F925F924F921F92E8 +:1027800088E08F9388E0882E912CA12CB12C99E2BF +:10279000C92EE12C06E020EA40E0F3016285828147 +:1027A00093810E945F0C182F0F900F900F900F9045 +:1027B0000F900F90811166C08B81D3011B968C9373 +:1027C0001B97720100E028E030E040E01A966C911F +:1027D0001A9712968D919C9113970E94660D811104 +:1027E00050C02B813C8140E0F3016285828193815E +:1027F0000E94660D811145C0298130E0CE0181968D +:102800007C0140E0D3011A966C911A9712968D9133 +:102810009C9113970E94660D811133C02E8140E078 +:10282000F3016285828193810E941B0E811129C070 +:1028300001E0D3011B968C911B97801740F020E09C +:10284000402F68E0C3010E94E0120F5FF2CF1296A2 +:10285000ED91FC911397EA58FF4F8081846080834B +:1028600081E050968C930EC019ED0CC016ED0AC095 +:1028700017ED08C011ED06C014ED04C0F601B182D9 +:10288000A082182F812FE9960FB6F894DEBF0FBEF5 +:10289000CDBFDF91CF911F910F91FF90EF90DF900F +:1028A000CF90BF90AF909F908F907F906F905F90F0 +:1028B0004F903F902F900895BF92CF92DF92EF926A +:1028C000FF920F931F93CF93DF9300D000D0CDB72B +:1028D000DEB77C01B62E19821A821B821C8220E090 +:1028E000462F61E10E948C1220E04B2D60E1C70170 +:1028F0000E948C1220E04B2D64E0C7010E94E01280 +:1029000023E0C22ED12C9E012F5F3F4F44E050E0C8 +:102910006B2DC7010E94B712882301F120E04B2DD7 +:1029200064E1C7010E948C1220E04B2D60E1C701D9 +:102930000E948C1264E170E080E090E00E94E71653 +:102940000F900F900F900F90DF91CF911F910F91EB +:10295000FF90EF90DF90CF90BF90089509811A818A +:102960002B813C811D7F0330114020413105B1F2A4 +:1029700064E670E080E090E00E94E71681E0C81A0B +:10298000D10809F0C0CFCACFCF93DF93FC018BE70A +:1029900091E0918380837383628312861386148609 +:1029A000158616861786108A148288E085839CE334 +:1029B000968391E09783808784E081876115710514 +:1029C000B9F0CB01A0E0B0E0EC01CA5ADF4F28819A +:1029D0003981232B41F49B96AA0FBB1FA60FB71F6B +:1029E000ED93FC9305C011960296A031B10561F7F5 +:1029F000DF91CF910895DF92EF92FF920F931F9393 +:102A0000CF93DF93EC01D62E7A01FA010081118178 +:102A1000228133810130F3E01F07F1E02F073105F8 +:102A2000D1F060F40115E1E01E072E07310571F1C8 +:102A3000013011402140310571F062C0033081E066 +:102A4000180780E128073105E1F1033013402041E8 +:102A50003105B9F155C080916302811151C020E068 +:102A60004D2D61E1CE010E948C1220E04D2D60E1E0 +:102A7000CE010E948C1220E04D2D64E0CE010E9418 +:102A8000E01281E08093630281EB3BC020E0462F9F +:102A900061E1CE010E948C1220E04D2D60E1CE015B +:102AA0000E948C12109263026A8567708D2D877068 +:102AB000660F660F660F682B8A819B810E947D07D7 +:102AC0001FC020E04D2D64E1CE010E948C1220E059 +:102AD0004D2D60E1CE010E948C1264E170E080E037 +:102AE00090E00E94E7166A85F70121812695217002 +:102AF00067704D2D8A819B810E942E0F1092630278 +:102B000080E0DF91CF911F910F91FF90EF90DF90C8 +:102B10000895CF92DF92EF920F931F93CF93DF939D +:102B2000CDB7DEB72E970FB6F894DEBF0FBECDBF80 +:102B30006C0181E090E09E878D87E12C8E010F5F14 +:102B40001F4F9E01235F3F4F41E0F6016285828166 +:102B500093810E94400E811151C002E011E08981F1 +:102B60008023D1F019861A861B861C869E01275F5A +:102B70003F4F44E050E0612FC6010E94B71281111F +:102B80000BC0AE01475F5F4F612FC6010E94FB146F +:102B9000813B99F1811132C0000F1F5F1830F9F6A7 +:102BA00011E0F6018385811740F119861A861B868C +:102BB0001C869E01275F3F4F44E050E0612FC60115 +:102BC0000E94B712811117C089859A85877091700C +:102BD0008130914081F48B859C8581609C878B87B7 +:102BE000AE01475F5F4F612FC6010E94FB14813B1E +:102BF00021F0811103C01F5FD4CF80E02E960FB665 +:102C0000F894DEBF0FBECDBFDF91CF911F910F9122 +:102C1000EF90DF90CF9008950F931F93CF93DF93A2 +:102C2000EC0188898823F1F00E94B8160C851D8577 +:102C30002E853F85601B710B820B930B97FD0FC098 +:102C4000CE010E948915182F0E94B8166C597F4F2B +:102C50008F4F9F4F6C877D878E879F8701C010E0C5 +:102C6000812F01C080E0DF91CF911F910F910895D6 +:102C7000CF93CFB7F89480916702811127C0EAE91A +:102C8000F0E08491E6E8F0E09491E82FF0E0EE0FB8 +:102C9000FF1FE255FF4FA591B4918C91892321F438 +:102CA00061E08AE00E94C91761E08AE00E94901703 +:102CB0008CB580618CBD8CB580648CBD61E08DE08D +:102CC0000E94901761E08BE00E949017809167024C +:102CD0008F5F80936702CFBFCF9108951F920F92AD +:102CE0000FB60F9211242F933F938F939F93AF931F +:102CF000BF938091690290916A02A0916B02B0919A +:102D00006C023091680223E0230F2D3720F40196E6 +:102D1000A11DB11D05C026E8230F0296A11DB11DFE +:102D2000209368028093690290936A02A0936B02D9 +:102D3000B0936C0280916D0290916E02A0916F022F +:102D4000B09170020196A11DB11D80936D02909308 +:102D50006E02A0936F02B0937002BF91AF919F91EA +:102D60008F913F912F910F900FBE0F901F9018954C +:102D70002FB7F8946091690270916A0280916B029A +:102D800090916C022FBF08953FB7F89480916D0227 +:102D900090916E02A0916F02B091700226B5A89B2F +:102DA00005C02F3F19F00196A11DB11D3FBF662739 +:102DB000782F892F9A2F620F711D811D911D42E07E +:102DC000660F771F881F991F4A95D1F708958F9234 +:102DD0009F92AF92BF92CF92DF92EF92FF926B01E0 +:102DE0007C010E94C4164B015C01C114D104E104B2 +:102DF000F104F1F00E9408190E94C41668197909BB +:102E00008A099B09683E73408105910570F321E0B2 +:102E1000C21AD108E108F10888EE880E83E0981EF6 +:102E2000A11CB11CC114D104E104F10429F7DDCFC8 +:102E3000FF90EF90DF90CF90BF90AF909F908F90DA +:102E400008958230910538F0880F991F880F991FD7 +:102E500005970197F1F70895789484B5826084BD51 +:102E600084B5816084BD85B5826085BD85B581608E +:102E700085BDEEE6F0E0808181608083E1E8F0E0EE +:102E80001082808182608083808181608083E0E81D +:102E9000F0E0808181608083E1EBF0E080818460FC +:102EA0008083E0EBF0E0808181608083EAE7F0E0FE +:102EB0008081846080838081826080838081816062 +:102EC00080838081806880831092C1000895833060 +:102ED00081F028F4813099F08230A1F00895873094 +:102EE000A9F08830B9F08430D1F4809180008F7DD2 +:102EF00003C0809180008F7780938000089584B50F +:102F00008F7702C084B58F7D84BD08958091B00015 +:102F10008F7703C08091B0008F7D8093B0000895BB +:102F2000CF93DF9390E0FC01E458FF4F2491FC0124 +:102F3000E057FF4F8491882349F190E0880F991F53 +:102F4000FC01E255FF4FA591B4918C559F4FFC01B8 +:102F5000C591D4919FB7611108C0F8948C912095C8 +:102F600082238C93888182230AC0623051F4F894C2 +:102F70008C91322F309583238C938881822B888388 +:102F800004C0F8948C91822B8C939FBFDF91CF91DA +:102F900008950F931F93CF93DF931F92CDB7DEB7A2 +:102FA000282F30E0F901E859FF4F8491F901E458E6 +:102FB000FF4F1491F901E057FF4F04910023C9F02E +:102FC000882321F069830E9467176981E02FF0E070 +:102FD000EE0FFF1FEC55FF4FA591B4919FB7F894EA +:102FE0008C91611103C01095812301C0812B8C93BA +:102FF0009FBF0F90DF91CF911F910F9108951F9266 +:103000000F920FB60F9211242F938F939F93EF93EC +:10301000FF93E0918102F09182028081E09187022A +:10302000F091880282FD12C0908180918A028F5FA8 +:103030008F7320918B02821751F0E0918A02F0E0A9 +:10304000EF58FD4F958F80938A0201C08081FF91D8 +:10305000EF919F918F912F910F900FBE0F901F9026 +:1030600018951F920F920FB60F9211242F933F9332 +:103070004F935F936F937F938F939F93AF93BF9380 +:10308000EF93FF9381E792E00E944419FF91EF9143 +:10309000BF91AF919F918F917F916F915F914F9170 +:1030A0003F912F910F900FBE0F901F90189581E7C1 +:1030B00092E00E94091921E0892B09F420E0822F77 +:1030C0000895109274021092730288EE93E0A0E0CB +:1030D000B0E08093750290937602A0937702B0934C +:1030E000780280EA91E0909372028093710285ECFD +:1030F00090E090937E0280937D0284EC90E0909328 +:10310000800280937F0280EC90E090938202809313 +:10311000810281EC90E0909384028093830282ECA0 +:1031200090E0909386028093850286EC90E09093E5 +:1031300088028093870210928A0210928B0210926A +:103140008C0210928D020895CF92DF92EF92FF923F +:103150000F931F93CF93DF937C016A01EB0100E093 +:1031600010E00C151D0571F06991D701ED91FC91EE +:103170000190F081E02DC7010995892B19F00F5FAF +:103180001F4FEFCFC801DF91CF911F910F91FF909B +:10319000EF90DF90CF9008956115710581F0DB010C +:1031A0000D900020E9F7AD0141505109461B570B26 +:1031B000DC01ED91FC910280F381E02D099480E027 +:1031C00090E008956DE871E00C94CC180F931F9374 +:1031D000CF93DF93EC010E94CC188C01CE010E94AA +:1031E000E218800F911FDF91CF911F910F910895E9 +:1031F00008950E942C170E94F8180E946206C6E3E8 +:10320000D9E10E949A052097E1F30E943619F9CF7F +:103210000895FC01818D228D90E0805C9F4F821B80 +:1032200091098F7399270895FC01918D828D9817CC +:1032300031F0828DE80FF11D858D90E008958FEFBC +:103240009FEF0895FC01918D828D981761F0828D1A +:10325000DF01A80FB11D5D968C91928D9F5F9F73CA +:10326000928F90E008958FEF9FEF089587E598E1A2 +:10327000892B49F080E090E0892B29F00E945718B3 +:1032800081110C9400000895FC01848DDF01A80FCA +:10329000B11DA35ABF4F2C91848D90E001968F737E +:1032A0009927848FA689B7892C93A089B1898C919D +:1032B00080648C93938D848D981306C00288F38963 +:1032C000E02D80818F7D80830895CF93DF93EC0183 +:1032D000888D8823C9F0EA89FB89808185FD05C036 +:1032E000A889B9898C9186FD0FC00FB607FCF5CF70 +:1032F000808185FFF2CFA889B9898C9185FFEDCFB8 +:10330000CE010E944419E7CFDF91CF910895CF926B +:10331000DF92FF920F931F93CF93DF931F92CDB74E +:10332000DEB76C0181E0D60158968C9358975B9676 +:103330009C915B975C968C915C97981307C0509614 +:10334000ED91FC915197808185FD2EC0F601038D92 +:1033500010E00F5F1F4F0F731127F02EF601848DC1 +:10336000F81211C00FB607FCF9CFD6015096ED91B7 +:10337000FC915197808185FFF1CFC60169830E943E +:1033800044196981EBCF838DE80FF11DE35AFF4F9C +:103390006083D6015B960C935B975296ED91FC91FE +:1033A0005397808180620CC0D6015696ED91FC91B6 +:1033B000579760835096ED91FC915197808180647E +:1033C000808381E090E00F90DF91CF911F910F916A +:1033D000FF90DF90CF900895AA1BBB1B51E107C05F +:1033E000AA1FBB1FA617B70710F0A61BB70B881F95 +:1033F000991F5A95A9F780959095BC01CD01089524 +:1034000097FB072E16F4009407D077FD09D00E9491 +:10341000EC1907FC05D03EF4909581959F4F0895D7 +:10342000709561957F4F0895EE0FFF1F0590F49101 +:10343000E02D0994DC0101C06D9341505040E0F74C +:063440000895F894FFCF8F +:1034460000000E0380000C000100320000000400A2 +:103456000200010003004F534320646964206E6F2D +:10346600742073746172742E00000000004D020017 +:103476000000002A0100000000CA1135012B0130AE +:10348600018F009000AF00B0000000000026048805 +:1034960000BA00B803D5008A008B00D800DD00E230 +:1034A60000B100EA00ED00FEFF0000200100000070 +:1034B600005208DE07D30E000000000B1388006AD6 +:1034C600120C1662125C148B0065128D000D0A0038 +:1034D6006E616E00696E66006F7666000000000021 +:0C34E6008719A418091922191419651976 +:00000001FF diff --git a/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..0246baa --- /dev/null +++ b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex @@ -0,0 +1,883 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C946E160C9486000C94FF170C943118C7 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00BA06611811241FBE80 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E6E4C5 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94161AC83B48 +:10010000D107C9F70E94F9180C94211A0C94000029 +:1001100080E00895089580E0089581E008950895AD +:1001200080910A0190910B01A0910C01B0910D01F9 +:10013000843F21E09207A105B10524F4C296A11DD8 +:10014000B11D04C082E390E0A0E0B0E080930A011A +:1001500090930B01A0930C01B0930D0108950895A5 +:100160000895860F911D860F911DFC0156874587C6 +:1001700081E00895CF93DF93EC018C819D81DC01B8 +:10018000ED91FC910480F581E02D6E8109951F862B +:10019000188A81E08A8B1E821B8A1C8A1D8A1E8A0D +:1001A0001F8A80E0DF91CF910895FC018681089538 +:1001B00081E0633009F080E0089581E0623009F069 +:1001C00080E00895860F911D860F911DFC018585A5 +:1001D00096850895FC0187890895EF92FF92CF9349 +:1001E000DF93FC01E7012289223029F16787408BE8 +:1001F0008B8183708330F9F48A8187FF1CC08E81E4 +:10020000908D981708F4808F822F90E0DC01AA0F60 +:10021000BB1FA80FB91FAE0FBF1F8A818F70179623 +:100220008C9317978C8118968C93189784E0199665 +:100230008C932F5F228BDF91CF91FF90EF900895E9 +:10024000EF92FF920F9302970E94ED000F91FF90A3 +:10025000EF900895089561E080910E010C94C91704 +:1002600060E080910E010C94C9170F931F93CF93F8 +:10027000DF93EB018981992787FD909597FF03C054 +:1002800091958195910960910601709107010E94F5 +:10029000001A6F5F7F4F70935A026093590200E01B +:1002A00010E08091590290915A02081719070CF03A +:1002B00068C02981332727FD3095809108019091EE +:1002C00009018217930734F561E0809114010E94BF +:1002D000C91780910A0190910B010E94211761E0DA +:1002E000809112010E94C91780910A0190910B011F +:1002F0000E94211760E0809114010E94C91780912B +:100300000A0190910B010E94211760E08091120177 +:100310000E94C9172981332727FD30958091080154 +:10032000909109019195819591092817390734F524 +:1003300061E0809112010E94C91780910A01909199 +:100340000B010E94211761E0809114010E94C917DE +:1003500080910A0190910B010E94211760E0809129 +:1003600012010E94C91780910A0190910B010E940D +:10037000211760E0809114010E94C9170F5F1F4F81 +:1003800090CF8A81992787FD909597FF03C091951B +:100390008195910960910601709107010E94001AF0 +:1003A0006F5F7F4F709358026093570200E010E038 +:1003B0008091570290915802081719070CF068C0F5 +:1003C0002A81332727FD30958091080190910901FA +:1003D0008217930734F561E0809110010E94C917DC +:1003E00080910A0190910B010E94211761E0809198 +:1003F0005B020E94C91780910A0190910B010E9433 +:10040000211760E0809110010E94C91780910A01B4 +:1004100090910B010E94211760E080915B020E9485 +:10042000C9172A81332727FD3095809108019091C3 +:1004300009019195819591092817390734F561E0F3 +:1004400080915B020E94C91780910A0190910B0173 +:100450000E94211761E0809110010E94C9178091CC +:100460000A0190910B010E94211760E080915B02CC +:100470000E94C91780910A0190910B010E942117D7 +:1004800060E0809110010E94C9170F5F1F4F90CF4D +:10049000DF91CF911F910F9108952F923F924F922C +:1004A0005F926F927F928F929F92AF92BF92CF9204 +:1004B000DF92EF92FF920F931F93CF93DF9300D0C1 +:1004C00000D0CDB7DEB76C017C836B835A83498340 +:1004D0004C0180E1880E911C5601A7E0AA0EB11CC8 +:1004E00011E044E0442E57E0352E3601B2E16B0EA8 +:1004F000711C63E0262E72E0572E8B819C81892B24 +:1005000009F412C1F60180A1823061F128F4882338 +:1005100049F0813079F0F1CF833041F1843009F432 +:100520004BC0EBCF5482858196819087878352861A +:10053000518610A3AE014D5F5F4FBE016F5F7F4FCD +:10054000C5010E942D12882309F4EEC0D60115962C +:10055000ED91FC911697808191968C939197818172 +:1005600092968C93F6017682658220A2D6019296AD +:100570008C91843081F018F4823079F014C0853089 +:1005800081F0813281F4D60191968C9191978250BD +:1005900014968C9308C0F60113A2D60114963C92CF +:1005A00002C0F6018483F601858196819087878356 +:1005B00084818287818740A2D60192968C91843073 +:1005C000B1F0853009F442C0823009F06EC0AE014E +:1005D0004D5F5F4FBE016F5F7F4FC5010E942D12BF +:1005E000882309F4A1C0F601858984A38EC0AE01D9 +:1005F0004D5F5F4FBE016F5F7F4FC5010E942D129F +:10060000882309F491C0D60155968C915597833073 +:1006100009F07BC056968C915697813009F075C0D1 +:1006200098969C91989757968C91992321F08823BE +:1006300009F46BC003C0823009F067C0F60113A350 +:10064000928996A3938997A385A35FC0AE014D5F5E +:100650005F4FBE016F5F7F4FC5010E942D1288233F +:1006600009F462C0D60193968C919397882309F47C +:100670004CC012968D919C911397009709F445C038 +:10068000DC01ED91FC910190F081E02D7401D60127 +:1006900095960C91959797962C91979796964C9145 +:1006A000969794966C91099530C0F60181A1958535 +:1006B000992319F0913031F023C090E00297978789 +:1006C000868715872B813C8189819A81782F692FB4 +:1006D000D6011E964D915C911F9741155105E9F089 +:1006E00001962115310541F041505109F601578716 +:1006F000468721503109EACF79836A831C821B82A5 +:10070000F60186859785892B79F4D60116969C92F9 +:100710008E92159790961C92F0CE9A8389833C8393 +:100720002B83F6011586ECCF0F900F900F900F9052 +:10073000DF91CF911F910F91FF90EF90DF90CF90BD +:10074000BF90AF909F908F907F906F905F904F90F1 +:100750003F902F9008959FB7F89420916602809162 +:100760006402213019F48DBB9FBF08958FBF089597 +:10077000CF92DF92EF92FF920F931F93CF93DF936D +:10078000CDB7DEB762970FB6F894DEBF0FBECDBF10 +:100790006C01DC0157968C91882369F00E94B81691 +:1007A000F6010389148925893689601B710B820B38 +:1007B000930B97FF02C0F12C39C0F601838590E0BE +:1007C0009A8B898BE12C8E010F5F1F4F9E012F5E4C +:1007D0003F4F42856681848195810E94400EF82EAC +:1007E000811118C029893A892330310598F0D60142 +:1007F0001D968D919C911E97009761F0DC01ED9103 +:10080000FC910190F081E02D8E010F5F1F4F40E0C1 +:10081000B60109950E94B816F601208D620F711D70 +:10082000811D911D638B748B858B968B8F2D6296AA +:100830000FB6F894DEBF0FBECDBFDF91CF911F91F1 +:100840000F91FF90EF90DF90CF9008953F924F92DD +:100850005F926F927F928F929F92AF92BF92CF9250 +:10086000DF92EF92FF920F931F93CF93DF93CDB759 +:10087000DEB7EB970FB6F894DEBF0FBECDBF7C019D +:10088000462E342E522EDC011496AD90BC90159756 +:1008900016968C911697811111C158961C92D5010C +:1008A000ED91FC910190F081E02D60E0C50109958A +:1008B0006C01009711F486ED0BC1FC0180809180E2 +:1008C0008114910409F4FCC03701F7E06F0E711C2C +:1008D000DC0111967C926E9214965C928E01065DFC +:1008E0001F4F28E030E040E060E0F701848195810F +:1008F0000E943F0D182F8111E7C01AA5D6018D92D5 +:100900009C92D501ED91FC910280F381E02D232D85 +:1009100040E0642DC5010995F7018683882309F419 +:10092000D1C099A99087282F40E060E0848195810B +:100930000E94EC0D982ED501ED91FC91D6011496F4 +:100940001C92882361F00480F581E02DD701169672 +:100950006C91C5010995F7011682892DB9C00190E6 +:10096000F081E02DD70116966C91C501099500978D +:1009700009F4A1CF133108F012E1FC0154821111E6 +:100980000FC04BAC512CEDE2AE2EE1E0BE2E470184 +:10099000F2E08F0E911C6E0181E1C80ED11C39C0AE +:1009A000212F30E08E01065D1F4F40E0D7011696E3 +:1009B0006C91169714968D919C9115970E943F0DFE +:1009C000182F811171C0DDCFBA82A9829C828B82DF +:1009D0001E86188A1F8619A21AA21BA219A6DF82D8 +:1009E000CE82D986C8868D818B878A87DD86CC8624 +:1009F0008E010F5F1F4F252D40E0F7016681848136 +:100A000095810E948D0DD70152968C91823019F0FC +:100A100053945410D9CFF7018289823009F043C032 +:100A2000930142E06681848195810E948D0868EE81 +:100A300073E080E090E00E94E716D7011F962C91AA +:100A40001F9740E016966C91169714968D919C9185 +:100A500015970E941B0E182F811126C068EE73E0B7 +:100A600080E090E00E94E71640E060E0C7010E944D +:100A7000A011182F811118C020E040E060E0C701EC +:100A80000E94761183E391E09A838983AE014F5FE0 +:100A90005F4F60E070E0C7010E94331181E0F70111 +:100AA000878B80E015C011EDD701ED91FC9104809A +:100AB000F581E02DC7010995812F0AC089ED08C095 +:100AC00087ED06C084ED04C0F60191828082ECCFF0 +:100AD000EB960FB6F894DEBF0FBECDBFDF91CF917E +:100AE0001F910F91FF90EF90DF90CF90BF90AF904C +:100AF0009F908F907F906F905F904F903F90089560 +:100B000020916602222399F03FB7F8942091660263 +:100B1000213059F42DB3209364024DB32091650226 +:100B2000209524232DBB3FBF02C0309364028CBDAF +:100B30009DBD089580EE91E00C943A102A9A089594 +:100B4000CF93C82F80E591E00E9480052A98CEBD02 +:100B500000000DB407FEFDCF8EB51EBC00000DB425 +:100B600007FEFDCFCEB50E949E05809166028111E1 +:100B70000E94AB038C2FCF9108951F93CF93DF93E7 +:100B80001F92CDB7DEB7182F80E591E069830E94F0 +:100B900080052A98812F82608EBD69810DB407FE81 +:100BA000FDCF8EB56EBD0DB407FEFDCF8EB50E9494 +:100BB0009E0580916602882331F00F90DF91CF91DE +:100BC0001F910C94AB030F90DF91CF911F9108956B +:100BD00088EF0E94A005807C8034A1F018F488235F +:100BE00001F10895803819F0803CB9F0089588ED3E +:100BF0000E94A00581FD0BC069EC88ED0E94BD0537 +:100C000082E00CC088ED0E94A00581FDF5CF6BEC61 +:100C100088ED0E94BD0583E001C081E08093AC01B6 +:100C2000089561ED88ED0E94BD051092AC01089514 +:100C30000F931F93CF93DF938C01229A0E949E05FE +:100C40000E943816229A0E949E05219868E188E841 +:100C50000E94BD0560E288E70E94BD0560E088E76C +:100C60000E94BD05C0E0D0E088E60E94A005219664 +:100C700080FD06C0CF3F8FEFD807B1F78FEF1DC0C3 +:100C800061EC88ED0E94BD0560E680ED0E94BD0527 +:100C900064E088EE0E94BD0588EE0E94A00582FFF8 +:100CA000FBCFC8010E94E80560E288EC0E94BD0508 +:100CB00061E080E80E94BD0580E0DF91CF911F9147 +:100CC0000F91089561E0809114010E94901761E0F6 +:100CD000809112010E94901761E0809110010E94A2 +:100CE000901761E080915B020E94901761E0809113 +:100CF0000E010E94901780EE91E00E9418068F3F2F +:100D000031F466E171E081E792E00E94E61868EC58 +:100D100070E080E090E00E94E7160E94B8166857E5 +:100D20007C4E8F4F9F4F6093B2017093B3018093BD +:100D3000B4019093B5018DEA91E09093C401809342 +:100D4000C30160E0809114010E94C91760E08091A6 +:100D500012010E94C91760E0809110010E94C9171A +:100D600060E080915B020E94C91761E080910E01F2 +:100D70000C94C91780EE91E00E944B0760EE71E081 +:100D80008FEC91E00E94C41480EE91E09093BB013F +:100D90008093BA018DE491E09093B7018093B601FE +:100DA0008BE691E09093B9018093B8011092C9014C +:100DB0001092CA011092CB011092CC011092CD0179 +:100DC0001092BD0188E08093BE018CE38093BF0147 +:100DD0001092C0011092C10184E08093C20181E0B1 +:100DE0008093C8011092C7011092C5011092C401EE +:100DF0001092C301E6E3F2E080E090E021913191AE +:100E0000232B51F4FC01EE0FFF1FEA5CFD4F86EB34 +:100E100091E09183808304C001968031910571F740 +:100E200089E391E09093AE018093AD010895FC01B8 +:100E300020812EBDDC019B012150310951F011961A +:100E40005C9111970DB407FEFDCF4EB55EBD4D937D +:100E5000F3CFFB013197E80FF91F0DB407FEFDCF6B +:100E60008EB5808308958EBD00000DB407FEFDCFC2 +:100E70008EB5089580916602882361F09FB7F8943B +:100E80002091660280916402213019F48DBB9FBFCE +:100E900008958FBF0895FC0181E791E091838083DD +:100EA0001582108681E0818712869F012E5F3F4F59 +:100EB00037832683128288E083838CE3848380E0F7 +:100EC00090E041E0DF01A80FB91F1D961C921D970D +:100ED0001E964C931E971F961C921F971C963C9330 +:100EE0002E931B9705968B34910561F7EA58FF4FB7 +:100EF000108281E1809361020895CF92DF92EF9298 +:100F0000FF920F931F93CF93DF931F92CDB7DEB75E +:100F10007C016623B1F18C01C12CD12CF801EA5A75 +:100F2000FF4F80819181009719F1DC01ED91FC91D7 +:100F30000084F185E02D698309956981861318C0C5 +:100F4000F601BB96EE0FFF1FEE0DFF1D8081918114 +:100F5000DC01ED91FC910480F581E02D0F90DF9193 +:100F6000CF911F910F91FF90EF90DF90CF90099458 +:100F7000BFEFCB1ADB0A0E5F1F4FE0E1CE16D104A4 +:100F800069F680E00F90DF91CF911F910F91FF9054 +:100F9000EF90DF90CF90089520E030E041E0FC0139 +:100FA000E20FF31F5585561739F04F5F2B5F3F4F08 +:100FB0004031A9F780E00895842F0895EF92FF92C1 +:100FC0001F93CF93DF9300D0CDB7DEB77C01162FF0 +:100FD00067FD5FC0283008F05CC0442331F0DC01BD +:100FE00015968C91873009F454C060E0C7012A83BC +:100FF00049830E94CC072A814981882309F449C08A +:10100000E82FF0E0111123C085E08E9FD0018F9F63 +:10101000B00D1124AE0DBF1D442359F081E4189684 +:101020008C93D70115968C9115978F5F15968C939D +:1010300003C081E018968C9385E08E9FD0018F9F2E +:10104000B00D1124AE0DBF1D18968C9123C0612FD9 +:101050006770660F660F660F442361F06064D70106 +:1010600015968C9115978F5F15968C938770687F76 +:10107000682B03C02770687B622B85E08E9FD001B0 +:101080008F9FB00D1124AE0DBF1D18966C93862F47 +:1010900001C080E00F900F90DF91CF911F91FF90E2 +:1010A000EF900895CF93DF93EC01662359F00E94EF +:1010B000CC07882349F09E0145E0849F200D311D17 +:1010C0001124C901069602C080E090E0DF91CF9123 +:1010D0000895CF93DF931F92CDB7DEB749830E9467 +:1010E00052084981009789F0DC01ED91FC9111973C +:1010F000309759F013969C9180E0891731F0208148 +:10110000241731F033968F5FF8CF80E090E001C074 +:10111000CF010F90DF91CF910895EF92FF921F932F +:10112000CF93DF931F92CDB7DEB7162F790121152C +:10113000310569F049830E945208FC0149810097FA +:1011400041F01283F182E082438380E003C088EDA6 +:1011500001C086ED0F90DF91CF911F91FF90EF902E +:1011600008952A9808951F93CF93DF931F92CDB7C8 +:10117000DEB7182F80E591E00E9480050E94B1083B +:10118000812F0E94330780E00E94330789830E94E9 +:101190009E050E943A0789810F90DF91CF911F91A0 +:1011A00008951F93CF93DF9300D01F92CDB7DEB782 +:1011B000182F80E591E06B830E9480050E94B108A2 +:1011C000126019836B816A8362E070E0CE01019640 +:1011D0000E9417070E949E050E943A070F900F90E9 +:1011E0000F90DF91CF911F9108958F929F92BF92A0 +:1011F000CF92DF92EF92FF920F931F93CF93DF93E3 +:101200001F92CDB7DEB74C01B62E690149830E940B +:1012100052087C014981009709F443C0FC01808198 +:101220009181892B09F43FC06B2DC4010E9469088C +:10123000F601918380830097C1F1FC0122812695FC +:101240002695822F90E0409764F441E050E060E002 +:1012500070E004C0440F551F661F771F2A95D2F710 +:1012600002C040E050E841505109F80151834083E9 +:101270006B2D80EE0E94D10888ED0E94B308F70123 +:101280009481992339F0F401EA58FF4F608162603C +:10129000682B02C0682F697F88ED0E94D10880E02A +:1012A00005C086ED03C087ED01C08BED0F90DF9187 +:1012B000CF911F910F91FF90EF90DF90CF90BF9053 +:1012C0009F908F9008958F929F92AF92BF92CF92EE +:1012D000DF92EF92FF920F931F93CF93DF931F92B2 +:1012E000CDB7DEB7A62E890149830E94B8166B01DF +:1012F0007C0188E8C80E83E1D81EE11CF11C812C1A +:10130000912CB12C20E04981A42A29830E94B8168F +:101310006C197D098E099F09298197FF2DC06A2DBF +:1013200080EF0E94D1080E94B8166C197D098E09C1 +:101330009F0997FF09C088EC0E94B30887FFF3CF8D +:1013400060E888EC0E94D10888EF0E94B308282F3B +:101350002F70243019F02E3059F00EC0EFEF8E1A96 +:101360009E0A0115110589F28016910671F604C0D6 +:10137000B394F3E0BF12C9CF822F0F90DF91CF91CA +:101380001F910F91FF90EF90DF90CF90BF90AF90A3 +:101390009F908F9008959F92AF92BF92CF92DF92CD +:1013A000EF92FF920F931F93CF93DF937C01B42EA4 +:1013B000122FAA24A394DC01A60FB11DA60FB11D04 +:1013C0006D0186E5C80ED11CC42FD0E0AB96CC0FC2 +:1013D000DD1FCE0DDF1DD6018D919C91DC01ED91BD +:1013E000FC910280F381E02D202F412F6B2D099578 +:1013F000803EC1F4B1100BC061E088EE0E94D108BC +:1014000066E670E080E090E00E94E71615C08881F3 +:101410009981DC01ED91FC910284F385E02D612F2F +:1014200009950AC08D3031F48FEF8A0D833008F0B2 +:1014300042C017C0811142C0F60180819181DC0158 +:10144000ED91FC910190F081E02D202F412F6B2D2B +:101450000995982EBDE08B130CC08FEF8A0D833059 +:1014600050F464E670E080E090E00E94E716A394F8 +:10147000B2CF882311F1B1100BC061E088EE0E9459 +:10148000D10866E670E080E090E00E94E71611C0A7 +:10149000EB2DF0E0BB96EE0FFF1FEE0DFF1D8081E0 +:1014A0009181DC01ED91FC910284F385E02D612FA7 +:1014B0000995892D03C08DE001C080E0DF91CF91B7 +:1014C0001F910F91FF90EF90DF90CF90BF90AF9062 +:1014D0009F9008950F931F93CF93DF93D82FC62F1C +:1014E0008A0180E591E00E9480050E94B1088D2F5D +:1014F00082600E943307D0E0209721F0BE01C8012E +:101500000E941707C00FD11F0E949E050E943A0734 +:10151000CE01DF91CF911F910F9108952F923F92AD +:101520004F925F926F927F928F929F92AF92BF92F3 +:10153000CF92DF92EF92FF920F931F93CF93DF939F +:1015400000D000D01F92CDB7DEB77D836C835A01E7 +:101550006901FB0121808FEF820D803408F06FC09C +:101560000E94B8162B013C01F8E84F0EF3E15F1E14 +:10157000611C711CEC81FD81828180FF02C060E8EA +:1015800001C060E488EE0E94D10820E0312CC11433 +:10159000D10409F444C076012C143D0408F471010F +:1015A000EA82A8016E2D80E10E946A0A6E2D88E30E +:1015B0000E94D108EC81FD816081606280EF0E9411 +:1015C000D10888EC0E94B30887FFFBCF60E888EC65 +:1015D0000E94D10888EF0E94B308282F2F70812C19 +:1015E000912C1982222309F46BC02B830E94B81618 +:1015F00064197509860997092B8197FF61C0263008 +:1016000001F12E3009F456C0243049F4FFEF8F1A4F +:101610009F0AA114B10459F18A149B0441F588EF83 +:101620002B830E94B30885FB882780F9EC81FD811C +:10163000928180FB90F992832B81822F46C08AEDA4 +:1016400044C088EF0E94B30885FB882780F991E0A9 +:101650008927EC81FD81928180FB90F9928390FF34 +:1016600002C060E801C060E488EE0E94D10860E03A +:1016700088E30E94D108F801608180E10E94D108CE +:101680006A8188E30E94D108EC81FD8160816062FB +:1016900080EF0E94D10888EC0E94B30887FFFBCF3F +:1016A00060E888EC0E94D10888EF0E94B308282FD8 +:1016B0002F7098CF89818F5F89838330C1F6AFCF38 +:1016C000CE18DF080E0D1F1D62CF0F900F900F90E8 +:1016D0000F900F90DF91CF911F910F91FF90EF909E +:1016E000DF90CF90BF90AF909F908F907F906F9042 +:1016F0005F904F903F902F9008952F923F924F927E +:101700005F926F927F928F929F92AF92BF92CF9291 +:10171000DF92EF92FF920F931F93CF93DF93CDB79A +:10172000DEB729970FB6F894DEBF0FBECDBF1C0100 +:10173000798768875B834A836901D9018D909C9082 +:101740001197FB01F181F9831D921C92DB01129626 +:101750008C9181FF02C060E201C060E188EE0E94CE +:10176000D1088E2D90E0A0E0B0E08C839D83AE8305 +:10177000BF83482C2A813B81A885B9854C9160E0C4 +:10178000C1010E946309F82EB6E08B1316C088EFE2 +:101790000E94B3088295817091E08927E885F985D8 +:1017A000928180FB91F9928391FF02C060E201C0B7 +:1017B00060E188EE0E94D108DDCF811166C088EC1F +:1017C0000E94B30882FF5FC080E30E94B308582ED6 +:1017D00090E08816990608F4542CD6018D919C91BE +:1017E000652C712CF401E81BF90BCF01F7FF02C047 +:1017F00080E090E05301861597050CF45C0180E5CC +:1018000091E00E9480050E94B10888E00E943307A1 +:10181000A50160E070E0C8010E941A1AA114B10489 +:1018200021F0B501C8010E9417070A0D1B1D0E9477 +:101830009E050E943A0764E088EC0E94D108D60118 +:101840008D919C911197860D971D8D939C93B981D5 +:101850005B1618F08815990560F088EF0E94B308B0 +:1018600082958170E885F985928180FB91F9928358 +:101870000CC0EE2009F47ECF6C817D818E819F812A +:101880000E94E71677CF30EFF32E8F2D29960FB6F3 +:10189000F894DEBF0FBECDBFDF91CF911F910F91A6 +:1018A000FF90EF90DF90CF90BF90AF909F908F9080 +:1018B0007F906F905F904F903F902F9008952F9260 +:1018C0003F924F925F926F927F928F929F92AF92D0 +:1018D000BF92CF92DF92EF92FF920F931F93CF931D +:1018E000DF93CDB7DEB762970FB6F894DEBF0FBEB9 +:1018F000CDBF3C01F42E322E202E5C2D4FA058A4DB +:10190000C9A4DAA4188A1F861E861D868E01035F6D +:101910001F4F9E01215F3F4F598B0E94F508598947 +:10192000811194C039822A82EB825C83BE82AD82AF +:1019300098868F82AE014F5F5F4F68E080E20E9421 +:101940006A0A2D853E854F2D60E1C3010E9463091F +:10195000182F81117AC0232C221C2224221CC1148E +:10196000D10409F466C0EF85F8898281222009F448 +:1019700053C082608283540133243394A114B10490 +:1019800009F455C05C864B864D855E856F857889E8 +:10199000E12C86019E01255F3F4FC3010E947D0B14 +:1019A000182F8630B1F42F85388988EF298B3A8B30 +:1019B0000E94B30885FB882780F9832529893A8905 +:1019C000D90112969C91129780FB91F912969C93E3 +:1019D000D5CF81113AC0EBA5FCA53097A1F00190BD +:1019E000F081E02D0190F081E02DC4018A199B095E +:1019F0009A8789876B857C859E01275F3F4FA6016B +:101A00008BA59CA509958B859C85A81AB90A841578 +:101A1000950508F0B3CF0DC0816082834D855E854A +:101A200086019201BF01C3010E948E0A182F111175 +:101A30000CC02D853E85222011F060EA01C060E8CF +:101A40004F2DC3010E94630901C0812F62960FB61A +:101A5000F894DEBF0FBECDBFDF91CF911F910F91E4 +:101A6000FF90EF90DF90CF90BF90AF909F908F90BE +:101A70007F906F905F904F903F902F9008958F923E +:101A80009F92AF92BF92CF92EF920F931F931F92AC +:101A90001F921F930F933F932F934901A12CB12CB9 +:101AA000CC24C394E12C06E020E80E945F0C0F9048 +:101AB0000F900F900F900F900F901F910F91EF903C +:101AC000CF90BF90AF909F908F9008958F929F92EC +:101AD000AF92BF92CF92EF92FF920F931F921F92FD +:101AE000FF92EF923F932F934901A12CB12C52E02A +:101AF000C52EE02E06E020E80E945F0C0F900F90AC +:101B00000F900F900F900F900F91FF90EF90CF904C +:101B1000BF90AF909F908F9008953F924F925F92A9 +:101B20006F927F928F929F92AF92BF92CF92DF92ED +:101B3000EF92FF920F931F93CF93DF93CDB7DEB752 +:101B4000C054D1090FB6F894DEBF0FBECDBF3C0123 +:101B5000562E442E322EB02ECE0101966C017C0101 +:101B6000022F29E030E0C3010E94660D81111BC0E5 +:101B70008B809C801F93BF92DF92CF921F9280E454 +:101B80008F93A12CB12C62E0C62EE32C06E020E856 +:101B9000442D652DC3010E945F0C0F900F900F9094 +:101BA0000F900F900F90C05CDF4F0FB6F894DEBF20 +:101BB0000FBECDBFDF91CF911F910F91FF90EF909E +:101BC000DF90CF90BF90AF909F908F907F906F905D +:101BD0005F904F903F9008958F929F92AF92BF92E7 +:101BE000CF92EF920F93CF931F921F921F921F924B +:101BF0001F921F92812C912CA12CB12CC12CE22E72 +:101C000005E020E00E945F0CC82F6CE271E080E0EC +:101C100090E00E94E7160F900F900F900F900F909A +:101C20000F908C2FCF910F91EF90CF90BF90AF90EE +:101C30009F908F9008958F929F92AF92BF92CF9274 +:101C4000EF920F931F921F921F921F921F921F924B +:101C5000812C912CA12CB12CC12CE22E09E020E08A +:101C60000E945F0C0F900F900F900F900F900F90AD +:101C70000F91EF90CF90BF90AF909F908F9008956D +:101C80008F929F92AF92BF92CF92DF92EF920F937B +:101C90001F93CF93DF9300D000D0CDB7DEB76C0198 +:101CA000590148011C821B821A8219828E010F5F22 +:101CB0001F4F9E012D5F3F4F0E94F508811109C003 +:101CC00049815A816B817C8184019501C6010E9402 +:101CD0007D0B0F900F900F900F90DF91CF911F9180 +:101CE0000F91EF90DF90CF90BF90AF909F908F902B +:101CF0000895CF92DF92FF920F931F93CF93DF93BC +:101D000000D0CDB7DEB76C01662309F442C0062FC0 +:101D100010E085E0689FB0011124F601E60FF71F7F +:101D20008085282F277086FF19C031E0E5E0FE2E60 +:101D3000F601F39EE00DF11D1124808586958695B0 +:101D4000869587708217E1F03F5F303188F3F601A6 +:101D50008581821303C02150F601258385E0809F91 +:101D6000F001819FF00D1124EC0DFD1D108681E026 +:101D70008187128682E0C80ED11CD782C68209C034 +:101D8000632FC6012A8339830E94790E2A81398103 +:101D9000CFCF0F900F90DF91CF911F910F91FF90B8 +:101DA000DF90CF900895CF93DF93EC016134A1F4DD +:101DB000FC01855B9F4F41E09E012E5F3F4F1586E2 +:101DC00046871786348723873596E817F907B9F7CA +:101DD0001D82DF91CF9108950E94CC07682FCE011C +:101DE000DF91CF910C94790E0F931F93CF93DF93D4 +:101DF000EC01022FCA3F8FEFD80711F486ED29C0FE +:101E00008E819F81892B01F12A87242F40E0CE010A +:101E10000E94DE07182F8823C9F0682FCE010E9488 +:101E20005208009759F3FC010483212F40E060E041 +:101E3000CE010E94EC0D082F882351F0612FCE01B6 +:101E40000E94D30E802F05C087ED03C084ED01C032 +:101E500080E0DF91CF911F910F9108952F923F92D3 +:101E60004F925F926F927F928F929F92AF92BF92AA +:101E7000CF92DF92EF92FF920F931F93CF93DF9356 +:101E8000CDB7DEB766970FB6F894DEBF0FBECDBFF5 +:101E90007C01862E742E922E1B8A88E08C8B8CE31C +:101EA0008D8BD701ED91FC910190F081E02D60E0E8 +:101EB000C70109956C01009709F4ABC0FC01A08033 +:101EC000B180CE0143969183808394828E010F5F0F +:101ED0001F4F22E130E040E060E0C7010E943F0D6B +:101EE000D601AD92BC928111ACC029843A844B8456 +:101EF0005C84BD81BE8B1E815701612C6501E6E5C6 +:101F0000CE0ED11CD6018D919C91009789F1DC01F8 +:101F1000ED91FC910084F185E02D0995811128C097 +:101F2000F60180819181DC01ED91FC910088F189BD +:101F3000E02D612F09958823D9F0F60180819181E8 +:101F4000DC01ED91FC910484F585E02DA201B10145 +:101F50000995811160C0F60180819181DC01ED91CC +:101F6000FC910684F785E02D6E890995811153C097 +:101F70006394B2E0AB0EB11CE0E16E12BFCF57012B +:101F8000612C6501F6E5CF0ED11CD6018D919C9197 +:101F9000009789F1DC01ED91FC910084F185E02D41 +:101FA0000995811128C0F60180819181DC01ED91B4 +:101FB000FC910088F189E02D612F09958823B1F10A +:101FC000F60180819181DC01ED91FC910484F5851D +:101FD000E02DA201B101099581110DC0F6018081AA +:101FE0009181DC01ED91FC910684F785E02D6E89ED +:101FF00009958823D9F06394B2E0AB0EB11CE0E1FF +:102000006E12BFCF292D472D682DC7010E94F40EF7 +:1020100018C086ED16C0092D272D482D662DC70145 +:102020000E94CB09813D09F4A3CF0BC0092D272DB8 +:10203000482D662DC7010E94CB09982F977F913DAF +:10204000D1F266960FB6F894DEBF0FBECDBFDF911A +:10205000CF911F910F91FF90EF90DF90CF90BF90A5 +:10206000AF909F908F907F906F905F904F903F9038 +:102070002F900895FF920F931F93CF93DF93EC015E +:1020800019990EC088EC0E94B30885FF05C0CE01E7 +:102090000E94E80560E201C060E088EC0E94D1087F +:1020A0008091AC01813051F058F0823029F08330BA +:1020B00039F5FF24F3940DC0F12C0BC083E106C069 +:1020C00080916102807F8031D9F081E1809361024B +:1020D00017C080916102807F803199F40E94B81608 +:1020E00068537F4F8F4F9F4F60935D0270935E02E6 +:1020F00080935F029093600280E28093610201C04E +:10210000F12C00E010E0FE01E00FF11FEA5AFF4F52 +:1021100080819181009739F0DC01ED91FC9106807E +:10212000F781E02D09950E5F1F4F0032110559F719 +:1021300080916102803409F446C070F4803269F104 +:102140008033D9F1813109F088C0FE01EA58FF4F90 +:10215000108200E010E00AC0813509F45AC08038CE +:1021600009F46AC0803509F078C03CC0FE01E00F78 +:10217000F11FEA5AFF4F80819181009739F0DC010D +:10218000ED91FC910480F581E02D09950E5F1F4FC4 +:102190000032110559F782E15EC00E94B816009125 +:1021A0005D0210915E0220915F0230916002601B1F +:1021B000710B820B930B97FD50C061E088EE0E947B +:1021C000D10880E448C088EE0E94B30880FD45C075 +:1021D00088ED0E94B308682F686088ED0E94D108DE +:1021E00080E539C088EC0E94B30886FF36C081E5DF +:1021F000809361020E94B8166C5E7F4F8F4F9F4F95 +:1022000060935D0270935E0280935F029093600220 +:1022100024C00E94B81600915D0210915E022091C8 +:102220005F0230916002601B710B820B930B97FD74 +:1022300014C080E8809361022F2D40E060E0CE0161 +:102240000E942E0F882331F0823D39F08093620284 +:1022500080EA01C080E980936102DF91CF911F91F4 +:102260000F91FF9008958F929F92AF92BF92CF925D +:10227000EF920F93CF93DF93CDB7DEB7C054D10960 +:102280000FB6F894DEBF0FBECDBF5F934F939E0194 +:102290002F5F3F4F3F932F931F9220E42F9320E80F +:1022A000822E912C5B0132E2C32EE12C06E021E864 +:1022B00040E0FC016681848195810E945F0C0F9053 +:1022C0000F900F900F900F900F90C05CDF4F0FB6E4 +:1022D000F894DEBF0FBECDBFDF91CF910F91EF908D +:1022E000CF90BF90AF909F908F9008958F929F92C4 +:1022F000AF92BF92CF92EF920F93A62EB12C1F9266 +:102300001F921F921F921F921F92812C912CC22EFE +:10231000E42E0AE021E240E0FC016681848195819F +:102320000E945F0C0F900F900F900F900F900F90E6 +:102330000F91EF90CF90BF90AF909F908F900895A6 +:102340008F929F92AF92BF92CF92EF920F93A62E51 +:10235000B12C1F921F921F921F921F921F92812CCD +:10236000912CC12CE42E0BE021E240E0FC016681BF +:10237000848195810E945F0C0F900F900F900F90B9 +:102380000F900F900F91EF90CF90BF90AF909F90D4 +:102390008F9008950F931F93CF93DF93EC012A81C1 +:1023A0002170F8018081982F9170291771F0E881D0 +:1023B000F98180FF04C00680F781E02D03C004800E +:1023C000F581E02DB801CE0109952A81269521706D +:1023D000F801808181FB992790F9291771F0E88134 +:1023E000F98181FF04C00284F385E02D03C00084DD +:1023F000F185E02DB801CE0109952A8122FB222723 +:1024000020F9F801808182FB992790F9291771F052 +:10241000E881F98182FF04C00684F785E02D03C0BE +:102420000484F585E02DB801CE010995F80181817C +:10243000811103C08281882341F0E881F981028003 +:10244000F381E02DB801CE010995F80180818A83DE +:10245000DF91CF911F910F910895CF93DF93FC01EE +:10246000EA0180819181892B21F580E028C0888153 +:102470009981892BD1F3DB018D919C91DC015C91D9 +:10248000238130E0241B310980819181820F931FC9 +:10249000DC015C93828181508283888199810197DC +:1024A00099838883DB018D919C91119701968D937F +:1024B0009C9342814111DBCF8381828381E0DF9154 +:1024C000CF910895FC018285089581E0693009F07B +:1024D00080E00895CF93DF93EC018A819B81DC013A +:1024E000ED91FC910480F581E02D6A8509958A853E +:1024F000813439F4EA81FB81EA58FF4F808184609E +:1025000080831A861B861C861D861E861F86188A57 +:1025100080E0DF91CF9108958F929F92AF92BF920A +:10252000CF92EF920F93A42EB12CB22A1F921F923A +:102530001F921F921F921F92812C912CC12CE62E6C +:1025400001E023E240E0FC016285828193810E94E8 +:102550005F0C0F900F900F900F900F900F900F91B6 +:10256000EF90CF90BF90AF909F908F9008958F92F3 +:102570009F92AF92BF92CF92EF920F93A62EB12C63 +:102580001F921F923F932F935F934F934A01C12C49 +:10259000E12C00E023EA40E0FC0162858281938126 +:1025A0000E945F0C0F900F900F900F900F900F9064 +:1025B0000F91EF90CF90BF90AF909F908F90089524 +:1025C0008F929F92AF92BF92CF92EF920F93A42ED1 +:1025D000B12CB22A1F921F921F921F921F921F921C +:1025E000812C912CC12CE62E03E023E240E0FC017B +:1025F0006285828193810E945F0C0F900F900F90F3 +:102600000F900F900F900F91EF90CF90BF90AF90E1 +:102610009F908F9008952F923F924F925F926F926A +:102620007F928F929F92AF92BF92CF92DF92EF9262 +:10263000FF920F931F93CF93DF93CDB7DEB7E99748 +:102640000FB6F894DEBF0FBECDBF3C01362E242E50 +:10265000DC011296ED90FC9013971A968C918111E3 +:1026600003C1D701ED91FC910190F081E02D60E074 +:10267000C70129AF09956C0129AD009709F4F6C08F +:10268000FC01A080B180A114B10409F4F1C04301A0 +:10269000F4E08F0E911CDC0111969C928E921496A0 +:1026A0002C93FE0131962F018F0128E030E040E0AD +:1026B00060E0D30112968D919C9113970E943F0D7B +:1026C000F60114828111DAC019818D81893009F0F7 +:1026D000D1C0D701ED91FC910280F381E02D222D34 +:1026E00041E0632DC7010995F3018287882309F42E +:1026F000C3C098859583282F40E060E08281938154 +:102700000E94EC0D082F882391F0D601AD92BC9267 +:10271000D701ED91FC910480F581E02DD3011A964B +:102720006C91C7010995F3011286102FABC01132CD +:1027300008F010E2D601AD92BC9211110BC09401C9 +:1027400042E0F3016285828193810E948D088111AC +:1027500098C011C0212F30E0820140E0D3011A96C9 +:102760006C911A9712968D919C9113970E943F0D30 +:10277000811187C0E4CF1F921F925F924F921F92E8 +:1027800088E08F9388E0882E912CA12CB12C99E2BF +:10279000C92EE12C06E020EA40E0F3016285828147 +:1027A00093810E945F0C182F0F900F900F900F9045 +:1027B0000F900F90811166C08B81D3011B968C9373 +:1027C0001B97720100E028E030E040E01A966C911F +:1027D0001A9712968D919C9113970E94660D811104 +:1027E00050C02B813C8140E0F3016285828193815E +:1027F0000E94660D811145C0298130E0CE0181968D +:102800007C0140E0D3011A966C911A9712968D9133 +:102810009C9113970E94660D811133C02E8140E078 +:10282000F3016285828193810E941B0E811129C070 +:1028300001E0D3011B968C911B97801740F020E09C +:10284000402F68E0C3010E94E0120F5FF2CF1296A2 +:10285000ED91FC911397EA58FF4F8081846080834B +:1028600081E050968C930EC019ED0CC016ED0AC095 +:1028700017ED08C011ED06C014ED04C0F601B182D9 +:10288000A082182F812FE9960FB6F894DEBF0FBEF5 +:10289000CDBFDF91CF911F910F91FF90EF90DF900F +:1028A000CF90BF90AF909F908F907F906F905F90F0 +:1028B0004F903F902F900895BF92CF92DF92EF926A +:1028C000FF920F931F93CF93DF9300D000D0CDB72B +:1028D000DEB77C01B62E19821A821B821C8220E090 +:1028E000462F61E10E948C1220E04B2D60E1C70170 +:1028F0000E948C1220E04B2D64E0C7010E94E01280 +:1029000023E0C22ED12C9E012F5F3F4F44E050E0C8 +:102910006B2DC7010E94B712882301F120E04B2DD7 +:1029200064E1C7010E948C1220E04B2D60E1C701D9 +:102930000E948C1264E170E080E090E00E94E71653 +:102940000F900F900F900F90DF91CF911F910F91EB +:10295000FF90EF90DF90CF90BF90089509811A818A +:102960002B813C811D7F0330114020413105B1F2A4 +:1029700064E670E080E090E00E94E71681E0C81A0B +:10298000D10809F0C0CFCACFCF93DF93FC018BE70A +:1029900091E0918380837383628312861386148609 +:1029A000158616861786108A148288E085839CE334 +:1029B000968391E09783808784E081876115710514 +:1029C000B9F0CB01A0E0B0E0EC01CA5ADF4F28819A +:1029D0003981232B41F49B96AA0FBB1FA60FB71F6B +:1029E000ED93FC9305C011960296A031B10561F7F5 +:1029F000DF91CF910895DF92EF92FF920F931F9393 +:102A0000CF93DF93EC01D62E7A01FA010081118178 +:102A1000228133810130F3E01F07F1E02F073105F8 +:102A2000D1F060F40115E1E01E072E07310571F1C8 +:102A3000013011402140310571F062C0033081E066 +:102A4000180780E128073105E1F1033013402041E8 +:102A50003105B9F155C080916302811151C020E068 +:102A60004D2D61E1CE010E948C1220E04D2D60E1E0 +:102A7000CE010E948C1220E04D2D64E0CE010E9418 +:102A8000E01281E08093630281EB3BC020E0462F9F +:102A900061E1CE010E948C1220E04D2D60E1CE015B +:102AA0000E948C12109263026A8567708D2D877068 +:102AB000660F660F660F682B8A819B810E947D07D7 +:102AC0001FC020E04D2D64E1CE010E948C1220E059 +:102AD0004D2D60E1CE010E948C1264E170E080E037 +:102AE00090E00E94E7166A85F70121812695217002 +:102AF00067704D2D8A819B810E942E0F1092630278 +:102B000080E0DF91CF911F910F91FF90EF90DF90C8 +:102B10000895CF92DF92EF920F931F93CF93DF939D +:102B2000CDB7DEB72E970FB6F894DEBF0FBECDBF80 +:102B30006C0181E090E09E878D87E12C8E010F5F14 +:102B40001F4F9E01235F3F4F41E0F6016285828166 +:102B500093810E94400E811151C002E011E08981F1 +:102B60008023D1F019861A861B861C869E01275F5A +:102B70003F4F44E050E0612FC6010E94B71281111F +:102B80000BC0AE01475F5F4F612FC6010E94FB146F +:102B9000813B99F1811132C0000F1F5F1830F9F6A7 +:102BA00011E0F6018385811740F119861A861B868C +:102BB0001C869E01275F3F4F44E050E0612FC60115 +:102BC0000E94B712811117C089859A85877091700C +:102BD0008130914081F48B859C8581609C878B87B7 +:102BE000AE01475F5F4F612FC6010E94FB14813B1E +:102BF00021F0811103C01F5FD4CF80E02E960FB665 +:102C0000F894DEBF0FBECDBFDF91CF911F910F9122 +:102C1000EF90DF90CF9008950F931F93CF93DF93A2 +:102C2000EC0188898823F1F00E94B8160C851D8577 +:102C30002E853F85601B710B820B930B97FD0FC098 +:102C4000CE010E948915182F0E94B8166C597F4F2B +:102C50008F4F9F4F6C877D878E879F8701C010E0C5 +:102C6000812F01C080E0DF91CF911F910F910895D6 +:102C7000CF93CFB7F89480916702811127C0EAE91A +:102C8000F0E08491E6E8F0E09491E82FF0E0EE0FB8 +:102C9000FF1FE255FF4FA591B4918C91892321F438 +:102CA00061E08AE00E94C91761E08AE00E94901703 +:102CB0008CB580618CBD8CB580648CBD61E08DE08D +:102CC0000E94901761E08BE00E949017809167024C +:102CD0008F5F80936702CFBFCF9108951F920F92AD +:102CE0000FB60F9211242F933F938F939F93AF931F +:102CF000BF938091690290916A02A0916B02B0919A +:102D00006C023091680223E0230F2D3720F40196E6 +:102D1000A11DB11D05C026E8230F0296A11DB11DFE +:102D2000209368028093690290936A02A0936B02D9 +:102D3000B0936C0280916D0290916E02A0916F022F +:102D4000B09170020196A11DB11D80936D02909308 +:102D50006E02A0936F02B0937002BF91AF919F91EA +:102D60008F913F912F910F900FBE0F901F9018954C +:102D70002FB7F8946091690270916A0280916B029A +:102D800090916C022FBF08953FB7F89480916D0227 +:102D900090916E02A0916F02B091700226B5A89B2F +:102DA00005C02F3F19F00196A11DB11D3FBF662739 +:102DB000782F892F9A2F620F711D811D911D42E07E +:102DC000660F771F881F991F4A95D1F708958F9234 +:102DD0009F92AF92BF92CF92DF92EF92FF926B01E0 +:102DE0007C010E94C4164B015C01C114D104E104B2 +:102DF000F104F1F00E9408190E94C41668197909BB +:102E00008A099B09683E73408105910570F321E0B2 +:102E1000C21AD108E108F10888EE880E83E0981EF6 +:102E2000A11CB11CC114D104E104F10429F7DDCFC8 +:102E3000FF90EF90DF90CF90BF90AF909F908F90DA +:102E400008958230910538F0880F991F880F991FD7 +:102E500005970197F1F70895789484B5826084BD51 +:102E600084B5816084BD85B5826085BD85B581608E +:102E700085BDEEE6F0E0808181608083E1E8F0E0EE +:102E80001082808182608083808181608083E0E81D +:102E9000F0E0808181608083E1EBF0E080818460FC +:102EA0008083E0EBF0E0808181608083EAE7F0E0FE +:102EB0008081846080838081826080838081816062 +:102EC00080838081806880831092C1000895833060 +:102ED00081F028F4813099F08230A1F00895873094 +:102EE000A9F08830B9F08430D1F4809180008F7DD2 +:102EF00003C0809180008F7780938000089584B50F +:102F00008F7702C084B58F7D84BD08958091B00015 +:102F10008F7703C08091B0008F7D8093B0000895BB +:102F2000CF93DF9390E0FC01E458FF4F2491FC0124 +:102F3000E057FF4F8491882349F190E0880F991F53 +:102F4000FC01E255FF4FA591B4918C559F4FFC01B8 +:102F5000C591D4919FB7611108C0F8948C912095C8 +:102F600082238C93888182230AC0623051F4F894C2 +:102F70008C91322F309583238C938881822B888388 +:102F800004C0F8948C91822B8C939FBFDF91CF91DA +:102F900008950F931F93CF93DF931F92CDB7DEB7A2 +:102FA000282F30E0F901E859FF4F8491F901E458E6 +:102FB000FF4F1491F901E057FF4F04910023C9F02E +:102FC000882321F069830E9467176981E02FF0E070 +:102FD000EE0FFF1FEC55FF4FA591B4919FB7F894EA +:102FE0008C91611103C01095812301C0812B8C93BA +:102FF0009FBF0F90DF91CF911F910F9108951F9266 +:103000000F920FB60F9211242F938F939F93EF93EC +:10301000FF93E0918102F09182028081E09187022A +:10302000F091880282FD12C0908180918A028F5FA8 +:103030008F7320918B02821751F0E0918A02F0E0A9 +:10304000EF58FD4F958F80938A0201C08081FF91D8 +:10305000EF919F918F912F910F900FBE0F901F9026 +:1030600018951F920F920FB60F9211242F933F9332 +:103070004F935F936F937F938F939F93AF93BF9380 +:10308000EF93FF9381E792E00E944419FF91EF9143 +:10309000BF91AF919F918F917F916F915F914F9170 +:1030A0003F912F910F900FBE0F901F90189581E7C1 +:1030B00092E00E94091921E0892B09F420E0822F77 +:1030C0000895109274021092730288EE93E0A0E0CB +:1030D000B0E08093750290937602A0937702B0934C +:1030E000780280EA91E0909372028093710285ECFD +:1030F00090E090937E0280937D0284EC90E0909328 +:10310000800280937F0280EC90E090938202809313 +:10311000810281EC90E0909384028093830282ECA0 +:1031200090E0909386028093850286EC90E09093E5 +:1031300088028093870210928A0210928B0210926A +:103140008C0210928D020895CF92DF92EF92FF923F +:103150000F931F93CF93DF937C016A01EB0100E093 +:1031600010E00C151D0571F06991D701ED91FC91EE +:103170000190F081E02DC7010995892B19F00F5FAF +:103180001F4FEFCFC801DF91CF911F910F91FF909B +:10319000EF90DF90CF9008956115710581F0DB010C +:1031A0000D900020E9F7AD0141505109461B570B26 +:1031B000DC01ED91FC910280F381E02D099480E027 +:1031C00090E008956DE871E00C94CC180F931F9374 +:1031D000CF93DF93EC010E94CC188C01CE010E94AA +:1031E000E218800F911FDF91CF911F910F910895E9 +:1031F00008950E942C170E94F8180E946206C6E3E8 +:10320000D9E10E949A052097E1F30E943619F9CF7F +:103210000895FC01818D228D90E0805C9F4F821B80 +:1032200091098F7399270895FC01918D828D9817CC +:1032300031F0828DE80FF11D858D90E008958FEFBC +:103240009FEF0895FC01918D828D981761F0828D1A +:10325000DF01A80FB11D5D968C91928D9F5F9F73CA +:10326000928F90E008958FEF9FEF089587E598E1A2 +:10327000892B49F080E090E0892B29F00E945718B3 +:1032800081110C9400000895FC01848DDF01A80FCA +:10329000B11DA35ABF4F2C91848D90E001968F737E +:1032A0009927848FA689B7892C93A089B1898C919D +:1032B00080648C93938D848D981306C00288F38963 +:1032C000E02D80818F7D80830895CF93DF93EC0183 +:1032D000888D8823C9F0EA89FB89808185FD05C036 +:1032E000A889B9898C9186FD0FC00FB607FCF5CF70 +:1032F000808185FFF2CFA889B9898C9185FFEDCFB8 +:10330000CE010E944419E7CFDF91CF910895CF926B +:10331000DF92FF920F931F93CF93DF931F92CDB74E +:10332000DEB76C0181E0D60158968C9358975B9676 +:103330009C915B975C968C915C97981307C0509614 +:10334000ED91FC915197808185FD2EC0F601038D92 +:1033500010E00F5F1F4F0F731127F02EF601848DC1 +:10336000F81211C00FB607FCF9CFD6015096ED91B7 +:10337000FC915197808185FFF1CFC60169830E943E +:1033800044196981EBCF838DE80FF11DE35AFF4F9C +:103390006083D6015B960C935B975296ED91FC91FE +:1033A0005397808180620CC0D6015696ED91FC91B6 +:1033B000579760835096ED91FC915197808180647E +:1033C000808381E090E00F90DF91CF911F910F916A +:1033D000FF90DF90CF900895AA1BBB1B51E107C05F +:1033E000AA1FBB1FA617B70710F0A61BB70B881F95 +:1033F000991F5A95A9F780959095BC01CD01089524 +:1034000097FB072E16F4009407D077FD09D00E9491 +:10341000EC1907FC05D03EF4909581959F4F0895D7 +:10342000709561957F4F0895EE0FFF1F0590F49101 +:10343000E02D0994DC0101C06D9341505040E0F74C +:063440000895F894FFCF8F +:1034460000000E0380000C000100320000000400A2 +:103456000200010003004F534320646964206E6F2D +:10346600742073746172742E00000000004D020017 +:103476000000002A0100000000CA1135012B0130AE +:10348600018F009000AF00B0000000000026048805 +:1034960000BA00B803D5008A008B00D800DD00E230 +:1034A60000B100EA00ED00FEFF0000200100000070 +:1034B600005208DE07D30E000000000B1388006AD6 +:1034C600120C1662125C148B0065128D000D0A0038 +:1034D6006E616E00696E66006F7666000000000021 +:0C34E6008719A418091922191419651976 +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:0400000300007E007B +:00000001FF diff --git a/USB Mouse Interface/mousepaint.dsk b/USB Mouse Interface/mousepaint.dsk new file mode 100644 index 0000000000000000000000000000000000000000..2c2e941cd8281e72d57a6cda4d8934942a0057e5 GIT binary patch literal 143360 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%0ARU_Ph+j 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