summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBluebie <a@creativepony.com>2013-03-04 13:07:45 +1100
committerBluebie <a@creativepony.com>2013-03-04 13:07:45 +1100
commitd5788624c23c1794c732401e1a4807366ed8a166 (patch)
treed3e0f473f31e23d2c325fdc7b215f1d339f740ec
parent3d75771c55db65d3f1869c4d81e959f4b27eeb4a (diff)
downloadmicronucleus-d5788624c23c1794c732401e1a4807366ed8a166.tar.gz
micronucleus-d5788624c23c1794c732401e1a4807366ed8a166.tar.bz2
micronucleus-d5788624c23c1794c732401e1a4807366ed8a166.zip
Firmware & Upgrade: Released 1.06! yet to add -jumper release tho. Fixes clock speed thing - always starts at 16.5mhz now!
-rw-r--r--firmware/Makefile2
-rw-r--r--firmware/main.c18
-rw-r--r--firmware/releases/micronucleus-1.06.hex137
-rw-r--r--firmware/releases/release notes.txt7
-rw-r--r--upgrade/bootloader_data.c8
-rw-r--r--upgrade/releases/micronucleus-1.06-upgrade.hex185
6 files changed, 343 insertions, 14 deletions
diff --git a/firmware/Makefile b/firmware/Makefile
index 72c034b..8dfba5d 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -24,7 +24,7 @@ LOCKOPT = -U lock:w:0x2f:m
# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068
# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125
# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780
-BOOTLOADER_ADDRESS = 17c0
+BOOTLOADER_ADDRESS = 1780
PROGRAMMER = -c USBasp
# PROGRAMMER contains AVRDUDE options to address your programmer
diff --git a/firmware/main.c b/firmware/main.c
index 708f474..0db320c 100644
--- a/firmware/main.c
+++ b/firmware/main.c
@@ -10,7 +10,7 @@
*/
#define MICRONUCLEUS_VERSION_MAJOR 1
-#define MICRONUCLEUS_VERSION_MINOR 5
+#define MICRONUCLEUS_VERSION_MINOR 6
// how many milliseconds should host wait till it sends another erase or write?
// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms
#define MICRONUCLEUS_WRITE_SLEEP 8
@@ -368,6 +368,17 @@ static inline void leaveBootloader(void) {
// clear magic word from bottom of stack before jumping to the app
*(uint8_t*)(RAMEND) = 0x00;
*(uint8_t*)(RAMEND-1) = 0x00;
+
+ // adjust clock to previous calibration value, so user program always starts with same calibration
+ // as when it was uploaded originally
+ // TODO: Test this and find out, do we need the +1 offset?
+ unsigned char stored_osc_calibration = pgm_read_byte(BOOTLOADER_ADDRESS - TINYVECTOR_OSCCAL_OFFSET);
+ if (stored_osc_calibration != 0xFF && stored_osc_calibration != 0x00) {
+ //OSCCAL = stored_osc_calibration; // this should really be a gradual change, but maybe it's alright anyway?
+ // do the gradual change - failed to score extra free bytes anyway in 1.06
+ while (OSCCAL > stored_osc_calibration) OSCCAL--;
+ while (OSCCAL < stored_osc_calibration) OSCCAL++;
+ }
// jump to application reset vector at end of flash
asm volatile ("rjmp __vectors - 4");
@@ -382,11 +393,6 @@ int main(void) {
uint8_t prescaler_default = CLKPR;
#endif
- unsigned char stored_osc_calibration = pgm_read_byte(BOOTLOADER_ADDRESS - TINYVECTOR_OSCCAL_OFFSET + 1);
- if (stored_osc_calibration != 0xFF) {
- OSCCAL = stored_osc_calibration;
- }
-
wdt_disable(); /* main app may have enabled watchdog */
tiny85FlashInit();
bootLoaderInit();
diff --git a/firmware/releases/micronucleus-1.06.hex b/firmware/releases/micronucleus-1.06.hex
new file mode 100644
index 0000000..301751f
--- /dev/null
+++ b/firmware/releases/micronucleus-1.06.hex
@@ -0,0 +1,137 @@
+:1017800022C040C06CC03EC03DC03CC03BC03AC05F
+:1017900039C038C037C036C035C034C033C0040388
+:1017A000090412011001FF000008D01653070601BA
+:1017B000000000010902120001010080320904004A
+:1017C00000000000000011241FBECFE5D2E0DEBF04
+:1017D000CDBF00EB0F9307E00F9310E0A0E6B0E061
+:1017E000ECEDFFE102C005900D92A636B107D9F7E6
+:1017F00010E0A6E6B0E001C01D92AC39B107E1F7F8
+:10180000E7D1EAC3BDCFA82FB92F80E090E041E037
+:1018100050EA609530E009C02D9182279795879511
+:1018200010F084279527305EC8F36F5FA8F3089502
+:10183000EADF8D939D930895A6E088279927AA95BE
+:1018400069F00197E1F3B399FCCFB39BFECF81E040
+:101850009927A6B3019611F0A871D9F70895CF93EF
+:10186000CFB7CF93C0915F02C03B21F4C0915E021D
+:10187000C73021F0CF91CFBFCF9181CFCC27C39577
+:10188000B39BE9F7B39B0BC0B39B09C0B39B07C0E5
+:10189000B39B05C0B39B03C0B39B01C0D3C00F92E1
+:1018A000DF93C0917F00DD27CA57DF4F012EB39B26
+:1018B00003C0DF910F90E6CF2F930F931F934F93A9
+:1018C0002FEF4F6F06B303FB20F95F933F9350E078
+:1018D0003BE065C016B30126502953FDC89556B3A9
+:1018E000012703FB25F92F7306B3B1F0502710270A
+:1018F00013FB26F906B22230F0F000C016B3012720
+:1019000003FB27F90126502906B22430E8F54F776A
+:10191000206816B30000F6CF50274F7D206206B234
+:10192000102F000000C006B300265029102713FB1B
+:1019300026F906B2E2CF4F7B06B3206400C0DACFAF
+:1019400001265029187106B269F14E7F2160012FDE
+:1019500016B328C0002650294D7F06B22260102FF2
+:1019600029C0012650294B7F06B22460012F2DC0CB
+:1019700016B301265029477F2860000006B22EC00A
+:101980004F7E06B3206130C0422706B3499300263C
+:101990005029102706B24FEF13FB20F9297F16B309
+:1019A00079F2187159F10126502906B2012703FB7B
+:1019B00021F9237F06B371F2002650293150D0F06F
+:1019C00006B2102713FB22F9277E16B351F2012627
+:1019D0005029012703FB06B223F92F7C49F20000AE
+:1019E00006B3102713FB24F90026502906B22F79DD
+:1019F00039F270CF10E21ABF002717C03B50319563
+:101A0000C31BD04010E21ABF0881033CF9F00B342D
+:101A1000E9F020917D001981110F1213EDCF0936E5
+:101A200051F10D3211F0013E39F7009384003F91DE
+:101A30005F914F911F910F912F91DF910F90CAB736
+:101A4000C5FD1DCFCF91CFBFCF91189520918400B8
+:101A5000222369F310918200112321F5343022F101
+:101A60003093820020937E0010917F003BE0311B79
+:101A700030937F0019C00091820001309CF40AE588
+:101A80003091600034FD11C000936000C2E7D0E0E7
+:101A900010C0052710E000C021C0052710E0C89540
+:101AA00008BB14C03AE501C032ED032EC0E0D0E01F
+:101AB00032E017B31861C39A08B317BB58E120E8A6
+:101AC0004FEF20FF052708BB279517951C3F28F7E8
+:101AD00000004552B0F720FF0527279508BB179552
+:101AE0001C3FB8F629913A9561F7077E1091830063
+:101AF000110F08BBC250D04011F010937D0010E2CE
+:101B00001ABF086017B3177E402F477E54E05A95DE
+:101B1000F1F708BB17BB48BB8ACF81E0809369000F
+:101B2000F894E0917000F0917100329785E0809315
+:101B30005700E89507B600FCFDCF789408959C0106
+:101B4000E0917000F0917100309789F1E430F10577
+:101B5000F1F087E1EC37F80739F420916C0030910F
+:101B60006D002E5B3B4F15C087E1EE37F80739F467
+:101B700020916E0030916F002D5B3B4F0AC087E1D2
+:101B8000EA37F80731F481B7282F30E002C02FEB95
+:101B90003BECF89481E0090180935700E89511240B
+:101BA00078943296F0937100E0937000089581E18B
+:101BB00080935700E895EBCF8FEF9FEFC0DF8091C8
+:101BC0007000909171008F739070892BA9F7A5CF49
+:101BD0001F93CF93DF9388E10FB6F89481BD11BCBA
+:101BE0000FBEE0E0F0E0859194918F5B9B4C39F45F
+:101BF000E4E0F0E0859194918F5B9B4C09F0DCDF91
+:101C00001092710010927000AC9A8BB780628BBFFB
+:101C1000BB9A88E893E1ECE9F1E03197F1F701979D
+:101C2000D1F7BB98789410918200135017FDD4C05F
+:101C300080917F00CCE0D0E0C81BD109CA57DF4FAC
+:101C400080917E008D3209F091C0183009F0C2C039
+:101C500083EC809372008AE58093600010926B00A1
+:101C60002881822F80769981882329F1109267003C
+:101C700010926600992341F482E690E090938100EF
+:101C80008093800024E068C0913051F48C819D8164
+:101C9000909371008093700027FD59C09FEF58C04A
+:101CA00080916800923011F4816001C0846080935B
+:101CB000680020E051C08A8110927B00992331F4A2
+:101CC00010927C008BE790E022E03CC0953019F444
+:101CD0008093830034C0963011F58B81813019F4E4
+:101CE00082EA97E104C0823041F484EB97E190935B
+:101CF00081008093800022E10EC0833059F48A81F4
+:101D0000882341F48EE997E19093810080938000CD
+:101D100024E001C020E080E480936B001DC0983077
+:101D200019F485E890E009C0993019F48093850092
+:101D300006C09A3021F48BE790E021E003C08BE7E6
+:101D400090E020E0909381008093800005C09E8108
+:101D500080E880936B0007C08F81882319F49E81EF
+:101D6000921708F0922F9093610034C080916B001D
+:101D700087FF30C08091700090917100009739F416
+:101D80008881998190936D0080936C000DC08430A0
+:101D9000910539F48881998190936F0080936E004A
+:101DA00003C08058974138F488819981C8DE125069
+:101DB00011F02296DFCF80917000909171008F73A7
+:101DC0009070892B39F4809168008260809368005C
+:101DD00010926100109282008091600084FF3CC0EC
+:101DE000809161008F3FC1F1182F893008F018E011
+:101DF000811B809361008091720098E8892780930D
+:101E000072001123E1F0E0918000F0918100809157
+:101E10006B0086FF09C0912FA3E7B0E084918D93FA
+:101E200031969150D9F707C0912FA3E7B0E0819187
+:101E30008D939150E1F7F0938100E093800083E768
+:101E400090E0612FF5DC612F6C5F6C3019F08FEF43
+:101E5000809361006093600094E186B3887131F4EF
+:101E60009150D9F71092830010927D0010E09923D1
+:101E700009F411E080916A00811739F0112319F4F7
+:101E8000F8946BD0789410936A008CE991E00197F4
+:101E9000F1F780916600909167000196909367003A
+:101EA0008093660080916800182F80FF14C0F8941A
+:101EB000E0E8F7E1E054F04083E080935700E895D4
+:101EC00007B600FCFDCF3097A9F710927100109271
+:101ED000700072DE789411FF0FC08AE390E20197E0
+:101EE000F1F780917000909171008F739070892B41
+:101EF00011F062DE01C011DE12FD0AC0109268000E
+:101F000080916600909167008055934C08F48BCEC9
+:101F100082E291EA0197F1F7F8941BBE15BA10928C
+:101F20005F0210925E02EAE7F7E19491892F8150F7
+:101F30008E3F20F00DC081B7815081BF81B79817C7
+:101F4000D0F303C081B78F5F81BF81B78917D0F30A
+:101F500015CCDF91CF911F910895FF920F931F939E
+:101F6000CF93DF9380E8F82E00E0C0E0D0E0102FA0
+:101F70001F0D11BF61DC29E0843392070CF0102F94
+:101F8000F6942196C830D10511F0012FF0CF1150F1
+:101F900011BF1F5F012FEC0110C04EDC845399402C
+:101FA00097FF03C0909581959F4F8C179D0714F460
+:101FB00001B7EC0181B78F5F81BF21B730E0812F7E
+:101FC00090E001968217930744F701BFDF91CF910C
+:0C1FD0001F910F91FF900895F894FFCF2F
+:061FDC005AFF177C4008CB
+:040000030000178062
+:00000001FF
diff --git a/firmware/releases/release notes.txt b/firmware/releases/release notes.txt
index 3378066..c513de6 100644
--- a/firmware/releases/release notes.txt
+++ b/firmware/releases/release notes.txt
@@ -1,10 +1,11 @@
-== 1.06 - unreleased ==
+== 1.06 - 2013-3-4 ==
firmware:
o Store 16.5mhz oscillator calibration value in tiny vector table
- o At startup, restore oscillator calibration value before initialising USB
+ o At user program startup, restore oscillator calibration value stored together with program
-> User programs always start on the calibration value from the last time they were uploaded
- -> Bootloader is ready to talk over USB sooner, because it is closer to already being calibrated at startup
+ o Slightly too big to have 6076 programmable bytes, reverted to having 6012 bytes free for user program
+ -> Hopefully a future version can slim down again and get another page free!
== 1.05 - 2013-2-8 ==
diff --git a/upgrade/bootloader_data.c b/upgrade/bootloader_data.c
index f388b99..5c69228 100644
--- a/upgrade/bootloader_data.c
+++ b/upgrade/bootloader_data.c
@@ -1,9 +1,9 @@
// This file contains the bootloader data itself and the address to install the bootloader at
// Use generate-data.rb with ruby 1.9 to generate these values from a hex file
-// Generated from ../firmware/main.hex at 2013-02-08 21:39:33 +1100
+// Generated from ../firmware/releases/micronucleus-1.06.hex at 2013-03-04 11:55:05 +1100
-uint16_t bootloader_data[1051] PROGMEM = {
-0xc022, 0xc040, 0xc06c, 0xc03e, 0xc03d, 0xc03c, 0xc03b, 0xc03a, 0xc039, 0xc038, 0xc037, 0xc036, 0xc035, 0xc034, 0xc033, 0x0304, 0x0409, 0x0112, 0x0110, 0x00ff, 0x0800, 0x16d0, 0x0753, 0x0105, 0x0000, 0x0100, 0x0209, 0x0012, 0x0101, 0x8000, 0x0932, 0x0004, 0x0000, 0x0000, 0x0000, 0x2411, 0xbe1f, 0xe5cf, 0xe0d2, 0xbfde, 0xbfcd, 0xeb00, 0x930f, 0xe007, 0x930f, 0xe010, 0xe6a0, 0xe0b0, 0xefe0, 0xe1ff, 0xc002, 0x9005, 0x920d, 0x36a6, 0x07b1, 0xf7d9, 0xe010, 0xe6a6, 0xe0b0, 0xc001, 0x921d, 0x39ac, 0x07b1, 0xf7e1, 0xd1df, 0xc3d4, 0xcfbd, 0x2fa8, 0x2fb9, 0xe080, 0xe090, 0xe041, 0xea50, 0x9560, 0xe030, 0xc009, 0x912d, 0x2782, 0x9597, 0x9587, 0xf010, 0x2784, 0x2795, 0x5e30, 0xf3c8, 0x5f6f, 0xf3a8, 0x9508, 0xdfea, 0x938d, 0x939d, 0x9508, 0xe0a6, 0x2788, 0x2799, 0x95aa, 0xf069, 0x9701, 0xf3e1, 0x99b3, 0xcffc, 0x9bb3, 0xcffe, 0xe081, 0x2799, 0xb3a6, 0x9601, 0xf011, 0x71a8, 0xf7d9, 0x9508, 0x93cf, 0xb7cf, 0x93cf, 0x91c0, 0x025f, 0x3bc0, 0xf421, 0x91c0, 0x025e, 0x30c7, 0xf021, 0x91cf, 0xbfcf, 0x91cf, 0xcf81, 0x27cc, 0x95c3, 0x9bb3, 0xf7e9, 0x9bb3, 0xc00b, 0x9bb3, 0xc009, 0x9bb3, 0xc007, 0x9bb3, 0xc005, 0x9bb3, 0xc003, 0x9bb3, 0xc001, 0xc0d3, 0x920f, 0x93df, 0x91c0, 0x007f, 0x27dd, 0x57ca, 0x4fdf, 0x2e01, 0x9bb3, 0xc003, 0x91df, 0x900f, 0xcfe6, 0x932f, 0x930f, 0x931f, 0x934f, 0xef2f, 0x6f4f, 0xb306, 0xfb03, 0xf920, 0x935f, 0x933f, 0xe050, 0xe03b, 0xc065, 0xb316, 0x2601, 0x2950, 0xfd53, 0x95c8, 0xb356, 0x2701, 0xfb03, 0xf925, 0x732f, 0xb306, 0xf0b1, 0x2750, 0x2710, 0xfb13, 0xf926, 0xb206, 0x3022, 0xf0f0, 0xc000, 0xb316, 0x2701, 0xfb03, 0xf927, 0x2601, 0x2950, 0xb206, 0x3024, 0xf5e8, 0x774f, 0x6820, 0xb316, 0x0000, 0xcff6, 0x2750, 0x7d4f, 0x6220, 0xb206, 0x2f10, 0x0000, 0xc000, 0xb306, 0x2600, 0x2950, 0x2710, 0xfb13, 0xf926, 0xb206, 0xcfe2, 0x7b4f, 0xb306, 0x6420, 0xc000, 0xcfda, 0x2601, 0x2950, 0x7118, 0xb206, 0xf169, 0x7f4e, 0x6021, 0x2f01, 0xb316, 0xc028, 0x2600, 0x2950, 0x7f4d, 0xb206, 0x6022, 0x2f10, 0xc029, 0x2601, 0x2950, 0x7f4b, 0xb206, 0x6024, 0x2f01, 0xc02d, 0xb316, 0x2601, 0x2950, 0x7f47, 0x6028, 0x0000, 0xb206, 0xc02e, 0x7e4f, 0xb306, 0x6120, 0xc030, 0x2742, 0xb306, 0x9349, 0x2600, 0x2950, 0x2710, 0xb206, 0xef4f, 0xfb13, 0xf920, 0x7f29, 0xb316, 0xf279, 0x7118, 0xf159, 0x2601, 0x2950, 0xb206, 0x2701, 0xfb03, 0xf921, 0x7f23, 0xb306, 0xf271, 0x2600, 0x2950, 0x5031, 0xf0d0, 0xb206, 0x2710, 0xfb13, 0xf922, 0x7e27, 0xb316, 0xf251, 0x2601, 0x2950, 0x2701, 0xfb03, 0xb206, 0xf923, 0x7c2f, 0xf249, 0x0000, 0xb306, 0x2710, 0xfb13, 0xf924, 0x2600, 0x2950, 0xb206, 0x792f, 0xf239, 0xcf70, 0xe210, 0xbf1a, 0x2700, 0xc017, 0x503b, 0x9531, 0x1bc3, 0x40d0, 0xe210, 0xbf1a, 0x8108, 0x3c03, 0xf0f9, 0x340b, 0xf0e9, 0x9120, 0x007d, 0x8119, 0x0f11, 0x1312, 0xcfed, 0x3609, 0xf151, 0x320d, 0xf011, 0x3e01, 0xf739, 0x9300, 0x0084, 0x913f, 0x915f, 0x914f, 0x911f, 0x910f, 0x912f, 0x91df, 0x900f, 0xb7ca, 0xfdc5, 0xcf1d, 0x91cf, 0xbfcf, 0x91cf, 0x9518, 0x9120, 0x0084, 0x2322, 0xf369, 0x9110, 0x0082, 0x2311, 0xf521, 0x3034, 0xf122, 0x9330, 0x0082, 0x9320, 0x007e, 0x9110, 0x007f, 0xe03b, 0x1b31, 0x9330, 0x007f, 0xc019, 0x9100, 0x0082, 0x3001, 0xf49c, 0xe50a, 0x9130, 0x0060, 0xfd34, 0xc011, 0x9300, 0x0060, 0xe7c2, 0xe0d0, 0xc010, 0x2705, 0xe010, 0xc000, 0xc021, 0x2705, 0xe010, 0x95c8, 0xbb08, 0xc014, 0xe53a, 0xc001, 0xed32, 0x2e03, 0xe0c0, 0xe0d0, 0xe032, 0xb317, 0x6118, 0x9ac3, 0xb308, 0xbb17, 0xe158, 0xe820, 0xef4f, 0xff20, 0x2705, 0xbb08, 0x9527, 0x9517, 0x3f1c, 0xf728, 0x0000, 0x5245, 0xf7b0, 0xff20, 0x2705, 0x9527, 0xbb08, 0x9517, 0x3f1c, 0xf6b8, 0x9129, 0x953a, 0xf761, 0x7e07, 0x9110, 0x0083, 0x0f11, 0xbb08, 0x50c2, 0x40d0, 0xf011, 0x9310, 0x007d, 0xe210, 0xbf1a, 0x6008, 0xb317, 0x7e17, 0x2f40, 0x7e47, 0xe054, 0x955a, 0xf7f1, 0xbb08, 0xbb17, 0xbb48, 0xcf8a, 0xe081, 0x9380, 0x0069, 0x94f8, 0x91e0, 0x0070, 0x91f0, 0x0071, 0x9732, 0xe085, 0x9380, 0x0057, 0x95e8, 0xb607, 0xfc00, 0xcffd, 0x9478, 0x9508, 0x019c, 0x91e0, 0x0070, 0x91f0, 0x0071, 0x9730, 0xf149, 0x30e4, 0x05f1, 0xf0b1, 0xe187, 0x3bec, 0x07f8, 0xf439, 0x9120, 0x006c, 0x9130, 0x006d, 0x5d2e, 0x4f3b, 0xc00d, 0xe187, 0x3bee, 0x07f8, 0xf449, 0x9120, 0x006e, 0x9130, 0x006f, 0x5d2d, 0x4f3b, 0xc002, 0xed2f, 0xec3b, 0x94f8, 0xe081, 0x0109, 0x9380, 0x0057, 0x95e8, 0x2411, 0x9478, 0x9632, 0x93f0, 0x0071, 0x93e0, 0x0070, 0x9508, 0xe181, 0x9380, 0x0057, 0x95e8, 0xcfeb, 0xef8f, 0xef9f, 0xdfc8, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf7a9, 0xcfad, 0x931f, 0x93cf, 0x93df, 0xe188, 0xb60f, 0x94f8, 0xbd81, 0xbc11, 0xbe0f, 0xe0e0, 0xe0f0, 0x9185, 0x9194, 0x5d8f, 0x4c9b, 0xf439, 0xe0e4, 0xe0f0, 0x9185, 0x9194, 0x5d8f, 0x4c9b, 0xf009, 0xdfdc, 0x9210, 0x0071, 0x9210, 0x0070, 0x9abd, 0x9ac5, 0xe282, 0xea91, 0x9701, 0xf7f1, 0xb386, 0x9582, 0x9586, 0x7087, 0xfd80, 0xc17d, 0x9aac, 0xb78b, 0x6280, 0xbf8b, 0x9abb, 0xe888, 0xe193, 0xe9ec, 0xe0f1, 0x9731, 0xf7f1, 0x9701, 0xf7d1, 0x98bb, 0x9478, 0x9110, 0x0082, 0x5013, 0xfd17, 0xc0d4, 0x9180, 0x007f, 0xe0cc, 0xe0d0, 0x1bc8, 0x09d1, 0x57ca, 0x4fdf, 0x9180, 0x007e, 0x328d, 0xf009, 0xc091, 0x3018, 0xf009, 0xc0c2, 0xec83, 0x9380, 0x0072, 0xe58a, 0x9380, 0x0060, 0x9210, 0x006b, 0x8128, 0x2f82, 0x7680, 0x8199, 0x2388, 0xf129, 0x9210, 0x0067, 0x9210, 0x0066, 0x2399, 0xf441, 0xe682, 0xe090, 0x9390, 0x0081, 0x9380, 0x0080, 0xe024, 0xc068, 0x3091, 0xf451, 0x818c, 0x819d, 0x9390, 0x0071, 0x9380, 0x0070, 0xfd27, 0xc059, 0xef9f, 0xc058, 0x9180, 0x0068, 0x3092, 0xf411, 0x6081, 0xc001, 0x6084, 0x9380, 0x0068, 0xe020, 0xc051, 0x818a, 0x9210, 0x007b, 0x2399, 0xf431, 0x9210, 0x007c, 0xe78b, 0xe090, 0xe022, 0xc03c, 0x3095, 0xf419, 0x9380, 0x0083, 0xc034, 0x3096, 0xf511, 0x818b, 0x3081, 0xf419, 0xee82, 0xe197, 0xc004, 0x3082, 0xf441, 0xef84, 0xe197, 0x9390, 0x0081, 0x9380, 0x0080, 0xe122, 0xc00e, 0x3083, 0xf459, 0x818a, 0x2388, 0xf441, 0xed8e, 0xe197, 0x9390, 0x0081, 0x9380, 0x0080, 0xe024, 0xc001, 0xe020, 0xe480, 0x9380, 0x006b, 0xc01d, 0x3098, 0xf419, 0xe885, 0xe090, 0xc009, 0x3099, 0xf419, 0x9380, 0x0085, 0xc006, 0x309a, 0xf421, 0xe78b, 0xe090, 0xe021, 0xc003, 0xe78b, 0xe090, 0xe020, 0x9390, 0x0081, 0x9380, 0x0080, 0xc005, 0x819e, 0xe880, 0x9380, 0x006b, 0xc007, 0x818f, 0x2388, 0xf419, 0x819e, 0x1792, 0xf008, 0x2f92, 0x9390, 0x0061, 0xc034, 0x9180, 0x006b, 0xff87, 0xc030, 0x9180, 0x0070, 0x9190, 0x0071, 0x9700, 0xf439, 0x8188, 0x8199, 0x9390, 0x006d, 0x9380, 0x006c, 0xc00d, 0x3084, 0x0591, 0xf439, 0x8188, 0x8199, 0x9390, 0x006f, 0x9380, 0x006e, 0xc003, 0x5c80, 0x4197, 0xf438, 0x8188, 0x8199, 0xdec4, 0x5012, 0xf011, 0x9622, 0xcfdf, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf439, 0x9180, 0x0068, 0x6082, 0x9380, 0x0068, 0x9210, 0x0061, 0x9210, 0x0082, 0x9180, 0x0060, 0xff84, 0xc03c, 0x9180, 0x0061, 0x3f8f, 0xf1c1, 0x2f18, 0x3089, 0xf008, 0xe018, 0x1b81, 0x9380, 0x0061, 0x9180, 0x0072, 0xe898, 0x2789, 0x9380, 0x0072, 0x2311, 0xf0e1, 0x91e0, 0x0080, 0x91f0, 0x0081, 0x9180, 0x006b, 0xff86, 0xc009, 0x2f91, 0xe7a3, 0xe0b0, 0x9184, 0x938d, 0x9631, 0x5091, 0xf7d9, 0xc007, 0x2f91, 0xe7a3, 0xe0b0, 0x9181, 0x938d, 0x5091, 0xf7e1, 0x93f0, 0x0081, 0x93e0, 0x0080, 0xe783, 0xe090, 0x2f61, 0xdcf1, 0x2f61, 0x5f6c, 0x306c, 0xf019, 0xef8f, 0x9380, 0x0061, 0x9360, 0x0060, 0xe194, 0xb386, 0x7188, 0xf431, 0x5091, 0xf7d9, 0x9210, 0x0083, 0x9210, 0x007d, 0xe010, 0x2399, 0xf409, 0xe011, 0x9180, 0x006a, 0x1781, 0xf039, 0x2311, 0xf419, 0x94f8, 0xd051, 0x9478, 0x9310, 0x006a, 0xe98c, 0xe091, 0x9701, 0xf7f1, 0x9180, 0x0066, 0x9190, 0x0067, 0x9601, 0x9390, 0x0067, 0x9380, 0x0066, 0x9180, 0x0068, 0x2f18, 0xff80, 0xc014, 0x94f8, 0xece0, 0xe1f7, 0x54e0, 0x40f0, 0xe083, 0x9380, 0x0057, 0x95e8, 0xb607, 0xfc00, 0xcffd, 0x9730, 0xf7a9, 0x9210, 0x0071, 0x9210, 0x0070, 0xde66, 0x9478, 0xff11, 0xc00f, 0xe38a, 0xe290, 0x9701, 0xf7f1, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf011, 0xde56, 0xc001, 0xde0d, 0xfd12, 0xc003, 0x9210, 0x0068, 0xce92, 0xe282, 0xea91, 0x9701, 0xf7f1, 0xba18, 0xba17, 0x94f8, 0xbe1b, 0xba15, 0x9210, 0x025f, 0x9210, 0x025e, 0xcc2b, 0x91df, 0x91cf, 0x911f, 0x9508, 0x92ff, 0x930f, 0x931f, 0x93cf, 0x93df, 0xe880, 0x2ef8, 0xe000, 0xe0c0, 0xe0d0, 0x2f10, 0x0d1f, 0xbf11, 0xdc77, 0xe029, 0x3384, 0x0792, 0xf00c, 0x2f10, 0x94f6, 0x9621, 0x30c8, 0x05d1, 0xf011, 0x2f01, 0xcff0, 0x5011, 0xbf11, 0x5f1f, 0x2f01, 0x01ec, 0xc010, 0xdc64, 0x5384, 0x4099, 0xff97, 0xc003, 0x9590, 0x9581, 0x4f9f, 0x178c, 0x079d, 0xf414, 0xb701, 0x01ec, 0xb781, 0x5f8f, 0xbf81, 0xb721, 0xe030, 0x2f81, 0xe090, 0x9601, 0x1782, 0x0793, 0xf744, 0xbf01, 0x91df, 0x91cf, 0x911f, 0x910f, 0x90ff, 0x9508, 0x94f8, 0xcfff, 0xff5a, 0xbc17, 0x0840
+uint16_t bootloader_data[1073] PROGMEM = {
+0xc022, 0xc040, 0xc06c, 0xc03e, 0xc03d, 0xc03c, 0xc03b, 0xc03a, 0xc039, 0xc038, 0xc037, 0xc036, 0xc035, 0xc034, 0xc033, 0x0304, 0x0409, 0x0112, 0x0110, 0x00ff, 0x0800, 0x16d0, 0x0753, 0x0106, 0x0000, 0x0100, 0x0209, 0x0012, 0x0101, 0x8000, 0x0932, 0x0004, 0x0000, 0x0000, 0x0000, 0x2411, 0xbe1f, 0xe5cf, 0xe0d2, 0xbfde, 0xbfcd, 0xeb00, 0x930f, 0xe007, 0x930f, 0xe010, 0xe6a0, 0xe0b0, 0xedec, 0xe1ff, 0xc002, 0x9005, 0x920d, 0x36a6, 0x07b1, 0xf7d9, 0xe010, 0xe6a6, 0xe0b0, 0xc001, 0x921d, 0x39ac, 0x07b1, 0xf7e1, 0xd1e7, 0xc3ea, 0xcfbd, 0x2fa8, 0x2fb9, 0xe080, 0xe090, 0xe041, 0xea50, 0x9560, 0xe030, 0xc009, 0x912d, 0x2782, 0x9597, 0x9587, 0xf010, 0x2784, 0x2795, 0x5e30, 0xf3c8, 0x5f6f, 0xf3a8, 0x9508, 0xdfea, 0x938d, 0x939d, 0x9508, 0xe0a6, 0x2788, 0x2799, 0x95aa, 0xf069, 0x9701, 0xf3e1, 0x99b3, 0xcffc, 0x9bb3, 0xcffe, 0xe081, 0x2799, 0xb3a6, 0x9601, 0xf011, 0x71a8, 0xf7d9, 0x9508, 0x93cf, 0xb7cf, 0x93cf, 0x91c0, 0x025f, 0x3bc0, 0xf421, 0x91c0, 0x025e, 0x30c7, 0xf021, 0x91cf, 0xbfcf, 0x91cf, 0xcf81, 0x27cc, 0x95c3, 0x9bb3, 0xf7e9, 0x9bb3, 0xc00b, 0x9bb3, 0xc009, 0x9bb3, 0xc007, 0x9bb3, 0xc005, 0x9bb3, 0xc003, 0x9bb3, 0xc001, 0xc0d3, 0x920f, 0x93df, 0x91c0, 0x007f, 0x27dd, 0x57ca, 0x4fdf, 0x2e01, 0x9bb3, 0xc003, 0x91df, 0x900f, 0xcfe6, 0x932f, 0x930f, 0x931f, 0x934f, 0xef2f, 0x6f4f, 0xb306, 0xfb03, 0xf920, 0x935f, 0x933f, 0xe050, 0xe03b, 0xc065, 0xb316, 0x2601, 0x2950, 0xfd53, 0x95c8, 0xb356, 0x2701, 0xfb03, 0xf925, 0x732f, 0xb306, 0xf0b1, 0x2750, 0x2710, 0xfb13, 0xf926, 0xb206, 0x3022, 0xf0f0, 0xc000, 0xb316, 0x2701, 0xfb03, 0xf927, 0x2601, 0x2950, 0xb206, 0x3024, 0xf5e8, 0x774f, 0x6820, 0xb316, 0x0000, 0xcff6, 0x2750, 0x7d4f, 0x6220, 0xb206, 0x2f10, 0x0000, 0xc000, 0xb306, 0x2600, 0x2950, 0x2710, 0xfb13, 0xf926, 0xb206, 0xcfe2, 0x7b4f, 0xb306, 0x6420, 0xc000, 0xcfda, 0x2601, 0x2950, 0x7118, 0xb206, 0xf169, 0x7f4e, 0x6021, 0x2f01, 0xb316, 0xc028, 0x2600, 0x2950, 0x7f4d, 0xb206, 0x6022, 0x2f10, 0xc029, 0x2601, 0x2950, 0x7f4b, 0xb206, 0x6024, 0x2f01, 0xc02d, 0xb316, 0x2601, 0x2950, 0x7f47, 0x6028, 0x0000, 0xb206, 0xc02e, 0x7e4f, 0xb306, 0x6120, 0xc030, 0x2742, 0xb306, 0x9349, 0x2600, 0x2950, 0x2710, 0xb206, 0xef4f, 0xfb13, 0xf920, 0x7f29, 0xb316, 0xf279, 0x7118, 0xf159, 0x2601, 0x2950, 0xb206, 0x2701, 0xfb03, 0xf921, 0x7f23, 0xb306, 0xf271, 0x2600, 0x2950, 0x5031, 0xf0d0, 0xb206, 0x2710, 0xfb13, 0xf922, 0x7e27, 0xb316, 0xf251, 0x2601, 0x2950, 0x2701, 0xfb03, 0xb206, 0xf923, 0x7c2f, 0xf249, 0x0000, 0xb306, 0x2710, 0xfb13, 0xf924, 0x2600, 0x2950, 0xb206, 0x792f, 0xf239, 0xcf70, 0xe210, 0xbf1a, 0x2700, 0xc017, 0x503b, 0x9531, 0x1bc3, 0x40d0, 0xe210, 0xbf1a, 0x8108, 0x3c03, 0xf0f9, 0x340b, 0xf0e9, 0x9120, 0x007d, 0x8119, 0x0f11, 0x1312, 0xcfed, 0x3609, 0xf151, 0x320d, 0xf011, 0x3e01, 0xf739, 0x9300, 0x0084, 0x913f, 0x915f, 0x914f, 0x911f, 0x910f, 0x912f, 0x91df, 0x900f, 0xb7ca, 0xfdc5, 0xcf1d, 0x91cf, 0xbfcf, 0x91cf, 0x9518, 0x9120, 0x0084, 0x2322, 0xf369, 0x9110, 0x0082, 0x2311, 0xf521, 0x3034, 0xf122, 0x9330, 0x0082, 0x9320, 0x007e, 0x9110, 0x007f, 0xe03b, 0x1b31, 0x9330, 0x007f, 0xc019, 0x9100, 0x0082, 0x3001, 0xf49c, 0xe50a, 0x9130, 0x0060, 0xfd34, 0xc011, 0x9300, 0x0060, 0xe7c2, 0xe0d0, 0xc010, 0x2705, 0xe010, 0xc000, 0xc021, 0x2705, 0xe010, 0x95c8, 0xbb08, 0xc014, 0xe53a, 0xc001, 0xed32, 0x2e03, 0xe0c0, 0xe0d0, 0xe032, 0xb317, 0x6118, 0x9ac3, 0xb308, 0xbb17, 0xe158, 0xe820, 0xef4f, 0xff20, 0x2705, 0xbb08, 0x9527, 0x9517, 0x3f1c, 0xf728, 0x0000, 0x5245, 0xf7b0, 0xff20, 0x2705, 0x9527, 0xbb08, 0x9517, 0x3f1c, 0xf6b8, 0x9129, 0x953a, 0xf761, 0x7e07, 0x9110, 0x0083, 0x0f11, 0xbb08, 0x50c2, 0x40d0, 0xf011, 0x9310, 0x007d, 0xe210, 0xbf1a, 0x6008, 0xb317, 0x7e17, 0x2f40, 0x7e47, 0xe054, 0x955a, 0xf7f1, 0xbb08, 0xbb17, 0xbb48, 0xcf8a, 0xe081, 0x9380, 0x0069, 0x94f8, 0x91e0, 0x0070, 0x91f0, 0x0071, 0x9732, 0xe085, 0x9380, 0x0057, 0x95e8, 0xb607, 0xfc00, 0xcffd, 0x9478, 0x9508, 0x019c, 0x91e0, 0x0070, 0x91f0, 0x0071, 0x9730, 0xf189, 0x30e4, 0x05f1, 0xf0f1, 0xe187, 0x37ec, 0x07f8, 0xf439, 0x9120, 0x006c, 0x9130, 0x006d, 0x5b2e, 0x4f3b, 0xc015, 0xe187, 0x37ee, 0x07f8, 0xf439, 0x9120, 0x006e, 0x9130, 0x006f, 0x5b2d, 0x4f3b, 0xc00a, 0xe187, 0x37ea, 0x07f8, 0xf431, 0xb781, 0x2f28, 0xe030, 0xc002, 0xeb2f, 0xec3b, 0x94f8, 0xe081, 0x0109, 0x9380, 0x0057, 0x95e8, 0x2411, 0x9478, 0x9632, 0x93f0, 0x0071, 0x93e0, 0x0070, 0x9508, 0xe181, 0x9380, 0x0057, 0x95e8, 0xcfeb, 0xef8f, 0xef9f, 0xdfc0, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf7a9, 0xcfa5, 0x931f, 0x93cf, 0x93df, 0xe188, 0xb60f, 0x94f8, 0xbd81, 0xbc11, 0xbe0f, 0xe0e0, 0xe0f0, 0x9185, 0x9194, 0x5b8f, 0x4c9b, 0xf439, 0xe0e4, 0xe0f0, 0x9185, 0x9194, 0x5b8f, 0x4c9b, 0xf009, 0xdfdc, 0x9210, 0x0071, 0x9210, 0x0070, 0x9aac, 0xb78b, 0x6280, 0xbf8b, 0x9abb, 0xe888, 0xe193, 0xe9ec, 0xe0f1, 0x9731, 0xf7f1, 0x9701, 0xf7d1, 0x98bb, 0x9478, 0x9110, 0x0082, 0x5013, 0xfd17, 0xc0d4, 0x9180, 0x007f, 0xe0cc, 0xe0d0, 0x1bc8, 0x09d1, 0x57ca, 0x4fdf, 0x9180, 0x007e, 0x328d, 0xf009, 0xc091, 0x3018, 0xf009, 0xc0c2, 0xec83, 0x9380, 0x0072, 0xe58a, 0x9380, 0x0060, 0x9210, 0x006b, 0x8128, 0x2f82, 0x7680, 0x8199, 0x2388, 0xf129, 0x9210, 0x0067, 0x9210, 0x0066, 0x2399, 0xf441, 0xe682, 0xe090, 0x9390, 0x0081, 0x9380, 0x0080, 0xe024, 0xc068, 0x3091, 0xf451, 0x818c, 0x819d, 0x9390, 0x0071, 0x9380, 0x0070, 0xfd27, 0xc059, 0xef9f, 0xc058, 0x9180, 0x0068, 0x3092, 0xf411, 0x6081, 0xc001, 0x6084, 0x9380, 0x0068, 0xe020, 0xc051, 0x818a, 0x9210, 0x007b, 0x2399, 0xf431, 0x9210, 0x007c, 0xe78b, 0xe090, 0xe022, 0xc03c, 0x3095, 0xf419, 0x9380, 0x0083, 0xc034, 0x3096, 0xf511, 0x818b, 0x3081, 0xf419, 0xea82, 0xe197, 0xc004, 0x3082, 0xf441, 0xeb84, 0xe197, 0x9390, 0x0081, 0x9380, 0x0080, 0xe122, 0xc00e, 0x3083, 0xf459, 0x818a, 0x2388, 0xf441, 0xe98e, 0xe197, 0x9390, 0x0081, 0x9380, 0x0080, 0xe024, 0xc001, 0xe020, 0xe480, 0x9380, 0x006b, 0xc01d, 0x3098, 0xf419, 0xe885, 0xe090, 0xc009, 0x3099, 0xf419, 0x9380, 0x0085, 0xc006, 0x309a, 0xf421, 0xe78b, 0xe090, 0xe021, 0xc003, 0xe78b, 0xe090, 0xe020, 0x9390, 0x0081, 0x9380, 0x0080, 0xc005, 0x819e, 0xe880, 0x9380, 0x006b, 0xc007, 0x818f, 0x2388, 0xf419, 0x819e, 0x1792, 0xf008, 0x2f92, 0x9390, 0x0061, 0xc034, 0x9180, 0x006b, 0xff87, 0xc030, 0x9180, 0x0070, 0x9190, 0x0071, 0x9700, 0xf439, 0x8188, 0x8199, 0x9390, 0x006d, 0x9380, 0x006c, 0xc00d, 0x3084, 0x0591, 0xf439, 0x8188, 0x8199, 0x9390, 0x006f, 0x9380, 0x006e, 0xc003, 0x5880, 0x4197, 0xf438, 0x8188, 0x8199, 0xdec8, 0x5012, 0xf011, 0x9622, 0xcfdf, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf439, 0x9180, 0x0068, 0x6082, 0x9380, 0x0068, 0x9210, 0x0061, 0x9210, 0x0082, 0x9180, 0x0060, 0xff84, 0xc03c, 0x9180, 0x0061, 0x3f8f, 0xf1c1, 0x2f18, 0x3089, 0xf008, 0xe018, 0x1b81, 0x9380, 0x0061, 0x9180, 0x0072, 0xe898, 0x2789, 0x9380, 0x0072, 0x2311, 0xf0e1, 0x91e0, 0x0080, 0x91f0, 0x0081, 0x9180, 0x006b, 0xff86, 0xc009, 0x2f91, 0xe7a3, 0xe0b0, 0x9184, 0x938d, 0x9631, 0x5091, 0xf7d9, 0xc007, 0x2f91, 0xe7a3, 0xe0b0, 0x9181, 0x938d, 0x5091, 0xf7e1, 0x93f0, 0x0081, 0x93e0, 0x0080, 0xe783, 0xe090, 0x2f61, 0xdcf5, 0x2f61, 0x5f6c, 0x306c, 0xf019, 0xef8f, 0x9380, 0x0061, 0x9360, 0x0060, 0xe194, 0xb386, 0x7188, 0xf431, 0x5091, 0xf7d9, 0x9210, 0x0083, 0x9210, 0x007d, 0xe010, 0x2399, 0xf409, 0xe011, 0x9180, 0x006a, 0x1781, 0xf039, 0x2311, 0xf419, 0x94f8, 0xd06b, 0x9478, 0x9310, 0x006a, 0xe98c, 0xe091, 0x9701, 0xf7f1, 0x9180, 0x0066, 0x9190, 0x0067, 0x9601, 0x9390, 0x0067, 0x9380, 0x0066, 0x9180, 0x0068, 0x2f18, 0xff80, 0xc014, 0x94f8, 0xe8e0, 0xe1f7, 0x54e0, 0x40f0, 0xe083, 0x9380, 0x0057, 0x95e8, 0xb607, 0xfc00, 0xcffd, 0x9730, 0xf7a9, 0x9210, 0x0071, 0x9210, 0x0070, 0xde72, 0x9478, 0xff11, 0xc00f, 0xe38a, 0xe290, 0x9701, 0xf7f1, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf011, 0xde62, 0xc001, 0xde11, 0xfd12, 0xc00a, 0x9210, 0x0068, 0x9180, 0x0066, 0x9190, 0x0067, 0x5580, 0x4c93, 0xf408, 0xce8b, 0xe282, 0xea91, 0x9701, 0xf7f1, 0x94f8, 0xbe1b, 0xba15, 0x9210, 0x025f, 0x9210, 0x025e, 0xe7ea, 0xe1f7, 0x9194, 0x2f89, 0x5081, 0x3f8e, 0xf020, 0xc00d, 0xb781, 0x5081, 0xbf81, 0xb781, 0x1798, 0xf3d0, 0xc003, 0xb781, 0x5f8f, 0xbf81, 0xb781, 0x1789, 0xf3d0, 0xcc15, 0x91df, 0x91cf, 0x911f, 0x9508, 0x92ff, 0x930f, 0x931f, 0x93cf, 0x93df, 0xe880, 0x2ef8, 0xe000, 0xe0c0, 0xe0d0, 0x2f10, 0x0d1f, 0xbf11, 0xdc61, 0xe029, 0x3384, 0x0792, 0xf00c, 0x2f10, 0x94f6, 0x9621, 0x30c8, 0x05d1, 0xf011, 0x2f01, 0xcff0, 0x5011, 0xbf11, 0x5f1f, 0x2f01, 0x01ec, 0xc010, 0xdc4e, 0x5384, 0x4099, 0xff97, 0xc003, 0x9590, 0x9581, 0x4f9f, 0x178c, 0x079d, 0xf414, 0xb701, 0x01ec, 0xb781, 0x5f8f, 0xbf81, 0xb721, 0xe030, 0x2f81, 0xe090, 0x9601, 0x1782, 0x0793, 0xf744, 0xbf01, 0x91df, 0x91cf, 0x911f, 0x910f, 0x90ff, 0x9508, 0x94f8, 0xcfff, 0xff5a, 0x7c17, 0x0840
};
-uint16_t bootloader_address = 6080;
+uint16_t bootloader_address = 6016;
diff --git a/upgrade/releases/micronucleus-1.06-upgrade.hex b/upgrade/releases/micronucleus-1.06-upgrade.hex
new file mode 100644
index 0000000..90ffe74
--- /dev/null
+++ b/upgrade/releases/micronucleus-1.06-upgrade.hex
@@ -0,0 +1,185 @@
+:1000000003C003C003C003C003C003C003C003C0D8
+:100080003FC461C460C45FC45EC45DC45CC45BC47F
+:100090005AC459C458C457C456C455C454C422C0C1
+:1000A00040C06CC03EC03DC03CC03BC03AC039C03F
+:1000B00038C037C036C035C034C033C0040309046B
+:1000C00012011001FF000008D016530706010000BE
+:1000D0000001090212000101008032090400000041
+:1000E0000000000011241FBECFE5D2E0DEBFCDBF6F
+:1000F00000EB0F9307E00F9310E0A0E6B0E0ECED0B
+:10010000FFE102C005900D92A636B107D9F710E0C5
+:10011000A6E6B0E001C01D92AC39B107E1F7E7D126
+:10012000EAC3BDCFA82FB92F80E090E041E050EAAC
+:10013000609530E009C02D9182279795879510F042
+:1001400084279527305EC8F36F5FA8F30895EADF30
+:100150008D939D930895A6E088279927AA9569F025
+:100160000197E1F3B399FCCFB39BFECF81E09927D0
+:10017000A6B3019611F0A871D9F70895CF93CFB720
+:10018000CF93C0915F02C03B21F4C0915E02C730A3
+:1001900021F0CF91CFBFCF9181CFCC27C395B39B17
+:1001A000E9F7B39B0BC0B39B09C0B39B07C0B39BDC
+:1001B00005C0B39B03C0B39B01C0D3C00F92DF93B4
+:1001C000C0917F00DD27CA57DF4F012EB39B03C0CC
+:1001D000DF910F90E6CF2F930F931F934F932FEF45
+:1001E0004F6F06B303FB20F95F933F9350E03BE072
+:1001F00065C016B30126502953FDC89556B3012793
+:1002000003FB25F92F7306B3B1F05027102713FB1A
+:1002100026F906B22230F0F000C016B3012703FB26
+:1002200027F90126502906B22430E8F54F772068D7
+:1002300016B30000F6CF50274F7D206206B2102F74
+:10024000000000C006B300265029102713FB26F932
+:1002500006B2E2CF4F7B06B3206400C0DACF01269E
+:100260005029187106B269F14E7F2160012F16B333
+:1002700028C0002650294D7F06B22260102F29C0C9
+:10028000012650294B7F06B22460012F2DC016B3E2
+:1002900001265029477F2860000006B22EC04F7EFD
+:1002A00006B3206130C0422706B349930026502987
+:1002B000102706B24FEF13FB20F9297F16B379F20E
+:1002C000187159F10126502906B2012703FB21F9C3
+:1002D000237F06B371F2002650293150D0F006B2C8
+:1002E000102713FB22F9277E16B351F2012650295D
+:1002F000012703FB06B223F92F7C49F2000006B365
+:10030000102713FB24F90026502906B22F7939F261
+:1003100070CF10E21ABF002717C03B503195C31BA6
+:10032000D04010E21ABF0881033CF9F00B34E9F029
+:1003300020917D001981110F1213EDCF093651F173
+:100340000D3211F0013E39F7009384003F915F9127
+:100350004F911F910F912F91DF910F90CAB7C5FD5B
+:100360001DCFCF91CFBFCF9118952091840022232C
+:1003700069F310918200112321F5343022F130937A
+:10038000820020937E0010917F003BE0311B309370
+:100390007F0019C00091820001309CF40AE5309181
+:1003A000600034FD11C000936000C2E7D0E010C0CF
+:1003B000052710E000C021C0052710E0C89508BB44
+:1003C00014C03AE501C032ED032EC0E0D0E032E0C7
+:1003D00017B31861C39A08B317BB58E120E84FEF71
+:1003E00020FF052708BB279517951C3F28F700001D
+:1003F0004552B0F720FF0527279508BB17951C3FEE
+:10040000B8F629913A9561F7077E10918300110F94
+:1004100008BBC250D04011F010937D0010E21ABF0B
+:10042000086017B3177E402F477E54E05A95F1F7C6
+:1004300008BB17BB48BB8ACF81E080936900F89462
+:10044000E0917000F0917100329785E08093570041
+:10045000E89507B600FCFDCF789408959C01E091E3
+:100460007000F0917100309789F1E430F105F1F0FE
+:1004700087E1EC37F80739F420916C0030916D007A
+:100480002E5B3B4F15C087E1EE37F80739F420911A
+:100490006E0030916F002D5B3B4F0AC087E1EA3759
+:1004A000F80731F481B7282F30E002C02FEB3BEC86
+:1004B000F89481E0090180935700E895112478941D
+:1004C0003296F0937100E0937000089581E180937B
+:1004D0005700E895EBCF8FEF9FEFC0DF8091700062
+:1004E000909171008F739070892BA9F7A5CF1F93FE
+:1004F000CF93DF9388E10FB6F89481BD11BC0FBE96
+:10050000E0E0F0E0859194918F5B9B4C39F4E4E05E
+:10051000F0E0859194918F5B9B4C09F0DCDF1092A9
+:10052000710010927000AC9A8BB780628BBFBB9A3F
+:1005300088E893E1ECE9F1E03197F1F70197D1F721
+:10054000BB98789410918200135017FDD4C080910D
+:100550007F00CCE0D0E0C81BD109CA57DF4F8091A3
+:100560007E008D3209F091C0183009F0C2C083ECD2
+:10057000809372008AE58093600010926B0028815E
+:10058000822F80769981882329F11092670010923A
+:100590006600992341F482E690E090938100809375
+:1005A000800024E068C0913051F48C819D8190934B
+:1005B00071008093700027FD59C09FEF58C0809153
+:1005C0006800923011F4816001C0846080936800FB
+:1005D00020E051C08A8110927B00992331F410925F
+:1005E0007C008BE790E022E03CC0953019F48093CA
+:1005F000830034C0963011F58B81813019F482EA82
+:1006000097E104C0823041F484EB97E1909381003C
+:100610008093800022E10EC0833059F48A818823C0
+:1006200041F48EE997E1909381008093800024E06B
+:1006300001C020E080E480936B001DC0983019F465
+:1006400085E890E009C0993019F48093850006C0D0
+:100650009A3021F48BE790E021E003C08BE790E033
+:1006600020E0909381008093800005C09E8180E807
+:1006700080936B0007C08F81882319F49E819217A5
+:1006800008F0922F9093610034C080916B0087FF37
+:1006900030C08091700090917100009739F488818A
+:1006A000998190936D0080936C000DC0843091050A
+:1006B00039F48881998190936F0080936E0003C014
+:1006C0008058974138F488819981C8DE125011F022
+:1006D0002296DFCF80917000909171008F7390709F
+:1006E000892B39F4809168008260809368001092B1
+:1006F0006100109282008091600084FF3CC0809174
+:1007000061008F3FC1F1182F893008F018E0811B7C
+:10071000809361008091720098E88927809372002D
+:100720001123E1F0E0918000F091810080916B0055
+:1007300086FF09C0912FA3E7B0E084918D93319695
+:100740009150D9F707C0912FA3E7B0E081918D9325
+:100750009150E1F7F0938100E093800083E790E00F
+:10076000612FF5DC612F6C5F6C3019F08FEF809397
+:1007700061006093600094E186B3887131F4915018
+:10078000D9F71092830010927D0010E0992309F4AC
+:1007900011E080916A00811739F0112319F4F8945F
+:1007A0006BD0789410936A008CE991E00197F1F78F
+:1007B0008091660090916700019690936700809306
+:1007C000660080916800182F80FF14C0F894E0E85C
+:1007D000F7E1E054F04083E080935700E89507B6D6
+:1007E00000FCFDCF3097A9F71092710010927000B5
+:1007F00072DE789411FF0FC08AE390E20197F1F75F
+:1008000080917000909171008F739070892B11F01E
+:1008100062DE01C011DE12FD0AC0109268008091F4
+:100820006600909167008055934C08F48BCE82E26D
+:1008300091EA0197F1F7F8941BBE15BA10925F0286
+:1008400010925E02EAE7F7E19491892F81508E3F82
+:1008500020F00DC081B7815081BF81B79817D0F3C8
+:1008600003C081B78F5F81BF81B78917D0F315CCE3
+:10087000DF91CF911F910895FF920F931F93CF9314
+:10088000DF9380E8F82E00E0C0E0D0E0102F1F0DCD
+:1008900011BF61DC29E0843392070CF0102FF6942D
+:1008A0002196C830D10511F0012FF0CF115011BFA2
+:1008B0001F5F012FEC0110C04EDC8453994097FF5D
+:1008C00003C0909581959F4F8C179D0714F401B735
+:1008D000EC0181B78F5F81BF21B730E0812F90E0BD
+:1008E00001968217930744F701BFDF91CF911F91C3
+:1008F0000F91FF900895F894FFCF5AFF177C40089E
+:1009000000000000000000000000000000000000E7
+:1009100000000000000000000000000000000000D7
+:1009200011241FBECFE5D2E0DEBFCDBF10E0A0E6B0
+:10093000B0E0E8ECFBE002C005900D92A236B107F2
+:10094000D9F720D13FC19CCB05C0EDE1F0E1319753
+:10095000F1F701970097C9F70895AC01407C20E0BA
+:1009600030E0F901E40FF51F85919491F901EE7FD4
+:10097000E60FF71F918380832E5F3F4F20343105B0
+:1009800081F70895FC01E07C83E080935700E895AF
+:1009900007B600FCFDCF0895CF93DF93EC01A0E0F4
+:1009A000B0E0AD014C0F5D1FFB01EA0FFB1F808122
+:1009B000918121E0FA010C0120935700E895112460
+:1009C0001296A034B10569F785E0FE0180935700C7
+:1009D000E89507B600FCFDCFDF91CF910895DF9336
+:1009E000CF93CDB7DEB7C054D0400FB6F894DEBF7A
+:1009F0000FBECDBF209160003091610036952795E4
+:100A000021503044FE01319621933193CE018F5B0A
+:100A10009F4FE817F907C1F780E090E0B3DF80E06F
+:100A200090E0BE016F5F7F4FB7DFC05CDF4F0FB656
+:100A3000F894DEBF0FBECDBFCF91DF910895EF9246
+:100A4000FF920F931F93DF93CF93CDB7DEB7C054C0
+:100A5000D0400FB6F894DEBF0FBECDBF00E010E06F
+:100A600035C09B01359527957E010894E11CF11C4A
+:100A700089E0A030B80738F0220F331FE20EF31ED2
+:100A80008FEF9FEF07C0FD0185919491220F331FD7
+:100A9000E20EF31EF701918380836E5F7F4F129603
+:100AA00060347105F1F68091600090916100800FD3
+:100AB000911F68DF8091600090916100800F911F0D
+:100AC000BE016F5F7F4F68DF005C1F4FF8E00038AA
+:100AD0001F0731F0D801A256BF4F60E070E0C1CFD0
+:100AE000C05CDF4F0FB6F894DEBF0FBECDBFCF9115
+:100AF000DF911F910F91FF90EF900895DF93CF93B7
+:100B0000CDB7DEB7C054D0400FB6F894DEBF0FBEED
+:100B1000CDBF80E090E0BE016F5F7F4F1EDF80E0C1
+:100B200090E0019680329105E1F78FEF9FEF9A8375
+:100B3000898380E090E026DF80E090E0BE016F5F77
+:100B40007F4F2ADFC05CDF4F0FB6F894DEBF0FBEC9
+:100B5000CDBFCF91DF91089587B3836087BBC198E4
+:100B600020E08DE190E1FC013197F1F7C19A019706
+:100B7000F1F7C1982F5F2A3FA1F70895E0E0F0E078
+:100B80000995089588B318BA87B38FEF87BB8AEFAA
+:100B900090E0EDE1F0E13197F1F70197D1F787B3FC
+:100BA00017BA8AEF90E0EDE1F0E13197F1F70197A4
+:100BB000D1F7F894A3DF43DF12DFCEDFDFDF80E081
+:080BC00090E00895F894FFCFC6
+:020BC800801794
+:040000030000008079
+:00000001FF