diff options
author | Zach Eveland <zeveland@blacklabel-development.com> | 2012-01-21 16:51:55 -0500 |
---|---|---|
committer | Zach Eveland <zeveland@blacklabel-development.com> | 2012-01-21 16:51:55 -0500 |
commit | 014466a7880e1424aaeedd66c269ea1197624535 (patch) | |
tree | 17dbc5eeda758870bdcbb8f94913294309fdd805 /bootloaders | |
parent | 0d8f865d9b783a74ea8238bb77a7bde239617d5e (diff) |
move interrupt vector table to application section before jumping to it after upload finished.
Diffstat (limited to 'bootloaders')
-rwxr-xr-x | bootloaders/caterina_LUFA/Caterina.c | 28 | ||||
-rw-r--r-- | bootloaders/caterina_LUFA/Caterina.hex | 443 |
2 files changed, 240 insertions, 231 deletions
diff --git a/bootloaders/caterina_LUFA/Caterina.c b/bootloaders/caterina_LUFA/Caterina.c index 8bd7403..9e1dbbc 100755 --- a/bootloaders/caterina_LUFA/Caterina.c +++ b/bootloaders/caterina_LUFA/Caterina.c @@ -58,6 +58,16 @@ static bool RunBootloader = true; void StartSketch()
{
+ /* Relocate the interrupt vector table to the application section */
+// MCUCR = (1 << IVCE); // these two lines are for moving interrupts to bootloader, not application
+// MCUCR = (1 << IVSEL);
+ __asm__ volatile (
+ "ldi r16, 0x01\n"
+ "out 0x35, r16\n"
+ "ldi r16, 0x00\n"
+ "out 0x35, r16\n"
+ ::);
+
UDCON = 1; // Detach USB
UDIEN = 0;
__asm__ volatile ( // Reset vector to run firmware
@@ -73,12 +83,12 @@ void StartSketch() */
int main(void)
{
- uint8_t MCUSR_state = MCUSR; // store the reason for the reset
- MCUSR &= ~(1 << WDRF); // must clear the watchdog reset flag before disabling and reenabling WDT
- wdt_disable();
- if (MCUSR_state & (1<<WDRF) && (pgm_read_word(0) != 0xFFFF)) {
- StartSketch(); // if the reset was caused by WDT and if a sketch is already present then run the sketch instead of the bootloader
- }
+// uint8_t MCUSR_state = MCUSR; // store the reason for the reset
+// MCUSR &= ~(1 << WDRF); // must clear the watchdog reset flag before disabling and reenabling WDT
+// wdt_disable();
+// if (MCUSR_state & (1<<WDRF) && (pgm_read_word(0) != 0xFFFF)) {
+// StartSketch(); // if the reset was caused by WDT and if a sketch is already present then run the sketch instead of the bootloader
+// }
/* Setup hardware required for the bootloader */
SetupHardware();
@@ -101,9 +111,11 @@ int main(void) USB_Detach();
/* Enable the watchdog and force a timeout to reset the AVR */
- wdt_enable(WDTO_250MS);
+// wdt_enable(WDTO_250MS);
- for (;;);
+// for (;;);
+
+ StartSketch();
}
/** Configures all hardware required for the bootloader. */
diff --git a/bootloaders/caterina_LUFA/Caterina.hex b/bootloaders/caterina_LUFA/Caterina.hex index f78c001..4d0f17d 100644 --- a/bootloaders/caterina_LUFA/Caterina.hex +++ b/bootloaders/caterina_LUFA/Caterina.hex @@ -1,235 +1,232 @@ :1070000055C000006EC000006CC000006AC00000E7
:1070100068C0000066C0000064C0000062C00000DC
-:1070200060C000005EC0000053C400005AC00000F1
+:1070200060C000005EC000003AC400005AC000000A
:1070300058C0000056C0000054C0000052C00000FC
:1070400050C000004EC000004CC000004AC000000C
-:1070500052C0000046C0000044C0000042C0000012
+:1070500056C0000046C0000044C0000042C000000E
:1070600040C000003EC000003CC000003AC000002C
:1070700038C0000036C0000034C0000032C000003C
:1070800030C000002EC000002CC000002AC000004C
:1070900028C0000026C0000024C0000022C000005C
:1070A00020C000001EC000001CC0000011241FBE34
-:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EF5A
+:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E2EC5F
:1070C000FDE702C005900D92AC38B107D9F711E089
-:1070D000ACE8B1E001C01D92AA39B107E1F718D3BD
-:1070E00087C68ECF81E08093E0001092E200EE2709
-:1070F000FF27099408951F920F920FB60F92112443
-:107100008F939F938BB190E489278BB99F918F9137
-:107110000F900FBE0F901F90189584E08093E900A8
-:107120000DC08091E8008B778093E80003C08EB398
-:10713000882351F08091E80082FFF9CF8091E80028
-:1071400085FFEFCF8091F1000895982F83E0809321
-:10715000E9008091E80085FD0DC08091E8008E7700
-:107160008093E80003C08EB3882331F08091E8005B
-:1071700080FFF9CF9093F10008954F925F926F9244
-:107180007F928F929F92AF92BF92CF92DF92EF92B7
-:10719000FF920F931F93CF93DF9384E08093E900D6
-:1071A0008091E80082FF45C2B8DF182F853419F4BA
-:1071B0001092080103C0843519F4AFDF8DE00FC2CF
-:1071C0008C34E1F38035D1F3843721F484E4BDDFDE
-:1071D00080E005C2813611F489E501C28134B1F441
-:1071E0009CDF182F9ADF90E0880F991FAA2797FD40
-:1071F000A095BA2F312F330F20E0442737FD40955B
-:10720000542F822B932BA42BB52BBAC1803711F4AA
-:1072100083E5E5C1833549F4C0E0D1E0899195DF8C
-:1072200021E0C730D207D1F7DBC1863521F481E3F5
-:107230008CDF80E3D4C1833731F487E886DF85E9CA
-:1072400084DF8EE1CCC18536B9F4E0E0F0E093E074
-:1072500085E090935700E89507B600FCFDCF80933A
-:107260005700E89507B600FCFDCFE058FF4FA0E7B8
-:10727000E030FA0771F7A2CF8C3651F44EDF8095DB
-:1072800099E0E1E0F0E0082E90935700E89596CF62
-:10729000823739F4E1E0F0E089E08093570084918F
-:1072A0009EC1863439F4E0E0F0E089E08093570035
-:1072B000849195C18E3439F4E3E0F0E089E0809365
-:1072C000570084918CC1813539F4E2E0F0E089E027
-:1072D00080935700849183C1823631F489E535DF8C
-:1072E00080E033DF80E87BC1823419F0873609F013
-:1072F000DBC013DF082F11DFF82E0FDF682E855457
-:10730000823008F06BC1902F80E0CF2DD0E0C82BE9
-:10731000D92B173609F04BC081E180935700E895CF
-:10732000DD24CC24C3943FC0E0908C01F0908D010B
-:1073300000918E0110918F01B6E46B16D9F4ED2DFA
-:10734000F0E0EE29FF29E4918E2FFFDEDD2081F0B1
-:1073500082E090E0A0E0B0E0E80EF91E0A1F1B1FDB
-:10736000E0928C01F0928D0100938E0110938F01B9
-:10737000DC2418C0D801C701B695A79597958795C5
-:1073800021D5E3DE82E090E0A0E0B0E0E80EF91E57
-:107390000A1F1B1FE0928C01F0928D0100938E0159
-:1073A00010938F012197209709F0BECF19C18090CB
-:1073B0008C0190908D01A0908E01B0908F0196E489
-:1073C000691609F05DC083E0F40180935700E895E9
-:1073D00007B600FCFDCF54C0F6E46F1661F57720C8
-:1073E00031F1E0908C01F0908D0100918E011091AF
-:1073F0008F0193DED82ECC24852D90E08C299D29F9
-:10740000F7010C0140925700E895112482E090E0CA
-:10741000A0E0B0E0E80EF91E0A1F1B1FE0928C01ED
-:10742000F0928D0100938E0110938F0102C075DEE2
-:10743000582E742423C0E0908C01F0908D010091AF
-:107440008E0110918F0116950795F794E79465DEEC
-:10745000682FC701BFD480918C0190918D01A091BC
-:107460008E01B0918F010296A11DB11D80938C01F8
-:1074700090938D01A0938E01B0938F01219704C04A
-:107480005524772444244394209709F0A5CF96E40B
-:10749000691609F093CE85E0F40180935700E895D2
-:1074A00007B600FCFDCF8ACE833471F400918C01C5
-:1074B00010918D0132DE90E021E0F8010C01209363
-:1074C0005700E89511247ACE833619F5E0908C01A7
-:1074D000F0908D0100918E0110918F011EDEF70159
-:1074E000E16090E021E00C0120935700E895112421
-:1074F00082E090E0A0E0B0E0E80EF91E0A1F1B1F3A
-:10750000E0928C01F0928D0100938E0110938F0117
-:1075100055CE8D3661F4E0918C01F0918D0185E0BE
-:1075200080935700E89507B600FCFDCF47CE823523
-:1075300051F4E0918C01F0918D0105911491812F0E
-:1075400004DE802F4CC0843421F5E0908C01F09053
-:107550008D0100918E0110918F0116950795F7947A
-:10756000E794DBDD682FC70135D480918C019091C1
-:107570008D01A0918E01B0918F010296A11DB11DC8
-:1075800080938C0190938D01A0938E01B0938F0115
-:1075900015CE843609F5E0908C01F0908D010091B4
-:1075A0008E0110918F01D801C701B695A7959795C7
-:1075B000879508D4CADD82E090E0A0E0B0E0E80E54
-:1075C000F91E0A1F1B1FE0928C01F0928D0100939F
-:1075D0008E0110938F0104C08B3111F08FE3B5DD64
-:1075E00083E08093E9009091E8008091E8008E7735
-:1075F0008093E80095FF04C010C08EB38823C9F0C3
-:107600008091E80080FFF9CF8091E8008E77809329
-:10761000E80003C08EB3882361F08091E80080FF0A
-:10762000F9CF84E08093E9008091E8008B77809324
-:10763000E800DF91CF911F910F91FF90EF90DF90C5
-:10764000CF90BF90AF909F908F907F906F905F9002
-:107650004F90089590919201892F8F77813249F54B
-:10766000809193018032A1F0813219F5913A09F5A8
-:107670008091E800877F8093E80089E091E067E0EF
-:1076800070E0D7D18091E8008B778093E80008956F
-:10769000913279F48091E800877F8093E80089E057
-:1076A00091E067E070E029D28091E8008E778093C6
-:1076B000E800089582E061EC42E081D083E061E877
-:1076C00042E17DD084E060E842E179C01F9384B755
-:1076D000877F84BF88E10FB6F89480936000109292
-:1076E00060000FBE80E090E020E80FB6F894209391
-:1076F0006100809361000FBE11E015BF82E085BF7D
-:10770000CFD010936F0083E0809381001F91089584
-:1077100084B794B7977F94BF98E10FB6F89490938D
-:107720006000109260000FBE83FF08C0E0E0F0E050
-:10773000859194918F5F9F4F09F0D4DCC7DF7894D7
-:10774000569A02C01ADD2CD3809108018823D1F704
-:107750005E988091E00081608093E0002CE088E1F9
-:1077600090E00FB6F894A895809360000FBE209328
-:107770006000FFCFFA01923071F0933089F09130C0
-:1077800029F480E191E022E130E015C080E090E052
-:1077900020E030E010C082E291E02EE330E00BC048
-:1077A000882329F480E691E024E030E004C084E6F8
-:1077B00091E026E230E091838083C90108958093AF
-:1077C000E9008091EB0081608093EB001092ED0066
-:1077D0006093EC004093ED008091EE00881F8827B5
-:1077E000881F08958091920188238CF403C08EB382
-:1077F0008823B1F08091E80082FFF9CF8091E80002
-:107800008B778093E80008958EB3882349F08091A8
-:10781000E80080FFF9CF8091E8008E778093E80040
-:107820000895EF92FF920F931F9345D04CD008ED2F
-:1078300010E0F80180818F77808380818068808369
-:1078400080818F7D808319BC1EBA1092900180EEDA
-:10785000E82EF12CF70180818B7F8083F8018081F5
-:107860008160808380E060E042E0A9DFE1EEF0E04B
-:1078700080818E7F8083E2EEF0E080818160808372
-:10788000808188608083F70180818E7F8083F8010A
-:107890008081806180831F910F91FF90EF90089508
-:1078A000E7EDF0E08081816080838AE482BF81E03F
-:1078B00080939101B6CFE8EDF0E080818E7F8083E8
-:1078C0001092E20008951092DA001092E1000895FB
-:1078D0001F920F920FB60F9211242F933F934F9345
-:1078E0005F936F937F938F939F93AF93BF93EF9328
-:1078F000FF938091DA0080FF1BC08091D80080FF49
-:1079000017C08091DA008E7F8093DA008091D900D1
-:1079100080FF0BC080E189BD82E189BD09B400FE12
-:10792000FDCF81E08EBB3BD203C019BC1EBA37D25B
-:107930008091E10080FF17C08091E20080FF13C0BA
-:107940008091E2008E7F8093E2008091E20080616E
-:107950008093E2008091D80080628093D80019BCA7
-:1079600085E08EBB1CD28091E10084FF2CC0809109
-:10797000E20084FF28C080E189BD82E189BD09B4AD
-:1079800000FEFDCF8091D8008F7D8093D80080913C
-:10799000E1008F7E8093E1008091E2008F7E8093F2
-:1079A000E2008091E20081608093E200809190018A
-:1079B000882331F48091E30087FD02C081E001C09B
-:1079C00084E08EBBECD18091E10083FF21C08091E7
-:1079D000E20083FF1DC08091E100877F8093E1007A
-:1079E00082E08EBB109290018091E1008E7F8093A7
-:1079F000E1008091E2008E7F8093E2008091E200BE
-:107A000080618093E20080E060E042E0D8DEC7D190
-:107A1000FF91EF91BF91AF919F918F917F916F9166
-:107A20005F914F913F912F910F900FBE0F901F903C
-:107A300018959C014091980150919901461757075C
-:107A400018F4F90190E044C06115710511F0AB0123
-:107A5000F8CF8091E8008E778093E80040E050E016
-:107A6000F0CF8EB3882309F444C0853009F443C0B5
-:107A70008091E80083FF02C081E008958091E800D2
-:107A800082FD31C08091E80080FF22C08091F30028
-:107A90009091F200782F60E0292F30E0262B372BD1
-:107AA00007C081918093F100415050402F5F3F4FBC
-:107AB0004115510519F02830310598F390E0283030
-:107AC000310509F491E08091E8008E778093E80019
-:107AD0004115510531F6992321F605C08EB388234F
-:107AE00041F0853041F08091E80082FFF7CF80E0DF
-:107AF000089582E0089583E008959C016115710561
-:107B000029F48091E8008B778093E800F90126C082
-:107B10008EB3882391F1853091F18091E80083FF45
-:107B200002C081E008958091E80082FFF1CF06C095
-:107B30008091F10081936150704059F02091F300E1
-:107B40008091F200322F20E090E0822B932B892B42
-:107B500079F78091E8008B778093E80061157105D3
-:107B6000B9F605C08EB3882341F0853041F080918D
-:107B7000E80080FFF7CF80E0089582E0089583E079
-:107B800008950F931F93DF93CF9300D0CDB7DEB747
-:107B9000E2E9F1E08091F100819381E0EA39F807B0
-:107BA000C9F758DD8091E80083FFE4C0809192011D
-:107BB00090919301953009F46DC0963040F4913066
-:107BC00081F1913070F0933009F0D4C02AC0983020
-:107BD00009F4A3C0993009F4B2C0963009F0CAC0C4
-:107BE0007CC0803809F4C6C0823809F0C3C08091D7
-:107BF000960187708093E9008091EB001092E90074
-:107C00002091E800277F2093E80090E025E09695FA
-:107C100087952A95E1F781708093F1001092F10029
-:107C200087C0882319F0823009F0A4C08F71823098
-:107C300009F0A0C080919401882331F5209196012C
-:107C4000277009F497C02093E9008091EB0080FF32
-:107C50001BC0933021F48091EB00806213C08091AF
-:107C6000EB0080618093EB0081E090E002C0880F20
-:107C7000991F2A95E2F78093EA001092EA0080911A
-:107C8000EB0088608093EB001092E9008091E8009F
-:107C9000877F51C0882309F06DC0109194011F7730
-:107CA0000FB7F8948091E800877F8093E8009ADD11
-:107CB0008091E80080FFFCCF8091E3008078812BE9
-:107CC0008093E30080688093E300112311F482E045
-:107CD00001C083E08EBB0FBF4DC08058823008F0DA
-:107CE00049C0809194019091950160919601AE01F7
-:107CF0004F5F5F4F3FDDBC01009709F43BC08091AF
-:107D0000E800877F8093E80089819A8192DE8091E4
-:107D1000E8008B778093E8002DC0803859F580917A
-:107D2000E800877F8093E800809190018093F100C4
-:107D30008091E8008E778093E80054DD1BC0882393
-:107D4000C9F4909194019230A8F48091E800877F63
-:107D50008093E8009093900145DD80919001882305
-:107D600031F48091E30087FD02C081E001C084E02E
-:107D70008EBBA0DC8091E80083FF0AC08091EB00FD
-:107D800080628093EB008091E800877F8093E80019
-:107D90000F900F90CF91DF911F910F91089508954B
-:107DA0001F938EB3882361F01091E9001092E900CF
-:107DB0008091E80083FF01C0E4DE17701093E900B2
-:107DC0001F910895F999FECF92BD81BDF89A992728
-:107DD00080B50895262FF999FECF1FBA92BD81BDB7
-:107DE00020BD0FB6F894FA9AF99A0FBE019608953D
-:047DF000F894FFCF35
-:107DF4004C55464143444300010000000000000884
-:107E04001201100102000008EB034A2001000001E6
-:107E1400000109023E000201008032090400000151
-:107E240002020100052400100104240204052406B2
-:107E34000001070582030800FF09040100020A008B
-:107E44000000070504021000010705830210000169
-:107E54000403090426034100560052002000430095
-:107E640044004300200042006F006F0074006C0067
-:0C7E74006F0061006400650072000000F7
+:1070D000ACE8B1E001C01D92AA39B107E1F71CD3B9
+:1070E0006EC68ECF01E005BF00E005BF81E0809352
+:1070F000E0001092E200EE27FF27099408951F9206
+:107100000F920FB60F9211248F939F938BB190E43F
+:1071100089278BB99F918F910F900FBE0F901F9071
+:10712000189584E08093E9000DC08091E8008B778A
+:107130008093E80003C08EB3882351F08091E8006B
+:1071400082FFF9CF8091E80085FFEFCF8091F100B9
+:107150000895982F83E08093E9008091E80085FDF1
+:107160000DC08091E8008E778093E80003C08EB355
+:10717000882331F08091E80080FFF9CF9093F100EF
+:1071800008954F925F926F927F928F929F92AF92EB
+:10719000BF92CF92DF92EF92FF920F931F93CF9304
+:1071A000DF9384E08093E9008091E80082FF45C28C
+:1071B000B8DF182F853419F41092080103C0843504
+:1071C00019F4AFDF8DE00FC28C34E1F38035D1F3D9
+:1071D000843721F484E4BDDF80E005C2813611F4F8
+:1071E00089E501C28134B1F49CDF182F9ADF90E069
+:1071F000880F991FAA2797FDA095BA2F312F330F1B
+:1072000020E0442737FD4095542F822B932BA42B4D
+:10721000B52BBAC1803711F483E5E5C1833549F454
+:10722000C0E0D1E0899195DF21E0C730D207D1F7E6
+:10723000DBC1863521F481E38CDF80E3D4C1833761
+:1072400031F487E886DF85E984DF8EE1CCC18536BD
+:10725000B9F4E0E0F0E093E085E090935700E89522
+:1072600007B600FCFDCF80935700E89507B600FCF9
+:10727000FDCFE058FF4FA0E7E030FA0771F7A2CF4B
+:107280008C3651F44EDF809599E0E1E0F0E0082E75
+:1072900090935700E89596CF823739F4E1E0F0E01B
+:1072A00089E08093570084919EC1863439F4E0E0F0
+:1072B000F0E089E080935700849195C18E3439F4D1
+:1072C000E3E0F0E089E08093570084918CC1813540
+:1072D00039F4E2E0F0E089E080935700849183C1C3
+:1072E000823631F489E535DF80E033DF80E87BC129
+:1072F000823419F0873609F0DBC013DF082F11DF65
+:10730000F82E0FDF682E8554823008F06BC1902F65
+:1073100080E0CF2DD0E0C82BD92B173609F04BC019
+:1073200081E180935700E895DD24CC24C3943FC0CD
+:10733000E0908C01F0908D0100918E0110918F01F1
+:10734000B6E46B16D9F4ED2DF0E0EE29FF29E491B7
+:107350008E2FFFDEDD2081F082E090E0A0E0B0E043
+:10736000E80EF91E0A1F1B1FE0928C01F0928D019E
+:1073700000938E0110938F01DC2418C0D801C7013F
+:10738000B695A7959795879504D5E3DE82E090E0C2
+:10739000A0E0B0E0E80EF91E0A1F1B1FE0928C016E
+:1073A000F0928D0100938E0110938F012197209709
+:1073B00009F0BECF19C180908C0190908D01A090F2
+:1073C0008E01B0908F0196E4691609F05DC083E0EC
+:1073D000F40180935700E89507B600FCFDCF54C038
+:1073E000F6E46F1661F5772031F1E0908C01F090B2
+:1073F0008D0100918E0110918F0193DED82ECC2447
+:10740000852D90E08C299D29F7010C0140925700B1
+:10741000E895112482E090E0A0E0B0E0E80EF91ECB
+:107420000A1F1B1FE0928C01F0928D0100938E01C8
+:1074300010938F0102C075DE582E742423C0E09093
+:107440008C01F0908D0100918E0110918F011695A5
+:107450000795F794E79465DE682FC701A2D4809161
+:107460008C0190918D01A0918E01B0918F010296B7
+:10747000A11DB11D80938C0190938D01A0938E016D
+:10748000B0938F01219704C055247724442443945A
+:10749000209709F0A5CF96E4691609F093CE85E010
+:1074A000F40180935700E89507B600FCFDCF8ACE23
+:1074B000833471F400918C0110918D0132DE90E0E3
+:1074C00021E0F8010C0120935700E89511247ACEB1
+:1074D000833619F5E0908C01F0908D0100918E01BA
+:1074E00010918F011EDEF701E16090E021E00C01B8
+:1074F00020935700E895112482E090E0A0E0B0E0EE
+:10750000E80EF91E0A1F1B1FE0928C01F0928D01FC
+:1075100000938E0110938F0155CE8D3661F4E0916A
+:107520008C01F0918D0185E080935700E89507B6B6
+:1075300000FCFDCF47CE823551F4E0918C01F091F3
+:107540008D0105911491812F04DE802F4CC084346D
+:1075500021F5E0908C01F0908D0100918E01109149
+:107560008F0116950795F794E794DBDD682FC70127
+:1075700018D480918C0190918D01A0918E01B091D1
+:107580008F010296A11DB11D80938C0190938D01F6
+:10759000A0938E01B0938F0115CE843609F5E0904B
+:1075A0008C01F0908D0100918E0110918F01D80116
+:1075B000C701B695A79597958795EBD3CADD82E06D
+:1075C00090E0A0E0B0E0E80EF91E0A1F1B1FE09259
+:1075D0008C01F0928D0100938E0110938F0104C0F5
+:1075E0008B3111F08FE3B5DD83E08093E90090915A
+:1075F000E8008091E8008E778093E80095FF04C052
+:1076000010C08EB38823C9F08091E80080FFF9CFC5
+:107610008091E8008E778093E80003C08EB38823C2
+:1076200061F08091E80080FFF9CF84E08093E90069
+:107630008091E8008B778093E800DF91CF911F91D4
+:107640000F91FF90EF90DF90CF90BF90AF909F9001
+:107650008F907F906F905F904F90089590919201DE
+:10766000892F8F77813249F5809193018032A1F083
+:10767000813219F5913A09F58091E800877F80936E
+:10768000E80089E091E067E070E0BAD18091E8001D
+:107690008B778093E8000895913279F48091E80027
+:1076A000877F8093E80089E091E067E070E00CD28A
+:1076B0008091E8008E778093E800089582E061EC85
+:1076C00042E064D083E061E842E160D084E060E8B9
+:1076D00042E15CC01F9384B7877F84BF88E10FB607
+:1076E000F89480936000109260000FBE80E090E0FC
+:1076F00020E80FB6F89420936100809361000FBEDC
+:1077000011E015BF82E085BFB2D010936F0083E017
+:10771000809381001F910895DDDF7894569A5E9AD8
+:1077200002C02FDD24D3809108018823D1F75E9811
+:107730008091E00081608093E000D4DC80E090E004
+:107740000895FA01923071F0933089F0913029F464
+:1077500080E191E022E130E015C080E090E020E09F
+:1077600030E010C082E291E02EE330E00BC08823CD
+:1077700029F480E691E024E030E004C084E691E062
+:1077800026E230E091838083C90108958093E90067
+:107790008091EB0081608093EB001092ED0060938C
+:1077A000EC004093ED008091EE00881F8827881F31
+:1077B00008958091920188238CF403C08EB38823AE
+:1077C000B1F08091E80082FFF9CF8091E8008B77DB
+:1077D0008093E80008958EB3882349F08091E800F3
+:1077E00080FFF9CF8091E8008E778093E8000895BC
+:1077F000EF92FF920F931F9345D04CD008ED10E00D
+:10780000F80180818F778083808180688083808188
+:107810008F7D808319BC1EBA1092900180EEE82EF5
+:10782000F12CF70180818B7F8083F801808181605A
+:10783000808380E060E042E0A9DFE1EEF0E080815B
+:107840008E7F8083E2EEF0E08081816080838081A2
+:1078500088608083F70180818E7F8083F80180813A
+:10786000806180831F910F91FF90EF900895E7ED65
+:10787000F0E08081816080838AE482BF81E0809330
+:107880009101B6CFE8EDF0E080818E7F8083109289
+:10789000E20008951092DA001092E10008951F921C
+:1078A0000F920FB60F9211242F933F934F935F9334
+:1078B0006F937F938F939F93AF93BF93EF93FF93B8
+:1078C0008091DA0080FF1BC08091D80080FF17C034
+:1078D0008091DA008E7F8093DA008091D90080FF5A
+:1078E0000BC080E189BD82E189BD09B400FEFDCFF6
+:1078F00081E08EBB3BD203C019BC1EBA37D2809147
+:10790000E10080FF17C08091E20080FF13C08091EA
+:10791000E2008E7F8093E2008091E200806180939C
+:10792000E2008091D80080628093D80019BC85E085
+:107930008EBB1CD28091E10084FF2CC08091E200BC
+:1079400084FF28C080E189BD82E189BD09B400FEC1
+:10795000FDCF8091D8008F7D8093D8008091E10089
+:107960008F7E8093E1008091E2008F7E8093E20021
+:107970008091E20081608093E200809190018823F1
+:1079800031F48091E30087FD02C081E001C084E012
+:107990008EBBECD18091E10083FF21C08091E20099
+:1079A00083FF1DC08091E100877F8093E10082E02A
+:1079B0008EBB109290018091E1008E7F8093E10058
+:1079C0008091E2008E7F8093E2008091E2008061EE
+:1079D0008093E20080E060E042E0D8DEC7D1FF9112
+:1079E000EF91BF91AF919F918F917F916F915F9137
+:1079F0004F913F912F910F900FBE0F901F901895B0
+:107A00009C0140919801509199014617570718F42D
+:107A1000F90190E044C06115710511F0AB01F8CF98
+:107A20008091E8008E778093E80040E050E0F0CF4E
+:107A30008EB3882309F444C0853009F443C0809193
+:107A4000E80083FF02C081E008958091E80082FD94
+:107A500031C08091E80080FF22C08091F3009091B6
+:107A6000F200782F60E0292F30E0262B372B07C05B
+:107A700081918093F100415050402F5F3F4F41155D
+:107A8000510519F02830310598F390E02830310580
+:107A900009F491E08091E8008E778093E800411529
+:107AA000510531F6992321F605C08EB3882341F0A4
+:107AB000853041F08091E80082FFF7CF80E00895A3
+:107AC00082E0089583E008959C016115710529F411
+:107AD0008091E8008B778093E800F90126C08EB38F
+:107AE000882391F1853091F18091E80083FF02C0F5
+:107AF00081E008958091E80082FFF1CF06C0809177
+:107B0000F10081936150704059F02091F300809111
+:107B1000F200322F20E090E0822B932B892B79F713
+:107B20008091E8008B778093E80061157105B9F6C4
+:107B300005C08EB3882341F0853041F08091E80084
+:107B400080FFF7CF80E0089582E0089583E00895F4
+:107B50000F931F93DF93CF9300D0CDB7DEB7E2E949
+:107B6000F1E08091F100819381E0EA39F807C9F7EB
+:107B700075DD8091E80083FFE4C0809192019091CF
+:107B80009301953009F46DC0963040F4913081F145
+:107B9000913070F0933009F0D4C02AC0983009F4C5
+:107BA000A3C0993009F4B2C0963009F0CAC07CC0B5
+:107BB000803809F4C6C0823809F0C3C080919601AC
+:107BC00087708093E9008091EB001092E90020918A
+:107BD000E800277F2093E80090E025E096958795C0
+:107BE0002A95E1F781708093F1001092F10087C02F
+:107BF000882319F0823009F0A4C08F71823009F017
+:107C0000A0C080919401882331F5209196012770BE
+:107C100009F497C02093E9008091EB0080FF1BC01E
+:107C2000933021F48091EB00806213C08091EB00CF
+:107C300080618093EB0081E090E002C0880F991F83
+:107C40002A95E2F78093EA001092EA008091EB0017
+:107C500088608093EB001092E9008091E800877FB4
+:107C600051C0882309F06DC0109194011F770FB7A0
+:107C7000F8948091E800877F8093E8009ADD8091F6
+:107C8000E80080FFFCCF8091E3008078812B809317
+:107C9000E30080688093E300112311F482E001C0C7
+:107CA00083E08EBB0FBF4DC08058823008F049C0C2
+:107CB000809194019091950160919601AE014F5F82
+:107CC0005F4F3FDDBC01009709F43BC08091E800A5
+:107CD000877F8093E80089819A8192DE8091E80015
+:107CE0008B778093E8002DC0803859F58091E800AB
+:107CF000877F8093E800809190018093F1008091CC
+:107D0000E8008E778093E80054DD1BC08823C9F417
+:107D1000909194019230A8F48091E800877F80933D
+:107D2000E8009093900145DD80919001882331F423
+:107D30008091E30087FD02C081E001C084E08EBB3A
+:107D4000BDDC8091E80083FF0AC08091EB00806277
+:107D50008093EB008091E800877F8093E8000F908C
+:107D60000F90CF91DF911F910F91089508951F9368
+:107D70008EB3882361F01091E9001092E9008091A0
+:107D8000E80083FF01C0E4DE17701093E9001F9143
+:107D90000895F999FECF92BD81BDF89A992780B5D3
+:107DA0000895262FF999FECF1FBA92BD81BD20BD3F
+:107DB0000FB6F894FA9AF99A0FBE01960895F894BE
+:027DC000FFCFF3
+:107DC2004C554641434443000100000000000008B6
+:107DD2001201100102000008EB034A200100000119
+:107DE200000109023E000201008032090400000184
+:107DF20002020100052400100104240204052406E5
+:107E02000001070582030800FF09040100020A00BD
+:107E1200000007050402100001070583021000019B
+:107E220004030904260341005600520020004300C7
+:107E320044004300200042006F006F0074006C0099
+:0C7E42006F006100640065007200000029
:040000030000700089
:00000001FF
|